@develemit/commerce-admin 0.6.0 → 0.8.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 (81) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +88 -9
  3. package/dist/client/admin-client.d.ts +4 -2
  4. package/dist/client/errors.d.ts +9 -0
  5. package/dist/client/index.js +1 -1
  6. package/dist/client-ClTCzt-p.js +190 -0
  7. package/dist/client-ClTCzt-p.js.map +1 -0
  8. package/dist/components/admin-layout/admin-layout.d.ts +6 -6
  9. package/dist/components/admin-layout/current-item.d.ts +1 -0
  10. package/dist/components/admin-layout/nav-icons.d.ts +9 -0
  11. package/dist/components/admin-layout/nav-items.d.ts +39 -0
  12. package/dist/components/admin-layout/use-current-href.d.ts +1 -0
  13. package/dist/components/admin-layout/use-more-sheet.d.ts +5 -0
  14. package/dist/components/empty-state/empty-state.d.ts +10 -0
  15. package/dist/components/notice/notice.d.ts +5 -1
  16. package/dist/components/page-header/admin-page-header.d.ts +8 -0
  17. package/dist/components/setup-checklist/setup-checklist.d.ts +15 -0
  18. package/dist/components/switch/switch.d.ts +7 -0
  19. package/dist/index.d.ts +12 -0
  20. package/dist/index.js +3758 -1276
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/admin-labels.d.ts +5 -0
  23. package/dist/lib/currency-symbol.d.ts +1 -0
  24. package/dist/lib/discount-labels.d.ts +1 -0
  25. package/dist/lib/fill-alts.d.ts +3 -0
  26. package/dist/lib/order-action-labels.d.ts +2 -0
  27. package/dist/lib/order-labels.d.ts +1 -0
  28. package/dist/lib/product-draft.d.ts +14 -0
  29. package/dist/lib/product-flow-labels.d.ts +63 -0
  30. package/dist/lib/product-labels.d.ts +61 -0
  31. package/dist/lib/product-missing.d.ts +4 -0
  32. package/dist/lib/product-sheet-actions.d.ts +13 -0
  33. package/dist/lib/provider.d.ts +2 -0
  34. package/dist/lib/shipping-labels.d.ts +2 -0
  35. package/dist/lib/stock-labels.d.ts +43 -0
  36. package/dist/lib/use-batch-upload.d.ts +39 -0
  37. package/dist/lib/use-focus-trap.d.ts +2 -0
  38. package/dist/lib/use-image-upload.d.ts +3 -2
  39. package/dist/lib/use-product-autosave.d.ts +99 -0
  40. package/dist/lib/use-product-pages.d.ts +3 -2
  41. package/dist/styles.css +1743 -57
  42. package/dist/views/orders/admin-order-detail.d.ts +2 -1
  43. package/dist/views/orders/order-actions.d.ts +2 -1
  44. package/dist/views/orders/resolve-button.d.ts +3 -1
  45. package/dist/views/orders/ship-form.d.ts +4 -1
  46. package/dist/views/products/add-several/admin-add-several.d.ts +5 -0
  47. package/dist/views/products/add-several/photo-picker.d.ts +9 -0
  48. package/dist/views/products/admin-product-editor.d.ts +3 -1
  49. package/dist/views/products/admin-product-images.d.ts +2 -0
  50. package/dist/views/products/admin-product-list.d.ts +13 -1
  51. package/dist/views/products/finish-drafts/admin-finish-drafts.d.ts +7 -0
  52. package/dist/views/products/finish-drafts/piece-card.d.ts +10 -0
  53. package/dist/views/products/finish-drafts/piece-fields.d.ts +7 -0
  54. package/dist/views/products/finish-drafts/piece-summary.d.ts +11 -0
  55. package/dist/views/products/finish-drafts/use-publish-pieces.d.ts +54 -0
  56. package/dist/views/products/product-card.d.ts +6 -0
  57. package/dist/views/products/product-flow/admin-product-flow.d.ts +15 -0
  58. package/dist/views/products/product-flow/basics-section.d.ts +6 -0
  59. package/dist/views/products/product-flow/flow-actions.d.ts +13 -0
  60. package/dist/views/products/product-flow/flow-frame.d.ts +30 -0
  61. package/dist/views/products/product-flow/flow-images.d.ts +7 -0
  62. package/dist/views/products/product-flow/flow-section-props.d.ts +5 -0
  63. package/dist/views/products/product-flow/flow-success.d.ts +8 -0
  64. package/dist/views/products/product-flow/flow-test-helpers.d.ts +12 -0
  65. package/dist/views/products/product-flow/materials-field.d.ts +6 -0
  66. package/dist/views/products/product-flow/photos-section.d.ts +9 -0
  67. package/dist/views/products/product-flow/preview-section.d.ts +10 -0
  68. package/dist/views/products/product-flow/story-section.d.ts +8 -0
  69. package/dist/views/products/product-flow/use-product-flow.d.ts +143 -0
  70. package/dist/views/products/product-sheet/admin-product-sheet.d.ts +8 -0
  71. package/dist/views/products/product-sheet/delete-draft-button.d.ts +9 -0
  72. package/dist/views/products/product-sheet/sheet-carousel.d.ts +4 -0
  73. package/dist/views/products/product-sheet/sheet-edit-link.d.ts +14 -0
  74. package/dist/views/products/product-sheet/use-product-change.d.ts +16 -0
  75. package/dist/views/products/product-toolbar.d.ts +10 -0
  76. package/dist/views/products/product-welcome.d.ts +8 -0
  77. package/dist/views/shipping/admin-shipping-rates.d.ts +6 -1
  78. package/dist/views/shipping/shipping-rate-row.d.ts +2 -1
  79. package/package.json +11 -3
  80. package/dist/client-CSjuKdIE.js +0 -178
  81. package/dist/client-CSjuKdIE.js.map +0 -1
