@gemboss/gem-framework 0.6.0 → 0.9.2

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 (57) hide show
  1. package/README.md +69 -1
  2. package/dist/SOURCE.json +2 -2
  3. package/dist/gem-framework.css +206 -147
  4. package/dist/gem-runtime.js +101 -16
  5. package/dist/index.js +637 -179
  6. package/dist/plugins/before_after.d.ts +9 -0
  7. package/dist/plugins/before_after.js +37 -0
  8. package/dist/plugins/carousel.d.ts +9 -0
  9. package/dist/plugins/carousel.js +49 -0
  10. package/dist/plugins/cart-drawer.d.ts +9 -0
  11. package/dist/plugins/cart-drawer.js +69 -0
  12. package/dist/plugins/context-adapter.d.ts +9 -0
  13. package/dist/plugins/context-adapter.js +17 -0
  14. package/dist/plugins/countdown.d.ts +9 -0
  15. package/dist/plugins/countdown.js +164 -0
  16. package/dist/plugins/disclosure.d.ts +9 -0
  17. package/dist/plugins/disclosure.js +40 -0
  18. package/dist/plugins/hero-slideshow.d.ts +9 -0
  19. package/dist/plugins/hero-slideshow.js +57 -0
  20. package/dist/plugins/localization.d.ts +9 -0
  21. package/dist/plugins/localization.js +37 -0
  22. package/dist/plugins/media-gallery.d.ts +9 -0
  23. package/dist/plugins/media-gallery.js +57 -0
  24. package/dist/plugins/mobile-menu.d.ts +9 -0
  25. package/dist/plugins/mobile-menu.js +51 -0
  26. package/dist/plugins/offer-engine.d.ts +9 -0
  27. package/dist/plugins/offer-engine.js +57 -0
  28. package/dist/plugins/predictive-search.d.ts +9 -0
  29. package/dist/plugins/predictive-search.js +77 -0
  30. package/dist/plugins/promo-popup.d.ts +9 -0
  31. package/dist/plugins/promo-popup.js +117 -0
  32. package/dist/plugins/quantity-input.d.ts +9 -0
  33. package/dist/plugins/quantity-input.js +44 -0
  34. package/dist/plugins/quick-view.d.ts +9 -0
  35. package/dist/plugins/quick-view.js +69 -0
  36. package/dist/plugins/recently-viewed.d.ts +9 -0
  37. package/dist/plugins/recently-viewed.js +71 -0
  38. package/dist/plugins/reveal-on-scroll.d.ts +9 -0
  39. package/dist/plugins/reveal-on-scroll.js +44 -0
  40. package/dist/plugins/runtime-slot-loader.d.ts +9 -0
  41. package/dist/plugins/runtime-slot-loader.js +29 -0
  42. package/dist/plugins/seasonal-effects.d.ts +9 -0
  43. package/dist/plugins/seasonal-effects.js +17 -0
  44. package/dist/plugins/sticky-atc.d.ts +9 -0
  45. package/dist/plugins/sticky-atc.js +43 -0
  46. package/dist/plugins/tabs.d.ts +9 -0
  47. package/dist/plugins/tabs.js +50 -0
  48. package/dist/plugins/variant-selects.d.ts +9 -0
  49. package/dist/plugins/variant-selects.js +70 -0
  50. package/dist/popup-shell.css +91 -0
  51. package/dist/primitives.css +1430 -0
  52. package/dist/runtime-core.d.ts +51 -0
  53. package/dist/runtime-core.js +176 -0
  54. package/dist/section-gate.js +315 -86
  55. package/dist/sections.css +1116 -0
  56. package/dist/tokens.css +67 -0
  57. package/package.json +21 -1
