1<!doctype html> 2<html lang="en"> 3 <head > 4 <meta charset="utf-8"/> 5<meta name="title" content="| Lillian Vernon"/> 6<meta name="robots" content="INDEX,FOLLOW"/> 7<meta name="viewport" content="width=device-width, initial-scale=1"/> 8<meta name="format-detection" content="telephone=no"/> 9<title>| Lillian Vernon</title> 10 <link rel="stylesheet" type="text/css" media="all" href="https://static.lillianvernon.com/version1788891929/_cache/merged/6caf138cf544618cf00353ee28e2b64f.min.css" /> 11<link rel="stylesheet" type="text/css" media="screen and (min-width: 768px)" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/css/styles-l.min.css" /> 12 13 14<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Luma-Icons.woff2" /> 15<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Awesome.woff2" /> 16<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Lato-Bold.woff2" /> 17<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Lato-Black.woff2" /> 18<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Lato-Regular.woff2" /> 19<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/Lato-Light.woff2" /> 20<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/TheanoDidot-Regular.woff2" /> 21<link rel="preload" as="font" crossorigin="anonymous" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/fonts/slick.woff2" /> 22<link rel="icon" type="image/x-icon" href="https://images.lillianvernon.com/favicon/stores/2/favicon.ico" /> 23<link rel="shortcut icon" type="image/x-icon" href="https://images.lillianvernon.com/favicon/stores/2/favicon.ico" /> 24<meta name="facebook-domain-verification" content="8eylkyuwkh0fbsns2tobfgs1lsq47y"> 25<meta name="norton-safeweb-site-verification" content="wpbin2r-koibw0u7ex-9o8z0905rucbghx6ox0rncbfppvwhknz369wb787lqe0cnmcj8e6yyhh4senv5492y123ozmudm7wbw5lk66z0dtgsdlg1penc8le78xhnp26"> 26 <style> 27 .ec-gtm-cookie-directive > div { background: #ffffff; color: #000000; -webkit-border-radius: 8px; -moz-border-radius: 8px; -ms-border-radius: 8px; -o-border-radius: 8px; border-radius: 8px; } 28 .ec-gtm-cookie-directive > div > div > div { padding-left: 0px; } 29 .ec-gtm-cookie-directive > div > div > div a.action.accept, 30 .ec-gtm-cookie-directive > div > div > div a.action.accept-all { color: #8bc53f; } 31 .ec-gtm-cookie-directive > div > div > div a.action.refuse, 32 .ec-gtm-cookie-directive > div > div > div a.action.customize { color: #000000; } 33 .ec-gtm-cookie-directive > div > div > div .ec-gtm-cookie-directive-note-toggle { color: #8bc53f; } 34 .ec-gtm-cookie-directive-segments { background: #ffffff; } 35 .ec-gtm-cookie-directive-segments > div input[type="checkbox"] + label:before { border:1px solid #000000; } 36 .ec-gtm-cookie-directive .consent-logo { width: 0px; } 37 38</style> 39 40 41 42 43 44 45 46<!-- End Google Tag Manager --> 47 48 49 50 51 52
53<script nonce="dHV2bnUwajJsMmxlZXVwZDhhdXNibmszbnF5YXd3a3M=">var prCookieService={defaultAttributes:{path:'/'},converter:{write:function(value){return encodeURIComponent(value);},read:function(value){return decodeURIComponent(value)}},decode:function(string){return string.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent);},set:function(key,value,attributes){if(typeof document==='undefined'){return;} 54attributes=Object.assign(this.defaultAttributes,attributes);if(typeof attributes.expires==='number'){attributes.expires=new Date(new Date()*1+attributes.expires*864e+5);} 55attributes.expires=attributes.expires?attributes.expires.toUTCString():'';try{var result=JSON.stringify(value);if(/^[\{\[]/.test(result)){value=result;}}catch(e){} 56value=this.converter.write(value);key=this.converter.write(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var stringifiedAttributes='';for(var attributeName in attributes){if(!attributes[attributeName]){continue;} 57stringifiedAttributes+='; '+attributeName;if(attributes[attributeName]===true){continue;} 58stringifiedAttributes+='='+attributes[attributeName].split(';')[0];} 59return(document.cookie=key+'='+value+stringifiedAttributes);},remove:function(key,attributes){this.set(key,'',{...attributes,...{expires:-1}});},get:function(key,json=false){if(typeof document==='undefined'){return;} 60var jar={};var cookies=document.cookie?document.cookie.split('; '):[];var i=0;for(;i<cookies.length;i++){var parts=cookies[i].split('=');var cookie=parts.slice(1).join('=');if(!json&&cookie.charAt(0)==='"'){cookie=cookie.slice(1,-1);} 61try{var name=this.converter.write(parts[0]);cookie=this.converter.read(cookie);if(json){try{cookie=JSON.parse(cookie);}catch(e){}} 62jar[name]=cookie;if(key===name){break;}}catch(e){}} 63return key?jar[key]:jar;}}</script>
63 64<!-- Meta Business Extension for Magento 2 --> 65 66<!-- End Meta Pixel Code --> 67 68 69 70 71 72 73 74 </head> 75 <body data-container="body" 76 data-mage-init='{"loaderAjax": {}, "loader": { "icon": "https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/loader-2.gif"}}' 77 class="pl-thm-regent pl-thm-regent-cmg_lv prgdpr-regent prgdpr-regent-cmg_lv prgdpr-account-check page-layout-1column" id="html-body"> 78 79 80 81 82 83 84 85 86 <noscript> 87 <img height="1" width="1" style="display:none" 88 alt="facebook pixel" src="https://www.facebook.com/tr?id=621157275234205&ev=PageView&noscript=1&a=magento_opensource-0.0.0-1.6.4"> 89 </noscript> 90 91 92 93 94 95<div 96 class="ambanners ambanner-10" 97 data-position="10" 98 data-bannerid="" 99 data-role="amasty-banner-container" 100></div> 101 102<div class="cookie-status-message" id="cookie-status"> 103 The store will not work correctly when cookies are disabled.</div> 104 105 106 107 108 <noscript> 109 <div class="message global noscript"> 110 <div class="content"> 111 <p> 112 <strong>JavaScript seems to be disabled in your browser.</strong> 113 <span> 114 For the best experience on our site, be sure to turn on Javascript in your browser. </span> 115 </p> 116 </div> 117 </div> 118 </noscript> 119 120 121 122 123 124 125 126<!-- Google Tag Manager -->
vendor: 62 bytes, lines 126-127
126 127<noscript><iframe src="//www.googletagmanager.com/ns.html?id=
127GTM-MSF7FLK
vendor: 83 bytes, line 127
127" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
128<!-- End Google Tag Manager --> 129 130<div data-bind="scope: 'pr-cookie-notice'" class="pr-cookie-notice-wrapper"> 131 <!-- ko template: getTemplate() --><!-- /ko --> 132</div> 133 134 135 136<div data-bind="scope: 'pr-cookie-settings-bar'" class="pr-cookie-settings-bar-wrapper"> 137 <!-- ko template: getTemplate() --><!-- /ko --> 138</div> 139 140 141 142 143 144<div id="prgdpr-consentpopups-container"></div> 145<div class="page-wrapper"><header class="page-header"><div class="header content"><a class="action skip contentarea" 146 href="#contentarea"> 147 <span> 148 Skip to Content </span> 149</a> 150<a class="logo" href="https://www.lillianvernon.com/"> 151 <picture> 152 <source media="(min-width: 768px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_d.avif" type="image/avif"></source> 153 <source media="(min-width: 768px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_d.webp" type="image/webp"></source> 154 <source media="(max-width: 767px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_m.avif" type="image/avif"></source> 155 <source media="(max-width: 767px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_m.webp" type="image/webp"></source> 156 <source media="(min-width: 768px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_d.png"></source> 157 <source media="(max-width: 767px)" srcset="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo_m.png"></source> 158 <img src="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/Lillian_Vernon_Logo.png" alt="Lillian Vernon" width="437" height="70"> 159 </picture> 160 </a> 161 162<div class="header-center"><div class="block block-search"> 163 <div class="block block-title"><strong>Search</strong></div> 164 <div class="block block-content"> 165 <form class="form minisearch" id="search_mini_form" 166 action="https://www.lillianvernon.com/catalogsearch/result/" method="get"> 167 <div class="field search"> 168 <div class="control"> 169 <input id="search" 170 type="text" 171 name="q" 172 value="" 173 placeholder="Search." 174 class="input-text athos-ac" 175 maxlength="128" 176 role="combobox" 177 aria-haspopup="false" 178 aria-autocomplete="both" 179 autocomplete="off" 180 aria-expanded="false" 181 aria-label="search" 182 data-bind="attr: {title: 'Search'}"/> 183 <div class="nested"> 184 <a class="action advanced" href="https://www.lillianvernon.com/catalogsearch/advanced/" data-action="advanced-search"> 185 Advanced Search </a> 186</div> 187 </div> 188 </div> 189 <div class="actions" tabindex="0" data-bind="attr: {title: 'Search'}"> 190 <button type="submit" 191 title="Search" 192 class="action search" 193 aria-label="Search" 194 id="search_button" 195 tabindex="0" 196 > 197 <span>Search</span> 198 </button> 199 </div> 200 </form> 201 </div> 202</div> 203</div><div class="header-right"><div class="panel wrapper"><div class="panel header"><ul class="header links" role="menu"> <li class="greet welcome" data-bind="scope: 'customer'" role="presentation"> 204 <!-- ko if: customer().fullname -->
205 <span class="logged-in" data-bind="text: new String('Welcome, %1!'). 206 replace('%1', customer().fullname)" role="menuitem"> 207 </span> 208 <!-- /ko --> 209 <!-- ko ifnot: customer().fullname --> 210 <span class="not-logged-in" data-bind="text: ''" role="menuitem"></span> 211 <!-- /ko --> 212 </li> 213 214<li class="email" role="presentation"> 215 <a class="header-link-custom" href="https://www.lillianvernon.com/resources/emailsignup" role="menuitem"> 216 Email </a> 217</li><li class="track" role="presentation"> 218 <a class="header-link-custom" href="https://www.lillianvernon.com/trackorder/track/index" role="menuitem"> 219 Track </a> 220</li><li class="link authorization-link " data-label="or" role="presentation"> 221 <a href="https://www.lillianvernon.com/customer/account/login/" role="menuitem">Account </a> 222</li> 223</ul> 224</div></div><span data-action="toggle-nav" class="action nav-toggle"><span>Toggle Nav</span></span> 225<div data-block="minicart" class="minicart-wrapper"> 226 <a class="action showcart" href="https://www.lillianvernon.com/checkout/cart/" 227 data-bind="scope: 'minicart_content'"> 228 <span class="text">Cart</span> 229 <span class="counter qty empty" 230 data-bind="css: { empty: !!getCartParam('summary_count') == false && !isLoading() }, 231 blockLoader: isLoading"> 232 <!-- ko if: getCartParam('summary_count') --> 233 <span class="counter-number" data-bind="attr: {'aria-label': getCartParam('summary_count').toLocaleString(window.LOCALE) + ' items'}"> 234 <!-- ko text: getCartParam('summary_count').toLocaleString(window.LOCALE) --><!-- /ko --> 235 </span> 236 <!-- /ko --> 237 </span> 238 </a> 239 <div class="block block-minicart" 240 data-role="dropdownDialog" 241 data-mage-init='{"dropdownDialog":{ 242 "appendTo":"[data-block=minicart]", 243 "triggerTarget":".showcart", 244 "timeout": "2000", 245 "closeOnMouseLeave": false, 246 "closeOnEscape": true, 247 "triggerClass":"active", 248 "parentClass":"active", 249 "buttons":[]}}'> 250 <div id="minicart-content-wrapper" data-bind="scope: 'minicart_content'"> 251 <!-- ko template: getTemplate() --><!-- /ko --> 252 </div> 253 </div> 254 255</div> 256<span data-action="toggle-nav" class="action nav-account-toggle"> 257 <span> 258 <img title="my account" width="38" height="38" class="header-my-account" src="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/my-account.png" alt="My Account"> 259 </span> 260</span></div></div> 261 262 263 264</header> <div class="sections nav-sections"> 265 <div class="section-items nav-sections-items" role="tablist" 266 data-mage-init='{"tabs":{"openedState":"active", "panelParentSelector":".sections.nav-sections"}}'> 267 <div class="section-item-title nav-sections-item-title" 268 data-role="collapsible" role="tab"> 269 <a class="nav-sections-item-switch" 270 data-toggle="switch" href="#store.menu"> 271 Menu </a> 272 </div> 273 <div class="section-item-title nav-sections-item-title" 274 data-role="collapsible" role="tab"> 275 <a class="nav-sections-item-switch" 276 data-toggle="switch" href="#store.links"> 277 Account </a> 278 </div> 279 </div> 280 <div class="section-item-content nav-sections-item-content" 281 id="store.menu" role="tabpanel" 282 data-role="content"> 283 <nav class="navigation" data-action="navigation"> 284 <ul data-mage-init='{"menu":{"responsive":true, "expanded":true, "position":{"my":"left top","at":"left bottom"}}}' role="menu"> 285 <li class="level0 nav-1 category-item first level-top parent flyout-menu-3-2" role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions.html" class="level-top" role="menuitem"><span>Holidays & Occasions</span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=BTK3H2K],#html-body [data-pb-style=NECC2FE]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=NECC2FE]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=BTK3H2K]{align-self:stretch}#html-body [data-pb-style=UT5FLC3]{display:flex;width:100%}#html-body [data-pb-style=OVANE23]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=N4IQN06]{text-align:center;border-style:none}#html-body [data-pb-style=OMW9EPE],#html-body [data-pb-style=T0S8MVK]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=N4IQN06]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="NECC2FE"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="BTK3H2K"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="UT5FLC3"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="OVANE23"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="N4IQN06"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters.html" target="" data-link-type="category" none="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/wysiwyg/LV610_holocc_menu.jpg" alt="Halloween" title="" width="100" height="100" loading="lazy" data-element="desktop_image" data-pb-style="T0S8MVK"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/wysiwyg/LV610_holocc_menu_1.jpg" alt="Halloween" title="" width="100" height="100" loading="lazy" data-element="mobile_image" data-pb-style="OMW9EPE"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">Delightfully Spooky.</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters.html">Shop Halloween</a></p></div></div></div></div></div></div></li>
285<li class="level1 nav-1-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters.html" role="menuitem"><span>Halloween </span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-1-1-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters/treat-bags.html" role="menuitem"><span>Treat Bags</span></a></li><li class="level2 nav-1-1-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters/halloween-for-kids.html" role="menuitem"><span>Halloween for Kids</span></a></li><li class="level2 nav-1-1-3 category-item last " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters/halloween-decor.html" role="menuitem"><span>Halloween Decor</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/halloween-hauntquarters.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-1-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/thanksgiving.html" role="menuitem"><span>Thanksgiving</span></a></li><li class="level1 nav-1-3 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas.html" role="menuitem"><span>Christmas</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-1-3-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas/personalized-christmas-stockings.html" role="menuitem"><span>Personalized Christmas Stockings</span></a></li><li class="level2 nav-1-3-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas/ornaments.html" role="menuitem"><span>Christmas Ornaments</span></a></li><li class="level2 nav-1-3-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas/christmas-decor.html" role="menuitem"><span>Christmas Decor</span></a></li><li class="level2 nav-1-3-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas/christmas-themed-gifts.html" role="menuitem"><span>Christmas Themed Gifts</span></a></li><li class="level2 nav-1-3-5 category-item last " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas/christmas-for-kids.html" role="menuitem"><span>Christmas for Kids</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/christmas.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-1-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/wedding-and-anniversary.html" role="menuitem"><span>Wedding & Anniversary</span></a></li><li class="level1 nav-1-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/gifts-for-new-baby.html" role="menuitem"><span>Gifts for New Baby</span></a></li><li class="level1 nav-1-6 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/gift-wrap.html" role="menuitem"><span>Gift Wrap</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-1-6-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/gift-wrap/birthday-gift-wrap.html" role="menuitem"><span>Birthday Gift Wrap</span></a></li><li class="level2 nav-1-6-2 category-item last " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/gift-wrap/christmas-gift-wrap.html" role="menuitem"><span>Christmas Gift Wrap</span></a></li></ul></li><li class="level1 nav-1-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/greeting-cards.html" role="menuitem"><span>Greeting Cards</span></a></li>
285<li class="level1 nav-1-8 category-item " role="presentation"><a href="https://www.lillianvernon.com/catalog/category/view/s/birthday/id/2169/" role="menuitem"><span>Birthday</span></a></li><li class="level1 nav-1-9 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/valentines-day.html" role="menuitem"><span>Valentine's Day</span></a></li><li class="level1 nav-1-10 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/stpatricks-day.html" role="menuitem"><span>St. Patrick's Day</span></a></li><li class="level1 nav-1-11 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter.html" role="menuitem"><span>Easter</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-1-11-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter/easter-baskets.html" role="menuitem"><span>Easter Baskets</span></a></li><li class="level2 nav-1-11-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter/easter-bunnies.html" role="menuitem"><span>Easter Bunnies</span></a></li><li class="level2 nav-1-11-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter/easter-decor.html" role="menuitem"><span>Easter Decor</span></a></li><li class="level2 nav-1-11-4 category-item last " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter/easter-gifts.html" role="menuitem"><span>Easter Gifts</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/easter.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-1-12 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/mothers-day.html" role="menuitem"><span>Mother's Day</span></a></li><li class="level1 nav-1-13 category-item " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/fathers-day.html" role="menuitem"><span>Father's Day</span></a></li><li class="level1 nav-1-14 category-item last parent " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/4th-of-july.html" role="menuitem"><span>4th of July</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-1-14-1 category-item first last " role="presentation"><a href="https://www.lillianvernon.com/holidays-and-occasions/4th-of-july/america-250.html" role="menuitem"><span>America 250</span></a></li></ul></li></ul></li><li class="level0 nav-2 category-item level-top parent flyout-menu-4-3" role="presentation"><a href="https://www.lillianvernon.com/lillys-kids.html" class="level-top" role="menuitem"><span>Lilly's Kids</span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=D8XJGN2],#html-body [data-pb-style=MQYX382]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=D8XJGN2]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=MQYX382]{align-self:stretch}#html-body [data-pb-style=WSOQOH2]{display:flex;width:100%}#html-body [data-pb-style=OTS14LY]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=W7KQTBB]{text-align:center;border-style:none}#html-body [data-pb-style=NTX2DRL],#html-body [data-pb-style=YGX656X]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=W7KQTBB]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="D8XJGN2"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="MQYX382"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="WSOQOH2"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="OTS14LY"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="W7KQTBB"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/halloween.html" target="_blank" data-link-type="category" none="Halloween For Kids" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/wysiwyg/LV610_lillykids_menu.jpg" alt="Halloween For Kids" title="Halloween For Kids" width="100" height="100" loading="lazy" data-element="desktop_image" data-pb-style="NTX2DRL"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/wysiwyg/LV610_lillykids_menu_1.jpg" alt="Halloween For Kids" title="Halloween For Kids" width="100" height="100" loading="lazy" data-element="mobile_image" data-pb-style="YGX656X"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">Frightful Halloween toys.</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a tabindex="0" href="https://www.lillianvernon.com/lillys-kids/kids-themes/halloween.html">
285Halloween For Kids</a></p></div></div></div></div></div></div></li><li class="level1 nav-2-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags.html" role="menuitem"><span>Kids' Bags</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-1-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/kids-rolling-luggage.html" role="menuitem"><span>Kids Rolling Luggage</span></a></li><li class="level2 nav-2-1-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/kids-backpacks.html" role="menuitem"><span>Kids' Backpacks</span></a></li><li class="level2 nav-2-1-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/sports-bags-and-duffels.html" role="menuitem"><span>Kids' Sports Bags & Duffels</span></a></li><li class="level2 nav-2-1-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/lunch-bags.html" role="menuitem"><span>Kids' Lunch Bags</span></a></li><li class="level2 nav-2-1-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/kids-tote-bags.html" role="menuitem"><span>Kids' Tote Bags</span></a></li><li class="level2 nav-2-1-6 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags/kids-toiletry-bags.html" role="menuitem"><span>Kids' Toiletry Bags</span></a></li></ul></li><li class="level1 nav-2-2 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-beach-and-outdoor.html" role="menuitem"><span>Kids' Beach and Outdoor</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-2-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-beach-and-outdoor/kids-beach-towels.html" role="menuitem"><span>Kids' Beach Towels</span></a></li><li class="level2 nav-2-2-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-beach-and-outdoor/beach-and-backyard-toys.html" role="menuitem"><span>Beach and Backyard Toys</span></a></li><li class="level2 nav-2-2-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-beach-and-outdoor/kids-personalized-water-bottles.html" role="menuitem"><span>Kids' Personalized Water Bottles</span></a></li><li class="level2 nav-2-2-4 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-beach-and-outdoor/kids-beach-totes.html" role="menuitem"><span>Kids' Beach Totes</span></a></li></ul></li><li class="level1 nav-2-3 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms.html" role="menuitem"><span>Kids' Rooms</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-3-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms/boys-rooms.html" role="menuitem"><span>Boys' Rooms</span></a></li><li class="level2 nav-2-3-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms/girls-rooms.html" role="menuitem"><span>Girls' Rooms</span></a></li><li class="level2 nav-2-3-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms/kids-organization.html" role="menuitem"><span>Kids' Organization</span></a></li><li class="level2 nav-2-3-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms/sleeping-bags-and-nap-pads.html" role="menuitem"><span>Sleeping Bags and Nap Pads</span></a></li><li class="level2 nav-2-3-5 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-rooms/jewelry-and-accessories.html" role="menuitem"><span>Jewelry and Accessories</span></a></li></ul></li><li class="level1 nav-2-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys.html" role="menuitem"><span>Kids' Toys</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-4-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/baby-to-4-years.html" role="menuitem"><span>Baby & Toddler</span></a></li><li class="level2 nav-2-4-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/kids-5-11-years.html" role="menuitem"><span>Kids 5-11 Years</span></a></li><li class="level2 nav-2-4-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/animals-dinosaurs.html" role="menuitem"><span>
285Animals & Dinosaurs</span></a></li><li class="level2 nav-2-4-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/kids-crafts.html" role="menuitem"><span>Arts & Crafts</span></a></li><li class="level2 nav-2-4-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/personalized-storybooks.html" role="menuitem"><span>Books & Storybooks</span></a></li><li class="level2 nav-2-4-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/dolls.html" role="menuitem"><span>Dolls & Accessories</span></a></li><li class="level2 nav-2-4-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/educational-toys.html" role="menuitem"><span>Educational Toys</span></a></li><li class="level2 nav-2-4-8 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/games.html" role="menuitem"><span>Puzzles & Games</span></a></li><li class="level2 nav-2-4-9 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/plush-toys.html" role="menuitem"><span>Plush Toys</span></a></li><li class="level2 nav-2-4-10 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/pretend-play.html" role="menuitem"><span>Pretend Play</span></a></li><li class="level2 nav-2-4-11 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-toys/sports-outdoor-toys.html" role="menuitem"><span>Sports & Outdoor Toys</span></a></li></ul></li><li class="level1 nav-2-5 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/back-to-school.html" role="menuitem"><span>Back To School</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-5-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-bags.html" role="menuitem"><span>School Bags</span></a></li><li class="level2 nav-2-5-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/back-to-school/pencil-and-pencil-cases.html" role="menuitem"><span>Pencils and Pencil Cases</span></a></li><li class="level2 nav-2-5-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/back-to-school/school-supplies.html" role="menuitem"><span>School Supplies</span></a></li><li class="level2 nav-2-5-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/back-to-school/teacher-gifts.html" role="menuitem"><span>Teacher Gifts</span></a></li><li class="level2 nav-2-5-5 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/back-to-school/kids-water-bottles.html" role="menuitem"><span>Kids' Water Bottles</span></a></li></ul></li><li class="level1 nav-2-6 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes.html" role="menuitem"><span>Popular Kids' Themes</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-2-6-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/halloween.html" role="menuitem"><span>Halloween</span></a></li><li class="level2 nav-2-6-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/cars-trucks-and-trains-theme.html" role="menuitem"><span>Cars, Trucks & Trains</span></a></li><li class="level2 nav-2-6-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/dinosaur.html" role="menuitem"><span>Dinosaur</span></a></li><li class="level2 nav-2-6-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/mermaid.html" role="menuitem"><span>Mermaid</span></a></li><li class="level2 nav-2-6-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/princess-and-dance-theme.html" role="menuitem"><span>Princess & Dance</span></a></li><li class="level2 nav-2-6-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/shark.html" role="menuitem"><span>Shark</span></a></li><li class="level2 nav-2-6-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/sports.html" role="menuitem"><span>
285Sports</span></a></li><li class="level2 nav-2-6-8 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes/unicorn-and-fantasy-theme.html" role="menuitem"><span>Unicorn & Fantasy</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-themes.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-2-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-stationery.html" role="menuitem"><span>Kids' Stationery</span></a></li><li class="level1 nav-2-8 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/kids-placemats-and-drinkware.html" role="menuitem"><span>Kids' Placemats & Drinkware</span></a></li><li class="level1 nav-2-9 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/bath-time.html" role="menuitem"><span>Bath Time</span></a></li><li class="level1 nav-2-10 category-item last " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids/baby-rompers.html" role="menuitem"><span>Baby Rompers</span></a></li></ul></li><li class="level0 nav-3 category-item level-top parent flyout-menu-4-1" role="presentation"><a href="https://www.lillianvernon.com/for-home.html" class="level-top" role="menuitem"><span>For Home</span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=J097RXV],#html-body [data-pb-style=PYYQY39]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=J097RXV]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=PYYQY39]{align-self:stretch}#html-body [data-pb-style=JIP8K1K]{display:flex;width:100%}#html-body [data-pb-style=TB1PS3R]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=V088E43]{text-align:center;border-style:none}#html-body [data-pb-style=C0S6A80],#html-body [data-pb-style=TWRANHX]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=V088E43]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="J097RXV"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="PYYQY39"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="JIP8K1K"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="TB1PS3R"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="V088E43"><a href="/for-home/decorative-hand-towels.html" target="" data-link-type="default" none="Shop Decorative Hand Towels" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/LV609_forhome_menu_jpg.avif" alt="Shop Decorative Hand Towels" title="Shop Decorative Hand Towels" width="100" height="100" loading="lazy" data-element="desktop_image" data-pb-style="TWRANHX"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/LV609_forhome_menu_1_jpg.avif" alt="Shop Decorative Hand Towels" title="Shop Decorative Hand Towels" width="100" height="100" loading="lazy" data-element="mobile_image" data-pb-style="C0S6A80"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">In good hands.</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a href="/for-home/decorative-hand-towels.html">Shop Decorative<br>Hand Towels</a></p></div></div></div></div></div></div></li>
285<li class="level1 nav-3-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor.html" role="menuitem"><span>Home Decor</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-3-1-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/decorative-accents.html" role="menuitem"><span>Decorative Accents</span></a></li><li class="level2 nav-3-1-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/rugs-and-mats.html" role="menuitem"><span>Rugs and Mats</span></a></li><li class="level2 nav-3-1-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/pillows.html" role="menuitem"><span>Pillows and Throws</span></a></li><li class="level2 nav-3-1-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/wall-plaques.html" role="menuitem"><span>Wall Plaques</span></a></li><li class="level2 nav-3-1-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/garden-outdoor.html" role="menuitem"><span>Garden & Outdoor</span></a></li><li class="level2 nav-3-1-6 category-item last " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-decor/decorative-ornaments.html" role="menuitem"><span>Decorative Ornaments</span></a></li></ul></li><li class="level1 nav-3-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/decorative-hand-towels.html" role="menuitem"><span>Decorative Hand Towels</span></a></li><li class="level1 nav-3-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/storage-organization.html" role="menuitem"><span>Storage and Organization</span></a></li><li class="level1 nav-3-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining.html" role="menuitem"><span>Kitchen, Dining & Bar</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-3-4-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/bar-and-wine.html" role="menuitem"><span>Drinkware and Bar</span></a></li><li class="level2 nav-3-4-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/cutting-and-charcuterie-boards.html" role="menuitem"><span>Cutting & Charcuterie Boards</span></a></li><li class="level2 nav-3-4-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/coasters-trivets.html" role="menuitem"><span>Coasters and Trivets</span></a></li><li class="level2 nav-3-4-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/kitchen-tools-and-cookware.html" role="menuitem"><span>Cookware & Serveware</span></a></li><li class="level2 nav-3-4-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/dinnerware-and-linens.html" role="menuitem"><span>Dinnerware and Linens</span></a></li><li class="level2 nav-3-4-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/utensils-gadgets.html" role="menuitem"><span>Utensils and Gadgets</span></a></li><li class="level2 nav-3-4-7 category-item last " role="presentation"><a href="https://www.lillianvernon.com/for-home/kitchen-and-dining/treat-jars.html" role="menuitem"><span>Treat Jars</span></a></li></ul></li><li class="level1 nav-3-5 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office.html" role="menuitem"><span>Home Office</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-3-5-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/calendar.html" role="menuitem"><span>Calendars</span></a></li><li class="level2 nav-3-5-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/office-accessories.html" role="menuitem"><span>Office Accessories</span></a></li><li class="level2 nav-3-5-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/personalized-journals.html" role="menuitem"><span>Journals & Notebooks</span></a></li><li class="level2 nav-3-5-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/personalized-stationery-home-office.html" role="menuitem"><span>Personalized Stationery</span></a></li><li class="level2 nav-3-5-5 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/invitations-announcements.html" role="menuitem"><span>Invitations & Announcements</span></a></li><li class="level2 nav-3-5-6 category-item last " role="presentation"><a href="https://www.lillianvernon.com/for-home/home-office/address-labels.html" role="menuitem"><span>Address Labels</span></a></li></ul></li>
285<li class="level1 nav-3-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/health-safety-ppe.html" role="menuitem"><span>Health & Safety</span></a></li><li class="level1 nav-3-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/for-home/travel-essentials.html" role="menuitem"><span>Travel Essentials</span></a></li><li class="level1 nav-3-8 category-item last " role="presentation"><a href="https://www.lillianvernon.com/for-home/books.html" role="menuitem"><span>Books</span></a></li></ul></li><li class="level0 nav-4 category-item level-top parent flyout-menu-4-1" role="presentation"><a href="https://www.lillianvernon.com/gifts.html" class="level-top" role="menuitem"><span>Gifts</span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=GFWKLWV],#html-body [data-pb-style=SH5OSXF]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=GFWKLWV]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=SH5OSXF]{align-self:stretch}#html-body [data-pb-style=SPWROWO]{display:flex;width:100%}#html-body [data-pb-style=D6Y5GSL]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=OVE99GR]{text-align:center;border-style:none}#html-body [data-pb-style=UN90FWQ],#html-body [data-pb-style=WQ8FN6R]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=OVE99GR]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="GFWKLWV"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="SH5OSXF"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="SPWROWO"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="D6Y5GSL"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="OVE99GR"><a href="https://www.lillianvernon.com/for-your-home/home-looks/christmas-holiday-decor.html" target="" data-link-type="category" none="Shop Gifts for Home" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/wysiwyg/LV610_gifts_menu.jpg" alt="Shop Gifts for Home" title="Shop Gifts for Home" width="100" height="100" loading="lazy" data-element="desktop_image" data-pb-style="UN90FWQ"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/wysiwyg/LV610_gifts_menu_1.jpg" alt="Shop Gifts for Home" title="Shop Gifts for Home" width="100" height="100" loading="lazy" data-element="mobile_image" data-pb-style="WQ8FN6R"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">Let the Countdown Begin!</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a href="https://www.lillianvernon.com/gifts/gifts-for-home.html">Shop Gifts for Home</a></p></div></div></div></div></div></div></li><li class="level1 nav-4-1 category-item first parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-home.html" role="menuitem"><span>Gifts for Home</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-4-1-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-home/cutting-board-gifts.html" role="menuitem"><span>Cutting Boards</span></a></li><li class="level2 nav-4-1-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-home/plaque-gifts.html" role="menuitem"><span>Wall Plaques</span></a></li><li class="level2 nav-4-1-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-home/coasters-trivets-gifts.html" role="menuitem"><span>Coasters & Trivets</span></a></li><li class="level2 nav-4-1-4 category-item last " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-home/pillows-blankets.html" role="menuitem"><span>Pillows & Blankets</span></a></li></ul></li>
285<li class="level1 nav-4-2 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her.html" role="menuitem"><span>Gifts for Her</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-4-2-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her/totes-and-bags.html" role="menuitem"><span>Totes & Bags</span></a></li><li class="level2 nav-4-2-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her/spa.html" role="menuitem"><span>Spa</span></a></li><li class="level2 nav-4-2-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her/jewelry.html" role="menuitem"><span>Jewelry & Jewelry Cases</span></a></li><li class="level2 nav-4-2-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her/clothing-accessories.html" role="menuitem"><span>Clothing & Accessories</span></a></li><li class="level2 nav-4-2-5 category-item last " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-her/mugs-her.html" role="menuitem"><span>Mugs for Her</span></a></li></ul></li><li class="level1 nav-4-3 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him.html" role="menuitem"><span>Gifts for Him</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-4-3-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/mens-bags.html" role="menuitem"><span>Bags for Men</span></a></li><li class="level2 nav-4-3-2 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/accessories-for-men.html" role="menuitem"><span>Clothing & Accessories for Men</span></a></li><li class="level2 nav-4-3-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/grill-master.html" role="menuitem"><span>Grill Master</span></a></li><li class="level2 nav-4-3-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/bar-pub.html" role="menuitem"><span>Bar & Pub</span></a></li><li class="level2 nav-4-3-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/handyman.html" role="menuitem"><span>Handyman</span></a></li><li class="level2 nav-4-3-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/sports-and-hobbies.html" role="menuitem"><span>Sports & Hobbies</span></a></li><li class="level2 nav-4-3-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/outdoorsman.html" role="menuitem"><span>Outdoorsman</span></a></li><li class="level2 nav-4-3-8 category-item last " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-him/mugs-him.html" role="menuitem"><span>Mugs for Him</span></a></li></ul></li><li class="level1 nav-4-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/gifts/photo-gifts.html" role="menuitem"><span>Photo Gifts</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-4-4-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/gifts/photo-gifts/photo-calendars.html" role="menuitem"><span>Photo Calendars</span></a></li><li class="level2 nav-4-4-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/photo-gifts/photo-mugs.html" role="menuitem"><span>Photo Mugs</span></a></li><li class="level2 nav-4-4-3 category-item last " role="presentation"><a href="https://www.lillianvernon.com/gifts/photo-gifts/personalized-photo-plaques.html" role="menuitem"><span>Photo Plaques</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/gifts/photo-gifts.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-4-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/curated-gift-boxes.html" role="menuitem"><span>Curated Gift Boxes</span></a></li>
285<li class="level1 nav-4-6 category-item flyout-menu-3-1" role="presentation"><a href="https://www.lillianvernon.com//luxe-gifts.html" role="menuitem"><span>Luxe Gifts</span></a></li><li class="level1 nav-4-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/lillys-kids.html" role="menuitem"><span>Gifts for Kids</span></a></li><li class="level1 nav-4-8 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/baby-gifts.html" role="menuitem"><span>Gifts for Babies</span></a></li><li class="level1 nav-4-9 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/wedding-gifts.html" role="menuitem"><span>Gifts for Weddings</span></a></li><li class="level1 nav-4-10 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-pets.html" role="menuitem"><span>Gifts for Pet Owners</span></a></li><li class="level1 nav-4-11 category-item " role="presentation"><a href="https://www.lillianvernon.com/gifts/gifts-for-teacher.html" role="menuitem"><span>Gifts for Teacher</span></a></li><li class="level1 nav-4-12 category-item last " role="presentation"><a href="https://www.lillianvernon.com/gifts/memorial-gifts.html" role="menuitem"><span>Memorial Gifts</span></a></li></ul></li><li class="level0 nav-5 category-item level-top parent flyout-menu-3-1" role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts.html" class="level-top" role="menuitem"><span>Luxe Gifts</span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=ABIVFYY],#html-body [data-pb-style=FTJT5L7]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=FTJT5L7]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=ABIVFYY]{align-self:stretch}#html-body [data-pb-style=N9PUBT7]{display:flex;width:100%}#html-body [data-pb-style=MH1FGNY]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=O7VAHEP]{text-align:center;border-style:none}#html-body [data-pb-style=DTNV9LA],#html-body [data-pb-style=MBABSEH]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=O7VAHEP]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="FTJT5L7"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="ABIVFYY"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="N9PUBT7"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="MH1FGNY"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="O7VAHEP"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gift-books.html" target="" data-link-type="category" none="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/061226_luxe_menu_jpg.avif" alt="Shop Luxe Gifts" title="" loading="lazy" width="100" height="100" data-element="desktop_image" data-pb-style="MBABSEH"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/061226_luxe_menu_1_jpg.avif" alt="Shop Luxe Gifts" title="" loading="lazy" width="100" height="100" data-element="mobile_image" data-pb-style="DTNV9LA"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">UNIQUELY CURATED FINDS.</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gift-books.html">Luxe Books</a></p></div></div></div></div></div></div></li>
285<li class="level1 nav-5-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gifts-home.html" role="menuitem"><span>Luxe Gifts for Home</span></a></li><li class="level1 nav-5-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gifts-men.html" role="menuitem"><span>Luxe Gifts for Men</span></a></li><li class="level1 nav-5-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxury-gifts-women.html" role="menuitem"><span>Luxe Gifts for Women</span></a></li><li class="level1 nav-5-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-entertaining-barware.html" role="menuitem"><span>Luxe Entertaining & Barware</span></a></li><li class="level1 nav-5-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-pet-gifts.html" role="menuitem"><span>Luxe Gifts for Pets</span></a></li><li class="level1 nav-5-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gifts-for-babies-and-kids.html" role="menuitem"><span>Luxe Gifts for Babies and Kids</span></a></li><li class="level1 nav-5-7 category-item last " role="presentation"><a href="https://www.lillianvernon.com/luxe-gifts/luxe-gift-books.html" role="menuitem"><span>Luxe Gift Books</span></a></li></ul></li><li class="level0 nav-6 category-item level-top parent flyout-menu-4-2" role="presentation"><a href="https://www.lillianvernon.com/featuring-current.html" class="level-top" role="menuitem"><span><p><em>featuring</em> Current<sup>®</sup></p></span></a><ul class="level0 submenu" role="menu"><li class="category-item r-menu-level-0" role="presentation"><style>#html-body [data-pb-style=I8LGEKY],#html-body [data-pb-style=PS0RC92]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=PS0RC92]{justify-content:flex-start;display:flex;flex-direction:column;text-align:center}#html-body [data-pb-style=I8LGEKY]{align-self:stretch}#html-body [data-pb-style=XJT0WGQ]{display:flex;width:100%}#html-body [data-pb-style=HAO9XN0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:100%;align-self:stretch}#html-body [data-pb-style=PIG1025]{text-align:center;border-style:none}#html-body [data-pb-style=IIXWVO7],#html-body [data-pb-style=VMJ74M1]{max-width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=PIG1025]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main" role="menuitem"><div class="menu-block" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="PS0RC92"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="I8LGEKY"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="XJT0WGQ"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="HAO9XN0"><figure class="heading" data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="PIG1025"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/halloween.html" target="" data-link-type="category" none="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/LV609_current_menu_jpg.avif" alt="Halloween Cards by Current" title="" width="100" height="100" loading="lazy" data-element="desktop_image" data-pb-style="VMJ74M1"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/LV609_current_menu_1_jpg.avif" alt="Halloween Cards by Current" title="" width="100" height="100" loading="lazy" data-element="mobile_image" data-pb-style="IIXWVO7"><div class="pagebuilder-banner-burst" data-element="burst"></div></a><figcaption data-element="caption">Halloween Cards by Current</figcaption></figure><div class="title" data-content-type="text" data-appearance="default" data-element="main"><p><a tabindex="0" href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/halloween.html">
285Halloween Cards by Current</a></p></div></div></div></div></div></div></li><li class="level1 nav-6-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/dollar-deals-by-current.html" role="menuitem"><span>Dollar Deals by Current</span></a></li><li class="level1 nav-6-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/bogo.html" role="menuitem"><span>BOGOs by Current</span></a></li><li class="level1 nav-6-3 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery.html" role="menuitem"><span>Greeting Cards & Stationery by Current</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-6-3-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/note-cards.html" role="menuitem"><span>Note Cards by Current</span></a></li><li class="level2 nav-6-3-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/stickers.html" role="menuitem"><span>Stickers by Current</span></a></li><li class="level2 nav-6-3-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/birthday.html" role="menuitem"><span>Birthday Cards by Current</span></a></li><li class="level2 nav-6-3-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/sympathy.html" role="menuitem"><span>Sympathy Cards by Current</span></a></li><li class="level2 nav-6-3-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/get-well.html" role="menuitem"><span>Get Well Cards by Current</span></a></li><li class="level2 nav-6-3-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/friendship.html" role="menuitem"><span>Friendship Cards by Current</span></a></li><li class="level2 nav-6-3-7 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery/anniversary-graduation.html" role="menuitem"><span>Anniversary & Graduation Cards by Current</span></a></li><li class="view-all category-item level2" role="presentation"><a href="https://www.lillianvernon.com/featuring-current/greeting-cards-stationery.html" class="ui-corner-all" tabindex="0" role="menuitem">View All</a></li></ul></li><li class="level1 nav-6-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/holidays-occasions.html" role="menuitem"><span>Holidays & Occasions by Current</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-6-4-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/holidays-occasions/4th-of-july.html" role="menuitem"><span>4th of July by Current</span></a></li><li class="level2 nav-6-4-2 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/holidays-occasions/christmas-by-current.html" role="menuitem"><span>Christmas by Current</span></a></li></ul></li><li class="level1 nav-6-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/gift-wrap.html" role="menuitem"><span>Everyday Gift Wrap & Accessories by Current</span></a></li><li class="level1 nav-6-6 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/christmas.html" role="menuitem"><span>Christmas by Current</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-6-6-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/christmas/christmas-cards.html" role="menuitem"><span>Christmas Cards & Stationery by Current</span></a></li><li class="level2 nav-6-6-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/christmas/christmas-accessories.html" role="menuitem"><span>Christmas Wrap & Accessories By Current</span></a></li><li class="level2 nav-6-6-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/christmas/christmas-decor.html" role="menuitem"><span>Christmas Gifts & Décor by Current</span></a></li><li class="level2 nav-6-6-4 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/christmas/christmas-for-kids-by-current.html" role="menuitem"><span>Christmas For Kids by Current</span></a></li></ul></li>
285<li class="level1 nav-6-7 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home.html" role="menuitem"><span>For Home by Current</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-6-7-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home/decorative-accents.html" role="menuitem"><span>Decorative Accents by Current</span></a></li><li class="level2 nav-6-7-2 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home/home-decor.html" role="menuitem"><span>Home Decor by Current</span></a></li><li class="level2 nav-6-7-3 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home/home-office.html" role="menuitem"><span>Home Office by Current</span></a></li><li class="level2 nav-6-7-4 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home/kitchen-dining-bar.html" role="menuitem"><span>Kitchen, Dining & Bar by Current</span></a></li><li class="level2 nav-6-7-5 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/for-home/storage-organization.html" role="menuitem"><span>Storage & Organization by Current</span></a></li></ul></li><li class="level1 nav-6-8 category-item parent " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/gifts.html" role="menuitem"><span>Gifts by Current</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-6-8-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/gifts/gifts-for-her.html" role="menuitem"><span>Gifts For Her by Current</span></a></li><li class="level2 nav-6-8-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/gifts/gifts-for-him-by-current.html" role="menuitem"><span>Gifts For Him by Current</span></a></li><li class="level2 nav-6-8-3 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/gifts/gifts-for-kids.html" role="menuitem"><span>Gifts for Kids by Current</span></a></li></ul></li><li class="level1 nav-6-9 category-item last " role="presentation"><a href="https://www.lillianvernon.com/featuring-current/calendars.html" role="menuitem"><span>Calendars by Current</span></a></li></ul></li><li class="level0 nav-7 category-item last level-top parent " role="presentation"><a href="https://www.lillianvernon.com/big-sale.html" class="level-top" role="menuitem"><span>Sale</span></a><ul class="level0 submenu" role="menu"><li class="level1 nav-7-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/big-sale/all-sale.html" role="menuitem"><span>All Sale</span></a></li><li class="level1 nav-7-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/bogos.html" role="menuitem"><span>BOGOs</span></a></li><li class="level1 nav-7-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/home-sale.html" role="menuitem"><span>Home Sale</span></a></li><li class="level1 nav-7-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/gifts-sale.html" role="menuitem"><span>Gifts Sale</span></a></li><li class="level1 nav-7-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/items-under-10-sale.html" role="menuitem"><span>Items Under $10 Sale</span></a></li><li class="level1 nav-7-6 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/halloween-sale.html" role="menuitem"><span>Halloween Sale</span></a></li><li class="level1 nav-7-7 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/after-christmas-sale.html" role="menuitem"><span>After Christmas Sale</span></a></li><li class="level1 nav-7-8 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/easter-sale.html" role="menuitem"><span>Easter Sale</span></a></li>
285<li class="level1 nav-7-9 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/patriotic-sale.html" role="menuitem"><span>Patriotic Sale</span></a></li><li class="level1 nav-7-10 category-item last parent flyout-menu-3-1" role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale.html" role="menuitem"><span>Kids' Sale</span></a><ul class="level1 submenu" role="menu"><li class="level2 nav-7-10-1 category-item first " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/kids-toys-sale.html" role="menuitem"><span>Kids' Toys Sale</span></a></li><li class="level2 nav-7-10-2 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/kids-bags-sale.html" role="menuitem"><span>Kids Bags Sale</span></a></li><li class="level2 nav-7-10-3 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/kids-rooms-sale.html" role="menuitem"><span>Kids' Rooms Sale</span></a></li><li class="level2 nav-7-10-4 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/kids-beach-outdoor-sale.html" role="menuitem"><span>Kids' Beach & Outdoor Sale</span></a></li><li class="level2 nav-7-10-5 category-item " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/back-to-school-sale.html" role="menuitem"><span>Back to School Sale</span></a></li><li class="level2 nav-7-10-6 category-item last " role="presentation"><a href="https://www.lillianvernon.com/big-sale/kids-sale/kids-bath-time-sale.html" role="menuitem"><span>Kids' Bath Time Sale</span></a></li></ul></li></ul></li><li class="level0 nav-9999 level-top parent tabbed-website-links"><a class="level-top">SHOP OUR SISTER COMPANIES:</a><ul class="level0 submenu" role="menu"><li class="level1 nav-9999-1"><a href="https://www.currentcatalog.com/?utm_source=lillianvernon.com" target="_blank">Current Catalog</a></li><li class="level1 nav-9999-2"><a href="https://www.colorfulimages.com/?utm_source=lillianvernon.com" target="_blank">Colorful Images</a></li><li class="level1 nav-9999-3"><a href="https://www.finestationery.com/?utm_source=lillianvernon.com" target="_blank">Fine Stationery</a></li></ul></li> <input type="hidden" value="" id="hover-item-index"> 286 </ul> 287</nav> 288 289 </div> 290 <div class="section-item-content nav-sections-item-content" 291 id="store.links" role="tabpanel" 292 data-role="content"> 293 <!-- Account links --> </div> 294 </div> 295<div class="promotion-banner"><div class="promotion-items"><div id="dynamic-promotion-banner" class="promo-item"> <div class="promo-block fixed-height" data-role="promo-block" 296 role="banner" data-bind="scope: 'coupon_promo_banner'"> 297 <div role="main" data-bind="html: getContent(), css: { promo: !!getContent() == true }"></div> 298 </div> 299 300 301</div></div></div><main id="maincontent" class="page-main"><a id="contentarea" tabindex="-1"></a> 302<div class="page messages"><div data-placeholder="messages"></div> 303<div data-bind="scope: 'messages'"> 304 <!-- ko if: cookieMessagesObservable() && cookieMessagesObservable().length > 0 --> 305 <div aria-atomic="true" role="alert" class="messages" data-bind="foreach: { 306 data: cookieMessagesObservable(), as: 'message' 307 }"> 308 <div data-bind="attr: { 309 class: 'message-' + message.type + ' ' + message.type + ' message', 310 'data-ui-id': 'message-' + message.type 311 }"> 312 <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div> 313 </div> 314 </div> 315 <!-- /ko --> 316 317 <div aria-atomic="true" role="alert" class="messages" data-bind="foreach: { 318 data: messages().messages, as: 'message' 319 }, afterRender: purgeMessages"> 320 <div data-bind="attr: { 321 class: 'message-' + message.type + ' ' + message.type + ' message', 322 'data-ui-id': 'message-' + message.type 323 }"> 324 <div data-bind="html: $parent.prepareMessageForHtml(message.text)"></div> 325 </div> 326 </div> 327</div> 328 329 330</div><div class="columns"><div class="column main"><input name="form_key" type="hidden" value="rSAt15IaERX66j9I" /><div id="authenticationPopup" data-bind="scope:'authenticationPopup', style: {display: 'none'}"> 331 <!-- ko template: getTemplate() --><!-- /ko --> 332 333</div> 334 335 336 337 338 339 340 <div class="page-title"> 341 <h1 data-bind="i18n: 'Privacy Center'"></h1> 342</div> 343<div id="prgdpr-account-check" class="prgdpr" data-bind="scope: 'prgdpr-account-check-form'"> 344 <!-- ko template: getTemplate() --> <!-- /ko --> 345</div> 346 347 348</div></div></main><footer class="page-footer"><div class="footer content"><ul class="footer links"></ul> 349 350<style>#html-body [data-pb-style=SQ9QTCM]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=BMURJ5B]{margin-top:-25px;margin-bottom:-25px}#html-body [data-pb-style=SC3MPND]{width:100%;border-width:1px;border-color:#ddd;display:inline-block}#html-body [data-pb-style=QOO91BF]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=QTLLVH0]{display:flex;width:100%}#html-body [data-pb-style=WLBTUNP]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}#html-body [data-pb-style=MGH81LE],#html-body [data-pb-style=VPWFSH6]{justify-content:flex-start;display:flex;flex-direction:column;width:25%;padding:0 15px;align-self:stretch}#html-body [data-pb-style=ELQAM2F],#html-body [data-pb-style=MGH81LE],#html-body [data-pb-style=R7G26OM],#html-body [data-pb-style=VPWFSH6]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=ELQAM2F]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=R7G26OM]{align-self:stretch}#html-body [data-pb-style=ES6Q06H]{display:flex;width:100%}#html-body [data-pb-style=BFBUH37],#html-body [data-pb-style=RA59IA0],#html-body [data-pb-style=U54UEH7],#html-body [data-pb-style=VYY16R6],#html-body [data-pb-style=WLAQ5NE]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:20%;align-self:stretch}#html-body [data-pb-style=DXDLKR0],#html-body [data-pb-style=WU1WBMJ]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=DXDLKR0]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=WU1WBMJ]{align-self:stretch}#html-body [data-pb-style=GSNDRR5]{display:flex;width:100%}#html-body [data-pb-style=TOPCJ30]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:25%;align-self:stretch}#html-body [data-pb-style=IWTA50E]{text-align:center}#html-body [data-pb-style=NG5WY1E]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:25%;align-self:stretch}#html-body [data-pb-style=I0Q69CU]{text-align:center;border-style:none}#html-body [data-pb-style=K2X3K2I],#html-body [data-pb-style=TKANTSP]{width:100%;height:auto}#html-body [data-pb-style=JTER98I]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:25%;align-self:stretch}#html-body [data-pb-style=K839QJN]{text-align:center;border-style:none}#html-body [data-pb-style=C362W52],#html-body [data-pb-style=QQIJC0Y]{width:100%;height:auto}#html-body [data-pb-style=ND2MFH4]{justify-content:center;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;text-align:center;width:25%;align-self:stretch}#html-body [data-pb-style=RJ15D7Q]{text-align:center;border-style:none}#html-body [data-pb-style=AHXYMFH],#html-body [data-pb-style=CWH8M6O]{width:100%;height:auto}@media only screen and (max-width: 767px) { #html-body [data-pb-style=I0Q69CU],#html-body [data-pb-style=K839QJN],#html-body [data-pb-style=RJ15D7Q]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main"><div class="seo" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="SQ9QTCM"><div data-content-type="divider" data-appearance="default" data-element="main" data-pb-style="BMURJ5B"><hr data-element="line" data-pb-style="SC3MPND"></div><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="QOO91BF"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="QTLLVH0"><div class="pagebuilder-column seo" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="WLBTUNP"><div data-content-type="text" data-appearance="default" data-element="main"> 351 <div class="seotext"> 352 <h3>Since 1951, Lillian Vernon has been the trusted destination for distinctive <a href="https://www.lillianvernon.com/catalogsearch/result/?q=Personalized+gifts#1" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-linkindex="0">Personalized Gifts</a>, timeless <a href="https://www.lillianvernon.com/lillys-kids.html" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-linkindex="1">Gifts for
353 Kids,</a> and elegant Holiday <a href="https://www.lillianvernon.com/for-home.html" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-linkindex="2">Home 354 Décor</a>.</h3> 355 <p>Our curated collection blends thoughtful design with enduring quality—perfect for 356 creating memorable moments and refined celebrations. Discover modern home accents, 357 heirloom-worthy keepsakes, and <a href="https://www.lillianvernon.com/gifts/curated-gift-boxes.html" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-linkindex="3">curated gift boxes</a> that elevate every occasion. From 358 sophisticated entertaining pieces to playful treasures for children, each item reflects 359 the craftsmanship and charm Lillian Vernon is known for. Celebrate birthdays, holidays, 360 and everyday milestones with style, and enjoy timeless designs that bring joy and beauty 361 to every home. Remember, personalization is always FREE!</p> 362 <p><br><br></p> 363 </div> 364 </div></div><div class="pagebuilder-column footer content" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="MGH81LE"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="connect"> 365 <div class="block newsletter"> 366 <div class="title"> 367 <strong>Email Sign-Up</strong> 368 <span class="sub-title">Sign up for Special Offers and Exclusives!</span> 369 </div> 370 <div class="content"> 371 <form class="form subscribe" novalidate action="https://www.lillianvernon.com/newsletter/subscriber/new/" method="post" data-mage-init='{"validation": {"errorClass": "mage-error"}}' id="newsletter-validate-detail"> 372 <div class="field newsletter"> 373 <div class="control"> 374 <label for="newsletter"> 375 <span class="label"> 376 Sign Up for Our Newsletter: </span> 377 <input name="email" type="email" id="newsletter" aria-label="Sign Up for Our Newsletter" placeholder="Enter email address" data-mage-init='{"mage/trim-input":{}}' data-validate="{required:true, 'validate-email':true}"> 378 </label> 379 </div> 380 </div> 381 <div class="actions"> 382 <button class="action subscribe primary" title="Subscribe" type="submit" aria-label="Subscribe"> 383 <span>Subscribe</span> 384 </button> 385 </div> 386 </form> 387 </div> 388</div> 389 390 391 <div class="connect-links"> 392 <div class="block shop-our-catalog"> 393 <div class="title"> 394 <strong>Shop Our Catalog</strong> 395 <span class="sub-title">Our online catalog is now shoppable!</span> 396 </div> 397 <div class="content"> 398 <div class="actions"> 399 <a class="action links primary" href="https://www.lillianvernon.com/resources/shop-our-catalog"> 400 Shop Our Catalog </a> 401 </div> 402 </div> 403</div> 404 </div> 405 </div> 406 </div></div><div class="pagebuilder-column footer content" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="VPWFSH6"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true"><div class="connect"> 407 <div class="block klaviyo"> 408 <div class="title"> 409 <strong>SMS/Text Sign-Up</strong> 410 <span class="sub-title">Get exclusive offers right from your phone!</span> 411 </div> 412 <div class="content"> 413 <div class="message-box"> 414 <p>
415 By submitting this form, you agree to receive recurring automated promotional and personalized marketing messages (e.g. cart reminders) from Lillian Vernon at the cell number used when signing up. Consent is not a condition of any purchase. Reply HELP for help and STOP to cancel. Msg frequency varies. Msg & data rates may apply. View <a href="https://www.lillianvernon.com/resources/terms-of-use">TERMS</a> & <a href="https://www.lillianvernon.com/resources/privacy-and-security">PRIVACY</a>. </p> 416 </div> 417 <form class="form klaviyo" novalidate action="https://www.lillianvernon.com/reclaim/sms/subscribe/" method="post" data-mage-init='{"validation": {"errorClass": "mage-error"}}' id="klaviyo-validate-detail"> 418 <div class="field klaviyo"> 419 <div class="control"> 420 <label for="klaviyo-phone"> 421 <span class="label"> 422 SMS/Text Sign-Up: </span> 423 </label> 424 <input name="phone" type="text" id="klaviyo-phone" aria-label="SMS/Text Sign-Up" placeholder="Enter mobile number" data-mage-init='{"mage/trim-input":{}}' data-validate="{required:true, 'validate-klaviyo-phone':true}"> 425 </div> 426 </div> 427 <div class="actions"> 428 <button class="action subscribe primary" title="Submit" type="submit" aria-label="Submit"> 429 <span>Submit</span> 430 </button> 431 </div> 432 </form> 433 </div> 434</div> 435 436 437 </div> 438 </div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div class="row" data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="ELQAM2F"><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="15" data-element="main" data-pb-style="R7G26OM"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="ES6Q06H"><div class="pagebuilder-column col-md-2" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="U54UEH7"><div data-content-type="text" data-appearance="default" data-element="main"> 439 <div class="block"> 440 <div class="block-title"><strong>Help</strong></div> 441 <div class="block-content"> 442 <ul class="links"> 443 <li><a href="https://www.lillianvernon.com/resources/customer-service">Customer Service</a> 444 </li> 445 <li><a href="https://www.lillianvernon.com/trackorder/track/index/">Track 446 Order</a></li> 447 <li><a href="https://www.lillianvernon.com/resources/shipping-information">Shipping Info</a> 448 </li> 449 <li><a href="https://www.lillianvernon.com/resources/returns-exchanges">Returns</a></li> 450 <li><a href="https://www.lillianvernon.com/resources/faq">FAQ’s</a></li> 451 <li><a href="https://www.lillianvernon.com/resources/product-safety">Product 452 Safety</a></li> 453 <li><a href="https://www.lillianvernon.com/resources/proposition-65">Proposition 454 65</a></li> 455 <li><a href="https://www.lillianvernon.com/resources/contact-us">Contact 456 Us</a></li> 457 <li>1-800-545-5426</li> 458 </ul> 459 </div> 460 </div> 461 </div></div><div class="pagebuilder-column col-md-2" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="BFBUH37"><div data-content-type="text" data-appearance="default" data-element="main"> 462 <div class="block"> 463 <div class="block-title"><strong>About Us</strong></div> 464 <div class="block-content"> 465 <ul class="links"> 466 <li><a href="https://www.lillianvernon.com/resources/about-us">Our 467 Company</a> 468 </li> 469 <li><a href="https://www.lillianvernon.com/resources/returns-exchanges">Our 470 Guarantee</a></li> 471 <li><a href="https://www.lillianvernon.com/resources/affiliate-network">Affiliate 472 Network</a></li> 473 <li><a href="https://www.lillianvernon.com/resources/careers">Careers</a> 474 </li> 475 </ul> 476 </div> 477 </div> 478 </div></div><div class="pagebuilder-column col-md-3" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="VYY16R6"><div data-content-type="text" data-appearance="default" data-element="main"><div class="block"> 479<div class="block-title"><strong>Shop</strong></div> 480<div class="block-content"> 481<ul class="links"> 482<li><a href="https://www.lillianvernon.com/resources/shop-our-catalog">Shop Our Catalog</a></li> 483<li><a href="https://www.lillianvernon.com/resources/site-map">Site Map</a></li> 484<li><a href="https://www.lillianvernon.com/resources/accessibility-statement">Accessibility Statement</a></li> 485</ul> 486<ul class="block-credit-card-types"> 487<li><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/vi_png.avif" alt="VISA" width="38" height="25" loading="lazy"></li> 488<li><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/mc_png.avif" alt="Master Card" width="38" height="25" loading="lazy"></li> 489<li><img id="GACVEW6" class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/di_png.avif" alt="Discover" width="38" height="25" loading="lazy"></li> 490<li><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/ae_png.avif" alt="American Express" width="38" height="25" loading="lazy"></li> 491<li><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/pp_png.avif" alt="Paypal" width="38" height="25" loading="lazy"></li> 492<li><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/am_png.avif" alt="Amazon" width="38" height="25" loading="lazy"></li> 493<li class="applePay"><img class="sisLogoImg" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/footer/creditcards/ap_png.avif" alt="ApplePay" width="38" height="25" loading="lazy"></li> 494<li class="klarna"> <img class="sisLogoImg" src="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/images/footer/creditcards/kl.svg" alt="Klarna" width="38" height="25" loading="lazy"> 495</li> 496</ul> 497</div> 498</div></div></div><div class="pagebuilder-column col-md-3" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="WLAQ5NE"><div data-content-type="text" data-appearance="default" data-element="main"><div class="block"> 499<div class="block-title"><strong>Privacy</strong></div> 500<div class="block-content"> 501<ul class="links"> 502<li><a href="https://www.lillianvernon.com/resources/privacy-and-security">Privacy & Security</a></li> 503<li> </li><li><a href="https://www.lillianvernon.com/privacy-center/account/check/">Privacy Center</a></li> 504 505</ul> 506<ul class="securityBlockMain" style="list-style: none; margin-top: 10px;"> 507<li class="cloudflare"><a href="//www.cloudflare.com" target="_blank" rel="noopener" aria-label="cloudflare"> <img title="cloudflare" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/ProtectedByCloudflareBadge_DarkBlue_png.avif" alt="cloudflare" width="89" height="31" loading="lazy"> </a></li> 508<li class="bbb"><a href="https://www.bbb.org/southern-colorado/business-reviews/mail-order-and-catalog-shopping/lillian-vernon-in-colorado-springs-co-87343760" target="_blank" rel="noopener"> <img title="Click to verify BBB accreditation and to see a BBB report." src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/bbb_png.avif" alt="Click to verify BBB accreditation and to see a BBB report." width="61" height="100" loading="lazy"> </a></li> 509<li class="save-and-secure"><img title="safe secure badge" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/images/safesecurebadge_png.avif" alt="Safe secure badge" width="75" height="88" loading="lazy"></li> 510</ul> 511</div> 512</div></div></div><div class="pagebuilder-column col-md-3" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="RA59IA0"><div data-content-type="text" data-appearance="default" data-element="main"> 513 <div class="block footer-social"> 514 <div class="block-title"><strong>CONNECT WITH US</strong></div> 515 <ul class="social-icons"> 516 <li><a class="facebook-link" href="https://www.facebook.com/lillianvernon" target="_blank" rel="noopener"> </a></li> 517 <li><a class="pinterest-link" href="https://www.pinterest.com/LillianVernon/" target="_blank" rel="noopener"> </a></li> 518 <li><a class="instagram-link" href="https://www.instagram.com/lillianvernon/" target="_blank" rel="noopener"> </a></li> 519 <li><a class="twitter-link" href="https://twitter.com/lillianvernon" target="_blank" rel="noopener"> </a></li> 520 <li><a class="blog-link" href="https://blog.lillianvernon.com" target="_blank" rel="noopener"> </a></li> 521 </ul> 522 </div> 523 <p>Many of the names, characters, and images at this site are copyrighted. They may not be 524 copied, reproduced, or used in any form without express written permission.</p> 525 <p>© 2026 Lillian Vernon<br>All Rights Reserved.</p> 526 <div class="cookie-consent">
527<button class="action primary pr-open-cookie-settings" title="Your Privacy 528 Choices"> 529 Your Privacy 530 Choices</button> 531 532 </div> 533 </div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="DXDLKR0"><div class="pagebuilder-column-group tabbed-website-block" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-element="main" data-pb-style="WU1WBMJ"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="GSNDRR5"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="TOPCJ30"><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="IWTA50E"> 534 <div class="title"> 535 <p style="text-align: center;">Shop Our Sister Companies</p> 536 </div> 537 </div></div><div class="pagebuilder-column links link-0" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="NG5WY1E"><figure class="link-logo" data-content-type="image" data-show-burst="0" data-appearance="cmg-kicker-image" data-element="main" data-pb-style="I0Q69CU"><a href="https://www.currentcatalog.com/?utm_source=lillianvernon.com" target="_blank" data-link-type="default" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_cc_png.avif" alt="Current Catalog" title="Current Catalog" loading="lazy" width="371" height="71" data-element="desktop_image" data-pb-style="K2X3K2I"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_cc_png.avif" alt="Current Catalog" title="Current Catalog" loading="lazy" width="371" height="71" data-element="mobile_image" data-pb-style="TKANTSP"></a></figure></div><div class="pagebuilder-column links link-1" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="JTER98I"><figure class="link-logo" data-content-type="image" data-show-burst="0" data-appearance="cmg-kicker-image" data-element="main" data-pb-style="K839QJN"><a href="https://www.colorfulimages.com/?utm_source=lillianvernon.com" target="_blank" data-link-type="default" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_ci_png.avif" alt="Colorful Images" title="Colorful Images" loading="lazy" width="371" height="71" data-element="desktop_image" data-pb-style="QQIJC0Y"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_ci_png.avif" alt="Colorful Images" title="Colorful Images" loading="lazy" width="371" height="71" data-element="mobile_image" data-pb-style="C362W52"></a></figure></div><div class="pagebuilder-column links link-2" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-element="main" data-pb-style="ND2MFH4"><figure class="link-logo" data-content-type="image" data-show-burst="0" data-appearance="cmg-kicker-image" data-element="main" data-pb-style="RJ15D7Q"><a href="https://www.finestationery.com/?utm_source=lillianvernon.com" target="_blank" data-link-type="default" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_fs_png.avif" alt="Fine Stationery" title="Fine Stationery" loading="lazy" width="371" height="71" data-element="desktop_image" data-pb-style="CWH8M6O"><img class="pagebuilder-mobile-only" src="https://images.lillianvernon.com/amasty/avif/wysiwyg/tablogos_fs_png.avif" alt="Fine Stationery" title="Fine Stationery" loading="lazy" width="371" height="71" data-element="mobile_image" data-pb-style="AHXYMFH"></a></figure></div></div></div></div></div></div></footer> <span class="data-fbq-success" data-fbq-success="true"></span> 538
539 <link rel="preconnect" href="https://dev.visualwebsiteoptimizer.com" /> 540 <style> 541#amazon-connect-chat-widget-iframe{max-width:100% !important; width:auto;} 542#amazon-connect-chat-widget > div:first-child {bottom: min(15vh, 15vw);} 543@media all and (min-width: 768px) { 544#amazon-connect-chat-widget > div:first-child {bottom: min(10vh, 10vw);} 545} 546</style> 547 548 549 550 551 552 553 <!-- END GCR Badge Code --> 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568</div>
569<script> 570 var LOCALE = 'en\u002DUS'; 571 var BASE_URL = 'https\u003A\u002F\u002Fwww.lillianvernon.com\u002F'; 572 var require = { 573 'baseUrl': 'https\u003A\u002F\u002Fstatic.lillianvernon.com\u002Fversion1788891929\u002Ffrontend\u002FRegent\u002Fcmg_lv\u002Fen_US' 574 };</script>
574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636
637<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI=">var AEC = (function() 638{ 639 return { 640 add: function(context, dataLayer) 641 { 642 let element = context, qty = 1, variants = [], variant = [], variant_attribute_option = [], items = []; 643 644 document.querySelectorAll('input[name=qty]:checked, [name=qty]').forEach(element => 645 { 646 qty = element.value; 647 }); 648 649 qty = Math.abs(qty); 650 651 if (isNaN(qty)) 652 { 653 qty = 1; 654 } 655 656 function closestForm(element) 657 { 658 while (element) 659 { 660 if (element.tagName === 'FORM') 661 { 662 return element; 663 } 664 element = element.parentElement; 665 } 666 return null; 667 } 668 669 const form = closestForm(context); 670 671 if (form && typeof form.checkValidity === 'function') 672 { 673 if (!form.checkValidity()) 674 { 675 return true; 676 } 677 } 678 679 if (!AEC.gtm()) 680 { 681 if (element.dataset.click) 682 { 683 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category); 684 685 (click => 686 { 687 new Function(click)(); 688 }) 689 (element.dataset.click); 690 } 691 692 return true; 693 } 694 695 if(element.dataset.configurable) 696 { 697 document.querySelectorAll('[name^="super_attribute"]').forEach(attribute => 698 { 699 if (attribute.matches('select')) 700 { 701 var name = attribute.getAttribute('name'), id = name.substring(name.indexOf('[') + 1, name.lastIndexOf(']')); 702 703 if (attribute.selectedIndex) 704 { 705 var option = attribute.options[attribute.selectedIndex]; 706 707 if (option) 708 { 709 variants.push( 710 { 711 id: id, 712 option: option.label, 713 text: option.text 714 }); 715 } 716 } 717 } 718 719 if (attribute.matches('input') && -1 != attribute.type.indexOf('radio')) 720 { 721 if (attribute.parentNode.classList.contains('swatch-option-selected') || attribute.checked) 722 { 723 Object.entries(AEC.SUPER).forEach(([key, super_attribute]) => 724 { 725 if (-1 != attribute.name.indexOf("super_attribute[" + super_attribute.id + "]")) 726 { 727 let variant = 728 { 729 id: super_attribute.id, 730 text: super_attribute.label, 731 option: attribute.value 732 }; 733 734 variants.push(variant); 735 } 736 }); 737 } 738 } 739 }); 740 741 /** 742 * Colour Swatch support 743 */ 744 if (!variants.length) 745 { 746 Object.entries(AEC.SUPER).forEach(([key, attribute]) => 747 { 748 var swatch = document.querySelectorAll('div[attribute-code="' + attribute.code + '"], div[data-attribute-code="' + attribute.code + '"]'); 749 750 swatch.forEach(element => 751 { 752 let variant = 753 { 754 id: attribute.id, 755 text: '', 756 option: null 757 }; 758 759 var select = element.querySelector('select'); 760 761 if (select) 762 { 763 if (select.selectedIndex) 764 { 765 var option = select.options[select.selectedIndex]; 766 767 if (option) 768 { 769 variant.text = option.text; 770 variant.option = option.value; 771 } 772 } 773 } 774 else 775 { 776 var span = element.querySelector('span.swatch-attribute-selected-option'); 777 778 if (span) 779 { 780 variant.text = span.innerHTML; 781 variant.option = span.parentNode.dataset.optionSelected; 782 } 783 } 784 785 variants.push(variant); 786 }); 787 }); 788 } 789 790 if (!variants.length) 791 { 792 AEC.EventDispatcher.trigger('ec.variants', variants); 793 } 794 795 var SUPER_SELECTED = []; 796 797 for (var i = 0, l = variants.length; i < l; i++) 798 { 799 for (var a = 0, b = AEC.SUPER.length; a < b; a++) 800 { 801 if (AEC.SUPER[a].id == variants[i].id) 802 { 803 var text = variants[i].text; 804 805 if (AEC.useDefaultValues) 806 { 807 AEC.SUPER[a].options.forEach(option => 808 { 809 if (parseInt(option.value_index) == parseInt(variants[i].option)) 810 { 811 if (option.hasOwnProperty('admin_label')) 812 { 813 text = option.admin_label; 814 } 815 else if (option.hasOwnProperty('store_label')) 816 { 817 text = option.store_label; 818 } 819 } 820 }); 821 } 822 823 variant.push([AEC.SUPER[a].label,text].join(AEC.Const.VARIANT_DELIMITER_ATT)); 824 825 let tier_price = Number.parseFloat(element.dataset.price).toFixed(2); 826
827 Object.entries(AEC.CONFIGURABLE_SIMPLES).forEach(([key, simple]) => 828 { 829 if (simple.hasOwnProperty('configurations')) 830 { 831 Object.entries(simple.configurations).forEach(([key, configuration]) => 832 { 833 if (configuration.label === variants[i].option) 834 { 835 let prices = []; 836 837 Object.entries(simple.price_tier).forEach(([key, tier]) => 838 { 839 if (parseInt(qty) >= parseInt(tier.price_qty)) 840 { 841 prices.push(Number.parseFloat(tier.price)); 842 } 843 }); 844 845 if (prices.length) 846 { 847 tier_price = prices.sort(function(a,b) { return a < b; }).pop(); 848 } 849 } 850 }); 851 } 852 }); 853 854 variant_attribute_option.push( 855 { 856 attribute: variants[i].id, 857 option: variants[i].option, 858 price: tier_price 859 }); 860 } 861 } 862 } 863 864 if (!variant.length) 865 { 866 if (element.dataset.click) 867 { 868 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category); 869 870 (click => 871 { 872 new Function(click)(); 873 }) 874 (element.dataset.click); 875 } 876 877 return true; 878 } 879 } 880 881 if (element.dataset.grouped) 882 { 883 for (var u = 0, y = window.G.length; u < y; u++) 884 { 885 let field = document.querySelector('[name="super_group[' + window.G[u].id + ']"]'); 886 887 if (field) 888 { 889 (qty => 890 { 891 if (qty) 892 { 893 let item = 894 { 895 'item_name': window.G[u].item_name, 896 'item_id': window.G[u].item_id, 897 'price': window.G[u].price, 898 'category': window.G[u].category, 899 'item_brand': window.G[u].item_brand, 900 'quantity': qty 901 }; 902 903 Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category)); 904 905 items.push(item); 906 } 907 })(Math.abs(field.value)); 908 } 909 } 910 } 911 else 912 { 913 let price = Number.parseFloat(element.dataset.price); 914 915 if (element.dataset.hasOwnProperty('selection')) 916 { 917 let selection = parseInt(element.dataset.selection); 918 919 Object.entries(AEC.CONFIGURABLE_SIMPLES).forEach(([key, simple]) => 920 { 921 if (key == selection) 922 { 923 if (simple.hasOwnProperty('price_tier')) 924 { 925 Object.entries(simple.configurations).forEach(([key, configuration]) => 926 { 927 let prices = []; 928 929 Object.entries(simple.price_tier).forEach(([key, tier]) => 930 { 931 if (parseInt(qty) >= parseInt(tier.price_qty)) 932 { 933 prices.push(Number.parseFloat(tier.price)); 934 } 935 }); 936 937 if (prices.length) 938 { 939 price = prices.sort(function(a,b) { return a < b; }).pop(); 940 } 941 }); 942 } 943 } 944 }); 945 } 946 947 let item = 948 { 949 'item_name': element.dataset.name, 950 'item_id': 1 === parseInt(element.dataset.useSimple) ? element.dataset.simpleId : element.dataset.id, 951 'price': price, 952 'item_brand': element.dataset.brand, 953 'item_variant': variant.join(AEC.Const.VARIANT_DELIMITER), 954 'variants': variants, 955 'category': element.dataset.category, 956 'quantity': qty, 957 'currency': AEC.currencyCode, 958 'google_business_vertical': element.dataset.googleBusinessVertical, 959 'index': 0 960 }; 961 962 Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category)); 963 964 items.push(item); 965 } 966 967 let value_combined = 0; 968 969 for (var i = 0, l = items.length; i < l; i++) 970 { 971 value_combined += (Number.parseFloat(items[i].price) * Number.parseInt(items[i].quantity)); 972 973 (function(item) 974 { 975 Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => 976 { 977 item[key] = value; 978 }); 979 980 let options = []; 981 982 Object.entries(AEC.parseJSON(element.dataset.options)).forEac
982h(([key, name]) => 983 { 984 let option = document.querySelector('[name="options[' + key + ']"]'), value = null; 985 986 if (!option) 987 { 988 option = document.querySelector('[name="options[' + key + '][]"]'); 989 } 990 991 switch(true) 992 { 993 case option instanceof HTMLInputElement: 994 case option instanceof HTMLTextAreaElement: value = option.value; 995 break; 996 case option instanceof HTMLSelectElement: value = option.options[option.selectedIndex].text; 997 break; 998 } 999 1000 if (value) 1001 { 1002 options.push({ name: name, value: value }); 1003 } 1004 1005 }); 1006 1007 if (options.length) 1008 { 1009 item['options'] = options; 1010 } 1011 1012 })(items[i]); 1013 } 1014 1015 var data = 1016 { 1017 'event':'add_to_cart', 1018 'eventLabel': element.dataset.name, 1019 'ecommerce': 1020 { 1021 'currency': AEC.currencyCode, 1022 'value': value_combined, 1023 'item_list_id': element.dataset.list, 1024 'item_list_name': element.dataset.list, 1025 'items': items, 1026 'options': variant_attribute_option 1027 }, 1028 'currentStore': element.dataset.store 1029 }; 1030 1031 if (AEC.useDefaultValues) 1032 { 1033 data['currentStore'] = AEC.storeName; 1034 } 1035 1036 /** 1037 * Notify listeners 1038 */ 1039 this.EventDispatcher.trigger('ec.add.data', data); 1040 1041 /** 1042 * Track event 1043 */ 1044 AEC.CookieConsent.queue(() => 1045 { 1046 AEC.Cookie.add(data).push(dataLayer); 1047 1048 /** 1049 * Track time 1050 */ 1051 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category); 1052 1053 }).process(); 1054 1055 /** 1056 * Save backreference 1057 */ 1058 if (AEC.localStorage) 1059 { 1060 (function(items) 1061 { 1062 for (var i = 0, l = items.length; i < l; i++) 1063 { 1064 AEC.Storage.reference().set( 1065 { 1066 id: items[i].item_id, 1067 category: items[i].category 1068 }); 1069 } 1070 })(items); 1071 } 1072 1073 if (AEC.facebook) 1074 { 1075 if ("function" === typeof fbq) 1076 { 1077 (function(product, items, fbq) 1078 { 1079 var content_ids = [], price = 0; 1080 1081 for (var i = 0, l = items.length; i < l; i++) 1082 { 1083 content_ids.push(items[i].item_id); 1084 1085 price += parseFloat(items[i].price); 1086 } 1087 1088 (function(callback) 1089 { 1090 if (AEC.Const.COOKIE_DIRECTIVE) 1091 { 1092 AEC.CookieConsent.queue(callback).process(); 1093 } 1094 else 1095 { 1096 callback.apply(window,[]); 1097 } 1098 }) 1099 ( 1100 (function(product, content_ids, price) 1101 { 1102 return function() 1103 { 1104 if ('undefined' === typeof variants) 1105 { 1106 variants = []; 1107 } 1108 1109 fbq('track', 'AddToCart', 1110 { 1111 content_name: product, 1112 content_ids: content_ids, 1113 content_type: !variants.length ? 'product' : 'product_group', 1114 value: price, 1115 currency: AEC.currencyCode 1116 }, 1117 { 1118 eventID: AEC.UUID.generate({ event: 'AddToCart'}) 1119 }); 1120 }; 1121 1122 })(product, content_ids, price) 1123 ); 1124 1125 })(element.dataset.name, items, fbq); 1126 } 1127 } 1128 1129 if (AEC.tiktok) 1130 { 1131 if ('undefined' !== typeof ttq) 1132 { 1133 (function(product, items, ttq) 1134 { 1135 var contents = [], price = 0; 1136 1137 for (var i = 0, l = items.length; i < l; i++) 1138 { 1139 contents.push 1140 ( 1141 { 1142 content_id: items[i].item_id, 1143 content_name: items[i].item_name, 1144 quantity: items[i].quantity, 1145 brand: items[i].item_brand, 1146 price: items[i].price 1147 } 1148 ); 1149 1150 price += parseFloat(items[i].price); 1151 } 1152 1153 (function(callback) 1154 { 1155 if (AEC.Const.COOKIE_DIRECTIVE) 1156 { 1157 AEC.CookieConsent.queue(callback).process(); 1158 } 1159 else 1160 { 1161 callback.apply(window,[]); 1162 } 1163 }) 1164 ( 1165 (function(product, content_ids, price) 1166 { 1167 return function() 1168 { 1169 AEC.TikTok.event('AddToCart', { 1170 contents: contents, 1171 content_type:'product', 1172 value: price, 1173 currency: AEC.currencyCode, 1174 }, 1175 { 1176 event_id: AEC.UUID.generate({ event: 'AddToCart'}) 1177 }); 1178 }; 1179 1180 })(product, contents, price) 1181 ); 1182 1183 })(element.dataset.name, items, ttq); 1184 } 1185 } 1186 1187 if (element.dataset.click) 1188 { 1189 (click => 1190 { 1191 new Function(click)(); 1192 }) 1193 (element.dataset.click); 1194 } 1195 1196 return true; 1197 }, 1198 addSwatch: function(context,dataLayer) 1199 { 1200 var element = context; 1201 1202 if (window.jQuery) 1203 { 1204 jQuery(document).on('ajax:addToCart', function() 1205 { 1206 var attributes = []; 1207 1208 Object.entries(AEC.parseJSON(element.dataset.swatch)).forEac
1208h(([key, value]) => 1209 { 1210 attributes.push(value); 1211 }); 1212 1213 var option = document.querySelector('.swatch-option.selected'); 1214 1215 if (!option) 1216 { 1217 let form = jQuery(element).parents('form:first'); 1218 1219 if (form) 1220 { 1221 let selected = []; 1222 1223 Object.entries(attributes).forEach(([key, value]) => 1224 { 1225 let e = form.find('input[name="super_attribute[' + value.attribute_id + ']"]'); 1226 1227 if (e.length > 0) 1228 { 1229 if (e.get(0).dataset.hasOwnProperty('label')) 1230 { 1231 let a = e.get(0).dataset.label; 1232 let b = value.attribute_label; 1233 1234 selected.push([b,a].join(AEC.Const.VARIANT_DELIMITER_ATT)); 1235 } 1236 else if(e.get(0).dataset.hasOwnProperty('attrName')) 1237 { 1238 let a = e.get(0).value; 1239 let b = value.attribute_label; 1240 1241 selected.push([b,a].join(AEC.Const.VARIANT_DELIMITER_ATT)); 1242 } 1243 } 1244 }); 1245 1246 variant = [selected].join(AEC.Const.VARIANT_DELIMITER); 1247 } 1248 } 1249 else 1250 { 1251 variant = [[attributes[0].attribute_label, option.getAttribute('aria-label')].join(AEC.Const.VARIANT_DELIMITER_ATT)].join(AEC.Const.VARIANT_DELIMITER); 1252 } 1253 1254 let item = 1255 { 1256 'item_name': element.dataset.name, 1257 'item_id': element.dataset.id, 1258 'price': element.dataset.price, 1259 'category': element.dataset.category, 1260 'item_brand': element.dataset.brand, 1261 'item_variant': variant, 1262 'item_list_name': element.dataset.list, 1263 'item_list_id': element.dataset.list, 1264 'quantity': 1, 1265 'index': element.dataset.position 1266 }; 1267 1268 Object.assign(item, item, AEC.GA4.transformCategories(element.dataset.category)); 1269 1270 /** 1271 * Track event 1272 */ 1273 AEC.Cookie.add( 1274 { 1275 'event': 'add_to_cart', 1276 'currency': AEC.currencyCode, 1277 'eventLabel': element.dataset.name, 1278 'item_list_id': element.dataset.list, 1279 'item_list_name': element.dataset.list, 1280 'ecommerce': 1281 { 1282 'items': [item] 1283 }, 1284 'currentStore': element.dataset.store 1285 }).push(dataLayer); 1286 1287 /** 1288 * Track time 1289 */ 1290 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_ADD_TO_CART, element.dataset.name, element.dataset.category); 1291 }); 1292 } 1293 1294 return true; 1295 }, 1296 click: function(context,dataLayer) 1297 { 1298 var element = context; 1299
1300 if (!AEC.gtm()) 1301 { 1302 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_CLICK, element.dataset.name, element.dataset.category); 1303 1304 return true; 1305 } 1306 1307 var item = 1308 { 1309 'item_name': element.dataset.name, 1310 'item_id': element.dataset.id, 1311 'price': element.dataset.price, 1312 'item_brand': element.dataset.brand, 1313 'quantity': element.dataset.quantity, 1314 'index': element.dataset.position, 1315 'category': element.dataset.category, 1316 'currency': AEC.currencyCode 1317 }; 1318 1319 Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => 1320 { 1321 item[key] = value; 1322 }); 1323 1324 Object.assign(item, item, AEC.GA4.augmentCategories(item)); 1325 1326 var data = 1327 { 1328 'event': 'select_item', 1329 'eventLabel': element.dataset.name, 1330 'item_list_id': element.dataset.list, 1331 'item_list_name': element.dataset.list, 1332 'ecommerce': 1333 { 1334 'items': 1335 [ 1336 item 1337 ] 1338 }, 1339 'currentStore': element.dataset.store 1340 }; 1341 1342 1343 /** 1344 * Push data 1345 */ 1346 AEC.CookieConsent.queue(() => 1347 { 1348 AEC.Cookie.click(data).push(dataLayer); 1349 1350 }).process(); 1351 1352 /** 1353 * Track time 1354 */ 1355 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_CLICK, element.dataset.name, element.dataset.category); 1356 1357 if (element.dataset.click) 1358 { 1359 (click => 1360 { 1361 new Function(click)(); 1362 }) 1363 (element.dataset.click); 1364 } 1365 1366 return true; 1367 }, 1368 remove: function(context, dataLayer, event) 1369 { 1370 var element = context; 1371
1372 if (!AEC.gtm()) 1373 { 1374 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name, element.dataset.category); 1375 } 1376 1377 var item = 1378 { 1379 'item_name': element.dataset.name, 1380 'item_id': element.dataset.id, 1381 'price': parseFloat(element.dataset.price), 1382 'category': element.dataset.category, 1383 'item_brand': element.dataset.brand, 1384 'quantity': element.dataset.quantity, 1385 'currency': AEC.currencyCode 1386 }; 1387 1388 Object.entries(AEC.parseJSON(element.dataset.attributes)).forEach(([key, value]) => 1389 { 1390 item[key] = value; 1391 }); 1392 1393 Object.assign(item, item, AEC.GA4.augmentCategories(item)); 1394 1395 var data = 1396 { 1397 'event': 'remove_from_cart', 1398 'eventLabel': element.dataset.name, 1399 'ecommerce': 1400 { 1401 'item_list_id': element.dataset.list, 1402 'item_list_name': element.dataset.list, 1403 'items': 1404 [ 1405 item 1406 ] 1407 } 1408 }; 1409 1410 AEC.EventDispatcher.trigger('ec.remove.data', data); 1411 1412 let executor = element => 1413 { 1414 let params = 1415 { 1416 action:null 1417 }; 1418 1419 if (element.dataset.hasOwnProperty('post')) 1420 { 1421 params = AEC.parseJSON(element.dataset.post); 1422 } 1423 else if (element.dataset.hasOwnProperty('postAction')) 1424 { 1425 params = AEC.parseJSON(element.dataset.postAction); 1426 } 1427 1428 async function getFormKey() 1429 { 1430 if ('cookieStore' in window) 1431 { 1432 const cookie = await cookieStore.get('form_key'); 1433 1434 return cookie?.value || null; 1435 } 1436 1437 const cookies = Object.fromEntries(document.cookie.split('; ').map(cookie => 1438 { 1439 const [name, value] = cookie.split('='); 1440 return [decodeURIComponent(name), decodeURIComponent(value)]; 1441 })); 1442 1443 return cookies['form_key'] || null; 1444 } 1445 1446 getFormKey().then(formKey => 1447 { 1448 let form = document.createElement("form"); 1449 1450 form.setAttribute('method', 'post'); 1451 form.setAttribute('action', params.action); 1452 1453 if (params.hasOwnProperty('data')) 1454 { 1455 params.data['form_key'] = formKey; 1456 1457 Object.entries(params.data).forEach(([name, value]) => 1458 { 1459 let input = document.createElement('input'); 1460 1461 input.setAttribute('type', 'text'); 1462 input.setAttribute('name', name); 1463 input.setAttribute('value', value); 1464 1465 form.append(input); 1466 }); 1467 } 1468 1469 document.querySelector("body").appendChild(form); 1470 1471 form.submit(); 1472 }); 1473 }; 1474 1475 if (AEC.Message.confirm) 1476 { 1477 if (typeof require !== "undefined" && typeof require === "function") 1478 { 1479 require(['Magento_Ui/js/modal/confirm'], function(confirmation) 1480 { 1481 confirmation( 1482 { 1483 title: AEC.Message.confirmRemoveTitle, 1484 content: AEC.Message.confirmRemove, 1485 actions: 1486 { 1487 confirm: function() 1488 { 1489 /** 1490 * Track event 1491 */ 1492 AEC.Cookie.remove(data).push(dataLayer); 1493 1494 /** 1495 * Track time 1496 */ 1497 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name); 1498 1499 /** 1500 * Execute standard data-post 1501 */ 1502 executor(element); 1503 }, 1504 cancel: function() 1505 { 1506 return false; 1507 }, 1508 always: function() 1509 { 1510 return false; 1511 } 1512 } 1513 }); 1514 }); 1515 } 1516 else 1517 { 1518 if (typeof Alpine !== "undefined") 1519 { 1520 return true; 1521 } 1522 } 1523 } 1524 else 1525 { 1526 /** 1527 * Track event 1528 */ 1529 AEC.Cookie.remove(data).push(dataLayer); 1530 1531 /** 1532 * Track time 1533 */ 1534 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_REMOVE_FROM_CART, element.dataset.name); 1535 1536 executor(element); 1537 } 1538 1539 return false; 1540 }, 1541 wishlist: function(context, dataLayer) 1542 { 1543 var element = context; 1544 1545 if (!AEC.gtm()) 1546 { 1547 /** 1548 * Track time 1549 */ 1550 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_WISHLIST, element.dataset.name,'Wishlist'); 1551 1552 return true; 1553 } 1554 1555 let attributes = JSON.parse(element.dataset.eventAttributes); 1556 1557 /** 1558 * Track event 1559 */ 1560 AEC.Cookie.wishlist( 1561 { 1562 event: element.dataset.event, 1563 eventLabel: element.dataset.eventLabel, 1564 ecommerce: 1565 { 1566 items: attributes.items 1567 } 1568 }).push(dataLayer); 1569 1570 return true; 1571 }, 1572 wishlistRemove: function(context, dataLayer) 1573 { 1574 var element = context; 1575
1576 if (!AEC.gtm()) 1577 { 1578 /** 1579 * Track time 1580 */ 1581 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_WISHLIST, element.dataset.name,'Wishlist'); 1582 1583 return true; 1584 } 1585 1586 let attributes = JSON.parse(element.dataset.eventAttributes); 1587 1588 /** 1589 * Track event 1590 */ 1591 AEC.Cookie.wishlistRemove( 1592 { 1593 event: element.dataset.event, 1594 eventLabel: element.dataset.eventLabel, 1595 ecommerce: 1596 { 1597 items: attributes.items 1598 } 1599 }).push(dataLayer); 1600 1601 return true; 1602 }, 1603 compare: function(context, dataLayer) 1604 { 1605 var element = context; 1606 1607 if (!AEC.gtm()) 1608 { 1609 /** 1610 * Track time 1611 */ 1612 AEC.Time.track(dataLayer, AEC.Const.TIMING_CATEGORY_PRODUCT_COMPARE, element.dataset.name,'Compare'); 1613 1614 return true; 1615 } 1616 1617 let attributes = JSON.parse(element.dataset.eventAttributes); 1618 1619 AEC.Cookie.compare( 1620 { 1621 event: element.dataset.event, 1622 eventLabel: element.dataset.eventLabel, 1623 ecommerce: 1624 { 1625 items: attributes.items 1626 } 1627 }).push(dataLayer); 1628 1629 return true; 1630 }, 1631 Bind: (function() 1632 { 1633 return { 1634 apply: function(parameters) 1635 { 1636 /** 1637 * Merge persistent storage 1638 */ 1639 AEC.Persist.merge(); 1640 1641 /** 1642 * Push private data 1643 */ 1644 AEC.Cookie.pushPrivate(); 1645 1646 document.addEventListener('DOMContentLoaded',() => 1647 { 1648 document.body.addEventListener('catalogCategoryAddToCartRedirect', () => 1649 { 1650 dataLayer.push( 1651 { 1652 event: AEC.Const.CATALOG_CATEGORY_ADD_TO_CART_REDIRECT_EVENT 1653 }); 1654 }); 1655 }); 1656 1657 if (parameters) 1658 { 1659 if (parameters.performance) 1660 { 1661 if (window.performance) 1662 { 1663 window.onload = function() 1664 { 1665 setTimeout(function() 1666 { 1667 var time = performance.timing.loadEventEnd - performance.timing.responseEnd; 1668 1669 var timePayload = 1670 { 1671 'event':'performance', 1672 'performance': 1673 { 1674 'timingCategory': 'Load times', 1675 'timingVar': 'load', 1676 'timingValue': (time % 60000) 1677 } 1678 }; 1679 1680 switch(window.google_tag_params.ecomm_pagetype) 1681 { 1682 case 'home': 1683 1684 timePayload.performance.timingLabel = 'Home'; 1685 1686 AEC.CookieConsent.queue(() => 1687 { 1688 dataLayer.push(timePayload); 1689 }).process(); 1690 1691 break; 1692 case 'product': 1693 1694 timePayload.performance.timingLabel = 'Product'; 1695 1696 AEC.CookieConsent.queue(() => 1697 { 1698 dataLayer.push(timePayload); 1699 }).process(); 1700 1701 break; 1702 1703 case 'category': 1704 1705 timePayload.performance.timingLabel = 'Category'; 1706 1707 AEC.CookieConsent.queue(() => 1708 { 1709 dataLayer.push(timePayload); 1710 }).process(); 1711 1712 break; 1713 } 1714 1715 }, 0); 1716 }; 1717 } 1718 } 1719 } 1720 1721 return this; 1722 } 1723 }; 1724 1725 })(), 1726 Time: (function() 1727 { 1728 var T = 1729 { 1730 event: 'trackTime', 1731 timingCategory: '', 1732 timingVar: '', 1733 timingValue: -1, 1734 timingLabel: '' 1735 }; 1736 1737 var time = new Date().getTime(); 1738 1739 return { 1740 track: function(dataLayer, category, variable, label) 1741 { 1742 T.timingValue = (new Date().getTime()) - time; 1743 1744 if (category) 1745 { 1746 T.timingCategory = category; 1747 } 1748 1749 if (variable) 1750 { 1751 T.timingVar = variable; 1752 } 1753 1754 if (label) 1755 { 1756 T.timingLabel = label; 1757 } 1758 1759 dataLayer.push(T); 1760 1761 }, 1762 trackContinue: function(dataLayer, category, variable, label) 1763 { 1764 this.track(dataLayer, category, variable, label); 1765 1766 time = new Date().getTime(); 1767 } 1768 }; 1769 1770 })(), 1771 Persist:(function() 1772 { 1773 var DATA_KEY = 'persist'; 1774 1775 var proto = 'undefined' != typeof Storage ? 1776 { 1777 push: function(key, entity) 1778 { 1779 /** 1780 * Get data 1781 */ 1782 var data = this.data(); 1783 1784 /** 1785 * Push data 1786 */ 1787 data[key] = entity; 1788 1789 /** 1790 * Save to local storage 1791 */ 1792 localStorage.setItem(DATA_KEY, JSON.stringify(data)); 1793 1794 return this; 1795 }, 1796 data: function() 1797 { 1798 var data = localStorage.getItem(DATA_KEY); 1799 1800 if (null !== data) 1801 { 1802 return JSON.parse(data); 1803 } 1804 1805 return {}; 1806 }, 1807 merge: function() 1808 { 1809 var data = this.data(); 1810 var push = 1811 { 1812 persist: {} 1813 }; 1814 1815 for (var i in data) 1816 { 1817 push.persist[i] = data[i]; 1818 } 1819 1820 dataLayer.push(push); 1821 1822 return this; 1823 }, 1824 clear: function() 1825 { 1826 /** 1827 * Reset private local storage 1828 */ 1829 localStorage.setItem(DATA_KEY,JSON.stringify({})); 1830 1831 return this; 1832 } 1833 } : { 1834 push: function(){}, 1835 merge: function(){}, 1836 clear: function(){} 1837 }; 1838 1839 /** 1840 * Constants 1841 */ 1842 proto.CONST_KEY_PROMOTION = 'persist_promotion'; 1843 1844 return proto; 1845 1846 })(), 1847 Checkout: (function() 1848 { 1849 return { 1850 init: false, 1851 data: {}, 1852 tracked: {}, 1853 getData: function() 1854 { 1855 return this.data; 1856 }, 1857 getPayload: function() 1858 { 1859 if (this.data && this.data.hasOwnProperty('payload')) 1860 { 1861 return this.data.payload; 1862 } 1863 1864 return { 1865 error: 'Missing checkout payload data' 1866 }; 1867 }, 1868 step: function(previous, current, currentCode) 1869 { 1870 if (!this.init) 1871 { 1872 return this.fail('Step tracking requires a checkout page.'); 1873 } 1874 1875 if (this.data && this.data.hasOwnProperty('ecommerce')) 1876 { 1877 this.data.ecommerce['step'] = ++current; 1878 1879 /** 1880 * Notify listeners 1881 */ 1882 AEC.EventDispatcher.trigger('ec.checkout.step.data', this.data); 1883 1884 /** 1885 * Track checkout step 1886 */ 1887 AEC.Cookie.checkout(this.data).push(dataLayer); 1888 } 1889 1890 return this; 1891 }, 1892 stepOption: function(step, option) 1893 { 1894 if (!option) 1895 { 1896 return this; 1897 } 1898 1899 if (!this.init) 1900 { 1901 return this.fail('Step option tracking requires a checkout page.'); 1902 } 1903 1904 1905 if (!option.toString().length) 1906 { 1907 return this; 1908 } 1909 1910 var data = 1911 { 1912 'event': 'checkoutOption', 1913 'ecommerce': 1914 { 1915 'checkout_option': 1916 { 1917 'actionField': 1918 { 1919 'step': step, 1920 'option': option 1921 } 1922 } 1923 } 1924 }; 1925 1926 /** 1927 * Notify listeners 1928 */ 1929 AEC.EventDispatcher.trigger('ec.checkout.step.option.data', data); 1930 1931 /** 1932 * Track checkout option 1933 */ 1934 AEC.CookieConsent.queue(() => 1935 { 1936 AEC.Cookie.checkoutOption(data).push(dataLayer); 1937 1938 }).process(); 1939 1940 1941 return this; 1942 }, 1943 fail: function(message) 1944 { 1945 console.log(message); 1946 1947 return this; 1948 } 1949 }; 1950 1951 })(), 1952 Cookie: (function() 1953 { 1954 return { 1955 data: null, 1956 privateData: null, 1957 reset: function() 1958 { 1959 if (AEC.reset) 1960 { 1961 dataLayer.push({ ecommerce: null }); 1962 } 1963 1964 return dataLayer; 1965 }, 1966 push: function(dataLayer, consent) 1967 { 1968 consent = typeof consent !== 'undefined' ? consent : true; 1969 1970 if (this.data) 1971 { 1972 this.reset().push(this.data); 1973 1974 /** 1975 * Reset data to prevent further push 1976 */ 1977 this.data = null; 1978 } 1979 1980 return this; 1981 }, 1982 pushPrivate: function() 1983 { 1984 var data = this.getPrivateData(); 1985 1986 if (data) 1987 { 1988 dataLayer.push( 1989 { 1990 privateData: data 1991 }); 1992 } 1993 1994 return this; 1995 }, 1996 augment: function(products) 1997 { 1998 /** 1999 * Parse data & apply local reference 2000 */ 2001 var reference = AEC.Storage.reference().get(); 2002 2003 if (reference) 2004 { 2005 for (var i = 0, l = products.length; i < l; i++) 2006 { 2007 for (var a = 0, b = reference.length; a < b; a++) 2008 { 2009 if (products[i].item_id.toString().toLowerCase() === reference[a].id.toString().toLowerCase()) 2010 { 2011 products[i].category = reference[a].category; 2012 } 2013 } 2014 } 2015 } 2016
2017 products.forEach(product => 2018 { 2019 if (product.hasOwnProperty('category')) 2020 { 2021 let categories = product.category.split(/\//); 2022 2023 if (categories.length) 2024 { 2025 let index = 2; 2026 2027 categories.forEach(category => 2028 { 2029 product['item_category' + index] = category; 2030 }); 2031 } 2032 } 2033 }); 2034 2035 return products; 2036 }, 2037 click: function(data) 2038 { 2039 AEC.EventDispatcher.trigger('ec.cookie.click.data', data); 2040 2041 this.data = data; 2042 2043 return this; 2044 }, 2045 add: function(data) 2046 { 2047 AEC.EventDispatcher.trigger('ec.cookie.add.data', data); 2048 2049 this.data = data; 2050 2051 return this; 2052 }, 2053 remove: function(data) 2054 { 2055 AEC.EventDispatcher.trigger('ec.cookie.remove.item.data', data); 2056 2057 this.data = data; 2058 2059 if (AEC.localStorage) 2060 { 2061 this.data.ecommerce.items = this.augment(this.data.ecommerce.items); 2062 } 2063 2064 return this; 2065 }, 2066 compare: function(data) 2067 { 2068 AEC.EventDispatcher.trigger('ec.cookie.compare.data', data); 2069 2070 this.data = data; 2071 2072 return this; 2073 }, 2074 wishlist: function(data) 2075 { 2076 AEC.EventDispatcher.trigger('ec.cookie.wishlist.data', data); 2077 2078 this.data = data; 2079 2080 return this; 2081 }, 2082 wishlistRemove: function(data) 2083 { 2084 AEC.EventDispatcher.trigger('ec.cookie.wishlist.remove.data', data); 2085 2086 this.data = data; 2087 2088 return this; 2089 }, 2090 update: function(data) 2091 { 2092 AEC.EventDispatcher.trigger('ec.cookie.update.item.data', data); 2093 2094 this.data = data; 2095 2096 return this; 2097 }, 2098 visitor: function(data) 2099 { 2100 AEC.EventDispatcher.trigger('ec.cookie.visitor.data', data); 2101 2102 this.data = (function(data, privateData) 2103 { 2104 if (privateData) 2105 { 2106 if (privateData.hasOwnProperty('visitor')) 2107 { 2108 data.visitorId = privateData.visitor.visitorId; 2109 data.visitorLoginState = privateData.visitor.visitorLoginState; 2110 } 2111 } 2112 2113 return data; 2114 2115 })(data, AEC.Cookie.getPrivateData()); 2116 2117 return this; 2118 }, 2119 detail: function(data) 2120 { 2121 AEC.EventDispatcher.trigger('ec.cookie.detail.data', data); 2122 2123 this.data = data; 2124 2125 return this; 2126 }, 2127 purchase: function(data) 2128 { 2129 AEC.EventDispatcher.trigger('ec.cookie.purchase.data', data); 2130 2131 this.data = data; 2132 2133 if (AEC.localStorage) 2134 { 2135 this.data.ecommerce.purchase.items = this.augment(this.data.ecommerce.purchase.items); 2136 } 2137 2138 return this; 2139 }, 2140 impressions: function(data) 2141 { 2142 AEC.EventDispatcher.trigger('ec.cookie.impression.data', data); 2143 2144 this.data = data; 2145 2146 return this; 2147 }, 2148 checkout: function(data) 2149 { 2150 AEC.EventDispatcher.trigger('ec.cookie.checkout.step.data', data); 2151 2152 this.data = data; 2153 2154 if (AEC.localStorage) 2155 { 2156 this.data.ecommerce.items = this.augment(this.data.ecommerce.items); 2157 } 2158 2159 return this; 2160 }, 2161 checkoutOption: function(data) 2162 { 2163 AEC.EventDispatcher.trigger('ec.cookie.checkout.step.option.data', data); 2164 2165 this.data = data; 2166 2167 return this; 2168 }, 2169 promotion: function(data) 2170 { 2171 AEC.EventDispatcher.trigger('ec.cookie.promotion.data', data); 2172 2173 this.data = data; 2174 2175 return this; 2176 }, 2177 promotionClick: function(data, element) 2178 { 2179 AEC.EventDispatcher.trigger('ec.cookie.promotion.click', data, 2180 { 2181 element: element 2182 }); 2183 2184 this.data = data; 2185 2186 return this; 2187 }, 2188 remarketing: function(data) 2189 { 2190 AEC.EventDispatcher.trigger('ec.cookie.remarketing.data', data); 2191 2192 this.data = data; 2193 2194 return this; 2195 }, 2196 getPrivateData: function() 2197 { 2198 if (!this.privateData) 2199 { 2200 var cookie = this.get('privateData'); 2201 2202 if (cookie) 2203 { 2204 this.privateData = this.parse(cookie); 2205 } 2206 } 2207 2208 return this.privateData; 2209 }, 2210 set: function(name, value, days) 2211 { 2212 if (!days) 2213 { 2214 days = 30; 2215 } 2216 2217 let date = new Date(); 2218 2219 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 2220 2221 document.cookie = name + "=" + encodeURIComponent(value) + "; expires=" + date.toGMTString() + "; path=/; domain=" + AEC.Const.COOKIE_DOMAIN; 2222 2223 return this; 2224 }, 2225 get: function(name) 2226 { 2227 var start = document.cookie.indexOf(name + "="), len = start + name.length + 1; 2228 2229 if ((!start) && (name != document.cookie.substring(0, name.length))) 2230 { 2231 return null; 2232 } 2233 2234 if (start == -1) 2235 { 2236 return null; 2237 } 2238 2239 var end = document.cookie.indexOf(String.fromCharCode(59), len); 2240 2241 if (end == -1) 2242 { 2243 end = document.cookie.length; 2244 } 2245 2246 return decodeURIComponent(document.cookie.substring(len, end)); 2247 }, 2248 unset: function(name) 2249 { 2250 document.cookie = name + "=" + "; path=/; expires=" + (new Date(0)).toUTCString(); 2251 2252 return this; 2253 }, 2254 parse: function(json) 2255 { 2256 var json = decodeURIComponent(json.replace(/\+/g, ' ')); 2257 2258 return JSON.parse(json); 2259 } 2260 }; 2261 })(), 2262 CookieConsent: (function() 2263 { 2264 return { 2265 scripts: [], 2266 chain: {}, 2267 endpoints:{}, 2268 cookies: {}, 2269 consent: [], 2270 config: {}, 2271 nonce: {}, 2272 widget: 2273 { 2274 display: false, 2275 color: 'rgba(0,0,0,1)', 2276 colorEnd: 'rgba(0,0,0,1)' 2277 }, 2278 queue: function(callback, event) 2279 { 2280 event = typeof event !== 'undefined' ? event : AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT; 2281 2282 if (!this.chain.hasOwnProperty(event)) 2283 { 2284 this.chain[event] = []; 2285 } 2286 2287 switch(AEC.Const.COOKIE_DIRECTIVE_ENGINE) 2288 { 2289 case 4: 2290 2291 callback = (callback => 2292 { 2293 return function() 2294 { 2295 /** 2296 * Chnage to dispatch event only when Onetrust is loaded 2297 */ 2298 if (false) 2299 { 2300 if ('undefined' !== typeof OneTrust) 2301 { 2302 OneTrust.OnConsentChanged(() => 2303 { 2304 callback.apply(this); 2305 }); 2306 2307 if (window.OnetrustActiveGroups) 2308 { 2309 let groups = window.OptanonActiveGroups.split(',').filter(String); 2310
2311 if (groups.includes('C0001','C0002','C0003','C0004','C0005')) 2312 { 2313 callback.apply(this); 2314 } 2315 } 2316 } 2317 } 2318 else 2319 { 2320 callback.apply(this); 2321 } 2322 } 2323 2324 })(callback); 2325 2326 break; 2327 } 2328 2329 this.chain[event].push(callback); 2330 2331 return this; 2332 }, 2333 dispatch: function(consent) 2334 { 2335 /** 2336 * Essential cookies 2337 */ 2338 AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED = true; 2339 2340 /** 2341 * Push consent to dataLayer 2342 */ 2343 dataLayer.push(consent); 2344 2345 return this.process(consent.event); 2346 }, 2347 process: function(event) 2348 { 2349 event = typeof event !== 'undefined' ? event : AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT; 2350 2351 if (this.getConsent(event)) 2352 { 2353 this.dequeue(event); 2354 } 2355 else if (AEC.Const.COOKIE_DIRECTIVE_OVERRIDE_DECLINE) 2356 { 2357 this.dequeue(event); 2358 } 2359 else 2360 { 2361 if (4 === AEC.Const.COOKIE_DIRECTIVE_ENGINE) 2362 { 2363 /** 2364 * Chnage to dispatch event only when Onetrust is loaded 2365 */ 2366 if (false) 2367 { 2368 (event => 2369 { 2370 window.addEventListener('onetrust_loaded', e => 2371 { 2372 if (this.getConsent(event)) 2373 { 2374 this.dequeue(event); 2375 } 2376 }); 2377 })(event); 2378 } 2379 else 2380 { 2381 this.dequeue(event); 2382 } 2383 } 2384 2385 } 2386 2387 return this; 2388 }, 2389 dequeue: function(event) 2390 { 2391 if (this.chain.hasOwnProperty(event)) 2392 { 2393 try 2394 { 2395 let response; 2396 2397 this.chain[event].forEach(fn => 2398 { 2399 response = fn.apply(this,[]); 2400 }); 2401 } 2402 catch (e) 2403 { 2404 console.debug(e); 2405 } 2406 2407 this.chain[event] = []; 2408 } 2409 2410 return this; 2411 }, 2412 getConsent: function(event) 2413 { 2414 switch(AEC.Const.COOKIE_DIRECTIVE_ENGINE) 2415 { 2416 case 0: 2417 2418 if (!AEC.Const.COOKIE_DIRECTIVE) 2419 { 2420 return true; 2421 } 2422 2423 break; 2424 2425 case 1: 2426 2427 if (1 == AEC.Cookie.get(event)) 2428 { 2429 return true; 2430 } 2431 2432 if (this.consent.includes(event)) 2433 { 2434 return true; 2435 } 2436 2437 break; 2438 2439 case 4: 2440 2441 if (window.OnetrustActiveGroups) 2442 { 2443 let groups = window.OptanonActiveGroups.split(',').filter(String); 2444 2445 if (groups.includes('C0001','C0002','C0003','C0004','C0005')) 2446 { 2447 return true; 2448 } 2449 } 2450 2451 break; 2452 2453 default: return true; 2454 } 2455 2456 return false; 2457 }, 2458 updateConsent: function() 2459 { 2460 (segments => 2461 { 2462 let grant = []; 2463 2464 for (var i = 0, l = segments.length; i < l;i++) 2465 { 2466 if (1 == AEC.Cookie.get(segments[i])) 2467 { 2468 grant.push(segments[i]); 2469 } 2470 } 2471 2472 if (grant.length) 2473 { 2474 AEC.CookieConsent.acceptGoogleConsent(grant).getWidget(); 2475 2476 grant.forEach(segment => 2477 { 2478 AEC.CookieConsent.acceptConsent(segment); 2479 }); 2480 } 2481 2482 })(AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS); 2483 2484 return this; 2485 }, 2486 acceptGoogleConsent: function(segments) 2487 { 2488 if ('function' === typeof gtag) 2489 { 2490 const consentMode = true === AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE ? 2491 { 2492 ad_storage: -1 !== segments.indexOf('cookieConsentMarketingGranted') ? 'granted' : 'denied', 2493 security_storage: -1 !== segments.indexOf('cookieConsentGranted') ? 'granted' : 'denied', 2494 functionality_storage: -1 !== segments.indexOf('cookieConsentGranted') ? 'granted' : 'denied', 2495 personalization_storage: -1 !== segments.indexOf('cookieConsentPreferencesGranted') ? 'granted' : 'denied', 2496 analytics_storage: -1 !== segments.indexOf('cookieConsentAnalyticsGranted') ? 'granted' : 'denied', 2497 ad_user_data: -1 !== segments.indexOf('cookieConsentUserdata') ? 'granted' : 'denied', 2498 ad_personalization: -1 !== segments.indexOf('cookieConsentPersonalization') ? 'granted' : 'denied' 2499 } : 2500 { 2501 ad_storage: 'granted', 2502 security_storage: 'granted', 2503 functionality_storage: 'granted', 2504 personalization_storage: 'granted', 2505 analytics_storage: 'granted', 2506 ad_user_data: 'granted', 2507 ad_personalization: 'granted' 2508 }; 2509 2510 /** 2511 * Update consent 2512 */ 2513 gtag('consent','update',consentMode); 2514 2515 /** 2516 * Update localStorage 2517 */ 2518 localStorage.setItem('consentMode', JSON.stringify(consentMode)); 2519 2520 /**
2521 * Dispatch custom event 2522 */ 2523 window.dispatchEvent(new CustomEvent("consent_accept", { detail: { consentMode: consentMode, segments: segments } })); 2524 } 2525 2526 return this; 2527 }, 2528 finish: function() 2529 { 2530 let segments = []; 2531 2532 AEC.Const.COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS.forEach(segment => 2533 { 2534 if (this.getConsent(segment)) 2535 { 2536 segments.push(segment); 2537 } 2538 }); 2539 2540 this.pickup( 2541 { 2542 detail: 2543 { 2544 segments: segments 2545 } 2546 }); 2547 }, 2548 acceptConsent: function(event) 2549 { 2550 return this.dispatch({ event:event }); 2551 }, 2552 declineConsent: function(event) 2553 { 2554 return this.dispatch({ event:event }); 2555 }, 2556 declineGoogleConsent: function() 2557 { 2558 if ('function' === typeof gtag) 2559 { 2560 const consentMode = 2561 { 2562 ad_storage: 'denied', 2563 security_storage: 'denied', 2564 functionality_storage: 'denied', 2565 personalization_storage: 'denied', 2566 analytics_storage: 'denied', 2567 ad_user_data: 'denied', 2568 ad_personalization: 'denied' 2569 }; 2570 2571 /** 2572 * Update consent 2573 */ 2574 gtag('consent','update',consentMode); 2575 2576 /** 2577 * Update localStorage 2578 */ 2579 localStorage.setItem('consentMode', JSON.stringify(consentMode)); 2580 2581 /** 2582 * Dispatch custom event 2583 */ 2584 window.dispatchEvent(new CustomEvent("consent_decline",{ detail: { consentMode: consentMode } })); 2585 } 2586 2587 return this; 2588 }, 2589 setEndpoints: function(endpoints) 2590 { 2591 this.endpoints = endpoints; 2592 2593 return this; 2594 }, 2595 getConsentDialog: function(dataLayer) 2596 { 2597 if (1 == AEC.Cookie.get(AEC.Const.COOKIE_DIRECTIVE_CONSENT_DECLINE_EVENT)) 2598 { 2599 AEC.CookieConsent.declineGoogleConsent([AEC.Const.COOKIE_DIRECTIVE_CONSENT_DECLINE_EVEN]).getWidget(); 2600 2601 return true; 2602 } 2603 2604 if (1 != AEC.Cookie.get(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT)) 2605 { 2606 this.renderConsentDialog(dataLayer); 2607 } 2608 else 2609 { 2610 AEC.CookieConsent.getWidget(); 2611 } 2612 2613 return this; 2614 }, 2615 closeConsentDialog: function(directive) 2616 { 2617 directive.remove(); 2618 2619 this.getWidget(); 2620 2621 return this; 2622 }, 2623 renderConsentDialog: function(dataLayer) 2624 { 2625 let template = document.querySelector('template[data-consent]'); 2626 2627 (endpoints => 2628 { 2629 var directive = (body => 2630 { 2631 body.insertAdjacentHTML('beforeend', template.innerHTML); 2632 2633 return body.lastElementChild; 2634 2635 })(document.body); 2636 2637 let uuid = AEC.Cookie.get('cookieUuid'); 2638 2639 if (uuid) 2640 { 2641 directive.querySelector('[data-consent-uuid').innerHTML = uuid; 2642 } 2643 2644 let check_default = Number(directive.dataset.check); 2645 2646 directive.querySelectorAll('input[type=checkbox][data-consent]').forEach(checkbox => 2647 { 2648 checkbox.checked = AEC.CookieConsent.getConsent(checkbox.dataset.consent) ? true : (!uuid && check_default ? true : false); 2649 }); 2650 2651 directive.querySelector('[data-consent-uuid-wrapper]').style.display = uuid ? 'block' : 'none'; 2652 2653 (directive => 2654 { 2655 let listener = event => 2656 { 2657 if (event.key === 'Escape') 2658 { 2659 AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies(); 2660 } 2661 }; 2662 2663 document.addEventListener('keydown', event => 2664 { 2665 listener(event); 2666 2667 document.removeEventListener('keydown', listener); 2668 }); 2669 2670 })(directive); 2671 2672 directive.querySelectorAll('a.customize').forEach(element => 2673 { 2674 let customize = directive.querySelector('.ec-gtm-cookie-directive-customize'); 2675 2676 element.addEventListener('click', event => 2677 { 2678 if ('block' === customize.style.display) 2679 { 2680 directive.querySelector('a.action.accept').style.display = 'none'; 2681 2682 customize.style.display = 'none'; 2683 } 2684 else 2685 { 2686 directive.querySelector('a.action.accept').style.display = 'block'; 2687 2688 customize.style.display = 'block'; 2689 } 2690 2691 event.target.innerHTML = 'block' === customize.style.display ? event.target.dataset.hide : event.target.dataset.show; 2692 }); 2693 }); 2694 2695 directive.querySelectorAll('a.ec-gtm-cookie-directive-note-toggle').forEach(element => 2696 { 2697 element.addEventListener('click', event => 2698 { 2699 if ('block' === event.target.nextElementSibling.style.display) 2700 { 2701 event.target.nextElementSibling.style.display = 'none'; 2702 } 2703 else 2704 { 2705 directive.querySelectorAll('.ec-gtm-cookie-directive-note').forEach(note => 2706 { 2707 note.previousElementSibling.innerHTML = note.previousElementSibling.dataset.show; 2708 2709 note.style.display = 'none'; 2710 }); 2711 2712 event.target.nextElementSibling.style.display = 'block'; 2713 } 2714 2715 event.target.innerHTML = 'block' === event.target.nextElementSibling.style.display ? event.target.dataset.hide : event.target.dataset.show; 2716 2717 }); 2718 }); 2719 2720 directive.querySelectorAll('a.accept').forEach(element => 2721 { 2722 element.addEventListener('click', event => 2723 { 2724 event.target.text = event.target.dataset.confirm; 2725 2726 var grant = [...directive.querySelectorAll('[name="cookie[]"]:checked')].map(element => { return element.value }); 2727 2728 grant.unshift('cookieConsentGranted'); 2729 2730 AEC.CookieConsent.acceptGoogleConsent(grant); 2731 2732 AEC.Request.post(endpoints.cookie, { cookie: grant }, response => 2733 { 2734 Object.keys(response).forEach(event => 2735 { 2736 AEC.CookieConsent.acceptConsent(event); 2737 }); 2738 2739 AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies(); 2740 }); 2741 }); 2742 }); 2743 2744 directive.querySelectorAll('a.accept-all').forEach(element => 2745 { 2746 element.addEventListener('click', event => 2747 { 2748 event.target.text = event.target.dataset.confirm; 2749 2750 [...directive.querySelectorAll('[name="cookie[]"]')].forEac
2750h(element => 2751 { 2752 element.checked = true; 2753 }); 2754 2755 var grant = [...directive.querySelectorAll('[name="cookie[]"]:checked')].map(element => { return element.value }); 2756 2757 grant.unshift('cookieConsentGranted'); 2758 2759 AEC.CookieConsent.acceptGoogleConsent(grant); 2760 2761 AEC.Request.post(endpoints.cookie, { cookie: grant }, response => 2762 { 2763 Object.keys(response).forEach(event => 2764 { 2765 AEC.CookieConsent.acceptConsent(event); 2766 }); 2767 2768 AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies(); 2769 }); 2770 }); 2771 }); 2772 2773 directive.querySelectorAll('a.decline').forEach(element => 2774 { 2775 element.addEventListener('click', event => 2776 { 2777 [...directive.querySelectorAll('[name="cookie[]"]')].forEach(element => 2778 { 2779 element.checked = false; 2780 }); 2781 2782 AEC.CookieConsent.declineGoogleConsent(); 2783 2784 AEC.Request.post(endpoints.cookie, { decline: true }, response => 2785 { 2786 Object.keys(response).forEach(event => 2787 { 2788 AEC.CookieConsent.declineConsent(event); 2789 }); 2790 2791 AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies(); 2792 }); 2793 }); 2794 }); 2795 2796 directive.querySelectorAll('a.close').forEach(element => 2797 { 2798 element.style.display = AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED ? 'block' : 'none'; 2799 2800 element.addEventListener('click', event => 2801 { 2802 AEC.CookieConsent.closeConsentDialog(directive).acquireProxyCookies(); 2803 }); 2804 }); 2805 })(this.endpoints); 2806 2807 return this; 2808 }, 2809 acquireProxyCookies: function() 2810 { 2811 if (!this.config.acquire) 2812 { 2813 return this; 2814 } 2815 2816 const acquire = localStorage.getItem("acquire"); 2817 2818 if (!acquire) 2819 { 2820 (context => 2821 { 2822 setTimeout(() => 2823 { 2824 const cookies = Object.fromEntries(document.cookie.split(';').map(s => s.trim()).filter(Boolean).map(pair => {const i = pair.indexOf('=');const k = i > -1 ? pair.slice(0, i) : pair;const v = i > -1 ? pair.slice(i + 1) : '';try { return [decodeURIComponent(k), decodeURIComponent(v)]; }catch { return [k, v]; }})); 2825 2826 Object.entries(cookies).forEach(([name, value]) => 2827 { 2828 if (!context.cookies.hasOwnProperty(name)) 2829 { 2830 context.cookies[name] = true; 2831 } 2832 }); 2833 2834 AEC.Request.post(context.endpoints.cookieConsent, { cookies: context.cookies }, response => 2835 { 2836 return true; 2837 }); 2838 2839 },1000); 2840 2841 })(this); 2842 2843 localStorage.setItem("acquire", true); 2844 } 2845 2846 return this; 2847 }, 2848 setProxy: function() 2849 { 2850 (context => 2851 { 2852 new MutationObserver((mutations) => 2853 { 2854 mutations.forEach((mutation) => 2855 { 2856 [...mutation.addedNodes].forEach(node => 2857 { 2858 if (node.nodeType !== 1) 2859 { 2860 return; 2861 } 2862 2863 if (node.matches('script') && node.dataset && node.dataset.hasOwnProperty('consent')) 2864 { 2865 context.scripts.push( 2866 { 2867 script: node, 2868 parent: node.parentNode ? node.parentNode : document.head, 2869 segment: node.dataset.consent 2870 }); 2871 2872 [...node.attributes].forEach((attr) => 2873 { 2874 if (attr.name.startsWith('defer')) 2875 { 2876 node.removeAttribute(attr.name); 2877 } 2878 }); 2879 2880 node.remove(); 2881 } 2882 }); 2883 }); 2884 }).observe(document.documentElement, { childList: true, subtree: true }); 2885 2886 })(this); 2887 2888 return this; 2889 }, 2890 setReflect: function(fn, strategy) 2891 { 2892 (function() 2893 { 2894 const proto = Document.prototype; 2895 const descriptor = Object.getOwnPropertyDescriptor(proto, "cookie"); 2896 2897 if (!descriptor || !descriptor.set) 2898 { 2899 console.warn("Cookie setter not found on Document.prototype"); 2900 return; 2901 } 2902 2903 Object.defineProperty(proto, "cookie", 2904 { 2905 configurable: true, 2906 enumerable: descriptor.enumerable, 2907 get: function() 2908 { 2909 return descriptor.get.call(this); 2910 }, 2911 set: function(value) 2912 { 2913 try 2914 { 2915 const name = value.split("=")[0]; 2916 2917 window.dispatchEvent(new CustomEvent("captured_cookie", 2918 { 2919 detail: { cookie: { name, value } } 2920 })); 2921 } 2922 catch (e) 2923 { 2924 console.warn("Cookie observer error:", e); 2925 } 2926 return descriptor.set.call(this, value); 2927 } 2928 }); 2929 })(); 2930 2931 if (1 == strategy) 2932 { 2933 const originalSetAttribute = HTMLScriptElement.prototype.setAttribute; 2934 2935 Object.defineProperties(HTMLScriptElement.prototype, 2936 { 2937 src: 2938 { 2939 set: function(value) 2940 {
2941 if (!AEC.CookieConsent.getConsent(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT) && !this.dataset.hasOwnProperty('materialize') && -1 === value.indexOf(BASE_URL)) 2942 { 2943 this.setAttribute('type', 'text/template'); 2944 this.setAttribute('data-consent', AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT); 2945 } 2946 2947 this.setAttribute('src', value); 2948 }, 2949 get: function() 2950 { 2951 return this.getAttribute('src'); 2952 } 2953 }, 2954 setAttribute: 2955 { 2956 value: function(name, value) 2957 { 2958 if (name === 'src') 2959 { 2960 if (!AEC.CookieConsent.getConsent(AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT) && !this.dataset.hasOwnProperty('materialize') && -1 === value.indexOf(BASE_URL)) 2961 { 2962 this.setAttribute('type', 'text/template'); 2963 this.setAttribute('data-consent', AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT); 2964 } 2965 } 2966 2967 return originalSetAttribute.call(this, name, value); 2968 }, 2969 writable: true, 2970 configurable: true 2971 } 2972 }); 2973 } 2974 2975 window.addEventListener('captured_cookie', event => 2976 { 2977 this.cookies[event.detail.cookie.name] = event.detail.cookie.value; 2978 }); 2979 2980 fn.apply(this,[this]); 2981 }, 2982 setAsses: function(asses) 2983 { 2984 asses = asses || []; 2985 2986 if (asses.length) 2987 { 2988 setTimeout(() => 2989 { 2990 let cookies = Object.fromEntries(document.cookie.split('; ').map(c => c.split('='))); 2991 2992 let result = []; 2993 2994 Object.entries(cookies).forEach(([name, value]) => 2995 { 2996 if(!asses.includes(name)) 2997 { 2998 result.push(name); 2999 } 3000 }); 3001 3002 let debug = document.createElement('div'); 3003 3004 Object.assign(debug.style, 3005 { 3006 position: 'fixed', 3007 width: '85%', 3008 maxWidth: '600px', 3009 bottom: '30px', 3010 left: '20px', 3011 padding: '20px', 3012 borderRadius: '2px', 3013 color: 'rgba(0,0,0,1)', 3014 background: 'rgba(255, 198, 75, 0.95)', 3015 dropShadow: '0px 0px 2px', 3016 zIndex: 9999 3017 }); 3018 3019 if (result.length) 3020 { 3021 result.unshift(''); 3022 result.unshift('We have identified the following cookies that might be set prior to consent.'); 3023 } 3024 else 3025 { 3026 result.push('No NON-ESSENTIAL cookies found.'); 3027 } 3028 3029 result.push(''); 3030 result.push('<small>Once done, remember to disable Test mode in Stores -> Configuration -> Anowave -> Cookie Consent Mode V2 -> Test Mode OR delete <strong>asses</strong> cookie manually.</small>'); 3031 3032 debug.innerHTML = result.join('<br />'); 3033 3034 document.body.appendChild(debug); 3035 }, 3036 1000); 3037 } 3038 3039 return this; 3040 }, 3041 pickup: function(event) 3042 { 3043 document.querySelectorAll('script[data-consent]').forEach(script => 3044 { 3045 let segment = script.dataset.consent; 3046 3047 if (-1 != event.detail.segments.indexOf(segment)) 3048 { 3049 delete script.dataset.consent; 3050 3051 this.materialize(script, this.nonce, event.detail.segments); 3052 } 3053 }); 3054 3055 this.scripts.forEach(script => 3056 { 3057 if (-1 != event.detail.segments.indexOf(script.segment)) 3058 { 3059 this.materialize(script.script, this.nonce, event.detail.segments); 3060 } 3061 }); 3062 3063 return this; 3064 }, 3065 materialize: function(script, nonce, segments) 3066 { 3067 let tag = document.createElement('script'); 3068 3069 tag.type = "text/javascript"; 3070 tag.innerHTML = script.innerHTML; 3071 3072 tag.dataset.materialize = true; 3073 3074 if (script.getAttribute('src')) 3075 { 3076 tag.src = script.src; 3077 } 3078 3079 tag.setAttribute('nonce', nonce); 3080 3081 if (script.parentNode) 3082 { 3083 script.parentNode.appendChild(tag); 3084 script.parentNode.removeChild(script); 3085 } 3086 else 3087 { 3088 document.body.appendChild(tag); 3089 } 3090 }, 3091 setNonce: function(nonce) 3092 { 3093 this.nonce = nonce; 3094 3095 return this; 3096 }, 3097 setWidget: function(config) 3098 { 3099 config = config || {}; 3100 3101 this.config = config; 3102 3103 this.setAsses(config.asses).setProxy().setNonce(config.nonce).setEndpoints(config.endpoints); 3104 3105 (context => 3106 { 3107 let block = {}; 3108 3109 window.addEventListener('consent_accept', event => 3110 { 3111 context.consent = event.detail.segments; 3112 3113 context.pickup(event); 3114 3115 new MutationObserver((mutations) => 3116 { 3117 mutations.forEach((mutation) => 3118 {
3119 [...mutation.addedNodes].forEach(node => 3120 { 3121 if (node.nodeType !== 1) 3122 { 3123 return; 3124 } 3125 3126 if (node.matches('script') && -1 != node.type.indexOf('text/template')) 3127 { 3128 let segment = node.dataset.consent; 3129 3130 if (-1 != event.detail.segments.indexOf(segment)) 3131 { 3132 delete node.dataset.consent; 3133 3134 context.materialize(node, this.nonce. event.detail.segments); 3135 } 3136 } 3137 }); 3138 }); 3139 }).observe(document.documentElement, { childList: true, subtree: true }); 3140 }); 3141 })(this); 3142 3143 this.widget = {...this.widget, ...config.options }; 3144 3145 return this; 3146 }, 3147 getWidget: function() 3148 { 3149 if (this.widget.display) 3150 { 3151 let svg = (node => 3152 { 3153 return (text => 3154 { 3155 let styles = 3156 { 3157 position: 'fixed', 3158 bottom: '10px', 3159 left: '10px', 3160 'z-index': '9999', 3161 cursor: 'pointer' 3162 }; 3163 3164 let style = Object.entries(styles).map(([key, value]) => 3165 { 3166 return [key,value].join(':'); 3167 }); 3168 3169 let svg = node('svg', { id: 'consentWidget', width:52, height: 50, style: style.join(';') }); 3170 3171 let gradient = node('linearGradient', { id: 'gradient', gradientTransform: 'rotate(90)'}); 3172 3173 let filter = node('filter', { id: 'shadow' }); 3174 3175 [ 3176 node('feDropShadow', { dx: '0', dy: '0', stdDeviation: '0.7','flood-opacity': 0.5 }), 3177 3178 ].forEach(element => 3179 { 3180 filter.appendChild(element); 3181 }); 3182 3183 let count = parseInt(text); 3184 3185 [ 3186 node('stop', { offset: '0%', 'stop-color': this.widget.color }), 3187 node('stop', { offset: '100%', 'stop-color': this.widget.colorEnd }) 3188 3189 ].forEach(element => 3190 { 3191 gradient.appendChild(element); 3192 }); 3193 3194 3195 if (0) 3196 { 3197 svg.appendChild(filter); 3198 } 3199 3200 svg.appendChild(gradient); 3201 3202 let transform = 'scale(1.5 1.5) translate(0 10)'; 3203 3204 [ 3205 node('path', { id: 'a', d: 'M22.6004 0H7.40039C3.50039 0 0.400391 3.1 0.400391 7C0.400391 10.9 3.50039 14 7.40039 14H22.6004C26.5004 14 29.6004 10.9 29.6004 7C29.6004 3.1 26.4004 0 22.6004 0ZM1.60039 7C1.60039 3.8 4.20039 1.2 7.40039 1.2H17.3004L14.2004 12.8H7.40039C4.20039 12.8 1.60039 10.2 1.60039 7Z', filter: 'url(#shadow)', fill: 'url(#gradient)', transform: transform }), 3206 node('path', { id: 'b', d: 'M24.6012 4.0001C24.8012 4.2001 24.8012 4.6001 24.6012 4.8001L22.5012 7.0001L24.7012 9.2001C24.9012 9.4001 24.9012 9.8001 24.7012 10.0001C24.5012 10.2001 24.1012 10.2001 23.9012 10.0001L21.7012 7.8001L19.5012 10.0001C19.3012 10.2001 18.9012 10.2001 18.7012 10.0001C18.5012 9.8001 18.5012 9.4001 18.7012 9.2001L20.8012 7.0001L18.6012 4.8001C18.4012 4.6001 18.4012 4.2001 18.6012 4.0001C18.8012 3.8001 19.2012 3.8001 19.4012 4.0001L21.6012 6.2001L23.8012 4.0001C24.0012 3.8001 24.4012 3.8001 24.6012 4.0001Z', fill: 'rgba(255,255,255,1)', transform: transform }), 3207 node('path', { id: 'c', d: 'M12.7 4.1002C12.9 4.3002 13 4.7002 12.8 4.9002L8.6 9.8002C8.5 9.9002 8.4 10.0002 8.3 10.0002C8.1 10.1002 7.8 10.1002 7.6 9.9002L5.4 7.7002C5.2 7.5002 5.2 7.
32071002 5.4 6.9002C5.6 6.7002 6 6.7002 6.2 6.9002L8 8.6002L11.8 4.1002C12 3.9002 12.4 3.9002 12.7 4.1002Z', fill: 'url(#gradient)', transform: transform }) 3208 3209 ].forEach(element => 3210 { 3211 svg.appendChild(element); 3212 }); 3213 3214 let loader = node('circle', { id: 'd', cx: 13, cy:25.5, r: 6, fill:'transparent', stroke:'url(#gradient)', 'stroke-width':2, 'stroke-dasharray':'60 40', 'stroke-dashoffset': 40, filter: 'url(#shadow)', style: 'display:none' }); 3215 3216 [ 3217 node('animateTransform', 3218 { 3219 attributeName: "transform", 3220 attributeType: "XML", 3221 type: "rotate", 3222 dur: "1s", 3223 from: "0 13 25.5", 3224 to: "360 13 25.5", 3225 repeatCount: "indefinite" 3226 }) 3227 3228 ].forEach(element => 3229 { 3230 loader.appendChild(element); 3231 }); 3232 3233 svg.appendChild(loader); 3234 3235 return svg; 3236 }); 3237 3238 })((n, v) => 3239 { 3240 n = document.createElementNS("http://www.w3.org/2000/svg", n); 3241 3242 for (var p in v) 3243 { 3244 n.setAttributeNS(null, p, v[p]); 3245 } 3246 3247 return n; 3248 }); 3249 3250 let widget = svg(); 3251 3252 /** 3253 * Remove widget 3254 */ 3255 this.deleteWidget(); 3256 3257 /** 3258 * Add widget 3259 */ 3260 document.body.appendChild(widget); 3261 3262 /** 3263 * Render widget 3264 */ 3265 document.body.querySelectorAll('[id=consentWidget]').forEach(element => 3266 { 3267 element.addEventListener('click', event => 3268 { 3269 AEC.CookieConsent.renderConsentDialog(dataLayer); 3270 }); 3271 }); 3272 3273 return widget; 3274 } 3275 3276 return null; 3277 }, 3278 deleteWidget: function() 3279 { 3280 document.body.querySelectorAll('[id=consentWidget]').forEach(element => 3281 { 3282 element.parentNode.removeChild(element); 3283 }); 3284 3285 return this; 3286 }, 3287 loader: (function() 3288 { 3289 return { 3290 show: function() 3291 { 3292 document.querySelectorAll('[id=c]').forEach(e => { e.style.display = 'none' }); 3293 document.querySelectorAll('[id=d]').forEach(e => { e.style.display = 'block' }); 3294 }, 3295 hide: function() 3296 { 3297 document.querySelectorAll('[id=c]').forEach(e => { e.style.display = 'block' }); 3298 document.querySelectorAll('[id=d]').forEach(e => { e.style.display = 'none' }); 3299 } 3300 } 3301 })() 3302 } 3303 })(), 3304 Storage: (function() 3305 { 3306 return { 3307 set: function(property, value) 3308 { 3309 if ('undefined' !== typeof(Storage)) 3310 { 3311 localStorage.setItem(property, JSON.stringify(value)); 3312 } 3313 3314 return this; 3315 3316 }, 3317 get: function(property) 3318 { 3319 if ('undefined' !== typeof(Storage)) 3320 { 3321 return JSON.parse(localStorage.getItem(property)); 3322 } 3323 3324 return null; 3325 }, 3326 reference: function() 3327 { 3328 return (function(storage) 3329 { 3330 return { 3331 set: function(reference) 3332 { 3333 var current = storage.get('category.add') || []; 3334 3335 3336 var exists = (function(current, reference) 3337 { 3338 for (var i = 0, l = current.length; i < l; i++) 3339 { 3340 if (current[i].id.toString().toLowerCase() === reference.id.toString().toLowerCase()) 3341 { 3342 /** 3343 * Update category 3344 */ 3345 current[i].category = reference.category; 3346 3347 return true; 3348 } 3349 } 3350 3351 return false; 3352 3353 })(current, reference); 3354 3355 if (!exists) 3356 { 3357 current.push(reference); 3358 } 3359 3360 storage.set('category.add', current); 3361 3362 return this; 3363 }, 3364 get: function() 3365 { 3366 return storage.get('category.add'); 3367 } 3368 } 3369 })(this); 3370 } 3371 } 3372 })(), 3373 gtm: function() 3374 { 3375 if ("undefined" === typeof google_tag_manager) 3376 { 3377 /** 3378 * Log error to console 3379 */ 3380 console.log('Unable to detect Google Tag Manager. Please verify if GTM install snippet is available.'); 3381 3382 return false;
3383 } 3384 3385 return true; 3386 }, 3387 parseJSON: function(content) 3388 { 3389 if ('object' === typeof content) 3390 { 3391 return content; 3392 } 3393 3394 if ('string' === typeof content) 3395 { 3396 try 3397 { 3398 return JSON.parse(content); 3399 } 3400 catch (e){} 3401 } 3402 3403 return {}; 3404 }, 3405 getPayloadSize: function(object) 3406 { 3407 var objects = [object], size = 0; 3408 3409 for (var index = 0; index < objects.length; index++) 3410 { 3411 switch (typeof objects[index]) 3412 { 3413 case 'boolean': 3414 size += 4; 3415 break; 3416 case 'number': 3417 size += 8; 3418 break; 3419 case 'string': 3420 size += 2 * objects[index].length; 3421 break; 3422 case 'object': 3423 if (Object.prototype.toString.call(objects[index]) != '[object Array]') 3424 { 3425 for (var key in objects[index]) size += 2 * key.length; 3426 } 3427 for (var key in objects[index]) 3428 { 3429 var processed = false; 3430 3431 for (var search = 0; search < objects.length; search++) 3432 { 3433 if (objects[search] === objects[index][key]) { 3434 processed = true; 3435 break; 3436 } 3437 } 3438 if (!processed) objects.push(objects[index][key]); 3439 } 3440 } 3441 } 3442 return size; 3443 }, 3444 getPayloadChunks: function(arr, len) 3445 { 3446 var chunks = [],i = 0, n = arr.length; 3447 3448 while (i < n) 3449 { 3450 chunks.push(arr.slice(i, i += len)); 3451 }; 3452 3453 return chunks; 3454 }, 3455 url: function(url) 3456 { 3457 return [AEC.Const.URL, url].join(''); 3458 }, 3459 EventDispatcher: (function() 3460 { 3461 return { 3462 events: {}, 3463 on: function(event, callback) 3464 { 3465 var handlers = this.events[event] || []; 3466 3467 handlers.push(callback); 3468 3469 this.events[event] = handlers; 3470 }, 3471 trigger: function() 3472 { 3473 /** 3474 * Cast arguments to array 3475 */ 3476 let args = [...arguments]; 3477 3478 /** 3479 * Get event 3480 */ 3481 let event = args ? args.shift() : null; 3482 3483 /** 3484 * Get handlers 3485 */ 3486 let handlers = this.events[event] || []; 3487 3488 /** 3489 * Get data 3490 */ 3491 let data = args ? args.shift() : {}; 3492 3493 /** 3494 * Get options 3495 */ 3496 let options = args ? args.shift() : {}; 3497 3498 /** 3499 * Quit if no handler 3500 */ 3501 if (!handlers || handlers.length < 1) 3502 { 3503 return; 3504 } 3505 3506 console.log(event + '(' + handlers.length + ' listeners)'); 3507 3508 handlers.forEach(function(handler) 3509 { 3510 handler(data, options); 3511 }); 3512 } 3513 } 3514 })(), 3515 Request: (function() 3516 { 3517 return { 3518 get: function(url, params, callback) 3519 { 3520 this.execute('GET', [url,this.serialize(params)].join('?'), callback).send(null); 3521 }, 3522 post: function(url, params, callback) 3523 { 3524 this.execute('POST', url, callback).send(this.serialize(params)); 3525 }, 3526 execute: function(method, url, callback) 3527 { 3528 try 3529 { 3530 var request = new XMLHttpRequest(); 3531 3532 request.open(method, url, true); 3533 3534 request.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 3535 request.setRequestHeader('X-Requested-With','XMLHttpRequest'); 3536 3537 request.addEventListener('load', () => 3538 { 3539 let response; 3540 3541 if ('application/json' === request.getResponseHeader("Content-Type")) 3542 { 3543 response = JSON.parse(request.responseText); 3544 } 3545 else 3546 { 3547 response = request.responseText; 3548 } 3549 3550 if ('function' === typeof callback) 3551 { 3552 callback(response); 3553 } 3554 }); 3555 } 3556 catch (e) 3557 { 3558 console.log(e.message); 3559 3560 return null; 3561 } 3562 3563 3564 return request; 3565 }, 3566 serialize: function(entity, prefix) 3567 { 3568 var query = []; 3569 3570 Object.keys(entity).map(key => 3571 { 3572 var k = prefix ? prefix + "[" + key + "]" : key, value = entity[key]; 3573 3574 query.push((value !== null && typeof value === "object") ? this.serialize(value, k) : encodeURIComponent(k) + "=" + encodeURIComponent(value)); 3575 }); 3576 3577 return query.join("&"); 3578 } 3579 } 3580 })(), 3581 UUID: (() => 3582 { 3583 return { 3584 generate: event => 3585 { 3586 event = event || {}; 3587 3588 let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) 3589 { 3590 var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); 3591 return v.toString(16); 3592 }); 3593 3594 if (-1 == ['AddToCart'].indexOf(event)) 3595 { 3596 try 3597 {
3598 let current = AEC.Cookie.get('facebook_latest_uuid'); 3599 3600 if (current) 3601 { 3602 current = JSON.parse(current); 3603 3604 if (current.hasOwnProperty('uuid') && current.hasOwnProperty('event')) 3605 { 3606 if (event.event === current.event) 3607 { 3608 uuid = current.uuid; 3609 } 3610 } 3611 } 3612 } 3613 catch (e){} 3614 } 3615 3616 event['uuid'] = uuid; 3617 3618 /** 3619 * Set facebook uuid cookie 3620 */ 3621 if (AEC.Const.COOKIE_DIRECTIVE) 3622 { 3623 if (AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED) 3624 { 3625 AEC.Cookie.set('facebook_latest_uuid', JSON.stringify(event)); 3626 } 3627 } 3628 else 3629 { 3630 AEC.Cookie.set('facebook_latest_uuid', JSON.stringify(event)); 3631 } 3632 3633 return uuid; 3634 } 3635 } 3636 })(), 3637 Proxy: (() => 3638 { 3639 function proxyFactory(worker) 3640 { 3641 const handler = 3642 { 3643 get(target, method) 3644 { 3645 return function (...args) 3646 { 3647 return new Promise((resolve, reject) => 3648 { 3649 const id = Date.now() + Math.random().toString(36).substr(2); 3650 3651 worker.onmessage = function (event) 3652 { 3653 const { id: responseId, result, error } = event.data; 3654 3655 if (responseId === id) 3656 { 3657 if (error) 3658 { 3659 reject(new Error(error)); 3660 } 3661 else 3662 { 3663 resolve(result); 3664 } 3665 } 3666 }; 3667 3668 worker.postMessage({ id, method, args }); 3669 }); 3670 }; 3671 } 3672 }; 3673 3674 return new Proxy({}, handler); 3675 }; 3676 3677 return { 3678 get: worker => 3679 { 3680 return proxyFactory 3681 ( 3682 new Worker(worker) 3683 ) 3684 } 3685 } 3686 })(), 3687 TikTok: (() => 3688 { 3689 return { 3690 event: (event, dataset, event_identifier) => 3691 { 3692 if ('undefined' !== typeof ttq) 3693 { 3694 ttq.track(event, dataset, event_identifier); 3695 } 3696 } 3697 } 3698 })() 3699 } 3700})(); 3701if ('undefined' !== typeof AEC && 'undefined' !== typeof AEC.EventDispatcher) 3702{ 3703 AEC.GA4 = (() => 3704 { 3705 return { 3706 enabled: false, 3707 transformCategories: function(category) 3708 { 3709 if (null === category) 3710 { 3711 return {}; 3712 } 3713 3714 let map = {}, categories = category.toString().split('/'); 3715 3716 if (categories) 3717 { 3718 map['item_category'] = categories.shift(); 3719 3720 if (categories.length) 3721 { 3722 let index = 1; 3723 3724 categories.forEach(category => 3725 { 3726 map['item_category' + (++index)] = category; 3727 }); 3728 } 3729 } 3730 3731 return map; 3732 }, 3733 augmentCategories: function(product) 3734 { 3735 if (product.hasOwnProperty('category')) 3736 { 3737 AEC.Cookie.augment([product]); 3738 } 3739 3740 return this.transformCategories(product.category); 3741 }, 3742 augmentItem: function(product) 3743 { 3744 let map = {}; 3745 3746 map['google_business_vertical'] = 'retail'; 3747 3748 Object.entries(product).forEach(([key, value]) => 3749 { 3750 if (-1 === ['id','name','price','category','currency','variant','brand'].indexOf(key)) 3751 { 3752 map[key] = value; 3753 } 3754 }); 3755 3756 return map; 3757 } 3758 3759 } 3760 })(); 3761 3762 /** 3763 * Modify checkout step option payloasd 3764 */ 3765 AEC.EventDispatcher.on('ec.checkout.step.option.data', data => 3766 { 3767 if (!AEC.GA4.enabled) 3768 { 3769 return true; 3770 } 3771
3772 switch(parseInt(data.ecommerce.checkout_option.actionField.step)) 3773 { 3774 case AEC.Const.CHECKOUT_STEP_SHIPPING: 3775 3776 data['event'] = 'add_shipping_info'; 3777 3778 if (AEC.GA4.quote.hasOwnProperty('coupon')) 3779 { 3780 data.ecommerce['coupon'] = AEC.GA4.quote.coupon; 3781 } 3782 3783 data.ecommerce['currency'] = AEC.GA4.currency; 3784 3785 data.ecommerce['items'] = AEC.Checkout.getPayload().ecommerce.items; 3786 3787 data.ecommerce['shipping_tier'] = data.ecommerce.checkout_option.actionField.option; 3788 3789 (data => 3790 { 3791 let value = 0; 3792 3793 data.ecommerce['items'].forEach(item => 3794 { 3795 value += Number(item.price) * Number(item.quantity); 3796 }); 3797 3798 data.ecommerce['value'] = value; 3799 3800 })(data); 3801 3802 3803 3804 3805 delete data.ecommerce.checkout_option; 3806 3807 break; 3808 3809 case AEC.Const.CHECKOUT_STEP_PAYMENT: 3810 3811 data['event'] = 'add_payment_info'; 3812 3813 if (AEC.GA4.quote.hasOwnProperty('coupon')) 3814 { 3815 data.ecommerce['coupon'] = AEC.GA4.quote.coupon; 3816 } 3817 3818 data.ecommerce['currency'] = AEC.GA4.currency; 3819 3820 data.ecommerce['items'] = AEC.Checkout.getPayload().ecommerce.items; 3821 3822 data.ecommerce['payment_type'] = data.ecommerce.checkout_option.actionField.option; 3823 3824 (data => 3825 { 3826 let value = 0; 3827 3828 data.ecommerce['items'].forEach(item => 3829 { 3830 value += Number(item.price) * Number(item.quantity); 3831 }); 3832 3833 data.ecommerce['value'] = value; 3834 3835 })(data); 3836 3837 3838 3839 delete data.ecommerce.checkout_option; 3840 3841 break; 3842 } 3843 }); 3844}</script>
3844<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 3845 3846 window.dataLayer = window.dataLayer || []; 3847 3848 window.AEC = window.AEC || {}; 3849 3850 AEC.Const = {"URL":"https://www.lillianvernon.com/","TIMING_CATEGORY_ADD_TO_CART":"Add To Cart Time","TIMING_CATEGORY_REMOVE_FROM_CART":"Remove From Cart Time","TIMING_CATEGORY_PRODUCT_CLICK":"Product Detail Click Time","TIMING_CATEGORY_CHECKOUT":"Checkout Time","TIMING_CATEGORY_CHECKOUT_STEP":"Checkout Step Tim","TIMING_CATEGORY_PRODUCT_WISHLIST":"Add to Wishlist Time","TIMING_CATEGORY_PRODUCT_COMPARE":"Add to Compare Time","VARIANT_DELIMITER":"-","VARIANT_DELIMITER_ATT":":","CHECKOUT_STEP_SHIPPING":1,"CHECKOUT_STEP_PAYMENT":2,"CHECKOUT_STEP_ORDER":3,"DIMENSION_SEARCH":18,"COOKIE_DIRECTIVE":false,"COOKIE_DIRECTIVE_ENGINE":0,"COOKIE_DIRECTIVE_SEGMENT_MODE":false,"COOKIE_DIRECTIVE_SEGMENT_MODE_EVENTS":["cookieConsentGranted"],"COOKIE_DIRECTIVE_CONSENT_GRANTED_EVENT":"cookieConsentGranted","COOKIE_DIRECTIVE_CONSENT_DECLINE_EVENT":"cookieConsentDeclined","COOKIE_DIRECTIVE_OVERRIDE_DECLINE":false,"COOKIE_DOMAIN":"www.lillianvernon.com","CATALOG_CATEGORY_ADD_TO_CART_REDIRECT_EVENT":"catalogCategoryAddToCartRedirect","META_CONVERSIONS_API_EVENTS":["AddToCart","ViewCategory","ViewContent","Purchase","InitiateCheckout","AddPaymentInfo","AddToWishlist","CustomizeProduct","Search"]}; 3851 3852 AEC.Const.COOKIE_DIRECTIVE_CONSENT_GRANTED = AEC.CookieConsent.getConsent("cookieConsentGranted"); 3853 3854 Object.entries({"Message":{"confirm":true,"confirmRemoveTitle":"Are you sure?","confirmRemove":"Are you sure you would like to remove this item from the shopping cart?"},"storeName":"LillianVernon.com","currencyCode":"USD","useDefaultValues":false,"facebook":false,"tiktok":false,"SUPER":[],"CONFIGURABLE_SIMPLES":[],"BUNDLE":{"bundles":[],"options":[]},"localStorage":"true","summary":false,"reset":false,"tax":1,"simples":false}).forEach(([key,value]) => { AEC[key] = value; }); 3855 3856</script>
3856<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 3857 3858 (summary => 3859 { 3860 if (summary) 3861 { 3862 let getSummary = (event) => 3863 { 3864 AEC.Request.post("https:\/\/www.lillianvernon.com\/datalayer\/index\/cart\/",{ event:event }, (response) => 3865 { 3866 dataLayer.push(response); 3867 }); 3868 }; 3869 3870 ['ec.cookie.remove.item.data','ec.cookie.update.item.data','ec.cookie.add.data'].forEach(event => 3871 { 3872 AEC.EventDispatcher.on(event, (event => 3873 { 3874 return () => 3875 { 3876 setTimeout(() => { getSummary(event); }, 2000); 3877 }; 3878 })(event)); 3879 }); 3880 } 3881 })(AEC.summary); 3882 3883</script>
3883<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 3884 3885 3886 window.dataLayer = window.dataLayer || []; 3887 3888 3889 3890 3891 var dataLayerTransport = (function() 3892 { 3893 var data = []; 3894 3895 return { 3896 data:[], 3897 push: function(data) 3898 { 3899 this.data.push(data); 3900 3901 return this; 3902 }, 3903 serialize: function() 3904 { 3905 return this.data; 3906 } 3907 } 3908 })(); 3909 3910</script>
3910<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 3911 3912 (endpoints => 3913 { 3914 let engines = 3915 { 3916 0: () => {}, 3917 1: () => {}, 3918 2: () => 3919 { 3920 window.addEventListener('CookiebotOnAccept', event => 3921 { 3922 return true; 3923 }, 3924 false); 3925 }, 3926 3: () => {}, 3927 4: () => 3928 { 3929 (() => 3930 { 3931 let wait = 0, interval = 100; 3932 3933 let otc = () => 3934 { 3935 return 'undefined' !== typeof window.OneTrust; 3936 }; 3937 3938 window.ot = setInterval(end => 3939 { 3940 wait += interval; 3941 3942 if (wait > end) 3943 { 3944 if (window.ot) 3945 { 3946 clearInterval(window.ot); 3947 } 3948 } 3949 3950 if (otc()) 3951 { 3952 window.dispatchEvent(new CustomEvent("onetrust_loaded", 3953 { 3954 detail: 3955 { 3956 groups: window.OptanonActiveGroups 3957 } 3958 })); 3959 3960 clearInterval(window.ot); 3961 3962 let uuid = AEC.Cookie.get('cookieUuid'); 3963 3964 let map = {"C0001":["cookieConsentGranted"],"C0002":["cookieConsentGranted","cookieConsentAnalyticsGranted"],"C0003":["cookieConsentGranted","cookieConsentPreferencesGranted"],"0":["cookieConsentGranted","cookieConsentUserdata","cookieConsentPersonalization","cookieConsentMarketingGranted"]}; 3965 3966 OneTrust.OnConsentChanged(() => 3967 { 3968 let groups = window.OptanonActiveGroups.split(',').filter(String); 3969 3970 let grant = [], consent = {}; 3971 3972 groups.forEach(group => 3973 { 3974 if (map.hasOwnProperty(group)) 3975 { 3976 map[group].forEach(signal => 3977 { 3978 consent[signal] = true; 3979 }); 3980 } 3981 }); 3982 3983 Object.keys(consent).forEach(key => 3984 { 3985 grant.push(key); 3986 }); 3987 3988 let params = 3989 { 3990 cookie: grant 3991 }; 3992 3993 if (!grant.length) 3994 { 3995 params['decline'] = true; 3996 } 3997 3998 AEC.Request.post(endpoints.cookie, params , response => 3999 { 4000 return true; 4001 }); 4002 4003 return true; 4004 }); 4005 } 4006 }, 4007 interval); 4008 4009 })(2000); 4010 }, 4011 5: () => 4012 { 4013 let grant = []; 4014 4015 grant.push("cookieConsentGranted"); 4016 4017 let uuid = AEC.Cookie.get('cookieUuid'); 4018 4019 if (!uuid) 4020 { 4021 AEC.Request.post(endpoints.cookie, { cookie: grant }, response => 4022 { 4023 return true; 4024 }); 4025 } 4026 return true; 4027 }, 4028 6: () => 4029 { 4030 return true; 4031 } 4032 }; 4033 4034 engines[AEC.Const.COOKIE_DIRECTIVE_ENGINE].apply(this,[]); 4035 4036 })({"type":"json","cookie":"https:\/\/www.lillianvernon.com\/datalayer\/index\/cookie\/","cookieContent":"https:\/\/www.lillianvernon.com\/datalayer\/index\/cookieContent\/","cookieConsent":"https:\/\/www.lillianvernon.com\/datalayer\/index\/cookieConsent\/"}); 4037 4038 </script>
4038<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4039 4040 /* Dynamic remarketing */ 4041 window.google_tag_params = window.google_tag_params || {}; 4042 4043 /* Default pagetype */ 4044 window.google_tag_params.ecomm_pagetype = "other"; 4045 4046 /* Grouped products collection */ 4047 window.G = []; 4048 4049 /** 4050 * Global revenue 4051 */ 4052 window.revenue = 0; 4053 4054 /** 4055 * DoubleClick 4056 */ 4057 window.DoubleClick = 4058 { 4059 DoubleClickRevenue: 0, 4060 DoubleClickTransaction: 0, 4061 DoubleClickQuantity: 0 4062 }; 4063 4064 4065 AEC.Cookie.visitor({"pageType":"other","pageName":"| Lillian Vernon","websiteCountry":"US","websiteLanguage":"en_US","visitorLoginState":"Logged out","visitorLifetimeValue":0,"visitorExistingCustomer":"No","clientStatus":"Not client","visitorType":"NOT LOGGED IN","currentStore":"LillianVernon.com"}).push(dataLayer, false); 4066 4067</script>
4067<script nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI=">(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.nonce='enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI=';j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;var n = d.querySelector('[nonce]');n && j.setAttribute('nonce', n.nonce || n.getAttribute('nonce'));f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MSF7FLK');</script>
4067<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4068 4069 4070</script>
4070<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI=">AEC.Bind.apply({"performance":false})</script>
4070<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4071 4072 if ('undefined' !== typeof AEC && AEC.GA4) 4073 { 4074 AEC.GA4.enabled = true; 4075 4076 4077 AEC.GA4.conversion_event = "purchase"; 4078 4079 4080 AEC.GA4.currency = "USD"; 4081 4082 4083 AEC.GA4.quote = []; 4084 } 4085 4086</script>
4086<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4087 4088 document.addEventListener("DOMContentLoaded", () => 4089 { 4090 let bind = () => 4091 { 4092 Object.entries( 4093 { 4094 add_to_cart: event => 4095 { 4096 AEC.add(event.currentTarget, dataLayer, event); 4097 }, 4098 remove_from_cart:event => 4099 { 4100 AEC.remove(event.currentTarget, dataLayer, event); 4101 }, 4102 select_item:event => 4103 { 4104 AEC.click(event.currentTarget, dataLayer, event); 4105 }, 4106 add_to_wishlist:event => 4107 { 4108 AEC.wishlist(event.currentTarget, dataLayer, event); 4109 }, 4110 remove_from_wishlist:event => 4111 { 4112 AEC.wishlistRemove(event.currentTarget, dataLayer, event); 4113 }, 4114 add_to_compare:event => 4115 { 4116 AEC.compare(event.currentTarget, dataLayer, event); 4117 }, 4118 add_to_cart_swatch:event => 4119 { 4120 AEC.addSwatch(event.currentTarget, dataLayer, event); 4121 } 4122 }).forEach(([event, callback]) => 4123 { 4124 [...document.querySelectorAll('[data-event]:not([data-bound])')].filter(element => { return element.dataset.event === event; }
4124).forEach(element => 4125 { 4126 element.addEventListener('click', callback); 4127 4128 element.dataset.bound = true; 4129 }); 4130 }); 4131 }; 4132 4133 bind(); 4134 4135 if("PerformanceObserver" in window) 4136 { 4137 const observer = new PerformanceObserver((items) => 4138 { 4139 items.getEntries().filter(({ initiatorType }) => initiatorType === "xmlhttprequest").forEach((entry) => 4140 { 4141 bind(); 4142 }); 4143 }); 4144 4145 observer.observe( 4146 { 4147 entryTypes: ["resource"] 4148 }); 4149 } 4150 }); 4151 4152</script>
4152<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4153 4154 document.addEventListener("DOMContentLoaded", () => 4155 { 4156 var PromotionTrack = ((dataLayer) => 4157 { 4158 return { 4159 apply: () => 4160 { 4161 var promotions = [], position = 0; 4162 4163 document.querySelectorAll('[data-promotion]').forEach(promotion => 4164 { 4165 let entity = 4166 { 4167 promotion_id: promotion.dataset.promotionId, 4168 promotion_name: promotion.dataset.promotionName, 4169 creative_name: promotion.dataset.promotionCreative, 4170 creative_slot: promotion.dataset.promotionPosition 4171 }; 4172 4173 AEC.EventDispatcher.trigger('ec.cookie.promotion.entity', entity, 4174 { 4175 element: promotion 4176 }); 4177 4178 promotions.push(entity); 4179 4180 promotion.addEventListener('click', (event) => 4181 { 4182 var data = 4183 { 4184 'event': 'select_promotion', 4185 'ecommerce': 4186 { 4187 'items': 4188 [ 4189 { 4190 promotion_id: event.target.dataset.promotionId, 4191 promotion_name: event.target.dataset.promotionName, 4192 creative_name: event.target.dataset.promotionCreative, 4193 creative_slot: event.target.dataset.promotionPosition 4194 } 4195 ] 4196 } 4197 }; 4198 4199 AEC.Cookie.promotionClick(data, promotion).push(dataLayer); 4200 4201 /** 4202 * Save persistent data 4203 */ 4204 AEC.Persist.push(AEC.Persist.CONST_KEY_PROMOTION, 4205 { 4206 'promotion': data.ecommerce.items[0] 4207 }); 4208 }); 4209 }); 4210 4211 if (promotions.length) 4212 { 4213 AEC.Cookie.promotion( 4214 { 4215 'event':'view_promotion', 4216 'ecommerce': 4217 { 4218 'items': promotions 4219 } 4220 }).push(dataLayer); 4221 } 4222 4223 return this; 4224 } 4225 } 4226 })(dataLayer).apply(); 4227 }); 4228</script>
4228<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4229 4230 document.addEventListener("DOMContentLoaded", () => 4231 { 4232 (() => 4233 { 4234 let map = {}, trace = {}; 4235 4236 document.querySelectorAll('[data-widget]').forEach((element) => 4237 { 4238 let widget = element.dataset.widget; 4239 4240 let entity = 4241 { 4242 4243 item_id: element.dataset.id, 4244 item_name: element.dataset.name, 4245 item_list_name: element.dataset.list, 4246 item_list_id: element.dataset.list, 4247 item_brand: element.dataset.brand, 4248 category: element.dataset.category, 4249 price: parseFloat(element.dataset.price), 4250 index: parseFloat(element.dataset.position), 4251 currency: AEC.GA4.currency, 4252 quantity: 1, 4253 google_business_vertical: 'retail' 4254 }; 4255 4256 Object.assign(entity, entity, AEC.GA4.augmentCategories(entity)); 4257 4258 let attributes = element.dataset.attributes; 4259 4260 if (attributes) 4261 { 4262 Object.entries(JSON.parse(attributes)).forEach(([key, value]) => 4263 { 4264 entity[key] = value; 4265 }); 4266 } 4267 4268 if (!map.hasOwnProperty(widget)) 4269 { 4270 map[widget] = []; 4271 4272 map[widget].trace = {}; 4273 map[widget].entry = []; 4274 map[widget].item_list_id = ''; 4275 map[widget].item_list_name = ''; 4276 } 4277 4278 if (!map[widget].trace.hasOwnProperty(element.dataset.id)) 4279 { 4280 map[widget].trace[element.dataset.id] = true; 4281 4282 map[widget].entry.push(entity); 4283 4284 map[widget].item_list_id = entity.item_list_id; 4285 map[widget].item_list_name = entity.item_list_name; 4286 } 4287 }); 4288 4289 Object.entries(map).forEach(([key, value]) => 4290 { 4291 if (value.entry.length) 4292 { 4293 let data = 4294 { 4295 event: 'view_item_list', 4296 ecommerce: 4297 { 4298 item_list_id: value.item_list_id, 4299 item_list_name: value.item_list_name, 4300 items: value.entry 4301 } 4302 }; 4303 4304 if ('undefined' !== typeof dataLayer) 4305 { 4306 (function(callback) 4307 { 4308 if (AEC.Const.COOKIE_DIRECTIVE) 4309 { 4310 AEC.CookieConsent.queue(callback).process(); 4311 } 4312 else 4313 { 4314 callback.apply(window,[]); 4315 } 4316 }) 4317 ( 4318 (function(dataLayer, data) 4319 { 4320 return function() 4321 { 4322 AEC.EventDispatcher.trigger('ec.widget.view.data', data); 4323 4324 if (AEC.reset) 4325 { 4326 dataLayer.push({ ecommerce: null }); 4327 } 4328 4329 dataLayer.push(data); 4330 } 4331 })(dataLayer, data) 4332 ); 4333 } 4334 } 4335 }); 4336 })(); 4337 }); 4338 4339</script>
4339<script data-ommit="true" nonce="enVzc2U4bWo2dXJkem11OG94a3YxNTVxZWUzN2txYzI="> 4340 4341 if (typeof dataLayer !== "undefined") 4342 { 4343 4344 4345 AEC.Request.get(AEC.url('datalayer/index/events'), {}, response => 4346 { 4347 Object.entries(response.events).forEach(([key, event]) => 4348 { 4349 dataLayer.push(event); 4350 }); 4351 }); 4352 4353 4354 4355 AEC.EventDispatcher.on('ec.facebook.loaded', () => 4356 { 4357 }); 4358 4359 4360 if (window.google_tag_params) 4361 { 4362 (function(callback) 4363 { 4364 if (AEC.Const.COOKIE_DIRECTIVE) 4365 { 4366 AEC.CookieConsent.queue(callback, "cookieConsentGranted").process(); 4367 } 4368 else 4369 { 4370 callback.apply(window,[]); 4371 } 4372 }) 4373 ( 4374 (function(dataLayer) 4375 { 4376 return () => 4377 { 4378 AEC.Cookie.remarketing({ event:'fireRemarketingTag', google_tag_params: window.google_tag_params }).push(dataLayer); 4379 } 4380 })(dataLayer) 4381 ); 4382 } 4383 4384 4385 } 4386 else 4387 { 4388 console.log('dataLayer[] is not intialized. Check if GTM is installed properly'); 4389 } 4390 4391</script>
4391<script type="text/javascript" src="https://static.lillianvernon.com/version1788891929/_cache/merged/d7eae04fc80367ad0169d79080e2e2de.min.js"></script>
4391<script type="text/x-magento-init"> 4392{ 4393 "*": { 4394 "Meta_Conversion/js/initPixel" : { 4395 "pixelId": "621157275234205", 4396 "automaticMatchingFlag": false, 4397 "userDataUrl" : "https://www.lillianvernon.com/fbe/pixel/userData/", 4398 "agent": "magento_opensource-0.0.0-1.6.4" 4399 }, 4400 "Meta_Conversion/js/metaPixelTracker" : { 4401 "url" : "https://www.lillianvernon.com/fbe/pixel/tracker/", 4402 "payload": {"eventName":"facebook_businessextension_ssapi_page_view"}, 4403 "browserEventData": {"fbAgentVersion":"magento_opensource-0.0.0-1.6.4","fbPixelId":"621157275234205","source":"magento_opensource","pluginVersion":"1.6.4","track":"track","event":"PageView","payload":[]} } 4404 } 4405} 4406</script>
4406<script type="text/x-magento-init"> 4407 { 4408 "*": { 4409 "Magento_PageCache/js/form-key-provider": { 4410 "isPaginationCacheEnabled": 4411 0 } 4412 } 4413 } 4414 </script>
4414<script>var poptinAfterPageLoad = true;</script>
4414<script id="pixel-script-poptin" async="true" data-type="lazy" data-src="https://cdn.popt.in/pixel.js?id=a99152d8d6f0c"></script>
4414<script src="https://snapui.searchspring.io/at8f4x/bundle.js" 4415 id="searchspring-context" defer> 4416 siteId = "at4x7j"; </script>
4416<script nonce="dHV2bnUwajJsMmxlZXVwZDhhdXNibmszbnF5YXd3a3M="> 4417var prCookieConsentApi = { 4418 CUSTOMER_CONSENT: 'pr-cookie-consent', 4419 SYSTEM_COOKIES: [ 4420 'PHPSESSID', 4421 this.CUSTOMER_CONSENT, 4422 'user_allowed_save_cookie', 4423 ], 4424 config: {}, 4425 whitelist: {}, 4426 isConfigured: false, 4427 /** 4428 * Contains callbacks that run after all configuration come. 4429 * 4430 * @type {function[]} 4431 */ 4432 configuredCallbacks: [], 4433 initCookieBlocking: function () { 4434 var cookieDesc = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') 4435 || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie'); 4436 if (cookieDesc && cookieDesc.configurable) { 4437 var api = this; 4438 Object.defineProperty(document, 'cookie', { 4439 get: function () { 4440 return cookieDesc.get.call(document); 4441 }, 4442 set: function (cookie) { 4443 let cookieName = cookie.substring(0, cookie.indexOf('=')).trim(); 4444 document.dispatchEvent(new CustomEvent('pr-cookie-consent-api:cookie-blocking:validation', { 4445 detail: {cookieName: cookieName, isAllowed: api.isAllowed(cookieName), cookie: cookie} 4446 })); 4447 4448 if (! api.isAllowed(cookieName)) { 4449 api.logger.warn('CookieConsent: blocked cookie "' + cookieName + '"'); 4450 return; 4451 } 4452 cookieDesc.set.call(document, cookie); 4453 } 4454 }); 4455 } 4456 }, 4457 getCookieValue: function (name) { 4458 var values = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)'); 4459 return values ? decodeURIComponent(values.pop()) : ''; 4460 }, 4461 configure: function (configJson) { 4462 this.logger.init(); 4463 this.userScript.init(); 4464 4465 try { 4466 this.config = JSON.parse(configJson); 4467 } catch (e) { 4468 console.error('CookieConsent: error has happened during parse JSON'); 4469 return false; 4470 } 4471 4472 var finalizeConfiguration = () => { 4473 this.isConfigured = true; 4474 this.configuredCallbacks.forEach(function (callback) { 4475 callback(); 4476 }.bind(this)); 4477 this.clearRejectedCookie(); 4478 document.dispatchEvent(new Event('pr-cookie-consent-api:configured')); 4479 }; 4480 null === this.canManageCookie() 4481 ? this.fetchRestrictionState(finalizeConfiguration) 4482 : finalizeConfiguration(); 4483 }, 4484 canManageCookie: function () { 4485 if (null !== this.config.canManageCookie) { 4486 return this.config.canManageCookie; 4487 } 4488 4489 if (undefined !== prCookieService.get('pr-can-manage-cookie')) { 4490 this.config.canManageCookie = prCookieService.get('pr-can-manage-cookie') === "true"; 4491 return this.config.canManageCookie; 4492 } 4493 4494 return null; 4495 }, 4496 fetchRestrictionState: function (callback) { 4497 var url = this.config.canManageCookieApiUrl + '?_=' + Date.now(); 4498 var xhr = new XMLHttpRequest(); 4499 xhr.open('GET', url, true); 4500 xhr.setRequestHeader('Accept', 'application/json'); 4501 xhr.onreadystatechange = function () { 4502 if (xhr.readyState !== 4) { 4503 return; 4504 } 4505 4506 if (xhr.status >= 200 && xhr.status < 300) { 4507 var body = xhr.responseText || ''; 4508 var parsed; 4509 try { parsed = JSON.parse(body); } catch (_) { parsed = body; } 4510 var status = String(parsed).toLowerCase() === "true"; 4511 4512 prCookieService.set('pr-can-manage-cookie', status, { 4513 path: prCookieConsentApi.config.cookie.path, 4514 expires: prCookieConsentApi.config.mage.lifetime 4515 ? Math.ceil(prCookieConsentApi.config.mage.lifetime / 86400) 4516 : 0 4517 }); 4518 4519 prCookieConsentApi.config.canManageCookie = status; 4520 } else { 4521 console.error('CookieConsent: restriction config is invali
4521d'); 4522 } 4523 4524 callback(); 4525 }; 4526 xhr.send(null); 4527 }, 4528 /** 4529 * @param {function} callback 4530 * @returns {prCookieConsentApi} 4531 */ 4532 addConfiguredCallback: function (callback) { 4533 this.configuredCallbacks.push(callback); 4534 return this; 4535 }, 4536 isAllowedCategory: function (categoryKey) { 4537 if (! this.canManageCookie()) { 4538 return true; 4539 } 4540 if (this.isEssentialCategory(categoryKey)) { 4541 return true; 4542 } 4543 if (this.isOptIn()) { 4544 if (this.isAllCategoriesAllowed()) { 4545 return true; 4546 } 4547 return this.consent.get().includes(categoryKey); 4548 } 4549 return this.config.canUseCookieBeforeOptIn; 4550 }, 4551 getDomain: function (cookieName) { 4552 return this.config.cookies[cookieName] ? this.config.cookies[cookieName].domain : null; 4553 }, 4554 isAllowed: function (cookieName) { 4555 if (this.isSystemCookie(cookieName)) { 4556 return true; 4557 } 4558 if (! this.canManageCookie()) { 4559 return true; 4560 } 4561 if (this.whitelist[cookieName]) { 4562 return true; 4563 } 4564 cookieName = this.getTrueCookieName(cookieName); 4565 if (! this.isOptIn()) { 4566 if (this.config.canUseCookieBeforeOptIn) { 4567 return true; 4568 } 4569 if (this.isKnownCookie(cookieName)) { 4570 return this.isInEssentialCategory(cookieName); 4571 } 4572 return false; 4573 } 4574 if (! this.isKnownCookie(cookieName)) { 4575 return ! this.config.canBlockUnknownCookie; 4576 } 4577 return this.isInAllowedCategory(cookieName); 4578 }, 4579 isAllCategoriesAllowed: function () { 4580 if (null === this.cache.get('allowAllCategories')) { 4581 var customerConsent = this.consent.get(); 4582 if (customerConsent && customerConsent.includes('all') ) { 4583 this.cache.set('allowAllCategories', true); 4584 } else { 4585 var allowedWebsites = this.websiteRestriction.getAllowed(); 4586 this.cache.set('allowAllCategories', allowedWebsites[this.config.mage.website] === 1); 4587 } 4588 } 4589 return this.cache.get('allowAllCategories'); 4590 }, 4591 isEssentialCategory: function (categoryKey) { 4592 return this.config.essentialCategoryKeys.includes(categoryKey); 4593 }, 4594 isInEssentialCategory: function (cookieName) { 4595 return this.isEssentialCategory(this.getCookieCategory(cookieName)); 4596 }, 4597 isInAllowedCategory: function (cookieName) { 4598 return this.isAllowedCategory(this.getCookieCategory(cookieName)); 4599 }, 4600 getCookieCategory: function (cookieName) { 4601 return this.config.cookieToCategoryMapping[cookieName]; 4602 }, 4603 isOptIn: function () { 4604 var allowedWithDefaultCookie = this.websiteRestriction.getAllowed()[this.config.mage.website] === 1; 4605 return Boolean(this.consent.get()) || allowedWithDefaultCookie; 4606 }, 4607 isSystemCookie: function (cookieName) { 4608 return this.SYSTEM_COOKIES.includes(cookieName); 4609 }, 4610 isKnownCookie: function (cookieName) { 4611 return this.config.cookieToCategoryMapping.hasOwnProperty(cookieName); 4612 }, 4613 getTrueCookieName: function (cookieName) { 4614 var keys = Object.keys(this.config.dynamicNamesPatterns), key; 4615 for (var i = 0, length = keys.length; i < length; i++) { 4616 key = keys[i]; 4617 if (new RegExp(this.config.dynamicNamesPatterns[key]).test(cookieName)) { 4618 return key; 4619 } 4620 } 4621 return cookieName; 4622 }, 4623 clearRejectedCookie: function () { 4624 let cookies = prCookieService.get(); 4625 Object.keys(cookies).forEach(function(cookieName) { 4626 if (this.isAllowed(cookieName)) { 4627 return; 4628 } 4629 4630 var encodedCookieName = cookieName = encodeURIComponent(String(cookieName)) 4631 .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent) 4632 .replace(/[\(\)]/g, escape); 4633 4634 this.whitelist[encodedCookieName] = true; 4635 if (this.getDomain(cookieName)) {
4636 prCookieService.remove(cookieName, {domain: this.getDomain(cookieName)}); 4637 } else { 4638 prCookieService.remove(cookieName); 4639 if (this.config.cookie.parentDomain) { 4640 prCookieService.remove(cookieName, {domain: this.config.cookie.parentDomain}); 4641 } 4642 } 4643 this.logger.warn('CookieConsent: remove cookie "' + cookieName + '"'); 4644 if (typeof prCookieService.get(cookieName) !== 'undefined') { 4645 this.logger.error('CookieConsent: fail to remove cookie "' + cookieName + '"'); 4646 } 4647 this.whitelist[encodedCookieName] = false; 4648 }.bind(this)); 4649 } 4650}; 4651 4652prCookieConsentApi.userScript = { 4653 /** 4654 * List of callbacks and categories they depend on. 4655 */ 4656 pendingScripts: [], 4657 /** 4658 * Run script after model is configured or after user provided consent. 4659 */ 4660 init: function () { 4661 prCookieConsentApi.addConfiguredCallback(this.executePendingScripts.bind(this)); 4662 prCookieConsentApi.consent.addCallback(this.executePendingScripts.bind(this)); 4663 }, 4664 /** 4665 * Run or delay script. 4666 * 4667 * @param {function} callback 4668 * @param {string} categoryKey 4669 */ 4670 execute: function (callback, categoryKey) { 4671 if (prCookieConsentApi.isConfigured && prCookieConsentApi.isAllowedCategory(categoryKey)) { 4672 callback(); 4673 return; 4674 } 4675 4676 this.pendingScripts.push({callback: callback, categoryKey: categoryKey, executed: false}); 4677 }, 4678 /** 4679 * Run pending scripts. 4680 */ 4681 executePendingScripts: function () { 4682 this.pendingScripts.forEach(function (script) { 4683 if (false === script.executed && prCookieConsentApi.isAllowedCategory(script.categoryKey)) { 4684 script.callback(); 4685 script.executed = true; 4686 } 4687 }.bind(this)); 4688 }, 4689}; 4690 4691prCookieConsentApi.websiteRestriction = { 4692 getAllowed: function () { 4693 var allowedWebsites = prCookieConsentApi.getCookieValue(prCookieConsentApi.config.mage.cookieName); 4694 return allowedWebsites ? JSON.parse(allowedWebsites) : {}; 4695 }, 4696 allowCurrent: function () { 4697 return this.set(prCookieConsentApi.config.mage.website, true); 4698 }, 4699 disallowCurrent: function () { 4700 return this.set(prCookieConsentApi.config.mage.website, false); 4701 }, 4702 /** 4703 * @param {number} website 4704 * @param {boolean} flag 4705 * @return {CookieRestriction.websiteRestriction} 4706 */ 4707 set: function (website, flag) { 4708 var allowedWebsites = this.getAllowed(); 4709 4710 if (flag) { 4711 allowedWebsites[website] = 1; 4712 } else { 4713 delete allowedWebsites[website]; 4714 } 4715 4716 prCookieService.set(prCookieConsentApi.config.mage.cookieName, allowedWebsites, { 4717 path: prCookieConsentApi.config.cookie.path, 4718 expires: prCookieConsentApi.config.mage.lifetime ? Math.ceil(prCookieConsentApi.config.mage.lifetime / 86400) : 0 4719 }); 4720 4721 return this; 4722 } 4723}; 4724 4725prCookieConsentApi.cache = { 4726 cacheData: {allowAllCategories: null}, 4727 get: function (key) { 4728 return this.cacheData[key]; 4729 }, 4730 set: function (key, value) { 4731 this.cacheData[key] = value; 4732 }, 4733 reset: function () { 4734 this.cacheData = {allowAllCategories: null}; 4735 } 4736}; 4737 4738prCookieConsentApi.logger = { 4739 level: 0, /* disabled */ 4740 init: function () { 4741 if (window.location.hash === '#pr-enable-cookie-log') { 4742 this.level = 1; /* only warnings and errors */ 4743 } 4744 if (window.location.hash === '#pr-enable-cookie-log-all') { 4745 this.level = 2; /* all logs */ 4746 } 4747 }, 4748 log: function () { 4749 this.level > 1 && console.log.apply(console, arguments); 4750 }, 4751 warn: function () { 4752 this.level > 0 && console.warn.apply(console, arguments); 4753 }, 4754 error: function () { 4755 this.level > 0 && console.error.apply(console, arguments); 4756 } 4757}; 4758 4759prCookieConsentApi.consent = { 4760 /** 4761 * Contains callbacks that run after user consent. 4762 * 4763 * @type {function[]} 4764 */ 4765 callbacks: [], 4766 allowAllCategories: function () {
4767 prCookieConsentApi.cache.reset(); 4768 prCookieConsentApi.consent.set(['all']); 4769 return this; 4770 }, 4771 declineAll: function () { 4772 prCookieConsentApi.cache.reset(); 4773 prCookieConsentApi.consent.set([]); 4774 return this; 4775 }, 4776 set: function (allowedCategories) { 4777 prCookieService.set(prCookieConsentApi.CUSTOMER_CONSENT, JSON.stringify(allowedCategories), { 4778 expires: prCookieConsentApi.config.consent.expiry, 4779 path: prCookieConsentApi.config.cookie.path, 4780 domain: prCookieConsentApi.config.cookie.domain 4781 }); 4782 4783 if (allowedCategories.includes('all')) { 4784 prCookieConsentApi.websiteRestriction.allowCurrent(); 4785 } else { 4786 prCookieConsentApi.websiteRestriction.disallowCurrent(); 4787 } 4788 prCookieConsentApi.cache.reset(); 4789 4790 var isAccepting = allowedCategories.length; 4791 4792 this.callbacks.forEach(function (callback) { 4793 callback(allowedCategories) 4794 }); 4795 4796 fetch(prCookieConsentApi.config.consent.logUrl, { 4797 method: 'POST', 4798 headers: { 4799 'Content-Type': 'application/json', 4800 'X-Requested-With': 'XMLHttpRequest' 4801 }, 4802 body: JSON.stringify({acceptedKeys: allowedCategories}) 4803 }) 4804 .then(this.pageReloadAfterAction.bind(this, isAccepting)); 4805 }, 4806 /** 4807 * Reload page by configuration and action 4808 * 4809 * @param isAccepting 4810 */ 4811 pageReloadAfterAction: function (isAccepting) { 4812 if (isAccepting && prCookieConsentApi.config.consent.reloadAfterAccept) { 4813 window.location.reload(); 4814 } 4815 4816 if (! isAccepting && prCookieConsentApi.config.consent.reloadAfterDecline) { 4817 window.location.reload(); 4818 } 4819 }, 4820 get: function () { 4821 var consent = prCookieConsentApi.getCookieValue(prCookieConsentApi.CUSTOMER_CONSENT); 4822 return consent ? JSON.parse(consent) : false; 4823 }, 4824 addCallback: function (callback) { 4825 this.callbacks.push(callback); 4826 return this; 4827 }, 4828}; 4829 4830prCookieConsentApi.configure('\u007B\u0022canManageCookie\u0022\u003Anull,\u0022canManageCookieApiUrl\u0022\u003A\u0022https\u003A\u005C\u002F\u005C\u002Fwww.lillianvernon.com\u005C\u002Frest\u005C\u002FV1\u005C\u002Fpr_cookie\u005C\u002Fcan\u002Dmanage\u002Dcookie\u0022,\u0022canUseCookieBeforeOptIn\u0022\u003Atrue,\u0022canBlockUnknownCookie\u0022\u003Afalse,\u0022consent\u0022\u003A\u007B\u0022isLoggedIn\u0022\u003Atrue,\u0022logUrl\u0022\u003A\u0022https\u003A\u005C\u002F\u005C\u002Fwww.lillianvernon.com\u005C\u002Fpr\u002Dcookie\u002Dconsent\u005C\u002Fconsent_customer\u005C\u002Fupdate\u005C\u002F\u0022,\u0022reloadAfterAccept\u0022\u003Atrue,\u0022reloadAfterDecline\u0022\u003Atrue,\u0022expiry\u0022\u003A365\u007D,\u0022cookie\u0022\u003A\u007B\u0022path\u0022\u003A\u0022\u005C\u002F\u0022,\u0022domain\u0022\u003A\u0022www.lillianvernon.com\u0022,\u0022parentDomain\u0022\u003A\u0022.lillianvernon.com\u0022\u007D,\u0022cookies\u0022\u003A\u007B\u0022pr\u002Dcookie\u002Dnotice\u002Dstatus\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022user_allowed_save_cookie\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022guest\u002Dview\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022login_redirect\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dmessages\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022section_data_ids\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022store\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022amz_auth_err\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022amz_auth_logout\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dsessid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022stf\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_viewed_product\u
48300022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_viewed_product_previous\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dtranslation\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dtranslation\u002Dfile\u002Dversion\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022product_data_storage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_compared_product\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022recently_compared_product_previous\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dcache\u002Dstorage\u002Dsection\u002Dinvalidation\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_ga\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_gid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_gat\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_dc_gtm_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dcookie\u002Dconsent\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dcookie\u002Dconsent\u002Did\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022form_key\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022X\u002DMagento\u002DVary\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022private_content_version\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022persistent_shopping_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022add_to_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mage\u002Dbanners\u002Dcache\u002Dstorage\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022remove_from_cart\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_ga_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mg_dnt\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022rakuten\u002D\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022amzn\u002Dcheckout\u002Dsession\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_gcl_au\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_fbp\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_pin_unauth\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_li_dcdm_c\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_lc2_fpi\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_lc2_fpi_js\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022__kla_id\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022mt.v\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_hjSession_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_hjSessionUser_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_old_user\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_user_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_session_account_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_c_visitor\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_session\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_last_visit\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_referrer\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_referrer_protocol\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_previous_url\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_previous_url_protocol\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_o_v_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_o_a_d_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022poptin_c_p_o_x_c_\u002A\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_uetsid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_uetvid\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022_li_ss\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D,\u0022pr\u002Dcan\u002Dmanage\u002Dcookie\u0022\u003A\u007B\u0022domain\u0022\u003A\u0022\u0022\u007D\u007D,\u0022mage\u0022\u003A\u007B\u0022website\u0022\u003A2,\u0022cookieName\u0022\u003A\u0022user_allowed_save_cookie\u0022,\u0022lifetime\u0022\u003A31536000\u007D,\u0022cookieToCategoryMapping\u0022\u003A\u007B\u0022pr\u002Dcookie\u002Dnotice\u002Dstatus\u0022\u003A\u0022necessary\u0022,\u0022user_allowed_save_cookie\u0022\u003A\u0022necessary\u0022,\u0022guest\u002Dview\u0022\u003A\u0022necessary\u0022,\u0022login_redirect\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dmessages\u0022\u003A\u0022necessary\u0022,\u0022section_data_ids\u0022\u003A\u0022necessary\u0022,\u0022store\u0022\u003A\u0022necessary\u0022,\u0022amz_auth_err\u0022\u003A\u0022necessary\u0022,\u0022amz_auth_logout\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dsessid\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022stf\u0022\u003A\u0022necessary\u0022,\u0022recently_viewed_product\u
48300022\u003A\u0022necessary\u0022,\u0022recently_viewed_product_previous\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dtranslation\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dtranslation\u002Dfile\u002Dversion\u0022\u003A\u0022necessary\u0022,\u0022product_data_storage\u0022\u003A\u0022necessary\u0022,\u0022recently_compared_product\u0022\u003A\u0022necessary\u0022,\u0022recently_compared_product_previous\u0022\u003A\u0022necessary\u0022,\u0022mage\u002Dcache\u002Dstorage\u002Dsection\u002Dinvalidation\u0022\u003A\u0022necessary\u0022,\u0022_ga\u0022\u003A\u0022custom\u0022,\u0022_gid\u0022\u003A\u0022custom\u0022,\u0022_gat\u0022\u003A\u0022custom\u0022,\u0022_dc_gtm_\u002A\u0022\u003A\u0022custom\u0022,\u0022pr\u002Dcookie\u002Dconsent\u0022\u003A\u0022necessary\u0022,\u0022pr\u002Dcookie\u002Dconsent\u002Did\u0022\u003A\u0022necessary\u0022,\u0022form_key\u0022\u003A\u0022necessary\u0022,\u0022X\u002DMagento\u002DVary\u0022\u003A\u0022necessary\u0022,\u0022private_content_version\u0022\u003A\u0022necessary\u0022,\u0022persistent_shopping_cart\u0022\u003A\u0022necessary\u0022,\u0022add_to_cart\u0022\u003A\u0022custom\u0022,\u0022mage\u002Dbanners\u002Dcache\u002Dstorage\u0022\u003A\u0022necessary\u0022,\u0022remove_from_cart\u0022\u003A\u0022custom\u0022,\u0022_ga_\u002A\u0022\u003A\u0022custom\u0022,\u0022mg_dnt\u0022\u003A\u0022necessary\u0022,\u0022rakuten\u002D\u002A\u0022\u003A\u0022necessary\u0022,\u0022amzn\u002Dcheckout\u002Dsession\u0022\u003A\u0022necessary\u0022,\u0022_gcl_au\u0022\u003A\u0022custom\u0022,\u0022_fbp\u0022\u003A\u0022custom\u0022,\u0022_pin_unauth\u0022\u003A\u0022custom\u0022,\u0022_li_dcdm_c\u0022\u003A\u0022custom\u0022,\u0022_lc2_fpi\u0022\u003A\u0022custom\u0022,\u0022_lc2_fpi_js\u0022\u003A\u0022custom\u0022,\u0022__kla_id\u0022\u003A\u0022custom\u0022,\u0022mt.v\u0022\u003A\u0022custom\u0022,\u0022_hjSession_\u002A\u0022\u003A\u0022custom\u0022,\u0022_hjSessionUser_\u002A\u0022\u003A\u0022custom\u0022,\u0022poptin_old_user\u0022\u003A\u0022custom\u0022,\u0022poptin_user_\u002A\u0022\u003A\u0022custom\u0022,\u0022poptin_session_account_\u002A\u0022\u003A\u0022custom\u0022,\u0022poptin_c_visitor\u0022\u003A\u0022custom\u0022,\u0022poptin_session\u0022\u003A\u0022custom\u0022,\u0022poptin_last_visit\u0022\u003A\u0022custom\u0022,\u0022poptin_referrer\u0022\u003A\u0022custom\u0022,\u0022poptin_referrer_protocol\u0022\u003A\u0022custom\u0022,\u0022poptin_previous_url\u0022\u003A\u0022custom\u0022,\u0022poptin_previous_url_protocol\u0022\u003A\u0022custom\u0022,\u0022poptin_o_v_\u002A\u0022\u003A\u0022custom\u0022,\u0022poptin_o_a_d_\u002A\u0022\u003A\u0022custom\u0022,\u0022poptin_c_p_o_x_c_\u002A\u0022\u003A\u0022custom\u0022,\u0022_uetsid\u0022\u003A\u0022custom\u0022,\u0022_uetvid\u0022\u003A\u0022custom\u0022,\u0022_li_ss\u0022\u003A\u0022custom\u0022,\u0022pr\u002Dcan\u002Dmanage\u002Dcookie\u0022\u003A\u0022necessary\u0022\u007D,\u0022essentialCategoryKeys\u0022\u003A\u005B\u0022necessary\u0022\u005D,\u0022dynamicNamesPatterns\u0022\u003A\u007B\u0022poptin_c_p_o_x_c_\u002A\u0022\u003A\u0022poptin_c_p_o_x_c_.\u002A\u0022,\u0022poptin_o_a_d_\u002A\u0022\u003A\u0022poptin_o_a_d_.\u002A\u0022,\u0022poptin_o_v_\u002A\u0022\u003A\u0022poptin_o_v_.\u002A\u0022,\u0022poptin_session_account_\u002A\u0022\u003A\u0022poptin_session_account_.\u002A\u0022,\u0022poptin_user_\u002A\u0022\u003A\u0022poptin_user_.\u002A\u0022,\u0022rakuten\u002D\u002A\u0022\u003A\u0022rakuten\u002D.\u002A\u0022,\u0022_dc_gtm_\u002A\u0022\u003A\u0022_dc_gtm_.\u002A\u0022,\u0022_ga_\u002A\u0022\u003A\u0022_ga_.\u002A\u0022,\u0022_hjSessionUser_\u002A\u0022\u003A\u0022_hjSessionUser_.\u002A\u0022,\u0022_hjSession_\u002A\u0022\u003A\u0022_hjSession_.\u002A\u0022\u007D\u007D'); 4831prCookieConsentApi.initCookieBlocking(); 4832 4833if (typeof define === 'function') { 4834 define('prCookieService', function () {return prCookieService}); 4835 define('prCookieConsentApi', function () {return prCookieConsentApi;}); 4836} 4837</script>
4837<script type="text/x-magento-init"> 4838 { 4839 "*": { 4840 "Magento_PageBuilder/js/widget-initializer": { 4841 "config": {"[data-content-type=\"slider\"][data-appearance=\"default\"]":{"Magento_PageBuilder\/js\/content-type\/slider\/appearance\/default\/widget":false},"[data-content-type=\"slider\"][data-appearance=\"homepage-slider\"]":{"Magento_PageBuilder\/js\/content-type\/slider\/appearance\/default\/widget":false},"[data-content-type=\"map\"]":{"Magento_PageBuilder\/js\/content-type\/map\/appearance\/default\/widget":false},"[data-content-type=\"row\"]":{"Magento_PageBuilder\/js\/content-type\/row\/appearance\/default\/widget":false},"[data-content-type=\"tabs\"]":{"Magento_PageBuilder\/js\/content-type\/tabs\/appearance\/default\/widget":false},"[data-content-type=\"slide\"]":{"Magento_PageBuilder\/js\/content-type\/slide\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-slide-button","showOverlay":"hover","dataRole":"slide"}},"[data-content-type=\"banner\"]":{"Magento_PageBuilder\/js\/content-type\/banner\/appearance\/default\/widget":{"buttonSelector":".pagebuilder-banner-button","showOverlay":"hover","dataRole":"banner"}},"[data-content-type=\"buttons\"]":{"Magento_PageBuilder\/js\/content-type\/buttons\/appearance\/inline\/widget":false},"[data-content-type=\"products\"][data-appearance=\"carousel\"]":{"Magento_PageBuilder\/js\/content-type\/products\/appearance\/carousel\/widget":false}}, 4842 "breakpoints": {"desktop":{"label":"Desktop","stage":true,"default":true,"class":"desktop-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-desktop.svg","conditions":{"min-width":"1024px"},"options":{"products":{"default":{"slidesToShow":"5"}}}},"tablet":{"conditions":{"max-width":"1024px","min-width":"768px"},"options":{"products":{"default":{"slidesToShow":"4"},"continuous":{"slidesToShow":"3"}}}},"mobile":{"label":"Mobile","stage":true,"class":"mobile-switcher","icon":"Magento_PageBuilder::css\/images\/switcher\/switcher-mobile.svg","media":"only screen and (max-width: 767px)","conditions":{"max-width":"767px","min-width":"640px"},"options":{"products":{"default":{"slidesToShow":"3"}}}},"mobile-small":{"conditions":{"max-width":"640px"},"options":{"products":{"default":{"slidesToShow":"2"},"continuous":{"slidesToShow":"1"}}}}} } 4843 } 4844 } 4845</script>
4845<script type="module">const { KlarnaSDK } = await import("https\u003A\u002F\u002Fjs.klarna.com\u002Fweb\u002Dsdk\u002Fv2\u002Fklarna.mjs"); 4846const MyKlarna = await KlarnaSDK({ 4847 clientId: "klarna_live_client_ZnM1VlAzQylBOXJFJHR4eUR3aC9DKUtJblhMRmdlUW0sYmIyZWJmZmItOTlkMC00ZjEyLWE4NGQtM2VjYzExMDE4OWNjLDEsTmdpSWdUenhMUm44MWNCNHFMeDRQdXA4Z05vRFNLNUdORWd1YkE2b2Zmaz0", 4848 products: ["PAYMENT", "MESSAGING", "IDENTITY", "CUSTOMER"], 4849 locale: "en\u002DUS" 4850}); 4851const token = await MyKlarna.Interoperability.token(); 4852const klarnaReadyEvent = new CustomEvent("klarna-sdk-ready", { 4853 detail: { token, sdk: MyKlarna } 4854}); 4855window.dispatchEvent(klarnaReadyEvent);</script>
4855<script type="text/javascript">document.querySelector("#cookie-status").style.display = "none";</script>
4855<script type="text/x-magento-init"> 4856 { 4857 "*": { 4858 "cookieStatus": {} 4859 } 4860 } 4861</script>
4861<script type="text/x-magento-init"> 4862 { 4863 "*": { 4864 "mage/cookies": { 4865 "expires": null, 4866 "path": "\u002F", 4867 "domain": ".www.lillianvernon.com", 4868 "secure": true, 4869 "lifetime": "1296000" 4870 } 4871 } 4872 } 4873</script>
4873<script type="text/javascript">window.artifiSdkUrl = '//component.artifi.net/artifi-headless-releases/3.0/Artifi.headless-layout-cmg.js'</script>
4873<script> 4874 window.cookiesConfig = window.cookiesConfig || {}; 4875 window.cookiesConfig.secure = true; 4876</script>
4876<script> require.config({ 4877 map: { 4878 '*': { 4879 wysiwygAdapter: 'mage/adminhtml/wysiwyg/tiny_mce/tinymceAdapter' 4880 } 4881 } 4882 });</script>
4882<script> require.config({ 4883 paths: { 4884 googleMaps: 'https\u003A\u002F\u002Fmaps.googleapis.com\u002Fmaps\u002Fapi\u002Fjs\u003Fv\u003D3.56\u0026key\u003D' 4885 }, 4886 config: { 4887 'Magento_PageBuilder/js/utils/map': { 4888 style: '', 4889 }, 4890 'Magento_PageBuilder/js/content-type/map/preview': { 4891 apiKey: '', 4892 apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.lillianvernon.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.' 4893 }, 4894 'Magento_PageBuilder/js/form/element/map': { 4895 apiKey: '', 4896 apiKeyErrorMessage: 'You\u0020must\u0020provide\u0020a\u0020valid\u0020\u003Ca\u0020href\u003D\u0027https\u003A\u002F\u002Fwww.lillianvernon.com\u002Fadminhtml\u002Fsystem_config\u002Fedit\u002Fsection\u002Fcms\u002F\u0023cms_pagebuilder\u0027\u0020target\u003D\u0027_blank\u0027\u003EGoogle\u0020Maps\u0020API\u0020key\u003C\u002Fa\u003E\u0020to\u0020use\u0020a\u0020map.' 4897 }, 4898 } 4899 });</script>
4899<script> 4900 require.config({ 4901 shim: { 4902 'Magento_PageBuilder/js/utils/map': { 4903 deps: ['googleMaps'] 4904 } 4905 } 4906 });</script>
4906<script> 4907 function updateMiniCart() { 4908 if (typeof require !== 'undefined') { 4909 require(['jquery', 'Magento_Customer/js/customer-data'], function ($, customerData) { 4910 customerData.reload(['cart'], true); 4911 }); 4912 } else { 4913 window.dispatchEvent(new CustomEvent("reload-customer-section-data")); 4914 } 4915 } 4916</script>
4916<script> 4917 window.addEventListener('pageshow', (event) => { 4918 const [navigationTiming] = performance.getEntriesByType('navigation'); 4919 4920 if (event.persisted || navigationTiming?.type === 'back_forward') { 4921 (events => { 4922 const triggerUpdateMiniCart = () => { 4923 events.forEach(type => window.removeEventListener(type, triggerUpdateMiniCart)) 4924 updateMiniCart(); 4925 }; 4926 4927 events.forEach(type => window.addEventListener(type, triggerUpdateMiniCart, { 4928 once: true, 4929 passive: true 4930 })); 4931 })(['click', 'wheel', 'scroll', 'keydown']); 4932 } 4933 }); 4934</script>
4934<script type="text/javascript">var foomanGaBaseUrl = '/privacy-center/account/check'; var foomanGaQuery = '';</script>
4934<script type="text/x-magento-init"> 4935 { 4936 "*": { 4937 "Magento_Ui/js/core/app": {"components":{"pr-cookie-notice":{"component":"Plumrocket_CookieConsent\/js\/view\/notice","template":"Plumrocket_CookieConsent\/notice\/default","displayStyle":"wall","acceptButtonConfig":{"label":"Accept","text_color":"#FFFFFF","text_color_on_hover":"#FFFFFF","background_color":"#AF121A","background_color_on_hover":null},"declineButtonConfig":{"enabled":false,"label":"Decline","text_color":"#FFFFFF","text_color_on_hover":"#FFFFFF","background_color":"#AF121A","background_color_on_hover":null},"settingsButtonConfig":{"enabled":false,"type":"button","label":"Customize Settings","link_color":null,"link_color_on_hover":null,"text_color":"#FFFFFF","text_color_on_hover":"#FFFFFF","background_color":"#AF121A","background_color_on_hover":null},"statusCookieName":"pr-cookie-notice-status","noticeTitle":"We've updated our Legal Terms and Privacy Policy","noticeTextHtml":"<p>By accepting, you agree to our updated <a style=\"text-decoration: underline;\" href=\"https:\/\/www.lillianvernon.com\/resources\/terms-of-use\" target=\"_blank\" rel=\"noopener\">Terms of Use,<\/a> including the arbitration provision and class action waiver. You understand that we and our third-party vendors may collect and use your information, including through cookies, pixels and similar technologies, for the purposes set forth in our <a style=\"text-decoration: underline;\" href=\"https:\/\/www.lillianvernon.com\/resources\/privacy-and-security\" target=\"_blank\" rel=\"noopener\">Privacy Policy,<\/a> which may include sharing information about your use of this site with third parties. Accepting does not affect your right to opt-out any time via the Your Privacy Choices link in the website footer.<\/p>","design":{"titleColor":"#f6f6f6","textColor":"#e6e6e6","backgroundColor":"#002244E3","overlayBackgroundColor":"","overlayBlur":false}}}} } 4938 } 4939</script>
4939<script type="text/x-magento-init"> 4940 { 4941 "*": { 4942 "Magento_Ui/js/core/app": {"components":{"pr-cookie-settings-bar":{"component":"Plumrocket_CookieConsent\/js\/view\/settings","template":"Plumrocket_CookieConsent\/settings\/left-bar","categories":[{"key":"necessary","is_essential":true,"is_pre_checked":false,"name":"Strictly necessary cookies","description":"<p>These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.<\/p>\n<p><strong class=\"option-label\">Functional Cookies<\/strong><\/p>\n<p>These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.<\/p>","sort_order":0},{"key":"custom","is_essential":false,"is_pre_checked":false,"name":"Opt Out of Sale of Sharing\/Targeted Advertising","description":"<p>As a California consumer, you have the right to opt-out from the sale or sharing of your personal information at any time across business platform, services, businesses and devices. You can opt-out of the sale and sharing of your personal information by using this toggle switch. As a Virginia, Utah, Colorado and Connecticut consumer, you have the right to opt-out from the sale of your personal data and the processing of your personal data for targeted advertising. You can opt-out of the sale of your personal data and targeted advertising by using this toggle switch. For more information on your rights as a United States consumer see our privacy notice.<\/p>\n<p><strong class=\"option-label\">Performance Cookies<\/strong><\/p>\n<p>These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.<\/p>\n<p><strong class=\"option-label\">Targeting Cookies<\/strong><\/p>\n<p>These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.<\/p>","sort_order":0}],"cookies":[{"name":"pr-cookie-notice-status","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Stores close status of cookie notice."},{"name":"user_allowed_save_cookie","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31536000,"durationLabel":"365 days","description":"Stores built-in cookie consent per website."},{"name":"guest-view","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Stores the Order ID that guest shoppers use to retrieve their order status. Guest orders view. Used in \u201cOrders and Returns\u201d widgets."},{"name":"login_redirect","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Preserves the destination page the customer was loading before being directed to log in."},{"name":"mage-messages","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31536000,"durationLabel":"365 days","description":"Tracks error messages and other notifications that are shown to the user, such as the cookie consent message, and various error messages. The message is deleted from the cookie after it is shown to the shopper."},{"name":"section_data_ids","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Stores customer-specific information related to shopper-initiated actions such as display wish list, checkout information, etc."},{"name":"store","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31536000,"durationLabel":"365 days","description":"Tracks the specific store view \/ locale selected by the shopper."},{"name":"amz_auth_err","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31536000,"durationLabel":"365 days","description":"Used if Enable Login with Amazon is enabled. Value 1 indicates an authorization error."},{"name":"amz_auth_logout","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Used if Enable Login with Amazon is enabled. Value 1 indicates that the user should be logged out."},{"name":"mage-cache-sessid","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"The value of this cookie triggers the cleanup of local cache storage. When the cookie is removed by the backend application, the Admin cleans up local storage, and sets the cookie value to true."},{"name":"mage-cache-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Local storage of visitor-specific content that enables ecommerce functions."},{"name":"stf","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Records the time messages are sent by the SendFriend (Email a Friend) module."},{"name":"recently_viewed_product","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently viewed products for easy navigation."},{"name":"recently_viewed_product_previous","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently previously viewed products for easy navigation."},{"name":"mage-translation-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores translated content when requested by the shopper. Used when Translation Strategy is configured as \"Dictionary (Translation on Storefront side)\"."},{"name":"mage-translation-file-version","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Tracks the version of translations in local storage. Used when Translation Strategy is configured as Dictionary (Translation on Storefront side)."},{"name":"product_data_storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores configuration for product data related to Recently Viewed \/ Compared Products."},{"name":"recently_compared_product","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of recently compared products."},{"name":"recently_compared_product_previous","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Stores product IDs of previously compared products for easy navigation."},{"name":"mage-cache-storage-section-invalidation","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Forces local storage of specific content sections that should be invalidated."},{"name":"_ga","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":63072000,"durationLabel":"730 days","description":"Used to distinguish users."},{"name":"_gid","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Used to distinguish users."},{"name":"_gat","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":86400,"durationLabel":"1 day","description":"Used to throttle request rate."},{"name":"_dc_gtm_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":60,"durationLabel":"less than an hour","description":"Used to throttle request rate."},{"name":"pr-cookie-consent","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":365,"durationLabel":"less than an hour","description":"Keeps your cookie consent."},{"name":"pr-cookie-consent-id","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":365,"durationLabel":"less than an hour","description":"Keeps your cookie consent id."},{"name":"form_key","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":1296000,"durationLabel":"15 days","description":"A security measure that appends a random string to all form submissions to protect the data from Cross-Site Request Forgery (CSRF)."},{"name":"X-Magento-Vary","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":1296000,"durationLabel":"15 days","description":"Configuration setting that improves performance when using Varnish static content caching."},{"name":"private_content_version","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":5184000,"durationLabel":"60 days","description":"Appends a random, unique number and time to pages with customer content to prevent them from being cached on the server."},{"name":"persistent_shopping_cart","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":5184000,"durationLabel":"60 days","description":"Stores the key (ID) of persistent cart to make it possible to restore the cart for an anonymous shopper."},{"name":"add_to_cart","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":3600,"durationLabel":"1 hour","description":"Used by Google Tag Manager. Captures the product SKU, name, price and quantity removed from the cart, and makes the information available for future integration by third-party scripts."},{"name":"mage-banners-cache-storage","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":3600,"durationLabel":"1 hour","description":"Stores banner content locally to improve performance."},{"name":"remove_from_cart","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":3600,"durationLabel":"1 hour","description":"Used by Google Tag Manager. Captures the product SKU, name, price and quantity added to the cart, and makes the information available for future integration by third-party scripts."},{"name":"_ga_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":63072000,"durationLabel":"730 days","description":"Used to persist session state."},{"name":"mg_dnt","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Used to restrict Adobe Commerce data collection functionality if the user has opted out of tracking."},{"name":"rakuten-*","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":63072000,"durationLabel":"730 days","description":""},{"name":"amzn-checkout-session","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Used by Amazon Pay (or a website using Amazon Pay) to manage and maintain the state of a user's checkout session, ensuring items in the cart and payment details carry through the process."},{"name":"_gcl_au","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":7745539,"durationLabel":"90 days","description":"A Google Ads Conversion Linker cookie, used by advertisers to measure the effectiveness of ad campaigns and conversion rates (how many users who clicked on an ad ended up taking an action, like a purchase)."},{"name":"_fbp","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":7745688,"durationLabel":"90 days","description":"A Facebook (Meta) Pixel cookie, used to track visits across websites to deliver a series of advertisement products, measure ad performance, and optimize ad targeting."},{"name":"_pin_unauth","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31505688,"durationLabel":"365 days","description":"A Pinterest cookie used to track user activity for advertising and analytics purposes even when the user is not authenticated\/logged into Pinterest."},{"name":"_li_dcdm_c","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A LinkedIn cookie used to remember user preferences or session information to enhance the functionality of embedded LinkedIn features."},{"name":"_lc2_fpi","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":34529700,"durationLabel":"400 days","description":"This cookie is set by LiveIntent, an advertising technology provider. It is a random, unique device identifier used for enabling targeted advertising."},{"name":"_lc2_fpi_js","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Associated with LiveIntent's tracking services, similar to _lc2_fpi. It's part of the mechanism for collecting visitor data across multiple websites to deliver relevant advertisements."},{"name":"__kla_id","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":34529545,"durationLabel":"400 days","description":"A Klaviyo cookie, used for marketing automation and email campaigns. It tracks user behavior to provide personalized content and follow-up commun
4942ications."},{"name":"mt.v","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":34529700,"durationLabel":"400 days","description":"This cookie is associated with Monetate. It is a first-party cookie used to track a user's visit across multiple requests to deliver personalized content and experiences on the website."},{"name":"_hjSession_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Hotjar cookie identifies a user's session and a unique user to analyze site usage patterns."},{"name":"_hjSessionUser_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Hotjar cookie identifies a user's session and a unique user to analyze site usage patterns."},{"name":"poptin_old_user","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":142406,"durationLabel":"2 days","description":"Poptin cookie helps the website distinguish between first-time and returning users."},{"name":"poptin_user_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31505546,"durationLabel":"365 days","description":"Poptin cookies identifies each user associating multiple sessions for analytics."},{"name":"poptin_session_account_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":2561546,"durationLabel":"30 days","description":"A Poptin cookie manages session in website on the Poptin service."},{"name":"poptin_c_visitor","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":2561546,"durationLabel":"30 days","description":"A Poptin cookie tracks a user's activity during a signle , current visit to the site."},{"name":"poptin_session","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Poptin cookie manages the current browsing session."},{"name":"poptin_last_visit","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31505701,"durationLabel":"365 days","description":"A Poptin cookie stores the timestamp or date of the user's previous visit to the website."},{"name":"poptin_referrer","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Poptin cookie stores the full URL of the webpage that linked the user to the current site."},{"name":"poptin_referrer_protocol","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Poptin cookie stores the protocol of the referring page."},{"name":"poptin_previous_url","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Poptin cookie stores the page visited immediately prior to the current page."},{"name":"poptin_previous_url_protocol","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"A Poptin cookie stores the page visited immediately prior to the current one."},{"name":"poptin_o_v_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":0,"durationLabel":"Session","description":"Poptin cookies track user interactions with specific pop-ups or forms to measure campaign performance and prevent the same user from seeing the same promotions too many times."},{"name":"poptin_o_a_d_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":56050,"durationLabel":"16 hours","description":"Poptin cookies track user interactions with specific pop-ups or forms to measure campaign performance and prevent the same user from seeing the same promotions too many times."},{"name":"poptin_c_p_o_x_c_*","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":56055,"durationLabel":"16 hours","description":"Poptin cookies track user interactions with specific pop-ups or forms to measure campaign performance and prevent the same user from seeing the same promotions too many times."},{"name":"_uetsid","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":56088,"durationLabel":"16 hours","description":"Microsoft Bing Ads cookie tracks user sessions and unique user IDs for the purpose of measuring ad efficie
4942ncy and retargeting within the Bing advertising network."},{"name":"_uetvid","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":33665688,"durationLabel":"390 days","description":"Microsoft Bing Ads cookie tracks user sessions and unique user IDs for the purpose of measuring ad efficiency and retargeting within the Bing advertising network."},{"name":"_li_ss","category_key":"custom","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":34529701,"durationLabel":"400 days","description":"A LinkedIn cookie used to maintain the user's session status across different pages or visits, ensuring a consistent user experience."},{"name":"pr-can-manage-cookie","category_key":"necessary","type":"first","typeLabel":"1st Party","domain":"","domainLabel":"www.lillianvernon.com","duration":31536000,"durationLabel":"365 days","description":"Stores IP geolocation-based permission indicating whether consent restrictions can be managed for the visitor."}],"displayStyle":"left_bar","canShowCookieDetails":true,"overview":{"title":"Do Not Sell or Share My Personal Data","text":"<p>We process your personal information to provide, improve and advertise our services, as described in our Privacy and Cookie Policies. Some of this processing may be considered sharing or sale under applicable law. To opt out of our sharing or sale of personal information in cookies, switch each toggle below by moving it to the left and clicking \"Confirm My Choices.\" Please note that these choices only apply to the specific browser or device on which you make them. You must renew this choice if you clear your cookies or if your browser is set to do so. Blocking some things may impact your experience of the site.<\/p>"},"consentPreferences":{"header":"Manage Consent Preferences","essential_category_status":"Always Active","cookie_details_link":"Cookie Details"},"design":{"textColor":"inherit","backgroundColor":"inherit"},"acceptButtonConfig":{"label":"Accept All","enabled":false,"text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null},"declineButtonConfig":{"enabled":false,"label":"Decline All","text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null},"confirmButtonConfig":{"label":"Confirm My Choices","text_color":null,"text_color_on_hover":null,"background_color":null,"background_color_on_hover":null}}}} } 4943 } 4944</script>
4944<script type="text/x-magento-init"> 4945{ 4946 "*": { 4947 "Plumrocket_GDPR/js/load-consent-popups": { 4948 "loadUrl": "https://www.lillianvernon.com/data-privacy/consentpopups/load/", 4949 "loadContainer": "#prgdpr-consentpopups-container" 4950 } 4951 } 4952} 4953</script>
4953<script type="text/x-magento-init"> 4954 { 4955 "*": { 4956 "Magento_Ui/js/core/app": { 4957 "components": { 4958 "customer": { 4959 "component": "Magento_Customer/js/view/customer" 4960 } 4961 } 4962 } 4963 } 4964 } 4965 </script>
4965<script>window.checkout = {"shoppingCartUrl":"https:\/\/www.lillianvernon.com\/checkout\/cart\/","checkoutUrl":"https:\/\/www.lillianvernon.com\/checkout\/","updateItemQtyUrl":"https:\/\/www.lillianvernon.com\/checkout\/sidebar\/updateItemQty\/","removeItemUrl":"https:\/\/www.lillianvernon.com\/checkout\/sidebar\/removeItem\/","imageTemplate":"Magento_Catalog\/product\/image_with_borders","baseUrl":"https:\/\/www.lillianvernon.com\/","minicartMaxItemsVisible":5,"websiteId":"2","maxItemsToDisplay":10,"storeId":"2","storeGroupId":"2","customerLoginUrl":"https:\/\/www.lillianvernon.com\/customer\/account\/login\/","isRedirectRequired":false,"autocomplete":"off","captcha":{"user_login":{"isCaseSensitive":false,"imageHeight":50,"imageSrc":"","refreshUrl":"https:\/\/www.lillianvernon.com\/captcha\/refresh\/","isRequired":false,"timestamp":1790276336}}}</script>
4965<script type="text/x-magento-init"> 4966 { 4967 "[data-block='minicart']": { 4968 "Magento_Ui/js/core/app": {"components":{"minicart_content":{"children":{"subtotal.container":{"children":{"subtotal":{"children":{"subtotal.totals":{"config":{"display_cart_subtotal_incl_tax":0,"display_cart_subtotal_excl_tax":1,"template":"Magento_Tax\/checkout\/minicart\/subtotal\/totals"},"children":{"subtotal.totals.msrp":{"component":"Magento_Msrp\/js\/view\/checkout\/minicart\/subtotal\/totals","config":{"displayArea":"minicart-subtotal-hidden","template":"Magento_Msrp\/checkout\/minicart\/subtotal\/totals"}}},"component":"Magento_Tax\/js\/view\/checkout\/minicart\/subtotal\/totals"}},"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/subtotal"}}},"component":"uiComponent","config":{"displayArea":"subtotalContainer"}},"item.renderer":{"component":"Regent_CustomQuantity\/js\/view\/minicart\/item\/details","config":{"displayArea":"defaultRenderer","template":"Magento_Checkout\/minicart\/item\/default"},"children":{"item.image":{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/product-image","displayArea":"itemImage"}},"item.edit.artifi":{"component":"uiComponent","config":{"template":"Regent_Artifi\/minicart\/item\/artifi-edit","displayArea":"artifi"}},"item.edit.artifi_react":{"component":"uiComponent","config":{"template":"Regent_Artifi\/minicart\/item\/artifi-react-edit","displayArea":"artifi_react"}},"checkout.cart.item.price.sidebar":{"component":"uiComponent","config":{"template":"Magento_Checkout\/minicart\/item\/price","displayArea":"priceSidebar"}},"delivery":{"component":"uiComponent","displayArea":"additionInfo","config":{"template":"Regent_DeliveryPeriod\/minicart\/item\/delivery"}}}},"extra_info":{"component":"uiComponent","config":{"displayArea":"extraInfo","template":"Klarna_Kec\/mini-cart-btn"},"children":{"mini_cart_button":{"component":"Klarna_Kec\/js\/mini-cart-kec-button","displayArea":"miniCartButton"},"paypal_braintree_message":{"component":"PayPal_Braintree\/js\/messages\/mini-cart"}}},"promotion":{"component":"uiComponent","config":{"displayArea":"promotion"}},"added.notify":{"component":"Regent_MinicartExpand\/js\/view\/minicart-added-notify","config":{"displayArea":"promotion","template":"Regent_MinicartExpand\/minicart\/added-notify"}}},"config":{"itemRenderer":{"default":"defaultRenderer","simple":"defaultRenderer","virtual":"defaultRenderer"},"template":"Magento_Checkout\/minicart\/content-custom"},"component":"Magento_Checkout\/js\/view\/minicart"}},"types":[]} }, 4969 "*": { 4970 "Magento_Ui/js/block-loader": "https\u003A\u002F\u002Fstatic.lillianvernon.com\u002Fversion1788891929\u002Ffrontend\u002FRegent\u002Fcmg_lv\u002Fen_US\u002Fimages\u002Floader\u002D1.gif" 4971 } 4972 } 4973 </script>
4973<script type="application/javascript" async data-type="lazy" data-src="https://static.klaviyo.com/onsite/js/Wt4dUg/klaviyo.js"></script>
4973<script type="text/x-magento-init"> 4974 { 4975 "*": { 4976 "KlaviyoCustomerData": {} 4977 } 4978 } 4979 </script>
4979<script type="text/javascript"> 4980 require([ 4981 'jquery' 4982 ], function ($) { 4983 let items = $('nav.navigation').find('li.level0'); 4984 $.each(items, function(index, item) { 4985 $(item).on('mouseover', function() { 4986 $('#hover-item-index').val(index + 1); 4987 }).on('mouseout', function() { 4988 $('#hover-item-index').val(''); 4989 }); 4990 }) 4991 }); 4992</script>
4992<script type="text/x-magento-init"> 4993{ 4994 "nav.navigation > ul": { 4995 "expandOnTouch": {}, 4996 "menuLoaded": {} 4997 } 4998} 4999</script>
4999<script type="text/x-magento-init"> 5000{ 5001 "[data-role=promo-block]": { 5002 "Magento_Ui/js/core/app": {"components":{"coupon_promo_banner":{"component":"Regent_Promotion\/js\/view\/banner","urlParam":"code"}}} } 5003} 5004</script>
5004<script type="text/x-magento-init"> 5005 { 5006 "*": { 5007 "Magento_Ui/js/core/app": { 5008 "components": { 5009 "messages": { 5010 "component": "Magento_Theme/js/view/messages" 5011 } 5012 } 5013 } 5014 } 5015 } 5016</script>
5016<script>window.authenticationPopup = {"autocomplete":"off","customerRegisterUrl":"https:\/\/www.lillianvernon.com\/customer\/account\/create\/","customerForgotPasswordUrl":"https:\/\/www.lillianvernon.com\/customer\/account\/forgotpassword\/","baseUrl":"https:\/\/www.lillianvernon.com\/","customerLoginUrl":"https:\/\/www.lillianvernon.com\/customer\/ajax\/login\/"}</script>
5016<script type="text/x-magento-init"> 5017 { 5018 "#authenticationPopup": { 5019 "Magento_Ui/js/core/app": {"components":{"authenticationPopup":{"component":"Magento_Customer\/js\/view\/authentication-popup","children":{"messages":{"component":"Magento_Ui\/js\/view\/messages","displayArea":"messages"},"captcha":{"component":"Magento_Captcha\/js\/view\/checkout\/loginCaptcha","displayArea":"additional-login-form-fields","formId":"user_login","configSource":"checkout"},"amazon-button":{"component":"Amazon_Pay\/js\/view\/login-button-wrapper","sortOrder":"0","displayArea":"additional-login-form-fields","config":{"tooltip":"Securely login to our website using your existing Amazon details."}},"remember-me":{"component":"Magento_Persistent\/js\/view\/remember-me-default","displayArea":"additional-login-form-fields"}}}}} }, 5020 "*": { 5021 "Magento_Ui/js/block-loader": "https\u003A\u002F\u002Fstatic.lillianvernon.com\u002Fversion1788891929\u002Ffrontend\u002FRegent\u002Fcmg_lv\u002Fen_US\u002Fimages\u002Floader\u002D1.gif" 5022 } 5023 } 5024 </script>
5024<script type="text/x-magento-init"> 5025 { 5026 "*": { 5027 "Magento_Customer/js/section-config": { 5028 "sections": {"stores\/store\/switch":["*","athos_pagemeta_cart"],"stores\/store\/switchrequest":["*"],"directory\/currency\/switch":["*"],"*":["messages","coupon_promo_banner"],"customer\/account\/logout":["*","recently_viewed_product","recently_compared_product","persistent","athoscommerce-tracking","searchspring-tracking"],"customer\/account\/loginpost":["*","athoscommerce-tracking","data_privacy","searchspring-tracking"],"customer\/account\/createpost":["*","athoscommerce-tracking","searchspring-tracking"],"customer\/account\/editpost":["*"],"customer\/ajax\/login":["checkout-data","cart","captcha","athoscommerce-tracking","searchspring-tracking"],"catalog\/product_compare\/add":["compare-products"],"catalog\/product_compare\/remove":["compare-products"],"catalog\/product_compare\/clear":["compare-products"],"sales\/guest\/reorder":["cart"],"sales\/order\/reorder":["cart","athos_pagemeta_cart"],"checkout\/cart\/add":["cart","directory-data","athos_pagemeta_cart","capi-event-ids"],"checkout\/cart\/delete":["cart","athos_pagemeta_cart"],"checkout\/cart\/updatepost":["cart","athos_pagemeta_cart"],"checkout\/cart\/updateitemoptions":["cart"],"checkout\/cart\/couponpost":["cart","athos_pagemeta_cart"],"checkout\/cart\/estimatepost":["cart"],"checkout\/cart\/estimateupdatepost":["cart"],"checkout\/onepage\/saveorder":["cart","checkout-data","last-ordered-items","athos_pagemeta_cart"],"checkout\/sidebar\/removeitem":["cart","athos_pagemeta_cart"],"checkout\/sidebar\/updateitemqty":["cart","athos_pagemeta_cart"],"rest\/*\/v1\/carts\/*\/payment-information":["cart","last-ordered-items","instant-purchase","captcha","capi-event-ids"],"rest\/*\/v1\/guest-carts\/*\/payment-information":["cart","captcha","capi-event-ids"],"rest\/*\/v1\/guest-carts\/*\/selected-payment-method":["cart","checkout-data"],"rest\/*\/v1\/carts\/*\/selected-payment-method":["cart","checkout-data","instant-purchase"],"customer\/address\/*":["instant-purchase"],"customer\/account\/*":["instant-purchase"],"vault\/cards\/deleteaction":["instant-purchase"],"multishipping\/checkout\/overviewpost":["cart"],"paypal\/express\/placeorder":["cart","checkout-data"],"paypal\/payflowexpress\/placeorder":["cart","checkout-data"],"paypal\/express\/onauthorization":["cart","checkout-data"],"persistent\/index\/unsetcookie":["persistent"],"review\/product\/post":["review"],"paymentservicespaypal\/smartbuttons\/placeorder":["cart","checkout-data"],"paymentservicespaypal\/smartbuttons\/cancel":["cart","checkout-data"],"wishlist\/index\/add":["wishlist"],"wishlist\/index\/remove":["wishlist"],"wishlist\/index\/updateitemoptions":["wishlist"],"wishlist\/index\/update":["wishlist"],"wishlist\/index\/cart":["wishlist","cart"],"wishlist\/index\/fromcart":["wishlist","cart"],"wishlist\/index\/allcart":["wishlist","cart"],"wishlist\/shared\/allcart":["wishlist","cart"],"wishlist\/shared\/cart":["cart"],"ammostviewed\/cart\/add":["cart","messages"],"amazon_pay\/checkout\/completesession":["cart","checkout-data","last-ordered-items"],"checkout\/cart\/advancedadd":["athos_pagemeta_cart"],"checkout\/cart\/addfaileditems":["athos_pagemeta_cart"],"checkout\/cart\/updatefaileditemoptions":["athos_pagemeta_cart"],"checkout\/cart\/removefailed":["athos_pagemeta_cart"],"checkout\/cart\/removeallfailed":["athos_pagemeta_cart"],"customer_order\/cart\/advancedadd":["athos_pagemeta_cart"],"customer_order\/cart\/addfaileditems":["athos_pagemeta_cart"],"customer_order\/cart\/updatefaileditemoptions":["athos_pagemeta_cart"],"reclaim\/checkout\/reload":["cart"],"rest\/*\/v1\/guest-carts\/*\/set-payment-information":["capi-event-ids"],"rest\/*\/v1\/carts\/mine\/set-payment-information":["capi-event-ids"],"braintree\/paypal\/placeorder":["cart","checkout-data"],"braintree\/googlepay\/placeorder":["cart","checkout-data"],"privacy-center\/consentpopups\/confirm":["data_privacy"],"pr_ccpa\/customer_action\/log":["ccpa_data"],"customer\/address\/formpost":["ccpa_data"],"personalization\/cart":["cart"],"promotion\/cart":["cart"]}, 5029 "clientSideSections": ["checkout-data","cart-data"], 5030 "baseUrls": ["https:\/\/www.lillianvernon.com\/"], 5031 "sectionNames": ["messages","customer","compare-products","last-ordered-items","cart","directory-data","instant-purchase","loggedAsCustomer","captcha","persistent","review","payments","wishlist","athoscommerce-tracking","athos_pagemeta_cart","webforms","capi-event-ids","data_privacy","ccpa_data","coupon_promo_banner","searchspring-tracking","recently_viewed_product","recently_compared_product","product_data_storage","paypal-billing-agreement","paypal-buyer-country"] } 5032 } 5033 } 5034</script>
5034<script type="text/x-magento-init"> 5035 { 5036 "*": { 5037 "Magento_Customer/js/customer-data": { 5038 "sectionLoadUrl": "https\u003A\u002F\u002Fwww.lillianvernon.com\u002Fcustomer\u002Fsection\u002Fload\u002F", 5039 "expirableSectionLifetime": 60, 5040 "expirableSectionNames": ["cart","persistent"], 5041 "cookieLifeTime": "1296000", 5042 "cookieDomain": "", 5043 "updateSessionUrl": "https\u003A\u002F\u002Fwww.lillianvernon.com\u002Fcustomer\u002Faccount\u002FupdateSession\u002F", 5044 "isLoggedIn": "" 5045 } 5046 } 5047 } 5048</script>
5048<script type="text/x-magento-init"> 5049 { 5050 "*": { 5051 "Magento_Customer/js/invalidation-processor": { 5052 "invalidationRules": { 5053 "website-rule": { 5054 "Magento_Customer/js/invalidation-rules/website-rule": { 5055 "scopeConfig": { 5056 "websiteId": "2" 5057 } 5058 } 5059 } 5060 } 5061 } 5062 } 5063 } 5064</script>
5064<script type="text/x-magento-init"> 5065 { 5066 "body": { 5067 "pageCache": {"url":"https:\/\/www.lillianvernon.com\/page_cache\/block\/render\/","handles":["default","prgdpr_account_check","remember_me","pl_thm_regent_default","pl_thm_regent_cmg_lv_default"],"originalRequest":{"route":"prgdpr","controller":"account","action":"check","uri":"\/privacy-center\/account\/check\/"},"versionCookieName":"private_content_version"} } 5068 } 5069</script>
5069<script>require (['uiRegistry'], function(registry) { 5070 registry.set('amazonPay', {"region":"us","code":"amazon_payment_v2","vault_code":"amazon_payment_v2_vault","is_method_available":true,"is_pay_only":true,"is_lwa_enabled":false,"is_guest_checkout_enabled":true,"has_restricted_products":false,"is_multicurrency_enabled":false,"acceptance_mark":"Amazon_Pay\/images\/logo\/amazonpay-secondary-logo-rgb_clr.svg"}); 5071});require (['Amazon_Pay/js/model/storage'], function(amazonStorage) { 5072 amazonStorage.clearAmazonCheckout(); 5073});</script>
5073<script type="text/x-magento-init"> 5074 { 5075 "#prgdpr-account-check": { 5076 "Magento_Ui/js/core/app": { 5077 "components": { 5078 "prgdpr-account-check-form": { 5079 "component": "Plumrocket_GDPR\/js\/view\/account-check", 5080 "fromActionUrl": "https:\/\/www.lillianvernon.com\/data-privacy\/account\/email\/" } 5081 } 5082 } 5083 } 5084 } 5085</script>
5085<script type="text/javascript"> 5086 document.documentElement.className += 5087 ((('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) ? ' touch' : ' no-touch'); 5088</script>
5088<script src="https://x.klarnacdn.net/kp/lib/v1/api.js" async></script>
5088<script type="text/x-magento-init"> 5089{ 5090 "form": { 5091 "ariaLiveAccessibilityWidget": { 5092 "optionSelectors": {"option_selector_1":"input[data-validate]:not([type=radio])","option_selector_2":"select[data-validate]:not([type=radio])","option_selector_3":"textarea[data-validate]","option_selector_4":"div#product-review-table"}, 5093 "submitSelector": ":submit" 5094 } 5095 } 5096} 5097</script>
5097<script type="text/x-magento-init"> 5098 { 5099 "*": { 5100 "Magento_Customer/js/block-submit-on-send": { 5101 "formId": "newsletter-validate-detail" 5102 } 5103 } 5104 } 5105</script>
5105<script type="text/x-magento-init"> 5106 { 5107 "*": { 5108 "Magento_Customer/js/block-submit-on-send": { 5109 "formId": "klaviyo-validate-detail" 5110 } 5111 } 5112 } 5113</script>
5113<script type="text/x-magento-init"> 5114 { 5115 "*": { 5116 "Magento_Ui/js/core/app": { 5117 "components": { 5118 "storage-manager": { 5119 "component": "Magento_Catalog/js/storage-manager", 5120 "appendTo": "", 5121 "storagesConfiguration" : {"recently_viewed_product":{"requestConfig":{"syncUrl":"https:\/\/www.lillianvernon.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"recently_compared_product":{"requestConfig":{"syncUrl":"https:\/\/www.lillianvernon.com\/catalog\/product\/frontend_action_synchronize\/"},"lifetime":"1000","allowToSendRequest":null},"product_data_storage":{"updateRequestConfig":{"url":"https:\/\/www.lillianvernon.com\/rest\/lillianvernon\/V1\/products-render-info"},"requestConfig":{"syncUrl":"https:\/\/www.lillianvernon.com\/catalog\/product\/frontend_action_synchronize\/"},"allowToSendRequest":null}} } 5122 } 5123 } 5124 } 5125 } 5126</script>
5126<script type="text/javascript" id="vwoCode"> 5127window._vwo_code || (function() { 5128var account_id=952772, 5129version=2.1, 5130settings_tolerance=2000, 5131hide_element='body', 5132hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important;transition:none !important;', 5133/* DO NOT EDIT BELOW THIS LINE */ 5134f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='vwo'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('vwo'+account_id+'_config'));cc=c&&typeof c==='object'?c:{}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={nonce:v&&v.nonce,use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){if(performance.getEntriesByName('first-contentful-paint')[0]){return''}return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(e){if(!f){f=true;var t=d.getElementById('_vis_opt_path_hides');if(t)t.parentNode.removeChild(t);if(e)(new Image).src='https://dev.visualwebsiteoptimizer.com/ee.gif?a='+account_id+e}},finished:function(){return f},addScript:function(e){var t=d.createElement('script');t.type='text/javascript';if(e.src){t.src=e.src}else{t.text=e.text}v&&t.setAttribute('nonce',v.nonce);d.getElementsByTagName('head')[0].appendChild(t)},load:function(e,t){var n=this.getSettings(),i=d.createElement('script'),r=this;t=t||{};if(n){i.textContent=n;d.getElementsByTagName('head')[0].appendChild(i);if(!w.VWO||VWO.caE){stT.removeItem(cK);r.load(e)}}else{var o=new XMLHttpRequest;o.open('GET',e,true);o.withCredentials=!t.dSC;o.responseType=t.responseType||'text';o.onload=function(){if(t.onloadCb){return t.onloadCb(o,e)}if(o.status===200||o.status===304){_vwo_code.addScript({text:o.responseText})}else{_vwo_code.finish('&e=loading_failure:'+e)}};o.onerror=function(){if(t.onerrorCb){return t.onerrorCb(e)}_vwo_code.finish('&e=loading_failure:'+e)};o.send()}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return}},init:function(){if(d.URL.indexOf('vwo_disable')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t;if(this.hide_element()!=='body'){t=d.createElement('style');var n=this.hide_element(),i=n?n+this.hide_element_style():'',r=d.getElementsByTagName('head')[0];t.setAttribute('id','_vis_opt_path_hides');v&&t.setAttribute('nonce',v.nonce);t.setAttribute('type','text/css');if(t.styleSheet)t.styleSheet.cssText=i;else t.appendChild(d.createTextNode(i));r.appendChild(t)}else{t=d.getElementsByTagName('head')[0];var i=d.createElement('div');i.style.cssText='z-index: 2147483647 !important;position: fixed !important;left: 0 !important;top: 0 !important;width: 100% !important;height: 100% !important;background: white !important;';i.setAttribute('id','_vis_opt_path_hides');i.classList.add('_vis_hide_layer');t.parentNode.insertBefore(i,t.nextSibling)}var o=window._vis_opt_url||d.URL,s='https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(o)+'&vn='+version;if(w.location.search.indexOf('_vwo_xhr')!==-1){this.addScript({src:s})}else{this.load(s+'&x=true')}}};w._vwo_code=code;code.init();})(); 5135 </script>
5135<script type="text/lazy-load">(function(w, d, x, id){ 5136 s=d.createElement('script'); 5137 s.src='https://dend6g4sigg57.cloudfront.net/amazon-connect-chat-interface-client.js'; 5138 s.async=1; 5139 s.id=id; 5140 d.getElementsByTagName('head')[0].appendChild(s); 5141 w[x] = w[x] || function() { (w[x].ac = w[x].ac || []).push(arguments) }; 5142 })(window, document, 'amazon_connect', '134135f2-2cfc-43f7-9c9b-8cd84a44a7ee'); 5143 amazon_connect('styles', { iconType: 'CHAT', openChat: { color: '#ffffff', backgroundColor: '#0d0d0d' }, closeChat: { color: '#ffffff', backgroundColor: '#0d0d0d'} }); 5144 amazon_connect('snippetId', 'QVFJREFIajFmekoyaHFUTFBWNWJERHVsR2djTXpWT1ZsSDYvaFRscVhCQzc4SkdXdHdIR3pFQklSSEVkYmRmeTZIQ1VhMHdmQUFBQWJqQnNCZ2txaGtpRzl3MEJCd2FnWHpCZEFnRUFNRmdHQ1NxR1NJYjNEUUVIQVRBZUJnbGdoa2dCWlFNRUFTNHdFUVFNckl0MnE5OGp1MmR2VHZ5b0FnRVFnQ3VrRVlkK2V3Z3FTam04WnEwNytuK0NXTHhxWEw1d3RpMWl2YWloWG9jQlZoOHFkMEo0TXFVM2pQUW06Oml6WDFNclc2K2h0TnFzSGR0L3hzMjJYR3NBaVBhbXhrSEtLYzJuNkM1Z1hLVHl1SU9FSzNuTE1Lb01TSTFqYmttd2ZjYWdQeUREVWpjV3JORklpMzRmM3JZdVNXVy8wS0pLdFc3Q0JYUkdCZU9SazY3S003RXAwMXZyQlRXc1N3dXV4cUtObDBreU5ueXFQVU04T0lQWDZpSTZqWTVWTT0='); 5145 amazon_connect('supportedMessagingContentTypes', [ 'text/plain', 'text/markdown', 'application/vnd.amazonaws.connect.message.interactive', 'application/vnd.amazonaws.connect.message.interactive.response' ]);</script>
5145<script id="pr_cookie_consent_on_load_activate" nonce="dHV2bnUwajJsMmxlZXVwZDhhdXNibmszbnF5YXd3a3M="> 5146 requirejs(['prCookieBodyScripts', 'domReady!'], function (bodyScripts) { 5147 'use strict'; 5148 var scripts = document.querySelectorAll('script[type^="pr_cookie_category"]'); 5149 [].forEach.call(scripts, function (notActiveScript) { 5150 bodyScripts.activatePrCookieCategoryScript(notActiveScript); 5151 }); 5152 }); 5153</script>
5153<script id="merchantWidgetScript" async defer data-type="lazy" data-src="https://www.gstatic.com/shopping/merchant/merchantwidget.js"></script>
5153<script type="text/javascript"> 5154 merchantWidgetScript.addEventListener('load', function () { 5155 merchantwidget.start({ 5156 merchant_id: '101500539', 5157 position: 'BOTTOM_RIGHT', bottomMargin: 130, mobileBottomMargin: 1}); 5158 }); 5159 </script>
5159<script siteId="133" src="https://cdn.athoscommerce.net/analytics/beacon.js"> 5160 config = { initiator: "magento" }; 5161</script>
5161<script type="text/javascript" id="athoscommerce_init"> 5162 window.athos = window.athos || {}; 5163 window.athos.tracker = window.athos.tracker || {}; 5164 window.athos.tracker.events = window.athos.tracker.events || {}; 5165</script>
5165<script type="text/javascript" id="athoscommerce_shopper_id"> 5166 document.addEventListener('DOMContentLoaded', function () { 5167 'use strict'; 5168 5169 const timeoutMs = 3600000; 5170 5171 const processShopperId = function (shopperId) { 5172 if (shopperId) { 5173 const lastTime = localStorage.getItem('athosMagentoShopperLastTime'); 5174 const lastId = localStorage.getItem('athosMagentoShopperLastId'); 5175 const now = Date.now(); 5176 5177 if (lastId === shopperId && lastTime && (now - parseInt(lastTime, 10) < timeoutMs)) { 5178 return; 5179 } 5180 5181 if ( 5182 window.athos && 5183 window.athos.tracker && 5184 typeof window.athos.tracker.setShopperId === 'function' 5185 ) { 5186 window.athos.tracker.setShopperId(shopperId); 5187 } 5188 localStorage.setItem('athosMagentoShopperLastTime', now); 5189 localStorage.setItem('athosMagentoShopperLastId', shopperId); 5190 } 5191 }; 5192 5193 const fetchIdFromStorage = function () { 5194 const isLoggedIn = localStorage.getItem('mage-customer-login'); 5195 if (isLoggedIn !== '1') { 5196 processShopperId(null); 5197 return; 5198 } 5199 5200 try { 5201 const storage = JSON.parse(localStorage.getItem('mage-cache-storage') || '{}'); 5202 if (storage['athoscommerce-tracking']) { 5203 processShopperId(storage['athoscommerce-tracking'].shopper_id); 5204 } 5205 } catch (e) { 5206 console.error('Error parsing mage-cache-storage', e); 5207 } 5208 }; 5209 5210 fetchIdFromStorage(); 5211 5212 window.addEventListener('private-content-loaded', function (event) { 5213 const data = event.detail.data; 5214 if (data && data['athoscommerce-tracking']) { 5215 processShopperId(data['athoscommerce-tracking'].shopper_id); 5216 } 5217 }); 5218 }); 5219</script>
5219<script type="text/javascript" id="athoscommerce_tracking_cart_tracker_state"> 5220(function (window) { 5221 'use strict'; 5222 5223 window.athosMagentoCartTrackerState = window.athosMagentoCartTrackerState || { 5224 clone: function (value) { 5225 try { 5226 return JSON.parse(JSON.stringify(value || {})); 5227 } catch (e) { 5228 return value || {}; 5229 } 5230 }, 5231 5232 toNumber: function (value, fallback) { 5233 var parsed = Number(value); 5234 return Number.isFinite(parsed) ? parsed : fallback; 5235 }, 5236 5237 getProducts: function (snapshot) { 5238 return snapshot && Array.isArray(snapshot.products) ? snapshot.products : []; 5239 }, 5240 5241 normalizeItem: function (item) { 5242 return { 5243 key: String(item.key || ''), 5244 uid: String(item.uid || ''), 5245 parentId: item.parentId === null || item.parentId === undefined ? null : String(item.parentId), 5246 sku: String(item.sku || ''), 5247 qty: this.toNumber(item.qty, 0), 5248 price: this.toNumber(item.price, 0) 5249 }; 5250 }, 5251 5252 normalizeProducts: function (snapshot) { 5253 var self = this; 5254 5255 return self.getProducts(snapshot).map(function (item) { 5256 return self.normalizeItem(item); 5257 }); 5258 }, 5259 5260 aggregateItems: function (items) { 5261 var aggregated = {}; 5262 var self = this; 5263 5264 items.forEach(function (item) { 5265 var key; 5266 5267 if (!item || !item.key) { 5268 return; 5269 } 5270 5271 key = item.key; 5272 5273 if (!aggregated[key]) { 5274 aggregated[key] = { 5275 key: item.key, 5276 uid: item.uid, 5277 parentId: item.parentId, 5278 sku: item.sku, 5279 qty: 0, 5280 price: item.price 5281 }; 5282 } 5283 5284 aggregated[key].qty += self.toNumber(item.qty, 0); 5285 5286 if (!aggregated[key].price && item.price) { 5287 aggregated[key].price = item.price; 5288 } 5289 }); 5290 5291 return aggregated; 5292 }, 5293 5294 aggregatedItemsToArray: function (index) { 5295 return Object.keys(index).map(function (key) { 5296 return index[key]; 5297 }); 5298 }, 5299 5300 reduceForBeacon: function (items) { 5301 return items.map(function (item) { 5302 return { 5303 uid: item.uid, 5304 parentId: item.parentId, 5305 sku: item.sku, 5306 qty: item.qty, 5307 price: item.price 5308 }; 5309 }); 5310 }, 5311 5312 buildPayload: function (results, cartItems) { 5313 return { 5314 data: { 5315 results: this.reduceForBeacon(results), 5316 cart: this.reduceForBeacon(cartItems) 5317 } 5318 }; 5319 }, 5320 5321 dispatchEvent: function (action, payload) { 5322 window.dispatchEvent(new CustomEvent('athos:magento:cart:' + action, { 5323 detail: payload 5324 })); 5325 5326 if ( 5327 window.athos && 5328 window.athos.tracker && 5329 window.athos.tracker.events && 5330 window.athos.tracker.events.cart && 5331 typeof window.athos.tracker.events.cart[action] === 'function' 5332 ) { 5333 window.athos.tracker.events.cart[action](payload); 5334 } 5335 }, 5336 5337 areItemsEqual: function (previousSnapshotData, currentSnapshotData) { 5338 var previousAggregated = this.aggregateItems(this.normalizeProducts(previousSnapshotData)); 5339 var currentAggregated = this.aggregateItems(this.normalizeProducts(currentSnapshotData)); 5340 5341 return JSON.stringify(previousAggregated) === JSON.stringify(currentAggregated); 5342 }, 5343 5344 hasStoreChanged: function (magentoCartObservable) { 5345 var cart; 5346 5347 if (!window.checkout || typeof magentoCartObservable !== 'function') { 5348 return false;
5349 } 5350 5351 cart = magentoCartObservable(); 5352 5353 return ( 5354 cart.website_id !== undefined && 5355 window.checkout.websiteId !== undefined && 5356 String(cart.website_id) !== String(window.checkout.websiteId) 5357 ) || ( 5358 cart.storeId !== undefined && 5359 window.checkout.storeId !== undefined && 5360 String(cart.storeId) !== String(window.checkout.storeId) 5361 ); 5362 }, 5363 5364 diffSnapshots: function (previousSnapshotData, currentSnapshotData) { 5365 var previousIndex = this.aggregateItems(this.normalizeProducts(previousSnapshotData)); 5366 var currentIndex = this.aggregateItems(this.normalizeProducts(currentSnapshotData)); 5367 var currentCartItems = this.aggregatedItemsToArray(currentIndex); 5368 var addedResults = []; 5369 var removedResults = []; 5370 5371 Object.keys(currentIndex).forEach(function (key) { 5372 var currentItem = currentIndex[key]; 5373 var previousItem = previousIndex[key]; 5374 5375 if (!previousItem) { 5376 addedResults.push(currentItem); 5377 return; 5378 } 5379 5380 if (currentItem.qty > previousItem.qty) { 5381 addedResults.push({ 5382 key: currentItem.key, 5383 uid: currentItem.uid, 5384 parentId: currentItem.parentId, 5385 sku: currentItem.sku, 5386 qty: currentItem.qty - previousItem.qty, 5387 price: currentItem.price 5388 }); 5389 } 5390 }); 5391 5392 Object.keys(previousIndex).forEach(function (key) { 5393 var previousItem = previousIndex[key]; 5394 var currentItem = currentIndex[key]; 5395 5396 if (!currentItem) { 5397 removedResults.push(previousItem); 5398 return; 5399 } 5400 5401 if (currentItem.qty < previousItem.qty) { 5402 removedResults.push({ 5403 key: previousItem.key, 5404 uid: previousItem.uid, 5405 parentId: previousItem.parentId, 5406 sku: previousItem.sku, 5407 qty: previousItem.qty - currentItem.qty, 5408 price: previousItem.price 5409 }); 5410 } 5411 }); 5412 5413 if (addedResults.length > 0) { 5414 this.dispatchEvent('add', this.buildPayload(addedResults, currentCartItems)); 5415 } 5416 5417 if (removedResults.length > 0) { 5418 this.dispatchEvent('remove', this.buildPayload(removedResults, currentCartItems)); 5419 } 5420 } 5421 }; 5422}(window)); 5423</script>
5423<script type="text/x-magento-init"> 5424 { 5425 "*": { 5426 "AthosCommerce_Feed/js/athos-pagemeta-cart-tracker": {} 5427 } 5428 } 5429 </script>
5429<script type="text/x-magento-init"> 5430 {"*":{"Amasty_PromoBanners\/js\/loader":{"bannersData":{"sections":[],"content":[],"injectorParams":{"containerSelector":".products-grid .product-items:not(.amasty-banner-items)","itemSelector":".products-grid .product-items:not(.amasty-banner-items) > .product-item","banners":[]},"banners":[],"injectorSectionId":14},"requestUrl":"https:\/\/www.lillianvernon.com\/amasty_banners\/data\/getBannersData\/","categoryId":null,"productId":null,"pagePositions":[10]}}}</script>
5430<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","url":"https:\/\/www.lillianvernon.com\/","name":"Lillian Vernon","potentialAction":{"@type":"SearchAction","target":"https:\/\/www.lillianvernon.com\/catalogsearch\/result\/?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
5430<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/www.lillianvernon.com\/","name":"Lillian Vernon Corporation"}</script>
5430<script type="text/x-magento-init"> 5431 { 5432 "*": { 5433 "Regent_ScriptLoader/js/default": { 5434 "delay": 20000 } 5435 } 5436 } 5437 </script>
5437<script type="text/x-magento-init"> 5438 { 5439 "*": { 5440 "Regent_Promotion/js/view/promo-param-detector": { 5441 "disabled": "", 5442 "paramName": "code", 5443 "applyUrl": "https://www.lillianvernon.com/promotion/cart/apply/" 5444 } 5445 } 5446 } 5447</script>
5447<script type="text/x-magento-init">{"*": 5448 {"Magento_Persistent/js/remember-me-config": { 5449 "config": {"persistenceConfig":{"isRememberMeCheckboxVisible":true,"isRememberMeCheckboxChecked":true}} 5450 }}}</script>
5450<noscript id="deferred-css"><link rel="stylesheet" type="text/css" media="print" href="https://static.lillianvernon.com/version1788891929/frontend/Regent/cmg_lv/en_US/css/print.min.css" /><link rel="stylesheet" type="text/css" media="all" href="https://static.lillianvernon.com/version1788891929/_cache/merged/fonts_6caf138cf544618cf00353ee28e2b64f.min.css" /></noscript>
5450<script> window.addEventListener('load', () => { 5451 const addStylesNode = document.getElementById("deferred-css"); 5452 const replacement = document.createElement("div"); 5453 replacement.innerHTML = addStylesNode.textContent; 5454 document.body.appendChild(replacement); 5455 addStylesNode.parentElement.removeChild(addStylesNode); 5456 });</script>
5456</body> 5457</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.