@mevdragon/vidfarm-devcli 0.5.3 → 0.7.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 (116) hide show
  1. package/README.md +3 -3
  2. package/SKILL.director.md +28 -7
  3. package/SKILL.platform.md +9 -5
  4. package/demo/README.md +28 -0
  5. package/demo/dist/app.css +1 -0
  6. package/demo/dist/app.js +1184 -0
  7. package/demo/dist/chunks/chunk-DXB73IDG.js +1 -0
  8. package/demo/dist/chunks/chunk-S7OWAJDS.js +36 -0
  9. package/demo/dist/chunks/chunk-VTIBZ6AN.js +1 -0
  10. package/demo/dist/chunks/dist-ADSJKBVE.js +332 -0
  11. package/demo/dist/chunks/domEditingLayers-VZMLL4AP-SGHWPND4.js +1 -0
  12. package/demo/dist/chunks/hyperframes-player-XB65TCD6.js +425 -0
  13. package/demo/dist/chunks/lib-XAQ37YOE.js +1 -0
  14. package/demo/dist/chunks/src-TJ2QYA4U.js +207 -0
  15. package/demo/dist/favicon.ico +0 -0
  16. package/demo/dist/icons/timeline/audio.svg +7 -0
  17. package/demo/dist/icons/timeline/captions.svg +5 -0
  18. package/demo/dist/icons/timeline/composition.svg +12 -0
  19. package/demo/dist/icons/timeline/image.svg +18 -0
  20. package/demo/dist/icons/timeline/music.svg +10 -0
  21. package/demo/dist/icons/timeline/text.svg +3 -0
  22. package/demo/dist/index.html +15 -0
  23. package/dist/src/account-pages-legacy.js +9396 -0
  24. package/dist/src/account-pages.js +61 -0
  25. package/dist/src/app.js +14663 -0
  26. package/dist/src/cli.js +60 -97
  27. package/dist/src/composition-runtime.js +613 -0
  28. package/dist/src/config.js +173 -0
  29. package/dist/src/context.js +447 -0
  30. package/dist/src/dev-app-legacy.js +739 -0
  31. package/dist/src/dev-app.js +6 -0
  32. package/dist/src/domain.js +2 -0
  33. package/dist/src/editor-chat-history.js +82 -0
  34. package/dist/src/editor-chat.js +449 -0
  35. package/dist/src/editor-dark-theme.js +1128 -0
  36. package/dist/src/frontend/debug.js +71 -0
  37. package/dist/src/frontend/flockposter-cache-store.js +124 -0
  38. package/dist/src/frontend/homepage-client.js +182 -0
  39. package/dist/src/frontend/homepage-shared.js +4 -0
  40. package/dist/src/frontend/homepage-store.js +28 -0
  41. package/dist/src/frontend/homepage-view.js +547 -0
  42. package/dist/src/frontend/page-runtime-client.js +132 -0
  43. package/dist/src/frontend/page-runtime-store.js +9 -0
  44. package/dist/src/frontend/sentry.js +42 -0
  45. package/dist/src/frontend/template-editor-chat.js +3960 -0
  46. package/dist/src/help-page.js +346 -0
  47. package/dist/src/homepage.js +1235 -0
  48. package/dist/src/hyperframes/composition.js +180 -0
  49. package/dist/src/index.js +16 -0
  50. package/dist/src/instrument.js +30 -0
  51. package/dist/src/lib/crypto.js +45 -0
  52. package/dist/src/lib/dev-log.js +54 -0
  53. package/dist/src/lib/display-name.js +11 -0
  54. package/dist/src/lib/ids.js +24 -0
  55. package/dist/src/lib/images.js +19 -0
  56. package/dist/src/lib/json.js +15 -0
  57. package/dist/src/lib/package-root.js +47 -0
  58. package/dist/src/lib/template-paths.js +28 -0
  59. package/dist/src/lib/time.js +7 -0
  60. package/dist/src/lib/url-clean.js +85 -0
  61. package/dist/src/page-runtime.js +2 -0
  62. package/dist/src/page-shell.js +1381 -0
  63. package/dist/src/primitive-context.js +357 -0
  64. package/dist/src/primitive-registry.js +2561 -0
  65. package/dist/src/primitive-sdk.js +4 -0
  66. package/dist/src/primitives/hyperframes-media.js +108 -0
  67. package/dist/src/react-page-shell.js +35 -0
  68. package/dist/src/ready-post-schedule-component.js +1540 -0
  69. package/dist/src/registry.js +296 -0
  70. package/dist/src/runtime.js +35 -0
  71. package/dist/src/services/api-call-history.js +249 -0
  72. package/dist/src/services/auth.js +152 -0
  73. package/dist/src/services/billing-pricing.js +39 -0
  74. package/dist/src/services/billing.js +228 -0
  75. package/dist/src/services/cast.js +127 -0
  76. package/dist/src/services/chat-threads.js +92 -0
  77. package/dist/src/services/composition-sanitize.js +124 -0
  78. package/dist/src/services/composition-watch.js +79 -0
  79. package/dist/src/services/fork-access.js +93 -0
  80. package/dist/src/services/fork-manifest.js +42 -0
  81. package/dist/src/services/ghostcut.js +179 -0
  82. package/dist/src/services/hyperframes.js +2307 -0
  83. package/dist/src/services/job-capacity.js +14 -0
  84. package/dist/src/services/job-logs.js +197 -0
  85. package/dist/src/services/jobs.js +136 -0
  86. package/dist/src/services/local-dynamo.js +0 -0
  87. package/dist/src/services/media-processing.js +766 -0
  88. package/dist/src/services/primitive-media-lambda.js +280 -0
  89. package/dist/src/services/providers.js +2926 -0
  90. package/dist/src/services/rate-limits.js +262 -0
  91. package/dist/src/services/serverless-auth.js +382 -0
  92. package/dist/src/services/serverless-jobs.js +1082 -0
  93. package/dist/src/services/serverless-provider-keys.js +409 -0
  94. package/dist/src/services/serverless-records.js +1385 -0
  95. package/dist/src/services/serverless-template-configs.js +75 -0
  96. package/dist/src/services/storage.js +383 -0
  97. package/dist/src/services/template-certification.js +413 -0
  98. package/dist/src/services/template-loader.js +99 -0
  99. package/dist/src/services/template-runtime-bundles.js +217 -0
  100. package/dist/src/services/template-sources.js +1017 -0
  101. package/dist/src/services/upstream.js +248 -0
  102. package/dist/src/services/video-normalization.js +2 -0
  103. package/dist/src/services/webhooks.js +62 -0
  104. package/dist/src/template-editor-pages.js +2576 -0
  105. package/dist/src/template-editor-shell.js +2840 -0
  106. package/dist/src/template-sdk.js +4 -0
  107. package/dist/src/worker.js +17 -0
  108. package/package.json +6 -4
  109. package/public/assets/homepage-app.js +54 -0
  110. package/public/assets/homepage-client-app.js +80 -0
  111. package/public/assets/page-runtime-client-app.js +94 -0
  112. package/src/assets/SELLING_AWARENESS_STAGES.md +579 -0
  113. package/src/assets/SELLING_WITH_HOOKS.md +377 -0
  114. package/src/assets/SELLING_WITH_VSLS.md +606 -0
  115. package/src/assets/favicon.ico +0 -0
  116. package/src/assets/logo-vidfarm.png +0 -0
