PageSourceSearch

https://www.nisartmacka.com/cart

html nisartmacka.com collected 2026-10-06 13:13:42 UTC 572,531 bytes, 12,379 lines download raw bytes

1<!doctype html>
2<html class="no-js" lang="en-US" >
3  <head>
4    <meta charset="utf-8">
5    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">
7    <title>nisartmacka</title>
8    <meta name="keywords" content="nisartmacka">
9    <meta name="description" content="nisartmacka">
10    <meta http-equiv="x-dns-prefetch-control" content="on">
11    <link rel="dns-prefetch" href="//static.staticdj.com/">
12    <link rel="preconnect" href="//static.staticdj.com/">
13    <link rel="dns-prefetch" href="//img.staticdj.com/">
14    <link rel="preconnect" href="//img.staticdj.com/">
15    <link rel="canonical" href="https://www.nisartmacka.com/cart">
16    <link rel="shortcut icon" href="https://img.staticdj.com/117942214d78bef5d082b9a525782106.JPG">
17    <meta name="theme-color" content="">
18    <meta name="format-detection" content="telephone=no, email=no">
19    <link href="https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2" as="font" type="font/woff2" crossorigin="anonymous" rel="preload">
20    <link href="https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2" as="font" type="font/woff2" crossorigin="anonymous" rel="preload">
21    <meta property="og:site_name" content="nisartmacka">
22<meta property="og:url" content="https://www.nisartmacka.com/cart">
23<meta property="og:title" content="nisartmacka">
24<meta property="og:type" content="website">
25<meta property="og:description" content="nisartmacka">
26<meta name="twitter:site" content="@">
27<meta name="twitter:card" content="summary_large_image">
28<meta name="twitter:title" content="nisartmacka">
29<meta name="twitter:description" content="nisartmacka">
30<style spz-runtime>
31/* runtime-start */[hidden]{display:none!important}.i-spzhtml-element{display:inline-block}[layout=nodisplay]:not(.i-spzhtml-element){display:none!important}.i-spzhtml-layout-fixed,[layout=fixed][width][height]:not(.i-spzhtml-layout-fixed){display:inline-block;position:relative}.i-spzhtml-layout-responsive,[layout=responsive][width][height]:not(.i-spzhtml-layout-responsive),[width][height][heights]:not([layout]):not(.i-spzhtml-layout-responsive),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-layout-responsive){display:block;position:relative}.i-spzhtml-layout-intrinsic,[layout=intrinsic][width][height]:not(.i-spzhtml-layout-intrinsic){display:inline-block;max-width:100%;position:relative}[layout=intrinsic][width][height].i-spzhtml-layout-intrinsic .i-spzhtml-fill-content{min-width:auto;width:auto}.i-spzhtml-layout-intrinsic .i-spzhtml-sizer{max-width:100%}.i-spzhtml-intrinsic-sizer{display:block!important;max-width:100%}.i-spzhtml-layout-container,.i-spzhtml-layout-fixed-height,.i-spzhtml-layout-logic,[layout=container],[layout=fixed-height][height]:not(.i-spzhtml-layout-fixed-height),[layout=logic]{display:block;position:relative}.i-spzhtml-layout-fill,.i-spzhtml-layout-fill.i-spzhtml-notbuilt,[layout=fill]:not(.i-spzhtml-layout-fill){bottom:0;display:block;left:0;overflow:hidden!important;position:absolute;right:0;top:0}.i-spzhtml-layout-flex-item,[layout=flex-item]:not(.i-spzhtml-layout-flex-item){display:block;flex:1 1 auto;position:relative}.i-spzhtml-layout-size-defined{overflow:hidden!important}.i-spzhtml-layout-awaiting-size{bottom:auto!important;position:absolute!important;top:auto!important}i-spzhtml-sizer{display:block!important}@supports (aspect-ratio:1/1){i-spzhtml-sizer.i-spzhtml-disable-ar{display:none!important}}.i-spzhtml-fill-content{display:block;height:0;margin:auto;max-height:100%;max-width:100%;min-height:100%;min-width:100%;width:0}.i-spzhtml-layout-size-defined .i-spzhtml-fill-content{bottom:0;left:0;position:absolute;right:0;top:0}.i-spzhtml-replaced-content{border:none!important;padding:0!important}.i-spzhtml-unresolved{overflow:hidden!important;position:relative}.i-spzhtml-notbuilt,[layout]:not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]){color:transparent!important;overflow:hidden!important;position:relative}.i-spzhtml-notbuilt:not(.i-spzhtml-layout-container):not([i-spzhtml-ssr])>*,[layout]:not([layout=container]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*,[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*,[width][height][sizes]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*{display:none}[layout]:not([layout=container]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[layout]:not([layout=container]):not([manual]):not([i-spzhtml-ssr]).i-spzhtml-notbuilt,[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]){color:transparent!important;line-height:0!important}spz-img:not(.i-spzhtml-element)[i-spzhtml-ssr]>img.i-spzhtml-fill-content{display:block}.i-spzhtml-ghost{visibility:hidden!important}.i-spzhtml-element>[placeholder],[layout]:not(.i-spzhtml-element)>[placeholder],[width][height][heights]:not([layout]):not(.i-spzhtml-element)>[placeholder],[width][height][sizes]:not([layout]):not(.i-spzhtml-element)>[placeholder]{display:block;line-height:normal}.i-spzhtml-element>[placeholder].hidden,.i-spzhtml-element>[placeholder].spz-hidden{visibility:hidden}.i-spzhtml-layout-container>[placeholder].hidden,.i-spzhtml-layout-container>[placeholder].spz-hidden{display:none}.i-spzhtml-layout-size-defined>[placeholder]{bottom:0!important;left:0!important;position:absolute!important;right:0!important;top:0!important;z-index:1}spz-img.i-spzhtml-ssr:not(.i-spzhtml-element)>[placeholder]{z-index:auto}.i-spzhtml-notbuilt>[placeholder]{display:block!important}template{display:none!important}[visible-when-invalid]:not(.visible),form [submit-error],form [submit-success],form [submitting]{display:none}[layout=intrinsic][i-spzhtml-unheight-layout] img,[layout=responsive][i-spzhtml-unheight-layout] img{height:auto!important;position:relative!important;width:100%!important}html{overflow-x:hidden!important}html,html body{height:auto!important}html body{margin:0!important}body{text-size-adjust:100%}html.i-spzhtml-doc{touch-action:pan-y pinch-zoom}html.i-spzhtml-doc>body{overflow:visible!important;position:relative!important}.i-spzhtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}.i-spzhtml-carousel-scroll-disabled{touch-action:none;touch-action:pan-y}spz-list [role=loading]:not([pagination]),spz-list [role=loading]:not([scroll]),spz-list [role=slot]:not(.i-spzhtml-list-slot),spz-pagination>[role=arrow]{display:none}
31spz-carousel{display:flex!important}ljs-img[layout=intrinsic][auto-fit]:not([width][height]),spz-img[layout=intrinsic][auto-fit]:not([width][height]),spz-img[layout=responsive][auto-fit]{width:100%}spz-accordion>section>:last-child{display:none!important}spz-accordion>section[expanded]>:last-child{display:block!important}spz-menu [spz-menu-root]{display:flex;flex-wrap:nowrap}spz-carousel:not([dom-mounted]) .i-spzhtml-slides-container>:not(.i-spzhtml-slide-item-show),spz-carousel:not([dom-mounted]) [next],spz-carousel:not([dom-mounted]) [pre],spz-carousel:not([dom-mounted]):not([i-spzhtml-ssr])>*{display:none}spz-carousel .i-spzhtml-slides-container{box-sizing:content-box;transform:translate(0);z-index:1}spz-carousel .i-spzhtml-slide-item,spz-carousel .i-spzhtml-slides-container{display:flex;height:100%;position:relative;transition-property:transform;width:100%}spz-carousel .i-spzhtml-slide-item{flex-shrink:0}spz-carousel .i-spzhtml-slide-item>*{overflow:hidden!important;width:100%}spz-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item{display:none;opacity:0}spz-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item-show{display:flex;opacity:1!important}.i-spzhtml-tab-panel:not([active]),spz-menu [spz-menu-submenu]{display:none}spz-menu>*{opacity:0;pointer-events:none}spz-menu[finish]>*{opacity:1!important;pointer-events:auto!important}spz-list[display-in-order] [role=listitem] spz-img img{opacity:0;transition:opacity .5s linear}spz-dropdown{display:none}spz-script{font-size:0}ljs-list [role=loading]:not([pagination]),ljs-list [role=loading]:not([scroll]),ljs-list [role=slot]:not(.i-spzhtml-list-slot),ljs-pagination>[role=arrow]{display:none}ljs-carousel{display:flex!important}ljs-img[layout=responsive][auto-fit]{width:100%}ljs-accordion>section>:last-child{display:none!important}ljs-accordion>section[expanded]>:last-child{display:block!important}[layout=container]:not(.i-spzhtml-built){color:inherit!important}ljs-menu [spz-menu-root]{display:flex;flex-wrap:nowrap}ljs-menu>*{opacity:0;pointer-events:none}ljs-menu[finish]>*{opacity:1!important;pointer-events:auto!important}ljs-list[display-in-order] [role=listitem] ljs-img img{opacity:0;transition:opacity .5s linear}ljs-script{font-size:0}ljs-img:not(.i-spzhtml-element)[i-spzhtml-ssr]>img.i-spzhtml-fill-content{display:block}ljs-img.i-spzhtml-ssr:not(.i-spzhtml-element)>[placeholder]{z-index:auto}ljs-carousel:not([dom-mounted]) .i-spzhtml-slides-container>:not(.i-spzhtml-slide-item-show),ljs-carousel:not([dom-mounted]) [next],ljs-carousel:not([dom-mounted]) [pre],ljs-carousel:not([dom-mounted]):not([i-spzhtml-ssr])>*{display:none}ljs-carousel .i-spzhtml-slides-container{box-sizing:content-box;transform:translate(0);z-index:1}ljs-carousel .i-spzhtml-slide-item,ljs-carousel .i-spzhtml-slides-container{display:flex;height:100%;position:relative;transition-property:transform;width:100%}ljs-carousel .i-spzhtml-slide-item{flex-shrink:0}ljs-carousel .i-spzhtml-slide-item>*{overflow:hidden!important;width:100%}ljs-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item{display:none;opacity:0}ljs-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item-show{display:flex;opacity:1!important}ljs-menu [spz-menu-submenu],ljs-tabs:not([finish]) [role=tabpanel],spz-tabs:not([finish]) [role=tabpanel]{display:none}ljs-text,spz-text{visibility:hidden}ljs-gallery>:not(:first-child),spz-gallery>:not(:first-child){display:none}ljs-gallery.i-spzhtml-built>:not(:first-child),spz-gallery.i-spzhtml-built>:not(:first-child){display:unset}/* runtime-end */
32</style>
33<script type="text/javascript">
34/* env-start */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=8)}({8:function(e,t){window.seahorse_env={"flag_plugin_loader":"","v1_spz_version":"v1.0.87","v1_spz_tag":"v26.4.13","aliyun_scene_id":"1gewqec5"}}});/* env-end */
35</script>
35
36
37<link href="//static.staticdj.com/cuttlefish/v1/spz.min.js" as="script" type="text/javascript" crossorigin="anonymous" rel="preload">
38
39<style>
40  :root {
41    --page-width-base: 1440px;
42    --page-width: var(--page-width-base);
43    --page-spacing: 16px;
44
45    --type-text-font-size: 14px;
46      --type-heading-font-size: 30px;
47      --type-nav-font-size: 16px;
48      --color-general-bg: #FFFFFF;
49      --color-general-heading-text: #202020;
50      --color-general-text: #202020;
51      --color-price-text: #EB391B;
52      --color-product-title-text: #202020;
53      --color-compare-at-price-text: rgba(32,32,32,.6);
54      --color-save-price-text: #EB391B;
55      --color-custom-label-text: #E75D32;
56      --color-custom-label-bg: #FFF9F1;
57      --color-btn-bg: #202020;
58      --color-btn-text: #FFFFFF;
59      --color-label-bg: rgba(198, 156, 109, 1);
60      --color-label-text: #FFFFFF;
61      --color-sold-label-bg: #FFFFFF;
62      --color-sold-label-text: #202020;
63      --color-announcement-bg: #FFFFFF;
64      --color-announcement-text: #000000;
65      --color-cart-dot-bg: rgba(198, 156, 109, 1);
66      --color-cart-dot-text: #FFFFFF;
67      --color-header-bg: rgba(255, 249, 241, 1);
68      --color-header-text: #202020;
69      --color-header-search-bg: rgba(230, 230, 230, 0.4);
70      --color-header-search-text: #202020;
71      --color-header-search-btn-bg: #202020;
72      --color-header-search-btn-text: #FFFFFF;
73      --color-menu-bg: #F8F8F8;
74      --color-menu-item-bg: #FFFFFF;
75      --color-menu-item-text: #202020;
76      --color-actived-menu-item-bg: rgba(198, 156, 109, 1);
77      --color-actived-menu-item-text: #FFFFFF;
78      --color-footer-bg: rgba(40, 40, 40, 1);
79      --color-footer-border: rgba(230, 230, 230, 0.1);
80      --color-footer-text: rgba(255, 255, 255, 1);
81      --color-newsletter-border: #E6E6E6;
82      --color-newsletter-bg: #FFFFFF;
83      --color-newsletter-text: #202020;
84      --color-newsletter-btn-bg: #202020;
85      --color-newsletter-btn-text: #FFFFFF;
86      --color-countdown-bg: rgba(248, 248, 248, 0.8);
87      --color-countdown-time-text: #EA3F36;
88      /* 颜色相关 */
89    --color-body-bg: #FFFFFF;
90    --color-body-bg-80: rgba(255, 255, 255, 0.8);
91    --color-product-title-text: #202020;
92    --color-primary-btn-bg: #202020;
93    --color-primary-btn-bg-10: rgba(32, 32, 32, 0.1);
94    --color-primary-btn-text: #FFFFFF;
95
96    --color-body-text: #202020;
97    --color-body-text-50: rgba(32, 32, 32, 0.5);
98    --color-body-text-60: rgba(32, 32, 32, 0.6);
99    --color-body-text-70: rgba(32, 32, 32, 0.7);
100    --color-body-text-75: rgba(32, 32, 32, 0.75);
101    --color-body-text-80: rgba(32, 32, 32, 0.8);
102    --color-body-text-85: rgba(32, 32, 32, 0.85);
103    --color-body-text-90: rgba(32, 32, 32, 0.9);
104
105    --color-menu-item-text-70: rgba(32, 32, 32, 0.7);
106    --color-menu-item-text-80: rgba(32, 32, 32, 0.8);
107    --color-menu-item-text-90: rgba(32, 32, 32, 0.9);
108    --color-actived-menu-item-bg: rgba(198, 156, 109, 1);
109    --color-actived-menu-item-text: #FFFFFF;
110
111    --color-header-search-text-50: rgba(32, 32, 32, 0.5);
112
113    --color-header-text-70: rgba(32, 32, 32, 0.7);
114
115    /* 边框颜色 */
116    --color-border: #E6E6E6;
117    --color-border-35: rgba(230, 230, 230, 0.35);
118    --color-border-60: rgba(230, 230, 230, 0.6);
119
120    /* 圆角 */
121    --global-border-radius: 2px;
122    --global-small-border-radius: 2px;
123    --global-fixed-border-radius: 2px;
124    --btn-border-radius: 2px;
125    --btn-fixed-border-radius: 2px;
126
127    /* 字体相关 */
128    --font-body-family: Lato, sans-serif;
129    --font-body-style: normal;
130    --font-body-weight: 400;
131
132    --font-heading-family: Lato, sans-serif;
133    --font-heading-style: normal;
134    --font-heading-weight: 400;
135
136    /* 倒计时 */
137    --color-countdown-bg: rgba(248, 248, 248, 0.8);
138    --color-countdown-time-text: #EA3F36;
139
140    /* mask */
141    --color-mask-bg: rgba(0, 0, 0, 0.3);
142
143    /* 提供给插件 */
144    --breakpoint: 960;
145
146    /* z-index */
147    --z-index-dropdown: 1000;
148    --z-index-sticky: 1020;
149    --z-index-fixed: 1030;
150    --z-index-modal-backdrop: 1040;
151    --z-index-modal: 1050;
152    --z-index-popover: 1060;
153    --z-index-tooltip: 1070;
154  }
155
156  @media (min-width: 960px) {
157    :root {
158      --page-spacing: 100px;
159
160      /* 圆角 */
161      --global-border-radius: 2px;
162      --global-small-border-radius: 2px;
163    }
164  }
165
166  .type-text-font-family {
167    font-family: var(--font-body-family);
168    font-style: var(--font-body-style);
169    font-weight: var(--font-body-weight);
170  }
171
172  .type-heading-font-family {
173    font-family: var(--font-heading-family);
174    font-style: var(--font-heading-style);
175    font-weight: var(--font-heading-weight);
176  }
177
178  /* latin-ext */@font-face {  font-family: 'Lato';  font-style: normal;  font-weight: 400;  font-display: swap;
178  src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2) format('woff2');  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face {  font-family: 'Lato';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2) format('woff2');  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
179  /* latin-ext */@font-face {  font-family: 'Lato';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2) format('woff2');  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face {  font-family: 'Lato';  font-style: normal;  font-weight: 400;  font-display: swap;  src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2) format('woff2');  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
180</style>
181    <style>
182  html {
183    -ms-text-size-adjust: 100%;
184    -webkit-text-size-adjust: 100%;
185    -webkit-font-smoothing: antialiased;
186    -moz-osx-font-smoothing: grayscale;
187    -webkit-tap-highlight-color: transparent;
188  }
189
190  body {
191    padding-bottom: constant(safe-area-inset-bottom);
192    padding-bottom: env(safe-area-inset-bottom);
193    -webkit-tap-highlight-color: transparent;
194  }
195
196  *,
197  :after,
198  :before {
199    box-sizing: border-box;
200  }
201
202  *:focus {
203    outline: none;
204  }
205
206  /* Chrome, Safari, Edge, Opera */
207  input::-webkit-outer-spin-button,
208  input::-webkit-inner-spin-button {
209    -webkit-appearance: none;
210    margin: 0;
211  }
212
213  /* Firefox */
214  input[type='number'] {
215    -moz-appearance: textfield;
216  }
217
218  input[type='text'],
219  input[type='search'],
220  input[type='email'],
221  input[type='password'],
222  input:not([type]),
223  textarea {
224    appearance: none;
225    -webkit-appearance: none;
226  }
227
228  input,
229  textarea,
230  button,
231  select {
232    font-family: inherit;
233    font-style: inherit;
234    font-weight: inherit;
235    font-size: inherit;
236    color: var(--color-body-text);
237  }
238
239  input[type='button'],
240  button,
241  select,
242  label {
243    cursor: pointer;
244  }
245
246  input[type='search']::-webkit-search-cancel-button {
247    display: none;
248  }
249
250  /* theme base class */
251  html body.nova {
252    color: var(--color-body-text);
253    font-size: var(--type-text-font-size);
254    background-color: var(--color-body-bg);
255  }
256
257  body > .page_container{
258    min-height: 100vh;
259    display: flex;
260    flex-direction: column;
261  }
262  body > .page_container > .main-content{
263    margin-bottom: auto;
264  }
265
266  .page-container {
267    max-width: var(--page-width);
268    padding: 0 var(--page-spacing);
269    margin: 0 auto;
270  }
271
272  @media (max-width: 959.98px) {
273    .md\:page-container {
274      max-width: var(--page-width);
275      padding: 0 var(--page-spacing);
276      margin: 0 auto;
277    }
278  }
279
280  @media (min-width: 960px) {
281    .lg\:page-container {
282      max-width: var(--page-width);
283      padding: 0 var(--page-spacing);
284      margin: 0 auto;
285    }
286  }
287
288  .clear {
289    margin: 0;
290    padding: 0;
291    border: 0;
292    outline: none;
293    list-style: none;
294    background-color: transparent;
295  }
296
297  [spz-if="false"],
298  [hidden] {
299    display: none !important;
300  }
301
302  /* title default style */
303
304  .title-font {
305    font-size: var(--type-heading-font-size);
306    color: var(--color-general-heading-text);
307  }
308
309  @media (max-width: 959.98px) {
310    .title-font {
311      font-size: calc(var(--type-heading-font-size) * .8);
312    }
313  }
314
315  .title-color{
316    color: var(--color-general-heading-text);
317  }
318  .product-title-color {
319    color: var(--color-product-title-text);
320  }
321  .text-color-8{
322    color: var(--color-body-text-80);
323  }
324
325  /* Border Radius */
326  .rounded-global {
327    border-radius: var(--global-border-radius);
328  }
329
330  .rounded-global-small {
331    border-radius: var(--global-small-border-radius);
332  }
333
334  .rounded-global-fixed {
335    border-radius: var(--global-fixed-border-radius);
336  }
337
338  .rounded-btn {
339    border-radius: var(--btn-border-radius);
340  }
341
342  .rounded-btn-fixed {
343    border-radius: var(--btn-fixed-border-radius);
344  }
345  .rounded-\[1px\] {
346    border-radius: 1px;
347  }
348
349  /* Button */
350  .button-primary {
351    font-weight: bold;
352    text-align: center;
353    border: 1px solid transparent;
354    color: var(--color-primary-btn-text);
355    border-radius: var(--btn-border-radius);
356    background-color: var(--color-primary-btn-bg);
357    transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
358    cursor: pointer;
359  }
360
361  .button-secondary {
362    color: var(--color-body-text);
363    background-color: transparent;
364    border: 1px solid var(--color-border);
365    border-radius: var(--btn-border-radius);
366    transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);;
367    cursor: pointer;
368  }
369
370  /* Select */
371  .secondary-select {
372    cursor: pointer;
373    -webkit-appearance: none;
374    -moz-appearance: none;
375    appearance: none;
376    border-width: 1px;
377    border-style: solid;
378    border-color: rgba(230, 230, 230, 1);
379    background-color: transparent;
380    color: var(--color-body-text);
381  }
382
383  @media (min-width: 960px) {
384    .button-primary:hover {
385      background-color: var(--color-cart-dot-bg);
386    }
387
388    .button-secondary:hover {
389      color: var(--color-primary-btn-text);
390      border-color: var(--color-primary-btn-bg);
391      background-color: var(--color-primary-btn-bg);
392    }
393  }
394
395  /* line-clamp-* */
396  .line-clamp-1 {
397    overflow: hidden;
398    text-overflow: ellipsis;
399    white-space: nowrap;
400  }
401
402  .line-clamp-2 {
403    overflow: hidden;
404    display: -webkit-box;
405    -webkit-line-clamp: 2;
406    -webkit-box-orient: vertical;
407    word-break: break-word;
408  }
409
410  .hide-scrollbar {
411    -ms-overflow-style: none;
412    scrollbar-width: none;
413  }
414
415  .hide-scrollbar::-webkit-scrollbar,
416  .hide-scrollbar ::-webkit-scrollbar {
417    display: none;
418  }
419
420  .break-words {
421    overflow-wrap: break-word;
422    word-break: break-word;
423  }
424  /* mce */
425  .mce-content p:first-child {
426    margin-top: 0;
427  }
428  .mce-content p:last-child {
429    margin-bottom: 0;
430  }
431  .mce-content img + img,
432  .mce-content spz-img + spz-img {
433    margin-top: 30px;
434  }
435  .mce-content spz-img {
436    max-width: 100% !important;
437  }
438  .mce-content table {
439    max-width: 100%;
440    border-collapse: collapse;
441  }
442  .mce-content table td,
443  .mce-content table th {
444    padding: 8px;
445    border: 1px solid #e6e6e6;
446  }
447  .mce-content iframe {
448    max-width: 100%;
449  }
450  .mce-content blockquote {
451    margin: 1em 40px;
452  }
453  .mce-content a {
454    color: inherit;
455    word-break: break-all;
456  }
457
458  /* loading */
459  @keyframes spinning {
460    from {
461      -webkit-transform: rotate(0deg);
462      transform: rotate(0deg);
463    }
464
465    to {
466      -webkit-transform: rotate(1turn);
467      transform: rotate(1turn);
468    }
469  }
470
471  spz-loading {
472    background: rgba(0, 0, 0, 0.3);
473  }
474
475  @keyframes rotate {
476    0% {
477      -webkit-transform: rotate(0deg);
478      transform: rotate(0deg)
479    }
480    to {
481      -webkit-transform: rotate(1turn);
482      transform: rotate(1turn)
483    }
484  }
485
486  spz-loading .loading-inner {
487    border-radius: 50%;
488    border-top: 3px solid transparent;
489    border-left: 3px solid transparent;
490    border-right: 3px solid transparent;
491    width: 26px;
492    height: 26px;
493    border: 3px solid #fff;
494    -webkit-animation: rotate .8s ease infinite;
495    animation: rotate .8s ease infinite;
496    border-bottom-color: #fff;
497    border-top-color: transparent;
498    border-left-color: transparent;
499    border-right-color: transparent;
500  }
501
502  .loading{
503    --loading-show: flex !important;
504    --loading-hide: none !important;
505  }
506
507  .loading[show]{
508    display: var(--loading-show);
509  }
510
511  .loading[hide]{
512    display: var(--loading-hide);
513  }
514
515  .loading[has-full-mask]{
516    position: fixed;
517    top: 0;
518    bottom: 0;
519    right: 0;
520    left: 0;
521    background: var(--color-mask-bg);
522    z-index: var(--z-index-modal-backdrop);
523  }
524
525  .loading-bounce {
526    width: 26px;
527    height: 26px;
528    border-radius: 50%;
529    border: 3px solid transparent;
530    border-bottom-color: #fff;
531    animation: spinning .8s ease infinite;
532    -webkit-animation: spinning .8s ease infinite;
533  }
534
535   /* spz-carousel button */
536  spz-carousel .spz-carousel-button {
537    display: flex;
538    align-items: center;
539    justify-content: center;
540    width: 44px;
541    height: 44px;
542    border-radius: 100%;
543    box-shadow: 4px 4px 16px rgba(18, 27, 23, 0.04);
544    background-color: rgba(255, 255, 255, 1);
545    cursor: pointer;
546    opacity: 0 !important;
547    transition: opacity 300ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
548  }
549
550  @media (min-width: 960px) {
551    spz-carousel:hover .spz-carousel-button {
552      opacity: 1 !important;
553    }
554
555    .lg\:line-clamp-3 {
556      overflow: hidden;
557      display: -webkit-box;
558      -webkit-line-clamp: 3;
559      -webkit-box-orient: vertical;
560      word-break: break-word;
561    }
562  }
563
564  spz-carousel .spz-carousel-button-prev > svg {
565    transform: rotate(-90deg);
566  }
567
568  spz-carousel .spz-carousel-button-next > svg {
569    transform: rotate(90deg);
570  }
571
572  .button-primary[loading],
573  .button-secondary[loading] {
574    pointer-events: none;
575  }
576
577  .button-primary[loading] [role="content"],
578  .button-secondary[loading] [role="content"],
579  .button-primary:not([loading]) .loading,
580  .button-secondary:not([loading]) .loading {
581    opacity: 0;
582  }
583
584  .button-primary[loading] .loading,
585  .button-secondary[loading] .loading {
586    opacity: 1;
587  }
588
589  /* discount style */
590  .discount_gift_content {
591    display: inline-flex;
592    align-items: center;
593    padding: 4px;
594    color: #EB391B;
595    background-color: rgba(235, 57, 27, 0.1);
596    border-radius: 2px;
597  }
598  .discount_gift_content .discount__gift_lan {
599    margin-left: 2px;
600  }
601
602  spz-carousel > .i-spzhtml-slides-container {
603    width: 100%;
604  }
605
606  spz-sidebar ~ .i-spzhtml-sidebar-mask {
607    background-color: var(--color-body-text-50);
608  }
609</style>
610
611<style>
612  .page_container {
613    padding-top: 0px;
614    padding-right: 0px;
615    padding-bottom: 0px;
616    padding-left: 0px;
617  }
618
619  @media (min-width: 960px) {
620    .page_container {
621      padding-top: 0px;
622      padding-right: 0px;
623      padding-bottom: 0px;
624      padding-left: 0px;
625    }
626  }
627</style>
628<style>
629  /* position, display, width, height */
630  .uppercase { text-transform: uppercase; }
631  .\!static { position: static; }
632  .relative { position: relative; }
633  .absolute { position: absolute; }
634  .sticky { position: sticky; }
635  /* top left right bottom */
636  .top-0 { top: 0; }
637  .top-1\/2 { top: 50%; }
638  .bottom-0 { bottom: 0; }
639  .bottom-3 { bottom: 12px;}
640  .bottom-5 { bottom: 20px; }
641  .-bottom-5 { bottom: -20px }
642  .inset-0 { top: 0; left: 0; right: 0; bottom: 0; }
643  .inset-x-\[-22px\] { left: -22px; right: -22px; }
644  .-inset-y-5 { top: -20px; bottom: -20px; }
645
646  .block { display: block; }
647  .inline-block { display: inline-block; }
648  .inline-flex { display: inline-flex; }
649  .flex { display: flex; }
650  .flex-1 { flex: 1; }
651  .flex-col { flex-direction: column; }
652  .items-end { align-items: flex-end; }
653  .items-center { align-items: center; }
654  .self-center { align-self: center; }
655  .items-start { align-items: flex-start; }
656  .items-stretch { align-items: stretch; }
657  .justify-end { justify-content: flex-end; }
658  .justify-center { justify-content: center; }
659  .justify-between { justify-content: space-between; }
660  .flex-center{ display: flex; align-items: center; justify-content: center; }
661  .flex-grow { flex-grow: 1; }
662  .flex-shrink-0 { flex-shrink: 0; }
663  .flex-wrap { flex-wrap: wrap; }
664  .flex-1 { flex: 1; }
665  .flex-row-reverse	{ flex-direction: row-reverse; }
666  .hidden { display: none; }
667  .\!hidden { display: none !important; }
668  .empty-hidden:empty{ display: none; }
669
670  .max-w-full { max-width: 100%; }
671  .max-w-\[300px\] { max-width: 300px; }
672  .min-w-\[0px\] { min-width: 0px; }
673
674  .w-full { width: 100%; }
675  .w-7 { width: 28px; }
676  .w-10 { width: 40px; }
677  .w-11 { width: 44px; }
678  .h-full { height: 100%; }
679  .h-11 { width: 44px; }
680  .h-14 { height: 56px;}
681
682
683  /* margin, padding */
684  .m-0 { margin: 0; }
685  .-mt-3 { margin-top: -12px; }
686  .mt-0\.5 { margin-top: 2px; }
687  .mt-0 { margin-top: 0; }
688  .mt-1 { margin-top: 4px; }
689  .mt-1\.5 { margin-top: 6px; }
690  .mt-2 { margin-top: 8px; }
691  .mt-3 { margin-top: 12px; }
692  .mt-4 { margin-top: 16px; }
693  .mt-5 { margin-top: 20px; }
694  .mt-6 { margin-top: 24px; }
695  .mt-7 { margin-top: 28px; }
696  .mt-8 { margin-top: 32px; }
697  .mt-9 { margin-top: 36px; }
698  .mt-10 { margin-top: 40px; }
699
700  .mb-1 { margin-bottom: 4px; }
701  .mb-2 { margin-bottom: 8px; }
702  .mb-3 { margin-bottom: 12px; }
703  .mb-4 { margin-bottom: 16px; }
704  .mb-5 { margin-bottom: 20px; }
705  .mb-6 { margin-bottom: 24px; }
706  .mb-8 { margin-bottom: 32px; }
707  .mx-auto { margin-left: auto; margin-right: auto; }
708  .mx-0 { margin-left: 0; margin-right: 0; }
709  .mx-5 { margin-left: 20px; margin-right: 20px; }
710  .my-1 { margin-top: 4px; margin-bottom: 4px; }
711  .my-6 { margin-top: 24px; margin-bottom: 24px; }
712  .my-10 { margin-top: 40px; margin-bottom: 40px; }
713  .my-14 { margin-top: 56px; margin-bottom: 56px; }
714
715  .p-0 { padding: 0; }
716  .p-2 { padding: 8px; }
717  .p-3 { padding: 12px; }
718  .p-4 { padding: 16px; }
719  .p-6 { padding: 24px; }
720  .p-8 { padding: 32px; }
721  .p-\[15px\] { padding: 15px; }
722  .px-2 { padding-left: 8px; padding-right: 8px; }
723  .px-3 { padding-left: 12px; padding-right: 12px; }
724  .px-4 { padding-left: 16px; padding-right: 16px; }
725  .px-5 { padding-left: 20px; padding-right: 20px; }
726  .px-6 { padding-left: 24px; padding-right: 24px; }
727  .px-10 { padding-left: 40px; padding-right: 40px; }
728  .px-\[18px\] { padding-left: 18px; padding-right: 18px; }
729  .px-\[22px\] { padding-left: 22px; padding-right: 22px; }
730  .py-\[10px\] { padding-top: 10px; padding-bottom: 10px; }
731
732  .py-0 { padding-top: 0; padding-bottom: 0; }
733  .py-1 { padding-top: 4px; padding-bottom: 4px; }
734  .py-2 { padding-top: 8px; padding-bottom: 8px; }
735  .py-3 { padding-top: 12px; padding-bottom: 12px; }
736  .py-4 { padding-top: 16px; padding-bottom: 16px; }
737  .py-5 { padding-top: 20px; padding-bottom: 20px; }
738  .py-6 { padding-top: 24px; padding-bottom: 24px; }
739  .py-8 { padding-top: 32px; padding-bottom: 32px; }
740  .py-12 { padding-top: 48px; padding-bottom: 48px; }
741  .pt-2 { padding-top: 8px; }
742  .pt-3 { padding-top: 12px; }
743  .pt-4 { padding-top: 16px; }
744  .pt-5 { padding-top: 20px; }
745  .pt-6 { padding-top: 24px; }
746  .pt-10 { padding-top: 40px; }
747  .pt-12 { padding-top: 48px; }
748  .pb-1 { padding-bottom: 4px; }
749  .pb-2 { padding-bottom: 8px; }
750  .pb-3 { padding-bottom: 12px; }
751  .pb-4 { padding-bottom: 16px; }
752  .pb-8 { padding-bottom: 32px; }
753  .pb-full { padding-bottom: 100%; }
754
755  /* Typography */
756  .body-minus-2 { font-size: calc(var(--type-text-font-size) - 2px); }
757  .body-minus-1 { font-size: calc(var(--type-text-font-size) - 1px); }
758  .body-base { font-size: var(--type-text-font-size); }
759  .body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); }
760  .body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); }
761  .body-plus-3 { font-size: calc(var(--type-text-font-size) + 3px); }
762  .body-plus-4 { font-size: calc(var(--type-text-font-size) + 4px); }
763  .body-plus-6 { font-size: calc(var(--type-text-font-size) + 6px); }
764  .text-2xl { font-size: 24px; line-height: 28px; }
765  .text-xs { font-size: 12px; line-height: 16px; }
766  .text-sm { font-size: 14px; line-height: 20px; }
767  .text-base { font-size: 16px; line-height: 24px; }
768  .text-lg { font-size: 18px; line-height: 28px; }
769  .text-0 { font-size: 0; }
770  .text-5 { font-size: 20px; }
771  .text-6 { font-size: 24px; }
772  .text-8 { font-size: 32px; }
773
774  .text-inherit { color: inherit; }
775  .text-center { text-align: center; }
776  .text-current{ color:currentColor }
777  .text-btn-bg { color: var(--color-primary-btn-bg); }
778
779  .text-white { color: rgba(255,255,255,1); }
780  .text-compare-at-price-color { color:var(--color-compare-at-price-text); }
781  .bg-btn-text-color { background-color: var(--color-primary-btn-text); }
782
783  .font-normal { font-weight: 400; }
784  .font-medium { font-weight: 500; }
785  .font-semibold { font-weight: 600; }
786  .font-bold { font-weight: 700; }
787
788  .leading-none { line-height: 1; }
789  .leading-1\.1 { line-height: 1.1; }
790  .leading-1\.15 { line-height: 1.15; }
791  .leading-1\.2 { line-height: 1.2; }
792  .leading-1\.25 { line-height: 1.25; }
793  .leading-1\.3 { line-height: 1.3; }
794  .leading-1\.4 { line-height: 1.4; }
795  .leading-1\.5 { line-height: 1.5; }
796  .leading-1\.7 { line-height: 1.7; }
797
798  .break-all { word-break: break-all; }
799
800  .whitespace-nowrap { white-space: nowrap; }
801
802  .overflow-hidden { overflow: hidden; }
803  .overflow-x-hidden { overflow-x: hidden; }
804  .overflow-x-auto { overflow-x: auto; }
805  .overflow-y-hidden { overflow-y: hidden; }
806  .overflow-y-auto { overflow-y: auto; }
807
808  .underline { text-decoration: underline; }
809  .no-underline { text-decoration-line: none; }
810  .appearance-none {
811    -webkit-appearance: none;
812    -moz-appearance: none;
813    appearance: none;
814  }
815
816  /* Color */
817  .color-body { color: var(--color-body-text); }
818  .color-body-60 { color: var(--color-body-text-60); }
819  .color-body-70 { color: var(--color-body-text-70); }
820  .color-heading { color: var(--color-general-heading-text); }
821  .color-price { color: var(--color-price-text); }
822  .color-save-price { color: var(--color-save-price-text); }
823  .color-compare-price { color: var(--color-compare-at-price-text); }
824  .color-text-default { color: #9F9F9F; }
825  .color-custom-label-text {color: var(--color-custom-label-text);}
826
827  /* Background */
828  .bg-custom-label {background-color: var(--color-custom-label-bg);}
829  .bg-color-body {background-color: var(--color-body-bg);}
830  .color-body-text { color: var(--color-body-text); }
831
832  /* Border Radius */
833  .rounded-sm { border-radius: 2px; }
834  .rounded { border-radius: 4px; }
835  .rounded-full { border-radius: 9999px; }
836
837  /* Border */
838  .border-none { border-style: none; }
839  .border { border: 1px solid var(--color-border); }
840  .border-t { border-top: 1px solid var(--color-border); }
841  .border-b { border-bottom: 1px solid var(--color-border); }
842  .border-solid { border-style: solid; }
843  .\!border-none { border-style: none !important; }
844  .border-t { border-top-width: 1px; }
845  .border-0 { border-width: 0; }
846  .border-t-0 { border-top-width: 0;}
847  .border-\[\#e6e6e6\] { border-color: rgba(230,230,230,1); }
848  .placeholder-svg {
849    position: relative;
850  }
851
852  .placeholder-svg > svg {
853    width: 100%;
854    height: 100%;
855    top: 0;
856    right: 0;
857    bottom: 0;
858    left: 0;
859    fill: #c0c0c0;
860    background-color: #eee;
861  }
862
863  /* z-index */
864  .z-1 { z-index: 1; }
865  .z-10 { z-index: 10; }
866  .z-20 { z-index: 20; }
867  .z-50 { z-index: 50; }
868  .-z-1 { z-index: -1; }
869
870  /* .z-dropdown { z-index: 1000; } */
871
872  /* Object */
873  .object-contain { -o-object-fit: contain; object-fit: contain; }
874  .object-cover { -o-object-fit: cover; object-fit: cover; }
875
876  /* opacity */
877  .opacity-0 { opacity: 0; }
878  .opacity-\[18\%\] { opacity: 18%; }
879  .opacity-50 { opacity: .5; }
880  .opacity-60 { opacity: .6; }
881  .opacity-70 { opacity: .7; }
882  .opacity-75{ opacity: .75; }
883
884  .group-hover\:opacity-100 { opacity: 1; }
885
886  /* text decoration */
887  .line-through { text-decoration: line-through; }
888
889  /* Other */
890  .cursor-pointer { cursor: pointer; }
891  .pointer-events-none { pointer-events: none; }
892  .pointer-events-auto { pointer-events: auto; }
893
894  /* svg */
895  .fill-svg { fill: silver; }
896  .bg-svg { background-color: rgba(238, 238, 238, 1); }
897  .bg-black { background-color: rgba(0,0,0,1); }
898  .bg-white { background-color: rgba(255,255,255,1); }
899  /* grid */
900  .grid { display: grid; }
901  .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
902  .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
903  .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
904  .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
905  .grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
906  .grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
907  .grid-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }
908  .grid-cols-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
909  .grid-cols-9 { grid-template-columns: repeat(9, minmax(0, 1fr)); }
910  .grid-cols-10 { grid-template-columns: repeat(10, minmax(0, 1fr)); }
911
912  .gap-3 { gap: 12px; }
913  .gap-4 { gap: 16px; }
914  .gap-x-4 { column-gap: 16px; }
915  .gap-x-6 { column-gap: 24px; }
916  .gap-x-10 { column-gap: 40px; }
917  .gap-y-4 { row-gap: 16px; }
918  .gap-y-5 { row-gap: 20px; }
919  .gap-y-6 { row-gap: 24px; }
920  .gap-y-11 { row-gap: 44px; }
921
922  .truncate{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
923
924  /* btn */
925  .primary-btn { cursor: pointer; border-width: 1px; border-style: solid; border-color: transparent; background-color: var(--color-primary-btn-bg); text-align: center; color: var(--color-primary-btn-text); }
926  .primary-btn:hover { background-color: var(--color-cart-dot-bg); }
927  .secondary-btn{ cursor: pointer; border-width: 1px; border-style: solid; border-color: rgba(230,230,230,1); background-color: transparent; color: var(--color-body-text);}
928  .secondary-btn:hover{ border-color: var(--color-primary-btn-bg); background-color: var(--color-primary-btn-bg); color: var(--color-primary-btn-text); }
929
930  .rounded-btn { border-radius: var(--btn-border-radius); }
931
932  /* last */
933  .last\:mb-0:last-child { margin-bottom: 0; }
934
935  /* transform */
936  .-translate-y-1\/2 { transform: var(-50%); }
937
938  /* box */
939  .box-border { box-sizing: border-box; }
940
941  /* ul li */
942  .list-none { list-style-type: none; }
943
944  .left-0 { left: 0; }
945    .left-1\/2 { left: 50%; }
946    .left-3 { left: 12px; }
947    .right-0 { right: 0; }
948    .right-3 { right: 12px; }
949    .right-4 { right: 16px; }
950    .right-8 { right: 32px; }
951    .mr-\[6px\] { margin-right: 6px; }
952    .ml-auto { margin-left: auto; }
953    .-ml-3 { margin-left: -12px; }
954    .ml-1 { margin-left: 4px; }
955    .ml-2 { margin-left: 8px; }
956    .ml-3 { margin-left: 12px; }
957    .ml-4 { margin-left: 16px; }
958    .ml-5 { margin-left: 20px; }
959    .ml-6 { margin-left: 24px; }
960    .ml-7 { margin-left: 28px; }
961    .mr-1 { margin-right: 4px; }
962    .mr-2 { margin-right: 8px; }
963    .mr-3 { margin-right: 12px; }
964    .mr-4 { margin-right: 16px; }
965    .mr-5 { margin-right: 20px; }
966    .pl-2 { padding-left: 8px; }
967    .pl-3 { padding-left: 12px; }
968    .pr-3 { padding-right: 12px; }
969    .text-left { text-align: left; }
970    .text-right { text-align: right; }
971    .rotate-90 { transform: rotate(90deg); }
972    .rotate--90 { transform: rotate(-90deg); }
973    .rotate-180 { transform: rotate(180deg); }
974    .-translate-x-1\/2 { transform: translateX(-50%); }
975  @media (max-width: 959.98px) {
976    .md\:hidden { display: none !important; }
977    .md\:flex { display: flex; }
978    .md\:flex-row-reverse { flex-direction: row-reverse; }
979    .md\:flex-col-reverse { flex-direction: column-reverse; }
980    .md\:flex-1 { flex: 1; }
981    .md\:flex-col { flex-direction: column; }
982    .md\:justify-end { justify-content: flex-end; }
983    .md\:justify-center { justify-content: center; }
984    .md\:justify-between { justify-content: space-between; }
985    .md\:items-center { align-items: center; }
986    .md\:self-center { align-self: center; }
987    .md\:shrink-0 { flex-shrink: 0; }
988    .md\:items-start { align-items: flex-start; }
989    .md\:flex-wrap { flex-wrap: wrap; }
990
991    .md\:w-full { width: 100%; }
992
993    .md\:mt-4 { margin-top: 16px; }
994    .md\:mt-5 { margin-top: 20px; }
995    .md\:mt-6 { margin-top: 24px; }
996    .md\:mt-9 { margin-top: 36px; }
997    .md\:mb-3 { margin-bottom: 13px; }
998    .md\:mb-4 { margin-bottom: 16px; }
999    .md\:mb-5 { margin-bottom: 20px; }
1000    .md\:mx-4 { margin-left: 16px; margin-right: 16px; }
1001
1002    .md\:pb-0 { padding-bottom: 0; }
1003    .md\:px-8 { padding-left: 32px; padding-right: 32px; }
1004    .md\:px-4 { padding-left: 16px; padding-right: 16px; }
1005    .md\:pt-6 { padding-top: 24px; }
1006    .md\:pt-4 { padding-top: 16px; }
1007    .md\:pt-2 { padding-top: 8px; }
1008    .md\:pt-10 { padding-top: 40px; }
1009    .md\:pb-5 { padding-bottom: 20px; }
1010    .md\:pb-6 { padding-bottom: 24px; }
1011    .md\:py-3 { padding-top: 12px; padding-bottom: 12px; }
1012    .md\:order-1 { order: 1; }
1013    .md\:order-2 { order: 2; }
1014
1015    .md\:body-minus-2 { font-size: calc(var(--type-text-font-size) - 2px); }
1016    .md\:body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); }
1017    .md\:body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); }
1018    .md\:text-base { font-size: 16px; line-height: 24px; }
1019    .md\:text-xs { font-size: 12px; line-height: 16px; }
1020    .md\:text-sm { font-size: 14px; line-height: 20px; }
1021    .md\:text-center { text-align: center; }
1022
1023    .md\:border-t { border-top: 1px solid var(--color-border); }
1024    .md\:pb-full { padding-bottom: 100%; }
1025    .md\:pt-\[30px\] { padding-top: 30px; }
1026    .md\:pb-\[54px\] { padding-bottom: 54px; }
1027    .md\:p-\[30px\] { padding: 30px; }
1028
1029    .md\:gap-x-4 { column-gap: 16px; }
1030    .md\:gap-y-6 { row-gap: 24px; }
1031    .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1032
1033    .md\:overflow-x-scroll { overflow: scroll; }
1034    .md\:w-2\/3 { width: 66.67%; }
1035    .md\:truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1036
1037    .md\:color-body-70 { color: var(--color-body-text-70); }
1038  }
1039
1040  @media (min-width: 960px) {
1041    .lg\:hidden { display: none !important; }
1042    .lg\:flex { display: flex; }
1043    .lg\:flex-wrap { flex-wrap: wrap; }
1044    .lg\:flex-row-reverse { flex-direction: row-reverse; }
1045    .lg\:flex-col-reverse { flex-direction: column-reverse; }
1046    .lg\:flex-1 { flex: 1; }
1047    .lg\:flex-col { flex-direction: column; }
1048    .lg\:items-center { align-items: center; }
1049    .lg\:justify-end { justify-content: flex-end; }
1050    .lg\:justify-center { justify-content: center; }
1051    .lg\:justify-between { justify-content: space-between; }
1052    .lg\:shrink-0 { flex-shrink: 0; }
1053
1054    .lg\:w-full { width: 100%; }
1055    .lg\:h-full { height: 100%; }
1056    .lg\:w-1\/2 { width: 50%; }
1057
1058    .lg\:mx-8 { margin-left: 32px; margin-right: 32px; }
1059    .lg\:mt-1 { margin-top: 4px; }
1060    .lg\:mt-2 { margin-top: 8px; }
1061    .lg\:mt-3 { margin-top: 12px; }
1062    .lg\:mt-4 { margin-top: 16px; }
1063    .lg\:mt-5 { margin-top: 20px; }
1064    .lg\:mt-6 { margin-top: 24px; }
1065    .lg\:mt-7 { margin-top: 28px; }
1066    .lg\:mt-8 { margin-top: 32px; }
1067    .lg\:mt-9 { margin-top: 36px; }
1068    .lg\:mt-10 { margin-top: 40px; }
1069    .lg\:mt-15 { margin-top: 60px; }
1070    .lg\:mt-84 { margin-top: 84px; }
1071    .lg\:mb-3 { margin-bottom: 12px; }
1072    .lg\:mb-4 { margin-bottom: 16px; }
1073    .lg\:mb-5 { margin-bottom: 20px; }
1074    .lg\:mb-7 { margin-bottom: 28px; }
1075    .lg\:mb-15 { margin-bottom: 60px; }
1076
1077    .lg\:p-4 { padding: 16px; }
1078    .lg\:p-8 { padding: 32px; }
1079    .lg\:px-3 { padding-left: 12px; padding-right: 12px; }
1080    .lg\:px-5 { padding-left: 20px; padding-right: 20px; }
1081    .lg\:px-6 { padding-left: 24px; padding-right: 24px; }
1082    .lg\:px-8 { padding-left: 32px; padding-right: 32px; }
1083    .lg\:px-12 { padding-left: 48px; padding-right: 48px; }
1084    .lg\:px-20 { padding-left: 80px; padding-right: 80px; }
1085
1086    .lg\:px-10 { padding-left: 40px; padding-right: 40px; }
1087    .lg\:py-5 { padding-top: 20px; padding-bottom: 20px; }
1088    .lg\:py-6 { padding-top: 24px; padding-bottom: 24px; }
1089    .lg\:py-7 { padding-top: 28px; padding-bottom: 28px; }
1090    .lg\:py-8 { padding-top: 32px; padding-bottom: 32px; }
1091    .lg\:py-15 { padding-top: 60px; padding-bottom: 60px; }
1092    .lg\:py-20 {padding-top: 80px; padding-bottom: 80px; }
1093    .lg\:pt-1 { padding-top: 4px; }
1094    .lg\:pt-3 { padding-top: 12px; }
1095    .lg\:pt-5 { padding-top: 20px; }
1096    .lg\:pt-6 { padding-top: 24px; }
1097    .lg\:pt-8 { padding-top: 32px; }
1098    .lg\:pt-9 { padding-top: 36px; }
1099    .lg\:pt-10 { padding-top: 40px; }
1100    .lg\:pt-15 { padding-top: 60px; }
1101    .lg\:pt-11 { padding-top: 44px; }
1102    .lg\:pb-6 { padding-bottom: 24px; }
1103    .lg\:pb-8 { padding-bottom: 32px; }
1104    .lg\:pb-9 { padding-bottom: 36px; }
1105    .lg\:pb-13 { padding-bottom: 52px; }
1106    .lg\:px-\[98px\] { padding-left: 98px; padding-right: 98px; }
1107
1108    .lg\:max-w-full{ max-width: 100%;}
1109
1110    .lg\:body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); }
1111    .lg\:body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); }
1112    .lg\:body-plus-4 { font-size: calc(var(--type-text-font-size) + 4px); }
1113    .lg\:text-7 { font-size: 28px; }
1114    .lg\:text-sm { font-size: 14px; line-height: 20px; }
1115    .lg\:text-base { font-size: 16px; line-height: 24px; }
1116    .lg\:text-xl { font-size: 20px; line-height: 24px; }
1117    .lg\:text-2xl { font-size: 24px; line-height: 28px; }
1118    .lg\:text-3xl { font-size: 28px; line-height: 32px; }
1119
1120    .lg\:text-center { text-align: center; }
1121
1122    .lg\:color-text-default { color: #9F9F9F; }
1123
1124    .lg\:border { border: 1px solid var(--color-border); }
1125
1126    .lg\:leading-1\.2 { line-height: 1.2; }
1127
1128    .lg\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
1129    .lg\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1130    .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
1131    .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
1132    .lg\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
1133    .lg\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
1134    .lg\:gap-y-11 { row-gap: 44px; }
1135
1136    .lg\:gap-3 { gap: 12px; }
1137    .lg\:gap-4 { gap: 16px; }
1138    .lg\:gap-6 { gap: 24px; }
1139    .lg\:gap-y-4 { row-gap: 16px; }
1140    .lg\:gap-y-5 { row-gap: 20px; }
1141    .lg\:gap-y-6 { row-gap: 24px; }
1142    .lg\:gap-y-11 { row-gap: 44px; }
1143    .lg\:gap-x-4 { column-gap: 16px; }
1144    .lg\:gap-x-6 { column-gap: 24px; }
1145    .lg\:gap-x-10 { column-gap: 40px; }
1146
1147    .lg\:inset-0 { top: 0; right: 0; bottom: 0; left: 0; }
1148
1149    .lg\:bottom-4 { bottom: 16px; }
1150    .lg\:bottom-5 { bottom: 20px; }
1151
1152    .lg\:overflow-hidden { overflow: hidden; }
1153
1154     /* box */
1155    .lg\:box-border { box-sizing: border-box; }
1156
1157    .lg\:hover\:border-btn-bg:hover:hover { border-color: var(--color-primary-btn-bg); }
1158    .lg\:hover\:bg-btn-bg:hover { background-color: var(--color-primary-btn-bg); }
1159    .lg\:hover\:text-btn-text-color:hover {color: var(--color-primary-btn-text); }
1160    .lg\:hover\:shadow-image:hover { box-shadow: 0 3px 10px 1px rgba(0, 0, 0, 0.1); }
1161    .lg\:order-1 { order: 1; }
1162    .lg\:order-2 { order: 2; }
1163  }
1164  @media (max-width: 959.98px) {
1165      .md\:ml-4 { margin-left: 16px; }
1166      .md\:pr-4 { padding-right: 16px; }
1167      .md\:pl-4 { padding-left: 16px; }
1168      .md\:rounded-l-none { border-top-left-radius: 0; border-bottom-left-radius: 0; }
1169    }
1170    @media (min-width: 960px) {
1171      .lg\:ml-auto { margin-left: auto; }
1172      .lg\:ml-1 { margin-left: 4px; }
1173      .lg\:ml-4 { margin-left: 16px; }
1174      .lg\:ml-8 { margin-left: 32px; }
1175      .lg\:ml-10 { margin-left: 40px; }
1176      .lg\:mr-0 { margin-right: 0; }
1177      .lg\:mr-3 { margin-right: 12px; }
1178      .lg\:mr-4 { margin-right: 16px; }
1179      .lg\:mr-5 { margin-right: 20px; }
1180      .lg\:pr-10{ padding-right: 40px; }
1181      .lg\:pl-10{ padding-left: 40px; }
1182      .lg\:pl-\[42px\] { padding-left: 42px; }
1183      .lg\:border-l { border-left: 1px solid var(--color-border); }
1184      .lg\:border-r { border-right: 1px solid var(--color-border); }
1185      .lg\:rounded-l-none { border-top-left-radius: 0; border-bottom-left-radius: 0; }
1186    }
1187  </style>
1188<style>
1189  /* image */
1190  .product-snippet__img,
1191  .product-snippet__img-secondary{
1192    transition: opacity 400ms, transform 400ms;
1193  }
1194  .product-snippet__img-secondary {
1195    opacity: 0;
1196  }
1197
1198  .product-snippet__img {
1199    opacity: 1;
1200  }
1201
1202  .product-snippet__img-link{
1203    border-radius: var(--global-small-border-radius);
1204  }
1205  .product-snippet__img-wrapper.show_carousel .product-snippet__img_main,
1206  .product-snippet__img-wrapper:not(.show_carousel) .product-snippet__img_carousel{
1207    display: none !important;
1208  }
1209  .product-snippet__img_carousel .i-spzhtml-slide-item > * {
1210    width: 100% !important;
1211    padding: 0 !important;
1212    margin: 0 !important;
1213  }
1214  /* label */
1215  .product_snippet__label {
1216    position: absolute;
1217    top: 8px;
1218    left: 8px;
1219    padding: 2px;
1220    text-decoration-line: none;
1221    font-size: 12px;
1222    line-height: 1.2;
1223    border-radius:  2px ;
1224    z-index: 1;
1225  }
1226  .product_snippet__label:not([label-type="sold_out"]){
1227    background-color: var(--color-label-bg);
1228    color: var(--color-label-text);
1229  }
1230  .product_snippet__label[label-type="sold_out"]{
1231    background-color: var(--color-sold-label-bg);
1232    color: var(--color-sold-label-text);
1233  }
1234  .product_snippet__label spz-currency{
1235    display: inline-flex;
1236  }
1237  .product-snippet__title{
1238    word-break: break-word;
1239  }
1240
1241  /* price */
1242  .product-snippet__price-wrapper{
1243    line-height: 1.3;
1244  }
1245  .product-snippet__price{
1246    padding-right: 6px;
1247    font-weight: 500;
1248  }
1249  .product-snippet__price spz-currency{
1250    display: inline-flex;
1251  }
1252
1253  .product-snippet__from-price spz-currency {
1254    margin-left: 1px;
1255  }
1256
1257  html[dir="rtl"] .product-snippet__from-price spz-currency {
1258    margin-left: 0;
1259    margin-right: 1px;
1260  }
1261
1262  .product-snippet__price,
1263  .product-snippet__price .money,
1264  .product-snippet__compare-at-price{
1265    overflow: hidden;
1266    text-overflow: ellipsis;
1267    white-space: nowrap;
1268  }
1269
1270  .product-snippet__price .money {
1271    line-height: 1.25;
1272    font-weight: 500;
1273    color: var(--color-price-text);
1274  }
1275
1276  .product-snippet__compare-at-price {
1277    line-height: 1.15;
1278    color: var(--color-compare-at-price-text);
1279  }
1280
1281  .product-snippet__price-wrapper:not([wholesale-enabled]) .product-snippet__compare-at-price{
1282    text-decoration: line-through;
1283  }
1284
1285  .product-info-sales-and-reviews * + * {
1286    margin-left: 8px;
1287  }
1288
1289  html[dir="rtl"] .product-info-sales-and-reviews * + * {
1290    margin-left: 0;
1291    margin-right: 8px;
1292  }
1293
1294  @media (min-width: 960px){
1295    .product-snippet__price-wrapper{
1296      line-height: 1.1;
1297    }
1298    .product-snippet__price{
1299      font-size: calc(var(--type-text-font-size) + 2px);
1300    }
1301
1302    .product_snippet__label {
1303      padding: 2px 4px;
1304    }
1305
1306    .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img{
1307      opacity: 0;
1308    }
1309
1310    .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img-secondary{
1311      opacity: 1;
1312    }
1313    .product-snippet__img-secondary{
1314      transform: scale(1.05);
1315    }
1316
1317    .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img-secondary{
1318      transform: scale(1);
1319    }
1320  }
1321  /* thumbnails */
1322  .product-snippet__thumbnails-item,
1323  .product-snippet__thumbnails-item img{
1324    border-radius: 1px;
1325  }
1326
1327  .product-snippet__thumbnails-item + .product-snippet__thumbnails-item {
1328    margin-left: 8px;
1329  }
1330
1331
1332  html[dir="rtl"] .product-snippet__thumbnails-item + .product-snippet__thumbnails-item {
1333    margin-left: 0;
1334    margin-right: 8px;
1335  }
1336
1337  .product-snippet__thumbnails-item[option] {
1338    position: relative;
1339  }
1340
1341  .product-snippet__thumbnails-item[option]::before {
1342    content: '';
1343    z-index: 1;
1344    position: absolute;
1345    top: 0;
1346    left: 0;
1347    right: 0;
1348    bottom: 0;
1349    border: 1px solid transparent;
1350    border-radius: var(--global-fixed-border-radius);
1351    transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
1352  }
1353
1354  .product-snippet__thumbnails-item[option][selected]::before {
1355    border-color: var(--color-body-text);
1356  }
1357
1358  .product-snippet__thumbnails-item:not([option]) {
1359    margin: 0;
1360    padding: 0 8px;
1361    line-height: 36px;
1362  }
1363
1364  html[dir="rtl"] .product-snippet__thumbnails-item:not([option]) {
1365    margin: 0;
1366  }
1367
1368  /* quick shop icon */
1369  .product-snippet__quick-shop-icon {
1370    position: absolute;
1371    right: 8px;
1372    bottom: 8px;
1373    display: flex;
1374    align-items: center;
1375    justify-content: center;
1376    margin: 0;
1377    padding: 7px;
1378    border: none;
1379    border-radius: 9999px;
1380    background: rgba(255, 255, 255, 0.9);
1381    color: var(--color-body-text);
1382    z-index: 1;
1383  }
1384
1385  html[dir="rtl"] .product-snippet__quick-shop-icon {
1386    left: 8px;
1387    right: unset;
1388  }
1389
1390  @media (max-width: 959.98px) {
1391    .product-snippet__quick-shop-icon::before {
1392      content: '';
1393      position: absolute;
1394      top: -5px;
1395      left: -8px;
1396      right: -8px;
1397      bottom: -8px;
1398    }
1399  }
1400
1401  @media (min-width: 960px){
1402    .product-snippet__quick-shop-icon {
1403      padding: 10px;
1404      opacity: 0;
1405      transform: translateY(4px);
1406      transition: opacity .3s cubic-bezier(0.445, 0.05, 0.55, 0.95),
1407                  transform .3s cubic-bezier(0.445, 0.05, 0.55, 0.95);
1408    }
1409
1410    .product-snippet__img-wrapper:hover .product-snippet__quick-shop-icon{
1411      opacity: 1;
1412      transform: translateY(0);
1413    }
1414  }
1415  /* quick shop btn */
1416  .product-snippet__quick-shop-btn{
1417    width: 100%;
1418    min-height: 40px;
1419    padding: 8px;
1420    border: 1px solid var(--color-primary-btn-bg);
1421    font-size: calc(var(--type-text-font-size) + 2px);
1422    font-weight: 600;
1423  }
1424  .product-snippet__quick-shop-btn[disable]{
1425    color: #9f9f9f;
1426    background-color: rgba(230, 230, 230, .5);
1427    border: none;
1428    cursor: default;
1429  }
1430  .product-snippet__quick-shop-btn:not(.select),
1431  .product_snippet__atc_select_btn{
1432    margin-top: 24px;
1433  }
1434  .product_snippet__atc_dropdown .i-spzhtml-dropdown-container{
1435    min-width: 100%;
1436  }
1437
1438  .product_snippet__atc_tooltip .i-spzhtml-tooltip-inner{
1439    padding: 0;
1440    box-shadow: none;
1441  }
1442  .product_snippet__atc_tooltip_content{
1443    display: flex;
1444    flex-direction: column;
1445    padding: 4px 0;
1446    color: var(--color-body-text);
1447    font-size: var(--type-text-font-size);
1448    background: var(--color-body-bg);
1449    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 8px 40px rgba(0, 0, 0, 0.2);
1450    max-height: 300px;
1451    overflow: hidden auto;
1452  }
1453  .product_snippet__atc_tooltip_content input[type="radio"]{
1454    display: none;
1455  }
1456  .product_snippet__atc_tooltip_content label{
1457    padding: 12px;
1458    border-bottom: 1px solid #e5e5e5;
1459    display: flex;
1460    flex-wrap: wrap;
1461  }
1462  .product_snippet__atc_tooltip_content label:not([disabled]):hover{
1463    background: var(--color-body-text);
1464    color: var(--color-body-bg);
1465  }
1466  .product_snippet__atc_tooltip_content label[disabled]{
1467    opacity: 0.6;
1468  }
1469  .product_snippet__atc_tooltip_content .product-snippet__compare-at-price{
1470    text-decoration: line-through;
1471  }
1472</style>
1473    
1473<script>
1474      window.SHOP_PARAMS = {
1475        product_lang:{
1476          added_to_cart_successfully:"Added successfully",
1477          view_cart:"View Cart",
1478          select_variant:"Please select a variant at least",
1479          line_items_variant_withdraw: "Some items are not in stock, please re-order",
1480          line_items_variant_sold_out: "Some items have been sold out, please re-order",
1481          product_reorder: "Some items information has been updated, please re-order"
1482        },
1483        product_settings: {
1484          add_to_cart_process:"drawer",
1485        }
1486      }
1487      window.breakpoint = 960;
1488      window.disabled_exts = ["bootstrap", "image_video", "social_login", "global_version", "share_product", "boowc", "paypal_express"];
1489    </script>
1489
1490    
1490<script async crossorigin="anonymous" src="//static.staticdj.com/cuttlefish/v1/spz.min.js"></script>
1490
1491  
1491<script>window.C_SETTINGS={image_domain:"//img.staticdj.com/",payment_settings:{"paypal_express_enabled":true,"dynamic_config":{"paypal_js_sdk_url":"https:\/\/www.paypal.com\/sdk\/js?client-id=AUwoRlv3iZ3jt3o3hhcft_tZ5g6tvefEpjCf9YNGeH7q8p_WraleitkKfLnWIs8HLpzalgRA5AMT0BYO&currency=USD&disable-funding=card%2Cbancontact%2Cblik%2Ceps%2Cgiropay%2Cideal%2Cmercadopago%2Cmybank%2Cp24%2Csepa%2Csofort%2Cvenmo&enable-funding=paylater&merchant-id=7YRJJN7AMVJ6U","express_checkout_config":{"express_channels":["paypal","useepaygoogle","useepayapple"],"express_account_infos":{"paypal":{"channel_id":"67e4a57c-072f-489a-b977-5c8061f6f0b0","merchant_id":"7YRJJN7AMVJ6U","client_id":"BAAiZ4LenqMMdtcXldpCRb3odF0ds0xi86HuE1WESa8AF9AWLTyNAYLVXBlKvOigJHBREo2puhfqfQU9AA","account":"merchant","partner_account":{"id":"partner_region_cn","client_id":"AUwoRlv3iZ3jt3o3hhcft_tZ5g6tvefEpjCf9YNGeH7q8p_WraleitkKfLnWIs8HLpzalgRA5AMT0BYO"}},"useepayapple":{"channel_id":"b37a0c1e-2b3c-40c1-abbd-47fa32c3ec0c","supported_networks":["visa","masterCard","discover","amex"],"merchant_capabilities":["supports3DS","supportsDebit","supportsCredit"],"country_code":"HK"},"useepaygoogle":{"channel_id":"e92ba1c5-50cd-4b85-aba4-05f2419904e5","gateway":"useepay","gateway_merchant_id":"500000000016593","merchant_name":"nisartmacka","allowed_card_networks":["DISCOVER","MASTERCARD","VISA","AMEX"],"allowed_auth_methods":["PAN_ONLY","CRYPTOGRAM_3DS"]}},"express_theme_configs":{"useepayapple":{"theme_type":"Light"},"useepaygoogle":{"theme_type":"Light"}}},"scm":"cart_ec.11096.11097.11098.11099","unified_user_id":"","fallback_reason":"","request_id":"08a11f03-228d-4886-8789-d5e7cc3229b8","ec_recommend":{"recommend_count":3,"exp_group":"C","channel_groups":[{"payment_type":"paypal","candidates":[{"channel":"paypal","score":16.23}]},{"payment_type":"google_pay","candidates":[{"channel":"useepaygoogle","score":4.66}]},{"payment_type":"apple_pay","candidates":[{"channel":"useepayapple","score":0}]}],"scm":"cart_ec.11096.11097.11098.11099","unified_user_id":""},"ec_legacy_apple_pay_block_store_ids":["2036132","2171855","1021775","2373789","2050387","1831597","2386285","2374192"],"ec_legacy_google_pay_block_store_ids":["2036132","2171855","1021775","2373789","2050387","1831597","2386285","2374192"],"ec_legacy_spz_paypal_store_ids":[]}},sa_server_url:"https://r.shoplazza.com/sa?project=production&store_id=2189163",sa_web_url:"https://r.shoplazza.com/?store_id=2189163",routes:{root:""},currency_code:"USD",currency_symbol:"$",currency_symbol_pos:"left",theme:{"theme_id":"aa676694-c806-41d5-bc70-e26cb00f74e3","theme_version_id":"16994","merchant_theme_name":"Nova 2023","theme_preset":"","updated_at":"2026-04-01 09:02:27","merchant_theme_updated_at":"2024-10-22 07:42:25","theme_type":"standard","support_block":true,"support_app_block":true,"ext_theme_key":"","merchant_theme_c_version":"3.5.6","merchant_theme_version":"24.65.0"},customer:{"customer_id":null,"customer_phone":null,"customer_email":null},shop:{"shop_id":"2189163","shop_env":0,"shop_name":"nisartmacka","finance":1,"cdn_domain":"\/\/static.staticdj.com\/","image_domain":"\/\/img.staticdj.com\/","wholesale_enabled":false,"time_zone":"-0800","attrs":null,"show_payment_logo":false},meta:{page:{"template_name":"cart","template_type":13,"template_suffix":"default"}},money_format:"amount",money_round_currencies:{"round_off_halfup":["XOF","XAF","XPF","BIF","CLP","KMF","DJF","GNF","ISK","JPY","PYG","RWF","KRW","UGX","VUV","VND","UYI","HUF","TWD"],"round_off_zero":[],"round_off_floor":[],"round_off_ceil":[]},slug:"nisartmacka",CLIENT_SENTRY_DSN:"https://[email protected]/5",region:"cn",store_plan:"base",store_trial:false,password_enabled:false,namespace:"production",market:{"market_id":null,"market_currency":null,"market_lang":null,"market_currency_symbol":null,"market_base_currency":null,"market_base_currency_symbol":null,"primary_market_id":null,"primary_market_currency":null,"primary_market_currency_symbol":null,"primary_market_lang":"en-US","market_price_setting":null,"market_domain":null},app_root_domain:"shoplazza.com",product_snippet_prefix:"shoplazza-product-snippet",section_prefix:"shoplaza-section"};window[atob("U0hPUExBWlpB")]= window.C_SETTINGS;</script>
1491<style type="text/css">
1492  .theme-toast-wrap{
1493    position: fixed;
1494    z-index: var(--z-index-tooltip);
1495    top: 64px;
1496    right: 0;
1497    left: 0;
1498    pointer-events: none;
1499  }
1500  .theme-toast{
1501    width: 100%;
1502    background: rgba(41, 41, 41, 0.95);
1503    color: #fff;
1504    pointer-events: auto;
1505    border-radius: 0px;
1506    position: unset !important;
1507    transform: unset !important;
1508    text-align: left !important;
1509  }
1510  @media (min-width: 960px) {
1511    .theme-toast-wrap {
1512      top: 60px;
1513    }
1514    .theme-toast{
1515      width: 400px;
1516      border-radius: 2px;
1517    }
1518  }
1519
1520  .add_cart-toast-wrap{
1521    position: fixed;
1522    z-index: var(--z-index-tooltip);
1523    top: 64px;
1524    right: 0;
1525    left: 0;
1526    pointer-events: none;
1527  }
1528  .add_cart-toast{
1529    width: 100%;
1530    background: rgba(41, 41, 41, 0.95);
1531    color: #fff;
1532    pointer-events: auto;
1533    border-radius: 0px;
1534    position: unset !important;
1535    transform: unset !important;
1536    text-align: left !important;
1537  }
1538  .toast_view_cart {
1539    color: #F3D07D;
1540  }
1541  @media (min-width: 960px) {
1542    .add_cart-toast-wrap {
1543      top: 60px;
1544    }
1545    .add_cart-toast{
1546      width: 400px;
1547      border-radius: 2px;
1548    }
1549  }
1550</style>
1551<script type="text/javascript">
1552/* top_v2-start */!function(e){var t={};function n(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(s,o,function(t){return e[t]}.bind(null,o));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=12)}([function(e,t,n){"use strict";n.d(t,"h",(function(){return s})),n.d(t,"i",(function(){return o})),n.d(t,"s",(function(){return r})),n.d(t,"o",(function(){return i})),n.d(t,"r",(function(){return a})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return u})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"f",(function(){return h})),n.d(t,"n",(function(){return _})),n.d(t,"g",(function(){return f})),n.d(t,"k",(function(){return v})),n.d(t,"l",(function(){return y})),n.d(t,"q",(function(){return m})),n.d(t,"j",(function(){return g})),n.d(t,"p",(function(){return b})),n.d(t,"m",(function(){return w}));const s="dj.request",o="dj.response",r="dj.viewContent",i="dj.productSearch",a="dj.variantChange",c="dj.addToCart",d="dj.cartChange",u="dj.cartUpdate",l="dj.cartItemChange",p="dj.cartItemDelete",h="dj.checkoutSubmit",_="dj.passwordReset",f="dj.completeRegistration",v="dj.login",y="dj.logout",m="dj.registration",g="dj.emailSubscription",b="dj.purchase",w="dj.pageLoad"},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return a}));var s=n(0);window.__SEAHORSE_BUS={listeners:{},addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)},dispatchEvent(e,t){const n=this.listeners[e];n&&n.length>0?n.forEach(n=>{try{n(t)}catch(t){console.error("执行事件回调失败: "+e,t)}}):console.error("没有找到事件监听器: "+e)}};const o=function(e){const t=document.createElement("a");return t.href=e,t},r=(e,t)=>{var n;const o=(e=>e?{...e,event_time:Date.now(),__is_seahorse_event:!0}:null)(t);e===s.a&&window.__SEAHORSE_BUS.dispatchEvent(e,o);const r=new CustomEvent(e,{detail:o,bubbles:!0});null===(n=document.body)||void 0===n||n.dispatchEvent(r)},i=(e,t)=>{document.addEventListener(e,(function(e){t(e,e.detail)}))},a=e=>{const t={};try{if(!e||e.match(/^[{\[]+[^]*[}\]]+$/))return t;e.replace(/[?&]+([^=&]+)=([^&]*)/gi,(e,n,s)=>{null!=s&&(t[n]=s)})}catch(e){console.log(e)}return t}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));const s=function(){var e,t,n,s,o,r,i,a,c,d,u;const l=window.C_SETTINGS||window[atob("U0hPUExBWlpB")]||{};window[atob("U0hPUF9QQVJBTVM=")]=Object.assign({customer_id:null===(e=l.customer)||void 0===e?void 0:e.customer_id,finance:null===(t=l.shop)||void 0===t?void 0:t.finance,finance_symbol:l.currency_symbol,cdn_domain:null===(n=l.shop)||void 0===n?void 0:n.cdn_domain,theme_id:null===(s=l.theme)||void 0===s?void 0:s.theme_id,theme_name:null===(o=l.theme)||void 0===o?void 0:o.merchant_theme_name,theme_version:null===(r=l.theme)||void 0===r?void 0:r.theme_version_id,shop_name:null===(i=l.shop)||void 0===i?void 0:i.shop_name,shop_id:null===(a=l.shop)||void 0===a?void 0:a.shop_id,shop_env:null===(c=l.shop)||void 0===c?void 0:c.shop_env,default_img:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==",template_name:null===(d=l.meta)||void 0===d||null===(d=d.page)||void 0===d?void 0:d.template_name,template_type:null===(u=l.meta)||void 0===u||null===(u=u.page)||void 0===u||null===(u=u.template_type)||void 0===u?void 0:u.toString()},window[atob("U0hPUF9QQVJBTVM=")]||{})}},function(e,t,n){"use strict";function s(){var e;null===(e=window.djInterceptors)||void 0===e||null===(e=e.proxy)||void 0===e||e.use(o)}function o({url:e,method:t,_body:n,redirect:s}){let o=null;try{var r,i,a;if(e.endsWith("/api/checkout/order")&&"POST"===t&&!s)if(n="string"==typeof n?JSON.parse(n):n,o={time:Date.now(),isOptimizedVersion:!1,source:["buy_now","cart"].includes(null===(r=n.refer_info)||void 0===r?void 0:r.source)?null===(i=n.refer_info)||void 0===i?void 0:i.source:"buy_now"},n.enable_order_create_proxy&&"one_page"!=(null===(a=n.refer_info)||void 0===a?void 0:a.source)){o&&(o.isOptimizedVersion=!0);const t=document.createElement("form");return t.method="POST",t.action=e.replace("/api/checkout/order","/checkout/create_order"),t.style.display="none",function(e,t){const n=document.createElement("input");n.type="hidden",n.name="data",n.value=JSON.stringify(t),e.appendChild(n)}(t,n),document.body.appendChild(t),t.submit(),document.body.removeChild(t),Promise.resolve(new Response(JSON.stringify({state:"success",ignore_to_checkout:!0,data:{items:n.line_items,refer_info:n.refer_info}}),{status:200,headers:{"Content-Type":"application/json"}}))}}catch(s){console.error("proxyCreateOrder error",e,t,n,s)}finally{o&&sessionStorage.setItem("CREATE_ORDER",JSON.stringify(o))}}n.d(t,"a",(function(){return s}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return y}
1552));class s{constructor(){this._handlers=[]}use(e){return this._handlers.push(e),this._handlers.length-1}eject(e){this._handlers[e]&&(this._handlers[e]=null)}forEach(e){this._handlers.forEach((t,n)=>{null!==t&&e(t,n)})}length(){return this._handlers.length}}var o=n(1);const r="dj.request",i="dj.response",a="dj.beforeRequest",c="application/x-www-form-urlencoded",d="application/json",u=/(?:\[)(.+?)(?:\])/g,l=/^\d$/,p=e=>{if(!e)return e;let t=e;try{t=JSON.parse(JSON.stringify(e)),Object.keys(e).forEach(n=>{var s;let o=null==n?void 0:n.match(u);if(!o)return void(t[n]=e[n]);o=o.map(e=>e.slice(1,-1));const r=o[0],i=l.test(r),a=null==n?void 0:n.slice(0,null==n?void 0:n.indexOf("["));t[a]||(t[a]=i?[]:{}),null===(s=o)||void 0===s||s.forEach(s=>{l.test(s)||(i?(t[a][r]||(t[a][r]={}),t[a][r][s]=e[n]):t[a][s]=e[n])})})}catch(e){console.log(e)}return t};class h{constructor(e,t,n,s){this.__reqHeaders=Object.assign({},n),this._request={url:e,redirect:void 0,method:t,headers:n,_body:s,body:void 0},this._response={data:void 0,headers:void 0,status:void 0},this.__origin_code_map_={}}redirectUrl_(){return this._request.redirect}getContentType_(e){for(const t in e.headers||{})if("content-type"===t.toLowerCase())return e.headers[t]}getRequestType_(){return this.getContentType_(this._request)}getResponseType_(){return this.getContentType_(this._response)}serializeBody_(){const e=this.getRequestType_();if(!e||!this._request._body)return;let t=void 0;try{e.indexOf(c)>-1?t=this.formStringToObj_(this._request._body):e.indexOf(d)>-1&&(t=JSON.parse(this._request._body))}catch{}t&&(this._request.body=t)}deserializeBody_(){const e=this.getRequestType_();if(!e||!this._request.body)return;let t=void 0;try{e.indexOf(c)>-1?t=this.formBodyToString_(this._request.body):e.indexOf(d)>-1&&(t=JSON.stringify(this._request.body))}catch{}t&&(this._request._body=t)}formBodyToString_(e){const t=[],n=(e,n)=>{t.push(this.getEncodeValue_(e)+"="+this.getEncodeValue_(n))};for(const t in e){const s=e[t];Array.isArray(s)?s.forEach(e=>{n(t,e)}):n(t,s)}return t.join("&")}formStringToObj_(e){const t={};if(!e||e.match(/^[{\[]+[^]*[}\]]+$/))return t;const n=[];return("?"+e).replace(/[?&]+([^=&]+)=([^&]*)/gi,(e,s,o)=>{null!=o&&(s=this.getDecodeValue_(s),o=this.getDecodeValue_(o),n.push({key:s,value:o}),null!=t[s]?t[s]=n.filter(e=>e.key==s).map(e=>e.value):t[s]=o)}),t}getDecodeValue_(e){const t=decodeURIComponent(e),n=e!==encodeURIComponent(t)?e:t;return this.__origin_code_map_[n]=e,n}getEncodeValue_(e){return void 0!==this.__origin_code_map_[e]?this.__origin_code_map_[e]:null==e?e:encodeURIComponent(e)}triggerBeforeRequestEvent(){Object(o.d)(a,Object.assign({},this._request,{body:p(this._request.body)}))}triggerRequestEvent(){Object(o.d)(r,Object.assign({},this._request,{body:p(this._request.body)}))}triggerResponseEvent(){Object(o.d)(i,{request:Object.assign({},this._request,{body:p(this._request.body)}),response:this._response})}shouldSendDirectly_(){var e,t;if(!(null!==(e=window.djInterceptors)&&void 0!==e&&null!==(e=e.request)&&void 0!==e&&e.length()||null!==(t=window.djInterceptors)&&void 0!==t&&null!==(t=t.proxy)&&void 0!==t&&t.length()))return!0;const n=this.getRequestType_();return!(!n||-1!==n.indexOf(c)||-1!==n.indexOf(d))}shouldReturnDirectly_(){var e;if(null===(e=window.djInterceptors)||void 0===e||null===(e=e.response)||void 0===e||!e.length())return!0;const t=this.getResponseType_();return!(!t||-1!==t.indexOf(d))}headersModified_(){const e={};let t=!1;const n=this._request.headers;return Object.getOwnPropertyNames(n||{}).forEach(s=>{n[s]!==this.__reqHeaders[s]&&(e[s]=n[s],t=!0)}),t?e:void 0}requestHooks_(){var e;let t=[],n=Promise.resolve(this._request);for(null===(e=window.djInterceptors)||void 0===e||null===(e=e.request)||void 0===e||e.forEach(e=>{t.push(e)});t.length;)n=n.then(t.shift());return n}responseHooks_(){var e;const t=Object.assign(this._response,{config:this._request});let n=Promise.resolve(t);if(this.shouldReturnDirectly_())return n;let s=[];for(null===(e=window.djInterceptors)||void 0===e||null===(e=e.response)||void 0===e||e.forEach(e=>{s.push(e)});s.length;)n=n.then(s.shift());return n}send(e){const t=()=>{if(e)return this.triggerRequestEvent(),e(this._request._body,this.redirectUrl_(),this.headersModified_())};
1552return this.shouldSendDirectly_()?t():this.requestHooks_().then(e=>{e&&e.body&&this.deserializeBody_()}).catch(e=>{console.log(e)}).then(()=>this.handleProxyHook_()).then(e=>e||t())}mock(e){return e?this.parseResponse_(e).then(()=>{this.triggerResponseEvent()}).then(()=>this.responseHooks_()).then(({data:t,status:n})=>{if(!t)return e;if(t instanceof Response)return t;if(e.hasOwnProperty("data")){const s=this.canParseToJson_(e.data);return{status:n,data:this.isObject_(s)?JSON.stringify(t):t}}return e instanceof Response?new Response(JSON.stringify(t),{status:n,headers:e.headers,statusText:e.statusText}):void 0}).catch(()=>(this.triggerResponseEvent(),e)):Promise.resolve(e)}parseResponse_(e){if(this._response.status=e.status||200,e.hasOwnProperty("data")){this._response.headers=e.headers;const t=this.canParseToJson_(e.data);return this._response.data=this.isObject_(t)?t:e.data,Promise.resolve()}return e instanceof Response?(this._response.headers=this.parseHeaders_(e.headers),e.clone().json().then(e=>{this._response.data=e}).catch(()=>this._response.data=e)):Promise.resolve()}parseHeaders_(e){const t={};if("function"==typeof e.entries)for(const n of e.entries())t[n[0]]=n[1];return t}canParseToJson_(e){try{return JSON.parse(e)}catch{}return!1}isObject_(e){return"object"==typeof e}handleBeforeRequest_(){this.serializeBody_(),this.triggerBeforeRequestEvent()}async handleProxyHook_(){try{var e;const t=[];null===(e=window.djInterceptors)||void 0===e||null===(e=e.proxy)||void 0===e||e.forEach(e=>{t.push(e)});for(const e of t){const t=await e(this._request);if(t)return t}}catch(e){console.log(e)}}intercept(e){this.handleBeforeRequest_();const t=this.send(e);if(t instanceof Promise)return t.then(e=>this.mock(e))}}function _(){const e=function(e){if(this.readyState===window.XMLHttpRequest.DONE&&(e.requestProxy_||e.responseMock_))return e.responseMock_||(e.responseMock_=t=>e.requestProxy_.mock.apply(e.requestProxy_,[t])),e.responseMock_({status:this.status,data:this.responseType_&&"text"!=this.responseType_?this.response:this.responseText,headers:f(e)}).then(({data:e,status:t})=>(this.response=this.responseText=e,this.status=t,e))};!function(e){const t=window;t.__xhr=t.__xhr||t.XMLHttpRequest;const n=t.__xhr.prototype.setRequestHeader,s=t.__xhr.prototype.open,o=t.__xhr.prototype.send,r=function(e,t){e&&Object.getOwnPropertyNames(e).filter(e=>!t||!t.hasOwnProperty(e)).forEach(t=>{n.apply(this,[t,e[t]])})};function i(t){return function(){const n=this.hasOwnProperty(t+"_")?this[t+"_"]:this.xhr[t],s=(e[t]||{}).getter;return s&&s(n,this)||n}}function a(t){return function(n){const s=this.xhr,o=this,r=e[t];if("on"===t.substring(0,2))o[t+"_"]=n,s[t]=function(r){const i=e[t]&&e[t].call(o,s,r);i?i.then(()=>n.call(o,r)):n.call(o,r)};else{const e=(r||{}).setter;n=e&&e(n,o)||n,this[t+"_"]=n;try{s[t]=n}catch(e){}}}}function c(t){return function(){const n=[].slice.call(arguments);if(e[t]){const s=e[t].call(this,n,this.xhr);if(s&&s.then)return s.then(()=>this.xhr[t].apply(this.xhr,[].slice.call(arguments)))}return this.xhr[t].apply(this.xhr,n)}}t.XMLHttpRequest.prototype.setRequestHeader=function(e,t){return this._headers=Object.assign({},this._headers||{},{[e]:t}),n.apply(this,arguments)},t.XMLHttpRequest.prototype.open=function(e,t){return this._method=e||"GET",this._url=t,s.apply(this,arguments)},t.XMLHttpRequest.prototype.send=function(e){return this.requestProxy_=new h(this._url,this._method,this._headers,e),this.requestProxy_.intercept((e,t,n)=>{t&&(s.apply(this,[this._method,t]),r.apply(this,[this._headers,n])),r.apply(this,[n]),o.call(this,e)})},t.XMLHttpRequest=function(){const e=new t.__xhr;for(let t in e){"function"===typeof e[t]?this[t]=c(t):Object.defineProperty(this,t,{get:i(t),set:a(t),enumerable:!0})}this.xhr=e},t.XMLHttpRequest.prototype=t.__xhr.prototype,Object.assign(t.XMLHttpRequest,{UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4}),t.__xhr}({onreadystatechange:e,onload:e,onloadend:e,addEventListener:function(t,n){const s=this;if(["load","loadend","timeout","error","readystatechange","abort"].includes(t[0]))return e.call(s,n)}})}function f(e){const t=e.getAllResponseHeaders().trim().split(/[\r\n]+/);var n={};
1552return t.forEach(e=>{const t=e.split(": "),s=t.shift(),o=t.shift();n[s]=o}),n}const v=["checkout","thank_you"],y=()=>{var e;v.includes(null===(e=window.C_SETTINGS)||void 0===e||null===(e=e.meta)||void 0===e||null===(e=e.page)||void 0===e?void 0:e.template_name)||(window.djInterceptors={request:new s,response:new s,track:new s,proxy:new s},_(),function(){const e=window.fetch;"function"==typeof e&&(window.fetch=function(t,n={}){const s=(null==n?void 0:n.method)||"GET";return new h(t,s,null==n?void 0:n.headers,null==n?void 0:n.body).intercept((s,o,r)=>(n.body=s,r&&(n.headers&&"function"==typeof n.headers.set?Object.getOwnPropertyNames(r).forEach(e=>n.headers.set(e,r[e])):(n.headers||(n.headers={}),Object.assign(n.headers,r))),t=o||t,e.call(this,t,n)))})}())}},function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var s=n(1),o=n(0);const r=(e,t)=>{e>=200&&e<300&&t()},i=e=>{var t;if(!e)return{};const n=e.quantity||1,s=e.add_quantity||e.quantity||1;let o={option1:"",option2:"",option3:""};return null===(t=e.options)||void 0===t||t.forEach((e,t)=>{o["option"+(t+1)]=e.value}),{product_id:e.product_id,variant_id:e.variant_id,variant:o,name:e.product_title,item_price:e.price,quantity:n,number:s,properties:e.properties,sku:e.sku,vendor:e.vendor,type:""}},a=[{path:/\/api\/customers\/sign_up$/,method:"post",events:{[o.q]:({body:e},t)=>{t({accout:e.email,sign_up_method:e.email.indexOf("@")<0?"手机号":"邮箱"})}}}],c=[{path:/\/api\/cart$/,method:"get",events:{[o.e]:({response:e},t)=>{r(e.status,()=>{var n;(n=e.data,"[object Object]"===Object.prototype.toString.call(n))&&t(e.data.cart)})}}},{path:/\/api\/search$/,method:"get",events:{[o.o]:({response:e,url:t},n)=>{r(e.status,()=>{const o=e.data.data||{},{total:r}=o;let i=o.keyword;i||(i=Object(s.b)(t).keyword),n({keyWord:i,total:r,hasResult:r>0,source:"api"})})}}},{path:new RegExp("/api/products/[0-9a-fA-F]{4}(?:[0-9a-fA-F]{4}-){4}[0-9a-fA-F]{12}$"),method:"get",events:{[o.s]:({response:e},t)=>{r(e.status,()=>{var n;t({product:null===(n=e.data)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.product,selected:{},qty:1,source:"api"})})}}},{path:/\/api\/cart$/,method:"post",events:{[o.a]:({response:e},t)=>{r(e.status,()=>{var n;const s=null===(n=e.data.data)||void 0===n||null===(n=n.items)||void 0===n?void 0:n[0];t(i(s))})},[o.b]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/cart\/batch$/,method:"post",events:{[o.a]:({response:e},t)=>{r(e.status,()=>{var n;null===(n=e.data.items)||void 0===n||n.map(e=>{t(i(e))})})},[o.b]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/checkout\/order$/,method:"post",events:{[o.a]:({body:e,response:t},n)=>{r(t.status,()=>{var s;const o=null===(s=e.refer_info)||void 0===s?void 0:s.source;if("buy_now"==o){var r,a,c;const s=null===(r=t.data.data)||void 0===r||null===(r=r.items)||void 0===r?void 0:r[0],d=null===(a=e.refer_info)||void 0===a?void 0:a.pay_method,u=null===(c=t.data.data)||void 0===c?void 0:c.trade_id,l=Object.assign({},i(s),{source:o,pay_method:d,trade_id:u});n(l)}})},[o.f]:({body:e,response:t},n)=>{r(t.status,()=>{n({line_items:e&&e.line_items||[],refer_info:e&&e.refer_info||{}})})}}},{path:/\/api\/customers\/password_reset$/,method:"patch",events:{[o.n]:({response:e},t)=>{200===e.status?t({forget:!0}):422===e.status&&t({forget:!1})}}},{path:/\/api\/customers\/sign_up$/,method:"post",events:{[o.g]:({response:e},t)=>{r(e.status,()=>{t("register")})}}},{path:/\/api\/customers\/sign_in$/,method:"post",events:{[o.k]:({body:e,response:t},n)=>{const s=function(t,s){var o;n({login_method:e.email.indexOf("@")<0?"手机号":"邮箱",shop_name:null===(o=window.C_SETTINGS.shop)||void 0===o?void 0:o.shop_name,login_result:t,fail_reason:s||""})};if(200===t.status)s(!0);else if(422===t.status){const e=t.data.errors;s(!1,null!=e&&e.join?e.join(","):e)}}}},{path:/\/api\/customers\/sign_out$/,method:"post",events:{[o.l]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/customers\/newsletters$/,method:"post",events:{[o.j]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/cart\/[\w\-]+$/,method:"patch",events:{[o.b]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)}
1552)},[o.e]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.c]:({body:e,response:t},n)=>{r(t.status,()=>{n({cart:t.data.cart,item:e})})}}},{path:/\/api\/cart\/[\w\-]+$/,method:"delete",events:{[o.b]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.e]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.d]:({body:e,response:t},n)=>{r(t.status,()=>{n({cart:t.data.cart,item:e})})}}}],d=(e,t,n)=>{const o=Object(s.c)(t).pathname;return e.find(e=>{const t=e.path;if(e.method!==n.toLowerCase())return!1;if(t instanceof RegExp){if(t.test(o))return!0}else if(t===o)return!0})},u=(e,t)=>{if(!e)return;const n=(e=>{var t;const n={};return null===(t=window.djInterceptors)||void 0===t||null===(t=t.track)||void 0===t||t.forEach((t,s)=>{var o;null!=e&&null!==(o=e.events)&&void 0!==o&&o[t.event]&&(n[t.event]=Object.assign({},n[t.event],t.params),(null==t.once||t.once)&&window.djInterceptors.track.eject(s))}),n})(e);Object.keys((null==e?void 0:e.events)||{}).forEach(o=>{e.events[o](t,e=>{["undefined","object"].includes(typeof e)&&(e=Object.assign({},e,{_extra:n[o]})),Object(s.d)(o,e)})})},l=location.origin+"__recently-viewed-productIds__",p=(e,t)=>{try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){console.error(e)}},h=e=>{try{const t=window.localStorage.getItem(e);return t&&JSON.parse(t)}catch(e){console.error(e)}},_=({product:e,selected:t,qty:n,quantity:r})=>{var i;let a=e,c=t;const{product:d,selected:u}=y()||{};(null==e?void 0:e.id)!==(null==d?void 0:d.id)||null!=d&&null!==(i=d.options)&&void 0!==i&&i.length||(a=d,c=u),Object(s.d)(o.s,{product:a||{},selected:c||{},qty:n||r||1,source:"pageview"})},f=(e,t,n)=>{if(C_SETTINGS.meta.page.template_name===t)try{window.addEventListener(e,n)}catch{}},v=(e,t)=>
1552{f("load",e,t)};function y(){let e=document.querySelector("#product-json");return e?JSON.parse(e.innerHTML):"function"==typeof $?$(document).data("djproduct"):void 0}const m=()=>{v("product",()=>{let e={product:{},selected:{},qty:1},t=y();t&&Object.assign(e,t),requestAnimationFrame(()=>_(e)),requestAnimationFrame(()=>{let e=h(l)||[];const n=t&&t.product&&t.product.id;if(n){const t=e.indexOf(n);-1!==t&&e.splice(t,1),e.unshift(n),p(l,e)}})}),Object(s.a)(o.r,(e,t)=>{"complete"===document.readyState&&(t&&t.source&&"initial_load"===t.source||_(t))})};function g(){m(),v("search",()=>{const e=Object(s.b)(location.search).q,t=Number.parseInt("",10)||0;Object(s.d)(o.o,{keyword:e,total:t,hasResult:t>0,keyWord:e,source:"pageview"})}),v("thank_you",()=>{var e;const t=null===(e=window.ORDER)||void 0===e?void 0:e.id,n=h("__thank_you_already_event_map__")||{};null!=n&&n[t]||(n[t]=!0,p("__thank_you_already_event_map__",n),Object(s.d)(o.p,Object.assign({},window.ORDER||{},{order_count:window.ORDER.customer&&window.ORDER.customer.order_count})))}),v("thank_you",()=>{Object(s.d)(o.m,Object.assign({},window.ORDER||{}))}),v("product",()=>{Object(s.d)(o.m,Object.assign({},y()||{}))})}function b(){Object(s.a)(o.h,(e,{url:t,method:n,body:s})=>{const o=d(a,t,n);u(o,{url:t,body:s})}),Object(s.a)(o.i,(e,{request:t,response:n})=>{const{url:s,method:o,body:r}=t,i=d(c,s,o);u(i,{url:s,method:o,body:r,response:n})}),g()}},function(e,t){try{(()=>{const e=e=>{const t=e.split("&&")[0];if(!t)return[];const n=t.indexOf("=");let s="";return-1!==n&&(s=t.slice(n+1)),s?s.split(";").filter(e=>e):[]},t=(e,t)=>{if(!t)return;if(/\/cuttlefish\//.test(t))return;return e.some(e=>{let n=t;return t.replace&&(n=t.replace("https:","")),n==e.replace("https:","")})},n=["application/javascript","text/javascript"],s=(e,t)=>{self.MainThread.upgradeScript(e,t)},o=o=>{const r=e(o);new MutationObserver(e=>{e.forEach(({addedNodes:e})=>{e.forEach(e=>{(e=>1===e.nodeType&&"SCRIPT"===e.tagName&&(!e.type||n.includes(e.type)))(e)&&(t(r,e.src)||"worker"==e.getAttribute("scope"))&&(e.type="text/spz-script",s(e.src,e))})})}).observe(document.documentElement,{childList:!0,subtree:!0})},r=o=>{const r=e(o),i=document.createElement,a=(e,s)=>e&&t(r,e)&&n.includes(s);document.createElement=function(e){const t=i.call(document,e);return"script"===e.toLowerCase()&&function(e){let t="",n="text/javascript";Object.defineProperty(e,"src",{get:function(){return t},set:function(o){t=o,e.setAttribute("src",o),a(t,n)&&(e.type="text/spz-script",s(t))}}),Object.defineProperty(e,"type",{get:function(){return n},set:function(s){n=s,a(t,n)&&(n="text/spz-script"),e.setAttribute("type",n)}});const o=e.setAttribute;e.setAttribute=function(){const t=Array.prototype.slice.call(arguments);"src"===t[0]?a(t[1],e.type)&&(e.type="text/spz-script",s(t[1])):"type"===t[0]&&a(e.src,t[1])&&(t[1]="text/spz-script"),o.apply(e,t)}}(t),t}};(()=>{const e="";e.includes("script_url")&&!e.includes("is_switch=0")&&(self.MainThread||(()=>{const e=window.C_SETTINGS.shop.cdn_domain+"cuttlefish/plugin",t=document.createElement("script");t.src=e+"/main.js",t.crossOrigin="anonymous",t.setAttribute("async",""),document.head.appendChild(t)})(),o(e),r(e))})()})()}catch(e){console.log(e)}},,,,,,function(e,t,n){n(13),n(6)},function(e,t,n){"use strict";n.r(t);var s=n(2),o=n(4),r=n(5),i=n(3);Object(s.a)(),Object(o.a)(),Object(i.a)(),Object(r.a)()}]);/* top_v2-end */
1553</script>
1553
1554<style id="spz-theme-vars">
1555  :root {
1556    --spz-theme-pdp-title-font-family: var(--font-heading-family);
1557    --spz-theme-pdp-title-font-size: calc(var(--type-heading-font-size) * 0.8);
1558    --spz-theme-pdp-title-line-height: 1.25;
1559    --spz-theme-pdp-title-font-weight: var(--font-heading-weight);
1560    --spz-theme-pdp-title-color: var(--color-product-title-text);
1561    --spz-theme-pdp-subtitle-font-size: var(--type-text-font-size);
1562    --spz-theme-pdp-subtitle-line-height: 1.2;
1563    --spz-theme-pdp-subtitle-font-weight: var(--font-body-weight);
1564    --spz-theme-pdp-subtitle-color: #9F9F9F;
1565    --spz-theme-pdp-price-font-family: var(--font-heading-family);
1566    --spz-theme-pdp-price-font-size: calc(var(--type-heading-font-size) * .8);
1567    --spz-theme-pdp-price-line-height: 1.2;
1568    --spz-theme-pdp-price-font-weight: 600;
1569    --spz-theme-pdp-price-color: var(--color-price-text);
1570    --spz-theme-pdp-compare-price-font-size: calc(var(--type-text-font-size) + 2px);
1571    --spz-theme-pdp-compare-price-line-height: 1.2;
1572    --spz-theme-pdp-compare-price-font-weight: var(--font-body-weight);
1573    --spz-theme-pdp-compare-price-color: var(--color-compare-at-price-text);
1574    --spz-theme-pdp-save-badge-font-size: calc(var(--type-text-font-size) - 2px);
1575    --spz-theme-pdp-save-badge-line-height: 1.2;
1576    --spz-theme-pdp-save-badge-font-weight: 600;
1577    --spz-theme-pdp-save-badge-color: var(--color-save-price-text);
1578    --spz-theme-pdp-save-badge-border: 1px solid currentColor;
1579    --spz-theme-pdp-save-badge-radius: 2px;
1580    --spz-theme-pdp-save-badge-padding: 0px 4px;
1581    --spz-theme-pdp-variant-title-font-family: var(--font-body-family);
1582    --spz-theme-pdp-variant-title-font-size: calc(var(--type-text-font-size) + 2px);
1583    --spz-theme-pdp-variant-title-font-weight: 600;
1584    --spz-theme-pdp-variant-font-size: var(--type-text-font-size);
1585    --spz-theme-pdp-variant-line-height: 1.15;
1586    --spz-theme-pdp-variant-font-weight: var(--font-body-weight);
1587    --spz-theme-pdp-variant-color: var(--color-body-text-75);
1588    --spz-theme-pdp-variant-border: 1px solid var(--color-border);
1589    --spz-theme-pdp-variant-radius: var(--btn-fixed-border-radius);
1590    --spz-theme-pdp-variant-min-width: auto;
1591    --spz-theme-pdp-variant-min-height: auto;
1592    --spz-theme-pdp-variant-max-width: none;
1593    --spz-theme-pdp-variant-padding: 13px 16px;
1594    --spz-theme-pdp-variant-gap: 12px;
1595    --spz-theme-pdp-qty-label-font-family: var(--font-body-family);
1596    --spz-theme-pdp-qty-label-font-size: calc(var(--type-text-font-size) + 2px);
1597    --spz-theme-pdp-qty-label-line-height: 1.25;
1598    --spz-theme-pdp-qty-label-font-weight: 600;
1599    --spz-theme-pdp-qty-label-color: var(--color-body-text);
1600    --spz-theme-pdp-qty-font-size: calc(var(--type-text-font-size) + 2px);
1601    --spz-theme-pdp-qty-radius: 2px;
1602    --spz-theme-pdp-atc-button-font-size: calc(var(--type-text-font-size) + 2px);
1603    --spz-theme-pdp-atc-button-line-height: 1.25;
1604    --spz-theme-pdp-atc-button-font-weight: 500;
1605    --spz-theme-pdp-atc-button-height: 52px;
1606    --spz-theme-pdp-atc-button-padding: 0px 0px 0px 0px;
1607    --spz-theme-pdp-atc-button-radius: var(--btn-border-radius);
1608    --spz-theme-pdp-buy-button-font-size: calc(var(--type-text-font-size) + 2px);
1609    --spz-theme-pdp-buy-button-line-height: 1.25;
1610    --spz-theme-pdp-buy-button-font-weight: 500;
1611    --spz-theme-pdp-stock-note-font-size: var(--type-text-font-size);
1612    --spz-theme-pdp-stock-note-line-height: 1.2;
1613    --spz-theme-pdp-stock-note-font-weight: var(--font-body-weight);
1614    --spz-theme-pdp-stock-note-color: var(--color-price-text);
1615    --spz-theme-plp-title-font-size: 24px;
1616    --spz-theme-plp-title-line-height: 1.3;
1617    --spz-theme-plp-title-font-weight: 400;
1618    --spz-theme-plp-title-font-family: var(--font-body-family);
1619    --spz-theme-plp-title-color: var(--color-general-heading-text);
1620    --spz-theme-plp-card-title-font-size: var(--type-text-font-size);
1621    --spz-theme-plp-card-title-line-height: 1.25;
1622    --spz-theme-plp-card-title-font-weight: var(--font-heading-weight);
1623    --spz-theme-plp-card-title-font-family: var(--font-heading-family);
1624    --spz-theme-plp-card-title-color: var(--color-product-title-text);
1625    --spz-theme-plp-card-price-font-size: calc(var(--type-text-font-size) + 2px);
1626    --spz-theme-plp-card-price-font-weight: 600;
1627    --spz-theme-plp-card-price-color: var(--color-price-text);
1628    --spz-theme-plp-card-compare-font-size: var(--type-text-font-size);
1629    --spz-theme-plp-card-compare-line-height: 1.15;
1630    --spz-theme-plp-card-compare-font-weight: var(--font-body-weight);
1631    --spz-theme-plp-card-compare-color: var(--color-compare-at-price-text);
1632    --spz-theme-plp-badge-font-size: 12px;
1633    --spz-theme-plp-badge-padding: 2px 4px;
1634    --spz-theme-plp-badge-radius: var(--global-border-radius);
1635    --spz-theme-plp-badge-color: var(--color-label-text);
1636    --spz-theme-plp-soldout-color: var(--color-sold-label-text);
1637    --spz-theme-plp-quick-add-color: var(--color-quick-shop-btn-bg);
1638    --spz-theme-plp-swatch-gap: 8px;
1639    --spz-theme-plp-swatch-radius: var(--global-fixed-border-radius);
1640    --spz-theme-plp-card-image-radius: var(--global-small-border-radius);
1641    --spz-theme-plp-card-image-aspect-ratio: calc(100 / 100);
1642    --spz-theme-plp-card-radius: 0;
1643    --spz-theme-cart-drawer-width: 468px;
1644    --spz-theme-cart-drawer-radius: 0;
1645    --spz-theme-cart-title-font-size: calc(var(--type-heading-font-size) * 0.8);
1646    --spz-theme-cart-title-line-height: 1.17;
1647    --spz-theme-cart-title-font-weight: var(--font-heading-weight);
1648    --spz-theme-cart-item-title-font-size: var(--type-text-font-size);
1649    --spz-theme-cart-item-title-line-height: 1.25;
1650    --spz-theme-cart-item-title-font-weight: var(--font-body-weight);
1651    --spz-theme-cart-item-title-font-family: var(--font-body-family);
1652    --spz-theme-cart-item-title-color: var(--color-product-title-text);
1653    --spz-theme-cart-item-variant-font-size: var(--type-text-font-size);
1654    --spz-theme-cart-item-variant-color: var(--color-body-text-70);
1655    --spz-theme-cart-item-price-font-size: calc(var(--type-text-font-size) + 2px);
1656    --spz-theme-cart-item-price-line-height: 1.25;
1657    --spz-theme-cart-item-price-font-weight: 500;
1658    --spz-theme-cart-item-price-color: var(--color-price-text);
1659    --spz-theme-cart-qty-radius: var(--global-border-radius);
1660    --spz-theme-cart-qty-border: 1px solid var(--color-border);
1661    --spz-theme-cart-item-image-radius: var(--global-fixed-border-radius);
1662    --spz-theme-cart-summary-card-bg: var(--color-cart-subtotal-bg);
1663    --spz-theme-cart-checkout-bg: var(--color-primary-btn-bg);
1664    --spz-theme-cart-checkout-color: var(--color-primary-btn-text);
1665    --spz-theme-cart-checkout-height: 46px;
1666    --spz-theme-cart-checkout-font-size: calc(var(--type-text-font-size) + 2px);
1667    --spz-theme-cart-checkout-font-weight: 700;
1668    --spz-theme-cart-checkout-radius: var(--btn-border-radius);
1669    --spz-theme-atc-modal-width: 495px;
1670    --spz-theme-atc-modal-max-height: 86vh;
1671    --spz-theme-atc-modal-border-width: 0;
1672    --spz-theme-atc-modal-radius: var(--global-small-border-radius);
1673    --spz-theme-page-width: 1440px;
1674    --spz-theme-page-gutter: var(--page-spacing);
1675    --spz-theme-grid-gap-x: 40px;
1676    --spz-theme-grid-gap-y: 44px;
1677    --spz-theme-button-radius: var(--btn-border-radius);
1678    --spz-theme-button-border-width: 1px;
1679    --spz-theme-button-hover-bg-color: var(--color-primary-btn-bg);
1680    --spz-theme-button-hover-text-color: var(--color-primary-btn-text);
1681    --spz-theme-input-bg-color: transparent;
1682    --spz-theme-input-text-color: var(--color-body-text);
1683    --spz-theme-input-border-color: var(--color-border);
1684    --spz-theme-input-radius: var(--global-border-radius);
1685    --spz-theme-toast-radius: 2px;
1686    --spz-theme-progress-radius: 1px;
1687    --spz-theme-pill-radius: 9999px;
1688  }
1689  #cart-drawer-modal, [data-spz-theme-scope="cart-drawer"] {
1690    --spz-theme-cart-item-price-font-size: var(--type-text-font-size);
1691  }
1692  @media (max-width: 959px) {
1693    :root {
1694      --spz-theme-pdp-title-font-size: calc(var(--type-heading-font-size) * 0.47);
1695      --spz-theme-pdp-variant-title-font-size: var(--type-text-font-size);
1696      --spz-theme-pdp-variant-padding: 10px 16px;
1697      --spz-theme-pdp-atc-button-height: 42px;
1698      --spz-theme-pdp-atc-button-padding: px px px px;
1699      --spz-theme-cart-drawer-width: 84.62%;
1700      --spz-theme-page-gutter: 16px;
1701      --spz-theme-grid-gap-x: 15px;
1702      --spz-theme-grid-gap-y: 24px;
1703      --spz-theme-toast-radius: 0;
1704    }
1705  }
1706</style>
1707
1708<script type="text/javascript">
1709/* golden-top-start */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="https://static.staticdj.com/",n(n.s=13)}([function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return a})),n.d(t,"m",(function(){return c})),n.d(t,"j",(function(){return s})),n.d(t,"l",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"h",(function(){return l})),n.d(t,"f",(function(){return m})),n.d(t,"g",(function(){return f})),n.d(t,"i",(function(){return _})),n.d(t,"k",(function(){return g}));const r=()=>{var e=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,t=/(android)/i.test(navigator.userAgent);return e?1:t?2:3},i=()=>{String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=!t||t<0?0:+t,this.substring(t,t+e.length)===e}});var e=window.location.pathname||"";return"/"==e||e.startsWith("/home")||e.startsWith("/index")?"index":e.startsWith("/products/")?"product":e.startsWith("/collections/")||e.startsWith("/products")?"product_group":e.startsWith("/promotions/")?"activity":e.startsWith("/search")?"search":e.startsWith("/checkout/")?"checkout":"other"},o=function(e){let t=e&&e.discount_applications;if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return}if(Array.isArray(t))return t.map((function(e){return e&&e.discount_id})).join(",")},a=function(e){return(e&&e.line_items||[]).reduce((function(e,t){return e+(t.quantity||0)}),0)},c=(e,t)=>{var n;const r=new CustomEvent(e,{detail:t||null,bubbles:!0});null===(n=document.body)||void 0===n||n.dispatchEvent(r)},s=(e,t)=>{"dj.addToCart"===e&&window.__SEAHORSE_BUS.addEventListener(e,(function(n){const r={type:e,detail:n};n&&!n.__is_seahorse_event||t(r,n)})),document.addEventListener(e,(function(n){"dj.addToCart"===e&&n.detail&&n.detail.__is_seahorse_event||t(n,n.detail)}))},u=(e,t,n,r=!1)=>{var i=new Date;return i.setTime(i.getTime()+31536e6),document.cookie=e+"="+encodeURIComponent(t)+";expires="+(n||i).toGMTString()+";domain="+location.host.split(".").map((function(e,t,n){return 0==t&&n.length>2?"":e})).join(".")+";path=/"+(r?";SameSite=None;Secure":""),!0},d=e=>{var t=new RegExp("(^| )"+e+"=([^;]*)(;|$)"),n=document.cookie.match(t);return n?decodeURIComponent(n[2]):""},l=()=>window&&window.sessionStorage&&"function"==typeof window.sessionStorage.setItem&&"function"==typeof window.sessionStorage.getItem,m=(e="")=>e.split("/")[2]||"",f=()=>C_SETTINGS.meta&&C_SETTINGS.meta.page&&14===C_SETTINGS.meta.page.template_type,_=()=>C_SETTINGS.meta&&C_SETTINGS.meta.page&&42===C_SETTINGS.meta.page.template_type,g=function(e){return"number"!=typeof e||isNaN(e)?void 0:Math.round(10*e)/10}},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));const r="_extra",i={UTM:atob("c2hvcGxhenphX2FfcA=="),UTM_PARAMS:"utm_a_p",SESSION_ID_OLD:"session_id",SESSION_ID_NEW:"ss_id_a_p"},o="data-track"},function(e,t,n){"use strict";n.d(t,"h",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return _})),n.d(t,"g",(function(){return g})),n.d(t,"c",(function(){return p})),n.d(t,"f",(function(){return h})),n.d(t,"a",(function(){return v}));var r=n(0);n.d(t,"b",(function(){return r.b}));var i=n(1);let o=0;const a={name:"fbclid",get:()=>Object(r.b)(a.name),set:()=>{var e=new RegExp(`(^|&)${a.name}=([^&]*)(&|$)`),t=window.location.search.substring(1).match(e);if(null!=t&&t[2]){var n="fb.1."+(new Date).getTime()+"."+t[2];Object(r.l)(a.name,n)}}},c={name:"_epik",get:()=>{try{const t=Object(r.b)(c.name);if(t)return t;var e=window.location.search.substring(1).match(/(^|&)epik=([^&]*)(&|$)/);
1709return null!=e&&e[2]?decodeURIComponent(e[2]):""}catch(e){return""}}},s={name:"ttclid",get:()=>Object(r.b)(s.name),set:()=>{var e=new RegExp(`(^|&)${s.name}=([^&]*)(&|$)`),t=window.location.search.substring(1).match(e);null!=t&&t[2]&&Object(r.l)(s.name,t[2])}},u={name:i.a.SESSION_ID_NEW,get:()=>Object(r.b)(u.name),set:()=>{let e=u.get()||Object(r.b)(i.a.SESSION_ID_OLD);const t=!e;e||(e=(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString());const n=new Date((new Date).getTime()+18e5),o="https:"===location.protocol;return Object(r.l)(u.name,e,n,o),Object(r.l)(i.a.SESSION_ID_OLD,e,n,o),{isNew:t}}},d={name:atob("c2hvcGxhenphX3NvdXJjZQ=="),get:()=>{try{return Object(r.b)(d.name)||localStorage[d.name]}catch(e){}return""},set:()=>{var e=document.referrer,t=location.href,n=navigator.userAgent,i=([["Facebook",/(facebook)|(fbclid=.+)/i,/fbclid=.+/,/FBAV|FBAN|FBIOS/i],["GoogleAds",/gclid=.+/i,/gclid=.+/i,0],["Google",/google/i,0,0],["Instagram",/instagram/i,0,/instagram/i],["Pinterest",/(pinterest)|(epik=.+)/i,/epik=.+/i,/pinterest/i],["Snapchat",/snapchat/i,0,/snapchat/i],["TikTok",/ads.tiktok/i,0,/tiktok/i],["Mailchimp",/mc_cid=.+/i,0,0],["Baidu",/baidu/i,0,0],["YouTube",/youtube/i,0,/youtube/i],["Twitter",/(twitter)|(t.co)/i,0,/twitter/i],["LinkedIn",/linkedin/i,0,/linkedin/i],["WhatsApp",/whatsapp/i,0,/whatsapp/i],["Reddit",/reddit/i,0,0],["Yahoo",/yahoo/i,0,0],["Bing",/bing/i,0,0],["Yandex",/yandex/i,0,0]].find((function(r){return r[1]&&r[1].test(e)||r[2]&&r[2].test(t)||r[3]&&r[3].test(n)}))||[""])[0],o=d.name,a=new Date((new Date).getTime()+6048e5);d.get()||Object(r.l)(o,JSON.stringify({$first_visit_url:t,$latest_referrer_host:i,expire:a.getTime()}),a)&&function(){try{localStorage[o]=d.get()}catch(e){}}(),!d.get()&&localStorage[o]&&((JSON.parse(localStorage[o])&&JSON.parse(localStorage[o]).expire||0)<(new Date).getTime()||Object(r.l)(o,localStorage[o])),d.get()&&!localStorage[o]&&function(){try{localStorage[o]=d.get()}catch(e){}}()}},l={name:"client_id",get:()=>Object(r.b)(l.name)},m=()=>{(()=>{const e=l.get();d.get()||(o=1),e&&"null"!=e||(o=1)})(),a.set(),s.set();const e=u.set();return d.set(),{sessionId:e}},f=()=>o,_=()=>a.get(),g=()=>s.get(),p=()=>c.get(),h=()=>u.get(),v=()=>l.get()},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0);const i=(e=!0)=>{if(e)return window.djTracker=window.djTracker||[],void(window.djTrack=window.djTrack||function(e,t){window.djTracker.push({eventName:e,params:t})});window.djTrack=function(e,t={}){e&&Object(r.m)("dj.track",{eventName:e,params:t})},(window.djTracker||[]).map(({eventName:e,params:t})=>{window.djTrack(e,t)})}},,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(0),i=n(1);const o=e=>{try{const t=localStorage.getItem(e);if(!t)return"";const n=JSON.parse(t);return!n||!n.expire||n.expire<(new Date).getTime()?"":n.value||""}catch(e){return""}},a=(e,t,n)=>{try{localStorage.setItem(e,JSON.stringify({value:t,expire:n}))}catch(e){}},c=e=>{let t=Object(r.b)(e);return t||(t=o(e),t&&Object(r.l)(e,t,new Date((new Date).getTime()+18e5))),t},s=(e,t)=>{const n=(new Date).getTime()+18e5;Object(r.l)(e,t,new Date(n)),a(e,t,n)},u={name:"last_template_name",get:()=>c(u.name),set:e=>{s(u.name,e)}},d={name:"latest_referrer",get:()=>c(d.name),set:e=>{s(d.name,e)}},l={name:"last_land_url",get:()=>c(l.name),set:(e,t)=>{if(Object(r.i)())return;const n=e.sessionId.isNew;if(Object(r.g)()&&!n)return;let i=l.get(),o=u.get(),a=d.get();const c=Object(r.f)(document.referrer),m=location.host,f=c&&m&&c!==m,_=c===m&&"admin"===(document.referrer||"").split("/")[3],g=!document.referrer;var p,h;(f||_||g||n&&c===m)&&(i=location.href,o=(null===(p=C_SETTINGS.meta)||void 0===p||null===(h=p.page)||void 0===h?void 0:h.template_name)||"",a=document.referrer);i&&s(l.name,i),o&&u.set(o),a&&d.set(a)}},m=()=>{let e=SHOP_PARAMS.fbq_pv_event_id;return e||(e=(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString(),Object.defineProperty(SHOP_PARAMS,"fbq_pv_event_id",{configurable:!1,get:()=>e,set:()=>{console.log("[golden] SHOP_PARAMS.fbq_pv_event_id 生成后不允许修改")}})),e},f=()=>{const e=new URLSearchParams(window.location.search);return["utm_source","utm_medium","utm_campaign","utm_term","utm_content"].map(t=>{const n=e.get(t);return n?`${t}=${encodeURIComponent(n)}`:null}).filter(e=>null!==e).join("&")};function _(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,g(r.key),r)}}function g(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}const p="image",h="beacon",v="event_info",S="base_property",b="extra_properties";let w=function(e,t){return n=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.track=this.track.bind(this),this.distinct_id="",this.trackParams={$screen_height:Number(screen.height)||0,$screen_width:Number(screen.width)||0,$referrer:document.referrer,$referrer_host:document.referrer?document.referrer.split("/")[2]:"",$title:document.title,$url:()=>location.href,$url_path:location.pathname},this.eventInfo={},this.tempTrackParams={}},(r=[{key:e,value:function(e,t){return navigator.sendBeacon(this.getServerUrlWithEvent_(t),this.get
1709SendData_(e))}},{key:t,value:function(e,t){const n=document.createElement("img");return n.width=1,n.height=1,n.src=this.getSendUrl_(this.getServerUrlWithEvent_(t),e),!0}},{key:"getSendUrl_",value:function(e,t){const n=this.base64Encode_(t),r="crc="+this.hashCode_(n);return-1!==e.indexOf("?")?e+"&data="+encodeURIComponent(n)+"&ext="+encodeURIComponent(r):e+"?data="+encodeURIComponent(n)+"&ext="+encodeURIComponent(r)}},{key:"getSendData_",value:function(e){const t=this.base64Encode_(e),n="crc="+this.hashCode_(t);return"data="+encodeURIComponent(t)+"&ext="+encodeURIComponent(n)}},{key:"base64Encode_",value:function(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)})))}},{key:"hashCode_",value:function(e){if("string"!=typeof e)return 0;var t=0;if(0==e.length)return t;for(var n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return t}},{key:"getProperties_",value:function(e,t){let n=Object.assign({},this.trackParams,this.getEventInfo(e),this.tempTrackParams,t);for(const e in n){let t=n[e];t instanceof Function&&(t=t()),n[e]=t}return n}},{key:"getDistinctId_",value:function(){return this.distinct_id||(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString()}},{key:"getTrackId_",value:function(){return Number(String(Math.random()).slice(2,5)+String(Math.random()).slice(2,4)+String((new Date).getTime()).slice(-4))}},{key:"clearTemp_",value:function(){this.tempTrackParams={}}},{key:"track",value:function(e,t){const n={distinct_id:this.getDistinctId_(),_track_id:this.getTrackId_(),type:"track",event:e,properties:this.getProperties_(e,t)};n.properties.client_id||(n.properties.client_id="2");const r=JSON.stringify(n);this[this.getSendType_()](r,e)||this[p](r,e),this.clearTemp_()}},{key:"getSendType_",value:function(){return this.sendType_||("object"==typeof navigator&&"function"==typeof navigator.sendBeacon?this.sendType_=h:this.sendType_=p),this.sendType_}},{key:"getServerUrl_",value:function(){if(!this.serverUrl_){let e=window.C_SETTINGS.sa_server_url;this.getSendType_()===h&&(e=e.replace("/sa?","/beacon/sa?")+"&gzip=0"),this.serverUrl_=e.replace(/\/sa$/,"/sa.gif").replace(/(\/sa)(\?[^\/]+)$/,"/sa.gif$2")}return this.serverUrl_}},{key:"getServerUrlWithEvent_",value:function(e){let t=this.getServerUrl_();if(e){const n=-1!==t.indexOf("?")?"&":"?";t=t+n+"event="+encodeURIComponent(e)}return t}},{key:"getEventInfo",value:function(e){const t=this.eventInfo[e];return t?0===Object.keys(t).length?{}:{[v]:JSON.stringify(t)}:{}}},{key:"registerPage",value:function(e,t=!1){t?this.tempTrackParams=e:this.trackParams=Object.assign({},this.trackParams,e||{})}},{key:"registerPageOnce",value:function(e){this.tempTrackParams={...this.tempTrackParams,...e}}},{key:"registerBaseInfo",value:function(e,t){if(!e||!t)return;let n=(this.eventInfo[e]||{})[S];this.eventInfo[e]={...this.eventInfo,[S]:Object.assign({},n||{},t||{})}}},{key:"registerExtraInfo",value:function(e,t,n){if(!e||null==t||!t.function_name)return;let r=(this.eventInfo[e]||{})[b]||[];r=r.filter(e=>e.function_name!==t.function_name),n||r.push({...t}),this.eventInfo[e]={...this.eventInfo[e]||{},[b]:r}}},{key:"identify",value:function(e){this.distinct_id=e}}])&&_(n.prototype,r),i&&_(n,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,i}(h,p);var y=n(2),T=n(3);const k=function(){var e;const t=((null===(e=C_SETTINGS.theme)||void 0===e?void 0:e.merchant_theme_name)||"").replace(/\s/g,"");return{Blackwind:"BlackWind",SnowinSummer:"SnowInSummer","Amazing-BuyonAmazon":"Amazing"}[t]||t},O=function(){let e="";try{e=window.ORDER&&window.ORDER.checkout_page_type||("string"==typeof(window.ORDER&&window.ORDER.config)?JSON.parse(window.ORDER.config).page_type:"")}catch(e){}return e},j=e=>{var t;window.sa=new w,window.sa.registerPage((({initCookieResult:e})=>{var t,n,o,a,c,s,_,g,p,h,v,S,b;return{platform:"shop",client:3==Object(r.c)()?"pc":"mobile",client_id:function(){return Object(y.a)()||"1"},session_id:Object(y.f)(),new_session:e.sessionId.isNew?1:0,store_id:(null===(t=C_SETTINGS.shop)||void 0===t?void 0:t.shop_id)||"",store_tz:(null===(n=C_SETTINGS.shop)||void 0===n?void 0:n.time_zone)||"",theme_name:k(),theme_version:(null===(o=C_SETTINGS.theme)||void 0===o?void 0:o.theme_version_id)||"",template_name:(null===(a=C_SETTINGS.meta)||void 0===a||null===(c=a.page)||void 0===c?void 0:c.template_name)||"",template_type:(null===(s=C_SETTINGS.meta)||void 0===s||null===(_=s.page)||void 0===_?void 0:_.template_type)||"",root_url:(null===(g=C_SETTINGS.routes)||void 0===g?void 0:g.root)||"",user_agent:navigator.userAgent,env_tag:[Object(y.b)("awesomeab")].filter(
1709Boolean).join(","),c_id:Object(y.b)("_c_id"),tracking_consent:function(){return Object(y.b)("_tracking_consent")},is_new_client:Object(y.e)(),event_id:m(),connection_type:navigator.connection&&navigator.connection.effectiveType,rtt:navigator.connection&&navigator.connection.rtt,downlink:navigator.connection&&navigator.connection.downlink,checkout_step:-1!=location.href.indexOf("/thank_you")?"checkout_result":window.ORDER&&window.ORDER.step,checkout_page_type:O(),AD_ttc:Object(y.g)(),AD_epik:function(){return Object(y.c)()},login_customer_id:(null===(p=C_SETTINGS.customer)||void 0===p?void 0:p.customer_id)||"",customer_email:(null===(h=C_SETTINGS.customer)||void 0===h?void 0:h.customer_email)||"",resource_id:(null===(v=C_SETTINGS.meta)||void 0===v||null===(S=v.page)||void 0===S?void 0:S.resource_id)||"",[atob("c2hvcGxhenphX2FfcA==")]:f()||Object(y.b)(i.a.UTM_PARAMS)||Object(y.b)(i.a.UTM)||"",market_id:(null===(b=C_SETTINGS.market)||void 0===b?void 0:b.market_id)||"",last_land_url:l.get(),last_template_name:u.get(),$latest_referrer:d.get(),event_time:function(){return Date.now()}}})({initCookieResult:e})),window.sa.identify((null===(t=C_SETTINGS.customer)||void 0===t?void 0:t.customer_id)||Object(y.a)())};var I;(()=>{const e=Object(y.h)();((e,t="v2")=>{l.set(e,t)})(e),j(e),Object(T.a)()})(),null===(I=window.sa)||void 0===I||I.track("$pageview")}]);/* golden-top-end */
1710</script>
1710
1711
1712
1713<!-- meta_sdk start --->
1714<script>
1715try{(function(){!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version="2.0";n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,"script","https://connect.facebook.net/en_US/fbevents.js");var key1=atob("U0hPUF9QQVJBTVM=");var key2="C_SETTINGS";var id=new Date().getTime().toString()+(Math.random().toFixed(2)*400+100).toString();var addPvEId=function(key){var _window_key;return window[key]=Object.assign(window[key]||{},{fbq_pv_event_id:((_window_key=window[key])===null||_window_key===void 0?void 0:_window_key.fbq_pv_event_id)||id})};addPvEId(key1);addPvEId(key2)})()}catch(e){}
1716</script>
1716
1717<!-- meta_sdk end --->
1718<!-- track_config start -->
1719<script>
1720try{(function(){var a="AD_TRACK_ASSETS";var c="track_config";var r={"meta":{"pixels":[{"pixel":"709442593435299","delay_second":0,"purchase_total_price":true,"exclude_freight_insurance":false}]}};var n=window;var t;Object.assign(n[a]||(n[a]={}),(t={},t[c]=n[a][c]?Object.assign(n[a][c],r):r,t))})()}catch(a){}
1721</script>
1721
1722<!-- track_config end -->
1723
1724<script type="text/javascript">Object.assign(window.AD_TRACK_ASSETS || (window.AD_TRACK_ASSETS={}),{"golden_world":"golden_world.PSV6FO2D.js"});</script>
1724
1725</head>
1726  <body class="nova template-cart m-0 type-text-font-family leading-1.3" id="nova-theme">
1727    <style>
1728      .back-to-top {
1729        position: fixed;
1730        right: 16px;
1731        bottom: 34px;
1732        width: 50px;
1733        height: 50px;
1734        background-color: rgba(41,41,41,.4);;
1735        transition: transform 300ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
1736        z-index: calc(var(--z-index-fixed) + 5);
1737      }
1738      .back-to-top[show] { transform: translateY(0); }
1739      @media (min-width: 960px) {
1740        .back-to-top {
1741          right: 32px;
1742          bottom: 24px;
1743        }
1744      }
1745    </style>
1746    <div class="hidden back-to-top flex items-center justify-center rounded-full cursor-pointer shadow" id="top-button" @tap="nova-theme.scrollTo(position='top');">
1747        <svg class="" width="16" height="18" fill="#FFF" xmlns="http://www.w3.org/2000/svg"><g><path d="M7.58 4.333a.6.6 0 0 1 .848 0l7.283 7.283a.3.3 0 0 1 0 .425l-.764.763a.3.3 0 0 1-.424 0L8.85 7.131V17.7a.3.3 0 0 1-.3.3H7.47a.3.3 0 0 1-.3-.3V7.118l-5.686 5.686a.3.3 0 0 1-.424 0l-.764-.764a.3.3 0 0 1 0-.424l7.283-7.283ZM0 .3A.3.3 0 0 1 .3 0h15.4a.3.3 0 0 1 .3.3v1.06a.3.3 0 0 1-.3.3H.3a.3.3 0 0 1-.3-.3V.3Z"/></g></svg>
1748    </div>
1749    <spz-observer layout="logic" value="500" @scrollexceedboundary="top-button.toggleClass(class='hidden', force=false);" @scrollnotexceedboundary="top-button.toggleClass(class='hidden', force=true);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer>
1750  <template id="product-snippet-template">
1751  <div>
1752    ${(function(){
1753      const get_random_six_digits = () => {
1754        return Math.random().toString().slice(-6)
1755      };
1756      const wholesale_enabled = false;
1757      const setting_product_image_display = "100%";
1758      const product_image = data.image;
1759      const secondary_image = data.secondImage;
1760      const image_width = product_image.width;
1761      let image_height = product_image.height;
1762      if(setting_product_image_display == '100%'){
1763        image_height = image_width
1764      }else if(setting_product_image_display == '133.33%'){
1765        image_height = image_width * 1.3333;
1766      };
1767      const product_image_hover_on = true && !!secondary_image.src;
1768      const has_save_label = true && ((+data.compare_at_price) > (+data.price));
1769      const is_single_variant = data.variants.length == 1;
1770      const min_price_variant_href = (data.min_price_variant && data.min_price_variant.available) ? data.min_price_variant.withinUrl : data.withinUrl;
1771      const retail_price_max = data.retail_price_max || data.compare_at_price_max;
1772      const THUMBNAILS_MAX_SIZE = 3;
1773      const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE);
1774      const image_wrap_id = 'image_wrap_' + get_random_six_digits();
1775      const image_carousel_id = 'image_carousel_' + get_random_six_digits();
1776      const thumbnails_selector_id = 'thumbnails_selector_' + get_random_six_digits();
1777      const form_id = 'form_' + get_random_six_digits();
1778      const mixed_wholesale = data.mixed_wholesale;
1779      return `
1780        <div class="product-snippet__img-wrapper relative" id="${image_wrap_id}">
1781          <a
1782            class="product-snippet__img-link relative block overflow-hidden"
1783            spz-href="${data.withinUrl}"
1784            ${product_image_hover_on?"has-secondary-image":""}
1785          >
1786            <spz-img
1787              class="product-snippet__img product-snippet__img_main"
1788              layout="responsive"
1789              width="${image_width}"
1790              height="${image_height}"
1791              src="${product_image.src}"
1792              alt="${product_image.alt}"
1793              object-fit="cover"
1794              auto-fit
1795            ></spz-img>
1796            <spz-carousel
1797                class="product-snippet__img product-snippet__img_carousel"
1798                id="${image_carousel_id}"
1799                layout="responsive"
1800                width="${image_width}"
1801                height="${image_height}"
1802                initial-slide="0"
1803                slide
1804                effect="fade"
1805                spz-if="${thumbnails.length>0}"
1806              >
1807                <spz-img
1808                  spz-if="!!item.image"
1809                  layout="responsive"
1810                  width="${image_width}"
1811                  height="${image_height}"
1812                  src="${item.image && item.image.src || ''}"
1813                  alt="${item.image && item.image.alt || ''}"
1814                  object-fit="cover"
1815                  auto-fit
1816                  spz-for="(item, index) in thumbnails"
1817                  key="index"
1818                ></spz-img>
1819              </spz-carousel>
1820            <spz-img
1821              class="product-snippet__img-secondary absolute top-0"
1822              layout="responsive"
1823              width="${image_width}"
1824              height="${image_height}"
1825              src="${secondary_image.src || ''}"
1826              alt="${secondary_image.alt}"
1827              object-fit="cover"
1828              auto-fit
1829            ></spz-img>
1830          </a>
1831          <button
1832              type="button"
1833              class="product-snippet__quick-shop-icon"
1834              data-track-product-id="${data.id}"
1835              data-track-position=""
1836              data-track="quick_shop"
1837              @tap="quick-shop.open;quick-shop-render.render(src='/api/products/${data.id}');"
1838              spz-if="${data.available && !(!wholesale_enabled && is_single_variant)}"
1839            >
1840              <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg>
1841            </button>
1842            <spz-product-form
1843  product-id="${data.id}"
1844  layout="container"
1845  @atcSuccess=""
1846  @atcError="theme-toast.showToast(content=event.message);"
1847  spz-if="${data.available && !wholesale_enabled && is_single_variant}"
1848>
1849  <form>
1850    <input name="variant_id" type="hidden" value="${data.variants[0].id}">
1851    <button
1852      type="button"
1853      class="product-snippet__quick-shop-icon"
1854      role="addToCart"
1855      data-quick-shop="${data.handle}"
1856      data-track-product-id="${data.id}"
1857      data-track="click"
1858      data-track-content="add_to_cart"
1859      data-track-source="quick_shop"
1860    >
1861      <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg>
1862    </button>
1863  </form>
1864</spz-product-form>
1865          <a
1866    class="product_snippet__label"
1867    label-type="${data.available?'save':'sold_out'}"
1868    spz-href="${min_price_variant_href}"
1869    spz-if="${!data.available||has_save_label}"
1870  >
1871    ${
1872      data.available
1873        ? 
1874
1875`${
1876    (+data.compare_at_price > +data.price)
1877     ? `Save 
1878      <spz-currency value="${ data.compare_at_price-data.price }" layout="container"></spz-currency>
1879    `
1880     : ''
1881  }`
1882: "Sold out"
1883    }
1884  </a>
1885</div>
1886        <div spz-if="${mixed_wholesale}">
1887          <style>
1888  .mixed_wholesale_label {
1889    padding: 2px 4px;
1890  }
1891
1892  .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before,
1893  .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner {
1894    background: var(--color-body-bg);
1895    color: var(--color-body-text);
1896  }
1897
1898  .mixed_wholesale_tooltip {
1899    max-width: 100%;
1900    border-radius: 4px;
1901    box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1);
1902  }
1903
1904  @media (min-width: 960px) {
1905    .mixed_wholesale_tooltip {
1906      max-width: 450px;
1907    }
1908  }
1909</style>
1910<div class="mt-2 lg:mt-3 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${image_wrap_id}">
1911  Mixed Lot
1912</div>
1913<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support &quot;Mixed Lot&quot; in the store." interact="hover" for="mixed-${image_wrap_id}" placement="bottom" overlay-class="mixed_wholesale_tooltip">
1914</spz-tooltip>
1915        </div>
1916        <h3
1917          class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color  ">
1918          <a class="text-inherit no-underline" spz-href="${data.withinUrl}">
1919            ${data.title}
1920          </a>
1921        </h3>
1922        <a
1923          class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline"
1924          spz-href="${min_price_variant_href}"
1925          >
1926          <span class="product-snippet__price ${data.price_min != data.price_max ? 'product-snippet__from-price' : ''}">
1927              ${
1928                data.price_min != data.price_max
1929                  ? `from 
1930                <spz-currency value="${data.price}" layout="container"></spz-currency>
1931              `
1932                  : `
1933                <spz-currency value="${data.price}" layout="container"></spz-currency>
1934              `
1935              }
1936            </span>
1937            <spz-currency class="product-snippet__compare-at-price" value="${data.compare_at_price}" layout="container" spz-if="${+data.compare_at_price>+data.price}"></spz-currency>
1938          </a>
1939        <spz-selector
1940            id="${thumbnails_selector_id}"
1941            layout="container"
1942            class="product-snippet__thumbnails flex items-center flex-wrap mt-2"
1943            @mouseover="${thumbnails_selector_id}.toggle(option=event.targetOption,value=true);${image_carousel_id}.goToSlide(index=event.targetOption);${image_wrap_id}.toggleClass(class='show_carousel',force=true)"
1944            spz-if="${thumbnails.length>0}"
1945          >
1946            <a
1947              spz-if="!!item.image"
1948              class="product-snippet__thumbnails-item flex cursor-pointer"
1949              spz-href="${item.withinUrl}"
1950              spz-for="(item, index) in thumbnails"
1951              key="index"
1952              option="${index}"
1953            >
1954              <spz-img
1955                layout="fixed"
1956                width="28"
1957                height="28"
1958                src="${item.image && item.image.src || ''}"
1959                alt="${item.image && item.image.alt || ''}"
1960                object-fit="cover"
1961                auto-fit
1962              ></spz-img>
1963            </a>
1964            <a spz-href="${data.withinUrl}" class="product-snippet__thumbnails-item text-xs text-inherit no-underline" spz-if="${data.remainInvisibleThumbCount>0}">
1965              +${data.remainInvisibleThumbCount}
1966            </a>
1967          </spz-selector>
1968        `
1969    })()}
1970  </div>
1971</template>
1972<div class="page_container">
1973      <style type="text/css">
1974  [data-section-id=announcement] {
1975    position: relative;
1976    z-index: 1030;
1977    background: var(--color-announcement-bg);
1978    color: var(--color-announcement-text);
1979  }
1980  [data-section-id=announcement].header_mask_open{
1981    z-index: unset;
1982  }
1983
1984  .announcement-content {
1985    cursor: pointer;
1986  }
1987
1988  .announcement-content[carousel_off] {
1989    pointer-events: none;
1990  }
1991</style><div id="shoplaza-section-announcement" class="shoplaza-section" data-section-id="announcement" data-section-type="announcement" data-section-style="">
1992
1993<div class="page-container relative">
1994    <spz-carousel ssr class="announcement-content md:hidden mx-auto text-center i-spzhtml-layout-container" layout="container" carousel_off advance-count="1" i-spzhtml-layout="container">
1995      <div  class="break-all py-2 mce-content"><p>✈Free shipping on order over $50.00</p></div>
1996        </spz-carousel>
1997    <spz-carousel ssr class="announcement-content lg:hidden mx-auto text-center i-spzhtml-layout-container" layout="container" carousel_off i-spzhtml-layout="container">
1998      <div  class="break-all w-full py-2 flex-shrink-0 mce-content"><p>✈Free shipping on order over $50.00</p></div>
1999        </spz-carousel>
2000  </div>
2001</div>
2002      <div id="shoplaza-section-header" class="shoplaza-section" data-section-id="header" data-section-type="header" data-section-style="">
2003<style>
2004	.header__desktop,
2005	.header__mobile {
2006		color: var(--color-header-text);
2007    position: relative;
2008    z-index: 20;
2009	}
2010
2011	.header__layout {
2012		background: var(--color-header-bg);
2013	}
2014
2015	.header-shadow{
2016		box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08);
2017	}
2018
2019	.header-bg {
2020		background: var(--color-header-bg);
2021	}
2022
2023	.header__menu-item-tag{
2024    margin-top: -6px;
2025    margin-left: 2px;
2026    padding: 2px 4px;
2027    font-size: 12px;
2028    line-height: 1;
2029    border-radius: 2px;
2030  }
2031	[data-section-id="header"]{
2032		pointer-events: none;
2033	}
2034</style>
2035
2036<style>
2037	
2038	
2039		@media (min-width: 960px) {
2040			
2041		[data-section-id="header"]{
2042			position: sticky;
2043			top: 0;
2044			z-index: 1021;
2045		}
2046	
2047		}
2048	
2049	
2050		@media (max-width: 959.98px) {
2051			
2052		[data-section-id="header"]{
2053			position: sticky;
2054			top: 0;
2055			z-index: 1021;
2056		}
2057	
2058		}
2059	
2060</style>
2061
2062<style>
2063	/* layout left */
2064	.header__desktop[data-layout="left"] .header__logo {
2065		flex: 1;
2066		order: 1;
2067	}
2068
2069	.header__desktop[data-layout="left"] .header__icons {
2070		order: 4;
2071	}
2072
2073	.header__desktop[data-layout="left"] .header__menu-sticky,
2074	.header__desktop[data-layout="center"] .header__menu-sticky {
2075		display: none;
2076		order: 2;
2077	}
2078
2079	/* layout center */
2080	.header__desktop[data-layout="center"] .header__logo {
2081		order: 2;
2082		display: flex;
2083		justify-content: center;
2084	}
2085
2086	.header__desktop[data-layout="center"] .header__search {
2087		flex: 1;
2088		order: 1;
2089	}
2090
2091	/* layout menu_left_logo_center */
2092	.header__desktop[data-layout="menu_left_logo_center"] .header__logo {
2093		order: 2;
2094		display: flex;
2095		justify-content: center;
2096		width: 200px;
2097		margin-left: 50px;
2098		margin-right: 50px;
2099	}
2100
2101	/* layout logo_left_menu_left */
2102	.header__desktop[data-layout="logo_left_menu_left"] .header__logo {
2103		order: 0;
2104		display: flex;
2105		margin-right: 24px;
2106	}
2107
2108	.header__desktop[data-layout="logo_left_menu_left"] .header__icons {
2109		order: 4;
2110		justify-content: end;
2111	}
2112
2113	.header__desktop[data-layout="center"] .header__icons,
2114	.header__desktop[data-layout="menu_left_logo_center"] .header__icons {
2115		flex: 1;
2116		order: 4;
2117		justify-content: end;
2118	}
2119
2120	.header__desktop[data-layout="left"] .header__menu-sticky,
2121	.header__desktop[data-layout="center"] .header__menu-sticky,
2122	.header__desktop[data-layout="logo_left_menu_left"] .header__menu-sticky {
2123		padding-left: 28px;
2124		padding-right: 28px;
2125	}
2126
2127	.header__desktop[data-layout="logo_left_menu_left"] .header__menu-sticky .header__menu-item-sub,
2128	.header__desktop[data-layout="menu_left_logo_center"] .header__menu-sticky .header__menu-item-sub {
2129		max-width: 425px;
2130	}
2131
2132	.header__desktop[data-layout="left"] .header__menu-wrapper .header__menu,
2133	.header__desktop[data-layout="center"] .header__menu-wrapper .header__menu{
2134		padding: 6px 0 0 0;
2135	}
2136	.header__desktop[data-layout="left"] .header__menu-wrapper .header__menu-item-sub,
2137	.header__desktop[data-layout="center"] .header__menu-wrapper .header__menu-item-sub{
2138		padding-bottom: 17px;
2139	}
2140
2141	
2142</style>
2143
2144<style>
2145	
2146		@media (min-width: 960px) {
2147			.header__scroll_hide,
2148			.header__scroll_hide ~ *{
2149				transition: transform 0.3s;
2150			}
2151			#shoplaza-section-header.show_shadow .header__desktop .header__menu-wrapper{
2152				box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08);
2153			}
2154			body.header_scroll #shoplaza-section-header{
2155				box-shadow: none;
2156			}
2157			.header_scroll .header__desktop[data-layout="center"] .header__search,
2158			.header_scroll .header__desktop[data-layout="center"] .header__icons,
2159			.header_scroll .header__desktop[data-layout="left"] .header__search,
2160			.header_scroll .header__desktop[data-layout="left"] .header__icons
2161			{
2162				flex-grow: unset;
2163			}
2164			.header_scroll .header__desktop[data-layout="center"] .header__logo,
2165			.header_scroll .header__desktop[data-layout="left"] .header__logo{
2166				flex-grow: unset;
2167				order: 1;
2168				margin-right: 20px;
2169			}
2170			.header_scroll .header__desktop[data-layout="center"] .header__scroll_hide,
2171			.header_scroll .header__desktop[data-layout="left"] .header__scroll_hide{
2172				transform: translateY(-100%);
2173			}
2174			.header_scroll .header__desktop[data-layout="center"] .header__scroll_hide ~ *,
2175			.header_scroll .header__desktop[data-layout="left"] .header__scroll_hide ~ *{
2176				transform: translateY(calc(-1 * var(--header-scroll-hide-height-pc)));
2177			}
2178			.header_scroll .header__desktop[data-layout="center"] .header__menu-sticky,
2179			.header_scroll .header__desktop[data-layout="left"] .header__menu-sticky{
2180				display: block;
2181				flex: 1;
2182			}
2183			.header_scroll .header__desktop[data-layout="center"] .header__menu-content,
2184			.header_scroll .header__desktop[data-layout="left"] .header__menu-content{
2185				visibility: hidden;
2186			}
2187		}
2188	
2189	
2190		@media (max-width: 959.98px) {
2191			.header__scroll_hide {
2192				transition: transform .5s;
2193			}
2194
2195			#shoplaza-section-header.show_shadow .header__mobile .header__fixed-top {
2196				box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08);
2197			}
2198
2199			.header_scroll .header__scroll_hide.non-sticky {
2200				transform: translateY(-100%);
2201			}
2202
2203			.header__icons.show-menu-icon .header__account,
2204			.header__icons:not(.show-menu-icon) .header__icon-menu--force,
2205			#header-search-container-mobile:not(.show) {
2206				display: none;
2207			}
2208		}
2209	
2210</style>
2211
2212<style>
2213  .header__logo{
2214    margin: 0;
2215    font-size: 0;
2216  }
2217  .header__logo-title{
2218    max-width: 185px;
2219    overflow-wrap: break-word;
2220    font-size: 24px;
2221    line-height: 38px;
2222    font-weight: 600;
2223    color: inherit;
2224    overflow: hidden;
2225    text-decoration-line: none;
2226  }
2227  [data-section-id="header"] .image_width {
2228    width: 140px;
2229  }
2230  @media (min-width: 960px) {
2231    .header__logo{
2232      padding: 18px 0;
2233    }
2234    .header__logo-title{
2235      max-width: 380px;
2236      font-size: 30px;
2237      line-height: 36px;
2238      font-weight: 500;
2239    }
2240    [data-section-id="header"] .image_width {
2241      width: 190px;
2242    }
2243  }
2244  @media (max-width: 959.98px) {
2245    .header__logo{
2246      flex: 1;
2247    }
2248  }
2249</style>
2250
2251<style>
2252	.header__account,
2253  .header__cart,
2254  .header__drawer_icon{
2255		
2256    	margin-left: 22px;
2257		
2258  }
2259	.header__account_dropdown {
2260		margin: 6px;
2261	}
2262
2263	.header__account_dropdown .i-spzhtml-dropdown-container {
2264		background-color: transparent;
2265	}
2266
2267  .header__account_dropdown_content{
2268    width: 146px;
2269    padding: 15px;
2270    font-size: 14px;
2271    line-height: 18px;
2272    color: var(--color-menu-item-text);
2273    background-color: var(--color-header-bg);
2274    z-index: var(--z-index-dropdown);
2275    transition: all 200ms;
2276    border-radius: 4px;
2277  }
2278  .header__account_dropdown_content > li{
2279    cursor: pointer;
2280  }
2281  .header__account_dropdown_content > li:hover{
2282    color: var(--color-menu-item-text-70);
2283  }
2284  .header__account_dropdown_content > li + li{
2285    margin-top: 18px;
2286  }
2287  .header__account_dropdown_content a{
2288    color: inherit;
2289    text-decoration: none;
2290  }
2291  .header__cart-count{
2292    min-height: 18px;
2293    min-width: 18px;
2294    padding: 3px 4px;
2295    top: -18px;
2296		
2297    	right: -4px;
2298		
2299    font-size: 12px;
2300    color: var(--color-cart-dot-text);
2301    background-color: var(--color-cart-dot-bg);
2302  }
2303
2304	.header-cart-back-btn {
2305		margin-right: 2px;
2306	}
2307
2308	html[dir="rtl"] .header-cart-back-btn {
2309		margin-left: 2px;
2310		margin-right: 0;
2311		transform: rotate(180deg);
2312	}
2313
2314  @media (min-width: 960px) {
2315    .header__account,
2316    .header__cart,
2317    .header__plugin-container > *{
2318      margin-left: 30px;
2319			margin-right: unset;
2320    }
2321    .header__account_dropdown_content{
2322      visibility: hidden;
2323			position: absolute;
2324      margin-top: 10px;
2325			
2326      	margin-left: -50px;
2327			
2328      width: 160px;
2329    }
2330    .header__account:hover .header__account_dropdown_content{
2331      visibility: visible;
2332    }
2333  }
2334</style>
2335<spz-observer layout="logic" value="1" @scrollexceedboundary="shoplaza-section-header.toggleClass(class='show_shadow', force=true);" @scrollnotexceedboundary="shoplaza-section-header.toggleClass(class='show_shadow', force=false);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer>
2336  <spz-observer layout="logic" @scrolldown="nova-theme.toggleClass(class='header_scroll', force=true);header-menu-top.updateMoreLink" @scrollup="nova-theme.toggleClass(class='header_scroll', force=false);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer>
2337<div class="header_container relative">
2338  <style>
2339  .header__menu-sticky {
2340    padding-top: 28px;
2341  }
2342  .header__menu-sticky .header__menu-item-sub {
2343    padding-bottom: 28px;
2344  }
2345</style>
2346<div class="header__desktop md:hidden" data-layout="center">
2347  <div class="header__layout relative z-50 pointer-events-auto">
2348    <div class="header__layout-content page-container flex items-center direction_ltr_self">
2349      <h2 class="header__logo flex-shrink-0 type-heading-font-family">
2350  <a class="image_width block md:hidden" href="/">
2351  <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img>
2352  </a>
2353  <a class="image_width block lg:hidden" href="/">
2354  <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img>
2355  </a>
2356</h2>
2357<style>
2358  .header__search button,
2359  .header__search input{
2360    border: none;
2361    outline: none;
2362  }
2363  .header__search-btn,
2364  .header__search-icon{
2365    background: transparent;
2366  }
2367  .header__search {
2368    display: flex;
2369    align-items: center;
2370    flex-shrink: 0;
2371  }
2372  .header__search-btn {
2373    padding: 0;
2374    margin: 0;
2375    font-size: 0;
2376    color: inherit;
2377    cursor: pointer;
2378  }
2379  .header__search-form{
2380    min-height: 40px;
2381  }
2382  .header__search-input{
2383    font-size: 13px;
2384    line-height: 16px;
2385    color: var(--color-header-search-text);
2386    background-color: var(--color-header-search-bg);
2387    padding: 12px 16px 12px 36px;
2388      border-radius: 2px 0 0 2px;
2389    }
2390  .header__search-input:not(:placeholder-shown) ~ .header__search-icon-close{
2391    display: flex;
2392  }
2393  .header__search-icon{
2394    left: 10px;
2395    top: 50%;
2396    transform: translateY(-50%);
2397    color: var(--color-header-search-text-50);
2398  }
2399  .header__search-icon-close{
2400    top: 50%;
2401    transform: translateY(-50%);
2402    height: 18px;
2403    width: 18px;
2404    color: #fff;
2405    background: #C0C0C0;
2406    right: 10px;
2407    }
2408  .header__search-icon:hover,
2409  .header__search-icon-close:hover{
2410    color: var(--color-header-search-text);
2411  }
2412  .header__search-submit-btn{
2413    padding: 11px 16px;
2414    font-size: 14px;
2415    line-height: 18px;
2416    color: var(--color-header-search-btn-text);
2417    background-color: var(--color-header-search-btn-bg);
2418    border-radius: 0 2px 2px 0;
2419    }
2420  @media (max-width: 959.98px) {
2421    .header__search-form{
2422      width: 100%
2423    }
2424  }
2425  @media (min-width: 960px) {
2426    .header__search-form{
2427      margin: 18px 0;
2428    }
2429    .header__search-input{
2430      width: 232px;
2431      border-radius: 2px;
2432    }
2433    .header__desktop[data-layout="left"] .header__search-input{
2434      width: 278px;
2435    }
2436  }
2437</style>
2438
2439<div class="header__search" id="">
2440    <button
2441        type="button"
2442        class="header__search-btn"
2443        @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_search_sidebar.open()"
2444      >
2445        <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 
24450 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg>
2446      </button>
2447    </div>
2448<spz-observer layout="logic" target="header__plugin-container" @childupdated="header-menu-top.updateMoreLink" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer>
2449<div class="header__icons flex-shrink-0 flex items-center" >
2450  <div class="header__plugin-container md:hidden flex items-center" id="header__plugin-container">
2451    <div class="empty-hidden plugin__translate-header"></div>
2452    <div class="empty-hidden plugin__currency"></div>
2453  </div>
2454
2455  <div class="header__account relative text-0  md:hidden ">
2456    <i class="cursor-pointer" ><svg class=" " width="26" height="26" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h26v26H0z"/><g fill-rule="evenodd" clip-rule="evenodd" fill="currentColor"><path d="M13.11 1a6.11 6.11 0 1 1 0 12.22 6.11 6.11 0 0 1 0-12.22Zm0 1.6a4.51 4.51 0 1 0 0 9.02 4.51 4.51 0 0 0 0-9.02ZM17.333 15A6.667 6.667 0 0 1 24 21.667V24a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2.333A6.667 6.667 0 0 1 8.667 15h8.666Zm0 1.6H8.667a5.067 5.067 0 0 0-5.062 4.847l-.005.22V23.4h18.8v-1.733a5.067 5.067 0 0 0-4.847-5.062l-.22-.005Z"/></g></svg></i>
2457    <ul class="header__account_dropdown_content list-none header-shadow">
2458    <li><a href="/account/login">Log in</a></li>
2459      <li><a href="/account/register">Create an account</a></li>
2460      </ul>
2461</div>
2462  <a class="header__cart relative flex justify-end items-center text-0 text-inherit cursor-pointer no-underline" >
2463    <i>
2464      <svg class="" width="28" height="28" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h28v28H0z"/><g fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.8 2.2a.8.8 0 1 0 0 1.6h2.803l1.542 14.541a1 1 0 0 0 .995.895h15.055a1 1 0 0 0 .982-.811l2.105-10.91a1 1 0 0 0-.982-1.189H6.48l-.432-4.081a.05.05 0 0 0-.05-.045H1.8Zm4.849 5.726h16.923l-1.873 9.709H7.679l-1.03-9.709Z"/><path d="M10.917 23.62a1.909 1.909 0 1 1-3.818 0 1.909 1.909 0 0 1 3.818 0ZM22.372 23.62a1.91 1.91 0 1 1-3.819 0 1.91 1.91 0 0 1 3.819 0Z"/></g></svg>
2465      </i>
2466    <!-- 购物车数量 -->
2467    <spz-event target-id="header_cart_count_render_pc" target-api="render" event-name="dj.addToCart;dj.cartChange;" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event>
2468    <spz-render id="header_cart_count_render_pc" layout="container" src="/api/cart/count" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
2469      <template>
2470        <div>
2471          <span class="header__cart-count absolute rounded-full leading-none text-center" spz-if="${data.data && data.data.count > 0}">${data.data && data.data.count}</span>
2472        </div>
2473      </template>
2474    </spz-render>
2475  </a>
2476  <i class="header__drawer_icon  flex lg:hidden cursor-pointer" @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_drawer.open()">
2477      <svg class="" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".01"><path opacity=".696" fill="currentColor" d="M0 0h28v28H0z"/></g><g fill="currentColor"><path d="M24.17 6.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 0 1 0-1.66h20.34ZM24.17 13.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34ZM24.17 20.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34Z"/></g></svg>
2478    </i>
2479  </div>
2480      <div class="header__menu-sticky flex-1 overflow-hidden">
2481        <style>
2482  .header__desktop .header__menu{
2483    background: inherit !important;
2484  }
2485  .header__desktop .header__menu-item{
2486    padding: 0 18px;
2487    font-size: var(--type-nav-font-size);
2488  }
2489  .header__desktop .header__menu-item:first-child {
2490    margin-left: 0;
2491    }
2492  .header__second_menu-wrapper,
2493  .header__three_menu-wrapper,
2494  .header__more_menu-wrapper{
2495    z-index: var(--z-index-sticky);
2496    visibility: hidden;
2497  }
2498  .header__menu-item-first:hover .header__second_menu-wrapper,
2499  .header__menu-item-first:hover .header__three_menu-wrapper,
2500  .header__menu-item-first:hover .header__more_menu-wrapper{
2501    visibility: visible;
2502  }
2503  .header__second_menu-wrapper,
2504  .header__three_menu-wrapper,
2505  .header__more_menu_three{
2506    overflow: hidden auto;
2507    max-height: calc(var(--window-height) - var(--header-height) - 200px);
2508  }
2509  .header__second_menu-wrapper{
2510    min-width: 180px;
2511    max-width: 400px;
2512    margin: 0 0 -18px 0;
2513    padding: 25px 18px;
2514    }
2515  .header__second_menu-wrapper li + li{
2516    margin-top: 18px;
2517  }
2518  .header__three_menu-content{
2519    display: grid;
2520    grid-template-columns: repeat(4, minmax(0, 1fr));
2521    margin: 0 -30px;
2522  }
2523  .header__desktop .header__menu-item[data-levels="2"] .header__three_menu-wrapper ul{
2524    flex-wrap: wrap;
2525    margin-top: -50px;
2526  }
2527  .header__desktop .header__menu-item:not([data-levels="2"]) .header__three_menu-wrapper ul{
2528    flex-direction: column;
2529    margin-top: -12px;
2530  }
2531  .header__desktop .header__menu-item[data-levels="2"][data-has-product] .header__three_menu-wrapper ul li{
2532    width: 33.33%;
2533  }
2534  .header__desktop .header__menu-item[data-levels="2"]:not([data-has-product]) .header__three_menu-wrapper ul li{
2535    width: 25%;
2536  }
2537  .header__desktop .header__menu-item[data-has-product] .header__three_menu-wrapper ul{
2538    grid-column: span 3 / span 3;
2539  }
2540  .header__desktop .header__menu-item:not([data-has-product]) .header__three_menu-wrapper ul{
2541    grid-column: span 4 / span 4;
2542  }
2543  .header__desktop .header__menu-item[data-levels="2"] .header__menu-item-second{
2544    padding: 50px 30px 8px;
2545    font-size: var(--type-nav-font-size);
2546    color: var(--color-header-text);
2547  }
2548  .header__three_menu-wrapper .header__menu-item-last{
2549    padding: 12px 30px 0;
2550  }
2551  .header__desktop .header__menu-item .header__menu-item-last{
2552    color: var(--color-header-text-70);
2553    font-size: calc(var(--type-nav-font-size) - 2px);
2554    line-height: 1.4;
2555  }
2556  .header__desktop .header__menu-item .header__menu-item-last:hover {
2557    color: var(--color-header-text);
2558  }
2559  .header__menu_product{
2560    grid-column: span 1 / span 1;
2561    padding-left: 30px;
2562    padding-right: 30px;
2563  }
2564  .header_menu_hover_animation{
2565    opacity: 0;
2566    transform: translateY(-12px);
2567    transition: all 200ms;
2568  }
2569  .header__menu-item-first:hover .header_menu_hover_animation{
2570    opacity: 1;
2571    transform: translateY(0);
2572  }
2573  .header__desktop .header__menu-item-first .header__menu-item-sub::after{
2574    content: "";
2575    position: absolute;
2576    left: 0;
2577    bottom: 0;
2578    display: block;
2579    width: 0;
2580    height: 3px;
2581    background-color: var(--color-header-text);
2582    transition: width .2s;
2583	}
2584	.header__desktop .header__menu-item-first:hover .header__menu-item-sub::after{
2585		width: 100%;
2586	}
2587</style>
2588<style>
2589  .header-menu-container[finish] .header__more_menu-wrapper{
2590    display: block !important;
2591    position: static !important;
2592  }
2593  .header__more_menu,
2594  .header__more_menu_right{
2595    display: grid;
2596  }
2597  .header__more_menu{
2598    grid-template-columns: repeat(4,minmax(0,1fr));
2599  }
2600  .header__more_menu_right{
2601    grid-template-columns: repeat(3,minmax(0,1fr));
2602  }
2603  .header__more_menu [role="tabs"],
2604  .header__more_menu_right .header__menu_product{
2605    grid-column: span 1/span 1;
2606  }
2607  .header__more_menu_right > ul[data-has-product]{
2608    grid-column: span 2/span 2;
2609  }
2610  .header__more_menu [role="tabpanel"],
2611  .header__more_menu_right > ul:not([data-has-product]){
2612    grid-column: span 3/span 3;
2613  }
2614  .header__more_menu{
2615    line-height: 1.25;
2616    padding-top: 32px;
2617    padding-bottom: 36px;
2618  }
2619  .header__more_menu [role="tab"] + [role="tab"]{
2620    padding-top: 20px;
2621  }
2622  .header__more_menu_icon{
2623    transform: rotate(180deg);
2624    transition: all 200ms;
2625  }
2626  .header__more_menu [role="tab"][active] .header__more_menu_icon{
2627    transform: rotate(0);
2628  }
2629  .header__more_menu_right li {
2630    padding-bottom: 20px;
2631  }
2632  .header__more_menu_right_item{
2633    padding: 0 30px 8px;
2634  }
2635  .header__more_menu_right_item + .header__more_menu_right_item{
2636    padding: 12px 30px 0;
2637  }
2638  .header__more_menu_right .header__menu_product{
2639    padding: 0 30px;
2640  }
2641</style>
2642<spz-menu id="header-menu-top" layout="container" class="header-menu-container   type-heading-font-family  i-spzhtml-layout-container" i-spzhtml-layout="container">
2643  <ul class="header__menu flex m-0 p-0 list-none">
2644    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-1" data-id="80779717"  data-levels="0">
2645        <div class="flex items-start">
2646          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
2647href="/" >Home</a>
2648          </div>
2649
2650        </li>
2651    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-2" data-id="83743781"  data-levels="0">
2652        <div class="flex items-start">
2653          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
2654href="/collections/women-shoes" >Women shoes</a>
2655          </div>
2656
2657        </li>
2658    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-3" data-id="83007573"  data-has-product  data-levels="1">
2659        <div class="flex items-start">
2660          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
2661href="/collections/pop-up-bouquets" >Pop-Up Bouquets</a>
2662          </div>
2663
2664        <div class="header__three_menu-wrapper header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto" spz-menu-submenu>
2665              <div class="hide-scrollbar page-container lg:pt-8 lg:pb-9">
2666                <div class="header__three_menu-content">
2667                  <ul class="header__waterfall-wrapper header_menu_hover_animation m-0 p-0 flex list-none" >
2668                    
2669                      
2670                        <a class="header__menu-item-last w-full no-underline" 
2671href="/collections/classic-pop-up-bouquets" >
2672                          <span class="font-medium">classic pop up bouquets</span>
2673                          
2674                          
2675                          
2676                          
2677                        </a>
2678                      
2679                    
2680                      
2681                        <a class="header__menu-item-last w-full no-underline" 
2682href="/collections/mini-bouquet-pop-up-cards" >
2683                          <span class="font-medium">mini bouquet pop up cards</span>
2684                          
2685                          
2686                          
2687                          
2688                        </a>
2689                      
2690                    
2691                      
2692                        <a class="header__menu-item-last w-full no-underline" 
2693href="/collections/grande-bouquets" >
2694                          <span class="font-medium">grande bouquets</span>
2695                          
2696                          
2697                          
2698                          
2699                        </a>
2700                      
2701                    
2702                      
2703                        <a class="header__menu-item-last w-full no-underline" 
2704href="/collections/rose-bouquet-building-block-set" >
2705                          <span class="font-medium">Rose Bouquet Building Block Set</span>
2706                          
2707                          
2708                          
2709                          
2710                        </a>
2711                      
2712                    
2713                  </ul>
2714                  <div class="header__menu_product header_menu_hover_animation">
2715<div class="shoplazza-product-snippet" product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086">
2716
2717  <div class="product-snippet__img-wrapper relative" id="product_snippet__image_wrap_header_4e6826d8-cb41-4614-b3f8-640fd7c86086_-3">
2718    <a
2719      class="product-snippet__img-link relative block overflow-hidden"
2720      href="/products/blooming-roses"
2721has-secondary-image
2722    >
2723      <spz-img class="product-snippet__img product-snippet__img_main i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/bef081796bfae7cec58019f8c75bb0c4.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img>
2724      <spz-img class="product-snippet__img-secondary absolute top-0 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/ec4614786536f2eef96bd5bd7cc2fb39.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img>
2725      </a>
2726    <spz-product-form product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" layout="container" @atcsuccess="" @atcerror="theme-toast.showToast(content=event.message);" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
2727  <form>
2728    <input name="variant_id" type="hidden" value="e334344d-a1e1-4af8-9110-3dda35b0cbf7">
2729    <button
2730      type="button"
2731      class="product-snippet__quick-shop-icon"
2732      role="addToCart"
2733      data-quick-shop="blooming-roses"
2734      data-track-product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086"
2735      data-track="click"
2736      data-track-content="add_to_cart"
2737      data-track-source="quick_shop"
2738    >
2739      <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg>
2740    </button>
2741  </form>
2742</spz-product-form>
2743      <a
2744      class="product_snippet__label md:hidden"
2745      label-type="-3"
2746      href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
2747  >
2748      Save <span class='money'>$19.92</span>
2749  </a>
2750  <a
2751      class="product_snippet__label lg:hidden"
2752      label-type="-3"
2753      href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
2754  >
2755      Save <span class='money'>$19.92</span>
2756  </a>
2757  </div>
2758
2759  <h3 class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color  ">
2760    <a class="shoplazza-product-snippet-title text-inherit no-underline" 
2761  href="/products/blooming-roses"
2762>
2763      Blooming Roses
2764    </a>
2765  </h3>
2766
2767  <a
2768    class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline"
2769    href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
2770  >
2771    <span class="product-snippet__price">
2772        <span class='money'>$19.98</span>
2773        </span>
2774      <span class="product-snippet__compare-at-price money">
2775          $39.90
2776        </span>
2777      </a>
2778
2779  
2780</div></div>
2781                  </div>
2782              </div>
2783            </div>
2784          </li>
2785    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-4" data-id="82938779"  data-levels="0">
2786        <div class="flex items-start">
2787          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
2788href="/collections/all-xhdb" >All Products</a>
2789          </div>
2790
2791        </li>
2792    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-5" data-id="82982825"  data-levels="0">
2793        <div class="flex items-start">
2794          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
2795href="/pages/track-order" >Track Order</a>
2796          </div>
2797
2798        </li>
2799    <li spz-menu-more-link class="header__menu-item header__menu-item-first">
2800      <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap cursor-pointer" href="javascript:;" >More links</a>
2801      <div class="header__more_menu-wrapper" spz-menu-submenu>
2802        <template>
2803          ${(function(){
2804            const formatLinks = (links) => {
2805              return links.map(link => {
2806                link.tag = tags[link.title.toUpperCase()] || {};
2807                link.target_attr = link.target == '_blank' ? 'target="_blank"' : '';
2808                link.href_attr = link.url ? `href="${link.url}"` : '';
2809                if(link.children && link.children.length){
2810                  link.children = formatLinks(link.children);
2811                }
2812                return link;
2813              })
2814            };
2815            const tags = "{}";
2816            let linkList = [
2817              {
2818                  id: 80779717,
2819                  title: "Home",
2820                  url: "\/",
2821                  target: "",
2822                  levels: 0,
2823                  product0: { id: (null) },
2824                  children: [
2825                    
2826                  ]
2827                },
2828              {
2829                  id: 83743781,
2830                  title: "Women shoes",
2831                  url: "\/collections\/women-shoes",
2832                  target: "",
2833                  levels: 0,
2834                  product0: { id: (null) },
2835                  children: [
2836                    
2837                  ]
2838                },
2839              {
2840                  id: 83007573,
2841                  title: "Pop-Up Bouquets",
2842                  url: "\/collections\/pop-up-bouquets",
2843                  target: "",
2844                  levels: 1,
2845                  product0: { id: ("4e6826d8-cb41-4614-b3f8-640fd7c86086") },
2846                  children: [
2847                    
2848                      
2849                      {
2850                        title: "classic pop up bouquets",
2851                        url: "\/collections\/classic-pop-up-bouquets",
2852                        target: "",
2853                        levels: 0,
2854                        children: [
2855                          
2856                        ]
2857                      },
2858                    
2859                      
2860                      {
2861                        title: "mini bouquet pop up cards",
2862                        url: "\/collections\/mini-bouquet-pop-up-cards",
2863                        target: "",
2864                        levels: 0,
2865                        children: [
2866                          
2867                        ]
2868                      },
2869                    
2870                      
2871                      {
2872                        title: "grande bouquets",
2873                        url: "\/collections\/grande-bouquets",
2874                        target: "",
2875                        levels: 0,
2876                        children: [
2877                          
2878                        ]
2879                      },
2880                    
2881                      
2882                      {
2883                        title: "Rose Bouquet Building Block Set",
2884                        url: "\/collections\/rose-bouquet-building-block-set",
2885                        target: "",
2886                        levels: 0,
2887                        children: [
2888                          
2889                        ]
2890                      },
2891                    
2892                  ]
2893                },
2894              {
2895                  id: 82938779,
2896                  title: "All Products",
2897                  url: "\/collections\/all-xhdb",
2898                  target: "",
2899                  levels: 0,
2900                  product0: { id: (null) },
2901                  children: [
2902                    
2903                  ]
2904                },
2905              {
2906                  id: 82982825,
2907                  title: "Track Order",
2908                  url: "\/pages\/track-order",
2909                  target: "",
2910                  levels: 0,
2911                  product0: { id: (null) },
2912                  children: [
2913                    
2914                  ]
2915                },
2916              ].slice(offset);
2917            linkList = formatLinks(linkList);
2918            const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id));
2919            return `
2920              <div>
2921                <div spz-if="${hasChild}" class="header__more_menu_three header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto">
2922                  <spz-tabs class="header__more_menu page-container" layout="container" interact="hover">
2923                    <ul class="header__more_menu_left header_menu_hover_animation list-none" role="tabs">
2924                      <li role="tab" data-panel="tab-${link.id}" spz-for="link in linkList" key="link.id">
2925                        <a class="flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}>
2926                          <span class="flex-1 mr-4">${link.title}</span>
2927                          <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span>
2928                          <i spz-if="${!!(link.children && link.children.length)}" class="flex">
2929                            <svg class="header__more_menu_icon" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M4.698 8.574a.6.6 0 0 0 0 .848l6.718 6.718a.3.3 0 0 0 .424 0l.679-.679a.3.3 0 0 0 0-.424L6.48 8.998 12.52 2.96a.3.3 0 0 0 0-.425l-.679-.679a.3.3 0 0 0-.424 0L4.698 8.574z" fill="currentColor"/></svg>
2930                          </i>
2931                        </a>
2932                      </li>
2933                    </ul>
2934                    <div class="header__more_menu_right header_menu_hover_animation flex" role="tabpanel" data-id="tab-${link.id}" spz-for="link in linkList" key="link.id">
2935                      <ul class="flex flex-wrap list-none" ${(!!link.product0.id)?"data-has-product":''} spz-if="${!!(link.children && link.children.length)}">
2936                        <li class="flex-1" spz-for="second_link in link.children">
2937                          <a class="header__more_menu_right_item flex items-start text-inherit no-underline" ${second_link.href_attr} ${second_link.target_attr}>
2938                            <span>${second_link.title}</span>
2939                            <span spz-if="${!!(second_link.tag.label)}" class="header__menu-item-tag" style="color:${second_link.tag.color}; background:${second_link.tag.bg};">${second_link.tag.label}</span>
2940                          </a>
2941                          <a class="header__more_menu_right_item header__menu-item-last flex items-start text-inherit no-underline" spz-for="third_links in second_link.children" ${third_links.href_attr} ${third_links.target_attr}>
2942                            <span>${third_links.title}</span>
2943                            <span spz-if="${!!(third_links.tag.label)}" class="header__menu-item-tag" style="color:${third_links.tag.color}; background:${third_links.tag.bg};">${third_links.tag.label}</span>
2944                          </a>
2945                        </li>
2946                      </ul>
2947                      <div class="header__menu_product" spz-if="${!!link.product0.id}">
2948                        
2949
2950<spz-product-snippet
2951  product-id="${link.product0.id}"
2952  layout="container"
2953  template="product-snippet-template"
2954  variant-thumb-names="color"
2955  thumb-max-num="3"
2956  ></spz-product-snippet>
2957</div>
2958                    </div>
2959                  </spz-tabs>
2960                </div>
2961                <ul spz-else class="header__more_menu_second header__second_menu-wrapper header-shadow absolute header-bg list-none overflow-x-hidden overflow-y-auto">
2962                  <li class="header_menu_hover_animation" spz-for="link in linkList" key="link.id">
2963                    <a class="header__menu-item-last flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}>
2964                      <span>${link.title}</span>
2965                      <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span>
2966                    </a>
2967                  </li>
2968                </ul>
2969              </div>
2970            `
2971          })()}
2972        </template>
2973      </div>
2974    </li>
2975  </ul>
2976</spz-menu>
2977      </div>
2978    </div>
2979  </div>
2980
2981  <div class="header__menu-wrapper header__scroll_hide header-bg overflow-hidden pointer-events-auto">
2982      <div class="header__menu-content page-container">
2983        <style>
2984  .header__desktop .header__menu{
2985    background: inherit !important;
2986  }
2987  .header__desktop .header__menu-item{
2988    padding: 0 18px;
2989    font-size: var(--type-nav-font-size);
2990  }
2991  .header__desktop .header__menu-item:first-child {
2992    margin-left: 0;
2993    }
2994  .header__second_menu-wrapper,
2995  .header__three_menu-wrapper,
2996  .header__more_menu-wrapper{
2997    z-index: var(--z-index-sticky);
2998    visibility: hidden;
2999  }
3000  .header__menu-item-first:hover .header__second_menu-wrapper,
3001  .header__menu-item-first:hover .header__three_menu-wrapper,
3002  .header__menu-item-first:hover .header__more_menu-wrapper{
3003    visibility: visible;
3004  }
3005  .header__second_menu-wrapper,
3006  .header__three_menu-wrapper,
3007  .header__more_menu_three{
3008    overflow: hidden auto;
3009    max-height: calc(var(--window-height) - var(--header-height) - 200px);
3010  }
3011  .header__second_menu-wrapper{
3012    min-width: 180px;
3013    max-width: 400px;
3014    margin: 0 0 -18px 0;
3015    padding: 25px 18px;
3016    }
3017  .header__second_menu-wrapper li + li{
3018    margin-top: 18px;
3019  }
3020  .header__three_menu-content{
3021    display: grid;
3022    grid-template-columns: repeat(4, minmax(0, 1fr));
3023    margin: 0 -30px;
3024  }
3025  .header__desktop .header__menu-item[data-levels="2"] .header__three_menu-wrapper ul{
3026    flex-wrap: wrap;
3027    margin-top: -50px;
3028  }
3029  .header__desktop .header__menu-item:not([data-levels="2"]) .header__three_menu-wrapper ul{
3030    flex-direction: column;
3031    margin-top: -12px;
3032  }
3033  .header__desktop .header__menu-item[data-levels="2"][data-has-product] .header__three_menu-wrapper ul li{
3034    width: 33.33%;
3035  }
3036  .header__desktop .header__menu-item[data-levels="2"]:not([data-has-product]) .header__three_menu-wrapper ul li{
3037    width: 25%;
3038  }
3039  .header__desktop .header__menu-item[data-has-product] .header__three_menu-wrapper ul{
3040    grid-column: span 3 / span 3;
3041  }
3042  .header__desktop .header__menu-item:not([data-has-product]) .header__three_menu-wrapper ul{
3043    grid-column: span 4 / span 4;
3044  }
3045  .header__desktop .header__menu-item[data-levels="2"] .header__menu-item-second{
3046    padding: 50px 30px 8px;
3047    font-size: var(--type-nav-font-size);
3048    color: var(--color-header-text);
3049  }
3050  .header__three_menu-wrapper .header__menu-item-last{
3051    padding: 12px 30px 0;
3052  }
3053  .header__desktop .header__menu-item .header__menu-item-last{
3054    color: var(--color-header-text-70);
3055    font-size: calc(var(--type-nav-font-size) - 2px);
3056    line-height: 1.4;
3057  }
3058  .header__desktop .header__menu-item .header__menu-item-last:hover {
3059    color: var(--color-header-text);
3060  }
3061  .header__menu_product{
3062    grid-column: span 1 / span 1;
3063    padding-left: 30px;
3064    padding-right: 30px;
3065  }
3066  .header_menu_hover_animation{
3067    opacity: 0;
3068    transform: translateY(-12px);
3069    transition: all 200ms;
3070  }
3071  .header__menu-item-first:hover .header_menu_hover_animation{
3072    opacity: 1;
3073    transform: translateY(0);
3074  }
3075  .header__desktop .header__menu-item-first .header__menu-item-sub::after{
3076    content: "";
3077    position: absolute;
3078    left: 0;
3079    bottom: 0;
3080    display: block;
3081    width: 0;
3082    height: 3px;
3083    background-color: var(--color-header-text);
3084    transition: width .2s;
3085	}
3086	.header__desktop .header__menu-item-first:hover .header__menu-item-sub::after{
3087		width: 100%;
3088	}
3089</style>
3090<style>
3091  .header-menu-container[finish] .header__more_menu-wrapper{
3092    display: block !important;
3093    position: static !important;
3094  }
3095  .header__more_menu,
3096  .header__more_menu_right{
3097    display: grid;
3098  }
3099  .header__more_menu{
3100    grid-template-columns: repeat(4,minmax(0,1fr));
3101  }
3102  .header__more_menu_right{
3103    grid-template-columns: repeat(3,minmax(0,1fr));
3104  }
3105  .header__more_menu [role="tabs"],
3106  .header__more_menu_right .header__menu_product{
3107    grid-column: span 1/span 1;
3108  }
3109  .header__more_menu_right > ul[data-has-product]{
3110    grid-column: span 2/span 2;
3111  }
3112  .header__more_menu [role="tabpanel"],
3113  .header__more_menu_right > ul:not([data-has-product]){
3114    grid-column: span 3/span 3;
3115  }
3116  .header__more_menu{
3117    line-height: 1.25;
3118    padding-top: 32px;
3119    padding-bottom: 36px;
3120  }
3121  .header__more_menu [role="tab"] + [role="tab"]{
3122    padding-top: 20px;
3123  }
3124  .header__more_menu_icon{
3125    transform: rotate(180deg);
3126    transition: all 200ms;
3127  }
3128  .header__more_menu [role="tab"][active] .header__more_menu_icon{
3129    transform: rotate(0);
3130  }
3131  .header__more_menu_right li {
3132    padding-bottom: 20px;
3133  }
3134  .header__more_menu_right_item{
3135    padding: 0 30px 8px;
3136  }
3137  .header__more_menu_right_item + .header__more_menu_right_item{
3138    padding: 12px 30px 0;
3139  }
3140  .header__more_menu_right .header__menu_product{
3141    padding: 0 30px;
3142  }
3143</style>
3144<spz-menu id="header-menu-bottom" layout="container" class="header-menu-container   type-heading-font-family  i-spzhtml-layout-container" i-spzhtml-layout="container">
3145  <ul class="header__menu flex m-0 p-0 list-none">
3146    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-1" data-id="80779717"  data-levels="0">
3147        <div class="flex items-start">
3148          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
3149href="/" >Home</a>
3150          </div>
3151
3152        </li>
3153    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-2" data-id="83743781"  data-levels="0">
3154        <div class="flex items-start">
3155          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
3156href="/collections/women-shoes" >Women shoes</a>
3157          </div>
3158
3159        </li>
3160    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-3" data-id="83007573"  data-has-product  data-levels="1">
3161        <div class="flex items-start">
3162          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
3163href="/collections/pop-up-bouquets" >Pop-Up Bouquets</a>
3164          </div>
3165
3166        <div class="header__three_menu-wrapper header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto" spz-menu-submenu>
3167              <div class="hide-scrollbar page-container lg:pt-8 lg:pb-9">
3168                <div class="header__three_menu-content">
3169                  <ul class="header__waterfall-wrapper header_menu_hover_animation m-0 p-0 flex list-none" >
3170                    
3171                      
3172                        <a class="header__menu-item-last w-full no-underline" 
3173href="/collections/classic-pop-up-bouquets" >
3174                          <span class="font-medium">classic pop up bouquets</span>
3175                          
3176                          
3177                          
3178                          
3179                        </a>
3180                      
3181                    
3182                      
3183                        <a class="header__menu-item-last w-full no-underline" 
3184href="/collections/mini-bouquet-pop-up-cards" >
3185                          <span class="font-medium">mini bouquet pop up cards</span>
3186                          
3187                          
3188                          
3189                          
3190                        </a>
3191                      
3192                    
3193                      
3194                        <a class="header__menu-item-last w-full no-underline" 
3195href="/collections/grande-bouquets" >
3196                          <span class="font-medium">grande bouquets</span>
3197                          
3198                          
3199                          
3200                          
3201                        </a>
3202                      
3203                    
3204                      
3205                        <a class="header__menu-item-last w-full no-underline" 
3206href="/collections/rose-bouquet-building-block-set" >
3207                          <span class="font-medium">Rose Bouquet Building Block Set</span>
3208                          
3209                          
3210                          
3211                          
3212                        </a>
3213                      
3214                    
3215                  </ul>
3216                  <div class="header__menu_product header_menu_hover_animation">
3217<div class="shoplazza-product-snippet" product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086">
3218
3219  <div class="product-snippet__img-wrapper relative" id="product_snippet__image_wrap_header_4e6826d8-cb41-4614-b3f8-640fd7c86086_left_center-3">
3220    <a
3221      class="product-snippet__img-link relative block overflow-hidden"
3222      href="/products/blooming-roses"
3223has-secondary-image
3224    >
3225      <spz-img class="product-snippet__img product-snippet__img_main i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/bef081796bfae7cec58019f8c75bb0c4.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img>
3226      <spz-img class="product-snippet__img-secondary absolute top-0 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/ec4614786536f2eef96bd5bd7cc2fb39.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img>
3227      </a>
3228    <spz-product-form product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" layout="container" @atcsuccess="" @atcerror="theme-toast.showToast(content=event.message);" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
3229  <form>
3230    <input name="variant_id" type="hidden" value="e334344d-a1e1-4af8-9110-3dda35b0cbf7">
3231    <button
3232      type="button"
3233      class="product-snippet__quick-shop-icon"
3234      role="addToCart"
3235      data-quick-shop="blooming-roses"
3236      data-track-product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086"
3237      data-track="click"
3238      data-track-content="add_to_cart"
3239      data-track-source="quick_shop"
3240    >
3241      <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg>
3242    </button>
3243  </form>
3244</spz-product-form>
3245      <a
3246      class="product_snippet__label md:hidden"
3247      label-type="left_center-3"
3248      href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
3249  >
3250      Save <span class='money'>$19.92</span>
3251  </a>
3252  <a
3253      class="product_snippet__label lg:hidden"
3254      label-type="left_center-3"
3255      href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
3256  >
3257      Save <span class='money'>$19.92</span>
3258  </a>
3259  </div>
3260
3261  <h3 class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color  ">
3262    <a class="shoplazza-product-snippet-title text-inherit no-underline" 
3263  href="/products/blooming-roses"
3264>
3265      Blooming Roses
3266    </a>
3267  </h3>
3268
3269  <a
3270    class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline"
3271    href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7"
3272  >
3273    <span class="product-snippet__price">
3274        <span class='money'>$19.98</span>
3275        </span>
3276      <span class="product-snippet__compare-at-price money">
3277          $39.90
3278        </span>
3279      </a>
3280
3281  
3282</div></div>
3283                  </div>
3284              </div>
3285            </div>
3286          </li>
3287    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-4" data-id="82938779"  data-levels="0">
3288        <div class="flex items-start">
3289          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
3290href="/collections/all-xhdb" >All Products</a>
3291          </div>
3292
3293        </li>
3294    <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-5" data-id="82982825"  data-levels="0">
3295        <div class="flex items-start">
3296          <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 
3297href="/pages/track-order" >Track Order</a>
3298          </div>
3299
3300        </li>
3301    <li spz-menu-more-link class="header__menu-item header__menu-item-first">
3302      <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap cursor-pointer" href="javascript:;" >More links</a>
3303      <div class="header__more_menu-wrapper" spz-menu-submenu>
3304        <template>
3305          ${(function(){
3306            const formatLinks = (links) => {
3307              return links.map(link => {
3308                link.tag = tags[link.title.toUpperCase()] || {};
3309                link.target_attr = link.target == '_blank' ? 'target="_blank"' : '';
3310                link.href_attr = link.url ? `href="${link.url}"` : '';
3311                if(link.children && link.children.length){
3312                  link.children = formatLinks(link.children);
3313                }
3314                return link;
3315              })
3316            };
3317            const tags = "{}";
3318            let linkList = [
3319              {
3320                  id: 80779717,
3321                  title: "Home",
3322                  url: "\/",
3323                  target: "",
3324                  levels: 0,
3325                  product0: { id: (null) },
3326                  children: [
3327                    
3328                  ]
3329                },
3330              {
3331                  id: 83743781,
3332                  title: "Women shoes",
3333                  url: "\/collections\/women-shoes",
3334                  target: "",
3335                  levels: 0,
3336                  product0: { id: (null) },
3337                  children: [
3338                    
3339                  ]
3340                },
3341              {
3342                  id: 83007573,
3343                  title: "Pop-Up Bouquets",
3344                  url: "\/collections\/pop-up-bouquets",
3345                  target: "",
3346                  levels: 1,
3347                  product0: { id: ("4e6826d8-cb41-4614-b3f8-640fd7c86086") },
3348                  children: [
3349                    
3350                      
3351                      {
3352                        title: "classic pop up bouquets",
3353                        url: "\/collections\/classic-pop-up-bouquets",
3354                        target: "",
3355                        levels: 0,
3356                        children: [
3357                          
3358                        ]
3359                      },
3360                    
3361                      
3362                      {
3363                        title: "mini bouquet pop up cards",
3364                        url: "\/collections\/mini-bouquet-pop-up-cards",
3365                        target: "",
3366                        levels: 0,
3367                        children: [
3368                          
3369                        ]
3370                      },
3371                    
3372                      
3373                      {
3374                        title: "grande bouquets",
3375                        url: "\/collections\/grande-bouquets",
3376                        target: "",
3377                        levels: 0,
3378                        children: [
3379                          
3380                        ]
3381                      },
3382                    
3383                      
3384                      {
3385                        title: "Rose Bouquet Building Block Set",
3386                        url: "\/collections\/rose-bouquet-building-block-set",
3387                        target: "",
3388                        levels: 0,
3389                        children: [
3390                          
3391                        ]
3392                      },
3393                    
3394                  ]
3395                },
3396              {
3397                  id: 82938779,
3398                  title: "All Products",
3399                  url: "\/collections\/all-xhdb",
3400                  target: "",
3401                  levels: 0,
3402                  product0: { id: (null) },
3403                  children: [
3404                    
3405                  ]
3406                },
3407              {
3408                  id: 82982825,
3409                  title: "Track Order",
3410                  url: "\/pages\/track-order",
3411                  target: "",
3412                  levels: 0,
3413                  product0: { id: (null) },
3414                  children: [
3415                    
3416                  ]
3417                },
3418              ].slice(offset);
3419            linkList = formatLinks(linkList);
3420            const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id));
3421            return `
3422              <div>
3423                <div spz-if="${hasChild}" class="header__more_menu_three header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto">
3424                  <spz-tabs class="header__more_menu page-container" layout="container" interact="hover">
3425                    <ul class="header__more_menu_left header_menu_hover_animation list-none" role="tabs">
3426                      <li role="tab" data-panel="tab-${link.id}" spz-for="link in linkList" key="link.id">
3427                        <a class="flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}>
3428                          <span class="flex-1 mr-4">${link.title}</span>
3429                          <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span>
3430                          <i spz-if="${!!(link.children && link.children.length)}" class="flex">
3431                            <svg class="header__more_menu_icon" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M4.698 8.574a.6.6 0 0 0 0 .848l6.718 6.718a.3.3 0 0 0 .424 0l.679-.679a.3.3 0 0 0 0-.424L6.48 8.998 12.52 2.96a.3.3 0 0 0 0-.425l-.679-.679a.3.3 0 0 0-.424 0L4.698 8.574z" fill="currentColor"/></svg>
3432                          </i>
3433                        </a>
3434                      </li>
3435                    </ul>
3436                    <div class="header__more_menu_right header_menu_hover_animation flex" role="tabpanel" data-id="tab-${link.id}" spz-for="link in linkList" key="link.id">
3437                      <ul class="flex flex-wrap list-none" ${(!!link.product0.id)?"data-has-product":''} spz-if="${!!(link.children && link.children.length)}">
3438                        <li class="flex-1" spz-for="second_link in link.children">
3439                          <a class="header__more_menu_right_item flex items-start text-inherit no-underline" ${second_link.href_attr} ${second_link.target_attr}>
3440                            <span>${second_link.title}</span>
3441                            <span spz-if="${!!(second_link.tag.label)}" class="header__menu-item-tag" style="color:${second_link.tag.color}; background:${second_link.tag.bg};">${second_link.tag.label}</span>
3442                          </a>
3443                          <a class="header__more_menu_right_item header__menu-item-last flex items-start text-inherit no-underline" spz-for="third_links in second_link.children" ${third_links.href_attr} ${third_links.target_attr}>
3444                            <span>${third_links.title}</span>
3445                            <span spz-if="${!!(third_links.tag.label)}" class="header__menu-item-tag" style="color:${third_links.tag.color}; background:${third_links.tag.bg};">${third_links.tag.label}</span>
3446                          </a>
3447                        </li>
3448                      </ul>
3449                      <div class="header__menu_product" spz-if="${!!link.product0.id}">
3450                        
3451
3452<spz-product-snippet
3453  product-id="${link.product0.id}"
3454  layout="container"
3455  template="product-snippet-template"
3456  variant-thumb-names="color"
3457  thumb-max-num="3"
3458  ></spz-product-snippet>
3459</div>
3460                    </div>
3461                  </spz-tabs>
3462                </div>
3463                <ul spz-else class="header__more_menu_second header__second_menu-wrapper header-shadow absolute header-bg list-none overflow-x-hidden overflow-y-auto">
3464                  <li class="header_menu_hover_animation" spz-for="link in linkList" key="link.id">
3465                    <a class="header__menu-item-last flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}>
3466                      <span>${link.title}</span>
3467                      <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span>
3468                    </a>
3469                  </li>
3470                </ul>
3471              </div>
3472            `
3473          })()}
3474        </template>
3475      </div>
3476    </li>
3477  </ul>
3478</spz-menu>
3479      </div>
3480    </div>
3481  <div class="plugin__fixed-div pointer-events-auto md:hidden"></div>
3482</div>
3483<style>
3484  .header__mobile .header{
3485    padding-top: 18px;
3486    padding-bottom: 18px;
3487  }
3488  .header__mobile .header_apps_wrap > * {
3489    margin-bottom: 18px;
3490    flex: 1;
3491  }
3492  .header__mobile .header__search-wrapper{
3493    padding-top: 4px;
3494    padding-bottom: 10px;
3495  }
3496  .header__mobile .header__menu-wrapper{
3497    padding: 8px 0 8px 16px;
3498  background: var(--color-menu-bg);
3499  }
3500  .header__mobile__menu-item-first{
3501    padding-right: 10px;
3502  }
3503  .header__mobile__menu-item-first a{
3504    padding: 9px 12px;
3505    font-size: 12px;
3506    line-height: 1.3;
3507    color: var(--color-menu-item-text-90);
3508    background: var(--color-menu-item-bg);
3509    border-radius: 4px;
3510  }
3511  .header_menu_tooltip,
3512  .header_menu_tooltip .i-spzhtml-tooltip-inner{
3513    padding: 0;
3514    background: transparent !important;
3515  }
3516  .header_menu_tooltip .header__menu_second {
3517    width: 150px;
3518    max-height: 236px;
3519    border-radius: 4px ;
3520  }
3521  .header_menu_tooltip .header__menu_second-item{
3522    background: #fff;
3523    color: var(--color-menu-item-text-80);
3524    padding: 0 0 0 14px;
3525  font-size: 12px;
3526    line-height: 1.3
3527  }
3528  .header_menu_tooltip .header__menu_second-item a{
3529    padding: 15px 14px 15px 0;
3530  }
3531  .header_menu_tooltip .header__menu_second-item a + a{
3532    border: 1px solid #E6E6E6;
3533  }
3534  .header__mobile__menu-item-first a.header_menu_active {
3535    background-color: var(--color-actived-menu-item-bg) ;
3536    color: var(--color-actived-menu-item-text) ;
3537  }
3538</style>
3539<header class="header__mobile tw-text-header-text-color lg:hidden">
3540  <div class="header page-container z-20 relative header-bg pointer-events-auto">
3541    <div class="flex items-center">
3542      <button
3543          class="lg:hidden header-cart-back-btn clear flex text-inherit"
3544          type="button"
3545          @tap="SPZ.history(type='back', defaultUrl='/');"
3546        >
3547          <svg class="" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" d="M6.828 11.526a.6.6 0 0 0 0 .849l7 7a.3.3 0 0 0 .425 0l.721-.721a.3.3 0 0 0 0-.424l-6.279-6.28 6.28-6.279a.3.3 0 0 0 0-.424l-.722-.721a.3.3 0 0 0-.424 0l-7 7Z"/></svg>
3548        </button>
3549      <h2 class="header__logo flex-shrink-0 type-heading-font-family">
3550  <a class="image_width block md:hidden" href="/">
3551  <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img>
3552  </a>
3553  <a class="image_width block lg:hidden" href="/">
3554  <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img>
3555  </a>
3556</h2>
3557<style>
3558  .header__search button,
3559  .header__search input{
3560    border: none;
3561    outline: none;
3562  }
3563  .header__search-btn,
3564  .header__search-icon{
3565    background: transparent;
3566  }
3567  .header__search {
3568    display: flex;
3569    align-items: center;
3570    flex-shrink: 0;
3571  }
3572  .header__search-btn {
3573    padding: 0;
3574    margin: 0;
3575    font-size: 0;
3576    color: inherit;
3577    cursor: pointer;
3578  }
3579  .header__search-form{
3580    min-height: 40px;
3581  }
3582  .header__search-input{
3583    font-size: 13px;
3584    line-height: 16px;
3585    color: var(--color-header-search-text);
3586    background-color: var(--color-header-search-bg);
3587    padding: 12px 16px 12px 36px;
3588      border-radius: 2px 0 0 2px;
3589    }
3590  .header__search-input:not(:placeholder-shown) ~ .header__search-icon-close{
3591    display: flex;
3592  }
3593  .header__search-icon{
3594    left: 10px;
3595    top: 50%;
3596    transform: translateY(-50%);
3597    color: var(--color-header-search-text-50);
3598  }
3599  .header__search-icon-close{
3600    top: 50%;
3601    transform: translateY(-50%);
3602    height: 18px;
3603    width: 18px;
3604    color: #fff;
3605    background: #C0C0C0;
3606    right: 10px;
3607    }
3608  .header__search-icon:hover,
3609  .header__search-icon-close:hover{
3610    color: var(--color-header-search-text);
3611  }
3612  .header__search-submit-btn{
3613    padding: 11px 16px;
3614    font-size: 14px;
3615    line-height: 18px;
3616    color: var(--color-header-search-btn-text);
3617    background-color: var(--color-header-search-btn-bg);
3618    border-radius: 0 2px 2px 0;
3619    }
3620  @media (max-width: 959.98px) {
3621    .header__search-form{
3622      width: 100%
3623    }
3624  }
3625  @media (min-width: 960px) {
3626    .header__search-form{
3627      margin: 18px 0;
3628    }
3629    .header__search-input{
3630      width: 232px;
3631      border-radius: 2px;
3632    }
3633    .header__desktop[data-layout="left"] .header__search-input{
3634      width: 278px;
3635    }
3636  }
3637</style>
3638
3639<div class="header__search" id="">
3640    <button
3641        type="button"
3642        class="header__search-btn"
3643        @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_search_sidebar.open()"
3644      >
3645        <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 0 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg>
3646      </button>
3647    </div>
3648<spz-observer layout="logic" target="header__plugin-container" @childupdated="header-menu-top.updateMoreLink" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer>
3649<div class="header__icons flex-shrink-0 flex items-center"  id="header-icons" >
3650  <div class="header__plugin-container md:hidden flex items-center" id="header__plugin-container">
3651    <div class="empty-hidden plugin__translate-header"></div>
3652    <div class="empty-hidden plugin__currency"></div>
3653  </div>
3654
3655  <div class="header__account relative text-0  md:hidden ">
3656    <i class="cursor-pointer" @tap="header_account_dropdown_md.open"><svg class=" " width="26" height="26" fill="none" xmlns="http://www.w3.org/2000/svg">
3656<path opacity=".01" fill="currentColor" d="M0 0h26v26H0z"/><g fill-rule="evenodd" clip-rule="evenodd" fill="currentColor"><path d="M13.11 1a6.11 6.11 0 1 1 0 12.22 6.11 6.11 0 0 1 0-12.22Zm0 1.6a4.51 4.51 0 1 0 0 9.02 4.51 4.51 0 0 0 0-9.02ZM17.333 15A6.667 6.667 0 0 1 24 21.667V24a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2.333A6.667 6.667 0 0 1 8.667 15h8.666Zm0 1.6H8.667a5.067 5.067 0 0 0-5.062 4.847l-.005.22V23.4h18.8v-1.733a5.067 5.067 0 0 0-4.847-5.062l-.22-.005Z"/></g></svg></i>
3657    <spz-dropdown class="header__account_dropdown i-spzhtml-layout-nodisplay" id="header_account_dropdown_md" layout="nodisplay" placement="bottom" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
3658        <ul class="header__account_dropdown_content list-none header-shadow">
3659    <li><a href="/account/login">Log in</a></li>
3660      <li><a href="/account/register">Create an account</a></li>
3661      </ul>
3662</spz-dropdown>
3663    </div>
3664  <a class="header__cart relative flex justify-end items-center text-0 text-inherit cursor-pointer no-underline" >
3665    <i>
3666      <svg class="" width="28" height="28" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h28v28H0z"/><g fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.8 2.2a.8.8 0 1 0 0 1.6h2.803l1.542 14.541a1 1 0 0 0 .995.895h15.055a1 1 0 0 0 .982-.811l2.105-10.91a1 1 0 0 0-.982-1.189H6.48l-.432-4.081a.05.05 0 0 0-.05-.045H1.8Zm4.849 5.726h16.923l-1.873 9.709H7.679l-1.03-9.709Z"/><path d="M10.917 23.62a1.909 1.909 0 1 1-3.818 0 1.909 1.909 0 0 1 3.818 0ZM22.372 23.62a1.91 1.91 0 1 1-3.819 0 1.91 1.91 0 0 1 3.819 0Z"/></g></svg>
3667      </i>
3668    <!-- 购物车数量 -->
3669    <spz-event target-id="header_cart_count_render_md" target-api="render" event-name="dj.addToCart;dj.cartChange;" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event>
3670    <spz-render id="header_cart_count_render_md" layout="container" src="/api/cart/count" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
3671      <template>
3672        <div>
3673          <span class="header__cart-count absolute rounded-full leading-none text-center" spz-if="${data.data && data.data.count > 0}">${data.data && data.data.count}</span>
3674        </div>
3675      </template>
3676    </spz-render>
3677  </a>
3678  <i class="header__drawer_icon  flex lg:hidden cursor-pointer" @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_drawer.open()">
3679      <svg class="" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".01"><path opacity=".696" fill="currentColor" d="M0 0h28v28H0z"/></g><g fill="currentColor"><path d="M24.17 6.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 0 1 0-1.66h20.34ZM24.17 13.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34ZM24.17 20.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34Z"/></g></svg>
3680    </i>
3681  </div>
3682    </div>
3683  </div>
3684
3685  <div
3686    class="header__fixed-top header__scroll_hide pointer-events-auto"
3687    id="header-scrollable-container-mobile"
3688  >
3689    </div>
3690  <div class="plugin__fixed-div pointer-events-auto"></div>
3691</header>
3692<style>
3693    .header__search_sidebar{
3694      height: 100vh;
3695      width: 100%;
3696      pointer-events: none;
3697    }
3698    .header__search_sidebar_content{
3699      pointer-events: auto;
3700      overflow: hidden auto;
3701      max-height: 100%;
3702      background-color: var(--color-header-bg);
3703    }
3704    .header__search-modal-form{
3705      position: sticky;
3706      top: 0;
3707      z-index: 10;
3708      background-color: var(--color-header-bg);
3709    }
3710    .header__search_sidebar-input{
3711      padding: 46px 16px;
3712      color: var(--color-header-search-text);
3713    }
3714    .header__search_sidebar + .i-spzhtml-sidebar-mask{
3715      pointer-events: auto;
3716    }
3717  </style>
3718  <spz-sidebar class="header__search_sidebar i-spzhtml-layout-nodisplay" id="header_search_sidebar" layout="nodisplay" side="top" @close="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=false);" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
3719    <div class="header__search_sidebar_content">
3720      <div class="page-container header__search-modal-form">
3721        <form class="flex items-center" action="/search" method="get">
3722          <button type="submit" class="clear text-0 text-inherit cursor-pointer">
3723            <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 
37230 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg>
3724          </button>
3725          <input
3726            @input-debounced="header_search_predictive_render-sidebar.rerender(data=event.value, redo=true);"
3727            class="header__search_sidebar-input flex-1 text-base leading-none type-text-font-family clear"
3728            type="text"
3729            autocomplete="off"
3730            name="q"
3731            placeholder="Search products"
3732          />
3733          <button type="reset" class="header__search-modal-close text-0 text-inherit clear cursor-pointer" @tap="header_search_sidebar.close()">
3734            <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path d="M21.502 5.732A.85.85 0 0 0 20.3 4.53l-7.32 7.32L5.734 4.6a.85.85 0 0 0-1.202 1.203l7.248 7.247L4.53 20.3A.85.85 0 0 0 5.733 21.5l7.248-7.248 7.319 7.319a.85.85 0 0 0 1.202-1.202l-7.319-7.319 7.319-7.319z" fill="currentColor"/></svg>
3735          </button>
3736        </form>
3737      </div>
3738      <style>
3739    .header__search_predictive_render{
3740      background-color: var(--color-header-bg);
3741    }
3742    .header__search_product_list_wrap{
3743      padding: 24px 0 70px;
3744    }
3745    .header__search_product_list{
3746      display: grid;
3747      grid-template-columns: repeat(2, minmax(0, 1fr));
3748      column-gap: 16px;
3749      row-gap: 24px;
3750    }
3751    .header__search_product_list[data-empty],
3752    .header__search_product__empty,
3753    .header__search_product__view_more_wrap{
3754      display: none;
3755    }
3756    .header__search_product_list[hasmore] + .header__search_product__view_more_wrap,
3757    .header__search_product_list[data-empty] ~ .header__search_product__empty{
3758      display: flex;
3759      justify-content: center;
3760      align-items: center;
3761    }
3762    .header__search_product_list[loading] ~ .loading{
3763      display: var(--loading-show);
3764    }
3765    .header__search_product_list ~ .loading .loading-bounce{
3766      border-bottom-color: var(--color-body-text);
3767    }
3768    .header__search_product__view_more{
3769      margin: 24px auto 0;
3770      padding: 8px 24px;
3771      font-weight: 600;
3772      font-size: 16px;
3773      line-height: 24px;
3774    }
3775    @media (min-width: 960px) {
3776      .header__search_product_list{
3777        grid-template-columns: repeat(4, minmax(0, 1fr));
3778        column-gap: 24px;
3779      }
3780      .header__search_product_list_wrap{
3781        padding: 24px 0 40px;
3782      }
3783    }
3784  </style>
3785  <template id="header_search_product_list_template-sidebar">
3786    <spz-product-snippet
3787  data-source-id="header_search_product_list-sidebar"
3788  product-id="${data.id}"
3789  layout="container"
3790  template="product-snippet-template"
3791  variant-thumb-names="color"
3792  thumb-max-num="3"
3793  ></spz-product-snippet>
3794</template>
3795  <spz-render id="header_search_predictive_render-sidebar" class="header__search_predictive_render i-spzhtml-layout-container" layout="container" manual i-spzhtml-layout="container">
3796    <template>
3797      <div class="page-container">
3798        ${(function(){
3799          if (data === undefined || typeof data !== 'string' || data == '') return '<spz-render @finish="header_search_lightbox.close();header_search_sidebar.close();" layout="container"></spz-render>';
3800          const keyword = encodeURIComponent(data);
3801          return `
3802            <div class="header__search_product_list_wrap">
3803              <spz-list
3804                class="header__search_product_list"
3805                id="header_search_product_list-sidebar"
3806                layout="container"
3807                initial-page="0"
3808                size="limit"
3809                page-size="4"
3810                src="/api/search?keyword=${keyword}"
3811                list="data.products"
3812                total="data.total"
3813                template="header_search_product_list_template-sidebar"
3814              ></spz-list>
3815              <div class="header__search_product__view_more_wrap">
3816                <a
3817                  href="/search?q=${keyword}"
3818                  class="header__search_product__view_more button-primary rounded-btn no-underline">
3819                  View more
3820                </a>
3821              </div>
3822              <div class="header__search_product__empty">
3823                Your search for '${data}' did not yield any results.
3824              </div>
3825              <div class="loading items-center justify-center " role="loading"   hide >
3826  <div class="loading-bounce"></div>
3827</div>
3828            </div>
3829          `
3830        })()}
3831      </div>
3832    </template>
3833  </spz-render>
3834</div>
3835  </spz-sidebar>
3836<style>
3837  .header__drawer{
3838    width: 330px;
3839    top: 0;
3840    bottom: 0;
3841    max-width: 100vw !important;
3842    line-height: 1.4;
3843  }
3844  .header__drawer,
3845  .header__drawer + .i-spzhtml-sidebar-mask{
3846    pointer-events: auto;
3847  }
3848  .header__drawer a{
3849    color: inherit;
3850    text-decoration: none;
3851  }
3852  .header__drawer_header{
3853    position: sticky;
3854    top: 0;
3855    z-index: 10;
3856    height: 62px;
3857    border-bottom: 1px solid rgba(230,230,230,0.6);
3858  }
3859  .header__drawer_close{
3860    width: 62px;
3861    position: absolute;
3862    top: 0;
3863    right: 0;
3864    bottom: 0;
3865    opacity: 0.7;
3866  }
3867  .header__drawer_footer{
3868    position: sticky;
3869    bottom: 0;
3870    z-index: 10;
3871    border-top: 1px solid rgba(230,230,230,0.6);
3872    padding: 16px 20px;
3873  }
3874  .header__drawer_prev{
3875    position: sticky;
3876    top: 0;
3877    z-index: 10;
3878    display: flex;
3879    align-items: center;
3880    border-bottom: 1px solid rgba(230,230,230,0.6);
3881    padding: 16px 20px;
3882    background-color: var(--color-body-bg);
3883  }
3884  .header__drawer [spz-nested-submenu]:not([child-open]){
3885    overflow: hidden auto;
3886    max-height: 100%;
3887  }
3888  .header__drawer_menu_item{
3889    display: flex;
3890    align-items: center;
3891    justify-content: space-between;
3892    min-height: 22px;
3893    margin-left: 20px;
3894      padding: 16px 20px 16px 0;
3895    border-bottom: 1px solid rgba(230,230,230,0.6);
3896    cursor: pointer;
3897  }
3898  .header__drawer_menu_item a:not([spz-nested-submenu-open]){
3899    flex: 1
3900  }
3901  .header_drawer_menu .header_drawer_menu_first{
3902    overflow: hidden auto;
3903  }
3904  .header_drawer_menu[child-open] .header_drawer_menu_first{
3905    overflow: unset !important;
3906  }
3907  </style>
3908<spz-sidebar id="header_drawer" class="header__drawer flex flex-col bg-color-body i-spzhtml-layout-nodisplay" side="right" layout="nodisplay" @close="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=false);" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
3909  <div class="header__drawer_header flex-shrink-0 relative flex bg-color-body">
3910    <i class="header__drawer_close flex-center cursor-pointer" @tap="header_drawer.close()">
3911      <svg class="" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M5.034 3.652a.367.367 0 0 0-.518 0l-.864.864a.367.367 0 0 0 0 .519l5.963 5.963-5.963 5.963a.367.367 0 0 0 0 .519l.864.864a.367.367 0 0 0 .518 0l5.964-5.963 5.963 5.963a.367.367 0 0 0 .519 0l.864-.864a.367.367 0 0 0 0-.519l-5.964-5.963 5.964-5.963a.367.367 0 0 0 0-.519l-.864-.864a.367.367 0 0 0-.519 0l-5.963 5.963-5.964-5.963z" fill="currentColor"/></svg>
3912    </i>
3913  </div>
3914  <div class="flex-1 relative overflow-hidden">
3915    <spz-nested-menu class="header_drawer_menu flex flex-col i-spzhtml-layout-fill i-spzhtml-layout-size-defined" layout="fill" side="right" id="menu-drawer" i-spzhtml-layout="fill">
3916      <ul class="header_drawer_menu_first flex-1 hide-scrollbar">
3917        <li>
3918              <div  class="header__drawer_menu_item">
3919                <a class="flex items-start " 
3920href="/" >
3921  <span>Home</span>
3922  </a>
3923                </div>
3924              </li>
3925          <li>
3926              <div  class="header__drawer_menu_item">
3927                <a class="flex items-start " 
3928href="/collections/women-shoes" >
3929  <span>Women shoes</span>
3930  </a>
3931                </div>
3932              </li>
3933          <li>
3934              <div spz-nested-submenu-open class="header__drawer_menu_item">
3935                <a class="flex items-start " 
3936href="/collections/pop-up-bouquets" >
3937  <span>Pop-Up Bouquets</span>
3938  </a>
3939                <svg   class="header__drawer_next_icon ml-3 flex-shrink-0" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"/></svg>
3940</div>
3941              <ul class="clear" spz-nested-submenu>
3942                    <li class="header__drawer_prev" spz-nested-submenu-close>
3943                      
3944  <svg class="mr-3" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M4.06 7.573a.6.6 0 0 0 0 .848l6.152 6.152a.3.3 0 0 0 .424 0l.594-.594a.3.3 0 0 0 0-.424L5.672 7.997 11.23 2.44a.3.3 0 0 0 0-.424l-.594-.594a.3.3 0 0 0-.424 0L4.06 7.573z" fill="currentColor"/></svg>
3945<span class="flex-1 underline">Pop-Up Bouquets</span>
3946                    </li>
3947                    
3948                      
3949                      
3950                      <li>
3951                        <div  class="header__drawer_menu_item">
3952                          <a class="flex items-start " 
3953href="/collections/classic-pop-up-bouquets" >
3954  <span>classic pop up bouquets</span>
3955  </a>
3956                          
3957                        </div>
3958                        
3959                      </li>
3960                    
3961                      
3962                      
3963                      <li>
3964                        <div  class="header__drawer_menu_item">
3965                          <a class="flex items-start " 
3966href="/collections/mini-bouquet-pop-up-cards" >
3967  <span>mini bouquet pop up cards</span>
3968  </a>
3969                          
3970                        </div>
3971                        
3972                      </li>
3973                    
3974                      
3975                      
3976                      <li>
3977                        <div  class="header__drawer_menu_item">
3978                          <a class="flex items-start " 
3979href="/collections/grande-bouquets" >
3980  <span>grande bouquets</span>
3981  </a>
3982                          
3983                        </div>
3984                        
3985                      </li>
3986                    
3987                      
3988                      
3989                      <li>
3990                        <div  class="header__drawer_menu_item">
3991                          <a class="flex items-start " 
3992href="/collections/rose-bouquet-building-block-set" >
3993  <span>Rose Bouquet Building Block Set</span>
3994  </a>
3995                          
3996                        </div>
3997                        
3998                      </li>
3999                    
4000                  </ul>
4001              </li>
4002          <li>
4003              <div  class="header__drawer_menu_item">
4004                <a class="flex items-start " 
4005href="/collections/all-xhdb" >
4006  <span>All Products</span>
4007  </a>
4008                </div>
4009              </li>
4010          <li>
4011              <div  class="header__drawer_menu_item">
4012                <a class="flex items-start " 
4013href="/pages/track-order" >
4014  <span>Track Order</span>
4015  </a>
4016                </div>
4017              </li>
4018          <div class="header__drawer_plugins">
4019          <div class="empty-hidden  plugin__translate-header px-5 my-10"></div>
4020          <div class="empty-hidden  plugin__currency px-5 my-10"></div>
4021        </div>
4022      </ul>
4023
4024      <li class="header__drawer_menu_item"><a href="/account/login">Log in</a></li>
4025          <li class="header__drawer_menu_item"><a href="/account/register">Create an account</a></li>
4026          </spz-nested-menu>
4027  </div>
4028</spz-sidebar>
4029</div>
4030<spz-script layout="logic" type="application/javascript">
4031  (function(){
4032    let w = window.innerWidth;
4033    function setHeaderCssVar() {
4034      const headerEle = document.getElementById('shoplaza-section-header');
4035      if(!headerEle){ return };
4036      document.body.style.setProperty('--window-height', `${window.innerHeight}px`);
4037      document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`);
4038
4039      const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide');
4040      if (mdScorllHideEle) {
4041        document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`);
4042      }
4043
4044      const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide');
4045      if (pcScorllHideEle) {
4046        document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`);
4047      }
4048
4049    }
4050    function handlResize() {
4051      if(w == window.innerWidth){return};
4052      w = window.innerWidth;
4053      setHeaderCssVar();
4054    };
4055    function init(){
4056      setHeaderCssVar();
4057      window.removeEventListener('resize', window._theme_header_listener)
4058      window._theme_header_listener = handlResize;
4059      window.addEventListener('resize', window._theme_header_listener);
4060    }
4061    init();
4062  })();
4063</spz-script>
4064
4065</div>
4066      <div class="plugin__static-div"></div>
4067      <div class="main-content" id="main-content">
4068        <style type="text/css">
4069  .apps-add-cart-toast-wrap {
4070    position: fixed;
4071    z-index: var(--z-index-tooltip, 1070);
4072    top: 64px;
4073    right: 0;
4074    left: 0;
4075    pointer-events: none;
4076    display: flex;
4077    justify-content: end;
4078  }
4079  .apps-add_cart-toast {
4080    width: 100%;
4081    background: rgba(41, 41, 41, 0.95);
4082    color: #fff;
4083    pointer-events: auto;
4084    border-radius: 0px;
4085    position: unset !important;
4086    transform: unset !important;
4087    text-align: left !important;
4088    display: flex;
4089    align-items: center;
4090  }
4091  .apps-add_cart-toast-span {
4092    width: 100%;
4093    justify-content: flex-start;
4094    align-items: center;
4095    display: flex;
4096  }
4097
4098  /* 全局toast   */
4099  .discount-toast-wrap{
4100    position: fixed;
4101    z-index: var(--z-index-tooltip, 1070);
4102    top: 64px;
4103    right: 0;
4104    left: 0;
4105    pointer-events: none;
4106    display: flex;
4107    justify-content: end;
4108  }
4109  .discount-toast{
4110    width: 100%;
4111    background: rgba(41, 41, 41, 0.95);
4112    color: #fff;
4113    pointer-events: auto;
4114    border-radius: 0px;
4115    position: unset !important;
4116    transform: unset !important;
4117    text-align: left !important;
4118  }
4119  
4120  @media (min-width: 960px) {
4121     .lg\:page-container {
4122      max-width: var(--general-layout-width, var(--layout-width, var(--page-width, 1140px)));
4123      padding: 0 var(--general-layout-spacing, var(--page-spacing, 40px));
4124      margin: 0 auto;
4125    }
4126    .apps-add-cart-toast-wrap {
4127      top: 60px;
4128    }
4129     .apps-add_cart-toast{
4130      width: 400px;
4131      border-radius: 2px;
4132    }
4133     .discount-toast-wrap {
4134      top: 60px;
4135    }
4136     .discount-toast{
4137      width: 400px;
4138      border-radius: 2px;
4139    }
4140  }
4141</style><div id="shoplaza-section-1717490469203" class="shoplaza-section" data-section-id="1717490469203" data-section-type="cart_shopping" data-section-style=""><style>
4142  .main-content {
4143    padding-bottom: 32px;
4144  }
4145
4146  @media (min-width: 960px) {
4147    .main-content {
4148      padding-bottom: 66px;
4149    }
4150  }
4151
4152  #cart-render {
4153    width: 0;
4154    height: 0;
4155  }
4156
4157  #cart-render[loading] ~ *,
4158  #cart-render:not([finish]) ~ * {
4159    display: none;
4160  }
4161
4162  #cart-render[loading] ~ .cart-loading,
4163  #cart-render[interact-loading] ~ .cart-loading {
4164    display: var(--loading-show);
4165  }
4166
4167  #cart-render:not([finish]) ~ .cart-content > header,
4168  #cart-render:not([finish]) ~ .cart-content .cart-items-top-container,
4169  #cart-render[finish][data-empty] ~ .cart-content .cart-items-top-container,
4170  #cart-render[finish][data-empty] ~ .cart-content .cart-subtotal-outer-container,
4171  #cart-render[finish][data-empty] ~ .cart-content .cart-summary-sticky-container {
4172    display: none;
4173  }
4174
4175  .cart-content .cart-empty {
4176    padding: 80px 0;
4177  }
4178
4179  .cart-content spz-render {
4180    min-width: unset !important;
4181  }
4182
4183  .cart-continue-shopping {
4184    width: 100%;
4185    height: 46px;
4186  }
4187
4188  .cart-item-image {
4189    flex-shrink: 0;
4190    width: 19.55%;
4191  }
4192
4193  .cart-qty spz-quantity {
4194    width: 81px;
4195  }
4196
4197  .cart-qty spz-quantity .i-spzhtml-quantity-number-decrease[disabled] {
4198    cursor: pointer;
4199  }
4200
4201  .cart-qty spz-quantity input[type="number"] {
4202    width: 25px;
4203  }
4204
4205  .cart-qty spz-quantity span[role="button"] {
4206    padding: 6px;
4207    border-radius: var(--global-border-radius);
4208  }
4209
4210  .cart-qty-minimum-tip {
4211    color: #FF3F02;
4212  }
4213
4214  .cart-subtotal-free-shipping + .cart-subtotal-content {
4215    margin-top: 10px;
4216  }
4217
4218  .cart-subtotal-content {
4219    padding: 12px;
4220    border-radius: 2px;
4221    background-color: #F6F6F6;
4222  }
4223
4224  .cart-invalid-msg {
4225    color: #FF3F02;
4226  }
4227
4228  .cart-checkout-btn,
4229  .cart-summary-checkout-btn {
4230    width: 100%;
4231    height: 46px;
4232  }
4233
4234  .cart-subtotal-render {
4235    min-height: 1px;
4236  }
4237
4238  @media (max-width: 959.98px) {
4239    .cart-item {
4240      padding: 16px 0;
4241    }
4242
4243    .cart-qty-minimum-tip {
4244      margin-bottom: -8px;
4245    }
4246
4247    .cart-summary-sticky-container {
4248      z-index: var(--z-index-sticky);
4249      position: fixed;
4250      left: 0;
4251      bottom: 0;
4252      width: 100%;
4253      background-color: #fff;
4254      box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
4255      opacity: 0;
4256      transform: translateY(140%);
4257    }
4258
4259    .cart-summary-sticky-container .ios_safari_bottom_bar {
4260      display: none;
4261    }
4262
4263    .cart-summary-sticky-container[hidden] {
4264      display: block !important;
4265      pointer-events: none;
4266    }
4267
4268    .cart-summary-sticky-container[show] {
4269      animation: sticky-bottom-show .7s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards;
4270    }
4271
4272    @keyframes sticky-bottom-show {
4273      0% { opacity: 1;}
4274      100% { transform: translateY(0); opacity: 1; }
4275    }
4276
4277    .cart-summary-sticky-checkout-btn {
4278      width: 33.51%;
4279      height: 46px;
4280      margin-top: 0;
4281    }
4282
4283    .cart-summary-discount-btn {
4284      display: flex;
4285      align-items: center;
4286      margin-top: 4px;
4287      padding: 4px 8px;
4288      color: #F16515;
4289      background-color: #fff;
4290      border-radius: 100px;
4291    }
4292
4293    .cart-summary-discount-btn > span {
4294      margin-right: 2px;
4295    }
4296
4297    html[dir="rtl"] .cart-summary-discount-btn > span {
4298      margin-left: 2px;
4299      margin-right: 0;
4300    }
4301
4302    .cart-summary-discount-btn svg {
4303      transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
4304    }
4305
4306    .cart-summary-discount-list.open .cart-summary-discount-btn svg {
4307      transform: rotate(-180deg);
4308    }
4309
4310    .cart-summary-discount-list ul {
4311      display: none;
4312    }
4313
4314    .cart-summary-discount-list.open ul {
4315      display: block;
4316    }
4317
4318    .cart-summary-sticky-render .cart-summary-discount-btn {
4319      background-color: #F6F6F6;
4320    }
4321
4322    .cart-summary-sticky-modal {
4323      z-index: calc(var(--z-index-modal) + 1);
4324      width: 100% !important;
4325      max-height: 85vh !important;
4326      display: flex;
4327      align-items: flex-end;
4328      justify-content: flex-end;
4329      pointer-events: none;
4330    }
4331
4332    .cart-summary-sticky-modal .ios_safari_bottom_bar {
4333      display: none;
4334    }
4335
4336    .cart-summary-sticky-modal-inner {
4337      width: 100%;
4338      padding: 8px 16px 16px;
4339      border-radius: 2px;
4340      background-color: #fff;
4341      box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
4342      pointer-events: auto;
4343    }
4344
4345    .cart-summary-sticky-modal-close {
4346      margin-right: -8px;
4347    }
4348
4349    html[dir="rtl"] .cart-summary-sticky-modal-close {
4350      margin-left: -8px;
4351      margin-right: 0;
4352    }
4353
4354    .cart-summary-sticky-modal ~ .i-spzhtml-sidebar-mask {
4355      top: unset;
4356      bottom: 0;
4357    }
4358
4359    .cart-checkout-btn-mobile {
4360      flex-shrink: 0;
4361      width: 40.268%;
4362      margin-top: 0;
4363    }
4364
4365    .cart-summary-sticky-render .cart-summary-discount-btn svg {
4366      transform: rotate(0) !important;
4367    }
4368
4369    .cart-item-delete-btn {
4370      position: relative;
4371    }
4372
4373    .cart-item-delete-btn::before {
4374      content: '';
4375      position: absolute;
4376      top: -8px;
4377      left: -8px;
4378      right: -8px;
4379      bottom: -8px;
4380    }
4381  }
4382
4383  @media (min-width: 960px) {
4384    .cart-title {
4385      line-height: 1.1667;
4386      font-size: calc(var(--type-heading-font-size) * .8);
4387    }
4388
4389    .cart-content .cart-empty {
4390      padding: 60px 0 120px;
4391    }
4392
4393    .cart-continue-shopping {
4394      width: 420px;
4395    }
4396
4397    .cart-header-continue-shopping-btn {
4398      border-bottom: 1px solid var(--color-body-text);
4399    }
4400
4401    #cart-render[data-empty] ~ .cart-content .cart-header-continue-shopping-btn {
4402      display: none;
4403    }
4404
4405    .cart-items-header,
4406    .cart-item {
4407      display: grid;
4408      grid-template-columns: 50% 16.13% 24.2%;
4409      gap: 4.8387%;
4410    }
4411
4412    .cart-items-header {
4413      line-height: 1.14;
4414      border-bottom: 1px solid #E6E6E6;
4415    }
4416
4417    .cart-items-header li {
4418      padding: 16px 0;
4419    }
4420
4421    .cart-item-image {
4422      width: 19.35%;
4423    }
4424
4425    .cart-qty spz-quantity {
4426      width: 93px;
4427    }
4428
4429    .cart-qty spz-quantity input[type="number"] {
4430      width: 37px;
4431    }
4432
4433    .cart-subtotal-outer-container {
4434      width: 37.74%;
4435    }
4436  }
4437</style>
4438<spz-event target-id="cart-render" target-api="render" event-name="dj.addToCart" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event>
4439
4440<div id="cart">
4441  <spz-cart id="cart-render" layout="container" empty-item="cart.line_items" @mounted="cart-items-render.rerender(data=event.cart);cart-subtotal-render.rerender(data=event.cart);cart-subtotal-free-shipping.rerender(data=event.cart);cart-summary-sticky-render.rerender(data=event.cart);" @cartincrease="theme-toast-success.showToast(content='Increased successfully')" @cartdecrease="theme-toast-success.showToast(content='Decreased successfully')" @cartchange="cart-items-render.rerender(data=event.cart);cart-subtotal-render.rerender(data=event.cart);cart-subtotal-free-shipping.rerender(data=event.cart);cart-summary-sticky-render.rerender(data=event.cart);" @cartempty="cart-payment-breakdown.toggleClass(class='hidden', force=true);" @cartitemexists="cart-payment-breakdown.toggleClass(class='hidden', force=false);" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
4442    <template><div></div></template>
4443  </spz-cart>
4444
4445  <div class="loading items-center justify-center cart-loading" role="loading"  has-full-mask   hide >
4446  <div class="loading-bounce"></div>
4447</div>
4448
4449  <article class="cart-content" id="cart-content">
4450
4451    <header class="md:hidden page-container flex items-start justify-between" >
4452  <h4 class="cart-title m-0 type-heading-font-family title-color">Cart</h4>
4453  <button class="cart-header-continue-shopping-btn clear" type="button" @tap="SPZ.history(type='back', defaultUrl='/');">
4454    Continue shopping
4455  </button>
4456</header>
4457        <div class="page-container cart-items-top-container w-full mt-4">
4458  <div class="cart__discount-container mt-2 empty-hidden"></div>
4459</div>
4460
4461<spz-render class="page-container cart-items-render i-spzhtml-layout-container" id="cart-items-render" layout="container" manual i-spzhtml-layout="container">
4462  <template>
4463    <div>
4464      <section spz-if="${!!(data.line_items && data.line_items.length > 0)}">
4465        <ul class="md:hidden cart-items-header clear mt-4 color-text-default">
4466          <li>Product</li>
4467          <li>Quantity</li>
4468          <li class="text-right">Price</li>
4469        </ul>
4470
4471        <ul class="clear cart-items">
4472          <li class="cart-item lg:mt-7" spz-for="item in data.line_items" key="item.id">
4473            <div class="flex items-start">
4474              <a
4475                class="cart-item-image"
4476                spz-href="${item.product_url}?variant=${item.variant_id}"
4477                data-track-type="image"
4478                data-track-product_id="${item.variant_id}"
4479                data-track="click"
4480                data-track-content="product_link"
4481                data-track-product-id="${item.product_id}"
4482                data-track-position="cart"
4483              >
4484                <spz-img class="rounded-global-fixed overflow-hidden" width="${item.image.width}" height="${item.image.height}" layout="responsive" src="${item.image.src}" alt="${item.image.alt}" object-fit="cover" auto-fit></spz-img>
4485              </a>
4486
4487              <div class="flex-1 ml-4">
4488                <div class="md:flex md:items-start md:justify-between">
4489                  <div class="">
4490  <a
4491    class="product-title-color no-underline leading-1.25 line-clamp-2 lg:line-clamp-3"
4492    spz-href="${item.product_url}"
4493    data-track="click"
4494    data-track-content="product_link"
4495    data-track-product-id="${item.product_id}"
4496    data-track-position="cart"
4497  >
4498    ${item.product_title}
4499  </a>
4500  <ul class="clear break-words color-body-70 leading-1.25 mt-1 lg:mt-2">
4501    <li>${item.options.map(option => option.value).join('/')}</li>
4502    <li class="mt-1" spz-for="propertie in item.parsedProperties">
4503      ${propertie.name}/${propertie.isImage ? `<a class="no-underline text-inherit" spz-href="${propertie.value}" target="_blank" >View image</a>` : propertie.value}
4504    </li>
4505  </ul>
4506  <div class="discount_gift_content mt-1 lg:mt-2" spz-if="${!!item.is_free_gift}">
4507  <svg class=""  width="12" height="12" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.236 2.684c0-.407.381-.829.978-.829.58 0 1.232.481 1.232 1.29v.368H4.98c-.445 0-.915-.006-1.275-.138a.74.74 0 0 1-.343-.228c-.063-.083-.125-.22-.125-.463Zm3.783.83h-.467v-.37c0-.808.652-1.289 1.232-1.289.597 0 .978.422.978.83 0 .242-.062.378-.125.462a.74.74 0 0 1-.344.227c-.359.133-.828.14-1.274.14Zm2.848-.83c0 .309-.057.586-.169.83h.998a.829.829 0 0 1 .83.828v1.382H.472V4.342a.829.829 0 0 1 .829-.829H2.3a1.96 1.96 0 0 1-.17-.829C2.13 1.562 3.117.75 4.215.75c.644 0 1.325.302 1.785.845A2.387 2.387 0 0 1 7.784.75c1.099 0 2.083.812 2.083 1.934Zm-4.42 8.566V6.829H1.024v3.592c0 .459.37.829.83.829h3.591Zm1.105 0V6.829h4.42v3.592c0 .459-.37.829-.828.829H6.552Z" fill="#EB391B"/></svg>
4508  <div class="discount__gift_lan">Free gift</div>
4509</div>
4510
4511  <div spz-if="${item.mixed_wholesale && false}">
4512    <style>
4513  .mixed_wholesale_label {
4514    padding: 2px 4px;
4515  }
4516
4517  .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before,
4518  .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner {
4519    background: var(--color-body-bg);
4520    color: var(--color-body-text);
4521  }
4522
4523  .mixed_wholesale_tooltip {
4524    max-width: 100%;
4525    border-radius: 4px;
4526    box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1);
4527  }
4528
4529  @media (min-width: 960px) {
4530    .mixed_wholesale_tooltip {
4531      max-width: 450px;
4532    }
4533  }
4534</style>
4535<div class="mt-1 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${item.id}">
4536  Mixed Lot
4537</div>
4538<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support &quot;Mixed Lot&quot; in the store." interact="hover" for="mixed-${item.id}" placement="bottom" overlay-class="mixed_wholesale_tooltip">
4539</spz-tooltip>
4540  </div>
4541</div>
4542                  <button class="clear flex color-body-70 lg:hidden cart-item-delete-btn flex-shrink-0 ml-4" type="button" @tap="cart-render.delete(id=${item.id})">
4543  <svg
4544  class="icon-delete "
4545  xmlns="http://www.w3.org/2000/svg"
4546  width="16"
4547  height="17"
4548  viewBox="0 0 16 17"
4549  fill="none"
4550>
4551  <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.687
45515 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/>
4552</svg>
4553</button>
4554                </div>
4555
4556                <div class="lg:hidden mt-2 cart-qty-minimum-tip" spz-if="${!!item.item_text}">${item.item_text}</div>
4557
4558                <div class="lg:hidden mt-2">
4559                  <div class="flex items-center justify-between">
4560                    <div class="flex flex-wrap items-center mr-1 leading-1.25">
4561  <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through md:order-1 ml-1 body-minus-2' : 'color-price font-medium font-medium body-plus-2'}" layout="container" value="${item.line_price}"></spz-currency>
4562  <spz-currency class="color-price font-medium font-medium body-plus-2 " spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency>
4563</div>
4564                    <div class="flex-shrink-0 flex flex-col cart-qty">
4565  <div class="break-words" spz-if="${!!item.disabled}">
4566    *${item.quantity}
4567  </div>
4568  <spz-quantity
4569    spz-else
4570    icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7"
4571    input-class="clear flex-1 h-full text-center body-base color-body-text"
4572    name="quantity"
4573    value="${item.quantity}"
4574    min="1"
4575    max="${item.available_quantity}"
4576    height="28"
4577    layout="flex-item"
4578    @quantityChange="cart-render.update(value=event.value,id='${item.id}');"
4579    @quantityChangeUnderflow="cart-render.delete(id='${item.id}');"
4580  >
4581    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg>
4582    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg>
4583  </spz-quantity>
4584
4585  <div class="hidden mt-1" spz-if="${!!item.item_text}">${item.item_text}</div>
4586</div>
4587                  </div>
4588                  <div class="flex items-start flex-wrap  mt-1 body-minus-2 leading-1.25 color-body-60" spz-for="discount_item in item.discount_applications">
4589  <div class="flex">
4590    <spz-img spz-if="${!!discount_item.icon}" class="flex-shrink-0 mr-1 mt-0.5" src="${discount_item.icon}" layout="fixed" width="12" height="12" alt="item.image.alt || item.product_title" object-fit="contain"></spz-img>
4591    <span>${discount_item.title}</span>
4592  </div>
4593  <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span>
4594</div>
4595                </div>
4596              </div>
4597            </div>
4598            <div class="md:hidden">
4599              <div class="flex items-center">
4600                <div class="flex-shrink-0 flex flex-col cart-qty">
4601  <div class="break-words" spz-if="${!!item.disabled}">
4602    *${item.quantity}
4603  </div>
4604  <spz-quantity
4605    spz-else
4606    icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7"
4607    input-class="clear flex-1 h-full text-center body-base color-body-text"
4608    name="quantity"
4609    value="${item.quantity}"
4610    min="1"
4611    max="${item.available_quantity}"
4612    height="28"
4613    layout="flex-item"
4614    @quantityChange="cart-render.update(value=event.value,id='${item.id}');"
4615    @quantityChangeUnderflow="cart-render.delete(id='${item.id}');"
4616  >
4617    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg>
4618    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg>
4619  </spz-quantity>
4620
4621  <div class="hidden mt-1" spz-if="${!!item.item_text}">${item.item_text}</div>
4622</div>
4623                <button class="clear flex color-body-70 ml-6" type="button" @tap="cart-render.delete(id=${item.id})">
4624  <svg
4625  class="icon-delete "
4626  xmlns="http://www.w3.org/2000/svg"
4627  width="16"
4628  height="17"
4629  viewBox="0 0 16 17"
4630  fill="none"
4631>
4632  <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.6875 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/>
4633</svg>
4634</button>
4635              </div>
4636              <div class="mt-1 cart-qty-minimum-tip" spz-if="${!!item.item_text}">${item.item_text}</div>
4637            </div>
4638            <div class="md:hidden text-right">
4639              <div class=" leading-1.25">
4640  <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through ' : 'color-price font-medium font-medium body-plus-2'}" layout="container" value="${item.line_price}"></spz-currency>
4641  <spz-currency class="color-price font-medium font-medium body-plus-2 mt-1" spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency>
4642</div>
4643              <div class="flex items-start flex-wrap  justify-end mt-1 body-minus-2 leading-1.25 color-body-60 text-right" spz-for="discount_item in item.discount_applications">
4644  <div class="flex">
4645    <spz-img spz-if="${!!discount_item.icon}" class="flex-shrink-0 mr-1 mt-0.5" src="${discount_item.icon}" layout="fixed" width="12" height="12" alt="item.image.alt || item.product_title" object-fit="contain"></spz-img>
4646    <span>${discount_item.title}</span>
4647  </div>
4648  <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span>
4649</div>
4650            </div>
4651          </li>
4652        </ul>
4653      </section>
4654      <div class="cart-empty flex flex-col items-center text-center " spz-else>
4655  <svg class="color-body-70" xmlns="http://www.w3.org/2000/svg" width="80" height="70" fill="none">
4655<path fill="currentColor" fill-opacity=".7" d="M41.867 16.76c.64 0 1.168.486 1.231 1.11l.007.127v17.334a1.238 1.238 0 0 1-2.47.126l-.006-.126V17.997c0-.683.554-1.238 1.238-1.238ZM55.183 17.87a1.238 1.238 0 0 0-2.47.127v17.334l.007.126a1.238 1.238 0 0 0 2.47-.126V17.997l-.007-.126ZM29.081 16.782c.63-.122 1.24.255 1.422.856l.03.123 3.37 17.333a1.238 1.238 0 0 1-2.4.596l-.03-.123-3.37-17.333a1.238 1.238 0 0 1 .978-1.452ZM65.503 17.638a1.238 1.238 0 0 1 2.4.596l-3.37 17.333-.03.123a1.238 1.238 0 0 1-2.4-.596l3.37-17.333.03-.123Z"/><path fill="currentColor" fill-opacity=".7" fill-rule="evenodd" d="M17.622 3.07A3.601 3.601 0 0 0 14.13.355H1.865l-.68.006C.56.425.627.951.627 1.593c0 .684 0 1.238.684 1.238H14.13l.123.007c.484.052.885.413.981.9l7.424 37.368a6.136 6.136 0 0 0-3.525 5.555 6.135 6.135 0 0 0 6.136 6.136h46.229l.126-.007a1.238 1.238 0 0 0-.126-2.47h-46.23l-.194-.005a3.659 3.659 0 0 1-3.465-3.654 3.659 3.659 0 0 1 3.66-3.66h45.533a3.097 3.097 0 0 0 3.041-2.51l5.475-28.477a3.095 3.095 0 0 0-3.038-3.68H18.672l-1.009-5.078-.041-.186Zm1.736 7.74 5.715 29.714h45.73a.62.62 0 0 0 .608-.502l5.475-28.476a.619.619 0 0 0-.606-.736H19.358ZM20.643 62.074a7.57 7.57 0 0 1 7.571-7.57 7.57 7.57 0 1 1-7.57 7.57Zm12.666 0a5.094 5.094 0 1 0-10.189.002 5.094 5.094 0 0 0 10.189-.002ZM62.028 54.504a7.57 7.57 0 1 0 0 15.142 7.57 7.57 0 0 0 0-15.142Zm0 2.477a5.094 5.094 0 1 1 0 10.188 5.094 5.094 0 0 1 0-10.188Z" clip-rule="evenodd"/></svg>
4656  <div class="mt-5 color-body-70 font-medium body-plus-4 leading-1.2">Your shopping bag is empty</div>
4657  <button class="cart-empty-btn button-primary clear flex items-center justify-center text-center mt-5 cart-continue-shopping body-plus-2"  data-track="cart-continue-shopping" @tap="SPZ.history(type='back', defaultUrl='/');" type="button">
4658    Continue shopping
4659  </button>
4660</div>
4661    </div>
4662  </template>
4663</spz-render>
4664        <div class="page-container" >
4665            
4665<script async crossorigin="anonymous" src="//static.staticdj.com/cuttlefish/v1/spz.min.js"></script>
4665
4666<style>
4667    [data-section-id="1717490469203"] .discount-cart-banner-list {
4668        margin-top: 8px;
4669    }
4670    [data-section-id="1717490469203"] .discount-cart-banner-list .discount-cart-banner-list-inner {
4671        font-size: 16px;
4672        font-style: normal;
4673        font-weight: 400;
4674        line-height: 20px;
4675        padding: 16px 12px;
4676        background: #F6F6F6;
4677        margin-bottom: 8px;
4678        display: flex;
4679        justify-content: space-between;
4680        cursor: pointer;
4681        align-items: center;
4682        border-radius: 2px;
4683    }
4684    [data-section-id="1717490469203"] .discount-banner-inner-left {
4685        display: flex;
4686        align-items: center;
4687        gap: 6px;
4688    }
4689
4690    [data-section-id="1717490469203"] .discount-banner-icon {
4691        width: 16px;
4692        height: 16px;
4693        flex-shrink: 0;
4694    }
4695    [data-section-id="1717490469203"] .discount-banner-text span {
4696        color: #EB391B;
4697    }
4698
4699    #app-discount-cart-banner-block {
4700        box-sizing: border-box;
4701        width: 100%;
4702        max-width: var(--general-layout-spacing, var(--layout-width, var(--page-width, 1140px)));
4703        margin: 0 auto;
4704        word-break: break-word;
4705    }
4706    [data-section-type=""] #app-discount-cart-banner-block {
4707        padding: 0 var(--general-layout-spacing, var(--page-spacing, 40px));
4708    }
4709
4710    @media (max-width: 959.98px) {
4711    [data-section-type=""] #app-discount-cart-banner-block {
4712      padding: 0 var(--general-layout-spacing, var(--page-spacing, 16px));
4713    }
4714  }
4715</style>
4716<style>
4717    /* 限定弹窗自身 class,避免误伤首页限时促销复用同名 id 的商品容器 */
4718    #discount-match-drawer.app_discount_basic_style {
4719      display: none;
4720    }
4721    #appBundlBottomContainer {
4722      padding: 16px 20px;
4723      background: #FFF;
4724      box-shadow: 0px -8px 20px 0px rgba(0, 0, 0, 0.08);
4725    }
4726    #appDiscountBundleBottom .app-bundle-discount_bottom_button {
4727      max-width: 600px !important;
4728      margin: 12px auto 0 !important;
4729    }
4730    #discount-match-drawer .discount-match-drawer {
4731        height: 90vh;
4732        position: fixed;
4733        bottom: 0;
4734        left: 0;
4735        right: 0;
4736        width: 100%;
4737        background-color: #fff;
4738        z-index: 1049;
4739        display: flex;
4740        flex-direction: column;
4741        border-radius: 10px 10px 0 0;
4742    }
4743    #discount-match-drawer .discount-match-mask {
4744        position: fixed;
4745        top: 0;
4746        bottom: 0;
4747        left: 0;
4748        right: 0;
4749        background: rgba(0, 0, 0, 0.3);
4750        z-index: 1038;
4751    }
4752    /* 购物车抽屉仍打开时:凑单弹窗匹配抽屉宽度(JS 设 width)、靠右、提层级盖在抽屉之上 */
4753    #discount-match-drawer.in-cart-drawer .discount-match-drawer {
4754        right: 0 !important;
4755        left: auto !important;
4756        z-index: 1050 !important;
4757    }
4758    #discount-match-drawer.in-cart-drawer .discount-match-mask {
4759        z-index: 1050 !important;
4760    }
4761    #discount-match-drawer .discount-match-drawer-content {
4762    	overflow: hidden;
4763		  overflow-y: scroll;
4764      position: relative;
4765    }
4766
4767    #discount-match-drawer .drawer-translateContent {
4768        animation-duration: 0.4s;
4769        animation-fill-mode: both;
4770        -webkit-animation-name: discountfadeInBottom;
4771        -moz-animation-name: discountfadeInBottom;
4772        -o-animation-name: discountfadeInBottom;
4773        animation-name: discountfadeInBottom;
4774        -webkit-transition-timing-function: ease-in;
4775        -moz-transition-timing-function: ease-in;
4776        -o-transition-timing-function: ease-in;
4777        transition-timing-function: ease-in;
4778    }
4779
4780    @keyframes discountfadeInBottom {
4781    0% {
4782        opacity: 0;
4783        transform: translate3d(0%, 100%, 0);
4784    }
4785    40% {
4786        opacity: 0.2;
4787        transform: translate3d(0%, 10%, 0);
4788    }
4789    100% {
4790        opacity: 1;
4791        transform: none;
4792    }
4793    }
4794    #discount-match-drawer .discount-match-drawer .discount-match-drawer-header {
4795        padding: 20px 24px;
4796        display: flex;
4797        justify-content: flex-end;
4798        border-bottom: 1px solid #E6E6E6;
4799    }
4800    .header-close-icon {
4801      display: flex;
4802      justify-content: center;
4803      align-items: center;
4804      width: 20px;
4805      height: 20px;
4806    }
4807    @media (max-width: 959.98px) {
4808      #discount-match-drawer .discount-match-drawer .discount-match-drawer-header {
4809          padding: 12px 20px;
4810      }
4811    }
4812  /* input, button, ul clear */
4813  #discount-match-drawer .clear {
4814    margin: 0;
4815    padding: 0;
4816    outline: none;
4817    border: none;
4818    background-color: transparent;
4819    list-style: none;
4820  }
4821
4822  .discount-selector {
4823    display: flex;
4824    align-items: center;
4825    overflow-x: auto;
4826    -webkit-overflow-scrolling: touch; /* 兼容 iOS */
4827    scrollbar-width: none; /* 兼容 Firefox */
4828  }
4829  /* 隐藏滚动条 - 适用于 Webkit 浏览器(Chrome、Safari) */
4830  .discount-selector::-webkit-scrollbar {
4831    display: none;
4832  }
4833  .discount-selector__option {
4834    position: relative;
4835    cursor: pointer;
4836    padding: 12px;
4837    font-size: 20px;
4838    font-weight: 600;
4839    color: #202020;
4840    flex-shrink: 0;
4841  }
4842  .discount-selector__option span {
4843    white-space: nowrap;
4844  }
4845
4846  .discount-selector__option[selected] {
4847    color: #FC5161;
4848  }
4849  .discount-selector__option::after {
4850    position: absolute;
4851    bottom: 0;
4852    left: 0;
4853    content: '';
4854    display: block;
4855    height: 2px;
4856    background-color: #FC5161;
4857    width: 0;
4858    transition: width 0.25s cubic-bezier(0.18, 0.77, 0.58, 1);
4859  }
4860  .discount-selector__option[selected]::after {
4861    width: 100%;
4862  }
4863  .discount-match-text {
4864    padding: 10px;
4865    background-color: #FFEAD4;
4866    display: flex;
4867    align-items: center;
4868    justify-content: center;
4869    gap: 4px;
4870  }
4871  .discount-match-text__icon {
4872    width: 16px;
4873    height: 16px;
4874    flex-shrink: 0;
4875  }
4876  .discount-match-text__text span {
4877    color: #EB391B;
4878  }
4879   @media (max-width: 767.98px) {
4880    .discount-selector__option {
4881      max-width: 160px;
4882    }
4883    .discount-selector__option span {
4884      font-size: 14px;
4885      display: -webkit-box;
4886      -webkit-box-orient: vertical;
4887      -webkit-line-clamp: 1;
4888      overflow: hidden;
4889      text-overflow: ellipsis;
4890      white-space: normal;
4891    }
4892    .discount-match-text__text span {
4893      font-size: 14px;
4894    }
4895  }
4896</style>
4897<style>
4898  .app_discount_basic_style .block { display: block; }
4899  .app_discount_basic_style .inline-block { display: inline-block; }
4900
4901  .app_discount_basic_style .flex { display: flex; }
4902  .app_discount_basic_style .flex-wrap { flex-wrap: wrap; }
4903  .app_discount_basic_style .flex-nowrap { flex-wrap: nowrap; }
4904  .app_discount_basic_style .flex-col { flex-direction: column; }
4905  .app_discount_basic_style .flex-col-reverse { flex-direction: column-reverse; }
4906  .app_discount_basic_style .items-start { align-items: flex-start; }
4907  .app_discount_basic_style .items-center { align-items: center; }
4908  .app_discount_basic_style .items-stretch { align-items: stretch; }
4909  .app_discount_basic_style .items-end { align-items: flex-end; }
4910  .app_discount_basic_style .justify-between { justify-content: space-between; }
4911  .app_discount_basic_style .justify-center { justify-content: center; }
4912  .app_discount_basic_style .justify-end { justify-content: flex-end; }
4913
4914  .app_discount_basic_style .hidden { display: none; }
4915
4916  .app_discount_basic_style .flex-1 { flex: 1; }
4917  .app_discount_basic_style .flex-shrink-0 { flex-shrink: 0; }
4918
4919  .app_discount_basic_style .order-1 { order:1 }
4920  .app_discount_basic_style .order-10 { order: 10; }
4921  .app_discount_basic_style .order--10 { order: -10; }
4922  .app_discount_basic_style .order--20 { order: -20; }
4923
4924  .app_discount_basic_style .relative { position: relative; }
4925  .app_discount_basic_style .absolute { position: absolute; }
4926  .app_discount_basic_style .sticky { position: sticky; }
4927  .app_discount_basic_style .fixed { position: fixed;}
4928  .app_discount_basic_style .top-0 { top: 0; }
4929  .app_discount_basic_style .left-0 { left: 0; }
4930  .app_discount_basic_style .right-0 { right: 0; }
4931  .app_discount_basic_style .right-1\/2 { right: 50%; }
4932  .app_discount_basic_style .bottom-0 { bottom: 0; }
4933  .app_discount_basic_style .inset-0 { top: 0; left: 0; right: 0; bottom: 0; }
4934
4935  /* z-index */
4936  .app_discount_basic_style .z-10 { z-index: 10; }
4937  .app_discount_basic_style .z-30 { z-index: 30; }
4938  .app_discount_basic_style .z-100 { z-index: 100; }
4939  .app_discount_basic_style .z-1081 { z-index: 1081; }
4940
4941  .app_discount_basic_style .w-1\/2 { width: 50%; }
4942  .app_discount_basic_style .w-1\/3 { width: calc(1 / 3 * 100%); }
4943  .app_discount_basic_style .w-auto { width: auto; }
4944  .app_discount_basic_style .w-full { width: 100%; }
4945  .app_discount_basic_style .h-full { height: 100%; }
4946  .app_discount_basic_style .\!h-auto { height: auto !important; }
4947
4948  /* text font size */
4949  .app_discount_basic_style .body-text-xs { font-size: calc(var(--type-body-font-size) * 0.85); }
4950  .app_discount_basic_style .body-text-base { font-size: var(--type-body-font-size); }
4951  .app_discount_basic_style .body-text-lg { font-size: calc(var(--type-body-font-size) * 1.08); }
4952  .app_discount_basic_style .body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); }
4953
4954  .app_discount_basic_style .body-plus-1 { font-size: calc(var(--type-body-font-size) + 1px); }
4955  .app_discount_basic_style .body-plus-2 { font-size: calc(var(--type-body-font-size) + 2px); }
4956  .app_discount_basic_style .body-plus-3 { font-size: calc(var(--type-body-font-size) + 3px); }
4957  .app_discount_basic_style .body-plus-4 { font-size: calc(var(--type-body-font-size) + 4px); }
4958  .app_discount_basic_style .body-plus-6 { font-size: calc(var(--type-body-font-size) + 6px); }
4959  .app_discount_basic_style .body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); }
4960  .app_discount_basic_style .body-minus-2 { font-size: calc(var(--type-body-font-size) - 2px); }
4961  .app_discount_basic_style .body-minus-3 { font-size: calc(var(--type-body-font-size) - 3px); }
4962
4963  .app_discount_basic_style .heading-4xs,
4964  .app_discount_basic_style .heading-3xs,
4965  .app_discount_basic_style .heading-2xs,
4966  .app_discount_basic_style .heading-xs,
4967  .app_discount_basic_style .heading-base,
4968  .app_discount_basic_style .heading-style {
4969    line-height: var(--type-title-line-height);
4970    letter-spacing: var(--type-title-spacing);
4971    text-transform: var(--type-title-capitalize);
4972  }
4973
4974  /* heading font size */
4975  .app_discount_basic_style .heading-4xs { font-size: calc(var(--type-title-font-size) * 0.57) }
4976  .app_discount_basic_style .heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) }
4977  .app_discount_basic_style .heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) }
4978  .app_discount_basic_style .heading-xs { font-size: calc(var(--type-title-font-size) * 0.85); }
4979  .app_discount_basic_style .heading-base { font-size: var(--type-title-font-size) }
4980
4981  /* section font size  */
4982  .app_discount_basic_style .section-heading-base { font-size: var(--font-section-heading-size); }
4983
4984  /* fixed font size */
4985  .app_discount_basic_style .text-0 { font-size: 0; }
4986  .app_discount_basic_style .text-sm { font-size: 12px; line-height: 14px; }
4987  .app_discount_basic_style .text-base { font-size: 14px; line-height: 18px; }
4988  .app_discount_basic_style .text-lg { font-size: 16px; line-height: 20px; }
4989
4990  /* font size */
4991  .app_discount_basic_style .text-3xl { font-size: 1.875rem; }
4992
4993  /* font weight */
4994  .app_discount_basic_style .font-normal { font-weight: normal; }
4995  .app_discount_basic_style .font-medium { font-weight: 500; }
4996  .app_discount_basic_style .font-semibold { font-weight: 600; }
4997  .app_discount_basic_style .font-bold { font-weight: 700; }
4998
4999  /* line height */
5000  .app_discount_basic_style .leading-body { line-height: var(--type-body-line-height); }
5001  .app_discount_basic_style .leading-title { line-height: var(--type-title-line-height); }
5002  .app_discount_basic_style .leading-1 { line-height: 1; }
5003  .app_discount_basic_style .leading-1\.1 { line-height: 1.1; }
5004  .app_discount_basic_style .leading-1\.2 { line-height: 1.2; }
5005  .app_discount_basic_style .leading-1\.3 { line-height: 1.3; }
5006  .app_discount_basic_style .leading-1\.4 { line-height: 1.4; }
5007  .app_discount_basic_style .leading-1\.5 { line-height: 1.5; }
5008  .app_discount_basic_style .leading-1\.6 { line-height: 1.6; }
5009
5010  /* letter spacing */
5011  .app_discount_basic_style .tracking-nav { letter-spacing:var(--type-nav-spacing); }
5012  .app_discount_basic_style .tracking-title { letter-spacing: var(--type-title-spacing); }
5013  .app_discount_basic_style .tracking-body { letter-spacing: var(--type-body-spacing); }
5014
5015  /* text transform */
5016  .app_discount_basic_style .text-uppercase { text-transform: uppercase; }
5017  .app_discount_basic_style .title-transform { text-transform : var(--global-title-transform); }
5018  .app_discount_basic_style .product-title-transform { text-transform : var(--global-product-title-transform); }
5019
5020  /* white space */
5021  .app_discount_basic_style .whitespace-nowrap { white-space: nowrap; }
5022
5023   /* break-wrods */
5024  .app_discount_basic_style .break-words { overflow-wrap: break-word; word-break: break-word; }
5025
5026  /* color */
5027  .app_discount_basic_style .text-current { color: currentColor }
5028  .app_discount_basic_style .color-white { color: var(--color-white, #fff); }
5029  .app_discount_basic_style .color-body { color: var(--color-body-text); }
5030  .app_discount_basic_style .color-body-40 { color: var(--color-body-text-40); }
5031  .app_discount_basic_style .color-body-60 { color: var(--color-body-text-60); }
5032  .app_discount_basic_style .color-body-70 { color: var(--color-body-text-70); }
5033  .app_discount_basic_style .color-body-80 { color: var(--color-body-text-80); }
5034  .app_discount_basic_style .color-body-default { color: var(--color-body-text-default); }
5035  .app_discount_basic_style .color-primary-btn-bg { color: var(--color-primary-btn-bg); }
5036  .app_discount_basic_style .color-save-text { color: var(--color-save-text); }
5037  .app_discount_basic_style .color-compare-price { color: var(--color-compare-at-price-text); }
5038  .app_discount_basic_style .color-header-color { color: var(--color-header-text) ;}
5039  .app_discount_basic_style .color-countdown-time-text { color: var(--color-countdown-time-text); }
5040 .app_discount_basic_style  .color-footer { color: var(--color-footer-text); }
5041
5042  /* background */
5043  .app_discount_basic_style .bg-transparent { background-color: transparent; }
5044  .app_discount_basic_style .bg-white { background-color: var(--color-white, #fff); }
5045  .app_discount_basic_style .bg-body { background-color: var(--color-body-bg); }
5046  .app_discount_basic_style .bg-body-text { background-color: var(--color-body-text); }
5047  .app_discount_basic_style .bg-primary-btn { background-color: var(--color-primary-btn-bg); }
5048  .app_discount_basic_style .bg-primary-btn-10 { background-color: var(--color-primary-btn-bg-10); }
5049  .app_discount_basic_style .bg-header { background-color: var(--color-header-bg) }
5050  .app_discount_basic_style .bg-countdown { background-color: var(--color-countdown-bg); }
5051  .app_discount_basic_style .bg-footer { background-color: var(--color-footer-bg); }
5052
5053  /* schema style */
5054  .app_discount_basic_style .scheme-1 {
5055    color: var(--color-scheme-1-text);
5056    background-color: var(--color-scheme-1-bg);
5057    background-image: var(--color-scheme-1-image);
5058    background-repeat: var(--color-scheme-1-repeat);
5059    background-size: var(--color-scheme-1-size);
5060  }
5061
5062  .app_discount_basic_style .scheme-2 {
5063    color: var(--color-scheme-2-text);
5064    background-color: var(--color-scheme-2-bg);
5065    background-image: var(--color-scheme-2-image);
5066    background-repeat: var(--color-scheme-2-repeat);
5067    background-size: var(--color-scheme-2-size);
5068  }
5069
5070  .app_discount_basic_style .scheme-3 {
5071    color: var(--color-scheme-3-text);
5072    background-color: var(--color-scheme-3-bg);
5073    background-image: var(--color-scheme-3-image);
5074    background-repeat: var(--color-scheme-3-repeat);
5075    background-size: var(--color-scheme-3-size);
5076  }
5077
5078  /* shadow */
5079  .app_discount_basic_style .shadow { box-shadow: 0 10px 40px var(--color-shadow); }
5080
5081  /* text align */
5082  .app_discount_basic_style .text-left { text-align: left; }
5083  .app_discount_basic_style .text-center { text-align: center; }
5084  .app_discount_basic_style .text-right { text-align: right; }
5085
5086  /* text decoration */
5087  .app_discount_basic_style .line-through { text-decoration: line-through; }
5088  .app_discount_basic_style .underline { text-decoration-line: underline;  }
5089  .app_discount_basic_style .no-underline { text-decoration-line: none; }
5090
5091  /* border radius */
5092  .app_discount_basic_style .rounded { border-radius: 4px; }
5093  .app_discount_basic_style .rounded-md { border-radius: 6px; }
5094  .app_discount_basic_style .rounded-lg { border-radius: 8px; }
5095  .app_discount_basic_style .rounded-xl { border-radius: 12px; }
5096  .app_discount_basic_style .rounded-2xl { border-radius: 16px; }
5097  .app_discount_basic_style .rounded-full { border-radius: 9999px; }
5098  .app_discount_basic_style .rounded-btn { border-radius: var(--global-border-radius-btn); }
5099  .app_discount_basic_style .rounded-global { border-radius: var(--global-border-radius); }
5100  .app_discount_basic_style .rounded-r-none { border-top-right-radius: 0; border-bottom-right-radius: 0; }
5101  .app_discount_basic_style .rounded-r-btn { border-top-right-radius: var(--global-border-radius-btn); border-bottom-right-radius: var(--global-border-radius-btn); }
5102
5103  /* border */
5104  .app_discount_basic_style .border { border: 1px solid var(--color-borders); }
5105  .app_discount_basic_style .border-top { border-top: 1px solid var(--color-borders); }
5106  .app_discount_basic_style .border-bottom { border-bottom: 1px solid var(--color-borders); }
5107  .app_discount_basic_style .border-none { border: none }
5108  .app_discount_basic_style .border-header { border: 1px solid var( --color-header-border); }
5109  .app_discount_basic_style .border-b-header { border-bottom: 1px solid var( --color-header-border); }
5110
5111  /* transform */
5112  .app_discount_basic_style .rotate-90 { transform: rotate(90deg); }
5113  .app_discount_basic_style .rotate--90 { transform: rotate(-90deg); }
5114  .app_discount_basic_style .rotate-180 { transform: rotate(180deg); }
5115  .app_discount_basic_style .transform { transform: translateX(0) translateY(0) rotate(0) skewX(0) skewY(0) scaleX(1) scaleY(1);}
5116
5117  .app_discount_basic_style .cursor-pointer { cursor: pointer; }
5118  .app_discount_basic_style .pointer-events-none { pointer-events: none; }
5119  .app_discount_basic_style .pointer-events-auto { pointer-events: auto; }
5120
5121  .app_discount_basic_style .invisible { visibility: hidden }
5122
5123  /* overflow */
5124  .app_discount_basic_style .overflow-auto { overflow: auto; }
5125  .app_discount_basic_style .overflow-hidden { overflow: hidden; }
5126  .app_discount_basic_style .overflow-y-scroll { overflow-x: hidden;
5126 overflow-y: scroll; }
5127  .app_discount_basic_style .overflow-x-scroll { overflow-x: scroll; overflow-y: hidden; }
5128  .app_discount_basic_style .overflow-x-auto { overflow-x: auto; }
5129
5130  /* opacity */
5131  .app_discount_basic_style .opacity-0 { opacity: 0; }
5132  .app_discount_basic_style .opacity-100 { opacity: 100 }
5133
5134  /* placeholder svg */
5135  .app_discount_basic_style .placeholder-svg {
5136    position: relative;
5137    padding-bottom: 100%;
5138  }
5139
5140  .app_discount_basic_style .placeholder-svg > svg {
5141    position: absolute;
5142    top: 0;
5143    right: 0;
5144    bottom: 0;
5145    left: 0;
5146    width: 100%;
5147    height: 100%;
5148    fill: #c0c0c0;
5149    background-color: #eee;
5150  }
5151
5152  /* margin */
5153  .app_discount_basic_style .m-0 { margin: 0; }
5154
5155  .app_discount_basic_style .mt-0 { margin-top: 0; }
5156  .app_discount_basic_style .mt-1 { margin-top: 4px; }
5157  .app_discount_basic_style .mt-2 { margin-top: 8px; }
5158  .app_discount_basic_style .mt-3 { margin-top: 12px; }
5159  .app_discount_basic_style .mt-4 { margin-top: 16px; }
5160  .app_discount_basic_style .mt-5 { margin-top: 20px; }
5161  .app_discount_basic_style .mt-6 { margin-top: 24px; }
5162  .app_discount_basic_style .mt-7 { margin-top: 28px; }
5163  .app_discount_basic_style .mt-8 { margin-top: 32px; }
5164  .app_discount_basic_style .mt-9 { margin-top: 36px; }
5165  .app_discount_basic_style .mt-10 { margin-top: 40px; }
5166  .app_discount_basic_style .mt-12 { margin-top: 48px; }
5167  .app_discount_basic_style .mt-15 { margin-top: 60px; }
5168
5169  .app_discount_basic_style .mt--2 { margin-top: -8px; }
5170  .app_discount_basic_style .mt--3 { margin-top: -12px; }
5171
5172  .app_discount_basic_style .mb-2 { margin-bottom: 8px; }
5173  .app_discount_basic_style .mb-3 { margin-bottom: 12px; }
5174  .app_discount_basic_style .mb-5 { margin-bottom: 20px; }
5175  .app_discount_basic_style .mb-6 { margin-bottom: 24px; }
5176  .app_discount_basic_style .mb-7\.5 { margin-bottom: 30px; }
5177  .app_discount_basic_style .mb-10 { margin-bottom: 40px; }
5178  .app_discount_basic_style .mb-20 { margin-bottom: 80px; }
5179
5180  .app_discount_basic_style .mr-1 { margin-right: 4px; }
5181  .app_discount_basic_style .mr-1\.5 { margin-right: 6px; }
5182  .app_discount_basic_style .mr-2 { margin-right: 8px; }
5183  .app_discount_basic_style .mr-3 { margin-right: 12px; }
5184  .app_discount_basic_style .mr-5 { margin-right: 20px; }
5185  .app_discount_basic_style .mr-6 { margin-right: 24px; }
5186  .app_discount_basic_style .mr-10 { margin-right: 40px; }
5187  .app_discount_basic_style .mr-11 { margin-right: 44px; }
5188  .app_discount_basic_style .mr-15 { margin-right: 60px; }
5189
5190  .app_discount_basic_style .ml-1 { margin-left: 4px; }
5191  .app_discount_basic_style .ml-5 { margin-left: 20px; }
5192  .app_discount_basic_style .ml-6 { margin-left: 24px; }
5193  .app_discount_basic_style .ml-12 { margin-left: 48px; }
5194
5195  .app_discount_basic_style .mx-4 { margin-left: 16px; margin-right: 16px; }
5196  .app_discount_basic_style .mx-auto { margin-left: auto; margin-right: auto; }
5197
5198  .app_discount_basic_style .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; }
5199  .app_discount_basic_style .my-6 { margin-top: 1.5rem; margin-bottom: 1.5rem; }
5200
5201  /* padding */
5202  .app_discount_basic_style .p-0 { padding: 0; }
5203  .app_discount_basic_style .p-2 { padding: 8px; }
5204  .app_discount_basic_style .p-3 { padding: 12px; }
5205  .app_discount_basic_style .p-5 { padding: 20px; }
5206  .app_discount_basic_style .py-0 { padding-top: 0px; padding-bottom: 0px; }
5207  .app_discount_basic_style .py-1\.5 { padding-top: 6px; padding-bottom: 6px; }
5208  .app_discount_basic_style .py-2 { padding-top: 8px; padding-bottom: 8px; }
5209  .app_discount_basic_style .py-3 { padding-top: 12px; padding-bottom: 12px; }
5210  .app_discount_basic_style .py-3\.5 { padding-top: 14px; padding-bottom: 14px; }
5211  .app_discount_basic_style .py-4 { padding-top: 16px; padding-bottom: 16px; }
5212  .app_discount_basic_style .py-6 { padding-top: 24px; padding-bottom: 24px; }
5213  .app_discount_basic_style .py-10 { padding-top: 40px; padding-bottom: 40px; }
5214  .app_discount_basic_style .px-1 { padding-left: 4px; padding-right: 4px; }
5215  .app_discount_basic_style .px-2 { padding-left: 8px; padding-right: 8px; }
5216  .app_discount_basic_style .px-2\.5 { padding-left: 10px; padding-right: 10px; }
5217  .app_discount_basic_style .px-3 { padding-left: 12px; padding-right: 12px; }
5218  .app_discount_basic_style .px-3\.5 { padding-left: 14px; padding-right: 14px; }
5219  .app_discount_basic_style .px-5 { padding-left: 20px; padding-right: 20px; }
5220
5221  .app_discount_basic_style .pl-1 { padding-left: 4px; }
5222  .app_discount_basic_style .pl-2 { padding-left: 8px; }
5223  .app_discount_basic_style .pl-3 { padding-left: 12px; }
5224  .app_discount_basic_style .pl-3\.5 { padding-left: 14px; }
5225  .app_discount_basic_style .pl-4 { padding-left: 16px; }
5226  .app_discount_basic_style .pl-5 { padding-left: 20px; }
5227  .app_discount_basic_style .pb-3 { padding-bottom: 12px }
5228  .app_discount_basic_style .pb-5 { padding-bottom: 20px; }
5229  .app_discount_basic_style .pb-8 { padding-bottom: 32px; }
5230  .app_discount_basic_style .pb-15 { padding-bottom: 60px; }
5231  .app_discount_basic_style .pt-5 { padding-top: 20px; }
5232  .app_discount_basic_style .pt-8 { padding-top: 32px; }
5233  .app_discount_basic_style .pt-15 { padding-top: 60px; }
5234  .app_discount_basic_style .pt-24 { padding-top: 96px; }
5235  .app_discount_basic_style .pt-27 { padding-top: 108px; }
5236
5237  /** grid **/
5238  .app_discount_basic_style .grid {
5239    display: grid;
5240  }
5241  .app_discount_basic_style .grid-cols-1 {
5242    grid-template-columns:repeat(1,minmax(0,1fr));
5243  }
5244  .app_discount_basic_style .grid-cols-2 {
5245    grid-template-columns:repeat(2,minmax(0,1fr));
5246  }
5247  .app_discount_basic_style .grid-cols-3 {
5248    grid-template-columns:repeat(3,minmax(0,1fr));
5249  }
5250  .app_discount_basic_style .grid-cols-4 {
5251    grid-template-columns:repeat(4,minmax(0,1fr));
5252  }
5253  .app_discount_basic_style .grid-cols-5 {
5254    grid-template-columns:repeat(5,minmax(0,1fr));
5255  }
5256  .app_discount_basic_style .grid-cols-6 {
5257    grid-template-columns:repeat(6,minmax(0,1fr));
5258  }
5259  .app_discount_basic_style .gap-2 {
5260    gap: .5rem;
5261  }
5262  .app_discount_basic_style .col-span-1 {
5263    grid-column: span 1/span 1;
5264  }
5265  .app_discount_basic_style .\!hidden,
5266  .app_discount_basic_style .\!empty-hidden:empty { display: none !important; }
5267
5268  @media (max-width: 959.98px) {
5269    .app_discount_basic_style .md\:block { display: block; }
5270    .app_discount_basic_style .md\:inline-block { display: inline-block; }
5271    .app_discount_basic_style .md\:hidden { display: none !important; }
5272
5273    .app_discount_basic_style .md\:flex { display: flex; }
5274    .app_discount_basic_style .md\:flex-wrap { flex-wrap: wrap; }
5275    .app_discount_basic_style .md\:flex-nowrap { flex-wrap: nowrap; }
5276    .app_discount_basic_style .md\:flex-col { flex-direction: column; }
5277    .app_discount_basic_style .md\:items-center { align-items: center; }
5278    .app_discount_basic_style .md\:justify-between { display: flex; justify-content: space-between; }
5279    .app_discount_basic_style .md\:justify-center { display: flex; justify-content: center; }
5280    .app_discount_basic_style .md\:justify-start { display: flex; justify-content: flex-start; }
5281
5282    .app_discount_basic_style .md\:flex-1 { flex: 1; }
5283    .app_discount_basic_style .md\:flex-shrink-0 { flex-shrink: 0; }
5284
5285    .app_discount_basic_style .md\:order-1 { order:1 }
5286    .app_discount_basic_style .md\:order-10 { order: 10; }
5287
5288    .app_discount_basic_style .md\:relative { position: relative; }
5289    .app_discount_basic_style .md\:absolute { position: absolute; }
5290    .app_discount_basic_style .md\:sticky { position: sticky; }
5291    .app_discount_basic_style .md\:fixed { position: fixed;}
5292    .app_discount_basic_style .md\:top-0 { top: 0; }
5293
5294    /* z-index */
5295    .app_discount_basic_style .md\:z-10 { z-index: 10; }
5296
5297    .app_discount_basic_style .md\:w-1\/2 { width: 50%; }
5298    .app_discount_basic_style .md\:w-full { width: 100%; }
5299    .app_discount_basic_style .md\:w-auto { width: auto; }
5300    .app_discount_basic_style .md\:h-full { height: 100%; }
5301
5302    /* text font size */
5303    .app_discount_basic_style .md\:body-text-xs { font-size: calc(var(--type-body-font-size) * 0.84); }
5304    .app_discount_basic_style .md\:body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); }
5305
5306    .app_discount_basic_style .md\:body-plus-2 { font-size: calc(var(--type-body-font-size) + 2px); }
5307    .app_discount_basic_style .md\:body-plus-4 { font-size: calc(var(--type-body-font-size) + 4px); }
5308    .app_discount_basic_style .md\:body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); }
5309
5310    /* heading font size */
5311    .app_discount_basic_style .md\:heading-4xs { font-size: calc(var(--type-title-font-size) * 0.57) }
5312    .app_discount_basic_style .md\:heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) }
5313    .app_discount_basic_style .md\:heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) }
5314    .app_discount_basic_style .md\:heading-xs { font-size: calc(var(--type-title-font-size) * 0.85) }
5315
5316    /* line height */
5317    .app_discount_basic_style .md\:leading-1\.1 { line-height: 1.1; }
5318    .app_discount_basic_style .md\:leading-1\.4 { line-height: 1.4; }
5319    .app_discount_basic_style .md\:leading-1\.5 { line-height: 1.5; }
5320
5321    /* border radius */
5322    .app_discount_basic_style .md\:rounded-2xl { border-radius: 16px; }
5323
5324    /* padding */
5325    .app_discount_basic_style .md\:pt-4 { padding-top: 16px; }
5326    .app_discount_basic_style .md\:pt-7 { padding-top: 28px; }
5327    .app_discount_basic_style .md\:pt-9 { padding-top: 36px; }
5328    .app_discount_basic_style .md\:pb-10 { padding-bottom: 40px; }
5329    .app_discount_basic_style .md\:px-2\.5 { padding-left: 10px; padding-right: 10px; }
5330    .app_discount_basic_style .md\:px-8 { padding-left: 32px; padding-right: 32px;}
5331
5332    /* margin */
5333    .app_discount_basic_style .md\:mx-2\.5 { margin-left: 10px; margin-right: 10px; }
5334    .app_discount_basic_style .md\:my-2 { margin-top: 8px; margin-bottom: 8px; }
5335    .app_discount_basic_style .md\:mt-2 { margin-top: 8px; }
5336    .app_discount_basic_style .md\:mt-3 { margin-top: 12px; }
5337    .app_discount_basic_style .md\:mt-3\.5 { margin-top: 14px; }
5338   .app_discount_basic_style  .md\:mt-4 { margin-top: 16px; }
5339    .app_discount_basic_style .md\:mt-5 { margin-top: 20px; }
5340    .app_discount_basic_style .md\:mt-6 { margin-top: 24px; }
5341    .app_discount_basic_style .md\:mt-8 { margin-top: 32px; }
5342    .app_discount_basic_style .md\:mt-10 { margin-top: 40px; }
5343
5344    .app_discount_basic_style .md\:mb-4 { margin-bottom: 16px; }
5345    .app_discount_basic_style .md\:mb-5 { margin-bottom: 20px; }
5346    .app_discount_basic_style .md\:mb-15 { margin-bottom: 60px; }
5347
5348    .app_discount_basic_style .md\:mr-1 { margin-right: 4px; }
5349    .app_discount_basic_style .md\:mr-15 { margin-right: 60px; }
5350
5351    .app_discount_basic_style .md\:ml-5 { margin-left: 20px; }
5352
5353    /* padding */
5354    .app_discount_basic_style .md\:px-4 { padding-left: 16px; padding-right: 16px;}
5355
5356    /* overflow */
5357    .app_discount_basic_style .md\:overflow-auto { overflow: auto; }
5358    .app_discount_basic_style .md\:overflow-y-scroll { overflow-y: 
5358scroll; }
5359    .app_discount_basic_style .md\:overflow-x-auto { overflow-x: auto; }
5360
5361    /* background */
5362    .app_discount_basic_style .md\:bg-white { background-color: var(--color-white, #fff); }
5363
5364    /* shadow */
5365    .app_discount_basic_style .md\:shadow { box-shadow: 0 10px 40px var(--color-shadow); }
5366
5367    .app_discount_basic_style .md\:text-center { text-align: center; }
5368  }
5369
5370  @media (min-width: 960px) {
5371    .app_discount_basic_style .lg\:block { display: block; }
5372    .app_discount_basic_style .lg\:inline-block { display: inline-block; }
5373    .app_discount_basic_style .lg\:hidden { display: none !important;}
5374    .app_discount_basic_style .lg\:flex { display: flex; }
5375    .app_discount_basic_style .lg\:flex-wrap { flex-wrap: wrap; }
5376    .app_discount_basic_style .lg\:flex-nowrap { flex-wrap: nowrap; }
5377    .app_discount_basic_style .lg\:flex-col { flex-direction: column; }
5378    .app_discount_basic_style .lg\:flex-row-reverse { flex-direction: row-reverse; }
5379    .app_discount_basic_style .lg\:items-start { display: flex; align-items: flex-start; }
5380    .app_discount_basic_style .lg\:items-center { display: flex; align-items: center; }
5381    .app_discount_basic_style .lg\:justify-between { display: flex; justify-content: space-between; }
5382    .app_discount_basic_style .lg\:justify-center { display: flex; justify-content: center; }
5383
5384    .app_discount_basic_style .lg\:flex-1 { flex: 1; }
5385    .app_discount_basic_style .lg\:flex-shrink-0 { flex-shrink: 0; }
5386
5387    .app_discount_basic_style .lg\:order-1 { order:1 }
5388    .app_discount_basic_style .lg\:order-10 { order: 10; }
5389    .app_discount_basic_style .lg\:order--10 { order: -10; }
5390
5391    .app_discount_basic_style .lg\:relative { position: relative; }
5392    .app_discount_basic_style .lg\:absolute { position: absolute; }
5393    .app_discount_basic_style .lg\:sticky { position: sticky; }
5394    .app_discount_basic_style .lg\:fixed { position: fixed;}
5395    .app_discount_basic_style .lg\:top-0 { top: 0; }
5396    .app_discount_basic_style .lg\:left-0 { left: 0; }
5397    .app_discount_basic_style .lg\:right-0 { right: 0; }
5398    .app_discount_basic_style .lg\:bottom-0 { bottom: 0; }
5399
5400    .app_discount_basic_style .lg\:w-1\/5 { width: 20%; }
5401    .app_discount_basic_style .lg\:w-auto { width: auto; }
5402    .app_discount_basic_style .lg\:w-full { width: 100%; }
5403    .app_discount_basic_style .lg\:h-full { height: 100%; }
5404
5405    /* text font size */
5406    .app_discount_basic_style .lg\:body-text-xs { font-size: calc(var(--type-body-font-size) * 0.84); }
5407    .app_discount_basic_style .lg\:body-text-lg { font-size: calc(var(--type-body-font-size) * 1.08); }
5408    .app_discount_basic_style .lg\:body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); }
5409   .app_discount_basic_style  .lg\:body-text-2xl { font-size: calc(var(--type-body-font-size) * 1.3); }
5410    .app_discount_basic_style .lg\:body-text-3xl { font-size: calc(var(--type-body-font-size) * 1.42); }
5411
5412    .app_discount_basic_style .lg\:body-plus-1 { font-size: calc(var(--type-body-font-size) + 1px); }
5413    .app_discount_basic_style .lg\:body-minus-2 { font-size: calc(var(--type-body-font-size) - 2px); }
5414    .app_discount_basic_style .lg\:body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); }
5415
5416    /* heading font size */
5417    .app_discount_basic_style .lg\:heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) }
5418    .app_discount_basic_style .lg\:heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) }
5419    .app_discount_basic_style .lg\:heading-xs { font-size: calc(var(--type-title-font-size) * 0.85) }
5420
5421    /* fixed font size */
5422    .app_discount_basic_style .lg\:text-base { font-size: 14px; line-height: 18px; }
5423    .app_discount_basic_style .lg\:text-lg { font-size: 16px; line-height: 20px; }
5424    .app_discount_basic_style .lg\:text-xl { font-size: 20px; line-height: 24px; }
5425
5426    /* line height */
5427    .app_discount_basic_style .lg\:leading-none { line-height: normal; }
5428   .app_discount_basic_style  .lg\:leading-1 { line-height: 1; }
5429   .app_discount_basic_style  .lg\:leading-1\.1 { line-height: 1.1; }
5430    .app_discount_basic_style .lg\:leading-1\.4 { line-height: 1.4; }
5431    .app_discount_basic_style .lg\:leading-1\.5 { line-height: 1.5; }
5432    .app_discount_basic_style .lg\:leading-1\.6 { line-height: 1.6; }
5433
5434    /* border radius */
5435    .app_discount_basic_style .lg\:rounded-xl { border-radius: 12px; }
5436    .app_discount_basic_style .lg\:rounded-2xl { border-radius: 16px; }
5437
5438    /* margin */
5439    .app_discount_basic_style .lg\:mt-1 { margin-top: 4px; }
5440    .app_discount_basic_style .lg\:mt-2 { margin-top: 8px; }
5441    .app_discount_basic_style .lg\:mt-3 { margin-top: 12px; }
5442    .app_discount_basic_style .lg\:mt-4 { margin-top: 16px; }
5443    .app_discount_basic_style .lg\:mt-5 { margin-top: 20px; }
5444    .app_discount_basic_style .lg\:mt-6 { margin-top: 24px; }
5445    .app_discount_basic_style .lg\:mt-7 { margin-top: 28px; }
5446    .app_discount_basic_style .lg\:mt-8 { margin-top: 32px; }
5447    .app_discount_basic_style .lg\:mt-9 { margin-top: 36px; }
5448    .app_discount_basic_style .lg\:mt-10 { margin-top: 40px; }
5449    .app_discount_basic_style .lg\:mt-12 { margin-top: 48px; }
5450    .app_discount_basic_style .lg\:mt-13 { margin-top: 52px; }
5451    .app_discount_basic_style .lg\:mt-15 { margin-top: 60px; }
5452    .app_discount_basic_style .lg\:mt-17 { margin-top: 68px; }
5453    .app_discount_basic_style .lg\:mt-20 { margin-top: 80px; }
5454    .app_discount_basic_style .lg\:mt-22 { margin-top: 88px; }
5455
5456    .app_discount_basic_style .lg\:mb-2 { margin-bottom: 8px; }
5457    .app_discount_basic_style .lg\:mb-3 { margin-bottom: 12px; }
5458    .app_discount_basic_style .lg\:mb-5 { margin-bottom: 20px; }
5459    .app_discount_basic_style .lg\:mb-20 { margin-bottom: 80px; }
5460    .app_discount_basic_style .lg\:mb-40 { margin-bottom: 160px; }
5461
5462    .app_discount_basic_style .lg\:ml-4 { margin-left: 16px; }
5463    .app_discount_basic_style .lg\:ml-5 { margin-left: 20px; }
5464    .app_discount_basic_style .lg\:ml-6 { margin-left: 24px; }
5465    .app_discount_basic_style .lg\:ml-11 { margin-left: 44px; }
5466    .app_discount_basic_style .lg\:ml-12 { margin-left: 48px; }
5467
5468    .app_discount_basic_style .lg\:mr-2 { margin-right: 8px; }
5469    .app_discount_basic_style .lg\:mr-4 { margin-right: 16px; }
5470    .app_discount_basic_style .lg\:mr-6 { margin-right: 24px; }
5471   .app_discount_basic_style  .lg\:mr-15 { margin-right: 60px; }
5472
5473    .app_discount_basic_style .lg\:px-2\.5 { padding-left: 10px; padding-right: 10px;}
5474    .app_discount_basic_style .lg\:pt-6 { padding-top: 24px; }
5475    .app_discount_basic_style .lg\:pt-8 { padding-top: 32px; }
5476    .app_discount_basic_style .lg\:pt-15 { padding-top: 60px; }
5477    .app_discount_basic_style .lg\:pb-8 { padding-bottom: 32px; }
5478    .app_discount_basic_style .lg\:pb-15 { padding-bottom: 60px; }
5479    .app_discount_basic_style .lg\:pl-20 { padding-left: 80px; }
5480
5481    .app_discount_basic_style .lg\:mx-auto { margin-left: auto; margin-right: auto; }
5482
5483    /* overflow */
5484    .app_discount_basic_style .lg\:overflow-auto { overflow: auto; }
5485    .app_discount_basic_style .lg\:overflow-y-scroll { overflow-y: 
5485scroll; }
5486
5487    /* background */
5488    .app_discount_basic_style .lg\:bg-white { background-color: var(--color-white, #fff); }
5489
5490    /* shadow */
5491    .app_discount_basic_style .lg\:shadow { box-shadow: 0 10px 40px var(--color-shadow); }
5492
5493    /* grid */
5494    .app_discount_basic_style .lg\:grid-cols-1 {
5495      grid-template-columns:repeat(1,minmax(0,1fr));
5496    }
5497    .app_discount_basic_style .lg\:grid-cols-2 {
5498      grid-template-columns:repeat(2,minmax(0,1fr));
5499    }
5500    .app_discount_basic_style .lg\:grid-cols-3 {
5501      grid-template-columns:repeat(3,minmax(0,1fr));
5502    }
5503    .app_discount_basic_style .lg\:grid-cols-4 {
5504      grid-template-columns:repeat(4,minmax(0,1fr));
5505    }
5506    .app_discount_basic_style .lg\:grid-cols-5 {
5507      grid-template-columns:repeat(5,minmax(0,1fr));
5508    }
5509    .app_discount_basic_style .lg\:grid-cols-6 {
5510      grid-template-columns:repeat(6,minmax(0,1fr));
5511    }
5512    .app_discount_basic_style .lg\:gap-5 {
5513      gap: 1.25rem;
5514    }
5515    
5516  }
5517</style>
5518<div class="apps-add-cart-toast-wrap lg:page-container" id="apps_add_cart_toast_wrap">
5519  <ljs-toast class="apps-add_cart-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="apps-match-drawer-add_to_cart_toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
5520    <span class="apps-add_cart-toast-span">
5521      <span role="content"></span>
5522    </span>
5523  </ljs-toast>
5524</div>
5525<div class="discount-toast-wrap lg:page-container flex justify-end" id="cart_match_discount_toast_wrap">
5526  <ljs-toast class="discount-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="cart_match_discount_toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"></ljs-toast>
5527</div>
5528
5529
5530
5531<spz-custom-discount-toast id="appsAddCartToastFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-toast>
5532<ljs-script layout="logic" type="application/javascript" id="DiscountBundleScript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
5533  class SpzCustomDiscountBundle extends SPZ.BaseElement {
5534    constructor(element) {
5535      super(element);
5536    }
5537    isLayoutSupported(layout) {
5538      return layout == SPZCore.Layout.LOGIC;
5539    }
5540    mountCallback() {
5541      // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。
5542      // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。
5543      const funcs = document.querySelectorAll('#appsAddCartToastFunc');
5544      if (funcs.length > 1 && this.element !== funcs[0]) {
5545        this.element.remove();
5546        return;
5547      }
5548      // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置,
5549      // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast)
5550      this.ensureSingleToastInBody_('cart_match_discount_toast_wrap');
5551    }
5552    unmountCallback() {}
5553
5554    // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅),
5555    // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个,
5556    // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重:
5557    // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。
5558    ensureSingleToastInBody_(id) {
5559      const els = Array.from(document.querySelectorAll('#' + id));
5560      if (!els.length) return;
5561      els.slice(1).forEach((el) => el.remove());
5562      const keep = els[0];
5563      if (keep.parentNode !== document.body) {
5564        document.body.appendChild(keep);
5565      }
5566    }
5567
5568    // 主题购物车抽屉是否打开
5569    isInCartDrawer_() {
5570      return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]');
5571    }
5572
5573    setupAction_() {
5574      this.registerAction('showAddToCartToast', () => {
5575        // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast
5576        // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底
5577        const proxyEl = document.getElementById('add-cart-event-proxy');
5578        const inDrawer = this.isInCartDrawer_();
5579        if (!inDrawer && proxyEl) {
5580          return;
5581        }
5582
5583        // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位
5584        this.ensureSingleToastInBody_('apps_add_cart_toast_wrap');
5585        const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast')
5586        SPZ.whenApiDefined(toastEl).then((apis) => {
5587          apis.showToast("Added successfully");
5588        });
5589      });
5590    }
5591    buildCallback() {
5592      this.setupAction_();
5593    };
5594  }
5595  SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
5596</ljs-script>
5597 <div id="discount-match-drawer" class="app_discount_basic_style js-discount-match-popup" data-discount-type="">
5598    <div class="discount-match-mask" id="discount-match-mask"></div>
5599    <div class="discount-match-drawer drawer-translateContent">
5600        <div class="discount-match-drawer-header" >
5601            <div class="header-close-icon" @tap="cart_discount_default_actions.removeDiscountElement();">
5602                <svg class="cart-discount-close-icon" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
5603<g id="20px/delete">
5604<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M1.93015 17.1473C1.813 17.2644 1.813 17.4544 1.93015 17.5715L2.83453 18.4759C2.95168 18.5931 3.14163 18.5931 3.25879 18.4759L9.91128 11.8234L16.6149 18.527C16.732 18.6442 16.922 18.6442 17.0391 18.527L17.9435 17.6226C18.0607 17.5055 18.0607 17.3155 17.9435 17.1984
5604L11.2399 10.4948L17.8924 3.84229C18.0096 3.72513 18.0096 3.53518 17.8924 3.41802L16.9881 2.51365C16.8709 2.39649 16.6809 2.39649 16.5638 2.51365L9.91128 9.16616L3.30986 2.56474C3.19271 2.44758 3.00276 2.44758 2.8856 2.56474L1.98123 3.46911C1.86407 3.58627 1.86407 3.77622 1.98123 3.89337L8.58264 10.4948L1.93015 17.1473Z" fill="#707070"/>
5605</g>
5606</svg>
5607            </div>
5608        </div>
5609        <div class="tw-container w-full mt-3 mb-3">
5610            <ljs-render manual layout="container" id="app-discount-selectors-render" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
5611                <template>
5612                    ${function() {
5613                        const firstDiscount = data[0] || {};
5614                        const anotherData = data.slice(1) || [];
5615                        return `
5616                            <ljs-selector layout="container" class="discount-selector" @select="discount-cart-banner-func.discountSelectorChange(data=event);cart_discount_default_actions.discountSelectorChange(data=event);">
5617                                <div option="${firstDiscount.discount_id}" selected class="discount-selector__option">
5618                                    <span>${firstDiscount.display_name}</span>
5619                                </div>
5620                                ${anotherData.map((item, index) => {
5621                                    return `
5622                                        <div option="${item.discount_id}" class="discount-selector__option">
5623                                            <span>${item.display_name}</span>
5624                                        </div>`;
5625                                }).join('')}
5626                            </ljs-selector>
5627                        `;
5628                    }()}
5629                </template>
5630            </ljs-render>
5631        </div>
5632
5633        <div class="discount-match-drawer-content">
5634            <ljs-render manual layout="container" id="app-discount-text-render" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
5635                <template>
5636                    ${function() {
5637                        if (!originData.discount_text) {
5638                            return `<div></div>`;
5639                        }
5640                        return `
5641                            <div class="discount-match-text">
5642                                <div class="discount-match-text__icon">
5643                                    <ljs-img src="${originData.discount_icon}" alt="discount icon" object-fit="cover" layout="responsive" width="16" height="16" auto-fit></ljs-img>
5644                                </div>
5645                                <div class="discount-match-text__text">${originData.discount_text}</div>
5646                            </div>
5647                        `;
5648                    }()}
5649                </template>
5650            </ljs-render>
5651            <div class="discount-match-drawer-container">
5652                <style>
5653	#discount-match-drawer  .discount-default {
5654		width: 100%;
5655		background-color: #ffffff;
5656	}
5657
5658	#discount-match-drawer  #discount-match-drawer-products_loading {
5659    position: absolute !important;
5660    height: 100px;
5661    background: none;
5662    top: auto;
5663    bottom: 0;
5664  }
5665	#discount-match-drawer  #discount-match-drawer-products_loading .loading .loading-inner {
5666    border: 3px solid var(--color-primary-btn-bg);
5667    border-right-color: var(--color-white, #ffffff) !important;
5668  }
5669	#discount-match-drawer .tw-container {
5670		box-sizing: border-box;
5671		margin-left: auto;
5672		margin-right: auto;
5673		max-width: var(--general-layout-width, var(--layout-width, 1350px));
5674		padding-left: 1rem;
5675		padding-right: 1rem;
5676	}
5677	@media screen and (min-width: 960px) {
5678		#discount-match-drawer:not(.in-cart-drawer) .tw-container {
5679			padding-left: var(--general-layout-spacing, 55px) !important;
5680			padding-right: var(--general-layout-spacing, 55px) !important;
5681		}
5682	}
5683	#discount-match-drawer.in-cart-drawer .tw-container {
5684		padding-left: 1rem !important;
5685		padding-right: 1rem !important;
5686	}
5687	#discount-match-drawer  .discount-default .w-100 {
5688		width: 100% !important;
5689	}
5690	#discount-match-drawer  .discount-default .container {
5691		width: 100%;
5692		padding-right: 15px;
5693		padding-left: 15px;
5694		margin-right: auto;
5695		margin-left: auto;
5696		max-width: 540px;
5697		max-width: 960px;
5698	}
5699	#discount-match-drawer  .discount-default__snippet {
5700		display: flex;
5701		align-items: center;
5702	}
5703	@media (max-width: 767.98px) {
5704		#discount-match-drawer  .discount-default__snippet {
5705			flex-direction: column;
5706			align-items: flex-start;
5707		}
5708	}
5709	#discount-match-drawer  .discount-default .common_app__product {
5710		flex: 0 0 calc(25% - 30px);
5711		max-width: calc(25% - 30px);
5712		margin: 0 30px 20px 0;
5713	}
5714	#discount-match-drawer [data-discount-type="DT_CLASSIC_BUNDLE"]  .discount-default .common_app__product {
5715			margin: 0 0 20px 0;
5716		}
5717	@media (max-width: 767.98px) {
5718		#discount-match-drawer  .discount-default .common_app__product {
5719			flex: 0 0 calc(50% - 8px);
5720			max-width: calc(50% - 8px);
5721			margin: 0 8px 20px 0;
5722		}
5723		#discount-match-drawer [data-discount-type="DT_CLASSIC_BUNDLE"]  .discount-default .common_app__product {
5724			flex: 0 0 calc(50% - 26px);
5725			max-width: calc(50% - 26px);
5726			margin: 0 0 20px 0;
5727		}
5728	}
5729
5730	/* 购物车抽屉仍打开时:弹窗被压到抽屉宽度,商品改 2 列 */
5731	#discount-match-drawer.in-cart-drawer .discount-default .common_app__product {
5732		flex: 0 0 calc(50% - 8px) !important;
5733		max-width: calc(50% - 8px) !important;
5734		margin: 0 8px 20px 0 !important;
5735	}
5736	#discount-match-drawer.in-cart-drawer [data-discount-type="DT_CLASSIC_BUNDLE"] .discount-default .common_app__product {
5737		flex: 0 0 calc(50% - 26px) !important;
5738		max-width: calc(50% - 26px) !important;
5739		margin: 0 0 20px 0 !important;
5740	}
5741	#discount-match-drawer.in-cart-drawer .discount-default__productlist-wrap {
5742		margin-right: 0 !important;
5743	}
5744
5745	#discount-match-drawer  .discount-default__snippet {
5746		position: relative;
5747		width: 100%;
5748	}
5749
5750	@media (max-width: 360px) {
5751		#discount-match-drawer  .discount-default .common__select select {
5752			width: 120px;
5753		}
5754	}
5755	@media (max-width: 767.98px) {
5756		#discount-match-drawer  .discount-default {
5757			padding: 0;
5758		}
5759	}
5760
5761	#discount-match-drawer  .no_del_p {
5762		color: #292929 !important;
5763	}
5764	#discount-match-drawer .app-bundle-discount_bottom_container {
5765    position: fixed;
5766    bottom: 0;
5767    left: 0;
5768    right: 0;
5769    z-index: 100;
5770	}
5771</style>
5772<style>
5773	.app_discount_bundle_add {
5774		position: relative;
5775		width: 100%;
5776		height: 36px;
5777		border: 1px solid #000 !important;
5778		z-index: 99;
5779		padding: 8px 10px;
5780		margin-top: 16px;
5781		border-radius: 2px;
5782		font-size: 16px;
5783    font-weight: 500;
5784    line-height: 20px;
5785		background: #fff;
5786		color: #202020;
5787	}
5788
5789	@media (max-width: 959.98px) {
5790		.promotion_product_option {
5791			top: 4px;
5792			right: 4px;
5793			width: 18px;
5794			height: 18px;
5795		}
5796		.promotion_product_option::before {
5797			content: '';
5798			position: absolute;
5799			top:-8px;
5800			right:-8px;
5801			left:-8px;
5802			bottom:-8px;
5803			z-index: -1;
5804		}
5805	}
5806
5807	/* 商品勾选 */
5808	.promotion_product_option {
5809		position: absolute;
5810		top: 6px;
5811		right: 6px;
5812		width: 24px;
5813		height: 24px;
5814		border: 2px solid #000;
5815		border-radius: 2px;
5816		outline: none !important;
5817		z-index: -1;
5818		opacity: 0;
5819	}
5820
5821	.promotion_product_option svg {
5822		opacity: 0;
5823		position: absolute;
5824		top: 0;
5825		right: 0;
5826		bottom: 0;
5827		left: 0;
5828		width: 100%;
5829		height: 100%;
5830	}
5831
5832	.promotion_product_option[selected] {
5833		border: none;
5834	}
5835
5836	.promotion_product_option[show] {
5837		z-index: 99;
5838		opacity:1;
5839	}
5840	.promotion_product_option[selected],
5841	.promotion_product_option[selected] svg {
5842		opacity: 1;
5843	}
5844
5845	/* 商品变体tags */
5846	.promotion_variant_tag_list {
5847		margin-top: 12px;
5848	}
5849	.promotion_variant_tag_item {
5850		background-color: #f6f6f6;
5851		border-radius: 2px;
5852		padding: 4px;
5853		max-width: 100%;
5854		margin: 0px 8px 8px 0;
5855	}
5856
5857	.promotion_variant_tag_item_quantity {
5858		background-color: #F64943;
5859		color: #fff;
5860		border-radius: 2px;
5861		padding: 2px;
5862	}
5863
5864	.promotion_variant_tag_item_text {
5865		overflow: hidden;
5866		white-space: nowrap;
5867		white-space: normal;
5868    overflow: hidden;
5869    text-overflow: ellipsis;
5870    display: -webkit-box;
5871    -webkit-line-clamp: 1;
5872    -webkit-box-orient: vertical;
5873	}
5874
5875	.promotion_variant_tag_item_close svg {
5876		width: 12px;
5877		height: 12px;
5878	}
5879  #discount-match-drawer .app_discount_product_list {
5880    padding: 20px 0;
5881  }
5882	
5883	#discount-match-drawer .app_discount_product_list {
5884		padding-bottom: 120px;
5885	} 
5886
5887	#discount-match-drawer .discount-default__productlist-wrap {
5888		min-height: 300px;
5889		margin-right: -25px;
5890		/* 主题 discount_products 里有一条裸类名规则 @media(min-width:960px){.discount-default__productlist-wrap{column-gap:40px;row-gap:46px}}
5891		   会按视口宽度漏进弹窗,与本组件的 margin 布局叠加导致两列塌成一列,这里显式归零隔离 */
5892		column-gap: 0 !important;
5893		row-gap: 0 !important;
5894	}
5895	@media (max-width: 767.98px) {
5896		#discount-match-drawer .app_discount_product_list {
5897      width: 100%;
5898    }
5899		#discount-match-drawer .discount-default__productlist-wrap {
5900			margin-right: 0;
5901		}
5902	}
5903	#discount-match-drawer .product-snippet {
5904		position: relative;
5905		padding: 0 0 20px 0;
5906		background: transparent;
5907	}
5908
5909	#discount-match-drawer .dj_skin_product_price {
5910    color: #eb391b;
5911  }
5912
5913	#discount-match-drawer .text-truncate {
5914		max-width: 100%;
5915		overflow: hidden;
5916		text-overflow: ellipsis;
5917		white-space: nowrap;
5918	}
5919
5920  #discount-match-drawer .max-w-full {
5921    max-width: 100%;
5922  }
5923
5924	#discount-match-drawer .product-snippet__title-normal {
5925		display: block;
5926		color: #202020;
5927		font-size: 14px;
5928		font-style: normal;
5929		line-height: 18px;
5930		margin-top: 10px;
5931		margin-bottom: 10px;
5932		text-decoration: none;
5933    overflow: hidden;
5934    text-overflow: ellipsis;
5935		white-space: nowrap;
5936	}
5937	#discount-match-drawer .product-snippet__title-normal.text-center {
5938		text-align: left !important;
5939	}
5940	#discount-match-drawer .product-snippet__price-wrapper {
5941		display: flex;
5942		align-items: baseline;
5943		font-weight: 600;
5944		color: #292929;
5945		text-align: left !important;
5946		flex-wrap: wrap;
5947	}
5948	#discount-match-drawer .product-snippet__price-wrapper.text-center {
5949		text-align: left !important;
5950	}
5951	#discount-match-drawer .product-snippet__price-wrapper span {
5952		font-size: 18px;
5953		color: #EB391B;
5954		font-weight: bold;
5955		margin-right: 6px;
5956		line-height: 20px;
5957	}
5958	#discount-match-drawer .product-snippet__price-wrapper del {
5959		font-size: 14px;
5960		font-weight: 400;
5961		line-height: 16px;
5962		color: rgba(32, 32, 32, 0.6);
5963	}
5964	#discount-match-drawer .product-snippet__link {
5965		width: 100%; 
5966		height: 80%;
5967		position: absolute; 
5968		cursor: pointer;
5969		z-index: 1;
5970	}
5971	#discount-match-drawer .product-snippet__img-wrapper {
5972		border-radius: 4px;
5973	}
5974	#discount-match-drawer .product-snippet__img_box {
5975		position: relative;
5976		height:0;
5977		width:100%;
5978		padding-bottom: 100%;
5979	}
5980	#discount-match-drawer .product-snippet__img_box .product-image { 
5981		position: absolute;
5982		top: 0;
5983		bottom: 0;
5984		left: 0;
5985		right: 0;
5986		margin: 0;
5987    width: 100%;
5988		background-color: #fff
5989	}
5990
5991	.discount_product_atc_icon {
5992		display: flex;
5993		justify-content: space-between;
5994		align-items: center;
5995	}
5996
5997	#discount-match-drawer .product-snippet__quick-shop-button {
5998		opacity: 1;
5999    display: flex;
6000    justify-content: center;
6001    align-items: center;
6002    width: 44px;
6003    height: 44px;
6004    cursor: pointer;
6005    border: 1px solid transparent;
6006    text-align: center;
6007    color: rgba(32, 32, 32, 1);
6008    transition: all cubic-bezier(0.4, 0, 0.2, 1) 0.3s;
6009    white-space:nowrap;
6010    padding:0;
6011		border-radius: 22px;
6012		background-color: rgba(255, 255, 255, 1);
6013  }
6014	#discount-match-drawer.in-cart-drawer .product-snippet__quick-shop-button {
6015		width: 32px;
6016		height: 32px;
6017	}
6018	.product-snippet__quick-shop-button .product_atc_icon {
6019		width: 22px;
6020		height: 22px;
6021	}
6022	#discount-match-drawer.in-cart-drawer .product-snippet__quick-shop-button .product_atc_icon {
6023		width: 18px;
6024		height: 18px;
6025	}
6026
6027	@media (max-width: 959.98px) {
6028	#discount-match-drawer .product-snippet__quick-shop-button {
6029		width: 32px;
6030    height: 32px;
6031	}
6032
6033  .product-snippet__quick-shop-button .product_atc_icon {
6034		width: 15px;
6035		height: 15px;
6036	}
6037	}
6038
6039	#discount-match-drawer .product-snippet__quick-shop-button:focus {
6040		outline: none !important;
6041	}
6042
6043
6044	#discount-match-drawer .product-snippet .product-snippet__sold-out-tag {
6045		position: absolute;
6046		top: 10px;
6047		left: 10px;
6048		display: flex;
6049		justify-content: center;
6050		align-items: center;
6051		padding: 2px 8px;
6052		border-radius: 2px;
6053		background: #FFF;
6054		font-size: 12px;
6055		color: #292929;
6056		border: 1px solid #E6E6E6;
6057		box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.10);
6058	}
6059	#discount-match-drawer .product-snippet .product-wholesale-price {
6060		display: flex;
6061		align-items: center;
6062		flex-wrap: wrap;
6063	}
6064	#discount-match-drawer .product-snippet .product-wholesale-price .wholesale-price {
6065		display: flex;
6066		align-items: center;
6067		margin-right: 4px;
6068	}
6069	#discount-match-drawer .product-snippet .product-wholesale-price .wholesale-price-item {
6070		font-weight: 500;
6071		font-size: 16px;
6072		line-height: 18px;
6073		color: #292929;
6074	}
6075	#discount-match-drawer .product-snippet .product-retail-price {
6076		font-weight: 400;
6077		font-size: 12px;
6078		color: rgba(41, 41, 41, 0.75);
6079	}
6080	#discount-match-drawer .product-snippet__price-wrapper span,
6081	#discount-match-drawer .product-snippet__price-wrapper del {
6082		display: inline-block;
6083		padding: 0;
6084	}
6085
6086	@media (max-width: 767.98px) {
6087		#discount-match-drawer .product-snippet__price-wrapper span {
6088			font-size: 18px;
6089		}
6090		#discount-match-drawer .product-snippet__price-wrapper del {
6091			font-size: 14px;
6092		}
6093		#discount-match-drawer .product-snippet__quick-shop-button {
6094			opacity: 1;
6095			bottom: 4px;
6096			right: 4px;
6097		}
6098	}
6099	/* 经典捆绑 */
6100	.promotion_classic_variant_container {
6101		margin-top: 20px;
6102		border: 1px solid #E6E6E6;
6103		border-radius: 2px;
6104		padding: 10px 8px;
6105		cursor: pointer;
6106	}
6107	.promotion_classic_variant_container span {
6108		text-overflow: ellipsis;
6109    display: -webkit-box;
6110    -webkit-line-clamp: 1;
6111    overflow: hidden;
6112    -webkit-box-orient: vertical;
6113		word-break: break-all
6114	}
6115	.promotion_classic_variant_container svg {
6116		flex-shrink: 0;
6117	}
6118	.promotion_classic_bundle_min_purchase_qty {
6119		position: absolute;
6120		right: 0;
6121		bottom: 0;
6122		border-radius: 4px 0px;
6123		background: #F64943;
6124		color: #fff;
6125		box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.10);
6126		padding: 4px 12px;
6127	}
6128
6129	.promotion_separator {
6130		display: flex;
6131		flex-direction: column;
6132		justify-content: center;
6133		align-items: center;
6134		margin: 0 12px;
6135	}
6136	.promotion_separator .promotion_dotted_line {
6137		display: inline-block;
6138		width: 1px;
6139		background-image: linear-gradient(to bottom, #ddd 50%, transparent 50%);
6140		background-repeat: repeat-y;
6141		background-size: 100% 6px;
6142		flex: 1;
6143	}
6144	.promotion_separator:last-child {
6145		display: none;
6146	}
6147
6148</style>
6149<style>
6150  /* 加购弹窗:让 lightbox 本体成为全屏蒙层并压在抽屉购物车之上,使蒙层盖住抽屉内容 */
6151  .apps-discount-quick-view {
6152    z-index: 1051 !important;
6153    background: rgba(0, 0, 0, 0.5);
6154  }
6155
6156  .apps-discount-quick-view .text_ellipsis_line_2 {
6157    text-overflow: ellipsis;
6158    display: -webkit-box;
6159    -webkit-line-clamp: 2;
6160    overflow: hidden;
6161    /*! autoprefixer: off */
6162    -webkit-box-orient: vertical;
6163  }
6164
6165  .apps-discount-quick-view .pointer-events-none {
6166    pointer-events: none;
6167  }
6168  .apps-discount-quick-view .w-full {
6169    width: 100%;
6170  }
6171
6172  .apps-discount-quick-view .rounded-btn-fixed {
6173    border-radius: 4px;
6174  }
6175  .apps-discount-quick-view .quick-shop .i-spzhtml-fill-content,
6176  .apps-discount-quick-view  .i-spzhtml-fill-content {
6177    display: flex;
6178    align-items: center;
6179    justify-content: flex-start;
6180  }
6181
6182  .apps-discount-quick-view  .quick-view-content {
6183    max-height: 80vh;
6184    padding: 68px 44px 54px 44px;
6185    overflow-x: hidden;
6186    overflow-y: auto;
6187    box-shadow: 0 0 30px 0 rgba(0, 0, 0, .2);
6188  }
6189
6190  .apps-discount-quick-view  .quick-shop-close-btn {
6191    position: absolute;
6192    top: -10px;
6193    right: -10px;
6194    width: 40px;
6195    height: 40px;
6196    transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
6197  }
6198
6199  .apps-discount-quick-view  .apps_discount_quick_view_close_btn {
6200    position: absolute;
6201    top: 24px;
6202    right: 24px;
6203    width: 24px;
6204    height: 24px;
6205    transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
6206  }
6207  .apps-discount-quick-view  .quick-view-render[loading] .quick-view-content {
6208    opacity: 0;
6209  }
6210
6211
6212   /* variants */
6213  .apps-discount-quick-view  .quick-shop__variants_content {
6214    padding: 0;
6215    border: none;
6216  }
6217
6218  .apps-discount-quick-view  .quick-shop__variants_content input[type=radio] {
6219    position: absolute;
6220    left: 0;
6221    right: 0;
6222    opacity: 0;
6223    width: 100%;
6224    height: 100%;
6225    z-index: 10;
6226    border: 0;
6227    margin: 0;
6228    cursor: pointer;
6229  }
6230
6231  .apps-discount-quick-view  .quick-shop__variants_content input[type=radio]:checked + .quickly-shop-variant-option,
6232  .apps-discount-quick-view  .quick-shop__variants_content input[type=radio]:checked + .quickly-shop-variant-option
6233   {
6234    color: var(--color-body-text,rgba(41, 41, 41, 1));
6235    outline: none;
6236    border-color: var(--color-body-text,rgba(41, 41, 41, 1));
6237  }
6238
6239  .apps-discount-quick-view  .quickly-shop-variant-option {
6240    position: relative;
6241    border: 1px solid #E6E6E6;
6242    border-radius: 2px;
6243    color: var(--color-body-text-75,rgba(41, 41, 41, 0.75));
6244  }
6245
6246  /* 售罄子款式 置灰 */
6247  .apps-discount-quick-view  .quick-shop__variants_content input[type=radio][soldout] + .quickly-shop-variant-option {
6248    color: #888A8B;
6249    opacity: 0.6;
6250  }
6251
6252  .apps-discount-quick-view  .quickly-shop-variant-option[data-type="text"] {
6253    display: flex;
6254    align-items: center;
6255    justify-content: center;
6256    min-width: 44px;
6257  }
6258
6259  .apps-discount-quick-view  .quickly-shop-variant-option[data-type="image-with-text"] {
6260    min-height: 52px;
6261  }
6262
6263  .apps-discount-quick-view  .quickly-shop-variant-option:not([data-type="image"]) {
6264    border: 1px solid #E6E6E6;
6265  }
6266
6267  .apps-discount-quick-view  .quickly-shop-variant-option[data-type="image-with-text"] > ljs-img {
6268    width: 42px;
6269    height: 42px;
6270    border-radius: 1px;
6271  }
6272
6273  .apps-discount-quick-view  .quickly-shop-variant-option[data-type="image"] > ljs-img {
6274    width: 52px;
6275    height: 52px;
6276    border-radius: 1px;
6277  }
6278
6279  .apps-discount-quick-view  .quick-shop__variant__select {
6280    min-height: 46px;
6281    line-height: 46px;
6282    padding-right: 46px;
6283    padding-left: 12px;
6284  }
6285
6286  /* Select */
6287  .apps-discount-quick-view  .secondary-select {
6288    cursor: pointer;
6289    -webkit-appearance: none;
6290    -moz-appearance: none;
6291    appearance: none;
6292    border-width: 1px;
6293    border-style: solid;
6294    border-color: rgba(230, 230, 230, 1);
6295    background-color: transparent;
6296    color: var(--color-body-text,rgba(41, 41, 41, 1));
6297  }
6298
6299
6300  /* variant options */
6301  .apps-discount-quick-view  .variants-options-container ljs-render {
6302    height: auto !important;
6303  }
6304
6305  .apps-discount-quick-view  .variants-options {
6306    margin-top: 10px;
6307  }
6308
6309  .apps-discount-quick-view  .variants-select-icon {
6310    position: absolute;
6311    top: 50%;
6312    right: 12px;
6313    transform: translateY(-50%);
6314  }
6315
6316  .apps-discount-quick-view  .variants-select-container {
6317    margin-top: 10px;
6318    margin-bottom: 16px;
6319    border-radius: 2px;
6320    border: 1px solid var(--color-borders,#E6E6E6);
6321  }
6322
6323  .apps-discount-quick-view  .variants-select-container select {
6324    appearance: none;
6325    min-height: 40px;
6326    padding: 8px 32px 8px 12px;
6327    background-color: transparent;
6328    border: none;
6329  }
6330
6331  /* quantity */
6332  .apps-discount-quick-view  .quick-shop-quantity button,
6333  .apps-discount-quick-view  .quick-shop-quantity input {
6334    width: 38px;
6335    height: 38px;
6336    line-height: 38px;
6337  }
6338
6339  .apps-discount-quick-view  .quick-shop-quantity button {
6340    color: #888888;
6341    transition: background-color 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955);
6342    border-radius: 2px;
6343    border: 1px solid var(--Line, #E6E6E6);
6344    background-color: #fff;
6345  }
6346
6347  .apps-discount-quick-view  .quick-shop-quantity button:hover {
6348    background-color: #f2f2f2;
6349  }
6350
6351  .apps-discount-quick-view  .quick-shop-quantity button[disabled] {
6352    cursor: default;
6353    background-color: #f9f9f9;
6354    border: none;
6355  }
6356
6357  .apps-discount-quick-view  .quick-shop-quantity {
6358    border: none;
6359  }
6360
6361  .apps-discount-quick-view  .quick-shop-quantity button[name="decrease"] {
6362    border-top-right-radius: 0;
6363    border-bottom-right-radius: 0;
6364  }
6365
6366  .apps-discount-quick-view  .quick-shop-quantity button[name="increase"] {
6367    border-top-left-radius: 0;
6368    border-bottom-left-radius: 0;
6369    border: 1px solid var(--color-borders, #E6E6E6)
6370  }
6371
6372  #apps-discount-quick-shop-quantity span[role=button][disabled] {
6373    cursor: default;
6374    border: none;
6375    cursor: not-allowed;
6376    background: #F6F6F6;
6377    border: 1px solid transparent;
6378  }
6379
6380  /* atc */
6381  /* 子款式未参与活动 */
6382  .apps-discount-quick-view  #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] button[role="addToCart"],
6383  .apps-discount-quick-view  #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="unavailable"],
6384  .apps-discount-quick-view  #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="soldout"],
6385  .apps-discount-quick-view  #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="confirm"]
6386   {
6387    cursor: default;
6388    pointer-events: none;
6389    background-color: #f6f6f6;
6390    color: #9F9F9F;
6391    border-color: transparent;
6392  }
6393
6394  .apps-discount-quick-view .apps_discount_limit_purchase_tip[selectedvariantstatus="notHitDiscount"] {
6395    display: none;
6396  }
6397
6398  /* 子款式不可用 或者 售空 */
6399   #apps-discount-quick-shop-body[status="product_unavailable"] button[role="addToCart"],
6400   #apps-discount-quick-shop-body[status="product_unavailable"] button[role="confirm"],
6401   #apps-discount-quick-shop-body[status="soldout"] button[role="addToCart"],
6402   #apps-discount-quick-shop-body[status="soldout"] button[role="confirm"] {
6403    cursor: default;
6404    pointer-events: none;
6405    background-color: #f6f6f6;
6406    color: #9F9F9F;
6407    border-color: transparent;
6408  }
6409
6410  .apps-discount-quick-view  .shop-btn {
6411    display: flex;
6412    justify-content: center;
6413    align-items: center;
6414    height: 52px;
6415    padding: 10px;
6416    border-radius: 1px;
6417    background: #202020;
6418    color: #FFF;
6419    text-align: center;
6420    font-size: 16px;
6421    font-weight: bold;
6422    line-height: 20px;
6423    border: none;
6424  }
6425  .apps-discount-quick-view  .app-discount-quick-shop-atc ljs-render,
6426  .apps-discount-quick-view  .quick-view-thumbs-container ljs-render {
6427    height: auto !important;
6428  }
6429
6430  .apps-discount-quick-view  .app-discount-quick-shop-atc button {
6431    height: 54px;
6432  }
6433
6434  .apps-discount-quick-view  .app-discount-quick-shop-atc button[role="buyNow"] {
6435    margin-top: 10px;
6436  }
6437
6438  .apps-discount-quick-view  .app-discount-quick-shop-atc button[loading] [role="content"],
6439  .apps-discount-quick-view  .app-discount-quick-shop-atc button[loading] ljs-render {
6440    opacity: 0;
6441  }
6442
6443  .app-discount-quick-shop-atc button:not([loading]) .loading {
6444    display: none;
6445  }
6446
6447  .apps-discount-quick-view  .app-discount-quick-shop-atc button[loading] {
6448    pointer-events: none;
6449  }
6450
6451  .apps-loading-bounce {
6452    width: 26px;
6453    height: 26px;
6454    border-radius: 50%;
6455    border: 3px solid transparent;
6456    border-bottom-color: #fff;
6457    animation: spinning .8s ease infinite;
6458    -webkit-animation: spinning .8s ease infinite;
6459  }
6460
6461  /* quick view */
6462  .apps-discount-quick-view  .quick-view-render {
6463    height: auto !important;
6464    max-width: 1136px;
6465    margin: 0 20px;
6466    border-radius: 10px;
6467    overflow: hidden;
6468    background: #ffffff;
6469  }
6470
6471  .apps-discount-quick-view  .quick-view-images ljs-carousel ljs-img {
6472    cursor: zoom-in;
6473  }
6474  .apps-discount-quick-view  .quick-view-images ljs-carousel:not([zoom-in]) ljs-img {
6475    cursor: auto;
6476  }
6477
6478  .apps-discount-quick-view  .quick-view-images:not([zoom-in]) .ljs-carousel-button,
6479  .apps-discount-quick-view  .quick-view-images[data-size="1"] .ljs-carousel-button,
6480  .apps-discount-quick-view  .quick-view-images[zoom-in] .zoom-out-image,
6481  .apps-discount-quick-view  .quick-view-images:not([zoom-in]) .zoom-in-image {
6482    display: none;
6483  }
6484
6485  .apps-discount-quick-view  .quick-view-images[zoom-in] .ljs-carousel-button {
6486    opacity: 1 !important;
6487  }
6488
6489  .apps-discount-quick-view  .quick-view-images[zoom-in] .ljs-carousel-button {
6490    top: unset !important;
6491    bottom: 44px;
6492    box-shadow: 0 3px 6px var(--color-shadow, rgba(0, 0, 0, 15%));
6493  }
6494
6495  .apps-discount-quick-view  .quick-view-images[data-size="1"] .ljs-carousel-button {
6496    display: none;
6497  }
6498
6499  .apps-discount-quick-view  .quick-view-images[zoom-in] .ljs-carousel-button-prev {
6500    left: calc(50% - 82px);
6501    transform: translateX(-50%) rotate(-90deg);
6502  }
6503
6504  .apps-discount-quick-view  .quick-view-images[zoom-in] .ljs-carousel-button-next {
6505    right: calc(50% - 126px);
6506    transform: translateX(-50%) rotate(-90deg);
6507  }
6508
6509  .apps-discount-quick-view  .quick-view-images[zoom-in] .close {
6510    top: unset !important;
6511    left: 50%;
6512    bottom: 36px;
6513    display: flex;
6514    align-items: center;
6515    justify-content: center;
6516    width: 60px;
6517    height: 60px;
6518    cursor: pointer;
6519    border-radius: 100%;
6520    transform: translateX(-50%);
6521    background-color: #ffffff;
6522    box-shadow: 0 3px 6px var(--color-shadow, rgba(0, 0, 0, 15%));
6523  }
6524
6525  .apps-discount-quick-view  .quick-view-images[zoom-in] .zoom-in-image[zoom-in] > ljs-img:first-child {
6526    opacity: 0;
6527  }
6528
6529  .apps-discount-quick-view  .quick-view-images[zoom-in] .zoom-in-image[zoom-in] {
6530    cursor: zoom-out;
6531  }
6532
6533  #discount-match-drawer .heading {
6534    font-size: 24px ;
6535  }
6536
6537  .apps-discount-quick-view  .color-price {
6538    font-size: 24px;
6539    font-weight: bold;
6540    line-height: 28px;
6541    color: red;
6542  }
6543
6544  .apps-discount-quick-view  .color-compare-price {
6545    color: var(--text-disable, rgba(32, 32, 32, 0.60));
6546    font-size: 16px;
6547  }
6548
6549
6550  .apps-discount-quick-view  .quick-view-info .variant-image {
6551    width: 120px !important;
6552    height: 120px;
6553    margin-right: 12px;
6554  }
6555  html[dir='rtl'] .apps-discount-quick-view  .quick-view-info .variant-image {
6556    margin-right: 0px;
6557    margin-left: 12px;
6558  }
6559
6560  .apps-discount-quick-view  .quick-shop-variants-container .option-name {
6561    font-size: 16px;
6562  }
6563  .apps-discount-quick-view  .quick-shop-variants-container .selected-option-name {
6564    font-size: 12px;
6565    color: rgba(32, 32, 32, 0.70);
6566    text-overflow: ellipsis;
6567    display: -webkit-box;
6568    -webkit-line-clamp: 1;
6569    overflow: hidden;
6570    -webkit-box-orient: vertical;
6571  }
6572  #apps-discount-quick-shop-variants .mr-3 {
6573    margin-right: 12px;
6574  }
6575  #apps-discount-quick-shop-variants .px-3 {
6576    padding-left: 12px; padding-right: 12px;
6577  }
6578
6579  .promotion_modal_discount_tip {
6580    margin-top: 20px;
6581    padding: 6px 12px;
6582    border-radius: 2px;
6583    background: #FFF2D8;
6584    color: #EA9E0C;
6585  }
6586  .cart-discount-close-icon {
6587      width: 100%;
6588      height: 100%;
6589  }
6590  @media (max-width: 676.98px) {
6591    .apps-discount-quick-view  .quick-view-content {
6592      max-height: 85vh;
6593      height: auto;
6594      padding: 60px 16px 16px 16px;
6595      overflow-y: hidden;
6596    } 
6597
6598    .apps-discount-quick-view  #apps-discount-quick-shop-body {
6599      max-height: calc(85vh - 266px);
6600      height: fit-content;
6601      overflow-y: auto;
6602      padding-bottom: 60px;
6603    }
6604    .apps-discount-quick-view  .quick-view-render {
6605      height: auto !important;
6606      max-width: 100%;
6607      margin: 0;
6608      border-radius: 10px 10px 0 0;
6609      position: fixed;
6610      bottom: 0;
6611      right: 0;
6612    }
6613
6614    .apps-discount-quick-view  .quick-view-info {
6615      padding-bottom: 76px;
6616    }
6617    .apps-discount-quick-view  .app-discount-quick-shop-atc {
6618      position: fixed;
6619      padding: 16px;
6620      bottom: 0;
6621      width: 100%;
6622      right: 0;
6623    }
6624
6625    .apps-discount-quick-view  .shop-btn {
6626      height: 43px;
6627      padding: 12px 16px;
6628      border-radius: 2px;
6629    }
6630
6631    .apps-discount-quick-view  .apps_discount_quick_view_close_btn {
6632      position: absolute;
6633      top: 20px;
6634      right: 20px;
6635      width: 20px;
6636      height: 20px;
6637      transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955);
6638    }
6639
6640    #discount-match-drawer .heading {
6641      font-size: 16px;
6642    }
6643
6644    .apps-discount-quick-view  .quick-shop-variants-container .option-name {
6645      font-size: 16px;
6646    }
6647    .apps-discount-quick-view  .quick-shop-variants-container .selected-option-name {
6648      font-size: 14px;
6649    }
6650  }
6651  @media (min-width: 960px) {
6652    .apps-discount-quick-view  .quick-shop-content {
6653      padding: 44px;
6654    }
6655
6656    /* quick view */
6657    .apps-discount-quick-view  .quick-view-render {
6658      margin: 0 40px;
6659    } 
6660
6661    .apps-discount-quick-view  .app_discount_quick_view_inner_content {
6662      display: grid;
6663      grid-template-columns: repeat(10, minmax(0, 1fr));
6664    }
6665
6666    .apps-discount-quick-view  .quick-view-gallery {
6667      grid-column-end: span 6;
6668    }
6669
6670    .apps-discount-quick-view  .quick-view-info {
6671      grid-column-end: span 4;
6672      padding-left: 64px;
6673    }
6674    html[dir='rtl'] .apps-discount-quick-view  .quick-view-info {
6675      padding-left: 0px;
6676      padding-right: 64px;
6677    }
6678
6679    .apps-discount-quick-view  .quick-view-thumbs-container {
6680      width: 76px;
6681      margin-right: 20px;
6682    }
6683
6684    .apps-discount-quick-view  .quick-view-thumb-images[scroll] {
6685      position: absolute;
6686      padding-bottom: 0;
6687      overflow: hidden;
6688      overflow-y: auto;
6689    }
6690
6691    .apps-discount-quick-view  .quick-view-thumb-images[scroll] [scroll-container] {
6692      padding: 0;
6693    }
6694
6695    .apps-discount-quick-view  .quick-view-thumb-images ljs-img + ljs-img {
6696      margin-top: 20px;
6697    }
6698
6699    .apps-discount-quick-view  .quick-view-thumb-images ljs-img[selected] {
6700      outline: none;
6701    }
6702
6703    .apps-discount-quick-view  .quick-view-thumb-images ljs-img::after {
6704      content: '';
6705      position: absolute;
6706      top: 0;
6707      left: 0;
6708      right: 0;
6709      bottom: 0;
6710      opacity: 0;
6711      margin: 2px;
6712      transition: opacity .2s cubic-bezier(0.455, 0.03, 0.515, 0.955);
6713      border: 1px solid #ffffff;
6714      outline: 2px solid var(--color-body-text,#202020);
6715    }
6716
6717    .apps-discount-quick-view  .quick-view-thumb-images ljs-img[selected]::after {
6718      opacity: 1;
6719    }
6720
6721    .apps-discount-quick-view  .quick-view-thumb-btn-prev, .quick-view-thumb-btn-next {
6722      height: 32px;
6723      background: white;
6724    }
6725
6726    .apps-discount-quick-view  .quick-view-thumb-btn-next {
6727      bottom: -33px;
6728    }
6729    .apps-discount-quick-view  .quick-view-thumb-btn-prev {
6730      top: -33px;
6731    }
6732
6733    .apps-discount-quick-view  .quick-view-images[zoom-in] .i-spzhtml-slide-item > ljs-img,
6734    .apps-discount-quick-view  .quick-view-images[zoom-in] ljs-zoom > ljs-img:first-child {
6735      max-width: 50%;
6736    }
6737  }
6738</style>
6739<template id="spz_custom_discount_default_template">
6740	${function() {
6741		return `
6742		<div></div>
6743		`;
6744	}()}
6745</template>
6746<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
6747  const TAG = 'spz-custom-discount-default';
6748  const API = {
6749    CAMPAIGN: "\/api\/storefront\/promotion\/landing_page\/campaign?discount_id=",
6750    PRODUCT_LIST: "\/api\/storefront\/promotion\/landing_page\/product\/list",
6751    DISCOUNT_I18N: "\/api\/discount-i18n"
6752  };
6753  const SHOP_ID = "2189163";
6754  const E_TAB_MAP = {
6755    scenario_buy: { value: "1", domId: "cart_product_list_buy_products" },
6756    scenario_obtain: { value: "2", domId: "cart_product_list_obtain_products" }
6757  };
6758  const SORT_DICT = {
6759    recommend_asc: { by: 'recommend', direction: 'asc' },
6760    title_asc: { by: 'title', direction: 'asc' },
6761    title_desc: { by: 'title', direction: 'desc' },
6762    price_asc: { by: 'price', direction: 'asc' },
6763    price_desc: { by: 'price', direction: 'desc' },
6764    created_at_desc: { by: 'created_at', direction: 'desc' },
6765    sales_desc: { by: 'sales', direction: 'desc' },
6766    add_to_cart_count_desc: { by: 'add_to_cart_count', direction: 'desc' },
6767    views_desc: { by: 'views', direction: 'desc' }
6768  };
6769  const SORT_OPTIONS = [
6770    { value: 'recommend_asc', text: "Recommend" },
6771    { value: 'price_asc', text: "Price, low to high" },
6772    { value: 'price_desc', text: "Price, high to low" },
6773    { value: 'title_asc', text: "Name, A to Z" },
6774    { value: 'title_desc', text: "Name, Z to A" },
6775    { value: 'created_at_desc', text: "Newest in" },
6776    { value: 'sales_desc', text: "Total sales, high to low" },
6777    { value: 'add_to_cart_count_desc', text: "Purchases, high to low" },
6778    { value: 'views_desc', text: "Page views, high to low" }
6779  ];
6780
6781  // 凑单弹窗与首页限时促销卡片(flashsale_collection)共用样式 id "discount-match-drawer",会产生重复 id。
6782  // 故 JS 不按 id 定位弹窗,改用弹窗根节点上专用的 js- 前缀钩子类唯一定位——与样式解耦,
6783  // 天然避免命中首页卡片,也不受开弹窗时 appendChild 重排 DOM 顺序的影响(此前正是它导致加购后第一次关不掉)。
6784  const getDiscountMatchPopupEl = () => document.querySelector('.js-discount-match-popup');
6785
6786  class SpzCustomDiscountDefault extends SPZ.BaseElement {
6787    constructor(element) {
6788      super(element);
6789			this.templates_ = null;
6790
6791      this.discountId = ''; // 活动 id
6792      this.discountType = "";
6793			this.discountI18n = {};
6794      this.bundleProducts = [];
6795			this.tabContentIdMap = {};
6796			this.currentTab = E_TAB_MAP.scenario_buy.value;
6797      this.modelMap = {
6798				[E_TAB_MAP.scenario_buy.value]: {},
6799				[E_TAB_MAP.scenario_obtain.value]: {}
6800			}
6801    }
6802
6803    static deferredMount() {
6804      return false;
6805    }
6806
6807    buildCallback() {
6808			this.action_ = SPZServices.actionServiceForDoc(this.element);
6809			this.templates_ = SPZServices.templatesForDoc(this.element);
6810			this.xhr_ = SPZServices.xhrFor(this.win);
6811
6812      this.setupAction_();
6813      this.initTabContentMap_();
6814
6815      SPZUtils.Event.listen(document.getElementById('discount-match-mask'), 'click', (e) => {
6816        e.stopPropagation();
6817        this.handleCloseDiscountDrawer_();
6818    });
6819    }
6820
6821    initTabContentMap_() {
6822			Object.entries(E_TAB_MAP).forEach(([key, valueObj]) => {
6823        this.tabContentIdMap[valueObj.value] = valueObj.domId;
6824      });
6825    }
6826
6827   // 初始化
6828    initData_(data) {
6829      this.discountId = data.discount_info.id;
6830      this.discountType = data.discount_info.discount_type;
6831      const model_buy_map = {
6832				discount_id: this.discountId, //活动id
6833				scenario: 1,  // 枚举值,1:购买商品,2:获得商品
6834				sort: { by :"recommend", direction :"asc"},
6835				page: 2, //分页码
6836				limit: 20, // 每页数量
6837				loading: false, // 请求数据标示
6838				has_more: true // 是否还有数据
6839			};
6840      const model_get_map = {
6841				discount_id: this.discountId,
6842				scenario: 2,
6843				sort: { by :"recommend", direction :"asc"},
6844				page: 2,
6845				limit: 20,
6846				loading: false,
6847				has_more: true
6848			};
6849      this.modelMap = {
6850				[E_TAB_MAP.scenario_buy.value]: model_buy_map,
6851				[E_TAB_MAP.scenario_obtain.value]: model_get_map
6852			}
6853
6854      this.renderSort_();
6855    }
6856
6857    getDiscountI18n_() {
6858      this.xhr_.fetchJson(API.DISCOUNT_I18N, {
6859        method: "GET",
6860      }).then((res)=>{
6861        this.discountI18n = res;
6862        this.bindEvent();
6863      });
6864    }
6865
6866    renderSort_() {
6867      const renderSort = (sortId, model) => {
6868        const $sortElement = document.getElementById(sortId);
6869        if ($sortElement) {
6870          SPZ.whenApiDefined($sortElement).then((api) => {
6871            const defaultValue = `${model.sort.by}_${model.sort.direction}` || "title_asc";
6872            api.doRender_({ options: SORT_OPTIONS, defaultValue, id: sortId });
6873          });
6874        }
6875      };
6876
6877      renderSort('spz_custom_sort_products_x', this.modelMap[E_TAB_MAP.scenario_buy.value]);
6878      renderSort('spz_custom_sort_products_y', this.modelMap[E_TAB_MAP.scenario_obtain.value]);
6879    }
6880
6881    // 获取数据,拼接html模板
6882		async getData(cb) {
6883      // 请求数据
6884      const model = this.modelMap[this.currentTab];
6885      if (!model.has_more || model.loading) return;
6886
6887      model.loading = true;
6888      this.handleLoading_({type: 'product', action: 'show'});
6889
6890      const $root = getDiscountMatchPopupEl() || document;
6891      const $content = $root.querySelector(`#${this.tabContentIdMap[this.currentTab]} .discount-default__productlist-wrap`) || $root.querySelector(`.discount-default__productlist-wrap`);
6892			//查询活动商品接口
6893      const reqBody = {
6894        discount_id: model.discount_id,
6895        page: model.page,
6896        limit: model.limit,
6897        apply_scenario: model.scenario,
6898        sort: model.sort,
6899        sales_channel: { sale_channel_type: "online", sale_channel_id: SHOP_ID }
6900      }
6901      this.xhr_.fetchJson(API.PRODUCT_LIST, {
6902        method: "POST",
6903        body: reqBody
6904      }).then(async(res)=>{
6905        this.handleLoading_({type: 'product', action: 'close'});
6906        const count = res.count;
6907        model.has_more = res.has_more;
6908        if (count > 0) {
6909          model.page++;
6910          if (res.products && res.products.length > 0) {
6911            const products = res.products.map((product) => {
6912              return {
6913                ...product,
6914                discount_id: model.discount_id,
6915                apply_scenario: model.scenario,
6916                url: appDiscountUtils.globalizePath(product.url),
6917                image_padding_bottom: appDiscountUtils.image_padding_bottom(product.image.width, product.image.height,'no-limit'),
6918                discount_type: this.discountType
6919              }
6920            });
6921            // 获取商品列表渲染模板, dom挂载
6922            const renderApi = await SPZ.whenApiDefined(document.querySelector('#a
6922pp-discount_match_drawer_products_render'));
6923            const el = await renderApi.getRenderTemplate({ products: products, discountI18n: this.discountI18n });
6924            const childNodes = el.querySelectorAll('.as-render-product-item');
6925            if (childNodes && childNodes.length > 0) {
6926              $content.append(...el.childNodes);
6927            }
6928
6929            this.bundleProducts = [...this.bundleProducts, ...res.products];
6930            SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => {
6931              api.setBundleData(this.bundleProducts);
6932            })
6933            if(this.discountType === 'DT_MIX_MATCH_BUNDLE') {
6934              const productSelector = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionProductSelector`);
6935              productSelector && SPZ.whenApiDefined(productSelector).then((api) => {
6936                api.init();
6937              });
6938            }
6939
6940            // 监听load去掉灰色背景
6941            document.dispatchEvent(new CustomEvent('fire.load.img'));
6942            // 触发懒加载
6943            cb && cb(products);
6944            window.lazyLoadInstance && window.lazyLoadInstance.update();
6945          } else {
6946          }
6947        }
6948        model.loading = false;
6949      }).catch((err)=>{
6950        console.error(err);
6951        model.loading = false;
6952        this.handleLoading_({type: 'product', action: 'close'});
6953      }).finally(() => {
6954        if(this.discountType === 'DT_MIX_MATCH_BUNDLE') {
6955          SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => {
6956            api.handleChangeSort();
6957          })
6958        }
6959      })
6960    }
6961
6962    bindEvent() {
6963      // 监听滚动,请求数据
6964      const $el = document.querySelector(".discount-match-drawer-content");
6965      if ($el) {
6966        $el.addEventListener("scroll", this.win.SPZCore.Types.debounce(this.win, () => {
6967          const model = this.modelMap[this.currentTab];
6968          if (!model.loading && model.has_more && appDiscountUtils.isToPageEnd(`[data-drawer-id='${this.discountId}']`)) {
6969            this.getData();
6970          }
6971        }, 50));
6972      }
6973      window.addEventListener("resize", this.setMatchDrawerHeight_);
6974    }
6975
6976    // 商品排序
6977    handleSort_(data) {
6978      const sortKey = data.value;
6979      this.modelMap[this.currentTab].sort = SORT_DICT[sortKey || 'title_asc'];
6980      this.modelMap[this.currentTab].page = 1;
6981      this.modelMap[this.currentTab].has_more = true;
6982      this.clearProductListDom_();
6983
6984      this.getData((products) => {});
6985    }
6986
6987		// tab 切换
6988		tabChange_(value) {
6989			this.currentTab = value || E_TAB_MAP.scenario_buy.value;
6990		}
6991
6992    setMatchDrawerHeight_() {
6993      //设置凑单弹窗高度,一些移动端浏览器上方帮助栏会影响视口大小,因此使用window.innerHeight
6994      //注意:resize 监听未 bind this,此函数不能依赖 this
6995      const modalContent = document.querySelector(".discount-match-drawer");
6996      if (!modalContent) return;
6997      const wrapper = getDiscountMatchPopupEl();
6998      const windowHeight = window.innerHeight;
6999      //运行时检测购物车抽屉是否仍打开
7000      //不能写死 side="right":不同主题抽屉弹出方向不同(右侧 / 底部等),只按 cart_drawer
7001      //section 下是否有 open 的 sidebar 判定;宽度/定位后续统一用 getBoundingClientRect() 同步
7002      const $drawer = document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]');
7003      if (!$drawer) {
7004        //购物车页场景:全屏底部弹层,默认 90vh 全宽
7005        modalContent.style.maxHeight = windowHeight * 0.9 + "px";
7006        modalContent.style.removeProperty("height");
7007        modalContent.style.removeProperty("width");
7008        wrapper && wrapper.classList.remove("in-cart-drawer");
7009        return;
7010      }
7011      //抽屉场景:距顶 40px,并匹配抽屉宽度(靠右/提层级/2列由 in-cart-drawer 的 CSS 处理)
7012      const h = (windowHeight - 40) + "px";
7013      modalContent.style.maxHeight = h;
7014      modalContent.style.height = h;
7015      //class 绑定抽屉存在性(保证靠右/提层级/2列生效),width 仅在可测量时再设,
7016      //避免 drawer 开启动画期间 rect.width 暂为 0 时弹窗以全宽浮在错误位置
7017      wrapper && wrapper.classList.add("in-cart-drawer");
7018      const rect = $drawer.getBoundingClientRect();
7019      if (rect.width > 0) {
7020        modalContent.style.setProperty("width", rect.width + "px", "important");
7021      }
7022    }
7023
7024    showDiscountToast(message) {
7025      SPZ.whenApiDefined(document.getElementById("cart_match_discount_toast")).then((apis) => {
7026        apis.showToast(message);
7027      });
7028    }
7029
7030    handleLoading_(event) {
7031      const { type, action } = event;
7032      const loadingElementId = type === 'product' ? '#discount-match-drawer-products_loading' : '#apps-discount-whole-loading';
7033      const loadingElement = document.querySelector(loadingElementId);
7034
7035      if (loadingElement) {
7036        SPZ.whenApiDefined(loadingElement).then((api) => {
7037          if (action === 'show') {
7038            api.show_();
7039          } else {
7040            api.close_();
7041          }
7042        });
7043      }
7044    }
7045
7046		setupAction_() {
7047      // Buy X Get Y Tab 切换
7048			this.registerAction('handleBuyXGetYTabChange', (invocation) => {
7049				const { panelId } = invocation.args.data;
7050				this.tabChange_(panelId);
7051			});
7052      // 监听排序组件 选中选项
7053			this.registerAction('handleSort', (invocation) => {
7054        const data = invocation.args.data;
7055        if (this.discountType === "DT_MIX_MATCH_BUNDLE") {
7056          const bundleFun = document.getElementById("appDiscountBundleProductsFunc");
7057          SPZ.whenApiDefined(bundleFun).then((api) => {
7058            const oldProductInfo = api.productStyleInfo;
7059            const newData = oldProductInfo.filter(item => {
7060              const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${item.product_id}`);
7061              return currentProductOption && currentProductOption.hasAttribute('selected')
7062            })
7063            api.init(newData);
7064          })
7065          .then(() => {
7066            this.handleSort_(data);
7067          })
7068        } else {
7069          this.handleSort_(data);
7070        }
7071			});
7072      //初始化弹窗数据
7073      this.registerAction('showDiscountDrawer', async (data) => {
7074        const discountId = data.args.discountId || '';
7075        const activeTab = data.args.activeTab || E_TAB_MAP.scenario_buy.value;
7076        this.tabChange_(activeTab);
7077        this.triggerEvent_('setTab', { activeTab });
7078
7079        this.getDiscountI18n_();
7080        this.getCampaignDetail_(discountId).then(() => {
7081          this.handleShowDiscountDrawer_();
7082        });
7083      });
7084      // 关闭弹窗
7085      this.registerAction('removeDiscountElement', () => {
7086        this.handleCloseDiscountDrawer_();
7087      });
7088      // 切换多个活动
7089      this.registerAction('discountSelectorChange', (invocation) => {
7090        const { targetOption } = invocation.args.data;
7091        this.handleDiscountSelectorChange_(targetOption);
7092      });
7093    }
7094
7095    handleDiscountSelectorChange_(targetOption) {
7096      this.modelMap[this.currentTab].sort = SORT_DICT['title_asc'];
7097      this.modelMap[this.currentTab].page = 1;
7098      this.modelMap[this.currentTab].has_more = true;
7099      this.clearProductListDom_();
7100
7101      this.handleLoading_({ type: 'product', action: 'show' });
7102      this.getCampaignDetail_(targetOption).finally(() => {
7103        this.handleLoading_({ type: 'product', action: 'close' });
7104      });
7105    }
7106
7107    // 清空商品列表dom, 重新请求排序数据渲染
7108    clearProductListDom_() {
7109      const $root = getDiscountMatchPopupEl() || document;
7110      const $productList = $root.querySelector(`#${this.tabContentIdMap[this.currentTab]} .discount-default__productlist-wrap`) || $root.querySelector(`.discount-default__productlist-wrap`);
7111      if ($productList) $productList.innerHTML = '';
7112    }
7113
7114    handleShowDiscountDrawer_() {
7115      this.setMatchDrawerHeight_();
7116      const $el = getDiscountMatchPopupEl();
7117      if (!$el) return;
7118      document.body.appendChild($el);
7119      $el.style.display="block";
7120      document.documentElement.classList.add("i-spzhtml-scroll-disabled");
7121    }
7122
7123    handleCloseDiscountDrawer_() {
7124      const $drawer = getDiscountMatchPopupEl();
7125      if ($drawer) $drawer.style.display = "none";
7126      document.documentElement.classList.remove("i-spzhtml-scroll-disabled");
7127      this.clearProductListDom_();
7128
7129      const bannerEL = document.querySelector(".discount_match_drawer_banner_inner");
7130      const productEL = ($drawer || document).querySelector(".discount-default");
7131      bannerEL && SPZCore.Dom.removeChildren(bannerEL);
7132      productEL && SPZCore.Dom.removeChildren(productEL);
7133      const bundleFun = document.getElementById("appDiscountBundleProductsFunc");
7134      SPZ.whenApiDefined(bundleFun).then((api) => {
7135        api.init();
7136      })
7137      const bundleButtonEL = document.querySelector(".app-bundle-discount_bottom_container");
7138      bundleButtonEL && SPZCore.Dom.removeChildren(bundleButtonEL);
7139    }
7140
7141    getCampaignDetail_(discount_id) {
7142      return this.xhr_.fetchJson(API.CAMPAIGN + discount_id, { method: "GET" }).then((data) => {
7143        this.bundleProducts = data.buy_product_info.product;
7144        if(data.discount_info.progress == "PROGRESS_FINISHED") {
7145          this.showDiscountToast("The discount has finished");
7146          return Promise.reject({});
7147        } else {
7148          SPZ.whenApiDefined(document.getElementById("discount-match-drawer-container")).then(apis => {
7149            apis.render(data, true).then(() => {
7150              this.initData_(data);
7151              const type = data.discount_info.discount_type;
7152              document.querySelector(".discount-match-drawer").dataset.discountType = type;
7153              //给捆绑组件传值
7154              if(type === "DT_MIX_MATCH_BUNDLE" || type === "DT_CLASSIC_BUNDLE") {
7155                // 重置
7156                const bundleButtonEL = document.querySelector(".app-bundle-discount_bottom_container");
7157                bundleButtonEL && SPZCore.Dom.removeChildren(bundleButtonEL);
7158
7159                //购物车默认加购
7160                data.landing_page_info.button.redirect_page = "cart";
7161                SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => {
7162                  api.init(); // 切换 Tab 重置数据
7163                  api.setBundleData(data.buy_product_info.product, data.landing_page_info, data.discount_info.id, data.discount_info.discount_type, data.discount_info);
7164                });
7165                if(type === "DT_CLASSIC_BUNDLE") {
7166                  SPZ.whenApiDefined((getDiscountMatchPopupEl() || document).querySelector("#promotionBottomContainer")).then((api) => {
7167                    const buttonData = {
7168                      setting: data.landing_page_info,
7169                      ...data.buy_product_info.total_price
7170                    }
7171                    api.render(buttonData, true);
7172                  })
7173                }
7174              }
7175            });
7176          });
7177        }
7178      }).catch(e => {
7179        e.then((data) => {
7180          if(data.code == 10003001) {
7181            this.showDiscountToast("The discount has finished");
7182          }
7183        });
7184      });
7185    }
7186
7187		triggerEvent_(name, data) {
7188			const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {});
7189			this.action_.trigger(this.element, name, event);
7190		}
7191
7192    isLayoutSupported(layout) {
7193      return layout == SPZCore.Layout.CONTAINER;
7194    }
7195  }
7196  SPZ.defineElement(TAG, SpzCustomDiscountDefault)
7197</ljs-script>
7198<spz-custom-render-products layout="container" id="app-discount_match_drawer_products_render" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
7199<script id="apps-discounts_product_list_template" type="text/template">
7200	<div class="render-products-wrapper app_discount_products_list_wrapper">
7201		${(function() {
7202			const	productsInfo = data.products || data.product;
7203			const product_display = originData?.product_display;
7204			const show_atc = product_display ? !!product_display?.show_add_to_cart : true;
7205			const show_discount_label = !!product_display?.show_discount_label;
7206			const show_sales_progress = !!product_display?.sales_progress?.enabled;
7207			const sales_progress_format = product_display?.sales_progress?.format || '';
7208			const limit_purchase = originData.limit_purchase;
7209
7210			const productConfig = product_display ? JSON.parse(product_display?.config).color : '';
7211			const sale_progress_bg = productConfig?.sale_bar_background_color || '#F2F2F2';
7212			const sale_progress_bg_start = productConfig?.progress_sale_bar_background_color_start || '#FF9C57';
7213			const sale_progress_bg_end = productConfig?.progress_sale_bar_background_color_end || '#FF4559';
7214			const sale_count_text = productConfig?.sale_bar_atc_color || '#FC5161';
7215			const discount_label_start = productConfig?.discount_sign_background_color_start || '#FF9C57';
7216			const discount_label_end = productConfig?.discount_sign_background_color_end || '#FF4559';
7217			const discount_label_text = productConfig?.discount_sign_color || '#FFFFFF';
7218
7219			//限时促销首页卡片尺寸
7220			const discount_image_size = data.discount_image_size || '100%';
7221			//点击加购按钮需要的参数
7222			let discount_id = data.discount_id;
7223      let apply_scenario = data.apply_scenario;
7224
7225
7226			if(!productsInfo.length) return '';
7227			return productsInfo.map(product => {
7228				let price = product.price || 0;
7229				let priceMin = product.price_min || 0;
7230				let priceMax = product.price_max || 0;
7231				let compareAtPriceMax = product.compare_at_price_max || 0;
7232				let compareAtPrice = product.compare_at_price || 0;
7233				let title = product.title || '';
7234				let id = product.id || '';
7235				let url = product.url || '';
7236				let type = product.type || '';
7237		
7238				let is_sold_out = false;
7239				if (product.available == false && product.inventory_policy != 'continue') {
7240					is_sold_out = true;
7241				}
7242				const soldOutLang1 = "Sold out";
7243				const soldOutLang2 = "Sold out";
7244				const discountType = product.discount_type;
7245				const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE";
7246				const defaultVariantTitle = product.variants[0]?.title.replace('-', '/');
7247
7248				
7249				const flash_sale_info = product?.flash_sale_info;
7250				const is_flashsale_sold_out = flash_sale_info?.discount_sales_rate == "100"; 
7251				const show_product_sold_progress = flash_sale_info?.discount_sales_rate > 0;
7252				const off_ratio = flash_sale_info?.off_ratio;
7253				price = flash_sale_info?.discount_price || price;
7254
7255				discount_id = discount_id ||  product.discount_id;
7256      	apply_scenario = apply_scenario || product.apply_scenario;
7257
7258				let imageWidth;
7259				if (product.image.width) {
7260					imageWidth = product.image.width;
7261				} else {
7262					imageWidth = 300;
7263				}
7264				let imageHeight;
7265				if (product.image.height) {
7266					imageHeight= product.image.height;
7267				} else {
7268					imageHeight = 300;
7269				}
7270
7271				if (discount_image_size !== 'natural') {
7272					imageHeight = (imageWidth * parseFloat(discount_image_size)) / 100;
7273				}
7274
7275				if (product.published) {
7276					return `
7277					<div class="common_app__product as-render-product-item">
7278						<div class="product-snippet">
7279							<div style="position: relative;">
7280								<a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link">
7281								</a>
7282									<ljs-img class="product-image" layout='responsive' width='${imageWidth}' height='${imageHeight}' src="${product.image.src}" alt="${product.image.alt}" object-fit='cover' auto-fit></ljs-img>
7283									<div spz-if="${is_sold_out != true && show_discount_label && off_ratio > 0}" class="product_flashsale_tag" style="color: ${discount_label_text};background: linear-gradient(167deg, ${discount_label_start} 10.84%, ${discount_label_end} 103.76%);">
7284										
7285    <svg width="20" height="20" viewBox="0 0 16 16" focusable="false" data-icon="flashlight" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M6.18 9.16H3.5a.5.5 0 01-.47-.67l2.67-7a.5.5 0 01.47-.32h4.5a.5.5 0 01.46.69l-1.55 3.8h2.92a.5.5 0 01.38.84L5.7 14.66c-.35.4-1 .06-.86-.46l1.33-5.03z"></path></svg>
7286  <div class="product_flashsale_tag_discount" style="color: ${discount_label_text};">-${off_ratio}%</div>
7287									</div>
7288									<div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'>
7289										${function(){
7290											if (soldOutLang1){
7291												return `
7292												<span>${soldOutLang1}</span>
7293												`
7294											}else{
7295												return `
7296												<span>${soldOutLang2}</span>
7297												`
7298										}
7299									}()}
7300									</div>
7301							
7302								<a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a>
7303      					<div spz-if="${!is_sold_out && show_sales_progress && show_product_sold_progress}">
7304									
7305<style>
7306  .discount_product_flashsale_progress {
7307		display: flex;
7308		margin: 10px 0 12px;
7309    align-items: center;
7310    position: relative;
7311	}
7312.discount_product_flashsale_sold_progress {
7313		display: flex;
7314    flex-direction: column;
7315    height: 10px;
7316    position: relative;
7317    overflow-x: hidden;
7318    flex-grow: 1;
7319		border-radius: 24px;
7320    background: #F2F2F2;
7321}
7322	.discount_flashsale__progress, .discount_flashsale__progress_sold {
7323		height: 100%;
7324	}
7325	.discount_flashsale__progress_sold{
7326		border-radius: 24px;
7327	}
7328	.discount_product_flashsale_sold{
7329		color: ${sale_count_text};
7330		font-size: 14px;
7331		font-weight: 600;
7332		line-height: normal;
7333    margin-left: 20px;
7334	}
7335  .falshsale_sold_hot {
7336    position: absolute;
7337    left: -1px;
7338    top: -8px;
7339  }
7340  .sold_hot {
7341    width: 20px;
7342    height: 24px;
7343  }
7344  .discount_flashsale__progress {
7345    background: ${sale_progress_bg}
7346  }
7347  .discount_flashsale__progress_sold {
7348    background: linear-gradient(90deg, ${sale_progress_bg_start} -6%, ${sale_progress_bg_end} 100%);
7349  }
7350  @media (max-width: 959.98px) {
7351    .discount_product_flashsale_sold_progress {
7352      height: 8px !important;
7353    }
7354    .falshsale_sold_hot {
7355      top: -6px !important;
7356    }
7357    .discount_product_flashsale_sold {
7358      margin-left: 8px;
7359      font-size: 11px !important;
7360    }
7361    .sold_hot {
7362      width: 16px;
7363      height: 20px;
7364    }
7365  }
7366</style>
7367<div class="discount_product_flashsale_progress">
7368  <div class="discount_product_flashsale_sold_progress">
7369    <div class="discount_flashsale__progress">
7370    <div class="discount_flashsale__progress_sold" style="width: ${flash_sale_info?.discount_sales_rate}%"></div>
7371  </div>
7372  </div>
7373  <div class="discount_product_flashsale_sold">
7374    <span spz-if="${flash_sale_info?.discount_sales_rate >= 80}">
7375      Almost sold out
7376      <div class="falshsale_sold_hot">
7377    <svg xmlns="http://www.w3.org/2000/svg" class="sold_hot"  viewBox="0 0 20 24" fill="currentColor">
7378      <path d="M7.33701 23.8467C7.33701 23.8467 -2.33876 21.5206 1.98573 9.97516C1.98573 9.97516 3.02282 12.4645 3.02282 13.7222C3.02282 13.7222 2.97147 10.8172 5.33272 8.08606C6.89272 6.07591 8.60011 2.80024 6.80238 0C6.80238 0 12.7782 0.888129 13.9897 10.552C13.9897 10.552 15.0067 6.6989 16.7455 6.45937C16.7455 6.45937 16.2108 7.7901 16.7455 9.7862C16.7455 9.7862 22.2292 20.0461 12.7782 23.514C11.1355 24.0085 9.14088 24.1373 7.33701 23.8467Z" fill="url(#paint0_linear_7027_3661)"/>
7379      <defs>
7380        <linearGradient id="paint0_linear_7027_3661" x1="9.28375" y1="24" x2="9.28375" y2="10.0418" gradientUnits="userSpaceOnUse">
7381          <stop stop-color="#FF9C57"/>
7382          <stop offset="1" stop-color="#FF4559"/>
7383        </linearGradient>
7384      </defs>
7385    </svg>
7386</div>
7387    </span>
7388    <span spz-else>
7389      <span spz-if="${sales_progress_format == 'FORMAT_NUMBER'}">${flash_sale_info?.discount_sales}</span>
7390      <span spz-if="${sales_progress_format == 'FORMAT_PERCENT'}">${flash_sale_info?.discount_sales_rate}%</span>
7391      sold
7392    </span>
7393  </div>
7394</div>
7395								</div>
7396								<div class="discount_product_atc_icon">
7397									<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
7398										<div class="product-snippet__price-wrapper max-w-full" >
7399											
7400												<span class="text-truncate dj_skin_product_price">
7401													<ljs-currency layout="container" value="${price}"></ljs-currency>
7402												</span>
7403												<del spz-if="${compareAtPrice * 1 > price * 1}" class="text-truncate dj_skin_product_compare_at_price">
7404													<ljs-currency layout="container" value="${compareAtPrice}"></ljs-currency>
7405												</del>
7406											  
7407										</div>
7408									</ljs-render>
7409									<div spz-if="${noNeedBtn && show_atc}" class="shop-btn-wrap">
7410										<div spz-if="${is_flashsale_sold_out && is_sold_out != true}">
7411											<button
7412												class="product-snippet__quick-shop-button"
7413												type="button"
7414												@tap="appDiscountRenderQuickShopFunc.getProductTitle(product_title='${ product.url }');discount_sold_out_modal.open"
7415												>
7416												  
7417    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text};"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
7418  </button>
7419										</div>
7420										<div spz-if="${!is_flashsale_sold_out}">
7421											<ljs-product-form
7422												spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }"
7423												product-id="${product.id}"
7424												layout="container"
7425												id="apps-discount-product-form-${product.id}"
7426												@atcSuccess="apps-discount-whole-loading.close;appDiscountRenderQuickShopFunc.getCartCount;appsAddCartToastFunc.showAddToCartToast();"
7427												@atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);"
7428											>
7429												<form>
7430													<input name="variant_id" type="hidden" value="">
7431													<button
7432														type="button"
7433														class="product-snippet__quick-shop-button"
7434														data-track-product-id="${product.id}"
7435														data-track="click"
7436														data-track-content="add_to_cart"
7437														data-track-source="quick_shop"
7438														@tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});"
7439													>
7440													  
7441    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text };"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
7442  </button>
7443												</form>
7444											</ljs-product-form>
7445											<button
7446												spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }"
7447												class="product-snippet__quick-shop-button"
7448												role="addToCart" 
7449												data-track="click"
7450												data-track-content="add_to_cart"
7451												data-track-source="quick_shop"
7452												type="button"
7453												@tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase=${limit_purchase});"
7454											>
7455												  
7456    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text };"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
7457  </button>		
7458										</div>
7459									</div>	
7460								</div>
7461								
7462								<div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}">
7463                  <button
7464                    spz-if="${is_sold_out != true}"
7465                    class="app_discount_bundle_add"
7466                    type="button"
7467                    @tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}">
7468                    Add
7469                  </button>
7470                  <ljs-render layout="container" id="promotionSpz
7470VariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
7471                  <div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}">
7472                    
7473    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
7474      <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/>
7475    </svg>
7476  </div>
7477                </div>
7478								
7479								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
7480									<ljs-render spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}" layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});">
7481										<div class="promotion_classic_variant_container flex justify-between items-center">
7482											<span>${defaultVariantTitle}</span>
7483											
7484    <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg>
7485  </div>
7486									</ljs-render>
7487								</div>
7488							</div>
7489						</div>
7490					</div>
7491					<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ">
7492            <span class="promotion_dotted_line"></span>
7493            <div class="promotion_plus_bundle">
7494              <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
7495      <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/>
7496    </svg>
7497  </div>
7498            <span class="promotion_dotted_line"></span>
7499          </div>
7500				`
7501				} else {
7502					return ``;
7503				}
7504			}).join('');
7505		})()}
7506	</div>
7507</script>
7507
7508</spz-custom-render-products>
7509
7510<ljs-script layout="logic" type="application/javascript" id="discounts-products-render-script" scope="discounts-products-render-script" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
7511  (function () {
7512    const TAG = "spz-custom-render-products";
7513    class SpzCustomProducts extends SPZ.BaseElement {
7514      constructor(element) {
7515        super(element);
7516      }
7517
7518      buildCallback() {
7519        this.action_ = SPZServices.actionServiceForDoc(this.element);
7520        this.templates_ = SPZServices.templatesForDoc(this.element);
7521        this.xhr_ = SPZServices.xhrFor(this.win);
7522      }
7523
7524      doRender_(data) {
7525        return this.templates_
7526        .findAndRenderTemplate(this.element, data)
7527        .then((el) => {
7528          const children = this.element.querySelector('*:not(template)');
7529          children && SPZCore.Dom.removeElement(children);
7530          this.element.appendChild(el);
7531        });
7532      }
7533
7534      getRenderTemplate(data) {
7535        const renderData = data || {};
7536        return this.templates_
7537        .findAndRenderTemplate(this.element, renderData)
7538        .then((el) => {
7539          const children = this.element.querySelector('*:not(template)');
7540          children && SPZCore.Dom.removeElement(children);
7541          return el;
7542        });
7543      }
7544
7545      triggerEvent_(name, data) {
7546        const event = SPZUtils.Event.create(this.win, '${ TAG }.${ name }', data || {});
7547        this.action_.trigger(this.element, name, event);
7548      }
7549
7550      isLayoutSupported(layout) {
7551        return layout == SPZCore.Layout.CONTAINER;
7552      }
7553    }
7554    SPZ.defineElement(TAG, SpzCustomProducts)
7555
7556  })()
7557
7558</ljs-script>
7559
7560<style>
7561  #discount-match-drawer .font-bold {
7562    font-weight: bold;
7563  }
7564  #discount-match-drawer .sort_custom_link {
7565    text-decoration: none;
7566  }
7567  #discount-match-drawer .w-100 {
7568    width:100%;
7569  }
7570  #discount-match-drawer .h-100 {
7571    height:100%;
7572  }
7573  #discount-match-drawer .sort-custom-sel .form-control {
7574    position: relative;
7575    display: flex;
7576    align-items:center;
7577    padding: 12px 36px 12px 12px;
7578    min-width: 160px;
7579    white-space: nowrap;
7580    text-overflow: ellipsis;
7581    overflow: hidden;
7582    height: auto;
7583    font-size: 1rem;
7584    color: #000000;
7585    background-color: #fff;
7586    background-clip: padding-box;
7587    border: 1px solid #ced4da;
7588    border-radius: 0;
7589    transition: border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;
7590  }
7591  html[dir="rtl"] #discount-match-drawer .sort-custom-sel .form-control {
7592    padding: 12px 12px 12px 36px;
7593  }
7594  #discount-match-drawer .sort_custom_panel {
7595    background: white;
7596    padding:0;
7597    border-radius:4px;
7598    box-shadow: 0px 2px 10px 1px rgba(0, 0, 0, 0.1);
7599  }
7600  #discount-match-drawer .open_active{
7601    display:block;
7602  }
7603  #discount-match-drawer .sort_custom_content{
7604    list-style:none;
7605    padding:0;
7606    margin-bottom:0!important;
7607    margin-top:0!important;
7608  }
7609  #discount-match-drawer .sort_custom_content li{
7610    height:40px;
7611    line-height:40px;
7612    padding:0 28px 0 10px;
7613    font-size:1rem;
7614    color: #30354D;
7615    border-bottom:1px solid #F0F0F0;
7616    cursor:pointer;
7617    white-space: nowrap;
7618    overflow:hidden;
7619    text-overflow: ellipsis;
7620    position:relative;
7621  }
7622  html[dir="rtl"] #discount-match-drawer .sort_custom_content li{
7623    padding: 0 10px 0 28px;
7624  }
7625  #discount-match-drawer .sort_custom_content li img{
7626    display:none;
7627    position:absolute;
7628    right:10px;
7629    top:12px;
7630    width:16px;
7631    height:16px;
7632  }
7633  html[dir="rtl"] #discount-match-drawer .sort_custom_content li img{
7634    right:auto;
7635    left:10px;
7636  }
7637  #discount-match-drawer .sort_custom_content li:hover img{
7638     display:block;
7639  }
7640  #discount-match-drawer .sort_custom_content li.active img{
7641    display:block;
7642  }
7643  #discount-match-drawer .sort_custom_select_mobile {
7644    height: auto;
7645    border-radius: 4px 4px 4px 4px;
7646    border: 1px solid #E6E6E6;
7647    color: #292929;
7648    font-weight: bold;
7649    padding: 8px 12px;
7650  }
7651  #discount-match-drawer .sort_custom_close{
7652    height:64px;
7653    line-height:24px;
7654    text-align:center;
7655    font-size:1rem;
7656    border-bottom:1px solid #E6E6E6;
7657    color: #30354D;
7658    padding-top:20px;
7659  }
7660  #discount-match-drawer .sort_custom_close .close{
7661      position:absolute;
7662      right:1rem;
7663      top:1rem;
7664      font-size:28px;
7665      width:32px;
7666      height:32px;
7667      line-height:32px;
7668      text-align:center;
7669  }
7670  #discount-match-drawer .common__select::after{
7671    content: '';
7672    display: none;
7673  }
7674  #discount-match-drawer .select_drop_down {
7675    position: absolute;
7676    right: 12px;
7677    top: 50%;
7678    transform: translateY(-50%);
7679    height: 24px;
7680  }
7681  html[dir="rtl"] #discount-match-drawer .select_drop_down {
7682    right: auto;
7683    left: 12px;
7684  }
7685  #discount-match-drawer .select_drop_down_rotate {
7686    transform: translateY(-50%) rotate(180deg) !important;
7687  }
7688  #discount-match-drawer .sort_custom_select {
7689    font-weight: bold;
7690  }
7691  #discount-match-drawer.in-cart-drawer .sort_custom_select {
7692    font-weight: 400;
7693  }
7694
7695  @media (max-width: 767.98px){
7696    #discount-match-drawer .md-hidden {
7697      display:none;
7698    }
7699
7700    #discount-match-drawer .sort_custom_content li:hover img {
7701      display:none;
7702    }
7703
7704    #discount-match-drawer .common__select::after {
7705      display:none
7706    }
7707
7708    #discount-match-drawer .sort_custom_panel{
7709      width:100%;
7710      background: rgba(41, 41, 41, 0.4);
7711    }
7712    #discount-match-drawer .open_active{
7713      display:block;
7714    }
7715    #discount-match-drawer .open_active .sort_custom_content{
7716      animation: slideLeft 0.3s ease-in forwards;
7717    }
7718    #discount-match-drawer .sort_custom_content{
7719      background:#fff;
7720    }
7721    #discount-match-drawer .sort_custom_content li{
7722        height:64px;
7723        line-height:64px;
7724        border-bottom:1px solid #E6E6E6;
7725        padding-left:40px;
7726        font-size:14px;
7727        color:#000;
7728    }
7729    #discount-match-drawer .sort_custom_content li img{
7730      display: none;
7731      left: 16px;
7732      width: 16px;
7733      top: 24px;
7734      height: 16px;
7735    }
7736    #discount-match-drawer .sort_custom_content li.active{
7737      background: rgba(230, 230, 230, 0.6);
7738    }
7739    #discount-match-drawer .sort_custom_content li.active img{
7740      display: block;
7741    }
7742    #discount-match-drawer .sort-scroll-panel{
7743      height:calc(100% - 64px);
7744      overflow:scroll;
7745    }
7746  }
7747  @media (min-width: 768px){ 
7748    #discount-match-drawer .lg-hidden {
7749      display:none;
7750    }
7751  }
7752  @keyframes slideLeft {
7753    from{
7754      left:100%
7755    }
7756    to{
7757      left:45px
7758    }
7759  }
7760  #discount-match-drawer .ios_safari_bottom_bar {
7761    height:0 !important;
7762  }
7763</style>
7764<template id="spz_custom_sort_template">
7765  ${function() {
7766    const options = data.options;
7767    const defaultValue = data.defaultValue || options[0].value;
7768    let defaultText = options[0].text;
7769    const hasOption = Array.apply(null, options).find((option) => {
7770      return option.value === defaultValue;
7771    });
7772    if(hasOption){
7773      defaultText = hasOption.text;
7774    }
7775		return `
7776    <div>
7777    <div class="common__select sort-custom-sel md-hidden" @tap="sort-dropdown-${data.id}.open">
7778    <a href="javascript:void(0)" class="sort_custom_link sort_custom_select form-control">${defaultText}</a>
7779    <span class="select_drop_down" style="pointer-events:none">
7780      <svg width="24" height="24" viewBox="0 0 16 16" style="vertical-align:top" fill="none" xmlns="http://www.w3.org/2000/svg">
7781        <g id="&#231;&#188;&#150;&#231;&#187;&#132; 17">
7782        <path id="&#229;&#189;&#162;&#231;&#138;&#182;&#231;&#187;&#147;&#229;&#144;&#136;" fill-rule="evenodd" clip-rule="evenodd" d="M4.32114 5.52632C4.08682 5.29201 3.70693 5.29201 3.47261 5.52632C3.2383 5.76064 3.2383 6.14054 3.47261 6.37485L7.57383 10.4761C7.69159 10.5938 7.84612 10.6524 8.00047 10.6518C8.15481 10.6524 8.30934 10.5938 8.42711 10.4761L12.5283 6.37485C12.7626 6.14054 12.7626 5.76064 12.5283 5.52632C12.294 5.29201 11.9141 5.29201 11.6798 5.52632L8.00047 9.20565L4.32114 5.52632Z" fill="black"/>
7783        </g>
7784      </svg>
7785    </span>
7786    <ljs-dropdown 
7787     id="sort-dropdown-${data.id}" 
7788     layout="nodisplay" 
7789     placement="bottomRight" 
7790     overlay-style="top: 8px;"
7791     @dropdownOpen="${data.id}.handleDropdownOpen"
7792     @dropdownClose="${data.id}.handleDropdownClose"
7793     >
7794      <div class="sort_custom_panel">
7795        <ul class="sort_custom_content">
7796          <div class="sort-scroll-panel">
7797            ${options.map((item) => {
7798                return `
7799                <li 
7800                  value="${item.value}" 
7801                  text="${item.text}" 
7802                  class="${item.value == defaultValue ? 'active' : ''}"
7803                  @tap="sort-dropdown-${data.id}.close;">
7804                  <span class>${item.text}</span>
7805                  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAATlJREFUWEftldFNAzEQRF86oATSAXQQOiAdQAdQAaQCoIKECqADSoAS6ICUgB6yJctwjn3icj/en9PpzjuzszvrBTPHYmZ8OoGuQFdgagXOgDfgFbj+y/JTEjgN4D4/geUxCZwA74Dgxjqo8IvDVAq8AJcBbQPcD23cKQjcJYBPwE1p3f83AcEeAqB9Pwf2xyJgv+27/Rf8IjyL911JAStZBft8HLg104n3Vys/dOYnZYnAV6hGCa2mlNDK9bxxCzzWXvMlAlfANiSShIvEhZKHSsVBK078mD0gCQHsq+H7c5IonXjJ6femqHFBXKc5CX2u343qocvZ1RDwTE7CHqtG08SPaUF6RhJWHNdr/Da4Zmt6UatAzJXbrXnoxrYgPSeJXXBEtd2G1GhVoEbVpn86ga5AV2B2Bb4BWcYxIXBRl2MAAAAASUVORK5CYII=" />
7806                </li>`
7807            }).join('')
7808            }
7809          </div>
7810        </ul>
7811      </div>
7812    </ljs-dropdown>
7813  </div>
7814<div class="common__select sort-custom-sel lg-hidden" @tap="sort-sidebar-${data.id}.open">
7815    <a href="javascript:void(0)" class="sort_custom_link sort_custom_select_mobile">
7816      <svg width="14" height="14" viewBox="0 0 14 14" fill="none" style="margin-right:8px;vertical-align:-2px" xmlns="http://www.w3.org/2000/svg">
7817        <g id="&#231;&#188;&#150;&#231;&#187;&#132; 5">
7818        <rect id="&#231;&#159;&#169;&#229;&#189;&#162;" opacity="0.01" width="14" height="14" fill="#D8D8D8"/>
7819        <path id="&#229;&#189;&#162;&#231;&#138;&#182;&#231;&#187;&#147;&#229;&#144;&#136;" fill-rule="evenodd" clip-rule="evenodd" d="M0.5 2.9999C0.5 2.66853 0.768629 2.3999 1.1 2.3999H5.9C6.23137 2.3999 6.5 2.66853 6.5 2.9999C6.5 3.33127 6.23137 3.5999 5.9 3.5999H1.1C0.768629 3.5999 0.5 3.33127 0.5 2.9999ZM0.5 6.9999C0.5 6.66853 0.768629 6.3999 1.1 6.3999H12.9C13.2314 6.3999 13.5 6.66853 13.5 6.9999C13.5 7.33127 13.2314 7.5999 12.9 7.5999H1.1C0.76863 7.5999 0.5 7.33127 0.5 6.9999ZM1 10.3999C0.723858 10.3999 0.5 10.6238 0.5 10.8999V11.0999C0.5 11.376 0.723858 11.5999 1 11.5999H10C10.2761 11.5999 10.5 11.376 10.5 11.0999V10.8999C10.5 10.6238 10.2761 10.3999 10 10.3999H1Z" fill="#292929"/>
7820        </g>
7821        </svg>        
7822        Sort by
7823    </a>
7824    <ljs-sidebar layout="nodisplay" side="right" id="sort-sidebar-${data.id}" class="w-100 h-100">
7825      <div class="sort_custom_panel w-100 h-100">
7826        <ul class="sort_custom_content w-100 h-100">
7827            <div class="sort_custom_close">
7828              Sort by
7829                <span @tap="sort-sidebar-${data.id}.close" class="close notranslate"><svg width="32" height="32" viewBox="0 0 32 32" style="vertical-align:revert;" fill="none" xmlns="http://www.w3.org/2000/svg">
7830                  <g id="&#231;&#188;&#150;&#231;&#187;&#132; 14">
7831                  <rect id="&#231;&#159;&#169;&#229;&#189;&#162;" opacity="0.01" width="32" height="32" fill="#E6E6E6"/>
7832                  <path id="&#229;&#189;&#162;&#231;&#138;&#182;&#231;&#187;&#147;&#229;&#144;&#136;" fill-rule="evenodd" clip-rule="evenodd" d="M22.6002 10.5751C22.9247 10.2505 22.9247 9.72429 22.6002 9.39972C22.2756 9.07515 21.7494 9.07515 21.4248 9.39972L16 14.8246L10.5752 9.39977C10.2506 9.0752 9.72436 9.0752 9.39979 9.39977C9.07522 9.72434 9.07522 10.2506 9.39979 10.5751L14.8246 15.9999L9.40083 21.4237C9.07626 21.7482 9.07626 22.2745 9.40083 22.599C9.7254 22.9236 10.2516 22.9236 10.5762 22.599L16 17.1753L21.4238 22.5991C21.7483 22.9237 22.2746 22.9237 22.5991 22.5991C22.9237 22.2745 22.9237 21.7483 22.5991 21.4237L17.1753 15.9999L22.6002 10.5751Z" fill="#292929" fill-opacity="0.7"/>
7833                  </g>
7834                  </svg>
7835              </span>
7836            </div>
7837            <div class="sort-scroll-panel">
7838            ${options.map((item) => {
7839                return `<li 
7840                  value="${item.value}" 
7841                  text="${item.text}" 
7842                  class="${item.value == defaultValue ? 'active' : ''}"
7843                  @tap="sort-sidebar-${data.id}.close">
7844                  <span class>${item.text}</span>
7845                  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAATlJREFUWEftldFNAzEQRF86oATSAXQQOiAdQAdQAaQCoIKECqADSoAS6ICUgB6yJctwjn3icj/en9PpzjuzszvrBTPHYmZ8OoGuQFdgagXOgDfgFbj+y/JTEjgN4D4/geUxCZwA74Dgxjqo8IvDVAq8AJcBbQPcD23cKQjcJYBPwE1p3f83AcEeAqB9Pwf2xyJgv+27/Rf8IjyL911JAStZBft8HLg104n3Vys/dOYnZYnAV6hGCa2mlNDK9bxxCzzWXvMlAlfANiSShIvEhZKHSsVBK078mD0gCQHsq+H7c5IonXjJ6femqHFBXKc5CX2u343qocvZ1RDwTE7CHqtG08SPaUF6RhJWHNdr/Da4Zmt6UatAzJXbrXnoxrYgPSeJXXBEtd2G1GhVoEbVpn86ga5AV2B2Bb4BWcYxIXBRl2MAAAAASUVORK5CYII=" />
7846                  </li>`
7847            }).join('')
7848            }
7849            </div>
7850        </ul>
7851      </div>
7852    </ljs-sidebar>
7853  </div>
7854</div>
7855		`
7856	}()}
7857</template>
7858<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
7859  const TAG = 'spz-custom-sort';
7860  class SpzCustomSort extends SPZ.BaseElement {
7861    constructor(element) {
7862      super(element);
7863      this.spz_custom_id = '';
7864    }
7865    static deferredMount() {
7866      return false;
7867    }
7868
7869    buildCallback() {
7870      this.action_ = SPZServices.actionServiceForDoc(this.element);
7871			this.templates_ = SPZServices.templatesForDoc(this.element);
7872			this.xhr_ = SPZServices.xhrFor(this.win);
7873      this.setupAction_();
7874    }
7875
7876		init() {
7877      this.bindEvent();
7878		}
7879
7880    bindEvent() {
7881      const $selectList = SPZCore.Dom.scopedQuerySelectorAll(
7882        this.element,
7883        ".sort_custom_content li"
7884      );
7885      const $customerSelect = SPZCore.Dom.scopedQuerySelector(
7886        this.element,
7887        ".sort_custom_select"
7888      );
7889
7890      // 选择下拉选项
7891      Array.from($selectList).forEach((node) => {
7892        SPZUtils.Event.listen(node, 'click', ()=> {
7893          let value = node.getAttribute('value');
7894          let text = node.getAttribute('text');
7895          // 触发selectChange 事件
7896          this.triggerEvent_('selectChange', {
7897            value: value,
7898            name: value
7899          })
7900          $customerSelect.innerHTML = text;
7901          const panelChilds = this.element.querySelectorAll(".sort_custom_panel li");
7902          // 清空其他选项的勾选状态
7903          Array.from(panelChilds).forEach((el) => {
7904            if(el.getAttribute('value') == value) {
7905              el.classList.add("active")
7906            } else {
7907              el.classList.remove('active');
7908            }
7909          })         
7910        });
7911      })
7912
7913    }
7914
7915    // 渲染界面
7916		async doRender_(data) {
7917      // 操作该组件的dom id
7918      this.spz_custom_id = data.id;
7919
7920			return this.templates_
7921			.findAndRenderTemplate(this.element, data)
7922			.then((el) => {
7923				const children = this.element.querySelector('*:not(template)');
7924				children && SPZCore.Dom.removeElement(children);
7925				this.element.appendChild(el);
7926			}).then(() => {
7927        this.init();
7928      });
7929		}
7930
7931    setupAction_() {
7932			this.registerAction('render', async(invocation) => {
7933        const data = invocation.args.data;
7934				this.doRender_(data)
7935			});
7936			this.registerAction('handleSelect', async(invocation) => {
7937        const data = invocation.args.data;
7938				
7939			});
7940			this.registerAction('handleDropdownOpen', async(invocation) => {
7941				const $selectDropDown = SPZCore.Dom.scopedQuerySelector(
7942          this.element,
7943          ".select_drop_down"
7944        );
7945        $selectDropDown.classList.add('select_drop_down_rotate');
7946			});
7947			this.registerAction('handleDropdownClose', async(invocation) => {
7948				const $selectDropDown = SPZCore.Dom.scopedQuerySelector(
7949          this.element,
7950          ".select_drop_down"
7951        );
7952        $selectDropDown.classList.remove('select_drop_down_rotate');
7953			});
7954		}
7955
7956    triggerEvent_(name, data) {
7957			const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {});
7958			this.action_.trigger(this.element, name, event);
7959		}
7960
7961    isLayoutSupported(layout) {
7962      return layout == SPZCore.Layout.CONTAINER;
7963    }
7964  }
7965  SPZ.defineElement(TAG, SpzCustomSort)
7966</ljs-script>
7967
7968<ljs-lightbox class="apps-discount-quick-view pointer-events-none i-spzhtml-layout-nodisplay" unclose-in-focus id="apps-discount-quick-view" layout="nodisplay" @close="appDiscountBundleProductsFunc.resetModalVariantInfo;" target="body" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
7969    <ljs-render class="quick-view-render pointer-events-auto w-full i-spzhtml-layout-container" layout="container" id="apps-discount-quick-view-render" items="data" has-loading manual @finish="apps-discount-quick-shop-variants.variantsRender(product=event.data);apps-discount-quick-shop-body.setProduct(data=event.data.product);apps-discount-quick-shop-quantity.update(value=event.data.product.quantity,max=event.data.selectedVariant.available_quantity,min=1);apps-discount-quick-shop-prices.rerender(data=event.data.product);" i-spzhtml-layout="container">
7970      <template>
7971        <div class="app_discount_basic_style">
7972          <div class="quick-view-content hide-scrollbar">
7973            <div class="apps_discount_quick_view_close_btn flex items-center justify-center cursor-pointer z-10" @tap="apps-discount-quick-view.close;">
7973<svg class="cart-discount-close-icon" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
7974<g id="20px/delete">
7975<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M1.93015 17.1473C1.813 17.2644 1.813 17.4544 1.93015 17.5715L2.83453 18.4759C2.95168 18.5931 3.14163 18.5931 3.25879 18.4759L9.91128 11.8234L16.6149 18.527C16.732 18.6442 16.922 18.6442 17.0391 18.527L17.9435 17.6226C18.0607 17.5055 18.0607 17.3155 17.9435 17.1984L11.2399 10.4948L17.8924 3.84229C18.0096 3.72513 18.0096 3.53518 17.8924 3.41802L16.9881 2.51365C16.8709 2.39649 16.6809 2.39649 16.5638 2.51365L9.91128 9.16616L3.30986 2.56474C3.19271 2.44758 3.00276 2.44758 2.8856 2.56474L1.98123 3.46911C1.86407 3.58627 1.86407 3.77622 1.98123 3.89337L8.58264 10.4948L1.93015 17.1473Z" fill="#707070"/>
7976</g>
7977</svg></div>
7978            <div class="app_discount_quick_view_inner_content">
7979              <div class="quick-view-gallery md:hidden">
7980                <div class="sticky top-0 flex z-10">
7981                  ${function() {
7982                    const images = data.images || [];
7983                    const selectedVariant = data.variants.find(v => (v.available && v.is_hit_discount == true)) || data.variants[0];
7984                    const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0;
7985                    const initialSlide = selectedIndex === -1 ? 0 : selectedIndex;
7986
7987                    return `
7988                      <div class="quick-view-thumbs-container relative flex-shrink-0 pointer-events-auto">
7989                        <ljs-render class="absolute inset-0" id="apps-discount-quick-view-thumb-controls" layout="container" spz-if="${images.length > 0}" template="apps-discount-quick-view-thumb-controls-template" manual></ljs-render>
7990                        <ljs-selector class="quick-view-thumb-images inset-0" scroll id="apps-discount-quick-view-thumb-images" layout="container" @select="quick-view-images.goToSlide(index=event.targetOption);">
7991                          <div scroll-container class="flex flex-col">
7992                            ${images.map((image, index) => `
7993                              <ljs-img width="76" height="76" layout="fixed" src="${image.src}" alt="${image.alt}" object-fit="cover" option="${index}" @tap="quick-view-images.goToSlide(index=index)"></ljs-img>
7994                            `).join('')}
7995                          </div>
7996                        </ljs-selector>
7997                      </div>
7998                      <ljs-carousel class="quick-view-images flex-1" id="quick-view-images" layout="container" zoom controls loop initial-slide="${initialSlide}" @mounted="apps-discount-quick-view-thumb-controls.rerender(data=event);apps-discount-quick-view-thumb-images.toggle(option=event.index, value=true,isScrollIntoView=true);" @slidechange="apps-discount-quick-view-thumb-controls.rerender(data=event);apps-discount-quick-view-thumb-images.toggle(option=event.index, value=true,isScrollIntoView=true);" data-size="${images.length}">                         ${images.map(image => {                           const imageWidth = image.width || 450;                           const imageHeight = image.height || 450;                           return `                              <ljs-img layout="responsive" width="${imageWidth}" height="${imageHeight}" src="${image.src}" alt="${image.alt}" object-fit="cover"></ljs-img>                           `                         }).join('')}                            <svg class="rotate-180" pre hidden width="8" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M.47.47A.867.867 0 0 1 1.6.388l.097.084 5.417 5.416c.308.308.335.79.084 1.129l-.084.097-5.417 5.416a.867.867 0 0 1-1.31-1.128l.085-.097L5.275 6.5.47 1.696A.867.867 0 0 1 .387.568L.47.47z" fill="currentColor" /></svg><svg class="" next hidden width="8" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M.47.47A.867.867 0 0 1 1.6.388l.097.084 5.417 5.416c.308.308.335.79.084 1.129l-.084.097-5.417 5.416a.867.867 0 0 1-1.31-1.128l.085-.097L5.275 6.5.47 1.696A.867.867 0 0 1 .387.568L.47.47z" fill="currentColor" /></svg><svg class="" close hidden width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="m14.445 2 1.131 1.131L9.92 8.788l5.657 5.657-1.13 1.131L8.787 9.92l-5.657 5.657L2 14.446l5.657-5.658L2 3.131 3.131 2l5.657 5.657L14.445 2z" fill="currentColor" /></svg></ljs-carousel>
7999                    `;
8000                  }()}
8001                </div>
8002              </div>
8003              ${function() {
8004                const productData = data;
8005                const limit_purchase = data.limit_purchase || 0;
8006                let product_change_event = '';
8007                let mouse_over_event = '';
8008                let mouse_out_event = '';
8009                const product_options = productData.options.filter(
8009Boolean) || [];
8010                for (let opt of product_options) {
8011                  const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '');
8012                  product_change_event = product_change_event + `apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`;
8013                  mouse_over_event = mouse_over_event + `@${nameEscape}Mouseover="apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event);"`;
8014                  mouse_out_event = mouse_out_event + `@${nameEscape}Mouseout="apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name});"`;
8015                }
8016                const selectedVariant = productData.variants.find(v => (v.available && v.is_hit_discount == true)) || productData.variants[0];
8017                const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ?
8018                  "Sold out" :
8019                  "Add to cart";
8020                const status =  (
8021                  (selectedVariant && !selectedVariant.available) ||
8022                  (!selectedVariant && !data.available)) ? 'soldout' : 'available';
8023
8024                return `
8025                <div class="quick-view-info">
8026                  <div class="sticky top-0">
8027                    <div class="inline-block flex">
8028                      <div class="variant-image lg:hidden">
8029                        <ljs-render id="apps-discount-quick-shop-variant-image" layout="container" template="apps-discount-quick-shop-variant-image-template" manual></ljs-render>
8030                      </div>
8031                      <div>
8032                        <h3 class="heading break-words text_ellipsis_line_2" style="margin-top: 0;">
8033                          ${data.title || data.brief}
8034                        </h3>
8035                        <div class="mt-2">
8036                          <ljs-render id="apps-discount-quick-shop-prices" layout="container" template="apps-discount-quick-shop-prices-template" manual></ljs-render>
8037                        </div>
8038                      <ljs-render id="quick-shop-flashsale-tip" layout="container" template="quick-shop-flashsale-tip-template" manual></ljs-render>
8039                      </div>
8040                    </div>
8041                    
8042                    <div spz-if="${data.show_classic_bundle_spu_style === true}" class="promotion_modal_discount_tip">
8043                      Add ${productData.discount_min_purchase_qty} items for discount
8044                    </div>
8045                    <ljs-product-form
8046                      id="apps-discount-quick-shop-body"
8047                      product-unavailable-status
8048                      product-id="${productData.id}"
8049                      variant-id="${selectedVariant.id}"
8050                      layout="container"
8051                      @atcSuccess="apps-discount-quick-view.close;appDiscountRenderQuickShopFunc.getCartCount;appsAddCartToastFunc.showAddToCartToast();"
8052                      @atcError="cart_match_discount_toast.showToast(content=event.message);"
8053                      @productChange="apps-discount-quick-shop-variant-image.rerender(data=event);apps-discount-quick-shop-prices.rerender(data=event);apps-discount-quick-shop-quantity.update(value=event.quantity,max=event.max);${product_change_event};appDiscountRenderQuickShopFunc.handleNotHitDiscount(data=event);appDiscountBundleProductsFunc.handleNotHitDiscount(data=event);appDiscountBundleProductsFunc.handleModalInventoryCheck(data=event);appDiscountFlashsaleFunc.changeFlashSaleLimitPurchase(data=event);"
8054                      >
8055                      <ljs-render spz-if="${data.show_classic_bundle_spu_style === true}" layout="container" id="promotionModalVariantTagRender" template="promotionSelectedVariantTemplate" manual></ljs-render>
8056                      <form>
8057                        <ljs-variants
8058                          manual
8059                          disabled-dj-event
8060                          name="apps-discount-quick-view-variant"
8061                          id="apps-discount-quick-shop-variants"
8062                          layout="container"
8063                          spz-if="${data.options?.length > 0}"
8064                          slide="quick-view-images"
8065                          switch-slide="[]"
8066                          template="apps-discount-quick-shop-variant-template"
8067                          interact="hover"
8068                          interference
8069                          ${mouse_over_event}
8070                          ${mouse_out_event}
8071                        ></ljs-variants>
8072                        <div spz-if="${data.discountType !== 'DT_CLASSIC_BUNDLE'}">
8073                          
8074<div class="mt-5">
8075  <div class="font-semibold">Quantity</div>
8076  <ljs-quantity
8077    disabled-dj-event
8078    class="quick-shop-quantity mt-2 flex items-center"
8079    id="apps-discount-quick-shop-quantity"
8080    name="quantity"
8081    layout="fixed"
8082    width="116"
8083    height="40"
8084    value="1"
8085    min="1"
8086    max="${(data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants[0]).available_quantity || data.available_quantity}"
8087    icon-class=""
8088    number-class=""
8089  >
8090    <svg class="" role="decrease" width="13" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg>
8091    <svg class="" role="increase"  width="13" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg>
8092  </ljs-quantity>
8093</div>
8094                        </div>
8095                        
8096${function() {
8097  const selectedVariant = data.variants.find(v => v.available && v.is_hit_discount == true) || data.variants[0];
8098  const statusLan = (
8099      (selectedVariant && !selectedVariant.available) ||
8100      (!selectedVariant && !data.available)) ?
8101    "Sold out" :
8102    "Add to cart";
8103  return `
8104  <div class="app-discount-quick-shop-atc mt-4 lg:mt-7 flex flex-col">
8105      <button spz-if="${data.need_atc == true}" class="relative flex items-center justify-center font-semibold shop-btn" 
8106        type="button" 
8107        role="addToCart" 
8108        data-track="click" 
8109        data-track-content="add_to_cart" 
8110        data-track-source="add_to_cart" 
8111        data-type="">
8112        <span role="content">${statusLan}</span>
8113        <div class="loading flex items-center justify-center absolute inset-0" role="loading">
8114          <div class="apps-loading-bounce"></div>
8115        </div>
8116      </button>
8117      <button spz-else class="relative flex items-center justify-center font-semibold shop-btn"
8118        type="button"
8119        role="confirm"
8120        @tap="appDiscountBundleProductsFunc.getVariantInfo;">
8121        <span>Add</span>
8122      </button>
8123  </div>
8124  `;
8125}()}
8126                        </ljs-render>
8127                      </form>
8128                    </ljs-product-form> 
8129                  </div>
8130                </div>   
8131                `;
8132                }()}
8133            </div>
8134          </div>
8135        </div>
8136      </template>
8137    </ljs-render>
8138  </ljs-lightbox>
8139
8140  <template id="apps-discount-quick-view-thumb-controls-template">
8141    <div class="absolute inset-0">
8142      <div spz-if="${data.index > 0}" class="quick-view-thumb-btn-prev absolute left-0 right-0 top-0 flex items-center justify-center pointer-events-auto cursor-pointer z-10" @tap="quick-view-images.goPrev();"><svg class="rotate--90"  width="8" height="12" xmlns="http://www.w3.org/2000/svg"><path d="M1.505.606a.7.7 0 0 1 .903-.074l.087.074 4.95 4.95c.11.109.175.245.197.387l.008.107a.698.698 0 0 1-.131.408l-.074.087-4.95 4.95a.7.7 0 0 1-1.064-.903l.074-.087 4.454-4.454-4.454-4.456a.7.7 0 0 1 0-.99z" fill="currentColor"/></svg></div>
8143      <div spz-if="${data.index + 1 != data.total}" class="quick-view-thumb-btn-next absolute left-0 right-0 bottom-0 flex items-center justify-center pointer-events-auto cursor-pointer z-10" @tap="quick-view-images.goNext();"><svg class="rotate-90"  width="8" height="12" xmlns="http://www.w3.org/2000/svg"><path d="M1.505.606a.7.7 0 0 1 .903-.074l.087.074 4.95 4.95c.11.109.175.245.197.387l.008.107a.698.698 0 0 1-.131.408l-.074.087-4.95 4.95a.7.7 0 0 1-1.064-.903l.074-.087 4.454-4.454-4.454-4.456a.7.7 0 0 1 0-.99z" fill="currentColor"/></svg></div>
8144    </div>
8145  </template>
8146
8147  <template id="apps-discount-quick-shop-variant-image-template">
8148    ${function() {
8149      const selectedVariant = data.variant || data.variants[0];
8150      const image = selectedVariant.image || data.product.image;
8151      const imageWidth = image?.width || 120;
8152      const imageHeight = image?.height || 120;
8153      return `
8154        <ljs-img class="variant-image" layout="responsive" width="${imageWidth}" height="${imageHeight}" src="${image.src}" alt="${image.alt}" object-fit="cover" auto-fit></ljs-img>
8155      `
8156    }()}
8157  </template>
8158
8159  <template id="apps-discount-quick-shop-prices-template">
8160    ${function() {
8161      const defaultVariant = data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants?.[0];
8162      const selectedVariant = data.variant || defaultVariant;
8163      const isHasRrice = (selectedVariant.price || selectedVariant.price == 0) ? true : false;
8164
8165      if(selectedVariant.flash_sale_info && selectedVariant.flash_sale_info.discount_price) {
8166        selectedVariant.price = selectedVariant.flash_sale_info.discount_price;
8167      }
8168      if(data.flash_sale_info && data.flash_sale_info.discount_price) {
8169        data.price = data.flash_sale_info.discount_price;
8170      }
8171      
8172      return !!selectedVariant ? `
8173        <div class="flex items-center flex-wrap break-words" style="min-height: 28px">
8174          <ljs-currency spz-if="${isHasRrice}" class="inline-block mr-3 color-price" value="${selectedVariant.price}" layout="container"></ljs-currency>
8175          <ljs-currency spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}" class="inline-block mr-3 line-through color-compare-price" value="${selectedVariant.compare_at_price}" layout="container"></ljs-currency>
8176        </div>
8177      ` : `
8178        <div class="flex items-center color-price break-words" style="min-height: 28px">
8179          <ljs-currency layout="container" value=${data.price}></ljs-currency>
8180          <span spz-if="${+data.price_min < +data.price_max}">-</span>
8181          <ljs-currency layout="container" value="${data.price_max}" spz-if="${+data.price_min < +data.price_max}"></ljs-currency>
8182        </div>
8183      `;
8184    }()}
8185  </template>
8186
8187  <template id="quick-shop-flashsale-tip-template">
8188  ${function(){
8189    const defaultVariant = data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants?.[0];
8190    const selectedVariant = data.variant || defaultVariant;
8191
8192    let show_flashsale_limit_tip = false;
8193    let limit_user_product_discount;
8194    
8195
8196    if(selectedVariant.flash_sale_info && selectedVariant.flash_sale_info?.limit_user_product_type != "LUPT_NO_LIMIT" && selectedVariant.flash_sale_info?.limit_user_product_discount > 0) {
8197      show_flashsale_limit_tip = true;
8198      limit_user_product_discount = selectedVariant.flash_sale_info?.limit_user_product_discount;
8199
8200    }
8201    if(data.flash_sale_info && data.flash_sale_info?.limit_user_product_type != "LUPT_NO_LIMIT" && data.flash_sale_info?.limit_user_product_discount > 0) {
8202      show_flashsale_limit_tip = true;
8203      limit_user_product_discount = data.flash_sale_info?.limit_user_product_discount;
8204    }
8205    return `
8206      <div>
8207        <div spz-if="${show_flashsale_limit_tip}" style="color: #fa4f6cd9" class="apps_discount_limit_purchase_tip">
8208          Promo products limited to ${limit_user_product_discount} item per person
8209        </div>
8210      </div>
8211    `
8212  }()}
8213</template>
8214  <template id="apps-discount-quick-shop-variant-template">
8215  <div class="quick-shop-variants-container mt-5">
8216    ${function() {
8217      const currentProduct = data.product;
8218      return (currentProduct.options || []).map((option, index) => {
8219        const optionName = option.name || '';
8220        const optionId = option.id || '';
8221        const position = `option${index + 1}`;
8222        
8223        return `
8224        <div class="variants-options-container ${index !==0 ? 'mt-5' : ''}">
8225          <fieldset class="quick-shop__variants_content mt-6 mx-0" name="${optionName}">
8226            <div class="quick-shop__variants_title flex flex-row flex-wrap break-words">
8227              <span class="option-name font-semibold">${optionName}:&nbsp;</span>
8228              <ljs-render class="flex items-center" id="apps-discount-quick-shop-selected-variant-${optionId}" layout="container" template="apps-discount-quick-shop-selected-variant-template"></ljs-render>
8229            </div>
8230            <div class="flex flex-wrap">
8231              ${option.values.map((value,idx) => {
8232                const selected = data.product.defaultSelectValues?.[optionName] == value ? 'checked' : '';
8233  
8234                return `
8235                  <div class="relative mt-3 mr-3" option="${value}">
8236                    <input
8237                      type="radio"
8238                      class="pointer-events-auto"
8239                      option="${value}"
8240                      id="apps-discount-quick-shop-variant-${value}-${idx}"
8241                      name="apps-discount-quick-shop-variant-${optionName}"
8242                      value="${value}"
8243                      form="apps-discount-quick-shop-body"
8244                      @input-debounced="apps-discount-quick-shop-selected-variant-${optionId}.rerender(data=event);"
8245                      ${selected}
8246                    >
8247                    <label
8248                      class="quickly-shop-variant-option relative flex items-center break-words flex-shrink-0 "
8249                      data-type="text"
8250                      for="apps-discount-quick-shop-variant-${value}-${idx}">
8251                        <span class="break-words py-2 px-3">${value}</span>
8252                    </label>
8253                  </div>
8254                `;
8255              }).join('')}
8256            </div>
8257          </fieldset>
8258        </div>  
8259        `;
8260      }).join('')
8261    }()}
8262  </div>
8263</template>
8264
8265<template id="apps-discount-quick-shop-selected-variant-template">
8266  ${function() {
8267    const value = (data.originData && data.originData.value) || data.value;
8268    const isHasValue = value ? true : false;
8269    return `
8270      <span spz-if="${isHasValue}" class="selected-option-name break-words">
8271        ${value}
8272      </span>
8273    `
8274  }()}
8275</template>
8276<style>
8277  ljs-carousel .i-spzhtml-slide-item {
8278    display: flex;
8279    justify-content: center;
8280  }
8281</style>
8282<template id="appDiscountProductPriceTemplate">
8283  ${function(){
8284    return `
8285    <div class="product-snippet__price-wrapper max-w-full">
8286      <span><ljs-currency layout="container" value="${data.total_received_discounts}" class="text-truncate dj_skin_product_price money ${+data.total_price > +data.total_received_discounts ? '' : 'promotion_no_del_p'}"></ljs-currency></span>
8287      <del><ljs-currency layout="container" value="${data.total_price}" spz-if="${+data.total_price > +data.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price money"></ljs-currency></del>
8288    </div>
8289    `
8290  } ()}
8291</template>
8292
8293<template id="promotionSelectedVariantTemplate">
8294  <div class="promotion_variant_tag_list flex flex-wrap">
8295    ${data.map((variant) => {
8296      return `
8297        <div class="promotion_variant_tag_item flex items-center">
8298          <span class="promotion_variant_tag_item_quantity mr-1" spz-if="${variant.quantity > 1}">x${variant.quantity}</span>
8299          <span class="promotion_variant_tag_item_text mr-2">${variant.variant_title || variant.title}</span>
8300          <span class="promotion_variant_tag_item_close cursor-pointer" @tap="appDiscountBundleProductsFunc.deleteVariantTag(product_id=${variant.product_id}, variant_id=${variant.variant_id});" spz-if="${!variant.is_classic_bundle_product_list_variant_tag}">
8301            <svg class=" "
8302        xmlns="http://www.w3.org/2000/svg"
8303        width="16px"
8304        height="16px"
8305        viewBox="0 0 16 16"
8306      >
8307      <path d="M9.08373973,8 L14.7840494,2.29705621 C15.0719835,2.00668579 15.0719835,1.53834033 14.7840494,1.24796991 L14.7500176,1.21817841 C14.4595331,0.928700933 13.9897734,0.928700933 13.6992889,1.21817841 L8.00110629,6.92750609 L2.30505063,1.21605044 C2.01481433,0.927983186 1.54668519,0.927983186 1.25644889,1.21605044 L1.2224172,1.24584194 C1.08024702,1.38371894 1,1.57335537 1,1.77144907 C1,1.96954277 1.08024702,2.15917921 1.2224172,2.29705621 L6.92272682,8 L1.2224172,13.7029438 C0.934483002,13.9933142 0.934483002,14.4616597 1.2224172,14.7520301 L1.25432191,14.7839496 C1.54455821,15.0720168 2.01268734,15.0720168 2.30292364,14.7839496 L8.00323328,9.08100577 L13.7035429,14.7839496 C13.9937792,15.0720168 14.4619083,15.0720168 14.7521446,14.7839496 L14.7819224,14.7520301 C15.0698566,14.4616597 15.0698566,13.9933142 14.7819224,13.7029438 L9.08161274,8 L9.08373973,8 Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path>
8308    </svg>
8309  </span>
8310        </div>
8311      `;
8312    }).join('')}
8313  </div>
8314</template>
8315
8316<template id="appDiscountBundleButton">
8317    ${function(){
8318        const { original_price, received_discounts, picked_qty } = data;
8319        const button_text = originData.setting.button.text;
8320        const button_config = JSON.parse(originData.setting.button.config);
8321        const button_action = originData.setting.button.redirect_page;
8322        const text = originData.setting.price_text_config.text;
8323        const price_config = JSON.parse(originData.setting.price_text_config.config);
8324        const price_text = text.replace(/\{picked_qty\}/g, `<span>${picked_qty}</span>`).replace(/\{original_price\}/g, `<ljs-currency layout="container" spz-if="${+original_price > +received_discounts}" class="money app_discount_button_original_price" style="color: ${price_config.color.total_price}" value="${original_price}"></ljs-currency>`).replace(/\{received_discounts\}/g, `<ljs-currency layout="container" class="money app_discount_button_discounted_price" style="color: ${+original_price <= +received_discounts ? price_config.color.total_price : price_config.color.discount_price}" value="${received_discounts}"></ljs-currency>`);
8325      return `
8326        <div class="app-bundle-discount_bottom_container">
8327          <div id="appBundlBottomContainer">
8328            <div class="app-bundle-discount_info">${price_text}</div>
8329            <div
8330              class="app-bundle-discount_bottom_button"
8331              style="color: ${button_config.color.button_text}; background-color: ${button_config.color.button_bg} "
8332              @tap="appDiscountBundleProductsFunc.handleClick(action=${button_action})"
8333            >${button_text}</div>
8334          </div>
8335        </div>
8336      `
8337    }()}
8338</template>
8339
8340<template id="promotionClassicSelectedVariantTemplate">
8341  ${function(){
8342    return `
8343    <div class="promotion_classic_variant_container flex justify-between items-center">
8344      <span>${data[0].variant_title}</span>
8345      <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg>
8346  </div>
8347    `
8348  } ()}
8349</template>
8350
8351<template id="promotionMinPurchaseQtyTemplate">
8352  <div spz-if="${data.discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${data.discount_min_purchase_qty}</div>
8353</template>
8354<script id="appDiscountUtils">
8355  appDiscountUtils = {
8356    image_padding_bottom: (width, height, origin) => {
8357      origin = origin || 'limit';
8358      if (width && height) {
8359        const hw_ratio = height / width;
8360        if (origin == 'limit') {
8361          if (hw_ratio < 0.62) {
8362            return '62%';
8363          } else if (hw_ratio > 1.6) {
8364            return '160%';
8365          }
8366        }
8367        return parseInt(hw_ratio * 100) + '%';
8368      }
8369      return '100%';
8370    },
8371    globalizePath: (urlPath) => {
8372      if(typeof urlPath !== 'string') return ;
8373      if(urlPath.indexOf('/') !== 0){
8374        urlPath = '/'+urlPath;
8375      }
8376      let prefix = ((SHOPLAZZA && SHOPLAZZA.routes && SHOPLAZZA.routes.root) || '');
8377
8378      if(prefix.length>0){
8379        if(prefix.indexOf('/') !== 0){
8380          prefix = '/'+prefix;
8381        }
8382        const prefixionPath = (prefix,urlPath) => {
8383          if(typeof prefix !== 'string') return ;
8384          if(typeof urlPath !== 'string') return ;
8385          if(urlPath.indexOf('/') !== 0){
8386            throw new Error('prefixPath: urlPath must be start with /');
8387          }
8388          if(prefix.indexOf('/') !== 0){
8389            throw new Error('prefixPath: prefix must be start with /');
8390          }
8391          return prefix+urlPath;
8392        }
8393        return prefixionPath(prefix,urlPath);
8394      }else{
8395        return  urlPath;
8396      }
8397    },
8398    //滚动加载方法
8399    isToPageEnd: (el) => {
8400      const $el = document.querySelector(el);
8401      if($el) {
8402        const scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; //滚动条距离顶部的高度
8403        const clientHeight = window.innerHeight; //当前可视的页面高度
8404        const scrollHeight = document.body.scrollHeight; //当前页面的总高度
8405        const elOffsetTop = $el.getBoundingClientRect().top + window.pageYOffset - document.documentElement.clientTop; // 元素距离文档顶部距离
8406        // 如果改卡片下面还有卡片或者dom,计算滚动加载需要考虑这个高度
8407        const toBottom = scrollHeight - ($el.offsetHeight + elOffsetTop); //元素到浏览器底部的高度
8408        if (scrollTop + clientHeight + toBottom + 100 >= scrollHeight) {
8409          return true;
8410        }
8411      }
8412      return false;
8413    },
8414    judgeMobile: () => {
8415      return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent) || window.document.body.offsetWidth <= 960;
8416    },
8417    judgeRTL: () => {
8418      return window.document.dir === 'rtl';
8419    },
8420    inProductBody: (element) => {
8421      const document = window.document;
8422      const productInfo = document.querySelector(".product-info");
8423      const productInfoBody = document.querySelector(".product-info-body");
8424      const productInfoBody2 = document.querySelector(".product-info__body");
8425      const productInSection = document.querySelector('div[data-section-type*="product"]');
8426      const curProductInfo = productInfo || productInfoBody || productInfoBody2 || productInSection;
8427
8428      return curProductInfo ? curProductInfo.contains(element) : false;
8429    },
8430    convertTimestampToFormat(timestamp, timeZone) {
8431      const sign = timeZone[0] === '+' ? 1 : -1; // 检查时区偏移量的符号
8432      const offset = parseInt(timeZone.slice(1, 3)); // 提取时区偏移量
8433      const date = new Date((timestamp + sign * offset * 3600) * 1000); // 添加时区偏移量
8434      const year = date.getUTCFullYear();
8435      const month = ("0" + (date.getUTCMonth() + 1)).slice(-2);
8436      const day = ("0" + date.getUTCDate()).slice(-2);
8437      const hours = ("0" + date.getUTCHours()).slice(-2);
8438      const minutes = ("0" + date.getUTCMinutes()).slice(-2);
8439      return year + "/" + month + "/" + day;
8440    },
8441    // 跳转决策: is_redirection + link(可选覆盖)
8442    // 返回最终跳转 URL,null 表示不跳
8443    resolveDiscountHref: (setting, landingUrl) => {
8444      if (!setting || !setting.is_redirection) return null;
8445      const link = typeof setting.link === 'string' ? setting.link.trim() : '';
8446      if (link && /^https?:\/\//i.test(link)) return link;
8447      return landingUrl || null;
8448    },
8449    // 不需要 landing URL 的纯样式联动场景使用(光标/箭头)
8450    canRedirect: function(setting) {
8451      return !!this.resolveDiscountHref(setting, '_');
8452    }
8453  }
8454</script>
8454
8455<spz-custom-discount-bundle-products id="appDiscountBundleProductsFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-bundle-products>
8456<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
8457  // 凑单弹窗与首页限时促销卡片共用样式 id "discount-match-drawer",会产生重复 id。
8458  // 用弹窗根节点上专用的 js- 前缀钩子类唯一定位作用域根,避免命中首页卡片导致弹窗内元素查询失败。
8459  const getDiscountMatchPopupEl = () => document.querySelector('.js-discount-match-popup');
8460
8461  class SpzCustomDiscountBundleProducts extends SPZ.BaseElement {
8462    constructor(element) {
8463      super(element);
8464      this.xhr_ = SPZServices.xhrFor(this.win);
8465      this.getDiscountPriceApi = "\/api\/storefront\/promotion\/calculate\/discounted_price";
8466      this.buyNowApi = "\/api\/checkout\/order";
8467      this.batchAtcApi = "\/api\/cart\/batch";
8468      // 款式信息集合
8469      this.productStyleInfo = [];
8470      // 弹窗内选择款式集合
8471      this.modalVariantInfo = [];
8472      this.show_classic_bundle_spu_style = false;
8473      this.bundleProducts = []; //捆绑商品
8474      this.bundleConfig = {}; //下方按钮配置
8475      this.discountId = "";
8476      this.discountType = "";
8477      this.discountInfo = "";
8478      this.lineItems = [];
8479      this.tempCss = {};
8480      this.renderQuickShop_ = this.win.SPZCore.Types.debounce(this.win, this.renderQuickShopModal.bind(this), 500);
8481    }
8482
8483    isLayoutSupported(layout) {
8484      return layout == SPZCore.Layout.LOGIC;
8485    }
8486
8487    buildCallback() {
8488      this.setupAction_();
8489    };
8490
8491    init(data = []) {
8492      this.productStyleInfo = data;
8493    }
8494
8495    handleRequestError_(data) {
8496      this.showToast(data?.message || data?.errors?.[0] || 'Unknown error');
8497    };
8498
8499    showToast(message) {
8500      SPZ.whenApiDefined(document.getElementById("cart_match_discount_toast")).then((apis) => {
8501        apis.showToast(message);
8502      });
8503    }
8504
8505    //外部组件调用传值
8506    setBundleData(products, config = "", id = "", type = "", info = {}) {
8507      this.bundleProducts = products;
8508      if(config) {
8509        this.bundleConfig = config;
8510        this.discountId = id;
8511        this.discountType = type;
8512        this.discountInfo = info;
8513        this.show_classic_bundle_spu_style = type === 'DT_CLASSIC_BUNDLE' && info.enable_min_purchase_qty && info.min_purchase_qty_type == 'spu';
8514
8515        // 经典捆绑初始化商品数据
8516        if(type == 'DT_CLASSIC_BUNDLE') {
8517          this.productStyleInfo = products.map((item) => {
8518            return this.getFilteredVariants_(item, 'single');
8519          });
8520        }
8521      }
8522    }
8523
8524    handleChangeSort() {
8525      const result = this.productStyleInfo.reduce((map, item) => {
8526        if (!map[item.product_id]) {
8527          map[item.product_id] = [];
8528        }
8529        map[item.product_id].push(item);
8530        return map;
8531      }, {});
8532      
8533      Object.values(result).forEach((item) => {
8534        this.handleSpzVariantRender_(item, item[0].product_id);
8535        this.handleProductOption_(item[0].product_id, true);
8536      });
8537    }
8538
8539    // 调用spz-tag组件的doRender方法
8540    handleSpzVariantRender_(data, id) {
8541      const spzVariantTag = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSpzVariantTags-${id}`);
8542      spzVariantTag && SPZ.whenApiDefined(spzVariantTag).then((api) => {
8543        api.render(data, true);
8544      });
8545    }
8546
8547    // 执行经典捆绑最低购买数量更新
8548    handleMinPurchaseQtyUpdate_(data, id) {
8549      const minPruchaseQty = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionMinPurchaseQty-${id}`);
8550      minPruchaseQty && SPZ.whenApiDefined(minPruchaseQty).then((api) => {
8551        api.render(data, true);
8552      });
8553    }
8554
8555    // 更新价格
8556    updateProductPrice_(data) {
8557      const bottomBtnContainer = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionBottomContainer`);
8558      if (data.length == 0) {
8559        bottomBtnContainer && SPZ.whenApiDefined(bottomBtnContainer).then((api) => {
8560          const renderInfo = {
8561            setting: this.bundleConfig,
8562            ...{
8563              original_price: 0, 
8564              received_discounts: 0,
8565              picked_qty: 0
8566            }
8567          }
8568          api.render({original_price: 0, received_discounts: 0}, true);
8569        });
8570        return;
8571      }
8572      const reqBody = {
8573        discount_id: this.discountId,
8574        customer: {
8575          customer_id: '',
8576          email: '',
8577        },
8578        sales_channel: {
8579          sale_channel_type: "online",
8580          sale_channel_id: '2189163'
8581        },
8582        line_items: data
8583      }
8584      // 如果已经有一个请求在等待,那么取消这个请求
8585      if (this.debounceTimer) {
8586        clearTimeout(this.debounceTimer);
8587      }
8588      this.debounceTimer = setTimeout(() => {
8589        this.xhr_.fetchJson(this.getDiscountPriceApi, {
8590        method: "post",
8591        body: reqBody
8592      }).then((res)=>{
8593        // 更新商品列表价格
8594        Object.keys(res.line_items).forEach((key) => {
8595          const currentProductPrice = SPZCore.Dom.scopedQuerySelector(document.body, `#appDiscountProductPrice-${key}`);
8596          currentProductPrice && SPZ.whenApiDefined(currentProductPrice).then((api) => {
8597            api.render(res.line_items[key], true);
8598          });
8599        });
8600        // 更新底部按钮总价/总折扣价
8601        const picked_qty = data.reduce((acc, item) => {
8602          return acc + item.quantity;
8603        }, 0);
8604        bottomBtnContainer && SPZ.whenApiDefined(bottomBtnContainer).then((api) => {
8605          const data = {
8606            setting: this.bundleConfig,
8607            ...{
8608              ...res.total_price,
8609              picked_qty
8610            }
8611          }
8612          api.render(data, true);
8613        });
8614      }).catch((err)=>{
8615        this.handleRequestError_(err);
8616      }).finally(()=>{
8617      })
8618      }, 100);
8619    }
8620
8621    // 还原商品价格
8622    resetProductPrice_(data) {
8623      const {price, compare_at_price, id} = data;
8624      const currentProductPrice = SPZCore.Dom.scopedQuerySelector(document.body, `#appDiscountProductPrice-${id}`);
8625      currentProductPrice && SPZ.whenApiDefined(currentProductPrice).then((api) => {
8626        api.render({total_received_discounts: price, total_price: compare_at_price}, true);
8627      });
8628    }
8629
8630    //处理与selector组件的交互
8631    handleProductOption_(productId, show) {
8632      const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${productId}`);
8633      if (!currentProductOption) {
8634        return;
8635      };
8636      currentProductOption.toggleAttribute('show', show);
8637      const isSelected = currentProductOption.hasAttribute('selected');
8638
8639      // !show 取消选中
8640      // !isSelected 选中商品
8641      if (!show || !isSelected) {
8642        const productSelector = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionProductSelector`);
8643        productSelector && SPZ.whenApiDefined(productSelector).then((api) => {
8644          api.toggle_({ option: productId, value: show });
8645        });
8646      }
8647    }
8648
8649    // 混搭弹窗内的前端库存校验
8650    handleModalInventoryCheck_(data) {
8651      if(this.discountType == 'DT_MIX_MATCH_BUNDLE' || this.discountType == 'DT_CLASSIC_BUNDLE') {
8652        const currentVariantAddNum = this.modalVariantInfo.find((item) => item.variant_id == data.variant_id)?.quantity || 0;
8653        const quickShopBody = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-shop-body');
8654        if(!!data.variant && currentVariantAddNum == Number(data.variant.available_quantity)) {
8655          quickShopBody && quickShopBody.setAttribute('status', 'soldout');
8656        } else {
8657          quickShopBody && quickShopBody.setAttribute('status', 'available');
8658        }
8659      } else {
8660        return;
8661      }
8662    }
8663
8664    // 添加商品子款式
8665    renderVariantTag() {
8666      let variantInfo;
8667      const quickShopBody = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-shop-body');
8668      quickShopBody && SPZ.whenApiDefined(quickShopBody).then((api) => {
8669        variantInfo = api.getVariantsData();
8670
8671        const productId = variantInfo.product_id;
8672        const variantId = variantInfo.variant_id;
8673        const minPruchaseQtyRender = variantInfo.product.discount_min_purchase_qty || variantInfo.variant.discount_info.discount_min_purchase_qty;
8674        if(this.discountType === 'DT_MIX_MATCH_BUNDLE') {
8675          const index = this.productStyleInfo.findIndex((item) => item.variant_id == variantInfo.variant_id);
8676          if (index != -1) {
8677            this.productStyleInfo[index].quantity = Number(this.productStyleInfo[index].quantity) + Number(variantInfo.quantity);
8678            this.updateProductPrice_(this.productStyleInfo);
8679          } else {
8680            this.productStyleInfo.push(this.getFilteredVariants_(variantInfo));
8681            // 若当前商品已选中,更新商品价格
8682            const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${productId}`);
8683            const isSelected = currentProductOption && currentProductOption.hasAttribute('selected');
8684            isSelected && this.updateProductPrice_(this.productStyleInfo);
8685          }
8686
8687          const selectedVariantsFilter = this.productStyleInfo.filter((item) => item.product_id == productId);
8688          this.handleSpzVariantRender_(selectedVariantsFilter, productId);
8689          this.handleProductOption_(productId, true);
8690        } else {
8691          if(this.discountInfo.enable_min_purchase_qty == true && this.discountInfo.min_purchase_qty_type == 'spu' && minPruchaseQtyRender > 1) {
8692            const index = this.modalVariantInfo.findIndex((item) => item.variant_id == variantId);
8693            if (index != -1) {
8694              this.modalVariantInfo[index].quantity = Number(this.modalVariantInfo[index].quantity) + 1;
8695            } else {
8696              this.modalVariantInfo.push(this.getFilteredVariants_(variantInfo, 'classic_spu'));
8697            }
8698
8699            const modalVariantTag = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, '#promotionModalVariantTagRender');
8700            modalVariantTag && SPZ.whenApiDefined(modalVariantTag).then((api) => {
8701              api.render(this.modalVariantInfo, true);
8702            });
8703
8704            this.handleModalInventoryCheck_(variantInfo);
8705
8706            const selectedVariantsNum = this.modalVariantInfo.reduce((acc, item) => {
8707              return acc + item.quantity;
8708            }, 0);
8709            if(selectedVariantsNum == minPruchaseQtyRender) {
8710              this.handleSpzVariantRender_([this.getFilteredVariants_(variantInfo)], productId);
8711              this.productStyleInfo = this.productStyleInfo.filter((item) => item.product_id != productId).concat(this.modalVariantInfo);
8712              const renderData = this.productStyleInfo.filter((item) => item.product_id == productId).map((item) => {
8713                return {
8714                  ...item,
8715                  is_classic_bundle_product_list_variant_tag: true
8716                }
8717              });
8718              const classicSpuTag = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionClassicSpuTags-${productId}`);
8719              classicSpuTag && SPZ.whenApiDefined(classicSpuTag).then((api) => {
8720                api.render(renderData, true);
8721              });
8722              this.updateProductPrice_(this.productStyleInfo);
8723              const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view');
8724              quickView && SPZ.whenApiDefined(quickView).then((api)=>{
8725                api.close();
8726              });
8727              this.modalVariantInfo = [];
8728            } else {
8729              return;
8730            }
8731          }
8732          // this.productStyleInfo 中已存在与productId, variantId都相同的商品 则直接return 关闭弹窗
8733          const isExist = this.productStyleInfo.some((item) => item.product_id == productId && item.variant_id == variantId);
8734          if (isExist) {
8735            const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view');
8736            quickView && SPZ.whenApiDefined(quickView).then((api)=>{
8737              api.close();
8738            });
8739            return;
8740          }
8741
8742          // 若 this.productStyleInfo 中已存在与productId相同的商品,则不再添加 否则替换
8743          const index = this.productStyleInfo.findIndex((item) => item.product_id == productId);
8744          if (index != -1) {
8745            this.productStyleInfo[index] = this.getFilteredVariants_(variantInfo);
8746          } else {
8747            this.productStyleInfo.push(this.getFilteredVariants_(variantInfo));
8748          }
8749          const selectedVariantsFilter = this.productStyleInfo.filter((item) => item.product_id == productId);
8750          this.handleSpzVariantRender_(selectedVariantsFilter, productId);
8751          this.handleMinPurchaseQtyUpdate_({discount_min_purchase_qty: minPruchaseQtyRender}, productId);
8752          this.updateProductPrice_(this.productStyleInfo);
8753        }
8754
8755        const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view');
8756        quickView && SPZ.whenApiDefined(quickView).then((api)=>{
8757          api.close();
8758        });
8759      });
8760    }
8761
8762    // 单变体点击添加按钮
8763    renderSingleVariant(data) {
8764      const { product_id } = data;
8765      const currentProduct = this.bundleProducts.find((product) => product.id == product_id);
8766      // 若当前商品已存在,则不再添加 而是更新数量
8767      const index = this.productStyleInfo.findIndex((item) => item.product_id == product_id);
8768      if (index != -1) {
8769        this.productStyleInfo[index].quantity = Number(this.productStyleInfo[index].quantity) + 1;
8770        this.updateProductPrice_(this.productStyleInfo);
8771      } else {
8772        this.productStyleInfo.push(this.getFilteredVariants_(currentProduct, 'single'));
8773      }
8774      const renderProductArr = this.productStyleInfo.filter((item) => item.product_id == product_id);
8775      this.handleSpzVariantRender_(renderProductArr, product_id);
8776      this.handleProductOption_(product_id, true);
8777    }
8778
8779    // 过滤选中商品的子款式 获取有用的信息 product_id,variant_id,price,compare_at_price,quantity,title,variant_title
8780    getFilteredVariants_(data, type = '') {
8781      const { id, title, variants, inventory_tracking, inventory_policy, inventory_quantity, product_type }
8781 = data;
8782      const { product_id, variant_id, variant, quantity, product, discount_min_purchase_qty } = data;
8783      const isSingle = type == 'single';
8784      const variantData = isSingle ? (variants[0] || data) : variant;
8785      const productData = isSingle ? data : product;
8786
8787
8788      let item_quantity = 0;
8789      if (this.discountType === 'DT_MIX_MATCH_BUNDLE') {
8790        item_quantity = isSingle ? 1 : Number(quantity);
8791      } else if (type === 'classic_spu') {
8792        item_quantity = 1;
8793      } else {
8794        item_quantity = discount_min_purchase_qty || productData.discount_min_purchase_qty || variantData.discount_info.discount_min_purchase_qty || 1;
8795      }
8796
8797      return {
8798        product_id: isSingle ? id : product_id,
8799        variant_id: variantData?.id || '',
8800        price: variantData?.price || '0.00',
8801        compare_at_price: variantData?.compare_at_price || '0.00',
8802        quantity: item_quantity,
8803        inventory_tracking: productData.inventory_tracking,
8804        inventory_policy: productData.inventory_policy,
8805        inventory_quantity: productData.inventory_quantity,
8806        product_type: productData.product_type || this.bundleProducts.find((item) => item.id == product_id)?.product_type || this.bundleProducts.find((item) => item.id == id)?.product_type || '',
8807        title: productData.title,
8808        variant_title: variantData?.options.map((option) => option.value).join('/') || '',
8809        is_multi_style: productData.variants.length > 1,
8810      }
8811    }
8812
8813    handleLoading_ (event) {
8814      const { type, action } = event;
8815      const loadingElementId = type === 'product' ? '#discount-match-drawer-products_loading' : '#apps-discount-whole-loading';
8816      const loadingElement = document.querySelector(loadingElementId);
8817
8818      if (loadingElement) {
8819        SPZ.whenApiDefined(loadingElement).then((api) => {
8820          if (action === 'show') {
8821            api.show_();
8822          } else {
8823            api.close_();
8824          }
8825        });
8826      }
8827    }
8828
8829    handleSelectProduct(productArr) {
8830      // 从this.productStyleInfo 过滤出选中的商品
8831      const selectedProducts = this.productStyleInfo.filter((item) => productArr.includes(item.product_id));
8832      this.updateProductPrice_(selectedProducts);
8833    }
8834
8835    // 渲染加购弹窗内容
8836    async renderQuickShopModal(data){
8837      this.handleLoading_({type: 'whole', action: 'show'});
8838      this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${data.product_id}&discount_id=${this.discountId}&apply_scenario=1`, {
8839        method: "get",
8840      }).then(async(res)=>{
8841        //flash主题放block有层级问题
8842        if(/Flash/.test(window.C_SETTINGS.theme.merchant_theme_name) && document.querySelector(".productInfoSection")) {
8843          this.tempCss.zIndex = document.querySelector(".product-info-body").style.zIndex;
8844          document.querySelector('.product-info-body').style.zIndex="1048";
8845        }
8846        this.handleLoading_({type: 'whole', action: 'close'});
8847        const $quickShop = await SPZ.whenApiDefined(document.querySelector('#apps-discount-quick-view-render'));
8848        // 定义默认渲染的子款式
8849        const selectedVariant = res.product.variants.find((v)=> (v.available && v.is_hit_discount)) || res.product.variants[0];
8850        let selectedValues = {};
8851        selectedVariant.options.length &&  selectedVariant.options.forEach(item => {
8852          selectedValues[item.name] = item.value;
8853        })
8854        // 默认选中的 子款式、 options
8855        res.product.defaultSelectValues = selectedValues;
8856        let data = {...res.product, product:res.product, selectedVariant, show_classic_bundle_spu_style: this.show_classic_bundle_spu_style, discountType: this.discountType};
8857        $quickShop.render(data);
8858        // 打开加购弹窗
8859        SPZ.whenApiDefined(document.querySelector(`#apps-discount-quick-view`)).then((api)=>{
8860          api.open();
8861        });
8862      }).catch((err)=>{
8863        this.handleLoading_({type: 'whole', action: 'close'});
8864      })
8865    }
8866
8867    // 获取选中的商品ids
8868    getDefaultSelectorOptions_() {
8869      try {
8870        const selectedOptions = SPZCore.Dom.scopedQuerySelectorAll(document.body, '[id^="promotionSelectOption-"][selected]');
8871        return SPZCore.Types.toArray(selectedOptions).map((item) => item.getAttribute('option'));
8872      } catch (error) {
8873        return [];
8874      }
8875    }
8876
8877    // 删除商品子款式
8878    deleteVariantTag(data) {
8879      const { product_id, variant_id } = data;
8880      if(this.discountInfo.enable_min_purchase_qty == true && this.discountInfo.min_purchase_qty_type == 'spu') {
8881        const modalProductVariants = this.modalVariantInfo.filter((item) => item.product_id == product_id && item.variant_id != variant_id);
8882        const modalVariantTag = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, '#promotionModalVariantTagRender');
8883        modalVariantTag && SPZ.whenApiDefined(modalVariantTag).then((api) => {
8884          api.render(modalProductVariants, true);
8885        });
8886        this.handleModalInventoryCheck_(data);
8887        this.modalVariantInfo = modalProductVariants;
8888        return;
8889      }
8890      const currentProductVariants = this.productStyleInfo.filter((item) => item.product_id == product_id && item.variant_id != variant_id);
8891      this.handleSpzVariantRender_(currentProductVariants, product_id);
8892      // 更新selectedVariants
8893      this.productStyleInfo = this.productStyleInfo.filter((item) => item.variant_id != variant_id);
8894      if(currentProductVariants.length > 0) {
8895        // currentProductVariants 中只要有一项是多款式商品,就更新价格
8896        const isMultiStyle = currentProductVariants.some((item) => item.is_multi_style);
8897        if (!isMultiStyle) return;
8898
8899        this.handleProductOption_(product_id, true);
8900        const selected = this.getDefaultSelectorOptions_();
8901        this.updateProductPrice_(this.productStyleInfo.filter((item) => selected.includes(item.product_id)));
8902      } else {
8903        this.handleProductOption_(product_id, false);
8904        this.resetProductPrice_(this.bundleProducts.find((item) => item.id == product_id));
8905      }
8906    }
8907
8908    // 加购弹窗未参与活动 加购按钮不可点击 TODO 拆出来
8909    handleNotHitDiscount_(data) {
8910      const $quickShopBody = document.querySelector('#apps-discount-quick-shop-body');
8911      //当前子框式未命中活动
8912      if(data.variant.is_hit_discount == false) {
8913        $quickShopBody.setAttribute('variantstatus', 'notHitDiscount')
8914      } else {
8915        $quickShopBody.setAttribute('variantstatus', '')
8916      }
8917    }
8918
8919    setupAction_() {
8920      // 子款式 未参与活动
8921			this.registerAction('handleNotHitDiscount', (invocation) => {
8922				const data = invocation.args.data;
8923        this.handleNotHitDiscount_(data);
8924			});
8925      // 渲染加购弹窗
8926			this.registerAction('renderQuickShop', (invocation) => {
8927				const data = invocation.args;
8928        this.renderQuickShop_(data);
8929			});
8930
8931      this.registerAction('renderSingleVariant', (invocation) => {
8932				const data = invocation.args;
8933        this.renderSingleVariant(data);
8934			});
8935
8936      this.registerAction('getVariantInfo', (invocation) => {
8937        this.renderVariantTag();
8938      });
8939
8940      this.registerAction('deleteVariantTag', (invocation) => {
8941        const data = invocation.args;
8942        this.deleteVariantTag(data);
8943      });
8944
8945      this.registerAction('getSelectedProduct', (invocation) => {
8946        const data = invocation.args.data;
8947        this.handleSelectProduct(data);
8948      });
8949
8950      //TODO 加购下单逻辑单独拆组件
8951      this.registerAction('handleClick', (data) => {
8952        if(this.discountType == 'DT_CLASSIC_BUNDLE') {
8953          this.lineItems = this.productStyleInfo;
8954        } else {
8955          const selectedOptions = SPZCore.Dom.scopedQuerySelectorAll(document.body, '[id^="promotionSelectOption-"]');
8956          const idArr = [...selectedOptions].reduce((acc, item) => {
8957            if (item.hasAttribute('selected')) {
8958              const optionValue = item.getAttribute('option');
8959              if (optionValue) {
8960                acc.push(optionValue);
8961              }
8962            }
8963            return acc;
8964          }, []);
8965          this.lineItems = this.productStyleInfo.filter((item) => idArr.includes(item.product_id));
8966        }
8967        const action = data.args.action === "cart";
8968        if(action) {
8969          //add to cart
8970          this.xhr_
8971            .fetchJson(this.batchAtcApi, {
8972              method: 'POST',
8973              body: {
8974                line_items: this.lineItems.map((item) => {
8975                  return {
8976                    product_id: item.product_id,
8977                    variant_id: item.variant_id,
8978                    quantity: Number(item.quantity)
8979                  }
8980                })
8981              }
8982            })
8983            .then((data) => {
8984              setTimeout(() => {
8985                  window.location.href = '/cart';
8986              });
8987            })
8988            .catch(async (error) => {
8989              await error.then((data) => {
8990                this.handleRequestError_(data);
8991              });
8992          });
8993        } else {
8994          //checkout
8995          this.xhr_
8996            .fetchJson(this.buyNowApi, {
8997              method: 'POST',
8998              body: {
8999                  line_items: (this.lineItems || []).map((product) => {
9000                    return {
9001                      quantity: Number(product.quantity),
9002                      variant_id: product.variant_id,
9003                      note: product.note || '',
9004                      properties: product.properties || {}
9005                    }
9006                  }),
9007                  refer_info: { source: 'buy_now' }
9008              }
9009            })
9010            .then(async (data) => {
9011              if (data.state === 'success') {
9012                window.location.href = data.data?.checkout_url;
9013              }
9014              this.handleRequestError_(data);
9015            })
9016            .catch(async (error) => {
9017              await error.then((data) => {
9018                this.handleRequestError_(data);
9019              });
9020          });
9021        }
9022			});
9023
9024      this.registerAction('resetModalVariantInfo', () => {
9025        //flash主题放block有层级问题
9026        if(/Flash/.test(window.C_SETTINGS.theme.merchant_theme_name) && document.querySelector(".productInfoSection")) {
9027          document.querySelector('.product-info-body').style.zIndex = this.tempCss.zIndex;
9028        }
9029        this.modalVariantInfo = [];
9030      });
9031
9032      this.registerAction('handleModalInventoryCheck', (invocation) => {
9033        const data = invocation.args.data;
9034        this.handleModalInventoryCheck_(data);
9035      });
9036    };
9037
9038  };
9039
9040  SPZ.defineElement('spz-custom-discount-bundle-products', SpzCustomDiscountBundleProducts);
9041</ljs-script>
9042<spz-custom-discount-atc-action id="appDiscountRenderQuickShopFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-atc-action>
9043<ljs-script layout="logic" type="application/javascript" id="DiscountFlashsaleScript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
9044  class SpzCustomDiscountAtcAction extends SPZ.BaseElement {
9045    constructor(element) {
9046      super(element);
9047      this.xhr_ = SPZServices.xhrFor(this.win);
9048      this.product_title = "";
9049    }
9050
9051    isLayoutSupported(layout) {
9052      return layout == SPZCore.Layout.LOGIC;
9053    }
9054    async getProductTitle_ (data){
9055      this.product_title = data.product_title;
9056    }
9057
9058    handleLoading_ (event) {
9059      const { type, action } = event;
9060      const loadingElementId = '#apps-discount-whole-loading';
9061      const loadingElement = document.querySelector(loadingElementId);
9062
9063      if (loadingElement) {
9064        SPZ.whenApiDefined(loadingElement).then((api) => {
9065          if (action === 'show') {
9066            api.show_();
9067          } else {
9068            api.close_();
9069          }
9070        });
9071      }
9072    }
9073
9074    // 渲染加购弹窗内容
9075    async renderQuickShop_ (data) {
9076      this.handleLoading_({type: 'whole', action: 'show'});
9077      const apply_scenario =  data.apply_scenario;
9078      const discount_id = data.discount_id;
9079      const product_id = data.product_id;
9080      const limit_purchase = data.limit_purchase;
9081      this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${product_id}&discount_id=${discount_id}&apply_scenario=${apply_scenario}`, {
9082        method: "get",
9083      }).then(async(res)=>{
9084        this.handleLoading_({type: 'whole', action: 'close'});
9085        const $quickShop = await SPZ.whenApiDefined(document.querySelector('#apps-discount-quick-view-render'));
9086        // 定义默认渲染的子款式
9087        const selectedVariant = res.product.variants.find((v)=> (v.available && v.is_hit_discount)) || res.product.variants[0];
9088        let selectedValues = {};
9089        selectedVariant.options.length &&  selectedVariant.options.forEach(item => {
9090          selectedValues[item.name] = item.value;
9091        })
9092        // 默认选中的 子款式、 options
9093        res.product.defaultSelectValues = selectedValues;
9094        let data = {...res.product, product:res.product, selectedVariant};
9095        data.need_atc = true;
9096        data.limit_purchase = limit_purchase;
9097        $quickShop.render(data);
9098        // 打开加购弹窗
9099        SPZ.whenApiDefined(document.querySelector(`#apps-discount-quick-view`)).then((api)=>{
9100          api.open();
9101        });
9102      }).catch((err)=>{
9103        this.handleLoading_({type: 'whole', action: 'close'});
9104      })
9105    }
9106
9107    // 加入购物车
9108    addToCart_(data) {
9109      const apply_scenario =  data.apply_scenario;
9110      const discount_id = data.discount_id;
9111      const product_id = data.product_id;
9112      this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${data.product_id}&discount_id=${discount_id}&apply_scenario=${apply_scenario}`, {
9113        method: "get",
9114      }).then(async(res)=>{
9115        // 单款式加购
9116        const variant_id = res.product.variants[0]?.id;
9117        const $productFormInput = document.querySelector(`#apps-discount-product-form-${data.product_id} input[name='variant_id'`);
9118        $productFormInput.value = variant_id;
9119        SPZ.whenApiDefined(document.querySelector(`#apps-discount-product-form-${data.product_id}`)).then((api)=>{
9120          api.handleAddToCart_();
9121        });
9122      }).catch((err)=> {
9123       this.handleLoading_({type: 'whole', action: 'close'});
9124      })
9125    }
9126
9127
9128    // 加购弹窗未参与活动 加购按钮不可点击
9129    handleNotHitDiscount_(data) {
9130      const $quickShopBody = document.querySelector('#apps-discount-quick-shop-body');
9131      const $limitTip = document.querySelector('.apps_discount_limit_purchase_tip');
9132      //当前子框式未命中活动
9133      if(data.variant.is_hit_discount == false) {
9134        $quickShopBody.setAttribute('variantstatus', 'notHitDiscount');
9135        $limitTip && $limitTip.setAttribute('selectedvariantstatus', 'notHitDiscount');
9136      } else {
9137        $quickShopBody.setAttribute('variantstatus', '');
9138        $limitTip && $limitTip.setAttribute('selectedvariantstatus', '')
9139
9140      }
9141    }
9142
9143
9144    setupAction_() {
9145      this.registerAction('renderQuickShop', (invocation) => {
9146				const data = invocation.args;
9147        this.renderQuickShop_(data);
9148			});
9149      // 加购
9150			this.registerAction('addToCart', (invocation) => {
9151				const data = invocation.args;
9152        this.addToCart_(data);
9153			});
9154      // 子款式 未参与活动
9155			this.registerAction('handleNotHitDiscount', (invocation) => {
9156				const data = invocation.args.data;
9157        this.handleNotHitDiscount_(data);
9158			});
9159      this.registerAction('getCartCount', (invocation) => {
9160        //一些老主题还未用spz重构,需要手动触发一次老方法以更新购物车图标的数量
9161        window.$ && $(document).trigger('dj.common.cart.change');
9162			});
9163			this.registerAction('getProductTitle', (invocation) => {
9164				const data = invocation.args;
9165        this.getProductTitle_(data);
9166			});
9167      this.registerAction('handleButton', (invocation) => {
9168				const data = invocation.args;
9169        window.location.href = this.product_title;
9170        
9171			});
9172    };
9173
9174    buildCallback() {
9175      this.setupAction_();
9176    };
9177
9178    // 同一页里 flashsale_collection(首页限时促销卡片) 与凑单弹窗容器都渲染了本快速加购栈,
9179    // 会产生重复 fixed id——尤其加购弹窗 #apps-discount-quick-view。它“打开”走 querySelector,
9180    // “关闭”走声明式动作 apps-discount-quick-view.close(按 id 解析),重复时二者可能命中不同副本,
9181    // 导致加购成功后弹窗第一次关不掉、第二次才关。参考 toast 的处理,运行时保证这些单例只保留一份。
9182    mountCallback() {
9183      const funcs = document.querySelectorAll('#appDiscountRenderQuickShopFunc');
9184      // 逻辑元件重复:仅保留第一个,其余移除自身,保证按 id 解析到的动作实例唯一。
9185      if (funcs.length > 1 && this.element !== funcs[0]) {
9186        this.element.remove();
9187        return;
9188      }
9189      // 加购弹窗重复:保留第一个,移除多余(移除弹窗即连带移除其内部 render/表单等子节点)。
9190      const modals = document.querySelectorAll('#apps-discount-quick-view');
9191      Array.from(modals).slice(1).forEach((el) => el.remove());
9192    }
9193  }
9194
9195  SPZ.defineElement('spz-custom-discount-atc-action', SpzCustomDiscountAtcAction);
9196</ljs-script>
9197<ljs-loading layout='container' id='apps-discount-whole-loading' hidden class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-loading>
9198
9199<spz-custom-discount-default id='cart_discount_default_actions' template='spz_custom_discount_default_template' layout='container' @settab='match_drawer_product_list_tabs.tabChange(dataId=event.value)' class="i-spzhtml-layout-container" i-spzhtml-layout="container">
9200</spz-custom-discount-default>
9201<ljs-render manual layout="container" id="discount-match-drawer-container" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
9202    <template>
9203    ${function(){
9204      const discount_info = originData.discount_info;
9205      const landing_page_info = originData.landing_page_info;
9206      const buy_product_info = originData.buy_product_info;
9207
9208      const dom = originData.discount_info.discount_type === 'DT_BUY_X_GET_Y' ?
9209      `
9210        <div>
9211          <div class='discount-default relative' data-drawer-id="${discount_info.id}">
9212            <style>
9213  #discount-match-drawer  .discount-default__tabs .tabs_wrap {
9214    display: flex;
9215    flex-direction: row;
9216    margin: 12px 0 0 0;
9217    padding: 0;
9218    list-style: none;
9219    position: sticky;
9220    top: 0;
9221    z-index: 100;
9222  }
9223  #discount-match-drawer  .discount-default__tabs .tabs_wrap .tab-item {
9224    font-size: 20px;
9225    font-weight: 600;
9226    width: 50%;
9227    text-align: center;
9228    min-height: 46px;
9229    padding: 10px;
9230    gap: 10px;
9231    background: rgb(238, 238, 238);
9232    word-break: break-word;
9233    display: flex;
9234    justify-content: center;
9235    align-items: center;
9236  }
9237  #discount-match-drawer  .discount-default__tabs .tabs_wrap .tab-item[active] {
9238    background: rgb(32, 32, 32);
9239    cursor: pointer;
9240    color: #fff;
9241  }
9242  #discount-match-drawer  .text_red {
9243		color: rgb(244, 62, 74);
9244	}
9245  @media (max-width: 767.98px) {
9246    #discount-match-drawer  .discount-default__tabs .tabs_wrap .tab-item {
9247      font-size: 14px;
9248    }
9249  }
9250</style>
9251<ljs-tabs layout='container' class='discount-default__tabs' id='match_drawer_product_list_tabs' @tabChange='cart_discount_default_actions.handleBuyXGetYTabChange(data=event)'>
9252  <ul role='tabs' class='tabs_wrap'>
9253    <li role='tab' data-panel='1' class='tab-item'><span>${landing_page_info.product.buy_product.text}</span></li>
9254    <li role='tab' data-panel='2' class='text_red tab-item'><span>${landing_page_info.product.obtain_product.text}</span></li>
9255  </ul>
9256  <div class='tw-container'>
9257    <div role='tabpanel' data-id='1' id='cart_product_list_buy_products'>
9258      <div class='app_discount_product_list'>
9259        <style>
9260  #discount-match-drawer  .discount_default_sort_wrap {
9261    display: flex;
9262    justify-content: space-between;
9263    margin-bottom: 20px;
9264  }
9265  #discount-match-drawer  .discount_default_sort_wrap .discount_default_count {
9266    font-size: 16px;
9267    font-style: normal;
9268    font-weight: 600;
9269    align-items: center;
9270    display: flex;
9271  }
9272  #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count {
9273    font-weight: 400;
9274  }
9275  #discount-match-drawer  .discount_default_sort {
9276    display: flex;
9277    align-items: center;
9278    font-size: 16px;
9279    min-height: 50px;
9280    min-width: 160px;
9281    gap: 2.25rem;
9282  }
9283  body.eva #discount-match-drawer .discount_default_sort {
9284    gap: 0.5rem;
9285  }
9286  #discount-match-drawer  .discount_default_sort_text {
9287    font-weight: 600;
9288  }
9289  #discount-match-drawer.in-cart-drawer .discount_default_sort_text {
9290    font-weight: 400;
9291  }
9292  @media (max-width: 767.98px) {
9293    #discount-match-drawer  .discount_default_sort_wrap {
9294      flex-direction: row-reverse !important;
9295    }
9296    #discount-match-drawer  .discount_default_sort_text {
9297      display: none;
9298    }
9299    #discount-match-drawer  .discount_default_sort {
9300      min-height: 40px;
9301    }
9302  }
9303</style>
9304
9305<div class='discount_default_sort_wrap'>
9306  <div class="discount_default_count">${originData.buy_product_info.count} Products</div>
9307  <div class='discount_default_sort'>
9308    <span class='discount_default_sort_text'>Sort by</span>
9309    <div>
9310      <spz-custom-sort
9311        @selectChange='cart_discount_default_actions.handleSort(data=event)'
9312        template='spz_custom_sort_template'
9313        layout='container'
9314        id='spz_custom_sort_products_x'
9315      ></spz-custom-sort>
9316    </div>
9317  </div>
9318</div>
9319<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);">
9320	<div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap">
9321	${(function() {
9322		const productsInfo = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product;
9323		//点击加购按钮需要的参数
9324		const discount_id = data.discount_info.id;
9325    const apply_scenario = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? 1 : 2 ;
9326
9327		return productsInfo.map((product, index) => {
9328			let price = product.price || 0;
9329			let priceMin = product.price_min || 0;
9330			let priceMax = product.price_max || 0;
9331			let compareAtPriceMax = product.compare_at_price_max || 0;
9332			let compareAtPrice = product.compare_at_price || 0;
9333			let title = product.title || '';
9334			let id = product.id || '';
9335			let url = product.url || '';
9336			let type = product.type || '';
9337
9338			let is_sold_out = false;
9339			if (product.available == false && product.inventory_policy != 'continue') {
9340				is_sold_out = true;
9341			}
9342			const soldOutLang1 = "Sold out";
9343			const soldOutLang2 = "Sold out";
9344			const discountType = originData.discount_info.discount_type;
9345			const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE";
9346			const defaultVariantTitle = product.variants[0]?.title.replace('-', '/');
9347			const variantDiscountInfo = product.variants[0]?.discount_info || {};
9348			let discount_min_purchase_qty = 0;
9349			if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) {
9350				discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty;
9351			}
9352
9353			let imageWidth;
9354			if (product.image.width) {
9355				imageWidth = product.image.width;
9356			} else {
9357				imageWidth = "300px";
9358			}
9359			let imageHeight;
9360			if (product.image.height) {
9361				imageHeight= product.image.height;
9362			} else {
9363				imageHeight = "300px";
9364			}
9365			if (product.published) {
9366				return `
9367				<div class="common_app__product as-render-product-item">
9368					<div class="product-snippet">
9369						<div style="position: relative;">
9370							<div style="position: relative;">
9371								<a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link">
9372								</a>
9373								<div class="product-snippet__img_box">
9374									<ljs-img
9375										class="product-image"
9376										layout='responsive'
9377										width='${imageWidth}'
9378										height='${imageHeight}'
9379										src="${product.image.src}"
9380										alt="${product.image.alt}"
9381										object-fit='cover'
9382										auto-fit
9383									></ljs-img>	
9384									<div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'>
9385										${function(){
9386											if (soldOutLang1){
9387												return `
9388												<span>${soldOutLang1}</span>
9389												`
9390											}else{
9391												return `
9392												<span>${soldOutLang2}</span>
9393												`
9394										}
9395									}()}
9396									</div>
9397								</div>
9398								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
9399									<ljs-render  layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate">
9400										<div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div>
9401									</ljs-render>
9402								</div>
9403							</div>
9404
9405							<a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a>
9406							<div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 
9407								<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
9408									<div class="product-snippet__price-wrapper max-w-full text-center" >
9409  <span class="max-w-full dj_skin_product_price">
9410      <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency>
9411    </span>
9412    <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price">
9413      <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency>
9414    </del>
9415  </div>
9416								</ljs-render>
9417								<div spz-if="${noNeedBtn}" class="shop-btn-wrap">
9418										<ljs-product-form
9419											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }"
9420											product-id="${product.id}"
9421											layout="container"
9422											id="apps-discount-product-form-${product.id}"
9423											@atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();"
9424											@atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);"
9425										>
9426											<form>
9427												<input name="variant_id" type="hidden" value="">
9428												<button
9429													type="button"
9430													class="product-snippet__quick-shop-button"
9431													data-track-product-id="${product.id}"
9432													data-track="click"
9433													data-track-content="add_to_cart"
9434													data-track-source="quick_shop"
9435													@tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});"
9436												>
9437													  
9438    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9439  </button>
9440											</form>
9441										</ljs-product-form>
9442										<button 
9443											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }"
9444											class="product-snippet__quick-shop-button"
9445											role="addToCart" 
9446											data-track="click"
9447											data-track-content="add_to_cart"
9448											data-track-source="quick_shop"
9449											type="button"
9450											@tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');"
9451										>
9452												  
9453    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9454  </button>		
9455									</div>	
9456							</div>
9457
9458							
9459								<div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}">
9460									<button
9461										spz-if="${is_sold_out != true}"
9462										class="app_discount_bundle_add"
9463										type="button"
9464										@tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}">
9465										Add
9466									</button>
9467									<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
9468									<div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}">
9469										
9470    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
9471      <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/>
9472    </svg>
9473  </div>
9474								</div>
9475								
9476								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
9477									<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
9478										<div class="product-snippet__price-wrapper max-w-full">
9479											<span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span>
9480											<del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del>
9481										</div>
9482									</ljs-render>
9483									<div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}">
9484										<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});">
9485											<div class="promotion_classic_variant_container flex justify-between items-center">
9486												<span>${defaultVariantTitle}</span>
9487												
9488    <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg>
9489  </div>
9490										</ljs-render>
9491										<ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
9492									</div>
9493
9494								</div>
9495						</div>
9496					</div>
9497				</div>
9498				<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}">
9499					<span class="promotion_dotted_line"></span>
9500					<div class="promotion_plus_bundle">
9501						
9502    <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
9503      <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/>
9504    </svg>
9505  </div>
9506					<span class="promotion_dotted_line"></span>
9507				</div>
9508			`
9509			} else {
9510				return ``;
9511			}
9512		}).join('');
9513	})()}
9514	</div>
9515</ljs-selector>
9516</div>
9517    </div>
9518    <div role='tabpanel' data-id='2' id='cart_product_list_obtain_products'>
9519      <div class='app_discount_product_list'>
9520        <style>
9521  #discount-match-drawer  .discount_default_sort_wrap {
9522    display: flex;
9523    justify-content: space-between;
9524    margin-bottom: 20px;
9525  }
9526  #discount-match-drawer  .discount_default_sort_wrap .discount_default_count {
9527    font-size: 16px;
9528    font-style: normal;
9529    font-weight: 600;
9530    align-items: center;
9531    display: flex;
9532  }
9533  #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count {
9534    font-weight: 400;
9535  }
9536  #discount-match-drawer  .discount_default_sort {
9537    display: flex;
9538    align-items: center;
9539    font-size: 16px;
9540    min-height: 50px;
9541    min-width: 160px;
9542    gap: 2.25rem;
9543  }
9544  body.eva #discount-match-drawer .discount_default_sort {
9545    gap: 0.5rem;
9546  }
9547  #discount-match-drawer  .discount_default_sort_text {
9548    font-weight: 600;
9549  }
9550  #discount-match-drawer.in-cart-drawer .discount_default_sort_text {
9551    font-weight: 400;
9552  }
9553  @media (max-width: 767.98px) {
9554    #discount-match-drawer  .discount_default_sort_wrap {
9555      flex-direction: row-reverse !important;
9556    }
9557    #discount-match-drawer  .discount_default_sort_text {
9558      display: none;
9559    }
9560    #discount-match-drawer  .discount_default_sort {
9561      min-height: 40px;
9562    }
9563  }
9564</style>
9565
9566<div class='discount_default_sort_wrap'>
9567  <div class="discount_default_count">${originData.obtain_product_info.count} Products</div>
9568  <div class='discount_default_sort'>
9569    <span class='discount_default_sort_text'>Sort by</span>
9570    <div>
9571      <spz-custom-sort
9572        @selectChange='cart_discount_default_actions.handleSort(data=event)'
9573        template='spz_custom_sort_template'
9574        layout='container'
9575        id='spz_custom_sort_products_y'
9576      ></spz-custom-sort>
9577    </div>
9578  </div>
9579</div>
9580<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);">
9581	<div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap">
9582	${(function() {
9583		const productsInfo = "spz_custom_sort_products_y" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product;
9584		//点击加购按钮需要的参数
9585		const discount_id = data.discount_info.id;
9586    const apply_scenario = "spz_custom_sort_products_y" === "spz_custom_sort_products_x" ? 1 : 2 ;
9587
9588		return productsInfo.map((product, index) => {
9589			let price = product.price || 0;
9590			let priceMin = product.price_min || 0;
9591			let priceMax = product.price_max || 0;
9592			let compareAtPriceMax = product.compare_at_price_max || 0;
9593			let compareAtPrice = product.compare_at_price || 0;
9594			let title = product.title || '';
9595			let id = product.id || '';
9596			let url = product.url || '';
9597			let type = product.type || '';
9598
9599			let is_sold_out = false;
9600			if (product.available == false && product.inventory_policy != 'continue') {
9601				is_sold_out = true;
9602			}
9603			const soldOutLang1 = "Sold out";
9604			const soldOutLang2 = "Sold out";
9605			const discountType = originData.discount_info.discount_type;
9606			const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE";
9607			const defaultVariantTitle = product.variants[0]?.title.replace('-', '/');
9608			const variantDiscountInfo = product.variants[0]?.discount_info || {};
9609			let discount_min_purchase_qty = 0;
9610			if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) {
9611				discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty;
9612			}
9613
9614			let imageWidth;
9615			if (product.image.width) {
9616				imageWidth = product.image.width;
9617			} else {
9618				imageWidth = "300px";
9619			}
9620			let imageHeight;
9621			if (product.image.height) {
9622				imageHeight= product.image.height;
9623			} else {
9624				imageHeight = "300px";
9625			}
9626			if (product.published) {
9627				return `
9628				<div class="common_app__product as-render-product-item">
9629					<div class="product-snippet">
9630						<div style="position: relative;">
9631							<div style="position: relative;">
9632								<a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link">
9633								</a>
9634								<div class="product-snippet__img_box">
9635									<ljs-img
9636										class="product-image"
9637										layout='responsive'
9638										width='${imageWidth}'
9639										height='${imageHeight}'
9640										src="${product.image.src}"
9641										alt="${product.image.alt}"
9642										object-fit='cover'
9643										auto-fit
9644									></ljs-img>	
9645									<div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'>
9646										${function(){
9647											if (soldOutLang1){
9648												return `
9649												<span>${soldOutLang1}</span>
9650												`
9651											}else{
9652												return `
9653												<span>${soldOutLang2}</span>
9654												`
9655										}
9656									}()}
9657									</div>
9658								</div>
9659								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
9660									<ljs-render  layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate">
9661										<div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div>
9662									</ljs-render>
9663								</div>
9664							</div>
9665
9666							<a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a>
9667							<div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 
9668								<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
9669									<div class="product-snippet__price-wrapper max-w-full text-center" >
9670  <span class="max-w-full dj_skin_product_price">
9671      <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency>
9672    </span>
9673    <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price">
9674      <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency>
9675    </del>
9676  </div>
9677								</ljs-render>
9678								<div spz-if="${noNeedBtn}" class="shop-btn-wrap">
9679										<ljs-product-form
9680											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }"
9681											product-id="${product.id}"
9682											layout="container"
9683											id="apps-discount-product-form-${product.id}"
9684											@atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();"
9685											@atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);"
9686										>
9687											<form>
9688												<input name="variant_id" type="hidden" value="">
9689												<button
9690													type="button"
9691													class="product-snippet__quick-shop-button"
9692													data-track-product-id="${product.id}"
9693													data-track="click"
9694													data-track-content="add_to_cart"
9695													data-track-source="quick_shop"
9696													@tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});"
9697												>
9698													  
9699    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9700  </button>
9701											</form>
9702										</ljs-product-form>
9703										<button 
9704											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }"
9705											class="product-snippet__quick-shop-button"
9706											role="addToCart" 
9707											data-track="click"
9708											data-track-content="add_to_cart"
9709											data-track-source="quick_shop"
9710											type="button"
9711											@tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');"
9712										>
9713												  
9714    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9715  </button>		
9716									</div>	
9717							</div>
9718
9719							
9720								<div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}">
9721									<button
9722										spz-if="${is_sold_out != true}"
9723										class="app_discount_bundle_add"
9724										type="button"
9725										@tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}">
9726										Add
9727									</button>
9728									<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
9729									<div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}">
9730										
9731    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
9732      <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/>
9733    </svg>
9734  </div>
9735								</div>
9736								
9737								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
9738									<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
9739										<div class="product-snippet__price-wrapper max-w-full">
9740											<span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span>
9741											<del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del>
9742										</div>
9743									</ljs-render>
9744									<div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}">
9745										<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});">
9746											<div class="promotion_classic_variant_container flex justify-between items-center">
9747												<span>${defaultVariantTitle}</span>
9748												
9749    <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg>
9750  </div>
9751										</ljs-render>
9752										<ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
9753									</div>
9754
9755								</div>
9756						</div>
9757					</div>
9758				</div>
9759				<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}">
9760					<span class="promotion_dotted_line"></span>
9761					<div class="promotion_plus_bundle">
9762						
9763    <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
9764      <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/>
9765    </svg>
9766  </div>
9767					<span class="promotion_dotted_line"></span>
9768				</div>
9769			`
9770			} else {
9771				return ``;
9772			}
9773		}).join('');
9774	})()}
9775	</div>
9776</ljs-selector>
9777</div>
9778    </div>
9779  </div>
9780</ljs-tabs>
9781<ljs-loading layout='nodisplay' id='discount-match-drawer-products_loading' class='loading'></ljs-loading>
9782          </div>
9783        </div>
9784      ` :
9785      `
9786        <div>
9787          <div class='discount-default relative' data-drawer-id="${discount_info.id}">
9788              <div class='tw-container'>
9789                <div class='app_discount_product_list'>
9790                  <style>
9791  #discount-match-drawer  .discount_default_sort_wrap {
9792    display: flex;
9793    justify-content: space-between;
9794    margin-bottom: 20px;
9795  }
9796  #discount-match-drawer  .discount_default_sort_wrap .discount_default_count {
9797    font-size: 16px;
9798    font-style: normal;
9799    font-weight: 600;
9800    align-items: center;
9801    display: flex;
9802  }
9803  #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count {
9804    font-weight: 400;
9805  }
9806  #discount-match-drawer  .discount_default_sort {
9807    display: flex;
9808    align-items: center;
9809    font-size: 16px;
9810    min-height: 50px;
9811    min-width: 160px;
9812    gap: 2.25rem;
9813  }
9814  body.eva #discount-match-drawer .discount_default_sort {
9815    gap: 0.5rem;
9816  }
9817  #discount-match-drawer  .discount_default_sort_text {
9818    font-weight: 600;
9819  }
9820  #discount-match-drawer.in-cart-drawer .discount_default_sort_text {
9821    font-weight: 400;
9822  }
9823  @media (max-width: 767.98px) {
9824    #discount-match-drawer  .discount_default_sort_wrap {
9825      flex-direction: row-reverse !important;
9826    }
9827    #discount-match-drawer  .discount_default_sort_text {
9828      display: none;
9829    }
9830    #discount-match-drawer  .discount_default_sort {
9831      min-height: 40px;
9832    }
9833  }
9834</style>
9835
9836<div class='discount_default_sort_wrap'>
9837  <div class="discount_default_count">${originData.buy_product_info.count} Products</div>
9838  <div class='discount_default_sort'>
9839    <span class='discount_default_sort_text'>Sort by</span>
9840    <div>
9841      <spz-custom-sort
9842        @selectChange='cart_discount_default_actions.handleSort(data=event)'
9843        template='spz_custom_sort_template'
9844        layout='container'
9845        id='spz_custom_sort_products_x'
9846      ></spz-custom-sort>
9847    </div>
9848  </div>
9849</div>
9850<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);">
9851	<div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap">
9852	${(function() {
9853		const productsInfo = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product;
9854		//点击加购按钮需要的参数
9855		const discount_id = data.discount_info.id;
9856    const apply_scenario = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? 1 : 2 ;
9857
9858		return productsInfo.map((product, index) => {
9859			let price = product.price || 0;
9860			let priceMin = product.price_min || 0;
9861			let priceMax = product.price_max || 0;
9862			let compareAtPriceMax = product.compare_at_price_max || 0;
9863			let compareAtPrice = product.compare_at_price || 0;
9864			let title = product.title || '';
9865			let id = product.id || '';
9866			let url = product.url || '';
9867			let type = product.type || '';
9868
9869			let is_sold_out = false;
9870			if (product.available == false && product.inventory_policy != 'continue') {
9871				is_sold_out = true;
9872			}
9873			const soldOutLang1 = "Sold out";
9874			const soldOutLang2 = "Sold out";
9875			const discountType = originData.discount_info.discount_type;
9876			const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE";
9877			const defaultVariantTitle = product.variants[0]?.title.replace('-', '/');
9878			const variantDiscountInfo = product.variants[0]?.discount_info || {};
9879			let discount_min_purchase_qty = 0;
9880			if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) {
9881				discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty;
9882			}
9883
9884			let imageWidth;
9885			if (product.image.width) {
9886				imageWidth = product.image.width;
9887			} else {
9888				imageWidth = "300px";
9889			}
9890			let imageHeight;
9891			if (product.image.height) {
9892				imageHeight= product.image.height;
9893			} else {
9894				imageHeight = "300px";
9895			}
9896			if (product.published) {
9897				return `
9898				<div class="common_app__product as-render-product-item">
9899					<div class="product-snippet">
9900						<div style="position: relative;">
9901							<div style="position: relative;">
9902								<a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link">
9903								</a>
9904								<div class="product-snippet__img_box">
9905									<ljs-img
9906										class="product-image"
9907										layout='responsive'
9908										width='${imageWidth}'
9909										height='${imageHeight}'
9910										src="${product.image.src}"
9911										alt="${product.image.alt}"
9912										object-fit='cover'
9913										auto-fit
9914									></ljs-img>	
9915									<div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'>
9916										${function(){
9917											if (soldOutLang1){
9918												return `
9919												<span>${soldOutLang1}</span>
9920												`
9921											}else{
9922												return `
9923												<span>${soldOutLang2}</span>
9924												`
9925										}
9926									}()}
9927									</div>
9928								</div>
9929								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
9930									<ljs-render  layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate">
9931										<div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div>
9932									</ljs-render>
9933								</div>
9934							</div>
9935
9936							<a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a>
9937							<div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 
9938								<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
9939									<div class="product-snippet__price-wrapper max-w-full text-center" >
9940  <span class="max-w-full dj_skin_product_price">
9941      <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency>
9942    </span>
9943    <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price">
9944      <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency>
9945    </del>
9946  </div>
9947								</ljs-render>
9948								<div spz-if="${noNeedBtn}" class="shop-btn-wrap">
9949										<ljs-product-form
9950											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }"
9951											product-id="${product.id}"
9952											layout="container"
9953											id="apps-discount-product-form-${product.id}"
9954											@atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();"
9955											@atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);"
9956										>
9957											<form>
9958												<input name="variant_id" type="hidden" value="">
9959												<button
9960													type="button"
9961													class="product-snippet__quick-shop-button"
9962													data-track-product-id="${product.id}"
9963													data-track="click"
9964													data-track-content="add_to_cart"
9965													data-track-source="quick_shop"
9966													@tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});"
9967												>
9968													  
9969    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9970  </button>
9971											</form>
9972										</ljs-product-form>
9973										<button 
9974											spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }"
9975											class="product-snippet__quick-shop-button"
9976											role="addToCart" 
9977											data-track="click"
9978											data-track-content="add_to_cart"
9979											data-track-source="quick_shop"
9980											type="button"
9981											@tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');"
9982										>
9983												  
9984    <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg>
9985  </button>		
9986									</div>	
9987							</div>
9988
9989							
9990								<div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}">
9991									<button
9992										spz-if="${is_sold_out != true}"
9993										class="app_discount_bundle_add"
9994										type="button"
9995										@tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}">
9996										Add
9997									</button>
9998									<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
9999									<div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}">
10000										
10001    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
10002      <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/>
10003    </svg>
10004  </div>
10005								</div>
10006								
10007								<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}">
10008									<ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual>
10009										<div class="product-snippet__price-wrapper max-w-full">
10010											<span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span>
10011											<del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del>
10012										</div>
10013									</ljs-render>
10014									<div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}">
10015										<ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});">
10016											<div class="promotion_classic_variant_container flex justify-between items-center">
10017												<span>${defaultVariantTitle}</span>
10018												
10019    <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg>
10020  </div>
10021										</ljs-render>
10022										<ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render>
10023									</div>
10024
10025								</div>
10026						</div>
10027					</div>
10028				</div>
10029				<div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}">
10030					<span class="promotion_dotted_line"></span>
10031					<div class="promotion_plus_bundle">
10032						
10033    <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
10034      <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/>
10035    </svg>
10036  </div>
10037					<span class="promotion_dotted_line"></span>
10038				</div>
10039			`
10040			} else {
10041				return ``;
10042			}
10043		}).join('');
10044	})()}
10045	</div>
10046</ljs-selector>
10047</div>
10048              </div>
10049            <ljs-loading layout='nodisplay' id='discount-match-drawer-products_loading' class='loading'></ljs-loading>
10050          </div>
10051        </div>
10052      `;
10053      return dom;
10054      }()}
10055    </template>
10056</ljs-render>
10057
10058</div>
10059        </div>
10060        <div id="appDiscountBundleBottom">
10061          <style>
10062  .app-bundle-discount_info {
10063    line-height: normal;
10064    text-align: center;
10065  }
10066  .app-bundle-discount_info ljs-currency {
10067    display: inline-block;
10068  }
10069  .app-bundle-discount_bottom_button {
10070    display: flex;
10071    justify-content: center;
10072    align-items: center;
10073    line-height: normal;
10074    margin-top: 12px;
10075    padding: 10px 16px;
10076    border-radius: 2px;
10077    cursor: pointer;
10078    height: 52px;
10079  }
10080  .app_discount_button_original_price {
10081    text-decoration: line-through;
10082    font-size: 16px;
10083  }
10084  .app_discount_button_discounted_price {
10085    font-size: 20px;
10086    font-weight: 600;
10087  }
10088</style>
10089<ljs-render layout="container" id="promotionBottomContainer" template="appDiscountBundleButton" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-render>
10090        </div>
10091    </div>
10092</div>
10093<div id="app-discount-cart-banner-block" data-version="2025-03">
10094  <ljs-render manual layout="container" id="app-discount-cart-banner" template-src="script:app-discount-cart-banner-tpl" class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-render>
10095  
10095<script id="app-discount-cart-banner-tpl" type="text/template">
10096    ${function(){
10097      const groups = originData.groups || [];
10098      return `
10099        <div class="discount-cart-banner-list">
10100          ${groups.map(group => {
10101            const discounts = group.discounts || [];
10102            const firstDiscount = discounts[0] || {};
10103            const isBuyXGetY = firstDiscount.discount_type == 'DT_BUY_X_GET_Y';
10104            const isSatisfyBuysThreshold = firstDiscount.is_satisfy_buys_threshold;
10105            const activeTab = isBuyXGetY && isSatisfyBuysThreshold ? '2' : '1';
10106
10107            return `
10108              <div key="${group.category}" @tap="cart_discount_default_actions.showDiscountDrawer(discountId='${firstDiscount.discount_id}',activeTab='${activeTab}');discount-cart-banner-func.renderDiscountSelectors(data='${group.category}');">
10109                <div class="discount-cart-banner-list-inner">
10110    <div class="discount-banner-inner-left">
10111        <div class="discount-banner-icon">
10112            <ljs-img src="${firstDiscount.discount_icon}" alt="discount icon" object-fit="cover" layout="responsive" width="16" height="16" auto-fit></ljs-img>
10113        </div>
10114        <div class="discount-banner-text">${firstDiscount.discount_text}</div>
10115    </div>
10116    <div class="discount-banner-inner-right flex">
10117        <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
10118  <path d="M5.00126 2.50003C5.1326 2.49989 5.26267 2.52571 5.384 2.57599C5.50533 2.62627 5.61552 2.70003 5.70826 2.79303L10.7083 7.79303C10.8012 7.88582 10.8749 7.99602 10.9253 8.11734C10.9756 8.23865 11.0015 8.3687 11.0015 8.50003C11.0015 8.63136 10.9756 8.76141 10.9253 8.88272C10.8749 9.00404 10.8012 9.11424 10.7083 9.20703L5.70826 14.207C5.61542 14.2999 5.5052 14.3735 5.38389 14.4238C5.26258 14.474 5.13257 14.4999 5.00126 14.4999C4.86996 14.4999 4.73995 14.474 4.61864 14.4238C4.49733 14.3735 4.38711 14.2999 4.29426 14.207C4.20142 14.1142 4.12777 14.004 4.07752 13.8827C4.02728 13.7613 4.00141 13.6313 4.00141 13.5C4.00141 13.3687 4.02728 13.2387 4.07752 13.1174C4.12777 12.9961 4.20142 12.8859 4.29426 12.793L8.58726 8.50003L4.29426 4.20703C4.15396 4.06737 4.05832 3.88917 4.01948 3.69505C3.98063 3.50093 4.00034 3.29965 4.07609 3.11675C4.15184 2.93386 4.28023 2.77759 4.44495 2.66778C4.60967 2.55798 4.8033 2.49959 5.00126 2.50003Z" fill="#6D7175"/>
10119</svg>
10120    </div>
10121</div>
10122</div>
10123            `
10124          }).join('')}
10125        </div>
10126      `;
10127    }()}
10128  </script>
10128
10129</div>
10130
10131<spz-custom-discount-cart-banner-info id="discount-cart-banner-func" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-cart-banner-info>
10132
10133<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic">
10134  const TAG = 'spz-custom-discount-cart-banner-info';
10135  const API = {
10136    DISPLAY_TEXT: "\/api\/storefront\/promotion\/cart_page\/display_text",
10137    CART_SELECT: "\/api\/cart\/cart-select?r=",
10138  }
10139
10140  class SpzCustomDiscountCartBannerInfo extends SPZ.BaseElement {
10141    constructor(element) {
10142      super(element);
10143      this.xhr_ = SPZServices.xhrFor(this.win);
10144
10145      this.displayTextData = {}; // 活动数据文案数据
10146      this.selectedCategory = ''; // 当前选中的分类
10147      this.selectedDiscountId = ''; // 当前选中的折扣 id
10148      this.codes = []; // 优惠码数组
10149    }
10150
10151    isLayoutSupported(layout) {
10152      return layout == SPZCore.Layout.LOGIC;
10153    }
10154
10155    mountCallback() {
10156      this.getDisplayText_();
10157      SPZUtils.Event.listen(document, 'dj.cartChange', (e) => {
10158        this.getDisplayText_();
10159      });
10160      //该事件又购物车优惠码组件触发,传参为当前应用的优惠码数组
10161      SPZUtils.Event.listen(document, 'dj.applyDiscountCode', (e) => {
10162        this.codes = e.detail.codes;
10163       this.getDisplayText_();
10164      });
10165      this.registerAction('renderDiscountSelectors', (invocation) => {
10166        const selected = invocation.args?.data;
10167        const groups = this.displayTextData.groups || [];
10168        const discounts = groups.find(v => v.category == selected)?.discounts || []; // 当前分类下的折扣
10169        const defaultDiscountId = discounts[0]?.discount_id; // 默认选中第一个折扣
10170        this.selectedCategory = selected;
10171        this.selectedDiscountId = defaultDiscountId;
10172
10173        this.renderDiscountSelectors_(); // 渲染 Tab
10174        this.renderDiscountText_(); // 渲染活动进度文案
10175      });
10176      this.registerAction('discountSelectorChange', (invocation) => {
10177        const { targetOption } = invocation?.args?.data || {};
10178        this.selectedDiscountId = targetOption;
10179        this.renderDiscountText_(); // 切换活动更新活动进度文案
10180      });
10181    }
10182
10183    getLineItems_(line_items) {
10184      return line_items.map((item) => {
10185        return {
10186          id: item.id,
10187          product_id: item.product_id,
10188          variant_id: item.variant_id,
10189          quantity: item.quantity,
10190          price: item.price,
10191          origin_price: item.origin_price,
10192          compare_at_price: item.compare_at_price,
10193          trunk_price: item.trunk_price,
10194          total_price: item.total_price,
10195          inventory_tracking: item.inventory_tracking,
10196          inventory_policy: item.inventory_policy,
10197          inventory_quantity: item.inventory_quantity,
10198          custom: item.custom,
10199          product_type: item.product_type,
10200          properties: item.properties
10201        };
10202      });
10203    }
10204
10205    getDisplayText_(redo = true) {
10206      this.xhr_.fetchJson(API.CART_SELECT + Math.random().toString(36).slice(-4),
10207        { method: "GET" }
10208      ).then(async (cartData) => {
10209        const cartObj = cartData.cart || {};
10210        if(!cartObj || cartObj.line_items?.length <= 0) {
10211          // 清空购物车时,清空活动数据
10212          this.displayTextData = {};
10213          this.selectedCategory = '';
10214          this.selectedDiscountId = '';
10215          this.renderDiscountBanner_();
10216          return;
10217        }
10218
10219        this.xhr_.fetchJson(API.DISPLAY_TEXT, {
10220          method: "POST",
10221          body: {
10222            line_items: this.getLineItems_(cartObj.line_items),
10223            sales_channel: {
10224              sale_channel_type: "online",
10225              sale_channel_id: window.C_SETTINGS.shop.shop_id
10226            },
10227            codes: this.codes || []
10228          }
10229        }).then(data => {
10230          this.displayTextData = data;
10231          this.renderDiscountBanner_(redo);
10232          // 凑单弹窗加购商品后,重新获取活动进度文案
10233          this.renderDiscountText_(redo);
10234        }).catch(err => {
10235        });
10236      });
10237    }
10238
10239    renderDiscountBanner_(redo = true) {
10240      const bannerEl = document.getElementById("app-discount-cart-banner");
10241      if (bannerEl) {
10242        SPZ.whenApiDefined(bannerEl).then(apis => {
10243          apis.render(this.displayTextData, redo);
10244        });
10245      }
10246    }
10247
10248    renderDiscountSelectors_(redo = true) {
10249      const groups = this.displayTextData.groups || [];
10250      const discounts = groups.find(v => v.category == this.selectedCategory)?.discounts || [];
10251
10252      if (discounts.length <= 0) {
10253        return;
10254      }
10255      const selectorsEl = document.getElementById("app-discount-selectors-render");
10256      if (selectorsEl) {
10257        SPZ.whenApiDefined(selectorsEl).then(apis => {
10258          apis.render(discounts, redo);
10259        });
10260      }
10261    }
10262
10263    renderDiscountText_(redo = true) {
10264      if (!this.selectedCategory || !this.selectedDiscountId) {
10265        return;
10266      }
10267      const groups = this.displayTextData.groups || [];
10268      const discounts = groups.find(v => v.category == this.selectedCategory)?.discounts || [];
10269      const discount = discounts.find(v => v.discount_id == this.selectedDiscountId) || {};
10270
10271      const textEl = document.getElementById("app-discount-text-render");
10272      if (textEl) {
10273        SPZ.whenApiDefined(textEl).then(apis => {
10274          apis.render(discount, redo);
10275        });
10276      }
10277    }
10278  }
10279
10280  SPZ.defineElement(TAG, SpzCustomDiscountCartBannerInfo);
10281</ljs-script>
10282
10283</div>
10284        </article>
10285</div>
10286</div>
10286<script>try { if (window.performance || window.webkitPerformance) { var perf = window.performance || window.webkitPerformance;var timing = perf.timing;window.firstTiming = Date.now() - timing.navigationStart;}}catch(e){}</script>
10286<div id="shoplaza-section-1717490478703" class="shoplaza-section" data-section-id="1717490478703" data-section-type="cart_payment_breakdown" data-section-style=""><style>
10287  .main-content {
10288    padding-bottom: 32px;
10289  }
10290
10291  @media (min-width: 960px) {
10292    .main-content {
10293      padding-bottom: 66px;
10294    }
10295  }
10296
10297  #cart-render {
10298    width: 0;
10299    height: 0;
10300  }
10301
10302  #cart-render[loading] ~ *,
10303  #cart-render:not([finish]) ~ * {
10304    display: none;
10305  }
10306
10307  #cart-render[loading] ~ .cart-loading,
10308  #cart-render[interact-loading] ~ .cart-loading {
10309    display: var(--loading-show);
10310  }
10311
10312  #cart-render:not([finish]) ~ .cart-content > header,
10313  #cart-render:not([finish]) ~ .cart-content .cart-items-top-container,
10314  #cart-render[finish][data-empty] ~ .cart-content .cart-items-top-container,
10315  #cart-render[finish][data-empty] ~ .cart-content .cart-subtotal-outer-container,
10316  #cart-render[finish][data-empty] ~ .cart-content .cart-summary-sticky-container {
10317    display: none;
10318  }
10319
10320  .cart-content .cart-empty {
10321    padding: 80px 0;
10322  }
10323
10324  .cart-content spz-render {
10325    min-width: unset !important;
10326  }
10327
10328  .cart-continue-shopping {
10329    width: 100%;
10330    height: 46px;
10331  }
10332
10333  .cart-item-image {
10334    flex-shrink: 0;
10335    width: 19.55%;
10336  }
10337
10338  .cart-qty spz-quantity {
10339    width: 81px;
10340  }
10341
10342  .cart-qty spz-quantity .i-spzhtml-quantity-number-decrease[disabled] {
10343    cursor: pointer;
10344  }
10345
10346  .cart-qty spz-quantity input[type="number"] {
10347    width: 25px;
10348  }
10349
10350  .cart-qty spz-quantity span[role="button"] {
10351    padding: 6px;
10352    border-radius: var(--global-border-radius);
10353  }
10354
10355  .cart-qty-minimum-tip {
10356    color: #FF3F02;
10357  }
10358
10359  .cart-subtotal-free-shipping + .cart-subtotal-content {
10360    margin-top: 10px;
10361  }
10362
10363  .cart-subtotal-content {
10364    padding: 12px;
10365    border-radius: 2px;
10366    background-color: #F6F6F6;
10367  }
10368
10369  .cart-invalid-msg {
10370    color: #FF3F02;
10371  }
10372
10373  .cart-checkout-btn,
10374  .cart-summary-checkout-btn {
10375    width: 100%;
10376    height: 46px;
10377  }
10378
10379  .cart-subtotal-render {
10380    min-height: 1px;
10381  }
10382
10383  @media (max-width: 959.98px) {
10384    .cart-item {
10385      padding: 16px 0;
10386    }
10387
10388    .cart-qty-minimum-tip {
10389      margin-bottom: -8px;
10390    }
10391
10392    .cart-summary-sticky-container {
10393      z-index: var(--z-index-sticky);
10394      position: fixed;
10395      left: 0;
10396      bottom: 0;
10397      width: 100%;
10398      background-color: #fff;
10399      box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
10400      opacity: 0;
10401      transform: translateY(140%);
10402    }
10403
10404    .cart-summary-sticky-container .ios_safari_bottom_bar {
10405      display: none;
10406    }
10407
10408    .cart-summary-sticky-container[hidden] {
10409      display: block !important;
10410      pointer-events: none;
10411    }
10412
10413    .cart-summary-sticky-container[show] {
10414      animation: sticky-bottom-show .7s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards;
10415    }
10416
10417    @keyframes sticky-bottom-show {
10418      0% { opacity: 1;}
10419      100% { transform: translateY(0); opacity: 1; }
10420    }
10421
10422    .cart-summary-sticky-checkout-btn {
10423      width: 33.51%;
10424      height: 46px;
10425      margin-top: 0;
10426    }
10427
10428    .cart-summary-discount-btn {
10429      display: flex;
10430      align-items: center;
10431      margin-top: 4px;
10432      padding: 4px 8px;
10433      color: #F16515;
10434      background-color: #fff;
10435      border-radius: 100px;
10436    }
10437
10438    .cart-summary-discount-btn > span {
10439      margin-right: 2px;
10440    }
10441
10442    html[dir="rtl"] .cart-summary-discount-btn > span {
10443      margin-left: 2px;
10444      margin-right: 0;
10445    }
10446
10447    .cart-summary-discount-btn svg {
10448      transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
10449    }
10450
10451    .cart-summary-discount-list.open .cart-summary-discount-btn svg {
10452      transform: rotate(-180deg);
10453    }
10454
10455    .cart-summary-discount-list ul {
10456      display: none;
10457    }
10458
10459    .cart-summary-discount-list.open ul {
10460      display: block;
10461    }
10462
10463    .cart-summary-sticky-render .cart-summary-discount-btn {
10464      background-color: #F6F6F6;
10465    }
10466
10467    .cart-summary-sticky-modal {
10468      z-index: calc(var(--z-index-modal) + 1);
10469      width: 100% !important;
10470      max-height: 85vh !important;
10471      display: flex;
10472      align-items: flex-end;
10473      justify-content: flex-end;
10474      pointer-events: none;
10475    }
10476
10477    .cart-summary-sticky-modal .ios_safari_bottom_bar {
10478      display: none;
10479    }
10480
10481    .cart-summary-sticky-modal-inner {
10482      width: 100%;
10483      padding: 8px 16px 16px;
10484      border-radius: 2px;
10485      background-color: #fff;
10486      box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
10487      pointer-events: auto;
10488    }
10489
10490    .cart-summary-sticky-modal-close {
10491      margin-right: -8px;
10492    }
10493
10494    html[dir="rtl"] .cart-summary-sticky-modal-close {
10495      margin-left: -8px;
10496      margin-right: 0;
10497    }
10498
10499    .cart-summary-sticky-modal ~ .i-spzhtml-sidebar-mask {
10500      top: unset;
10501      bottom: 0;
10502    }
10503
10504    .cart-checkout-btn-mobile {
10505      flex-shrink: 0;
10506      width: 40.268%;
10507      margin-top: 0;
10508    }
10509
10510    .cart-summary-sticky-render .cart-summary-discount-btn svg {
10511      transform: rotate(0) !important;
10512    }
10513
10514    .cart-item-delete-btn {
10515      position: relative;
10516    }
10517
10518    .cart-item-delete-btn::before {
10519      content: '';
10520      position: absolute;
10521      top: -8px;
10522      left: -8px;
10523      right: -8px;
10524      bottom: -8px;
10525    }
10526  }
10527
10528  @media (min-width: 960px) {
10529    .cart-title {
10530      line-height: 1.1667;
10531      font-size: calc(var(--type-heading-font-size) * .8);
10532    }
10533
10534    .cart-content .cart-empty {
10535      padding: 60px 0 120px;
10536    }
10537
10538    .cart-continue-shopping {
10539      width: 420px;
10540    }
10541
10542    .cart-header-continue-shopping-btn {
10543      border-bottom: 1px solid var(--color-body-text);
10544    }
10545
10546    #cart-render[data-empty] ~ .cart-content .cart-header-continue-shopping-btn {
10547      display: none;
10548    }
10549
10550    .cart-items-header,
10551    .cart-item {
10552      display: grid;
10553      grid-template-columns: 50% 16.13% 24.2%;
10554      gap: 4.8387%;
10555    }
10556
10557    .cart-items-header {
10558      line-height: 1.14;
10559      border-bottom: 1px solid #E6E6E6;
10560    }
10561
10562    .cart-items-header li {
10563      padding: 16px 0;
10564    }
10565
10566    .cart-item-image {
10567      width: 19.35%;
10568    }
10569
10570    .cart-qty spz-quantity {
10571      width: 93px;
10572    }
10573
10574    .cart-qty spz-quantity input[type="number"] {
10575      width: 37px;
10576    }
10577
10578    .cart-subtotal-outer-container {
10579      width: 37.74%;
10580    }
10581  }
10582</style>
10583<div id="cart-payment-breakdown" class="hidden">
10584  <section class="page-container lg:flex lg:justify-end" >
10585  <div class="cart-subtotal-outer-container md:w-full mt-4" id="cart-subtotal-outer-container">
10586    <div class="cart-subtotal-content">
10587      <div class="cart-summary-checkout mb-1"></div>
10588      <div class="cart-summary" id="cart-summary">
10589        <div >
10590                <spz-render class="cart-subtotal-render i-spzhtml-layout-container" id="cart-subtotal-render" layout="container" manual i-spzhtml-layout="container">
10591                  <template>
10592                    <div>
10593                      <div class="flex justify-between font-medium body-plus-2 leading-1.25">
10594  <span>Total:</span>
10595  <div class="flex items-center">
10596    <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
10597    </div>
10598</div>
10599
10600<div class="cart-summary-discount-list flex flex-col items-end" id="cart-summary-discount-list" spz-if="${data.total_discount > 0}">
10601  <div class="cart-summary-discount-btn lg:hidden" spz-if="${data.discount_applications && data.discount_applications.length <= 0}">
10602    <span class="leading-1.2 body-minus-2">
10603      ${function() {
10604  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
10605  if (textArray.length > 0 && textArray.length < 2) {
10606    textArray.push('');
10607  }
10608  return textArray.map((text, index) => {
10609    if (index == 0) {
10610      return `<span>${text}</span>`;
10611    }
10612
10613    return `
10614      <span class="notranslate whitespace-nowrap">
10615        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
10616      </span>
10617      <span>${text}</span>
10618    `;
10619  }).join('');
10620}()}
10621    </span>
10622  </div>
10623  <div class="cart-summary-discount-btn lg:hidden" @tap="cart-summary-discount-list.toggleClass(class='open')" spz-else>
10624    <span class="leading-1.2 body-minus-2">
10625      ${function() {
10626  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
10627  if (textArray.length > 0 && textArray.length < 2) {
10628    textArray.push('');
10629  }
10630  return textArray.map((text, index) => {
10631    if (index == 0) {
10632      return `<span>${text}</span>`;
10633    }
10634
10635    return `
10636      <span class="notranslate whitespace-nowrap">
10637        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
10638      </span>
10639      <span>${text}</span>
10640    `;
10641  }).join('');
10642}()}
10643    </span>
10644    <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg>
10645  </div>
10646
10647  <ul class="clear w-full mt-1 leading-1.25 color-body-70" spz-if="${data.discount_applications && data.discount_applications.length > 0}">
10648    <li class="plugin__bundle__cart__save md:hidden empty-hidden flex items-center justify-between mb-2"></li>
10649    <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications">
10650      <span>${discount_application.title}:</span>
10651      <span class="notranslate ml-2 whitespace-nowrap">
10652        <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency>
10653      </span>
10654    </li>
10655  </ul>
10656</div>
10657<div class="plugin__bundle__cart__save md:hidden empty-hidden flex items-center justify-between mb-2" spz-else></div>
10658
10659<div class="cart-invalid-msg mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div>
10660<spz-observer
10661                        id="cart-summary-sticky-observer"
10662                        layout="logic"
10663                        target="cart-subtotal-outer-container"
10664                        @visible="cart-summary-sticky-container.hideSticky;"
10665                        @invisible="cart-summary-sticky-container.showSticky;"
10666                      ></spz-observer>
10667                      <spz-observer
10668                        layout="logic"
10669                        target="cart-content"
10670                        @childUpdated="cart-summary-sticky-observer.restart"
10671                      ></spz-observer>
10672                    </div>
10673                  </template>
10674                </spz-render>
10675              </div>
10676            <div >
10677                <button
10678  type="button"
10679  class="cart-summary-checkout-btn button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
10680  data-track="checkout-submit,click"
10681  data-track-content="checkout"
10682  data-track-source="checkout"
10683  @tap="cart-render.checkout;"
10684>
10685  <span>Check out</span>
10686  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
10687  <div class="loading-bounce"></div>
10688</div>
10689</button>
10690<div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div>
10691              </div>
10692            </div>
10693    </div>
10694  </div>
10695</section>
10696  <spz-sticky class="lg:hidden cart-summary-sticky-container i-spzhtml-layout-container" id="cart-summary-sticky-container" layout="container" position="bottom" bottom-compensation-container-class="lg:hidden" hidden i-spzhtml-layout="container">
10697  <spz-render class=" cart-summary-sticky-render p-4 i-spzhtml-layout-container" id="cart-summary-sticky-render" layout="container" manual i-spzhtml-layout="container">
10698    <template>
10699      <div>
10700        <div class="cart-invalid-msg mb-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div>
10701
10702        <div class="flex items-center justify-between">
10703          <div class="flex flex-col items-start">
10704            <div class="flex flex-wrap items-center">
10705              <div class="flex font-medium body-plus-2 leading-1.25 lg:items-center lg:justify-between">
10706                <span class="color-body-70">Total:&nbsp;</span>
10707                <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
10708              </div>
10709              </div>
10710
10711            <div spz-if="${data.total_discount > 0}">
10712              <div class="cart-summary-discount-btn" spz-if="${!!(data.discount_applications && data.discount_applications.length <= 0)}">
10713                <span class="leading-1.2 body-minus-2">
10714                  ${function() {
10715  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
10716  if (textArray.length > 0 && textArray.length < 2) {
10717    textArray.push('');
10718  }
10719  return textArray.map((text, index) => {
10720    if (index == 0) {
10721      return `<span>${text}</span>`;
10722    }
10723
10724    return `
10725      <span class="notranslate whitespace-nowrap">
10726        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
10727      </span>
10728      <span>${text}</span>
10729    `;
10730  }).join('');
10731}()}
10732                </span>
10733              </div>
10734              <div class="cart-summary-discount-btn" @tap="cart-summary-sticky-modal.open;" spz-else>
10735                <span class="leading-1.2 body-minus-2">
10736                  ${function() {
10737  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
10738  if (textArray.length > 0 && textArray.length < 2) {
10739    textArray.push('');
10740  }
10741  return textArray.map((text, index) => {
10742    if (index == 0) {
10743      return `<span>${text}</span>`;
10744    }
10745
10746    return `
10747      <span class="notranslate whitespace-nowrap">
10748        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
10749      </span>
10750      <span>${text}</span>
10751    `;
10752  }).join('');
10753}()}
10754                </span>
10755                <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg>
10756              </div>
10757
10758              <spz-sidebar class="cart-summary-sticky-modal " id="cart-summary-sticky-modal" layout="nodisplay" side="bottom" hidden  @open="top-button.toggleClass(class='hidden', force=true);" @close="top-button.toggleClass(class='hidden', force=false);" >
10759  <div class="cart-summary-sticky-modal-inner relative">
10760    <div class="flex justify-end">
10761      <button class="cart-summary-sticky-modal-close clear flex p-2 cursor-pointer" @tap="cart-summary-sticky-modal.close();" type="button">
10762        <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg>
10763      </button>
10764    </div>
10765
10766    <ul class="clear w-full mt-3 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}">
10767      <li class="flex items-center justify-between">
10768        <span>Subtotal:</span>
10769        <span class="notranslate ml-2 whitespace-nowrap">
10770          <spz-currency class="inline-block" layout="container" value="${data.line_price}"></spz-currency>
10771        </span>
10772      </li>
10773      <li class="flex items-center justify-between mt-2" spz-for="(discount_application,index) in data.discount_applications">
10774        <span>${discount_application.title}:</span>
10775        <span class="notranslate ml-2 whitespace-nowrap">
10776          <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency>
10777        </span>
10778      </li>
10779    </ul>
10780
10781    <div class="flex items-start justify-between mt-2 font-medium body-plus-2 leading-1.25">
10782      <span>Total:</span>
10783      <div class="flex items-center">
10784        <spz-currency class="color-price" container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
10785        </div>
10786    </div>
10787    <button
10788  type="button"
10789  class="cart-checkout-btn mt-4 button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
10790  data-track="checkout-submit,click"
10791  data-track-content="checkout"
10792  data-track-source="checkout"
10793  @tap="cart-render.checkout;"
10794>
10795  <span>Check out</span>
10796  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
10797  <div class="loading-bounce"></div>
10798</div>
10799</button>
10800    <div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div>
10801  </div>
10802</spz-sidebar>
10803            </div>
10804          </div>
10805
10806          <button
10807  type="button"
10808  class="cart-summary-sticky-checkout-btn button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
10809  data-track="checkout-submit,click"
10810  data-track-content="checkout"
10811  data-track-source="checkout"
10812  @tap="cart-render.checkout;"
10813>
10814  <span>Check out</span>
10815  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
10816  <div class="loading-bounce"></div>
10817</div>
10818</button>
10819        </div>
10820
10821        <div class="mt-2 body-minus-2 color-body-70 text-right">Taxes and shipping calculated at checkout</div>
10822      </div>
10823    </template>
10824  </spz-render>
10825</spz-sticky>
10826  </div>
10827</div><div id="shoplaza-section-1634017942336" class="shoplaza-section" data-section-id="1634017942336" data-section-type="cart_recommendations" data-section-style=""><style>
10828  .cart_recommend_container {
10829    padding-top: 96px;
10830  }
10831  .cart_recommend_title {
10832    margin-bottom: 32px;
10833    font-size: 24px;
10834  }
10835  .recommend_list_carousel .i-spzhtml-slide-item {
10836    width: 25%;
10837    padding-left: 40px;
10838  }
10839  .recommend_list_carousel {
10840    margin-left: -40px;
10841  }
10842  .recommend_list_carousel .spz-carousel-button-prev {
10843    left: 56px;
10844  }
10845  @media (max-width: 960px) {
10846    .cart_recommend_container {
10847      padding-top: 68px;
10848    }
10849    .cart_recommend_title {
10850      margin-bottom: 24px;
10851      font-size: 18px;
10852    }
10853    .recommend_list_item:last-child {
10854      padding-right: 0;
10855    }
10856  }
10857</style>
10858<spz-render layout="container" src="/api/cart" items="cart.line_items" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
10859    <template>
10860      <spz-render spz-if="${!!data.length}" layout="container" src="/api/product/similar-products?product_id=${data[0] && data[0].product_id}&page=1&per_page=8" @finish="cart-recommendations-render.rerender(data=event.data.data.products);"></spz-render>
10861    </template>
10862  </spz-render>
10863</div>
10864      </div>
10865      <div id="shoplaza-section-footer" class="shoplaza-section" data-section-id="footer" data-section-type="footer" data-section-style="expand"><style>
10866  [data-section-id="footer"] {
10867    color: var(--color-footer-text);
10868    background-color: var(--color-footer-bg);
10869  }
10870  .footer__newsletter,
10871  .footer_blocks,
10872  .footer__additional {
10873    border-top: 1px solid var(--color-footer-border);
10874  }
10875</style>
10876<style>
10877    .footer__newsletter{
10878      color: var(--color-newsletter-text);
10879      background-color: var(--color-body-bg);
10880    }
10881    .footer__newsletter__desc{
10882      margin: 0 0 20px 0;
10883    }
10884    .footer__newsletter__input{
10885      width: 100%;
10886      height: 42px;
10887      background-color: var(--color-newsletter-bg);
10888      border: 1px solid var(--color-newsletter-border);
10889      border-right-width: 0px;
10890        border-radius:  0 ;
10891      }
10892    .footer__newsletter__input:focus{
10893      border-color: var(--color-newsletter-text);
10894    }
10895    .footer__newsletter__input::-webkit-input-placeholder {
10896      color: var(--color-newsletter-text);
10897    }
10898    .footer__newsletter__btn{
10899      height: 42px;
10900      padding: 0 18px;
10901      color: var(--color-newsletter-btn-text);
10902      background-color: var(--color-newsletter-btn-bg);
10903      border-radius:  0 ;
10904      }
10905    @keyframes footer_newsletter_tip_hide {
10906      from {
10907        visibility: visible;
10908      }
10909      to {
10910        visibility: hidden;
10911      }
10912    }
10913    .footer__newsletter__error-tip{
10914      height: auto !important;
10915      width: 100%;
10916      position: absolute;
10917      bottom: calc(100% + 6px);
10918      left: 0;
10919      padding: 16px 20px;
10920      background-color: white;
10921      border-radius: 4px;
10922      box-shadow: 0 0 8px rgba(195,195,195,0.50);
10923      font-size: var(--type-text-font-size);
10924      line-height: 1.3;
10925      color: var(--color-newsletter-text);
10926    }
10927    .footer__newsletter__error-tip:after{
10928      content: '';
10929      position: absolute;
10930      left: 20px;
10931      bottom: -12px;
10932      width: 0;
10933      height: 0;
10934      border: 6px solid transparent;
10935      border-top-color: white;
10936    }
10937    .footer__newsletter__error-tip:not(.hidden), .footer__newsletter__error-tip:not([hidden]){
10938      visibility: hidden;
10939      animation: footer_newsletter_tip_hide 5000ms;
10940    }
10941    .footer__newsletter__success-tip{
10942      display: none;
10943      align-items: center;
10944      min-height: 50px;
10945      padding: 6px 12px;
10946      color: #56AD6A;
10947      background: #ECFEF0;
10948      border: 1px solid #56AD6A;
10949    }
10950    .footer__newsletter__form.spz-form-submit-success .footer__newsletter__success-tip{
10951      display: flex;
10952    }
10953    .footer__newsletter__form.spz-form-submit-success .footer__newsletter__input,
10954    .footer__newsletter__form.spz-form-submit-success .footer__newsletter__btn{
10955      display: none;
10956    }
10957    @media (min-width: 960px) {
10958      .footer__newsletter__desc{
10959        margin: 0 40px 0 0;
10960        }
10961      .footer__newsletter__input{
10962        width: 200px;
10963        height: 50px;
10964      }
10965      .footer__newsletter__btn{
10966        height: 50px;
10967      }
10968      .footer__newsletter__success-tip{
10969        max-width: 568px;
10970      }
10971    }
10972    </style>
10973  <div class="footer__newsletter">
10974    <div class="page-container lg:flex lg:items-center lg:justify-center py-8 md:px-8">
10975      <p class="footer__newsletter__desc text-center body-plus-2 lg:body-plus-4">Subscribe today to hear first about our sales</p>
10976      <form
10977        id="footer__newsletter__form"
10978        class="footer__newsletter__form type-text-font-family relative flex items-center md:w-full text-base"
10979        action-xhr="/api/customers/newsletters"
10980        method="POST"
10981        custom-validation="show-first-on-submit"
10982        @submitError="footer__newsletter__error-ajax.rerender(data=event);footer__newsletter__error-ajax.toggleClass(class='hidden', force=false);"
10983      >
10984        <input
10985          class="footer__newsletter__input clear flex-1 block lg:w-full px-4 lg:px-3"
10986          id="footer__newsletter__input"
10987          type="text"
10988          name="email"
10989          placeholder="Enter your email"
10990          required
10991          pattern="([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})"
10992          @input-debounced="footer__newsletter__error-ajax.toggleClass(class='hidden', force=true);"
10993        >
10994        <button
10995          class="footer__newsletter__btn type-text-font-family m-0 flex items-center border-none leading-none"
10996          type="submit"
10997        >
10998          <span class="md:hidden">Subscribe</span>
10999          <svg class="lg:hidden" width="20" height="6" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h20v6H0z"/><path fill="currentColor" d="M0 2h14v2H0z"/><path fill-rule="evenodd" clip-rule="evenodd" d="m20 3-6 3V0l6 3Z" fill="currentColor"/></svg>
11000        </button>
11001        <div class="footer__newsletter__error-tip" validation-for="footer__newsletter__input" visible-when-invalid="patternMismatch" hidden>
11002          Please enter a valid email address.
11003        </div>
11004        <div class="footer__newsletter__error-tip" validation-for="footer__newsletter__input" visible-when-invalid="valueMissing" hidden>
11005          Please enter your email address.
11006        </div>
11007        <spz-render id="footer__newsletter__error-ajax" class="footer__newsletter__error-tip hidden i-spzhtml-layout-container" layout="container" manual i-spzhtml-layout="container">
11008          <template>
11009            <div spz-if="${data.errors && data.errors.length > 0}">
11010              ${data.errors && data.errors[0]}
11011            </div>
11012          </template>
11013        </spz-render>
11014        <div class="footer__newsletter__success-tip flex-shrink-0 body-plus-2">
11015          Thanks for subscribing
11016        </div>
11017      </form>
11018    </div>
11019  </div>
11020<style>
11021    .footer__additional__item{
11022      padding-top: 12px
11023    }
11024    .footer__additional__item + .footer__additional__item{
11025      padding-left: 20px;
11026    }
11027    .footer__copyright a[href] {
11028      color: inherit;
11029      text-decoration: none;
11030    }
11031  </style>
11032
11033  <div class="footer__additional pt-5 pb-8 lg:pt-6 lg:pb-8">
11034    <div class="page-container body-minus-1 flex flex-wrap justify-center">
11035      <span class="footer__additional__item">&copy;&nbsp;<time datetime="2026">2026</time>&nbsp;nisartmacka</span>
11036        <div style="display:flex;justify-content: center;">
11037<img width="300px;" src="https://img-va.myshopline.com/image/store/1701329317116/ocean-Logo.png?w=1377&amp;h=127">      </div>
11038      </div>
11039  </div>
11040</div>
11041      <div id="shoplaza-section-cart_drawer" class="shoplaza-section" data-section-id="cart_drawer" data-section-type="cart_drawer" data-section-style="">
11042  <style>
11043  #cart-drawer {
11044    width: 0;
11045    height: 0;
11046  }
11047
11048  #cart-drawer[loading] ~ *,
11049  #cart-drawer[data-empty][finish] ~ *,
11050  #cart-drawer:not([data-empty])[finish] ~ .cart-empty {
11051    display: none;
11052  }
11053
11054  #cart-drawer[loading] ~ .cart-drawer-loading {
11055    display: var(--loading-show);
11056  }
11057
11058  #cart-drawer:not([loading]) ~ .cart-drawer-loading {
11059    display: none !important;
11060  }
11061
11062  #cart-drawer[data-empty][finish] ~ .cart-empty {
11063    display: block;
11064  }
11065
11066  .cart-drawer-loading {
11067    padding-top: 50%;
11068  }
11069
11070  .cart-drawer-loading .loading-bounce {
11071    border-bottom-color: var(--color-body-text);
11072  }
11073
11074  #cart-drawer-modal {
11075    height: 100vh;
11076  }
11077
11078  #cart-drawer-modal,
11079  .cart-drawer-summary-sticky-render {
11080    width: 84.62%;
11081    max-width: 84.62%;
11082  }
11083
11084  .cart-drawer-header {
11085    padding: 12px 16px;
11086    border-bottom: 1px solid #E6E6E6;
11087  }
11088
11089  .cart-drawer-title {
11090    line-height: 1.1667;
11091    font-size: calc(var(--type-heading-font-size) * .8);
11092  }
11093
11094  .cart-drawer-item-image {
11095    flex-shrink: 0;
11096    width: 23.49%;
11097  }
11098
11099  .cart-drawer-item-delete-btn::before {
11100    content: '';
11101    position: absolute;
11102    top: -8px;
11103    left: -8px;
11104    right: -8px;
11105    bottom: -8px;
11106  }
11107
11108  .cart-drawer-item-qty-container spz-quantity {
11109    width: 81px;
11110  }
11111
11112  .cart-drawer-item-qty-container spz-quantity .i-spzhtml-quantity-number-decrease[disabled] {
11113    cursor: pointer;
11114  }
11115
11116  .cart-drawer-item-qty-container spz-quantity span[role="button"] {
11117    padding: 6px;
11118  }
11119
11120  .cart-drawer-item-qty-container spz-quantity input[type="number"] {
11121    width: 25px;
11122  }
11123
11124  .cart-drawer-item-text {
11125    color: #FF3F02;
11126  }
11127
11128  .cart-drawer-countdown-wrapper {
11129    margin: 0 -16px;
11130  }
11131
11132  .cart_free_shipping ~ .cart-drawer-summary {
11133    margin-top: 10px;
11134  }
11135
11136  .cart-drawer-summary {
11137    padding: 8px;
11138    border-radius: 2px;
11139    background-color: #F6F6F6;
11140  }
11141
11142  .cart-drawer-summary-discount-btn {
11143    display: flex;
11144    align-items: center;
11145    padding: 4px 8px;
11146    margin-top: 4px;
11147    color: #F16515;
11148    border-radius: 100px;
11149    background-color: #fff;
11150    cursor: pointer;
11151  }
11152
11153  .cart-drawer-summary-discount-btn span {
11154    margin-right: 2px;
11155  }
11156
11157  html[dir="rtl"] .cart-drawer-summary-discount-btn span {
11158    margin-left: 2px;
11159    margin-right: 0;
11160  }
11161
11162  .cart-drawer-summary-discount-btn svg {
11163    transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);
11164  }
11165
11166  .cart-drawer-summary-discount-list.open .cart-drawer-summary-discount-btn svg {
11167    transform: rotate(-180deg);
11168  }
11169
11170  .cart-drawer-summary-discount-list ul {
11171    display: none;
11172  }
11173
11174  .cart-drawer-summary-discount-list.open ul {
11175    display: block;
11176  }
11177
11178  .cart-drawer-invalid-msg {
11179    color: #FF3F02;
11180  }
11181
11182  .cart-drawer-checkout-btn {
11183    height: 46px;
11184    padding: 12px 0;
11185  }
11186
11187  .cart-drawer-checkout-btn > *,
11188  .cart-drawer-checkout-btn[loading] {
11189    pointer-events: none;
11190  }
11191
11192  .cart-drawer-checkout-btn[loading] > span,
11193  .cart-drawer-checkout-btn:not([loading]) > .loading {
11194    display: none;
11195  }
11196
11197  .cart-drawer-checkout-btn[loading] > .loading {
11198    opacity: 1;
11199  }
11200
11201  .cart-drawer-summary-sticky-render {
11202    z-index: calc(var(--z-index-modal) + 1);
11203    position: fixed;
11204    right: 0;
11205    bottom: 0;
11206    width: 100%;
11207    background-color: #fff;
11208    box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
11209    opacity: 0;
11210    transform: translateY(100%);
11211  }
11212
11213  .cart-drawer-summary-sticky {
11214    padding: 16px;
11215  }
11216
11217  .cart-drawer-summary-sticky-render {
11218    pointer-events: none;
11219  }
11220
11221  .cart-drawer-summary-sticky-render:not(.open),
11222  .cart-drawer-summary-sticky-render:not(.visible) {
11223    display: none;
11224  }
11225
11226  .cart-drawer-summary-sticky-render.visible.open {
11227    pointer-events: auto;
11228    animation: sticky-bottom-show .4s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards;
11229  }
11230
11231  @keyframes sticky-bottom-show {
11232    0% { opacity: 1;}
11233    100% { transform: translateY(0); opacity: 1; }
11234  }
11235
11236  .cart-drawer-summary-sticky-compensation-container.visible {
11237    height: var(--cart-drawer-summary-sticky-height);
11238  }
11239
11240  .cart-drawer-summary-sticky .cart-drawer-summary-discount-btn {
11241    background-color: #F6F6F6;
11242  }
11243
11244  .cart-drawer-empty-container {
11245    padding: 80px 16px;
11246  }
11247
11248  .cart-drawer-empty-btn {
11249    height: 46px;
11250  }
11251
11252  @media (max-width: 959.98px) {
11253    #cart-drawer-modal .ios_safari_bottom_bar {
11254      display: none;
11255    }
11256
11257    #cart-drawer-modal.deepen ~ .i-spzhtml-sidebar-mask {
11258      background-color: var(--color-body-text-70);
11259    }
11260
11261    .cart-drawer-summary-sticky-modal {
11262      z-index: calc(var(--z-index-modal) + 1);
11263      width: 100% !important;
11264      max-height: 85vh !important;
11265      display: flex;
11266      align-items: flex-end;
11267      justify-content: flex-end;
11268      pointer-events: none;
11269    }
11270
11271    .cart-drawer-summary-sticky-modal .ios_safari_bottom_bar {
11272      display: none;
11273    }
11274
11275    .cart-drawer-summary-sticky-modal-inner {
11276      width: 100%;
11277      padding: 8px 16px 16px;
11278      border-radius: 2px;
11279      background-color: #fff;
11280      box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08);
11281      pointer-events: auto;
11282    }
11283
11284    .cart-drawer-summary-sticky-modal-close {
11285      margin-right: -8px;
11286    }
11287
11288    html[dir="rtl"] .cart-drawer-summary-sticky-modal-close {
11289      margin-left: -8px;
11290      margin-right: 0;
11291    }
11292
11293    .cart-drawer-checkout-btn-mobile {
11294      flex-shrink: 0;
11295      width: 40.268%;
11296      margin-top: 0;
11297    }
11298
11299    .cart-drawer-summary-sticky .cart-drawer-summary-discount-btn svg {
11300      transform: rotate(0) !important;
11301    }
11302
11303    .cart-drawer-summary-sticky-modal ~ .i-spzhtml-sidebar-mask {
11304      top: unset !important;
11305      bottom: 0;
11306    }
11307  }
11308
11309  @media (min-width: 960px) {
11310    #cart-drawer-modal,
11311    .cart-drawer-summary-sticky-render {
11312      width: 468px;
11313      max-width: 468px;
11314    }
11315
11316    .cart-drawer-header {
11317      padding: 22px 16px;
11318    }
11319
11320    .cart-drawer-item-image {
11321      width: 32.11%;
11322    }
11323
11324    .cart-drawer-item-qty-container spz-quantity {
11325      width: 93px;
11326    }
11327
11328    .cart-drawer-item-qty-container spz-quantity input[type="number"] {
11329      width: 37px;
11330    }
11331  }
11332</style>
11333  <spz-sidebar class="flex flex-col bg-white i-spzhtml-layout-nodisplay" id="cart-drawer-modal" layout="nodisplay" side="right" hidden="" @open="cart-drawer-summary-sticky-render.toggleClass(class='open', force=true);cart-drawer-summary-sticky-observer.restart()" @beforeclose="cart-drawer-summary-sticky-render.toggleClass(class='open', force=false);cart-drawer-summary-sticky-modal.close();" disable-unmount style="display: none" i-spzhtml-layout="nodisplay">
11334    <header class="cart-drawer-header flex-shrink-0 flex items-center justify-between">
11335      <h4 class="cart-drawer-title m-0 type-heading-font-family color-heading">
11336        Cart
11337      </h4>
11338      <button class="clear flex p-2 cursor-pointer" @tap="cart-drawer-modal.close();" type="button">
11339        <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg>
11340      </button>
11341    </header>
11342
11343    <spz-cart id="cart-drawer" layout="container" empty-item="cart.line_items" @mounted="cart-drawer-subtotal-render.rerender(data=event.cart);cart-drawer-summary-sticky-render.rerender(data=event.cart);cart-drawer-items-render.rerender(data=event.cart);" @cartchange="cart-drawer-items-render.rerender(data=event.cart);cart-drawer-subtotal-render.rerender(data=event.cart);cart-drawer-summary-sticky-render.rerender(data=event.cart);" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
11344      <template><div></div></template>
11345    </spz-cart>
11346    <spz-event target-id="cart-drawer" target-api="render" event-name="dj.addToCart" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event>
11347
11348    <div class="loading items-center justify-center cart-drawer-loading" role="loading"   show >
11349  <div class="loading-bounce"></div>
11350</div>
11351    <div class="cart-empty flex flex-col items-center text-center cart-drawer-empty-container" >
11352  <svg class="color-body-70" xmlns="http://www.w3.org/2000/svg" width="80" height="70" fill="none">
11352<path fill="currentColor" fill-opacity=".7" d="M41.867 16.76c.64 0 1.168.486 1.231 1.11l.007.127v17.334a1.238 1.238 0 0 1-2.47.126l-.006-.126V17.997c0-.683.554-1.238 1.238-1.238ZM55.183 17.87a1.238 1.238 0 0 0-2.47.127v17.334l.007.126a1.238 1.238 0 0 0 2.47-.126V17.997l-.007-.126ZM29.081 16.782c.63-.122 1.24.255 1.422.856l.03.123 3.37 17.333a1.238 1.238 0 0 1-2.4.596l-.03-.123-3.37-17.333a1.238 1.238 0 0 1 .978-1.452ZM65.503 17.638a1.238 1.238 0 0 1 2.4.596l-3.37 17.333-.03.123a1.238 1.238 0 0 1-2.4-.596l3.37-17.333.03-.123Z"/><path fill="currentColor" fill-opacity=".7" fill-rule="evenodd" d="M17.622 3.07A3.601 3.601 0 0 0 14.13.355H1.865l-.68.006C.56.425.627.951.627 1.593c0 .684 0 1.238.684 1.238H14.13l.123.007c.484.052.885.413.981.9l7.424 37.368a6.136 6.136 0 0 0-3.525 5.555 6.135 6.135 0 0 0 6.136 6.136h46.229l.126-.007a1.238 1.238 0 0 0-.126-2.47h-46.23l-.194-.005a3.659 3.659 0 0 1-3.465-3.654 3.659 3.659 0 0 1 3.66-3.66h45.533a3.097 3.097 0 0 0 3.041-2.51l5.475-28.477a3.095 3.095 0 0 0-3.038-3.68H18.672l-1.009-5.078-.041-.186Zm1.736 7.74 5.715 29.714h45.73a.62.62 0 0 0 .608-.502l5.475-28.476a.619.619 0 0 0-.606-.736H19.358ZM20.643 62.074a7.57 7.57 0 0 1 7.571-7.57 7.57 7.57 0 1 1-7.57 7.57Zm12.666 0a5.094 5.094 0 1 0-10.189.002 5.094 5.094 0 0 0 10.189-.002ZM62.028 54.504a7.57 7.57 0 1 0 0 15.142 7.57 7.57 0 0 0 0-15.142Zm0 2.477a5.094 5.094 0 1 1 0 10.188 5.094 5.094 0 0 1 0-10.188Z" clip-rule="evenodd"/></svg>
11353  <div class="mt-5 color-body-70 font-medium body-plus-4 leading-1.2">Your shopping bag is empty</div>
11354  <button class="cart-empty-btn button-primary clear flex items-center justify-center text-center mt-5 cart-drawer-empty-btn w-full"  data-track="cart-continue-shopping" @tap="cart-drawer-modal.close();" type="button">
11355    Continue shopping
11356  </button>
11357</div>
11358
11359    <div class="cart-drawer-content flex-1 overflow-y-auto px-4" id="cart-drawer-content">
11360      <spz-render id="cart-drawer-items-render" layout="container" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container">
11361  <template>
11362    <div>
11363      <ul class="clear overflow-hidden" spz-if="${!!(data.line_items && data.line_items.length > 0)}">
11364        <li class="flex items-start py-4" spz-for="item in data.line_items" key="item.id">
11365          <a
11366            class="cart-drawer-item-image"
11367            spz-href="${item.product_url}?variant=${item.variant_id}"
11368            data-track-type="image"
11369            data-track-product_id="${item.variant_id}"
11370            data-track="click"
11371            data-track-content="product_link"
11372            data-track-product-id="${item.product_id}"
11373            data-track-position="cart"
11374          >
11375            <spz-img
11376              class="rounded-global-fixed overflow-hidden"
11377              width="${item.image.width}"
11378              height="${item.image.height}"
11379              layout="responsive"
11380              src="${item.image.src}"
11381              alt="${item.image.alt}"
11382              object-fit="cover"
11383              auto-fit
11384            ></spz-img>
11385          </a>
11386
11387          <div class="flex-1 px-4">
11388            <div class="">
11389  <a
11390    class="product-title-color no-underline leading-1.25 line-clamp-2"
11391    spz-href="${item.product_url}"
11392    data-track="click"
11393    data-track-content="product_link"
11394    data-track-product-id="${item.product_id}"
11395    data-track-position="cart"
11396  >
11397    ${item.product_title}
11398  </a>
11399  <ul class="clear break-words color-body-70 leading-1.25 mt-1">
11400    <li>${item.options.map(option => option.value).join('/')}</li>
11401    <li class="mt-0.5" spz-for="propertie in item.parsedProperties">
11402      ${propertie.name}/${propertie.isImage ? `<a class="no-underline text-inherit" spz-href="${propertie.value}" target="_blank" >View image</a>` : propertie.value}
11403    </li>
11404  </ul>
11405  <div class="discount_gift_content mt-1 lg:mt-2" spz-if="${!!item.is_free_gift}">
11406  <svg class=""  width="12" height="12" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.236 2.684c0-.407.381-.829.978-.829.58 0 1.232.481 1.232 1.29v.368H4.98c-.445 0-.915-.006-1.275-.138a.74.74 0 0 1-.343-.228c-.063-.083-.125-.22-.125-.463Zm3.783.83h-.467v-.37c0-.808.652-1.289 1.232-1.289.597 0 .978.422.978.83 0 .242-.062.378-.125.462a.74.74 0 0 1-.344.227c-.359.133-.828.14-1.274.14Zm2.848-.83c0 .309-.057.586-.169.83h.998a.829.829 0 0 1 .83.828v1.382H.472V4.342a.829.829 0 0 1 .829-.829H2.3a1.96 1.96 0 0 1-.17-.829C2.13 1.562 3.117.75 4.215.75c.644 0 1.325.302 1.785.845A2.387 2.387 0 0 1 7.784.75c1.099 0 2.083.812 2.083 1.934Zm-4.42 8.566V6.829H1.024v3.592c0 .459.37.829.83.829h3.591Zm1.105 0V6.829h4.42v3.592c0 .459-.37.829-.828.829H6.552Z" fill="#EB391B"/></svg>
11407  <div class="discount__gift_lan">Free gift</div>
11408</div>
11409
11410  <div spz-if="${item.mixed_wholesale && false}">
11411    <style>
11412  .mixed_wholesale_label {
11413    padding: 2px 4px;
11414  }
11415
11416  .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before,
11417  .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner {
11418    background: var(--color-body-bg);
11419    color: var(--color-body-text);
11420  }
11421
11422  .mixed_wholesale_tooltip {
11423    max-width: 100%;
11424    border-radius: 4px;
11425    box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1);
11426  }
11427
11428  @media (min-width: 960px) {
11429    .mixed_wholesale_tooltip {
11430      max-width: 450px;
11431    }
11432  }
11433</style>
11434<div class="mt-1 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${item.id}">
11435  Mixed Lot
11436</div>
11437<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support &quot;Mixed Lot&quot; in the store." interact="hover" for="mixed-${item.id}" placement="bottom" overlay-class="mixed_wholesale_tooltip">
11438</spz-tooltip>
11439  </div>
11440</div>
11441            <div class="flex-shrink-0 flex flex-col cart-drawer-item-qty-container mt-3">
11442  <div class="break-words" spz-if="${!!item.disabled}">
11443    *${item.quantity}
11444  </div>
11445  <spz-quantity
11446    spz-else
11447    icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7"
11448    input-class="clear flex-1 h-full text-center body-base color-body-text"
11449    name="quantity"
11450    value="${item.quantity}"
11451    min="1"
11452    max="${item.available_quantity}"
11453    height="28"
11454    layout="flex-item"
11455    @quantityChange="cart-drawer.update(value=event.value,id='${item.id}');"
11456    @quantityChangeUnderflow="cart-drawer.delete(id='${item.id}');"
11457  >
11458    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg>
11459    <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg>
11460  </spz-quantity>
11461
11462  <div class="cart-drawer-item-text mt-1" spz-if="${!!item.item_text}">${item.item_text}</div>
11463</div>
11464            <div class="flex items-center justify-end flex-row-reverse mt-3 leading-1.25">
11465  <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through ml-1 body-minus-2' : 'color-price font-medium '}" layout="container" value="${item.line_price}"></spz-currency>
11466  <spz-currency class="color-price font-medium  " spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency>
11467</div>
11468            <div class="flex items-start flex-wrap  mt-1 body-minus-2 leading-1.25 color-body-60" spz-for="discount_item in item.discount_applications">
11469  <div class="flex">
11470    <spz-img
11471      spz-if="${!!discount_item.icon}"
11472      class="flex-shrink-0 mr-1 mt-0.5"
11473      src="${discount_item.icon}"
11474      layout="fixed"
11475      width="12"
11476      height="12"
11477      alt="item.image.alt || item.product_title"
11478      object-fit="contain"
11479    ></spz-img>
11480    <span>${discount_item.title}</span>
11481  </div>
11482  <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span>
11483</div>
11484          </div>
11485
11486          <button class="clear flex color-body-70 flex-shrink-0 cart-drawer-item-delete-btn relative" type="button" @tap="cart-drawer.delete(id=${item.id})">
11487  <svg
11488  class="icon-delete "
11489  xmlns="http://www.w3.org/2000/svg"
11490  width="16"
11491  height="17"
11492  viewBox="0 0 16 17"
11493  fill="none"
11494>
11495  <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.6875 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/>
11496</svg>
11497</button>
11498        </li>
11499      </ul>
11500    </div>
11501  </template>
11502</spz-render>
11503        <spz-render id="cart-drawer-subtotal-render" layout="container" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container">
11504  <template>
11505    <section class="py-4">
11506      <div class="cart-drawer-summary" id="cart-drawer-summary">
11507  <div class="flex justify-between font-medium body-plus-2 leading-1.25">
11508    <span>Total:</span>
11509    <div class="flex items-center">
11510      <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
11511      </div>
11512  </div>
11513
11514  <div class="cart-drawer-summary-discount-list flex flex-col items-end" id="cart-drawer-summary-discount-list" spz-if="${data.total_discount > 0}">
11515    <div class="cart-drawer-summary-discount-btn" spz-if="${data.discount_applications && data.discount_applications.length <= 0}">
11516      <span class="leading-1.2 body-minus-2">
11517        ${function() {
11518  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
11519  if (textArray.length > 0 && textArray.length < 2) {
11520    textArray.push('');
11521  }
11522  return textArray.map((text, index) => {
11523    if (index == 0) {
11524      return `<span>${text}</span>`;
11525    }
11526
11527    return `
11528      <span class="notranslate whitespace-nowrap">
11529        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
11530      </span>
11531      <span>${text}</span>
11532    `;
11533  }).join('');
11534}()}
11535      </span>
11536    </div>
11537    <div class="cart-drawer-summary-discount-btn" @tap="cart-drawer-summary-discount-list.toggleClass(class='open');cart-drawer-summary-sticky-discount-list.toggleClass(class='open');" spz-else>
11538      <span class="leading-1.2 body-minus-2">
11539        ${function() {
11540  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
11541  if (textArray.length > 0 && textArray.length < 2) {
11542    textArray.push('');
11543  }
11544  return textArray.map((text, index) => {
11545    if (index == 0) {
11546      return `<span>${text}</span>`;
11547    }
11548
11549    return `
11550      <span class="notranslate whitespace-nowrap">
11551        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
11552      </span>
11553      <span>${text}</span>
11554    `;
11555  }).join('');
11556}()}
11557      </span>
11558      <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg>
11559    </div>
11560
11561    <ul class="clear w-full mt-1 leading-1.25 color-body-70" spz-if="${data.discount_applications && data.discount_applications.length > 0}">
11562      <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications">
11563        <span>${discount_application.title}:</span>
11564        <span class="notranslate ml-2 whitespace-nowrap">
11565          -<spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency>
11566        </span>
11567      </li>
11568    </ul>
11569  </div>
11570
11571  <div class="cart-drawer-invalid-msg mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div>
11572
11573  <button
11574    type="button"
11575    class="cart-drawer-checkout-btn button-primary relative flex-shrink-0 w-full mt-5 body-plus-2 leading-1.2"
11576    data-track="checkout-submit,click"
11577    data-track-content="checkout"
11578    data-track-source="checkout"
11579    @tap="cart-drawer.checkout;"
11580  >
11581    <span>Check out</span>
11582    <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
11583  <div class="loading-bounce"></div>
11584</div>
11585  </button>
11586
11587  <div class="mt-2 color-body-70 body-minus-2 text-center">Taxes and shipping calculated at checkout</div>
11588</div>
11589
11590      <spz-observer
11591        layout="logic"
11592        id="cart-drawer-summary-sticky-observer"
11593        target="cart-drawer-subtotal-render"
11594        root-container="cart-drawer-content"
11595        @visible="cart-drawer-summary-sticky-render.toggleClass(class='visible', force=false);cart-drawer-summary-sticky-compensation-container.toggleClass(class='visible', force=false)"
11596        @invisible="cart-drawer-summary-sticky-render.toggleClass(class='visible', force=true);cart-drawer-summary-sticky-compensation-container.toggleClass(class='visible', force=true)"
11597      ></spz-observer>
11598      <spz-observer
11599        layout="logic"
11600        target="cart-drawer-content"
11601        @childUpdated="cart-drawer-summary-sticky-observer.restart"
11602      ></spz-observer>
11603    </section>
11604  </template>
11605</spz-render>
11606        </div>
11607
11608    <div class="cart-drawer-summary-sticky-compensation-container" id="cart-drawer-summary-sticky-compensation-container"></div>
11609  </spz-sidebar>
11610
11611  <spz-render class="cart-drawer-summary-sticky-render i-spzhtml-layout-container" id="cart-drawer-summary-sticky-render" layout="container" manual i-spzhtml-layout="container">
11612  <template>
11613    <div class="cart-drawer-summary-sticky ${(data.line_items && data.line_items.length) == 0 ? 'hidden' : ''}">
11614      <div class="cart-drawer-invalid-msg lg:hidden mb-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div>
11615
11616      <div>
11617        <div class="md:flex md:items-center md:justify-between">
11618          <div class="md:flex md:flex-col md:items-start">
11619            <div class="md:flex md:items-center md:flex-wrap">
11620              <div class="flex font-medium body-plus-2 leading-1.25 lg:items-center lg:justify-between">
11621                <span class="md:color-body-70">Total:&nbsp;</span>
11622                <div class="flex items-center">
11623                  <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
11624                  </div>
11625              </div>
11626              </div>
11627
11628            <div class="cart-drawer-summary-discount-list flex flex-col items-end" id="cart-drawer-summary-sticky-discount-list" spz-if="${data.total_discount > 0}">
11629              <div class="cart-drawer-summary-discount-btn" spz-if="${!!(data.discount_applications && data.discount_applications.length <= 0)}">
11630                <span class="leading-1.2 body-minus-2">
11631                  ${function() {
11632  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
11633  if (textArray.length > 0 && textArray.length < 2) {
11634    textArray.push('');
11635  }
11636  return textArray.map((text, index) => {
11637    if (index == 0) {
11638      return `<span>${text}</span>`;
11639    }
11640
11641    return `
11642      <span class="notranslate whitespace-nowrap">
11643        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
11644      </span>
11645      <span>${text}</span>
11646    `;
11647  }).join('');
11648}()}
11649                </span>
11650              </div>
11651              <div spz-else>
11652                <div class="cart-drawer-summary-discount-btn md:hidden" @tap="cart-drawer-summary-sticky-discount-list.toggleClass(class='open');cart-drawer-summary-discount-list.toggleClass(class='open');" >
11653                  <span class="leading-1.2 body-minus-2">
11654                    ${function() {
11655  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
11656  if (textArray.length > 0 && textArray.length < 2) {
11657    textArray.push('');
11658  }
11659  return textArray.map((text, index) => {
11660    if (index == 0) {
11661      return `<span>${text}</span>`;
11662    }
11663
11664    return `
11665      <span class="notranslate whitespace-nowrap">
11666        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
11667      </span>
11668      <span>${text}</span>
11669    `;
11670  }).join('');
11671}()}
11672                  </span>
11673                  <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg>
11674                </div>
11675                <div class="cart-drawer-summary-discount-btn lg:hidden" @tap="cart-drawer-summary-sticky-modal.open;">
11676                  <span class="leading-1.2 body-minus-2">
11677                    ${function() {
11678  const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/);
11679  if (textArray.length > 0 && textArray.length < 2) {
11680    textArray.push('');
11681  }
11682  return textArray.map((text, index) => {
11683    if (index == 0) {
11684      return `<span>${text}</span>`;
11685    }
11686
11687    return `
11688      <span class="notranslate whitespace-nowrap">
11689        <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency>
11690      </span>
11691      <span>${text}</span>
11692    `;
11693  }).join('');
11694}()}
11695                  </span>
11696                  <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg>
11697                </div>
11698              </div>
11699
11700              <ul class="md:hidden clear w-full mt-1 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}">
11701                <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications">
11702                  <span>${discount_application.title}:</span>
11703                  <span class="notranslate ml-2 whitespace-nowrap">
11704                    -<spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency>
11705                  </span>
11706                </li>
11707              </ul>
11708            </div>
11709          </div>
11710          <button
11711  type="button"
11712  class="cart-drawer-checkout-btn cart-drawer-checkout-btn-mobile ml-2 lg:hidden button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
11713  data-track="checkout-submit,click"
11714  data-track-content="checkout"
11715  data-track-source="checkout"
11716  @tap="cart-drawer.checkout;"
11717>
11718  <span>Check out</span>
11719  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
11720  <div class="loading-bounce"></div>
11721</div>
11722</button>
11723        </div>
11724
11725        <div class="cart-drawer-invalid-msg md:hidden mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div>
11726
11727        <button
11728  type="button"
11729  class="cart-drawer-checkout-btn md:hidden button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
11730  data-track="checkout-submit,click"
11731  data-track-content="checkout"
11732  data-track-source="checkout"
11733  @tap="cart-drawer.checkout;"
11734>
11735  <span>Check out</span>
11736  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
11737  <div class="loading-bounce"></div>
11738</div>
11739</button>
11740
11741        <div class="mt-2 color-body-70 text-right lg:text-center">Taxes and shipping calculated at checkout</div>
11742      </div>
11743
11744      <spz-sidebar class="cart-drawer-summary-sticky-modal lg:hidden" id="cart-drawer-summary-sticky-modal" layout="nodisplay" side="bottom" hidden  @open="cart-drawer-modal.toggleClass(class='deepen', force=true);" @beforeClose="cart-drawer-modal.toggleClass(class='deepen', force=false);" >
11745  <div class="cart-drawer-summary-sticky-modal-inner relative">
11746    <div class="flex justify-end">
11747      <button class="cart-drawer-summary-sticky-modal-close clear flex p-2 cursor-pointer" @tap="cart-drawer-summary-sticky-modal.close();" type="button">
11748        <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg>
11749      </button>
11750    </div>
11751
11752    <ul class="clear w-full mt-3 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}">
11753      <li class="flex items-center justify-between">
11754        <span>Subtotal:</span>
11755        <span class="notranslate ml-2 whitespace-nowrap">
11756          <spz-currency class="inline-block" layout="container" value="${data.line_price}"></spz-currency>
11757        </span>
11758      </li>
11759      <li class="flex items-center justify-between mt-2" spz-for="(discount_application,index) in data.discount_applications">
11760        <span>${discount_application.title}:</span>
11761        <span class="notranslate ml-2 whitespace-nowrap">
11762          <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency>
11763        </span>
11764      </li>
11765    </ul>
11766
11767    <div class="flex items-start justify-between mt-2 font-medium body-plus-2 leading-1.25">
11768      <span>Total:</span>
11769      <div class="flex items-center">
11770        <spz-currency class="color-price" container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency>
11771        </div>
11772    </div>
11773    <button
11774  type="button"
11775  class="cart-drawer-checkout-btn mt-4 button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2"
11776  data-track="checkout-submit,click"
11777  data-track-content="checkout"
11778  data-track-source="checkout"
11779  @tap="cart-drawer.checkout;"
11780>
11781  <span>Check out</span>
11782  <div class="loading items-center justify-center absolute inset-0 flex" role="loading"   show >
11783  <div class="loading-bounce"></div>
11784</div>
11785</button>
11786    <div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div>
11787  </div>
11788</spz-sidebar>
11789
11790      <spz-script layout="logic" scope="cart-drawer-modal" type="application/javascript" hidden>
11791        const summaryStickyRender = document.querySelector('#cart-drawer-summary-sticky-render');
11792        if (summaryStickyRender) {
11793          document.body.style.setProperty('--cart-drawer-summary-sticky-height', summaryStickyRender.clientHeight + 'px');
11794        }
11795      </spz-script>
11796    </div>
11797  </template>
11798</spz-render>
11799</div>
11800    </div>
11801    
11801<script type="application/ld+json">
11802  {
11803    "@context": "http://schema.org",
11804    "@type": "WebSite",
11805    "name": "nisartmacka",
11806    "url": "https://www.nisartmacka.com"
11807  }
11808</script>
11808
11809<div class="theme-toast-wrap lg:page-container flex justify-end">
11810  <spz-toast class="theme-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="theme-toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"></spz-toast>
11811  <spz-toast class="theme-toast p-4 lg:py-8 lg:px-5 leading-1.2 flex items-center i-spzhtml-layout-nodisplay" id="theme-toast-success" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
11812    <svg class="flex-shrink-0 mr-3" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M3.088 8.895a.3.3 0 0 0 0 .424l3.608 3.608a.6.6 0 0 0 .848 0l7.85-7.85a.3.3 0 0 0 0-.423l-.567-.566a.3.3 0 0 0-.424 0L7.12 11.37 4.078 8.33a.3.3 0 0 0-.424 0l-.566.566z" fill="currentColor"/></svg>
11813    <span role="content"></span>
11814  </spz-toast>
11815</div>
11816    <div class="add_cart-toast-wrap lg:page-container flex justify-end">
11817  <spz-toast class="add_cart-toast p-4 lg:py-8 lg:px-5 leading-1.2 flex items-center i-spzhtml-layout-nodisplay" id="add-card-toast-success" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay">
11818    <span class="flex justify-between items-center w-full">
11819      <span role="content"></span>
11820      <a class="toast_view_cart inline-block font-bold text-base leading-1.1 cursor-pointer no-underline" href="/cart">View Cart</a>
11821    </span>
11822  </spz-toast>
11823</div>
11824    <style>
11825  .quick-shop .i-spzhtml-fill-content {
11826    display: flex;
11827    align-items: center;
11828    justify-content: center;
11829  }
11830
11831  .quick-shop-render {
11832    height: auto !important;
11833    width: 100%;
11834  }
11835
11836  .quick-shop-render[loading],
11837  .quick-shop-render[loading] ~ .quick-shop-close-btn {
11838    display: none;
11839  }
11840
11841  .quick-shop-content {
11842    position: relative;
11843    max-height: 86vh;
11844    overflow-y: auto;
11845    box-sizing: border-box;
11846    padding: 28px 24px 36px;
11847    max-width: 86vw;
11848    width: 100%;
11849    background-color: var(--color-body-bg);
11850    overflow-y: auto;
11851    transition: all .2s ease-in-out
11852  }
11853
11854  /* variants */
11855  .quick-shop__variants_content {
11856    padding: 0;
11857    border: none;
11858  }
11859
11860  .quick-shop__variants_content input[type=radio] {
11861    position: absolute;
11862    left: 0;
11863    right: 0;
11864    opacity: 0;
11865    width: 100%;
11866    height: 100%;
11867    z-index: 10;
11868    border: 0;
11869    margin: 0;
11870    cursor: pointer;
11871  }
11872
11873  .quick-shop-variant-option {
11874    position: relative;
11875    border: 2px solid #E6E6E6;
11876    color: var(--color-body-text-75);
11877  }
11878
11879  .quick-shop-variant-option[data-type="text"] {
11880    display: flex;
11881    align-items: center;
11882    justify-content: center;
11883    min-width: 44px;
11884  }
11885
11886  .quick-shop-variant-option[data-type="image-with-text"] {
11887    min-height: 52px;
11888  }
11889
11890  .quick-shop-variant-option:not([data-type="image"]) {
11891    border: 2px solid #E6E6E6;
11892  }
11893
11894  .quick-shop-variant-option[data-type="image-with-text"] > spz-img {
11895    width: 42px;
11896    height: 42px;
11897    border-radius: 1px;
11898  }
11899
11900  .quick-shop-variant-option[data-type="image"] > spz-img {
11901    width: 52px;
11902    height: 52px;
11903    border-radius: 1px;
11904  }
11905
11906  .quick-shop__variants_content input[type=radio]:checked + .quick-shop-variant-option {
11907    color: var(--color-body-text);
11908    outline: none;
11909    border-color: var(--color-body-text);
11910  }
11911
11912  .quick-shop__variant__select {
11913    min-height: 46px;
11914    line-height: 46px;
11915    padding-right: 46px;
11916    padding-left: 12px;
11917  }
11918
11919  .quick-shop__variant__select-icon {
11920    position: absolute;
11921    display: flex;
11922    top: 50%;
11923    right: 12px;
11924    transform: translateY(-50%) rotate(90deg);
11925    pointer-events: none;
11926  }
11927
11928  .quick-shop-close-btn {
11929    height: 66px;
11930    width: 66px;
11931    cursor: pointer;
11932    opacity: .7;
11933    z-index: 10;
11934  }
11935
11936  #quick-shop-render[loading] ~ .quick-shop-loading {
11937    display: block !important;
11938  }
11939
11940  /* qty */
11941  .quick-shop-qty {
11942    width: 116px;
11943  }
11944
11945  .quick-shop-qty > .i-spzhtml-fill-content {
11946    display: flex;
11947    align-items: center;
11948  }
11949
11950  .quick-shop-qty-btn {
11951    width: 40px;
11952    height: 100%;
11953    border: 1px solid rgba(230, 230, 230, 1);
11954  }
11955
11956  .quick-shop-qty-btn[disabled] {
11957    background-color: rgba(230, 230, 230, 1);
11958  }
11959
11960  .quick-shop-qty-input {
11961    width: 36px;
11962  }
11963
11964  /* buy button */
11965  .quick-shop_atc_btn {
11966    height: 52px;
11967    width: 100%;
11968    padding: 0;
11969    font-weight: 600;
11970    outline: 2px solid transparent;
11971    outline-offset: 2px;
11972  }
11973
11974  #quick-shop-body[status="product_unavailable"] [role="addToCart"],
11975  #quick-shop-body[status="soldout"] [role="addToCart"] {
11976    cursor: default;
11977    pointer-events: none;
11978    background-color: rgb(230, 230, 230, 0.5);
11979    color: #9F9F9F;
11980  }
11981
11982  #quick-shop-body[status="product_unavailable"] #quick-shop-btn-price,
11983  #quick-shop-body[status="soldout"] #quick-shop-btn-price,
11984  .quick-shop_atc_btn[loading] [role="content"],
11985  .quick-shop_atc_btn:not([loading]) .loading,
11986  .quick-shop_atc_btn[role="addToCart"][loading] #quick-shop-btn-price {
11987    display: none;
11988  }
11989
11990  .quick-shop_buy_now_btn {
11991    border: 1px solid var(--color-primary-btn-bg);
11992  }
11993
11994  /* wholesale */
11995  .quick-shop-wholesale {
11996    overflow-y: hidden;
11997    overflow-x: auto;
11998    background: #F9F9FA;
11999  }
12000
12001  .quick-shop-wholesale-item:nth-child(n + 2) {
12002    margin-left: 8px;
12003  }
12004
12005  .quick-shop-wholesale-item .money {
12006    color: var(--color-price-text);
12007  }
12008
12009  .quick-shop-wholesale-item.highlight .money {
12010    color: var(--color-save-price-text)
12011  }
12012
12013  @media (max-width: 959.98px) {
12014    #quick-shop {
12015      padding: 0 18px;
12016    }
12017
12018    #quick-shop > .quick-shop-container{
12019      width: 100%;
12020    }
12021  }
12022
12023  @media (min-width: 960px) {
12024    .quick-shop-render {
12025      width: 495px;
12026    }
12027    .quick-shop-content {
12028      padding: 32px 24px;
12029    }
12030  }
12031</style>
12032<spz-lightbox class="quick-shop i-spzhtml-layout-nodisplay" id="quick-shop" layout="nodisplay" hidden="" unclose-in-focus style="display: none" i-spzhtml-layout="nodisplay">
12033    <div class="quick-shop-container">
12034      <div class="relative">
12035        <spz-render class="quick-shop-render pointer-events-auto w-full i-spzhtml-layout-container" id="quick-shop-render" items="data" layout="container" @finish="quick-shop-variants.variantsRender(product=event.data.product);quick-shop-body.setProduct(data=event.data.product);quick-shop-btn-price.rerender(data=event.data);" manual i-spzhtml-layout="container">
12036          <template>
12037            ${function(){
12038              const productData = data.product;
12039              let product_change_event = '',
12040                  mouse_over_event = ' ';
12041                  mouse_out_event = '';
12042              const product_options = productData.options.filter(Boolean) || [];
12043              for (let opt of product_options) {
12044                const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '')
12045                product_change_event = product_change_event + `quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`;
12046                mouse_out_event = mouse_out_event + `@${nameEscape}Mouseout="quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name}, redo=true);"`;
12047                mouse_over_event = mouse_over_event + `@${nameEscape}Mouseover="quick-shop-selected-variant-${opt.id}.rerender(data=event, redo=true);"`;
12048              }
12049              const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0];
12050              const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ?
12051                "Sold out" :
12052                "Add to cart";
12053
12054              return `
12055                <div>
12056                  <spz-product-form
12057                    id="quick-shop-body"
12058                    product-unavailable-status
12059                    product-id="${productData.id}"
12060                    variant-id="${selectedVariant.id}"
12061                    layout="container"
12062                    @atcSuccess="quick-shop.close;"
12063                    @atcError="theme-toast.showToast(content=event.message);"
12064                    @productChange="quick-shop-btn-price.rerender(data=event);${product_change_event}"
12065                  >
12066                    <form>
12067                      <div class="quick-shop-content rounded-global-small">
12068                        <div class="quick-shop-inner-content">
12069                          <spz-variants
12070                            name="quick-shop-variant"
12071                            id="quick-shop-variants"
12072                            class="pointer-events-none"
12073                            layout="container"
12074                            template="quick-shop-variant-template"
12075                            spz-if="${product_options && product_options.length > 0}"
12076                            interact="hover"
12077                            interference
12078                            ${mouse_out_event}
12079                            ${mouse_over_event}
12080                          ></spz-variants>
12081                          
12082                          <button
12083                            class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2  type-text-font-family rounded-btn quick-shop_atc_btn"
12084                            type="button"
12085                            role="addToCart"
12086                            data-track="click"
12087                            data-track-content="add_to_cart"
12088                            data-track-source="add_to_cart"
12089                          >
12090                            <span role="content">${statusLan}</span>
12091                            
12092                              <spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual></spz-render>
12093                            
12094                            
12095
12096<div class="loading items-center justify-center absolute inset-0" role="loading"   show >
12097  <div class="loading-bounce"></div>
12098</div>
12099                          </button>
12100                        </div>
12101                      </div>
12102                    </form>
12103                  </spz-product-form>
12104                </div>
12105              `
12106            }()}
12107          </template>
12108        </spz-render>
12109        <spz-loading class="quick-shop-loading i-spzhtml-layout-container" layout="container" role="mask" hidden i-spzhtml-layout="container"></spz-loading>
12110        <div class="quick-shop-close-btn absolute right-0 top-0 text-current flex items-center justify-center no-underline text-2xl" @tap="quick-shop.close;"><svg class="" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M5.034 3.652a.367.367 0 0 0-.518 0l-.864.864a.367.367 0 0 0 0 .519l5.963 5.963-5.963 5.963a.367.367 0 0 0 0 .519l.864.864a.367.367 0 0 0 .518 0l5.964-5.963 5.963 5.963a.367.367 0 0 0 .519 0l.864-.864a.367.367 0 0 0 0-.519l-5.964-5.963 5.964-5.963a.367.367 0 0 0 0-.519l-.864-.864a.367.367 0 0 0-.519 0l-5.963 5.963-5.964-5.963z" fill="currentColor"/></svg></div>
12111      </div>
12112
12113      <template id="quick-shop-retail-price-template">
12114          ${function(){
12115            const currentSelectVariant = data.variant;
12116            const defaultVariant = (data.product && data.product.variants && data.product.variants[0]);
12117
12118            const variantData = currentSelectVariant || defaultVariant || data;
12119            const retail_price = variantData.retail_price || 0;
12120            return `
12121              <div>
12122                <div class="flex color-compare-price mt-3" spz-if="${retail_price>0}">
12123                  <span class="mr-1">Retail</span> <spz-currency value="${retail_price}" layout="container"></spz-currency>
12124                </div>
12125              </div>
12126            `
12127          }()}
12128      </template>
12129      <style>
12130  .product_price_before::before {
12131    content: ' - ';
12132    display: block;
12133    width: 20px;
12134  }
12135</style>
12136<template id="quick-shop-button-price-template">
12137  ${function(){
12138    const wholesale_enabled = false;
12139    const qty = data.quantity || 1;
12140    const currentSelectVariant = data.variant;
12141    const defaultVariant = (data.product && data.product.variants && data.product.variants[0]);
12142    const productVariant = null;
12143
12144    const variantData = currentSelectVariant || defaultVariant || productVariant;
12145    const wholesale_price = variantData.wholesale_price || [];
12146
12147    if(wholesale_enabled && wholesale_price.length > 0) {
12148      let wholesaleIndex = wholesale_price.findIndex(item => {
12149        return item.min_quantity > qty;
12150      });
12151      if(wholesaleIndex < 0){
12152        wholesaleIndex = wholesale_price.length - 1;
12153      }else if(wholesaleIndex > 0){
12154        wholesaleIndex = wholesaleIndex - 1;
12155      }
12156      const wholesalePrice = wholesale_price[wholesaleIndex] || '';
12157      return `
12158        <div class="flex">
12159          <span class="product_price_before"></span><spz-currency value="${wholesalePrice.price}" layout="container"></spz-currency>
12160        </div>
12161      `
12162    }else {
12163      const price = variantData && variantData.price;
12164      return price != undefined ? `<div class="flex"><span class="product_price_before"></span><spz-currency value="${price}" layout="container"></spz-currency></div>` : '<span></span>';
12165    }
12166  }()}
12167</template>
12168      </div>
12169  </spz-lightbox>
12170  <template id="quick-shop-variant-template">
12171  <div class="quick-shop-variants-container">
12172    ${function() {
12173      let variantImageShowed = false;
12174      const currentProduct = data.product;
12175
12176      return (currentProduct.options || []).map((option, index) => {
12177        const optionName = option.name || '';
12178        const optionId = option.id || '';
12179        const position = `option${index + 1}`;
12180
12181        let isThumbImage = false;
12182        if (currentProduct.need_variant_image && !variantImageShowed) {
12183          const variantNames = ["color"] || [];
12184          for (let i = 0, len = variantNames.length; i < len; i++) {
12185            const name = variantNames[i].toLowerCase();
12186            if (name === optionName.toLowerCase()) {
12187              isThumbImage = true;
12188              variantImageShowed = true;
12189            }
12190          }
12191        }
12192        const variantType = "button";
12193        const thumbStyle = "image_with_text";
12194
12195        return `
12196          <fieldset spz-if="${variantType=='button' || isThumbImage}" class="quick-shop__variants_content mt-6 mx-0 min-w-[0px]" name="${optionName}">
12197            <legend class="quick-shop__variants_title flex items-center max-w-full">
12198              <span class="lg:body-plus-2 leading-1.3 flex-shrink-0 inline-block">${optionName}:&nbsp;</span>
12199              <spz-render spz-if="${isThumbImage}" class="flex items-center opacity-60 inline-block flex-grow min-w-[0px]" id="quick-shop-selected-variant-${optionId}" layout="container" template="quick-shop-selected-variant-template" manual></spz-render>
12200            </legend>
12201            <div class="flex flex-wrap ${isThumbImage ? 'mt-1' : 'quick-shop-variant-container'}">
12202              ${option.values.map((value, idx) => {
12203                const selected = data.selectedValues[optionName] == value ? 'checked' : '';
12204
12205                let thumbImage = null;
12206                if (isThumbImage) {
12207                  const variants = currentProduct.variants;
12208                  for (let i = 0, len = variants.length; i < len; i++) {
12209                    const variant = variants[i];
12210                    if (variant[position] == value && thumbImage == null) {
12211                      thumbImage = variant.image;
12212                      break;
12213                    }
12214                  }
12215                }
12216
12217                return `
12218                  <div class="relative mt-3 mr-3" option="${value}">
12219                    <input
12220                      type="radio"
12221                      class="pointer-events-auto"
12222                      option="${value}"
12223                      id="quick-shop-variant-${value}-${idx}"
12224                      name="quick-shop-variant-${optionName}"
12225                      value="${value}"
12226                      form="quick-shop-body"
12227                      @input-debounced="quick-shop-selected-variant-${optionId}.rerender(data=event, redo=true);"
12228                      ${selected}
12229                    >
12230                    <label
12231                      class="quick-shop-variant-option relative flex items-center break-words flex-shrink-0 
12232  rounded-[1px] 
12233"
12234                      data-type="${isThumbImage ? (thumbStyle == 'image_with_text' ? 'image-with-text' : 'image') : 'text'}"
12235                      for="quick-shop-variant-${value}-${idx}">
12236                        <spz-img spz-if="${isThumbImage}" class="${thumbStyle == 'image_with_text' ? 'ml-1' : ''}" src="${thumbImage && thumbImage.src}" layout="responsive" width="42" height="42" alt="${thumbImage && thumbImage.alt}" object-fit="cover" auto-fit></spz-img>
12237                        <span spz-if="${thumbStyle == 'image_with_text' || !isThumbImage}" class="break-words py-2 px-3">${value}</span>
12238                    </label>
12239                  </div>
12240                `
12241              }).join('')}
12242            </div>
12243          </fieldset>
12244          <div spz-else class="mt-6">
12245            <div class="lg:body-plus-2 leading-1.3">${optionName}</div>
12246            <div class="relative mt-3">
12247              <select class="quick-shop__variant__select pointer-events-auto w-full text-text-font-size type-text-font-family 
12248  rounded-[1px] 
12249secondary-select" role="variant" name="${optionName}">
12250                ${option.values.map(value => {
12251                  const selected = data.selectedValues[optionName] == value ? 'selected' : '';
12252                  return `<option class="quick-shop__variants_value" value="${value}" option="${value}" ${selected}>${value}</option>`
12253                }).join('')}
12254              </select>
12255              <svg   class="quick-shop__variant__select-icon" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 
122550l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"/></svg>
12256</div>
12257          </div>
12258        `
12259      }).join('');
12260    }()}
12261  </div>
12262</template>
12263<template id="quick-shop-selected-variant-template">
12264  <span class="inline-block truncate max-w-full" title="${data.originData && data.originData.value || data.value}">
12265    ${data.originData && data.originData.value || data.value}
12266  </span>
12267</template>
12268
12269<script type="text/javascript" async src="https://static.staticdj.com/seahorse/bottom_v2.335e01c1.js"></script>
vendor: 1 bytes, line 12269
12269
12270<script type="text/javascript" async src="https://static.staticdj.com/golden/bottom_v2.157d17d3.js"></script>
vendor: 1 bytes, line 12270
12270
12271<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"basic":"basic.c50df513.js"});</script>
vendor: 1 bytes, line 12271
12271
12272<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"cart_pop":"cart_pop.c733db0f.js"});</script>
vendor: 1 bytes, line 12272
12272
12273<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"couponcode":"couponcode.0cd81091.js"});</script>
vendor: 1 bytes, line 12273
12273
12274<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"bear":"bear.4241d627.js"});</script>
vendor: 1 bytes, line 12274
12274
12275<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"bundle":"bundle.a029e922.js"});</script>
vendor: 1 bytes, line 12275
12275
12276<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"filly":"filly.b9085eb2.js"});</script>
vendor: 1 bytes, line 12276
12276
12277<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"discount_gifts":"discount_gifts.87837098.js"});</script>
vendor: 1 bytes, line 12277
12277
12278<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"blog_products":"blog_products.b67b5c27.js"});</script>
vendor: 1 bytes, line 12278
12278
12279<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"google_form":"google_form.025d905a.js"});</script>
vendor: 1 bytes, line 12279
12279
12280<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"zebu":"zebu.e8dece57.js"});</script>
vendor: 1 bytes, line 12280
12280
12281<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"buy_on_others":"buy_on_others.d678fa5c.js"});</script>
vendor: 1 bytes, line 12281
12281
12282<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"variants_combination":"variants_combination.17e6b308.js"});</script>
vendor: 1 bytes, line 12282
12282
12283<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"translate":"translate.5c34eee2.js"});</script>
vendor: 1 bytes, line 12283
12283
12284<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"discount_gifts_v2":"discount_gifts_v2.a34137af.js"});</script>
vendor: 1 bytes, line 12284
12284
12285<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"image_video":"image_video.b713d119.js"});</script>
vendor: 1 bytes, line 12285
12285
12286<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"reviews":"reviews.77c0cadd.js"});</script>
vendor: 1 bytes, line 12286
12286
12287<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"privacy_app":"privacy_app.ade927e4.js"});</script>
vendor: 1 bytes, line 12287
12287
12288<script type="text/javascript">
12289  (function () {
12290    if (!C_SETTINGS.payment_settings.paypal_express_enabled) return;
12291    if ((window.disabled_exts || []).indexOf("*") != -1 || (window.disabled_exts || []).indexOf("paypal_express") != -1) return;
12292    function getCookie(name) {
12293      var match = document.cookie.match(new RegExp(name + '=([^;]+)'));
12294      return (match && match[1]) || '';
12295    }
12296    var ppStamp = (getCookie('awesomeab').match(/paypal-express-([vs0-9]+)/) || ['', ''])[1];
12297    var entry = ppStamp ? 'paypal_express.' + ppStamp + '.js' : 'paypal_express.70c809e1.js';
12298    var s = document.createElement('script');
12299    s.crossOrigin = "anonymous";
12300    s.async = !0;
12301    s.src = SHOP_PARAMS.cdn_domain + entry;
12302    document.body.appendChild(s);
12303
12304  })();
12305</script>
vendor: 1 bytes, line 12305
12305
12306<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"fb_messenger":"fb_messenger.1de139d2.js"});</script>
vendor: 1 bytes, line 12306
12306
12307<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"common":"common.e560ab2c.js"});</script>
vendor: 1 bytes, line 12307
12307
12308<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"installment":"installment.e24868df.js"});</script>
vendor: 1 bytes, line 12308
12308
12309<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"stamped_frontend":"stamped_frontend.f67dcbe7.js"});</script>
vendor: 1 bytes, line 12309
12309
12310<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"multi_market":"multi_market.85145627.js"});</script>
vendor: 1 bytes, line 12310
12310
12311<script type='text/javascript'>(window._ext || (window._ext =[])).push('currency');</script>
vendor: 1 bytes, line 12311
12311
12312<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"product_detail_rebate":"product_detail_rebate.cbca7ec3.js"});</script>
vendor: 1 bytes, line 12312
12312
12313<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"buffalo":"buffalo.e0f4e5cf.js"});</script>
vendor: 1 bytes, line 12313
12313
12314<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"jellyfish":"jellyfish.f9cc89bb.js"});</script>
vendor: 1 bytes, line 12314
12314
12315<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"currency":"currency.ca2b3757.js"});</script>
vendor: 1 bytes, line 12315
12315
12316<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"vole":"vole.de34b0f2.js"});</script>
vendor: 1 bytes, line 12316
12316
12317<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"wishlist":"wishlist.0fc03a14.js"});</script>
vendor: 1 bytes, line 12317
12317
12318<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"social_login":"social_login.537a8e8f.js"});</script>
vendor: 1 bytes, line 12318
12318
12319<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"numbat":"numbat.14e8199b.js"});</script>
vendor: 1 bytes, line 12319
12319
12320<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"subscription_popups":"subscription_popups.9a18a460.js"});</script>
vendor: 1 bytes, line 12320
12320
12321<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"coupon":"coupon.07fd62a8.js"});</script>
vendor: 1 bytes, line 12321
12321
12322<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"top_products":"top_products.4da4f6f3.js"});</script>
vendor: 1 bytes, line 12322
12322
12323<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"appparakeet":"appparakeet.537f9b5b.js"});</script>
vendor: 1 bytes, line 12323
12323
12324<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"recommended_product":"recommended_product.b4592e0a.js"});</script>
vendor: 1 bytes, line 12324
12324
12325<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"boowc":"boowc.15caf0e7.js"});</script>
vendor: 1 bytes, line 12325
12325
12326<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"add_to_cart":"add_to_cart.6cde2531.js"});</script>
vendor: 1 bytes, line 12326
12326
12327<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"apptrustpilot-plugin":"apptrustpilot-plugin.7edc2607.js"});</script>
vendor: 1 bytes, line 12327
12327
12328<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"sales_pop":"sales_pop.0410e3b6.js"});</script>
vendor: 1 bytes, line 12328
12328
12329<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"sloth":"sloth.cc72648e.js"});</script>
vendor: 1 bytes, line 12329
12329
12330<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"size_guide":"size_guide.ac4ad793.js"});</script>
12330
12331
12332<script>
12333~(function() {
12334  // checkout page
12335  if (window.SHOP_PARAMS.template_type === '14') {
12336    return;
12337  }
12338  function track(event, params) {
12339    if (window.sa && window.sa.track && typeof window.sa.track === 'function') {
12340      window.sa.track(event, params);
12341    };
12342  }
12343  function preload() {
12344    var script = document.createElement('script');
12345    script.async = true;
12346    script.src = '/api/preload-checkout?t=' + Date.now();
12347    var loadStart = Date.now();
12348    track('preload_checkout_start');
12349    script.addEventListener('load', function() {
12350      track('preload_checkout_loaded', { load_duration: Date.now() - loadStart });
12351    });
12352    script.addEventListener('error', function(e) {
12353      track('preload_checkout_error', { load_duration: Date.now() - loadStart });
12354    });
12355    document.body.appendChild(script);
12356  }
12357
12358  try {
12359      var ab = document.cookie.split(';').find(function (i) { return /awesomeab=/.test(i); });
12360      var version = 'default';
12361      if (ab) {
12362        var chickNext = decodeURIComponent(ab).split('=')[1].split(',').find(function (i) { return /chick-next/.test(i); });
12363        if (chickNext) version = chickNext;
12364      }
12365
12366      var loadedObj = JSON.parse(sessionStorage.getItem('preload_checkout_loaded_v1') || '{}');
12367
12368      if (loadedObj[version] && loadedObj[version]['allLoaded']) return;
12369    } catch (e) {}
12370
12371    window.addEventListener('load', preload);
12372})();
12373</script>
12373
12374
12375<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"flashsale":"flashsale.d2ddc7ab.js"});</script>
vendor: 1 bytes, line 12375
12375
12376<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"plugin_parakeet":"plugin_parakeet.6893a874.js"});</script>
vendor: 1 bytes, line 12376
12376
12377<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"trout":"trout.47f21cf1.js"});</script>
12377
12378</body>
12379</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.