@commerce-ai-tool/react 2.4.0

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 (53) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +21 -0
  3. package/README.md +16 -0
  4. package/dist/components/CameraCaptureOverlay.d.ts +11 -0
  5. package/dist/components/CameraCaptureOverlay.d.ts.map +1 -0
  6. package/dist/components/CartPanel.d.ts +22 -0
  7. package/dist/components/CartPanel.d.ts.map +1 -0
  8. package/dist/components/CommerceAICheckout.d.ts +15 -0
  9. package/dist/components/CommerceAICheckout.d.ts.map +1 -0
  10. package/dist/components/CommerceAIOrderStatus.d.ts +15 -0
  11. package/dist/components/CommerceAIOrderStatus.d.ts.map +1 -0
  12. package/dist/components/CommerceAISearch.d.ts +43 -0
  13. package/dist/components/CommerceAISearch.d.ts.map +1 -0
  14. package/dist/components/MissionResults.d.ts +13 -0
  15. package/dist/components/MissionResults.d.ts.map +1 -0
  16. package/dist/components/SearchFacets.d.ts +12 -0
  17. package/dist/components/SearchFacets.d.ts.map +1 -0
  18. package/dist/components/VoiceStatusBanner.d.ts +12 -0
  19. package/dist/components/VoiceStatusBanner.d.ts.map +1 -0
  20. package/dist/hooks/useCameraCapture.d.ts +18 -0
  21. package/dist/hooks/useCameraCapture.d.ts.map +1 -0
  22. package/dist/hooks/useCart.d.ts +57 -0
  23. package/dist/hooks/useCart.d.ts.map +1 -0
  24. package/dist/hooks/useCommerceAISearch.d.ts +59 -0
  25. package/dist/hooks/useCommerceAISearch.d.ts.map +1 -0
  26. package/dist/hooks/useRecordingDuration.d.ts +3 -0
  27. package/dist/hooks/useRecordingDuration.d.ts.map +1 -0
  28. package/dist/hooks/useTheme.d.ts +4 -0
  29. package/dist/hooks/useTheme.d.ts.map +1 -0
  30. package/dist/hooks/useVoiceSearch.d.ts +24 -0
  31. package/dist/hooks/useVoiceSearch.d.ts.map +1 -0
  32. package/dist/icons.d.ts +2 -0
  33. package/dist/icons.d.ts.map +1 -0
  34. package/dist/index.cjs +3714 -0
  35. package/dist/index.cjs.map +1 -0
  36. package/dist/index.css +1783 -0
  37. package/dist/index.css.map +1 -0
  38. package/dist/index.d.cts +19 -0
  39. package/dist/index.d.ts +19 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +3702 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/utils/camera.d.ts +7 -0
  44. package/dist/utils/camera.d.ts.map +1 -0
  45. package/dist/vendor-core/client.d.cts +12 -0
  46. package/dist/vendor-core/client.d.ts +12 -0
  47. package/dist/vendor-core/commercetools/facet-color.d.ts +12 -0
  48. package/dist/vendor-core/commercetools/facets.d.ts +31 -0
  49. package/dist/vendor-core/messages/index.d.ts +110 -0
  50. package/dist/vendor-core/payments/types.d.ts +35 -0
  51. package/dist/vendor-core/search/compound-shopping-list.d.ts +6 -0
  52. package/dist/vendor-core/types/index.d.ts +510 -0
  53. package/package.json +84 -0
