@o2vend/theme-cli 1.0.32

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 (116) hide show
  1. package/README.md +425 -0
  2. package/assets/Logo_o2vend.png +0 -0
  3. package/assets/favicon.png +0 -0
  4. package/assets/logo-white.png +0 -0
  5. package/bin/o2vend +42 -0
  6. package/config/widget-map.json +50 -0
  7. package/lib/commands/check.js +201 -0
  8. package/lib/commands/generate.js +33 -0
  9. package/lib/commands/init.js +214 -0
  10. package/lib/commands/optimize.js +216 -0
  11. package/lib/commands/package.js +208 -0
  12. package/lib/commands/serve.js +105 -0
  13. package/lib/commands/validate.js +191 -0
  14. package/lib/lib/api-client.js +357 -0
  15. package/lib/lib/dev-server.js +2618 -0
  16. package/lib/lib/file-watcher.js +80 -0
  17. package/lib/lib/hot-reload.js +106 -0
  18. package/lib/lib/liquid-engine.js +822 -0
  19. package/lib/lib/liquid-filters.js +671 -0
  20. package/lib/lib/mock-api-server.js +989 -0
  21. package/lib/lib/mock-data.js +1468 -0
  22. package/lib/lib/widget-service.js +321 -0
  23. package/package.json +70 -0
  24. package/test-theme/README.md +27 -0
  25. package/test-theme/assets/async-sections.js +446 -0
  26. package/test-theme/assets/cart-drawer.js +463 -0
  27. package/test-theme/assets/cart-manager.js +223 -0
  28. package/test-theme/assets/checkout-price-handler.js +368 -0
  29. package/test-theme/assets/components.css +4629 -0
  30. package/test-theme/assets/delivery-zone.css +299 -0
  31. package/test-theme/assets/delivery-zone.js +396 -0
  32. package/test-theme/assets/logo.png +0 -0
  33. package/test-theme/assets/sections.css +48 -0
  34. package/test-theme/assets/theme.css +3500 -0
  35. package/test-theme/assets/theme.js +3745 -0
  36. package/test-theme/config/settings_data.json +292 -0
  37. package/test-theme/config/settings_schema.json +1050 -0
  38. package/test-theme/layout/theme.liquid +195 -0
  39. package/test-theme/locales/en.default.json +260 -0
  40. package/test-theme/sections/content-fallback.liquid +53 -0
  41. package/test-theme/sections/content.liquid +57 -0
  42. package/test-theme/sections/footer-fallback.liquid +328 -0
  43. package/test-theme/sections/footer.liquid +278 -0
  44. package/test-theme/sections/header-fallback.liquid +1805 -0
  45. package/test-theme/sections/header.liquid +1145 -0
  46. package/test-theme/sections/hero-fallback.liquid +212 -0
  47. package/test-theme/sections/hero.liquid +136 -0
  48. package/test-theme/snippets/account-sidebar.liquid +200 -0
  49. package/test-theme/snippets/add-to-cart-modal.liquid +484 -0
  50. package/test-theme/snippets/breadcrumbs.liquid +134 -0
  51. package/test-theme/snippets/cart-drawer.liquid +467 -0
  52. package/test-theme/snippets/delivery-zone-city-selector.liquid +79 -0
  53. package/test-theme/snippets/delivery-zone-modal.liquid +337 -0
  54. package/test-theme/snippets/delivery-zone-search.liquid +78 -0
  55. package/test-theme/snippets/icon.liquid +105 -0
  56. package/test-theme/snippets/login-modal.liquid +346 -0
  57. package/test-theme/snippets/mega-menu.liquid +812 -0
  58. package/test-theme/snippets/news-thumbnail.liquid +187 -0
  59. package/test-theme/snippets/pagination.liquid +120 -0
  60. package/test-theme/snippets/price.liquid +92 -0
  61. package/test-theme/snippets/product-card-related.liquid +78 -0
  62. package/test-theme/snippets/product-card-simple.liquid +41 -0
  63. package/test-theme/snippets/product-card.liquid +697 -0
  64. package/test-theme/snippets/rating.liquid +85 -0
  65. package/test-theme/snippets/skeleton-collection-grid.liquid +114 -0
  66. package/test-theme/snippets/skeleton-product-card.liquid +124 -0
  67. package/test-theme/snippets/skeleton-product-grid.liquid +34 -0
  68. package/test-theme/snippets/social-sharing.liquid +185 -0
  69. package/test-theme/templates/account/dashboard.liquid +401 -0
  70. package/test-theme/templates/account/loyalty-redemption.liquid +405 -0
  71. package/test-theme/templates/account/loyalty.liquid +588 -0
  72. package/test-theme/templates/account/order-detail.liquid +230 -0
  73. package/test-theme/templates/account/orders.liquid +349 -0
  74. package/test-theme/templates/account/profile.liquid +758 -0
  75. package/test-theme/templates/account/register.liquid +232 -0
  76. package/test-theme/templates/account/return-orders.liquid +348 -0
  77. package/test-theme/templates/account/store-credit.liquid +464 -0
  78. package/test-theme/templates/account/subscriptions.liquid +601 -0
  79. package/test-theme/templates/account/wishlist.liquid +419 -0
  80. package/test-theme/templates/address-book.liquid +1092 -0
  81. package/test-theme/templates/categories.liquid +452 -0
  82. package/test-theme/templates/checkout.liquid +4511 -0
  83. package/test-theme/templates/error.liquid +384 -0
  84. package/test-theme/templates/index.liquid +11 -0
  85. package/test-theme/templates/login.liquid +185 -0
  86. package/test-theme/templates/order-confirmation.liquid +720 -0
  87. package/test-theme/templates/page.liquid +297 -0
  88. package/test-theme/templates/product-detail.liquid +4363 -0
  89. package/test-theme/templates/products.liquid +518 -0
  90. package/test-theme/templates/search.liquid +922 -0
  91. package/test-theme/theme.json.example +19 -0
  92. package/test-theme/widgets/brand-carousel.liquid +676 -0
  93. package/test-theme/widgets/brand.liquid +245 -0
  94. package/test-theme/widgets/carousel.liquid +843 -0
  95. package/test-theme/widgets/category-list-carousel.liquid +656 -0
  96. package/test-theme/widgets/category-list.liquid +340 -0
  97. package/test-theme/widgets/category.liquid +475 -0
  98. package/test-theme/widgets/discount-time.liquid +176 -0
  99. package/test-theme/widgets/footer-menu.liquid +695 -0
  100. package/test-theme/widgets/footer.liquid +179 -0
  101. package/test-theme/widgets/gallery.liquid +271 -0
  102. package/test-theme/widgets/header-menu.liquid +932 -0
  103. package/test-theme/widgets/header.liquid +159 -0
  104. package/test-theme/widgets/html.liquid +214 -0
  105. package/test-theme/widgets/news.liquid +217 -0
  106. package/test-theme/widgets/product-canvas.liquid +235 -0
  107. package/test-theme/widgets/product-carousel.liquid +502 -0
  108. package/test-theme/widgets/product.liquid +45 -0
  109. package/test-theme/widgets/recently-viewed.liquid +26 -0
  110. package/test-theme/widgets/shared/product-grid.liquid +339 -0
  111. package/test-theme/widgets/simple-product.liquid +42 -0
  112. package/test-theme/widgets/single-product.liquid +610 -0
  113. package/test-theme/widgets/spacebar-carousel.liquid +663 -0
  114. package/test-theme/widgets/spacebar.liquid +279 -0
  115. package/test-theme/widgets/splash.liquid +378 -0
  116. package/test-theme/widgets/testimonial-carousel.liquid +709 -0
