customforge 0.1.0-alpha.1 → 0.1.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 +79 -24
  2. package/LICENSES/NunitoSans-OFL.txt +93 -0
  3. package/LICENSES/plain-mug-CC-BY-4.0.txt +11 -0
  4. package/README.md +592 -290
  5. package/README.zh-CN.md +589 -290
  6. package/dist/NunitoSans-Variable.ttf +0 -0
  7. package/dist/ProductCustomizer-4ytA68eg.js +2350 -0
  8. package/dist/ProductCustomizer-4ytA68eg.js.map +1 -0
  9. package/dist/bridge/TextureBridge.d.ts +1 -1
  10. package/dist/core/api.d.ts +94 -0
  11. package/dist/core/api.d.ts.map +1 -0
  12. package/dist/core/config.d.ts +3 -12
  13. package/dist/core/config.d.ts.map +1 -1
  14. package/dist/core/design.d.ts.map +1 -1
  15. package/dist/core/types.d.ts +217 -8
  16. package/dist/core/types.d.ts.map +1 -1
  17. package/dist/core/uv.d.ts +8 -0
  18. package/dist/core/uv.d.ts.map +1 -0
  19. package/dist/cup_decal_small_margins.glb +0 -0
  20. package/dist/customizer/ProductCustomizer.d.ts +174 -7
  21. package/dist/customizer/ProductCustomizer.d.ts.map +1 -1
  22. package/dist/editor/DesignEditor.d.ts +224 -14
  23. package/dist/editor/DesignEditor.d.ts.map +1 -1
  24. package/dist/editor/DesignHistory.d.ts +27 -0
  25. package/dist/editor/DesignHistory.d.ts.map +1 -0
  26. package/dist/editor/uvBounds.d.ts +15 -0
  27. package/dist/editor/uvBounds.d.ts.map +1 -0
  28. package/dist/index.d.ts +4 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1108
  31. package/dist/index.js.map +1 -1
  32. package/dist/style.css +2123 -11
  33. package/dist/viewer/ProductViewer.d.ts +37 -6
  34. package/dist/viewer/ProductViewer.d.ts.map +1 -1
  35. package/dist/viewer/uvLayout.d.ts +11 -0
  36. package/dist/viewer/uvLayout.d.ts.map +1 -0
  37. package/dist/workbench/CustomForgeWorkbench.d.ts +205 -0
  38. package/dist/workbench/CustomForgeWorkbench.d.ts.map +1 -0
  39. package/dist/workbench/assets/catalog.d.ts +8 -0
  40. package/dist/workbench/assets/catalog.d.ts.map +1 -0
  41. package/dist/workbench/config.d.ts +96 -0
  42. package/dist/workbench/config.d.ts.map +1 -0
  43. package/dist/workbench/icons.d.ts +4 -0
  44. package/dist/workbench/icons.d.ts.map +1 -0
  45. package/dist/workbench/index.d.ts +25 -0
  46. package/dist/workbench/index.d.ts.map +1 -0
  47. package/dist/workbench/template.d.ts +3 -0
  48. package/dist/workbench/template.d.ts.map +1 -0
  49. package/dist/workbench/types.d.ts +542 -0
  50. package/dist/workbench/types.d.ts.map +1 -0
  51. package/dist/workbench.js +3052 -0
  52. package/dist/workbench.js.map +1 -0
  53. package/package.json +77 -71