package/dist/index.css ADDED
@@ -0,0 +1,1783 @@
1
+ /* src/styles/commerce-ai-search.css */
2
+ .cat-root {
3
+ --cat-ease: cubic-bezier(0.32, 0.72, 0, 1);
4
+ --cat-glass-bg: rgba(255, 255, 255, 0.55);
5
+ --cat-glass-bg-strong: rgba(255, 255, 255, 0.72);
6
+ --cat-glass-border: rgba(255, 255, 255, 0.28);
7
+ --cat-glass-shadow: 0 24px 80px rgba(15, 18, 40, 0.12);
8
+ --cat-text: #1a1a2e;
9
+ --cat-text-muted: rgba(26, 26, 46, 0.6);
10
+ --cat-accent: #6366f1;
11
+ --cat-accent-hover: #4f46e5;
12
+ --cat-blur: 20px;
13
+ --cat-radius: 1.25rem;
14
+ --cat-shell-radius: 2rem;
15
+ --cat-input-bg: rgba(255, 255, 255, 0.35);
16
+ --cat-overlay-bg: rgba(255, 255, 255, 0.97);
17
+ --cat-overlay-shadow: 0 24px 80px rgba(15, 18, 40, 0.16);
18
+ --cat-border: var(--cat-glass-border);
19
+ --cat-surface: var(--cat-input-bg);
20
+ --cat-max-width: 46rem;
21
+ --cat-search-max-width: 46rem;
22
+ font-family: var(--cat-font, "Geist", "Plus Jakarta Sans", ui-sans-serif, sans-serif);
23
+ color: var(--cat-text);
24
+ width: 100%;
25
+ max-width: var(--cat-max-width);
26
+ min-width: 0;
27
+ overflow-x: clip;
28
+ }
29
+ .cat-root--mission {
30
+ --cat-max-width: min(46rem, 100%);
31
+ }
32
+ .cat-root--mission-lanes-3,
33
+ .cat-root--mission-lanes-4,
34
+ .cat-root--mission-lanes-5 {
35
+ --cat-max-width: min(72rem, 100%);
36
+ }
37
+ .cat-root[data-theme=dark] {
38
+ --cat-glass-bg: rgba(12, 12, 18, 0.62);
39
+ --cat-glass-bg-strong: rgba(12, 12, 18, 0.82);
40
+ --cat-glass-border: rgba(255, 255, 255, 0.1);
41
+ --cat-glass-shadow: 0 24px 80px rgba(0, 0, 0, 0.18);
42
+ --cat-text: #f0f0f5;
43
+ --cat-text-muted: rgba(240, 240, 245, 0.6);
44
+ --cat-accent: #818cf8;
45
+ --cat-accent-hover: #a5b4fc;
46
+ --cat-input-bg: rgba(255, 255, 255, 0.06);
47
+ --cat-overlay-bg: rgba(12, 12, 18, 0.96);
48
+ --cat-overlay-shadow: 0 24px 80px rgba(0, 0, 0, 0.28);
49
+ }
50
+ @media (prefers-color-scheme: dark) {
51
+ .cat-root[data-theme=auto] {
52
+ --cat-glass-bg: rgba(12, 12, 18, 0.62);
53
+ --cat-glass-bg-strong: rgba(12, 12, 18, 0.82);
54
+ --cat-glass-border: rgba(255, 255, 255, 0.1);
55
+ --cat-glass-shadow: 0 24px 80px rgba(0, 0, 0, 0.18);
56
+ --cat-text: #f0f0f5;
57
+ --cat-text-muted: rgba(240, 240, 245, 0.6);
58
+ --cat-accent: #818cf8;
59
+ --cat-accent-hover: #a5b4fc;
60
+ --cat-input-bg: rgba(255, 255, 255, 0.06);
61
+ --cat-overlay-bg: rgba(12, 12, 18, 0.96);
62
+ --cat-overlay-shadow: 0 24px 80px rgba(0, 0, 0, 0.28);
63
+ }
64
+ }
65
+ .cat-search-shell {
66
+ position: relative;
67
+ width: 100%;
68
+ max-width: min(var(--cat-search-max-width), 100%);
69
+ margin-inline: auto;
70
+ padding: 0;
71
+ border: 0;
72
+ background: transparent;
73
+ box-shadow: none;
74
+ }
75
+ .cat-root > .cat-voice-banner,
76
+ .cat-root > .cat-status,
77
+ .cat-root > .cat-facets {
78
+ width: 100%;
79
+ max-width: min(var(--cat-search-max-width), 100%);
80
+ margin-inline: auto;
81
+ }
82
+ .cat-search-bar {
83
+ position: relative;
84
+ display: flex;
85
+ align-items: center;
86
+ gap: 0.45rem;
87
+ padding: 0.4rem 0.5rem 0.4rem 0.9rem;
88
+ background: var(--cat-overlay-bg);
89
+ border: 0;
90
+ border-radius: var(--cat-shell-radius);
91
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.14);
92
+ transition: box-shadow 500ms var(--cat-ease);
93
+ }
94
+ .cat-search-bar:focus-within,
95
+ .cat-search-bar--voice-active {
96
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.16), inset 0 0 0 2px color-mix(in srgb, var(--cat-accent) 45%, transparent);
97
+ }
98
+ .cat-search-actions {
99
+ display: flex;
100
+ flex-shrink: 0;
101
+ align-items: center;
102
+ gap: 0.25rem;
103
+ padding: 0.15rem;
104
+ border-radius: 999px;
105
+ background: var(--cat-input-bg);
106
+ }
107
+ .cat-search-input {
108
+ flex: 1;
109
+ border: none;
110
+ background: transparent;
111
+ color: var(--cat-text);
112
+ font-size: 0.9375rem;
113
+ outline: none;
114
+ min-width: 0;
115
+ }
116
+ .cat-search-input::placeholder {
117
+ color: var(--cat-text-muted);
118
+ }
119
+ .cat-search-input-wrap {
120
+ flex: 1;
121
+ min-width: 0;
122
+ }
123
+ .cat-search-input-wrap .cat-search-input {
124
+ width: 100%;
125
+ }
126
+ .cat-search-input:focus-visible {
127
+ outline: none;
128
+ }
129
+ @media (max-width: 36rem) {
130
+ .cat-search-bar {
131
+ display: grid;
132
+ grid-template-columns: auto minmax(0, 1fr) auto;
133
+ align-items: center;
134
+ gap: 0.4rem;
135
+ padding: 0.4rem 0.5rem 0.5rem 0.75rem;
136
+ }
137
+ .cat-search-bar > svg {
138
+ grid-column: 1;
139
+ grid-row: 1;
140
+ }
141
+ .cat-search-input-wrap {
142
+ grid-column: 2;
143
+ grid-row: 1;
144
+ }
145
+ .cat-cart-toggle {
146
+ grid-column: 3;
147
+ grid-row: 1;
148
+ }
149
+ .cat-search-actions {
150
+ grid-column: 1 / -1;
151
+ grid-row: 2;
152
+ justify-content: flex-end;
153
+ }
154
+ .cat-suggestions {
155
+ position: static;
156
+ grid-column: 1 / -1;
157
+ margin-top: 0.15rem;
158
+ }
159
+ }
160
+ .cat-suggestions {
161
+ position: absolute;
162
+ top: calc(100% + 0.5rem);
163
+ left: 0;
164
+ right: 0;
165
+ z-index: 20;
166
+ display: flex;
167
+ flex-direction: column;
168
+ gap: 0.125rem;
169
+ padding: 0.375rem;
170
+ background: var(--cat-overlay-bg);
171
+ border: 1px solid var(--cat-glass-border);
172
+ border-radius: 0.875rem;
173
+ box-shadow: var(--cat-overlay-shadow);
174
+ }
175
+ .cat-suggestions__status {
176
+ padding: 0.5rem 0.75rem;
177
+ font-size: 0.8125rem;
178
+ color: var(--cat-text-muted);
179
+ }
180
+ .cat-suggestions__status--error {
181
+ color: var(--cat-error, #b91c1c);
182
+ }
183
+ .cat-suggestions__item {
184
+ display: block;
185
+ width: 100%;
186
+ padding: 0.5rem 0.75rem;
187
+ border: none;
188
+ border-radius: 0.5rem;
189
+ background: transparent;
190
+ color: var(--cat-text);
191
+ font-size: 0.875rem;
192
+ text-align: left;
193
+ cursor: pointer;
194
+ }
195
+ .cat-suggestions__item:hover,
196
+ .cat-suggestions__item--active {
197
+ background: var(--cat-input-bg);
198
+ color: var(--cat-accent);
199
+ }
200
+ .cat-facets {
201
+ display: grid;
202
+ gap: 0.85rem;
203
+ margin: 1rem 0;
204
+ padding: 0.9rem 1rem;
205
+ border: 1px solid var(--cat-glass-border);
206
+ border-radius: var(--cat-radius);
207
+ background: var(--cat-overlay-bg);
208
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.12);
209
+ }
210
+ .cat-facets__header {
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: space-between;
214
+ gap: 0.75rem;
215
+ color: var(--cat-text);
216
+ font-size: 0.875rem;
217
+ font-weight: 600;
218
+ }
219
+ .cat-facets__actions {
220
+ display: flex;
221
+ flex-wrap: wrap;
222
+ gap: 0.75rem;
223
+ justify-content: flex-end;
224
+ }
225
+ .cat-facets__clear {
226
+ border: 0;
227
+ background: transparent;
228
+ color: var(--cat-accent);
229
+ cursor: pointer;
230
+ font: inherit;
231
+ font-size: 0.75rem;
232
+ font-weight: 600;
233
+ }
234
+ .cat-facets__new {
235
+ display: inline-flex;
236
+ min-height: 2rem;
237
+ align-items: center;
238
+ padding: 0.25rem 0.75rem;
239
+ border: 1px solid var(--cat-glass-border);
240
+ border-radius: 999px;
241
+ background: var(--cat-input-bg);
242
+ color: var(--cat-text);
243
+ cursor: pointer;
244
+ font: inherit;
245
+ font-size: 0.75rem;
246
+ font-weight: 600;
247
+ }
248
+ .cat-facet-group {
249
+ display: grid;
250
+ gap: 0.4rem;
251
+ }
252
+ .cat-facet-group__label {
253
+ color: var(--cat-text-muted);
254
+ font-size: 0.75rem;
255
+ font-weight: 600;
256
+ }
257
+ .cat-facet-group__options {
258
+ display: flex;
259
+ flex-wrap: wrap;
260
+ gap: 0.4rem;
261
+ }
262
+ .cat-facet-chip {
263
+ display: inline-flex;
264
+ align-items: center;
265
+ gap: 0.35rem;
266
+ min-height: 2.25rem;
267
+ border: 1px solid var(--cat-border);
268
+ border-radius: 999px;
269
+ background: var(--cat-surface);
270
+ color: var(--cat-text);
271
+ cursor: pointer;
272
+ font: inherit;
273
+ font-size: 0.8rem;
274
+ padding: 0.35rem 0.75rem;
275
+ }
276
+ .cat-facet-chip__count {
277
+ color: var(--cat-text-muted);
278
+ font-size: 0.6875rem;
279
+ font-variant-numeric: tabular-nums;
280
+ }
281
+ .cat-facet-chip__swatch {
282
+ width: 0.75rem;
283
+ height: 0.75rem;
284
+ flex-shrink: 0;
285
+ border-radius: 999px;
286
+ border: 1px solid rgba(26, 26, 46, 0.25);
287
+ }
288
+ .cat-root[data-theme=dark] .cat-facet-chip__swatch {
289
+ border-color: rgba(240, 240, 245, 0.35);
290
+ }
291
+ @media (prefers-color-scheme: dark) {
292
+ .cat-root[data-theme=auto] .cat-facet-chip__swatch {
293
+ border-color: rgba(240, 240, 245, 0.35);
294
+ }
295
+ }
296
+ .cat-facet-chip--selected {
297
+ border-color: var(--cat-accent);
298
+ background: var(--cat-input-bg);
299
+ color: var(--cat-accent);
300
+ }
301
+ .cat-icon-btn {
302
+ display: inline-flex;
303
+ align-items: center;
304
+ justify-content: center;
305
+ width: 2.75rem;
306
+ height: 2.75rem;
307
+ border: none;
308
+ border-radius: 0.85rem;
309
+ background: var(--cat-input-bg);
310
+ color: var(--cat-text-muted);
311
+ cursor: pointer;
312
+ transition:
313
+ background 500ms var(--cat-ease),
314
+ color 500ms var(--cat-ease),
315
+ transform 500ms var(--cat-ease);
316
+ }
317
+ .cat-icon-btn:hover {
318
+ background: var(--cat-glass-bg-strong);
319
+ color: var(--cat-accent);
320
+ }
321
+ .cat-icon-btn:focus-visible {
322
+ outline: 2px solid var(--cat-accent);
323
+ outline-offset: 2px;
324
+ }
325
+ .cat-icon-btn:active:not(:disabled) {
326
+ transform: scale(0.98);
327
+ }
328
+ .cat-search-actions .cat-icon-btn {
329
+ width: 2.5rem;
330
+ height: 2.5rem;
331
+ background: transparent;
332
+ }
333
+ .cat-icon-btn:disabled {
334
+ opacity: 0.5;
335
+ cursor: not-allowed;
336
+ }
337
+ .cat-icon-btn--active {
338
+ color: var(--cat-accent);
339
+ animation: cat-pulse 1.5s var(--cat-ease) infinite;
340
+ }
341
+ @keyframes cat-pulse {
342
+ 0%, 100% {
343
+ transform: scale(1);
344
+ opacity: 1;
345
+ }
346
+ 50% {
347
+ transform: scale(1.08);
348
+ opacity: 0.85;
349
+ }
350
+ }
351
+ @media (prefers-reduced-motion: reduce) {
352
+ .cat-icon-btn {
353
+ transition-duration: 1ms;
354
+ }
355
+ .cat-icon-btn--active {
356
+ animation: none;
357
+ }
358
+ }
359
+ .cat-results {
360
+ display: grid;
361
+ grid-template-columns: repeat(2, minmax(0, 1fr));
362
+ gap: 0.65rem;
363
+ margin-top: 0.85rem;
364
+ background: transparent;
365
+ border: 0;
366
+ box-shadow: none;
367
+ }
368
+ .cat-results:has(.cat-status:only-child) {
369
+ grid-template-columns: 1fr;
370
+ }
371
+ .cat-result-card {
372
+ padding: 0.375rem;
373
+ border: 1px solid var(--cat-glass-border);
374
+ border-radius: var(--cat-shell-radius);
375
+ background: color-mix(in srgb, var(--cat-glass-bg-strong) 55%, transparent);
376
+ }
377
+ .cat-result-card--featured {
378
+ grid-column: 1 / -1;
379
+ }
380
+ .cat-result-card__core {
381
+ position: relative;
382
+ display: flex;
383
+ flex-direction: column;
384
+ height: 100%;
385
+ overflow: hidden;
386
+ border-radius: calc(var(--cat-shell-radius) - 0.375rem);
387
+ background: var(--cat-overlay-bg);
388
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.12);
389
+ }
390
+ .cat-result-card--featured .cat-result-card__core {
391
+ flex-direction: row;
392
+ align-items: stretch;
393
+ }
394
+ .cat-result-card__select {
395
+ display: flex;
396
+ flex: 1;
397
+ flex-direction: column;
398
+ min-width: 0;
399
+ padding: 0;
400
+ border: none;
401
+ background: transparent;
402
+ color: inherit;
403
+ text-align: left;
404
+ cursor: pointer;
405
+ }
406
+ .cat-result-card--featured .cat-result-card__select {
407
+ flex-direction: row;
408
+ align-items: stretch;
409
+ }
410
+ .cat-result-card__select:focus-visible {
411
+ outline: 2px solid var(--cat-accent);
412
+ outline-offset: -2px;
413
+ }
414
+ .cat-result-image {
415
+ width: 100%;
416
+ aspect-ratio: 16 / 9;
417
+ border-radius: 0;
418
+ object-fit: cover;
419
+ background: var(--cat-input-bg);
420
+ }
421
+ .cat-result-card--featured .cat-result-image {
422
+ width: 7.5rem;
423
+ flex-shrink: 0;
424
+ aspect-ratio: 1;
425
+ min-height: 7.5rem;
426
+ }
427
+ .cat-result-image--placeholder {
428
+ display: flex;
429
+ align-items: center;
430
+ justify-content: center;
431
+ }
432
+ .cat-result-info {
433
+ display: grid;
434
+ align-content: start;
435
+ gap: 0.15rem;
436
+ padding: 0.55rem 0.7rem 0.65rem;
437
+ }
438
+ .cat-result-card--featured .cat-result-info {
439
+ flex: 1;
440
+ min-width: 0;
441
+ align-content: center;
442
+ padding: 0.75rem 0.9rem;
443
+ }
444
+ .cat-result-name {
445
+ font-size: 0.75rem;
446
+ font-weight: 600;
447
+ line-height: 1.25;
448
+ display: -webkit-box;
449
+ -webkit-box-orient: vertical;
450
+ -webkit-line-clamp: 2;
451
+ overflow: hidden;
452
+ }
453
+ .cat-result-card--featured .cat-result-name {
454
+ font-size: 0.875rem;
455
+ -webkit-line-clamp: 3;
456
+ }
457
+ .cat-result-price {
458
+ font-size: 0.75rem;
459
+ color: var(--cat-accent);
460
+ font-weight: 650;
461
+ }
462
+ .cat-result-card__add {
463
+ position: absolute;
464
+ top: 0.4rem;
465
+ right: 0.4rem;
466
+ z-index: 1;
467
+ margin: 0;
468
+ width: 2.5rem;
469
+ height: 2.5rem;
470
+ border-radius: 999px;
471
+ border: 1px solid var(--cat-glass-border);
472
+ background: var(--cat-overlay-bg);
473
+ }
474
+ .cat-result-card--featured .cat-result-card__add {
475
+ position: static;
476
+ align-self: center;
477
+ margin: 0 0.65rem 0 0;
478
+ }
479
+ @media (max-width: 767px) {
480
+ .cat-results {
481
+ grid-template-columns: 1fr;
482
+ gap: 0.85rem;
483
+ }
484
+ .cat-result-card--featured {
485
+ grid-column: auto;
486
+ }
487
+ }
488
+ @media (max-width: 30rem) {
489
+ .cat-result-card--featured .cat-result-image {
490
+ width: 6.25rem;
491
+ min-height: 6.25rem;
492
+ }
493
+ }
494
+ .cat-result-card__add--added {
495
+ color: var(--cat-accent);
496
+ }
497
+ .cat-mission {
498
+ display: grid;
499
+ gap: 1rem;
500
+ margin-top: 0.85rem;
501
+ min-width: 0;
502
+ container-type: inline-size;
503
+ container-name: cat-mission;
504
+ }
505
+ .cat-mission__header {
506
+ display: grid;
507
+ gap: 0.25rem;
508
+ }
509
+ .cat-mission__title {
510
+ margin: 0;
511
+ color: var(--cat-text);
512
+ font-size: 1.05rem;
513
+ font-weight: 650;
514
+ }
515
+ .cat-mission__interpretation {
516
+ margin: 0;
517
+ color: var(--cat-text-muted);
518
+ font-size: 0.875rem;
519
+ line-height: 1.45;
520
+ }
521
+ .cat-mission__lanes {
522
+ display: grid;
523
+ gap: 1rem;
524
+ align-items: start;
525
+ grid-template-columns: minmax(0, 1fr);
526
+ }
527
+ .cat-root--mission-lanes-1 .cat-mission__lanes {
528
+ max-width: 22rem;
529
+ margin-inline: auto;
530
+ width: 100%;
531
+ }
532
+ @container cat-mission (min-width: 42rem) {
533
+ .cat-mission__lanes {
534
+ grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
535
+ }
536
+ }
537
+ .cat-mission-group {
538
+ display: grid;
539
+ gap: 0.55rem;
540
+ min-width: 0;
541
+ padding: 0.75rem;
542
+ border: 1px solid var(--cat-glass-border);
543
+ border-radius: var(--cat-radius);
544
+ background: color-mix(in srgb, var(--cat-overlay-bg) 88%, transparent);
545
+ }
546
+ .cat-mission-group__header {
547
+ position: sticky;
548
+ top: 0;
549
+ z-index: 1;
550
+ display: flex;
551
+ align-items: baseline;
552
+ justify-content: space-between;
553
+ gap: 0.75rem;
554
+ padding: 0.15rem 0 0.35rem;
555
+ background: color-mix(in srgb, var(--cat-overlay-bg) 92%, transparent);
556
+ }
557
+ .cat-mission-group__label {
558
+ margin: 0;
559
+ color: var(--cat-text);
560
+ font-size: 0.9375rem;
561
+ font-weight: 650;
562
+ }
563
+ .cat-mission-group__qty {
564
+ color: var(--cat-text-muted);
565
+ font-size: 0.75rem;
566
+ font-weight: 600;
567
+ white-space: nowrap;
568
+ }
569
+ .cat-mission-group__products {
570
+ display: grid;
571
+ gap: 0.55rem;
572
+ grid-template-columns: minmax(0, 1fr);
573
+ margin-top: 0;
574
+ }
575
+ .cat-mission .cat-result-card--primary .cat-result-image {
576
+ aspect-ratio: 16 / 9;
577
+ }
578
+ .cat-mission .cat-result-card--primary .cat-result-info {
579
+ padding: 0.65rem 0.75rem 0.75rem;
580
+ }
581
+ .cat-mission .cat-result-card--compact .cat-result-card__core,
582
+ .cat-mission .cat-result-card--compact .cat-result-card__select {
583
+ flex-direction: row;
584
+ align-items: stretch;
585
+ }
586
+ .cat-mission .cat-result-card--compact .cat-result-image {
587
+ width: 5.75rem;
588
+ min-height: 5.75rem;
589
+ flex-shrink: 0;
590
+ aspect-ratio: 1;
591
+ }
592
+ .cat-mission .cat-result-card--compact .cat-result-info {
593
+ flex: 1;
594
+ min-width: 0;
595
+ align-content: center;
596
+ padding: 0.45rem 0.65rem;
597
+ }
598
+ .cat-mission .cat-result-card--compact .cat-result-card__add {
599
+ position: static;
600
+ align-self: center;
601
+ margin: 0 0.5rem 0 0;
602
+ }
603
+ .cat-mission__footer {
604
+ display: flex;
605
+ justify-content: flex-end;
606
+ padding-inline: 0.75rem;
607
+ }
608
+ .cat-checkout-cta.cat-mission__add-all {
609
+ min-width: 10rem;
610
+ justify-content: center;
611
+ padding: 0.45rem 1.15rem;
612
+ }
613
+ .cat-mission__add-all--added {
614
+ color: var(--cat-accent);
615
+ }
616
+ .cat-cart-toggle {
617
+ position: relative;
618
+ overflow: visible;
619
+ }
620
+ .cat-cart-toggle--open {
621
+ color: var(--cat-accent);
622
+ background: var(--cat-glass-bg-strong);
623
+ }
624
+ .cat-cart-badge {
625
+ position: absolute;
626
+ top: 0.05rem;
627
+ right: 0.05rem;
628
+ z-index: 1;
629
+ box-sizing: border-box;
630
+ min-width: 0.95rem;
631
+ height: 0.95rem;
632
+ padding: 0 0.2rem;
633
+ border-radius: 999px;
634
+ background: var(--cat-accent);
635
+ color: #fff;
636
+ font-size: 0.5625rem;
637
+ font-weight: 700;
638
+ line-height: 0.95rem;
639
+ text-align: center;
640
+ pointer-events: none;
641
+ box-shadow: 0 0 0 1.5px var(--cat-glass-bg);
642
+ }
643
+ .cat-cart-panel {
644
+ --cat-cart-panel-bg: #ffffff;
645
+ position: absolute;
646
+ top: 4.85rem;
647
+ right: max(0px, calc((100% - min(var(--cat-search-max-width), 100%)) / 2));
648
+ z-index: 25;
649
+ display: flex;
650
+ flex-direction: column;
651
+ width: 25rem;
652
+ max-width: calc(100vw - 2rem);
653
+ max-height: calc(100dvh - 5rem);
654
+ background: var(--cat-cart-panel-bg);
655
+ border: 1px solid var(--cat-glass-border);
656
+ border-radius: var(--cat-radius);
657
+ box-shadow: var(--cat-overlay-shadow);
658
+ overflow: hidden;
659
+ isolation: isolate;
660
+ animation: cat-cart-panel-enter 500ms cubic-bezier(0.32, 0.72, 0, 1) both;
661
+ }
662
+ .cat-root[data-theme=dark] .cat-cart-panel {
663
+ --cat-cart-panel-bg: #0c0c12;
664
+ }
665
+ @media (prefers-color-scheme: dark) {
666
+ .cat-root[data-theme=auto] .cat-cart-panel {
667
+ --cat-cart-panel-bg: #0c0c12;
668
+ }
669
+ }
670
+ .cat-cart-panel--with-items {
671
+ height: auto;
672
+ }
673
+ .cat-cart-panel__header {
674
+ display: flex;
675
+ flex: 0 0 auto;
676
+ align-items: center;
677
+ justify-content: space-between;
678
+ gap: 0.5rem;
679
+ padding: 0.9rem 1rem;
680
+ border-bottom: 1px solid var(--cat-glass-border);
681
+ }
682
+ .cat-cart-panel__title {
683
+ margin: 0;
684
+ font-size: 0.875rem;
685
+ font-weight: 600;
686
+ }
687
+ .cat-cart-panel__empty {
688
+ display: flex;
689
+ align-items: center;
690
+ gap: 0.5rem;
691
+ padding: 1.25rem 1rem;
692
+ color: var(--cat-text-muted);
693
+ font-size: 0.8125rem;
694
+ }
695
+ .cat-cart-panel__items {
696
+ flex: 0 1 auto;
697
+ min-height: 0;
698
+ max-height: min(26rem, calc(100dvh - 15rem));
699
+ margin: 0;
700
+ padding: 0.35rem;
701
+ list-style: none;
702
+ overflow-y: auto;
703
+ overscroll-behavior: contain;
704
+ scrollbar-color: color-mix(in srgb, var(--cat-text-muted) 45%, transparent) transparent;
705
+ scrollbar-width: thin;
706
+ }
707
+ .cat-cart-panel__items::-webkit-scrollbar {
708
+ width: 0.375rem;
709
+ }
710
+ .cat-cart-panel__items::-webkit-scrollbar-track {
711
+ background: transparent;
712
+ }
713
+ .cat-cart-panel__items::-webkit-scrollbar-thumb {
714
+ border-radius: 999px;
715
+ background: color-mix(in srgb, var(--cat-text-muted) 45%, transparent);
716
+ }
717
+ .cat-cart-item {
718
+ display: flex;
719
+ align-items: center;
720
+ gap: 0.75rem;
721
+ min-height: 5rem;
722
+ padding: 0.7rem;
723
+ border-radius: calc(var(--cat-radius) - 0.45rem);
724
+ content-visibility: auto;
725
+ contain-intrinsic-size: auto 5rem;
726
+ }
727
+ .cat-cart-item + .cat-cart-item {
728
+ margin-top: 0.2rem;
729
+ }
730
+ .cat-cart-item:hover {
731
+ background: var(--cat-input-bg);
732
+ }
733
+ .cat-cart-item__image {
734
+ width: 3.25rem;
735
+ height: 3.25rem;
736
+ border-radius: 0.75rem;
737
+ object-fit: cover;
738
+ background: var(--cat-input-bg);
739
+ flex-shrink: 0;
740
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.12);
741
+ }
742
+ .cat-cart-item__image--placeholder {
743
+ display: grid;
744
+ place-items: center;
745
+ color: var(--cat-text-muted);
746
+ }
747
+ .cat-cart-item__info {
748
+ flex: 1;
749
+ min-width: 0;
750
+ }
751
+ .cat-cart-item__name {
752
+ font-size: 0.8125rem;
753
+ font-weight: 600;
754
+ line-height: 1.25;
755
+ display: -webkit-box;
756
+ -webkit-box-orient: vertical;
757
+ -webkit-line-clamp: 2;
758
+ overflow: hidden;
759
+ }
760
+ .cat-cart-item__price {
761
+ display: flex;
762
+ align-items: baseline;
763
+ justify-content: space-between;
764
+ gap: 0.5rem;
765
+ margin-top: 0.2rem;
766
+ font-size: 0.75rem;
767
+ color: var(--cat-text-muted);
768
+ }
769
+ .cat-cart-item__price strong {
770
+ color: var(--cat-accent);
771
+ font-weight: 650;
772
+ }
773
+ .cat-cart-item__qty {
774
+ display: inline-flex;
775
+ align-items: center;
776
+ gap: 0.375rem;
777
+ margin-top: 0.25rem;
778
+ }
779
+ .cat-cart-item__qty-btn {
780
+ display: inline-flex;
781
+ align-items: center;
782
+ justify-content: center;
783
+ width: 2.5rem;
784
+ height: 2.5rem;
785
+ padding: 0;
786
+ border: 1px solid var(--cat-glass-border);
787
+ border-radius: 0.75rem;
788
+ background: var(--cat-input-bg);
789
+ color: var(--cat-text);
790
+ cursor: pointer;
791
+ transition: transform 450ms var(--cat-ease);
792
+ }
793
+ .cat-cart-item__qty-btn:active:not(:disabled) {
794
+ transform: scale(0.96);
795
+ }
796
+ .cat-cart-item__qty-btn:disabled {
797
+ opacity: 0.45;
798
+ cursor: not-allowed;
799
+ }
800
+ .cat-cart-item__qty-value {
801
+ min-width: 1rem;
802
+ text-align: center;
803
+ font-size: 0.75rem;
804
+ font-variant-numeric: tabular-nums;
805
+ }
806
+ .cat-cart-panel__footer {
807
+ display: flex;
808
+ flex: 0 0 auto;
809
+ align-items: center;
810
+ justify-content: space-between;
811
+ gap: 1rem;
812
+ padding: 0.8rem 1rem 1rem;
813
+ border-top: 1px solid var(--cat-glass-border);
814
+ background: var(--cat-cart-panel-bg);
815
+ font-size: 0.8125rem;
816
+ }
817
+ .cat-cart-panel__total {
818
+ display: flex;
819
+ flex-direction: column;
820
+ align-items: flex-start;
821
+ gap: 0.15rem;
822
+ line-height: 1.2;
823
+ }
824
+ .cat-cart-panel__total strong {
825
+ font-size: 0.95rem;
826
+ }
827
+ .cat-cart-panel__auth {
828
+ flex: 0 0 auto;
829
+ padding: 0.35rem 1rem;
830
+ border-top: 1px solid var(--cat-glass-border);
831
+ }
832
+ .cat-cart-panel__auth-form {
833
+ display: flex;
834
+ flex-direction: column;
835
+ gap: 0.5rem;
836
+ padding: 0.65rem 0.2rem 0.15rem;
837
+ animation: cat-cart-auth-enter 450ms cubic-bezier(0.32, 0.72, 0, 1) both;
838
+ }
839
+ .cat-cart-panel__auth-toggle {
840
+ display: flex;
841
+ width: 100%;
842
+ min-height: 2.5rem;
843
+ align-items: center;
844
+ justify-content: space-between;
845
+ gap: 0.75rem;
846
+ padding: 0.3rem 0.45rem;
847
+ border: 0;
848
+ background: transparent;
849
+ color: var(--cat-text-muted);
850
+ font: inherit;
851
+ font-size: 0.75rem;
852
+ font-weight: 550;
853
+ cursor: pointer;
854
+ }
855
+ .cat-cart-panel__auth-toggle-copy {
856
+ display: inline-flex;
857
+ align-items: center;
858
+ gap: 0.55rem;
859
+ }
860
+ .cat-cart-panel__auth-icon {
861
+ display: inline-flex;
862
+ width: 1.8rem;
863
+ height: 1.8rem;
864
+ align-items: center;
865
+ justify-content: center;
866
+ border: 1px solid var(--cat-glass-border);
867
+ border-radius: 50%;
868
+ background: var(--cat-input-bg);
869
+ color: var(--cat-accent);
870
+ }
871
+ .cat-cart-panel__auth-toggle svg {
872
+ transition: transform 450ms cubic-bezier(0.32, 0.72, 0, 1);
873
+ }
874
+ .cat-cart-panel__auth-chevron--open {
875
+ transform: rotate(180deg);
876
+ }
877
+ .cat-cart-panel__field {
878
+ display: flex;
879
+ flex-direction: column;
880
+ gap: 0.25rem;
881
+ }
882
+ .cat-cart-panel__label {
883
+ font-size: 0.6875rem;
884
+ font-weight: 500;
885
+ color: var(--cat-text-muted);
886
+ }
887
+ .cat-cart-panel__input {
888
+ width: 100%;
889
+ box-sizing: border-box;
890
+ padding: 0.45rem 0.6rem;
891
+ border: 1px solid var(--cat-glass-border);
892
+ border-radius: 0.5rem;
893
+ background: var(--cat-input-bg);
894
+ color: var(--cat-text);
895
+ font-size: 0.8125rem;
896
+ outline: none;
897
+ }
898
+ .cat-cart-panel__input:focus {
899
+ border-color: var(--cat-accent);
900
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
901
+ }
902
+ .cat-cart-panel__input:disabled,
903
+ .cat-cart-panel__submit:disabled,
904
+ .cat-cart-panel__sign-out:disabled {
905
+ opacity: 0.55;
906
+ cursor: not-allowed;
907
+ }
908
+ .cat-cart-panel__submit,
909
+ .cat-cart-panel__sign-out {
910
+ display: inline-flex;
911
+ align-items: center;
912
+ justify-content: center;
913
+ padding: 0.45rem 0.75rem;
914
+ border: 1px solid transparent;
915
+ border-radius: 0.5rem;
916
+ background: var(--cat-accent);
917
+ color: #fff;
918
+ font-size: 0.8125rem;
919
+ font-weight: 500;
920
+ cursor: pointer;
921
+ }
922
+ .cat-cart-panel__submit:hover,
923
+ .cat-cart-panel__sign-out:hover {
924
+ background: var(--cat-accent-hover);
925
+ }
926
+ .cat-cart-panel__signed-in {
927
+ display: flex;
928
+ align-items: center;
929
+ justify-content: space-between;
930
+ gap: 0.5rem;
931
+ font-size: 0.75rem;
932
+ color: var(--cat-text-muted);
933
+ }
934
+ @keyframes cat-cart-panel-enter {
935
+ from {
936
+ transform: translateY(0.75rem) scale(0.985);
937
+ }
938
+ to {
939
+ transform: translateY(0) scale(1);
940
+ }
941
+ }
942
+ @keyframes cat-cart-auth-enter {
943
+ from {
944
+ opacity: 0;
945
+ transform: translateY(-0.35rem);
946
+ }
947
+ to {
948
+ opacity: 1;
949
+ transform: translateY(0);
950
+ }
951
+ }
952
+ @media (max-width: 36rem) {
953
+ .cat-cart-panel,
954
+ .cat-cart-panel--with-items {
955
+ position: fixed;
956
+ inset: 0;
957
+ width: 100%;
958
+ max-width: none;
959
+ height: 100dvh;
960
+ max-height: none;
961
+ border-radius: 0;
962
+ }
963
+ .cat-cart-panel__header {
964
+ padding-top: max(0.9rem, env(safe-area-inset-top));
965
+ }
966
+ .cat-cart-panel__footer {
967
+ padding-bottom: max(1rem, env(safe-area-inset-bottom));
968
+ }
969
+ .cat-cart-panel__items {
970
+ flex: 1;
971
+ max-height: none;
972
+ }
973
+ }
974
+ .cat-cart-panel__sign-out {
975
+ flex-shrink: 0;
976
+ background: transparent;
977
+ border-color: var(--cat-glass-border);
978
+ color: var(--cat-text);
979
+ }
980
+ .cat-cart-panel__sign-out:hover {
981
+ background: var(--cat-input-bg);
982
+ }
983
+ .cat-status {
984
+ padding: 0.75rem 1rem;
985
+ font-size: 0.8125rem;
986
+ color: var(--cat-text-muted);
987
+ text-align: center;
988
+ }
989
+ .cat-root > .cat-status {
990
+ margin-top: 0.85rem;
991
+ }
992
+ .cat-status--error {
993
+ color: #ef4444;
994
+ }
995
+ .cat-status--empty {
996
+ display: flex;
997
+ align-items: flex-start;
998
+ gap: 0.625rem;
999
+ text-align: left;
1000
+ color: var(--cat-text-muted);
1001
+ }
1002
+ .cat-status--empty svg {
1003
+ flex-shrink: 0;
1004
+ margin-top: 0.125rem;
1005
+ color: var(--cat-text-muted);
1006
+ }
1007
+ .cat-status__content {
1008
+ min-width: 0;
1009
+ }
1010
+ .cat-status__title {
1011
+ font-size: 0.8125rem;
1012
+ font-weight: 500;
1013
+ color: var(--cat-text);
1014
+ }
1015
+ .cat-status__hint {
1016
+ margin-top: 0.25rem;
1017
+ font-size: 0.75rem;
1018
+ color: var(--cat-text-muted);
1019
+ line-height: 1.4;
1020
+ }
1021
+ .cat-hidden-input {
1022
+ display: none;
1023
+ }
1024
+ .cat-checkout-cta {
1025
+ display: inline-flex;
1026
+ width: auto;
1027
+ min-width: 9rem;
1028
+ align-items: center;
1029
+ justify-content: space-between;
1030
+ gap: 0.65rem;
1031
+ min-height: 2.5rem;
1032
+ padding: 0.3rem 0.35rem 0.3rem 1rem;
1033
+ border: 0;
1034
+ border-radius: 999px;
1035
+ background: var(--cat-accent);
1036
+ color: #fff;
1037
+ font: inherit;
1038
+ font-weight: 650;
1039
+ cursor: pointer;
1040
+ transition: transform 500ms cubic-bezier(0.32, 0.72, 0, 1), opacity 500ms cubic-bezier(0.32, 0.72, 0, 1);
1041
+ }
1042
+ .cat-checkout-cta:hover:not(:disabled) .cat-checkout-cta__icon {
1043
+ transform: scale(1.07);
1044
+ }
1045
+ .cat-checkout-cta:active:not(:disabled) {
1046
+ transform: scale(0.98);
1047
+ }
1048
+ .cat-checkout-cta:disabled {
1049
+ cursor: not-allowed;
1050
+ opacity: 0.5;
1051
+ }
1052
+ .cat-checkout-cta__icon {
1053
+ display: inline-flex;
1054
+ width: 1.85rem;
1055
+ height: 1.85rem;
1056
+ align-items: center;
1057
+ justify-content: center;
1058
+ border-radius: 50%;
1059
+ background: rgba(255, 255, 255, 0.16);
1060
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.18);
1061
+ transition: transform 500ms cubic-bezier(0.32, 0.72, 0, 1);
1062
+ }
1063
+ .cat-checkout {
1064
+ width: min(72rem, 100%);
1065
+ max-width: 72rem;
1066
+ min-height: 100dvh;
1067
+ margin: 0 auto;
1068
+ padding: clamp(2rem, 6vw, 5rem) clamp(1rem, 4vw, 3rem);
1069
+ color: var(--cat-text);
1070
+ animation: cat-checkout-enter 700ms cubic-bezier(0.32, 0.72, 0, 1) both;
1071
+ }
1072
+ .cat-checkout__intro {
1073
+ display: flex;
1074
+ flex-direction: column;
1075
+ align-items: flex-start;
1076
+ gap: 0.85rem;
1077
+ max-width: 44rem;
1078
+ margin-bottom: clamp(1.5rem, 4vw, 3rem);
1079
+ }
1080
+ .cat-checkout__steps {
1081
+ display: flex;
1082
+ flex-wrap: wrap;
1083
+ gap: 0.5rem;
1084
+ margin: 0;
1085
+ padding: 0;
1086
+ list-style: none;
1087
+ }
1088
+ .cat-checkout__step {
1089
+ display: inline-flex;
1090
+ align-items: center;
1091
+ min-height: 2rem;
1092
+ padding: 0.3rem 0.75rem;
1093
+ border: 1px solid var(--cat-glass-border);
1094
+ border-radius: 999px;
1095
+ color: var(--cat-text-muted);
1096
+ font-size: 0.6875rem;
1097
+ font-weight: 650;
1098
+ letter-spacing: 0.08em;
1099
+ text-transform: uppercase;
1100
+ }
1101
+ .cat-checkout__step--current {
1102
+ border-color: color-mix(in srgb, var(--cat-accent) 45%, var(--cat-glass-border));
1103
+ background: color-mix(in srgb, var(--cat-accent) 12%, transparent);
1104
+ color: var(--cat-text);
1105
+ }
1106
+ .cat-checkout__intro h1,
1107
+ .cat-checkout__success h1,
1108
+ .cat-checkout__empty h1 {
1109
+ margin: 0;
1110
+ font-size: clamp(2rem, 5vw, 4.25rem);
1111
+ line-height: 0.98;
1112
+ letter-spacing: -0.045em;
1113
+ }
1114
+ .cat-checkout__eyebrow {
1115
+ display: inline-flex;
1116
+ margin: 0;
1117
+ padding: 0.35rem 0.7rem;
1118
+ border: 1px solid var(--cat-glass-border);
1119
+ border-radius: 999px;
1120
+ background: var(--cat-input-bg);
1121
+ color: var(--cat-text-muted);
1122
+ font-size: 0.625rem;
1123
+ font-weight: 650;
1124
+ letter-spacing: 0.18em;
1125
+ text-transform: uppercase;
1126
+ }
1127
+ .cat-checkout__layout {
1128
+ display: grid;
1129
+ grid-template-columns: minmax(16rem, 0.8fr) minmax(22rem, 1.2fr);
1130
+ gap: clamp(1rem, 3vw, 2rem);
1131
+ align-items: start;
1132
+ }
1133
+ .cat-checkout__flow {
1134
+ display: grid;
1135
+ gap: 1rem;
1136
+ }
1137
+ .cat-checkout__bezel {
1138
+ padding: 0.4rem;
1139
+ border: 1px solid var(--cat-glass-border);
1140
+ border-radius: calc(var(--cat-radius) + 0.45rem);
1141
+ background: color-mix(in srgb, var(--cat-glass-bg-strong) 52%, transparent);
1142
+ }
1143
+ .cat-checkout__core {
1144
+ padding: clamp(1rem, 3vw, 1.6rem);
1145
+ border-radius: var(--cat-radius);
1146
+ background: var(--cat-overlay-bg);
1147
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.16);
1148
+ }
1149
+ .cat-checkout__summary {
1150
+ position: sticky;
1151
+ top: 1.5rem;
1152
+ }
1153
+ .cat-checkout__section-heading {
1154
+ display: flex;
1155
+ align-items: center;
1156
+ gap: 0.6rem;
1157
+ margin-bottom: 1rem;
1158
+ }
1159
+ .cat-checkout__section-heading svg {
1160
+ color: var(--cat-accent);
1161
+ }
1162
+ .cat-checkout__section-heading h2 {
1163
+ margin: 0;
1164
+ font-size: 0.95rem;
1165
+ }
1166
+ .cat-checkout__items {
1167
+ margin: 0;
1168
+ padding: 0;
1169
+ list-style: none;
1170
+ }
1171
+ .cat-checkout__item {
1172
+ display: flex;
1173
+ align-items: center;
1174
+ justify-content: space-between;
1175
+ gap: 1rem;
1176
+ padding: 0.8rem 0;
1177
+ border-top: 1px solid var(--cat-glass-border);
1178
+ content-visibility: auto;
1179
+ contain-intrinsic-size: auto 3.5rem;
1180
+ font-size: 0.8125rem;
1181
+ }
1182
+ .cat-checkout__item-copy {
1183
+ display: flex;
1184
+ min-width: 0;
1185
+ align-items: center;
1186
+ gap: 0.75rem;
1187
+ }
1188
+ .cat-checkout__item-image,
1189
+ .cat-checkout__item-image--placeholder {
1190
+ width: 2.75rem;
1191
+ height: 2.75rem;
1192
+ flex-shrink: 0;
1193
+ border-radius: 0.75rem;
1194
+ object-fit: cover;
1195
+ background: var(--cat-input-bg);
1196
+ }
1197
+ .cat-checkout__item-image--placeholder {
1198
+ display: grid;
1199
+ place-items: center;
1200
+ color: var(--cat-text-muted);
1201
+ }
1202
+ .cat-checkout__item small {
1203
+ display: block;
1204
+ margin-top: 0.2rem;
1205
+ color: var(--cat-text-muted);
1206
+ }
1207
+ .cat-checkout__summary-total {
1208
+ display: flex;
1209
+ justify-content: space-between;
1210
+ padding-top: 1rem;
1211
+ border-top: 1px solid var(--cat-glass-border);
1212
+ }
1213
+ .cat-checkout__address-grid {
1214
+ display: grid;
1215
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1216
+ gap: 0.75rem;
1217
+ }
1218
+ .cat-checkout__field {
1219
+ display: grid;
1220
+ gap: 0.35rem;
1221
+ }
1222
+ .cat-checkout__field--wide {
1223
+ grid-column: 1 / -1;
1224
+ }
1225
+ .cat-checkout__field span {
1226
+ color: var(--cat-text-muted);
1227
+ font-size: 0.6875rem;
1228
+ font-weight: 550;
1229
+ }
1230
+ .cat-checkout__field input,
1231
+ .cat-checkout__field select {
1232
+ width: 100%;
1233
+ min-height: 2.75rem;
1234
+ padding: 0.65rem 0.75rem;
1235
+ border: 1px solid var(--cat-glass-border);
1236
+ border-radius: 0.75rem;
1237
+ outline: 0;
1238
+ background: var(--cat-input-bg);
1239
+ color: var(--cat-text);
1240
+ font: inherit;
1241
+ font-size: 0.8125rem;
1242
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1);
1243
+ }
1244
+ .cat-checkout__field input:focus,
1245
+ .cat-checkout__field select:focus {
1246
+ border-color: var(--cat-accent);
1247
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1), 0 0 0 3px color-mix(in srgb, var(--cat-accent) 18%, transparent);
1248
+ }
1249
+ .cat-checkout__checkbox {
1250
+ display: flex;
1251
+ align-items: center;
1252
+ gap: 0.55rem;
1253
+ margin: 1rem 0;
1254
+ color: var(--cat-text-muted);
1255
+ font-size: 0.75rem;
1256
+ }
1257
+ .cat-checkout__checkbox input {
1258
+ accent-color: var(--cat-accent);
1259
+ }
1260
+ .cat-checkout__billing {
1261
+ margin-top: 1rem;
1262
+ padding-top: 1rem;
1263
+ border-top: 1px solid var(--cat-glass-border);
1264
+ }
1265
+ .cat-checkout__billing h3 {
1266
+ margin: 0 0 0.75rem;
1267
+ font-size: 0.8125rem;
1268
+ }
1269
+ .cat-checkout__secondary,
1270
+ .cat-checkout__back {
1271
+ display: inline-flex;
1272
+ align-items: center;
1273
+ justify-content: center;
1274
+ gap: 0.45rem;
1275
+ min-height: 2.65rem;
1276
+ margin-top: 1rem;
1277
+ padding: 0.6rem 1rem;
1278
+ border: 1px solid var(--cat-glass-border);
1279
+ border-radius: 999px;
1280
+ background: var(--cat-input-bg);
1281
+ color: var(--cat-text);
1282
+ font: inherit;
1283
+ font-size: 0.8125rem;
1284
+ font-weight: 600;
1285
+ text-decoration: none;
1286
+ cursor: pointer;
1287
+ transition: transform 450ms cubic-bezier(0.32, 0.72, 0, 1), opacity 450ms cubic-bezier(0.32, 0.72, 0, 1);
1288
+ }
1289
+ .cat-checkout__secondary:active,
1290
+ .cat-checkout__back:active {
1291
+ transform: scale(0.98);
1292
+ }
1293
+ .cat-checkout__shipping-methods {
1294
+ display: grid;
1295
+ gap: 0.6rem;
1296
+ }
1297
+ .cat-checkout__shipping-card {
1298
+ display: flex;
1299
+ width: 100%;
1300
+ align-items: center;
1301
+ justify-content: space-between;
1302
+ gap: 1rem;
1303
+ padding: 0.85rem;
1304
+ border: 1px solid var(--cat-glass-border);
1305
+ border-radius: 1rem;
1306
+ background: var(--cat-input-bg);
1307
+ color: var(--cat-text);
1308
+ text-align: left;
1309
+ cursor: pointer;
1310
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1);
1311
+ transition: transform 450ms cubic-bezier(0.32, 0.72, 0, 1), border-color 450ms cubic-bezier(0.32, 0.72, 0, 1);
1312
+ }
1313
+ .cat-checkout__shipping-card:hover:not(:disabled) {
1314
+ transform: translateY(-0.1rem);
1315
+ }
1316
+ .cat-checkout__shipping-card--selected {
1317
+ border-color: var(--cat-accent);
1318
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.16), 0 0 0 2px color-mix(in srgb, var(--cat-accent) 12%, transparent);
1319
+ }
1320
+ .cat-checkout__shipping-copy {
1321
+ display: grid;
1322
+ gap: 0.2rem;
1323
+ }
1324
+ .cat-checkout__shipping-copy small,
1325
+ .cat-checkout__empty-methods {
1326
+ color: var(--cat-text-muted);
1327
+ font-size: 0.75rem;
1328
+ }
1329
+ .cat-checkout__shipping-price {
1330
+ display: flex;
1331
+ align-items: center;
1332
+ gap: 0.6rem;
1333
+ font-size: 0.75rem;
1334
+ font-weight: 650;
1335
+ }
1336
+ .cat-checkout__shipping-check {
1337
+ display: inline-flex;
1338
+ width: 1.6rem;
1339
+ height: 1.6rem;
1340
+ align-items: center;
1341
+ justify-content: center;
1342
+ border-radius: 50%;
1343
+ background: color-mix(in srgb, var(--cat-accent) 15%, transparent);
1344
+ color: var(--cat-accent);
1345
+ }
1346
+ .cat-checkout__empty-methods {
1347
+ margin: 0;
1348
+ }
1349
+ .cat-checkout__place-island {
1350
+ position: sticky;
1351
+ bottom: 1rem;
1352
+ z-index: 10;
1353
+ display: grid;
1354
+ gap: 0.45rem;
1355
+ width: min(25rem, calc(100% - 2rem));
1356
+ margin: 2rem 0 0 auto;
1357
+ padding: 0.35rem;
1358
+ border: 1px solid var(--cat-glass-border);
1359
+ border-radius: 1.75rem;
1360
+ background: var(--cat-glass-bg-strong);
1361
+ backdrop-filter: blur(var(--cat-blur)) saturate(160%);
1362
+ -webkit-backdrop-filter: blur(var(--cat-blur)) saturate(160%);
1363
+ box-shadow: var(--cat-glass-shadow);
1364
+ }
1365
+ .cat-checkout__place-island .cat-checkout-cta {
1366
+ width: 100%;
1367
+ }
1368
+ .cat-checkout__place-hint {
1369
+ margin: 0;
1370
+ padding: 0 0.85rem 0.35rem;
1371
+ color: var(--cat-text-muted);
1372
+ font-size: 0.6875rem;
1373
+ line-height: 1.35;
1374
+ }
1375
+ .cat-checkout__success,
1376
+ .cat-checkout__empty {
1377
+ max-width: 34rem;
1378
+ margin: clamp(3rem, 10vh, 8rem) auto;
1379
+ text-align: center;
1380
+ }
1381
+ .cat-checkout__empty .cat-checkout__core,
1382
+ .cat-checkout__success .cat-checkout__core {
1383
+ display: flex;
1384
+ flex-direction: column;
1385
+ align-items: center;
1386
+ gap: 0.9rem;
1387
+ padding: clamp(2rem, 6vw, 4rem);
1388
+ }
1389
+ .cat-checkout__success-icon {
1390
+ display: inline-flex;
1391
+ width: 4rem;
1392
+ height: 4rem;
1393
+ align-items: center;
1394
+ justify-content: center;
1395
+ border-radius: 50%;
1396
+ background: color-mix(in srgb, var(--cat-accent) 15%, transparent);
1397
+ color: var(--cat-accent);
1398
+ }
1399
+ .cat-order-status__badges {
1400
+ display: flex;
1401
+ flex-wrap: wrap;
1402
+ align-items: stretch;
1403
+ gap: 0.75rem;
1404
+ width: 100%;
1405
+ }
1406
+ .cat-order-status__badge {
1407
+ display: flex;
1408
+ flex: 0 0 auto;
1409
+ flex-direction: column;
1410
+ justify-content: center;
1411
+ gap: 0.15rem;
1412
+ box-sizing: border-box;
1413
+ min-width: 0;
1414
+ padding: 0.5rem 0.85rem;
1415
+ border: 1px solid var(--cat-glass-border);
1416
+ border-radius: 0.85rem;
1417
+ background: var(--cat-input-bg);
1418
+ font-size: 0.8125rem;
1419
+ font-weight: 650;
1420
+ }
1421
+ .cat-order-status__badge small {
1422
+ display: block;
1423
+ color: var(--cat-text-muted);
1424
+ font-size: 0.625rem;
1425
+ font-weight: 600;
1426
+ letter-spacing: 0.04em;
1427
+ text-transform: uppercase;
1428
+ }
1429
+ .cat-order-status__placed {
1430
+ margin: 0;
1431
+ color: var(--cat-text-muted);
1432
+ font-size: 0.8125rem;
1433
+ font-weight: 500;
1434
+ letter-spacing: 0.01em;
1435
+ }
1436
+ .cat-order-status__copy {
1437
+ margin: 0.35rem 0 0;
1438
+ color: var(--cat-text-muted);
1439
+ font-size: 0.8125rem;
1440
+ line-height: 1.45;
1441
+ }
1442
+ .cat-order-status__tracking {
1443
+ display: grid;
1444
+ gap: 0.75rem;
1445
+ margin: 0;
1446
+ padding: 0;
1447
+ list-style: none;
1448
+ }
1449
+ .cat-order-status__tracking li {
1450
+ display: grid;
1451
+ gap: 0.2rem;
1452
+ }
1453
+ .cat-order-status__tracking small {
1454
+ color: var(--cat-text-muted);
1455
+ }
1456
+ .cat-order-status__list {
1457
+ display: grid;
1458
+ gap: 0.65rem;
1459
+ margin: 0;
1460
+ padding: 0;
1461
+ list-style: none;
1462
+ }
1463
+ .cat-order-status__list-link {
1464
+ display: flex;
1465
+ align-items: center;
1466
+ justify-content: space-between;
1467
+ gap: 1rem;
1468
+ padding: 0.85rem 1rem;
1469
+ border: 1px solid var(--cat-glass-border);
1470
+ border-radius: 0.95rem;
1471
+ background: var(--cat-input-bg);
1472
+ color: inherit;
1473
+ text-decoration: none;
1474
+ }
1475
+ .cat-order-status__list-link:hover,
1476
+ .cat-order-status__list-link:focus-visible {
1477
+ border-color: color-mix(in srgb, var(--cat-accent) 45%, var(--cat-glass-border));
1478
+ }
1479
+ .cat-order-status__list-copy,
1480
+ .cat-order-status__list-meta {
1481
+ display: grid;
1482
+ gap: 0.2rem;
1483
+ }
1484
+ .cat-order-status__list-meta {
1485
+ text-align: right;
1486
+ }
1487
+ .cat-order-status__list-copy small,
1488
+ .cat-order-status__list-meta small {
1489
+ color: var(--cat-text-muted);
1490
+ font-size: 0.75rem;
1491
+ }
1492
+ @keyframes cat-checkout-enter {
1493
+ from {
1494
+ opacity: 0;
1495
+ transform: translateY(1.5rem);
1496
+ }
1497
+ to {
1498
+ opacity: 1;
1499
+ transform: translateY(0);
1500
+ }
1501
+ }
1502
+ @media (max-width: 767px) {
1503
+ .cat-checkout {
1504
+ padding: 2rem 1rem 6rem;
1505
+ }
1506
+ .cat-checkout__layout {
1507
+ grid-template-columns: 1fr;
1508
+ }
1509
+ .cat-checkout__summary {
1510
+ position: static;
1511
+ }
1512
+ .cat-checkout__address-grid {
1513
+ grid-template-columns: 1fr;
1514
+ }
1515
+ .cat-checkout__field--wide {
1516
+ grid-column: auto;
1517
+ }
1518
+ .cat-checkout__place-island {
1519
+ width: calc(100% - 1rem);
1520
+ margin: 1.5rem auto 0;
1521
+ }
1522
+ }
1523
+ @media (prefers-reduced-motion: reduce) {
1524
+ .cat-checkout,
1525
+ .cat-checkout-cta,
1526
+ .cat-checkout-cta__icon,
1527
+ .cat-checkout__secondary,
1528
+ .cat-checkout__back,
1529
+ .cat-checkout__shipping-card,
1530
+ .cat-cart-panel,
1531
+ .cat-cart-panel__auth-form,
1532
+ .cat-cart-panel__auth-toggle svg {
1533
+ animation: none;
1534
+ transition-duration: 1ms;
1535
+ }
1536
+ }
1537
+ .cat-drag-overlay {
1538
+ position: absolute;
1539
+ inset: 0.35rem;
1540
+ z-index: 3;
1541
+ display: flex;
1542
+ align-items: center;
1543
+ justify-content: center;
1544
+ background: color-mix(in srgb, var(--cat-accent) 14%, var(--cat-overlay-bg));
1545
+ border: 1px solid color-mix(in srgb, var(--cat-accent) 40%, var(--cat-glass-border));
1546
+ border-radius: calc(var(--cat-shell-radius) - 0.2rem);
1547
+ font-size: 0.875rem;
1548
+ font-weight: 600;
1549
+ color: var(--cat-accent);
1550
+ pointer-events: none;
1551
+ }
1552
+ .cat-wrapper {
1553
+ position: relative;
1554
+ }
1555
+ .cat-voice-banner {
1556
+ margin-top: 0.5rem;
1557
+ padding: 0.625rem 0.875rem;
1558
+ background: var(--cat-overlay-bg);
1559
+ border: 1px solid var(--cat-glass-border);
1560
+ border-radius: var(--cat-radius);
1561
+ box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1);
1562
+ }
1563
+ .cat-voice-banner--error {
1564
+ border-color: rgba(239, 68, 68, 0.35);
1565
+ }
1566
+ .cat-voice-banner__content {
1567
+ display: flex;
1568
+ align-items: center;
1569
+ gap: 0.625rem;
1570
+ min-width: 0;
1571
+ }
1572
+ .cat-voice-banner__label {
1573
+ font-size: 0.8125rem;
1574
+ font-weight: 500;
1575
+ color: var(--cat-text);
1576
+ white-space: nowrap;
1577
+ flex: 1;
1578
+ min-width: 0;
1579
+ }
1580
+ .cat-voice-banner--error .cat-voice-banner__label {
1581
+ color: #ef4444;
1582
+ white-space: normal;
1583
+ }
1584
+ .cat-voice-banner__dismiss {
1585
+ flex-shrink: 0;
1586
+ display: inline-flex;
1587
+ align-items: center;
1588
+ justify-content: center;
1589
+ width: 1.5rem;
1590
+ height: 1.5rem;
1591
+ margin-left: auto;
1592
+ padding: 0;
1593
+ border: none;
1594
+ border-radius: 0.375rem;
1595
+ background: transparent;
1596
+ color: var(--cat-text-muted);
1597
+ cursor: pointer;
1598
+ }
1599
+ .cat-voice-banner__dismiss:hover {
1600
+ color: var(--cat-text);
1601
+ background: color-mix(in srgb, var(--cat-text) 8%, transparent);
1602
+ }
1603
+ .cat-voice-banner__timer {
1604
+ font-size: 0.75rem;
1605
+ font-variant-numeric: tabular-nums;
1606
+ color: var(--cat-text-muted);
1607
+ margin-left: auto;
1608
+ }
1609
+ .cat-voice-banner__hint {
1610
+ font-size: 0.75rem;
1611
+ color: var(--cat-text-muted);
1612
+ white-space: nowrap;
1613
+ }
1614
+ .cat-voice-dot {
1615
+ flex-shrink: 0;
1616
+ width: 0.5rem;
1617
+ height: 0.5rem;
1618
+ border-radius: 50%;
1619
+ background: #ef4444;
1620
+ animation: cat-voice-dot-pulse 1.5s var(--cat-ease) infinite;
1621
+ }
1622
+ @keyframes cat-voice-dot-pulse {
1623
+ 0%, 100% {
1624
+ opacity: 1;
1625
+ transform: scale(1);
1626
+ }
1627
+ 50% {
1628
+ opacity: 0.65;
1629
+ transform: scale(0.9);
1630
+ }
1631
+ }
1632
+ .cat-voice-waveform {
1633
+ display: flex;
1634
+ align-items: center;
1635
+ gap: 0.1875rem;
1636
+ height: 1rem;
1637
+ }
1638
+ .cat-voice-waveform span {
1639
+ display: block;
1640
+ width: 0.1875rem;
1641
+ height: 1rem;
1642
+ border-radius: 0.125rem;
1643
+ background: var(--cat-accent);
1644
+ transform: scaleY(0.38);
1645
+ transform-origin: center;
1646
+ animation: cat-voice-wave 1.1s var(--cat-ease) infinite;
1647
+ }
1648
+ .cat-voice-waveform span:nth-child(1) {
1649
+ animation-delay: 0s;
1650
+ }
1651
+ .cat-voice-waveform span:nth-child(2) {
1652
+ animation-delay: 0.15s;
1653
+ }
1654
+ .cat-voice-waveform span:nth-child(3) {
1655
+ animation-delay: 0.3s;
1656
+ }
1657
+ .cat-voice-waveform span:nth-child(4) {
1658
+ animation-delay: 0.45s;
1659
+ }
1660
+ .cat-voice-waveform span:nth-child(5) {
1661
+ animation-delay: 0.6s;
1662
+ }
1663
+ @keyframes cat-voice-wave {
1664
+ 0%, 100% {
1665
+ opacity: 0.55;
1666
+ transform: scaleY(0.38);
1667
+ }
1668
+ 50% {
1669
+ opacity: 1;
1670
+ transform: scaleY(1);
1671
+ }
1672
+ }
1673
+ .cat-voice-spinner {
1674
+ flex-shrink: 0;
1675
+ width: 0.55rem;
1676
+ height: 0.55rem;
1677
+ border-radius: 50%;
1678
+ background: var(--cat-accent);
1679
+ animation: cat-voice-pulse 1s var(--cat-ease) infinite;
1680
+ }
1681
+ @keyframes cat-voice-pulse {
1682
+ 0%, 100% {
1683
+ opacity: 0.35;
1684
+ transform: scale(0.85);
1685
+ }
1686
+ 50% {
1687
+ opacity: 1;
1688
+ transform: scale(1);
1689
+ }
1690
+ }
1691
+ @media (prefers-reduced-motion: reduce) {
1692
+ .cat-voice-dot {
1693
+ animation: none;
1694
+ }
1695
+ .cat-voice-waveform span {
1696
+ animation: none;
1697
+ opacity: 0.85;
1698
+ transform: scaleY(0.7);
1699
+ }
1700
+ .cat-voice-spinner {
1701
+ animation: none;
1702
+ opacity: 1;
1703
+ }
1704
+ }
1705
+ @media (max-width: 30rem) {
1706
+ .cat-voice-banner__hint {
1707
+ display: none;
1708
+ }
1709
+ }
1710
+ .cat-camera-overlay {
1711
+ position: fixed;
1712
+ inset: 0;
1713
+ z-index: 40;
1714
+ display: flex;
1715
+ align-items: center;
1716
+ justify-content: center;
1717
+ padding: 1rem;
1718
+ background: rgba(5, 5, 8, 0.62);
1719
+ }
1720
+ .cat-camera-overlay__panel {
1721
+ width: min(100%, 24rem);
1722
+ padding: 0.4rem;
1723
+ background: color-mix(in srgb, var(--cat-glass-bg-strong) 70%, transparent);
1724
+ border: 1px solid var(--cat-glass-border);
1725
+ border-radius: var(--cat-shell-radius);
1726
+ box-shadow: var(--cat-overlay-shadow);
1727
+ }
1728
+ .cat-camera-overlay__panel > * {
1729
+ padding: 0.75rem;
1730
+ border-radius: calc(var(--cat-shell-radius) - 0.4rem);
1731
+ background: var(--cat-overlay-bg);
1732
+ }
1733
+ .cat-camera-preview {
1734
+ display: block;
1735
+ width: 100%;
1736
+ aspect-ratio: 4 / 3;
1737
+ object-fit: cover;
1738
+ border-radius: calc(var(--cat-radius) - 0.25rem);
1739
+ background: #0f172a;
1740
+ }
1741
+ .cat-camera-actions {
1742
+ display: flex;
1743
+ justify-content: flex-end;
1744
+ gap: 0.5rem;
1745
+ margin-top: 0.75rem;
1746
+ }
1747
+ .cat-camera-overlay__btn {
1748
+ display: inline-flex;
1749
+ align-items: center;
1750
+ gap: 0.375rem;
1751
+ padding: 0.5rem 0.75rem;
1752
+ border: 1px solid var(--cat-glass-border);
1753
+ border-radius: calc(var(--cat-radius) - 0.25rem);
1754
+ background: transparent;
1755
+ color: var(--cat-text);
1756
+ font-size: 0.8125rem;
1757
+ font-weight: 500;
1758
+ cursor: pointer;
1759
+ }
1760
+ .cat-camera-overlay__btn:hover {
1761
+ background: rgba(255, 255, 255, 0.06);
1762
+ }
1763
+ .cat-camera-overlay__btn--primary {
1764
+ border-color: transparent;
1765
+ background: var(--cat-accent);
1766
+ color: #fff;
1767
+ }
1768
+ .cat-camera-overlay__btn--primary:hover {
1769
+ background: color-mix(in srgb, var(--cat-accent) 88%, #000);
1770
+ }
1771
+ .cat-camera-overlay__btn--secondary {
1772
+ margin-right: auto;
1773
+ }
1774
+ .cat-camera-overlay__error {
1775
+ display: grid;
1776
+ gap: 0.75rem;
1777
+ }
1778
+ .cat-camera-overlay__error p {
1779
+ margin: 0;
1780
+ font-size: 0.8125rem;
1781
+ color: #ef4444;
1782
+ }
1783
+ /*# sourceMappingURL=index.css.map */