package/dist/styles.css CHANGED
@@ -1,4 +1,31 @@
1
1
  .sfa-root {
2
+ --sfa-accent-soft: var(
3
+ --sf-color-accent-soft,
4
+ color-mix(
5
+ in srgb,
6
+ var(--sf-color-accent, #1a1a1a) 12%,
7
+ var(--sf-color-bg, #ffffff)
8
+ )
9
+ );
10
+ --sfa-success: var(--sf-color-success, #1b7a3d);
11
+ --sfa-success-soft: var(
12
+ --sf-color-success-soft,
13
+ color-mix(in srgb, var(--sfa-success) 14%, var(--sf-color-bg, #ffffff))
14
+ );
15
+ --sfa-warning: var(--sf-color-warning, #b26a00);
16
+ --sfa-warning-soft: var(
17
+ --sf-color-warning-soft,
18
+ color-mix(in srgb, var(--sfa-warning) 14%, var(--sf-color-bg, #ffffff))
19
+ );
20
+ --sfa-shadow-raised: var(
21
+ --sf-shadow-raised,
22
+ 0 6px 20px color-mix(in srgb, var(--sf-color-fg, #1a1a1a) 14%, transparent)
23
+ );
24
+ --sfa-focus: var(--sf-color-focus, var(--sf-color-accent, #1a1a1a));
25
+ --sfa-radius-sm: min(calc(var(--sf-radius, 4px) * 3), 12px);
26
+ --sfa-radius-md: min(calc(var(--sf-radius, 4px) * 4), 16px);
27
+ --sfa-radius-lg: min(calc(var(--sf-radius, 4px) * 5), 22px);
28
+ --sfa-unit: var(--sf-space-unit, 0.25rem);
2
29
  color: var(--sf-color-fg, #1a1a1a);
3
30
  background: var(--sf-color-bg, #ffffff);
4
31
  font-family: var(--sf-font-body, system-ui, sans-serif);
@@ -9,44 +36,330 @@
9
36
  background: var(--sf-color-surface, #f6f6f6);
10
37
  padding: calc(var(--sf-space-unit, 0.25rem) * 4);
11
38
  }
12
- .sfa-btn {
13
- min-width: 44px;
14
- min-height: 44px;
15
- padding: 0 calc(var(--sf-space-unit, 0.25rem) * 4);
39
+ .sfa-root :focus-visible {
40
+ outline: 3px solid var(--sfa-focus);
41
+ outline-offset: 2px;
42
+ }
43
+ .sfa-btn,
44
+ .sfa-chip {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ gap: calc(var(--sfa-unit) * 2);
49
+ box-sizing: border-box;
16
50
  font: inherit;
17
- font-size: 1rem;
51
+ font-weight: 700;
52
+ text-decoration: none;
18
53
  border: 1px solid var(--sf-color-border, #e0e0e0);
19
- border-radius: var(--sf-radius, 4px);
20
- background: var(--sf-color-bg, #ffffff);
21
- color: inherit;
54
+ border-radius: 999px;
55
+ background: var(--sf-color-surface, #f6f6f6);
56
+ color: var(--sf-color-fg, #1a1a1a);
22
57
  cursor: pointer;
23
58
  }
59
+ .sfa-btn {
60
+ min-width: 48px;
61
+ min-height: 48px;
62
+ padding: 0 calc(var(--sfa-unit) * 5);
63
+ font-size: 1rem;
64
+ }
24
65
  .sfa-btn--primary {
25
66
  background: var(--sf-color-accent, #1a1a1a);
67
+ border-color: var(--sf-color-accent, #1a1a1a);
26
68
  color: var(--sf-color-accent-fg, #ffffff);
27
69
  }
70
+ .sfa-btn--ghost {
71
+ background: transparent;
72
+ border-color: transparent;
73
+ }
28
74
  .sfa-btn--danger {
29
75
  background: var(--sf-color-danger, #b00020);
76
+ border-color: var(--sf-color-danger, #b00020);
30
77
  color: #ffffff;
31
78
  }
79
+ .sfa-btn:disabled {
80
+ opacity: 0.5;
81
+ cursor: not-allowed;
82
+ }
83
+ /* 44px, not the 40px of the design: admin-tap-targets.spec guards filters. */
84
+ .sfa-chip {
85
+ min-height: 44px;
86
+ padding: 0 calc(var(--sfa-unit) * 4);
87
+ font-size: 0.875rem;
88
+ white-space: nowrap;
89
+ }
90
+ .sfa-chip[aria-pressed='true'] {
91
+ background: var(--sf-color-accent, #1a1a1a);
92
+ border-color: var(--sf-color-accent, #1a1a1a);
93
+ color: var(--sf-color-accent-fg, #ffffff);
94
+ }
95
+ .sfa-input,
96
+ .sfa-root
97
+ :is(input, select, textarea):not(
98
+ [type='checkbox'],
99
+ [type='radio'],
100
+ [type='file'],
101
+ [type='hidden']
102
+ ) {
103
+ box-sizing: border-box;
104
+ min-height: 52px;
105
+ padding: 12px 14px;
106
+ font: inherit;
107
+ font-size: 1rem;
108
+ border: 1px solid var(--sf-color-border, #e0e0e0);
109
+ border-radius: var(--sf-radius, 4px);
110
+ background: var(--sf-color-surface, #ffffff);
111
+ color: var(--sf-color-fg, #1a1a1a);
112
+ }
113
+ .sfa-input:focus,
114
+ .sfa-root :is(input, select, textarea):focus {
115
+ border-color: var(--sf-color-accent, #1a1a1a);
116
+ outline: none;
117
+ box-shadow: 0 0 0 3px var(--sfa-accent-soft);
118
+ }
119
+ .sfa-root input[type='checkbox'],
120
+ .sfa-root input[type='radio'] {
121
+ min-height: 24px;
122
+ }
123
+ .sfa-btn--quiet-danger {
124
+ background: transparent;
125
+ border-color: var(--sf-color-danger, #b00020);
126
+ color: var(--sf-color-danger, #b00020);
127
+ font-weight: 600;
128
+ }
129
+ .sfa-btn--icon {
130
+ padding: 0;
131
+ width: 48px;
132
+ }
32
133
  .sfa-layout {
33
- display: flex;
34
- flex-direction: column;
35
134
  min-height: 100vh;
135
+ padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
36
136
  }
37
- .sfa-nav ul {
38
- display: flex;
39
- flex-wrap: wrap;
40
- gap: calc(var(--sf-space-unit, 0.25rem) * 2);
137
+ .sfa-layout__content {
138
+ box-sizing: border-box;
139
+ width: 100%;
140
+ max-width: 1120px;
141
+ margin: 0 auto;
142
+ padding: calc(var(--sfa-unit) * 4);
143
+ }
144
+ .sfa-sidebar {
145
+ display: none;
146
+ }
147
+ .sfa-nav ul,
148
+ .sfa-tabbar ul,
149
+ .sfa-more__list {
41
150
  margin: 0;
42
- padding: calc(var(--sf-space-unit, 0.25rem) * 2);
151
+ padding: 0;
43
152
  list-style: none;
44
153
  }
45
- .sfa-nav__link {
154
+ .sfa-nav__icon {
46
155
  display: inline-flex;
156
+ }
157
+ .sfa-nav__badge {
158
+ min-width: 20px;
159
+ padding: 0 6px;
160
+ border-radius: 999px;
161
+ background: var(--sf-color-accent, #1a1a1a);
162
+ color: var(--sf-color-accent-fg, #ffffff);
163
+ font-size: 0.75rem;
164
+ font-weight: 700;
165
+ line-height: 20px;
166
+ text-align: center;
167
+ }
168
+ .sfa-tabbar {
169
+ position: fixed;
170
+ inset: auto 0 0 0;
171
+ z-index: 40;
172
+ padding-bottom: env(safe-area-inset-bottom, 0px);
173
+ background: var(--sf-color-bg, #ffffff);
174
+ border-top: 1px solid var(--sf-color-border, #e0e0e0);
175
+ }
176
+ .sfa-tabbar ul {
177
+ display: flex;
178
+ }
179
+ .sfa-tabbar li {
180
+ flex: 1;
181
+ min-width: 0;
182
+ }
183
+ .sfa-tabbar__item {
184
+ position: relative;
185
+ display: flex;
186
+ flex-direction: column;
47
187
  align-items: center;
48
- min-height: 44px;
49
- padding: 0 calc(var(--sf-space-unit, 0.25rem) * 3);
188
+ justify-content: center;
189
+ gap: 2px;
190
+ width: 100%;
191
+ min-height: 64px;
192
+ box-sizing: border-box;
193
+ padding: 6px 2px;
194
+ font: inherit;
195
+ font-size: 0.75rem;
196
+ font-weight: 700;
197
+ text-decoration: none;
198
+ color: var(--sf-color-fg, #1a1a1a);
199
+ background: transparent;
200
+ border: 0;
201
+ cursor: pointer;
202
+ }
203
+ .sfa-tabbar__item .sfa-nav__label {
204
+ max-width: 100%;
205
+ overflow: hidden;
206
+ text-overflow: ellipsis;
207
+ white-space: nowrap;
208
+ }
209
+ .sfa-tabbar__item .sfa-nav__badge {
210
+ position: absolute;
211
+ top: 6px;
212
+ left: calc(50% + 6px);
213
+ }
214
+ .sfa-nav__badge--dot {
215
+ min-width: 10px;
216
+ width: 10px;
217
+ height: 10px;
218
+ padding: 0;
219
+ }
220
+ .sfa-tabbar__item.is-current {
221
+ color: var(--sf-color-accent, #1a1a1a);
222
+ }
223
+ .sfa-tabbar__item.is-current .sfa-nav__icon {
224
+ padding: 2px 16px;
225
+ border-radius: 999px;
226
+ background: var(--sfa-accent-soft);
227
+ }
228
+ .sfa-tabbar__item.is-current .sfa-nav__label {
229
+ text-decoration: underline;
230
+ text-underline-offset: 3px;
231
+ }
232
+ .sfa-more .sfa-nav__link.is-current {
233
+ color: var(--sf-color-accent, #1a1a1a);
234
+ text-decoration: underline;
235
+ text-underline-offset: 4px;
236
+ }
237
+ .sfa-more[hidden] {
238
+ display: none;
239
+ }
240
+ .sfa-more {
241
+ position: fixed;
242
+ inset: auto 0 calc(64px + env(safe-area-inset-bottom, 0px)) 0;
243
+ z-index: 45;
244
+ display: grid;
245
+ gap: calc(var(--sfa-unit) * 3);
246
+ padding: calc(var(--sfa-unit) * 4);
247
+ background: var(--sf-color-bg, #ffffff);
248
+ border-radius: 20px 20px 0 0;
249
+ box-shadow: var(--sfa-shadow-raised);
250
+ }
251
+ .sfa-more__backdrop {
252
+ position: fixed;
253
+ inset: 0;
254
+ z-index: 42;
255
+ border: 0;
256
+ background: rgba(0, 0, 0, 0.4);
257
+ }
258
+ .sfa-more .sfa-nav__link {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: calc(var(--sfa-unit) * 3);
262
+ min-height: 48px;
263
+ color: inherit;
264
+ text-decoration: none;
265
+ font-weight: 700;
266
+ }
267
+ .sfa-page-header {
268
+ margin-bottom: calc(var(--sfa-unit) * 4);
269
+ }
270
+ .sfa-page-header__row {
271
+ display: flex;
272
+ align-items: center;
273
+ justify-content: space-between;
274
+ gap: calc(var(--sfa-unit) * 3);
275
+ }
276
+ .sfa-page-header__title {
277
+ margin: 0;
278
+ font-family: var(--sf-font-display, inherit);
279
+ font-size: 1.75rem;
280
+ line-height: 1.1;
281
+ min-width: 0;
282
+ }
283
+ .sfa-page-header__actions {
284
+ display: flex;
285
+ align-items: center;
286
+ gap: calc(var(--sfa-unit) * 2);
287
+ flex: none;
288
+ }
289
+ .sfa-fab .sfa-btn {
290
+ position: fixed;
291
+ right: calc(var(--sfa-unit) * 4);
292
+ bottom: calc(80px + env(safe-area-inset-bottom, 0px));
293
+ z-index: 35;
294
+ box-shadow: var(--sfa-shadow-raised);
295
+ }
296
+ @media (min-width: 900px) {
297
+ .sfa-layout {
298
+ display: grid;
299
+ grid-template-columns: 240px minmax(0, 1fr);
300
+ align-items: start;
301
+ padding-bottom: 0;
302
+ }
303
+ .sfa-tabbar,
304
+ .sfa-more,
305
+ .sfa-more__backdrop {
306
+ display: none;
307
+ }
308
+ .sfa-sidebar {
309
+ position: sticky;
310
+ top: 0;
311
+ display: flex;
312
+ flex-direction: column;
313
+ gap: calc(var(--sfa-unit) * 6);
314
+ box-sizing: border-box;
315
+ height: 100vh;
316
+ padding: calc(var(--sfa-unit) * 6) calc(var(--sfa-unit) * 4);
317
+ border-right: 1px solid var(--sf-color-border, #e0e0e0);
318
+ background: var(--sf-color-surface, #f6f6f6);
319
+ }
320
+ .sfa-sidebar .sfa-nav ul {
321
+ display: grid;
322
+ gap: calc(var(--sfa-unit) * 1);
323
+ }
324
+ .sfa-sidebar .sfa-nav__link {
325
+ display: flex;
326
+ align-items: center;
327
+ gap: calc(var(--sfa-unit) * 3);
328
+ min-height: 48px;
329
+ padding: 0 calc(var(--sfa-unit) * 3);
330
+ border-radius: var(--sf-radius, 8px);
331
+ color: inherit;
332
+ text-decoration: none;
333
+ font-weight: 600;
334
+ }
335
+ .sfa-sidebar .sfa-nav__link:hover {
336
+ background: var(--sfa-accent-soft);
337
+ }
338
+ .sfa-sidebar .sfa-nav__link.is-current {
339
+ background: var(--sfa-accent-soft);
340
+ color: var(--sf-color-accent, #1a1a1a);
341
+ font-weight: 800;
342
+ }
343
+ .sfa-sidebar .sfa-nav__badge {
344
+ margin-left: auto;
345
+ }
346
+ .sfa-sidebar .sfa-layout__footer {
347
+ margin-top: auto;
348
+ }
349
+ .sfa-layout__content {
350
+ padding: calc(var(--sfa-unit) * 10) calc(var(--sfa-unit) * 8);
351
+ }
352
+ .sfa-page-header__title {
353
+ font-size: 2rem;
354
+ }
355
+ .sfa-fab .sfa-btn {
356
+ position: static;
357
+ box-shadow: none;
358
+ }
359
+ }
360
+
361
+ .sfa-more__close {
362
+ justify-self: end;
50
363
  }
51
364
  /* Bare inline links measure ~22px; hosts cannot restyle kit internals. */
52
365
  .sfa-link--tap {
@@ -55,10 +368,6 @@
55
368
  min-height: 44px;
56
369
  padding: 0 calc(var(--sf-space-unit, 0.25rem) * 2);
57
370
  }
58
- .sfa-layout__content {
59
- flex: 1;
60
- padding: calc(var(--sf-space-unit, 0.25rem) * 4);
61
- }
62
371
  .sfa-badge {
63
372
  display: inline-block;
64
373
  padding: 2px 10px;
@@ -115,6 +424,7 @@
115
424
  }
116
425
  }
117
426
  .sfa-notice {
427
+ scroll-margin-bottom: calc(96px + env(safe-area-inset-bottom, 0px));
118
428
  display: flex;
119
429
  align-items: center;
120
430
  justify-content: space-between;
@@ -155,12 +465,6 @@
155
465
  gap: calc(var(--sf-space-unit, 0.25rem) * 2);
156
466
  margin-top: calc(var(--sf-space-unit, 0.25rem) * 4);
157
467
  }
158
- .sfa-root input,
159
- .sfa-root select,
160
- .sfa-root textarea {
161
- font-size: 1rem;
162
- min-height: 44px;
163
- }
164
468
  .sfa-filter-group {
165
469
  display: flex;
166
470
  flex-wrap: nowrap;
@@ -172,6 +476,15 @@
172
476
  overflow-x: auto;
173
477
  overscroll-behavior-x: contain;
174
478
  scrollbar-width: none;
479
+ background:
480
+ linear-gradient(to right, var(--sf-color-bg, #ffffff) 30%, transparent) left
481
+ center / 24px 100% no-repeat local,
482
+ linear-gradient(to left, var(--sf-color-bg, #ffffff) 30%, transparent) right
483
+ center / 24px 100% no-repeat local,
484
+ radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, 0.3), transparent)
485
+ left center / 14px 100% no-repeat scroll,
486
+ radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, 0.3), transparent)
487
+ right center / 14px 100% no-repeat scroll;
175
488
  }
176
489
  .sfa-filter-group::-webkit-scrollbar {
177
490
  display: none;
@@ -180,22 +493,17 @@
180
493
  flex-shrink: 0;
181
494
  white-space: nowrap;
182
495
  }
183
- .sfa-products__header {
184
- display: flex;
185
- flex-wrap: wrap;
186
- align-items: center;
187
- justify-content: space-between;
188
- gap: calc(var(--sf-space-unit, 0.25rem) * 3);
189
- }
190
496
  .sfa-products__toolbar {
191
497
  display: flex;
192
498
  flex-wrap: wrap;
193
499
  gap: calc(var(--sf-space-unit, 0.25rem) * 3);
194
500
  margin: calc(var(--sf-space-unit, 0.25rem) * 4) 0;
195
501
  }
196
- .sfa-filter[aria-pressed='true'] {
197
- background: var(--sf-color-accent, #1a1a1a);
198
- color: var(--sf-color-accent-fg, #ffffff);
502
+ .sfa-products__toolbar .sfa-filter-group {
503
+ flex: 1 1 100%;
504
+ }
505
+ .sfa-products__toolbar .sfa-search-toggle {
506
+ flex: none;
199
507
  }
200
508
  .sfa-thumb {
201
509
  display: inline-flex;
@@ -389,30 +697,1408 @@
389
697
  gap: calc(var(--sf-space-unit, 0.25rem) * 3);
390
698
  justify-items: start;
391
699
  }
392
- .sfa-rates {
393
- list-style: none;
394
- margin: calc(var(--sf-space-unit, 0.25rem) * 4) 0;
395
- padding: 0;
396
- display: grid;
397
- gap: calc(var(--sf-space-unit, 0.25rem) * 4);
700
+
701
+ .sfa-order__section > h2,
702
+ .sfa-order__action > h3 {
703
+ margin: 0 0 calc(var(--sf-space-unit, 0.25rem) * 2);
704
+ font-size: 1.125rem;
705
+ font-weight: 700;
706
+ line-height: 1.3;
398
707
  }
399
- .sfa-rate {
708
+ .sfa-order__buttons {
709
+ display: flex;
710
+ flex-wrap: wrap;
711
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
712
+ }
713
+ .sfa-order__section dt {
714
+ font-size: 0.875rem;
715
+ opacity: 0.7;
716
+ }
717
+ .sfa-order__section dd {
718
+ margin: 0 0 calc(var(--sf-space-unit, 0.25rem) * 2);
719
+ }
720
+ .sfa-order__columns {
721
+ display: block;
722
+ }
723
+ @media (min-width: 900px) {
724
+ .sfa-order__columns {
725
+ display: grid;
726
+ grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
727
+ gap: calc(var(--sf-space-unit, 0.25rem) * 8);
728
+ align-items: start;
729
+ }
730
+ }
731
+ .sfa-orders .sfa-table--stacked tbody tr {
732
+ position: relative;
733
+ }
734
+ .sfa-orders .sfa-table--stacked td:first-child a::after {
735
+ content: '';
736
+ position: absolute;
737
+ inset: 0;
738
+ }
739
+ @media (max-width: 639px) {
740
+ .sfa-orders .sfa-table--stacked tbody tr {
741
+ display: grid;
742
+ grid-template-columns: 1fr auto;
743
+ gap: calc(var(--sf-space-unit, 0.25rem) * 1)
744
+ calc(var(--sf-space-unit, 0.25rem) * 3);
745
+ padding: calc(var(--sf-space-unit, 0.25rem) * 3);
746
+ }
747
+ .sfa-orders .sfa-table--stacked td {
748
+ padding: 0;
749
+ border: 0;
750
+ }
751
+ .sfa-orders .sfa-table--stacked td::before {
752
+ display: none;
753
+ }
754
+ .sfa-orders .sfa-table--stacked td[data-col='items'] {
755
+ display: none;
756
+ }
757
+ }
758
+ .sfa-order__action {
759
+ justify-items: stretch;
760
+ }
761
+ .sfa-order__action .sfa-field,
762
+ .sfa-order__action input {
763
+ width: 100%;
764
+ box-sizing: border-box;
765
+ }
766
+ .sfa-order__action .sfa-order__buttons {
767
+ justify-self: start;
768
+ }
769
+ .sfa-order__refund-btn {
770
+ justify-self: start;
771
+ margin-top: calc(var(--sf-space-unit, 0.25rem) * 4);
772
+ }
773
+ .sfa-order__actions > * + .sfa-order__refund-btn {
774
+ padding-top: 0;
775
+ }
776
+ .sfa-link--external {
777
+ color: var(--sf-color-accent, #1a1a1a);
778
+ text-decoration: underline;
779
+ text-underline-offset: 3px;
780
+ font-weight: 600;
781
+ }
782
+ .sfa-orders__toolbar input[type='search'] {
783
+ flex: 1 1 12rem;
784
+ min-width: 0;
785
+ }
786
+ .sfa-link--external::after {
787
+ content: '↗';
788
+ margin-left: 0.25em;
789
+ }
790
+ .sfa-grid {
400
791
  display: grid;
401
- grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
402
- gap: calc(var(--sf-space-unit, 0.25rem) * 3);
403
- align-items: end;
404
- padding: calc(var(--sf-space-unit, 0.25rem) * 4);
405
- border: 1px solid var(--sf-color-border, #d4d4d4);
792
+ grid-template-columns: repeat(2, minmax(0, 1fr));
793
+ gap: calc(var(--sfa-unit) * 3);
794
+ margin: 0;
795
+ padding: 0 0 calc(96px + env(safe-area-inset-bottom, 0px));
796
+ list-style: none;
797
+ }
798
+ .sfa-card {
799
+ position: relative;
800
+ display: flex;
801
+ flex-direction: column;
802
+ gap: calc(var(--sfa-unit) * 2);
803
+ min-width: 0;
804
+ padding: calc(var(--sfa-unit) * 2);
805
+ border: 1px solid var(--sf-color-border, #e0e0e0);
406
806
  border-radius: var(--sf-radius, 4px);
807
+ background: var(--sf-color-surface, #ffffff);
808
+ transition:
809
+ transform 0.15s ease,
810
+ box-shadow 0.15s ease;
407
811
  }
408
- .sfa-rate__active {
812
+ .sfa-card__face {
409
813
  display: flex;
410
- align-items: center;
411
- gap: calc(var(--sf-space-unit, 0.25rem) * 2);
814
+ flex-direction: column;
815
+ gap: calc(var(--sfa-unit) * 1);
412
816
  }
413
- .sfa-rate__actions,
414
- .sfa-shipping__actions {
817
+ .sfa-card__name::after {
818
+ content: '';
819
+ position: absolute;
820
+ inset: 0;
821
+ }
822
+ .sfa-card__photo {
823
+ position: relative;
824
+ display: block;
825
+ aspect-ratio: 1;
826
+ overflow: hidden;
827
+ border-radius: var(--sf-radius, 4px);
828
+ background: var(--sfa-accent-soft);
829
+ }
830
+ .sfa-card__photo img {
831
+ display: block;
832
+ width: 100%;
833
+ height: 100%;
834
+ object-fit: cover;
835
+ }
836
+ .sfa-card__nophoto {
837
+ position: absolute;
838
+ inset: 0;
415
839
  display: flex;
416
- flex-wrap: wrap;
417
- gap: calc(var(--sf-space-unit, 0.25rem) * 2);
840
+ align-items: center;
841
+ justify-content: center;
842
+ font-size: 0.875rem;
843
+ opacity: 0.6;
844
+ }
845
+ .sfa-card__pill {
846
+ position: absolute;
847
+ top: calc(var(--sfa-unit) * 2);
848
+ left: calc(var(--sfa-unit) * 2);
849
+ }
850
+ .sfa-card__pill .sfa-badge {
851
+ background: var(--sf-color-bg, #ffffff);
852
+ font-size: 0.75rem;
853
+ font-weight: 700;
854
+ }
855
+ .sfa-card[data-status='active'] .sfa-badge {
856
+ background: var(--sfa-success-soft);
857
+ color: var(--sfa-success);
858
+ border-color: transparent;
859
+ }
860
+ .sfa-card[data-status='draft'] .sfa-badge {
861
+ background: var(--sfa-warning-soft);
862
+ color: var(--sfa-warning);
863
+ border-color: transparent;
864
+ }
865
+ .sfa-card__star {
866
+ position: absolute;
867
+ top: calc(var(--sfa-unit) * 2);
868
+ right: calc(var(--sfa-unit) * 2);
869
+ color: var(--sfa-warning);
870
+ font-size: 1.125rem;
871
+ }
872
+ .sfa-card__name {
873
+ min-width: 0;
874
+ padding: 0;
875
+ border: 0;
876
+ background: none;
877
+ appearance: none;
878
+ font: inherit;
879
+ font-weight: 700;
880
+ line-height: 1.3;
881
+ max-height: 2.6em;
882
+ cursor: pointer;
883
+ color: inherit;
884
+ text-decoration: none;
885
+ overflow: hidden;
886
+ text-align: left;
887
+ display: -webkit-box;
888
+ -webkit-box-orient: vertical;
889
+ -webkit-line-clamp: 2;
890
+ line-clamp: 2;
891
+ overflow-wrap: anywhere;
892
+ }
893
+ .sfa-card__name:focus-visible {
894
+ outline: none;
895
+ }
896
+ .sfa-card:has(.sfa-card__name:focus-visible) {
897
+ outline: 3px solid var(--sfa-focus);
898
+ outline-offset: 2px;
899
+ }
900
+ .sfa-card__price {
901
+ text-align: left;
902
+ font-size: 0.875rem;
903
+ }
904
+ .sfa-card__price.is-missing {
905
+ color: var(--sfa-warning);
906
+ font-weight: 600;
907
+ }
908
+ .sfa-card__actions {
909
+ position: relative;
910
+ z-index: 1;
911
+ display: flex;
912
+ flex-wrap: wrap;
913
+ gap: calc(var(--sfa-unit) * 2);
914
+ }
915
+ .sfa-card__actions .sfa-btn {
916
+ min-height: 44px;
917
+ padding: 0 calc(var(--sfa-unit) * 3);
918
+ font-size: 0.875rem;
919
+ }
920
+ .sfa-chip__count {
921
+ margin-left: calc(var(--sfa-unit) * 2);
922
+ opacity: 0.7;
923
+ }
924
+ .sfa-banner {
925
+ display: flex;
926
+ flex-wrap: wrap;
927
+ align-items: center;
928
+ justify-content: space-between;
929
+ gap: calc(var(--sfa-unit) * 3);
930
+ margin-bottom: calc(var(--sfa-unit) * 4);
931
+ padding: calc(var(--sfa-unit) * 3) calc(var(--sfa-unit) * 4);
932
+ border-radius: var(--sf-radius, 4px);
933
+ background: var(--sfa-warning-soft);
934
+ color: var(--sfa-warning);
935
+ font-weight: 600;
936
+ }
937
+ .sfa-search-toggle {
938
+ display: inline-flex;
939
+ }
940
+ .sfa-search {
941
+ display: none;
942
+ flex: 1 1 100%;
943
+ max-width: 24rem;
944
+ }
945
+ .sfa-search::-webkit-search-cancel-button {
946
+ appearance: none;
947
+ width: 16px;
948
+ height: 16px;
949
+ cursor: pointer;
950
+ background: var(--sf-color-fg, #1a1a1a);
951
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 3l10 10M13 3L3 13' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")
952
+ center / contain no-repeat;
953
+ }
954
+ .sfa-search.is-open {
955
+ display: block;
956
+ }
957
+ .sfa-welcome {
958
+ display: flex;
959
+ flex-direction: column;
960
+ gap: calc(var(--sfa-unit) * 6);
961
+ max-width: 720px;
962
+ }
963
+ .sfa-welcome__hero {
964
+ display: flex;
965
+ flex-direction: column;
966
+ align-items: center;
967
+ gap: calc(var(--sfa-unit) * 3);
968
+ padding: calc(var(--sfa-unit) * 8) calc(var(--sfa-unit) * 4);
969
+ border-radius: var(--sf-radius, 4px);
970
+ background: var(--sfa-accent-soft);
971
+ text-align: center;
972
+ }
973
+ .sfa-welcome__art {
974
+ color: var(--sf-color-accent, #1a1a1a);
975
+ }
976
+ .sfa-welcome__title {
977
+ margin: 0;
978
+ font-family: var(--sf-font-display, inherit);
979
+ font-size: 1.5rem;
980
+ }
981
+ .sfa-welcome__body {
982
+ margin: 0;
983
+ }
984
+ .sfa-welcome__actions {
985
+ display: flex;
986
+ flex-wrap: wrap;
987
+ justify-content: center;
988
+ gap: calc(var(--sfa-unit) * 3);
989
+ }
990
+ @media (min-width: 640px) {
991
+ .sfa-grid {
992
+ grid-template-columns: repeat(3, minmax(0, 1fr));
993
+ }
994
+ }
995
+ @media (min-width: 900px) {
996
+ .sfa-grid {
997
+ grid-template-columns: repeat(4, minmax(0, 1fr));
998
+ padding-bottom: 0;
999
+ }
1000
+ .sfa-search-toggle {
1001
+ display: none;
1002
+ }
1003
+ .sfa-search {
1004
+ display: block;
1005
+ }
1006
+ .sfa-card:hover {
1007
+ transform: translateY(calc(-1 * var(--sf-card-hover-lift, 0px)));
1008
+ box-shadow: var(--sf-card-hover-shadow, none);
1009
+ }
1010
+ }
1011
+ @media (min-width: 1200px) {
1012
+ .sfa-grid {
1013
+ grid-template-columns: repeat(5, minmax(0, 1fr));
1014
+ }
1015
+ }
1016
+ @media (prefers-reduced-motion: reduce) {
1017
+ .sfa-card {
1018
+ transition: none;
1019
+ }
1020
+ }
1021
+ .sfa-setup {
1022
+ margin-bottom: calc(var(--sfa-unit) * 4);
1023
+ padding: calc(var(--sfa-unit) * 4);
1024
+ border: 1px solid var(--sf-color-border, #e0e0e0);
1025
+ border-radius: var(--sf-radius, 4px);
1026
+ background: var(--sf-color-surface, #ffffff);
1027
+ }
1028
+ .sfa-setup__head,
1029
+ .sfa-setup__pill {
1030
+ display: flex;
1031
+ align-items: center;
1032
+ justify-content: space-between;
1033
+ gap: calc(var(--sfa-unit) * 3);
1034
+ }
1035
+ .sfa-setup__pill {
1036
+ width: 100%;
1037
+ min-height: 44px;
1038
+ padding: 0;
1039
+ border: 0;
1040
+ background: none;
1041
+ color: inherit;
1042
+ font: inherit;
1043
+ font-weight: 700;
1044
+ cursor: pointer;
1045
+ }
1046
+ .sfa-setup__title {
1047
+ margin: 0;
1048
+ font-size: 1.125rem;
1049
+ }
1050
+ .sfa-setup__count {
1051
+ font-size: 0.875rem;
1052
+ font-weight: 700;
1053
+ }
1054
+ .sfa-setup__bar {
1055
+ height: 8px;
1056
+ margin: calc(var(--sfa-unit) * 3) 0;
1057
+ overflow: hidden;
1058
+ border-radius: 999px;
1059
+ background: var(--sfa-accent-soft);
1060
+ }
1061
+ .sfa-setup__bar span {
1062
+ display: block;
1063
+ height: 100%;
1064
+ background: var(--sf-color-accent, #1a1a1a);
1065
+ }
1066
+ .sfa-setup__list {
1067
+ display: flex;
1068
+ flex-direction: column;
1069
+ gap: calc(var(--sfa-unit) * 2);
1070
+ margin: 0;
1071
+ padding: 0;
1072
+ list-style: none;
1073
+ }
1074
+ .sfa-setup__action {
1075
+ display: flex;
1076
+ align-items: center;
1077
+ gap: calc(var(--sfa-unit) * 3);
1078
+ box-sizing: border-box;
1079
+ width: 100%;
1080
+ min-height: 48px;
1081
+ padding: calc(var(--sfa-unit) * 2);
1082
+ border: 0;
1083
+ background: none;
1084
+ color: inherit;
1085
+ font: inherit;
1086
+ text-align: left;
1087
+ text-decoration: none;
1088
+ }
1089
+ button.sfa-setup__action,
1090
+ a.sfa-setup__action {
1091
+ cursor: pointer;
1092
+ }
1093
+ .sfa-setup__mark {
1094
+ display: inline-flex;
1095
+ flex: none;
1096
+ align-items: center;
1097
+ justify-content: center;
1098
+ width: 24px;
1099
+ height: 24px;
1100
+ border: 2px solid var(--sf-color-border, #e0e0e0);
1101
+ border-radius: 50%;
1102
+ font-size: 0.875rem;
1103
+ }
1104
+ .sfa-setup__step.is-done .sfa-setup__mark {
1105
+ background: var(--sfa-success);
1106
+ border-color: var(--sfa-success);
1107
+ color: #ffffff;
1108
+ }
1109
+ .sfa-setup__step.is-done .sfa-setup__name {
1110
+ text-decoration: line-through;
1111
+ opacity: 0.7;
1112
+ }
1113
+ .sfa-setup__step.is-locked {
1114
+ opacity: 0.6;
1115
+ }
1116
+ .sfa-setup__text {
1117
+ display: flex;
1118
+ flex-direction: column;
1119
+ }
1120
+ .sfa-setup__name {
1121
+ font-weight: 600;
1122
+ }
1123
+ .sfa-setup__detail {
1124
+ font-size: 0.875rem;
1125
+ opacity: 0.8;
1126
+ }
1127
+
1128
+ .sfa-setup__chevron {
1129
+ margin-left: auto;
1130
+ font-size: 1.5rem;
1131
+ line-height: 1;
1132
+ color: var(--sf-color-muted, #666666);
1133
+ }
1134
+ a.sfa-setup__action,
1135
+ button.sfa-setup__action {
1136
+ border-radius: var(--sf-radius, 8px);
1137
+ background: var(--sf-color-bg, #ffffff);
1138
+ border: 1px solid var(--sf-color-border, #e0e0e0);
1139
+ }
1140
+ a.sfa-setup__action:hover,
1141
+ button.sfa-setup__action:hover {
1142
+ background: var(--sfa-accent-soft);
1143
+ }
1144
+ a.sfa-setup__action:active,
1145
+ button.sfa-setup__action:active {
1146
+ background: var(--sfa-accent-soft);
1147
+ transform: scale(0.99);
1148
+ }
1149
+ .sfa-sheet-layer {
1150
+ position: fixed;
1151
+ inset: 0;
1152
+ z-index: 50;
1153
+ }
1154
+ .sfa-sheet__scrim {
1155
+ position: absolute;
1156
+ inset: 0;
1157
+ background: rgba(0, 0, 0, 0.4);
1158
+ }
1159
+ .sfa-sheet {
1160
+ position: absolute;
1161
+ left: 0;
1162
+ right: 0;
1163
+ bottom: 0;
1164
+ max-height: 85vh;
1165
+ overflow-y: auto;
1166
+ padding: calc(var(--sfa-unit) * 4);
1167
+ padding-bottom: calc(env(safe-area-inset-bottom, 0px) + var(--sfa-unit) * 4);
1168
+ border-radius: var(--sfa-radius-sm) var(--sfa-radius-sm) 0 0;
1169
+ background: var(--sf-color-bg, #ffffff);
1170
+ animation: sfa-sheet-up 0.2s ease-out;
1171
+ }
1172
+ .sfa-sheet__grip {
1173
+ display: block;
1174
+ width: 40px;
1175
+ height: 4px;
1176
+ margin: 0 auto calc(var(--sfa-unit) * 3);
1177
+ border-radius: 2px;
1178
+ background: var(--sf-color-border, #e0e0e0);
1179
+ }
1180
+ .sfa-sheet__close {
1181
+ position: absolute;
1182
+ top: calc(var(--sfa-unit) * 3);
1183
+ right: calc(var(--sfa-unit) * 3);
1184
+ z-index: 1;
1185
+ }
1186
+ .sfa-sheet__body {
1187
+ display: flex;
1188
+ flex-direction: column;
1189
+ gap: calc(var(--sfa-unit) * 3);
1190
+ }
1191
+ .sfa-sheet__photo {
1192
+ position: relative;
1193
+ display: flex;
1194
+ align-items: center;
1195
+ justify-content: center;
1196
+ aspect-ratio: 4 / 3;
1197
+ overflow: hidden;
1198
+ border-radius: var(--sf-radius, 4px);
1199
+ background: var(--sf-color-surface, #f5f5f5);
1200
+ }
1201
+ .sfa-sheet__photo img {
1202
+ width: 100%;
1203
+ height: 100%;
1204
+ object-fit: cover;
1205
+ }
1206
+ .sfa-sheet__step {
1207
+ position: absolute;
1208
+ top: 50%;
1209
+ transform: translateY(-50%);
1210
+ min-width: 44px;
1211
+ min-height: 44px;
1212
+ border: 0;
1213
+ border-radius: 50%;
1214
+ background: rgba(255, 255, 255, 0.85);
1215
+ cursor: pointer;
1216
+ }
1217
+ .sfa-sheet__step--prev {
1218
+ left: calc(var(--sfa-unit) * 2);
1219
+ }
1220
+ .sfa-sheet__step--next {
1221
+ right: calc(var(--sfa-unit) * 2);
1222
+ }
1223
+ .sfa-sheet__name {
1224
+ margin: 0;
1225
+ font-weight: 800;
1226
+ }
1227
+ .sfa-sheet__meta {
1228
+ display: flex;
1229
+ flex-wrap: wrap;
1230
+ align-items: center;
1231
+ gap: calc(var(--sfa-unit) * 3);
1232
+ margin: 0;
1233
+ }
1234
+ .sfa-sheet__primary {
1235
+ width: 100%;
1236
+ min-height: 48px;
1237
+ text-align: center;
1238
+ }
1239
+ .sfa-sheet__actions {
1240
+ display: flex;
1241
+ flex-wrap: wrap;
1242
+ gap: calc(var(--sfa-unit) * 2);
1243
+ }
1244
+ @keyframes sfa-sheet-up {
1245
+ from {
1246
+ transform: translateY(24px);
1247
+ opacity: 0;
1248
+ }
1249
+ }
1250
+ @keyframes sfa-sheet-in {
1251
+ from {
1252
+ transform: translateX(24px);
1253
+ opacity: 0;
1254
+ }
1255
+ }
1256
+ @media (min-width: 900px) {
1257
+ .sfa-sheet-layer {
1258
+ pointer-events: none;
1259
+ }
1260
+ .sfa-sheet__scrim {
1261
+ display: none;
1262
+ }
1263
+ .sfa-sheet {
1264
+ left: auto;
1265
+ top: 0;
1266
+ width: 420px;
1267
+ max-height: none;
1268
+ pointer-events: auto;
1269
+ border-radius: 0;
1270
+ border-left: 1px solid var(--sf-color-border, #e0e0e0);
1271
+ animation: sfa-sheet-in 0.2s ease-out;
1272
+ }
1273
+ .sfa-sheet__grip {
1274
+ display: none;
1275
+ }
1276
+ }
1277
+ @media (prefers-reduced-motion: reduce) {
1278
+ .sfa-sheet {
1279
+ animation: none;
1280
+ }
1281
+ }
1282
+ .sfa-switch {
1283
+ display: flex;
1284
+ align-items: center;
1285
+ justify-content: space-between;
1286
+ gap: calc(var(--sfa-unit) * 3);
1287
+ min-height: 56px;
1288
+ font-weight: 700;
1289
+ cursor: pointer;
1290
+ }
1291
+ .sfa-root .sfa-switch input {
1292
+ appearance: none;
1293
+ position: relative;
1294
+ flex: none;
1295
+ width: 52px;
1296
+ height: 32px;
1297
+ min-height: 32px;
1298
+ margin: 0;
1299
+ border-radius: 999px;
1300
+ background: var(--sf-color-border, #c8c8c8);
1301
+ cursor: pointer;
1302
+ transition: background var(--sf-motion-duration, 150ms);
1303
+ }
1304
+ .sfa-switch input::after {
1305
+ content: '';
1306
+ position: absolute;
1307
+ top: 3px;
1308
+ left: 3px;
1309
+ width: 26px;
1310
+ height: 26px;
1311
+ border-radius: 999px;
1312
+ background: #ffffff;
1313
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.25);
1314
+ transition: transform var(--sf-motion-duration, 150ms);
1315
+ }
1316
+ .sfa-switch input:checked {
1317
+ background: var(--sf-color-accent, #1a1a1a);
1318
+ }
1319
+ .sfa-switch input:checked::after {
1320
+ transform: translateX(20px);
1321
+ }
1322
+ .sfa-flow {
1323
+ display: flex;
1324
+ flex-direction: column;
1325
+ background: var(--sf-color-bg, #ffffff);
1326
+ }
1327
+ .sfa-flow__head {
1328
+ display: flex;
1329
+ align-items: center;
1330
+ gap: calc(var(--sfa-unit) * 3);
1331
+ padding: calc(var(--sfa-unit) * 2) calc(var(--sfa-unit) * 4);
1332
+ }
1333
+ .sfa-flow__title {
1334
+ flex: 1;
1335
+ margin: 0;
1336
+ text-align: center;
1337
+ font-size: 1rem;
1338
+ font-weight: 800;
1339
+ }
1340
+ .sfa-flow__steps ol {
1341
+ display: flex;
1342
+ gap: calc(var(--sfa-unit) * 1.5);
1343
+ margin: 0;
1344
+ padding: 0 calc(var(--sfa-unit) * 5) calc(var(--sfa-unit) * 3);
1345
+ list-style: none;
1346
+ }
1347
+ .sfa-flow__steps li {
1348
+ flex: 1;
1349
+ }
1350
+ .sfa-flow__steps button {
1351
+ width: 100%;
1352
+ min-height: 44px;
1353
+ padding: 0;
1354
+ border: 0;
1355
+ background: none;
1356
+ font: inherit;
1357
+ font-size: 0.8125rem;
1358
+ font-weight: 700;
1359
+ text-align: left;
1360
+ color: var(--sf-color-muted, #666666);
1361
+ cursor: pointer;
1362
+ }
1363
+ .sfa-flow__steps button::before {
1364
+ content: '';
1365
+ display: block;
1366
+ height: 4px;
1367
+ margin-bottom: 6px;
1368
+ border-radius: 999px;
1369
+ background: var(--sfa-accent-soft);
1370
+ }
1371
+ .sfa-flow__steps button[data-state='done']::before,
1372
+ .sfa-flow__steps button[aria-current='step']::before {
1373
+ background: var(--sf-color-accent, #1a1a1a);
1374
+ }
1375
+ .sfa-flow__steps button[aria-current='step'] {
1376
+ color: var(--sf-color-accent, #1a1a1a);
1377
+ }
1378
+ .sfa-flow__steps button:disabled {
1379
+ cursor: default;
1380
+ }
1381
+ .sfa-flow__body {
1382
+ flex: 1;
1383
+ overflow-y: auto;
1384
+ padding: calc(var(--sfa-unit) * 1) calc(var(--sfa-unit) * 5)
1385
+ calc(var(--sfa-unit) * 6);
1386
+ }
1387
+ .sfa-flow__section {
1388
+ display: flex;
1389
+ flex-direction: column;
1390
+ gap: calc(var(--sfa-unit) * 4);
1391
+ scroll-margin-top: calc(var(--sfa-unit) * 4);
1392
+ }
1393
+ .sfa-flow__section > h2 {
1394
+ margin: 0;
1395
+ font-family: var(--sf-font-display, inherit);
1396
+ font-size: 1.625rem;
1397
+ line-height: 1.15;
1398
+ }
1399
+ .sfa-flow__lede {
1400
+ margin: calc(var(--sfa-unit) * -3) 0 0;
1401
+ color: var(--sf-color-muted, #666666);
1402
+ }
1403
+ .sfa-flow__foot {
1404
+ display: flex;
1405
+ flex-wrap: wrap;
1406
+ align-items: center;
1407
+ gap: calc(var(--sfa-unit) * 2.5);
1408
+ padding: calc(var(--sfa-unit) * 3) calc(var(--sfa-unit) * 5)
1409
+ calc(env(safe-area-inset-bottom, 0px) + var(--sfa-unit) * 4);
1410
+ border-top: 1px solid var(--sfa-accent-soft);
1411
+ background: var(--sf-color-bg, #ffffff);
1412
+ }
1413
+ .sfa-flow__foot-actions .sfa-btn,
1414
+ .sfa-flow__desk-actions .sfa-btn {
1415
+ flex: 1;
1416
+ white-space: nowrap;
1417
+ }
1418
+ .sfa-flow__foot-actions .sfa-btn--primary {
1419
+ flex: 1.4;
1420
+ }
1421
+ .sfa-flow__saved {
1422
+ display: flex;
1423
+ align-items: center;
1424
+ gap: calc(var(--sfa-unit) * 1.5);
1425
+ margin: 0;
1426
+ font-size: 0.9375rem;
1427
+ font-weight: 700;
1428
+ color: var(--sf-color-muted, #666666);
1429
+ }
1430
+ .sfa-flow__saved.is-saved {
1431
+ color: var(--sf-color-accent, #1a1a1a);
1432
+ }
1433
+ .sfa-flow__saved-check {
1434
+ display: inline-grid;
1435
+ place-items: center;
1436
+ width: 20px;
1437
+ height: 20px;
1438
+ border-radius: 999px;
1439
+ background: var(--sf-color-accent, #1a1a1a);
1440
+ color: var(--sf-color-accent-fg, #ffffff);
1441
+ font-size: 0.75rem;
1442
+ }
1443
+ .sfa-flow__saved.is-error {
1444
+ gap: calc(var(--sfa-unit) * 3);
1445
+ color: var(--sf-color-danger, #b00020);
1446
+ }
1447
+ .sfa-flow__hint {
1448
+ flex-basis: 100%;
1449
+ margin: 0;
1450
+ font-size: 0.875rem;
1451
+ color: var(--sf-color-muted, #666666);
1452
+ }
1453
+ .sfa-flow__foot-actions {
1454
+ display: flex;
1455
+ flex: 1;
1456
+ gap: calc(var(--sfa-unit) * 2.5);
1457
+ }
1458
+ .sfa-flow__step-count,
1459
+ .sfa-flow__btn-text {
1460
+ display: none;
1461
+ }
1462
+ .sfa-flow__chips {
1463
+ display: flex;
1464
+ flex-wrap: wrap;
1465
+ gap: calc(var(--sfa-unit) * 2);
1466
+ }
1467
+ .sfa-flow__price {
1468
+ display: flex;
1469
+ align-items: center;
1470
+ gap: calc(var(--sfa-unit) * 2);
1471
+ font-size: 1.75rem;
1472
+ font-weight: 700;
1473
+ }
1474
+ .sfa-root .sfa-flow__price input {
1475
+ flex: 1;
1476
+ min-width: 0;
1477
+ font-size: 1.75rem;
1478
+ font-weight: 700;
1479
+ }
1480
+ .sfa-flow__alts {
1481
+ display: flex;
1482
+ flex-direction: column;
1483
+ gap: calc(var(--sfa-unit) * 3);
1484
+ margin: 0;
1485
+ padding: 0;
1486
+ border: 0;
1487
+ }
1488
+ .sfa-flow__desk-actions {
1489
+ display: none;
1490
+ gap: calc(var(--sfa-unit) * 2.5);
1491
+ }
1492
+ @media (max-width: 899px) {
1493
+ .sfa-flow:not(.sfa-flow--done) {
1494
+ position: fixed;
1495
+ inset: 0;
1496
+ z-index: 55;
1497
+ }
1498
+ .sfa-flow__section[data-active='false'] {
1499
+ display: none;
1500
+ }
1501
+ }
1502
+ @media (min-width: 900px) {
1503
+ .sfa-flow__steps,
1504
+ .sfa-flow__foot-actions,
1505
+ .sfa-flow__foot .sfa-flow__hint {
1506
+ display: none;
1507
+ }
1508
+ .sfa-flow__head {
1509
+ position: sticky;
1510
+ top: 0;
1511
+ z-index: 5;
1512
+ min-height: 64px;
1513
+ border-bottom: 1px solid var(--sfa-accent-soft);
1514
+ background: var(--sf-color-bg, #ffffff);
1515
+ }
1516
+ .sfa-flow__title {
1517
+ flex: none;
1518
+ text-align: left;
1519
+ font-size: 1.125rem;
1520
+ }
1521
+ .sfa-flow__step-count {
1522
+ display: block;
1523
+ flex: 1;
1524
+ margin: 0;
1525
+ font-size: 0.875rem;
1526
+ font-weight: 700;
1527
+ color: var(--sf-color-muted, #666666);
1528
+ }
1529
+ .sfa-flow__btn-text {
1530
+ display: inline;
1531
+ margin-left: calc(var(--sfa-unit) * 1.5);
1532
+ font-weight: 700;
1533
+ }
1534
+ .sfa-flow__section {
1535
+ scroll-margin-top: 88px;
1536
+ }
1537
+ .sfa-flow__foot {
1538
+ position: sticky;
1539
+ bottom: 0;
1540
+ padding-block: calc(var(--sfa-unit) * 2);
1541
+ }
1542
+ .sfa-flow__foot:not(:has(.sfa-flow__saved)) {
1543
+ display: none;
1544
+ }
1545
+ .sfa-flow__body {
1546
+ display: grid;
1547
+ grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
1548
+ gap: calc(var(--sfa-unit) * 10);
1549
+ align-items: start;
1550
+ overflow: visible;
1551
+ }
1552
+ .sfa-flow__main {
1553
+ display: flex;
1554
+ flex-direction: column;
1555
+ gap: calc(var(--sfa-unit) * 10);
1556
+ }
1557
+ .sfa-flow__aside {
1558
+ position: sticky;
1559
+ top: 88px;
1560
+ }
1561
+ .sfa-flow__desk-actions {
1562
+ display: flex;
1563
+ }
1564
+ }
1565
+ .sfa-flow__dropzone {
1566
+ display: grid;
1567
+ justify-items: center;
1568
+ gap: calc(var(--sfa-unit) * 1.5);
1569
+ padding: calc(var(--sfa-unit) * 7) calc(var(--sfa-unit) * 4);
1570
+ border: 2px dashed var(--sf-color-border, #c8c8c8);
1571
+ border-radius: var(--sfa-radius-md);
1572
+ background: var(--sf-color-surface, #f6f6f6);
1573
+ color: var(--sf-color-accent, #1a1a1a);
1574
+ text-align: center;
1575
+ cursor: pointer;
1576
+ }
1577
+ .sfa-flow__dropzone:focus-within {
1578
+ outline: 3px solid var(--sfa-focus);
1579
+ outline-offset: 2px;
1580
+ }
1581
+ .sfa-flow__dropzone-icon {
1582
+ font-size: 2.5rem;
1583
+ line-height: 1;
1584
+ }
1585
+ .sfa-flow__dropzone strong {
1586
+ font-size: 1.0625rem;
1587
+ }
1588
+ .sfa-flow__dropzone small {
1589
+ color: var(--sf-color-muted, #666666);
1590
+ }
1591
+ .sfa-flow__thumbs {
1592
+ display: grid;
1593
+ grid-template-columns: repeat(3, 1fr);
1594
+ gap: calc(var(--sfa-unit) * 2.5);
1595
+ margin: 0;
1596
+ padding: 0;
1597
+ list-style: none;
1598
+ }
1599
+ .sfa-flow__thumb {
1600
+ position: relative;
1601
+ display: grid;
1602
+ place-items: center;
1603
+ aspect-ratio: 1;
1604
+ overflow: hidden;
1605
+ border: 2px solid transparent;
1606
+ border-radius: var(--sfa-radius-sm);
1607
+ background: var(--sf-color-surface, #f6f6f6);
1608
+ font-size: 0.75rem;
1609
+ text-align: center;
1610
+ }
1611
+ .sfa-flow__thumb.is-cover {
1612
+ border-color: var(--sf-color-accent, #1a1a1a);
1613
+ }
1614
+ .sfa-flow__thumb-pick {
1615
+ width: 100%;
1616
+ height: 100%;
1617
+ padding: 0;
1618
+ border: 0;
1619
+ background: none;
1620
+ cursor: pointer;
1621
+ }
1622
+ .sfa-flow__thumb-pick img {
1623
+ width: 100%;
1624
+ height: 100%;
1625
+ object-fit: cover;
1626
+ }
1627
+ .sfa-flow__badge {
1628
+ position: absolute;
1629
+ left: 6px;
1630
+ bottom: 6px;
1631
+ padding: 2px 8px;
1632
+ border-radius: 999px;
1633
+ background: var(--sf-color-accent, #1a1a1a);
1634
+ color: var(--sf-color-accent-fg, #ffffff);
1635
+ font-size: 0.6875rem;
1636
+ font-weight: 800;
1637
+ }
1638
+ .sfa-flow__thumb-remove {
1639
+ position: absolute;
1640
+ top: 2px;
1641
+ right: 2px;
1642
+ width: 44px;
1643
+ height: 44px;
1644
+ border: 0;
1645
+ border-radius: 999px;
1646
+ background: radial-gradient(circle, rgb(0 0 0 / 0.65) 14px, transparent 15px);
1647
+ color: #ffffff;
1648
+ cursor: pointer;
1649
+ }
1650
+ .sfa-flow__tip {
1651
+ margin: 0;
1652
+ padding: calc(var(--sfa-unit) * 3) calc(var(--sfa-unit) * 3.5);
1653
+ border-radius: var(--sfa-radius-sm);
1654
+ background: var(--sfa-accent-soft);
1655
+ font-size: 0.875rem;
1656
+ }
1657
+ .sfa-flow__preview {
1658
+ padding: calc(var(--sfa-unit) * 4);
1659
+ border: 1px solid var(--sf-color-border, #e0e0e0);
1660
+ border-radius: var(--sfa-radius-lg);
1661
+ background: var(--sf-color-surface, #f6f6f6);
1662
+ }
1663
+ .sfa-flow__preview-label {
1664
+ margin: 0 0 calc(var(--sfa-unit) * 2.5);
1665
+ font-size: 0.75rem;
1666
+ font-weight: 800;
1667
+ letter-spacing: 0.06em;
1668
+ text-transform: uppercase;
1669
+ color: var(--sf-color-muted, #666666);
1670
+ }
1671
+ .sfa-flow__card {
1672
+ width: 100%;
1673
+ max-width: 280px;
1674
+ margin-inline: auto;
1675
+ }
1676
+ .sfa-flow__card-photo {
1677
+ display: grid;
1678
+ place-items: center;
1679
+ aspect-ratio: 1;
1680
+ overflow: hidden;
1681
+ border-radius: var(--sfa-radius-sm);
1682
+ background: var(--sf-color-bg, #ffffff);
1683
+ color: var(--sf-color-muted, #666666);
1684
+ font-size: 0.8125rem;
1685
+ }
1686
+ .sfa-flow__card-photo img {
1687
+ width: 100%;
1688
+ height: 100%;
1689
+ object-fit: cover;
1690
+ }
1691
+ .sfa-flow__card-name {
1692
+ margin: calc(var(--sfa-unit) * 2) 0 0;
1693
+ font-weight: 700;
1694
+ }
1695
+ .sfa-flow__card-price {
1696
+ margin: 0;
1697
+ color: var(--sf-color-muted, #666666);
1698
+ }
1699
+ .sfa-flow__preview-desc {
1700
+ margin: calc(var(--sfa-unit) * 3) 0 0;
1701
+ font-size: 0.875rem;
1702
+ white-space: pre-line;
1703
+ color: var(--sf-color-muted, #666666);
1704
+ }
1705
+ .sfa-flow-success {
1706
+ display: grid;
1707
+ justify-items: center;
1708
+ gap: calc(var(--sfa-unit) * 2.5);
1709
+ padding: calc(var(--sfa-unit) * 10) calc(var(--sfa-unit) * 6);
1710
+ text-align: center;
1711
+ }
1712
+ .sfa-flow-success__photo {
1713
+ width: 170px;
1714
+ height: 170px;
1715
+ overflow: hidden;
1716
+ border-radius: var(--sfa-radius-lg);
1717
+ background: var(--sf-color-surface, #f6f6f6);
1718
+ box-shadow: var(--sfa-shadow-raised);
1719
+ animation: sfa-pop calc(var(--sf-motion-duration, 150ms) * 3)
1720
+ cubic-bezier(0.34, 1.56, 0.64, 1);
1721
+ }
1722
+ .sfa-flow-success__photo img {
1723
+ width: 100%;
1724
+ height: 100%;
1725
+ object-fit: cover;
1726
+ }
1727
+ .sfa-flow-success h2 {
1728
+ margin: 0;
1729
+ font-family: var(--sf-font-display, inherit);
1730
+ font-size: 1.625rem;
1731
+ }
1732
+ .sfa-flow-success p {
1733
+ margin: 0 0 calc(var(--sfa-unit) * 3);
1734
+ color: var(--sf-color-muted, #666666);
1735
+ }
1736
+ .sfa-flow-success .sfa-btn {
1737
+ width: min(100%, 320px);
1738
+ }
1739
+ @keyframes sfa-pop {
1740
+ from {
1741
+ transform: scale(0.6) rotate(-6deg);
1742
+ opacity: 0;
1743
+ }
1744
+ }
1745
+ @media (prefers-reduced-motion: reduce) {
1746
+ .sfa-flow-success__photo {
1747
+ animation: none;
1748
+ }
1749
+ .sfa-switch input,
1750
+ .sfa-switch input::after {
1751
+ transition: none;
1752
+ }
1753
+ }
1754
+
1755
+ .sfa-flow__thumb--add {
1756
+ border: 2px dashed var(--sf-color-border, #c8c8c8);
1757
+ }
1758
+ .sfa-flow__dropzone--tile {
1759
+ width: 100%;
1760
+ height: 100%;
1761
+ align-content: center;
1762
+ padding: calc(var(--sfa-unit) * 2);
1763
+ border: 0;
1764
+ border-radius: 0;
1765
+ }
1766
+ .sfa-flow__dropzone--tile .sfa-flow__dropzone-icon {
1767
+ font-size: 1.75rem;
1768
+ }
1769
+ .sfa-flow__dropzone--tile strong {
1770
+ font-size: 0.8125rem;
1771
+ }
1772
+ .sfa-rates {
1773
+ list-style: none;
1774
+ margin: calc(var(--sf-space-unit, 0.25rem) * 4) 0;
1775
+ padding: 0;
1776
+ display: grid;
1777
+ gap: calc(var(--sf-space-unit, 0.25rem) * 4);
1778
+ }
1779
+ .sfa-rate {
1780
+ display: grid;
1781
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
1782
+ gap: calc(var(--sf-space-unit, 0.25rem) * 3);
1783
+ align-items: end;
1784
+ padding: calc(var(--sf-space-unit, 0.25rem) * 4);
1785
+ border: 1px solid var(--sf-color-border, #d4d4d4);
1786
+ border-radius: var(--sf-radius, 4px);
1787
+ }
1788
+ .sfa-rate__active {
1789
+ display: flex;
1790
+ align-items: center;
1791
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1792
+ }
1793
+ .sfa-rate__actions,
1794
+ .sfa-shipping__actions {
1795
+ display: flex;
1796
+ flex-wrap: wrap;
1797
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1798
+ }
1799
+ .sfa-shipping__feedback {
1800
+ display: grid;
1801
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1802
+ margin-top: calc(var(--sf-space-unit, 0.25rem) * 3);
1803
+ }
1804
+ .sfa-rate > .sfa-field:first-child {
1805
+ grid-column: 1 / -1;
1806
+ }
1807
+ .sfa-rate__money {
1808
+ display: flex;
1809
+ align-items: center;
1810
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1811
+ }
1812
+ .sfa-rate__money input {
1813
+ flex: 1;
1814
+ min-width: 0;
1815
+ }
1816
+ .sfa-rate__prefix {
1817
+ font-weight: 600;
1818
+ }
1819
+ .sfa-empty-state {
1820
+ display: grid;
1821
+ justify-items: center;
1822
+ gap: calc(var(--sf-space-unit, 0.25rem) * 3);
1823
+ max-width: 28rem;
1824
+ margin: calc(var(--sf-space-unit, 0.25rem) * 8) auto;
1825
+ padding: 0 calc(var(--sf-space-unit, 0.25rem) * 4);
1826
+ text-align: center;
1827
+ }
1828
+ .sfa-empty-state__icon {
1829
+ color: var(--sf-color-muted, #737373);
1830
+ }
1831
+ .sfa-empty-state__title {
1832
+ margin: 0;
1833
+ font-size: 1.125rem;
1834
+ }
1835
+ .sfa-empty-state__body {
1836
+ margin: 0;
1837
+ color: var(--sf-color-muted, #737373);
1838
+ }
1839
+ .sfa-empty-state__action {
1840
+ display: flex;
1841
+ flex-wrap: wrap;
1842
+ justify-content: center;
1843
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1844
+ }
1845
+ .sfa-empty-state__chips {
1846
+ display: flex;
1847
+ flex-wrap: wrap;
1848
+ justify-content: center;
1849
+ gap: calc(var(--sf-space-unit, 0.25rem) * 2);
1850
+ margin: 0;
1851
+ padding: 0;
1852
+ list-style: none;
1853
+ }
1854
+ .sfa-batch,
1855
+ .sfa-queue {
1856
+ max-width: 720px;
1857
+ }
1858
+ .sfa-batch__card,
1859
+ .sfa-piece {
1860
+ box-sizing: border-box;
1861
+ min-width: 0;
1862
+ display: grid;
1863
+ gap: calc(var(--sfa-unit, 0.25rem) * 4);
1864
+ padding: calc(var(--sfa-unit, 0.25rem) * 5);
1865
+ border: 1px solid var(--sf-color-border, #e0e0e0);
1866
+ border-radius: var(--sf-radius, 12px);
1867
+ background: var(--sf-color-bg, #ffffff);
1868
+ }
1869
+ .sfa-batch__intro,
1870
+ .sfa-batch__result,
1871
+ .sfa-batch__progress {
1872
+ display: grid;
1873
+ justify-items: start;
1874
+ gap: calc(var(--sfa-unit, 0.25rem) * 3);
1875
+ }
1876
+ .sfa-batch__intro h2,
1877
+ .sfa-batch__result h2,
1878
+ .sfa-piece h2,
1879
+ .sfa-piece p {
1880
+ margin: 0;
1881
+ }
1882
+ .sfa-batch__progress progress,
1883
+ .sfa-piece progress {
1884
+ width: 100%;
1885
+ }
1886
+ .sfa-batch__failed {
1887
+ display: grid;
1888
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
1889
+ margin: 0;
1890
+ padding: 0;
1891
+ list-style: none;
1892
+ }
1893
+ .sfa-batch__actions,
1894
+ .sfa-piece__actions {
1895
+ display: flex;
1896
+ flex-wrap: wrap;
1897
+ justify-content: flex-end;
1898
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
1899
+ }
1900
+ .sfa-piece__count {
1901
+ font-weight: 700;
1902
+ }
1903
+ .sfa-piece__body {
1904
+ display: grid;
1905
+ gap: calc(var(--sfa-unit, 0.25rem) * 4);
1906
+ }
1907
+ .sfa-piece__photo {
1908
+ display: grid;
1909
+ place-items: center;
1910
+ min-height: 12rem;
1911
+ overflow: hidden;
1912
+ border-radius: var(--sf-radius, 12px);
1913
+ background: var(--sf-color-surface, #f6f6f6);
1914
+ }
1915
+ .sfa-piece__photo img {
1916
+ width: 100%;
1917
+ height: 100%;
1918
+ object-fit: cover;
1919
+ }
1920
+ .sfa-piece__fields {
1921
+ display: grid;
1922
+ gap: calc(var(--sfa-unit, 0.25rem) * 4);
1923
+ align-content: start;
1924
+ }
1925
+ @media (min-width: 900px) {
1926
+ .sfa-piece__body {
1927
+ grid-template-columns: 1fr 1fr;
1928
+ align-items: start;
1929
+ }
1930
+ }
1931
+ .sfa-summary__list {
1932
+ display: grid;
1933
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
1934
+ margin: 0;
1935
+ padding: 0;
1936
+ list-style: none;
1937
+ }
1938
+ .sfa-summary__row {
1939
+ display: grid;
1940
+ grid-template-columns: 56px 1fr auto;
1941
+ align-items: center;
1942
+ gap: calc(var(--sfa-unit, 0.25rem) * 3);
1943
+ }
1944
+ .sfa-summary__photo {
1945
+ width: 56px;
1946
+ height: 56px;
1947
+ overflow: hidden;
1948
+ border-radius: var(--sf-radius, 8px);
1949
+ background: var(--sf-color-surface, #f6f6f6);
1950
+ }
1951
+ .sfa-summary__photo img {
1952
+ width: 100%;
1953
+ height: 100%;
1954
+ object-fit: cover;
1955
+ }
1956
+
1957
+ .sfa-piece > *,
1958
+ .sfa-piece__body > *,
1959
+ .sfa-piece__fields > * {
1960
+ min-width: 0;
1961
+ }
1962
+ .sfa-piece__fields input[type='text'] {
1963
+ box-sizing: border-box;
1964
+ max-width: 100%;
1965
+ }
1966
+
1967
+ .sfa-dropzone {
1968
+ box-sizing: border-box;
1969
+ display: grid;
1970
+ justify-items: center;
1971
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
1972
+ width: 100%;
1973
+ padding: calc(var(--sfa-unit, 0.25rem) * 10)
1974
+ calc(var(--sfa-unit, 0.25rem) * 4);
1975
+ border: 2px dashed var(--sf-color-accent, #1a1a1a);
1976
+ border-radius: var(--sf-radius, 12px);
1977
+ background: var(--sfa-accent-soft);
1978
+ text-align: center;
1979
+ cursor: pointer;
1980
+ }
1981
+ .sfa-dropzone:focus-within {
1982
+ outline: 2px solid var(--sf-color-accent, #1a1a1a);
1983
+ outline-offset: 2px;
1984
+ }
1985
+ .sfa-dropzone__icon {
1986
+ display: grid;
1987
+ place-items: center;
1988
+ width: 48px;
1989
+ height: 48px;
1990
+ border-radius: 999px;
1991
+ background: var(--sf-color-accent, #1a1a1a);
1992
+ color: var(--sf-color-accent-fg, #ffffff);
1993
+ font-size: 1.75rem;
1994
+ }
1995
+ .sfa-dropzone__label {
1996
+ font-size: 1.125rem;
1997
+ font-weight: 700;
1998
+ }
1999
+ .sfa-dropzone__hint {
2000
+ color: var(--sf-color-muted, #666666);
2001
+ }
2002
+ .sfa-piece__heading {
2003
+ font-family: var(--sf-font-display, inherit);
2004
+ font-size: 1.625rem;
2005
+ line-height: 1.15;
2006
+ }
2007
+ .sfa-piece progress {
2008
+ height: 8px;
2009
+ appearance: none;
2010
+ border: 0;
2011
+ border-radius: 999px;
2012
+ overflow: hidden;
2013
+ background: var(--sfa-accent-soft);
2014
+ accent-color: var(--sf-color-accent, #1a1a1a);
2015
+ }
2016
+ .sfa-piece progress::-webkit-progress-bar {
2017
+ background: var(--sfa-accent-soft);
2018
+ }
2019
+ .sfa-piece progress::-webkit-progress-value {
2020
+ background: var(--sf-color-accent, #1a1a1a);
2021
+ }
2022
+ .sfa-piece progress::-moz-progress-bar {
2023
+ background: var(--sf-color-accent, #1a1a1a);
2024
+ }
2025
+ .sfa-piece__foot {
2026
+ position: sticky;
2027
+ bottom: calc(64px + env(safe-area-inset-bottom, 0px));
2028
+ z-index: 5;
2029
+ display: flex;
2030
+ flex-wrap: nowrap;
2031
+ justify-content: flex-end;
2032
+ gap: calc(var(--sfa-unit, 0.25rem) * 2);
2033
+ margin: 0 calc(var(--sfa-unit, 0.25rem) * -5)
2034
+ calc(var(--sfa-unit, 0.25rem) * -5);
2035
+ padding: calc(var(--sfa-unit, 0.25rem) * 3) calc(var(--sfa-unit, 0.25rem) * 5);
2036
+ border-top: 1px solid var(--sfa-accent-soft);
2037
+ border-radius: 0 0 var(--sf-radius, 12px) var(--sf-radius, 12px);
2038
+ background: var(--sf-color-bg, #ffffff);
2039
+ }
2040
+ .sfa-piece__foot .sfa-btn {
2041
+ flex: 1;
2042
+ white-space: nowrap;
2043
+ }
2044
+ .sfa-piece__foot .sfa-btn--primary {
2045
+ flex: 1.4;
2046
+ }
2047
+ .sfa-piece__photo img {
2048
+ display: block;
2049
+ height: min(40vh, 14rem);
2050
+ }
2051
+ .sfa-piece--celebrate {
2052
+ justify-items: center;
2053
+ text-align: center;
2054
+ }
2055
+ .sfa-piece__badge {
2056
+ display: grid;
2057
+ place-items: center;
2058
+ width: 64px;
2059
+ height: 64px;
2060
+ border-radius: 999px;
2061
+ background: var(--sfa-success-soft);
2062
+ color: var(--sfa-success);
2063
+ font-size: 2rem;
2064
+ font-weight: 700;
2065
+ }
2066
+ .sfa-piece__actions--center {
2067
+ justify-content: center;
2068
+ }
2069
+ .sfa-summary__list li {
2070
+ min-width: 0;
2071
+ }
2072
+ .sfa-summary__row--open {
2073
+ box-sizing: border-box;
2074
+ grid-template-columns: 56px 1fr auto auto;
2075
+ width: 100%;
2076
+ min-height: 48px;
2077
+ padding: 0;
2078
+ border: 0;
2079
+ background: none;
2080
+ color: inherit;
2081
+ font: inherit;
2082
+ text-align: left;
2083
+ cursor: pointer;
2084
+ }
2085
+ .sfa-summary__row--open:hover .sfa-summary__name {
2086
+ text-decoration: underline;
2087
+ }
2088
+ .sfa-summary__row--open .sfa-summary__price {
2089
+ font-weight: 700;
2090
+ color: var(--sf-color-danger, #b00020);
2091
+ }
2092
+ .sfa-summary__chevron {
2093
+ font-size: 1.5rem;
2094
+ color: var(--sf-color-muted, #666666);
2095
+ }
2096
+ @media (min-width: 900px) {
2097
+ .sfa-piece__foot {
2098
+ bottom: 0;
2099
+ }
2100
+ .sfa-piece__photo img {
2101
+ height: auto;
2102
+ max-height: 24rem;
2103
+ }
418
2104
  }