@@ -0,0 +1,1430 @@
1
+ *, *::before, *::after {
2
+ box-sizing: border-box;
3
+ }
4
+ html {
5
+ scroll-behavior: smooth;
6
+ text-size-adjust: 100%;
7
+ }
8
+ body {
9
+ margin: 0;
10
+ font-family: var(--gem-font-body);
11
+ font-size: calc(1rem * var(--gem-typography-body-scale, 1));
12
+ color: var(--gem-color-text);
13
+ background: var(--gem-color-background);
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+ main {
18
+ display: block;
19
+ }
20
+ img, picture, video, canvas, svg {
21
+ display: block;
22
+ max-width: 100%;
23
+ }
24
+ button, input, textarea, select {
25
+ font: inherit;
26
+ }
27
+ button, [type='button'], [type='submit'] {
28
+ cursor: pointer;
29
+ }
30
+ a {
31
+ color: inherit;
32
+ }
33
+ :where(.gem-section, [data-gem-section-id]) {
34
+ --gem-focus-ring: 2px solid var(--gem-color-accent);
35
+ }
36
+ :focus-visible {
37
+ outline: var(--gem-focus-ring, 2px solid var(--gem-color-accent));
38
+ outline-offset: var(--gem-focus-offset, 3px);
39
+ }
40
+ :where([data-gem-section-background='accent'], [data-gem-section-background='dark']) :focus-visible:focus-visible {
41
+ box-shadow: 0 0 0 calc(var(--gem-focus-offset, 3px) + 4px) var(--gem-band-bg);
42
+ }
43
+ .gem-skip-to-content-link:focus {
44
+ position: fixed;
45
+ inset-block-start: var(--gem-space-sm);
46
+ inset-inline-start: var(--gem-space-sm);
47
+ z-index: 100;
48
+ width: auto !important;
49
+ height: auto !important;
50
+ clip: auto !important;
51
+ white-space: normal !important;
52
+ padding: var(--gem-space-sm) var(--gem-space-md);
53
+ border-radius: var(--gem-radius-md);
54
+ background: var(--gem-color-accent);
55
+ color: var(--gem-color-accent-text);
56
+ }
57
+ .gem-u-visually-hidden {
58
+ position: absolute !important;
59
+ width: 1px !important;
60
+ height: 1px !important;
61
+ overflow: hidden !important;
62
+ clip: rect(0, 0, 0, 0) !important;
63
+ white-space: nowrap !important;
64
+ }
65
+
66
+ .gem-container {
67
+ width: min(var(--gem-layout-page, 1180px), calc(100% - var(--gem-layout-gutter, 32px)));
68
+ margin-inline: auto;
69
+ }
70
+ .gem-stack {
71
+ display: grid;
72
+ gap: var(--gem-space-md);
73
+ }
74
+ .gem-cluster {
75
+ display: flex;
76
+ flex-wrap: wrap;
77
+ align-items: center;
78
+ gap: var(--gem-space-sm);
79
+ }
80
+ .gem-grid {
81
+ display: grid;
82
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
83
+ column-gap: var(--gem-grid-column-gap, var(--gem-space-md));
84
+ row-gap: var(--gem-grid-row-gap, var(--gem-space-md));
85
+ }
86
+ .gem-row { column-gap: var(--gem-row-gap, var(--gem-space-lg)); row-gap: var(--gem-row-gap-y, var(--gem-row-gap, var(--gem-space-lg))); }
87
+ .gem-button {
88
+ border: 0;
89
+ appearance: none;
90
+ cursor: pointer;
91
+ display: inline-flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ min-height: var(--gem-component-input-height, 44px);
95
+ border: var(--gem-button-border-width, 1px) solid var(--gem-color-border);
96
+ border-radius: var(--gem-radius-md);
97
+ padding: var(--gem-component-button-padding-block, 12px) var(--gem-component-button-padding-inline, 18px);
98
+ font-weight: 700;
99
+ text-decoration: none;
100
+ transition: background var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease), color var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease);
101
+ }
102
+ .gem-button:disabled, .gem-button[aria-disabled='true'] {
103
+ cursor: not-allowed;
104
+ opacity: 0.55;
105
+ }
106
+ .gem-input:disabled, .gem-select:disabled, .gem-textarea:disabled, .gem-quantity-input__button:disabled {
107
+ cursor: not-allowed;
108
+ opacity: 0.6;
109
+ background: color-mix(in srgb, var(--gem-color-text) 6%, var(--gem-color-surface));
110
+ }
111
+ .gem-button--primary {
112
+ border-color: var(--gem-color-accent);
113
+ background: var(--gem-color-accent);
114
+ color: var(--gem-color-accent-text, var(--gem-color-surface));
115
+ }
116
+ .gem-button--secondary {
117
+ background: var(--gem-color-surface);
118
+ color: var(--gem-color-text);
119
+ }
120
+ .gem-button--soft {
121
+ background: color-mix(in srgb, var(--gem-color-accent) 12%, var(--gem-color-surface));
122
+ color: var(--gem-color-text);
123
+ }
124
+ .gem-button--link {
125
+ min-height: 0;
126
+ min-width: 0;
127
+ padding: 0;
128
+ border: 0;
129
+ background: transparent;
130
+ color: inherit;
131
+ text-decoration: underline;
132
+ text-underline-offset: 0.2em;
133
+ font-weight: inherit;
134
+ }
135
+ [data-gem-button-style='outline'] .gem-button:not(.gem-button--secondary),
136
+ [data-gem-button-style='outline'] .gem-button--primary {
137
+ background: transparent;
138
+ color: var(--gem-color-accent);
139
+ }
140
+ [data-gem-button-style='soft'] .gem-button:not(.gem-button--secondary),
141
+ [data-gem-button-style='soft'] .gem-button--primary {
142
+ background: color-mix(in srgb, var(--gem-color-accent) 12%, var(--gem-color-surface));
143
+ border-color: transparent;
144
+ color: var(--gem-color-text);
145
+ }
146
+ .gem-card {
147
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
148
+ border-radius: var(--gem-card-radius, var(--gem-radius-md));
149
+ background: var(--gem-card-background, var(--gem-color-surface));
150
+ padding: var(--gem-component-card-padding, var(--gem-space-md));
151
+ box-shadow: var(--gem-shadow-sm, none);
152
+ text-align: var(--gem-card-text-alignment, left);
153
+ }
154
+ .gem-card > :first-child { margin-top: 0; }
155
+ .gem-card > :last-child { margin-bottom: 0; }
156
+ .gem-media {
157
+ display: block;
158
+ position: relative;
159
+ overflow: hidden;
160
+ border: var(--gem-media-border-width, 0) solid color-mix(in srgb, var(--gem-color-text) 12%, transparent);
161
+ border-radius: var(--gem-media-radius, var(--gem-radius-md));
162
+ background: color-mix(in srgb, var(--gem-color-text) 8%, var(--gem-color-background));
163
+ box-shadow: 0 8px 24px rgb(0 0 0 / var(--gem-media-shadow-opacity, 0));
164
+ }
165
+ .gem-media > img, .gem-media > video {
166
+ display: block;
167
+ width: 100%;
168
+ height: 100%;
169
+ object-fit: cover;
170
+ }
171
+ .gem-badge {
172
+ display: inline-flex;
173
+ align-items: center;
174
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
175
+ border-radius: var(--gem-radius-pill, 999px);
176
+ padding: var(--gem-space-xs) var(--gem-space-sm);
177
+ font-size: 0.8125rem;
178
+ font-weight: 650;
179
+ }
180
+ .gem-accordion {
181
+ display: grid;
182
+ gap: var(--gem-space-sm);
183
+ }
184
+ .gem-accordion details {
185
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
186
+ border-radius: var(--gem-radius-md);
187
+ background: var(--gem-color-surface);
188
+ overflow: hidden;
189
+ }
190
+ .gem-accordion summary {
191
+ cursor: pointer;
192
+ padding: var(--gem-space-md);
193
+ font-weight: 650;
194
+ }
195
+ .gem-divider {
196
+ border: 0;
197
+ border-top: var(--gem-border-subtle, 1px solid var(--gem-color-border));
198
+ margin-block: var(--gem-space-lg);
199
+ }
200
+ .gem-form-field {
201
+ display: grid;
202
+ gap: var(--gem-space-xs);
203
+ }
204
+ .gem-input, .gem-select, .gem-textarea {
205
+ width: 100%;
206
+ min-height: var(--gem-component-input-height, 44px);
207
+ border: var(--gem-input-border-width, 1px) solid var(--gem-color-border);
208
+ border-radius: var(--gem-input-radius, var(--gem-radius-md));
209
+ background: var(--gem-color-surface);
210
+ color: var(--gem-color-text);
211
+ padding: 0 var(--gem-space-md);
212
+ }
213
+ .gem-field-join {
214
+ display: flex;
215
+ align-items: stretch;
216
+ min-width: 0;
217
+ }
218
+ .gem-field-join > :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden) {
219
+ min-height: var(--gem-component-input-height, 44px);
220
+ margin: 0;
221
+ }
222
+ .gem-field-join > :is(.gem-input, .gem-select, .gem-form-field) {
223
+ flex: 1 1 10rem;
224
+ width: auto;
225
+ min-width: min(10rem, 50%);
226
+ }
227
+ .gem-field-join > .gem-form-field > :is(.gem-input, .gem-select) {
228
+ width: 100%;
229
+ height: 100%;
230
+ min-height: var(--gem-component-input-height, 44px);
231
+ }
232
+ .gem-field-join > :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden):not(.gem-input, .gem-select, .gem-form-field) {
233
+ flex: 0 1 auto;
234
+ min-width: var(--gem-component-input-height, 44px);
235
+ white-space: normal;
236
+ overflow-wrap: anywhere;
237
+ }
238
+ .gem-field-join > :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden):not(:nth-child(1 of :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden))), .gem-field-join > .gem-form-field:not(:nth-child(1 of :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden))) > :is(.gem-input, .gem-select) {
239
+ border-start-start-radius: 0;
240
+ border-end-start-radius: 0;
241
+ }
242
+ .gem-field-join > :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden):not(:nth-child(1 of :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden))) {
243
+ margin-inline-start: calc(-1 * var(--gem-input-border-width, 1px));
244
+ }
245
+ .gem-field-join > :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden):not(:nth-last-child(1 of :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden))), .gem-field-join > .gem-form-field:not(:nth-last-child(1 of :not([type="hidden"]):not([hidden]):not(.gem-u-visually-hidden))) > :is(.gem-input, .gem-select) {
246
+ border-start-end-radius: 0;
247
+ border-end-end-radius: 0;
248
+ }
249
+ .gem-field-join > :focus-within {
250
+ position: relative;
251
+ z-index: 1;
252
+ }
253
+ .gem-textarea {
254
+ min-height: calc(var(--gem-component-input-height, 44px) * 2);
255
+ padding-block: var(--gem-space-sm);
256
+ resize: vertical;
257
+ }
258
+ .gem-checkbox {
259
+ inline-size: var(--gem-space-lg);
260
+ block-size: var(--gem-space-lg);
261
+ accent-color: var(--gem-color-accent);
262
+ }
263
+ [data-gem-form-set] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)) {
264
+ min-height: var(--gem-input-height);
265
+ height: auto;
266
+ border: var(--gem-input-border-width) solid var(--gem-input-border-color);
267
+ border-radius: var(--gem-input-radius);
268
+ background: var(--gem-input-bg);
269
+ padding-inline: var(--gem-input-padding-inline);
270
+ font-size: var(--gem-input-font-size);
271
+ }
272
+ [data-gem-form-set] textarea:is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)) {
273
+ min-height: calc(var(--gem-input-height) * 2);
274
+ border-radius: min(var(--gem-input-radius), 12px);
275
+ padding-block: var(--gem-space-sm);
276
+ }
277
+ [data-gem-form-set] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)):focus-visible {
278
+ outline: var(--gem-input-focus-ring, var(--gem-focus-ring, 2px solid var(--gem-color-accent)));
279
+ outline-offset: var(--gem-focus-offset, 2px);
280
+ }
281
+ [data-gem-form-set][data-gem-field-shape="underline"] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)) {
282
+ border-width: 0 0 var(--gem-input-border-width);
283
+ border-radius: 0;
284
+ background: transparent;
285
+ color: inherit;
286
+ }
287
+ [data-gem-form-set][data-gem-field-shape="underline"] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input))::placeholder {
288
+ color: color-mix(in srgb, currentColor 70%, transparent);
289
+ }
290
+ [data-gem-form-set][data-gem-field-shape="underline"] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)) option {
291
+ color: CanvasText;
292
+ background: Canvas;
293
+ }
294
+ [data-gem-form-set][data-gem-field-shape="filled"] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)) {
295
+ border-width: 0 0 var(--gem-input-border-width);
296
+ border-end-start-radius: 0;
297
+ border-end-end-radius: 0;
298
+ }
299
+ [data-gem-form-set] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)):disabled {
300
+ background: color-mix(in srgb, currentColor 6%, var(--gem-input-bg));
301
+ }
302
+ [data-gem-form-set][data-gem-field-shape="underline"] :is(.gem-input, .gem-select, .gem-textarea, .gem-shell-footer__newsletter .gem-input):where(:not(.gem-search-form .gem-input)):disabled {
303
+ background: color-mix(in srgb, currentColor 6%, transparent);
304
+ }
305
+ [data-gem-form-set] .gem-search-form .gem-input {
306
+ --gem-input-border-width: initial;
307
+ --gem-input-radius: initial;
308
+ }
309
+ [data-gem-form-set] .gem-checkbox {
310
+ inline-size: var(--gem-checkbox-size);
311
+ block-size: var(--gem-checkbox-size);
312
+ accent-color: var(--gem-checkbox-accent);
313
+ }
314
+ .gem-submit {
315
+ cursor: pointer;
316
+ }
317
+ .gem-newsletter-form {
318
+ display: flex;
319
+ flex-wrap: wrap;
320
+ gap: var(--gem-space-sm);
321
+ align-items: end;
322
+ }
323
+ .gem-newsletter-form .gem-form-field {
324
+ flex: 1 1 16rem;
325
+ }
326
+ .gem-heading {
327
+ margin: 0;
328
+ font-family: var(--gem-font-heading);
329
+ color: var(--gem-color-text);
330
+ }
331
+ .gem-text {
332
+ margin: 0;
333
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
334
+ line-height: 1.6;
335
+ }
336
+ .gem-richtext {
337
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
338
+ line-height: 1.6;
339
+ }
340
+ .gem-icon {
341
+ display: inline-flex;
342
+ align-items: center;
343
+ justify-content: center;
344
+ inline-size: var(--gem-icon-size, var(--gem-space-lg));
345
+ block-size: var(--gem-icon-size, var(--gem-space-lg));
346
+ color: var(--gem-color-accent);
347
+ }
348
+ .gem-icon--sm { --gem-icon-size: 16px; }
349
+ .gem-icon--md { --gem-icon-size: 20px; }
350
+ .gem-icon--lg { --gem-icon-size: 24px; }
351
+ .gem-icon--current { color: currentColor; }
352
+ .gem-icon--chevron { transition: rotate var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease); }
353
+ :is(button, summary, [role='button'])[aria-expanded='true'] > .gem-icon--chevron, details[open] > summary > .gem-icon--chevron { rotate: 180deg; }
354
+ @media (prefers-reduced-motion: reduce) { .gem-icon--chevron { transition: none; } }
355
+ .gem-icon-list {
356
+ display: grid;
357
+ gap: var(--gem-space-sm);
358
+ list-style: none;
359
+ margin: 0;
360
+ padding: 0;
361
+ }
362
+ .gem-icon-list__item {
363
+ display: grid;
364
+ grid-template-columns: auto minmax(0, 1fr);
365
+ gap: var(--gem-space-sm);
366
+ align-items: start;
367
+ }
368
+ .gem-video {
369
+ display: block;
370
+ inline-size: 100%;
371
+ aspect-ratio: 16 / 9;
372
+ border: 0;
373
+ border-radius: var(--gem-radius-md);
374
+ background: color-mix(in srgb, var(--gem-color-text) 8%, var(--gem-color-background));
375
+ }
376
+ .gem-marquee {
377
+ overflow: hidden;
378
+ border-block: var(--gem-border-subtle, 1px solid var(--gem-color-border));
379
+ }
380
+ .gem-marquee__track {
381
+ display: flex;
382
+ gap: var(--gem-space-lg);
383
+ min-width: max-content;
384
+ animation: gem-marquee-scroll var(--gem-marquee-duration, 40s) linear infinite;
385
+ will-change: transform;
386
+ }
387
+ .gem-marquee:hover .gem-marquee__track {
388
+ animation-play-state: paused;
389
+ }
390
+ .gem-marquee[data-gem-marquee-reverse] .gem-marquee__track {
391
+ animation-direction: reverse;
392
+ }
393
+ .gem-carousel {
394
+ display: grid;
395
+ gap: var(--gem-space-md);
396
+ }
397
+ .gem-carousel__viewport {
398
+ overflow-x: auto;
399
+ scroll-snap-type: x mandatory;
400
+ scrollbar-width: none;
401
+ }
402
+ .gem-carousel__viewport::-webkit-scrollbar {
403
+ display: none;
404
+ }
405
+ .gem-carousel__track {
406
+ display: grid;
407
+ grid-auto-flow: column;
408
+ grid-auto-columns: minmax(min(20rem, 84vw), 1fr);
409
+ gap: var(--gem-space-md);
410
+ }
411
+ .gem-carousel__slide {
412
+ scroll-snap-align: start;
413
+ }
414
+ .gem-carousel__controls {
415
+ display: flex;
416
+ flex-wrap: wrap;
417
+ gap: var(--gem-space-sm);
418
+ align-items: center;
419
+ justify-content: flex-end;
420
+ }
421
+ .gem-price {
422
+ display: flex;
423
+ flex-wrap: wrap;
424
+ gap: var(--gem-space-xs);
425
+ align-items: baseline;
426
+ font-weight: 750;
427
+ color: var(--gem-color-text);
428
+ }
429
+ .gem-price--on-sale .gem-price__regular {
430
+ color: var(--gem-color-accent);
431
+ }
432
+ .gem-price__compare {
433
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 60%, transparent));
434
+ font-weight: 500;
435
+ }
436
+ .gem-price__unit {
437
+ flex-basis: 100%;
438
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 60%, transparent));
439
+ font-size: 0.8125rem;
440
+ font-weight: 500;
441
+ }
442
+ .gem-review-count {
443
+ font-size: var(--gem-text-sm, 0.8125rem);
444
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
445
+ }
446
+ .gem-discount {
447
+ font-size: var(--gem-text-sm, 0.8125rem);
448
+ font-weight: 700;
449
+ color: var(--gem-color-accent);
450
+ }
451
+ .gem-pull-quote {
452
+ font-family: var(--gem-font-heading);
453
+ font-size: var(--gem-h5, 1.25rem);
454
+ line-height: 1.4;
455
+ border-inline-start: 2px solid var(--gem-color-accent);
456
+ padding-inline-start: var(--gem-space-md);
457
+ margin: var(--gem-space-md) 0;
458
+ }
459
+ .gem-byline {
460
+ font-size: var(--gem-text-sm, 0.8125rem);
461
+ font-weight: 600;
462
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
463
+ }
464
+ .gem-disclaimer {
465
+ font-size: 0.6875rem;
466
+ line-height: 1.5;
467
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 60%, transparent));
468
+ }
469
+ .gem-list {
470
+ list-style: none;
471
+ margin: 0;
472
+ padding: 0;
473
+ display: grid;
474
+ gap: var(--gem-space-xs);
475
+ }
476
+ .gem-list__item {
477
+ position: relative;
478
+ padding-inline-start: 1.4em;
479
+ line-height: 1.5;
480
+ }
481
+ .gem-list__item::before {
482
+ content: '';
483
+ position: absolute;
484
+ inset-inline-start: 0;
485
+ top: 0.55em;
486
+ width: 0.42em;
487
+ height: 0.42em;
488
+ border-radius: var(--gem-radius-pill, 999px);
489
+ background: var(--gem-color-accent);
490
+ }
491
+ .gem-subhead {
492
+ font-family: var(--gem-font-heading);
493
+ font-size: var(--gem-h6, 1.0625rem);
494
+ font-weight: 700;
495
+ margin-block: var(--gem-space-sm) var(--gem-space-xs);
496
+ }
497
+ .gem-rating, .gem-proof {
498
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
499
+ }
500
+ .gem-stars {
501
+ --gem-stars-total: 5;
502
+ --gem-stars-value: 5;
503
+ position: relative;
504
+ display: inline-block;
505
+ line-height: 1;
506
+ font-size: var(--gem-text-sm, 0.8125rem);
507
+ letter-spacing: 0.1em;
508
+ color: var(--gem-color-border);
509
+ }
510
+ .gem-stars__base, .gem-stars__fill { display: block; white-space: nowrap; }
511
+ .gem-stars__fill {
512
+ position: absolute;
513
+ inset: 0;
514
+ width: calc(var(--gem-stars-value) / var(--gem-stars-total) * 100%);
515
+ overflow: hidden;
516
+ color: var(--gem-color-accent);
517
+ }
518
+ .gem-marquee { overflow: hidden; }
519
+ .gem-marquee__viewport { display: flex; overflow: hidden; }
520
+ .gem-marquee__track {
521
+ flex: 0 0 auto;
522
+ min-width: 100%;
523
+ display: flex;
524
+ align-items: center;
525
+ justify-content: space-around;
526
+ gap: var(--gem-space-lg);
527
+ white-space: nowrap;
528
+ animation: gem-marquee var(--gem-marquee-duration, 24s) linear infinite;
529
+ }
530
+ .gem-marquee__viewport:hover .gem-marquee__track { animation-play-state: paused; }
531
+ .gem-marquee--reverse .gem-marquee__track { animation-direction: reverse; }
532
+ @keyframes gem-marquee { from { transform: translateX(0); } to { transform: translateX(-100%); } }
533
+ @media (prefers-reduced-motion: reduce) {
534
+ .gem-marquee__track { animation: none; }
535
+ .gem-marquee__viewport { overflow-x: auto; }
536
+ }
537
+ .gem-product-card {
538
+ display: grid;
539
+ grid-template-rows: auto minmax(0, 1fr);
540
+ gap: var(--gem-space-sm);
541
+ color: var(--gem-color-text);
542
+ }
543
+ .gem-product-card--sold-out {
544
+ opacity: 0.78;
545
+ }
546
+ .gem-product-card__media > img, .gem-media > img {
547
+ position: absolute;
548
+ inset: 0;
549
+ display: block;
550
+ width: 100%;
551
+ height: 100%;
552
+ object-fit: cover;
553
+ }
554
+ .gem-product-card__media {
555
+ position: relative;
556
+ aspect-ratio: 1 / 1;
557
+ }
558
+ .gem-product-card__media.card__media {
559
+ position: relative;
560
+ inset: auto;
561
+ }
562
+ .gem-product-card__media .gem-product-card__badges {
563
+ position: absolute;
564
+ inset-block-start: var(--gem-space-sm);
565
+ inset-inline-start: var(--gem-space-sm);
566
+ z-index: 1;
567
+ }
568
+ .gem-product-card__placeholder {
569
+ display: grid;
570
+ min-height: 100%;
571
+ place-items: center;
572
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 64%, transparent));
573
+ }
574
+ .gem-product-card__content {
575
+ display: grid;
576
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
577
+ gap: var(--gem-space-xs);
578
+ }
579
+ .gem-product-card__title {
580
+ margin: 0;
581
+ font-family: var(--gem-font-heading);
582
+ font-weight: 650;
583
+ }
584
+ .gem-product-card__title a {
585
+ color: inherit;
586
+ text-decoration: none;
587
+ }
588
+ .gem-product-card__title a:hover {
589
+ text-decoration: underline;
590
+ text-underline-offset: 0.18em;
591
+ }
592
+ .gem-product-card__price {
593
+ display: flex;
594
+ flex-wrap: wrap;
595
+ gap: var(--gem-space-xs);
596
+ align-items: baseline;
597
+ }
598
+ .gem-product-card__badges, .gem-product-card__quick-actions {
599
+ display: flex;
600
+ flex-wrap: wrap;
601
+ gap: var(--gem-space-xs);
602
+ align-items: center;
603
+ }
604
+ .gem-product-card__quick-actions {
605
+ align-self: end;
606
+ }
607
+ .gem-product-card__quick-actions .gem-button {
608
+ min-width: min(100%, 8rem);
609
+ }
610
+ .gem-product-card__secondary-image {
611
+ position: absolute;
612
+ inset: 0;
613
+ opacity: 0;
614
+ transition: opacity var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease);
615
+ }
616
+ .gem-product-card:hover .gem-product-card__secondary-image {
617
+ opacity: 1;
618
+ }
619
+ .gem-product-card__vendor, .gem-product-card__rating {
620
+ margin: 0;
621
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
622
+ font-size: 0.8125rem;
623
+ }
624
+ .gem-product-card__swatches {
625
+ display: flex;
626
+ flex-wrap: wrap;
627
+ gap: var(--gem-space-xs);
628
+ }
629
+ .gem-product-media-gallery__thumb[aria-current='true'], .gem-product-media-gallery__thumb[data-gem-media-active='true'] {
630
+ border-color: var(--gem-color-accent);
631
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--gem-color-accent) 28%, transparent);
632
+ }
633
+ .gem-product-media-gallery__thumb {
634
+ cursor: pointer;
635
+ }
636
+ .gem-product-meta {
637
+ display: flex;
638
+ flex-wrap: wrap;
639
+ gap: var(--gem-space-xs) var(--gem-space-md);
640
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
641
+ font-size: 0.875rem;
642
+ }
643
+ .gem-product-meta__item {
644
+ display: inline-flex;
645
+ gap: var(--gem-space-xs);
646
+ align-items: baseline;
647
+ }
648
+ .gem-product-meta__label {
649
+ font-weight: 650;
650
+ color: var(--gem-color-text);
651
+ }
652
+ .gem-product-meta__value {
653
+ color: inherit;
654
+ }
655
+ .gem-product-main__summary {
656
+ display: grid;
657
+ gap: var(--gem-space-md);
658
+ max-width: 48rem;
659
+ }
660
+ .gem-product-main[data-gem-product-main-layout='dawn-main'] .gem-product-main__inner {
661
+ display: grid;
662
+ grid-template-columns: minmax(0, 1fr) minmax(22rem, 0.72fr);
663
+ align-items: start;
664
+ gap: var(--gem-space-xl);
665
+ }
666
+ .gem-product-main[data-gem-product-main-layout='dawn-main'] .gem-product-main__summary {
667
+ position: sticky;
668
+ top: calc(var(--gem-component-header-height, 72px) + var(--gem-space-md));
669
+ }
670
+ .gem-product-main__media {
671
+ min-width: 0;
672
+ }
673
+ .gem-product-main__caption {
674
+ margin: 0;
675
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
676
+ }
677
+ .gem-product-main__collapsible {
678
+ border-block-start: var(--gem-border-subtle, 1px solid var(--gem-color-border));
679
+ padding-block: var(--gem-space-md);
680
+ }
681
+ .gem-product-main__collapsible:last-of-type {
682
+ border-block-end: var(--gem-border-subtle, 1px solid var(--gem-color-border));
683
+ }
684
+ .gem-product-main__collapsible summary {
685
+ cursor: pointer;
686
+ font-weight: 650;
687
+ }
688
+ .gem-product-main__price {
689
+ display: flex;
690
+ flex-wrap: wrap;
691
+ gap: var(--gem-space-sm);
692
+ align-items: baseline;
693
+ font-size: 1.25rem;
694
+ }
695
+ .gem-product-main__price s {
696
+ color: var(--gem-color-muted);
697
+ font-weight: 500;
698
+ }
699
+ .gem-product-main__availability {
700
+ margin: 0;
701
+ font-weight: 650;
702
+ }
703
+ .gem-product-main__availability--in-stock {
704
+ color: var(--gem-color-success);
705
+ }
706
+ .gem-product-main__availability--sold-out {
707
+ color: var(--gem-color-danger, #b42318);
708
+ }
709
+ .gem-product-main__variant-fallback {
710
+ max-width: 36rem;
711
+ margin: 0;
712
+ padding: 0;
713
+ border: 0;
714
+ display: flex;
715
+ flex-wrap: wrap;
716
+ gap: 0.8rem;
717
+ }
718
+ .gem-product-main__variant-fallback legend {
719
+ width: 100%;
720
+ padding: 0;
721
+ margin: 0 0 0.3rem;
722
+ font-size: 1.4rem;
723
+ line-height: 1.8;
724
+ }
725
+ .gem-product-main__variant-pill {
726
+ display: inline-flex;
727
+ align-items: center;
728
+ justify-content: center;
729
+ min-height: 3.6rem;
730
+ min-width: 9.2rem;
731
+ border: 1px solid rgb(18 18 18 / 75%);
732
+ border-radius: 999px;
733
+ padding: 0.8rem 1.8rem;
734
+ font-size: 1.3rem;
735
+ line-height: 1;
736
+ }
737
+ .gem-product-main__variant-pill--selected {
738
+ background: rgb(18 18 18);
739
+ border-color: rgb(18 18 18);
740
+ color: white;
741
+ }
742
+ .gem-product-main__variant-pill--disabled {
743
+ color: rgb(18 18 18 / 55%);
744
+ text-decoration: line-through;
745
+ }
746
+ .gem-product-main__form {
747
+ display: grid;
748
+ gap: var(--gem-space-md);
749
+ max-width: 32rem;
750
+ }
751
+ .gem-buy-buttons {
752
+ display: grid;
753
+ gap: var(--gem-space-md);
754
+ max-width: 32rem;
755
+ }
756
+ .gem-buy-buttons__variant, .gem-buy-buttons__quantity {
757
+ display: grid;
758
+ gap: var(--gem-space-xs);
759
+ }
760
+ .gem-buy-buttons__submit {
761
+ width: 100%;
762
+ }
763
+ .gem-buy-buttons__variant-status {
764
+ margin: 0;
765
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
766
+ font-size: 0.875rem;
767
+ }
768
+ .gem-buy-buttons__error { color: var(--gem-color-danger, #b42318); }
769
+ .gem-product-main__assurance {
770
+ display: grid;
771
+ gap: var(--gem-space-xs);
772
+ max-width: 32rem;
773
+ padding: var(--gem-space-md);
774
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
775
+ border-radius: var(--gem-radius-md);
776
+ background: var(--gem-color-surface);
777
+ }
778
+ .gem-product-main__assurance-item {
779
+ display: grid;
780
+ gap: 0.125rem;
781
+ margin: 0;
782
+ }
783
+ .gem-product-main__assurance-item strong {
784
+ font-size: 0.9375rem;
785
+ }
786
+ .gem-product-main__assurance-item span {
787
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 70%, transparent));
788
+ font-size: 0.875rem;
789
+ }
790
+ .gem-product-main__share {
791
+ justify-self: start;
792
+ color: var(--gem-color-text);
793
+ font-weight: 650;
794
+ text-underline-offset: 0.25em;
795
+ }
796
+ .gem-product-main__quantity {
797
+ max-width: 10rem;
798
+ }
799
+ .gem-product-main__submit {
800
+ width: 100%;
801
+ }
802
+ .gem-variant-picker {
803
+ display: grid;
804
+ gap: var(--gem-space-sm);
805
+ }
806
+ .gem-swatch {
807
+ inline-size: 2rem;
808
+ block-size: 2rem;
809
+ border: var(--gem-variant-pill-border-width, 1px) solid var(--gem-color-border);
810
+ border-radius: var(--gem-variant-pill-radius, var(--gem-radius-pill, 999px));
811
+ background: var(--gem-color-surface);
812
+ }
813
+ .gem-quantity-selector {
814
+ display: inline-grid;
815
+ grid-template-columns: var(--gem-component-input-height, 44px) minmax(3rem, 1fr) var(--gem-component-input-height, 44px);
816
+ min-height: var(--gem-component-input-height, 44px);
817
+ border: var(--gem-input-border-width, 1px) solid var(--gem-color-border);
818
+ border-radius: var(--gem-radius-md);
819
+ overflow: hidden;
820
+ }
821
+ .gem-quantity-input {
822
+ display: inline-grid;
823
+ grid-template-columns: var(--gem-component-input-height, 44px) minmax(3rem, 1fr) var(--gem-component-input-height, 44px);
824
+ width: min(100%, 10rem);
825
+ min-height: var(--gem-component-input-height, 44px);
826
+ border: var(--gem-input-border-width, 1px) solid var(--gem-color-border);
827
+ border-radius: var(--gem-radius-md);
828
+ overflow: hidden;
829
+ }
830
+ .gem-quantity-input__button, .gem-quantity-input__field {
831
+ min-width: 0;
832
+ border: 0;
833
+ background: var(--gem-color-surface);
834
+ color: var(--gem-color-text);
835
+ text-align: center;
836
+ }
837
+ .gem-quantity-input__button {
838
+ font-weight: 750;
839
+ }
840
+ .gem-cart-main__form, .gem-cart-main__items, .gem-cart-footer__inner, .gem-cart-footer__blocks {
841
+ display: grid;
842
+ gap: var(--gem-space-md);
843
+ }
844
+ .gem-cart-footer__inner {
845
+ justify-items: end;
846
+ }
847
+ .gem-cart-footer__note, .gem-cart-footer__blocks {
848
+ inline-size: min(100%, 36rem);
849
+ }
850
+ .gem-cart-footer__subtotal, .gem-cart-footer__buttons {
851
+ display: grid;
852
+ gap: var(--gem-space-sm);
853
+ justify-items: stretch;
854
+ }
855
+ .gem-cart-footer__total-label, .gem-cart-footer__total-value {
856
+ margin: 0;
857
+ }
858
+ .gem-cart-footer__total-value {
859
+ font-size: 1.25rem;
860
+ font-weight: 760;
861
+ }
862
+ .gem-cart-footer__tax-note {
863
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 64%, transparent));
864
+ }
865
+ .gem-cart-line-item {
866
+ display: grid;
867
+ grid-template-columns: minmax(5rem, 7rem) minmax(0, 1fr) auto auto;
868
+ gap: var(--gem-space-md);
869
+ align-items: start;
870
+ }
871
+ .gem-cart-line-item__title, .gem-cart-line-item__remove {
872
+ color: inherit;
873
+ }
874
+ .gem-cart-line-item__details {
875
+ display: grid;
876
+ gap: var(--gem-space-xs);
877
+ }
878
+ .gem-cart-line-item__media {
879
+ aspect-ratio: 1 / 1;
880
+ min-block-size: 5rem;
881
+ }
882
+ .gem-cart-line-item__meta, .gem-cart-line-item__price {
883
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 68%, transparent));
884
+ }
885
+ .gem-main-login .gem-section__inner, .gem-main-register .gem-section__inner, .gem-main-activate-account .gem-section__inner, .gem-main-reset-password .gem-section__inner {
886
+ max-width: min(100%, 44rem);
887
+ }
888
+ .gem-main-login form, .gem-main-register form, .gem-main-activate-account form, .gem-main-reset-password form {
889
+ gap: var(--gem-space-md);
890
+ }
891
+ .gem-main-addresses form {
892
+ align-self: start;
893
+ }
894
+ .gem-rich-text__content {
895
+ display: grid;
896
+ justify-items: center;
897
+ gap: var(--gem-space-md);
898
+ max-width: 72rem;
899
+ margin-inline: auto;
900
+ text-align: center;
901
+ }
902
+ .gem-rich-text[data-gem-rich-text-alignment='left'] .gem-rich-text__content {
903
+ justify-items: start;
904
+ text-align: left;
905
+ }
906
+ .gem-rich-text[data-gem-rich-text-alignment='right'] .gem-rich-text__content {
907
+ justify-items: end;
908
+ text-align: right;
909
+ }
910
+ .gem-rich-text__blocks {
911
+ display: grid;
912
+ gap: var(--gem-space-md);
913
+ width: 100%;
914
+ }
915
+ .gem-customer-card, .gem-customer-address, .gem-customer-order-status, .gem-customer-order-address {
916
+ display: grid;
917
+ gap: var(--gem-space-xs);
918
+ }
919
+ .gem-customer-card a, .gem-customer-address a {
920
+ color: inherit;
921
+ text-underline-offset: 0.18em;
922
+ }
923
+ .gem-customer-order-history {
924
+ display: grid;
925
+ gap: var(--gem-space-sm);
926
+ }
927
+ .gem-customer-order-history h2 {
928
+ margin: 0;
929
+ font-family: var(--gem-font-heading);
930
+ font-size: clamp(1.25rem, 2vw, 1.75rem);
931
+ }
932
+ .gem-customer-order-link {
933
+ display: grid;
934
+ grid-template-columns: minmax(0, 1fr) auto;
935
+ gap: var(--gem-space-sm);
936
+ align-items: center;
937
+ color: inherit;
938
+ text-decoration: none;
939
+ }
940
+ .gem-customer-order-link:hover strong {
941
+ text-decoration: underline;
942
+ text-underline-offset: 0.18em;
943
+ }
944
+ .gem-customer-order-line {
945
+ grid-template-columns: minmax(0, 1fr) auto;
946
+ }
947
+ .gem-customer-order-total {
948
+ margin: 0;
949
+ justify-self: end;
950
+ font-weight: 750;
951
+ }
952
+ .gem-pagination {
953
+ display: flex;
954
+ flex-wrap: wrap;
955
+ gap: var(--gem-space-sm);
956
+ align-items: center;
957
+ justify-content: center;
958
+ }
959
+ .gem-pagination a, .gem-pagination span {
960
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
961
+ border-radius: var(--gem-radius-md);
962
+ padding: var(--gem-space-sm) var(--gem-space-md);
963
+ text-decoration: none;
964
+ }
965
+ .gem-pagination [aria-current='page'], .gem-state-active {
966
+ border-color: var(--gem-color-accent);
967
+ background: var(--gem-color-accent);
968
+ color: var(--gem-color-accent-text, var(--gem-color-surface));
969
+ }
970
+ .gem-state-empty, .gem-state-loading, .gem-state-error, .gem-state-success {
971
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
972
+ border-radius: var(--gem-radius-md);
973
+ background: var(--gem-color-surface);
974
+ padding: var(--gem-space-md);
975
+ }
976
+ .gem-state-empty, .gem-state-loading {
977
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 68%, transparent));
978
+ }
979
+ .gem-state-error {
980
+ border-color: color-mix(in srgb, var(--gem-color-danger, #b42318) 42%, var(--gem-color-border));
981
+ color: var(--gem-color-danger, #b42318);
982
+ background: color-mix(in srgb, var(--gem-color-danger, #b42318) 7%, var(--gem-color-surface));
983
+ }
984
+ .gem-state-success {
985
+ border-color: color-mix(in srgb, var(--gem-color-success, #027a48) 42%, var(--gem-color-border));
986
+ color: var(--gem-color-success, #027a48);
987
+ background: color-mix(in srgb, var(--gem-color-success, #027a48) 7%, var(--gem-color-surface));
988
+ }
989
+ .gem-state-loading {
990
+ display: inline-flex;
991
+ align-items: center;
992
+ gap: var(--gem-space-sm);
993
+ }
994
+ .gem-state-loading::before {
995
+ content: '';
996
+ inline-size: 1rem;
997
+ block-size: 1rem;
998
+ border: 2px solid currentColor;
999
+ border-right-color: transparent;
1000
+ border-radius: 999px;
1001
+ animation: gem-spin 0.8s linear infinite;
1002
+ }
1003
+ @keyframes gem-spin {
1004
+ to { transform: rotate(360deg); }
1005
+ }
1006
+ @media (prefers-reduced-motion: reduce) {
1007
+ .gem-state-loading::before { animation: none; }
1008
+ }
1009
+ .gem-sticky-atc {
1010
+ position: sticky;
1011
+ inset-block-end: 0;
1012
+ z-index: 30;
1013
+ border-top: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1014
+ background: var(--gem-color-surface);
1015
+ padding: var(--gem-space-sm) var(--gem-space-md);
1016
+ transition: transform 160ms ease, opacity 160ms ease;
1017
+ }
1018
+ .gem-sticky-atc[data-gem-sticky-atc-state='hidden'] {
1019
+ transform: translateY(100%);
1020
+ opacity: 0;
1021
+ pointer-events: none;
1022
+ }
1023
+ .gem-sticky-atc[data-gem-sticky-atc-state='visible'] {
1024
+ transform: translateY(0);
1025
+ opacity: 1;
1026
+ }
1027
+ .gem-reveal, [data-gem-reveal] { transition-property: opacity, transform, filter; transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); transition-duration: var(--gem-el-motion-duration, 600ms); transition-delay: var(--gem-el-motion-delay, 0ms); }
1028
+ [data-gem-reveal][data-gem-reveal-state='ready'] { opacity: 0; transform: translateY(24px); }
1029
+ [data-gem-reveal][data-gem-reveal-state='in'] { opacity: 1; transform: none; filter: none; }
1030
+ [data-gem-reveal='fade'][data-gem-reveal-state='ready'] { opacity: 0; transform: none; }
1031
+ [data-gem-reveal='rise'][data-gem-reveal-state='ready'] { opacity: 0; transform: translateY(24px); }
1032
+ [data-gem-reveal='zoom'][data-gem-reveal-state='ready'] { opacity: 0; transform: scale(0.94); }
1033
+ [data-gem-reveal='blur'][data-gem-reveal-state='ready'] { opacity: 0; filter: blur(10px); transform: none; }
1034
+ @media (prefers-reduced-motion: reduce) { [data-gem-reveal] { opacity: 1 !important; transform: none !important; filter: none !important; transition: none; } }
1035
+ @keyframes gem-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(calc(-1 * var(--gem-ambient-amp, 7px))); } }
1036
+ @keyframes gem-sheen { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
1037
+ @keyframes gem-marquee-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
1038
+ [data-gem-ambient='float'] { animation: gem-float var(--gem-ambient-mid, 7s) var(--gem-ease-soft, ease-in-out) infinite; will-change: transform; }
1039
+ [data-gem-ambient='sheen'] { animation: gem-sheen var(--gem-ambient-slow, 9s) var(--gem-ease-soft, ease-in-out) infinite; will-change: opacity; }
1040
+ [data-gem-ambient='marquee'] { animation: gem-marquee-scroll var(--gem-ambient-fast, 5.5s) linear infinite; will-change: transform; }
1041
+ [data-gem-offscreen] { animation-play-state: paused; }
1042
+ @media (prefers-reduced-motion: reduce) {
1043
+ [data-gem-ambient] { --gem-ambient-amp: 2px; animation-duration: 12s; }
1044
+ [data-gem-reveal] { transition: none; opacity: 1; transform: none; }
1045
+ .gem-marquee__track { animation-duration: calc(var(--gem-marquee-duration, 40s) * 2.5); }
1046
+ }
1047
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top], :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom] { position: relative; overflow: clip; overflow-clip-margin: var(--gem-divider-height, 48px); }
1048
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='wave']::after, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='slope']::after, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='spikes']::after, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='arch']::after, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='blob']::after, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='wave']::before, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='slope']::before, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='spikes']::before, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='arch']::before, :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='blob']::before { content: ''; position: absolute; left: 0; right: 0; z-index: 1; pointer-events: none; height: var(--gem-divider-height, 48px); background: var(--gem-section-bg, var(--gem-color-background)); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100% 100%; mask-size: 100% 100%; }
1049
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom]::after { top: 100%; }
1050
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top]::before { bottom: 100%; transform: scaleY(-1); }
1051
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='wave']::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 C80 9 70 -1 50 4 C30 9 20 1 0 4 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 C80 9 70 -1 50 4 C30 9 20 1 0 4 Z'/%3E%3C/svg%3E"); }
1052
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='wave']::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 C80 9 70 -1 50 4 C30 9 20 1 0 4 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 C80 9 70 -1 50 4 C30 9 20 1 0 4 Z'/%3E%3C/svg%3E"); }
1053
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='slope']::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V10 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V10 Z'/%3E%3C/svg%3E"); }
1054
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='slope']::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V10 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V10 Z'/%3E%3C/svg%3E"); }
1055
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='spikes']::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 L95 10 L90 3 L85 10 L80 3 L75 10 L70 3 L65 10 L60 3 L55 10 L50 3 L45 10 L40 3 L35 10 L30 3 L25 10 L20 3 L15 10 L10 3 L5 10 L0 3 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 L95 10 L90 3 L85 10 L80 3 L75 10 L70 3 L65 10 L60 3 L55 10 L50 3 L45 10 L40 3 L35 10 L30 3 L25 10 L20 3 L15 10 L10 3 L5 10 L0 3 Z'/%3E%3C/svg%3E"); }
1056
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='spikes']::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 L95 10 L90 3 L85 10 L80 3 L75 10 L70 3 L65 10 L60 3 L55 10 L50 3 L45 10 L40 3 L35 10 L30 3 L25 10 L20 3 L15 10 L10 3 L5 10 L0 3 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V3 L95 10 L90 3 L85 10 L80 3 L75 10 L70 3 L65 10 L60 3 L55 10 L50 3 L45 10 L40 3 L35 10 L30 3 L25 10 L20 3 L15 10 L10 3 L5 10 L0 3 Z'/%3E%3C/svg%3E"); }
1057
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='arch']::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V2 Q50 12 0 2 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V2 Q50 12 0 2 Z'/%3E%3C/svg%3E"); }
1058
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='arch']::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V2 Q50 12 0 2 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V2 Q50 12 0 2 Z'/%3E%3C/svg%3E"); }
1059
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-bottom='blob']::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V4 C85 11 72 0 58 5 C44 10 30 2 16 6 C10 8 5 5 0 6 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V4 C85 11 72 0 58 5 C44 10 30 2 16 6 C10 8 5 5 0 6 Z'/%3E%3C/svg%3E"); }
1060
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-divider-top='blob']::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V4 C85 11 72 0 58 5 C44 10 30 2 16 6 C10 8 5 5 0 6 Z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath fill='%23fff' d='M0 0 H100 V4 C85 11 72 0 58 5 C44 10 30 2 16 6 C10 8 5 5 0 6 Z'/%3E%3C/svg%3E"); }
1061
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-card] :is(.gem-section__inner, [class*='__inner']) { border-radius: var(--gem-radius-md); padding: var(--gem-space-xl); }
1062
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-card='outline'] :is(.gem-section__inner, [class*='__inner']) { border: 1px solid var(--gem-color-border); }
1063
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-card='shadow'] :is(.gem-section__inner, [class*='__inner']) { background: var(--gem-color-surface); box-shadow: var(--gem-shadow-md); }
1064
+ :is(.gem-section, .gem-hero, .gem-hero-split, .gem-hero-collage, .gem-hero-triptych, .gem-slideshow)[data-gem-card='filled'] :is(.gem-section__inner, [class*='__inner']) { background: color-mix(in srgb, currentColor 6%, transparent); }
1065
+ :root:not(:has([data-gem-canvas])) [data-gem-section-id][data-gem-countdown-ended='true'] { display: none; }
1066
+ :root:has([data-gem-canvas]) [data-gem-section-id][data-gem-countdown-ended='true'] { opacity: .55; }
1067
+ .gem-countdown-ended-note { display: none; }
1068
+ :root:has([data-gem-canvas]) [data-gem-countdown-ended='true'] .gem-countdown-ended-note { display: block; margin: 0; padding: .25rem 0; font-size: .75rem; font-weight: 700; text-align: center; }
1069
+ .gem-promo-banner, .gem-promo-tile {
1070
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1071
+ border-radius: var(--gem-radius-md);
1072
+ background: var(--gem-color-surface);
1073
+ padding: var(--gem-space-md);
1074
+ }
1075
+ .gem-promo-banner {
1076
+ display: flex;
1077
+ flex-wrap: wrap;
1078
+ justify-content: space-between;
1079
+ gap: var(--gem-space-sm);
1080
+ }
1081
+ .gem-trust-list, .gem-breadcrumbs, .gem-filter-bar {
1082
+ display: flex;
1083
+ flex-wrap: wrap;
1084
+ gap: var(--gem-space-sm);
1085
+ align-items: center;
1086
+ }
1087
+ .gem-filter-bar .gem-select {
1088
+ width: auto;
1089
+ min-width: min(18rem, 100%);
1090
+ margin-left: auto;
1091
+ }
1092
+ .gem-collection-filter-toolbar__form {
1093
+ display: flex;
1094
+ flex-wrap: wrap;
1095
+ align-items: end;
1096
+ gap: var(--gem-space-sm);
1097
+ }
1098
+ .gem-collection-filter-toolbar__filters, .gem-collection-filter-toolbar__sort, .gem-collection-filter-toolbar__filter {
1099
+ display: grid;
1100
+ gap: var(--gem-space-xs);
1101
+ }
1102
+ .gem-collection-filter-toolbar__filters {
1103
+ align-content: start;
1104
+ }
1105
+ .gem-collection-filter-toolbar__filters > summary {
1106
+ list-style: none;
1107
+ }
1108
+ .gem-collection-filter-toolbar__filters > summary::-webkit-details-marker {
1109
+ display: none;
1110
+ }
1111
+ .gem-collection-filter-toolbar__filters[open] {
1112
+ gap: var(--gem-space-sm);
1113
+ }
1114
+ .gem-collection-filter-toolbar__sort {
1115
+ margin-left: auto;
1116
+ }
1117
+ .gem-collection-filter-toolbar__select {
1118
+ min-height: var(--gem-component-input-height, 44px);
1119
+ min-width: min(16rem, 100%);
1120
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1121
+ border-radius: var(--gem-radius-md);
1122
+ background: var(--gem-color-surface);
1123
+ color: var(--gem-color-text);
1124
+ padding-inline: var(--gem-space-md);
1125
+ }
1126
+ .gem-collection-filter-toolbar__active {
1127
+ display: flex;
1128
+ flex-wrap: wrap;
1129
+ align-items: center;
1130
+ gap: var(--gem-space-xs);
1131
+ }
1132
+ .gem-collection-filter-toolbar__active:empty {
1133
+ display: none;
1134
+ }
1135
+ .gem-collection-filter-toolbar__active-filter {
1136
+ text-decoration: none;
1137
+ }
1138
+ .gem-collection-filter-toolbar__clear {
1139
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
1140
+ font-size: 0.875rem;
1141
+ }
1142
+ .gem-tabs {
1143
+ display: grid;
1144
+ gap: var(--gem-space-md);
1145
+ }
1146
+ .gem-drawer, .gem-modal {
1147
+ background: var(--gem-color-surface);
1148
+ color: var(--gem-color-text);
1149
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1150
+ box-shadow: var(--gem-shadow-md, none);
1151
+ }
1152
+ .gem-modal[aria-hidden='true'] {
1153
+ display: none;
1154
+ }
1155
+ .gem-modal[open] {
1156
+ display: grid;
1157
+ gap: var(--gem-space-sm);
1158
+ padding: var(--gem-space-md);
1159
+ }
1160
+ .gem-cart-drawer {
1161
+ position: relative;
1162
+ z-index: 80;
1163
+ }
1164
+ .gem-cart-drawer:not([open]) .gem-cart-drawer__overlay, .gem-cart-drawer:not([open]) .gem-cart-drawer__panel {
1165
+ display: none;
1166
+ }
1167
+ .gem-cart-drawer__overlay {
1168
+ position: fixed;
1169
+ inset: 0;
1170
+ background: rgba(0, 0, 0, 0.36);
1171
+ }
1172
+ @keyframes gem-cart-drawer-panel-in { from { translate: calc(var(--gem-drawer-offset, 24px) * var(--gem-drawer-dir, 1)) 0; opacity: 0; } }
1173
+ @keyframes gem-cart-drawer-overlay-in { from { opacity: 0; } }
1174
+ .gem-cart-drawer__panel:dir(rtl) { --gem-drawer-dir: -1; }
1175
+ .gem-cart-drawer[data-gem-drawer-motion='slide'] .gem-cart-drawer__overlay { animation: gem-cart-drawer-overlay-in var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease); }
1176
+ .gem-cart-drawer[data-gem-drawer-motion='slide'] .gem-cart-drawer__panel { animation: gem-cart-drawer-panel-in var(--gem-motion-duration, 160ms) var(--gem-motion-easing, ease); }
1177
+ .gem-cart-drawer__panel {
1178
+ position: fixed;
1179
+ inset-block: 0;
1180
+ inset-inline-end: 0;
1181
+ width: min(100%, 28rem);
1182
+ overflow: auto;
1183
+ background: var(--gem-color-surface);
1184
+ color: var(--gem-color-text);
1185
+ border-inline-start: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1186
+ box-shadow: var(--gem-shadow-md, none);
1187
+ padding: var(--gem-space-lg);
1188
+ }
1189
+ @media (prefers-reduced-motion: reduce) { .gem-cart-drawer[data-gem-drawer-motion] :is(.gem-cart-drawer__panel, .gem-cart-drawer__overlay) { animation: none; } }
1190
+ .gem-cart-drawer__header, .gem-cart-drawer__footer {
1191
+ display: flex;
1192
+ flex-wrap: wrap;
1193
+ align-items: center;
1194
+ justify-content: space-between;
1195
+ gap: var(--gem-space-sm);
1196
+ }
1197
+ .gem-cart-drawer__header {
1198
+ margin-bottom: var(--gem-space-lg);
1199
+ }
1200
+ .gem-cart-drawer__header h2 {
1201
+ margin: 0;
1202
+ font-family: var(--gem-font-heading);
1203
+ }
1204
+ .gem-cart-drawer__form, .gem-cart-drawer__items, .gem-cart-drawer__empty {
1205
+ display: grid;
1206
+ gap: var(--gem-space-md);
1207
+ }
1208
+ .gem-cart-drawer .gem-cart-line-item {
1209
+ grid-template-columns: minmax(4.5rem, 5.5rem) minmax(0, 1fr);
1210
+ gap: var(--gem-space-sm);
1211
+ }
1212
+ .gem-cart-drawer .gem-cart-line-item__quantity, .gem-cart-drawer .gem-cart-line-item__price {
1213
+ grid-column: 2;
1214
+ }
1215
+ .gem-cart-drawer .gem-cart-line-item__price {
1216
+ justify-self: start;
1217
+ }
1218
+ .gem-cart-drawer__footer {
1219
+ margin-top: var(--gem-space-lg);
1220
+ padding-top: var(--gem-space-md);
1221
+ border-top: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1222
+ }
1223
+ .gem-cart-drawer__footer p {
1224
+ flex-basis: 100%;
1225
+ margin: 0;
1226
+ font-weight: 750;
1227
+ }
1228
+ .gem-copy-code, .gem-delivery-date, .gem-stock-indicator, .gem-popup {
1229
+ color: var(--gem-color-text);
1230
+ background: var(--gem-color-surface);
1231
+ border: var(--gem-border-subtle, 1px solid var(--gem-color-border));
1232
+ border-radius: var(--gem-radius-md);
1233
+ }
1234
+ .gem-copy-code, .gem-delivery-date, .gem-stock-indicator {
1235
+ display: inline-flex;
1236
+ align-items: center;
1237
+ gap: var(--gem-space-sm);
1238
+ padding: var(--gem-space-sm) var(--gem-space-md);
1239
+ }
1240
+ .gem-popup {
1241
+ box-shadow: var(--gem-shadow-md, none);
1242
+ padding: var(--gem-space-lg);
1243
+ }
1244
+ .gem-back-to-top {
1245
+ position: fixed;
1246
+ inset-block-end: var(--gem-space-lg);
1247
+ inset-inline-end: var(--gem-space-lg);
1248
+ z-index: 20;
1249
+ }
1250
+ .gem-content-shell {
1251
+ max-width: 72ch;
1252
+ }
1253
+ .gem-content-shell .gem-section__heading {
1254
+ max-width: 12ch;
1255
+ }
1256
+ .gem-content-header {
1257
+ display: grid;
1258
+ gap: var(--gem-space-sm);
1259
+ }
1260
+ .gem-content-body {
1261
+ max-width: 72ch;
1262
+ }
1263
+ .gem-content-body > * + * {
1264
+ margin-top: var(--gem-space-md);
1265
+ }
1266
+ .gem-content-body h2, .gem-content-body h3 {
1267
+ margin-bottom: 0;
1268
+ font-family: var(--gem-font-heading);
1269
+ line-height: 1.15;
1270
+ }
1271
+ .gem-content-body ul, .gem-content-body ol {
1272
+ padding-inline-start: var(--gem-space-lg);
1273
+ }
1274
+ .gem-content-body a {
1275
+ color: var(--gem-color-accent);
1276
+ text-underline-offset: 0.18em;
1277
+ }
1278
+ .gem-main-page .gem-content-shell {
1279
+ display: grid;
1280
+ gap: var(--gem-space-lg);
1281
+ }
1282
+ .gem-contact-form {
1283
+ display: grid;
1284
+ gap: var(--gem-space-lg);
1285
+ }
1286
+ .gem-contact-form__form {
1287
+ gap: var(--gem-space-md);
1288
+ }
1289
+ .gem-contact-form__form .gem-button {
1290
+ justify-self: start;
1291
+ }
1292
+ .gem-email-signup-banner .gem-content-shell {
1293
+ display: grid;
1294
+ justify-items: center;
1295
+ gap: var(--gem-space-md);
1296
+ margin-inline: auto;
1297
+ text-align: center;
1298
+ }
1299
+ .gem-email-signup-banner .gem-newsletter-form {
1300
+ justify-content: center;
1301
+ width: min(100%, 44rem);
1302
+ }
1303
+ .gem-gift-card {
1304
+ min-block-size: 100vh;
1305
+ display: grid;
1306
+ place-items: center;
1307
+ padding: var(--gem-space-lg);
1308
+ }
1309
+ .gem-gift-card__main {
1310
+ display: grid;
1311
+ justify-items: center;
1312
+ gap: var(--gem-space-md);
1313
+ text-align: center;
1314
+ }
1315
+ .gem-gift-card__code {
1316
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
1317
+ font-size: clamp(1.25rem, 4vw, 2rem);
1318
+ letter-spacing: 0.08em;
1319
+ }
1320
+ .gem-gift-card__actions {
1321
+ display: flex;
1322
+ flex-wrap: wrap;
1323
+ justify-content: center;
1324
+ gap: var(--gem-space-sm);
1325
+ }
1326
+ .gem-blog-grid {
1327
+ display: grid;
1328
+ grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
1329
+ gap: var(--gem-space-md);
1330
+ }
1331
+ .gem-article-card {
1332
+ display: grid;
1333
+ grid-template-rows: auto minmax(0, 1fr);
1334
+ gap: var(--gem-space-sm);
1335
+ color: var(--gem-color-text);
1336
+ }
1337
+ .gem-article-card > a {
1338
+ color: inherit;
1339
+ text-decoration: none;
1340
+ }
1341
+ .gem-article-card__media {
1342
+ aspect-ratio: 16 / 10;
1343
+ }
1344
+ .gem-article-card__content {
1345
+ display: grid;
1346
+ gap: var(--gem-space-xs);
1347
+ }
1348
+ .gem-article-card__meta {
1349
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
1350
+ font-size: 0.875rem;
1351
+ }
1352
+ .gem-article-card__title {
1353
+ margin: 0;
1354
+ font-family: var(--gem-font-heading);
1355
+ }
1356
+ .gem-article-card__title a {
1357
+ color: inherit;
1358
+ text-decoration: none;
1359
+ }
1360
+ .gem-article-card__title a:hover {
1361
+ text-decoration: underline;
1362
+ text-underline-offset: 0.18em;
1363
+ }
1364
+ .gem-search-form {
1365
+ display: grid;
1366
+ grid-template-columns: minmax(0, 1fr) auto;
1367
+ gap: var(--gem-space-sm);
1368
+ align-items: end;
1369
+ max-width: 48rem;
1370
+ }
1371
+ .gem-search-form [data-gem-predictive-search-results] {
1372
+ grid-column: 1 / -1;
1373
+ }
1374
+ .gem-search-results-meta {
1375
+ margin: 0;
1376
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
1377
+ }
1378
+ .gem-search-result-card {
1379
+ display: grid;
1380
+ gap: var(--gem-space-xs);
1381
+ color: var(--gem-color-text);
1382
+ text-decoration: none;
1383
+ }
1384
+ .gem-search-result-card span {
1385
+ display: block;
1386
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
1387
+ font-size: 0.875rem;
1388
+ }
1389
+ .gem-search-result-card:hover strong {
1390
+ text-decoration: underline;
1391
+ text-underline-offset: 0.18em;
1392
+ }
1393
+ .gem-article-card__excerpt {
1394
+ margin: 0;
1395
+ color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent));
1396
+ }
1397
+ .gem-not-found {
1398
+ max-width: 42rem;
1399
+ }
1400
+ .gem-u-hidden { display: none !important; }
1401
+ .gem-u-visually-hidden {
1402
+ position: absolute !important;
1403
+ width: 1px !important;
1404
+ height: 1px !important;
1405
+ overflow: hidden !important;
1406
+ clip: rect(0, 0, 0, 0) !important;
1407
+ white-space: nowrap !important;
1408
+ }
1409
+ .gem-u-center { text-align: center; }
1410
+ .gem-u-muted { color: var(--gem-color-muted, color-mix(in srgb, var(--gem-color-text) 72%, transparent)); }
1411
+ .gem-u-surface { background: var(--gem-color-surface); color: var(--gem-color-text); }
1412
+ .gem-u-accent { color: var(--gem-color-accent); }
1413
+ .gem-u-stack-sm { gap: var(--gem-space-sm); }
1414
+ .gem-u-stack-md { gap: var(--gem-space-md); }
1415
+ .gem-u-stack-lg { gap: var(--gem-space-lg); }
1416
+ @media (max-width: 760px) {
1417
+ .gem-cart-line-item { grid-template-columns: minmax(4rem, 5rem) minmax(0, 1fr); }
1418
+ .gem-cart-line-item__quantity, .gem-cart-line-item__price { grid-column: 2; }
1419
+ .gem-customer-order-link, .gem-customer-order-line { grid-template-columns: minmax(0, 1fr); }
1420
+ .gem-customer-order-total { justify-self: start; }
1421
+ .gem-search-form { grid-template-columns: minmax(0, 1fr); }
1422
+ .gem-filter-bar, .gem-collection-filter-toolbar__form { display: grid; align-items: stretch; }
1423
+ .gem-filter-bar .gem-select, .gem-collection-filter-toolbar__sort, .gem-collection-filter-toolbar__select, .gem-collection-filter-toolbar__submit { width: 100%; margin-left: 0; }
1424
+ .gem-collection-filter-toolbar__filters { border: var(--gem-border-subtle, 1px solid var(--gem-color-border)); border-radius: var(--gem-radius-md); background: var(--gem-color-surface); padding: var(--gem-space-sm); }
1425
+ .gem-collection-filter-toolbar__filters > summary { width: 100%; }
1426
+ .gem-collection-filter-toolbar__filters[open] { padding-bottom: var(--gem-space-md); }
1427
+ .gem-collection-filter-toolbar__active { align-items: stretch; }
1428
+ .gem-collection-filter-toolbar__active-filter, .gem-collection-filter-toolbar__clear { min-height: 2.25rem; align-items: center; }
1429
+ }
1430
+