@o2vend/theme-cli 1.0.36 → 1.0.38

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 (90) hide show
  1. package/README.md +4 -0
  2. package/lib/lib/dev-server.js +344 -48
  3. package/lib/lib/liquid-engine.js +3 -1
  4. package/lib/lib/mock-data.js +473 -119
  5. package/lib/lib/widget-service.js +12 -4
  6. package/package.json +2 -2
  7. package/test-theme/assets/async-sections.js +32 -24
  8. package/test-theme/assets/cart-drawer.js +20 -22
  9. package/test-theme/assets/cart-manager.js +1 -15
  10. package/test-theme/assets/checkout-price-handler.js +12 -11
  11. package/test-theme/assets/checkout.css +1415 -0
  12. package/test-theme/assets/checkout.js +3174 -0
  13. package/test-theme/assets/components.css +178 -29
  14. package/test-theme/assets/delivery-zone.js +1 -1
  15. package/test-theme/assets/product-detail.css +1050 -0
  16. package/test-theme/assets/product-detail.js +2940 -0
  17. package/test-theme/assets/theme.css +95 -120
  18. package/test-theme/assets/theme.js +781 -186
  19. package/test-theme/layout/theme.liquid +91 -17
  20. package/test-theme/sections/content.liquid +64 -57
  21. package/test-theme/sections/footer-fallback.liquid +57 -7
  22. package/test-theme/sections/footer.liquid +63 -12
  23. package/test-theme/sections/header-fallback.liquid +41 -41
  24. package/test-theme/sections/header.liquid +41 -51
  25. package/test-theme/sections/hero-fallback.liquid +1 -1
  26. package/test-theme/sections/hero.liquid +159 -136
  27. package/test-theme/snippets/account-sidebar.liquid +121 -29
  28. package/test-theme/snippets/add-to-cart-modal.liquid +258 -206
  29. package/test-theme/snippets/breadcrumbs.liquid +98 -11
  30. package/test-theme/snippets/cart-drawer.liquid +93 -0
  31. package/test-theme/snippets/delivery-zone-city-selector.liquid +101 -15
  32. package/test-theme/snippets/delivery-zone-modal.liquid +529 -84
  33. package/test-theme/snippets/delivery-zone-search.liquid +104 -18
  34. package/test-theme/snippets/login-modal.liquid +269 -82
  35. package/test-theme/snippets/mega-menu.liquid +130 -43
  36. package/test-theme/snippets/news-thumbnail.liquid +120 -28
  37. package/test-theme/snippets/pagination.liquid +1 -1
  38. package/test-theme/snippets/price.liquid +100 -9
  39. package/test-theme/snippets/product-card-related.liquid +22 -4
  40. package/test-theme/snippets/product-card-simple.liquid +521 -25
  41. package/test-theme/snippets/product-card.liquid +145 -232
  42. package/test-theme/snippets/rating.liquid +100 -9
  43. package/test-theme/snippets/skeleton-collection-grid.liquid +94 -8
  44. package/test-theme/snippets/skeleton-product-card.liquid +102 -16
  45. package/test-theme/snippets/skeleton-product-grid.liquid +87 -1
  46. package/test-theme/snippets/social-sharing.liquid +133 -32
  47. package/test-theme/templates/account/dashboard.liquid +30 -0
  48. package/test-theme/templates/account/loyalty-redemption.liquid +29 -28
  49. package/test-theme/templates/account/loyalty.liquid +45 -43
  50. package/test-theme/templates/account/order-detail.liquid +15 -8
  51. package/test-theme/templates/account/orders.liquid +189 -35
  52. package/test-theme/templates/account/profile.liquid +509 -114
  53. package/test-theme/templates/account/register.liquid +18 -8
  54. package/test-theme/templates/account/return-orders.liquid +31 -30
  55. package/test-theme/templates/account/store-credit.liquid +27 -26
  56. package/test-theme/templates/account/subscriptions.liquid +22 -5
  57. package/test-theme/templates/account/wishlist.liquid +88 -19
  58. package/test-theme/templates/address-book.liquid +166 -69
  59. package/test-theme/templates/categories.liquid +90 -30
  60. package/test-theme/templates/checkout.liquid +137 -3834
  61. package/test-theme/templates/error.liquid +23 -21
  62. package/test-theme/templates/index.liquid +29 -0
  63. package/test-theme/templates/login.liquid +33 -6
  64. package/test-theme/templates/order-confirmation.liquid +67 -9
  65. package/test-theme/templates/page.liquid +418 -206
  66. package/test-theme/templates/product-detail.liquid +124 -3878
  67. package/test-theme/templates/products.liquid +155 -30
  68. package/test-theme/templates/search.liquid +739 -225
  69. package/test-theme/widgets/brand-carousel.liquid +102 -82
  70. package/test-theme/widgets/brand.liquid +78 -50
  71. package/test-theme/widgets/carousel.liquid +253 -121
  72. package/test-theme/widgets/category-list-carousel.liquid +32 -8
  73. package/test-theme/widgets/category-list.liquid +21 -6
  74. package/test-theme/widgets/category.liquid +104 -37
  75. package/test-theme/widgets/discount-time.liquid +326 -119
  76. package/test-theme/widgets/footer-menu.liquid +115 -23
  77. package/test-theme/widgets/footer.liquid +118 -5
  78. package/test-theme/widgets/gallery.liquid +29 -5
  79. package/test-theme/widgets/header-menu.liquid +25 -13
  80. package/test-theme/widgets/header.liquid +64 -26
  81. package/test-theme/widgets/html.liquid +29 -6
  82. package/test-theme/widgets/news.liquid +6 -0
  83. package/test-theme/widgets/product-canvas.liquid +20 -12
  84. package/test-theme/widgets/product-carousel.liquid +118 -56
  85. package/test-theme/widgets/shared/product-grid.liquid +12 -0
  86. package/test-theme/widgets/single-product.liquid +688 -250
  87. package/test-theme/widgets/spacebar-carousel.liquid +39 -10
  88. package/test-theme/widgets/spacebar.liquid +77 -6
  89. package/test-theme/widgets/splash.liquid +40 -30
  90. package/test-theme/widgets/testimonial-carousel.liquid +111 -67
