shoplazza-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/.editorconfig +28 -0
  2. package/.prettierrc +9 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -0
  5. package/bin/shoplazza +117 -0
  6. package/fixtures/assets/blog.scss +74 -0
  7. package/fixtures/assets/cart_modal.scss +450 -0
  8. package/fixtures/assets/collection_detail.js +234 -0
  9. package/fixtures/assets/collection_detail.scss +345 -0
  10. package/fixtures/assets/collection_list.scss +11 -0
  11. package/fixtures/assets/collection_slider.scss +169 -0
  12. package/fixtures/assets/feature_columns.scss +26 -0
  13. package/fixtures/assets/feature_product.scss +109 -0
  14. package/fixtures/assets/footer.js +58 -0
  15. package/fixtures/assets/footer.scss +337 -0
  16. package/fixtures/assets/four_images.scss +29 -0
  17. package/fixtures/assets/gallery.scss +55 -0
  18. package/fixtures/assets/header.js +178 -0
  19. package/fixtures/assets/header.scss +929 -0
  20. package/fixtures/assets/image_text.scss +72 -0
  21. package/fixtures/assets/logo_bar.scss +11 -0
  22. package/fixtures/assets/newsletter.scss +90 -0
  23. package/fixtures/assets/not_found.scss +39 -0
  24. package/fixtures/assets/page_detail.scss +16 -0
  25. package/fixtures/assets/pagination.scss +150 -0
  26. package/fixtures/assets/postcss.config.js +6 -0
  27. package/fixtures/assets/product_description.scss +88 -0
  28. package/fixtures/assets/product_detail.js +634 -0
  29. package/fixtures/assets/product_detail.scss +1106 -0
  30. package/fixtures/assets/relative_product.scss +45 -0
  31. package/fixtures/assets/reviews.scss +70 -0
  32. package/fixtures/assets/rich_text.scss +71 -0
  33. package/fixtures/assets/search.js +87 -0
  34. package/fixtures/assets/search.scss +67 -0
  35. package/fixtures/assets/slide.scss +51 -0
  36. package/fixtures/assets/slider.scss +141 -0
  37. package/fixtures/assets/theme.css +976 -0
  38. package/fixtures/assets/theme.scss +1100 -0
  39. package/fixtures/assets/three_images.scss +20 -0
  40. package/fixtures/assets/tools.scss +23 -0
  41. package/fixtures/assets/two_images.scss +24 -0
  42. package/fixtures/assets/video.scss +45 -0
  43. package/fixtures/assets/video_text.scss +63 -0
  44. package/fixtures/config/settings_data.json +107 -0
  45. package/fixtures/config/settings_schema.json +690 -0
  46. package/fixtures/layout/theme.liquid +76 -0
  47. package/fixtures/locales/ar-SA.json +212 -0
  48. package/fixtures/locales/de-DE.json +290 -0
  49. package/fixtures/locales/en-US.json +290 -0
  50. package/fixtures/locales/es-ES.json +290 -0
  51. package/fixtures/locales/fr-FR.json +290 -0
  52. package/fixtures/locales/id-ID.json +212 -0
  53. package/fixtures/locales/it-IT.json +212 -0
  54. package/fixtures/locales/ja-JP.json +289 -0
  55. package/fixtures/locales/ko-KR.json +290 -0
  56. package/fixtures/locales/nl-NL.json +290 -0
  57. package/fixtures/locales/pl-PL.json +290 -0
  58. package/fixtures/locales/pt-PT.json +212 -0
  59. package/fixtures/locales/ru-RU.json +212 -0
  60. package/fixtures/locales/th-TH.json +212 -0
  61. package/fixtures/locales/zh-CN.json +290 -0
  62. package/fixtures/locales/zh-TW.json +290 -0
  63. package/fixtures/sections/apps.liquid +47 -0
  64. package/fixtures/sections/blog.liquid +137 -0
  65. package/fixtures/sections/collection_desc.liquid +34 -0
  66. package/fixtures/sections/collection_detail.liquid +436 -0
  67. package/fixtures/sections/collection_image.liquid +104 -0
  68. package/fixtures/sections/collection_list.liquid +161 -0
  69. package/fixtures/sections/collection_name.liquid +34 -0
  70. package/fixtures/sections/collection_slider.liquid +330 -0
  71. package/fixtures/sections/feature_columns.liquid +275 -0
  72. package/fixtures/sections/feature_product.liquid +227 -0
  73. package/fixtures/sections/footer.liquid +488 -0
  74. package/fixtures/sections/four_images.liquid +160 -0
  75. package/fixtures/sections/gallery.liquid +258 -0
  76. package/fixtures/sections/header.liquid +1157 -0
  77. package/fixtures/sections/html.liquid +40 -0
  78. package/fixtures/sections/image_text.liquid +350 -0
  79. package/fixtures/sections/instagram_plus.liquid +393 -0
  80. package/fixtures/sections/logo_bar.liquid +183 -0
  81. package/fixtures/sections/newsletter.liquid +225 -0
  82. package/fixtures/sections/not_found.liquid +39 -0
  83. package/fixtures/sections/overlay_image.liquid +648 -0
  84. package/fixtures/sections/page_detail.liquid +39 -0
  85. package/fixtures/sections/photo_collection.liquid +433 -0
  86. package/fixtures/sections/product_description.liquid +208 -0
  87. package/fixtures/sections/product_detail.liquid +611 -0
  88. package/fixtures/sections/products.liquid +216 -0
  89. package/fixtures/sections/relative_product.liquid +121 -0
  90. package/fixtures/sections/reviews.liquid +115 -0
  91. package/fixtures/sections/rich_text.liquid +157 -0
  92. package/fixtures/sections/search.liquid +163 -0
  93. package/fixtures/sections/slide.liquid +719 -0
  94. package/fixtures/sections/three_images.liquid +157 -0
  95. package/fixtures/sections/two_images.liquid +125 -0
  96. package/fixtures/sections/video.liquid +95 -0
  97. package/fixtures/sections/video_text.liquid +128 -0
  98. package/fixtures/snippets/bgset.liquid +21 -0
  99. package/fixtures/snippets/card_title.liquid +8 -0
  100. package/fixtures/snippets/cart_modal.liquid +74 -0
  101. package/fixtures/snippets/collection.liquid +77 -0
  102. package/fixtures/snippets/collection_filter_modal.liquid +56 -0
  103. package/fixtures/snippets/default_image_4.liquid +14 -0
  104. package/fixtures/snippets/default_image_6.liquid +18 -0
  105. package/fixtures/snippets/default_image_8.liquid +23 -0
  106. package/fixtures/snippets/four_images_item.liquid +8 -0
  107. package/fixtures/snippets/header_ads.liquid +95 -0
  108. package/fixtures/snippets/hero_image.liquid +94 -0
  109. package/fixtures/snippets/icon_video_play_large.liquid +1 -0
  110. package/fixtures/snippets/icon_video_play_medium.liquid +4 -0
  111. package/fixtures/snippets/icon_video_play_small.liquid +4 -0
  112. package/fixtures/snippets/lazyimg.liquid +22 -0
  113. package/fixtures/snippets/lazyimg_art.liquid +36 -0
  114. package/fixtures/snippets/lazysizes.liquid +41 -0
  115. package/fixtures/snippets/link.liquid +2 -0
  116. package/fixtures/snippets/pagination.liquid +48 -0
  117. package/fixtures/snippets/product.liquid +126 -0
  118. package/fixtures/snippets/product_art_tpl.liquid +152 -0
  119. package/fixtures/snippets/product_info_body.liquid +337 -0
  120. package/fixtures/snippets/product_info_tpl.liquid +423 -0
  121. package/fixtures/snippets/product_label.liquid +46 -0
  122. package/fixtures/snippets/settings.liquid +295 -0
  123. package/fixtures/snippets/social-meta-tags.liquid +106 -0
  124. package/fixtures/snippets/video_html.liquid +11 -0
  125. package/fixtures/snippets/video_source.liquid +98 -0
  126. package/fixtures/snippets/video_thumb_icon.liquid +2 -0
  127. package/fixtures/templates/404.liquid +1 -0
  128. package/fixtures/templates/collection.liquid +92 -0
  129. package/fixtures/templates/index.liquid +206 -0
  130. package/fixtures/templates/page.liquid +1 -0
  131. package/fixtures/templates/product.liquid +99 -0
  132. package/fixtures/templates/search.liquid +1 -0
  133. package/jest.config.js +192 -0
  134. package/lib/__tests__/log.test.js +15 -0
  135. package/lib/__tests__/utils.test.js +69 -0
  136. package/lib/auth/__mocks__/getCode.js +7 -0
  137. package/lib/auth/__mocks__/index.js +0 -0
  138. package/lib/auth/child.js +23 -0
  139. package/lib/auth/getCode.js +35 -0
  140. package/lib/auth/index.js +91 -0
  141. package/lib/commands/__tests__/login.test.js +77 -0
  142. package/lib/commands/__tests__/logout.test.js +29 -0
  143. package/lib/commands/__tests__/store.test.js +44 -0
  144. package/lib/commands/__tests__/switch.test.js +45 -0
  145. package/lib/commands/login.js +99 -0
  146. package/lib/commands/logout.js +14 -0
  147. package/lib/commands/store.js +14 -0
  148. package/lib/commands/switch.js +52 -0
  149. package/lib/commands/theme/__tests__/delete.test.js +49 -0
  150. package/lib/commands/theme/__tests__/init.test.js +21 -0
  151. package/lib/commands/theme/__tests__/list.test.js +80 -0
  152. package/lib/commands/theme/__tests__/package.test.js +17 -0
  153. package/lib/commands/theme/__tests__/publish.test.js +61 -0
  154. package/lib/commands/theme/__tests__/pull.test.js +69 -0
  155. package/lib/commands/theme/__tests__/push.test.js +63 -0
  156. package/lib/commands/theme/__tests__/serve.test.js +107 -0
  157. package/lib/commands/theme/delete.js +64 -0
  158. package/lib/commands/theme/init.js +51 -0
  159. package/lib/commands/theme/list.js +28 -0
  160. package/lib/commands/theme/package.js +37 -0
  161. package/lib/commands/theme/publish.js +56 -0
  162. package/lib/commands/theme/pull.js +62 -0
  163. package/lib/commands/theme/push.js +106 -0
  164. package/lib/commands/theme/serve.js +153 -0
  165. package/lib/commands/theme/share.js +20 -0
  166. package/lib/commands/version.js +6 -0
  167. package/lib/config.js +5 -0
  168. package/lib/db/__mocks__/index.js +9 -0
  169. package/lib/db/__tests__/analytics.test.js +19 -0
  170. package/lib/db/__tests__/user.test.js +20 -0
  171. package/lib/db/analytics.js +48 -0
  172. package/lib/db/index.js +9 -0
  173. package/lib/db/user.js +68 -0
  174. package/lib/log.js +13 -0
  175. package/lib/openAPI/__mocks__/index.js +20 -0
  176. package/lib/openAPI/api.js +76 -0
  177. package/lib/openAPI/index.js +46 -0
  178. package/lib/report.js +37 -0
  179. package/lib/tracing.js +50 -0
  180. package/lib/utils.js +48 -0
  181. package/package.json +54 -0