@@ -0,0 +1,2840 @@
1
+ import { escapeAttribute, escapeHtml, resolveAccountDisplayName } from "./page-shell.js";
2
+ export const TEMPLATE_EDITOR_SHELL_STYLES = `
3
+ .editor-workbench {
4
+ min-height: 100%;
5
+ height: 100%;
6
+ padding: 96px 0 28px 432px;
7
+ overflow: hidden;
8
+ min-width: 0;
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ .editor-main {
13
+ min-height: 0;
14
+ height: 100%;
15
+ overflow-x: hidden;
16
+ overflow-y: auto;
17
+ overflow: auto;
18
+ padding-left: 10px;
19
+ }
20
+
21
+ .editor-floating-nav {
22
+ position: fixed;
23
+ top: 20px;
24
+ left: 452px;
25
+ right: 20px;
26
+ z-index: 60;
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ align-items: center;
30
+ gap: 10px;
31
+ max-width: none;
32
+ padding: 12px 14px;
33
+ border: 1px solid rgba(255, 255, 255, 0.84);
34
+ border-radius: 24px;
35
+ background: rgba(255, 252, 247, 0.9);
36
+ box-shadow: var(--shadow);
37
+ backdrop-filter: blur(16px);
38
+ }
39
+
40
+ .editor-back-link {
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ min-height: 40px;
45
+ padding: 0 14px;
46
+ border: 1px solid rgba(191, 164, 109, 0.34);
47
+ border-radius: 999px;
48
+ background: #dbc17a;
49
+ color: #243041;
50
+ text-decoration: none;
51
+ font-size: 0.9rem;
52
+ font-weight: 700;
53
+ white-space: nowrap;
54
+ }
55
+
56
+ .editor-nav-title {
57
+ min-width: 0;
58
+ flex: 1 1 auto;
59
+ margin: 0 4px 0 2px;
60
+ font-family: "Instrument Serif", serif;
61
+ font-size: 1.4rem;
62
+ line-height: 0.95;
63
+ letter-spacing: -0.04em;
64
+ color: #1f2635;
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ }
69
+
70
+ .editor-nav-account {
71
+ min-width: 0;
72
+ max-width: min(42vw, 460px);
73
+ margin-left: auto;
74
+ color: rgba(116, 130, 156, 0.78);
75
+ font-size: 0.94rem;
76
+ line-height: 1.2;
77
+ font-weight: 500;
78
+ letter-spacing: -0.01em;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ white-space: nowrap;
82
+ }
83
+
84
+ .editor-nav-account span {
85
+ color: rgba(116, 130, 156, 0.62);
86
+ }
87
+
88
+ .editor-right-rail {
89
+ position: fixed;
90
+ top: 0;
91
+ left: 0;
92
+ bottom: 0;
93
+ z-index: 30;
94
+ width: 432px;
95
+ overflow: hidden;
96
+ }
97
+
98
+ .editor-chat-panel {
99
+ height: 100%;
100
+ min-width: 0;
101
+ display: flex;
102
+ overflow: hidden;
103
+ border-right: 1px solid rgba(255, 255, 255, 0.84);
104
+ background: rgba(255, 252, 247, 0.92);
105
+ }
106
+
107
+ .vf-editor-chat-shell,
108
+ .vf-editor-chat-thread {
109
+ height: 100%;
110
+ min-height: 0;
111
+ }
112
+
113
+ .vf-editor-chat-shell {
114
+ display: flex;
115
+ flex-direction: column;
116
+ min-height: 100%;
117
+ min-width: 0;
118
+ width: 100%;
119
+ }
120
+
121
+ .vf-editor-chat-body {
122
+ flex: 1 1 auto;
123
+ display: flex;
124
+ min-height: 0;
125
+ min-width: 0;
126
+ width: 100%;
127
+ }
128
+
129
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
130
+ height: 100%;
131
+ min-height: 0;
132
+ }
133
+
134
+ .vf-editor-chat-brainstorm-layout {
135
+ position: relative;
136
+ flex: 1 1 auto;
137
+ display: grid;
138
+ grid-template-columns: minmax(0, 1fr);
139
+ min-height: 0;
140
+ height: 100%;
141
+ width: 100%;
142
+ }
143
+
144
+ .vf-editor-chat-brainstorm-layout.has-sidebar {
145
+ grid-template-columns: 284px minmax(0, 1fr);
146
+ }
147
+
148
+ .vf-editor-chat-history-pane {
149
+ display: grid;
150
+ grid-template-rows: auto auto minmax(0, 1fr);
151
+ gap: 10px;
152
+ min-height: 0;
153
+ height: 100%;
154
+ padding: 14px 12px 12px;
155
+ background: rgba(255, 251, 244, 0.55);
156
+ border-right: 1px solid rgba(102, 82, 43, 0.14);
157
+ }
158
+
159
+ .vf-editor-chat-history-header {
160
+ display: flex;
161
+ align-items: center;
162
+ justify-content: space-between;
163
+ gap: 10px;
164
+ }
165
+
166
+ .vf-editor-chat-history-header-main {
167
+ display: flex;
168
+ align-items: center;
169
+ gap: 10px;
170
+ min-width: 0;
171
+ }
172
+
173
+ .vf-editor-chat-history-kicker {
174
+ color: #8d99ae;
175
+ font-size: 0.72rem;
176
+ font-weight: 800;
177
+ letter-spacing: 0.18em;
178
+ text-transform: uppercase;
179
+ }
180
+
181
+ .vf-editor-chat-new-thread-sidebar {
182
+ justify-self: start;
183
+ min-height: 34px;
184
+ padding: 0 12px;
185
+ border-radius: 999px;
186
+ }
187
+
188
+ .vf-editor-chat-history-close,
189
+ .vf-editor-chat-history-toggle,
190
+ .vf-editor-chat-back-button {
191
+ all: unset;
192
+ display: inline-flex;
193
+ align-items: center;
194
+ justify-content: center;
195
+ min-height: 34px;
196
+ padding: 0 12px;
197
+ border: 1px solid rgba(191, 164, 109, 0.28);
198
+ border-radius: 999px;
199
+ background: rgba(255, 255, 255, 0.88);
200
+ color: #243041;
201
+ font-size: 0.8rem;
202
+ font-weight: 800;
203
+ line-height: 1;
204
+ white-space: nowrap;
205
+ }
206
+
207
+ .vf-editor-chat-back-button {
208
+ gap: 6px;
209
+ cursor: pointer;
210
+ }
211
+
212
+ .vf-editor-chat-back-button svg {
213
+ width: 15px;
214
+ height: 15px;
215
+ }
216
+
217
+ .vf-editor-chat-history-close {
218
+ display: none;
219
+ width: 34px;
220
+ min-width: 34px;
221
+ padding: 0;
222
+ font-size: 1rem;
223
+ }
224
+
225
+ .vf-editor-chat-history-toggle {
226
+ display: none;
227
+ }
228
+
229
+ .vf-editor-chat-thread-list-sidebar {
230
+ display: flex;
231
+ flex-direction: column;
232
+ align-items: stretch;
233
+ gap: 8px;
234
+ margin-top: 4px;
235
+ min-height: 0;
236
+ overflow-y: auto;
237
+ overflow-x: hidden;
238
+ padding: 2px 2px 6px 0;
239
+ }
240
+
241
+ .vf-editor-chat-thread-list-sidebar::-webkit-scrollbar {
242
+ width: 6px;
243
+ }
244
+
245
+ .vf-editor-chat-thread-list-sidebar::-webkit-scrollbar-thumb {
246
+ border-radius: 999px;
247
+ background: rgba(191, 164, 109, 0.42);
248
+ }
249
+
250
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip {
251
+ display: flex;
252
+ width: 100%;
253
+ max-width: none;
254
+ min-width: 0;
255
+ padding: 6px 6px 6px 8px;
256
+ border-radius: 14px;
257
+ background: rgba(255, 255, 255, 0.78);
258
+ }
259
+
260
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-main {
261
+ display: block;
262
+ flex: 1 1 auto;
263
+ width: 100%;
264
+ max-width: none;
265
+ padding: 1px 0;
266
+ }
267
+
268
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-title {
269
+ font-size: 0.8rem;
270
+ }
271
+
272
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread-chip-tracers {
273
+ font-size: 0.64rem;
274
+ }
275
+
276
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread {
277
+ border-left: 0;
278
+ display: grid;
279
+ grid-template-rows: auto minmax(0, 1fr) auto;
280
+ }
281
+
282
+ .vf-editor-chat-brainstorm-topbar {
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: space-between;
286
+ gap: 12px;
287
+ }
288
+
289
+ .vf-editor-chat-brainstorm-topbar-left {
290
+ display: flex;
291
+ align-items: center;
292
+ gap: 10px;
293
+ min-width: 0;
294
+ }
295
+
296
+ .vf-editor-chat-brainstorm-title {
297
+ color: #1f2635;
298
+ font-family: "Instrument Serif", serif;
299
+ font-size: 1.8rem;
300
+ line-height: 0.96;
301
+ letter-spacing: -0.05em;
302
+ }
303
+
304
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-header {
305
+ padding: 10px 12px 8px;
306
+ }
307
+
308
+ .vf-editor-chat-mobile-fab,
309
+ .vf-editor-chat-minimize,
310
+ .vf-editor-chat-back-button--header {
311
+ display: none;
312
+ }
313
+
314
+ .vf-editor-chat-thread {
315
+ flex: 1 1 auto;
316
+ min-height: 0;
317
+ min-width: 0;
318
+ display: flex;
319
+ flex-direction: column;
320
+ overflow: hidden;
321
+ background:
322
+ radial-gradient(circle at top right, rgba(219, 193, 122, 0.12), transparent 26%),
323
+ linear-gradient(180deg, rgba(255, 252, 247, 0.98), rgba(252, 247, 238, 0.94));
324
+ }
325
+
326
+ .vf-editor-chat-header {
327
+ min-width: 0;
328
+ padding: 8px 8px 6px;
329
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
330
+ background: rgba(255, 251, 244, 0.76);
331
+ backdrop-filter: blur(12px);
332
+ }
333
+
334
+ .vf-editor-chat-header-row {
335
+ display: flex;
336
+ align-items: center;
337
+ justify-content: flex-start;
338
+ gap: 10px;
339
+ }
340
+
341
+ .vf-editor-chat-header-titles {
342
+ flex: 1 1 auto;
343
+ min-width: 0;
344
+ }
345
+
346
+ .vf-editor-chat-header-title {
347
+ color: #8d99ae;
348
+ font-size: 0.78rem;
349
+ font-weight: 800;
350
+ letter-spacing: 0.16em;
351
+ text-transform: uppercase;
352
+ }
353
+
354
+ .vf-editor-chat-header-subtitle {
355
+ margin-top: 4px;
356
+ color: #334155;
357
+ font-size: 0.92rem;
358
+ font-weight: 700;
359
+ line-height: 1.3;
360
+ }
361
+
362
+ .vf-editor-chat-new-thread {
363
+ all: unset;
364
+ display: inline-flex;
365
+ align-items: center;
366
+ justify-content: center;
367
+ min-height: 30px;
368
+ padding: 0 10px;
369
+ border-radius: 12px;
370
+ border: 1px solid rgba(191, 164, 109, 0.34);
371
+ background: rgba(255, 255, 255, 0.92);
372
+ color: #243041;
373
+ font-size: 0.78rem;
374
+ font-weight: 700;
375
+ white-space: nowrap;
376
+ }
377
+
378
+ .vf-editor-chat-history-icon {
379
+ all: unset;
380
+ display: inline-flex;
381
+ align-items: center;
382
+ justify-content: center;
383
+ width: 32px;
384
+ height: 32px;
385
+ min-width: 32px;
386
+ border-radius: 999px;
387
+ border: 1px solid rgba(191, 164, 109, 0.34);
388
+ background: rgba(255, 255, 255, 0.92);
389
+ color: #5c6a82;
390
+ cursor: pointer;
391
+ }
392
+
393
+ .vf-editor-chat-history-icon[aria-pressed="true"] {
394
+ border-color: rgba(219, 193, 122, 0.9);
395
+ background: rgba(219, 193, 122, 0.16);
396
+ color: #8a6b1b;
397
+ }
398
+
399
+ .vf-editor-chat-history-icon svg {
400
+ width: 18px;
401
+ height: 18px;
402
+ }
403
+
404
+ .vf-editor-chat-history-panel {
405
+ display: flex;
406
+ flex-direction: column;
407
+ min-height: 0;
408
+ height: 100%;
409
+ padding: 0;
410
+ }
411
+
412
+ .vf-editor-chat-history-panel .vf-editor-chat-thread-list {
413
+ display: flex;
414
+ flex-direction: column;
415
+ flex-wrap: nowrap;
416
+ gap: 6px;
417
+ margin: 0;
418
+ padding: 4px 0 16px;
419
+ width: 100%;
420
+ max-width: none;
421
+ overflow-y: auto;
422
+ overflow-x: hidden;
423
+ }
424
+
425
+ .vf-editor-chat-history-panel .vf-editor-chat-thread-chip {
426
+ display: flex;
427
+ align-items: center;
428
+ gap: 8px;
429
+ width: 100%;
430
+ max-width: none;
431
+ min-width: 0;
432
+ padding: 8px 10px;
433
+ border-radius: 12px;
434
+ }
435
+
436
+ .vf-editor-chat-history-panel .vf-editor-chat-thread-chip-main {
437
+ display: block;
438
+ flex: 1 1 auto;
439
+ min-width: 0;
440
+ }
441
+
442
+ .vf-editor-chat-branches-panel .vf-editor-chat-branches-header {
443
+ display: flex;
444
+ align-items: flex-end;
445
+ justify-content: space-between;
446
+ gap: 10px;
447
+ padding: 8px 4px 10px;
448
+ border-bottom: 1px solid rgba(191, 164, 109, 0.18);
449
+ }
450
+
451
+ .vf-editor-chat-branches-header-main {
452
+ display: flex;
453
+ flex-direction: column;
454
+ gap: 2px;
455
+ min-width: 0;
456
+ }
457
+
458
+ .vf-editor-chat-branches-kicker {
459
+ text-transform: uppercase;
460
+ font-size: 0.66rem;
461
+ font-weight: 700;
462
+ letter-spacing: 0.08em;
463
+ color: #94826a;
464
+ }
465
+
466
+ .vf-editor-chat-branches-title {
467
+ font-size: 0.9rem;
468
+ font-weight: 700;
469
+ color: #243041;
470
+ }
471
+
472
+ .vf-editor-chat-branches-refresh {
473
+ all: unset;
474
+ cursor: pointer;
475
+ padding: 6px 10px;
476
+ border-radius: 10px;
477
+ border: 1px solid rgba(191, 164, 109, 0.34);
478
+ background: rgba(255, 255, 255, 0.92);
479
+ color: #243041;
480
+ font-size: 0.74rem;
481
+ font-weight: 700;
482
+ }
483
+
484
+ .vf-editor-chat-branches-refresh[disabled] {
485
+ opacity: 0.6;
486
+ cursor: default;
487
+ }
488
+
489
+ .vf-editor-chat-branch-chip-link {
490
+ all: unset;
491
+ display: block;
492
+ flex: 1 1 auto;
493
+ min-width: 0;
494
+ cursor: pointer;
495
+ }
496
+
497
+ .vf-editor-chat-branch-chip-link:focus-visible {
498
+ outline: 2px solid rgba(219, 193, 122, 0.9);
499
+ outline-offset: 2px;
500
+ border-radius: 8px;
501
+ }
502
+
503
+ .vf-editor-chat-branch-current-badge {
504
+ display: inline-flex;
505
+ align-items: center;
506
+ margin-left: 8px;
507
+ padding: 2px 6px;
508
+ border-radius: 999px;
509
+ background: rgba(219, 193, 122, 0.32);
510
+ color: #6a4a0f;
511
+ font-size: 0.62rem;
512
+ font-weight: 700;
513
+ text-transform: uppercase;
514
+ letter-spacing: 0.08em;
515
+ }
516
+
517
+ .vf-editor-chat-thread-list {
518
+ display: flex;
519
+ flex-wrap: nowrap;
520
+ gap: 4px;
521
+ margin-top: 8px;
522
+ width: 100%;
523
+ max-width: 100%;
524
+ min-width: 0;
525
+ overflow-x: auto;
526
+ overflow-y: hidden;
527
+ padding: 0 4px 5px 0;
528
+ overscroll-behavior-x: contain;
529
+ scrollbar-width: thin;
530
+ -webkit-overflow-scrolling: touch;
531
+ }
532
+
533
+ .vf-editor-chat-thread-list::-webkit-scrollbar {
534
+ height: 6px;
535
+ }
536
+
537
+ .vf-editor-chat-thread-list::-webkit-scrollbar-thumb {
538
+ border-radius: 999px;
539
+ background: rgba(191, 164, 109, 0.42);
540
+ }
541
+
542
+ .vf-editor-chat-tracer-bar {
543
+ display: grid;
544
+ gap: 8px;
545
+ margin-top: 10px;
546
+ padding-top: 10px;
547
+ border-top: 1px solid rgba(191, 164, 109, 0.12);
548
+ }
549
+
550
+ .vf-editor-chat-tracer-bar-head {
551
+ display: flex;
552
+ align-items: center;
553
+ justify-content: space-between;
554
+ gap: 8px;
555
+ }
556
+
557
+ .vf-editor-chat-tracer-label {
558
+ color: #8d99ae;
559
+ font-size: 0.72rem;
560
+ font-weight: 800;
561
+ letter-spacing: 0.14em;
562
+ text-transform: uppercase;
563
+ }
564
+
565
+ .vf-editor-chat-tracer-add {
566
+ all: unset;
567
+ display: inline-flex;
568
+ align-items: center;
569
+ justify-content: center;
570
+ min-height: 28px;
571
+ padding: 0 10px;
572
+ border-radius: 999px;
573
+ border: 1px solid rgba(191, 164, 109, 0.34);
574
+ background: rgba(255, 255, 255, 0.92);
575
+ color: #243041;
576
+ font-size: 0.74rem;
577
+ font-weight: 700;
578
+ white-space: nowrap;
579
+ }
580
+
581
+ .vf-editor-chat-tracer-list {
582
+ display: flex;
583
+ flex-wrap: wrap;
584
+ gap: 6px;
585
+ }
586
+
587
+ .vf-editor-chat-tracer-chip {
588
+ display: inline-flex;
589
+ align-items: center;
590
+ gap: 6px;
591
+ min-height: 30px;
592
+ padding: 0 4px 0 10px;
593
+ border-radius: 999px;
594
+ border: 1px solid rgba(191, 164, 109, 0.24);
595
+ background: rgba(255, 255, 255, 0.84);
596
+ }
597
+
598
+ .vf-editor-chat-tracer-chip[data-active="true"] {
599
+ border-color: rgba(219, 193, 122, 0.82);
600
+ background: linear-gradient(180deg, rgba(219, 193, 122, 0.22), rgba(255, 255, 255, 0.92));
601
+ }
602
+
603
+ .vf-editor-chat-tracer-chip-button,
604
+ .vf-editor-chat-tracer-chip-remove {
605
+ all: unset;
606
+ color: inherit;
607
+ }
608
+
609
+ .vf-editor-chat-tracer-chip-button {
610
+ display: inline-flex;
611
+ align-items: center;
612
+ min-width: 0;
613
+ font-size: 0.74rem;
614
+ font-weight: 800;
615
+ color: #334155;
616
+ }
617
+
618
+ .vf-editor-chat-tracer-chip-text {
619
+ display: inline-block;
620
+ max-width: 184px;
621
+ overflow: hidden;
622
+ text-overflow: ellipsis;
623
+ white-space: nowrap;
624
+ }
625
+
626
+ .vf-editor-chat-tracer-chip-remove {
627
+ display: inline-flex;
628
+ align-items: center;
629
+ justify-content: center;
630
+ width: 18px;
631
+ height: 18px;
632
+ border-radius: 999px;
633
+ color: #617087;
634
+ font-size: 0.9rem;
635
+ line-height: 1;
636
+ }
637
+
638
+ .vf-editor-chat-tracer-help {
639
+ color: #617087;
640
+ font-size: 0.72rem;
641
+ line-height: 1.45;
642
+ }
643
+
644
+ .vf-editor-chat-thread-chip {
645
+ display: inline-flex;
646
+ align-items: center;
647
+ gap: 2px;
648
+ flex: 0 0 auto;
649
+ width: auto;
650
+ max-width: 184px;
651
+ min-width: 0;
652
+ padding: 0 4px;
653
+ border: 1px solid rgba(191, 164, 109, 0.16);
654
+ border-radius: 8px;
655
+ background: rgba(255, 255, 255, 0.75);
656
+ color: #243041;
657
+ transition:
658
+ border-color 140ms ease,
659
+ background 140ms ease;
660
+ }
661
+
662
+ .vf-editor-chat-thread-chip[data-active="true"] {
663
+ border-color: rgba(219, 193, 122, 0.82);
664
+ background: linear-gradient(180deg, rgba(219, 193, 122, 0.22), rgba(255, 255, 255, 0.92));
665
+ }
666
+
667
+ .vf-editor-chat-thread-chip-main {
668
+ all: unset;
669
+ display: inline-block;
670
+ flex: 0 1 auto;
671
+ min-width: 0;
672
+ width: auto;
673
+ max-width: 148px;
674
+ padding: 3px 0;
675
+ margin: 0;
676
+ border: 0;
677
+ border-radius: 0;
678
+ background: transparent;
679
+ text-align: left;
680
+ color: inherit;
681
+ box-shadow: none;
682
+ min-height: 0;
683
+ appearance: none;
684
+ -webkit-appearance: none;
685
+ font: inherit;
686
+ outline: none;
687
+ }
688
+
689
+ .vf-editor-chat-thread-menu-wrap {
690
+ position: relative;
691
+ display: inline-flex;
692
+ flex: 0 0 auto;
693
+ }
694
+
695
+ .vf-editor-chat-thread-chip-menu {
696
+ all: unset;
697
+ display: inline-flex;
698
+ align-items: center;
699
+ justify-content: center;
700
+ flex: 0 0 auto;
701
+ width: 20px;
702
+ min-width: 20px;
703
+ height: 20px;
704
+ padding: 0;
705
+ border: 0;
706
+ border-radius: 999px;
707
+ background: transparent;
708
+ color: #617087;
709
+ box-shadow: none;
710
+ font-size: 0.72rem;
711
+ font-weight: 900;
712
+ line-height: 1;
713
+ opacity: 0.8;
714
+ }
715
+
716
+ .vf-editor-chat-thread-chip-menu:hover {
717
+ background: rgba(219, 193, 122, 0.18);
718
+ opacity: 1;
719
+ }
720
+
721
+ .vf-editor-chat-thread-menu {
722
+ position: fixed;
723
+ z-index: 1000;
724
+ display: grid;
725
+ gap: 2px;
726
+ min-width: 138px;
727
+ padding: 6px;
728
+ border: 1px solid rgba(191, 164, 109, 0.28);
729
+ border-radius: 10px;
730
+ background: rgba(255, 252, 247, 0.98);
731
+ box-shadow: 0 14px 34px rgba(37, 45, 61, 0.16);
732
+ }
733
+
734
+ .vf-editor-chat-thread-menu button {
735
+ all: unset;
736
+ padding: 8px 9px;
737
+ border-radius: 7px;
738
+ color: #324156;
739
+ font-size: 0.76rem;
740
+ font-weight: 800;
741
+ white-space: nowrap;
742
+ }
743
+
744
+ .vf-editor-chat-thread-menu button:hover {
745
+ background: rgba(219, 193, 122, 0.16);
746
+ }
747
+
748
+ .vf-editor-chat-thread-menu button[data-danger="true"] {
749
+ color: #8d4a3b;
750
+ }
751
+
752
+ .vf-editor-chat-thread-chip-title {
753
+ display: block;
754
+ max-width: 100%;
755
+ overflow: hidden;
756
+ text-overflow: ellipsis;
757
+ white-space: nowrap;
758
+ font-size: 0.74rem;
759
+ font-weight: 800;
760
+ line-height: 1.2;
761
+ }
762
+
763
+ .vf-editor-chat-thread-chip-tracers,
764
+ .vf-editor-chat-thread-chip-preview,
765
+ .vf-editor-chat-thread-empty {
766
+ display: block;
767
+ overflow: hidden;
768
+ text-overflow: ellipsis;
769
+ white-space: nowrap;
770
+ color: #617087;
771
+ font-size: 0.68rem;
772
+ line-height: 1.25;
773
+ }
774
+
775
+ .vf-editor-chat-thread-chip-tracers {
776
+ max-width: 100%;
777
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
778
+ font-size: 0.62rem;
779
+ }
780
+
781
+ .vf-editor-chat-empty h2,
782
+ .vf-editor-chat-disabled h2 {
783
+ margin: 0;
784
+ font-family: inherit;
785
+ font-size: 1.35rem;
786
+ line-height: 1.08;
787
+ letter-spacing: -0.03em;
788
+ color: #1f2635;
789
+ }
790
+
791
+ .vf-editor-chat-kicker {
792
+ color: #8d99ae;
793
+ font-size: 0.75rem;
794
+ font-weight: 700;
795
+ letter-spacing: 0.18em;
796
+ text-transform: uppercase;
797
+ }
798
+
799
+ .vf-editor-chat-viewport {
800
+ min-height: 0;
801
+ flex: 1 1 0;
802
+ overflow: auto;
803
+ overscroll-behavior: contain;
804
+ padding: 8px 8px 10px;
805
+ }
806
+
807
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-viewport {
808
+ height: 100%;
809
+ align-self: stretch;
810
+ }
811
+
812
+ .vf-editor-chat-empty,
813
+ .vf-editor-chat-disabled {
814
+ display: grid;
815
+ gap: 8px;
816
+ margin: 0;
817
+ padding: 12px;
818
+ border: 1px solid rgba(191, 164, 109, 0.18);
819
+ border-radius: 10px;
820
+ background: rgba(255, 255, 255, 0.86);
821
+ box-shadow: 0 10px 20px rgba(15, 23, 42, 0.035);
822
+ }
823
+
824
+ .vf-editor-chat-empty p,
825
+ .vf-editor-chat-disabled p {
826
+ color: #617087;
827
+ line-height: 1.7;
828
+ }
829
+
830
+ .vf-editor-chat-empty-prompts {
831
+ display: grid;
832
+ gap: 6px;
833
+ margin-top: 2px;
834
+ }
835
+
836
+ .vf-editor-chat-empty-prompts div {
837
+ padding: 8px 10px;
838
+ border: 1px solid rgba(141, 153, 174, 0.22);
839
+ border-radius: 8px;
840
+ background: rgba(248, 250, 252, 0.84);
841
+ color: #334155;
842
+ font-size: 0.78rem;
843
+ line-height: 1.35;
844
+ }
845
+
846
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-empty,
847
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-disabled {
848
+ padding: 16px;
849
+ border-radius: 16px;
850
+ }
851
+
852
+ .vf-editor-chat-message {
853
+ display: flex;
854
+ flex-direction: column;
855
+ align-items: flex-start;
856
+ gap: 6px;
857
+ min-width: 0;
858
+ margin-bottom: 14px;
859
+ }
860
+
861
+ .vf-editor-chat-message.is-user {
862
+ align-items: flex-end;
863
+ }
864
+
865
+ .vf-editor-chat-message-meta {
866
+ font-size: 0.72rem;
867
+ font-weight: 700;
868
+ letter-spacing: 0.12em;
869
+ text-transform: uppercase;
870
+ color: #8d99ae;
871
+ }
872
+
873
+ .vf-editor-chat-message.is-user .vf-editor-chat-message-meta {
874
+ text-align: right;
875
+ }
876
+
877
+ .vf-editor-chat-bubble {
878
+ display: grid;
879
+ justify-items: start;
880
+ gap: 8px;
881
+ max-width: min(100%, 340px);
882
+ width: auto;
883
+ min-width: 0;
884
+ padding: 10px 12px;
885
+ border-radius: 10px;
886
+ border: 1px solid rgba(191, 164, 109, 0.18);
887
+ background: rgba(255, 255, 255, 0.9);
888
+ box-shadow: 0 8px 18px rgba(15, 23, 42, 0.035);
889
+ }
890
+
891
+ .vf-editor-chat-bubble[data-pending="true"] {
892
+ background:
893
+ linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(252, 248, 240, 0.96)),
894
+ linear-gradient(90deg, rgba(219, 193, 122, 0.08), rgba(255, 255, 255, 0.4), rgba(219, 193, 122, 0.08));
895
+ }
896
+
897
+ .vf-editor-chat-message.is-assistant .vf-editor-chat-bubble {
898
+ align-self: flex-start;
899
+ border-top-left-radius: 4px;
900
+ }
901
+
902
+ .vf-editor-chat-message.is-user .vf-editor-chat-bubble {
903
+ align-self: flex-end;
904
+ border-top-right-radius: 4px;
905
+ max-width: min(82%, 340px);
906
+ background: linear-gradient(180deg, rgba(219, 193, 122, 0.32), rgba(255, 255, 255, 0.94));
907
+ }
908
+
909
+ .vf-editor-chat-viewport .vf-editor-chat-message-attachment-thumb,
910
+ .vf-editor-chat-composer-images .vf-editor-chat-message-attachment-thumb {
911
+ width: min(220px, 100%);
912
+ max-width: min(220px, 100%);
913
+ }
914
+
915
+ .vf-editor-chat-message-body {
916
+ display: block;
917
+ width: 100%;
918
+ color: #334155;
919
+ line-height: 1.6;
920
+ font-size: 0.92rem;
921
+ white-space: pre-wrap;
922
+ word-break: break-word;
923
+ overflow-wrap: break-word;
924
+ text-align: left;
925
+ }
926
+
927
+ .vf-editor-chat-message-body p + p {
928
+ margin-top: 0.8em;
929
+ }
930
+
931
+ .vf-editor-chat-message-body a {
932
+ color: #8a6b1b;
933
+ text-decoration: underline;
934
+ text-underline-offset: 0.16em;
935
+ word-break: break-word;
936
+ }
937
+
938
+ .vf-editor-chat-message-body strong {
939
+ font-weight: 800;
940
+ color: #243041;
941
+ }
942
+
943
+ .vf-editor-chat-message-body em {
944
+ font-style: italic;
945
+ }
946
+
947
+ .vf-editor-chat-message-body code {
948
+ padding: 0.08rem 0.32rem;
949
+ border-radius: 0.35rem;
950
+ background: rgba(36, 48, 65, 0.08);
951
+ color: #243041;
952
+ font-size: 0.88em;
953
+ font-family: "SFMono-Regular", "Menlo", monospace;
954
+ }
955
+
956
+ .vf-editor-chat-message-body pre {
957
+ margin: 0;
958
+ padding: 10px 11px;
959
+ border-radius: 10px;
960
+ background: rgba(36, 48, 65, 0.06);
961
+ overflow: auto;
962
+ }
963
+
964
+ .vf-editor-chat-message-body pre code {
965
+ padding: 0;
966
+ background: transparent;
967
+ font-size: 0.82em;
968
+ white-space: pre-wrap;
969
+ }
970
+
971
+ .vf-editor-chat-message-body ul,
972
+ .vf-editor-chat-message-body ol {
973
+ margin: 0;
974
+ padding-left: 1.2rem;
975
+ }
976
+
977
+ .vf-editor-chat-message-body li + li {
978
+ margin-top: 0.28rem;
979
+ }
980
+
981
+ .vf-editor-chat-http-list {
982
+ display: grid;
983
+ gap: 6px;
984
+ width: 100%;
985
+ }
986
+
987
+ .vf-editor-chat-json-list {
988
+ display: grid;
989
+ gap: 8px;
990
+ width: 100%;
991
+ }
992
+
993
+ .vf-editor-chat-json-card {
994
+ width: min(100%, 860px);
995
+ border-radius: 12px;
996
+ border: 1px solid rgba(191, 164, 109, 0.18);
997
+ background: rgba(251, 247, 238, 0.92);
998
+ overflow: hidden;
999
+ }
1000
+
1001
+ .vf-editor-chat-json-card-head {
1002
+ display: flex;
1003
+ align-items: flex-start;
1004
+ justify-content: space-between;
1005
+ gap: 12px;
1006
+ padding: 10px 12px;
1007
+ }
1008
+
1009
+ .vf-editor-chat-json-card-kicker {
1010
+ color: #8a6b1b;
1011
+ font-size: 0.64rem;
1012
+ font-weight: 800;
1013
+ letter-spacing: 0.08em;
1014
+ text-transform: uppercase;
1015
+ }
1016
+
1017
+ .vf-editor-chat-json-card-title {
1018
+ color: #243041;
1019
+ font-size: 0.92rem;
1020
+ font-weight: 800;
1021
+ line-height: 1.3;
1022
+ }
1023
+
1024
+ .vf-editor-chat-json-card-actions {
1025
+ display: inline-flex;
1026
+ align-items: center;
1027
+ gap: 8px;
1028
+ flex: 0 0 auto;
1029
+ }
1030
+
1031
+ .vf-editor-chat-json-card-action {
1032
+ all: unset;
1033
+ display: inline-flex;
1034
+ align-items: center;
1035
+ justify-content: center;
1036
+ min-height: 30px;
1037
+ padding: 0 11px;
1038
+ border-radius: 999px;
1039
+ background: rgba(255, 255, 255, 0.92);
1040
+ color: #617087;
1041
+ font-size: 0.76rem;
1042
+ font-weight: 800;
1043
+ cursor: pointer;
1044
+ }
1045
+
1046
+ .vf-editor-chat-json-card-action.is-strong {
1047
+ background: rgba(225, 201, 136, 0.36);
1048
+ color: #7a5d19;
1049
+ }
1050
+
1051
+ .vf-editor-chat-json-card-body {
1052
+ padding: 0 12px 12px;
1053
+ }
1054
+
1055
+ .vf-editor-chat-json-state {
1056
+ padding: 12px;
1057
+ border-radius: 10px;
1058
+ background: rgba(255, 255, 255, 0.9);
1059
+ color: #526179;
1060
+ font-size: 0.78rem;
1061
+ }
1062
+
1063
+ .vf-editor-chat-json-state.is-error {
1064
+ color: #a14444;
1065
+ }
1066
+
1067
+ .vf-editor-chat-json-viewer {
1068
+ border-radius: 12px;
1069
+ border: 1px solid rgba(191, 164, 109, 0.16);
1070
+ background: rgba(255, 255, 255, 0.9);
1071
+ overflow: hidden;
1072
+ }
1073
+
1074
+ .vf-editor-chat-json-toolbar {
1075
+ display: flex;
1076
+ align-items: center;
1077
+ justify-content: space-between;
1078
+ gap: 12px;
1079
+ padding: 10px 12px;
1080
+ border-bottom: 1px solid rgba(191, 164, 109, 0.12);
1081
+ background: rgba(250, 245, 236, 0.88);
1082
+ }
1083
+
1084
+ .vf-editor-chat-json-file,
1085
+ .vf-editor-chat-json-copy-state {
1086
+ color: #617087;
1087
+ font-size: 0.7rem;
1088
+ font-weight: 700;
1089
+ line-height: 1.35;
1090
+ }
1091
+
1092
+ .vf-editor-chat-json-copy-state[data-state="done"] {
1093
+ color: #2f7d4f;
1094
+ }
1095
+
1096
+ .vf-editor-chat-json-copy-state[data-state="error"] {
1097
+ color: #a14444;
1098
+ }
1099
+
1100
+ .vf-editor-chat-json-scroll {
1101
+ max-height: 320px;
1102
+ overflow: auto;
1103
+ padding: 10px 0;
1104
+ }
1105
+
1106
+ .vf-editor-chat-json-toggle-row {
1107
+ display: flex;
1108
+ align-items: flex-start;
1109
+ gap: 2px;
1110
+ }
1111
+
1112
+ .vf-editor-chat-json-toggle-icon {
1113
+ all: unset;
1114
+ display: inline-flex;
1115
+ align-items: center;
1116
+ justify-content: center;
1117
+ width: 24px;
1118
+ min-width: 24px;
1119
+ height: 26px;
1120
+ margin-left: 6px;
1121
+ color: #7b879b;
1122
+ cursor: pointer;
1123
+ }
1124
+
1125
+ .vf-editor-chat-json-toggle-icon svg {
1126
+ width: 14px;
1127
+ height: 14px;
1128
+ transition: transform 120ms ease;
1129
+ }
1130
+
1131
+ .vf-editor-chat-json-line {
1132
+ position: relative;
1133
+ display: flex;
1134
+ align-items: flex-start;
1135
+ width: 100%;
1136
+ min-height: 24px;
1137
+ box-sizing: border-box;
1138
+ padding-right: 12px;
1139
+ }
1140
+
1141
+ .vf-editor-chat-json-line:hover {
1142
+ background: rgba(138, 107, 27, 0.05);
1143
+ }
1144
+
1145
+ .vf-editor-chat-json-line-text {
1146
+ display: block;
1147
+ width: 100%;
1148
+ color: #2c3748;
1149
+ font-size: 0.78rem;
1150
+ line-height: 1.5;
1151
+ white-space: pre-wrap;
1152
+ word-break: break-word;
1153
+ user-select: text;
1154
+ font-family: "SFMono-Regular", "Menlo", monospace;
1155
+ }
1156
+
1157
+ .vf-editor-chat-json-copy {
1158
+ all: unset;
1159
+ position: absolute;
1160
+ left: 0;
1161
+ top: 3px;
1162
+ width: 20px;
1163
+ height: 20px;
1164
+ border-radius: 6px;
1165
+ background: rgba(255, 255, 255, 0.96);
1166
+ color: #7b879b;
1167
+ opacity: 0;
1168
+ box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
1169
+ cursor: pointer;
1170
+ transition: opacity 120ms ease, color 120ms ease;
1171
+ }
1172
+
1173
+ .vf-editor-chat-json-line:hover .vf-editor-chat-json-copy,
1174
+ .vf-editor-chat-json-copy:focus-visible {
1175
+ opacity: 1;
1176
+ }
1177
+
1178
+ .vf-editor-chat-json-copy:hover {
1179
+ color: #8a6b1b;
1180
+ }
1181
+
1182
+ .vf-editor-chat-json-copy svg {
1183
+ width: 14px;
1184
+ height: 14px;
1185
+ margin: 3px;
1186
+ }
1187
+
1188
+ .vf-editor-chat-http-card {
1189
+ width: 100%;
1190
+ border-radius: 8px;
1191
+ border: 1px solid rgba(191, 164, 109, 0.18);
1192
+ background: rgba(248, 244, 235, 0.82);
1193
+ overflow: hidden;
1194
+ }
1195
+
1196
+ .vf-editor-chat-http-card-header {
1197
+ all: unset;
1198
+ display: flex;
1199
+ align-items: center;
1200
+ gap: 6px;
1201
+ min-width: 0;
1202
+ width: 100%;
1203
+ box-sizing: border-box;
1204
+ padding: 6px 8px;
1205
+ cursor: pointer;
1206
+ }
1207
+
1208
+ .vf-editor-chat-http-pill,
1209
+ .vf-editor-chat-http-status {
1210
+ display: inline-flex;
1211
+ align-items: center;
1212
+ min-height: 18px;
1213
+ padding: 0 6px;
1214
+ border-radius: 999px;
1215
+ font-size: 0.62rem;
1216
+ font-weight: 800;
1217
+ letter-spacing: 0.04em;
1218
+ background: rgba(255, 255, 255, 0.92);
1219
+ color: #3f4a5d;
1220
+ flex: 0 0 auto;
1221
+ }
1222
+
1223
+ .vf-editor-chat-http-status[data-error="true"] {
1224
+ color: #a33c32;
1225
+ background: rgba(245, 213, 208, 0.92);
1226
+ }
1227
+
1228
+ .vf-editor-chat-http-status[data-success="true"] {
1229
+ color: #1f6a3a;
1230
+ background: rgba(214, 240, 222, 0.96);
1231
+ }
1232
+
1233
+ .vf-editor-chat-http-url {
1234
+ min-width: 0;
1235
+ flex: 1 1 auto;
1236
+ color: #526179;
1237
+ font-size: 0.68rem;
1238
+ line-height: 1.25;
1239
+ white-space: nowrap;
1240
+ overflow: hidden;
1241
+ text-overflow: ellipsis;
1242
+ }
1243
+
1244
+ .vf-editor-chat-http-expand {
1245
+ display: inline-flex;
1246
+ align-items: center;
1247
+ justify-content: center;
1248
+ width: 16px;
1249
+ min-width: 16px;
1250
+ height: 16px;
1251
+ border-radius: 999px;
1252
+ background: rgba(255, 255, 255, 0.92);
1253
+ color: #617087;
1254
+ font-size: 0.8rem;
1255
+ line-height: 1;
1256
+ flex: 0 0 auto;
1257
+ }
1258
+
1259
+ .vf-editor-chat-http-card-body {
1260
+ display: grid;
1261
+ gap: 6px;
1262
+ padding: 0 8px 8px;
1263
+ }
1264
+
1265
+ .vf-editor-chat-http-card-body.is-modal {
1266
+ padding: 14px;
1267
+ gap: 10px;
1268
+ }
1269
+
1270
+ .vf-editor-chat-http-modal-backdrop {
1271
+ position: fixed;
1272
+ inset: 0;
1273
+ z-index: 120;
1274
+ display: flex;
1275
+ align-items: center;
1276
+ justify-content: center;
1277
+ padding: 18px;
1278
+ background: rgba(31, 38, 53, 0.42);
1279
+ backdrop-filter: blur(8px);
1280
+ }
1281
+
1282
+ .vf-editor-chat-http-modal-backdrop[hidden] {
1283
+ display: none;
1284
+ }
1285
+
1286
+ .vf-editor-chat-http-modal {
1287
+ width: min(860px, calc(100vw - 36px));
1288
+ max-height: min(82vh, 920px);
1289
+ overflow: auto;
1290
+ border-radius: 18px;
1291
+ border: 1px solid rgba(191, 164, 109, 0.2);
1292
+ background: rgba(255, 251, 244, 0.98);
1293
+ box-shadow: 0 24px 56px rgba(15, 23, 42, 0.22);
1294
+ }
1295
+
1296
+ .vf-editor-chat-http-modal-header {
1297
+ display: flex;
1298
+ align-items: flex-start;
1299
+ justify-content: space-between;
1300
+ gap: 10px;
1301
+ padding: 14px;
1302
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1303
+ position: sticky;
1304
+ top: 0;
1305
+ background: rgba(255, 251, 244, 0.98);
1306
+ }
1307
+
1308
+ .vf-editor-chat-http-modal-header-main {
1309
+ display: flex;
1310
+ align-items: center;
1311
+ gap: 8px;
1312
+ min-width: 0;
1313
+ flex-wrap: wrap;
1314
+ }
1315
+
1316
+ .vf-editor-chat-http-modal-url {
1317
+ min-width: 0;
1318
+ color: #334155;
1319
+ font-size: 0.78rem;
1320
+ line-height: 1.4;
1321
+ word-break: break-word;
1322
+ overflow-wrap: anywhere;
1323
+ flex: 1 1 320px;
1324
+ }
1325
+
1326
+ .vf-editor-chat-http-modal-close {
1327
+ all: unset;
1328
+ display: inline-flex;
1329
+ align-items: center;
1330
+ justify-content: center;
1331
+ width: 30px;
1332
+ min-width: 30px;
1333
+ height: 30px;
1334
+ border-radius: 999px;
1335
+ background: rgba(36, 48, 65, 0.08);
1336
+ color: #617087;
1337
+ font-size: 1.2rem;
1338
+ line-height: 1;
1339
+ cursor: pointer;
1340
+ }
1341
+
1342
+ .vf-editor-chat-http-note,
1343
+ .vf-editor-chat-http-label {
1344
+ color: #7b879b;
1345
+ font-size: 0.68rem;
1346
+ font-weight: 800;
1347
+ letter-spacing: 0.08em;
1348
+ text-transform: uppercase;
1349
+ }
1350
+
1351
+ .vf-editor-chat-http-block {
1352
+ display: grid;
1353
+ gap: 4px;
1354
+ }
1355
+
1356
+ .vf-editor-chat-http-pre {
1357
+ margin: 0;
1358
+ padding: 6px 7px;
1359
+ border-radius: 6px;
1360
+ background: rgba(255, 255, 255, 0.9);
1361
+ color: #334155;
1362
+ font-size: 0.66rem;
1363
+ line-height: 1.4;
1364
+ white-space: pre-wrap;
1365
+ word-break: break-word;
1366
+ overflow-wrap: anywhere;
1367
+ max-height: 180px;
1368
+ overflow: auto;
1369
+ }
1370
+
1371
+ .vf-editor-chat-message-status,
1372
+ .vf-editor-chat-runtime-status {
1373
+ display: inline-flex;
1374
+ align-items: center;
1375
+ gap: 8px;
1376
+ color: #8a6b1b;
1377
+ font-size: 0.78rem;
1378
+ font-weight: 700;
1379
+ line-height: 1.35;
1380
+ }
1381
+
1382
+ .vf-editor-chat-status-dot {
1383
+ width: 8px;
1384
+ height: 8px;
1385
+ border-radius: 999px;
1386
+ background: #dbc17a;
1387
+ box-shadow: 0 0 0 6px rgba(219, 193, 122, 0.14);
1388
+ animation: vf-editor-chat-pulse 1.35s ease-in-out infinite;
1389
+ }
1390
+
1391
+ .vf-editor-chat-message-loading {
1392
+ display: inline-flex;
1393
+ align-items: center;
1394
+ gap: 5px;
1395
+ min-height: 18px;
1396
+ }
1397
+
1398
+ .vf-editor-chat-message-loading span {
1399
+ width: 7px;
1400
+ height: 7px;
1401
+ border-radius: 999px;
1402
+ background: rgba(141, 153, 174, 0.72);
1403
+ animation: vf-editor-chat-bounce 1s ease-in-out infinite;
1404
+ }
1405
+
1406
+ .vf-editor-chat-message-loading span:nth-child(2) {
1407
+ animation-delay: 120ms;
1408
+ }
1409
+
1410
+ .vf-editor-chat-message-loading span:nth-child(3) {
1411
+ animation-delay: 240ms;
1412
+ }
1413
+
1414
+ .vf-editor-chat-message-attachments,
1415
+ .vf-editor-chat-composer-attachments {
1416
+ display: flex;
1417
+ flex-wrap: wrap;
1418
+ gap: 8px;
1419
+ }
1420
+
1421
+ .vf-editor-chat-message-attachments {
1422
+ flex-direction: column;
1423
+ align-items: flex-start;
1424
+ width: 100%;
1425
+ min-width: 0;
1426
+ }
1427
+
1428
+ .vf-editor-chat-message-attachment-row {
1429
+ display: grid;
1430
+ gap: 8px;
1431
+ width: fit-content;
1432
+ max-width: 100%;
1433
+ min-width: 0;
1434
+ }
1435
+
1436
+ .vf-editor-chat-message-preview-link {
1437
+ display: inline-flex;
1438
+ width: fit-content;
1439
+ max-width: 100%;
1440
+ text-decoration: none;
1441
+ }
1442
+
1443
+ .vf-editor-chat-message-thumb-button {
1444
+ all: unset;
1445
+ position: relative;
1446
+ display: inline-flex;
1447
+ width: fit-content;
1448
+ max-width: 100%;
1449
+ cursor: zoom-in;
1450
+ }
1451
+
1452
+ .vf-editor-chat-message-thumb-button.is-image {
1453
+ flex: 0 0 86px;
1454
+ width: 86px;
1455
+ height: 86px;
1456
+ border-radius: 8px;
1457
+ overflow: hidden;
1458
+ background: rgba(255, 255, 255, 0.96);
1459
+ }
1460
+
1461
+ .vf-editor-chat-message-attachment-thumb {
1462
+ width: min(240px, 100%);
1463
+ max-width: 100%;
1464
+ max-height: 180px;
1465
+ border-radius: 12px;
1466
+ object-fit: contain;
1467
+ border: 1px solid rgba(191, 164, 109, 0.22);
1468
+ }
1469
+
1470
+ .vf-editor-chat-message-thumb-button.is-image .vf-editor-chat-message-attachment-thumb {
1471
+ width: 86px;
1472
+ max-width: 86px;
1473
+ height: 86px;
1474
+ max-height: 86px;
1475
+ border-radius: 8px;
1476
+ object-fit: cover;
1477
+ }
1478
+
1479
+ .vf-editor-chat-message-image-rail {
1480
+ display: flex;
1481
+ gap: 8px;
1482
+ width: 100%;
1483
+ max-width: 100%;
1484
+ min-width: 0;
1485
+ overflow-x: auto;
1486
+ overflow-y: hidden;
1487
+ padding: 1px 2px 5px;
1488
+ scrollbar-width: thin;
1489
+ }
1490
+
1491
+ .vf-editor-chat-message-thumb-fallback {
1492
+ display: flex;
1493
+ align-items: center;
1494
+ justify-content: center;
1495
+ box-sizing: border-box;
1496
+ width: 86px;
1497
+ height: 86px;
1498
+ padding: 8px;
1499
+ border: 1px dashed rgba(141, 153, 174, 0.5);
1500
+ border-radius: 8px;
1501
+ background: rgba(248, 244, 235, 0.9);
1502
+ color: #7b879b;
1503
+ font-size: 0.66rem;
1504
+ font-weight: 800;
1505
+ line-height: 1.15;
1506
+ text-align: center;
1507
+ }
1508
+
1509
+ .vf-editor-chat-message-video-thumb {
1510
+ background: rgba(255, 255, 255, 0.96);
1511
+ }
1512
+
1513
+ .vf-editor-chat-message-video-play {
1514
+ position: absolute;
1515
+ left: 50%;
1516
+ top: 50%;
1517
+ width: 38px;
1518
+ height: 38px;
1519
+ transform: translate(-50%, -50%);
1520
+ display: inline-flex;
1521
+ align-items: center;
1522
+ justify-content: center;
1523
+ border-radius: 999px;
1524
+ background: rgba(18, 24, 34, 0.74);
1525
+ box-shadow: 0 10px 26px rgba(12, 18, 28, 0.24);
1526
+ pointer-events: none;
1527
+ }
1528
+
1529
+ .vf-editor-chat-message-video-play::before {
1530
+ content: "";
1531
+ display: block;
1532
+ width: 0;
1533
+ height: 0;
1534
+ margin-left: 3px;
1535
+ border-top: 8px solid transparent;
1536
+ border-bottom: 8px solid transparent;
1537
+ border-left: 12px solid #fff8ee;
1538
+ }
1539
+
1540
+ .vf-editor-chat-media-modal-backdrop {
1541
+ position: fixed;
1542
+ inset: 0;
1543
+ z-index: 125;
1544
+ display: flex;
1545
+ align-items: center;
1546
+ justify-content: center;
1547
+ padding: 20px;
1548
+ background: rgba(31, 38, 53, 0.58);
1549
+ backdrop-filter: blur(10px);
1550
+ }
1551
+
1552
+ .vf-editor-chat-media-modal {
1553
+ width: min(920px, calc(100vw - 40px));
1554
+ max-height: min(88vh, 980px);
1555
+ overflow: hidden;
1556
+ border-radius: 20px;
1557
+ border: 1px solid rgba(191, 164, 109, 0.24);
1558
+ background: rgba(255, 251, 244, 0.99);
1559
+ box-shadow: 0 28px 64px rgba(15, 23, 42, 0.28);
1560
+ }
1561
+
1562
+ .vf-editor-chat-json-modal {
1563
+ width: min(1080px, calc(100vw - 40px));
1564
+ max-height: min(88vh, 980px);
1565
+ overflow: hidden;
1566
+ border-radius: 20px;
1567
+ border: 1px solid rgba(191, 164, 109, 0.24);
1568
+ background: rgba(255, 251, 244, 0.99);
1569
+ box-shadow: 0 28px 64px rgba(15, 23, 42, 0.28);
1570
+ }
1571
+
1572
+ .vf-editor-chat-json-modal-body {
1573
+ padding: 18px;
1574
+ max-height: calc(88vh - 76px);
1575
+ background: linear-gradient(180deg, rgba(255, 251, 244, 0.98), rgba(248, 242, 231, 0.96));
1576
+ }
1577
+
1578
+ .vf-editor-chat-json-modal-body .vf-editor-chat-json-scroll {
1579
+ max-height: calc(88vh - 164px);
1580
+ }
1581
+
1582
+ .vf-editor-chat-doc-viewer {
1583
+ max-height: calc(88vh - 164px);
1584
+ overflow: auto;
1585
+ padding: 16px 18px;
1586
+ border-radius: 12px;
1587
+ border: 1px solid rgba(191, 164, 109, 0.16);
1588
+ background: rgba(255, 255, 255, 0.92);
1589
+ }
1590
+
1591
+ .vf-editor-chat-doc-viewer.is-inline {
1592
+ max-height: 320px;
1593
+ }
1594
+
1595
+ .vf-editor-chat-doc-pre {
1596
+ margin: 0;
1597
+ white-space: pre-wrap;
1598
+ word-break: break-word;
1599
+ color: #2c3748;
1600
+ font-size: 0.8rem;
1601
+ line-height: 1.55;
1602
+ font-family: "SFMono-Regular", "Menlo", monospace;
1603
+ }
1604
+
1605
+ .vf-editor-chat-doc-markdown {
1606
+ color: #334155;
1607
+ font-size: 0.92rem;
1608
+ line-height: 1.65;
1609
+ }
1610
+
1611
+ .vf-editor-chat-doc-markdown > :first-child {
1612
+ margin-top: 0;
1613
+ }
1614
+
1615
+ .vf-editor-chat-doc-markdown > :last-child {
1616
+ margin-bottom: 0;
1617
+ }
1618
+
1619
+ .vf-editor-chat-doc-markdown h1,
1620
+ .vf-editor-chat-doc-markdown h2,
1621
+ .vf-editor-chat-doc-markdown h3 {
1622
+ color: #243041;
1623
+ line-height: 1.2;
1624
+ margin: 0 0 0.7rem;
1625
+ }
1626
+
1627
+ .vf-editor-chat-doc-markdown p,
1628
+ .vf-editor-chat-doc-markdown ul,
1629
+ .vf-editor-chat-doc-markdown ol,
1630
+ .vf-editor-chat-doc-markdown blockquote,
1631
+ .vf-editor-chat-doc-markdown pre {
1632
+ margin: 0 0 0.85rem;
1633
+ }
1634
+
1635
+ .vf-editor-chat-doc-markdown ul,
1636
+ .vf-editor-chat-doc-markdown ol {
1637
+ padding-left: 1.2rem;
1638
+ }
1639
+
1640
+ .vf-editor-chat-doc-markdown blockquote {
1641
+ margin-left: 0;
1642
+ padding-left: 0.9rem;
1643
+ border-left: 3px solid rgba(191, 164, 109, 0.34);
1644
+ color: #617087;
1645
+ }
1646
+
1647
+ .vf-editor-chat-doc-markdown a {
1648
+ color: #8a6b1b;
1649
+ text-decoration: underline;
1650
+ text-underline-offset: 0.16em;
1651
+ word-break: break-word;
1652
+ }
1653
+
1654
+ .vf-editor-chat-media-modal-header {
1655
+ display: flex;
1656
+ align-items: center;
1657
+ justify-content: space-between;
1658
+ gap: 12px;
1659
+ padding: 14px 16px;
1660
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1661
+ }
1662
+
1663
+ .vf-editor-chat-media-modal-link {
1664
+ min-width: 0;
1665
+ flex: 1 1 auto;
1666
+ color: #8a6b1b;
1667
+ font-size: 0.92rem;
1668
+ font-weight: 700;
1669
+ line-height: 1.35;
1670
+ word-break: break-word;
1671
+ overflow-wrap: anywhere;
1672
+ }
1673
+
1674
+ .vf-editor-chat-media-modal-actions {
1675
+ display: inline-flex;
1676
+ align-items: center;
1677
+ gap: 8px;
1678
+ flex: 0 0 auto;
1679
+ }
1680
+
1681
+ .vf-editor-chat-media-modal-control {
1682
+ all: unset;
1683
+ display: inline-flex;
1684
+ align-items: center;
1685
+ justify-content: center;
1686
+ width: 32px;
1687
+ min-width: 32px;
1688
+ height: 32px;
1689
+ border-radius: 999px;
1690
+ background: rgba(36, 48, 65, 0.08);
1691
+ color: #617087;
1692
+ font-size: 1.2rem;
1693
+ line-height: 1;
1694
+ cursor: pointer;
1695
+ }
1696
+
1697
+ a.vf-editor-chat-media-modal-control {
1698
+ text-decoration: none;
1699
+ }
1700
+
1701
+ .vf-editor-chat-media-modal-control:hover,
1702
+ .vf-editor-chat-media-modal-control:focus-visible {
1703
+ background: rgba(138, 107, 27, 0.14);
1704
+ color: #8a6b1b;
1705
+ }
1706
+
1707
+ .vf-editor-chat-media-modal-control[data-state="done"] {
1708
+ background: rgba(56, 142, 91, 0.14);
1709
+ color: #2f7d4f;
1710
+ }
1711
+
1712
+ .vf-editor-chat-media-modal-control[data-state="error"] {
1713
+ background: rgba(161, 68, 68, 0.12);
1714
+ color: #a14444;
1715
+ }
1716
+
1717
+ .vf-editor-chat-media-modal-control svg {
1718
+ width: 18px;
1719
+ height: 18px;
1720
+ }
1721
+
1722
+ .vf-editor-chat-media-modal-body {
1723
+ display: flex;
1724
+ align-items: center;
1725
+ justify-content: center;
1726
+ padding: 18px;
1727
+ max-height: calc(88vh - 76px);
1728
+ background: linear-gradient(180deg, rgba(255, 251, 244, 0.98), rgba(248, 242, 231, 0.96));
1729
+ }
1730
+
1731
+ .vf-editor-chat-media-modal-image,
1732
+ .vf-editor-chat-media-modal-video {
1733
+ width: auto;
1734
+ max-width: 100%;
1735
+ max-height: calc(88vh - 112px);
1736
+ border-radius: 16px;
1737
+ border: 1px solid rgba(191, 164, 109, 0.18);
1738
+ background: rgba(255, 255, 255, 0.96);
1739
+ object-fit: contain;
1740
+ }
1741
+
1742
+ .vf-editor-upload-drawer-backdrop {
1743
+ position: fixed;
1744
+ inset: 0;
1745
+ z-index: 124;
1746
+ background: transparent;
1747
+ pointer-events: none;
1748
+ }
1749
+
1750
+ .vf-editor-upload-drawer {
1751
+ box-sizing: border-box;
1752
+ width: min(420px, 100vw);
1753
+ height: 100vh;
1754
+ display: grid;
1755
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
1756
+ border-right: 1px solid rgba(191, 164, 109, 0.24);
1757
+ background: rgba(255, 251, 244, 0.99);
1758
+ box-shadow: 24px 0 48px rgba(15, 23, 42, 0.22);
1759
+ pointer-events: auto;
1760
+ }
1761
+
1762
+ .vf-editor-upload-header,
1763
+ .vf-editor-upload-footer {
1764
+ display: flex;
1765
+ align-items: center;
1766
+ justify-content: space-between;
1767
+ gap: 10px;
1768
+ padding: 14px;
1769
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1770
+ }
1771
+
1772
+ .vf-editor-upload-footer {
1773
+ border-top: 1px solid rgba(191, 164, 109, 0.14);
1774
+ border-bottom: 0;
1775
+ }
1776
+
1777
+ .vf-editor-upload-footer-confirm {
1778
+ display: inline-flex;
1779
+ align-items: center;
1780
+ gap: 10px;
1781
+ color: #7b879b;
1782
+ font-size: 0.78rem;
1783
+ font-weight: 850;
1784
+ }
1785
+
1786
+ .vf-editor-upload-title {
1787
+ color: #243041;
1788
+ font-size: 1rem;
1789
+ font-weight: 800;
1790
+ }
1791
+
1792
+ .vf-editor-upload-subtitle {
1793
+ margin-top: 2px;
1794
+ color: #7b879b;
1795
+ font-size: 0.76rem;
1796
+ font-weight: 700;
1797
+ }
1798
+
1799
+ .vf-editor-upload-close,
1800
+ .vf-editor-upload-file-actions button,
1801
+ .vf-editor-upload-file-actions a {
1802
+ all: unset;
1803
+ display: inline-flex;
1804
+ align-items: center;
1805
+ justify-content: center;
1806
+ width: 30px;
1807
+ min-width: 30px;
1808
+ height: 30px;
1809
+ border-radius: 8px;
1810
+ background: rgba(36, 48, 65, 0.08);
1811
+ color: #617087;
1812
+ font-size: 0.94rem;
1813
+ font-weight: 800;
1814
+ text-decoration: none;
1815
+ cursor: pointer;
1816
+ }
1817
+
1818
+ .vf-editor-upload-tabs {
1819
+ display: grid;
1820
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1821
+ gap: 6px;
1822
+ padding: 10px 12px;
1823
+ border-bottom: 1px solid rgba(191, 164, 109, 0.14);
1824
+ }
1825
+
1826
+ .vf-editor-upload-tabs button,
1827
+ .vf-editor-upload-browser button,
1828
+ .vf-editor-upload-footer button,
1829
+ .vf-editor-upload-popconfirm button,
1830
+ .vf-editor-upload-more {
1831
+ all: unset;
1832
+ box-sizing: border-box;
1833
+ display: inline-flex;
1834
+ align-items: center;
1835
+ justify-content: center;
1836
+ min-height: 30px;
1837
+ padding: 0 10px;
1838
+ border: 1px solid rgba(191, 164, 109, 0.24);
1839
+ border-radius: 8px;
1840
+ background: rgba(255, 255, 255, 0.86);
1841
+ color: #4b5568;
1842
+ font-size: 0.76rem;
1843
+ font-weight: 800;
1844
+ cursor: pointer;
1845
+ }
1846
+
1847
+ .vf-editor-upload-tabs button[data-active="true"],
1848
+ .vf-editor-upload-confirm {
1849
+ background: #d7b84f;
1850
+ border-color: rgba(138, 107, 27, 0.36);
1851
+ color: #243041;
1852
+ }
1853
+
1854
+ .vf-editor-upload-footer button:disabled,
1855
+ .vf-editor-upload-more:disabled {
1856
+ opacity: 0.52;
1857
+ cursor: not-allowed;
1858
+ }
1859
+
1860
+ .vf-editor-upload-more {
1861
+ width: 100%;
1862
+ }
1863
+
1864
+ .vf-editor-upload-body {
1865
+ display: grid;
1866
+ align-content: start;
1867
+ gap: 10px;
1868
+ min-height: 0;
1869
+ overflow: auto;
1870
+ padding: 12px;
1871
+ }
1872
+
1873
+ .vf-editor-upload-status {
1874
+ padding: 9px 10px;
1875
+ border-radius: 8px;
1876
+ background: rgba(36, 48, 65, 0.07);
1877
+ color: #4b5568;
1878
+ font-size: 0.76rem;
1879
+ font-weight: 800;
1880
+ }
1881
+
1882
+ .vf-editor-upload-status[data-tone="error"] {
1883
+ background: rgba(155, 45, 45, 0.08);
1884
+ color: #8b1e1e;
1885
+ }
1886
+
1887
+ .vf-editor-upload-drop {
1888
+ all: unset;
1889
+ display: grid;
1890
+ gap: 4px;
1891
+ place-items: center;
1892
+ min-height: 66px;
1893
+ padding: 10px 12px;
1894
+ border: 1px dashed rgba(138, 107, 27, 0.36);
1895
+ border-radius: 10px;
1896
+ background: rgba(255, 255, 255, 0.78);
1897
+ color: #243041;
1898
+ font-size: 0.92rem;
1899
+ font-weight: 850;
1900
+ cursor: pointer;
1901
+ }
1902
+
1903
+ .vf-editor-upload-drop span {
1904
+ color: #7b879b;
1905
+ font-size: 0.74rem;
1906
+ font-weight: 700;
1907
+ }
1908
+
1909
+ .vf-editor-upload-browser {
1910
+ display: grid;
1911
+ gap: 8px;
1912
+ }
1913
+
1914
+ .vf-editor-upload-browser-toolbar {
1915
+ display: grid;
1916
+ grid-template-columns: minmax(0, 1fr) auto;
1917
+ align-items: center;
1918
+ gap: 6px;
1919
+ }
1920
+
1921
+ .vf-editor-upload-browser-toolbar button:disabled {
1922
+ opacity: 0.5;
1923
+ cursor: not-allowed;
1924
+ }
1925
+
1926
+ .vf-editor-upload-breadcrumb {
1927
+ display: flex;
1928
+ align-items: center;
1929
+ min-width: 0;
1930
+ overflow-x: auto;
1931
+ gap: 2px;
1932
+ padding-bottom: 1px;
1933
+ color: #7b879b;
1934
+ font-size: 0.78rem;
1935
+ font-weight: 850;
1936
+ }
1937
+
1938
+ .vf-editor-upload-breadcrumb button {
1939
+ all: unset;
1940
+ flex: 0 0 auto;
1941
+ max-width: 120px;
1942
+ padding: 3px 7px;
1943
+ border-radius: 6px;
1944
+ overflow: hidden;
1945
+ text-overflow: ellipsis;
1946
+ white-space: nowrap;
1947
+ color: #4b5568;
1948
+ cursor: pointer;
1949
+ }
1950
+
1951
+ .vf-editor-upload-breadcrumb-segment {
1952
+ display: inline-flex;
1953
+ align-items: center;
1954
+ gap: 2px;
1955
+ min-width: 0;
1956
+ }
1957
+
1958
+ .vf-editor-upload-folder-grid {
1959
+ display: grid;
1960
+ gap: 6px;
1961
+ }
1962
+
1963
+ .vf-editor-upload-folder-row {
1964
+ position: relative;
1965
+ display: grid;
1966
+ grid-template-columns: minmax(0, 1fr) auto;
1967
+ align-items: center;
1968
+ gap: 10px;
1969
+ padding: 9px 10px;
1970
+ border: 1px solid rgba(191, 164, 109, 0.18);
1971
+ border-radius: 8px;
1972
+ background: rgba(255, 255, 255, 0.72);
1973
+ }
1974
+
1975
+ .vf-editor-upload-folder-open {
1976
+ justify-content: flex-start !important;
1977
+ gap: 10px;
1978
+ min-width: 0;
1979
+ border: 0 !important;
1980
+ background: transparent !important;
1981
+ padding: 0 !important;
1982
+ color: #243041 !important;
1983
+ }
1984
+
1985
+ .vf-editor-upload-folder-open span:last-child {
1986
+ min-width: 0;
1987
+ overflow: hidden;
1988
+ text-overflow: ellipsis;
1989
+ white-space: nowrap;
1990
+ }
1991
+
1992
+ .vf-editor-upload-folder-icon {
1993
+ position: relative;
1994
+ display: inline-flex;
1995
+ align-items: center;
1996
+ justify-content: center;
1997
+ width: 34px;
1998
+ min-width: 34px;
1999
+ height: 25px;
2000
+ border-radius: 4px;
2001
+ background: #dbc17a;
2002
+ box-shadow: inset 0 -1px 0 rgba(138, 107, 27, 0.18);
2003
+ }
2004
+
2005
+ .vf-editor-upload-folder-icon::before {
2006
+ content: "";
2007
+ position: absolute;
2008
+ left: 4px;
2009
+ top: -6px;
2010
+ width: 16px;
2011
+ height: 8px;
2012
+ border-radius: 4px 4px 0 0;
2013
+ background: #e4cd88;
2014
+ }
2015
+
2016
+ .vf-editor-upload-folder-menu-button {
2017
+ width: auto;
2018
+ min-width: 34px;
2019
+ padding-left: 9px !important;
2020
+ padding-right: 9px !important;
2021
+ }
2022
+
2023
+ .vf-editor-upload-folder-menu {
2024
+ position: absolute;
2025
+ right: 8px;
2026
+ top: calc(100% - 2px);
2027
+ z-index: 3;
2028
+ display: grid;
2029
+ gap: 4px;
2030
+ min-width: 132px;
2031
+ padding: 6px;
2032
+ border: 1px solid rgba(191, 164, 109, 0.2);
2033
+ border-radius: 10px;
2034
+ background: #fffbf4;
2035
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
2036
+ }
2037
+
2038
+ .vf-editor-upload-folder-menu button {
2039
+ justify-content: flex-start;
2040
+ }
2041
+
2042
+ .vf-editor-upload-folder-menu button[data-danger="true"] {
2043
+ color: #8b1e1e;
2044
+ }
2045
+
2046
+ .vf-editor-upload-folder-dialog {
2047
+ display: grid;
2048
+ gap: 9px;
2049
+ padding: 10px;
2050
+ border: 1px solid rgba(191, 164, 109, 0.22);
2051
+ border-radius: 10px;
2052
+ background: rgba(255, 255, 255, 0.86);
2053
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
2054
+ }
2055
+
2056
+ .vf-editor-upload-folder-dialog-title {
2057
+ color: #243041;
2058
+ font-size: 0.82rem;
2059
+ font-weight: 850;
2060
+ }
2061
+
2062
+ .vf-editor-upload-folder-dialog-copy {
2063
+ color: #4b5568;
2064
+ font-size: 0.78rem;
2065
+ font-weight: 750;
2066
+ line-height: 1.35;
2067
+ overflow-wrap: anywhere;
2068
+ }
2069
+
2070
+ .vf-editor-upload-folder-dialog input {
2071
+ box-sizing: border-box;
2072
+ width: 100%;
2073
+ height: 34px;
2074
+ padding: 0 9px;
2075
+ border: 1px solid rgba(191, 164, 109, 0.24);
2076
+ border-radius: 8px;
2077
+ background: #fff;
2078
+ color: #243041;
2079
+ font-size: 0.8rem;
2080
+ font-weight: 750;
2081
+ }
2082
+
2083
+ .vf-editor-upload-folder-dialog-actions {
2084
+ display: flex;
2085
+ justify-content: flex-end;
2086
+ gap: 6px;
2087
+ }
2088
+
2089
+ .vf-editor-upload-folder-dialog-actions button {
2090
+ all: unset;
2091
+ box-sizing: border-box;
2092
+ display: inline-flex;
2093
+ align-items: center;
2094
+ justify-content: center;
2095
+ min-height: 30px;
2096
+ padding: 0 10px;
2097
+ border: 1px solid rgba(191, 164, 109, 0.24);
2098
+ border-radius: 8px;
2099
+ background: rgba(255, 255, 255, 0.86);
2100
+ color: #4b5568;
2101
+ font-size: 0.76rem;
2102
+ font-weight: 800;
2103
+ cursor: pointer;
2104
+ }
2105
+
2106
+ .vf-editor-upload-folder-dialog-actions button[data-danger="true"] {
2107
+ border-color: rgba(155, 45, 45, 0.22);
2108
+ background: rgba(155, 45, 45, 0.08);
2109
+ color: #8b1e1e;
2110
+ }
2111
+
2112
+ .vf-editor-upload-list {
2113
+ display: grid;
2114
+ gap: 8px;
2115
+ }
2116
+
2117
+ .vf-editor-upload-file-card {
2118
+ position: relative;
2119
+ display: grid;
2120
+ grid-template-columns: minmax(0, 1fr) auto;
2121
+ align-items: center;
2122
+ gap: 8px;
2123
+ min-width: 0;
2124
+ padding: 8px;
2125
+ border: 1px solid rgba(191, 164, 109, 0.18);
2126
+ border-radius: 10px;
2127
+ background: rgba(255, 255, 255, 0.82);
2128
+ }
2129
+
2130
+ .vf-editor-upload-file-card[data-selected="true"] {
2131
+ border-color: rgba(138, 107, 27, 0.72);
2132
+ background: rgba(255, 248, 226, 0.94);
2133
+ box-shadow: inset 0 0 0 2px rgba(215, 184, 79, 0.44);
2134
+ }
2135
+
2136
+ .vf-editor-upload-file-select {
2137
+ all: unset;
2138
+ display: grid;
2139
+ grid-template-columns: auto minmax(0, 1fr);
2140
+ align-items: center;
2141
+ gap: 9px;
2142
+ min-width: 0;
2143
+ cursor: pointer;
2144
+ }
2145
+
2146
+ .vf-editor-upload-file-thumb,
2147
+ .vf-editor-upload-file-icon {
2148
+ width: 44px;
2149
+ min-width: 44px;
2150
+ height: 44px;
2151
+ border-radius: 8px;
2152
+ border: 1px solid rgba(191, 164, 109, 0.2);
2153
+ background: rgba(252, 248, 240, 0.94);
2154
+ }
2155
+
2156
+ .vf-editor-upload-file-thumb {
2157
+ object-fit: cover;
2158
+ }
2159
+
2160
+ .vf-editor-upload-file-icon {
2161
+ display: inline-flex;
2162
+ align-items: center;
2163
+ justify-content: center;
2164
+ color: #617087;
2165
+ font-weight: 850;
2166
+ }
2167
+
2168
+ .vf-editor-upload-file-main {
2169
+ display: grid;
2170
+ gap: 3px;
2171
+ min-width: 0;
2172
+ }
2173
+
2174
+ .vf-editor-upload-file-name,
2175
+ .vf-editor-upload-file-meta {
2176
+ min-width: 0;
2177
+ overflow: hidden;
2178
+ text-overflow: ellipsis;
2179
+ white-space: nowrap;
2180
+ }
2181
+
2182
+ .vf-editor-upload-file-name {
2183
+ color: #243041;
2184
+ font-size: 0.8rem;
2185
+ font-weight: 850;
2186
+ }
2187
+
2188
+ .vf-editor-upload-file-meta {
2189
+ color: #7b879b;
2190
+ font-size: 0.7rem;
2191
+ font-weight: 700;
2192
+ }
2193
+
2194
+ .vf-editor-upload-file-actions {
2195
+ display: inline-flex;
2196
+ align-items: center;
2197
+ gap: 4px;
2198
+ }
2199
+
2200
+ .vf-editor-upload-file-actions svg {
2201
+ width: 18px;
2202
+ height: 18px;
2203
+ fill: none;
2204
+ stroke: currentColor;
2205
+ stroke-width: 2;
2206
+ stroke-linecap: round;
2207
+ stroke-linejoin: round;
2208
+ }
2209
+
2210
+ .vf-editor-upload-selection-indicator {
2211
+ display: inline-flex;
2212
+ align-items: center;
2213
+ justify-content: center;
2214
+ width: 26px;
2215
+ min-width: 26px;
2216
+ height: 26px;
2217
+ border: 2px solid rgba(123, 135, 155, 0.42);
2218
+ border-radius: 7px;
2219
+ color: #243041;
2220
+ font-size: 0.9rem;
2221
+ font-weight: 900;
2222
+ background: rgba(255, 255, 255, 0.82);
2223
+ }
2224
+
2225
+ .vf-editor-upload-selection-indicator[data-selected="true"] {
2226
+ border-color: rgba(138, 107, 27, 0.72);
2227
+ background: #d7b84f;
2228
+ }
2229
+
2230
+ .vf-editor-upload-popconfirm {
2231
+ position: absolute;
2232
+ right: 8px;
2233
+ top: calc(100% - 2px);
2234
+ z-index: 2;
2235
+ display: grid;
2236
+ gap: 6px;
2237
+ min-width: 180px;
2238
+ padding: 8px;
2239
+ border: 1px solid rgba(191, 164, 109, 0.2);
2240
+ border-radius: 10px;
2241
+ background: #fffbf4;
2242
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.16);
2243
+ color: #4b5568;
2244
+ font-size: 0.76rem;
2245
+ font-weight: 800;
2246
+ }
2247
+
2248
+ .vf-editor-upload-popconfirm button[data-danger="true"] {
2249
+ border-color: rgba(155, 45, 45, 0.22);
2250
+ background: rgba(155, 45, 45, 0.08);
2251
+ color: #8b1e1e;
2252
+ }
2253
+
2254
+ .vf-editor-upload-empty {
2255
+ padding: 20px 10px;
2256
+ border: 1px dashed rgba(191, 164, 109, 0.24);
2257
+ border-radius: 10px;
2258
+ color: #7b879b;
2259
+ font-size: 0.8rem;
2260
+ font-weight: 800;
2261
+ text-align: center;
2262
+ }
2263
+
2264
+ .vf-editor-chat-attachment {
2265
+ display: inline-flex;
2266
+ align-items: center;
2267
+ gap: 8px;
2268
+ min-height: 32px;
2269
+ padding: 0 10px;
2270
+ border-radius: 999px;
2271
+ border: 1px solid rgba(191, 164, 109, 0.24);
2272
+ background: rgba(252, 248, 240, 0.98);
2273
+ color: #4b5568;
2274
+ max-width: 100%;
2275
+ }
2276
+
2277
+ .vf-editor-chat-attachment-name {
2278
+ display: inline-flex;
2279
+ min-width: 0;
2280
+ overflow: hidden;
2281
+ text-overflow: ellipsis;
2282
+ white-space: nowrap;
2283
+ font-size: 0.78rem;
2284
+ font-weight: 700;
2285
+ }
2286
+
2287
+ .vf-editor-chat-attachment-remove {
2288
+ display: inline-flex;
2289
+ align-items: center;
2290
+ justify-content: center;
2291
+ width: 18px;
2292
+ height: 18px;
2293
+ padding: 0;
2294
+ border: 0;
2295
+ border-radius: 999px;
2296
+ background: rgba(36, 48, 65, 0.08);
2297
+ color: #617087;
2298
+ cursor: pointer;
2299
+ box-shadow: none;
2300
+ min-height: 0;
2301
+ }
2302
+
2303
+ .vf-editor-chat-footer {
2304
+ padding: 0;
2305
+ border-top: 1px solid rgba(191, 164, 109, 0.14);
2306
+ background: rgba(255, 251, 244, 0.9);
2307
+ backdrop-filter: blur(16px);
2308
+ }
2309
+
2310
+ .vf-editor-chat-composer {
2311
+ display: grid;
2312
+ gap: 6px;
2313
+ padding: 4px 6px;
2314
+ border: 0;
2315
+ border-radius: 0;
2316
+ background: rgba(255, 255, 255, 0.92);
2317
+ box-shadow: none;
2318
+ }
2319
+
2320
+ .vf-editor-chat-composer-attachments-strip {
2321
+ display: flex;
2322
+ gap: 8px;
2323
+ overflow-x: auto;
2324
+ overflow-y: hidden;
2325
+ padding-bottom: 2px;
2326
+ scrollbar-width: thin;
2327
+ }
2328
+
2329
+ .vf-editor-chat-composer-attachment-item {
2330
+ display: flex;
2331
+ align-items: center;
2332
+ gap: 8px;
2333
+ flex: 0 0 auto;
2334
+ min-width: 0;
2335
+ max-width: 190px;
2336
+ padding: 6px 8px;
2337
+ border: 1px solid rgba(191, 164, 109, 0.22);
2338
+ border-radius: 12px;
2339
+ background: rgba(252, 248, 240, 0.94);
2340
+ }
2341
+
2342
+ .vf-editor-chat-composer-attachment-thumb,
2343
+ .vf-editor-chat-composer-attachment-file {
2344
+ width: 42px;
2345
+ min-width: 42px;
2346
+ height: 42px;
2347
+ border-radius: 8px;
2348
+ border: 1px solid rgba(191, 164, 109, 0.2);
2349
+ background: rgba(255, 255, 255, 0.92);
2350
+ }
2351
+
2352
+ .vf-editor-chat-composer-attachment-thumb {
2353
+ object-fit: cover;
2354
+ }
2355
+
2356
+ .vf-editor-chat-composer-attachment-file {
2357
+ display: inline-flex;
2358
+ align-items: center;
2359
+ justify-content: center;
2360
+ color: #617087;
2361
+ font-size: 0.82rem;
2362
+ font-weight: 800;
2363
+ }
2364
+
2365
+ .vf-editor-chat-composer-attachment-meta {
2366
+ min-width: 0;
2367
+ flex: 1 1 auto;
2368
+ }
2369
+
2370
+ .vf-editor-chat-composer-attachment-name {
2371
+ display: block;
2372
+ overflow: hidden;
2373
+ text-overflow: ellipsis;
2374
+ white-space: nowrap;
2375
+ color: #334155;
2376
+ font-size: 0.76rem;
2377
+ font-weight: 700;
2378
+ line-height: 1.2;
2379
+ }
2380
+
2381
+ .vf-editor-chat-composer-attachment-remove {
2382
+ all: unset;
2383
+ display: inline-flex;
2384
+ align-items: center;
2385
+ justify-content: center;
2386
+ width: 16px;
2387
+ min-width: 16px;
2388
+ height: 16px;
2389
+ padding: 0;
2390
+ border: 0;
2391
+ border-radius: 999px;
2392
+ background: transparent;
2393
+ color: #7b879b;
2394
+ box-shadow: none;
2395
+ font-size: 0.95rem;
2396
+ line-height: 1;
2397
+ }
2398
+
2399
+ .vf-editor-chat-composer-row {
2400
+ display: grid;
2401
+ grid-template-columns: auto minmax(0, 1fr) auto;
2402
+ align-items: flex-start;
2403
+ gap: 6px;
2404
+ }
2405
+
2406
+ .vf-editor-chat-attach-button,
2407
+ .vf-editor-chat-send-button {
2408
+ all: unset;
2409
+ display: inline-flex;
2410
+ align-items: center;
2411
+ justify-content: center;
2412
+ min-height: 32px;
2413
+ height: 32px;
2414
+ border-radius: 8px;
2415
+ border: 1px solid rgba(191, 164, 109, 0.34);
2416
+ background: rgba(255, 255, 255, 0.92);
2417
+ color: #243041;
2418
+ font-weight: 700;
2419
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
2420
+ }
2421
+
2422
+ .vf-editor-chat-attach-button {
2423
+ width: 32px;
2424
+ min-width: 32px;
2425
+ padding: 0;
2426
+ font-size: 1.1rem;
2427
+ line-height: 1;
2428
+ }
2429
+
2430
+ .vf-editor-chat-send-button {
2431
+ padding: 0 12px;
2432
+ background: #dbc17a;
2433
+ }
2434
+
2435
+ .vf-editor-chat-attach-button:disabled,
2436
+ .vf-editor-chat-send-button:disabled,
2437
+ .vf-editor-chat-new-thread:disabled {
2438
+ opacity: 0.58;
2439
+ cursor: not-allowed;
2440
+ }
2441
+
2442
+ .vf-editor-chat-input {
2443
+ all: unset;
2444
+ display: block;
2445
+ width: 100%;
2446
+ min-height: 96px;
2447
+ max-height: 180px;
2448
+ padding: 10px 0;
2449
+ background: transparent;
2450
+ box-shadow: none;
2451
+ color: #243041;
2452
+ font-size: 0.88rem;
2453
+ line-height: 1.45;
2454
+ resize: none;
2455
+ border: 0;
2456
+ }
2457
+
2458
+ .vf-editor-chat-input:focus {
2459
+ border: 0;
2460
+ box-shadow: none;
2461
+ }
2462
+
2463
+ .vf-editor-chat-input::placeholder {
2464
+ color: #7b879b;
2465
+ }
2466
+
2467
+ .vf-editor-chat-error {
2468
+ margin: 10px 10px 0;
2469
+ padding: 12px 14px;
2470
+ border-radius: 10px;
2471
+ border: 1px solid rgba(155, 45, 45, 0.18);
2472
+ background: rgba(155, 45, 45, 0.08);
2473
+ color: #8b1e1e;
2474
+ font-size: 0.88rem;
2475
+ }
2476
+
2477
+ @keyframes vf-editor-chat-bounce {
2478
+ 0%, 80%, 100% {
2479
+ transform: translateY(0);
2480
+ opacity: 0.55;
2481
+ }
2482
+ 40% {
2483
+ transform: translateY(-3px);
2484
+ opacity: 1;
2485
+ }
2486
+ }
2487
+
2488
+ @keyframes vf-editor-chat-pulse {
2489
+ 0%, 100% {
2490
+ box-shadow: 0 0 0 0 rgba(219, 193, 122, 0.26);
2491
+ }
2492
+ 50% {
2493
+ box-shadow: 0 0 0 6px rgba(219, 193, 122, 0.08);
2494
+ }
2495
+ }
2496
+
2497
+ @media (max-width: 1180px) {
2498
+ .editor-workbench {
2499
+ padding-top: 0;
2500
+ padding-right: 0;
2501
+ padding-bottom: 18px;
2502
+ }
2503
+
2504
+ .editor-main {
2505
+ overflow-x: hidden;
2506
+ overflow-y: auto;
2507
+ }
2508
+
2509
+ .editor-floating-nav {
2510
+ position: sticky;
2511
+ top: 16px;
2512
+ left: auto;
2513
+ max-width: none;
2514
+ margin: 0 0 16px;
2515
+ }
2516
+
2517
+ .editor-right-rail {
2518
+ position: static;
2519
+ width: auto;
2520
+ height: 45vh;
2521
+ min-height: 240px;
2522
+ margin-top: 18px;
2523
+ }
2524
+
2525
+ .vf-editor-chat-thread-chip {
2526
+ max-width: 180px;
2527
+ }
2528
+
2529
+ .vf-editor-chat-message.is-assistant .vf-editor-chat-bubble,
2530
+ .vf-editor-chat-message.is-user .vf-editor-chat-bubble {
2531
+ max-width: min(100%, 340px);
2532
+ }
2533
+ }
2534
+
2535
+ @media (max-width: 1024px) {
2536
+ .editor-workbench {
2537
+ padding-bottom: 12px;
2538
+ }
2539
+
2540
+ .editor-floating-nav {
2541
+ top: 8px;
2542
+ grid-template-columns: auto minmax(0, 1fr) auto;
2543
+ gap: 8px;
2544
+ padding: 8px;
2545
+ border-radius: 18px;
2546
+ flex-wrap: nowrap;
2547
+ }
2548
+
2549
+ .editor-nav-title {
2550
+ min-width: 0;
2551
+ overflow: hidden;
2552
+ text-overflow: ellipsis;
2553
+ white-space: nowrap;
2554
+ }
2555
+
2556
+ .editor-nav-account {
2557
+ display: none;
2558
+ }
2559
+
2560
+ .editor-right-rail {
2561
+ position: fixed !important;
2562
+ inset: 0;
2563
+ z-index: 110;
2564
+ width: 100%;
2565
+ height: 100svh;
2566
+ min-height: 0;
2567
+ margin: 0;
2568
+ border-radius: 0;
2569
+ overflow: visible;
2570
+ pointer-events: none;
2571
+ }
2572
+
2573
+ .editor-chat-panel {
2574
+ height: 100%;
2575
+ border-left: 0;
2576
+ background: transparent;
2577
+ pointer-events: none;
2578
+ }
2579
+
2580
+ .vf-editor-chat-shell {
2581
+ height: 100%;
2582
+ min-height: 0;
2583
+ pointer-events: none;
2584
+ }
2585
+
2586
+ .vf-editor-chat-shell[data-mobile-open="true"] {
2587
+ pointer-events: auto;
2588
+ }
2589
+
2590
+ .vf-editor-chat-mobile-fab {
2591
+ all: unset;
2592
+ position: fixed;
2593
+ right: 18px;
2594
+ bottom: calc(18px + env(safe-area-inset-bottom));
2595
+ z-index: 2;
2596
+ display: inline-flex;
2597
+ align-items: center;
2598
+ justify-content: center;
2599
+ width: 58px;
2600
+ height: 58px;
2601
+ border-radius: 999px;
2602
+ border: 1px solid rgba(255, 255, 255, 0.86);
2603
+ background:
2604
+ radial-gradient(circle at 34% 26%, rgba(255, 255, 255, 0.36), transparent 30%),
2605
+ linear-gradient(180deg, #e2c675, #c79f3b);
2606
+ color: #243041;
2607
+ box-shadow:
2608
+ 0 18px 36px rgba(102, 82, 43, 0.24),
2609
+ 0 0 0 1px rgba(102, 82, 43, 0.14) inset;
2610
+ pointer-events: auto;
2611
+ transition:
2612
+ transform 160ms ease,
2613
+ opacity 160ms ease,
2614
+ box-shadow 160ms ease;
2615
+ }
2616
+
2617
+ .vf-editor-chat-mobile-fab:active {
2618
+ transform: translateY(1px) scale(0.98);
2619
+ }
2620
+
2621
+ .vf-editor-chat-mobile-fab svg {
2622
+ width: 29px;
2623
+ height: 29px;
2624
+ fill: none;
2625
+ stroke: currentColor;
2626
+ stroke-width: 1.9;
2627
+ stroke-linecap: round;
2628
+ stroke-linejoin: round;
2629
+ }
2630
+
2631
+ .vf-editor-chat-shell[data-mobile-open="true"] .vf-editor-chat-mobile-fab {
2632
+ opacity: 0;
2633
+ transform: scale(0.86);
2634
+ pointer-events: none;
2635
+ }
2636
+
2637
+ .vf-editor-chat-thread {
2638
+ position: fixed;
2639
+ inset: 0;
2640
+ z-index: 1;
2641
+ display: none;
2642
+ width: 100%;
2643
+ height: 100svh;
2644
+ border-radius: 0;
2645
+ background:
2646
+ radial-gradient(circle at top right, rgba(219, 193, 122, 0.12), transparent 30%),
2647
+ linear-gradient(180deg, rgba(255, 252, 247, 0.99), rgba(252, 247, 238, 0.98));
2648
+ box-shadow: none;
2649
+ pointer-events: auto;
2650
+ }
2651
+
2652
+ .vf-editor-chat-shell[data-mobile-open="true"] .vf-editor-chat-thread {
2653
+ display: flex;
2654
+ }
2655
+
2656
+ .vf-editor-chat-minimize {
2657
+ all: unset;
2658
+ display: inline-flex;
2659
+ align-items: center;
2660
+ justify-content: center;
2661
+ flex: 0 0 auto;
2662
+ width: 34px;
2663
+ height: 34px;
2664
+ border-radius: 999px;
2665
+ border: 1px solid rgba(191, 164, 109, 0.24);
2666
+ background: rgba(255, 255, 255, 0.9);
2667
+ color: #617087;
2668
+ font-size: 1.35rem;
2669
+ line-height: 1;
2670
+ }
2671
+
2672
+ .vf-editor-chat-header-row {
2673
+ align-items: flex-start;
2674
+ justify-content: flex-start;
2675
+ gap: 8px;
2676
+ }
2677
+
2678
+ .vf-editor-chat-header-row > div:first-child {
2679
+ flex: 1 1 auto;
2680
+ min-width: 0;
2681
+ }
2682
+
2683
+ .vf-editor-chat-new-thread,
2684
+ .vf-editor-chat-minimize {
2685
+ flex: 0 0 auto;
2686
+ }
2687
+
2688
+ .vf-editor-chat-header,
2689
+ .vf-editor-chat-tracer-bar,
2690
+ .vf-editor-chat-footer {
2691
+ padding-left: 12px;
2692
+ padding-right: 12px;
2693
+ }
2694
+
2695
+ .vf-editor-chat-message.is-assistant .vf-editor-chat-bubble,
2696
+ .vf-editor-chat-message.is-user .vf-editor-chat-bubble {
2697
+ max-width: 100%;
2698
+ }
2699
+
2700
+ .vf-editor-chat-thread-chip {
2701
+ max-width: 72vw;
2702
+ }
2703
+
2704
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
2705
+ pointer-events: auto;
2706
+ }
2707
+
2708
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-mobile-fab {
2709
+ display: none;
2710
+ }
2711
+
2712
+ /* Minimize makes no sense when the chat IS the page (/chat); Discover
2713
+ re-enables it (with the FAB dock pattern) via its own scoped styles. */
2714
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-minimize {
2715
+ display: none;
2716
+ }
2717
+
2718
+ /* iOS auto-zooms the viewport when focusing sub-16px inputs; the chat
2719
+ composer is the page's primary interaction on phones. */
2720
+ .vf-editor-chat-input,
2721
+ .vf-editor-upload-folder-dialog input {
2722
+ font-size: 16px;
2723
+ }
2724
+
2725
+ /* On phones the /chat page has no topbar and the sidebar (with its
2726
+ Discover link) is collapsed — surface the header back button there.
2727
+ Discover hides it again via its own scoped styles. */
2728
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-back-button--header {
2729
+ display: inline-flex;
2730
+ align-items: center;
2731
+ justify-content: center;
2732
+ flex: 0 0 auto;
2733
+ width: 34px;
2734
+ height: 34px;
2735
+ padding: 0;
2736
+ border: 1px solid rgba(191, 164, 109, 0.24);
2737
+ border-radius: 999px;
2738
+ background: rgba(255, 255, 255, 0.9);
2739
+ color: #617087;
2740
+ }
2741
+
2742
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-back-button--header svg {
2743
+ width: 18px;
2744
+ height: 18px;
2745
+ }
2746
+
2747
+ .vf-editor-chat-shell[data-layout="brainstorm"] .editor-chat-panel,
2748
+ .vf-editor-chat-shell[data-layout="brainstorm"] {
2749
+ background: transparent;
2750
+ }
2751
+
2752
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-brainstorm-layout {
2753
+ grid-template-columns: minmax(0, 1fr);
2754
+ }
2755
+
2756
+ /* On narrow screens the persistent history sidebar collapses; the
2757
+ overlay history toggle in the header takes over instead. */
2758
+ .vf-editor-chat-brainstorm-layout.has-sidebar > .vf-editor-chat-history-pane {
2759
+ display: none;
2760
+ }
2761
+
2762
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-thread {
2763
+ position: relative;
2764
+ inset: auto;
2765
+ display: grid;
2766
+ grid-template-rows: auto minmax(0, 1fr) auto;
2767
+ width: 100%;
2768
+ height: 100%;
2769
+ min-height: 0;
2770
+ border-radius: 0;
2771
+ }
2772
+
2773
+
2774
+ .vf-editor-chat-history-close,
2775
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-toggle {
2776
+ display: inline-flex;
2777
+ }
2778
+
2779
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-viewport {
2780
+ padding-left: 12px;
2781
+ padding-right: 12px;
2782
+ }
2783
+ }
2784
+
2785
+ @media (min-width: 1025px) {
2786
+ .vf-editor-chat-shell[data-layout="brainstorm"] .vf-editor-chat-history-toggle {
2787
+ display: none;
2788
+ }
2789
+
2790
+ /* With the persistent sidebar visible on desktop, the header's overlay
2791
+ history toggle is redundant, so hide just that icon (keep forks). */
2792
+ .vf-editor-chat-brainstorm-layout.has-sidebar .vf-editor-chat-history-icon:not(.vf-editor-chat-branches-icon) {
2793
+ display: none;
2794
+ }
2795
+ }
2796
+ `;
2797
+ export const TEMPLATE_EDITOR_SHELL_SCRIPT = `
2798
+ document.addEventListener("click", async (event) => {
2799
+ const target = event.target;
2800
+ if (!(target instanceof HTMLElement)) {
2801
+ return;
2802
+ }
2803
+ const button = target.closest("[data-editor-copy]");
2804
+ if (!(button instanceof HTMLButtonElement)) {
2805
+ return;
2806
+ }
2807
+ const value = button.getAttribute("data-editor-copy") || "";
2808
+ if (!value) {
2809
+ return;
2810
+ }
2811
+ try {
2812
+ await navigator.clipboard.writeText(value);
2813
+ button.setAttribute("data-copied", "true");
2814
+ const original = button.textContent || "";
2815
+ button.textContent = "Copied";
2816
+ window.setTimeout(() => {
2817
+ button.textContent = original;
2818
+ button.setAttribute("data-copied", "false");
2819
+ }, 1200);
2820
+ } catch {}
2821
+ });
2822
+ `;
2823
+ export function renderTemplateEditorChrome(input) {
2824
+ const email = input.account?.email?.trim() || "";
2825
+ const displayName = resolveAccountDisplayName(input.account);
2826
+ const accountMeta = email
2827
+ ? `<div class="editor-nav-account">${escapeHtml(displayName)} <span>(${escapeHtml(email)})</span></div>`
2828
+ : "";
2829
+ return `
2830
+ <nav class="editor-floating-nav" aria-label="Editor workspace">
2831
+ <a class="editor-back-link" href="${escapeAttribute(input.backHref)}">Back to Studio</a>
2832
+ <div class="editor-nav-title">${escapeHtml(input.templateTitle)}</div>
2833
+ ${accountMeta}
2834
+ </nav>
2835
+ <aside class="editor-right-rail" aria-label="Layer copilot panel">
2836
+ <div class="editor-chat-panel" data-template-editor-chat-root></div>
2837
+ </aside>
2838
+ `;
2839
+ }
2840
+ //# sourceMappingURL=template-editor-shell.js.map