@@ -0,0 +1,4629 @@
1
+ /* O2VEND Default Theme - Component Styles */
2
+ /* Collection header title styles moved to main collection-header section */
3
+
4
+ /* Buttons - Horizon Style */
5
+ .btn {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ gap: var(--space-2);
10
+ padding: var(--button-padding-vertical, 1.4rem) var(--button-padding-tal, 1.5rem);
11
+ font-size: var(--text-sm, 1.4rem);
12
+ font-weight: var(--font-weight-normal, 500);
13
+ line-height: 1;
14
+ text-decoration: none;
15
+ border: 1px solid transparent;
16
+ border-radius: var(--border-radius-medium, 8px);
17
+ cursor: pointer;
18
+ transition: all var(--button-transition-speed, 0.15s) var(--ease-out, ease);
19
+ white-space: nowrap;
20
+ user-select: none;
21
+ font-family: var(--font-primary, var(--font-body));
22
+ }
23
+
24
+ .btn:disabled {
25
+ opacity: 0.6;
26
+ cursor: not-allowed;
27
+ }
28
+
29
+ .btn-primary {
30
+ background-color: var(--color-primary);
31
+ color: var(--color-background);
32
+ border-color: var(--color-primary);
33
+ }
34
+
35
+ .btn-primary:hover:not(:disabled) {
36
+ background-color: var(--color-primary-dark);
37
+ border-color: var(--color-primary-dark);
38
+ }
39
+
40
+ .btn-secondary {
41
+ background-color: var(--color-background);
42
+ color: var(--color-primary);
43
+ border-color: var(--color-border);
44
+ }
45
+
46
+ .btn-secondary:hover:not(:disabled) {
47
+ background-color: var(--color-surface);
48
+ border-color: var(--color-text-muted);
49
+ }
50
+
51
+ .btn-outline {
52
+ background-color: transparent;
53
+ color: var(--color-primary);
54
+ border-color: var(--color-primary);
55
+ }
56
+
57
+ .btn-outline:hover:not(:disabled) {
58
+ background-color: var(--color-primary);
59
+ color: var(--color-background);
60
+ }
61
+
62
+ .btn-ghost {
63
+ background-color: transparent;
64
+ color: var(--color-text);
65
+ border-color: transparent;
66
+ }
67
+
68
+ .btn-ghost:hover:not(:disabled) {
69
+ background-color: var(--color-surface);
70
+ color: var(--color-primary);
71
+ }
72
+
73
+ .btn-sm {
74
+ padding: var(--space-2) var(--space-4);
75
+ font-size: var(--text-sm);
76
+ }
77
+
78
+ .btn-lg {
79
+ padding: var(--space-4) var(--space-8);
80
+ font-size: var(--text-lg);
81
+ }
82
+
83
+ .btn-xl {
84
+ padding: var(--space-5) var(--space-10);
85
+ font-size: var(--text-xl);
86
+ }
87
+
88
+ /* Product Cards */
89
+ .product-card {
90
+ background-color: var(--color-white);
91
+ border-radius: 0;
92
+ overflow: hidden;
93
+ transition: all var(--transition-fast);
94
+ border: none;
95
+ position: relative;
96
+ display: flex;
97
+ flex-direction: column;
98
+ height: auto;
99
+ max-height: none;
100
+ box-shadow: none;
101
+ }
102
+
103
+ .product-card:hover {
104
+ transform: none;
105
+ box-shadow: none;
106
+ border-color: transparent;
107
+ }
108
+
109
+ .product-image-container {
110
+ position: relative;
111
+ overflow: hidden;
112
+ aspect-ratio: 1;
113
+ background-color: var(--color-gray-50);
114
+ }
115
+
116
+ .product-image {
117
+ width: 100%;
118
+ height: 100%;
119
+ object-fit: cover;
120
+ transition: transform var(--transition-fast);
121
+ }
122
+
123
+ .product-card:hover .product-image {
124
+ transform: scale(1.02);
125
+ }
126
+
127
+ .product-image-link {
128
+ display: block;
129
+ width: 100%;
130
+ height: 100%;
131
+ text-decoration: none;
132
+ }
133
+
134
+ .product-placeholder {
135
+ display: flex;
136
+ flex-direction: column;
137
+ align-items: center;
138
+ justify-content: center;
139
+ height: 100%;
140
+ width: 100%;
141
+ min-height: 280px;
142
+ color: var(--color-text-muted);
143
+ background-color: var(--color-surface);
144
+ border: 1px solid var(--color-border);
145
+ border-radius: var(--border-radius-medium, var(--radius-lg, 0.5rem));
146
+ }
147
+
148
+ .placeholder-icon {
149
+ width: 48px;
150
+ height: 48px;
151
+ opacity: 0.5;
152
+ margin-bottom: var(--space-2, 0.5rem);
153
+ }
154
+
155
+ .product-placeholder::after {
156
+ content: '';
157
+ position: absolute;
158
+ width: 100%;
159
+ height: 100%;
160
+ top: 0;
161
+ left: 0;
162
+ pointer-events: none;
163
+ }
164
+
165
+ /* Product Badges */
166
+ .product-badges {
167
+ position: absolute;
168
+ top: var(--space-2);
169
+ left: var(--space-2);
170
+ display: flex;
171
+ flex-direction: column;
172
+ gap: var(--space-1);
173
+ z-index: 10;
174
+ }
175
+
176
+ .product-badge {
177
+ padding: var(--space-1) var(--space-2);
178
+ border-radius: 0;
179
+ font-size: var(--text-xs);
180
+ font-weight: 500;
181
+ text-transform: uppercase;
182
+ letter-spacing: var(--tracking-wide);
183
+ box-shadow: none;
184
+ backdrop-filter: none;
185
+ -webkit-backdrop-filter: none;
186
+ }
187
+
188
+ .product-badge-sale {
189
+ background-color: var(--color-black);
190
+ color: var(--color-white);
191
+ }
192
+
193
+ .product-badge-new {
194
+ background-color: var(--color-success);
195
+ color: var(--color-white);
196
+ }
197
+
198
+ .product-badge-sold-out {
199
+ background-color: var(--color-gray-600);
200
+ color: var(--color-white);
201
+ }
202
+
203
+ /* Add to Cart Overlay */
204
+ .product-actions-overlay {
205
+ position: absolute;
206
+ bottom: var(--space-3);
207
+ left: var(--space-3);
208
+ right: var(--space-3);
209
+ opacity: 0;
210
+ transform: translateY(10px);
211
+ transition: all var(--transition-fast);
212
+ z-index: 10;
213
+ }
214
+
215
+ .product-card:hover .product-actions-overlay {
216
+ opacity: 1;
217
+ transform: translateY(0);
218
+ }
219
+
220
+ .product-actions-overlay .add-to-cart-btn {
221
+ width: 100%;
222
+ background-color: var(--color-black);
223
+ color: var(--color-white);
224
+ border: none;
225
+ padding: var(--space-2) var(--space-4);
226
+ font-size: var(--text-sm);
227
+ font-weight: 500;
228
+ text-transform: uppercase;
229
+ letter-spacing: var(--tracking-wide);
230
+ border-radius: 0;
231
+ }
232
+
233
+ .product-actions-overlay .add-to-cart-btn:hover {
234
+ background-color: var(--color-gray-800);
235
+ }
236
+
237
+ /* Product Actions Overlay */
238
+ .product-actions {
239
+ position: absolute;
240
+ top: 0;
241
+ left: 0;
242
+ right: 0;
243
+ bottom: 0;
244
+ backdrop-filter: blur(4px);
245
+ -webkit-backdrop-filter: blur(4px);
246
+ display: flex;
247
+ align-items: center;
248
+ justify-content: center;
249
+ gap: var(--space-4);
250
+ opacity: 0;
251
+ transition: all var(--transition);
252
+ z-index: var(--z-10);
253
+ }
254
+
255
+ .product-card:hover .product-actions {
256
+ opacity: 1;
257
+ }
258
+
259
+ .product-action-btn {
260
+ display: flex;
261
+ flex-direction: column;
262
+ align-items: center;
263
+ justify-content: center;
264
+ gap: var(--space-1);
265
+ width: 60px;
266
+ height: 60px;
267
+ background-color: var(--color-white);
268
+ border: none;
269
+ border-radius: var(--radius-xl);
270
+ color: var(--theme-text);
271
+ cursor: pointer;
272
+ box-shadow: var(--shadow-lg);
273
+ transition: all var(--transition-fast);
274
+ font-size: var(--text-xs);
275
+ font-weight: 600;
276
+ text-transform: uppercase;
277
+ letter-spacing: var(--tracking-wide);
278
+ }
279
+
280
+ .product-action-btn:hover {
281
+ background-color: var(--color-accent);
282
+ color: var(--color-white);
283
+ transform: scale(1.1);
284
+ box-shadow: var(--shadow-xl);
285
+ }
286
+
287
+ .action-label {
288
+ font-size: var(--text-xs);
289
+ font-weight: 600;
290
+ text-transform: uppercase;
291
+ letter-spacing: var(--tracking-wide);
292
+ }
293
+
294
+ /* Product Content */
295
+ .product-content {
296
+ padding: var(--space-3) 0 0 0;
297
+ flex: 1;
298
+ display: flex;
299
+ flex-direction: column;
300
+ gap: var(--space-1);
301
+ }
302
+
303
+ .product-card .product-title {
304
+ margin-bottom: 0;
305
+ flex: 0 0 auto;
306
+ }
307
+
308
+ .product-title-link {
309
+ color: var(--color-black);
310
+ text-decoration: none;
311
+ font-size: var(--text-sm);
312
+ font-weight: 400;
313
+ line-height: var(--leading-normal);
314
+ transition: color var(--transition-fast);
315
+ font-family: var(--font-primary);
316
+ }
317
+
318
+ .product-title-link:hover {
319
+ color: var(--color-gray-600);
320
+ }
321
+
322
+ .product-price {
323
+ display: flex;
324
+ align-items: flex-start;
325
+ gap: var(--space-2);
326
+ margin-top: auto;
327
+ justify-content: flex-start;
328
+ }
329
+
330
+ .product-price-current {
331
+ font-size: var(--text-xs, 12px);
332
+ font-weight: var(--font-weight-normal, 500);
333
+ color: var(--color-text, var(--color-black));
334
+ font-family: var(--font-primary, var(--font-body));
335
+ }
336
+
337
+ .product-price-original {
338
+ font-size: var(--text-sm);
339
+ color: var(--color-gray-500);
340
+ text-decoration: line-through;
341
+ font-weight: 400;
342
+ }
343
+
344
+ /* Product Vendor */
345
+ .product-vendor {
346
+ margin-bottom: var(--space-1);
347
+ font-size: var(--text-xs, 10px);
348
+ }
349
+
350
+ .vendor-link {
351
+ color: var(--color-text-muted, var(--theme-text-muted));
352
+ text-decoration: none;
353
+ font-size: var(--text-xs, 10px);
354
+ font-weight: var(--font-weight-normal, 400);
355
+ text-transform: uppercase;
356
+ letter-spacing: var(--letter-spacing-uppercase, var(--tracking-wide));
357
+ transition: color var(--transition-fast);
358
+ }
359
+
360
+ .vendor-link:hover {
361
+ color: var(--color-accent);
362
+ }
363
+
364
+ /* Duplicate product title rules removed - using component style rules above */
365
+
366
+ /* Product Rating */
367
+ .product-rating {
368
+ display: flex;
369
+ align-items: center;
370
+ gap: var(--space-1);
371
+ margin-bottom: var(--space-1);
372
+ font-size: var(--text-xs, 10px);
373
+ }
374
+
375
+ .rating-stars {
376
+ display: flex;
377
+ gap: var(--space-1);
378
+ }
379
+
380
+ .star {
381
+ color: var(--color-gray-300);
382
+ transition: color var(--transition-fast);
383
+ }
384
+
385
+ .star-filled {
386
+ color: var(--color-warning);
387
+ }
388
+
389
+ .rating-count {
390
+ font-size: var(--text-sm);
391
+ color: var(--theme-text-muted);
392
+ }
393
+
394
+ /* Duplicate product price rules removed - using component style rules above */
395
+
396
+ .product-price-savings {
397
+ font-size: var(--text-sm);
398
+ color: var(--color-success);
399
+ font-weight: 600;
400
+ }
401
+
402
+ /* Product Description */
403
+ .product-description {
404
+ color: var(--color-text-muted, var(--theme-text-muted));
405
+ font-size: var(--text-xs, 10px);
406
+ line-height: var(--line-height-base, 1.4);
407
+ margin-bottom: var(--space-1);
408
+ flex: 1;
409
+ }
410
+
411
+ /* Product Actions Bottom */
412
+ .product-actions-bottom {
413
+ margin-top: auto;
414
+ }
415
+
416
+ .add-to-cart-btn {
417
+ width: 100%;
418
+ display: flex;
419
+ align-items: center;
420
+ justify-content: center;
421
+ gap: var(--space-1);
422
+ padding: var(--space-1) var(--space-3);
423
+ background-color: var(--color-primary, var(--theme-primary));
424
+ color: var(--color-white) !important;
425
+ font-weight: var(--font-weight-normal, 400);
426
+ font-size: var(--text-xs, 10px);
427
+ cursor: pointer;
428
+ transition: all var(--button-transition-speed, var(--transition-fast));
429
+ text-transform: uppercase;
430
+ letter-spacing: var(--letter-spacing-uppercase, var(--tracking-wide));
431
+ transform: translateX(0px) !important;
432
+ box-shadow: unset !important;
433
+ }
434
+
435
+ .add-to-cart-btn:hover:not(:disabled) {
436
+ transform: translateY(-2px);
437
+ box-shadow: var(--shadow-lg);
438
+ }
439
+
440
+ .add-to-cart-btn:active:not(:disabled) {
441
+ transform: translateY(0);
442
+ box-shadow: var(--shadow-md);
443
+ }
444
+
445
+ .add-to-cart-btn:disabled {
446
+ background-color: var(--color-gray-300);
447
+ cursor: not-allowed;
448
+ transform: none;
449
+ box-shadow: none;
450
+ opacity: 0.6;
451
+ }
452
+
453
+ .quick-view-btn {
454
+ padding: var(--space-3);
455
+ background-color: var(--color-gray-100);
456
+ color: var(--color-gray-700);
457
+ border: none;
458
+ border-radius: var(--radius);
459
+ cursor: pointer;
460
+ transition: all var(--transition-fast);
461
+ }
462
+
463
+ .quick-view-btn:hover {
464
+ background-color: var(--color-gray-200);
465
+ color: var(--color-primary);
466
+ }
467
+
468
+ /* Product Grid */
469
+ .products-grid {
470
+ display: grid;
471
+ grid-template-columns: repeat(2, 1fr);
472
+ gap: var(--space-4);
473
+ margin-top: var(--space-8);
474
+ max-width: 1200px;
475
+ margin-left: auto;
476
+ margin-right: auto;
477
+ padding: 0 var(--space-4);
478
+ grid-auto-flow: dense;
479
+ }
480
+
481
+ @media (min-width: 640px) {
482
+ .products-grid {
483
+ grid-template-columns: repeat(3, 1fr);
484
+ gap: var(--space-6);
485
+ padding: 0 var(--space-6);
486
+ }
487
+ }
488
+
489
+ @media (min-width: 1024px) {
490
+ .products-grid {
491
+ grid-template-columns: repeat(4, 1fr);
492
+ gap: var(--space-6);
493
+ padding: 0 var(--space-8);
494
+ }
495
+ }
496
+
497
+ /* Regular Product Grid (default) */
498
+ .products-grid {
499
+ display: grid;
500
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
501
+ gap: var(--space-6);
502
+ grid-auto-flow: row;
503
+ }
504
+
505
+ @media (min-width: 768px) {
506
+ .products-grid {
507
+ grid-template-columns: repeat(2, 1fr);
508
+ gap: var(--space-8);
509
+ }
510
+ }
511
+
512
+ @media (min-width: 1024px) {
513
+ .products-grid {
514
+ grid-template-columns: repeat(3, 1fr);
515
+ gap: var(--space-8);
516
+ }
517
+ }
518
+
519
+ @media (min-width: 1280px) {
520
+ .products-grid {
521
+ grid-template-columns: repeat(4, 1fr);
522
+ gap: var(--space-8);
523
+ }
524
+ }
525
+
526
+ @media (min-width: 1536px) {
527
+ .products-grid {
528
+ grid-template-columns: repeat(4, 1fr);
529
+ gap: var(--space-8);
530
+ }
531
+ }
532
+
533
+ /* Category Cards */
534
+ .category-card {
535
+ background-color: var(--color-white);
536
+ border-radius: var(--radius-lg);
537
+ overflow: hidden;
538
+ transition: all var(--transition);
539
+ position: relative;
540
+ group: hover;
541
+ }
542
+
543
+ .category-card:hover {
544
+ transform: translateY(-4px);
545
+ box-shadow: var(--shadow-lg);
546
+ }
547
+
548
+ .category-image-container {
549
+ position: relative;
550
+ overflow: hidden;
551
+ aspect-ratio: 4/3;
552
+ background-color: var(--color-gray-50);
553
+ }
554
+
555
+ .category-image {
556
+ width: 100%;
557
+ height: 100%;
558
+ object-fit: cover;
559
+ transition: transform var(--transition-slow);
560
+ }
561
+
562
+ .category-card:hover .category-image {
563
+ transform: scale(1.05);
564
+ }
565
+
566
+ .category-content {
567
+ padding: var(--space-6);
568
+ text-align: center;
569
+ }
570
+
571
+ .category-title {
572
+ font-size: var(--text-xl);
573
+ font-weight: 600;
574
+ color: var(--color-gray-900);
575
+ margin-bottom: var(--space-3);
576
+ }
577
+
578
+ .category-title a {
579
+ color: inherit;
580
+ text-decoration: none;
581
+ }
582
+
583
+ .category-title a:hover {
584
+ color: var(--color-primary);
585
+ }
586
+
587
+ .category-description {
588
+ color: var(--color-gray-600);
589
+ margin-bottom: var(--space-4);
590
+ line-height: 1.6;
591
+ }
592
+
593
+ .category-link {
594
+ display: inline-flex;
595
+ align-items: center;
596
+ gap: var(--space-2);
597
+ color: var(--color-primary);
598
+ font-weight: 500;
599
+ text-decoration: none;
600
+ transition: all var(--transition-fast);
601
+ }
602
+
603
+ .category-link:hover {
604
+ color: var(--color-gray-800);
605
+ transform: translateX(4px);
606
+ }
607
+
608
+ .category-link::after {
609
+ content: '→';
610
+ transition: transform var(--transition-fast);
611
+ }
612
+
613
+ .category-link:hover::after {
614
+ transform: translateX(4px);
615
+ }
616
+
617
+ /* Categories Grid */
618
+ .categories-grid {
619
+ display: grid;
620
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
621
+ gap: var(--space-6);
622
+ margin-top: var(--space-8);
623
+ }
624
+
625
+ @media (min-width: 640px) {
626
+ .categories-grid {
627
+ /* Products grid responsive rules handled by main grid above */
628
+ }
629
+ }
630
+
631
+ /* Hero Section */
632
+ .hero-section {
633
+ position: relative;
634
+ background: linear-gradient(135deg, var(--color-gray-50) 0%, var(--color-white) 100%);
635
+ padding: var(--space-24) 0;
636
+ margin-bottom: var(--space-20);
637
+ overflow: hidden;
638
+ min-height: 80vh;
639
+ display: flex;
640
+ align-items: center;
641
+ }
642
+
643
+ .hero-section::before {
644
+ content: '';
645
+ position: absolute;
646
+ top: 0;
647
+ left: 0;
648
+ right: 0;
649
+ bottom: 0;
650
+ background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="50" cy="50" r="1" fill="%23000" opacity="0.02"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
651
+ opacity: 0.3;
652
+ }
653
+
654
+ .hero-content {
655
+ position: relative;
656
+ z-index: 1;
657
+ display: grid;
658
+ grid-template-columns: 1fr 1fr;
659
+ gap: var(--space-16);
660
+ align-items: center;
661
+ max-width: none;
662
+ margin: 0 auto;
663
+ padding: 0 var(--space-6);
664
+ width: 100%;
665
+ }
666
+
667
+ .hero-text {
668
+ display: flex;
669
+ flex-direction: column;
670
+ gap: var(--space-6);
671
+ }
672
+
673
+ .hero-title {
674
+ font-size: var(--text-7xl);
675
+ font-weight: 800;
676
+ color: var(--color-gray-900);
677
+ line-height: 1.1;
678
+ letter-spacing: -0.05em;
679
+ margin: 0;
680
+ }
681
+
682
+ .hero-subtitle {
683
+ font-size: var(--text-xl);
684
+ color: var(--color-gray-600);
685
+ line-height: 1.6;
686
+ margin: 0;
687
+ }
688
+
689
+ .hero-actions {
690
+ display: flex;
691
+ gap: var(--space-4);
692
+ flex-wrap: wrap;
693
+ }
694
+
695
+ .hero-image {
696
+ display: flex;
697
+ align-items: center;
698
+ justify-content: center;
699
+ }
700
+
701
+ .hero-image-placeholder {
702
+ width: 100%;
703
+ max-width: 500px;
704
+ height: 400px;
705
+ background: linear-gradient(135deg, var(--color-gray-100) 0%, var(--color-gray-200) 100%);
706
+ border-radius: var(--radius-2xl);
707
+ display: flex;
708
+ align-items: center;
709
+ justify-content: center;
710
+ color: var(--color-gray-400);
711
+ box-shadow: var(--shadow-lg);
712
+ }
713
+
714
+ /* Responsive Hero Section */
715
+ @media (max-width: 768px) {
716
+ .hero-content {
717
+ grid-template-columns: 1fr;
718
+ gap: var(--space-8);
719
+ text-align: center;
720
+ padding: 0 var(--space-4);
721
+ }
722
+
723
+ .hero-title {
724
+ font-size: var(--text-5xl);
725
+ }
726
+
727
+ .hero-actions {
728
+ justify-content: center;
729
+ }
730
+
731
+ .hero-image-placeholder {
732
+ height: 300px;
733
+ }
734
+ }
735
+
736
+ /* Collection Page Styles */
737
+ .collection-header {
738
+ background: none;
739
+ padding: 0;
740
+ margin-bottom: var(--spacing-element, 0.5rem);
741
+ position: relative;
742
+ overflow: visible;
743
+ }
744
+
745
+ .collection-header-wrapper {
746
+ max-width: var(--container-width, 1280px);
747
+ margin: 0 auto;
748
+ padding: 0 var(--spacing-component, 1.25rem);
749
+ }
750
+
751
+ .collection-header-inner {
752
+ display: flex;
753
+ align-items: flex-start;
754
+ justify-content: space-between;
755
+ gap: var(--spacing-component, 1rem);
756
+ flex-wrap: wrap;
757
+ }
758
+
759
+ .collection-header-left {
760
+ flex: 1 1 auto;
761
+ min-width: 0;
762
+ }
763
+
764
+ .collection-header-right {
765
+ flex: 0 0 auto;
766
+ display: flex;
767
+ align-items: center;
768
+ }
769
+
770
+ .collection-title {
771
+ margin: 0;
772
+ color: var(--color-text, var(--color-gray-900));
773
+ line-height: var(--line-height-heading, 1.2);
774
+ letter-spacing: var(--letter-spacing-heading, -0.02em);
775
+ text-align: left;
776
+ font-size: var(--font-size-heading, var(--text-4xl, 2.8rem));
777
+ font-weight: var(--font-weight-bold, 600);
778
+ }
779
+
780
+ .collection-description {
781
+ color: var(--color-text-muted, var(--color-gray-600));
782
+ line-height: var(--line-height-base, 1.5);
783
+ margin: 0;
784
+ font-size: var(--text-base, 1.4rem);
785
+ }
786
+
787
+ .collection-count {
788
+ display: flex;
789
+ align-items: center;
790
+ gap: var(--space-2, 0.5rem);
791
+ color: var(--color-text-muted, var(--color-gray-600));
792
+ font-weight: var(--font-weight-normal, 400);
793
+ font-size: var(--text-base, 1.4rem);
794
+ white-space: nowrap;
795
+ }
796
+
797
+ .collection-image {
798
+ display: flex;
799
+ align-items: center;
800
+ justify-content: center;
801
+ }
802
+
803
+ .collection-hero-image {
804
+ width: 100%;
805
+ max-width: 500px;
806
+ height: 400px;
807
+ object-fit: cover;
808
+ border-radius: var(--radius-2xl);
809
+ box-shadow: var(--shadow-lg);
810
+ }
811
+
812
+ /* Collection Toolbar */
813
+ .collection-toolbar {
814
+ background-color: var(--color-surface, var(--color-white));
815
+ border-bottom: 1px solid var(--color-border, var(--color-gray-200));
816
+ padding: var(--spacing-element, 0.75rem) 0;
817
+ margin-bottom: var(--spacing-component, 1.5rem);
818
+ }
819
+
820
+ .collection-toolbar .container {
821
+ max-width: var(--container-width, 1280px);
822
+ margin: 0 auto;
823
+ padding: 0 var(--spacing-component, 1.25rem);
824
+ }
825
+
826
+ .toolbar-content {
827
+ display: flex;
828
+ align-items: center;
829
+ justify-content: space-between;
830
+ gap: var(--spacing-element, 0.75rem);
831
+ flex-wrap: nowrap;
832
+ }
833
+
834
+ .filters-section {
835
+ display: flex;
836
+ align-items: center;
837
+ gap: var(--spacing-element, 0.75rem);
838
+ position: relative;
839
+ flex-shrink: 0;
840
+ }
841
+
842
+ .filter-toggle {
843
+ display: inline-flex;
844
+ align-items: center;
845
+ justify-content: center;
846
+ gap: var(--space-2, 0.5rem);
847
+ position: relative;
848
+ padding: var(--spacing-element, 0.625rem) var(--spacing-component, 1rem);
849
+ background-color: var(--color-white, #ffffff);
850
+ border: 1px solid var(--color-border, var(--color-gray-300, #d1d5db));
851
+ border-radius: var(--border-radius-medium, var(--radius-lg, 0.5rem));
852
+ color: var(--color-text, var(--color-gray-700, #374151));
853
+ font-weight: var(--font-weight-medium, 500);
854
+ font-size: var(--text-sm, 0.875rem);
855
+ line-height: 1;
856
+ transition: all var(--transition-fast, 0.15s var(--ease-out));
857
+ cursor: pointer;
858
+ white-space: nowrap;
859
+ }
860
+
861
+ .filter-toggle .icon-filter {
862
+ width: 16px;
863
+ height: 16px;
864
+ flex-shrink: 0;
865
+ }
866
+
867
+ .filter-toggle:hover {
868
+ border-color: var(--color-primary, var(--color-gray-400, #9ca3af));
869
+ color: var(--color-text, var(--color-gray-900, #111827));
870
+ background-color: var(--color-surface, var(--color-gray-50, #f9fafb));
871
+ }
872
+
873
+ .filter-toggle:focus {
874
+ outline: 2px solid var(--color-primary, #2563eb);
875
+ outline-offset: 2px;
876
+ }
877
+
878
+ .filter-count {
879
+ background-color: var(--color-accent);
880
+ color: var(--color-white);
881
+ font-size: var(--text-xs);
882
+ font-weight: 700;
883
+ padding: var(--space-1) var(--space-2);
884
+ border-radius: var(--radius-full);
885
+ min-width: 20px;
886
+ text-align: center;
887
+ }
888
+
889
+ /* Filter Dropdown */
890
+ .filter-dropdown {
891
+ position: fixed;
892
+ top: 0;
893
+ left: 0;
894
+ right: 0;
895
+ bottom: 0;
896
+ background-color: var(--color-white);
897
+ border: none;
898
+ border-radius: 0;
899
+ box-shadow: none;
900
+ z-index: var(--z-modal);
901
+ opacity: 0;
902
+ visibility: hidden;
903
+ transform: translateY(-8px);
904
+ transition: all var(--transition);
905
+ min-width: auto;
906
+ margin-top: 0;
907
+ height: 100vh;
908
+ width: 100vw;
909
+ overflow: hidden;
910
+ display: flex;
911
+ flex-direction: column;
912
+ max-width: 100%;
913
+ }
914
+
915
+ .filter-dropdown.active {
916
+ opacity: 1;
917
+ visibility: visible;
918
+ transform: translateY(0);
919
+ }
920
+
921
+ .filter-header {
922
+ display: flex;
923
+ align-items: center;
924
+ justify-content: space-between;
925
+ padding: var(--spacing-component, 1.5rem) var(--spacing-component, 1.5rem) var(--spacing-element, 0.75rem);
926
+ border-bottom: none;
927
+ flex: 0 0 auto;
928
+ }
929
+
930
+ .filter-title {
931
+ font-size: var(--text-base, 1rem);
932
+ font-weight: var(--font-weight-bold, 600);
933
+ color: var(--color-gray-900, #111827);
934
+ margin: 0;
935
+ }
936
+
937
+ .filter-close {
938
+ display: flex;
939
+ align-items: center;
940
+ justify-content: center;
941
+ width: 24px;
942
+ height: 24px;
943
+ background: none;
944
+ border: none;
945
+ border-radius: 0;
946
+ color: var(--color-gray-700, #374151);
947
+ font-size: var(--text-xl, 1.25rem);
948
+ line-height: 1;
949
+ cursor: pointer;
950
+ transition: color var(--transition-fast, 0.2s);
951
+ padding: 0;
952
+ }
953
+
954
+ .filter-close:hover {
955
+ background: none;
956
+ color: var(--color-gray-900, #111827);
957
+ }
958
+
959
+ .filter-content {
960
+ padding: var(--spacing-component, 1.5rem);
961
+ flex: 1 1 auto;
962
+ min-height: 0;
963
+ overflow-y: auto;
964
+ overflow-x: hidden;
965
+ max-height: none;
966
+ }
967
+
968
+ .filter-group {
969
+ margin-bottom: var(--spacing-component, 1.5rem);
970
+ }
971
+
972
+ .filter-group:last-child {
973
+ margin-bottom: 0;
974
+ }
975
+
976
+ .filter-group-title {
977
+ font-size: var(--text-xs, 0.75rem);
978
+ font-weight: var(--font-weight-bold, 600);
979
+ color: var(--color-gray-900, #111827);
980
+ margin-bottom: var(--spacing-element, 0.75rem);
981
+ text-transform: uppercase;
982
+ letter-spacing: 0.05em;
983
+ }
984
+
985
+ .filter-options {
986
+ display: flex;
987
+ flex-direction: column;
988
+ gap: var(--space-2);
989
+ }
990
+
991
+ .filter-option {
992
+ display: flex;
993
+ align-items: center;
994
+ gap: var(--spacing-element, 0.75rem);
995
+ padding: var(--spacing-element, 0.5rem) 0;
996
+ cursor: pointer;
997
+ transition: none;
998
+ }
999
+
1000
+ .filter-option:hover {
1001
+ color: inherit;
1002
+ }
1003
+
1004
+ .filter-checkbox {
1005
+ width: 18px;
1006
+ height: 18px;
1007
+ appearance: none;
1008
+ -webkit-appearance: none;
1009
+ -moz-appearance: none;
1010
+ border: 1.5px solid var(--color-gray-300, #d1d5db);
1011
+ border-radius: var(--border-radius-small, 4px);
1012
+ background-color: var(--color-white, #ffffff);
1013
+ position: relative;
1014
+ cursor: pointer;
1015
+ transition: all var(--transition-fast, 0.2s);
1016
+ flex-shrink: 0;
1017
+ }
1018
+
1019
+ .filter-checkbox:hover {
1020
+ border-color: var(--color-primary, #2563eb);
1021
+ }
1022
+
1023
+ .filter-checkbox:checked {
1024
+ background-color: var(--color-primary, #2563eb);
1025
+ border-color: var(--color-primary, #2563eb);
1026
+ }
1027
+
1028
+ .filter-checkbox:checked::after {
1029
+ content: '';
1030
+ position: absolute;
1031
+ left: 5px;
1032
+ top: 2px;
1033
+ width: 5px;
1034
+ height: 9px;
1035
+ border: solid var(--color-white, #ffffff);
1036
+ border-width: 0 2px 2px 0;
1037
+ transform: rotate(45deg);
1038
+ display: block;
1039
+ }
1040
+
1041
+ .filter-checkbox:focus {
1042
+ outline: 2px solid var(--color-primary, #2563eb);
1043
+ outline-offset: 2px;
1044
+ }
1045
+
1046
+ .filter-option-text {
1047
+ font-size: var(--text-sm, 0.875rem);
1048
+ color: var(--color-gray-900, #111827);
1049
+ transition: color var(--transition-fast, 0.2s);
1050
+ }
1051
+
1052
+ .filter-option:hover .filter-option-text {
1053
+ color: var(--color-gray-900, #111827);
1054
+ }
1055
+
1056
+ .price-range {
1057
+ display: flex;
1058
+ flex-direction: column;
1059
+ gap: var(--spacing-element, 0.75rem);
1060
+ }
1061
+
1062
+ .price-inputs {
1063
+ display: flex;
1064
+ align-items: center;
1065
+ gap: var(--spacing-element, 0.5rem);
1066
+ }
1067
+
1068
+ .price-input {
1069
+ flex: 1;
1070
+ padding: var(--spacing-element, 0.5rem) var(--spacing-element, 0.75rem);
1071
+ border: 1px solid var(--color-gray-300, #d1d5db);
1072
+ border-radius: var(--border-radius-small, 4px);
1073
+ font-size: var(--text-sm, 0.875rem);
1074
+ transition: border-color var(--transition-fast, 0.2s);
1075
+ background-color: var(--color-white, #ffffff);
1076
+ color: var(--color-gray-900, #111827);
1077
+ }
1078
+
1079
+ .price-input:focus {
1080
+ outline: none;
1081
+ border-color: var(--color-primary, #2563eb);
1082
+ }
1083
+
1084
+ .price-input::placeholder {
1085
+ color: var(--color-gray-400, #9ca3af);
1086
+ }
1087
+
1088
+ .price-separator {
1089
+ color: var(--color-gray-700, #374151);
1090
+ font-weight: var(--font-weight-normal, 400);
1091
+ padding: 0 var(--spacing-element, 0.25rem);
1092
+ }
1093
+
1094
+ .price-range-slider {
1095
+ display: flex;
1096
+ gap: var(--space-2);
1097
+ }
1098
+
1099
+ .range-input {
1100
+ flex: 1;
1101
+ height: 4px;
1102
+ background: var(--color-gray-200);
1103
+ border-radius: var(--radius-full);
1104
+ outline: none;
1105
+ -webkit-appearance: none;
1106
+ appearance: none;
1107
+ }
1108
+
1109
+ .range-input::-webkit-slider-thumb {
1110
+ -webkit-appearance: none;
1111
+ appearance: none;
1112
+ width: 20px;
1113
+ height: 20px;
1114
+ background: var(--color-accent);
1115
+ border-radius: var(--radius-full);
1116
+ cursor: pointer;
1117
+ box-shadow: var(--shadow-sm);
1118
+ }
1119
+
1120
+ .range-input::-moz-range-thumb {
1121
+ width: 20px;
1122
+ height: 20px;
1123
+ background: var(--color-accent);
1124
+ border-radius: var(--radius-full);
1125
+ cursor: pointer;
1126
+ border: none;
1127
+ box-shadow: var(--shadow-sm);
1128
+ }
1129
+
1130
+ .filter-actions {
1131
+ display: flex;
1132
+ gap: var(--spacing-element, 0.75rem);
1133
+ padding: var(--spacing-component, 1.5rem);
1134
+ border-top: 1px solid var(--color-gray-200, #e5e7eb);
1135
+ background-color: var(--color-white, #ffffff);
1136
+ border-radius: 0;
1137
+ flex: 0 0 auto;
1138
+ justify-content: space-between;
1139
+ }
1140
+
1141
+ .filter-actions .btn {
1142
+ padding: var(--spacing-element, 0.625rem) var(--spacing-component, 1.25rem);
1143
+ font-size: var(--text-sm, 0.875rem);
1144
+ font-weight: var(--font-weight-medium, 500);
1145
+ border-radius: var(--border-radius-medium, 6px);
1146
+ }
1147
+
1148
+ .filter-actions .btn-ghost {
1149
+ background-color: var(--color-white, #ffffff);
1150
+ border: 1px solid var(--color-gray-300, #d1d5db);
1151
+ color: var(--color-gray-900, #111827);
1152
+ }
1153
+
1154
+ .filter-actions .btn-ghost:hover {
1155
+ background-color: var(--color-gray-50, #f9fafb);
1156
+ border-color: var(--color-gray-400, #9ca3af);
1157
+ color: var(--color-gray-900, #111827);
1158
+ }
1159
+
1160
+
1161
+ /* Sort Section */
1162
+ .sort-section {
1163
+ display: flex;
1164
+ align-items: center;
1165
+ gap: var(--spacing-element, 0.75rem);
1166
+ margin-left: auto;
1167
+ flex-shrink: 0;
1168
+ }
1169
+
1170
+ /* Custom sort dropdown */
1171
+ .sort-dropdown { position: relative; }
1172
+ .sort-toggle {
1173
+ display: inline-flex;
1174
+ align-items: center;
1175
+ justify-content: center;
1176
+ gap: var(--space-2, 0.5rem);
1177
+ padding: var(--spacing-element, 0.625rem) var(--spacing-component, 1rem);
1178
+ background-color: var(--color-white, #ffffff);
1179
+ border: 1px solid var(--color-border, var(--color-gray-300, #d1d5db));
1180
+ border-radius: var(--border-radius-medium, var(--radius-lg, 0.5rem));
1181
+ cursor: pointer;
1182
+ font-size: var(--text-sm, 0.875rem);
1183
+ font-weight: var(--font-weight-medium, 500);
1184
+ color: var(--color-text, var(--color-gray-700, #374151));
1185
+ line-height: 1;
1186
+ transition: all var(--transition-fast, 0.15s var(--ease-out));
1187
+ white-space: nowrap;
1188
+ position: relative;
1189
+ }
1190
+
1191
+ .sort-toggle .icon-sort,
1192
+ .sort-toggle .icon-chevron {
1193
+ width: 16px;
1194
+ height: 16px;
1195
+ flex-shrink: 0;
1196
+ }
1197
+
1198
+ .sort-toggle .icon-chevron {
1199
+ width: 12px;
1200
+ height: 12px;
1201
+ margin-left: var(--space-1, 0.25rem);
1202
+ transition: transform var(--transition-fast, 0.15s var(--ease-out));
1203
+ }
1204
+
1205
+ .sort-dropdown.open .sort-toggle .icon-chevron {
1206
+ transform: rotate(180deg);
1207
+ }
1208
+
1209
+ .sort-toggle:hover {
1210
+ border-color: var(--color-primary, var(--color-gray-400, #9ca3af));
1211
+ color: var(--color-text, var(--color-gray-900, #111827));
1212
+ background-color: var(--color-surface, var(--color-gray-50, #f9fafb));
1213
+ }
1214
+
1215
+ .sort-toggle:focus {
1216
+ outline: 2px solid var(--color-primary, #2563eb);
1217
+ outline-offset: 2px;
1218
+ }
1219
+ .sort-menu {
1220
+ position: absolute;
1221
+ right: 0;
1222
+ top: calc(100% + var(--space-2));
1223
+ background-color: var(--color-white);
1224
+ border: 1px solid var(--color-gray-200);
1225
+ border-radius: var(--radius-lg);
1226
+ box-shadow: var(--shadow-xl);
1227
+ list-style: none;
1228
+ margin: 0;
1229
+ padding: var(--space-2) 0;
1230
+ min-width: 240px;
1231
+ z-index: var(--z-dropdown);
1232
+ opacity: 0;
1233
+ visibility: hidden;
1234
+ transform: translateY(-6px);
1235
+ transition: all var(--transition-fast);
1236
+ }
1237
+ .sort-dropdown.open .sort-menu {
1238
+ opacity: 1;
1239
+ visibility: visible;
1240
+ transform: translateY(0);
1241
+ }
1242
+ .sort-option {
1243
+ padding: var(--space-2) var(--space-4);
1244
+ cursor: pointer;
1245
+ font-size: var(--text-sm);
1246
+ color: var(--color-gray-700);
1247
+ }
1248
+ .sort-option:hover { background-color: var(--color-gray-50); }
1249
+
1250
+ .sort-container {
1251
+ display: flex;
1252
+ align-items: center;
1253
+ gap: var(--space-3);
1254
+ }
1255
+
1256
+ .sort-label { display: none; }
1257
+
1258
+ .sort-select-wrapper {
1259
+ position: relative;
1260
+ display: flex;
1261
+ align-items: center;
1262
+ }
1263
+
1264
+ .sort-select {
1265
+ appearance: none;
1266
+ background-color: var(--color-white);
1267
+ border: 1px solid var(--color-gray-300);
1268
+ border-radius: var(--radius-lg);
1269
+ padding: var(--space-2) var(--space-4);
1270
+ padding-right: var(--space-8);
1271
+ font-size: var(--text-sm);
1272
+ font-weight: 500;
1273
+ color: var(--color-gray-700);
1274
+ cursor: pointer;
1275
+ transition: all var(--transition-fast);
1276
+ min-width: 160px;
1277
+ }
1278
+
1279
+ .sort-select:focus {
1280
+ outline: none;
1281
+ border-color: var(--color-accent);
1282
+ box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.1);
1283
+ }
1284
+
1285
+ .sort-arrow {
1286
+ position: absolute;
1287
+ right: var(--space-3);
1288
+ pointer-events: none;
1289
+ color: var(--color-gray-500);
1290
+ transition: transform var(--transition-fast);
1291
+ }
1292
+
1293
+ .sort-select:focus + .sort-arrow {
1294
+ transform: rotate(180deg);
1295
+ }
1296
+
1297
+ /* View Section */
1298
+ .view-section {
1299
+ display: flex;
1300
+ align-items: center;
1301
+ }
1302
+
1303
+ .view-toggle {
1304
+ display: flex;
1305
+ background-color: var(--color-gray-100);
1306
+ border-radius: var(--radius-lg);
1307
+ padding: var(--space-1);
1308
+ gap: var(--space-1);
1309
+ }
1310
+
1311
+ .view-btn {
1312
+ display: flex;
1313
+ align-items: center;
1314
+ justify-content: center;
1315
+ width: 40px;
1316
+ height: 40px;
1317
+ background: none;
1318
+ border: none;
1319
+ border-radius: var(--radius);
1320
+ color: var(--color-gray-500);
1321
+ cursor: pointer;
1322
+ transition: all var(--transition-fast);
1323
+ }
1324
+
1325
+ .view-btn:hover {
1326
+ color: var(--color-gray-700);
1327
+ background-color: var(--color-white);
1328
+ }
1329
+
1330
+ .view-btn.active {
1331
+ background-color: var(--color-white);
1332
+ color: var(--color-accent);
1333
+ box-shadow: var(--shadow-sm);
1334
+ }
1335
+
1336
+ /* Products Section */
1337
+ .collection-products {
1338
+ padding: 0 0 var(--spacing-section, 3rem) 0;
1339
+ }
1340
+
1341
+ .products-container {
1342
+ width: 100%;
1343
+ }
1344
+
1345
+ .results-info {
1346
+ display: flex;
1347
+ align-items: center;
1348
+ gap: var(--space-4);
1349
+ }
1350
+
1351
+ .results-count {
1352
+ font-size: var(--text-sm);
1353
+ color: var(--color-gray-600);
1354
+ }
1355
+
1356
+ .results-sort {
1357
+ font-size: var(--text-sm);
1358
+ color: var(--color-gray-500);
1359
+ font-style: italic;
1360
+ }
1361
+
1362
+ .results-actions {
1363
+ display: flex;
1364
+ align-items: center;
1365
+ gap: var(--space-3);
1366
+ }
1367
+
1368
+ /* Products Grid */
1369
+ .products-container {
1370
+ position: relative;
1371
+ }
1372
+
1373
+ /* Removed duplicate products-grid rule - using the main one above */
1374
+
1375
+ .products-grid.products-list {
1376
+ grid-template-columns: 1fr;
1377
+ gap: var(--space-6);
1378
+ }
1379
+
1380
+ .products-grid.products-list .product-card {
1381
+ display: grid;
1382
+ grid-template-columns: 200px 1fr;
1383
+ gap: var(--space-6);
1384
+ max-width: none;
1385
+ height: auto;
1386
+ }
1387
+
1388
+ .products-grid.products-list .product-image-container {
1389
+ aspect-ratio: 1;
1390
+ }
1391
+
1392
+ .products-grid.products-list .product-content {
1393
+ padding: var(--space-4);
1394
+ display: flex;
1395
+ flex-direction: column;
1396
+ justify-content: space-between;
1397
+ }
1398
+
1399
+ /* No Products State */
1400
+ .no-products {
1401
+ display: flex;
1402
+ align-items: center;
1403
+ justify-content: center;
1404
+ min-height: 400px;
1405
+ text-align: center;
1406
+ }
1407
+
1408
+ .no-products-content {
1409
+ display: flex;
1410
+ flex-direction: column;
1411
+ align-items: center;
1412
+ gap: var(--space-6);
1413
+ max-width: 400px;
1414
+ }
1415
+
1416
+ .no-products-content svg {
1417
+ color: var(--color-gray-400);
1418
+ }
1419
+
1420
+ .no-products-title {
1421
+ font-size: var(--text-2xl);
1422
+ font-weight: 600;
1423
+ color: var(--color-gray-900);
1424
+ margin: 0;
1425
+ }
1426
+
1427
+ .no-products-description {
1428
+ color: var(--color-gray-600);
1429
+ line-height: 1.6;
1430
+ margin: 0;
1431
+ }
1432
+
1433
+ .no-products-actions {
1434
+ display: flex;
1435
+ gap: var(--space-4);
1436
+ flex-wrap: wrap;
1437
+ justify-content: center;
1438
+ }
1439
+
1440
+ /* Responsive Collection Page */
1441
+ @media (max-width: 768px) {
1442
+ .collection-header {
1443
+ padding: 0;
1444
+ margin-bottom: 0;
1445
+ }
1446
+
1447
+ .collection-header-wrapper {
1448
+ padding: 0 var(--spacing-component, 1rem);
1449
+ }
1450
+
1451
+ .collection-header-inner {
1452
+ flex-direction: row;
1453
+ align-items: center;
1454
+ gap: var(--spacing-element, 0.5rem);
1455
+ }
1456
+
1457
+ .collection-title {
1458
+ margin: 0;
1459
+ font-size: var(--text-lg, 1.125rem);
1460
+ }
1461
+
1462
+ .collection-count {
1463
+ font-size: var(--text-sm, 0.875rem);
1464
+ }
1465
+
1466
+ .collection-toolbar {
1467
+ padding: var(--spacing-element, 0.5rem) 0;
1468
+ margin-bottom: var(--spacing-element, 0.5rem);
1469
+ }
1470
+
1471
+ .collection-header-content {
1472
+ grid-template-columns: 1fr;
1473
+ gap: var(--space-8);
1474
+ text-align: center;
1475
+ }
1476
+
1477
+ .collection-hero-image {
1478
+ height: 300px;
1479
+ }
1480
+
1481
+ .toolbar-content {
1482
+ flex-direction: row;
1483
+ align-items: center;
1484
+ justify-content: space-between;
1485
+ gap: var(--spacing-element, 0.75rem);
1486
+ flex-wrap: nowrap;
1487
+ }
1488
+
1489
+ .filters-section {
1490
+ flex: 0 0 auto;
1491
+ margin-right: auto;
1492
+ }
1493
+
1494
+ .sort-section {
1495
+ flex: 0 0 auto;
1496
+ margin-left: 0;
1497
+ }
1498
+
1499
+ .filter-dropdown {
1500
+ position: fixed;
1501
+ top: 0;
1502
+ left: 0;
1503
+ right: 0;
1504
+ bottom: 0;
1505
+ min-width: auto;
1506
+ border-radius: 0;
1507
+ margin-top: 0;
1508
+ z-index: var(--z-modal);
1509
+ }
1510
+
1511
+ /* Products grid responsive rules handled by main grid above */
1512
+
1513
+ .products-grid.products-list .product-card {
1514
+ grid-template-columns: 1fr;
1515
+ gap: var(--space-4);
1516
+ }
1517
+
1518
+ .results-header {
1519
+ flex-direction: column;
1520
+ align-items: flex-start;
1521
+ gap: var(--space-4);
1522
+ }
1523
+ }
1524
+
1525
+ /* Cart Page Styles */
1526
+ .cart-page {
1527
+ padding: var(--space-16) 0;
1528
+ min-height: 60vh;
1529
+ }
1530
+
1531
+ .cart-header {
1532
+ margin-bottom: var(--space-12);
1533
+ text-align: center;
1534
+ }
1535
+
1536
+ .cart-header-content {
1537
+ display: flex;
1538
+ flex-direction: column;
1539
+ align-items: center;
1540
+ gap: var(--space-4);
1541
+ }
1542
+
1543
+ .cart-title {
1544
+ margin: 0;
1545
+ color: var(--color-gray-900);
1546
+ line-height: 1.1;
1547
+ letter-spacing: -0.05em;
1548
+ }
1549
+
1550
+ .cart-meta {
1551
+ display: flex;
1552
+ align-items: center;
1553
+ gap: var(--space-4);
1554
+ }
1555
+
1556
+ .cart-count {
1557
+ display: flex;
1558
+ align-items: center;
1559
+ gap: var(--space-2);
1560
+ color: var(--color-gray-700);
1561
+ font-weight: 600;
1562
+ }
1563
+
1564
+ /* Cart Layout */
1565
+ .cart-layout {
1566
+ display: grid;
1567
+ grid-template-columns: 1fr 400px;
1568
+ gap: var(--space-12);
1569
+ align-items: start;
1570
+ }
1571
+
1572
+ /* Cart Items */
1573
+ .cart-items {
1574
+ background-color: var(--color-white);
1575
+ border-radius: var(--radius-xl);
1576
+ border: 1px solid var(--color-gray-200);
1577
+ overflow: hidden;
1578
+ box-shadow: var(--shadow-sm);
1579
+ }
1580
+
1581
+ .cart-items-header {
1582
+ display: flex;
1583
+ align-items: center;
1584
+ justify-content: space-between;
1585
+ padding: var(--space-6);
1586
+ border-bottom: 1px solid var(--color-gray-200);
1587
+ background-color: var(--color-gray-50);
1588
+ }
1589
+
1590
+ .cart-items-title {
1591
+ margin: 0;
1592
+ color: var(--color-gray-900);
1593
+ font-weight: 600;
1594
+ }
1595
+
1596
+ .cart-items-list {
1597
+ padding: var(--space-6);
1598
+ }
1599
+
1600
+ .cart-item {
1601
+ display: grid;
1602
+ grid-template-columns: 120px 1fr auto auto auto;
1603
+ gap: var(--space-6);
1604
+ align-items: center;
1605
+ padding: var(--space-6);
1606
+ border-bottom: 1px solid var(--color-gray-100);
1607
+ transition: all var(--transition-fast);
1608
+ }
1609
+
1610
+ .cart-item:last-child {
1611
+ border-bottom: none;
1612
+ }
1613
+
1614
+ .cart-item:hover {
1615
+ background-color: var(--color-gray-50);
1616
+ }
1617
+
1618
+ .cart-item-image {
1619
+ width: 120px;
1620
+ height: 120px;
1621
+ border-radius: var(--radius-lg);
1622
+ overflow: hidden;
1623
+ background-color: var(--color-gray-100);
1624
+ display: flex;
1625
+ align-items: center;
1626
+ justify-content: center;
1627
+ }
1628
+
1629
+ .cart-item-image img {
1630
+ width: 100%;
1631
+ height: 100%;
1632
+ object-fit: cover;
1633
+ }
1634
+
1635
+ .cart-item-placeholder {
1636
+ display: flex;
1637
+ align-items: center;
1638
+ justify-content: center;
1639
+ width: 100%;
1640
+ height: 100%;
1641
+ color: var(--color-gray-400);
1642
+ background-color: var(--color-gray-100);
1643
+ }
1644
+
1645
+ .cart-item-details {
1646
+ display: flex;
1647
+ flex-direction: column;
1648
+ gap: var(--space-2);
1649
+ min-width: 0;
1650
+ }
1651
+
1652
+ .cart-item-title {
1653
+ margin: 0;
1654
+ font-size: var(--text-lg);
1655
+ font-weight: 600;
1656
+ color: var(--color-gray-900);
1657
+ line-height: 1.3;
1658
+ }
1659
+
1660
+ .cart-item-title a {
1661
+ color: var(--color-gray-900);
1662
+ text-decoration: none;
1663
+ transition: color var(--transition-fast);
1664
+ }
1665
+
1666
+ .cart-item-title a:hover {
1667
+ color: var(--color-accent);
1668
+ }
1669
+
1670
+ .cart-item-variant {
1671
+ margin: 0;
1672
+ font-size: var(--text-sm);
1673
+ color: var(--color-gray-600);
1674
+ font-style: italic;
1675
+ }
1676
+
1677
+ .cart-item-price {
1678
+ display: flex;
1679
+ flex-direction: column;
1680
+ gap: var(--space-1);
1681
+ }
1682
+
1683
+ .cart-item-unit-price {
1684
+ font-size: var(--text-lg);
1685
+ font-weight: 600;
1686
+ color: var(--color-gray-900);
1687
+ }
1688
+
1689
+ .cart-item-compare-price {
1690
+ font-size: var(--text-sm);
1691
+ color: var(--color-gray-500);
1692
+ text-decoration: line-through;
1693
+ }
1694
+
1695
+ /* Quantity Controls */
1696
+ .cart-item-quantity {
1697
+ display: flex;
1698
+ flex-direction: column;
1699
+ gap: var(--space-2);
1700
+ align-items: center;
1701
+ }
1702
+
1703
+ .quantity-label {
1704
+ font-size: var(--text-xs);
1705
+ font-weight: 500;
1706
+ color: var(--color-gray-600);
1707
+ text-transform: uppercase;
1708
+ letter-spacing: var(--tracking-wide);
1709
+ }
1710
+
1711
+ .quantity-selector {
1712
+ display: flex;
1713
+ align-items: center;
1714
+ background-color: var(--color-white);
1715
+ border: 1px solid var(--color-gray-300);
1716
+ border-radius: var(--radius-lg);
1717
+ overflow: hidden;
1718
+ box-shadow: var(--shadow-sm);
1719
+ }
1720
+
1721
+ .quantity-btn {
1722
+ display: flex;
1723
+ align-items: center;
1724
+ justify-content: center;
1725
+ width: 40px;
1726
+ height: 40px;
1727
+ background: none;
1728
+ border: none;
1729
+ color: var(--color-gray-600);
1730
+ cursor: pointer;
1731
+ transition: all var(--transition-fast);
1732
+ }
1733
+
1734
+ .quantity-btn:hover {
1735
+ background-color: var(--color-gray-100);
1736
+ color: var(--color-gray-900);
1737
+ }
1738
+
1739
+ .quantity-btn:active {
1740
+ background-color: var(--color-gray-200);
1741
+ }
1742
+
1743
+ .quantity-input {
1744
+ width: 60px;
1745
+ height: 40px;
1746
+ border: none;
1747
+ text-align: center;
1748
+ font-size: var(--text-base);
1749
+ font-weight: 600;
1750
+ color: var(--color-gray-900);
1751
+ background-color: var(--color-white);
1752
+ outline: none;
1753
+ }
1754
+
1755
+ .quantity-input:focus {
1756
+ background-color: var(--color-gray-50);
1757
+ }
1758
+
1759
+ /* Cart Item Total */
1760
+ .cart-item-total {
1761
+ text-align: right;
1762
+ }
1763
+
1764
+ .cart-item-total-price {
1765
+ font-size: var(--text-xl);
1766
+ font-weight: 700;
1767
+ color: var(--color-gray-900);
1768
+ }
1769
+
1770
+ /* Cart Item Actions */
1771
+ .cart-item-actions {
1772
+ display: flex;
1773
+ align-items: center;
1774
+ gap: var(--space-2);
1775
+ }
1776
+
1777
+ .remove-item {
1778
+ display: flex;
1779
+ align-items: center;
1780
+ gap: var(--space-2);
1781
+ padding: var(--space-2) var(--space-3);
1782
+ background: none;
1783
+ border: 1px solid var(--color-gray-300);
1784
+ border-radius: var(--radius);
1785
+ color: var(--color-gray-600);
1786
+ font-size: var(--text-sm);
1787
+ cursor: pointer;
1788
+ transition: all var(--transition-fast);
1789
+ }
1790
+
1791
+ .remove-item:hover {
1792
+ background-color: var(--color-error);
1793
+ border-color: var(--color-error);
1794
+ color: var(--color-white);
1795
+ }
1796
+
1797
+ /* Cart Summary */
1798
+ .cart-summary {
1799
+ position: sticky;
1800
+ top: var(--space-8);
1801
+ }
1802
+
1803
+ .summary-card {
1804
+ background-color: var(--color-white);
1805
+ border: 1px solid var(--color-gray-200);
1806
+ border-radius: var(--radius-xl);
1807
+ padding: var(--space-8);
1808
+ box-shadow: var(--shadow-lg);
1809
+ }
1810
+
1811
+ .summary-title {
1812
+ margin: 0 0 var(--space-6) 0;
1813
+ color: var(--color-gray-900);
1814
+ font-weight: 600;
1815
+ }
1816
+
1817
+ .summary-details {
1818
+ display: flex;
1819
+ flex-direction: column;
1820
+ gap: var(--space-4);
1821
+ margin-bottom: var(--space-8);
1822
+ }
1823
+
1824
+ .summary-line {
1825
+ display: flex;
1826
+ align-items: center;
1827
+ justify-content: space-between;
1828
+ padding: var(--space-3) 0;
1829
+ }
1830
+
1831
+ .summary-line:not(:last-child) {
1832
+ border-bottom: 1px solid var(--color-gray-100);
1833
+ }
1834
+
1835
+ .summary-label {
1836
+ font-size: var(--text-sm);
1837
+ color: var(--color-gray-600);
1838
+ font-weight: 500;
1839
+ }
1840
+
1841
+ .summary-value {
1842
+ font-size: var(--text-base);
1843
+ color: var(--color-gray-900);
1844
+ font-weight: 600;
1845
+ }
1846
+
1847
+ .summary-total {
1848
+ background-color: var(--color-gray-50);
1849
+ padding: var(--space-4) var(--space-8);
1850
+ border-radius: 0 0 var(--radius-xl) var(--radius-xl);
1851
+ }
1852
+
1853
+ .summary-total .summary-label {
1854
+ font-size: var(--text-lg);
1855
+ font-weight: 700;
1856
+ color: var(--color-gray-900);
1857
+ }
1858
+
1859
+ .summary-total .summary-value {
1860
+ font-size: var(--text-2xl);
1861
+ font-weight: 800;
1862
+ color: var(--color-gray-900);
1863
+ }
1864
+
1865
+ /* Checkout Actions */
1866
+ .checkout-actions {
1867
+ display: flex;
1868
+ flex-direction: column;
1869
+ gap: var(--space-4);
1870
+ margin-bottom: var(--space-8);
1871
+ }
1872
+
1873
+ .checkout-actions .btn {
1874
+ display: flex;
1875
+ align-items: center;
1876
+ justify-content: center;
1877
+ gap: var(--space-2);
1878
+ width: 100%;
1879
+ padding: var(--space-4) var(--space-6);
1880
+ font-weight: 600;
1881
+ text-decoration: none;
1882
+ transition: all var(--transition-fast);
1883
+ }
1884
+
1885
+ .checkout-actions .btn-primary {
1886
+ background-color: var(--color-accent);
1887
+ color: var(--color-white);
1888
+ border: none;
1889
+ box-shadow: var(--shadow-primary);
1890
+ }
1891
+
1892
+ .checkout-actions .btn-primary:hover {
1893
+ background-color: var(--color-accent-dark);
1894
+ transform: translateY(-2px);
1895
+ box-shadow: var(--shadow-xl);
1896
+ }
1897
+
1898
+ .checkout-actions .btn-outline {
1899
+ background-color: transparent;
1900
+ color: var(--color-gray-700);
1901
+ border: 1px solid var(--color-gray-300);
1902
+ }
1903
+
1904
+ .checkout-actions .btn-outline:hover {
1905
+ background-color: var(--color-gray-50);
1906
+ border-color: var(--color-gray-400);
1907
+ }
1908
+
1909
+ /* Checkout Features */
1910
+ .checkout-features {
1911
+ display: flex;
1912
+ flex-direction: column;
1913
+ gap: var(--space-3);
1914
+ padding-top: var(--space-6);
1915
+ border-top: 1px solid var(--color-gray-200);
1916
+ }
1917
+
1918
+ .checkout-feature {
1919
+ display: flex;
1920
+ align-items: center;
1921
+ gap: var(--space-3);
1922
+ font-size: var(--text-sm);
1923
+ color: var(--color-gray-600);
1924
+ }
1925
+
1926
+ .checkout-feature svg {
1927
+ color: var(--color-success);
1928
+ flex-shrink: 0;
1929
+ }
1930
+
1931
+ /* Empty Cart */
1932
+ .empty-cart {
1933
+ display: flex;
1934
+ align-items: center;
1935
+ justify-content: center;
1936
+ min-height: 400px;
1937
+ text-align: center;
1938
+ }
1939
+
1940
+ .empty-cart-content {
1941
+ display: flex;
1942
+ flex-direction: column;
1943
+ align-items: center;
1944
+ gap: var(--space-8);
1945
+ max-width: 500px;
1946
+ }
1947
+
1948
+ .empty-cart-icon {
1949
+ color: var(--color-gray-400);
1950
+ }
1951
+
1952
+ .empty-cart-title {
1953
+ margin: 0;
1954
+ color: var(--color-gray-900);
1955
+ font-weight: 600;
1956
+ }
1957
+
1958
+ .empty-cart-description {
1959
+ margin: 0;
1960
+ color: var(--color-gray-600);
1961
+ line-height: 1.6;
1962
+ }
1963
+
1964
+ .empty-cart-actions {
1965
+ display: flex;
1966
+ gap: var(--space-4);
1967
+ flex-wrap: wrap;
1968
+ justify-content: center;
1969
+ }
1970
+
1971
+ .empty-cart-actions .btn {
1972
+ display: flex;
1973
+ align-items: center;
1974
+ gap: var(--space-2);
1975
+ padding: var(--space-4) var(--space-6);
1976
+ font-weight: 600;
1977
+ text-decoration: none;
1978
+ transition: all var(--transition-fast);
1979
+ }
1980
+
1981
+ .empty-cart-actions .btn-primary {
1982
+ background-color: var(--color-accent);
1983
+ color: var(--color-white);
1984
+ border: none;
1985
+ box-shadow: var(--shadow-primary);
1986
+ }
1987
+
1988
+ .empty-cart-actions .btn-primary:hover {
1989
+ background-color: var(--color-accent-dark);
1990
+ transform: translateY(-2px);
1991
+ box-shadow: var(--shadow-xl);
1992
+ }
1993
+
1994
+ .empty-cart-actions .btn-outline {
1995
+ background-color: transparent;
1996
+ color: var(--color-gray-700);
1997
+ border: 1px solid var(--color-gray-300);
1998
+ }
1999
+
2000
+ .empty-cart-actions .btn-outline:hover {
2001
+ background-color: var(--color-gray-50);
2002
+ border-color: var(--color-gray-400);
2003
+ }
2004
+
2005
+ /* Responsive Cart Page */
2006
+ @media (max-width: 1024px) {
2007
+ .cart-layout {
2008
+ grid-template-columns: 1fr;
2009
+ gap: var(--space-8);
2010
+ }
2011
+
2012
+ .cart-summary {
2013
+ position: static;
2014
+ }
2015
+ }
2016
+
2017
+ @media (max-width: 768px) {
2018
+ .cart-page {
2019
+ padding: var(--space-8) 0;
2020
+ }
2021
+
2022
+ .cart-header-content {
2023
+ gap: var(--space-3);
2024
+ }
2025
+
2026
+ .cart-title {
2027
+ font-size: var(--text-5xl);
2028
+ }
2029
+
2030
+ .cart-item {
2031
+ grid-template-columns: 80px 1fr;
2032
+ gap: var(--space-4);
2033
+ padding: var(--space-4);
2034
+ }
2035
+
2036
+ .cart-item-image {
2037
+ width: 80px;
2038
+ height: 80px;
2039
+ }
2040
+
2041
+ .cart-item-quantity,
2042
+ .cart-item-total,
2043
+ .cart-item-actions {
2044
+ grid-column: 1 / -1;
2045
+ justify-self: start;
2046
+ margin-top: var(--space-4);
2047
+ }
2048
+
2049
+ .cart-item-quantity {
2050
+ flex-direction: row;
2051
+ align-items: center;
2052
+ gap: var(--space-4);
2053
+ }
2054
+
2055
+ .cart-item-total {
2056
+ text-align: left;
2057
+ }
2058
+
2059
+ .cart-item-actions {
2060
+ margin-top: var(--space-2);
2061
+ }
2062
+
2063
+ .summary-card {
2064
+ padding: var(--space-6);
2065
+ }
2066
+
2067
+ .empty-cart-actions {
2068
+ flex-direction: column;
2069
+ align-items: stretch;
2070
+ }
2071
+
2072
+ .empty-cart-actions .btn {
2073
+ width: 100%;
2074
+ }
2075
+ }
2076
+
2077
+ /* Section Titles */
2078
+ .section-title {
2079
+ font-size: var(--text-4xl);
2080
+ font-weight: 700;
2081
+ color: var(--color-gray-900);
2082
+ text-align: center;
2083
+ margin-bottom: var(--space-4);
2084
+ letter-spacing: -0.025em;
2085
+ }
2086
+
2087
+ .section-subtitle {
2088
+ font-size: var(--text-lg);
2089
+ color: var(--color-gray-600);
2090
+ text-align: center;
2091
+ margin-bottom: var(--space-12);
2092
+ max-width: 600px;
2093
+ margin-left: auto;
2094
+ margin-right: auto;
2095
+ }
2096
+
2097
+ /* Forms */
2098
+ .form-group {
2099
+ margin-bottom: var(--space-6);
2100
+ }
2101
+
2102
+ .form-label {
2103
+ display: block;
2104
+ font-size: var(--text-sm);
2105
+ font-weight: 500;
2106
+ color: var(--color-gray-700);
2107
+ margin-bottom: var(--space-2);
2108
+ }
2109
+
2110
+ /* Form Inputs - Horizon Style */
2111
+ .form-input,
2112
+ .form-select,
2113
+ .form-textarea {
2114
+ width: 100%;
2115
+ padding: var(--spacing-element, 13.5px) var(--spacing-element, 11px);
2116
+ font-size: var(--font-size-base, 1.4rem);
2117
+ color: var(--color-text, #000000);
2118
+ background: var(--color-background, #ffffff);
2119
+ border: 1px solid var(--color-border, #e5e7eb);
2120
+ border-radius: var(--border-radius-medium, 8px);
2121
+ transition: border-color var(--button-transition-speed, 0.15s) var(--ease-out, ease);
2122
+ font-family: var(--font-primary, var(--font-body));
2123
+ -webkit-appearance: none;
2124
+ -moz-appearance: none;
2125
+ appearance: none;
2126
+ line-height: var(--line-height-base, 1.5);
2127
+ }
2128
+
2129
+ .form-input:focus,
2130
+ .form-select:focus,
2131
+ .form-textarea:focus {
2132
+ outline: none;
2133
+ border-color: var(--color-primary, var(--color-text, #000000));
2134
+ box-shadow: none;
2135
+ }
2136
+ width: 100%;
2137
+ padding: var(--space-3) var(--space-4);
2138
+ border: 1px solid var(--color-gray-300);
2139
+ border-radius: var(--radius);
2140
+ font-size: var(--text-base);
2141
+ color: var(--color-gray-900);
2142
+ background-color: var(--color-white);
2143
+ transition: all var(--transition-fast);
2144
+ }
2145
+
2146
+ .form-input:focus,
2147
+ .form-select:focus,
2148
+ .form-textarea:focus {
2149
+ outline: none;
2150
+ border-color: var(--color-primary);
2151
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);
2152
+ }
2153
+
2154
+ .form-textarea {
2155
+ resize: vertical;
2156
+ min-height: 120px;
2157
+ }
2158
+
2159
+ .form-error {
2160
+ color: var(--color-error);
2161
+ font-size: var(--text-sm);
2162
+ margin-top: var(--space-1);
2163
+ }
2164
+
2165
+ .form-help {
2166
+ color: var(--color-gray-500);
2167
+ font-size: var(--text-sm);
2168
+ margin-top: var(--space-1);
2169
+ }
2170
+
2171
+ /* Search Results */
2172
+ .search-results {
2173
+ margin-top: var(--space-8);
2174
+ }
2175
+
2176
+ .search-results-header {
2177
+ display: flex;
2178
+ justify-content: space-between;
2179
+ align-items: center;
2180
+ margin-bottom: var(--space-6);
2181
+ padding-bottom: var(--space-4);
2182
+ border-bottom: 1px solid var(--color-gray-200);
2183
+ }
2184
+
2185
+ .search-results-count {
2186
+ color: var(--color-gray-600);
2187
+ font-size: var(--text-sm);
2188
+ }
2189
+
2190
+ .search-sort {
2191
+ display: flex;
2192
+ align-items: center;
2193
+ gap: var(--space-2);
2194
+ }
2195
+
2196
+ .search-sort-label {
2197
+ font-size: var(--text-sm);
2198
+ color: var(--color-gray-700);
2199
+ }
2200
+
2201
+ .search-sort-select {
2202
+ padding: var(--space-2) var(--space-3);
2203
+ border: 1px solid var(--color-gray-300);
2204
+ border-radius: var(--radius);
2205
+ font-size: var(--text-sm);
2206
+ background-color: var(--color-white);
2207
+ }
2208
+
2209
+ /* Pagination */
2210
+ .pagination {
2211
+ display: flex;
2212
+ justify-content: center;
2213
+ align-items: center;
2214
+ gap: var(--space-2);
2215
+ margin-top: var(--space-12);
2216
+ }
2217
+
2218
+ .pagination-pages {
2219
+ display: flex;
2220
+ align-items: center;
2221
+ gap: var(--space-2);
2222
+ }
2223
+
2224
+ .pagination-ellipsis {
2225
+ color: var(--color-gray-500);
2226
+ padding: 0 var(--space-2);
2227
+ font-size: var(--text-sm);
2228
+ }
2229
+
2230
+ .pagination-item {
2231
+ display: flex;
2232
+ align-items: center;
2233
+ justify-content: center;
2234
+ gap: var(--space-1);
2235
+ min-width: 40px;
2236
+ height: 40px;
2237
+ padding: var(--space-2);
2238
+ border: 1px solid var(--color-gray-300);
2239
+ border-radius: var(--radius);
2240
+ color: var(--color-gray-700);
2241
+ text-decoration: none;
2242
+ font-size: var(--text-sm);
2243
+ font-weight: 500;
2244
+ transition: all var(--transition-fast);
2245
+ background: none;
2246
+ }
2247
+
2248
+ .pagination-item:hover {
2249
+ background-color: var(--color-gray-50);
2250
+ border-color: var(--color-gray-400);
2251
+ color: var(--color-primary);
2252
+ }
2253
+
2254
+ .pagination-item.active {
2255
+ background-color: var(--color-primary);
2256
+ border-color: var(--color-primary);
2257
+ color: var(--color-white);
2258
+ }
2259
+
2260
+ .pagination-item.disabled {
2261
+ opacity: 0.5;
2262
+ cursor: not-allowed;
2263
+ pointer-events: none;
2264
+ }
2265
+
2266
+ .pagination-item.disabled:hover {
2267
+ background-color: transparent;
2268
+ border-color: var(--color-gray-300);
2269
+ color: var(--color-gray-700);
2270
+ }
2271
+
2272
+ /* Notifications */
2273
+ .notification {
2274
+ position: relative;
2275
+ padding: var(--space-4) var(--space-6);
2276
+ border-radius: var(--radius-lg);
2277
+ box-shadow: var(--shadow-lg);
2278
+ z-index: var(--z-toast);
2279
+ max-width: min(420px, 90vw);
2280
+ width: max-content;
2281
+ display: inline-flex;
2282
+ align-items: center;
2283
+ justify-content: center;
2284
+ text-align: center;
2285
+ font-size: var(--text-sm);
2286
+ }
2287
+
2288
+ .notification-success {
2289
+ background-color: var(--color-success);
2290
+ color: var(--color-white);
2291
+ }
2292
+
2293
+ .notification-error {
2294
+ background-color: var(--color-error);
2295
+ color: var(--color-white);
2296
+ }
2297
+
2298
+ .notification-warning {
2299
+ background-color: var(--color-warning);
2300
+ color: var(--color-white);
2301
+ }
2302
+
2303
+ @keyframes toastInUp {
2304
+ from {
2305
+ opacity: 0;
2306
+ transform: translateY(8px);
2307
+ }
2308
+ to {
2309
+ opacity: 1;
2310
+ transform: translateY(0);
2311
+ }
2312
+ }
2313
+
2314
+ @keyframes toastOutDown {
2315
+ from {
2316
+ opacity: 1;
2317
+ transform: translateY(0);
2318
+ }
2319
+ to {
2320
+ opacity: 0;
2321
+ transform: translateY(8px);
2322
+ }
2323
+ }
2324
+
2325
+ /* Loading States */
2326
+ .loading {
2327
+ display: inline-flex;
2328
+ align-items: center;
2329
+ gap: var(--space-2);
2330
+ color: var(--color-gray-600);
2331
+ font-size: var(--text-sm);
2332
+ }
2333
+
2334
+ .loading-spinner {
2335
+ width: 16px;
2336
+ height: 16px;
2337
+ border: 2px solid var(--color-gray-300);
2338
+ border-top: 2px solid var(--color-primary);
2339
+ border-radius: 50%;
2340
+ animation: spin 1s linear infinite;
2341
+ }
2342
+
2343
+ @keyframes spin {
2344
+ 0% { transform: rotate(0deg); }
2345
+ 100% { transform: rotate(360deg); }
2346
+ }
2347
+
2348
+ /* Skeleton Loading */
2349
+ .skeleton {
2350
+ background: linear-gradient(90deg, var(--color-gray-200) 25%, var(--color-gray-100) 50%, var(--color-gray-200) 75%);
2351
+ background-size: 200% 100%;
2352
+ animation: loading 1.5s infinite;
2353
+ }
2354
+
2355
+ @keyframes loading {
2356
+ 0% {
2357
+ background-position: 200% 0;
2358
+ }
2359
+ 100% {
2360
+ background-position: -200% 0;
2361
+ }
2362
+ }
2363
+
2364
+ .skeleton-text {
2365
+ height: 1em;
2366
+ border-radius: var(--radius);
2367
+ margin-bottom: var(--space-2);
2368
+ }
2369
+
2370
+ .skeleton-text:last-child {
2371
+ margin-bottom: 0;
2372
+ }
2373
+
2374
+ .skeleton-text.short {
2375
+ width: 60%;
2376
+ }
2377
+
2378
+ .skeleton-text.medium {
2379
+ width: 80%;
2380
+ }
2381
+
2382
+ .skeleton-text.long {
2383
+ width: 100%;
2384
+ }
2385
+
2386
+ /* Responsive Utilities */
2387
+ @media (max-width: 767px) {
2388
+ .hero-title {
2389
+ font-size: var(--text-4xl);
2390
+ }
2391
+
2392
+ .hero-subtitle {
2393
+ font-size: var(--text-lg);
2394
+ }
2395
+
2396
+ .section-title {
2397
+ font-size: var(--text-3xl);
2398
+ }
2399
+
2400
+ /* Products grid responsive rules handled by main grid above */
2401
+
2402
+ .categories-grid {
2403
+ grid-template-columns: 1fr;
2404
+ gap: var(--space-4);
2405
+ }
2406
+
2407
+ .pagination {
2408
+ flex-wrap: wrap;
2409
+ }
2410
+
2411
+ .notification {
2412
+ right: var(--space-2);
2413
+ left: var(--space-2);
2414
+ }
2415
+ }
2416
+
2417
+ /* Breadcrumb */
2418
+ .breadcrumb {
2419
+ background-color: var(--color-gray-50);
2420
+ padding: var(--space-4) 0;
2421
+ border-bottom: 1px solid var(--color-gray-200);
2422
+ }
2423
+
2424
+ .breadcrumb-list {
2425
+ display: flex;
2426
+ align-items: center;
2427
+ gap: var(--space-2);
2428
+ list-style: none;
2429
+ margin: 0;
2430
+ padding: 0;
2431
+ }
2432
+
2433
+ .breadcrumb-item {
2434
+ display: flex;
2435
+ align-items: center;
2436
+ gap: var(--space-2);
2437
+ }
2438
+
2439
+ .breadcrumb-link {
2440
+ color: var(--color-gray-600);
2441
+ text-decoration: none;
2442
+ font-size: var(--text-sm);
2443
+ transition: color var(--transition-fast);
2444
+ }
2445
+
2446
+ .breadcrumb-link:hover {
2447
+ color: var(--color-primary);
2448
+ }
2449
+
2450
+ .breadcrumb-current {
2451
+ color: var(--color-gray-900);
2452
+ font-size: var(--text-sm);
2453
+ font-weight: 500;
2454
+ }
2455
+
2456
+ /* Product Details */
2457
+ .product-details {
2458
+ padding: var(--space-12) 0;
2459
+ }
2460
+
2461
+ .product-layout {
2462
+ display: grid;
2463
+ grid-template-columns: 1fr 1fr;
2464
+ gap: var(--space-16);
2465
+ align-items: start;
2466
+ }
2467
+
2468
+ @media (max-width: 1024px) {
2469
+ .product-layout {
2470
+ grid-template-columns: 1fr;
2471
+ gap: var(--space-8);
2472
+ }
2473
+ }
2474
+
2475
+ /* Product Gallery */
2476
+ .product-gallery {
2477
+ position: sticky;
2478
+ top: var(--space-20);
2479
+ }
2480
+
2481
+ .product-image-main {
2482
+ position: relative;
2483
+ aspect-ratio: 1;
2484
+ background-color: var(--color-gray-50);
2485
+ border-radius: var(--radius-lg);
2486
+ overflow: hidden;
2487
+ margin-bottom: var(--space-4);
2488
+ }
2489
+
2490
+ .product-main-image {
2491
+ width: 100%;
2492
+ height: 100%;
2493
+ object-fit: cover;
2494
+ transition: transform var(--transition-slow);
2495
+ }
2496
+
2497
+ .product-image-placeholder {
2498
+ display: flex;
2499
+ align-items: center;
2500
+ justify-content: center;
2501
+ width: 100%;
2502
+ height: 100%;
2503
+ color: var(--color-gray-400);
2504
+ background-color: var(--color-gray-100);
2505
+ }
2506
+
2507
+ .product-image-thumbnails {
2508
+ display: flex;
2509
+ gap: var(--space-3);
2510
+ overflow-x: auto;
2511
+ padding: var(--space-2) 0;
2512
+ }
2513
+
2514
+ .product-thumbnail {
2515
+ flex-shrink: 0;
2516
+ width: 80px;
2517
+ height: 80px;
2518
+ border: 2px solid transparent;
2519
+ border-radius: var(--radius);
2520
+ overflow: hidden;
2521
+ cursor: pointer;
2522
+ transition: all var(--transition-fast);
2523
+ background: none;
2524
+ padding: 0;
2525
+ }
2526
+
2527
+ .product-thumbnail:hover {
2528
+ border-color: var(--color-gray-300);
2529
+ }
2530
+
2531
+ .product-thumbnail.active {
2532
+ border-color: var(--color-primary);
2533
+ }
2534
+
2535
+ .product-thumbnail img {
2536
+ width: 100%;
2537
+ height: 100%;
2538
+ object-fit: cover;
2539
+ }
2540
+
2541
+ /* Product Information */
2542
+ .product-info {
2543
+ padding: var(--space-4) 0;
2544
+ }
2545
+
2546
+ .product-header {
2547
+ margin-bottom: var(--space-8);
2548
+ }
2549
+
2550
+ .product-info .product-title {
2551
+ font-size: var(--text-4xl);
2552
+ font-weight: 700;
2553
+ color: var(--color-gray-900);
2554
+ margin-bottom: var(--space-4);
2555
+ line-height: 1.2;
2556
+ letter-spacing: -0.025em;
2557
+ }
2558
+
2559
+ .product-price {
2560
+ display: flex;
2561
+ align-items: center;
2562
+ gap: var(--space-3);
2563
+ margin-bottom: var(--space-6);
2564
+ }
2565
+
2566
+ .product-info .product-price-current {
2567
+ font-size: var(--text-3xl);
2568
+ font-weight: 700;
2569
+ color: var(--color-primary);
2570
+ }
2571
+
2572
+ .product-info .product-price-original {
2573
+ font-size: var(--text-xl);
2574
+ color: var(--color-gray-500);
2575
+ text-decoration: line-through;
2576
+ }
2577
+
2578
+ .product-price-sale {
2579
+ font-size: var(--text-sm);
2580
+ font-weight: 600;
2581
+ color: var(--color-error);
2582
+ background-color: var(--color-gray-100);
2583
+ padding: var(--space-1) var(--space-2);
2584
+ border-radius: var(--radius);
2585
+ }
2586
+
2587
+ .product-description {
2588
+ margin-bottom: var(--space-8);
2589
+ }
2590
+
2591
+ .product-description-title {
2592
+ font-size: var(--text-lg);
2593
+ font-weight: 600;
2594
+ color: var(--color-gray-900);
2595
+ margin-bottom: var(--space-3);
2596
+ }
2597
+
2598
+ .product-description-content {
2599
+ color: var(--color-gray-600);
2600
+ line-height: 1.7;
2601
+ }
2602
+
2603
+ /* Product Options */
2604
+ .product-options {
2605
+ margin-bottom: var(--space-8);
2606
+ }
2607
+
2608
+ .product-option {
2609
+ margin-bottom: var(--space-6);
2610
+ }
2611
+
2612
+ .product-option-label {
2613
+ display: block;
2614
+ font-size: var(--text-sm);
2615
+ font-weight: 600;
2616
+ color: var(--color-gray-900);
2617
+ margin-bottom: var(--space-3);
2618
+ }
2619
+
2620
+ .product-option-values {
2621
+ display: flex;
2622
+ flex-wrap: wrap;
2623
+ gap: var(--space-2);
2624
+ }
2625
+
2626
+ .product-option-value {
2627
+ padding: var(--space-3) var(--space-4);
2628
+ border: 2px solid var(--color-gray-300);
2629
+ border-radius: var(--radius);
2630
+ background-color: var(--color-white);
2631
+ color: var(--color-gray-700);
2632
+ font-size: var(--text-sm);
2633
+ font-weight: 500;
2634
+ cursor: pointer;
2635
+ transition: all var(--transition-fast);
2636
+ }
2637
+
2638
+ .product-option-value:hover {
2639
+ border-color: var(--color-gray-400);
2640
+ background-color: var(--color-gray-50);
2641
+ }
2642
+
2643
+ .product-option-value.selected {
2644
+ border-color: var(--color-primary);
2645
+ background-color: var(--color-primary);
2646
+ color: var(--color-white);
2647
+ }
2648
+
2649
+ /* Quantity Selector */
2650
+ .quantity-selector {
2651
+ display: flex;
2652
+ align-items: center;
2653
+ border: 2px solid var(--color-gray-300);
2654
+ border-radius: var(--radius);
2655
+ overflow: hidden;
2656
+ width: fit-content;
2657
+ }
2658
+
2659
+ .quantity-btn {
2660
+ display: flex;
2661
+ align-items: center;
2662
+ justify-content: center;
2663
+ width: 40px;
2664
+ height: 40px;
2665
+ background-color: var(--color-gray-100);
2666
+ border: none;
2667
+ color: var(--color-gray-700);
2668
+ font-size: var(--text-lg);
2669
+ font-weight: 600;
2670
+ cursor: pointer;
2671
+ transition: all var(--transition-fast);
2672
+ }
2673
+
2674
+ .quantity-btn:hover {
2675
+ background-color: var(--color-gray-200);
2676
+ color: var(--color-primary);
2677
+ }
2678
+
2679
+ .quantity-input {
2680
+ width: 60px;
2681
+ height: 40px;
2682
+ border: none;
2683
+ text-align: center;
2684
+ font-size: var(--text-base);
2685
+ font-weight: 500;
2686
+ color: var(--color-gray-900);
2687
+ background-color: var(--color-white);
2688
+ }
2689
+
2690
+ .quantity-input:focus {
2691
+ outline: none;
2692
+ }
2693
+
2694
+ /* Product Actions */
2695
+ .product-actions {
2696
+ display: flex;
2697
+ gap: var(--space-4);
2698
+ margin-bottom: var(--space-8);
2699
+ }
2700
+
2701
+ @media (max-width: 640px) {
2702
+ .product-actions {
2703
+ flex-direction: column;
2704
+ }
2705
+ }
2706
+
2707
+ /* Product Meta */
2708
+ .product-meta {
2709
+ display: flex;
2710
+ flex-direction: column;
2711
+ gap: var(--space-3);
2712
+ margin-bottom: var(--space-8);
2713
+ padding: var(--space-4);
2714
+ background-color: var(--color-gray-50);
2715
+ border-radius: var(--radius-lg);
2716
+ }
2717
+
2718
+ .product-meta-item {
2719
+ display: flex;
2720
+ justify-content: space-between;
2721
+ align-items: center;
2722
+ }
2723
+
2724
+ .product-meta-label {
2725
+ font-size: var(--text-sm);
2726
+ font-weight: 500;
2727
+ color: var(--color-gray-600);
2728
+ }
2729
+
2730
+ .product-meta-value {
2731
+ font-size: var(--text-sm);
2732
+ font-weight: 600;
2733
+ color: var(--color-gray-900);
2734
+ }
2735
+
2736
+ .product-meta-value.in-stock {
2737
+ color: var(--color-success);
2738
+ }
2739
+
2740
+ .product-meta-value.out-of-stock {
2741
+ color: var(--color-error);
2742
+ }
2743
+
2744
+ /* Product Features */
2745
+ .product-features {
2746
+ display: flex;
2747
+ flex-direction: column;
2748
+ gap: var(--space-4);
2749
+ }
2750
+
2751
+ .product-feature {
2752
+ display: flex;
2753
+ align-items: center;
2754
+ gap: var(--space-3);
2755
+ padding: var(--space-3);
2756
+ background-color: var(--color-gray-50);
2757
+ border-radius: var(--radius);
2758
+ }
2759
+
2760
+ .product-feature svg {
2761
+ color: var(--color-success);
2762
+ flex-shrink: 0;
2763
+ }
2764
+
2765
+ .product-feature span {
2766
+ font-size: var(--text-sm);
2767
+ color: var(--color-gray-700);
2768
+ }
2769
+
2770
+ /* Product Tabs */
2771
+ .product-tabs {
2772
+ padding: var(--space-16) 0;
2773
+ background-color: var(--color-gray-50);
2774
+ }
2775
+
2776
+ .product-tabs-nav {
2777
+ display: flex;
2778
+ gap: var(--space-2);
2779
+ margin-bottom: var(--space-8);
2780
+ border-bottom: 1px solid var(--color-gray-200);
2781
+ }
2782
+
2783
+ .product-tab-btn {
2784
+ padding: var(--space-4) var(--space-6);
2785
+ background: none;
2786
+ border: none;
2787
+ color: var(--color-gray-600);
2788
+ font-size: var(--text-base);
2789
+ font-weight: 500;
2790
+ cursor: pointer;
2791
+ border-bottom: 2px solid transparent;
2792
+ transition: all var(--transition-fast);
2793
+ }
2794
+
2795
+ .product-tab-btn:hover {
2796
+ color: var(--color-primary);
2797
+ }
2798
+
2799
+ .product-tab-btn.active {
2800
+ color: var(--color-primary);
2801
+ border-bottom-color: var(--color-primary);
2802
+ }
2803
+
2804
+ .product-tabs-content {
2805
+ min-height: 200px;
2806
+ }
2807
+
2808
+ .product-tab-panel {
2809
+ display: none;
2810
+ }
2811
+
2812
+ .product-tab-panel.active {
2813
+ display: block;
2814
+ }
2815
+
2816
+ .product-tab-content h3 {
2817
+ font-size: var(--text-xl);
2818
+ font-weight: 600;
2819
+ color: var(--color-gray-900);
2820
+ margin-bottom: var(--space-4);
2821
+ }
2822
+
2823
+ /* Specifications Table */
2824
+ .specifications-table {
2825
+ display: grid;
2826
+ gap: var(--space-3);
2827
+ }
2828
+
2829
+ .spec-row {
2830
+ display: grid;
2831
+ grid-template-columns: 1fr 2fr;
2832
+ gap: var(--space-4);
2833
+ padding: var(--space-3) 0;
2834
+ border-bottom: 1px solid var(--color-gray-200);
2835
+ }
2836
+
2837
+ .spec-label {
2838
+ font-weight: 600;
2839
+ color: var(--color-gray-700);
2840
+ }
2841
+
2842
+ .spec-value {
2843
+ color: var(--color-gray-600);
2844
+ }
2845
+
2846
+ /* Reviews Placeholder */
2847
+ .reviews-placeholder {
2848
+ text-align: center;
2849
+ padding: var(--space-12) var(--space-6);
2850
+ color: var(--color-gray-600);
2851
+ }
2852
+
2853
+ .reviews-placeholder p {
2854
+ margin-bottom: var(--space-4);
2855
+ }
2856
+
2857
+ /* Shipping Info */
2858
+ .shipping-info {
2859
+ display: grid;
2860
+ gap: var(--space-6);
2861
+ }
2862
+
2863
+ .shipping-option {
2864
+ padding: var(--space-4);
2865
+ background-color: var(--color-white);
2866
+ border-radius: var(--radius-lg);
2867
+ border: 1px solid var(--color-gray-200);
2868
+ }
2869
+
2870
+ .shipping-option h4 {
2871
+ font-size: var(--text-lg);
2872
+ font-weight: 600;
2873
+ color: var(--color-gray-900);
2874
+ margin-bottom: var(--space-2);
2875
+ }
2876
+
2877
+ .shipping-option p {
2878
+ color: var(--color-gray-600);
2879
+ margin: 0;
2880
+ }
2881
+
2882
+ /* Section Headers */
2883
+ .section-header {
2884
+ text-align: center;
2885
+ margin-bottom: var(--space-12);
2886
+ }
2887
+
2888
+ .section-title {
2889
+ font-size: var(--text-3xl);
2890
+ font-weight: 700;
2891
+ color: var(--color-gray-900);
2892
+ margin-bottom: var(--space-4);
2893
+ letter-spacing: -0.025em;
2894
+ }
2895
+
2896
+ .section-subtitle {
2897
+ font-size: var(--text-lg);
2898
+ color: var(--color-gray-600);
2899
+ max-width: 600px;
2900
+ margin: 0 auto;
2901
+ }
2902
+
2903
+ .section-footer {
2904
+ text-align: center;
2905
+ margin-top: var(--space-12);
2906
+ }
2907
+
2908
+ /* Newsletter Section */
2909
+ .newsletter-section {
2910
+ padding: var(--space-20) 0;
2911
+ background: linear-gradient(135deg, var(--color-gray-50) 0%, var(--color-white) 100%);
2912
+ }
2913
+
2914
+ .newsletter-content {
2915
+ display: grid;
2916
+ grid-template-columns: 1fr 1fr;
2917
+ gap: var(--space-12);
2918
+ align-items: center;
2919
+ max-width: 1000px;
2920
+ margin: 0 auto;
2921
+ }
2922
+
2923
+ @media (max-width: 768px) {
2924
+ .newsletter-content {
2925
+ grid-template-columns: 1fr;
2926
+ gap: var(--space-8);
2927
+ text-align: center;
2928
+ }
2929
+ }
2930
+
2931
+ .newsletter-title {
2932
+ font-size: var(--text-3xl);
2933
+ font-weight: 700;
2934
+ color: var(--color-gray-900);
2935
+ margin-bottom: var(--space-4);
2936
+ }
2937
+
2938
+ .newsletter-description {
2939
+ font-size: var(--text-lg);
2940
+ color: var(--color-gray-600);
2941
+ line-height: 1.6;
2942
+ }
2943
+
2944
+ .newsletter-input-group {
2945
+ display: flex;
2946
+ gap: var(--space-3);
2947
+ margin-bottom: var(--space-3);
2948
+ }
2949
+
2950
+ .newsletter-input {
2951
+ flex: 1;
2952
+ padding: var(--space-4);
2953
+ border: 2px solid var(--color-gray-300);
2954
+ border-radius: var(--radius);
2955
+ font-size: var(--text-base);
2956
+ color: var(--color-gray-900);
2957
+ background-color: var(--color-white);
2958
+ transition: border-color var(--transition-fast);
2959
+ }
2960
+
2961
+ .newsletter-input:focus {
2962
+ outline: none;
2963
+ border-color: var(--color-primary);
2964
+ }
2965
+
2966
+ .newsletter-disclaimer {
2967
+ font-size: var(--text-sm);
2968
+ color: var(--color-gray-500);
2969
+ margin: 0;
2970
+ }
2971
+
2972
+ /* Collections Grid */
2973
+ .collections-grid {
2974
+ display: grid;
2975
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
2976
+ gap: var(--space-8);
2977
+ margin-top: var(--space-8);
2978
+ }
2979
+
2980
+ .collection-card {
2981
+ background-color: var(--color-white);
2982
+ border-radius: var(--radius-lg);
2983
+ overflow: hidden;
2984
+ transition: all var(--transition);
2985
+ position: relative;
2986
+ group: hover;
2987
+ }
2988
+
2989
+ .collection-card:hover {
2990
+ transform: translateY(-4px);
2991
+ box-shadow: var(--shadow-lg);
2992
+ }
2993
+
2994
+ .collection-image-container {
2995
+ position: relative;
2996
+ aspect-ratio: 4/3;
2997
+ background-color: var(--color-gray-50);
2998
+ overflow: hidden;
2999
+ }
3000
+
3001
+ .collection-image {
3002
+ width: 100%;
3003
+ height: 100%;
3004
+ object-fit: cover;
3005
+ transition: transform var(--transition-slow);
3006
+ }
3007
+
3008
+ .collection-card:hover .collection-image {
3009
+ transform: scale(1.05);
3010
+ }
3011
+
3012
+ .collection-placeholder {
3013
+ display: flex;
3014
+ align-items: center;
3015
+ justify-content: center;
3016
+ width: 100%;
3017
+ height: 100%;
3018
+ color: var(--color-gray-400);
3019
+ background-color: var(--color-gray-100);
3020
+ }
3021
+
3022
+ .collection-overlay {
3023
+ position: absolute;
3024
+ top: 0;
3025
+ left: 0;
3026
+ right: 0;
3027
+ bottom: 0;
3028
+ background-color: rgba(0, 0, 0, 0.5);
3029
+ display: flex;
3030
+ align-items: center;
3031
+ justify-content: center;
3032
+ opacity: 0;
3033
+ transition: opacity var(--transition);
3034
+ }
3035
+
3036
+ .collection-card:hover .collection-overlay {
3037
+ opacity: 1;
3038
+ }
3039
+
3040
+ .collection-link {
3041
+ padding: var(--space-3) var(--space-6);
3042
+ background-color: var(--color-white);
3043
+ color: var(--color-primary);
3044
+ text-decoration: none;
3045
+ border-radius: var(--radius);
3046
+ font-weight: 600;
3047
+ transition: all var(--transition-fast);
3048
+ }
3049
+
3050
+ .collection-link:hover {
3051
+ background-color: var(--color-primary);
3052
+ color: var(--color-white);
3053
+ }
3054
+
3055
+ .collection-content {
3056
+ padding: var(--space-6);
3057
+ }
3058
+
3059
+ .collection-title {
3060
+ font-size: var(--text-xl);
3061
+ font-weight: 600;
3062
+ color: var(--color-gray-900);
3063
+ margin-bottom: var(--space-3);
3064
+ }
3065
+
3066
+ .collection-title a {
3067
+ color: inherit;
3068
+ text-decoration: none;
3069
+ }
3070
+
3071
+ .collection-title a:hover {
3072
+ color: var(--color-primary);
3073
+ }
3074
+
3075
+ .collection-description {
3076
+ color: var(--color-gray-600);
3077
+ margin-bottom: var(--space-4);
3078
+ line-height: 1.6;
3079
+ }
3080
+
3081
+ .collection-meta {
3082
+ display: flex;
3083
+ align-items: center;
3084
+ gap: var(--space-4);
3085
+ }
3086
+
3087
+ .collection-count {
3088
+ font-size: var(--text-sm);
3089
+ color: var(--color-gray-500);
3090
+ }
3091
+
3092
+ /* Collection Page */
3093
+ .collection-header {
3094
+ background: linear-gradient(135deg, var(--color-gray-50) 0%, var(--color-white) 100%);
3095
+
3096
+ }
3097
+
3098
+ .collection-header-content {
3099
+ text-align: center;
3100
+ max-width: 800px;
3101
+ margin: 0 auto;
3102
+ }
3103
+
3104
+ .collection-title {
3105
+ font-size: var(--text-3xl);
3106
+ font-weight: 600;
3107
+ color: var(--color-gray-900);
3108
+ margin-bottom: var(--space-2);
3109
+ letter-spacing: -0.02em;
3110
+ }
3111
+
3112
+ .collection-title--compact {
3113
+ font-size: var(--font-size-heading, 32px);
3114
+ line-height: var(--line-height-heading, 1.1);
3115
+ font-weight: var(--font-weight-bold, 600);
3116
+ text-align: left !important;
3117
+ margin-left: 0 !important;
3118
+ padding-left: 0 !important;
3119
+ width: auto;
3120
+ display: block;
3121
+ }
3122
+
3123
+ /* Responsive collection title overrides */
3124
+ @media (max-width: 768px) {
3125
+ .collection-title--compact {
3126
+ font-size: var(--text-4xl, 28px);
3127
+ line-height: var(--line-height-heading, 1.1);
3128
+ }
3129
+ }
3130
+
3131
+ @media (max-width: 480px) {
3132
+ .collection-title--compact {
3133
+ font-size: var(--text-3xl, 24px);
3134
+ line-height: var(--line-height-heading, 1.1);
3135
+ }
3136
+ }
3137
+
3138
+ .collection-description {
3139
+ font-size: var(--text-lg);
3140
+ color: var(--color-gray-600);
3141
+ line-height: 1.6;
3142
+ margin-bottom: var(--space-6);
3143
+ }
3144
+
3145
+ .collection-meta {
3146
+ display: flex;
3147
+ align-items: center;
3148
+ justify-content: center;
3149
+ gap: var(--space-8);
3150
+ }
3151
+
3152
+ .collection-count {
3153
+ font-size: var(--text-base);
3154
+ color: var(--color-gray-500);
3155
+ font-weight: 500;
3156
+ }
3157
+
3158
+ .collection-image {
3159
+ width: 60px;
3160
+ height: 60px;
3161
+ border-radius: var(--radius-lg);
3162
+ overflow: hidden;
3163
+ box-shadow: var(--shadow);
3164
+ }
3165
+
3166
+ .collection-image img {
3167
+ width: 100%;
3168
+ height: 100%;
3169
+ object-fit: cover;
3170
+ }
3171
+
3172
+ /* Collection Toolbar */
3173
+ .collection-toolbar {
3174
+ background-color: var(--color-white);
3175
+ border-bottom: 1px solid var(--color-gray-200);
3176
+ padding: var(--space-6) 0;
3177
+ margin-bottom: var(--space-8);
3178
+ }
3179
+
3180
+ .toolbar-content {
3181
+ display: flex;
3182
+ align-items: center;
3183
+ justify-content: space-between;
3184
+ gap: var(--space-6);
3185
+ }
3186
+
3187
+ .filters-section {
3188
+ position: relative;
3189
+ }
3190
+
3191
+ .filter-toggle {
3192
+ display: flex;
3193
+ align-items: center;
3194
+ gap: var(--space-2);
3195
+ }
3196
+
3197
+ .filter-dropdown {
3198
+ position: absolute;
3199
+ top: 100%;
3200
+ left: 0;
3201
+ background-color: var(--color-white);
3202
+ border: 1px solid var(--color-gray-200);
3203
+ border-radius: var(--radius-lg);
3204
+ box-shadow: var(--shadow-xl);
3205
+ padding: var(--space-6);
3206
+ min-width: 320px;
3207
+ z-index: var(--z-dropdown);
3208
+ opacity: 0;
3209
+ visibility: hidden;
3210
+ transform: translateY(-10px);
3211
+ transition: all var(--transition);
3212
+ }
3213
+
3214
+ .filter-dropdown.active {
3215
+ opacity: 1;
3216
+ visibility: visible;
3217
+ transform: translateY(0);
3218
+ }
3219
+
3220
+ .filter-header {
3221
+ display: flex;
3222
+ align-items: center;
3223
+ justify-content: space-between;
3224
+ margin-bottom: var(--space-6);
3225
+ padding-bottom: var(--space-4);
3226
+ border-bottom: 1px solid var(--color-gray-200);
3227
+ }
3228
+
3229
+ .filter-title {
3230
+ font-size: var(--text-lg);
3231
+ font-weight: 600;
3232
+ color: var(--color-gray-900);
3233
+ margin: 0;
3234
+ }
3235
+
3236
+ .filter-close {
3237
+ display: flex;
3238
+ align-items: center;
3239
+ justify-content: center;
3240
+ width: 32px;
3241
+ height: 32px;
3242
+ background: none;
3243
+ border: none;
3244
+ color: var(--color-gray-500);
3245
+ cursor: pointer;
3246
+ border-radius: var(--radius);
3247
+ transition: all var(--transition-fast);
3248
+ }
3249
+
3250
+ .filter-close:hover {
3251
+ background-color: var(--color-gray-100);
3252
+ color: var(--color-gray-700);
3253
+ }
3254
+
3255
+ .filter-content {
3256
+ margin-bottom: var(--space-6);
3257
+ }
3258
+
3259
+ .filter-group {
3260
+ margin-bottom: var(--space-6);
3261
+ }
3262
+
3263
+ .filter-group:last-child {
3264
+ margin-bottom: 0;
3265
+ }
3266
+
3267
+ .filter-group-title {
3268
+ font-size: var(--text-sm);
3269
+ font-weight: 600;
3270
+ color: var(--color-gray-900);
3271
+ margin-bottom: var(--space-3);
3272
+ }
3273
+
3274
+ .price-range {
3275
+ display: flex;
3276
+ flex-direction: column;
3277
+ gap: var(--space-4);
3278
+ }
3279
+
3280
+ .price-inputs {
3281
+ display: flex;
3282
+ align-items: center;
3283
+ gap: var(--space-2);
3284
+ }
3285
+
3286
+ .price-input {
3287
+ flex: 1;
3288
+ padding: var(--space-2) var(--space-3);
3289
+ border: 1px solid var(--color-gray-300);
3290
+ border-radius: var(--radius);
3291
+ font-size: var(--text-sm);
3292
+ text-align: center;
3293
+ }
3294
+
3295
+ .price-separator {
3296
+ color: var(--color-gray-500);
3297
+ font-weight: 500;
3298
+ }
3299
+
3300
+ .price-range-slider {
3301
+ position: relative;
3302
+ height: 6px;
3303
+ background-color: var(--color-gray-200);
3304
+ border-radius: var(--radius-full);
3305
+ }
3306
+
3307
+ .range-input {
3308
+ position: absolute;
3309
+ top: 0;
3310
+ left: 0;
3311
+ width: 100%;
3312
+ height: 100%;
3313
+ background: none;
3314
+ outline: none;
3315
+ -webkit-appearance: none;
3316
+ appearance: none;
3317
+ cursor: pointer;
3318
+ }
3319
+
3320
+ .range-input::-webkit-slider-thumb {
3321
+ -webkit-appearance: none;
3322
+ appearance: none;
3323
+ width: 20px;
3324
+ height: 20px;
3325
+ border-radius: 50%;
3326
+ background-color: var(--color-primary);
3327
+ cursor: pointer;
3328
+ box-shadow: var(--shadow);
3329
+ }
3330
+
3331
+ .range-input::-moz-range-thumb {
3332
+ width: 20px;
3333
+ height: 20px;
3334
+ border-radius: 50%;
3335
+ background-color: var(--color-primary);
3336
+ cursor: pointer;
3337
+ border: none;
3338
+ box-shadow: var(--shadow);
3339
+ }
3340
+
3341
+ .filter-options {
3342
+ display: flex;
3343
+ flex-direction: column;
3344
+ gap: var(--space-2);
3345
+ }
3346
+
3347
+ .filter-option {
3348
+ display: flex;
3349
+ align-items: center;
3350
+ gap: var(--space-3);
3351
+ cursor: pointer;
3352
+ padding: var(--space-2) 0;
3353
+ }
3354
+
3355
+ .filter-checkbox {
3356
+ width: 16px;
3357
+ height: 16px;
3358
+ appearance: none;
3359
+ -webkit-appearance: none;
3360
+ -moz-appearance: none;
3361
+ border: 2px solid var(--color-gray-300);
3362
+ border-radius: 3px;
3363
+ background-color: var(--color-white);
3364
+ position: relative;
3365
+ cursor: pointer;
3366
+ transition: all 0.2s ease;
3367
+ flex-shrink: 0;
3368
+ }
3369
+
3370
+ .filter-checkbox:hover {
3371
+ border-color: var(--color-primary);
3372
+ }
3373
+
3374
+ .filter-checkbox:checked {
3375
+ background-color: var(--color-primary);
3376
+ border-color: var(--color-primary);
3377
+ }
3378
+
3379
+ .filter-checkbox:checked::after {
3380
+ content: '';
3381
+ position: absolute;
3382
+ left: 3px;
3383
+ top: 0px;
3384
+ width: 4px;
3385
+ height: 8px;
3386
+ border: solid var(--color-white);
3387
+ border-width: 0 2px 2px 0;
3388
+ transform: rotate(45deg);
3389
+ display: block;
3390
+ }
3391
+
3392
+ .filter-checkbox:focus {
3393
+ outline: 2px solid var(--color-primary);
3394
+ outline-offset: 2px;
3395
+ }
3396
+
3397
+ .filter-option-text {
3398
+ font-size: var(--text-sm);
3399
+ color: var(--color-gray-700);
3400
+ }
3401
+
3402
+ .filter-actions {
3403
+ display: flex;
3404
+ gap: var(--space-3);
3405
+ padding-top: var(--space-4);
3406
+ border-top: 1px solid var(--color-gray-200);
3407
+ }
3408
+
3409
+ .sort-section {
3410
+ display: flex;
3411
+ align-items: center;
3412
+ gap: var(--space-3);
3413
+ }
3414
+
3415
+ .sort-label {
3416
+ font-size: var(--text-sm);
3417
+ font-weight: 500;
3418
+ color: var(--color-gray-700);
3419
+ }
3420
+
3421
+ .sort-select {
3422
+ padding: var(--space-2) var(--space-3);
3423
+ border: 1px solid var(--color-gray-300);
3424
+ border-radius: var(--radius);
3425
+ background-color: var(--color-white);
3426
+ font-size: var(--text-sm);
3427
+ color: var(--color-gray-900);
3428
+ cursor: pointer;
3429
+ }
3430
+
3431
+ .view-section {
3432
+ display: flex;
3433
+ gap: var(--space-1);
3434
+ }
3435
+
3436
+ .view-btn {
3437
+ display: flex;
3438
+ align-items: center;
3439
+ justify-content: center;
3440
+ width: 40px;
3441
+ height: 40px;
3442
+ background: none;
3443
+ border: 1px solid var(--color-gray-300);
3444
+ color: var(--color-gray-600);
3445
+ cursor: pointer;
3446
+ border-radius: var(--radius);
3447
+ transition: all var(--transition-fast);
3448
+ }
3449
+
3450
+ .view-btn:first-child {
3451
+ border-top-right-radius: 0;
3452
+ border-bottom-right-radius: 0;
3453
+ }
3454
+
3455
+ .view-btn:last-child {
3456
+ border-top-left-radius: 0;
3457
+ border-bottom-left-radius: 0;
3458
+ border-left: none;
3459
+ }
3460
+
3461
+ .view-btn:hover {
3462
+ background-color: var(--color-gray-50);
3463
+ color: var(--color-primary);
3464
+ }
3465
+
3466
+ .view-btn.active {
3467
+ background-color: var(--color-primary);
3468
+ color: var(--color-white);
3469
+ border-color: var(--color-primary);
3470
+ }
3471
+
3472
+ /* Collection Products */
3473
+ .collection-products {
3474
+ padding-bottom: var(--space-16);
3475
+ }
3476
+
3477
+ .results-header {
3478
+ display: flex;
3479
+ justify-content: space-between;
3480
+ align-items: center;
3481
+ margin-bottom: var(--space-8);
3482
+ padding-bottom: var(--space-4);
3483
+ border-bottom: 1px solid var(--color-gray-200);
3484
+ }
3485
+
3486
+ .results-info {
3487
+ display: flex;
3488
+ align-items: center;
3489
+ gap: var(--space-4);
3490
+ }
3491
+
3492
+ .results-count {
3493
+ font-size: var(--text-sm);
3494
+ color: var(--color-gray-600);
3495
+ }
3496
+
3497
+ .results-sort {
3498
+ font-size: var(--text-sm);
3499
+ color: var(--color-gray-500);
3500
+ }
3501
+
3502
+ .results-actions {
3503
+ display: flex;
3504
+ gap: var(--space-3);
3505
+ }
3506
+
3507
+ .products-container {
3508
+ margin-bottom: var(--space-12);
3509
+ }
3510
+
3511
+ /* Removed duplicate products-grid rule - using the main one above */
3512
+
3513
+ .products-grid.products-list {
3514
+ grid-template-columns: 1fr;
3515
+ gap: var(--space-4);
3516
+ }
3517
+
3518
+ .products-list .product-card {
3519
+ display: grid;
3520
+ grid-template-columns: 200px 1fr auto;
3521
+ gap: var(--space-6);
3522
+ align-items: center;
3523
+ padding: var(--space-4);
3524
+ }
3525
+
3526
+ .products-list .product-image-container {
3527
+ aspect-ratio: 1;
3528
+ }
3529
+
3530
+ .products-list .product-content {
3531
+ padding: 0;
3532
+ }
3533
+
3534
+ .products-list .product-actions-bottom {
3535
+ margin-top: 0;
3536
+ }
3537
+
3538
+ .no-products {
3539
+ display: flex;
3540
+ align-items: center;
3541
+ justify-content: center;
3542
+ min-height: 400px;
3543
+ text-align: center;
3544
+ }
3545
+
3546
+ .no-products-content {
3547
+ max-width: 400px;
3548
+ }
3549
+
3550
+ .no-products svg {
3551
+ color: var(--color-gray-400);
3552
+ margin-bottom: var(--space-6);
3553
+ }
3554
+
3555
+ .no-products-title {
3556
+ font-size: var(--text-2xl);
3557
+ font-weight: 600;
3558
+ color: var(--color-gray-900);
3559
+ margin-bottom: var(--space-3);
3560
+ }
3561
+
3562
+ .no-products-description {
3563
+ color: var(--color-gray-600);
3564
+ margin-bottom: var(--space-6);
3565
+ line-height: 1.6;
3566
+ }
3567
+
3568
+ .no-products-actions {
3569
+ display: flex;
3570
+ gap: var(--space-3);
3571
+ justify-content: center;
3572
+ }
3573
+
3574
+ /* Responsive Design */
3575
+ @media (max-width: 1024px) {
3576
+ .toolbar-content {
3577
+ flex-wrap: wrap;
3578
+ gap: var(--space-4);
3579
+ }
3580
+
3581
+ .filters-section {
3582
+ order: 1;
3583
+ }
3584
+
3585
+ .sort-section {
3586
+ order: 2;
3587
+ }
3588
+
3589
+ .view-section {
3590
+ order: 3;
3591
+ }
3592
+ }
3593
+
3594
+ @media (max-width: 768px) {
3595
+ .collection-title {
3596
+ font-size: var(--text-4xl);
3597
+ }
3598
+
3599
+ .collection-meta {
3600
+ flex-direction: column;
3601
+ gap: var(--space-4);
3602
+ }
3603
+
3604
+ .toolbar-content {
3605
+ flex-direction: column;
3606
+ align-items: stretch;
3607
+ }
3608
+
3609
+ .filter-dropdown {
3610
+ position: fixed;
3611
+ top: 0;
3612
+ left: 0;
3613
+ right: 0;
3614
+ bottom: 0;
3615
+ width: 100%;
3616
+ height: 100%;
3617
+ border-radius: 0;
3618
+ padding: var(--space-8);
3619
+ z-index: var(--z-modal);
3620
+ }
3621
+
3622
+ /* Products grid responsive rules handled by main grid above */
3623
+
3624
+ .products-list .product-card {
3625
+ grid-template-columns: 1fr;
3626
+ gap: var(--space-4);
3627
+ text-align: center;
3628
+ }
3629
+
3630
+ .no-products-actions {
3631
+ flex-direction: column;
3632
+ }
3633
+ }
3634
+
3635
+ /* Filter Open State */
3636
+ .filter-open {
3637
+ overflow: hidden;
3638
+ }
3639
+
3640
+ .filter-open .filter-dropdown {
3641
+ position: fixed;
3642
+ top: 0;
3643
+ left: 0;
3644
+ right: 0;
3645
+ bottom: 0;
3646
+ width: 100%;
3647
+ height: 100%;
3648
+ border-radius: 0;
3649
+ padding: var(--space-8);
3650
+ z-index: var(--z-modal);
3651
+ }
3652
+
3653
+ /* Cart Page */
3654
+ .cart-page {
3655
+ padding: var(--space-12) 0 var(--space-16);
3656
+ }
3657
+
3658
+ .cart-header {
3659
+ text-align: center;
3660
+ margin-bottom: var(--space-12);
3661
+ }
3662
+
3663
+ .cart-title {
3664
+ font-size: var(--text-5xl);
3665
+ font-weight: 800;
3666
+ color: var(--color-gray-900);
3667
+ margin-bottom: var(--space-4);
3668
+ letter-spacing: -0.05em;
3669
+ }
3670
+
3671
+ .cart-meta {
3672
+ display: flex;
3673
+ align-items: center;
3674
+ justify-content: center;
3675
+ gap: var(--space-4);
3676
+ }
3677
+
3678
+ .cart-count {
3679
+ font-size: var(--text-lg);
3680
+ color: var(--color-gray-600);
3681
+ font-weight: 500;
3682
+ }
3683
+
3684
+ .cart-layout {
3685
+ display: grid;
3686
+ grid-template-columns: 2fr 1fr;
3687
+ gap: var(--space-12);
3688
+ align-items: start;
3689
+ }
3690
+
3691
+ @media (max-width: 1024px) {
3692
+ .cart-layout {
3693
+ grid-template-columns: 1fr;
3694
+ gap: var(--space-8);
3695
+ }
3696
+ }
3697
+
3698
+ /* Cart Items */
3699
+ .cart-items {
3700
+ background-color: var(--color-white);
3701
+ border-radius: var(--radius-lg);
3702
+ padding: var(--space-8);
3703
+ box-shadow: var(--shadow);
3704
+ }
3705
+
3706
+ .cart-items-header {
3707
+ display: flex;
3708
+ justify-content: space-between;
3709
+ align-items: center;
3710
+ margin-bottom: var(--space-8);
3711
+ padding-bottom: var(--space-6);
3712
+ border-bottom: 1px solid var(--color-gray-200);
3713
+ }
3714
+
3715
+ .cart-items-title {
3716
+ font-size: var(--text-2xl);
3717
+ font-weight: 700;
3718
+ color: var(--color-gray-900);
3719
+ margin: 0;
3720
+ }
3721
+
3722
+ .cart-items-list {
3723
+ display: flex;
3724
+ flex-direction: column;
3725
+ gap: var(--space-6);
3726
+ }
3727
+
3728
+ .cart-item {
3729
+ display: grid;
3730
+ grid-template-columns: 120px 1fr auto auto auto;
3731
+ gap: var(--space-6);
3732
+ align-items: center;
3733
+ padding: var(--space-6);
3734
+ border: 1px solid var(--color-gray-200);
3735
+ border-radius: var(--radius-lg);
3736
+ background-color: var(--color-gray-50);
3737
+ transition: all var(--transition);
3738
+ }
3739
+
3740
+ .cart-item:hover {
3741
+ border-color: var(--color-gray-300);
3742
+ box-shadow: var(--shadow-sm);
3743
+ }
3744
+
3745
+ .cart-item-image {
3746
+ position: relative;
3747
+ aspect-ratio: 1;
3748
+ background-color: var(--color-white);
3749
+ border-radius: var(--radius);
3750
+ overflow: hidden;
3751
+ }
3752
+
3753
+ .cart-item-image img {
3754
+ width: 100%;
3755
+ height: 100%;
3756
+ object-fit: cover;
3757
+ }
3758
+
3759
+ .cart-item-placeholder {
3760
+ display: flex;
3761
+ align-items: center;
3762
+ justify-content: center;
3763
+ width: 100%;
3764
+ height: 100%;
3765
+ color: var(--color-gray-400);
3766
+ background-color: var(--color-gray-100);
3767
+ }
3768
+
3769
+ .cart-item-details {
3770
+ min-width: 0;
3771
+ }
3772
+
3773
+ .cart-item-title {
3774
+ font-size: var(--text-lg);
3775
+ font-weight: 600;
3776
+ color: var(--color-gray-900);
3777
+ margin-bottom: var(--space-2);
3778
+ line-height: 1.3;
3779
+ }
3780
+
3781
+ .cart-item-title a {
3782
+ color: inherit;
3783
+ text-decoration: none;
3784
+ }
3785
+
3786
+ .cart-item-title a:hover {
3787
+ color: var(--color-primary);
3788
+ }
3789
+
3790
+ .cart-item-variant {
3791
+ font-size: var(--text-sm);
3792
+ color: var(--color-gray-600);
3793
+ margin-bottom: var(--space-3);
3794
+ }
3795
+
3796
+ .cart-item-price {
3797
+ display: flex;
3798
+ align-items: center;
3799
+ gap: var(--space-2);
3800
+ }
3801
+
3802
+ .cart-item-unit-price {
3803
+ font-size: var(--text-base);
3804
+ font-weight: 600;
3805
+ color: var(--color-primary);
3806
+ }
3807
+
3808
+ .cart-item-compare-price {
3809
+ font-size: var(--text-sm);
3810
+ color: var(--color-gray-500);
3811
+ text-decoration: line-through;
3812
+ }
3813
+
3814
+ .cart-item-quantity {
3815
+ display: flex;
3816
+ flex-direction: column;
3817
+ align-items: center;
3818
+ gap: var(--space-2);
3819
+ }
3820
+
3821
+ .quantity-label {
3822
+ font-size: var(--text-sm);
3823
+ font-weight: 500;
3824
+ color: var(--color-gray-700);
3825
+ }
3826
+
3827
+ .quantity-selector {
3828
+ display: flex;
3829
+ align-items: center;
3830
+ border: 2px solid var(--color-gray-300);
3831
+ border-radius: var(--radius);
3832
+ overflow: hidden;
3833
+ background-color: var(--color-white);
3834
+ }
3835
+
3836
+ .quantity-btn {
3837
+ display: flex;
3838
+ align-items: center;
3839
+ justify-content: center;
3840
+ width: 36px;
3841
+ height: 36px;
3842
+ background-color: var(--color-gray-100);
3843
+ border: none;
3844
+ color: var(--color-gray-700);
3845
+ cursor: pointer;
3846
+ transition: all var(--transition-fast);
3847
+ }
3848
+
3849
+ .quantity-btn:hover {
3850
+ background-color: var(--color-gray-200);
3851
+ color: var(--color-primary);
3852
+ }
3853
+
3854
+ .quantity-input {
3855
+ width: 50px;
3856
+ height: 36px;
3857
+ border: none;
3858
+ text-align: center;
3859
+ font-size: var(--text-sm);
3860
+ font-weight: 500;
3861
+ color: var(--color-gray-900);
3862
+ background-color: var(--color-white);
3863
+ }
3864
+
3865
+ .quantity-input:focus {
3866
+ outline: none;
3867
+ }
3868
+
3869
+ .cart-item-total {
3870
+ text-align: right;
3871
+ }
3872
+
3873
+ .cart-item-total-price {
3874
+ font-size: var(--text-lg);
3875
+ font-weight: 700;
3876
+ color: var(--color-gray-900);
3877
+ }
3878
+
3879
+ .cart-item-actions {
3880
+ display: flex;
3881
+ flex-direction: column;
3882
+ gap: var(--space-2);
3883
+ }
3884
+
3885
+ /* Cart Summary */
3886
+ .cart-summary {
3887
+ position: sticky;
3888
+ top: var(--space-20);
3889
+ height: fit-content;
3890
+ }
3891
+
3892
+ .summary-card {
3893
+ background-color: var(--color-white);
3894
+ border-radius: var(--radius-lg);
3895
+ padding: var(--space-8);
3896
+ box-shadow: var(--shadow);
3897
+ border: 1px solid var(--color-gray-200);
3898
+ }
3899
+
3900
+ .summary-title {
3901
+ font-size: var(--text-2xl);
3902
+ font-weight: 700;
3903
+ color: var(--color-gray-900);
3904
+ margin-bottom: var(--space-6);
3905
+ }
3906
+
3907
+ .summary-details {
3908
+ margin-bottom: var(--space-8);
3909
+ }
3910
+
3911
+ .summary-line {
3912
+ display: flex;
3913
+ justify-content: space-between;
3914
+ align-items: center;
3915
+ padding: var(--space-3) 0;
3916
+ border-bottom: 1px solid var(--color-gray-200);
3917
+ }
3918
+
3919
+ .summary-line:last-child {
3920
+ border-bottom: none;
3921
+ }
3922
+
3923
+ .summary-label {
3924
+ font-size: var(--text-base);
3925
+ color: var(--color-gray-700);
3926
+ }
3927
+
3928
+ .summary-value {
3929
+ font-size: var(--text-base);
3930
+ font-weight: 600;
3931
+ color: var(--color-gray-900);
3932
+ }
3933
+
3934
+ .summary-total {
3935
+ font-size: var(--text-xl);
3936
+ font-weight: 700;
3937
+ color: var(--color-primary);
3938
+ border-top: 2px solid var(--color-gray-200);
3939
+ margin-top: var(--space-4);
3940
+ padding-top: var(--space-4);
3941
+ }
3942
+
3943
+ .checkout-actions {
3944
+ display: flex;
3945
+ flex-direction: column;
3946
+ gap: var(--space-4);
3947
+ margin-bottom: var(--space-8);
3948
+ }
3949
+
3950
+ .checkout-features {
3951
+ display: flex;
3952
+ flex-direction: column;
3953
+ gap: var(--space-4);
3954
+ padding-top: var(--space-6);
3955
+ border-top: 1px solid var(--color-gray-200);
3956
+ }
3957
+
3958
+ .checkout-feature {
3959
+ display: flex;
3960
+ align-items: center;
3961
+ gap: var(--space-3);
3962
+ font-size: var(--text-sm);
3963
+ color: var(--color-gray-600);
3964
+ }
3965
+
3966
+ .checkout-feature svg {
3967
+ color: var(--color-success);
3968
+ flex-shrink: 0;
3969
+ }
3970
+
3971
+ /* Empty Cart */
3972
+ .empty-cart {
3973
+ display: flex;
3974
+ align-items: center;
3975
+ justify-content: center;
3976
+ min-height: 500px;
3977
+ text-align: center;
3978
+ }
3979
+
3980
+ .empty-cart-content {
3981
+ max-width: 500px;
3982
+ }
3983
+
3984
+ .empty-cart-icon {
3985
+ color: var(--color-gray-400);
3986
+ margin-bottom: var(--space-8);
3987
+ }
3988
+
3989
+ .empty-cart-title {
3990
+ font-size: var(--text-3xl);
3991
+ font-weight: 700;
3992
+ color: var(--color-gray-900);
3993
+ margin-bottom: var(--space-4);
3994
+ }
3995
+
3996
+ .empty-cart-description {
3997
+ font-size: var(--text-lg);
3998
+ color: var(--color-gray-600);
3999
+ line-height: 1.6;
4000
+ margin-bottom: var(--space-8);
4001
+ }
4002
+
4003
+ .empty-cart-actions {
4004
+ display: flex;
4005
+ gap: var(--space-4);
4006
+ justify-content: center;
4007
+ }
4008
+
4009
+ /* Responsive Design */
4010
+ @media (max-width: 768px) {
4011
+ .cart-title {
4012
+ font-size: var(--text-4xl);
4013
+ }
4014
+
4015
+ .cart-item {
4016
+ grid-template-columns: 100px 1fr;
4017
+ gap: var(--space-4);
4018
+ }
4019
+
4020
+ .cart-item-quantity,
4021
+ .cart-item-total,
4022
+ .cart-item-actions {
4023
+ grid-column: 1 / -1;
4024
+ justify-self: start;
4025
+ margin-top: var(--space-4);
4026
+ }
4027
+
4028
+ .cart-item-quantity {
4029
+ flex-direction: row;
4030
+ align-items: center;
4031
+ justify-content: space-between;
4032
+ }
4033
+
4034
+ .cart-item-total {
4035
+ text-align: left;
4036
+ }
4037
+
4038
+ .cart-item-actions {
4039
+ flex-direction: row;
4040
+ }
4041
+
4042
+ .empty-cart-actions {
4043
+ flex-direction: column;
4044
+ }
4045
+ }
4046
+
4047
+ /* Print Styles */
4048
+ /* Comprehensive Responsive Refinements */
4049
+
4050
+ /* Extra Small Mobile (320px - 479px) */
4051
+ @media (max-width: 479px) {
4052
+ .hero-title {
4053
+ font-size: var(--text-4xl);
4054
+ line-height: 1.1;
4055
+ }
4056
+
4057
+ .hero-subtitle {
4058
+ font-size: var(--text-lg);
4059
+ }
4060
+
4061
+ .hero-actions {
4062
+ flex-direction: column;
4063
+ gap: var(--space-3);
4064
+ }
4065
+
4066
+ .hero-actions .btn {
4067
+ width: 100%;
4068
+ justify-content: center;
4069
+ }
4070
+
4071
+ .products-grid {
4072
+ grid-template-columns: 1fr;
4073
+ gap: var(--space-4);
4074
+ }
4075
+
4076
+ .product-card {
4077
+ padding: var(--space-4);
4078
+ }
4079
+
4080
+ .product-title {
4081
+ font-size: var(--text-lg);
4082
+ }
4083
+
4084
+ .product-price {
4085
+ font-size: var(--text-lg);
4086
+ }
4087
+
4088
+ .collection-title {
4089
+ font-size: var(--text-3xl);
4090
+ }
4091
+
4092
+ .collection-description {
4093
+ font-size: var(--text-base);
4094
+ }
4095
+
4096
+ .cart-item {
4097
+ grid-template-columns: 80px 1fr;
4098
+ gap: var(--space-3);
4099
+ }
4100
+
4101
+ .cart-item-image {
4102
+ width: 80px;
4103
+ height: 80px;
4104
+ }
4105
+
4106
+ .cart-item-quantity,
4107
+ .cart-item-total,
4108
+ .cart-item-actions {
4109
+ grid-column: 1 / -1;
4110
+ justify-self: start;
4111
+ margin-top: var(--space-3);
4112
+ }
4113
+
4114
+ .toolbar-content {
4115
+ flex-direction: column;
4116
+ gap: var(--space-3);
4117
+ }
4118
+
4119
+ .filter-section,
4120
+ .sort-section,
4121
+ .view-section {
4122
+ width: 100%;
4123
+ }
4124
+
4125
+ .filter-dropdown,
4126
+ .sort-select {
4127
+ width: 100%;
4128
+ }
4129
+
4130
+ .view-toggle {
4131
+ justify-content: center;
4132
+ }
4133
+ }
4134
+
4135
+ /* Small Mobile (480px - 639px) */
4136
+ @media (min-width: 480px) and (max-width: 639px) {
4137
+ .hero-title {
4138
+ font-size: var(--text-5xl);
4139
+ }
4140
+
4141
+ .hero-subtitle {
4142
+ font-size: var(--text-xl);
4143
+ }
4144
+
4145
+ .hero-actions {
4146
+ flex-direction: row;
4147
+ gap: var(--space-4);
4148
+ }
4149
+
4150
+ .products-grid {
4151
+ /* Products grid responsive rules handled by main grid above */
4152
+ gap: var(--space-6);
4153
+ }
4154
+
4155
+ .collection-title {
4156
+ font-size: var(--text-4xl);
4157
+ }
4158
+
4159
+ .cart-item {
4160
+ grid-template-columns: 100px 1fr;
4161
+ gap: var(--space-4);
4162
+ }
4163
+
4164
+ .cart-item-image {
4165
+ width: 100px;
4166
+ height: 100px;
4167
+ }
4168
+
4169
+ .toolbar-content {
4170
+ flex-direction: column;
4171
+ gap: var(--space-4);
4172
+ }
4173
+ }
4174
+
4175
+ /* Mobile (640px - 767px) */
4176
+ @media (min-width: 640px) and (max-width: 767px) {
4177
+ .hero-title {
4178
+ font-size: var(--text-6xl);
4179
+ }
4180
+
4181
+ .hero-subtitle {
4182
+ font-size: var(--text-2xl);
4183
+ }
4184
+
4185
+ .products-grid {
4186
+ /* Products grid responsive rules handled by main grid above */
4187
+ gap: var(--space-8);
4188
+ }
4189
+
4190
+ .collection-title {
4191
+ font-size: var(--text-5xl);
4192
+ }
4193
+
4194
+ .cart-item {
4195
+ grid-template-columns: 120px 1fr;
4196
+ gap: var(--space-6);
4197
+ }
4198
+
4199
+ .cart-item-image {
4200
+ width: 120px;
4201
+ height: 120px;
4202
+ }
4203
+
4204
+ .toolbar-content {
4205
+ flex-direction: row;
4206
+ flex-wrap: wrap;
4207
+ gap: var(--space-4);
4208
+ }
4209
+
4210
+ .filter-section {
4211
+ flex: 1;
4212
+ min-width: 200px;
4213
+ }
4214
+
4215
+ .sort-section {
4216
+ flex: 1;
4217
+ min-width: 200px;
4218
+ }
4219
+
4220
+ .view-section {
4221
+ flex: 0 0 auto;
4222
+ }
4223
+ }
4224
+
4225
+ /* Tablet Portrait (768px - 1023px) */
4226
+ @media (min-width: 768px) and (max-width: 1023px) {
4227
+ .hero-title {
4228
+ font-size: var(--text-7xl);
4229
+ }
4230
+
4231
+ .hero-subtitle {
4232
+ font-size: var(--text-3xl);
4233
+ }
4234
+
4235
+ .products-grid {
4236
+ /* Products grid responsive rules handled by main grid above */
4237
+ gap: var(--space-10);
4238
+ }
4239
+
4240
+ .collection-title {
4241
+ font-size: var(--text-6xl);
4242
+ }
4243
+
4244
+ .cart-item {
4245
+ grid-template-columns: 140px 1fr;
4246
+ gap: var(--space-8);
4247
+ }
4248
+
4249
+ .cart-item-image {
4250
+ width: 140px;
4251
+ height: 140px;
4252
+ }
4253
+
4254
+ .toolbar-content {
4255
+ flex-direction: row;
4256
+ gap: var(--space-6);
4257
+ }
4258
+
4259
+ .filter-section,
4260
+ .sort-section {
4261
+ flex: 1;
4262
+ }
4263
+
4264
+ .view-section {
4265
+ flex: 0 0 auto;
4266
+ }
4267
+ }
4268
+
4269
+ /* Tablet Landscape (1024px - 1279px) */
4270
+ @media (min-width: 1024px) and (max-width: 1279px) {
4271
+ .hero-title {
4272
+ font-size: var(--text-8xl);
4273
+ }
4274
+
4275
+ .hero-subtitle {
4276
+ font-size: var(--text-4xl);
4277
+ }
4278
+
4279
+ .products-grid {
4280
+ /* Products grid responsive rules handled by main grid above */
4281
+ gap: var(--space-12);
4282
+ }
4283
+
4284
+ .collection-title {
4285
+ font-size: var(--text-7xl);
4286
+ }
4287
+
4288
+ .cart-item {
4289
+ grid-template-columns: 160px 1fr;
4290
+ gap: var(--space-10);
4291
+ }
4292
+
4293
+ .cart-item-image {
4294
+ width: 160px;
4295
+ height: 160px;
4296
+ }
4297
+
4298
+ .toolbar-content {
4299
+ flex-direction: row;
4300
+ gap: var(--space-8);
4301
+ }
4302
+ }
4303
+
4304
+ /* Desktop (1280px - 1535px) */
4305
+ @media (min-width: 1280px) and (max-width: 1535px) {
4306
+ .hero-title {
4307
+ font-size: var(--text-9xl);
4308
+ }
4309
+
4310
+ .hero-subtitle {
4311
+ font-size: var(--text-5xl);
4312
+ }
4313
+
4314
+ .products-grid {
4315
+ /* Products grid responsive rules handled by main grid above */
4316
+ gap: var(--space-16);
4317
+ }
4318
+
4319
+ .collection-title {
4320
+ font-size: var(--text-8xl);
4321
+ }
4322
+
4323
+ .cart-item {
4324
+ grid-template-columns: 180px 1fr;
4325
+ gap: var(--space-12);
4326
+ }
4327
+
4328
+ .cart-item-image {
4329
+ width: 180px;
4330
+ height: 180px;
4331
+ }
4332
+ }
4333
+
4334
+ /* Large Desktop (1536px+) */
4335
+ @media (min-width: 1536px) {
4336
+ .hero-title {
4337
+ font-size: var(--text-10xl);
4338
+ }
4339
+
4340
+ .hero-subtitle {
4341
+ font-size: var(--text-6xl);
4342
+ }
4343
+
4344
+ .products-grid {
4345
+ /* Products grid responsive rules handled by main grid above */
4346
+ gap: var(--space-20);
4347
+ }
4348
+
4349
+ .collection-title {
4350
+ font-size: var(--text-9xl);
4351
+ }
4352
+
4353
+ .cart-item {
4354
+ grid-template-columns: 200px 1fr;
4355
+ gap: var(--space-16);
4356
+ }
4357
+
4358
+ .cart-item-image {
4359
+ width: 200px;
4360
+ height: 200px;
4361
+ }
4362
+ }
4363
+
4364
+ /* Touch Device Optimizations */
4365
+ @media (hover: none) and (pointer: coarse) {
4366
+ .btn {
4367
+ min-height: 44px;
4368
+ padding: var(--space-4) var(--space-6);
4369
+ }
4370
+
4371
+ .product-action-btn {
4372
+ min-height: 44px;
4373
+ min-width: 44px;
4374
+ }
4375
+
4376
+ .mobile-menu-toggle {
4377
+ min-height: 44px;
4378
+ min-width: 44px;
4379
+ }
4380
+
4381
+ .header-action-link {
4382
+ min-height: 44px;
4383
+ min-width: 44px;
4384
+ }
4385
+
4386
+ .filter-toggle,
4387
+ .sort-select,
4388
+ .view-btn {
4389
+ min-height: 44px;
4390
+ }
4391
+
4392
+ /* Remove hover effects on touch devices */
4393
+ .product-card:hover,
4394
+ .collection-card:hover,
4395
+ .blog-card:hover {
4396
+ transform: none;
4397
+ box-shadow: var(--shadow-sm);
4398
+ }
4399
+
4400
+ .btn:hover {
4401
+ transform: none;
4402
+ box-shadow: var(--shadow-sm);
4403
+ }
4404
+ }
4405
+
4406
+ /* High DPI Display Optimizations */
4407
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
4408
+ .product-image,
4409
+ .hero-image,
4410
+ .collection-image {
4411
+ image-rendering: -webkit-optimize-contrast;
4412
+ image-rendering: crisp-edges;
4413
+ }
4414
+ }
4415
+
4416
+ /* Landscape Mobile Optimizations */
4417
+ @media (max-height: 500px) and (orientation: landscape) {
4418
+ .hero-section {
4419
+ padding: var(--space-8) 0;
4420
+ }
4421
+
4422
+ .hero-title {
4423
+ font-size: var(--text-4xl);
4424
+ }
4425
+
4426
+ .hero-subtitle {
4427
+ font-size: var(--text-lg);
4428
+ }
4429
+
4430
+ .section {
4431
+ padding: var(--space-12) 0;
4432
+ }
4433
+
4434
+ .section-lg {
4435
+ padding: var(--space-16) 0;
4436
+ }
4437
+
4438
+ .cart-item {
4439
+ grid-template-columns: 80px 1fr;
4440
+ gap: var(--space-4);
4441
+ }
4442
+
4443
+ .cart-item-image {
4444
+ width: 80px;
4445
+ height: 80px;
4446
+ }
4447
+ }
4448
+
4449
+ @media print {
4450
+ .btn,
4451
+ .product-actions,
4452
+ .product-actions-bottom,
4453
+ .pagination,
4454
+ .notification {
4455
+ display: none;
4456
+ }
4457
+
4458
+ .product-card,
4459
+ .category-card {
4460
+ break-inside: avoid;
4461
+ box-shadow: none;
4462
+ border: 1px solid var(--color-gray-300);
4463
+ }
4464
+ }
4465
+
4466
+ /* Async section loading animations */
4467
+ .async-loaded {
4468
+ animation: asyncFadeIn 0.6s ease-in-out;
4469
+ }
4470
+
4471
+ @keyframes asyncFadeIn {
4472
+ from {
4473
+ opacity: 0;
4474
+ transform: translateY(20px);
4475
+ }
4476
+ to {
4477
+ opacity: 1;
4478
+ transform: translateY(0);
4479
+ }
4480
+ }
4481
+
4482
+ /* Error state for async sections */
4483
+ .async-error .section-error {
4484
+ padding: 2rem;
4485
+ text-align: center;
4486
+ background: #fef2f2;
4487
+ border: 1px solid #fee2e2;
4488
+ border-radius: 8px;
4489
+ color: #991b1b;
4490
+ }
4491
+
4492
+ .async-error .btn-link {
4493
+ color: #dc2626;
4494
+ text-decoration: underline;
4495
+ background: none;
4496
+ border: none;
4497
+ cursor: pointer;
4498
+ font-size: inherit;
4499
+ }
4500
+
4501
+ .async-error .btn-link:hover {
4502
+ color: #991b1b;
4503
+ }
4504
+
4505
+ /* Empty state styling */
4506
+ .empty-state {
4507
+ padding: 4rem 2rem;
4508
+ text-align: center;
4509
+ color: #6b7280;
4510
+ }
4511
+
4512
+ .empty-state h3 {
4513
+ font-size: 1.5rem;
4514
+ margin-bottom: 0.5rem;
4515
+ color: #374151;
4516
+ }
4517
+
4518
+ /* Site header positioning */
4519
+ .site-header {
4520
+ position: relative;
4521
+ overflow: visible;
4522
+ }
4523
+
4524
+ /* Mobile Bottom Navigation */
4525
+ .mobile-bottom-nav {
4526
+ display: none;
4527
+ }
4528
+
4529
+ @media (max-width: 768px) {
4530
+ .mobile-bottom-nav {
4531
+ display: flex;
4532
+ align-items: center;
4533
+ justify-content: space-around;
4534
+ position: fixed;
4535
+ bottom: 0;
4536
+ left: 0;
4537
+ right: 0;
4538
+ background-color: var(--color-background, {{ settings.color_background }});
4539
+ border-top: 1px solid var(--color-border, rgba(15, 23, 42, 0.08));
4540
+ padding: var(--spacing-element, 0.5rem) 0 calc(var(--spacing-element, 0.5rem) + env(safe-area-inset-bottom));
4541
+ z-index: var(--z-fixed, 1030);
4542
+ box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.05);
4543
+ }
4544
+
4545
+ .mobile-bottom-nav__item {
4546
+ display: flex;
4547
+ flex-direction: column;
4548
+ align-items: center;
4549
+ justify-content: center;
4550
+ flex: 1;
4551
+ padding: var(--spacing-element, 0.5rem);
4552
+ text-decoration: none;
4553
+ color: var(--color-text-muted, rgba(0, 0, 0, 0.6));
4554
+ background: none;
4555
+ border: none;
4556
+ cursor: pointer;
4557
+ position: relative;
4558
+ min-height: 60px;
4559
+ transition: color var(--transition-fast, 0.2s) var(--ease-out, ease);
4560
+ font-family: var(--font-primary, var(--font-body));
4561
+ }
4562
+
4563
+ .mobile-bottom-nav__item:focus {
4564
+ outline: 2px solid var(--color-primary, {{ settings.color_primary | default: '#000000' }});
4565
+ outline-offset: -2px;
4566
+ border-radius: var(--border-radius-small, 4px);
4567
+ }
4568
+
4569
+ .mobile-bottom-nav__item--cart {
4570
+ position: relative;
4571
+ }
4572
+
4573
+ .mobile-bottom-nav__icon {
4574
+ width: 24px;
4575
+ height: 24px;
4576
+ margin-bottom: var(--space-1, 0.25rem);
4577
+ transition: color var(--transition-fast, 0.2s) var(--ease-out, ease);
4578
+ }
4579
+
4580
+ .mobile-bottom-nav__label {
4581
+ font-size: var(--text-xs, 0.75rem);
4582
+ font-weight: var(--font-weight-normal, 400);
4583
+ line-height: 1;
4584
+ transition: color var(--transition-fast, 0.2s) var(--ease-out, ease);
4585
+ }
4586
+
4587
+ .mobile-bottom-nav__badge {
4588
+ position: absolute;
4589
+ top: var(--spacing-element, 0.5rem);
4590
+ right: calc(50% - 20px);
4591
+ min-width: 18px;
4592
+ height: 18px;
4593
+ padding: 0 var(--spacing-element, 5px);
4594
+ background: var(--color-text, {{ settings.color_text }});
4595
+ color: var(--color-background, {{ settings.color_background }});
4596
+ border-radius: var(--border-radius-medium, 9px);
4597
+ font-size: var(--text-xs, 0.7rem);
4598
+ font-weight: var(--font-weight-bold, 600);
4599
+ display: inline-flex;
4600
+ align-items: center;
4601
+ justify-content: center;
4602
+ line-height: 1;
4603
+ font-family: var(--font-primary, var(--font-body));
4604
+ }
4605
+
4606
+ .mobile-bottom-nav__badge:empty,
4607
+ .mobile-bottom-nav__badge[data-cart-count="0"] {
4608
+ display: none;
4609
+ }
4610
+
4611
+ .mobile-bottom-nav__item.active,
4612
+ .mobile-bottom-nav__item[aria-current="page"] {
4613
+ color: var(--color-primary, {{ settings.color_primary | default: '#000000' }});
4614
+ }
4615
+
4616
+ .mobile-bottom-nav__item.active .mobile-bottom-nav__icon,
4617
+ .mobile-bottom-nav__item[aria-current="page"] .mobile-bottom-nav__icon {
4618
+ color: var(--color-primary, {{ settings.color_primary | default: '#000000' }});
4619
+ }
4620
+
4621
+ .mobile-bottom-nav__item.active .mobile-bottom-nav__label,
4622
+ .mobile-bottom-nav__item[aria-current="page"] .mobile-bottom-nav__label {
4623
+ color: var(--color-primary, {{ settings.color_primary | default: '#000000' }});
4624
+ }
4625
+
4626
+ .main-content {
4627
+ padding-bottom: calc(var(--spacing-section, 3rem) + 70px);
4628
+ }
4629
+ }