@@ -0,0 +1,1050 @@
1
+ /* Horizon-Inspired Product Page Styles */
2
+ .sub-modern-box {
3
+ border: 1px solid {{ settings.color_border }};
4
+ background: {{ settings.color_background }};
5
+ padding: {{ settings.spacing_small }}px {{ settings.spacing_element }}px;
6
+ border-radius: {{ settings.border_radius_small }}px;
7
+ font-family: system-ui, sans-serif;
8
+ max-width: 360px;
9
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
10
+ }
11
+
12
+ .sub-row {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: flex-start;
16
+ margin-bottom: {{ settings.spacing_small }}px;
17
+ gap: {{ settings.spacing_small | plus: 4 }}px;
18
+ }
19
+
20
+ .sub-label {
21
+ font-weight: {{ settings.font_weight_medium }};
22
+ color: {{ settings.color_text }};
23
+ width: 110px;
24
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
25
+ }
26
+
27
+ .sub-input {
28
+ height: 30px;
29
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
30
+ border: 1px solid {{ settings.color_border }};
31
+ border-radius: {{ settings.border_radius_small }}px;
32
+ padding: 3px {{ settings.spacing_small }}px;
33
+ flex: 1;
34
+ }
35
+
36
+ .deliver-pill {
37
+ background: {{ settings.color_surface }};
38
+ padding: 3px {{ settings.spacing_small }}px;
39
+ border-radius: {{ settings.border_radius_medium | plus: 2 }}px;
40
+ font-weight: 600;
41
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
42
+ display: inline-block;
43
+ }
44
+
45
+ #subscriptionValidationMsg,
46
+ #combinationValidationMsg {
47
+ margin-top: var(--spacing-element, 6px);
48
+ color: #991b1b;
49
+ font-size: var(--text-sm, 13px);
50
+ display: none;
51
+ padding: var(--spacing-element, 8px) var(--spacing-component, 12px);
52
+ background-color: rgba(239, 68, 68, 0.12);
53
+ border-radius: var(--border-radius-small, 4px);
54
+ border-left: 3px solid var(--color-error, #b70000);
55
+ line-height: var(--line-height-base, 1.4);
56
+ }
57
+
58
+ #subscriptionValidationMsg:not(:empty),
59
+ #combinationValidationMsg:not(:empty) {
60
+ display: block;
61
+ }
62
+
63
+ #subscriptionInfoMessage {
64
+ display: none;
65
+ margin-bottom: var(--spacing-component, 12px);
66
+ padding: var(--spacing-element, 8px) var(--spacing-component, 12px);
67
+ background-color: var(--color-info-light, #f0f9ff);
68
+ border-left: 3px solid var(--color-info, #3b82f6);
69
+ border-radius: var(--border-radius-small, 4px);
70
+ font-size: var(--text-sm, 13px);
71
+ color: var(--color-info-dark, #1e40af);
72
+ }
73
+
74
+ #subscriptionInfoMessage:not(:empty) {
75
+ display: block;
76
+ }
77
+
78
+ #shippingMethodDetails {
79
+ margin-top: var(--spacing-element, 8px);
80
+ font-size: var(--text-xs, 12px);
81
+ color: var(--color-text-muted, #666);
82
+ display: none;
83
+ }
84
+
85
+ #shippingMethodDetails:not(:empty) {
86
+ display: block;
87
+ }
88
+
89
+ .required-indicator {
90
+ color: var(--color-error, #b70000);
91
+ }
92
+
93
+ .help-text {
94
+ font-size: var(--text-xs, 11px);
95
+ color: var(--color-text-muted, #666);
96
+ margin-top: var(--spacing-element, 2px);
97
+ }
98
+
99
+ .flex-column {
100
+ flex: 1;
101
+ display: flex;
102
+ flex-direction: column;
103
+ }
104
+
105
+ .subscription-item-content {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: var(--spacing-element, 10px);
109
+ flex: 1;
110
+ }
111
+
112
+ .subscription-item-right {
113
+ text-align: right;
114
+ }
115
+
116
+ .subscription-item-actions {
117
+ display: flex;
118
+ align-items: center;
119
+ gap: var(--spacing-element, 5px);
120
+ justify-content: flex-end;
121
+ }
122
+
123
+ .subscription-item-meta {
124
+ margin-top: var(--spacing-element, 5px);
125
+ }
126
+
127
+ .subscription-included {
128
+ font-size: var(--text-xs, 11px);
129
+ color: var(--color-text-muted, #666);
130
+ font-weight: var(--font-weight-normal, normal);
131
+ }
132
+
133
+ .subscription-spec {
134
+ font-size: var(--text-xs, 12px);
135
+ color: var(--color-text-muted, #666);
136
+ }
137
+
138
+ .subscription-item-title {
139
+ margin: 0;
140
+ }
141
+
142
+ .info-message-content {
143
+ line-height: var(--line-height-base, 1.6);
144
+ }
145
+
146
+ .freq-ui {
147
+ padding: {{ settings.spacing_small }}px 15px;
148
+ border: 1px solid {{ settings.color_border }};
149
+ border-radius: 5px;
150
+ background: {{ settings.color_surface }};
151
+ cursor: pointer;
152
+ transition: 0.2s;
153
+ font-size: {{ settings.font_size_base }}px;
154
+ }
155
+
156
+ .freq-ui.selected {
157
+ background: {{ settings.color_border }};
158
+ color: {{ settings.color_text }};
159
+ }
160
+
161
+ .freq-ui:hover {
162
+ background: {{ settings.color_surface }};
163
+ }
164
+
165
+ .weekly-days {
166
+ display: flex;
167
+ flex-wrap: wrap;
168
+ gap: 10px;
169
+ }
170
+
171
+
172
+ .subscription-item {
173
+ border: 1px solid {{ settings.color_border }};
174
+ padding: 10px;
175
+ margin-bottom: 10px;
176
+ border-radius: 5px;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: space-between;
180
+ transition: background 0.3s;
181
+ }
182
+
183
+ /* Highlight selected item */
184
+ .subscription-item.selected {
185
+ background-color: {{ settings.color_border }};
186
+ border-color: {{ settings.color_primary }};
187
+ }
188
+
189
+ /* Ensure checkbox is visible */
190
+ .subscription-item input.sub-select {
191
+ width: 18px !important;
192
+ height: 18px !important;
193
+ cursor: pointer;
194
+ appearance: checkbox !important;
195
+ -webkit-appearance: checkbox !important;
196
+ }
197
+
198
+ .subscription-item input.sub-select-required {
199
+ cursor: not-allowed;
200
+ opacity: 0.6;
201
+ }
202
+
203
+ .combo-group {
204
+ display: flex;
205
+ gap: 10px;
206
+ margin-bottom: 15px;
207
+ }
208
+
209
+ .combo-card {
210
+ border: 1px solid {{ settings.color_border }};
211
+ border-radius: {{ settings.border_radius_medium }}px;
212
+ padding: 5px;
213
+ text-align: center;
214
+ width: 150px;
215
+ cursor: pointer;
216
+ position: relative;
217
+ }
218
+
219
+ .combo-card.selected {
220
+ border-color: {{ settings.color_error }};
221
+ }
222
+
223
+ .combo-card.selected .combo-checkbox {
224
+ color: {{ settings.color_error }};
225
+ background: {{ settings.color_error }};
226
+ }
227
+
228
+ .combo-image {
229
+ position: relative;
230
+ }
231
+
232
+ .combo-image img {
233
+ width: 100%;
234
+ border-radius: {{ settings.border_radius_medium }}px;
235
+ }
236
+
237
+ .combo-checkbox {
238
+ position: absolute;
239
+ top: 5px;
240
+ right: 5px;
241
+ background: white;
242
+ border-radius: 3px;
243
+ padding: 2px;
244
+ height:16px;
245
+ width:16px;
246
+ }
247
+
248
+ .combo-info {
249
+ margin-top: 5px;
250
+ }
251
+
252
+
253
+ .product-option-btn {
254
+ border: 1px solid {{ settings.color_border }};
255
+ background: {{ settings.color_background }};
256
+ padding: {{ settings.spacing_small }}px {{ settings.spacing_element | minus: 2 }}px;
257
+ margin: {{ settings.spacing_xsmall }}px;
258
+ border-radius: {{ settings.border_radius_small }}px;
259
+ cursor: pointer;
260
+ position: relative;
261
+ z-index: 10;
262
+ pointer-events: auto;
263
+ transition: .2s;
264
+ }
265
+
266
+ .product-option-btn.selected {
267
+ background: {{ settings.color_text }};
268
+ color: {{ settings.color_background }};
269
+ border-color: {{ settings.color_text }};
270
+ }
271
+
272
+ .product-option-btn[data-display-type="color"] {
273
+ width: 32px;
274
+ height: 32px;
275
+ border-radius: 50%;
276
+ font-size: 0;
277
+ padding: 0;
278
+ border: 2px solid #aaa;
279
+ background-color: currentColor;
280
+ }
281
+
282
+ .product-option-btn[data-display-type="color"].selected {
283
+ border: 2px solid {{ settings.color_text }} !important;
284
+ }
285
+ .product-main.horizon-style {
286
+ padding: 0;
287
+ margin: 0;
288
+ }
289
+
290
+ .product-container {
291
+ max-width: {{ settings.container_width }}px;
292
+ margin: 0 auto;
293
+ padding: 0 {{ settings.container_padding }}px;
294
+ display: grid;
295
+ grid-template-columns: 1fr 1fr;
296
+ gap: {{ settings.spacing_section }}px;
297
+ align-items: start;
298
+ padding-top: {{ settings.spacing_component | plus: 16 }}px;
299
+ padding-bottom: {{ settings.spacing_section }}px;
300
+ }
301
+
302
+ /* Product Gallery */
303
+ .product-gallery {
304
+ position: sticky;
305
+ top: 20px;
306
+ }
307
+
308
+ .gallery-main {
309
+ position: relative;
310
+ margin-bottom: {{ settings.spacing_element }}px;
311
+ background: {{ settings.color_background }};
312
+ border-radius: var(--border-radius-medium);
313
+ overflow: hidden;
314
+ }
315
+
316
+ .gallery-main-image {
317
+ width: 100%;
318
+ height: auto;
319
+ display: none;
320
+ opacity: 0;
321
+ transition: opacity 0.3s ease;
322
+ }
323
+
324
+ .gallery-main-image.active {
325
+ display: block;
326
+ opacity: 1;
327
+ }
328
+
329
+ .gallery-placeholder {
330
+ width: 100%;
331
+ aspect-ratio: 1;
332
+ display: flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ background: {{ settings.color_surface }};
336
+ color: {{ settings.color_text_muted }};
337
+ }
338
+
339
+ .gallery-zoom-btn {
340
+ position: absolute;
341
+ bottom: {{ settings.spacing_element }}px;
342
+ right: {{ settings.spacing_element }}px;
343
+ width: 48px;
344
+ height: 48px;
345
+ border-radius: 50%;
346
+ background: rgba(255, 255, 255, 0.9);
347
+ border: 1px solid rgba(0, 0, 0, 0.1);
348
+ display: flex;
349
+ align-items: center;
350
+ justify-content: center;
351
+ cursor: pointer;
352
+ transition: all 0.2s ease;
353
+ z-index: 10;
354
+ color: {{ settings.color_text }};
355
+ backdrop-filter: blur(10px);
356
+ }
357
+
358
+ .gallery-zoom-btn:hover {
359
+ background: rgba(255, 255, 255, 1);
360
+ transform: scale(1.05);
361
+ }
362
+
363
+ .gallery-thumbnails {
364
+ display: grid;
365
+ grid-template-columns: repeat(8, 1fr);
366
+ gap: {{ settings.spacing_small }}px;
367
+ }
368
+
369
+ .gallery-thumbnail {
370
+ aspect-ratio: 1;
371
+ border: 1px solid transparent;
372
+ border-radius: 0;
373
+ overflow: hidden;
374
+ cursor: pointer;
375
+ transition: all 0.2s ease;
376
+ padding: 0;
377
+ background: {{ settings.color_background }};
378
+ position: relative;
379
+ }
380
+
381
+ .gallery-thumbnail::after {
382
+ content: '';
383
+ position: absolute;
384
+ inset: 0;
385
+ border: 2px solid transparent;
386
+ transition: border-color 0.2s ease;
387
+ }
388
+
389
+ .gallery-thumbnail:hover::after,
390
+ .gallery-thumbnail.active::after {
391
+ border-color: {{ settings.color_text }};
392
+ }
393
+
394
+ .gallery-thumbnail img {
395
+ width: 100%;
396
+ height: 100%;
397
+ object-fit: cover;
398
+ display: block;
399
+ }
400
+
401
+ /* Product Info */
402
+ .product-info {
403
+ display: flex;
404
+ flex-direction: column;
405
+ gap: {{ settings.spacing_component }}px;
406
+ padding-top: 0;
407
+ }
408
+
409
+ .product-vendor {
410
+ color: {{ settings.color_text_muted }};
411
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
412
+ text-transform: uppercase;
413
+ letter-spacing: {{ settings.letter_spacing_uppercase }}em;
414
+ font-weight: {{ settings.font_weight_medium }};
415
+ margin-bottom: -{{ settings.spacing_element }}px;
416
+ }
417
+
418
+ .product-sku {
419
+ color: {{ settings.color_text_muted }};
420
+ font-size: {{ settings.font_size_base | minus: 2 }}px;
421
+ margin-bottom: -{{ settings.spacing_element }}px;
422
+ }
423
+
424
+ .product-sku__label {
425
+ font-weight: {{ settings.font_weight_medium }};
426
+ margin-right: 4px;
427
+ }
428
+ .product-title {
429
+ font-size: {{ settings.font_size_heading }}px;
430
+ font-weight: {{ settings.font_weight_normal }};
431
+ line-height: {{ settings.line_height_heading }};
432
+ color: {{ settings.color_text }};
433
+ margin: 0;
434
+ letter-spacing: {{ settings.letter_spacing_heading }}em;
435
+ }
436
+
437
+ .product-price-wrapper {
438
+ display: flex;
439
+ align-items: baseline;
440
+ gap: {{ settings.spacing_small | plus: 4 }}px;
441
+ }
442
+
443
+ .price-current {
444
+ font-size: {{ settings.font_size_heading | times: 0.75 }}px;
445
+ font-weight: {{ settings.font_weight_normal }};
446
+ color: {{ settings.color_text }};
447
+ letter-spacing: -0.01em;
448
+ }
449
+
450
+ .price-compare {
451
+ font-size: {{ settings.font_size_heading | times: 0.5625 }}px;
452
+ color: {{ settings.color_text_light }};
453
+ text-decoration: line-through;
454
+ font-weight: {{ settings.font_weight_normal }};
455
+ }
456
+
457
+ /* Product Form */
458
+ .product-form {
459
+ display: flex;
460
+ flex-direction: column;
461
+ gap: {{ settings.spacing_large }}px;
462
+ padding-top: {{ settings.spacing_large }}px;
463
+ border-top: 1px solid {{ settings.color_border }};
464
+ }
465
+
466
+ #productOptionsContainer:empty {
467
+ display: none;
468
+ }
469
+
470
+ .product-option {
471
+ display: flex;
472
+ flex-direction: column;
473
+ gap: {{ settings.spacing_small | plus: 4 }}px;
474
+ }
475
+
476
+ .option-label {
477
+ font-weight: {{ settings.font_weight_medium }};
478
+ color: {{ settings.color_text }};
479
+ font-size: {{ settings.font_size_base | minus: 1 }}px;
480
+ text-transform: uppercase;
481
+ letter-spacing: {{ settings.letter_spacing_uppercase }}em;
482
+ }
483
+
484
+ .option-values {
485
+ display: flex;
486
+ flex-wrap: wrap;
487
+ gap: {{ settings.spacing_small }}px;
488
+ }
489
+
490
+ /* Color Swatches */
491
+ .option-value-color {
492
+ width: 40px;
493
+ height: 40px;
494
+ border-radius: 50%;
495
+ border: 1px solid rgba(0, 0, 0, 0.1);
496
+ cursor: pointer;
497
+ transition: all 0.2s ease;
498
+ position: relative;
499
+ padding: 0;
500
+ overflow: hidden;
501
+ background-size: cover;
502
+ background-position: center;
503
+ }
504
+
505
+ .option-value-color:hover:not(.disabled) {
506
+ transform: scale(1.1);
507
+ border-color: rgba(0, 0, 0, 0.2);
508
+ }
509
+
510
+ .option-value-color.selected {
511
+ border-color: {{ settings.color_text }};
512
+ border-width: 2px;
513
+ }
514
+
515
+ .option-value-color.selected::after {
516
+ content: '';
517
+ position: absolute;
518
+ inset: -{{ settings.spacing_xsmall }}px;
519
+ border: 2px solid {{ settings.color_text }};
520
+ border-radius: 50%;
521
+ }
522
+
523
+ .option-value-color.disabled {
524
+ opacity: 0.4;
525
+ cursor: not-allowed;
526
+ position: relative;
527
+ }
528
+
529
+ .option-value-color.disabled::after {
530
+ content: '';
531
+ position: absolute;
532
+ top: 50%;
533
+ left: 0;
534
+ right: 0;
535
+ height: 1px;
536
+ background: {{ settings.color_error }};
537
+ transform: rotate(45deg);
538
+ }
539
+
540
+ /* Size/Text Options */
541
+ .option-value-text {
542
+ padding: 10px 20px;
543
+ border: 1px solid {{ settings.color_border }};
544
+ border-radius: 0;
545
+ background: {{ settings.color_background }};
546
+ cursor: pointer;
547
+ transition: all 0.2s ease;
548
+ font-weight: {{ settings.font_weight_normal }};
549
+ color: {{ settings.color_text }};
550
+ font-size: {{ settings.font_size_base }}px;
551
+ min-width: 60px;
552
+ text-align: center;
553
+ border-radius: var(--border-radius-small);
554
+ }
555
+
556
+
557
+ .option-value-text.selected {
558
+ border-color: {{ settings.color_text }};
559
+ background: {{ settings.color_text }};
560
+ color: {{ settings.color_background }};
561
+ }
562
+
563
+ .option-value-text.disabled {
564
+ opacity: 0.4;
565
+ cursor: not-allowed;
566
+ text-decoration: line-through;
567
+ }
568
+
569
+ /* Quantity Selector */
570
+ .quantity-option {
571
+ width: fit-content;
572
+ }
573
+
574
+ .quantity-wrapper {
575
+ display: flex;
576
+ align-items: center;
577
+ border: 1px solid {{ settings.color_border }};
578
+ border-radius: var(--border-radius-medium);
579
+ width: fit-content;
580
+ overflow: hidden;
581
+ background: {{ settings.color_background }};
582
+ }
583
+
584
+ .quantity-btn {
585
+ width: 44px;
586
+ height: 44px;
587
+ border: none;
588
+ background: transparent;
589
+ cursor: pointer;
590
+ display: flex;
591
+ align-items: center;
592
+ justify-content: center;
593
+ transition: background 0.2s ease;
594
+ color: {{ settings.color_text }};
595
+ font-size: 20px;
596
+ font-weight: 300;
597
+ line-height: 1;
598
+ }
599
+
600
+ .quantity-btn:hover:not(:disabled) {
601
+ background: {{ settings.color_surface }};
602
+ }
603
+
604
+ .quantity-btn:disabled {
605
+ opacity: 0.4;
606
+ cursor: not-allowed;
607
+ }
608
+
609
+ .quantity-input {
610
+ width: 60px;
611
+ height: 44px;
612
+ border: none;
613
+ border-left: 1px solid {{ settings.color_border }};
614
+ border-right: 1px solid {{ settings.color_border }};
615
+ text-align: center;
616
+ font-weight: {{ settings.font_weight_normal }};
617
+ font-size: {{ settings.font_size_base }}px;
618
+ background: {{ settings.color_background }};
619
+ color: {{ settings.color_text }};
620
+ -moz-appearance: textfield;
621
+ }
622
+
623
+ .quantity-input::-webkit-inner-spin-button,
624
+ .quantity-input::-webkit-outer-spin-button {
625
+ -webkit-appearance: none;
626
+ margin: 0;
627
+ }
628
+
629
+ /* Action Button */
630
+ .product-actions {
631
+ display: flex;
632
+ gap: {{ settings.spacing_small | plus: 4 }}px;
633
+ flex-direction: column;
634
+ width: 100%;
635
+ position:relative;
636
+ opacity:unset;
637
+ }
638
+
639
+ .btn {
640
+ padding: {{ settings.spacing_element }}px {{ settings.spacing_large }}px;
641
+ border-radius: var(--border-radius-medium);
642
+ font-weight: {{ settings.font_weight_medium }};
643
+ font-size: {{ settings.font_size_base }}px;
644
+ cursor: pointer;
645
+ transition: all 0.2s ease;
646
+ display: inline-flex;
647
+ align-items: center;
648
+ justify-content: center;
649
+ gap: {{ settings.spacing_small }}px;
650
+ border: 1px solid transparent;
651
+ text-transform: uppercase;
652
+ letter-spacing: {{ settings.letter_spacing_uppercase }}em;
653
+ white-space: nowrap;
654
+ width: 100%;
655
+ }
656
+
657
+ .btn-primary {
658
+ background: {{ settings.color_text }};
659
+ color: {{ settings.color_background }};
660
+ border-color: {{ settings.color_text }};
661
+ }
662
+
663
+ .btn-primary:hover:not(:disabled) {
664
+ background: {{ settings.color_primary_dark }};
665
+ border-color: {{ settings.color_primary_dark }};
666
+ }
667
+
668
+ .btn-primary:disabled {
669
+ opacity: 0.4;
670
+ cursor: not-allowed;
671
+ }
672
+
673
+ .btn-primary.loading {
674
+ opacity: 0.7;
675
+ cursor: wait;
676
+ }
677
+
678
+ .cart-message {
679
+ padding: var(--spacing-component, 12px) var(--spacing-component, 16px);
680
+ color: var(--color-success, #059669);
681
+ font-size: var(--text-base, 14px);
682
+ font-weight: var(--font-weight-normal, 500);
683
+ text-transform: none;
684
+ letter-spacing: 0;
685
+ animation: fadeIn var(--transition, 0.3s) var(--ease-out, ease);
686
+ border-radius: var(--border-radius-small, 4px);
687
+ margin-top: var(--spacing-component, 12px);
688
+ line-height: var(--line-height-base, 1.5);
689
+ }
690
+
691
+ .cart-message.error {
692
+ color: var(--color-error, #b70000);
693
+ background-color: var(--color-error-light, #ffe6e6);
694
+ border: 1px solid var(--color-error, #b70000);
695
+ }
696
+
697
+ @keyframes fadeIn {
698
+ from {
699
+ opacity: 0;
700
+ transform: translateY(-4px);
701
+ }
702
+ to {
703
+ opacity: 1;
704
+ transform: translateY(0);
705
+ }
706
+ }
707
+
708
+ /* Product Description Short */
709
+ .product-description-short {
710
+ color: {{ settings.color_text_muted }};
711
+ font-size: {{ settings.font_size_base }}px;
712
+ line-height: {{ settings.line_height_base }};
713
+ padding-top: {{ settings.spacing_large }}px;
714
+ border-top: 1px solid {{ settings.color_border }};
715
+ }
716
+
717
+ /* Product Description Section */
718
+ .product-description-section {
719
+ padding: {{ settings.spacing_section }}px 0;
720
+ border-top: 1px solid {{ settings.color_border }};
721
+ }
722
+
723
+ .description-container {
724
+ max-width: 800px;
725
+ margin: 0 auto;
726
+ padding: 0 {{ settings.container_padding }}px;
727
+ }
728
+
729
+ .product-description-content {
730
+ line-height: 1.8;
731
+ color: {{ settings.color_text_muted }};
732
+ font-size: 15px;
733
+ }
734
+
735
+ .product-description-content h1,
736
+ .product-description-content h2,
737
+ .product-description-content h3 {
738
+ color: {{ settings.color_text }};
739
+ font-weight: {{ settings.font_weight_normal }};
740
+ margin-top: {{ settings.spacing_large }}px;
741
+ margin-bottom: {{ settings.spacing_element }}px;
742
+ letter-spacing: -0.01em;
743
+ }
744
+
745
+ .product-description-content p {
746
+ margin-bottom: {{ settings.spacing_element }}px;
747
+ }
748
+
749
+ /* Related Products */
750
+ .related-products-section {
751
+ padding: {{ settings.spacing_section }}px 0;
752
+ border-top: 1px solid {{ settings.color_border }};
753
+ }
754
+
755
+ .section-container {
756
+ max-width: {{ settings.container_width }}px;
757
+ margin: 0 auto;
758
+ padding: 0 {{ settings.container_padding }}px;
759
+ }
760
+
761
+ .section-title {
762
+ font-size: {{ settings.font_size_heading | times: 0.75 }}px;
763
+ font-weight: {{ settings.font_weight_normal }};
764
+ color: {{ settings.color_text }};
765
+ margin: 0 0 48px 0;
766
+ text-align: center;
767
+ letter-spacing: -0.01em;
768
+ }
769
+
770
+ .products-grid {
771
+ display: grid;
772
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
773
+ gap: {{ settings.spacing_large }}px;
774
+ }
775
+
776
+ /* Full Screen Gallery Modal */
777
+ .gallery-modal {
778
+ display: none;
779
+ position: fixed;
780
+ top: 0;
781
+ left: 0;
782
+ right: 0;
783
+ bottom: 0;
784
+ z-index: 9999;
785
+ }
786
+
787
+ .gallery-modal.active {
788
+ display: block;
789
+ }
790
+
791
+ .gallery-modal-overlay {
792
+ position: absolute;
793
+ top: 0;
794
+ left: 0;
795
+ right: 0;
796
+ bottom: 0;
797
+ background: rgba(0, 0, 0, 0.95);
798
+ }
799
+
800
+ .gallery-modal-content {
801
+ position: relative;
802
+ width: 100%;
803
+ height: 100%;
804
+ display: flex;
805
+ align-items: center;
806
+ justify-content: center;
807
+ padding: {{ settings.spacing_section }}px;
808
+ }
809
+
810
+ .gallery-modal-image {
811
+ max-width: 100%;
812
+ max-height: 90vh;
813
+ object-fit: contain;
814
+ }
815
+
816
+ .gallery-modal-close,
817
+ .gallery-modal-nav {
818
+ position: absolute;
819
+ width: 48px;
820
+ height: 48px;
821
+ border-radius: 50%;
822
+ background: rgba(255, 255, 255, 0.1);
823
+ border: 1px solid rgba(255, 255, 255, 0.2);
824
+ display: flex;
825
+ align-items: center;
826
+ justify-content: center;
827
+ cursor: pointer;
828
+ transition: all 0.2s ease;
829
+ z-index: 10000;
830
+ color: #fff;
831
+ backdrop-filter: blur(10px);
832
+ }
833
+
834
+ .gallery-modal-close:hover,
835
+ .gallery-modal-nav:hover {
836
+ background: rgba(255, 255, 255, 0.2);
837
+ transform: scale(1.1);
838
+ }
839
+
840
+ .gallery-modal-close {
841
+ top: {{ settings.spacing_large }}px;
842
+ right: {{ settings.spacing_large }}px;
843
+ }
844
+
845
+ .gallery-modal-nav {
846
+ top: 50%;
847
+ transform: translateY(-50%);
848
+ }
849
+
850
+ .gallery-modal-prev {
851
+ left: {{ settings.spacing_large }}px;
852
+ }
853
+
854
+ .gallery-modal-next {
855
+ right: {{ settings.spacing_large }}px;
856
+ }
857
+
858
+ .gallery-modal-counter {
859
+ position: absolute;
860
+ bottom: {{ settings.spacing_large }}px;
861
+ left: 50%;
862
+ transform: translateX(-50%);
863
+ color: {{ settings.color_background }};
864
+ font-size: {{ settings.font_size_base }}px;
865
+ background: rgba(0, 0, 0, 0.5);
866
+ padding: {{ settings.spacing_small }}px {{ settings.spacing_element }}px;
867
+ border-radius: 20px;
868
+ backdrop-filter: blur(10px);
869
+ }
870
+
871
+ .sr-only {
872
+ position: absolute;
873
+ width: 1px;
874
+ height: 1px;
875
+ padding: 0;
876
+ margin: -1px;
877
+ overflow: hidden;
878
+ clip: rect(0, 0, 0, 0);
879
+ white-space: nowrap;
880
+ border-width: 0;
881
+ }
882
+
883
+ /* Product Attributes Section */
884
+ .product-attributes-section {
885
+ padding: 72px 0 40px;
886
+ border-top: 1px solid {{ settings.color_border }};
887
+ }
888
+
889
+ .attributes-tabs-wrapper {
890
+ margin-top: 28px;
891
+ }
892
+
893
+ .attributes-nav {
894
+ display: flex;
895
+ gap: 10px;
896
+ list-style: none;
897
+ margin: -138px 31px 18px 0;
898
+ padding: 0;
899
+
900
+ }
901
+
902
+ .attributes-tab-link {
903
+ padding: 10px 7px;
904
+ background: transparent;
905
+ color: {{ settings.color_text_muted }};
906
+ font-weight: 600;
907
+ font-size: 12px;
908
+ cursor: pointer;
909
+ border: none;
910
+ border-bottom: 3px solid transparent;
911
+ text-transform: uppercase;
912
+ letter-spacing: 0.6px;
913
+ transition: color .18s ease, border-color .18s ease;
914
+ }
915
+
916
+ .attributes-tab-link:hover { color: {{ settings.color_text }}; }
917
+ .attributes-tab-link.active { color: {{ settings.color_text }}; border-bottom-color: {{ settings.color_text }}; }
918
+
919
+ .attributes-tab-content { padding-top: 20px; }
920
+
921
+ .attributes-tab-pane { display: none; }
922
+ .attributes-tab-pane.active { display: block; }
923
+
924
+ .attributes-grid {
925
+ display: grid;
926
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
927
+ gap: 18px;
928
+ }
929
+
930
+ .attributes-card {
931
+ display: flex;
932
+ gap: {{ settings.spacing_small | plus: 4 }}px;
933
+ padding: {{ settings.spacing_element }}px;
934
+ border: 1px solid {{ settings.color_border }};
935
+ border-radius: {{ settings.border_radius_medium }}px;
936
+ background: {{ settings.color_surface }};
937
+ align-items: flex-start;
938
+ transition: box-shadow .18s ease, transform .12s ease, background .18s ease;
939
+ }
940
+
941
+ .attributes-card:hover { box-shadow: 0 6px 18px rgba(16,24,40,0.06); transform: translateY(-2px); background: {{ settings.color_background }}; }
942
+
943
+ .attribute-icon { width: 40px; height: 40px; border-radius: {{ settings.border_radius_medium }}px; display:flex; align-items:center; justify-content:center; background:{{ settings.color_surface }}; color:{{ settings.color_text_muted }}; flex-shrink:0; }
944
+
945
+ .attribute-info { min-width:0; }
946
+ .attribute-name { font-size:11px; text-transform:uppercase; color:{{ settings.color_text }}; font-weight:{{ settings.font_weight_bold }}; margin-bottom:6px; }
947
+ .attribute-value-text { font-size:{{ settings.font_size_base }}px; color:{{ settings.color_text_muted }}; line-height:1.4; word-break:break-word; }
948
+
949
+ /* Product Specifications Section */
950
+ .product-specifications-section {
951
+ padding: {{ settings.spacing_section }}px 0;
952
+ border-top: 1px solid {{ settings.color_border }};
953
+ }
954
+
955
+ .specifications-container {
956
+ margin-top: {{ settings.spacing_large }}px;
957
+ }
958
+
959
+ /* Responsive Design */
960
+ @media (max-width: 1024px) {
961
+ .product-container {
962
+ grid-template-columns: 1fr;
963
+ gap: {{ settings.spacing_component | times: 2 }}px;
964
+ padding-top: {{ settings.spacing_component }}px;
965
+ padding-bottom: {{ settings.spacing_component | times: 2 }}px;
966
+ }
967
+
968
+ .product-gallery {
969
+ position: static;
970
+ }
971
+
972
+ .gallery-thumbnails {
973
+ grid-template-columns: repeat(6, 1fr);
974
+ }
975
+ }
976
+
977
+ @media (max-width: 768px) {
978
+ .product-container {
979
+ padding: 0 {{ settings.spacing_element }}px;
980
+ padding-top: {{ settings.spacing_element }}px;
981
+ padding-bottom: {{ settings.spacing_large }}px;
982
+ gap: {{ settings.spacing_large }}px;
983
+ }
984
+
985
+ .product-title {
986
+ font-size: {{ settings.font_size_heading | times: 0.875 }}px;
987
+ }
988
+
989
+ .price-current {
990
+ font-size: {{ settings.font_size_heading | times: 0.625 }}px;
991
+ }
992
+
993
+ .gallery-thumbnails {
994
+ grid-template-columns: repeat(4, 1fr);
995
+ }
996
+
997
+ .gallery-modal-content {
998
+ padding: {{ settings.spacing_element }}px;
999
+ }
1000
+
1001
+ .gallery-modal-close,
1002
+ .gallery-modal-nav {
1003
+ width: 40px;
1004
+ height: 40px;
1005
+ }
1006
+
1007
+ .gallery-modal-close {
1008
+ top: {{ settings.spacing_element }}px;
1009
+ right: {{ settings.spacing_element }}px;
1010
+ }
1011
+
1012
+ .gallery-modal-prev {
1013
+ left: {{ settings.spacing_element }}px;
1014
+ }
1015
+
1016
+ .gallery-modal-next {
1017
+ right: {{ settings.spacing_element }}px;
1018
+ }
1019
+
1020
+ .products-grid {
1021
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
1022
+ gap: {{ settings.spacing_component }}px;
1023
+ }
1024
+
1025
+ .product-description-section,
1026
+ .related-products-section {
1027
+ padding: {{ settings.spacing_component | times: 2 }}px 0;
1028
+ }
1029
+
1030
+ .description-container,
1031
+ .section-container {
1032
+ padding: 0 {{ settings.spacing_element }}px;
1033
+ }
1034
+ }
1035
+
1036
+ @media (max-width: 480px) {
1037
+ .product-title {
1038
+ font-size: {{ settings.font_size_heading | times: 0.75 }}px;
1039
+ }
1040
+
1041
+ .gallery-thumbnails {
1042
+ grid-template-columns: repeat(4, 1fr);
1043
+ gap: {{ settings.border_radius_small }}px;
1044
+ }
1045
+
1046
+ .products-grid {
1047
+ grid-template-columns: 1fr 1fr;
1048
+ gap: {{ settings.spacing_element }}px;
1049
+ }
1050
+ }