package/dist/style.css CHANGED
@@ -1,12 +1,2124 @@
1
- .customforge-design-canvas {
2
- max-width: 100%;
3
- max-height: 100%;
4
- overflow: hidden;
5
- }
6
-
7
- .customforge-viewer-canvas {
8
- display: block;
9
- width: 100%;
10
- height: 100%;
11
- }
1
+ .customforge-design-canvas {
2
+ max-width: 100%;
3
+ max-height: 100%;
4
+ overflow: hidden;
5
+ }
6
+
7
+ .customforge-design-canvas .customforge-uv-layout {
8
+ position: absolute;
9
+ z-index: 1;
10
+ inset: 0;
11
+ display: block;
12
+ width: 100%;
13
+ height: 100%;
14
+ pointer-events: none;
15
+ }
16
+
17
+ .customforge-design-canvas .customforge-uv-layout[hidden] {
18
+ display: none;
19
+ }
20
+
21
+ .customforge-design-canvas .upper-canvas {
22
+ z-index: 2;
23
+ }
24
+
25
+ .customforge-viewer-canvas {
26
+ display: block;
27
+ width: 100%;
28
+ height: 100%;
29
+ }
30
+
31
+ @font-face {
32
+ font-family: "Nunito Sans";
33
+ src: url("./NunitoSans-Variable.ttf")
34
+ format("truetype");
35
+ font-display: swap;
36
+ font-style: normal;
37
+ font-weight: 200 1000;
38
+ }
39
+
40
+ @keyframes customforge-dialog-enter {
41
+ from {
42
+ opacity: 0;
43
+ transform: translateY(10px) scale(0.985);
44
+ }
45
+
46
+ to {
47
+ opacity: 1;
48
+ transform: translateY(0) scale(1);
49
+ }
50
+ }
51
+
52
+ @keyframes customforge-dialog-exit {
53
+ from {
54
+ opacity: 1;
55
+ transform: translateY(0) scale(1);
56
+ }
57
+
58
+ to {
59
+ opacity: 0;
60
+ transform: translateY(6px) scale(0.99);
61
+ }
62
+ }
63
+
64
+ @keyframes customforge-backdrop-enter {
65
+ from {
66
+ background-color: rgb(17 24 30 / 0%);
67
+ }
68
+
69
+ to {
70
+ background-color: rgb(17 24 30 / 38%);
71
+ }
72
+ }
73
+
74
+ @keyframes customforge-backdrop-exit {
75
+ from {
76
+ background-color: rgb(17 24 30 / 38%);
77
+ }
78
+
79
+ to {
80
+ background-color: rgb(17 24 30 / 0%);
81
+ }
82
+ }
83
+
84
+ .customforge-workbench {
85
+ --cfw-ink: #18181b;
86
+ --cfw-muted: #71717a;
87
+ --cfw-line: #e4e4e7;
88
+ --cfw-line-strong: #d4d4d8;
89
+ --cfw-surface: #ffffff;
90
+ --cfw-surface-muted: #fafafa;
91
+ --cfw-stage: #f4f4f5;
92
+ --cfw-accent: #268a4b;
93
+ --cfw-accent-hover: #1f7640;
94
+ --cfw-accent-contrast: #ffffff;
95
+ --cfw-danger: #b42318;
96
+ --cfw-control-radius: 4px;
97
+ --cfw-font-family: "Nunito Sans", "Avenir Next", "Segoe UI Variable",
98
+ "Segoe UI", ui-sans-serif, system-ui, sans-serif;
99
+ container-name: customforge-workbench;
100
+ container-type: inline-size;
101
+ display: grid;
102
+ grid-template-rows: auto minmax(0, 1fr);
103
+ width: 100%;
104
+ min-width: 320px;
105
+ height: 100%;
106
+ min-height: 640px;
107
+ overflow: hidden;
108
+ color: var(--cfw-ink);
109
+ background: var(--cfw-stage);
110
+ border: 0;
111
+ font-family: var(--cfw-font-family);
112
+ font-size: 14px;
113
+ font-synthesis: none;
114
+ letter-spacing: 0;
115
+ scrollbar-color: color-mix(in srgb, var(--cfw-muted) 38%, transparent) transparent;
116
+ scrollbar-width: thin;
117
+ text-rendering: optimizeLegibility;
118
+ }
119
+
120
+ .customforge-workbench [hidden] {
121
+ display: none !important;
122
+ }
123
+
124
+ .customforge-workbench,
125
+ .customforge-workbench * {
126
+ box-sizing: border-box;
127
+ }
128
+
129
+ .customforge-workbench button,
130
+ .customforge-workbench input,
131
+ .customforge-workbench select,
132
+ .customforge-workbench textarea {
133
+ font: inherit;
134
+ letter-spacing: 0;
135
+ }
136
+
137
+ .customforge-workbench :where(button) {
138
+ color: inherit;
139
+ }
140
+
141
+ .customforge-workbench button:focus-visible,
142
+ .customforge-workbench input:focus-visible,
143
+ .customforge-workbench select:focus-visible,
144
+ .customforge-workbench__text-options > summary:focus-visible {
145
+ outline: 2px solid color-mix(in srgb, var(--cfw-accent) 38%, transparent);
146
+ outline-offset: 2px;
147
+ }
148
+
149
+ .customforge-workbench__topbar {
150
+ z-index: 5;
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: space-between;
154
+ gap: 20px;
155
+ min-height: 56px;
156
+ padding: 8px 16px;
157
+ background: var(--cfw-surface);
158
+ border-bottom: 1px solid var(--cfw-line);
159
+ }
160
+
161
+ .customforge-workbench__brand,
162
+ .customforge-workbench__brand-copy,
163
+ .customforge-workbench__global-actions,
164
+ .customforge-workbench__panel-title,
165
+ .customforge-workbench__tool-group,
166
+ .customforge-workbench__layers-header,
167
+ .customforge-workbench__layers-header > span,
168
+ .customforge-workbench__status,
169
+ .customforge-workbench__button,
170
+ .customforge-workbench__tool-button,
171
+ .customforge-workbench__layer-item,
172
+ .customforge-workbench__layer-main,
173
+ .customforge-workbench__layer-actions,
174
+ .customforge-workbench__dialog-header,
175
+ .customforge-workbench__dialog-header > div,
176
+ .customforge-workbench__dialog-actions,
177
+ .customforge-workbench__input-shell,
178
+ .customforge-workbench__check-field,
179
+ .customforge-workbench__color-field,
180
+ .customforge-workbench__tabs,
181
+ .customforge-workbench__upload-field {
182
+ display: flex;
183
+ align-items: center;
184
+ }
185
+
186
+ .customforge-workbench__brand {
187
+ min-width: 0;
188
+ gap: 10px;
189
+ }
190
+
191
+ .customforge-workbench__brand-logo {
192
+ display: block;
193
+ flex: 0 0 32px;
194
+ width: 32px;
195
+ height: 32px;
196
+ object-fit: contain;
197
+ }
198
+
199
+ .customforge-workbench__brand-copy {
200
+ align-items: flex-start;
201
+ flex-direction: column;
202
+ min-width: 0;
203
+ gap: 1px;
204
+ }
205
+
206
+ .customforge-workbench__brand-copy strong,
207
+ .customforge-workbench__brand-copy span {
208
+ overflow: hidden;
209
+ max-width: 300px;
210
+ text-overflow: ellipsis;
211
+ white-space: nowrap;
212
+ }
213
+
214
+ .customforge-workbench__brand-copy strong {
215
+ font-size: 15px;
216
+ font-weight: 700;
217
+ line-height: 18px;
218
+ }
219
+
220
+ .customforge-workbench__brand-copy span {
221
+ color: var(--cfw-muted);
222
+ font-size: 11px;
223
+ line-height: 13px;
224
+ }
225
+
226
+ .customforge-workbench__global-actions {
227
+ flex: 0 0 auto;
228
+ gap: 6px;
229
+ }
230
+
231
+ .customforge-workbench__global-actions
232
+ > .customforge-workbench__extension-slot {
233
+ display: contents;
234
+ }
235
+
236
+ .customforge-workbench__extension-slot {
237
+ display: flex;
238
+ align-items: center;
239
+ min-width: 0;
240
+ flex: 0 0 auto;
241
+ gap: 4px;
242
+ }
243
+
244
+ .customforge-workbench__extension-icon {
245
+ flex: 0 0 auto;
246
+ width: 18px;
247
+ height: 18px;
248
+ object-fit: contain;
249
+ }
250
+
251
+ .customforge-workbench__extension-button--layerActions
252
+ .customforge-workbench__extension-icon {
253
+ width: 12px;
254
+ height: 12px;
255
+ }
256
+
257
+ .customforge-workbench__extension-button[data-label-visible="false"] {
258
+ width: 34px;
259
+ justify-content: center;
260
+ padding-right: 0;
261
+ padding-left: 0;
262
+ }
263
+
264
+ .customforge-workbench__extension-button--layerActions[data-label-visible="false"] {
265
+ width: 20px;
266
+ }
267
+
268
+ .customforge-workbench__extension-button--layerActions[data-label-visible="true"] {
269
+ width: auto;
270
+ padding-right: 5px;
271
+ padding-left: 5px;
272
+ gap: 4px;
273
+ font-size: 10px;
274
+ }
275
+
276
+ .customforge-workbench__button,
277
+ .customforge-workbench__tool-button,
278
+ .customforge-workbench__icon-button,
279
+ .customforge-workbench__layer-action {
280
+ min-height: 34px;
281
+ border: 1px solid transparent;
282
+ border-radius: var(--cfw-control-radius);
283
+ cursor: pointer;
284
+ transition: background-color 140ms ease, border-color 140ms ease,
285
+ box-shadow 140ms ease, color 140ms ease;
286
+ }
287
+
288
+ .customforge-workbench__button {
289
+ justify-content: center;
290
+ gap: 7px;
291
+ min-width: 0;
292
+ padding: 0 13px;
293
+ font-size: 13px;
294
+ font-weight: 650;
295
+ white-space: nowrap;
296
+ }
297
+
298
+ .customforge-workbench__button--primary {
299
+ color: var(--cfw-accent-contrast);
300
+ background: var(--cfw-accent);
301
+ border-color: var(--cfw-accent);
302
+ box-shadow: none;
303
+ }
304
+
305
+ .customforge-workbench__button--primary:hover:not(:disabled) {
306
+ background: var(--cfw-accent-hover);
307
+ border-color: var(--cfw-accent-hover);
308
+ box-shadow: none;
309
+ }
310
+
311
+ .customforge-workbench__button--primary:active:not(:disabled) {
312
+ background: var(--cfw-accent-hover);
313
+ box-shadow: none;
314
+ }
315
+
316
+ .customforge-workbench .customforge-workbench__extension-button--primary {
317
+ color: var(--cfw-accent-contrast);
318
+ background: var(--cfw-accent);
319
+ border-color: var(--cfw-accent);
320
+ }
321
+
322
+ .customforge-workbench
323
+ .customforge-workbench__extension-button--primary:hover:not(:disabled),
324
+ .customforge-workbench
325
+ .customforge-workbench__extension-button--primary:active:not(:disabled) {
326
+ color: var(--cfw-accent-contrast);
327
+ background: var(--cfw-accent-hover);
328
+ border-color: var(--cfw-accent-hover);
329
+ }
330
+
331
+ .customforge-workbench .customforge-workbench__extension-button--secondary {
332
+ color: var(--cfw-ink);
333
+ background: var(--cfw-surface);
334
+ border-color: var(--cfw-line);
335
+ }
336
+
337
+ .customforge-workbench
338
+ .customforge-workbench__extension-button--secondary:hover:not(:disabled) {
339
+ color: var(--cfw-ink);
340
+ background: var(--cfw-surface-muted);
341
+ border-color: var(--cfw-line-strong);
342
+ }
343
+
344
+ .customforge-workbench .customforge-workbench__extension-button--plain {
345
+ color: color-mix(in srgb, var(--cfw-ink) 88%, var(--cfw-muted));
346
+ background: transparent;
347
+ border-color: transparent;
348
+ }
349
+
350
+ .customforge-workbench
351
+ .customforge-workbench__extension-button--plain:hover:not(:disabled) {
352
+ color: var(--cfw-ink);
353
+ background: var(--cfw-surface-muted);
354
+ border-color: transparent;
355
+ }
356
+
357
+ .customforge-workbench .customforge-workbench__extension-button--danger {
358
+ color: var(--cfw-danger);
359
+ background: transparent;
360
+ border-color: transparent;
361
+ }
362
+
363
+ .customforge-workbench
364
+ .customforge-workbench__extension-button--danger:hover:not(:disabled) {
365
+ color: var(--cfw-danger);
366
+ background: color-mix(in srgb, var(--cfw-danger) 8%, var(--cfw-surface));
367
+ border-color: transparent;
368
+ }
369
+
370
+ .customforge-workbench__button--secondary {
371
+ color: var(--cfw-ink);
372
+ background: var(--cfw-surface);
373
+ border-color: var(--cfw-line);
374
+ box-shadow: none;
375
+ }
376
+
377
+ .customforge-workbench__button--secondary:hover:not(:disabled) {
378
+ color: var(--cfw-ink);
379
+ background: var(--cfw-surface-muted);
380
+ border-color: color-mix(in srgb, var(--cfw-ink) 18%, var(--cfw-line));
381
+ }
382
+
383
+ .customforge-workbench__button--secondary:active:not(:disabled),
384
+ .customforge-workbench__tool-button:active:not(:disabled),
385
+ .customforge-workbench__icon-button:active:not(:disabled),
386
+ .customforge-workbench__layer-action:active:not(:disabled) {
387
+ background: var(--cfw-surface-muted);
388
+ }
389
+
390
+ .customforge-workbench__tool-button:hover:not(:disabled),
391
+ .customforge-workbench__icon-button:hover:not(:disabled),
392
+ .customforge-workbench__layer-action:hover:not(:disabled) {
393
+ color: var(--cfw-ink);
394
+ background: var(--cfw-surface-muted);
395
+ border-color: transparent;
396
+ }
397
+
398
+ .customforge-workbench__icon-button--danger:hover:not(:disabled),
399
+ .customforge-workbench__layer-action[data-layer-action="remove"]:hover:not(:disabled) {
400
+ color: var(--cfw-danger);
401
+ background: color-mix(in srgb, var(--cfw-danger) 8%, var(--cfw-surface));
402
+ border-color: transparent;
403
+ }
404
+
405
+ .customforge-workbench__button:disabled,
406
+ .customforge-workbench__tool-button:disabled,
407
+ .customforge-workbench__icon-button:disabled,
408
+ .customforge-workbench__layer-action:disabled {
409
+ color: color-mix(in srgb, var(--cfw-muted) 48%, var(--cfw-surface));
410
+ cursor: not-allowed;
411
+ }
412
+
413
+ .customforge-workbench__button--primary:disabled {
414
+ color: var(--cfw-accent-contrast);
415
+ }
416
+
417
+ .customforge-workbench .customforge-workbench__extension-button--primary:disabled {
418
+ color: var(--cfw-accent-contrast);
419
+ opacity: 0.55;
420
+ }
421
+
422
+ .customforge-workbench__button[data-loading="true"] [data-icon-slot="upload"] {
423
+ display: none;
424
+ }
425
+
426
+ .customforge-workbench__button[data-loading="true"]::before {
427
+ width: 14px;
428
+ height: 14px;
429
+ border: 2px solid color-mix(in srgb, currentcolor 32%, transparent);
430
+ border-top-color: currentcolor;
431
+ border-radius: 50%;
432
+ animation: customforge-workbench-spin 700ms linear infinite;
433
+ content: "";
434
+ }
435
+
436
+ .customforge-workbench__extension-button[data-loading="true"]
437
+ .customforge-workbench__extension-icon {
438
+ display: none;
439
+ }
440
+
441
+ .customforge-workbench__extension-button[data-loading="true"]::before {
442
+ width: 14px;
443
+ height: 14px;
444
+ flex: 0 0 14px;
445
+ border: 2px solid color-mix(in srgb, currentcolor 32%, transparent);
446
+ border-top-color: currentcolor;
447
+ border-radius: 50%;
448
+ animation: customforge-workbench-spin 700ms linear infinite;
449
+ content: "";
450
+ }
451
+
452
+ @keyframes customforge-workbench-spin {
453
+ to {
454
+ transform: rotate(360deg);
455
+ }
456
+ }
457
+
458
+ .customforge-workbench__custom-icon,
459
+ .customforge-workbench [data-icon-slot] {
460
+ flex: 0 0 auto;
461
+ width: 18px;
462
+ height: 18px;
463
+ object-fit: contain;
464
+ }
465
+
466
+ .customforge-workbench__icon-label {
467
+ position: absolute;
468
+ width: 1px;
469
+ height: 1px;
470
+ padding: 0;
471
+ overflow: hidden;
472
+ clip: rect(0, 0, 0, 0);
473
+ white-space: nowrap;
474
+ border: 0;
475
+ }
476
+
477
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__icon-label,
478
+ .customforge-workbench__icon-missing .customforge-workbench__icon-label {
479
+ position: static;
480
+ width: auto;
481
+ height: auto;
482
+ overflow: visible;
483
+ clip: auto;
484
+ font-size: 10px;
485
+ white-space: nowrap;
486
+ }
487
+
488
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__icon-button,
489
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__layer-action,
490
+ .customforge-workbench__icon-button.customforge-workbench__icon-missing,
491
+ .customforge-workbench__layer-action.customforge-workbench__icon-missing {
492
+ display: flex;
493
+ width: auto;
494
+ justify-content: center;
495
+ gap: 0;
496
+ padding: 0 8px;
497
+ }
498
+
499
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__input-shell input {
500
+ padding-left: 11px !important;
501
+ }
502
+
503
+ .customforge-workbench__workspace {
504
+ display: grid;
505
+ grid-template-columns: minmax(0, 1.38fr) minmax(0, 1fr);
506
+ min-width: 0;
507
+ min-height: 0;
508
+ }
509
+
510
+ .customforge-workbench__panel {
511
+ display: grid;
512
+ min-width: 0;
513
+ min-height: 0;
514
+ overflow: hidden;
515
+ background: var(--cfw-surface);
516
+ }
517
+
518
+ .customforge-workbench__panel--editor {
519
+ container-name: customforge-editor-panel;
520
+ container-type: inline-size;
521
+ grid-template-areas:
522
+ "editor-header editor-toolbar"
523
+ "editor-body editor-body";
524
+ grid-template-columns: auto minmax(0, 1fr);
525
+ grid-template-rows: auto minmax(0, 1fr);
526
+ background: var(--cfw-surface-muted);
527
+ border-right: 1px solid var(--cfw-line);
528
+ }
529
+
530
+ .customforge-workbench__panel--editor > .customforge-workbench__panelbar {
531
+ grid-area: editor-header;
532
+ border-bottom: 1px solid var(--cfw-line);
533
+ }
534
+
535
+ .customforge-workbench__panel--editor > .customforge-workbench__toolbar {
536
+ grid-area: editor-toolbar;
537
+ border-bottom: 1px solid var(--cfw-line);
538
+ }
539
+
540
+ .customforge-workbench__panel--editor > .customforge-workbench__editor-body {
541
+ grid-area: editor-body;
542
+ }
543
+
544
+ .customforge-workbench__panel--viewer {
545
+ grid-template-rows: 52px minmax(0, 1fr);
546
+ }
547
+
548
+ .customforge-workbench__panelbar {
549
+ display: flex;
550
+ align-items: center;
551
+ justify-content: space-between;
552
+ min-width: 0;
553
+ min-height: 52px;
554
+ padding: 0 12px 0 14px;
555
+ background: var(--cfw-surface);
556
+ border-bottom: 1px solid var(--cfw-line);
557
+ }
558
+
559
+ .customforge-workbench__panel-title {
560
+ min-width: 0;
561
+ gap: 8px;
562
+ }
563
+
564
+ .customforge-workbench__panel-kicker,
565
+ .customforge-workbench__resolution,
566
+ .customforge-workbench__eyebrow {
567
+ color: var(--cfw-muted);
568
+ font-size: 11px;
569
+ font-weight: 650;
570
+ text-transform: uppercase;
571
+ }
572
+
573
+ .customforge-workbench__panel-kicker,
574
+ .customforge-workbench__eyebrow {
575
+ color: var(--cfw-accent);
576
+ }
577
+
578
+ .customforge-workbench__panel-kicker {
579
+ min-width: 20px;
580
+ padding: 0;
581
+ color: var(--cfw-accent-hover);
582
+ background: transparent;
583
+ border: 0;
584
+ border-radius: 0;
585
+ line-height: 20px;
586
+ text-align: left;
587
+ }
588
+
589
+ .customforge-workbench__panelbar h1,
590
+ .customforge-workbench__panelbar h2 {
591
+ overflow: hidden;
592
+ margin: 0;
593
+ font-size: 14px;
594
+ font-weight: 700;
595
+ line-height: 20px;
596
+ text-overflow: ellipsis;
597
+ white-space: nowrap;
598
+ }
599
+
600
+ .customforge-workbench__resolution {
601
+ font-variant-numeric: tabular-nums;
602
+ }
603
+
604
+ .customforge-workbench__toolbar {
605
+ position: relative;
606
+ z-index: 4;
607
+ display: flex;
608
+ align-items: center;
609
+ gap: 4px;
610
+ min-width: 0;
611
+ min-height: 52px;
612
+ margin: 0;
613
+ padding: 8px 10px 8px 4px;
614
+ overflow: visible;
615
+ background: var(--cfw-surface);
616
+ border: 0;
617
+ border-bottom: 1px solid var(--cfw-line);
618
+ border-radius: 0;
619
+ box-shadow: none;
620
+ }
621
+
622
+ .customforge-workbench__tool-group {
623
+ flex: 0 0 auto;
624
+ gap: 3px;
625
+ }
626
+
627
+ .customforge-workbench__tool-button {
628
+ flex: 0 0 auto;
629
+ gap: 7px;
630
+ padding: 0 10px;
631
+ color: color-mix(in srgb, var(--cfw-ink) 88%, var(--cfw-muted));
632
+ background: transparent;
633
+ border-color: transparent;
634
+ font-size: 13px;
635
+ font-weight: 650;
636
+ white-space: nowrap;
637
+ }
638
+
639
+ .customforge-workbench__icon-button,
640
+ .customforge-workbench__layer-action {
641
+ display: grid;
642
+ width: 34px;
643
+ padding: 0;
644
+ color: var(--cfw-muted);
645
+ background: transparent;
646
+ place-items: center;
647
+ }
648
+
649
+ .customforge-workbench__icon-button {
650
+ flex: 0 0 34px;
651
+ }
652
+
653
+ .customforge-workbench__separator {
654
+ flex: 0 0 1px;
655
+ width: 1px;
656
+ height: 20px;
657
+ margin: 0 3px;
658
+ background: var(--cfw-line);
659
+ }
660
+
661
+ .customforge-workbench__text-toolbar,
662
+ .customforge-workbench__image-toolbar {
663
+ display: flex;
664
+ align-items: center;
665
+ flex: 0 0 auto;
666
+ min-width: 0;
667
+ min-height: 34px;
668
+ gap: 4px;
669
+ margin: 0;
670
+ padding: 0;
671
+ color: var(--cfw-ink);
672
+ background: transparent;
673
+ }
674
+
675
+ .customforge-workbench__format-group,
676
+ .customforge-workbench__format-color,
677
+ .customforge-workbench__format-metric {
678
+ display: flex;
679
+ align-items: center;
680
+ }
681
+
682
+ .customforge-workbench__format-group {
683
+ flex: 0 0 auto;
684
+ gap: 1px;
685
+ }
686
+
687
+ .customforge-workbench__text-options {
688
+ position: relative;
689
+ flex: 0 0 auto;
690
+ }
691
+
692
+ .customforge-workbench__text-options > summary {
693
+ list-style: none;
694
+ }
695
+
696
+ .customforge-workbench__text-options > summary::-webkit-details-marker {
697
+ display: none;
698
+ }
699
+
700
+ .customforge-workbench__text-options[open] > summary {
701
+ color: var(--cfw-ink);
702
+ background: var(--cfw-surface-muted);
703
+ border-color: var(--cfw-line-strong);
704
+ }
705
+
706
+ .customforge-workbench__text-options:not([open])
707
+ > .customforge-workbench__text-options-panel {
708
+ display: none;
709
+ }
710
+
711
+ .customforge-workbench__text-options-panel {
712
+ position: absolute;
713
+ z-index: 8;
714
+ top: calc(100% + 9px);
715
+ right: 0;
716
+ display: grid;
717
+ width: 276px;
718
+ gap: 8px;
719
+ padding: 9px;
720
+ background: var(--cfw-surface);
721
+ border: 1px solid var(--cfw-line);
722
+ border-radius: 6px;
723
+ box-shadow: 0 14px 34px rgb(24 24 27 / 14%);
724
+ }
725
+
726
+ .customforge-workbench__text-options-row {
727
+ display: flex;
728
+ align-items: center;
729
+ min-width: 0;
730
+ gap: 4px;
731
+ }
732
+
733
+ .customforge-workbench__text-options-row--metrics {
734
+ padding-top: 0;
735
+ }
736
+
737
+ .customforge-workbench__text-color-palette {
738
+ display: grid;
739
+ grid-template-columns: repeat(7, 24px);
740
+ justify-content: space-between;
741
+ gap: 7px 6px;
742
+ padding: 9px 0;
743
+ border-top: 1px solid var(--cfw-line);
744
+ border-bottom: 1px solid var(--cfw-line);
745
+ }
746
+
747
+ .customforge-workbench__text-color-swatch {
748
+ position: relative;
749
+ width: 24px;
750
+ height: 24px;
751
+ padding: 0;
752
+ background: var(--cfw-text-swatch);
753
+ border: 1px solid color-mix(in srgb, var(--cfw-ink) 22%, var(--cfw-line));
754
+ border-radius: 5px;
755
+ cursor: pointer;
756
+ }
757
+
758
+ .customforge-workbench__text-color-swatch:hover:not(:disabled) {
759
+ border-color: var(--cfw-accent);
760
+ }
761
+
762
+ .customforge-workbench__text-color-swatch:disabled {
763
+ cursor: not-allowed;
764
+ opacity: 0.48;
765
+ }
766
+
767
+ .customforge-workbench__text-color-swatch[aria-pressed="true"] {
768
+ border-color: var(--cfw-surface);
769
+ box-shadow:
770
+ 0 0 0 2px var(--cfw-surface),
771
+ 0 0 0 4px var(--cfw-accent);
772
+ }
773
+
774
+ .customforge-workbench__format-button,
775
+ .customforge-workbench__font-select,
776
+ .customforge-workbench__format-number input,
777
+ .customforge-workbench__format-metric input,
778
+ .customforge-workbench__background-color {
779
+ height: 32px;
780
+ color: var(--cfw-ink);
781
+ background: var(--cfw-surface);
782
+ border: 1px solid transparent;
783
+ border-radius: var(--cfw-control-radius);
784
+ }
785
+
786
+ .customforge-workbench__format-button {
787
+ display: grid;
788
+ flex: 0 0 32px;
789
+ width: 32px;
790
+ padding: 0;
791
+ color: var(--cfw-muted);
792
+ cursor: pointer;
793
+ place-items: center;
794
+ transition: background-color 120ms ease, border-color 120ms ease,
795
+ color 120ms ease;
796
+ }
797
+
798
+ .customforge-workbench__format-button:hover:not(:disabled) {
799
+ color: var(--cfw-ink);
800
+ background: var(--cfw-surface-muted);
801
+ }
802
+
803
+ .customforge-workbench__format-button[aria-pressed="true"] {
804
+ color: var(--cfw-ink);
805
+ background: var(--cfw-surface-muted);
806
+ border-color: var(--cfw-line-strong);
807
+ }
808
+
809
+ .customforge-workbench__format-button[aria-pressed="mixed"] {
810
+ color: var(--cfw-muted);
811
+ background: var(--cfw-surface-muted);
812
+ border-color: var(--cfw-line);
813
+ }
814
+
815
+ .customforge-workbench__format-button:disabled,
816
+ .customforge-workbench__font-select:disabled,
817
+ .customforge-workbench__format-number input:disabled,
818
+ .customforge-workbench__format-metric input:disabled,
819
+ .customforge-workbench__format-color input:disabled,
820
+ .customforge-workbench__background-color:disabled {
821
+ color: color-mix(in srgb, var(--cfw-muted) 48%, var(--cfw-surface));
822
+ cursor: not-allowed;
823
+ opacity: 0.58;
824
+ }
825
+
826
+ .customforge-workbench__format-button svg,
827
+ .customforge-workbench__format-button img,
828
+ .customforge-workbench__format-color svg,
829
+ .customforge-workbench__format-color img,
830
+ .customforge-workbench__format-metric svg,
831
+ .customforge-workbench__format-metric img {
832
+ width: 16px;
833
+ height: 16px;
834
+ }
835
+
836
+ .customforge-workbench__font-select {
837
+ flex: 0 0 142px;
838
+ width: 142px;
839
+ padding: 0 25px 0 9px;
840
+ border-color: var(--cfw-line);
841
+ font-size: 12px;
842
+ cursor: pointer;
843
+ }
844
+
845
+ .customforge-workbench__format-number {
846
+ display: block;
847
+ flex: 0 0 58px;
848
+ }
849
+
850
+ .customforge-workbench__format-number input {
851
+ width: 58px;
852
+ padding: 0 4px 0 8px;
853
+ border-color: var(--cfw-line);
854
+ font-size: 12px;
855
+ font-variant-numeric: tabular-nums;
856
+ }
857
+
858
+ .customforge-workbench__format-separator {
859
+ flex: 0 0 1px;
860
+ width: 1px;
861
+ height: 20px;
862
+ margin: 0 3px;
863
+ background: var(--cfw-line);
864
+ }
865
+
866
+ .customforge-workbench__format-color {
867
+ flex: 0 0 auto;
868
+ height: 32px;
869
+ gap: 5px;
870
+ padding: 0 6px;
871
+ color: var(--cfw-muted);
872
+ border: 1px solid transparent;
873
+ border-radius: var(--cfw-control-radius);
874
+ cursor: pointer;
875
+ }
876
+
877
+ .customforge-workbench__format-color:hover {
878
+ color: var(--cfw-ink);
879
+ background: var(--cfw-surface-muted);
880
+ }
881
+
882
+ .customforge-workbench__format-color input,
883
+ .customforge-workbench__background-color {
884
+ flex: 0 0 20px;
885
+ width: 20px;
886
+ height: 20px;
887
+ padding: 1px;
888
+ background: var(--cfw-surface);
889
+ border-color: var(--cfw-line);
890
+ cursor: pointer;
891
+ }
892
+
893
+ .customforge-workbench__background-color {
894
+ margin-left: 2px;
895
+ }
896
+
897
+ .customforge-workbench__format-metric {
898
+ flex: 0 0 auto;
899
+ height: 32px;
900
+ gap: 4px;
901
+ overflow: hidden;
902
+ padding-left: 6px;
903
+ color: var(--cfw-muted);
904
+ background: var(--cfw-surface);
905
+ border: 1px solid var(--cfw-line);
906
+ border-radius: var(--cfw-control-radius);
907
+ }
908
+
909
+ .customforge-workbench__format-metric input {
910
+ width: 56px;
911
+ height: 100%;
912
+ padding: 0 3px 0 4px;
913
+ background: transparent;
914
+ border: 0;
915
+ border-radius: 0;
916
+ font-size: 11px;
917
+ font-variant-numeric: tabular-nums;
918
+ }
919
+
920
+ .customforge-workbench[data-icons="hidden"]
921
+ .customforge-workbench__format-button {
922
+ display: flex;
923
+ width: auto;
924
+ flex-basis: auto;
925
+ justify-content: center;
926
+ padding: 0 7px;
927
+ }
928
+
929
+ .customforge-workbench[data-icons="hidden"]
930
+ .customforge-workbench__format-button
931
+ .customforge-workbench__icon-label {
932
+ position: static;
933
+ width: auto;
934
+ height: auto;
935
+ overflow: visible;
936
+ clip: auto;
937
+ font-size: 11px;
938
+ white-space: nowrap;
939
+ }
940
+
941
+ .customforge-workbench__layers-toggle {
942
+ border-radius: 4px;
943
+ }
944
+
945
+ .customforge-workbench__layers-toggle[aria-expanded="true"],
946
+ .customforge-workbench__layers-toggle[aria-expanded="true"]:hover:not(:disabled) {
947
+ color: var(--cfw-ink);
948
+ background: var(--cfw-surface-muted);
949
+ border-color: var(--cfw-line-strong);
950
+ box-shadow: none;
951
+ }
952
+
953
+ .customforge-workbench__layer-count {
954
+ display: inline-flex;
955
+ align-items: center;
956
+ min-width: auto;
957
+ height: 16px;
958
+ padding: 0 0 0 6px;
959
+ color: var(--cfw-muted);
960
+ background: transparent;
961
+ border-left: 1px solid var(--cfw-line);
962
+ border-radius: 0;
963
+ font-size: 11px;
964
+ font-variant-numeric: tabular-nums;
965
+ line-height: 16px;
966
+ }
967
+
968
+ .customforge-workbench__layers-toggle[aria-expanded="true"]
969
+ .customforge-workbench__layer-count {
970
+ color: var(--cfw-muted);
971
+ background: transparent;
972
+ border-left-color: var(--cfw-line-strong);
973
+ }
974
+
975
+ .customforge-workbench__editor-body {
976
+ display: grid;
977
+ grid-template-areas: "layers editor-stage";
978
+ grid-template-columns: 0 minmax(0, 1fr);
979
+ min-width: 0;
980
+ min-height: 0;
981
+ }
982
+
983
+ .customforge-workbench[data-layers-expanded="true"]
984
+ .customforge-workbench__editor-body {
985
+ grid-template-columns: 200px minmax(0, 1fr);
986
+ }
987
+
988
+ .customforge-workbench[data-toolbar="hidden"][data-layers="visible"]
989
+ .customforge-workbench__editor-body {
990
+ grid-template-columns: 200px minmax(0, 1fr);
991
+ }
992
+
993
+ .customforge-workbench__editor-stage {
994
+ position: relative;
995
+ display: grid;
996
+ grid-area: editor-stage;
997
+ min-width: 0;
998
+ min-height: 0;
999
+ overflow: hidden;
1000
+ background: var(--cfw-stage);
1001
+ place-items: center;
1002
+ }
1003
+
1004
+ .customforge-workbench__editor-stage .customforge-design-canvas {
1005
+ max-width: 100%;
1006
+ max-height: 100%;
1007
+ isolation: isolate;
1008
+ background-color: var(--cfw-surface);
1009
+ background-image:
1010
+ linear-gradient(
1011
+ color-mix(in srgb, var(--cfw-ink) 5%, transparent) 1px,
1012
+ transparent 1px
1013
+ ),
1014
+ linear-gradient(
1015
+ 90deg,
1016
+ color-mix(in srgb, var(--cfw-ink) 5%, transparent) 1px,
1017
+ transparent 1px
1018
+ );
1019
+ background-position: -1px -1px;
1020
+ background-size: 24px 24px;
1021
+ border: 1px solid color-mix(in srgb, var(--cfw-ink) 10%, var(--cfw-line));
1022
+ border-radius: 4px;
1023
+ box-shadow: 0 3px 10px rgb(24 24 27 / 6%);
1024
+ }
1025
+
1026
+ .customforge-workbench__editor-stage
1027
+ .customforge-design-canvas
1028
+ :is(.lower-canvas, .upper-canvas, .customforge-uv-layout) {
1029
+ border-radius: 3px;
1030
+ }
1031
+
1032
+ .customforge-workbench__layers {
1033
+ display: grid;
1034
+ grid-area: layers;
1035
+ grid-template-rows: 44px minmax(0, 1fr);
1036
+ min-width: 0;
1037
+ min-height: 0;
1038
+ overflow: hidden;
1039
+ visibility: hidden;
1040
+ background: var(--cfw-surface);
1041
+ border-right: 0 solid var(--cfw-line);
1042
+ }
1043
+
1044
+ .customforge-workbench[data-layers-expanded="true"]
1045
+ .customforge-workbench__layers {
1046
+ visibility: visible;
1047
+ border-right-width: 1px;
1048
+ }
1049
+
1050
+ .customforge-workbench[data-toolbar="hidden"][data-layers="visible"]
1051
+ .customforge-workbench__layers {
1052
+ visibility: visible;
1053
+ border-right-width: 1px;
1054
+ }
1055
+
1056
+ .customforge-workbench__layers-header {
1057
+ justify-content: space-between;
1058
+ gap: 10px;
1059
+ padding: 0 10px 0 12px;
1060
+ color: var(--cfw-ink);
1061
+ background: var(--cfw-surface-muted);
1062
+ border-bottom: 1px solid var(--cfw-line);
1063
+ font-size: 13px;
1064
+ font-weight: 700;
1065
+ }
1066
+
1067
+ .customforge-workbench__layers-header > span {
1068
+ gap: 7px;
1069
+ }
1070
+
1071
+ .customforge-workbench__layer-list {
1072
+ min-height: 0;
1073
+ margin: 0;
1074
+ padding: 7px 6px;
1075
+ overflow: auto;
1076
+ list-style: none;
1077
+ }
1078
+
1079
+ .customforge-workbench__layer-empty {
1080
+ display: grid;
1081
+ min-height: 112px;
1082
+ padding: 18px;
1083
+ color: var(--cfw-muted);
1084
+ font-size: 12px;
1085
+ place-items: center;
1086
+ text-align: center;
1087
+ }
1088
+
1089
+ .customforge-workbench__layer-item {
1090
+ position: relative;
1091
+ min-width: 0;
1092
+ min-height: 48px;
1093
+ margin-bottom: 3px;
1094
+ padding: 0 5px 0 8px;
1095
+ background: transparent;
1096
+ border: 1px solid transparent;
1097
+ border-radius: var(--cfw-control-radius);
1098
+ transition: background-color 160ms ease, border-color 160ms ease,
1099
+ box-shadow 160ms ease;
1100
+ }
1101
+
1102
+ .customforge-workbench__layer-item[data-visible="false"] {
1103
+ color: var(--cfw-muted);
1104
+ opacity: 0.62;
1105
+ }
1106
+
1107
+ .customforge-workbench__layer-item[data-role="background"] {
1108
+ background: var(--cfw-surface-muted);
1109
+ }
1110
+
1111
+ .customforge-workbench__layer-item::before {
1112
+ position: absolute;
1113
+ top: 10px;
1114
+ bottom: 10px;
1115
+ left: 2px;
1116
+ width: 2px;
1117
+ background: var(--cfw-accent);
1118
+ border-radius: 0;
1119
+ content: "";
1120
+ opacity: 0;
1121
+ pointer-events: none;
1122
+ transform: scaleY(0.3);
1123
+ transform-origin: center;
1124
+ }
1125
+
1126
+ .customforge-workbench__layer-item[data-selected="true"] {
1127
+ background: var(--cfw-surface-muted);
1128
+ border-color: var(--cfw-line-strong);
1129
+ box-shadow: inset 2px 0 0 var(--cfw-accent);
1130
+ }
1131
+
1132
+ .customforge-workbench__layer-item[data-selected="true"]::before {
1133
+ opacity: 1;
1134
+ transform: scaleY(1);
1135
+ }
1136
+
1137
+ .customforge-workbench__layer-item.is-dragging {
1138
+ opacity: 0.42;
1139
+ }
1140
+
1141
+ .customforge-workbench__layer-item.is-drag-target {
1142
+ box-shadow: inset 0 2px 0 var(--cfw-accent);
1143
+ }
1144
+
1145
+ .customforge-workbench__layer-main {
1146
+ width: 100%;
1147
+ min-width: 0;
1148
+ flex: 1 1 auto;
1149
+ gap: 8px;
1150
+ height: 44px;
1151
+ padding: 0 3px;
1152
+ text-align: left;
1153
+ background: transparent;
1154
+ border: 0;
1155
+ cursor: pointer;
1156
+ }
1157
+
1158
+ .customforge-workbench__layer-main > svg,
1159
+ .customforge-workbench__layer-main > img {
1160
+ flex: 0 0 16px;
1161
+ width: 16px;
1162
+ color: var(--cfw-muted);
1163
+ }
1164
+
1165
+ .customforge-workbench__layer-item[data-selected="true"]
1166
+ .customforge-workbench__layer-main > svg,
1167
+ .customforge-workbench__layer-item[data-selected="true"]
1168
+ .customforge-workbench__layer-main > img {
1169
+ color: var(--cfw-accent-hover);
1170
+ }
1171
+
1172
+ .customforge-workbench__layer-copy {
1173
+ display: grid;
1174
+ min-width: 0;
1175
+ gap: 1px;
1176
+ }
1177
+
1178
+ .customforge-workbench__layer-copy strong,
1179
+ .customforge-workbench__layer-copy span {
1180
+ overflow: hidden;
1181
+ text-overflow: ellipsis;
1182
+ white-space: nowrap;
1183
+ }
1184
+
1185
+ .customforge-workbench__layer-copy strong {
1186
+ font-size: 12px;
1187
+ font-weight: 650;
1188
+ }
1189
+
1190
+ .customforge-workbench__layer-copy span {
1191
+ padding-right: var(--cfw-layer-action-width, 112px);
1192
+ color: var(--cfw-muted);
1193
+ font-size: 12px;
1194
+ text-transform: uppercase;
1195
+ }
1196
+
1197
+ .customforge-workbench__layer-actions {
1198
+ position: absolute;
1199
+ right: 7px;
1200
+ bottom: 3px;
1201
+ height: 20px;
1202
+ gap: 1px;
1203
+ padding: 0;
1204
+ opacity: 0;
1205
+ visibility: hidden;
1206
+ background: transparent;
1207
+ pointer-events: none;
1208
+ transition: opacity 140ms ease, visibility 0s linear 140ms;
1209
+ }
1210
+
1211
+ .customforge-workbench__layer-item:hover .customforge-workbench__layer-actions,
1212
+ .customforge-workbench__layer-item:focus-within .customforge-workbench__layer-actions,
1213
+ .customforge-workbench__layer-item[data-selected="true"]
1214
+ .customforge-workbench__layer-actions {
1215
+ opacity: 1;
1216
+ visibility: visible;
1217
+ pointer-events: auto;
1218
+ transition-delay: 0s;
1219
+ }
1220
+
1221
+ .customforge-workbench__layer-action {
1222
+ width: 20px;
1223
+ min-height: 20px;
1224
+ border-radius: var(--cfw-control-radius);
1225
+ }
1226
+
1227
+ .customforge-workbench
1228
+ .customforge-workbench__layer-action
1229
+ [data-icon-slot] {
1230
+ width: 12px;
1231
+ height: 12px;
1232
+ }
1233
+
1234
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__layer-item {
1235
+ display: grid;
1236
+ grid-template-rows: auto auto;
1237
+ padding-right: 9px;
1238
+ }
1239
+
1240
+ .customforge-workbench[data-icons="hidden"]
1241
+ .customforge-workbench__layer-copy span {
1242
+ padding-right: 0;
1243
+ }
1244
+
1245
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__layer-actions {
1246
+ height: auto;
1247
+ flex-wrap: wrap;
1248
+ padding: 0 0 7px 24px;
1249
+ opacity: 1;
1250
+ visibility: visible;
1251
+ background: transparent;
1252
+ pointer-events: auto;
1253
+ }
1254
+
1255
+ .customforge-workbench[data-icons="hidden"] .customforge-workbench__layer-action {
1256
+ min-height: 25px;
1257
+ padding: 0 5px;
1258
+ }
1259
+
1260
+ .customforge-workbench__layer-name-input {
1261
+ min-width: 0;
1262
+ height: 31px;
1263
+ flex: 1 1 auto;
1264
+ padding: 0 7px;
1265
+ color: var(--cfw-ink);
1266
+ background: var(--cfw-surface);
1267
+ border: 1px solid var(--cfw-accent);
1268
+ border-radius: var(--cfw-control-radius);
1269
+ font-size: 11px;
1270
+ }
1271
+
1272
+ .customforge-workbench__viewer-stage {
1273
+ position: relative;
1274
+ min-width: 0;
1275
+ min-height: 0;
1276
+ overflow: hidden;
1277
+ background: color-mix(in srgb, var(--cfw-stage) 90%, #dfe4e6);
1278
+ }
1279
+
1280
+ .customforge-workbench__viewer-host {
1281
+ position: absolute;
1282
+ inset: 0;
1283
+ }
1284
+
1285
+ .customforge-workbench__status {
1286
+ position: absolute;
1287
+ z-index: 2;
1288
+ bottom: 14px;
1289
+ left: 14px;
1290
+ gap: 8px;
1291
+ max-width: calc(100% - 28px);
1292
+ min-height: 28px;
1293
+ padding: 0 10px;
1294
+ color: var(--cfw-muted);
1295
+ background: color-mix(in srgb, var(--cfw-surface) 90%, transparent);
1296
+ border: 1px solid color-mix(in srgb, var(--cfw-line) 82%, transparent);
1297
+ border-radius: 6px;
1298
+ font-size: 12px;
1299
+ }
1300
+
1301
+ .customforge-workbench__status-indicator {
1302
+ flex: 0 0 6px;
1303
+ width: 6px;
1304
+ height: 6px;
1305
+ background: #218c4a;
1306
+ border-radius: 50%;
1307
+ }
1308
+
1309
+ .customforge-workbench[data-status="busy"]
1310
+ .customforge-workbench__status-indicator {
1311
+ background: #b7791f;
1312
+ }
1313
+
1314
+ .customforge-workbench[data-status="error"]
1315
+ .customforge-workbench__status-indicator {
1316
+ background: var(--cfw-danger);
1317
+ }
1318
+
1319
+ .customforge-workbench[data-status="error"] .customforge-workbench__status {
1320
+ color: var(--cfw-danger);
1321
+ border-color: color-mix(in srgb, var(--cfw-danger) 24%, var(--cfw-line));
1322
+ }
1323
+
1324
+ .customforge-workbench__status [data-role="status-label"] {
1325
+ overflow: hidden;
1326
+ text-overflow: ellipsis;
1327
+ white-space: nowrap;
1328
+ }
1329
+
1330
+ .customforge-workbench__dialog {
1331
+ width: min(540px, calc(100vw - 32px));
1332
+ max-height: min(760px, calc(100vh - 32px));
1333
+ padding: 0;
1334
+ overflow: hidden;
1335
+ color: var(--cfw-ink);
1336
+ background: var(--cfw-surface);
1337
+ border: 1px solid var(--cfw-line);
1338
+ border-radius: 6px;
1339
+ box-shadow: 0 20px 48px rgb(24 24 27 / 18%);
1340
+ transform-origin: 50% 45%;
1341
+ }
1342
+
1343
+ .customforge-workbench__dialog[open] {
1344
+ animation: customforge-dialog-enter 190ms cubic-bezier(0.22, 1, 0.36, 1) both;
1345
+ }
1346
+
1347
+ .customforge-workbench__dialog[open][data-closing="true"] {
1348
+ pointer-events: none;
1349
+ animation: customforge-dialog-exit 160ms cubic-bezier(0.4, 0, 1, 1) both;
1350
+ }
1351
+
1352
+ .customforge-workbench__dialog--text,
1353
+ .customforge-workbench__dialog--image {
1354
+ width: min(680px, calc(100vw - 32px));
1355
+ }
1356
+
1357
+ .customforge-workbench__dialog::backdrop {
1358
+ background: rgb(17 24 30 / 38%);
1359
+ }
1360
+
1361
+ .customforge-workbench__dialog[open]::backdrop {
1362
+ animation: customforge-backdrop-enter 190ms ease-out both;
1363
+ }
1364
+
1365
+ .customforge-workbench__dialog[open][data-closing="true"]::backdrop {
1366
+ animation: customforge-backdrop-exit 160ms ease-in both;
1367
+ }
1368
+
1369
+ .customforge-workbench__dialog > form {
1370
+ display: grid;
1371
+ grid-template-rows: auto minmax(0, 1fr) auto;
1372
+ max-height: min(760px, calc(100vh - 32px));
1373
+ margin: 0;
1374
+ }
1375
+
1376
+ .customforge-workbench__dialog-header {
1377
+ justify-content: space-between;
1378
+ gap: 20px;
1379
+ min-width: 0;
1380
+ padding: 17px 18px;
1381
+ background: var(--cfw-surface);
1382
+ border-bottom: 1px solid var(--cfw-line);
1383
+ }
1384
+
1385
+ .customforge-workbench__dialog-header > div {
1386
+ align-items: flex-start;
1387
+ flex-direction: column;
1388
+ min-width: 0;
1389
+ gap: 3px;
1390
+ }
1391
+
1392
+ .customforge-workbench__dialog-header h2 {
1393
+ overflow: hidden;
1394
+ margin: 0;
1395
+ max-width: 100%;
1396
+ font-size: 17px;
1397
+ font-weight: 700;
1398
+ line-height: 23px;
1399
+ text-overflow: ellipsis;
1400
+ white-space: nowrap;
1401
+ }
1402
+
1403
+ .customforge-workbench__dialog-body {
1404
+ min-height: 0;
1405
+ padding: 18px;
1406
+ background: var(--cfw-surface);
1407
+ overflow: auto;
1408
+ }
1409
+
1410
+ .customforge-workbench__product-form {
1411
+ display: grid;
1412
+ gap: 18px;
1413
+ }
1414
+
1415
+ .customforge-workbench__product-source-switch {
1416
+ display: flex;
1417
+ align-items: center;
1418
+ gap: 20px;
1419
+ min-height: 37px;
1420
+ border-bottom: 1px solid var(--cfw-line);
1421
+ }
1422
+
1423
+ .customforge-workbench__product-source-switch button {
1424
+ position: relative;
1425
+ align-self: stretch;
1426
+ padding: 0 1px;
1427
+ color: var(--cfw-muted);
1428
+ background: transparent;
1429
+ border: 0;
1430
+ cursor: pointer;
1431
+ font-size: 13px;
1432
+ font-weight: 600;
1433
+ }
1434
+
1435
+ .customforge-workbench__product-source-switch button::after {
1436
+ position: absolute;
1437
+ right: 0;
1438
+ bottom: -1px;
1439
+ left: 0;
1440
+ height: 2px;
1441
+ background: var(--cfw-accent);
1442
+ content: "";
1443
+ opacity: 0;
1444
+ }
1445
+
1446
+ .customforge-workbench__product-source-switch button:hover,
1447
+ .customforge-workbench__product-source-switch button[data-selected="true"] {
1448
+ color: var(--cfw-ink);
1449
+ }
1450
+
1451
+ .customforge-workbench__product-source-switch button[data-selected="true"]::after {
1452
+ opacity: 1;
1453
+ }
1454
+
1455
+ .customforge-workbench__product-file-picker {
1456
+ position: relative;
1457
+ display: grid;
1458
+ grid-template-columns: auto minmax(0, 1fr);
1459
+ align-items: center;
1460
+ gap: 12px;
1461
+ min-height: 64px;
1462
+ padding: 11px;
1463
+ background: var(--cfw-surface-muted);
1464
+ border: 1px dashed var(--cfw-line-strong);
1465
+ border-radius: var(--cfw-control-radius);
1466
+ cursor: pointer;
1467
+ }
1468
+
1469
+ .customforge-workbench__product-file-picker:hover {
1470
+ border-color: color-mix(in srgb, var(--cfw-ink) 26%, var(--cfw-line));
1471
+ }
1472
+
1473
+ .customforge-workbench__product-file-picker:focus-within {
1474
+ border-color: var(--cfw-accent);
1475
+ outline: 2px solid color-mix(in srgb, var(--cfw-accent) 18%, transparent);
1476
+ outline-offset: 2px;
1477
+ }
1478
+
1479
+ .customforge-workbench__product-file-picker input {
1480
+ position: absolute;
1481
+ inset: 0;
1482
+ width: 100%;
1483
+ height: 100%;
1484
+ cursor: pointer;
1485
+ opacity: 0;
1486
+ }
1487
+
1488
+ .customforge-workbench__product-file-picker input:focus-visible {
1489
+ outline: 0;
1490
+ }
1491
+
1492
+ .customforge-workbench__product-file-command {
1493
+ display: inline-flex;
1494
+ align-items: center;
1495
+ min-height: 32px;
1496
+ padding: 0 11px;
1497
+ color: var(--cfw-ink);
1498
+ background: var(--cfw-surface);
1499
+ border: 1px solid var(--cfw-line-strong);
1500
+ border-radius: var(--cfw-control-radius);
1501
+ font-size: 12px;
1502
+ font-weight: 600;
1503
+ }
1504
+
1505
+ .customforge-workbench__product-file-picker small {
1506
+ overflow: hidden;
1507
+ color: var(--cfw-muted);
1508
+ font-size: 12px;
1509
+ font-weight: 400;
1510
+ text-overflow: ellipsis;
1511
+ white-space: nowrap;
1512
+ }
1513
+
1514
+ .customforge-workbench__product-options {
1515
+ border-top: 1px solid var(--cfw-line);
1516
+ }
1517
+
1518
+ .customforge-workbench__product-options > summary {
1519
+ display: flex;
1520
+ align-items: center;
1521
+ justify-content: space-between;
1522
+ gap: 12px;
1523
+ min-height: 40px;
1524
+ padding: 12px 2px 0 0;
1525
+ color: var(--cfw-muted);
1526
+ cursor: pointer;
1527
+ font-size: 12px;
1528
+ font-weight: 600;
1529
+ list-style: none;
1530
+ }
1531
+
1532
+ .customforge-workbench__product-options > summary::-webkit-details-marker {
1533
+ display: none;
1534
+ }
1535
+
1536
+ .customforge-workbench__product-options > summary svg {
1537
+ flex: 0 0 16px;
1538
+ width: 16px;
1539
+ height: 16px;
1540
+ transition: transform 140ms ease;
1541
+ }
1542
+
1543
+ .customforge-workbench__product-options[open] > summary {
1544
+ color: var(--cfw-ink);
1545
+ }
1546
+
1547
+ .customforge-workbench__product-options[open] > summary svg {
1548
+ transform: rotate(180deg);
1549
+ }
1550
+
1551
+ .customforge-workbench__product-options-fields {
1552
+ display: grid;
1553
+ gap: 16px;
1554
+ padding-top: 12px;
1555
+ }
1556
+
1557
+ .customforge-workbench__field {
1558
+ display: grid;
1559
+ min-width: 0;
1560
+ gap: 6px;
1561
+ color: color-mix(in srgb, var(--cfw-ink) 80%, var(--cfw-muted));
1562
+ font-size: 12px;
1563
+ font-weight: 620;
1564
+ }
1565
+
1566
+ .customforge-workbench__field--prominent {
1567
+ margin-bottom: 18px;
1568
+ }
1569
+
1570
+ .customforge-workbench__field input[type="text"],
1571
+ .customforge-workbench__field input[type="url"] {
1572
+ width: 100%;
1573
+ height: 40px;
1574
+ min-width: 0;
1575
+ padding: 0 11px;
1576
+ color: var(--cfw-ink);
1577
+ background: var(--cfw-surface);
1578
+ border: 1px solid var(--cfw-line);
1579
+ border-radius: var(--cfw-control-radius);
1580
+ font-size: 13px;
1581
+ font-weight: 450;
1582
+ transition: border-color 140ms ease, box-shadow 140ms ease;
1583
+ }
1584
+
1585
+ .customforge-workbench__field input[type="text"]:hover,
1586
+ .customforge-workbench__field input[type="url"]:hover {
1587
+ border-color: color-mix(in srgb, var(--cfw-ink) 18%, var(--cfw-line));
1588
+ }
1589
+
1590
+ .customforge-workbench__field input[type="text"]:focus,
1591
+ .customforge-workbench__field input[type="url"]:focus {
1592
+ border-color: color-mix(in srgb, var(--cfw-accent) 55%, var(--cfw-line));
1593
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--cfw-accent) 9%, transparent);
1594
+ }
1595
+
1596
+ .customforge-workbench__field input::placeholder {
1597
+ color: color-mix(in srgb, var(--cfw-muted) 72%, var(--cfw-surface));
1598
+ }
1599
+
1600
+ .customforge-workbench__field--prominent input {
1601
+ height: 46px !important;
1602
+ font-size: 15px !important;
1603
+ }
1604
+
1605
+ .customforge-workbench__fieldset {
1606
+ min-width: 0;
1607
+ margin: 0;
1608
+ padding: 0;
1609
+ border: 0;
1610
+ }
1611
+
1612
+ .customforge-workbench__fieldset legend {
1613
+ margin-bottom: 8px;
1614
+ color: color-mix(in srgb, var(--cfw-ink) 80%, var(--cfw-muted));
1615
+ font-size: 12px;
1616
+ font-weight: 620;
1617
+ }
1618
+
1619
+ .customforge-workbench__preset-grid {
1620
+ display: grid;
1621
+ min-width: 0;
1622
+ gap: 9px;
1623
+ }
1624
+
1625
+ .customforge-workbench__preset-grid--text {
1626
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1627
+ }
1628
+
1629
+ .customforge-workbench__text-preset {
1630
+ display: grid;
1631
+ min-width: 0;
1632
+ min-height: 100px;
1633
+ padding: 12px;
1634
+ color: var(--cfw-ink);
1635
+ text-align: left;
1636
+ background: var(--cfw-surface);
1637
+ border: 1px solid var(--cfw-line);
1638
+ border-radius: var(--cfw-control-radius);
1639
+ cursor: pointer;
1640
+ transition: background-color 140ms ease, border-color 140ms ease,
1641
+ box-shadow 140ms ease;
1642
+ }
1643
+
1644
+ .customforge-workbench__text-preset:hover {
1645
+ border-color: color-mix(in srgb, var(--cfw-accent) 34%, var(--cfw-line));
1646
+ box-shadow: 0 2px 8px rgb(24 34 44 / 6%);
1647
+ }
1648
+
1649
+ .customforge-workbench__text-preset[data-selected="true"] {
1650
+ background: var(--cfw-surface-muted);
1651
+ border-color: var(--cfw-accent);
1652
+ box-shadow: none;
1653
+ }
1654
+
1655
+ .customforge-workbench__text-preview {
1656
+ align-self: center;
1657
+ overflow: hidden;
1658
+ font-size: 21px;
1659
+ line-height: 28px;
1660
+ text-align: center;
1661
+ text-overflow: ellipsis;
1662
+ white-space: nowrap;
1663
+ }
1664
+
1665
+ .customforge-workbench__text-preset strong {
1666
+ align-self: end;
1667
+ overflow: hidden;
1668
+ color: var(--cfw-muted);
1669
+ font-family: var(--cfw-font-family);
1670
+ font-size: 12px;
1671
+ font-weight: 650;
1672
+ text-overflow: ellipsis;
1673
+ white-space: nowrap;
1674
+ }
1675
+
1676
+ .customforge-workbench__color-field {
1677
+ justify-content: space-between;
1678
+ margin-top: 16px;
1679
+ padding-top: 14px;
1680
+ border-top: 1px solid var(--cfw-line);
1681
+ }
1682
+
1683
+ .customforge-workbench__color-field input {
1684
+ width: 42px;
1685
+ height: 30px;
1686
+ padding: 2px;
1687
+ background: var(--cfw-surface);
1688
+ border: 1px solid var(--cfw-line);
1689
+ border-radius: var(--cfw-control-radius);
1690
+ cursor: pointer;
1691
+ }
1692
+
1693
+ .customforge-workbench__tabs {
1694
+ gap: 2px;
1695
+ width: max-content;
1696
+ max-width: 100%;
1697
+ margin-bottom: 16px;
1698
+ padding: 3px;
1699
+ overflow-x: auto;
1700
+ background: var(--cfw-surface-muted);
1701
+ border: 0;
1702
+ border-radius: 4px;
1703
+ }
1704
+
1705
+ .customforge-workbench__tabs button {
1706
+ flex: 0 0 auto;
1707
+ min-height: 32px;
1708
+ padding: 0 12px;
1709
+ color: var(--cfw-muted);
1710
+ background: transparent;
1711
+ border: 0;
1712
+ border-radius: 3px;
1713
+ cursor: pointer;
1714
+ font-size: 11px;
1715
+ font-weight: 620;
1716
+ white-space: nowrap;
1717
+ }
1718
+
1719
+ .customforge-workbench__tabs button[data-selected="true"] {
1720
+ color: var(--cfw-ink);
1721
+ background: var(--cfw-surface);
1722
+ box-shadow: 0 1px 2px rgb(24 24 27 / 8%);
1723
+ }
1724
+
1725
+ .customforge-workbench__tab-panel {
1726
+ min-height: 240px;
1727
+ }
1728
+
1729
+ .customforge-workbench__upload-field {
1730
+ position: relative;
1731
+ justify-content: center;
1732
+ flex-direction: column;
1733
+ width: 100%;
1734
+ min-height: 240px;
1735
+ gap: 7px;
1736
+ padding: 18px;
1737
+ overflow: hidden;
1738
+ color: var(--cfw-ink);
1739
+ background: var(--cfw-surface-muted);
1740
+ border: 1px dashed color-mix(in srgb, var(--cfw-muted) 38%, var(--cfw-line));
1741
+ border-radius: 4px;
1742
+ cursor: pointer;
1743
+ transition: background-color 140ms ease, border-color 140ms ease;
1744
+ }
1745
+
1746
+ .customforge-workbench__upload-field:hover {
1747
+ background: var(--cfw-surface-muted);
1748
+ border-color: color-mix(in srgb, var(--cfw-accent) 42%, var(--cfw-line));
1749
+ }
1750
+
1751
+ .customforge-workbench__upload-icon {
1752
+ display: grid;
1753
+ width: 36px;
1754
+ height: 36px;
1755
+ margin-bottom: 2px;
1756
+ color: var(--cfw-accent);
1757
+ background: var(--cfw-surface);
1758
+ border: 1px solid var(--cfw-line);
1759
+ border-radius: 4px;
1760
+ place-items: center;
1761
+ }
1762
+
1763
+ .customforge-workbench__upload-field strong {
1764
+ font-size: 12px;
1765
+ }
1766
+
1767
+ .customforge-workbench__upload-field > span:not(.customforge-workbench__upload-icon) {
1768
+ max-width: 100%;
1769
+ overflow: hidden;
1770
+ color: var(--cfw-muted);
1771
+ font-size: 12px;
1772
+ text-overflow: ellipsis;
1773
+ white-space: nowrap;
1774
+ }
1775
+
1776
+ .customforge-workbench__upload-field img {
1777
+ position: absolute;
1778
+ inset: 12px;
1779
+ width: calc(100% - 24px);
1780
+ height: calc(100% - 24px);
1781
+ object-fit: contain;
1782
+ background: var(--cfw-surface);
1783
+ }
1784
+
1785
+ .customforge-workbench__preset-grid--assets {
1786
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1787
+ }
1788
+
1789
+ .customforge-workbench__asset-preset {
1790
+ display: grid;
1791
+ min-width: 0;
1792
+ padding: 0;
1793
+ overflow: hidden;
1794
+ color: var(--cfw-ink);
1795
+ background: var(--cfw-surface);
1796
+ border: 1px solid var(--cfw-line);
1797
+ border-radius: var(--cfw-control-radius);
1798
+ cursor: pointer;
1799
+ text-align: left;
1800
+ transition: background-color 140ms ease, border-color 140ms ease,
1801
+ box-shadow 140ms ease;
1802
+ }
1803
+
1804
+ .customforge-workbench__asset-preset:hover {
1805
+ border-color: color-mix(in srgb, var(--cfw-accent) 34%, var(--cfw-line));
1806
+ box-shadow: 0 2px 8px rgb(24 34 44 / 6%);
1807
+ }
1808
+
1809
+ .customforge-workbench__asset-preset[data-selected="true"] {
1810
+ background: var(--cfw-surface-muted);
1811
+ border-color: var(--cfw-accent);
1812
+ box-shadow: none;
1813
+ }
1814
+
1815
+ .customforge-workbench__asset-preset img {
1816
+ display: block;
1817
+ width: 100%;
1818
+ aspect-ratio: 4 / 3;
1819
+ object-fit: cover;
1820
+ background: var(--cfw-stage);
1821
+ border-bottom: 1px solid var(--cfw-line);
1822
+ }
1823
+
1824
+ .customforge-workbench__asset-preset strong {
1825
+ overflow: hidden;
1826
+ padding: 9px 10px;
1827
+ font-size: 11px;
1828
+ font-weight: 620;
1829
+ text-overflow: ellipsis;
1830
+ white-space: nowrap;
1831
+ }
1832
+
1833
+ .customforge-workbench__preset-empty {
1834
+ display: grid;
1835
+ min-height: 220px;
1836
+ margin: 0;
1837
+ color: var(--cfw-muted);
1838
+ background: var(--cfw-surface-muted);
1839
+ border: 1px dashed var(--cfw-line);
1840
+ border-radius: 4px;
1841
+ font-size: 12px;
1842
+ place-items: center;
1843
+ }
1844
+
1845
+ .customforge-workbench__form-fields {
1846
+ display: grid;
1847
+ gap: 14px;
1848
+ }
1849
+
1850
+ .customforge-workbench__input-shell {
1851
+ position: relative;
1852
+ }
1853
+
1854
+ .customforge-workbench__input-shell svg,
1855
+ .customforge-workbench__input-shell img {
1856
+ position: absolute;
1857
+ left: 11px;
1858
+ color: var(--cfw-muted);
1859
+ pointer-events: none;
1860
+ }
1861
+
1862
+ .customforge-workbench__input-shell input {
1863
+ padding-left: 38px !important;
1864
+ }
1865
+
1866
+ .customforge-workbench__check-field {
1867
+ gap: 8px;
1868
+ color: color-mix(in srgb, var(--cfw-ink) 80%, var(--cfw-muted));
1869
+ font-size: 12px;
1870
+ font-weight: 600;
1871
+ }
1872
+
1873
+ .customforge-workbench__check-field input {
1874
+ width: 16px;
1875
+ height: 16px;
1876
+ margin: 0;
1877
+ accent-color: var(--cfw-accent);
1878
+ }
1879
+
1880
+ .customforge-workbench__dialog-actions {
1881
+ justify-content: flex-end;
1882
+ gap: 8px;
1883
+ padding: 13px 18px;
1884
+ background: var(--cfw-surface);
1885
+ border-top: 1px solid var(--cfw-line);
1886
+ }
1887
+
1888
+ .customforge-workbench__field > small,
1889
+ .customforge-workbench__check-field small {
1890
+ color: var(--cfw-muted);
1891
+ font-size: 11px;
1892
+ font-weight: 400;
1893
+ line-height: 1.45;
1894
+ }
1895
+
1896
+ .customforge-workbench__check-field > span {
1897
+ display: grid;
1898
+ gap: 2px;
1899
+ }
1900
+
1901
+ .customforge-workbench__check-field strong {
1902
+ color: var(--cfw-ink);
1903
+ font-size: 12px;
1904
+ font-weight: 600;
1905
+ }
1906
+
1907
+ .customforge-workbench__product-options .customforge-workbench__check-field {
1908
+ align-items: flex-start;
1909
+ }
1910
+
1911
+ .customforge-workbench__product-options
1912
+ .customforge-workbench__check-field input {
1913
+ margin-top: 2px;
1914
+ }
1915
+
1916
+ @container customforge-editor-panel (max-width: 1040px) {
1917
+ .customforge-workbench__panel--editor > .customforge-workbench__panelbar {
1918
+ padding-right: 8px;
1919
+ padding-left: 10px;
1920
+ }
1921
+
1922
+ .customforge-workbench__resolution {
1923
+ display: none;
1924
+ }
1925
+
1926
+ .customforge-workbench__toolbar {
1927
+ gap: 2px;
1928
+ padding-right: 6px;
1929
+ padding-left: 2px;
1930
+ }
1931
+
1932
+ .customforge-workbench__tool-group,
1933
+ .customforge-workbench__text-toolbar,
1934
+ .customforge-workbench__image-toolbar,
1935
+ .customforge-workbench__extension-slot {
1936
+ gap: 2px;
1937
+ }
1938
+
1939
+ .customforge-workbench__icon-button {
1940
+ width: 30px;
1941
+ flex-basis: 30px;
1942
+ }
1943
+
1944
+ .customforge-workbench__tool-button {
1945
+ width: 30px;
1946
+ gap: 0;
1947
+ padding: 0;
1948
+ }
1949
+
1950
+ .customforge-workbench__tool-button:not(.customforge-workbench__extension-button)
1951
+ > span:not(.customforge-workbench__layer-count) {
1952
+ display: none;
1953
+ }
1954
+
1955
+ .customforge-workbench__extension-button[data-has-icon="true"]
1956
+ .customforge-workbench__extension-label {
1957
+ display: none;
1958
+ }
1959
+
1960
+ .customforge-workbench__extension-button[data-has-icon="false"] {
1961
+ width: auto;
1962
+ padding-right: 7px;
1963
+ padding-left: 7px;
1964
+ }
1965
+
1966
+ .customforge-workbench__layers-toggle {
1967
+ width: auto;
1968
+ gap: 4px;
1969
+ padding: 0 4px;
1970
+ }
1971
+
1972
+ .customforge-workbench__font-select {
1973
+ width: 116px;
1974
+ flex-basis: 116px;
1975
+ }
1976
+
1977
+ .customforge-workbench__format-number,
1978
+ .customforge-workbench__format-number input {
1979
+ width: 52px;
1980
+ flex-basis: 52px;
1981
+ }
1982
+
1983
+ .customforge-workbench__format-button {
1984
+ width: 30px;
1985
+ flex-basis: 30px;
1986
+ }
1987
+
1988
+ .customforge-workbench__separator,
1989
+ .customforge-workbench__format-separator {
1990
+ margin-right: 1px;
1991
+ margin-left: 1px;
1992
+ }
1993
+ }
1994
+
1995
+ @container customforge-workbench (max-width: 980px) {
1996
+ .customforge-workbench__workspace {
1997
+ grid-template-columns: 1fr;
1998
+ overflow: auto;
1999
+ }
2000
+
2001
+ .customforge-workbench__panel {
2002
+ min-height: 540px;
2003
+ }
2004
+
2005
+ .customforge-workbench__panel--editor {
2006
+ border-right: 0;
2007
+ border-bottom: 1px solid var(--cfw-line);
2008
+ }
2009
+ }
2010
+
2011
+ @container customforge-workbench (max-width: 720px) {
2012
+ .customforge-workbench__topbar {
2013
+ gap: 8px;
2014
+ padding: 8px 9px;
2015
+ }
2016
+
2017
+ .customforge-workbench__brand-logo {
2018
+ flex-basis: 32px;
2019
+ width: 32px;
2020
+ height: 32px;
2021
+ }
2022
+
2023
+ .customforge-workbench__brand-copy span {
2024
+ display: none;
2025
+ }
2026
+
2027
+ .customforge-workbench__brand-copy strong {
2028
+ max-width: 110px;
2029
+ }
2030
+
2031
+ .customforge-workbench__global-actions {
2032
+ gap: 4px;
2033
+ }
2034
+
2035
+ .customforge-workbench__topbar .customforge-workbench__button {
2036
+ padding: 0 8px;
2037
+ }
2038
+
2039
+ .customforge-workbench__resolution {
2040
+ display: none;
2041
+ }
2042
+
2043
+ .customforge-workbench__panel--editor {
2044
+ grid-template-areas:
2045
+ "editor-header"
2046
+ "editor-toolbar"
2047
+ "editor-body";
2048
+ grid-template-columns: minmax(0, 1fr);
2049
+ grid-template-rows: auto auto minmax(340px, 1fr);
2050
+ }
2051
+
2052
+ .customforge-workbench__toolbar {
2053
+ padding-left: 10px;
2054
+ }
2055
+
2056
+ .customforge-workbench__layer-actions {
2057
+ opacity: 1;
2058
+ visibility: visible;
2059
+ pointer-events: auto;
2060
+ }
2061
+
2062
+ .customforge-workbench__dialog-actions {
2063
+ align-items: stretch;
2064
+ flex-direction: column-reverse;
2065
+ }
2066
+
2067
+ .customforge-workbench__preset-grid--assets {
2068
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2069
+ }
2070
+ }
2071
+
2072
+ @container customforge-workbench (max-width: 480px) {
2073
+ .customforge-workbench__topbar {
2074
+ align-items: stretch;
2075
+ flex-direction: column;
2076
+ }
2077
+
2078
+ .customforge-workbench__global-actions {
2079
+ display: grid;
2080
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2081
+ }
2082
+
2083
+ .customforge-workbench__brand-copy strong {
2084
+ max-width: 220px;
2085
+ }
2086
+
2087
+ .customforge-workbench[data-layers-expanded="true"]
2088
+ .customforge-workbench__editor-body {
2089
+ grid-template-columns: 180px minmax(0, 1fr);
2090
+ }
2091
+
2092
+ .customforge-workbench[data-toolbar="hidden"][data-layers="visible"]
2093
+ .customforge-workbench__editor-body {
2094
+ grid-template-columns: 180px minmax(0, 1fr);
2095
+ }
2096
+
2097
+ .customforge-workbench__preset-grid--text,
2098
+ .customforge-workbench__preset-grid--assets {
2099
+ grid-template-columns: minmax(0, 1fr);
2100
+ }
2101
+
2102
+ .customforge-workbench__tabs {
2103
+ width: 100%;
2104
+ }
2105
+
2106
+ .customforge-workbench__tabs button {
2107
+ flex: 1 0 auto;
2108
+ }
2109
+ }
2110
+
2111
+ @media (prefers-reduced-motion: reduce) {
2112
+ .customforge-workbench__button[data-loading="true"]::before,
2113
+ .customforge-workbench__layer-item,
2114
+ .customforge-workbench__layer-item[data-selected="true"],
2115
+ .customforge-workbench__layer-item[data-selected="true"]::before,
2116
+ .customforge-workbench__dialog[open],
2117
+ .customforge-workbench__dialog[open][data-closing="true"],
2118
+ .customforge-workbench__dialog[open]::backdrop,
2119
+ .customforge-workbench__dialog[open][data-closing="true"]::backdrop {
2120
+ transition: none;
2121
+ animation: none;
2122
+ }
2123
+ }
12
2124
  /*$vite$:1*/