@@ -0,0 +1,976 @@
1
+ @charset "UTF-8";
2
+ /* block__elem_modifier */
3
+ body {
4
+ padding-bottom: constant(safe-area-inset-bottom);
5
+ padding-bottom: env(safe-area-inset-bottom);
6
+ }
7
+
8
+ img.lazyload:not([src]) {
9
+ visibility: hidden;
10
+ }
11
+
12
+ @media (max-width: 767.98px) {
13
+ .container-gap {
14
+ padding-top: 1.25rem;
15
+ padding-bottom: 1.25rem;
16
+ }
17
+ }
18
+
19
+ @media (min-width: 768px) {
20
+ .container-gap {
21
+ padding-top: 3.5rem;
22
+ padding-bottom: 3.5rem;
23
+ }
24
+ }
25
+
26
+ @media (max-width: 767.98px) {
27
+ .container-page-gap {
28
+ padding-top: 3.75rem;
29
+ padding-bottom: 3.75rem;
30
+ }
31
+ }
32
+
33
+ @media (min-width: 768px) {
34
+ .container-page-gap {
35
+ padding-top: 3.5rem;
36
+ padding-bottom: 3.5rem;
37
+ }
38
+ }
39
+
40
+ @media (max-width: 767.98px) {
41
+ .container-empty-gap {
42
+ padding-top: 3.75rem;
43
+ padding-bottom: 3.75rem;
44
+ }
45
+ }
46
+
47
+ @media (min-width: 768px) {
48
+ .container-empty-gap {
49
+ padding-top: 6.25rem;
50
+ padding-bottom: 12.5rem;
51
+ }
52
+ }
53
+
54
+ @media (max-width: 767.98px) {
55
+ .mb-padding {
56
+ padding-left: 15px;
57
+ padding-right: 15px;
58
+ }
59
+ }
60
+
61
+ /* lazyload css start */
62
+ .common__img-wrapper_lazy {
63
+ position: relative;
64
+ display: block;
65
+ width: 100%;
66
+ }
67
+
68
+ .common__img-wrapper_lazy img {
69
+ max-width: 100%;
70
+ height: 100%;
71
+ max-height: 100%;
72
+ position: absolute;
73
+ margin: auto;
74
+ top: 0;
75
+ right: 0;
76
+ bottom: 0;
77
+ left: 0;
78
+ }
79
+
80
+ .common__img-wrapper_lazy img.lazyloaded {
81
+ height: auto;
82
+ }
83
+
84
+ .common__img-wrapper_lazy img.img-full-width {
85
+ width: 100%;
86
+ height: unset;
87
+ max-height: unset;
88
+ margin: unset;
89
+ }
90
+
91
+ .lazyload,
92
+ .lazyloading {
93
+ background-color: #f1f1f1;
94
+ }
95
+
96
+ .lazyloaded {
97
+ background-color: transparent;
98
+ }
99
+
100
+ /* lazyload css end */
101
+ /* common mask and title start */
102
+ .common__mask_title {
103
+ position: relative;
104
+ }
105
+
106
+ .common__mask_title img {
107
+ transition: all 0.5s;
108
+ }
109
+
110
+ .common__mask_title::before {
111
+ content: '';
112
+ position: absolute;
113
+ background: rgba(0, 0, 0, 0.1);
114
+ z-index: 1;
115
+ bottom: 0;
116
+ right: 0;
117
+ left: 0;
118
+ top: 0;
119
+ }
120
+
121
+ .common__mask_title::after {
122
+ content: attr(title);
123
+ position: absolute;
124
+ z-index: 1;
125
+ top: 50%;
126
+ transform: translateY(-50%);
127
+ text-align: center;
128
+ color: #fff;
129
+ font-size: 1.5rem;
130
+ padding: 0 1.875rem;
131
+ word-break: break-word;
132
+ line-height: 1.2;
133
+ }
134
+
135
+ @media (max-width: 1024px) {
136
+ .common__mask_title::after {
137
+ font-size: 1.25rem;
138
+ padding: 0 0.9375rem;
139
+ }
140
+ }
141
+
142
+ @media (max-width: 767.98px) {
143
+ .common__mask_title::after {
144
+ font-size: 1.125rem;
145
+ padding: 0 0.9375rem;
146
+ }
147
+ }
148
+
149
+ @media (max-width: 376px) {
150
+ .common__mask_title::after {
151
+ font-size: 1rem;
152
+ }
153
+ }
154
+
155
+ @media (max-width: 321px) {
156
+ .common__mask_title::after {
157
+ font-size: 0.875rem;
158
+ }
159
+ }
160
+
161
+ .common__mask_title:hover img {
162
+ transform: translate(-50%, -50%) scale(1.1) !important;
163
+ }
164
+
165
+ .common__mask_title:hover::before {
166
+ background: rgba(0, 0, 0, 0.3);
167
+ }
168
+
169
+ /* common mask and title end */
170
+ /* product.liquid css start */
171
+ .product-snippet {
172
+ position: relative;
173
+ }
174
+
175
+ .product-snippet__soldout {
176
+ position: absolute;
177
+ width: 100%;
178
+ background: #999;
179
+ font-size: 12px;
180
+ color: #fff;
181
+ text-align: center;
182
+ padding: 2px 0;
183
+ left: 0;
184
+ bottom: 0;
185
+ }
186
+
187
+ .product-snippet__img-wrapper {
188
+ display: block;
189
+ overflow: hidden;
190
+ position: relative;
191
+ }
192
+
193
+ .product-snippet__img-wrapper .product-snippet__mask {
194
+ display: flex;
195
+ position: absolute;
196
+ z-index: 2;
197
+ opacity: 0;
198
+ top: 0;
199
+ width: 100%;
200
+ height: 100%;
201
+ flex-direction: column;
202
+ align-items: center;
203
+ justify-content: flex-end;
204
+ }
205
+
206
+ .product-snippet__img-wrapper .product-snippet__mask .product-snippet__btn {
207
+ margin-bottom: 1.875rem;
208
+ width: 70%;
209
+ height: 2.25rem;
210
+ font-size: 0.8125rem;
211
+ white-space: nowrap;
212
+ }
213
+
214
+ .product-snippet__img-wrapper:hover .product-snippet__mask {
215
+ opacity: 1;
216
+ transition: all 0.3s linear;
217
+ }
218
+
219
+ .product-snippet__img-wrapper:hover img,
220
+ .product-snippet__img-wrapper:hover video {
221
+ opacity: 0;
222
+ }
223
+
224
+ .product-snippet__img-wrapper:hover img:first-child,
225
+ .product-snippet__img-wrapper:hover video:first-child {
226
+ opacity: 1 !important;
227
+ }
228
+
229
+ .product-snippet__title-normal {
230
+ font-size: 0.8125rem;
231
+ text-align: center;
232
+ text-decoration: none;
233
+ margin-top: 0.75rem;
234
+ }
235
+
236
+ @media (min-width: 768px) {
237
+ .product-snippet__title-normal {
238
+ margin-top: 0.9375rem;
239
+ }
240
+ }
241
+
242
+ .product-snippet__title-plus {
243
+ font-size: 0.8125rem;
244
+ text-align: center;
245
+ text-decoration: none;
246
+ margin: 0.9375rem 0 0.25rem;
247
+ }
248
+
249
+ @media (min-width: 768px) {
250
+ .product-snippet__title-plus {
251
+ margin: 1.25rem 0 0.25rem;
252
+ }
253
+ }
254
+
255
+ .product-snippet__price-wrapper {
256
+ margin-top: 0.8125rem;
257
+ font-size: 0.9375rem;
258
+ }
259
+
260
+ @media (min-width: 768px) {
261
+ .product-snippet__price-wrapper {
262
+ margin-top: 0.625rem;
263
+ }
264
+ }
265
+
266
+ .product-snippet__price-wrapper span,
267
+ .product-snippet__price-wrapper del {
268
+ display: inline-block;
269
+ max-width: 100%;
270
+ padding: 0 0.3125rem;
271
+ vertical-align: middle;
272
+ line-height: 1;
273
+ }
274
+
275
+ /* product.liquid css end */
276
+ /* 标题价格规范: 超过一行,两行及三行省略 一行用bootstrap的.text-truncate */
277
+ .two_line_text_truncate {
278
+ overflow: hidden;
279
+ display: -webkit-box;
280
+ -webkit-line-clamp: 2;
281
+ -webkit-box-orient: vertical;
282
+ }
283
+
284
+ .three_line_text_truncate {
285
+ overflow: hidden;
286
+ display: -webkit-box;
287
+ -webkit-line-clamp: 3;
288
+ -webkit-box-orient: vertical;
289
+ }
290
+
291
+ /* loading start */
292
+ .sep-loading {
293
+ position: fixed;
294
+ top: 0;
295
+ left: 0;
296
+ z-index: 1060;
297
+ display: flex;
298
+ align-items: center;
299
+ justify-content: center;
300
+ width: 100%;
301
+ height: 100%;
302
+ background: rgba(255, 255, 255, 0.8);
303
+ }
304
+
305
+ .sep-loading__content, .sep-loading__content::after {
306
+ width: 3em;
307
+ height: 3em;
308
+ border-radius: 50%;
309
+ }
310
+
311
+ .sep-loading__content {
312
+ position: relative;
313
+ font-size: 10px;
314
+ border-top: 0.16em solid #f0f0f0;
315
+ border-right: 0.16em solid #f0f0f0;
316
+ border-bottom: 0.16em solid #f0f0f0;
317
+ border-left: 0.16em solid #c4c4c4;
318
+ transform: translateZ(0);
319
+ animation: load 1.1s infinite linear;
320
+ }
321
+
322
+ @keyframes load {
323
+ 0% {
324
+ transform: rotate(0deg);
325
+ }
326
+ 100% {
327
+ transform: rotate(360deg);
328
+ }
329
+ }
330
+
331
+ /* loading end */
332
+ /* toast starts */
333
+ .sep-toast {
334
+ position: fixed;
335
+ z-index: 1060;
336
+ background: #fff;
337
+ color: #000;
338
+ font-size: 1rem;
339
+ width: 30rem;
340
+ min-height: 56px;
341
+ line-height: 1.5;
342
+ padding: 0.9375rem;
343
+ border-radius: 4px;
344
+ box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
345
+ text-align: center;
346
+ top: 50%;
347
+ left: 50%;
348
+ transform: scale(0.5);
349
+ }
350
+
351
+ @media (max-width: 767.98px) {
352
+ .sep-toast {
353
+ width: 16.375rem;
354
+ min-height: 2.5625rem;
355
+ font-size: 0.875rem;
356
+ padding: 0.625rem 0.75rem;
357
+ box-shadow: 0 2px 6px 2px rgba(0, 0, 0, 0.15);
358
+ }
359
+ }
360
+
361
+ .sep-toast.error {
362
+ color: #b60400;
363
+ }
364
+
365
+ .sep-toast.show {
366
+ transform: scale(1);
367
+ }
368
+
369
+ .sep-toast.isShowing {
370
+ transition: transform 0.3s ease-out;
371
+ }
372
+
373
+ .sep-toast.isLeave {
374
+ transform: scale(0.5);
375
+ opacity: 0;
376
+ transition: all 0.3s ease-out;
377
+ }
378
+
379
+ /* toast ends */
380
+ /* common products gap start */
381
+ @media (max-width: 767.98px) {
382
+ .common__product-gap {
383
+ margin-bottom: 2.03125rem;
384
+ padding: 0 0.46875rem;
385
+ }
386
+ }
387
+
388
+ @media (min-width: 768px) {
389
+ .common__product-gap {
390
+ padding: 0 0.75rem;
391
+ margin-bottom: 2.5rem;
392
+ }
393
+ }
394
+
395
+ @media (max-width: 767.98px) {
396
+ .common__product-row {
397
+ margin: 0 -0.46875rem;
398
+ }
399
+ }
400
+
401
+ @media (min-width: 768px) {
402
+ .common__product-row {
403
+ margin: 0 -1.6875rem;
404
+ }
405
+ }
406
+
407
+ .common-card-title {
408
+ text-align: center;
409
+ font-weight: 500;
410
+ }
411
+
412
+ @media (max-width: 767.98px) {
413
+ .common-card-title {
414
+ font-size: 1.375rem;
415
+ margin-bottom: 1.25rem;
416
+ }
417
+ }
418
+
419
+ @media (min-width: 768px) {
420
+ .common-card-title {
421
+ font-size: 2.125rem;
422
+ margin-bottom: 2.5rem;
423
+ }
424
+ }
425
+
426
+ /* common products gap end */
427
+ /* common image mask start */
428
+ .common__mask {
429
+ position: relative;
430
+ overflow: hidden;
431
+ }
432
+
433
+ .common__mask:hover::after {
434
+ content: ' ';
435
+ position: absolute;
436
+ top: 0;
437
+ left: 0;
438
+ bottom: 0;
439
+ right: 0;
440
+ background: #fff;
441
+ opacity: 0.3;
442
+ }
443
+
444
+ /* common image mask end */
445
+ /* common desc start */
446
+ .common__img-desc {
447
+ position: relative;
448
+ }
449
+
450
+ .common__img-desc::before {
451
+ content: attr(data-title);
452
+ position: absolute;
453
+ z-index: 1;
454
+ bottom: 0.9375rem;
455
+ right: 0.9375rem;
456
+ color: #999;
457
+ font-size: 1rem;
458
+ }
459
+
460
+ /* common desc end */
461
+ /* common sort start */
462
+ .common__select {
463
+ position: relative;
464
+ display: inline-block;
465
+ }
466
+
467
+ .common__select select {
468
+ -webkit-appearance: none;
469
+ font-size: 0.875rem;
470
+ padding-right: 1.5625rem !important;
471
+ color: inherit;
472
+ cursor: pointer;
473
+ width: 10.3125rem;
474
+ border-color: #d4d4d4;
475
+ }
476
+
477
+ @media (min-width: 768px) {
478
+ .common__select select {
479
+ width: 11.25rem;
480
+ }
481
+ }
482
+
483
+ .common__select::after {
484
+ content: '';
485
+ color: #212121;
486
+ width: 0.53125rem;
487
+ height: 0.53125rem;
488
+ border: 2px solid;
489
+ border-top: none;
490
+ border-right: none;
491
+ position: absolute;
492
+ right: 1rem;
493
+ top: 0.8125rem;
494
+ transform: rotate(-45deg);
495
+ }
496
+
497
+ /* common sort end */
498
+ /* common load-more start */
499
+ .common__load-more-btn {
500
+ color: #777;
501
+ font-size: 11px;
502
+ cursor: pointer;
503
+ }
504
+
505
+ /* common load-more end */
506
+ /* common group start */
507
+ .common__group {
508
+ height: 7.0625rem;
509
+ }
510
+
511
+ @media (max-width: 767.98px) {
512
+ .common__group {
513
+ height: 6.125rem;
514
+ }
515
+ }
516
+
517
+ /* common group end */
518
+ /* common input start */
519
+ .common__input {
520
+ width: 28.75rem;
521
+ height: 2.75rem;
522
+ background: white;
523
+ border: 1px solid #dfdfdf;
524
+ padding-left: 0.9375rem;
525
+ font-size: 0.875rem;
526
+ line-height: 1.0625rem;
527
+ -webkit-appearance: none;
528
+ outline: none;
529
+ border-radius: 0;
530
+ }
531
+
532
+ .common__input:focus {
533
+ border-radius: 0;
534
+ border: 1px solid black;
535
+ }
536
+
537
+ .common__input:-ms-input-placeholder {
538
+ font-size: 0.875rem;
539
+ color: #bcbcbc;
540
+ line-height: 1.125rem;
541
+ }
542
+
543
+ .common__input:-webkit-input-placeholder {
544
+ font-size: 0.875rem;
545
+ color: #bcbcbc;
546
+ line-height: 1.125rem;
547
+ }
548
+
549
+ @media (max-width: 767.98px) {
550
+ .common__input {
551
+ width: 100%;
552
+ height: 2.75rem;
553
+ border: 0.0625rem solid #d7dcde;
554
+ padding-left: 0.9375rem;
555
+ font-size: 0.875rem;
556
+ line-height: 1.03125rem;
557
+ border-radius: 0;
558
+ }
559
+ .common__input:focus {
560
+ border-radius: 0;
561
+ border: 0.0625rem solid black;
562
+ }
563
+ .common__input:-ms-input-placeholder {
564
+ font-size: 0.875rem;
565
+ color: #777777;
566
+ line-height: 1.03125rem;
567
+ }
568
+ .common__input:-webkit-input-placeholder {
569
+ font-size: 0.875rem;
570
+ color: #777777;
571
+ line-height: 1.03125rem;
572
+ }
573
+ }
574
+
575
+ .common__input_error {
576
+ border: 1px solid #e24247 !important;
577
+ }
578
+
579
+ .common__input_error:focus {
580
+ border: 1px solid #e24247 !important;
581
+ }
582
+
583
+ /* common input end */
584
+ /* common label start */
585
+ .common__label {
586
+ height: 1rem;
587
+ font-size: 0.875rem;
588
+ color: #777777;
589
+ line-height: 1rem;
590
+ margin-bottom: 0.75rem;
591
+ display: block;
592
+ }
593
+
594
+ @media (max-width: 767.98px) {
595
+ .common__label {
596
+ font-size: 0.875rem;
597
+ line-height: 1.03125rem;
598
+ margin-bottom: 0.65625rem;
599
+ }
600
+ }
601
+
602
+ /* common label end */
603
+ @media (min-width: 768px) {
604
+ .col-md-2_4 {
605
+ flex: 0 0 20%;
606
+ max-width: 20%;
607
+ }
608
+ }
609
+
610
+ /* common img start */
611
+ .common__img_hover:hover {
612
+ opacity: 0.7;
613
+ }
614
+
615
+ /* common img end */
616
+ @media (min-width: 768px) {
617
+ .hero--large {
618
+ height: 600px;
619
+ }
620
+ .hero--medium {
621
+ height: 500px;
622
+ }
623
+ .hero--small {
624
+ height: 400px;
625
+ }
626
+ .hero .page-width {
627
+ padding: 0 55px;
628
+ max-width: 750px;
629
+ }
630
+ .hero .mega-subtitle {
631
+ margin: 24px auto 0;
632
+ }
633
+ .hero .mega-title-large {
634
+ font-size: 48px;
635
+ }
636
+ .hero .mega-subtitle-large {
637
+ font-size: 18px;
638
+ }
639
+ .hero .mega-title-medium {
640
+ font-size: 36px;
641
+ }
642
+ .hero .mega-subtitle-medium {
643
+ font-size: 16px;
644
+ }
645
+ .hero .mega-title-small {
646
+ font-size: 24px;
647
+ }
648
+ .hero .mega-subtitle-small {
649
+ font-size: 14px;
650
+ }
651
+ .hero .hero-btn {
652
+ font-size: 14px;
653
+ padding: 10px 30px;
654
+ display: inline-block;
655
+ margin-top: 50px;
656
+ }
657
+ .hero .hero-btn:hover {
658
+ background: #f5f5f5;
659
+ font-weight: 500;
660
+ }
661
+ }
662
+
663
+ @media (max-width: 767.98px) {
664
+ .hero--large {
665
+ height: 28.6875rem;
666
+ }
667
+ .hero--medium {
668
+ height: 25rem;
669
+ }
670
+ .hero--small {
671
+ height: 18.75rem;
672
+ }
673
+ .hero .page-width {
674
+ padding: 0 0.6875rem;
675
+ max-width: 21.5625rem;
676
+ }
677
+ .hero .mega-subtitle {
678
+ margin: 0.9375rem auto 0;
679
+ max-width: 21.875rem;
680
+ }
681
+ .hero .mega-title-large {
682
+ font-size: 1.875rem;
683
+ }
684
+ .hero .mega-subtitle-large {
685
+ font-size: 1.125rem;
686
+ }
687
+ .hero .mega-title-medium {
688
+ font-size: 1.5rem;
689
+ }
690
+ .hero .mega-subtitle-medium {
691
+ font-size: 1rem;
692
+ }
693
+ .hero .mega-title-small {
694
+ font-size: 1.125rem;
695
+ }
696
+ .hero .mega-subtitle-small {
697
+ font-size: 0.875rem;
698
+ }
699
+ .hero .hero-btn {
700
+ cursor: pointer;
701
+ font-size: 0.875rem;
702
+ padding: 10px 30px;
703
+ display: inline-block;
704
+ margin-top: 1.875rem;
705
+ }
706
+ .hero .hero-btn:hover {
707
+ background: #f5f5f5;
708
+ font-weight: 500;
709
+ }
710
+ }
711
+
712
+ .hero {
713
+ position: relative;
714
+ }
715
+
716
+ @media (min-width: 768px) {
717
+ .hero .col-12 {
718
+ padding: 0;
719
+ }
720
+ }
721
+
722
+ .hero .hover-zoom {
723
+ transition: all 0.5s;
724
+ }
725
+
726
+ .hero a[href] .hover-zoom:hover {
727
+ transform: scale(1.1);
728
+ }
729
+
730
+ .hero.url-cursor {
731
+ cursor: pointer;
732
+ }
733
+
734
+ .hero.hover-enlarge {
735
+ transition: transform 0.3s linear;
736
+ }
737
+
738
+ .hero.hover-enlarge:hover {
739
+ transform: scale(1.1);
740
+ }
741
+
742
+ .hero.hover-enlarge:hover.hero__overlay::before {
743
+ opacity: 0.3;
744
+ }
745
+
746
+ .hero .hero__inner {
747
+ position: absolute;
748
+ top: 0;
749
+ left: 0;
750
+ right: 0;
751
+ bottom: 0;
752
+ display: flex;
753
+ align-items: center;
754
+ justify-content: center;
755
+ z-index: 2;
756
+ }
757
+
758
+ .hero .hero__inner .mega-title,
759
+ .hero .hero__inner .mega-subtitle {
760
+ color: #fff;
761
+ }
762
+
763
+ /* common collection gap start */
764
+ @media (max-width: 767.98px) {
765
+ .common__collection-gap {
766
+ margin-bottom: 0.9375rem;
767
+ padding: 0 0.46875rem;
768
+ }
769
+ }
770
+
771
+ @media (min-width: 768px) {
772
+ .common__collection-gap {
773
+ padding: 0 0.375rem;
774
+ margin-bottom: 0.75rem;
775
+ }
776
+ }
777
+
778
+ @media (max-width: 767.98px) {
779
+ .common__collection-row {
780
+ margin: 0 -0.46875rem;
781
+ }
782
+ }
783
+
784
+ @media (min-width: 768px) {
785
+ .common__collection-row {
786
+ margin: 0 -1.3125rem;
787
+ }
788
+ }
789
+
790
+ /* common collection gap end */
791
+ /* modal override */
792
+ .modal-header {
793
+ border-bottom: none;
794
+ }
795
+
796
+ .modal-footer {
797
+ border-top: none;
798
+ }
799
+
800
+ .modal__header {
801
+ width: 100%;
802
+ text-align: center;
803
+ display: flex;
804
+ border-bottom: 1px solid #ddd;
805
+ justify-content: center;
806
+ }
807
+
808
+ .modal__close.close {
809
+ position: absolute;
810
+ top: 0.9375rem;
811
+ right: 0.9375rem;
812
+ background: none;
813
+ z-index: 1051;
814
+ margin: 0;
815
+ padding: 0;
816
+ cursor: pointer;
817
+ outline: none;
818
+ font-size: 1rem;
819
+ color: #212121;
820
+ opacity: 1;
821
+ }
822
+
823
+ .modal__close.close:hover {
824
+ color: #212121 !important;
825
+ opacity: 0.7 !important;
826
+ }
827
+
828
+ @media (max-width: 767.98px) {
829
+ .modal__close.close {
830
+ top: 0.3125rem;
831
+ right: 0.3125rem;
832
+ }
833
+ }
834
+
835
+ .container {
836
+ position: relative;
837
+ }
838
+
839
+ .dj-mce-view a {
840
+ word-break: break-all;
841
+ }
842
+
843
+ .dj-mce-view img {
844
+ position: relative;
845
+ max-width: 100%;
846
+ vertical-align: bottom;
847
+ height: auto;
848
+ }
849
+
850
+ .dj-mce-view iframe {
851
+ width: 100%;
852
+ }
853
+
854
+ .dj-mce-view table {
855
+ max-width: 100%;
856
+ }
857
+
858
+ .dj-mce-view table td,
859
+ .dj-mce-view table th {
860
+ border: 1px solid #ddd;
861
+ }
862
+
863
+ .dj-mce-view blockquote {
864
+ margin: 1em 40px;
865
+ }
866
+
867
+ /* 阿语适配 */
868
+ html[dir='rtl'] body {
869
+ text-align: right;
870
+ }
871
+
872
+ html[dir='rtl'] .common__input {
873
+ padding-right: 0.9375rem;
874
+ }
875
+
876
+ html[dir='rtl'] .common__select::after {
877
+ right: unset;
878
+ left: 1rem !important;
879
+ }
880
+
881
+ .dj_skin_link {
882
+ opacity: 1;
883
+ }
884
+
885
+ .dj_skin_link:hover {
886
+ opacity: 0.7;
887
+ }
888
+
889
+ .placeholder-noblocks {
890
+ padding: 40px;
891
+ text-align: center;
892
+ }
893
+
894
+ @media (max-width: 767.98px) {
895
+ .product-info__social-sharing {
896
+ display: none;
897
+ }
898
+ }
899
+
900
+ .product-info__label {
901
+ position: absolute;
902
+ top: 0;
903
+ text-align: center;
904
+ font-size: 14px;
905
+ font-weight: 700;
906
+ line-height: 1.2;
907
+ z-index: 1;
908
+ }
909
+
910
+ .product-info__label-flag {
911
+ display: flex;
912
+ flex-direction: column;
913
+ justify-content: center;
914
+ align-items: center;
915
+ right: 0;
916
+ min-height: 30px;
917
+ max-width: 120px;
918
+ padding: 2px 5px 2px 14px;
919
+ -webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 10px 50%);
920
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 10px 50%);
921
+ }
922
+
923
+ @media (max-width: 576px) {
924
+ .product-info__label-flag {
925
+ max-width: 105px;
926
+ line-height: 1.1;
927
+ font-size: 11px;
928
+ }
929
+ }
930
+
931
+ .product-info__label-badge {
932
+ left: 10px;
933
+ min-width: 40px;
934
+ padding: 2px 5px 10px;
935
+ clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), 50% 100%, 0 calc(100% - 10px));
936
+ -webkit-clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), 50% 100%, 0 calc(100% - 10px));
937
+ }
938
+
939
+ .product-info__label-badge .product-info__save-label, .product-info__label-badge .product-info__discount-label {
940
+ display: flex;
941
+ flex-direction: column;
942
+ align-items: center;
943
+ padding-top: 2px;
944
+ }
945
+
946
+ @media (max-width: 576px) {
947
+ .product-info__label-badge {
948
+ font-size: 11px;
949
+ }
950
+ }
951
+
952
+ .product-info__label-triangle {
953
+ display: flex;
954
+ flex-direction: column;
955
+ align-items: center;
956
+ justify-content: center;
957
+ right: 0;
958
+ max-width: 108px;
959
+ min-height: 30px;
960
+ padding-bottom: 5px;
961
+ transform: translateX(30%) rotate(45deg) translateZ(1px);
962
+ transform-origin: left top;
963
+ }
964
+
965
+ .product-info__label-triangle div:first-child[class*=product-info__save-label] {
966
+ display: flex;
967
+ flex-direction: column;
968
+ }
969
+
970
+ @media (max-width: 576px) {
971
+ .product-info__label-triangle {
972
+ max-width: 75px;
973
+ min-height: 20px;
974
+ font-size: 10px;
975
+ }
976
+ }