@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,3500 @@
1
+ /* O2VEND Theme - Main Styles */
2
+
3
+ /* Theme Customization Variables - Values sourced from settings_data.json */
4
+ :root {
5
+ /* Color Scheme Overrides */
6
+ --color-primary: {{ settings.color_primary }};
7
+ --color-primary-light: {{ settings.color_primary_light }};
8
+ --color-primary-dark: {{ settings.color_primary_dark }};
9
+ --color-secondary: {{ settings.color_secondary }};
10
+ --color-accent: {{ settings.color_accent }};
11
+ --color-accent-light: {{ settings.color_accent_light }};
12
+ --color-accent-dark: {{ settings.color_accent_dark }};
13
+ --color-background: {{ settings.color_background }};
14
+ --color-surface: {{ settings.color_surface }};
15
+ --color-border: {{ settings.color_border }};
16
+ --color-text: {{ settings.color_text }};
17
+ --color-text-muted: {{ settings.color_text_muted }};
18
+ --color-text-light: {{ settings.color_text_light }};
19
+ --color-success: {{ settings.color_success }};
20
+ --color-error: {{ settings.color_error }};
21
+ --color-warning: {{ settings.color_warning }};
22
+ --color-info: {{ settings.color_info }};
23
+
24
+ /* Typography Overrides */
25
+ --font-primary: {{ settings.font_primary }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
26
+ --font-display: {{ settings.font_display }}, 'Georgia', 'Times New Roman', serif;
27
+ --font-heading: {{ settings.font_heading }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
28
+ --font-body: {{ settings.font_body }}, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;
29
+ --font-mono: {{ settings.font_mono }}, 'Monaco', 'Inconsolata', 'Roboto Mono', 'Courier New', monospace;
30
+ --font-size-base: {{ settings.font_size_base }}px;
31
+ --font-size-heading: {{ settings.font_size_heading }}px;
32
+ --font-weight-normal: {{ settings.font_weight_normal }};
33
+ --font-weight-medium: {{ settings.font_weight_medium }};
34
+ --font-weight-bold: {{ settings.font_weight_bold }};
35
+ --line-height-base: {{ settings.line_height_base }};
36
+ --line-height-heading: {{ settings.line_height_heading }};
37
+ --letter-spacing-heading: {{ settings.letter_spacing_heading }}em;
38
+ --letter-spacing-uppercase: {{ settings.letter_spacing_uppercase }}em;
39
+
40
+ /* Layout Overrides */
41
+ --container-width: {{ settings.container_width }}px;
42
+ --container-padding: {{ settings.container_padding }}px;
43
+ --spacing-section: {{ settings.spacing_section }}px;
44
+ --spacing-large: {{ settings.spacing_large }}px;
45
+ --spacing-component: {{ settings.spacing_component }}px;
46
+ --spacing-element: {{ settings.spacing_element }}px;
47
+ --spacing-small: {{ settings.spacing_small }}px;
48
+ --spacing-xsmall: {{ settings.spacing_xsmall }}px;
49
+ --border-radius-small: {{ settings.border_radius_small }}px;
50
+ --border-radius-medium: {{ settings.border_radius_medium }}px; /* Horizon uses 8px */
51
+ --border-radius-large: {{ settings.border_radius_large }}px;
52
+
53
+ /* Animation Overrides */
54
+ --animation-speed: {{ settings.animation_speed }};
55
+ --enable-animations: {{ settings.enable_animations }};
56
+ --enable-parallax: {{ settings.enable_parallax }};
57
+ --enable-hover-effects: {{ settings.enable_hover_effects }};
58
+ --enable-fade-in: {{ settings.enable_fade_in }};
59
+ --enable-stagger-animation: {{ settings.enable_stagger_animation }};
60
+
61
+ /* Shadow Overrides */
62
+ --shadow-opacity: {{ settings.shadow_opacity }};
63
+ --shadow-blur: {{ settings.shadow_blur }}px;
64
+ --shadow-spread: {{ settings.shadow_spread }}px;
65
+ --depth-level-1: {{ settings.depth_level_1 }}px;
66
+ --depth-level-2: {{ settings.depth_level_2 }}px;
67
+ --depth-level-3: {{ settings.depth_level_3 }}px;
68
+
69
+ /* Button Overrides */
70
+ --button-style: {{ settings.button_style }};
71
+ --button-padding-vertical: {{ settings.button_padding_vertical }}px;
72
+ --button-padding-tal: {{ settings.button_padding_tal }}px;
73
+ --button-hover-lift: {{ settings.button_hover_lift }};
74
+ --button-ripple-effect: {{ settings.button_ripple_effect }};
75
+ --button-transition-speed: {{ settings.button_transition_speed }}ms;
76
+
77
+ /* Performance Overrides */
78
+ --lazy-load-images: {{ settings.lazy_load_images }};
79
+ --preload-critical-css: {{ settings.preload_critical_css }};
80
+ --optimize-animations: {{ settings.optimize_animations }};
81
+ --show-loading-skeletons: {{ settings.show_loading_skeletons }};
82
+ --loading-animation: {{ settings.loading_animation }};
83
+ }
84
+
85
+ /* CSS Custom Properties (CSS Variables) System */
86
+ :root {
87
+ /* Note: Color Palette, Typography, Layout, Animation, Shadow, and Button variables
88
+ are defined above using values from settings_data.json via Liquid syntax */
89
+
90
+ /* Semantic Color Variants - Use base colors from settings */
91
+ --color-success-light: {{ settings.color_success }};
92
+ --color-success-dark: {{ settings.color_success }};
93
+ --color-error-light: {{ settings.color_error }};
94
+ --color-error-dark: {{ settings.color_error }};
95
+ --color-warning-light: {{ settings.color_warning }};
96
+ --color-warning-dark: {{ settings.color_warning }};
97
+ --color-info-light: {{ settings.color_info }};
98
+ --color-info-dark: {{ settings.color_info }};
99
+
100
+ /* Neutral Scale - Use settings colors */
101
+ --color-white: {{ settings.color_background }};
102
+ --color-gray-25: {{ settings.color_background }};
103
+ --color-gray-50: {{ settings.color_surface }};
104
+ --color-gray-100: {{ settings.color_surface }};
105
+ --color-gray-200: {{ settings.color_border }};
106
+ --color-gray-300: {{ settings.color_border }};
107
+ --color-gray-400: {{ settings.color_text_muted }};
108
+ --color-gray-500: {{ settings.color_text_muted }};
109
+ --color-gray-600: {{ settings.color_text_muted }};
110
+ --color-gray-700: {{ settings.color_text }};
111
+ --color-gray-800: {{ settings.color_text }};
112
+ --color-gray-900: {{ settings.color_text }};
113
+ --color-black: {{ settings.color_primary_dark }};
114
+
115
+ /* Typography System - Horizon Style */
116
+ /* Note: --font-primary, --font-display, --font-mono are defined above using values from settings_data.json */
117
+
118
+ /* Typography Scale - Based on 10px base (Horizon) */
119
+ --text-xs: 1.2rem; /* 12px - Captions, labels */
120
+ --text-sm: 1.4rem; /* 14px - Small text, meta, body text */
121
+ --text-base: 1.4rem; /* 14px - Body text (Horizon standard) */
122
+ --text-lg: 1.6rem; /* 16px - Large body */
123
+ --text-xl: 1.8rem; /* 18px - Small headings */
124
+ --text-2xl: 2.1rem; /* 21px - H2 Section headings (Horizon) */
125
+ --text-3xl: 2.4rem; /* 24px - Page subheadings */
126
+ --text-4xl: 2.8rem; /* 28px - H1 Page headings (Horizon) */
127
+ --text-5xl: 3.2rem; /* 32px - Hero headings */
128
+ --text-6xl: 3.6rem; /* 36px - Display headings */
129
+ --text-7xl: 4rem; /* 40px - Large display */
130
+ --text-8xl: 4.8rem; /* 48px - Extra large display */
131
+
132
+ /* Line Heights */
133
+ --leading-none: 1;
134
+ --leading-tight: 1.25;
135
+ --leading-snug: 1.375;
136
+ --leading-normal: 1.5;
137
+ --leading-relaxed: 1.625;
138
+ --leading-loose: 2;
139
+
140
+ /* Letter Spacing */
141
+ --tracking-tighter: -0.05em;
142
+ --tracking-tight: -0.025em;
143
+ --tracking-normal: 0em;
144
+ --tracking-wide: 0.025em;
145
+ --tracking-wider: 0.05em;
146
+ --tracking-widest: 0.1em;
147
+
148
+ /* Spacing Scale */
149
+ --space-px: 1px;
150
+ --space-0: 0;
151
+ --space-0-5: 0.125rem; /* 2px */
152
+ --space-1: 0.25rem; /* 4px */
153
+ --space-1-5: 0.375rem; /* 6px */
154
+ --space-2: 0.5rem; /* 8px */
155
+ --space-2-5: 0.625rem; /* 10px */
156
+ --space-3: 0.75rem; /* 12px */
157
+ --space-3-5: 0.875rem; /* 14px */
158
+ --space-4: 1rem; /* 16px */
159
+ --space-5: 1.25rem; /* 20px */
160
+ --space-6: 1.5rem; /* 24px */
161
+ --space-7: 1.75rem; /* 28px */
162
+ --space-8: 2rem; /* 32px */
163
+ --space-9: 2.25rem; /* 36px */
164
+ --space-10: 2.5rem; /* 40px */
165
+ --space-11: 2.75rem; /* 44px */
166
+ --space-12: 3rem; /* 48px */
167
+ --space-14: 3.5rem; /* 56px */
168
+ --space-16: 4rem; /* 64px */
169
+ --space-20: 5rem; /* 80px */
170
+ --space-24: 6rem; /* 96px */
171
+ --space-28: 7rem; /* 112px */
172
+ --space-32: 8rem; /* 128px */
173
+ --space-36: 9rem; /* 144px */
174
+ --space-40: 10rem; /* 160px */
175
+ --space-44: 11rem; /* 176px */
176
+ --space-48: 12rem; /* 192px */
177
+ --space-52: 13rem; /* 208px */
178
+ --space-56: 14rem; /* 224px */
179
+ --space-60: 15rem; /* 240px */
180
+ --space-64: 16rem; /* 256px */
181
+ --space-72: 18rem; /* 288px */
182
+ --space-80: 20rem; /* 320px */
183
+ --space-96: 24rem; /* 384px */
184
+
185
+ /* Border Radius Scale */
186
+ --radius-none: 0;
187
+ --radius-sm: 0.125rem; /* 2px */
188
+ --radius: 0.25rem; /* 4px */
189
+ --radius-md: 0.375rem; /* 6px */
190
+ --radius-lg: 0.5rem; /* 8px */
191
+ --radius-xl: 0.75rem; /* 12px */
192
+ --radius-2xl: 1rem; /* 16px */
193
+ --radius-3xl: 1.5rem; /* 24px */
194
+ --radius-full: 9999px;
195
+
196
+ /* Shadow System - Use settings shadow opacity */
197
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / calc(var(--shadow-opacity) * 0.5));
198
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / var(--shadow-opacity)), 0 1px 2px -1px rgb(0 0 0 / var(--shadow-opacity));
199
+ --shadow: 0 4px 6px -1px rgb(0 0 0 / var(--shadow-opacity)), 0 2px 4px -2px rgb(0 0 0 / var(--shadow-opacity));
200
+ --shadow-md: 0 10px 15px -3px rgb(0 0 0 / var(--shadow-opacity)), 0 4px 6px -4px rgb(0 0 0 / var(--shadow-opacity));
201
+ --shadow-lg: 0 20px 25px -5px rgb(0 0 0 / var(--shadow-opacity)), 0 8px 10px -6px rgb(0 0 0 / var(--shadow-opacity));
202
+ --shadow-xl: 0 25px 50px -12px rgb(0 0 0 / calc(var(--shadow-opacity) * 2.5));
203
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / calc(var(--shadow-opacity) * 2.5));
204
+ --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / calc(var(--shadow-opacity) * 0.5));
205
+
206
+ /* Colored Shadows - Use settings colors with opacity */
207
+ --shadow-primary: 0 10px 15px -3px rgba(0, 0, 0, var(--shadow-opacity)), 0 4px 6px -4px rgba(0, 0, 0, var(--shadow-opacity));
208
+ --shadow-success: 0 10px 15px -3px rgba(0, 0, 0, var(--shadow-opacity)), 0 4px 6px -4px rgba(0, 0, 0, var(--shadow-opacity));
209
+ --shadow-error: 0 10px 15px -3px rgba(0, 0, 0, var(--shadow-opacity)), 0 4px 6px -4px rgba(0, 0, 0, var(--shadow-opacity));
210
+
211
+ /* Animation Timing */
212
+ --duration-75: 75ms;
213
+ --duration-100: 100ms;
214
+ --duration-150: 150ms;
215
+ --duration-200: 200ms;
216
+ --duration-300: 300ms;
217
+ --duration-500: 500ms;
218
+ --duration-700: 700ms;
219
+ --duration-1000: 1000ms;
220
+
221
+ /* Easing Functions */
222
+ --ease-linear: linear;
223
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
224
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
225
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
226
+ --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
227
+ --ease-elastic: cubic-bezier(0.175, 0.885, 0.32, 1.275);
228
+
229
+ /* Transitions */
230
+ --transition-fast: var(--duration-150) var(--ease-out);
231
+ --transition: var(--duration-200) var(--ease-out);
232
+ --transition-slow: var(--duration-300) var(--ease-out);
233
+ --transition-bounce: var(--duration-300) var(--ease-bounce);
234
+ --transition-elastic: var(--duration-500) var(--ease-elastic);
235
+
236
+ /* Z-index Scale */
237
+ --z-0: 0;
238
+ --z-10: 10;
239
+ --z-20: 20;
240
+ --z-30: 30;
241
+ --z-40: 40;
242
+ --z-50: 50;
243
+ --z-dropdown: 1000;
244
+ --z-sticky: 1020;
245
+ --z-fixed: 1030;
246
+ --z-modal-backdrop: 1040;
247
+ --z-modal: 1050;
248
+ --z-popover: 1060;
249
+ --z-tooltip: 1070;
250
+ --z-toast: 1080;
251
+
252
+ /* Container Sizes */
253
+ --container-sm: 640px;
254
+ --container-md: 768px;
255
+ --container-lg: 1024px;
256
+ --container-xl: 1280px;
257
+ --container-2xl: 1536px;
258
+
259
+ /* Breakpoints */
260
+ --breakpoint-sm: 640px;
261
+ --breakpoint-md: 768px;
262
+ --breakpoint-lg: 1024px;
263
+ --breakpoint-xl: 1280px;
264
+ --breakpoint-2xl: 1536px;
265
+
266
+ /* Theme Customization Variables (for tenant override) */
267
+ --theme-primary: var(--color-primary);
268
+ --theme-secondary: var(--color-secondary);
269
+ --theme-accent: var(--color-accent);
270
+ --theme-background: var(--color-white);
271
+ --theme-surface: var(--color-gray-50);
272
+ --theme-text: var(--color-gray-900);
273
+ --theme-text-muted: var(--color-gray-600);
274
+ --theme-border: var(--color-gray-200);
275
+
276
+ /* Typography Customization */
277
+ --theme-font-primary: var(--font-primary);
278
+ --theme-font-display: var(--font-display);
279
+ --theme-font-size-base: var(--text-base);
280
+ --theme-line-height: var(--leading-normal);
281
+
282
+ /* Spacing Customization */
283
+ --theme-spacing-sm: var(--space-4);
284
+ --theme-spacing-md: var(--space-8);
285
+ --theme-spacing-lg: var(--space-16);
286
+ --theme-spacing-xl: var(--space-24);
287
+
288
+ /* Animation Customization */
289
+ --theme-animation-speed: var(--transition);
290
+ --theme-animation-easing: var(--ease-out);
291
+ }
292
+
293
+ /* Theme Variation Classes */
294
+ .theme-variation-minimal {
295
+ --color-primary: var(--color-primary-dark, #000000);
296
+ --color-accent: var(--color-primary-dark, #000000);
297
+ --border-radius-small: 0px;
298
+ --border-radius-medium: 0px;
299
+ --border-radius-large: 0px;
300
+ --shadow-opacity: 0.05;
301
+ }
302
+
303
+ .theme-variation-colorful {
304
+ --color-primary: #ff6b6b;
305
+ --color-accent: #4ecdc4;
306
+ --color-secondary: #45b7d1;
307
+ --border-radius-small: var(--border-radius-medium, 8px);
308
+ --border-radius-medium: var(--border-radius-large, 16px);
309
+ --border-radius-large: 24px;
310
+ --shadow-opacity: 0.2;
311
+ }
312
+
313
+ .theme-variation-dark {
314
+ --color-background: var(--color-primary-dark, #0f0f0f);
315
+ --color-surface: #1a1a1a;
316
+ --color-text: var(--color-background);
317
+ --color-text-muted: #a0a0a0;
318
+ --color-border: #333333;
319
+ }
320
+
321
+ /* Conditional CSS based on settings */
322
+ .no-animations * {
323
+ animation: none !important;
324
+ transition: none !important;
325
+ }
326
+
327
+ .no-hover-effects *:hover {
328
+ transform: none !important;
329
+ box-shadow: none !important;
330
+ }
331
+
332
+ .parallax-enabled {
333
+ will-change: transform;
334
+ }
335
+
336
+ /* Animation speed variations */
337
+ .animation-slow {
338
+ --transition-fast: 400ms;
339
+ --transition-normal: 600ms;
340
+ --transition-slow: 800ms;
341
+ }
342
+
343
+ .animation-fast {
344
+ --transition-fast: 150ms;
345
+ --transition-normal: 200ms;
346
+ --transition-slow: 300ms;
347
+ }
348
+
349
+ /* Button style variations */
350
+ .button-style-minimal .btn {
351
+ border: 1px solid var(--color-border);
352
+ background: transparent;
353
+ box-shadow: none;
354
+ }
355
+
356
+ .button-style-classic .btn {
357
+ border-radius: var(--border-radius-small, 4px);
358
+ font-weight: var(--font-weight-bold, 600);
359
+ text-transform: uppercase;
360
+ letter-spacing: var(--letter-spacing-uppercase, 0.5px);
361
+ }
362
+
363
+ /* Button System - Horizon Style */
364
+ .btn {
365
+ display: inline-flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ gap: var(--space-2);
369
+ padding: var(--button-padding-vertical, 1.4rem) var(--button-padding-tal, 1.5rem);
370
+ font-family: var(--font-primary, var(--font-body));
371
+ font-size: var(--text-sm, 1.4rem);
372
+ font-weight: var(--font-weight-normal, 500);
373
+ line-height: 1;
374
+ text-decoration: none;
375
+ border: 1px solid transparent;
376
+ border-radius: var(--border-radius-medium, 8px);
377
+ cursor: pointer;
378
+ transition: all var(--button-transition-speed, 0.15s) var(--ease-out, ease);
379
+ white-space: nowrap;
380
+ user-select: none;
381
+ -webkit-appearance: none;
382
+ -moz-appearance: none;
383
+ appearance: none;
384
+ }
385
+
386
+ .btn:focus {
387
+ outline: 2px solid var(--color-primary);
388
+ outline-offset: 2px;
389
+ }
390
+
391
+ .btn:disabled {
392
+ opacity: 0.5;
393
+ cursor: not-allowed;
394
+ pointer-events: none;
395
+ }
396
+
397
+ /* Primary Button - Horizon Style */
398
+ .btn-primary {
399
+ background-color: var(--color-primary);
400
+ color: var(--color-background);
401
+ border-color: var(--color-primary);
402
+ }
403
+
404
+ .btn-primary:hover:not(:disabled) {
405
+ background-color: var(--color-primary-dark);
406
+ border-color: var(--color-primary-dark);
407
+ }
408
+
409
+ .btn-primary:active:not(:disabled) {
410
+ background-color: var(--color-primary-dark);
411
+ transform: translateY(1px);
412
+ }
413
+
414
+ /* Secondary Button */
415
+ .btn-secondary {
416
+ background-color: var(--color-white);
417
+ color: var(--color-primary);
418
+ border-color: var(--color-border);
419
+ }
420
+
421
+ .btn-secondary:hover:not(:disabled) {
422
+ background-color: var(--color-gray-50);
423
+ border-color: var(--color-primary);
424
+ }
425
+
426
+ .btn-secondary:active:not(:disabled) {
427
+ background-color: var(--color-gray-100);
428
+ transform: translateY(1px);
429
+ }
430
+
431
+ /* Outline Button */
432
+ .btn-outline {
433
+ background-color: transparent;
434
+ color: var(--color-primary);
435
+ border-color: var(--color-primary);
436
+ }
437
+
438
+ .btn-outline:hover:not(:disabled) {
439
+ background-color: var(--color-primary);
440
+ color: var(--color-white);
441
+ }
442
+
443
+ .btn-outline:active:not(:disabled) {
444
+ background-color: var(--color-primary-dark);
445
+ transform: translateY(1px);
446
+ }
447
+
448
+ /* Ghost Button */
449
+ .btn-ghost {
450
+ background-color: transparent;
451
+ color: var(--color-text-muted);
452
+ border-color: transparent;
453
+ }
454
+
455
+ .btn-ghost:hover:not(:disabled) {
456
+ background-color: var(--color-gray-50);
457
+ color: var(--color-primary);
458
+ }
459
+
460
+ .btn-ghost:active:not(:disabled) {
461
+ background-color: var(--color-gray-100);
462
+ }
463
+
464
+ /* Button Sizes */
465
+ .btn-sm {
466
+ padding: var(--space-2) var(--space-4);
467
+ font-size: var(--text-sm);
468
+ }
469
+
470
+ .btn-lg {
471
+ padding: var(--space-4) var(--space-8);
472
+ font-size: var(--text-lg);
473
+ }
474
+
475
+ .btn-xl {
476
+ padding: var(--space-5) var(--space-10);
477
+ font-size: var(--text-xl);
478
+ }
479
+
480
+ /* Button with Icon */
481
+ .btn svg {
482
+ width: 1em;
483
+ height: 1em;
484
+ flex-shrink: 0;
485
+ }
486
+
487
+ .btn-icon-only {
488
+ padding: var(--space-3);
489
+ width: auto;
490
+ height: auto;
491
+ }
492
+
493
+ .btn-icon-only.btn-sm {
494
+ padding: var(--space-2);
495
+ }
496
+
497
+ .btn-icon-only.btn-lg {
498
+ padding: var(--space-4);
499
+ }
500
+
501
+ /* Layout style variations */
502
+ .layout-full-width .container {
503
+ max-width: none;
504
+ padding: 0;
505
+ }
506
+
507
+ .layout-fluid .container {
508
+ max-width: 100%;
509
+ padding: 0 var(--container-padding);
510
+ }
511
+
512
+ /* Asymmetric grid */
513
+ .asymmetric-grid-enabled .products-grid {
514
+ display: grid;
515
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
516
+ gap: var(--spacing-component);
517
+ }
518
+
519
+ .asymmetric-grid-enabled .products-grid .product-card:nth-child(3n) {
520
+ grid-column: span 2;
521
+ }
522
+
523
+ .asymmetric-grid-enabled .products-grid .product-card:nth-child(5n) {
524
+ grid-row: span 2;
525
+ }
526
+
527
+ /* Performance optimizations */
528
+ .optimize-animations * {
529
+ will-change: auto;
530
+ }
531
+
532
+ .optimize-animations .btn:hover,
533
+ .optimize-animations .product-card:hover {
534
+ will-change: transform;
535
+ }
536
+
537
+ .lazy-load-enabled img {
538
+ loading: lazy;
539
+ }
540
+
541
+ /* Loading states */
542
+ .loading-skeleton {
543
+ background: linear-gradient(90deg, var(--color-gray-200) 25%, var(--color-gray-100) 50%, var(--color-gray-200) 75%);
544
+ background-size: 200% 100%;
545
+ animation: skeleton-loading 1.5s infinite;
546
+ }
547
+
548
+ @keyframes skeleton-loading {
549
+ 0% { background-position: 200% 0; }
550
+ 100% { background-position: -200% 0; }
551
+ }
552
+
553
+ /* Loading animation variations */
554
+ .loading-pulse {
555
+ animation: pulse 2s infinite;
556
+ }
557
+
558
+ @keyframes pulse {
559
+ 0%, 100% { opacity: 1; }
560
+ 50% { opacity: 0.5; }
561
+ }
562
+
563
+ .loading-wave {
564
+ animation: wave 1.5s infinite;
565
+ }
566
+
567
+ @keyframes wave {
568
+ 0%, 100% { transform: scaleY(1); }
569
+ 50% { transform: scaleY(0.5); }
570
+ }
571
+
572
+ /* Reset and Base Styles */
573
+ *,
574
+ *::before,
575
+ *::after {
576
+ margin: 0;
577
+ padding: 0;
578
+ box-sizing: border-box;
579
+ }
580
+
581
+ /* Horizon Typography System - Base 10px */
582
+ html {
583
+ font-size: 10px; /* Base for rem calculations - Horizon style */
584
+ scroll-behavior: smooth;
585
+ -webkit-text-size-adjust: 100%;
586
+ -ms-text-size-adjust: 100%;
587
+ }
588
+
589
+ body {
590
+ font-family: var(--font-primary, var(--font-body));
591
+ font-size: var(--font-size-base, 1.4rem);
592
+ line-height: var(--line-height-base, 1.5);
593
+ color: var(--color-text);
594
+ background-color: var(--color-background);
595
+ -webkit-font-smoothing: antialiased;
596
+ }
597
+
598
+ /* Typography Hierarchy - Horizon Style */
599
+ h1, .h1 {
600
+ font-family: var(--font-heading, var(--font-primary));
601
+ font-size: var(--font-size-heading, 2.8rem);
602
+ font-weight: var(--font-weight-bold, 700);
603
+ line-height: var(--line-height-heading, 1.2);
604
+ letter-spacing: var(--letter-spacing-heading, -0.01em);
605
+ color: var(--color-text);
606
+ margin-bottom: 0;
607
+ }
608
+
609
+ h2, .h2 {
610
+ font-family: var(--font-heading, var(--font-primary));
611
+ font-size: var(--text-2xl, 2.1rem);
612
+ font-weight: var(--font-weight-bold, 600);
613
+ line-height: var(--line-height-heading, 1.2);
614
+ letter-spacing: var(--letter-spacing-heading, 0);
615
+ color: var(--color-text);
616
+ margin-bottom: var(--spacing-component, 1.5rem);
617
+ }
618
+
619
+ h3, .h3 {
620
+ font-family: var(--font-heading, var(--font-primary));
621
+ font-size: var(--text-sm, 1.4rem);
622
+ font-weight: var(--font-weight-bold, 600);
623
+ line-height: var(--line-height-base, 1.5);
624
+ letter-spacing: var(--letter-spacing-heading, 0);
625
+ color: var(--color-text);
626
+ margin-bottom: var(--spacing-element, 1rem);
627
+ }
628
+
629
+ h4, .h4 {
630
+ font-family: var(--font-primary);
631
+ font-size: var(--text-lg);
632
+ font-weight: 500;
633
+ line-height: var(--leading-normal);
634
+ letter-spacing: var(--tracking-normal);
635
+ color: var(--color-text);
636
+ margin-bottom: var(--space-3);
637
+ }
638
+
639
+ h5, .h5 {
640
+ font-family: var(--font-primary);
641
+ font-size: var(--text-base);
642
+ font-weight: 500;
643
+ line-height: var(--leading-normal);
644
+ letter-spacing: var(--tracking-normal);
645
+ color: var(--color-text);
646
+ margin-bottom: var(--space-2);
647
+ }
648
+
649
+ h6, .h6 {
650
+ font-family: var(--font-primary);
651
+ font-size: var(--text-sm);
652
+ font-weight: 500;
653
+ line-height: var(--leading-normal);
654
+ letter-spacing: var(--tracking-wide);
655
+ color: var(--color-text-muted);
656
+ margin-bottom: var(--space-2);
657
+ }
658
+
659
+ p {
660
+ font-size: var(--font-size-base, 1.4rem);
661
+ line-height: var(--line-height-base, 1.5);
662
+ color: var(--color-text);
663
+ margin-bottom: var(--spacing-element, 1rem);
664
+ }
665
+
666
+ /* Section Headings */
667
+ .section-title {
668
+ font-family: var(--font-display);
669
+ font-size: var(--text-2xl);
670
+ font-weight: 400;
671
+ line-height: var(--leading-tight);
672
+ letter-spacing: var(--tracking-tight);
673
+ color: var(--color-text);
674
+ margin-bottom: var(--space-6);
675
+ }
676
+
677
+ /* Hero Titles */
678
+ .hero-title {
679
+ font-family: var(--font-display);
680
+ font-size: var(--text-5xl);
681
+ font-weight: 400;
682
+ line-height: var(--leading-tight);
683
+ letter-spacing: var(--tracking-tight);
684
+ color: var(--color-text);
685
+ margin-bottom: var(--space-4);
686
+ }
687
+
688
+ /* Product Titles */
689
+ .product-title {
690
+ font-family: var(--font-primary);
691
+ font-size: var(--text-lg);
692
+ font-weight: 500;
693
+ line-height: var(--leading-snug);
694
+ letter-spacing: var(--tracking-normal);
695
+ color: var(--color-text);
696
+ margin-bottom: var(--space-2);
697
+ }
698
+
699
+ /* Collection Titles */
700
+ .collection-title {
701
+ font-family: var(--font-primary);
702
+ font-size: var(--text-xl);
703
+ font-weight: 500;
704
+ line-height: var(--leading-snug);
705
+ letter-spacing: var(--tracking-normal);
706
+ color: var(--color-text);
707
+ margin-bottom: var(--space-2);
708
+ }
709
+
710
+ /* Responsive Typography */
711
+ @media (max-width: 768px) {
712
+ h1, .h1 {
713
+ font-size: var(--text-4xl);
714
+ }
715
+
716
+ h2, .h2 {
717
+ font-size: var(--text-2xl);
718
+ }
719
+
720
+ .hero-title {
721
+ font-size: var(--text-4xl);
722
+ }
723
+
724
+ .section-title {
725
+ font-size: var(--text-xl);
726
+ }
727
+ }
728
+
729
+ @media (max-width: 480px) {
730
+ h1, .h1 {
731
+ font-size: var(--text-3xl);
732
+ }
733
+
734
+ .hero-title {
735
+ font-size: var(--text-3xl);
736
+ }
737
+ }
738
+
739
+ /* Display Typography */
740
+ .display-1 {
741
+ font-size: var(--text-8xl);
742
+ font-weight: 800;
743
+ line-height: var(--leading-none);
744
+ letter-spacing: var(--tracking-tighter);
745
+ color: var(--theme-text);
746
+ margin-bottom: var(--space-8);
747
+ }
748
+
749
+ .display-2 {
750
+ font-size: var(--text-7xl);
751
+ font-weight: 700;
752
+ line-height: var(--leading-tight);
753
+ letter-spacing: var(--tracking-tight);
754
+ color: var(--theme-text);
755
+ margin-bottom: var(--space-6);
756
+ }
757
+
758
+ .display-3 {
759
+ font-size: var(--text-6xl);
760
+ font-weight: 700;
761
+ line-height: var(--leading-tight);
762
+ letter-spacing: var(--tracking-tight);
763
+ color: var(--theme-text);
764
+ margin-bottom: var(--space-5);
765
+ }
766
+
767
+ /* Body Typography */
768
+ p {
769
+ margin-bottom: var(--space-6);
770
+ color: var(--theme-text-muted);
771
+ line-height: var(--leading-relaxed);
772
+ font-size: var(--theme-font-size-base);
773
+ }
774
+
775
+ .lead {
776
+ font-size: var(--text-xl);
777
+ line-height: var(--leading-relaxed);
778
+ color: var(--theme-text);
779
+ margin-bottom: var(--space-8);
780
+ }
781
+
782
+ .text-muted {
783
+ color: var(--theme-text-muted);
784
+ font-size: var(--text-sm);
785
+ }
786
+
787
+ .text-small {
788
+ font-size: var(--text-sm);
789
+ line-height: var(--leading-normal);
790
+ }
791
+
792
+ .text-large {
793
+ font-size: var(--text-lg);
794
+ line-height: var(--leading-relaxed);
795
+ }
796
+
797
+ /* Link Styles */
798
+ a {
799
+ color: var(--theme-primary);
800
+ text-decoration: none;
801
+ transition: all var(--transition-fast);
802
+ position: relative;
803
+ border: none;
804
+ }
805
+
806
+ a:hover {
807
+ color: var(--color-accent);
808
+ text-decoration: none;
809
+ }
810
+
811
+ a:focus {
812
+ outline: none;
813
+ }
814
+
815
+ /* Link Underline Effect */
816
+ a.link-underline {
817
+ position: relative;
818
+ }
819
+
820
+ a.link-underline::after {
821
+ content: '';
822
+ position: absolute;
823
+ bottom: -2px;
824
+ left: 0;
825
+ width: 0;
826
+ height: 2px;
827
+ background-color: var(--color-accent);
828
+ transition: width var(--transition);
829
+ }
830
+
831
+ a.link-underline:hover::after {
832
+ width: 100%;
833
+ }
834
+
835
+ /* Button Links */
836
+ a.btn-link {
837
+ display: inline-flex;
838
+ align-items: center;
839
+ gap: var(--space-2);
840
+ padding: var(--space-3) var(--space-6);
841
+ background-color: var(--theme-primary);
842
+ color: var(--color-white);
843
+ border-radius: var(--radius-lg);
844
+ font-weight: 500;
845
+ transition: all var(--transition);
846
+ text-decoration: none;
847
+ }
848
+
849
+ a.btn-link:hover {
850
+ background-color: var(--color-accent);
851
+ color: var(--color-white);
852
+ transform: translateY(-1px);
853
+ box-shadow: var(--shadow-md);
854
+ }
855
+
856
+ a.btn-link:active {
857
+ transform: translateY(0);
858
+ box-shadow: var(--shadow-sm);
859
+ }
860
+
861
+ /* Container System */
862
+ .container {
863
+ width: 100%;
864
+ max-width: none;
865
+ margin: 0 auto;
866
+ padding: 0 var(--space-4);
867
+ }
868
+
869
+ .container-sm {
870
+ max-width: var(--container-sm);
871
+ }
872
+
873
+ .container-md {
874
+ max-width: var(--container-md);
875
+ }
876
+
877
+ .container-lg {
878
+ max-width: var(--container-lg);
879
+ }
880
+
881
+ .container-xl {
882
+ max-width: var(--container-xl);
883
+ }
884
+
885
+ .container-2xl {
886
+ max-width: var(--container-2xl);
887
+ }
888
+
889
+ .container-fluid {
890
+ max-width: none;
891
+ width: 100%;
892
+ }
893
+
894
+ /* Responsive Container Padding */
895
+ @media (min-width: 640px) {
896
+ .container {
897
+ padding: 0 var(--space-6);
898
+ }
899
+ }
900
+
901
+ @media (min-width: 1024px) {
902
+ .container {
903
+ padding: 0 var(--space-8);
904
+ }
905
+ }
906
+
907
+ @media (min-width: 1280px) {
908
+ .container {
909
+ padding: 0 var(--space-10);
910
+ }
911
+ }
912
+
913
+ /* Section Spacing */
914
+ .section {
915
+ padding: var(--space-20) 0;
916
+ }
917
+
918
+ .section-sm {
919
+ padding: var(--space-16) 0;
920
+ }
921
+
922
+ .section-lg {
923
+ padding: var(--space-24) 0;
924
+ }
925
+
926
+ .section-xl {
927
+ padding: var(--space-32) 0;
928
+ }
929
+
930
+ /* Content Widths */
931
+ .content-narrow {
932
+ max-width: 65ch;
933
+ margin: 0 auto;
934
+ }
935
+
936
+ .content-wide {
937
+ max-width: 85ch;
938
+ margin: 0 auto;
939
+ }
940
+
941
+ .content-full {
942
+ max-width: none;
943
+ }
944
+
945
+ /* Header System */
946
+ .site-header {
947
+ background-color: var(--theme-background);
948
+ border-bottom: 1px solid var(--theme-border);
949
+ position: sticky;
950
+ top: 0;
951
+ z-index: var(--z-sticky);
952
+ backdrop-filter: blur(8px);
953
+ -webkit-backdrop-filter: blur(8px);
954
+ transition: all var(--transition);
955
+ }
956
+
957
+ .site-header.scrolled {
958
+ background-color: rgba(255, 255, 255, 0.95);
959
+ box-shadow: var(--shadow-sm);
960
+ border-bottom-color: var(--color-border, var(--color-gray-100));
961
+ }
962
+
963
+ /* Header Styles */
964
+ .header-top {
965
+ background-color: var(--color-gray-50);
966
+ border-bottom: 1px solid var(--theme-border);
967
+ padding: var(--space-2) 0;
968
+ font-size: var(--text-sm);
969
+ }
970
+
971
+ .header-top-content {
972
+ display: flex;
973
+ justify-content: space-between;
974
+ align-items: center;
975
+ }
976
+
977
+ .header-message {
978
+ color: var(--theme-text-muted);
979
+ }
980
+
981
+ .header-utilities {
982
+ display: flex;
983
+ gap: var(--space-6);
984
+ }
985
+
986
+ .header-link {
987
+ color: var(--theme-text-muted);
988
+ font-size: var(--text-sm);
989
+ transition: color var(--transition-fast);
990
+ text-decoration: none;
991
+ }
992
+
993
+ .header-link:hover {
994
+ color: var(--theme-primary);
995
+ }
996
+
997
+ .header-main {
998
+ padding: var(--space-6) 0;
999
+ }
1000
+
1001
+ .header-content {
1002
+ display: flex;
1003
+ align-items: center;
1004
+ justify-content: space-between;
1005
+ gap: var(--space-8);
1006
+ position: relative;
1007
+ }
1008
+
1009
+ /* Header Navigation Row - Separate row for menu */
1010
+ .header-nav-row {
1011
+ display: flex;
1012
+ justify-content: center;
1013
+ align-items: center;
1014
+ padding: var(--space-4) 0;
1015
+ margin-top: var(--space-2);
1016
+ border-top: 1px solid var(--color-border);
1017
+ }
1018
+
1019
+ @media (max-width: 767px) {
1020
+ .header-nav-row {
1021
+ display: none;
1022
+ }
1023
+ }
1024
+
1025
+ /* Logo Styles */
1026
+ .header-logo {
1027
+ flex-shrink: 0;
1028
+ z-index: var(--z-10);
1029
+ }
1030
+
1031
+ .logo-link {
1032
+ display: block;
1033
+ text-decoration: none;
1034
+ transition: transform var(--transition-fast);
1035
+ }
1036
+
1037
+ .logo-link:hover {
1038
+ transform: scale(1.02);
1039
+ }
1040
+
1041
+ .logo-image {
1042
+ height: 40px;
1043
+ width: auto;
1044
+ object-fit: contain;
1045
+ transition: all var(--transition);
1046
+ }
1047
+
1048
+ .logo-text {
1049
+ font-family: var(--theme-font-display);
1050
+ font-size: var(--text-2xl);
1051
+ font-weight: 700;
1052
+ color: var(--theme-primary);
1053
+ letter-spacing: var(--tracking-tight);
1054
+ transition: color var(--transition-fast);
1055
+ }
1056
+
1057
+ .logo-link:hover .logo-text {
1058
+ color: var(--color-accent);
1059
+ }
1060
+
1061
+ /* Desktop Navigation */
1062
+ .header-nav {
1063
+ display: none;
1064
+ width: 100%;
1065
+ max-width: 100%;
1066
+ margin: 0;
1067
+ }
1068
+
1069
+ .header-nav-row .header-nav {
1070
+ display: block;
1071
+ }
1072
+
1073
+ .nav-list {
1074
+ display: flex;
1075
+ list-style: none;
1076
+ gap: var(--space-6);
1077
+ align-items: center;
1078
+ justify-content: center;
1079
+ margin: 0;
1080
+ padding: 0;
1081
+ width: 100%;
1082
+ flex-wrap: wrap;
1083
+ }
1084
+
1085
+ .nav-item {
1086
+ position: relative;
1087
+ }
1088
+
1089
+ .nav-link {
1090
+ font-weight: 400;
1091
+ color: var(--color-gray-700);
1092
+ padding: var(--space-2) var(--space-1);
1093
+ transition: color var(--transition-fast);
1094
+ position: relative;
1095
+ text-decoration: none;
1096
+ font-size: var(--text-sm);
1097
+ letter-spacing: 0.01em;
1098
+ text-transform: none;
1099
+ display: inline-flex;
1100
+ align-items: center;
1101
+ gap: var(--space-1);
1102
+ }
1103
+
1104
+ .nav-link:hover {
1105
+ color: var(--color-gray-900);
1106
+ }
1107
+
1108
+ .nav-link.link-underline {
1109
+ text-decoration: none;
1110
+ }
1111
+
1112
+ .nav-link.link-underline::after {
1113
+ content: '';
1114
+ position: absolute;
1115
+ bottom: 0;
1116
+ left: var(--space-1);
1117
+ right: var(--space-1);
1118
+ height: 1px;
1119
+ background-color: var(--color-gray-900);
1120
+ transform: scaleX(0);
1121
+ transition: transform var(--transition-fast);
1122
+ }
1123
+
1124
+ .nav-link.link-underline:hover::after {
1125
+ transform: scaleX(1);
1126
+ }
1127
+
1128
+ /* Dropdown Navigation */
1129
+ .nav-item.has-dropdown:hover .nav-dropdown {
1130
+ opacity: 1;
1131
+ visibility: visible;
1132
+ transform: translateX(-50%) translateY(0);
1133
+ }
1134
+
1135
+ .nav-item.has-dropdown:hover .nav-link {
1136
+ color: var(--color-gray-900);
1137
+ }
1138
+
1139
+ .nav-dropdown {
1140
+ position: absolute;
1141
+ top: calc(100% + var(--space-2));
1142
+ left: 50%;
1143
+ transform: translateX(-50%) translateY(-10px);
1144
+ background-color: var(--color-white);
1145
+ border: 1px solid var(--color-gray-200);
1146
+ border-radius: var(--radius);
1147
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
1148
+ padding: var(--space-3) 0;
1149
+ min-width: 220px;
1150
+ opacity: 0;
1151
+ visibility: hidden;
1152
+ transition: all var(--transition);
1153
+ z-index: var(--z-dropdown);
1154
+ white-space: nowrap;
1155
+ }
1156
+
1157
+ .nav-dropdown-item {
1158
+ list-style: none;
1159
+ margin: 0;
1160
+ padding: 0;
1161
+ }
1162
+
1163
+ .nav-dropdown-link {
1164
+ display: block;
1165
+ padding: var(--space-2) var(--space-4);
1166
+ color: var(--color-gray-700);
1167
+ transition: all var(--transition-fast);
1168
+ text-decoration: none;
1169
+ font-size: var(--text-sm);
1170
+ font-weight: 400;
1171
+ line-height: 1.5;
1172
+ }
1173
+
1174
+ .nav-dropdown-link:hover {
1175
+ background-color: var(--color-gray-50);
1176
+ color: var(--color-gray-900);
1177
+ }
1178
+
1179
+ .dropdown-arrow {
1180
+ font-size: 0.7em;
1181
+ margin-left: var(--space-1);
1182
+ transition: transform var(--transition-fast);
1183
+ display: inline-block;
1184
+ }
1185
+
1186
+ .nav-item.has-dropdown:hover .dropdown-arrow {
1187
+ transform: rotate(180deg);
1188
+ }
1189
+
1190
+ /* Header Actions */
1191
+ .header-actions {
1192
+ display: flex;
1193
+ align-items: center;
1194
+ gap: var(--space-4);
1195
+ }
1196
+
1197
+ .header-action-link {
1198
+ display: flex;
1199
+ align-items: center;
1200
+ justify-content: center;
1201
+ width: 44px;
1202
+ height: 44px;
1203
+ color: var(--theme-text);
1204
+ border-radius: var(--radius-lg);
1205
+ transition: all var(--transition-fast);
1206
+ text-decoration: none;
1207
+ }
1208
+
1209
+ .header-action-link:hover {
1210
+ background-color: var(--color-gray-50);
1211
+ color: var(--color-accent);
1212
+ transform: scale(1.05);
1213
+ }
1214
+
1215
+ /* Search Styles */
1216
+ .search-container {
1217
+ position: relative;
1218
+ }
1219
+
1220
+ .search-toggle {
1221
+ display: flex;
1222
+ align-items: center;
1223
+ justify-content: center;
1224
+ width: 44px;
1225
+ height: 44px;
1226
+ background: none;
1227
+ border: none;
1228
+ color: var(--theme-text);
1229
+ cursor: pointer;
1230
+ border-radius: var(--radius-lg);
1231
+ transition: all var(--transition-fast);
1232
+ }
1233
+
1234
+ .search-toggle:hover {
1235
+ background-color: var(--color-gray-50);
1236
+ color: var(--color-accent);
1237
+ transform: scale(1.05);
1238
+ }
1239
+
1240
+ .search-overlay {
1241
+ position: fixed;
1242
+ top: 0;
1243
+ left: 0;
1244
+ right: 0;
1245
+ bottom: 0;
1246
+ background-color: rgba(0, 0, 0, calc(var(--shadow-opacity, 0.1) * 5));
1247
+ backdrop-filter: blur(4px);
1248
+ -webkit-backdrop-filter: blur(4px);
1249
+ z-index: var(--z-modal);
1250
+ opacity: 0;
1251
+ visibility: hidden;
1252
+ transition: all var(--transition);
1253
+ }
1254
+
1255
+ .search-overlay.active {
1256
+ opacity: 1;
1257
+ visibility: visible;
1258
+ }
1259
+
1260
+ .search-content {
1261
+ position: absolute;
1262
+ top: 50%;
1263
+ left: 50%;
1264
+ transform: translate(-50%, -50%);
1265
+ background-color: var(--theme-background);
1266
+ border-radius: var(--radius-2xl);
1267
+ padding: var(--space-8);
1268
+ width: 90%;
1269
+ max-width: 500px;
1270
+ box-shadow: var(--shadow-xl);
1271
+ }
1272
+
1273
+ .search-form {
1274
+ display: flex;
1275
+ gap: var(--space-3);
1276
+ align-items: center;
1277
+ }
1278
+
1279
+ .search-input {
1280
+ flex: 1;
1281
+ padding: var(--space-4) var(--space-5);
1282
+ border: 2px solid var(--theme-border);
1283
+ border-radius: var(--radius-lg);
1284
+ font-size: var(--text-lg);
1285
+ outline: none;
1286
+ transition: all var(--transition-fast);
1287
+ background-color: var(--theme-background);
1288
+ }
1289
+
1290
+ .search-input:focus {
1291
+ border-color: var(--color-accent);
1292
+ box-shadow: var(--shadow-primary);
1293
+ }
1294
+
1295
+ .search-submit {
1296
+ display: flex;
1297
+ align-items: center;
1298
+ justify-content: center;
1299
+ width: 48px;
1300
+ height: 48px;
1301
+ background-color: var(--theme-primary);
1302
+ color: var(--color-white);
1303
+ border: none;
1304
+ border-radius: var(--radius-lg);
1305
+ cursor: pointer;
1306
+ transition: all var(--transition-fast);
1307
+ }
1308
+
1309
+ .search-submit:hover {
1310
+ background-color: var(--color-accent);
1311
+ transform: scale(1.05);
1312
+ }
1313
+
1314
+ .search-close {
1315
+ position: absolute;
1316
+ top: var(--space-4);
1317
+ right: var(--space-4);
1318
+ display: flex;
1319
+ align-items: center;
1320
+ justify-content: center;
1321
+ width: 40px;
1322
+ height: 40px;
1323
+ background: none;
1324
+ border: none;
1325
+ color: var(--theme-text-muted);
1326
+ cursor: pointer;
1327
+ border-radius: var(--radius-lg);
1328
+ transition: all var(--transition-fast);
1329
+ }
1330
+
1331
+ .search-close:hover {
1332
+ background-color: var(--color-gray-50);
1333
+ color: var(--theme-text);
1334
+ }
1335
+
1336
+ /* Cart Styles */
1337
+ .cart-container {
1338
+ position: relative;
1339
+ }
1340
+
1341
+ .cart-link {
1342
+ display: flex;
1343
+ align-items: center;
1344
+ gap: var(--space-2);
1345
+ padding: var(--space-3) var(--space-4);
1346
+ color: var(--theme-text);
1347
+ border-radius: var(--radius-lg);
1348
+ transition: all var(--transition-fast);
1349
+ position: relative;
1350
+ text-decoration: none;
1351
+ }
1352
+
1353
+ .cart-link:hover {
1354
+ background-color: var(--color-gray-50);
1355
+ color: var(--color-accent);
1356
+ transform: scale(1.05);
1357
+ }
1358
+
1359
+ .cart-count {
1360
+ background-color: var(--color-accent);
1361
+ color: var(--color-white);
1362
+ font-size: var(--text-xs);
1363
+ font-weight: 600;
1364
+ padding: var(--space-1) var(--space-2);
1365
+ border-radius: var(--radius-full);
1366
+ min-width: 20px;
1367
+ text-align: center;
1368
+ line-height: 1;
1369
+ position: absolute;
1370
+ top: -8px;
1371
+ right: -8px;
1372
+ }
1373
+
1374
+ /* Mobile Menu Toggle */
1375
+ .mobile-menu-toggle {
1376
+ display: flex;
1377
+ flex-direction: column;
1378
+ gap: 4px;
1379
+ background: none;
1380
+ border: none;
1381
+ cursor: pointer;
1382
+ padding: var(--space-2);
1383
+ border-radius: var(--radius-lg);
1384
+ transition: all var(--transition-fast);
1385
+ }
1386
+
1387
+ .mobile-menu-toggle:hover {
1388
+ background-color: var(--color-gray-50);
1389
+ }
1390
+
1391
+ .hamburger-line {
1392
+ width: 24px;
1393
+ height: 2px;
1394
+ background-color: var(--theme-text);
1395
+ transition: all var(--transition-fast);
1396
+ border-radius: var(--radius-full);
1397
+ }
1398
+
1399
+ .mobile-menu-toggle.active .hamburger-line:nth-child(1) {
1400
+ transform: rotate(45deg) translate(6px, 6px);
1401
+ }
1402
+
1403
+ .mobile-menu-toggle.active .hamburger-line:nth-child(2) {
1404
+ opacity: 0;
1405
+ }
1406
+
1407
+ .mobile-menu-toggle.active .hamburger-line:nth-child(3) {
1408
+ transform: rotate(-45deg) translate(6px, -6px);
1409
+ }
1410
+
1411
+ @media (min-width: 768px) {
1412
+ .mobile-menu-toggle {
1413
+ display: none;
1414
+ }
1415
+ }
1416
+
1417
+ /* Mobile Navigation */
1418
+ .mobile-nav {
1419
+ position: fixed;
1420
+ top: 0;
1421
+ left: 0;
1422
+ right: 0;
1423
+ bottom: 0;
1424
+ background-color: rgba(0, 0, 0, calc(var(--shadow-opacity, 0.1) * 5));
1425
+ backdrop-filter: blur(4px);
1426
+ -webkit-backdrop-filter: blur(4px);
1427
+ z-index: var(--z-modal);
1428
+ opacity: 0;
1429
+ visibility: hidden;
1430
+ transition: all var(--transition);
1431
+ }
1432
+
1433
+ .mobile-nav.active {
1434
+ opacity: 1;
1435
+ visibility: visible;
1436
+ }
1437
+
1438
+ .mobile-nav-content {
1439
+ position: absolute;
1440
+ top: 0;
1441
+ right: 0;
1442
+ width: 320px;
1443
+ height: 100%;
1444
+ background-color: var(--theme-background);
1445
+ padding: var(--space-8);
1446
+ overflow-y: auto;
1447
+ transform: translateX(100%);
1448
+ transition: transform var(--transition);
1449
+ }
1450
+
1451
+ .mobile-nav.active .mobile-nav-content {
1452
+ transform: translateX(0);
1453
+ }
1454
+
1455
+ .mobile-nav-header {
1456
+ display: flex;
1457
+ justify-content: space-between;
1458
+ align-items: center;
1459
+ margin-bottom: var(--space-8);
1460
+ padding-bottom: var(--space-6);
1461
+ border-bottom: 1px solid var(--theme-border);
1462
+ }
1463
+
1464
+ .mobile-nav-title {
1465
+ margin: 0;
1466
+ font-size: var(--text-xl);
1467
+ font-weight: 700;
1468
+ color: var(--theme-text);
1469
+ }
1470
+
1471
+ .mobile-nav-close {
1472
+ display: flex;
1473
+ align-items: center;
1474
+ justify-content: center;
1475
+ width: 40px;
1476
+ height: 40px;
1477
+ background: none;
1478
+ border: none;
1479
+ color: var(--theme-text-muted);
1480
+ cursor: pointer;
1481
+ border-radius: var(--radius-lg);
1482
+ transition: all var(--transition-fast);
1483
+ }
1484
+
1485
+ .mobile-nav-close:hover {
1486
+ background-color: var(--color-gray-50);
1487
+ color: var(--theme-text);
1488
+ }
1489
+
1490
+ .mobile-nav-list {
1491
+ list-style: none;
1492
+ margin: 0;
1493
+ padding: 0;
1494
+ }
1495
+
1496
+ .mobile-nav-item {
1497
+ border-bottom: 1px solid var(--color-gray-100);
1498
+ }
1499
+
1500
+ .mobile-nav-item:last-child {
1501
+ border-bottom: none;
1502
+ }
1503
+
1504
+ .mobile-nav-link {
1505
+ display: block;
1506
+ padding: var(--space-4) 0;
1507
+ color: var(--theme-text);
1508
+ text-decoration: none;
1509
+ font-weight: 500;
1510
+ font-size: var(--text-lg);
1511
+ transition: color var(--transition-fast);
1512
+ }
1513
+
1514
+ .mobile-nav-link:hover {
1515
+ color: var(--color-accent);
1516
+ }
1517
+
1518
+ .mobile-nav-sublist {
1519
+ list-style: none;
1520
+ margin: 0;
1521
+ padding: 0;
1522
+ padding-left: var(--space-4);
1523
+ }
1524
+
1525
+ .mobile-nav-subitem {
1526
+ border-bottom: 1px solid var(--color-gray-50);
1527
+ }
1528
+
1529
+ .mobile-nav-subitem:last-child {
1530
+ border-bottom: none;
1531
+ }
1532
+
1533
+ .mobile-nav-sublink {
1534
+ display: block;
1535
+ padding: var(--space-3) 0;
1536
+ color: var(--theme-text-muted);
1537
+ text-decoration: none;
1538
+ font-size: var(--text-base);
1539
+ transition: color var(--transition-fast);
1540
+ }
1541
+
1542
+ .mobile-nav-sublink:hover {
1543
+ color: var(--color-accent);
1544
+ }
1545
+
1546
+ /* Main Content */
1547
+ .main-content {
1548
+ min-height: calc(100vh - 200px);
1549
+ padding: var(--space-8) 0;
1550
+ }
1551
+
1552
+ /* Footer Styles */
1553
+ .site-footer {
1554
+ background-color: var(--theme-background);
1555
+ border-top: 1px solid var(--theme-border);
1556
+ margin-top: var(--space-20);
1557
+ }
1558
+
1559
+ .footer-main {
1560
+ padding: var(--space-20) 0 var(--space-16);
1561
+ }
1562
+
1563
+ .footer-content {
1564
+ display: grid;
1565
+ grid-template-columns: 1fr;
1566
+ gap: var(--space-16);
1567
+ }
1568
+
1569
+ @media (min-width: 768px) {
1570
+ .footer-content {
1571
+ grid-template-columns: 2fr 3fr;
1572
+ gap: var(--space-20);
1573
+ }
1574
+ }
1575
+
1576
+ @media (min-width: 1024px) {
1577
+ .footer-content {
1578
+ grid-template-columns: 1fr 2fr;
1579
+ gap: var(--space-24);
1580
+ }
1581
+ }
1582
+
1583
+ /* Footer Brand Section */
1584
+ .footer-brand-section {
1585
+ max-width: 400px;
1586
+ }
1587
+
1588
+ .footer-brand {
1589
+ margin-bottom: var(--space-8);
1590
+ }
1591
+
1592
+ .footer-title {
1593
+ font-family: var(--theme-font-display);
1594
+ font-size: var(--text-3xl);
1595
+ font-weight: 700;
1596
+ color: var(--theme-text);
1597
+ margin-bottom: var(--space-4);
1598
+ letter-spacing: var(--tracking-tight);
1599
+ }
1600
+
1601
+ .footer-description {
1602
+ color: var(--theme-text-muted);
1603
+ line-height: var(--leading-relaxed);
1604
+ margin-bottom: var(--space-8);
1605
+ font-size: var(--text-lg);
1606
+ }
1607
+
1608
+ /* Social Links */
1609
+ .social-links {
1610
+ display: flex;
1611
+ gap: var(--space-4);
1612
+ }
1613
+
1614
+ .social-link {
1615
+ display: flex;
1616
+ align-items: center;
1617
+ justify-content: center;
1618
+ width: 44px;
1619
+ height: 44px;
1620
+ background-color: var(--color-gray-50);
1621
+ color: var(--theme-text-muted);
1622
+ border-radius: var(--radius-lg);
1623
+ transition: all var(--transition-fast);
1624
+ text-decoration: none;
1625
+ }
1626
+
1627
+ .social-link:hover {
1628
+ background-color: var(--color-accent);
1629
+ color: var(--color-white);
1630
+ transform: translateY(-2px);
1631
+ box-shadow: var(--shadow-md);
1632
+ }
1633
+
1634
+ /* Footer Links Grid */
1635
+ .footer-links-grid {
1636
+ display: grid;
1637
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1638
+ gap: var(--space-12);
1639
+ }
1640
+
1641
+ @media (min-width: 768px) {
1642
+ .footer-links-grid {
1643
+ grid-template-columns: repeat(3, 1fr);
1644
+ }
1645
+ }
1646
+
1647
+ .footer-section {
1648
+ display: flex;
1649
+ flex-direction: column;
1650
+ }
1651
+
1652
+ .footer-heading {
1653
+ font-size: var(--text-lg);
1654
+ font-weight: 600;
1655
+ color: var(--theme-text);
1656
+ margin-bottom: var(--space-6);
1657
+ letter-spacing: var(--tracking-tight);
1658
+ }
1659
+
1660
+ .footer-links {
1661
+ list-style: none;
1662
+ margin: 0;
1663
+ padding: 0;
1664
+ display: flex;
1665
+ flex-direction: column;
1666
+ gap: var(--space-3);
1667
+ }
1668
+
1669
+ .footer-link {
1670
+ color: var(--theme-text-muted);
1671
+ text-decoration: none;
1672
+ font-size: var(--text-base);
1673
+ transition: all var(--transition-fast);
1674
+ position: relative;
1675
+ padding-left: var(--space-4);
1676
+ }
1677
+
1678
+ .footer-link:hover {
1679
+ color: var(--color-accent);
1680
+ }
1681
+
1682
+ .footer-link::before {
1683
+ content: '';
1684
+ position: absolute;
1685
+ left: 0;
1686
+ top: 50%;
1687
+ transform: translateY(-50%);
1688
+ width: 4px;
1689
+ height: 4px;
1690
+ background-color: var(--color-accent);
1691
+ border-radius: var(--radius-full);
1692
+ opacity: 0;
1693
+ transition: all var(--transition-fast);
1694
+ }
1695
+
1696
+ .footer-link:hover::before {
1697
+ opacity: 1;
1698
+ }
1699
+
1700
+ /* Newsletter Section */
1701
+ .footer-newsletter {
1702
+ grid-column: 1 / -1;
1703
+ max-width: 400px;
1704
+ margin-top: var(--space-8);
1705
+ }
1706
+
1707
+ @media (min-width: 768px) {
1708
+ .footer-newsletter {
1709
+ grid-column: auto;
1710
+ margin-top: 0;
1711
+ }
1712
+ }
1713
+
1714
+ .footer-text {
1715
+ color: var(--theme-text-muted);
1716
+ margin-bottom: var(--space-6);
1717
+ line-height: var(--leading-relaxed);
1718
+ }
1719
+
1720
+ .newsletter-form {
1721
+ display: flex;
1722
+ flex-direction: column;
1723
+ gap: var(--space-4);
1724
+ }
1725
+
1726
+ .newsletter-input-group {
1727
+ display: flex;
1728
+ gap: var(--space-3);
1729
+ align-items: stretch;
1730
+ }
1731
+
1732
+ .newsletter-input {
1733
+ flex: 1;
1734
+ padding: var(--space-4);
1735
+ border: 2px solid var(--theme-border);
1736
+ border-radius: var(--radius-lg);
1737
+ font-size: var(--text-base);
1738
+ background-color: var(--theme-background);
1739
+ transition: all var(--transition-fast);
1740
+ outline: none;
1741
+ }
1742
+
1743
+ .newsletter-input:focus {
1744
+ border-color: var(--color-accent);
1745
+ box-shadow: var(--shadow-primary);
1746
+ }
1747
+
1748
+ .newsletter-button {
1749
+ padding: var(--space-4) var(--space-6);
1750
+ background-color: var(--theme-primary);
1751
+ color: var(--color-white);
1752
+ border: none;
1753
+ border-radius: var(--radius-lg);
1754
+ font-weight: 600;
1755
+ cursor: pointer;
1756
+ transition: all var(--transition-fast);
1757
+ white-space: nowrap;
1758
+ }
1759
+
1760
+ .newsletter-button:hover {
1761
+ background-color: var(--color-accent);
1762
+ transform: translateY(-1px);
1763
+ box-shadow: var(--shadow-md);
1764
+ }
1765
+
1766
+ .newsletter-disclaimer {
1767
+ font-size: var(--text-sm);
1768
+ color: var(--theme-text-muted);
1769
+ margin: 0;
1770
+ line-height: var(--leading-normal);
1771
+ }
1772
+
1773
+ /* Footer Bottom */
1774
+ .footer-bottom {
1775
+ background-color: var(--color-gray-50);
1776
+ border-top: 1px solid var(--theme-border);
1777
+ padding: var(--space-8) 0;
1778
+ }
1779
+
1780
+ .footer-bottom-content {
1781
+ display: flex;
1782
+ flex-direction: column;
1783
+ gap: var(--space-6);
1784
+ align-items: center;
1785
+ text-align: center;
1786
+ }
1787
+
1788
+ @media (min-width: 768px) {
1789
+ .footer-bottom-content {
1790
+ flex-direction: row;
1791
+ justify-content: space-between;
1792
+ align-items: center;
1793
+ text-align: left;
1794
+ }
1795
+ }
1796
+
1797
+ .footer-bottom-left,
1798
+ .footer-bottom-center,
1799
+ .footer-bottom-right {
1800
+ display: flex;
1801
+ align-items: center;
1802
+ }
1803
+
1804
+ .footer-copyright {
1805
+ color: var(--theme-text-muted);
1806
+ font-size: var(--text-sm);
1807
+ margin: 0;
1808
+ }
1809
+
1810
+ .footer-legal {
1811
+ display: flex;
1812
+ gap: var(--space-6);
1813
+ flex-wrap: wrap;
1814
+ justify-content: center;
1815
+ }
1816
+
1817
+ @media (min-width: 768px) {
1818
+ .footer-legal {
1819
+ justify-content: flex-start;
1820
+ }
1821
+ }
1822
+
1823
+ .footer-legal-link {
1824
+ color: var(--theme-text-muted);
1825
+ text-decoration: none;
1826
+ font-size: var(--text-sm);
1827
+ transition: color var(--transition-fast);
1828
+ }
1829
+
1830
+ .footer-legal-link:hover {
1831
+ color: var(--color-accent);
1832
+ }
1833
+
1834
+ .footer-powered {
1835
+ color: var(--theme-text-muted);
1836
+ font-size: var(--text-sm);
1837
+ margin: 0;
1838
+ }
1839
+
1840
+ .footer-powered-link {
1841
+ color: var(--color-accent);
1842
+ text-decoration: none;
1843
+ font-weight: 500;
1844
+ transition: color var(--transition-fast);
1845
+ }
1846
+
1847
+ .footer-powered-link:hover {
1848
+ color: var(--theme-primary);
1849
+ }
1850
+
1851
+ /* Logo */
1852
+ .logo {
1853
+ flex-shrink: 0;
1854
+ }
1855
+
1856
+ .logo-link {
1857
+ display: block;
1858
+ text-decoration: none;
1859
+ }
1860
+
1861
+ .logo-image {
1862
+ height: 40px;
1863
+ width: auto;
1864
+ object-fit: contain;
1865
+ }
1866
+
1867
+ .logo-text {
1868
+ font-family: var(--font-display);
1869
+ font-size: var(--text-2xl);
1870
+ font-weight: 700;
1871
+ color: var(--color-primary);
1872
+ letter-spacing: -0.025em;
1873
+ }
1874
+
1875
+ /* Navigation */
1876
+ .main-nav {
1877
+ display: none;
1878
+ }
1879
+
1880
+ @media (min-width: 768px) {
1881
+ .main-nav {
1882
+ display: block;
1883
+ flex: 1;
1884
+ max-width: 600px;
1885
+ }
1886
+ }
1887
+
1888
+ .nav-list {
1889
+ display: flex;
1890
+ list-style: none;
1891
+ gap: var(--space-8);
1892
+ align-items: center;
1893
+ }
1894
+
1895
+ .nav-item {
1896
+ position: relative;
1897
+ }
1898
+
1899
+ .nav-link {
1900
+ font-weight: 500;
1901
+ color: var(--color-gray-700);
1902
+ padding: var(--space-2) 0;
1903
+ transition: color var(--transition-fast);
1904
+ position: relative;
1905
+ }
1906
+
1907
+ .nav-link:hover {
1908
+ color: var(--color-primary);
1909
+ }
1910
+
1911
+ .nav-link::after {
1912
+ content: '';
1913
+ position: absolute;
1914
+ bottom: 0;
1915
+ left: 0;
1916
+ width: 0;
1917
+ height: 2px;
1918
+ background-color: var(--color-primary);
1919
+ transition: width var(--transition-fast);
1920
+ }
1921
+
1922
+ .nav-link:hover::after {
1923
+ width: 100%;
1924
+ }
1925
+
1926
+ /* Dropdown */
1927
+ .dropdown {
1928
+ position: relative;
1929
+ }
1930
+
1931
+ .dropdown-menu {
1932
+ position: absolute;
1933
+ top: 100%;
1934
+ left: 0;
1935
+ background-color: var(--color-white);
1936
+ border: 1px solid var(--color-gray-200);
1937
+ border-radius: var(--radius-lg);
1938
+ box-shadow: var(--shadow-lg);
1939
+ padding: var(--space-2);
1940
+ min-width: 200px;
1941
+ opacity: 0;
1942
+ visibility: hidden;
1943
+ transform: translateY(-10px);
1944
+ transition: all var(--transition);
1945
+ z-index: var(--z-dropdown);
1946
+ }
1947
+
1948
+ .dropdown:hover .dropdown-menu {
1949
+ opacity: 1;
1950
+ visibility: visible;
1951
+ transform: translateY(0);
1952
+ }
1953
+
1954
+ .dropdown-link {
1955
+ display: block;
1956
+ padding: var(--space-2) var(--space-3);
1957
+ color: var(--color-gray-700);
1958
+ border-radius: var(--radius);
1959
+ transition: background-color var(--transition-fast);
1960
+ }
1961
+
1962
+ .dropdown-link:hover {
1963
+ background-color: var(--color-gray-50);
1964
+ color: var(--color-primary);
1965
+ }
1966
+
1967
+ /* Header Actions */
1968
+ .header-actions {
1969
+ display: flex;
1970
+ align-items: center;
1971
+ gap: var(--space-4);
1972
+ }
1973
+
1974
+ .header-action-link {
1975
+ display: flex;
1976
+ align-items: center;
1977
+ justify-content: center;
1978
+ width: 40px;
1979
+ height: 40px;
1980
+ color: var(--color-gray-700);
1981
+ border-radius: var(--radius);
1982
+ transition: all var(--transition-fast);
1983
+ }
1984
+
1985
+ .header-action-link:hover {
1986
+ background-color: var(--color-gray-100);
1987
+ color: var(--color-primary);
1988
+ }
1989
+
1990
+ /* Search */
1991
+ .search-container {
1992
+ position: relative;
1993
+ }
1994
+
1995
+ .search-toggle {
1996
+ display: flex;
1997
+ align-items: center;
1998
+ justify-content: center;
1999
+ width: 40px;
2000
+ height: 40px;
2001
+ background: none;
2002
+ border: none;
2003
+ color: var(--color-gray-700);
2004
+ cursor: pointer;
2005
+ border-radius: var(--radius);
2006
+ transition: all var(--transition-fast);
2007
+ }
2008
+
2009
+ .search-toggle:hover {
2010
+ background-color: var(--color-gray-100);
2011
+ color: var(--color-primary);
2012
+ }
2013
+
2014
+ .search-overlay {
2015
+ position: fixed;
2016
+ top: 0;
2017
+ left: 0;
2018
+ right: 0;
2019
+ bottom: 0;
2020
+ background-color: rgba(0, 0, 0, 0.5);
2021
+ z-index: var(--z-modal);
2022
+ opacity: 0;
2023
+ visibility: hidden;
2024
+ transition: all var(--transition);
2025
+ }
2026
+
2027
+ .search-overlay.active {
2028
+ opacity: 1;
2029
+ visibility: visible;
2030
+ }
2031
+
2032
+ .search-content {
2033
+ position: absolute;
2034
+ top: 50%;
2035
+ left: 50%;
2036
+ transform: translate(-50%, -50%);
2037
+ background-color: var(--color-white);
2038
+ border-radius: var(--radius-lg);
2039
+ padding: var(--space-6);
2040
+ width: 90%;
2041
+ max-width: 500px;
2042
+ box-shadow: var(--shadow-xl);
2043
+ }
2044
+
2045
+ .search-form {
2046
+ display: flex;
2047
+ gap: var(--space-3);
2048
+ align-items: center;
2049
+ }
2050
+
2051
+ .search-input {
2052
+ flex: 1;
2053
+ padding: var(--space-3) var(--space-4);
2054
+ border: 1px solid var(--color-gray-300);
2055
+ border-radius: var(--radius);
2056
+ font-size: var(--text-base);
2057
+ outline: none;
2058
+ transition: border-color var(--transition-fast);
2059
+ }
2060
+
2061
+ .search-input:focus {
2062
+ border-color: var(--color-primary);
2063
+ box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.1);
2064
+ }
2065
+
2066
+ .search-submit {
2067
+ display: flex;
2068
+ align-items: center;
2069
+ justify-content: center;
2070
+ width: 44px;
2071
+ height: 44px;
2072
+ background-color: var(--color-primary);
2073
+ color: var(--color-white);
2074
+ border: none;
2075
+ border-radius: var(--radius);
2076
+ cursor: pointer;
2077
+ transition: background-color var(--transition-fast);
2078
+ }
2079
+
2080
+ .search-submit:hover {
2081
+ background-color: var(--color-gray-800);
2082
+ }
2083
+
2084
+ .search-close {
2085
+ position: absolute;
2086
+ top: var(--space-4);
2087
+ right: var(--space-4);
2088
+ display: flex;
2089
+ align-items: center;
2090
+ justify-content: center;
2091
+ width: 32px;
2092
+ height: 32px;
2093
+ background: none;
2094
+ border: none;
2095
+ color: var(--color-gray-500);
2096
+ cursor: pointer;
2097
+ border-radius: var(--radius);
2098
+ transition: all var(--transition-fast);
2099
+ }
2100
+
2101
+ .search-close:hover {
2102
+ background-color: var(--color-gray-100);
2103
+ color: var(--color-gray-700);
2104
+ }
2105
+
2106
+ /* Cart */
2107
+ .cart-container {
2108
+ position: relative;
2109
+ }
2110
+
2111
+ .cart-link {
2112
+ display: flex;
2113
+ align-items: center;
2114
+ gap: var(--space-2);
2115
+ padding: var(--space-2) var(--space-3);
2116
+ color: var(--color-gray-700);
2117
+ border-radius: var(--radius);
2118
+ transition: all var(--transition-fast);
2119
+ position: relative;
2120
+ }
2121
+
2122
+ .cart-link:hover {
2123
+ background-color: var(--color-gray-100);
2124
+ color: var(--color-primary);
2125
+ }
2126
+
2127
+ .cart-count {
2128
+ background-color: var(--color-primary);
2129
+ color: var(--color-white);
2130
+ font-size: var(--text-xs);
2131
+ font-weight: 600;
2132
+ padding: var(--space-1) var(--space-2);
2133
+ border-radius: var(--radius-full);
2134
+ min-width: 20px;
2135
+ text-align: center;
2136
+ line-height: 1;
2137
+ }
2138
+
2139
+ /* Mobile Menu Toggle */
2140
+ .mobile-menu-toggle {
2141
+ display: flex;
2142
+ flex-direction: column;
2143
+ gap: 4px;
2144
+ background: none;
2145
+ border: none;
2146
+ cursor: pointer;
2147
+ padding: var(--space-2);
2148
+ border-radius: var(--radius);
2149
+ transition: background-color var(--transition-fast);
2150
+ }
2151
+
2152
+ .mobile-menu-toggle:hover {
2153
+ background-color: var(--color-gray-100);
2154
+ }
2155
+
2156
+ .hamburger {
2157
+ width: 20px;
2158
+ height: 2px;
2159
+ background-color: var(--color-gray-700);
2160
+ transition: all var(--transition-fast);
2161
+ }
2162
+
2163
+ @media (min-width: 768px) {
2164
+ .mobile-menu-toggle {
2165
+ display: none;
2166
+ }
2167
+ }
2168
+
2169
+ /* Main Content */
2170
+ .main-content {
2171
+ min-height: calc(100vh - 200px);
2172
+ padding: var(--space-8) 0;
2173
+ }
2174
+
2175
+ /* Footer */
2176
+ .site-footer {
2177
+ background-color: var(--color-gray-900);
2178
+ color: var(--color-gray-300);
2179
+ margin-top: var(--space-20);
2180
+ }
2181
+
2182
+ .footer-main {
2183
+ padding: var(--space-16) 0 var(--space-12);
2184
+ }
2185
+
2186
+ .footer-content {
2187
+ display: grid;
2188
+ grid-template-columns: 1fr;
2189
+ gap: var(--space-8);
2190
+ }
2191
+
2192
+ @media (min-width: 640px) {
2193
+ .footer-content {
2194
+ grid-template-columns: repeat(2, 1fr);
2195
+ }
2196
+ }
2197
+
2198
+ @media (min-width: 1024px) {
2199
+ .footer-content {
2200
+ grid-template-columns: repeat(5, 1fr);
2201
+ }
2202
+ }
2203
+
2204
+ .footer-section {
2205
+ display: flex;
2206
+ flex-direction: column;
2207
+ }
2208
+
2209
+ .footer-title {
2210
+ font-family: var(--font-display);
2211
+ font-size: var(--text-xl);
2212
+ font-weight: 600;
2213
+ color: var(--color-white);
2214
+ margin-bottom: var(--space-4);
2215
+ }
2216
+
2217
+ .footer-heading {
2218
+ font-size: var(--text-lg);
2219
+ font-weight: 600;
2220
+ color: var(--color-white);
2221
+ margin-bottom: var(--space-4);
2222
+ }
2223
+
2224
+ .footer-description {
2225
+ color: var(--color-gray-400);
2226
+ margin-bottom: var(--space-6);
2227
+ line-height: 1.6;
2228
+ }
2229
+
2230
+ .footer-links {
2231
+ list-style: none;
2232
+ display: flex;
2233
+ flex-direction: column;
2234
+ gap: var(--space-3);
2235
+ }
2236
+
2237
+ .footer-link {
2238
+ color: var(--color-gray-400);
2239
+ transition: color var(--transition-fast);
2240
+ }
2241
+
2242
+ .footer-link:hover {
2243
+ color: var(--color-white);
2244
+ }
2245
+
2246
+ .social-links {
2247
+ display: flex;
2248
+ gap: var(--space-3);
2249
+ margin-top: var(--space-4);
2250
+ }
2251
+
2252
+ .social-link {
2253
+ display: flex;
2254
+ align-items: center;
2255
+ justify-content: center;
2256
+ width: 40px;
2257
+ height: 40px;
2258
+ background-color: var(--color-gray-800);
2259
+ color: var(--color-gray-400);
2260
+ border-radius: var(--radius);
2261
+ transition: all var(--transition-fast);
2262
+ }
2263
+
2264
+ .social-link:hover {
2265
+ background-color: var(--color-primary);
2266
+ color: var(--color-white);
2267
+ }
2268
+
2269
+ /* Newsletter */
2270
+ .newsletter-form {
2271
+ margin-top: var(--space-4);
2272
+ }
2273
+
2274
+ .newsletter-input-group {
2275
+ display: flex;
2276
+ gap: var(--space-2);
2277
+ margin-top: var(--space-3);
2278
+ }
2279
+
2280
+ .newsletter-input {
2281
+ flex: 1;
2282
+ padding: var(--space-3);
2283
+ border: 1px solid var(--color-gray-600);
2284
+ border-radius: var(--radius);
2285
+ background-color: var(--color-gray-800);
2286
+ color: var(--color-white);
2287
+ font-size: var(--text-sm);
2288
+ outline: none;
2289
+ transition: border-color var(--transition-fast);
2290
+ }
2291
+
2292
+ .newsletter-input:focus {
2293
+ border-color: var(--color-white);
2294
+ }
2295
+
2296
+ .newsletter-input::placeholder {
2297
+ color: var(--color-gray-500);
2298
+ }
2299
+
2300
+ .newsletter-button {
2301
+ padding: var(--space-3) var(--space-4);
2302
+ background-color: var(--color-primary);
2303
+ color: var(--color-white);
2304
+ border: none;
2305
+ border-radius: var(--radius);
2306
+ font-size: var(--text-sm);
2307
+ font-weight: 500;
2308
+ cursor: pointer;
2309
+ transition: background-color var(--transition-fast);
2310
+ white-space: nowrap;
2311
+ }
2312
+
2313
+ .newsletter-button:hover {
2314
+ background-color: var(--color-gray-700);
2315
+ }
2316
+
2317
+ .footer-bottom {
2318
+ border-top: 1px solid var(--color-gray-800);
2319
+ padding: var(--space-6) 0;
2320
+ }
2321
+
2322
+ .footer-bottom-content {
2323
+ display: flex;
2324
+ flex-direction: column;
2325
+ gap: var(--space-4);
2326
+ align-items: center;
2327
+ text-align: center;
2328
+ }
2329
+
2330
+ @media (min-width: 640px) {
2331
+ .footer-bottom-content {
2332
+ flex-direction: row;
2333
+ justify-content: space-between;
2334
+ text-align: left;
2335
+ }
2336
+ }
2337
+
2338
+ .footer-copyright {
2339
+ color: var(--color-gray-500);
2340
+ font-size: var(--text-sm);
2341
+ }
2342
+
2343
+ .footer-legal {
2344
+ display: flex;
2345
+ gap: var(--space-4);
2346
+ }
2347
+
2348
+ .footer-legal-link {
2349
+ color: var(--color-gray-500);
2350
+ font-size: var(--text-sm);
2351
+ transition: color var(--transition-fast);
2352
+ }
2353
+
2354
+ .footer-legal-link:hover {
2355
+ color: var(--color-white);
2356
+ }
2357
+
2358
+ .footer-powered {
2359
+ color: var(--color-gray-500);
2360
+ font-size: var(--text-sm);
2361
+ }
2362
+
2363
+ .footer-powered-link {
2364
+ color: var(--color-gray-400);
2365
+ transition: color var(--transition-fast);
2366
+ }
2367
+
2368
+ .footer-powered-link:hover {
2369
+ color: var(--color-white);
2370
+ }
2371
+
2372
+ /* Utility Classes */
2373
+ .text-center { text-align: center; }
2374
+ .text-left { text-align: left; }
2375
+ .text-right { text-align: right; }
2376
+
2377
+ .font-bold { font-weight: 700; }
2378
+ .font-semibold { font-weight: 600; }
2379
+ .font-medium { font-weight: 500; }
2380
+
2381
+ .text-primary { color: var(--color-primary); }
2382
+ .text-secondary { color: var(--color-secondary); }
2383
+ .text-gray-500 { color: var(--color-gray-500); }
2384
+ .text-gray-600 { color: var(--color-gray-600); }
2385
+
2386
+ .bg-primary { background-color: var(--color-primary); }
2387
+ .bg-gray-50 { background-color: var(--color-gray-50); }
2388
+ .bg-gray-100 { background-color: var(--color-gray-100); }
2389
+
2390
+ .rounded { border-radius: var(--radius); }
2391
+ .rounded-lg { border-radius: var(--radius-lg); }
2392
+ .rounded-full { border-radius: var(--radius-full); }
2393
+
2394
+ .shadow { box-shadow: var(--shadow); }
2395
+ .shadow-lg { box-shadow: var(--shadow-lg); }
2396
+
2397
+ .transition { transition: all var(--transition); }
2398
+ .transition-fast { transition: all var(--transition-fast); }
2399
+
2400
+ /* Comprehensive Responsive Design System */
2401
+
2402
+ /* Mobile First - Base Styles (320px+) */
2403
+ @media (max-width: 479px) {
2404
+ /* Extra Small Mobile */
2405
+ .container {
2406
+ padding: 0 var(--space-3);
2407
+ }
2408
+
2409
+ .page-title {
2410
+ font-size: var(--text-3xl);
2411
+ line-height: 1.1;
2412
+ }
2413
+
2414
+ .hero-title {
2415
+ font-size: var(--text-4xl);
2416
+ line-height: 1.1;
2417
+ }
2418
+
2419
+ .btn {
2420
+ padding: var(--space-3) var(--space-4);
2421
+ font-size: var(--text-sm);
2422
+ }
2423
+
2424
+ .product-card {
2425
+ padding: var(--space-4);
2426
+ }
2427
+
2428
+ .header-content {
2429
+ padding: var(--space-4) 0;
2430
+ }
2431
+
2432
+ .footer-content {
2433
+ padding: var(--space-8) 0;
2434
+ }
2435
+
2436
+ h1 { font-size: var(--text-3xl); }
2437
+ h2 { font-size: var(--text-2xl); }
2438
+ h3 { font-size: var(--text-xl); }
2439
+ }
2440
+
2441
+ /* Small Mobile (480px - 639px) */
2442
+ @media (min-width: 480px) and (max-width: 639px) {
2443
+ .container {
2444
+ padding: 0 var(--space-4);
2445
+ }
2446
+
2447
+ .hero-title {
2448
+ font-size: var(--text-5xl);
2449
+ }
2450
+
2451
+ .page-title {
2452
+ font-size: var(--text-4xl);
2453
+ }
2454
+
2455
+ /* Products grid responsive rules handled by main grid in components.css */
2456
+
2457
+ h1 { font-size: var(--text-4xl); }
2458
+ h2 { font-size: var(--text-3xl); }
2459
+ h3 { font-size: var(--text-2xl); }
2460
+ }
2461
+
2462
+ /* Mobile (640px - 767px) */
2463
+ @media (min-width: 640px) and (max-width: 767px) {
2464
+ .container {
2465
+ padding: 0 var(--space-6);
2466
+ }
2467
+
2468
+ .hero-title {
2469
+ font-size: var(--text-6xl);
2470
+ }
2471
+
2472
+ .page-title {
2473
+ font-size: var(--text-5xl);
2474
+ }
2475
+
2476
+ /* Products grid responsive rules handled by main grid in components.css */
2477
+
2478
+ .footer-content {
2479
+ grid-template-columns: repeat(2, 1fr);
2480
+ gap: var(--space-12);
2481
+ }
2482
+
2483
+ .footer-links-grid {
2484
+ grid-template-columns: repeat(2, 1fr);
2485
+ }
2486
+
2487
+ h1 { font-size: var(--text-5xl); }
2488
+ h2 { font-size: var(--text-4xl); }
2489
+ h3 { font-size: var(--text-3xl); }
2490
+ }
2491
+
2492
+ /* Tablet Portrait (768px - 1023px) */
2493
+ @media (min-width: 768px) and (max-width: 1023px) {
2494
+ .container {
2495
+ padding: 0 var(--space-8);
2496
+ }
2497
+
2498
+ .hero-title {
2499
+ font-size: var(--text-7xl);
2500
+ }
2501
+
2502
+ .page-title {
2503
+ font-size: var(--text-6xl);
2504
+ }
2505
+
2506
+ /* Products grid responsive rules handled by main grid in components.css */
2507
+
2508
+ .header-content {
2509
+ flex-direction: row;
2510
+ align-items: center;
2511
+ justify-content: space-between;
2512
+ }
2513
+
2514
+ .header-nav {
2515
+ display: block;
2516
+ flex: 1;
2517
+ max-width: 600px;
2518
+ margin: 0 var(--space-8);
2519
+ }
2520
+
2521
+ .mobile-menu-toggle {
2522
+ display: none;
2523
+ }
2524
+
2525
+ .footer-content {
2526
+ grid-template-columns: 2fr 3fr;
2527
+ gap: var(--space-20);
2528
+ }
2529
+
2530
+ .footer-links-grid {
2531
+ grid-template-columns: repeat(3, 1fr);
2532
+ }
2533
+
2534
+ .footer-newsletter {
2535
+ grid-column: auto;
2536
+ margin-top: 0;
2537
+ }
2538
+
2539
+ .footer-bottom-content {
2540
+ flex-direction: row;
2541
+ justify-content: space-between;
2542
+ align-items: center;
2543
+ text-align: left;
2544
+ }
2545
+
2546
+ .footer-legal {
2547
+ justify-content: flex-start;
2548
+ }
2549
+
2550
+ h1 { font-size: var(--text-6xl); }
2551
+ h2 { font-size: var(--text-5xl); }
2552
+ h3 { font-size: var(--text-4xl); }
2553
+ }
2554
+
2555
+ /* Tablet Landscape (1024px - 1279px) */
2556
+ @media (min-width: 1024px) and (max-width: 1279px) {
2557
+ .container {
2558
+ padding: 0 var(--space-12);
2559
+ }
2560
+
2561
+ .hero-title {
2562
+ font-size: var(--text-8xl);
2563
+ }
2564
+
2565
+ .page-title {
2566
+ font-size: var(--text-7xl);
2567
+ }
2568
+
2569
+ /* Products grid responsive rules handled by main grid in components.css */
2570
+
2571
+ .footer-content {
2572
+ grid-template-columns: 1fr 2fr;
2573
+ gap: var(--space-24);
2574
+ }
2575
+
2576
+ .footer-links-grid {
2577
+ grid-template-columns: repeat(4, 1fr);
2578
+ }
2579
+
2580
+ h1 { font-size: var(--text-7xl); }
2581
+ h2 { font-size: var(--text-6xl); }
2582
+ h3 { font-size: var(--text-5xl); }
2583
+ }
2584
+
2585
+ /* Desktop (1280px - 1535px) */
2586
+ @media (min-width: 1280px) and (max-width: 1535px) {
2587
+ .container {
2588
+ padding: 0 var(--space-16);
2589
+ }
2590
+
2591
+ .hero-title {
2592
+ font-size: var(--text-9xl);
2593
+ }
2594
+
2595
+ .page-title {
2596
+ font-size: var(--text-8xl);
2597
+ }
2598
+
2599
+ /* Products grid responsive rules handled by main grid in components.css */
2600
+
2601
+ h1 { font-size: var(--text-8xl); }
2602
+ h2 { font-size: var(--text-7xl); }
2603
+ h3 { font-size: var(--text-6xl); }
2604
+ }
2605
+
2606
+ /* Large Desktop (1536px+) */
2607
+ @media (min-width: 1536px) {
2608
+ .container {
2609
+ padding: 0 var(--space-20);
2610
+ }
2611
+
2612
+ .hero-title {
2613
+ font-size: var(--text-10xl);
2614
+ }
2615
+
2616
+ .page-title {
2617
+ font-size: var(--text-9xl);
2618
+ }
2619
+
2620
+ /* Products grid responsive rules handled by main grid in components.css */
2621
+
2622
+ h1 { font-size: var(--text-9xl); }
2623
+ h2 { font-size: var(--text-8xl); }
2624
+ h3 { font-size: var(--text-7xl); }
2625
+ }
2626
+
2627
+ /* Account Page Styles (moved from account.liquid to make them global) */
2628
+ .account-page {
2629
+ padding: var(--spacing-section, 2rem) 0;
2630
+ min-height: 60vh;
2631
+ }
2632
+
2633
+ .account-header {
2634
+ margin-bottom: var(--spacing-component, 2rem);
2635
+ text-align: center;
2636
+ }
2637
+
2638
+ .account-title {
2639
+ margin-bottom: var(--spacing-element, 0.5rem);
2640
+ }
2641
+
2642
+ .account-subtitle {
2643
+ color: var(--color-text-muted);
2644
+ font-size: var(--text-lg, 1.1rem);
2645
+ }
2646
+
2647
+ .account-layout {
2648
+ display: grid;
2649
+ grid-template-columns: 250px 1fr;
2650
+ gap: var(--spacing-component, 2rem);
2651
+ max-width: var(--container-width, 1200px);
2652
+ margin: 0 auto;
2653
+ }
2654
+
2655
+ .account-sidebar {
2656
+ background: var(--color-surface);
2657
+ border: 1px solid var(--color-border);
2658
+ border-radius: var(--border-radius-medium);
2659
+ padding: var(--spacing-component, 1.5rem);
2660
+ height: fit-content;
2661
+ position: sticky;
2662
+ top: var(--spacing-component, 2rem);
2663
+ }
2664
+
2665
+ .account-nav {
2666
+ display: flex;
2667
+ flex-direction: column;
2668
+ gap: var(--spacing-element, 0.5rem);
2669
+ }
2670
+
2671
+ .account-nav-link {
2672
+ padding: var(--spacing-element, 0.75rem) var(--spacing-element, 1rem);
2673
+ text-decoration: none;
2674
+ color: var(--color-text);
2675
+ border-radius: var(--border-radius-small);
2676
+ transition: all var(--transition-fast, 0.2s);
2677
+ font-weight: var(--font-weight-normal, 500);
2678
+ }
2679
+
2680
+ .account-nav-link:hover {
2681
+ background: var(--color-border);
2682
+ color: var(--color-primary);
2683
+ }
2684
+
2685
+ .account-nav-link.active {
2686
+ background: var(--color-primary);
2687
+ color: var(--color-background);
2688
+ }
2689
+
2690
+ .account-content {
2691
+ background: var(--color-surface);
2692
+ border: 1px solid var(--color-border);
2693
+ border-radius: var(--border-radius-medium);
2694
+ padding: var(--spacing-component, 2rem);
2695
+ }
2696
+
2697
+ .account-section {
2698
+ display: none;
2699
+ }
2700
+
2701
+ .account-section.active {
2702
+ display: block;
2703
+ }
2704
+
2705
+ .account-section-header {
2706
+ display: flex;
2707
+ justify-content: space-between;
2708
+ align-items: center;
2709
+ margin-bottom: var(--spacing-component, 2rem);
2710
+ padding-bottom: var(--spacing-element, 1rem);
2711
+ border-bottom: 2px solid var(--color-border);
2712
+ }
2713
+
2714
+ .account-section-title {
2715
+ font-size: var(--text-xl, 1.5rem);
2716
+ font-weight: var(--font-weight-bold, 600);
2717
+ margin: 0;
2718
+ }
2719
+
2720
+ /* Dashboard Styles */
2721
+ .account-dashboard {
2722
+ display: flex;
2723
+ flex-direction: column;
2724
+ gap: 2rem;
2725
+ }
2726
+
2727
+ .dashboard-stats {
2728
+ display: grid;
2729
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
2730
+ gap: var(--spacing-component, 1.5rem);
2731
+ }
2732
+
2733
+ .dashboard-stat {
2734
+ display: flex;
2735
+ align-items: center;
2736
+ gap: var(--spacing-element, 1rem);
2737
+ padding: var(--spacing-component, 1.5rem);
2738
+ background: var(--color-background);
2739
+ border: 1px solid var(--color-border);
2740
+ border-radius: var(--border-radius-medium);
2741
+ }
2742
+
2743
+ .stat-icon {
2744
+ width: 48px;
2745
+ height: 48px;
2746
+ display: flex;
2747
+ align-items: center;
2748
+ justify-content: center;
2749
+ background: var(--color-primary);
2750
+ color: var(--color-background);
2751
+ border-radius: var(--border-radius-small);
2752
+ }
2753
+
2754
+ .stat-content {
2755
+ flex: 1;
2756
+ }
2757
+
2758
+ .stat-value {
2759
+ font-size: var(--text-2xl, 1.75rem);
2760
+ font-weight: var(--font-weight-bold, 700);
2761
+ margin: 0 0 var(--spacing-element, 0.25rem) 0;
2762
+ color: var(--color-text);
2763
+ }
2764
+
2765
+ .stat-label {
2766
+ font-size: var(--text-sm, 0.875rem);
2767
+ color: var(--color-text-muted);
2768
+ margin: 0;
2769
+ }
2770
+
2771
+ .dashboard-recent-orders {
2772
+ margin-top: 1rem;
2773
+ }
2774
+
2775
+ .dashboard-subtitle {
2776
+ font-size: var(--text-xl, 1.25rem);
2777
+ font-weight: var(--font-weight-bold, 600);
2778
+ margin-bottom: var(--spacing-element, 1rem);
2779
+ }
2780
+
2781
+ /* Orders Styles */
2782
+ .orders-list {
2783
+ display: flex;
2784
+ flex-direction: column;
2785
+ gap: var(--spacing-element, 1rem);
2786
+ }
2787
+
2788
+ .order-item {
2789
+ display: grid;
2790
+ grid-template-columns: 2fr 1fr 1fr 1fr;
2791
+ gap: var(--spacing-element, 1rem);
2792
+ padding: var(--spacing-component, 1.5rem);
2793
+ background: var(--color-background);
2794
+ border: 1px solid var(--color-border);
2795
+ border-radius: var(--border-radius-medium);
2796
+ align-items: center;
2797
+ }
2798
+
2799
+ .order-item-info {
2800
+ display: flex;
2801
+ flex-direction: column;
2802
+ gap: 0.5rem;
2803
+ }
2804
+
2805
+ .order-item-number {
2806
+ font-size: var(--text-lg, 1.1rem);
2807
+ font-weight: var(--font-weight-bold, 600);
2808
+ margin: 0;
2809
+ }
2810
+
2811
+ .order-item-date,
2812
+ .order-item-items {
2813
+ font-size: var(--text-sm, 0.875rem);
2814
+ color: var(--color-text-muted);
2815
+ margin: 0;
2816
+ }
2817
+
2818
+ .order-item-status {
2819
+ display: flex;
2820
+ align-items: center;
2821
+ }
2822
+
2823
+ .status-badge {
2824
+ padding: var(--spacing-element, 0.375rem) var(--spacing-element, 0.75rem);
2825
+ border-radius: var(--border-radius-small);
2826
+ font-size: var(--text-sm, 1.2rem);
2827
+ font-weight: var(--font-weight-normal, 500);
2828
+ text-transform: capitalize;
2829
+ }
2830
+
2831
+ .status-badge.status-pending {
2832
+ background: var(--color-warning-light);
2833
+ color: var(--color-warning-dark);
2834
+ }
2835
+
2836
+ .status-badge.status-processing {
2837
+ background: var(--color-info-light);
2838
+ color: var(--color-info-dark);
2839
+ }
2840
+
2841
+ .status-badge.status-shipped,
2842
+ .status-badge.status-delivered {
2843
+ background: var(--color-success-light);
2844
+ color: var(--color-success-dark);
2845
+ }
2846
+
2847
+ .status-badge.status-cancelled {
2848
+ background: var(--color-error-light);
2849
+ color: var(--color-error-dark);
2850
+ }
2851
+
2852
+ .order-item-total {
2853
+ font-size: var(--text-lg, 1.1rem);
2854
+ font-weight: var(--font-weight-bold, 600);
2855
+ color: var(--color-text);
2856
+ }
2857
+
2858
+ /* Addresses Styles */
2859
+ .addresses-list {
2860
+ display: grid;
2861
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
2862
+ gap: var(--spacing-component, 1.5rem);
2863
+ }
2864
+
2865
+ .address-card {
2866
+ padding: var(--spacing-component, 1.5rem);
2867
+ background: var(--color-background);
2868
+ border: 1px solid var(--color-border);
2869
+ border-radius: var(--border-radius-medium);
2870
+ display: flex;
2871
+ flex-direction: column;
2872
+ gap: var(--spacing-element, 1rem);
2873
+ }
2874
+
2875
+ .address-card-content {
2876
+ flex: 1;
2877
+ }
2878
+
2879
+ .address-card-title {
2880
+ font-size: var(--text-lg, 1.1rem);
2881
+ font-weight: var(--font-weight-bold, 600);
2882
+ margin: 0 0 var(--spacing-element, 0.75rem) 0;
2883
+ }
2884
+
2885
+ .address-card-text {
2886
+ font-size: var(--text-sm, 0.875rem);
2887
+ color: var(--color-text-muted);
2888
+ margin: var(--spacing-element, 0.25rem) 0;
2889
+ line-height: var(--line-height-base, 1.5);
2890
+ }
2891
+
2892
+ .address-card-actions {
2893
+ display: flex;
2894
+ gap: var(--spacing-element, 0.5rem);
2895
+ padding-top: var(--spacing-element, 1rem);
2896
+ border-top: 1px solid var(--color-border);
2897
+ }
2898
+
2899
+ /* Profile Form Styles */
2900
+ .profile-form {
2901
+ max-width: 600px;
2902
+ }
2903
+
2904
+ .form-grid {
2905
+ display: grid;
2906
+ grid-template-columns: 1fr 1fr;
2907
+ gap: var(--spacing-component, 1.5rem);
2908
+ margin-bottom: var(--spacing-component, 1.5rem);
2909
+ }
2910
+
2911
+ .form-group {
2912
+ display: flex;
2913
+ flex-direction: column;
2914
+ gap: var(--spacing-element, 0.5rem);
2915
+ }
2916
+
2917
+ .form-group-full {
2918
+ grid-column: 1 / -1;
2919
+ }
2920
+
2921
+ .form-label {
2922
+ font-weight: var(--font-weight-normal, 500);
2923
+ font-size: var(--text-sm, 0.875rem);
2924
+ color: var(--color-text);
2925
+ }
2926
+
2927
+ .form-input {
2928
+ padding: var(--spacing-element, 0.75rem);
2929
+ border: 1px solid var(--color-border);
2930
+ border-radius: var(--border-radius-small);
2931
+ font-size: var(--font-size-base, 1rem);
2932
+ transition: border-color var(--transition-fast, 0.2s);
2933
+ }
2934
+
2935
+ .form-input:focus {
2936
+ outline: none;
2937
+ border-color: var(--color-primary);
2938
+ }
2939
+
2940
+ .form-input[readonly] {
2941
+ background: var(--color-border);
2942
+ cursor: not-allowed;
2943
+ }
2944
+
2945
+ .form-actions {
2946
+ display: flex;
2947
+ gap: var(--spacing-element, 1rem);
2948
+ }
2949
+
2950
+ /* Wishlist Styles */
2951
+ .wishlist-products {
2952
+ margin-top: var(--spacing-element, 1rem);
2953
+ }
2954
+
2955
+ .products-grid {
2956
+ display: grid;
2957
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
2958
+ gap: var(--spacing-component, 1.5rem);
2959
+ }
2960
+
2961
+ /* Loyalty Program Styles */
2962
+ .loyalty-program {
2963
+ display: flex;
2964
+ flex-direction: column;
2965
+ gap: var(--spacing-component, 2rem);
2966
+ }
2967
+
2968
+ .loyalty-points {
2969
+ display: flex;
2970
+ justify-content: center;
2971
+ }
2972
+
2973
+ .loyalty-points-display {
2974
+ text-align: center;
2975
+ padding: var(--spacing-component, 2rem);
2976
+ background: var(--color-background);
2977
+ border: 2px solid var(--color-primary);
2978
+ border-radius: var(--border-radius-large);
2979
+ min-width: 300px;
2980
+ }
2981
+
2982
+ .loyalty-points-value {
2983
+ font-size: var(--text-5xl, 3rem);
2984
+ font-weight: var(--font-weight-bold, 700);
2985
+ color: var(--color-primary);
2986
+ margin: 0;
2987
+ }
2988
+
2989
+ .loyalty-points-label {
2990
+ font-size: var(--text-lg, 1.1rem);
2991
+ color: var(--color-text-muted);
2992
+ margin: var(--spacing-element, 0.5rem) 0 0 0;
2993
+ }
2994
+
2995
+ .loyalty-history {
2996
+ margin-top: var(--spacing-element, 1rem);
2997
+ }
2998
+
2999
+ .loyalty-subtitle {
3000
+ font-size: var(--text-xl, 1.25rem);
3001
+ font-weight: var(--font-weight-bold, 600);
3002
+ margin-bottom: var(--spacing-element, 1rem);
3003
+ }
3004
+
3005
+ .loyalty-history-list {
3006
+ display: flex;
3007
+ flex-direction: column;
3008
+ gap: var(--spacing-element, 1rem);
3009
+ }
3010
+
3011
+ .loyalty-transaction {
3012
+ display: flex;
3013
+ justify-content: space-between;
3014
+ align-items: center;
3015
+ padding: var(--spacing-element, 1rem);
3016
+ background: var(--color-background);
3017
+ border: 1px solid var(--color-border);
3018
+ border-radius: var(--border-radius-medium);
3019
+ }
3020
+
3021
+ .transaction-info {
3022
+ flex: 1;
3023
+ }
3024
+
3025
+ .transaction-description {
3026
+ font-weight: var(--font-weight-normal, 500);
3027
+ margin: 0 0 var(--spacing-element, 0.25rem) 0;
3028
+ }
3029
+
3030
+ .transaction-date {
3031
+ font-size: var(--text-sm, 0.875rem);
3032
+ color: var(--color-text-muted);
3033
+ margin: 0;
3034
+ }
3035
+
3036
+ .transaction-points {
3037
+ font-size: var(--text-lg, 1.1rem);
3038
+ font-weight: var(--font-weight-bold, 600);
3039
+ }
3040
+
3041
+ .transaction-points.earned {
3042
+ color: var(--color-success);
3043
+ }
3044
+
3045
+ .transaction-points.redeemed {
3046
+ color: var(--color-error);
3047
+ }
3048
+
3049
+ /* Empty State */
3050
+ .empty-state {
3051
+ text-align: center;
3052
+ padding: var(--spacing-section, 3rem) var(--spacing-element, 1rem);
3053
+ color: var(--color-text-muted);
3054
+ }
3055
+
3056
+ .empty-state p {
3057
+ margin-bottom: var(--spacing-element, 1rem);
3058
+ font-size: var(--text-lg, 1.1rem);
3059
+ }
3060
+
3061
+ /* Buttons (account specific overrides/extensions) */
3062
+ .btn {
3063
+ display: inline-block;
3064
+ padding: var(--button-padding-vertical, 0.75rem) var(--button-padding-tal, 1.5rem);
3065
+ border: none;
3066
+ border-radius: var(--border-radius-small);
3067
+ font-size: var(--font-size-base, 1rem);
3068
+ font-weight: var(--font-weight-normal, 500);
3069
+ text-decoration: none;
3070
+ text-align: center;
3071
+ cursor: pointer;
3072
+ transition: all var(--button-transition-speed, 0.2s);
3073
+ }
3074
+
3075
+ .btn-primary {
3076
+ background: var(--color-primary);
3077
+ color: var(--color-background);
3078
+ }
3079
+
3080
+ .btn-primary:hover {
3081
+ background: var(--color-primary-dark);
3082
+ }
3083
+
3084
+ .btn-outline {
3085
+ background: transparent;
3086
+ color: var(--color-primary);
3087
+ border: 1px solid var(--color-primary);
3088
+ }
3089
+
3090
+ .btn-outline:hover {
3091
+ background: var(--color-primary);
3092
+ color: var(--color-background);
3093
+ }
3094
+
3095
+ .btn-sm {
3096
+ padding: var(--spacing-element, 0.5rem) var(--spacing-element, 1rem);
3097
+ font-size: var(--text-sm, 0.875rem);
3098
+ }
3099
+
3100
+ /* Responsive account layout */
3101
+ @media (max-width: 768px) {
3102
+ .account-layout {
3103
+ grid-template-columns: 1fr;
3104
+ }
3105
+
3106
+ .account-sidebar {
3107
+ position: static;
3108
+ }
3109
+
3110
+ .account-nav {
3111
+ flex-direction: row;
3112
+ overflow-x: auto;
3113
+ }
3114
+
3115
+ .order-item {
3116
+ grid-template-columns: 1fr;
3117
+ gap: 1rem;
3118
+ }
3119
+
3120
+ .form-grid {
3121
+ grid-template-columns: 1fr;
3122
+ }
3123
+ }
3124
+
3125
+ /* Touch Device Optimizations */
3126
+ @media (hover: none) and (pointer: coarse) {
3127
+ /* Touch-friendly button sizes */
3128
+ .btn {
3129
+ min-height: 44px;
3130
+ padding: var(--space-4) var(--space-6);
3131
+ }
3132
+
3133
+ .mobile-menu-toggle {
3134
+ min-height: 44px;
3135
+ min-width: 44px;
3136
+ }
3137
+
3138
+ .header-action-link {
3139
+ min-height: 44px;
3140
+ min-width: 44px;
3141
+ }
3142
+
3143
+ /* Remove hover effects on touch devices */
3144
+ .product-card:hover,
3145
+ .collection-card:hover,
3146
+ .blog-card:hover {
3147
+ transform: none;
3148
+ box-shadow: var(--shadow-sm);
3149
+ }
3150
+
3151
+ .btn:hover {
3152
+ transform: none;
3153
+ box-shadow: var(--shadow-sm);
3154
+ }
3155
+ }
3156
+
3157
+ /* High DPI Display Optimizations */
3158
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
3159
+ .logo-image,
3160
+ .product-image,
3161
+ .hero-image {
3162
+ image-rendering: -webkit-optimize-contrast;
3163
+ image-rendering: crisp-edges;
3164
+ }
3165
+ }
3166
+
3167
+ /* Landscape Mobile Optimizations */
3168
+ @media (max-height: 500px) and (orientation: landscape) {
3169
+ .hero-section {
3170
+ padding: var(--space-8) 0;
3171
+ }
3172
+
3173
+ .hero-title {
3174
+ font-size: var(--text-4xl);
3175
+ }
3176
+
3177
+ .section {
3178
+ padding: var(--space-12) 0;
3179
+ }
3180
+
3181
+ .section-lg {
3182
+ padding: var(--space-16) 0;
3183
+ }
3184
+ }
3185
+
3186
+ /* Performance Optimizations */
3187
+
3188
+ /* Critical CSS - Above the fold styles */
3189
+ .critical-css {
3190
+ /* Essential styles for initial render */
3191
+ .site-header {
3192
+ position: sticky;
3193
+ top: 0;
3194
+ z-index: var(--z-header);
3195
+ background: var(--color-background);
3196
+ backdrop-filter: blur(10px);
3197
+ }
3198
+
3199
+ .hero-section {
3200
+ min-height: 60vh;
3201
+ display: flex;
3202
+ align-items: center;
3203
+ }
3204
+
3205
+ .container {
3206
+ max-width: var(--container-xl);
3207
+ margin: 0 auto;
3208
+ padding: 0 var(--space-6);
3209
+ }
3210
+ }
3211
+
3212
+ /* CSS Containment for Performance */
3213
+ .product-card,
3214
+ .collection-card,
3215
+ .blog-card {
3216
+ contain: layout style paint;
3217
+ }
3218
+
3219
+ .products-grid {
3220
+ contain: layout;
3221
+ }
3222
+
3223
+ .hero-section {
3224
+ contain: layout style;
3225
+ }
3226
+
3227
+ /* Will-change optimizations */
3228
+ .btn:hover,
3229
+ .product-card:hover,
3230
+ .collection-card:hover,
3231
+ .blog-card:hover {
3232
+ will-change: transform;
3233
+ }
3234
+
3235
+ [data-parallax] {
3236
+ will-change: transform;
3237
+ }
3238
+
3239
+ .animate-in {
3240
+ will-change: transform, opacity;
3241
+ }
3242
+
3243
+ /* Reduce motion for performance */
3244
+ @media (prefers-reduced-motion: reduce) {
3245
+ *,
3246
+ *::before,
3247
+ *::after {
3248
+ animation-duration: 0.01ms !important;
3249
+ animation-iteration-count: 1 !important;
3250
+ transition-duration: 0.01ms !important;
3251
+ scroll-behavior: auto !important;
3252
+ }
3253
+ }
3254
+
3255
+ /* GPU Acceleration */
3256
+ .gpu-accelerated {
3257
+ transform: translateZ(0);
3258
+ backface-visibility: hidden;
3259
+ perspective: 1000px;
3260
+ }
3261
+
3262
+ /* Lazy Loading Optimizations */
3263
+ .lazy {
3264
+ opacity: 0;
3265
+ transition: opacity 0.3s ease;
3266
+ }
3267
+
3268
+ .lazy.loaded {
3269
+ opacity: 1;
3270
+ }
3271
+
3272
+ /* Image Optimization */
3273
+ img {
3274
+ max-width: 100%;
3275
+ height: auto;
3276
+ loading: lazy;
3277
+ }
3278
+
3279
+ .hero-image,
3280
+ .product-image {
3281
+ object-fit: cover;
3282
+ object-position: center;
3283
+ }
3284
+
3285
+ /* Font Loading Optimization */
3286
+ @font-face {
3287
+ font-family: 'Inter';
3288
+ font-style: normal;
3289
+ font-weight: 400 700;
3290
+ font-display: swap;
3291
+ src: url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
3292
+ }
3293
+
3294
+ @font-face {
3295
+ font-family: 'Playfair Display';
3296
+ font-style: normal;
3297
+ font-weight: 400 700;
3298
+ font-display: swap;
3299
+ src: url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&display=swap');
3300
+ }
3301
+
3302
+ /* Accessibility Improvements */
3303
+
3304
+ /* Focus Management */
3305
+ *:focus {
3306
+ outline: 2px solid var(--color-accent);
3307
+ outline-offset: 2px;
3308
+ }
3309
+
3310
+ .btn:focus,
3311
+ input:focus,
3312
+ textarea:focus,
3313
+ select:focus {
3314
+ outline: 2px solid var(--color-accent);
3315
+ outline-offset: 2px;
3316
+ box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.1);
3317
+ }
3318
+
3319
+ /* Skip Links */
3320
+ .skip-link {
3321
+ position: absolute;
3322
+ top: -40px;
3323
+ left: var(--spacing-element, 6px);
3324
+ background: var(--color-primary);
3325
+ color: var(--color-background);
3326
+ padding: var(--spacing-element, 8px);
3327
+ text-decoration: none;
3328
+ z-index: var(--z-skip);
3329
+ }
3330
+
3331
+ .skip-link:focus {
3332
+ top: var(--spacing-element, 6px);
3333
+ }
3334
+
3335
+ /* Screen Reader Only */
3336
+ .sr-only {
3337
+ position: absolute;
3338
+ width: 1px;
3339
+ height: 1px;
3340
+ padding: 0;
3341
+ margin: -1px;
3342
+ overflow: hidden;
3343
+ clip: rect(0, 0, 0, 0);
3344
+ white-space: nowrap;
3345
+ border: 0;
3346
+ }
3347
+
3348
+ /* High Contrast Mode Support */
3349
+ @media (prefers-contrast: high) {
3350
+ .btn {
3351
+ border: 2px solid currentColor;
3352
+ }
3353
+
3354
+ .product-card,
3355
+ .collection-card,
3356
+ .blog-card {
3357
+ border: 2px solid var(--color-gray-300);
3358
+ }
3359
+
3360
+ .header-nav a,
3361
+ .footer-link {
3362
+ text-decoration: underline;
3363
+ }
3364
+ }
3365
+
3366
+ /* Color Contrast Improvements */
3367
+ .text-muted {
3368
+ color: var(--color-gray-600);
3369
+ }
3370
+
3371
+ .text-success {
3372
+ color: var(--color-success);
3373
+ }
3374
+
3375
+ .text-error {
3376
+ color: var(--color-error);
3377
+ }
3378
+
3379
+ .text-warning {
3380
+ color: var(--color-warning);
3381
+ }
3382
+
3383
+ /* Keyboard Navigation */
3384
+ .nav-link:focus,
3385
+ .btn:focus,
3386
+ .product-action-btn:focus {
3387
+ outline: 2px solid var(--color-accent);
3388
+ outline-offset: 2px;
3389
+ }
3390
+
3391
+ /* ARIA Support */
3392
+ [aria-expanded="true"] {
3393
+ background-color: var(--color-accent);
3394
+ color: var(--color-background);
3395
+ }
3396
+
3397
+ [aria-hidden="true"] {
3398
+ display: none;
3399
+ }
3400
+
3401
+ /* Cross-Browser Compatibility */
3402
+
3403
+ /* Firefox Specific */
3404
+ @-moz-document url-prefix() {
3405
+ .btn {
3406
+ -moz-appearance: none;
3407
+ }
3408
+
3409
+ input,
3410
+ textarea,
3411
+ select {
3412
+ -moz-appearance: none;
3413
+ }
3414
+ }
3415
+
3416
+ /* Safari Specific */
3417
+ @supports (-webkit-appearance: none) {
3418
+ .btn {
3419
+ -webkit-appearance: none;
3420
+ }
3421
+
3422
+ input,
3423
+ textarea,
3424
+ select {
3425
+ -webkit-appearance: none;
3426
+ }
3427
+ }
3428
+
3429
+ /* Internet Explorer Fallbacks */
3430
+ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
3431
+ .products-grid {
3432
+ display: flex;
3433
+ flex-wrap: wrap;
3434
+ }
3435
+
3436
+ .product-card {
3437
+ flex: 1 1 300px;
3438
+ margin: var(--space-4);
3439
+ }
3440
+
3441
+ .hero-content {
3442
+ display: flex;
3443
+ flex-direction: column;
3444
+ }
3445
+ }
3446
+
3447
+ /* Edge Legacy Support */
3448
+ @supports (-ms-ime-align: auto) {
3449
+ .container {
3450
+ max-width: 1200px;
3451
+ }
3452
+
3453
+ .products-grid {
3454
+ display: flex;
3455
+ flex-wrap: wrap;
3456
+ }
3457
+ }
3458
+
3459
+ /* Print Styles */
3460
+ @media print {
3461
+ .site-header,
3462
+ .site-footer,
3463
+ .mobile-menu-toggle,
3464
+ .search-container,
3465
+ .cart-container {
3466
+ display: none;
3467
+ }
3468
+
3469
+ .main-content {
3470
+ padding: 0;
3471
+ }
3472
+
3473
+ body {
3474
+ font-size: 12pt;
3475
+ line-height: 1.4;
3476
+ }
3477
+
3478
+ h1, h2, h3, h4, h5, h6 {
3479
+ page-break-after: avoid;
3480
+ }
3481
+
3482
+ /* Print-specific optimizations */
3483
+ * {
3484
+ background: transparent !important;
3485
+ color: #000 !important;
3486
+ box-shadow: none !important;
3487
+ text-shadow: none !important;
3488
+ }
3489
+
3490
+ .product-card,
3491
+ .collection-card {
3492
+ border: 1px solid #000;
3493
+ page-break-inside: avoid;
3494
+ }
3495
+
3496
+ p, li {
3497
+ orphans: 3;
3498
+ widows: 3;
3499
+ }
3500
+ }