@onetype/framework 2.0.40 → 2.0.42

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 (120) hide show
  1. package/addons/ai/agents/addon.js +23 -0
  2. package/addons/ai/agents/functions/parse.js +129 -0
  3. package/addons/ai/agents/item/functions/run.js +218 -0
  4. package/addons/ai/agents/load.js +8 -0
  5. package/addons/ai/orchestrator/addon.js +25 -0
  6. package/addons/ai/orchestrator/item/functions/run.js +277 -0
  7. package/addons/ai/orchestrator/item/functions/state/agent.js +41 -0
  8. package/addons/ai/orchestrator/item/functions/state/conclusion.js +27 -0
  9. package/addons/ai/orchestrator/item/functions/state/done.js +40 -0
  10. package/addons/ai/orchestrator/item/functions/state/execute.js +16 -0
  11. package/addons/ai/orchestrator/item/functions/state/goal.js +34 -0
  12. package/addons/ai/orchestrator/item/functions/state/input.js +55 -0
  13. package/addons/ai/orchestrator/item/functions/state/summary.js +26 -0
  14. package/addons/ai/orchestrator/items/agents/achievable.js +37 -0
  15. package/addons/ai/orchestrator/items/agents/agent.js +46 -0
  16. package/addons/ai/orchestrator/items/agents/conclusion.js +41 -0
  17. package/addons/ai/orchestrator/items/agents/done.js +40 -0
  18. package/addons/ai/orchestrator/items/agents/goal.js +58 -0
  19. package/addons/ai/orchestrator/items/agents/input.js +34 -0
  20. package/addons/ai/orchestrator/items/agents/planner.js +30 -0
  21. package/addons/ai/orchestrator/items/agents/summary.js +29 -0
  22. package/addons/ai/orchestrator/items/chat.js +10 -0
  23. package/addons/ai/orchestrator/load.js +25 -0
  24. package/addons/ai/providers/addon.js +16 -0
  25. package/addons/ai/providers/functions/default.js +14 -0
  26. package/addons/ai/providers/item/functions/request.js +62 -0
  27. package/addons/ai/providers/items/nue.js +98 -0
  28. package/addons/ai/providers/load.js +10 -0
  29. package/addons/render/elements/front/functions/runtime.js +25 -0
  30. package/addons/render/transforms/item/functions/run.js +6 -2
  31. package/lib/browser.js +1 -24
  32. package/lib/items/directives/160-slot.js +1 -1
  33. package/lib/items/directives/500-click-outside.js +43 -43
  34. package/lib/items/elements/ai/chat/chat.css +710 -0
  35. package/lib/items/elements/ai/chat/chat.js +429 -0
  36. package/lib/items/elements/cards/pricing/pricing.css +174 -0
  37. package/lib/items/elements/{sections → cards}/pricing/pricing.js +30 -11
  38. package/lib/items/elements/form/button/button.css +250 -0
  39. package/lib/items/elements/form/button/button.js +15 -20
  40. package/lib/items/elements/form/checkbox/checkbox.css +109 -0
  41. package/lib/items/elements/form/checkbox/checkbox.js +58 -54
  42. package/lib/items/elements/form/color/color.css +128 -0
  43. package/lib/items/elements/form/color/color.js +100 -0
  44. package/lib/items/elements/form/date/date.css +84 -0
  45. package/lib/items/elements/form/date/date.js +69 -0
  46. package/lib/items/elements/form/field/field.css +33 -57
  47. package/lib/items/elements/form/field/field.js +4 -4
  48. package/lib/items/elements/form/input/input.css +59 -84
  49. package/lib/items/elements/form/input/input.js +84 -75
  50. package/lib/items/elements/form/radio/radio.css +118 -0
  51. package/lib/items/elements/form/radio/radio.js +58 -54
  52. package/lib/items/elements/form/rating/rating.css +28 -66
  53. package/lib/items/elements/form/rating/rating.js +17 -21
  54. package/lib/items/elements/form/section/section.css +30 -73
  55. package/lib/items/elements/form/section/section.js +5 -5
  56. package/lib/items/elements/form/select/select.css +186 -0
  57. package/lib/items/elements/form/select/select.js +165 -0
  58. package/lib/items/elements/form/slider/slider.css +55 -176
  59. package/lib/items/elements/form/slider/slider.js +14 -10
  60. package/lib/items/elements/form/tags/tags.css +152 -0
  61. package/lib/items/elements/form/tags/tags.js +166 -0
  62. package/lib/items/elements/form/textarea/textarea.css +55 -92
  63. package/lib/items/elements/form/textarea/textarea.js +74 -66
  64. package/lib/items/elements/form/toggle/toggle.css +101 -0
  65. package/lib/items/elements/form/toggle/toggle.js +67 -0
  66. package/lib/items/elements/global/code/code.css +39 -8
  67. package/lib/items/elements/global/code/code.js +7 -2
  68. package/lib/items/elements/global/faq/faq.css +38 -16
  69. package/lib/items/elements/global/faq/faq.js +14 -2
  70. package/lib/items/elements/global/heading/heading.css +37 -14
  71. package/lib/items/elements/global/heading/heading.js +9 -4
  72. package/lib/items/elements/global/markdown/markdown.css +22 -15
  73. package/lib/items/elements/global/markdown/markdown.js +4 -4
  74. package/lib/items/elements/global/menu/menu.css +173 -0
  75. package/lib/items/elements/global/menu/menu.js +103 -0
  76. package/lib/items/elements/global/notice/notice.css +27 -61
  77. package/lib/items/elements/global/notice/notice.js +4 -4
  78. package/lib/items/elements/global/parameters/parameters.css +33 -14
  79. package/lib/items/elements/global/parameters/parameters.js +15 -6
  80. package/lib/items/elements/global/tags/tags.css +18 -5
  81. package/lib/items/elements/global/tags/tags.js +10 -2
  82. package/lib/items/elements/navigation/navbar/navbar.css +39 -17
  83. package/lib/items/elements/navigation/navbar/navbar.js +19 -9
  84. package/lib/items/elements/navigation/sidebar/sidebar.css +25 -39
  85. package/lib/items/elements/navigation/sidebar/sidebar.js +28 -6
  86. package/lib/items/elements/navigation/tabs/tabs.css +35 -16
  87. package/lib/items/elements/navigation/tabs/tabs.js +16 -2
  88. package/lib/items/elements/status/code/code.css +21 -12
  89. package/lib/items/elements/status/empty/empty.css +22 -17
  90. package/lib/items/elements/status/empty/empty.js +1 -1
  91. package/lib/items/elements/status/error/error.css +22 -12
  92. package/lib/items/elements/status/error/error.js +1 -1
  93. package/lib/items/elements/status/loading/loading.css +24 -14
  94. package/lib/items/elements/status/loading/loading.js +4 -4
  95. package/lib/load.js +14 -6
  96. package/lib/styles/reset.css +1 -1
  97. package/lists.md +586 -0
  98. package/orchestrator.md +288 -0
  99. package/package.json +9 -3
  100. package/lib/items/elements/form/button/styles/base.css +0 -176
  101. package/lib/items/elements/form/button/styles/sizes.css +0 -78
  102. package/lib/items/elements/form/button/styles/variants.css +0 -421
  103. package/lib/items/elements/form/checkbox/styles/base.css +0 -52
  104. package/lib/items/elements/form/checkbox/styles/sizes.css +0 -39
  105. package/lib/items/elements/form/checkbox/styles/variants.css +0 -121
  106. package/lib/items/elements/form/input/styles/base.css +0 -26
  107. package/lib/items/elements/form/input/styles/sizes.css +0 -15
  108. package/lib/items/elements/form/input/styles/variants.css +0 -98
  109. package/lib/items/elements/form/radio/styles/base.css +0 -48
  110. package/lib/items/elements/form/radio/styles/sizes.css +0 -36
  111. package/lib/items/elements/form/radio/styles/variants.css +0 -121
  112. package/lib/items/elements/global/card/card.css +0 -57
  113. package/lib/items/elements/global/card/card.js +0 -48
  114. package/lib/items/elements/sections/footer/footer.css +0 -205
  115. package/lib/items/elements/sections/footer/footer.js +0 -109
  116. package/lib/items/elements/sections/hero/hero.css +0 -100
  117. package/lib/items/elements/sections/hero/hero.js +0 -54
  118. package/lib/items/elements/sections/pricing/pricing.css +0 -148
  119. package/lib/items/elements/sections/stats/stats.css +0 -34
  120. package/lib/items/elements/sections/stats/stats.js +0 -74
@@ -0,0 +1,710 @@
1
+ /* Root */
2
+
3
+ .e-1b9140f9
4
+ {
5
+ display: flex;
6
+ width: 100%;
7
+ height: 100%;
8
+ min-height: 0;
9
+ }
10
+
11
+ /* Holder */
12
+
13
+ .e-1b9140f9 > .holder
14
+ {
15
+ display: flex;
16
+ flex-direction: column;
17
+ width: 100%;
18
+ height: 100%;
19
+ min-height: 400px;
20
+ border-radius: var(--ot-radius-l);
21
+ border: 1px solid transparent;
22
+ overflow: hidden;
23
+ }
24
+
25
+ /* Header */
26
+
27
+ .e-1b9140f9 > .holder > .header,
28
+ .e-1b9140f9 > .holder > .panel > .header
29
+ {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: space-between;
33
+ padding: var(--ot-spacing-s) var(--ot-spacing-m);
34
+ border-bottom: 1px solid var(--ot-bg-3-border);
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ .e-1b9140f9 > .holder > .header > .brand,
39
+ .e-1b9140f9 > .holder > .panel > .header > .brand
40
+ {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: var(--ot-spacing-s);
44
+ }
45
+
46
+ .e-1b9140f9 > .holder > .header > .brand > .logo,
47
+ .e-1b9140f9 > .holder > .panel > .header > .brand > .logo
48
+ {
49
+ width: 24px;
50
+ height: 24px;
51
+ }
52
+
53
+ .e-1b9140f9 > .holder > .header > .brand > .info,
54
+ .e-1b9140f9 > .holder > .panel > .header > .brand > .info
55
+ {
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: 1px;
59
+ }
60
+
61
+ .e-1b9140f9 > .holder > .header > .brand > .info > .name,
62
+ .e-1b9140f9 > .holder > .panel > .header > .brand > .info > .name
63
+ {
64
+ font-size: var(--ot-size-m);
65
+ font-weight: 600;
66
+ color: var(--ot-text-1);
67
+ line-height: 1.2;
68
+ }
69
+
70
+ .e-1b9140f9 > .holder > .header > .brand > .info > .status,
71
+ .e-1b9140f9 > .holder > .panel > .header > .brand > .info > .status
72
+ {
73
+ font-size: 10px;
74
+ color: var(--ot-green);
75
+ line-height: 1.2;
76
+ }
77
+
78
+ .e-1b9140f9 > .holder > .header > .close,
79
+ .e-1b9140f9 > .holder > .panel > .header > .close
80
+ {
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ width: 28px;
85
+ height: 28px;
86
+ border-radius: var(--ot-radius-s);
87
+ border: none;
88
+ background: transparent;
89
+ color: var(--ot-text-2);
90
+ cursor: pointer;
91
+ transition: background 0.15s ease, color 0.15s ease;
92
+ }
93
+
94
+ .e-1b9140f9 > .holder > .header > .close:hover,
95
+ .e-1b9140f9 > .holder > .panel > .header > .close:hover
96
+ {
97
+ background: var(--ot-bg-4);
98
+ color: var(--ot-text-1);
99
+ }
100
+
101
+ .e-1b9140f9 > .holder > .header > .close > .icon,
102
+ .e-1b9140f9 > .holder > .panel > .header > .close > .icon
103
+ {
104
+ font-size: 18px;
105
+ color: inherit;
106
+ }
107
+
108
+ /* Messages */
109
+
110
+ .e-1b9140f9 > .holder > .messages,
111
+ .e-1b9140f9 > .holder > .panel > .messages
112
+ {
113
+ display: flex;
114
+ flex-direction: column;
115
+ flex: 1;
116
+ gap: var(--ot-spacing-m);
117
+ padding: var(--ot-spacing-m);
118
+ overflow-y: auto;
119
+ overscroll-behavior: contain;
120
+ }
121
+
122
+ /* Welcome */
123
+
124
+ .e-1b9140f9 > .holder > .messages > .welcome,
125
+ .e-1b9140f9 > .holder > .panel > .messages > .welcome
126
+ {
127
+ display: flex;
128
+ flex-direction: column;
129
+ align-items: center;
130
+ justify-content: center;
131
+ gap: var(--ot-spacing-s);
132
+ flex: 1;
133
+ padding: var(--ot-spacing-l);
134
+ text-align: center;
135
+ }
136
+
137
+ .e-1b9140f9 > .holder > .messages > .welcome > .logo,
138
+ .e-1b9140f9 > .holder > .panel > .messages > .welcome > .logo
139
+ {
140
+ width: 48px;
141
+ height: 48px;
142
+ margin-bottom: var(--ot-spacing-s);
143
+ opacity: 0.8;
144
+ }
145
+
146
+ .e-1b9140f9 > .holder > .messages > .welcome > .title,
147
+ .e-1b9140f9 > .holder > .panel > .messages > .welcome > .title
148
+ {
149
+ font-size: 18px;
150
+ font-weight: 600;
151
+ color: var(--ot-text-1);
152
+ line-height: 1.3;
153
+ }
154
+
155
+ .e-1b9140f9 > .holder > .messages > .welcome > .subtitle,
156
+ .e-1b9140f9 > .holder > .panel > .messages > .welcome > .subtitle
157
+ {
158
+ font-size: var(--ot-size-m);
159
+ color: var(--ot-text-2);
160
+ }
161
+
162
+ /* Message */
163
+
164
+ .e-1b9140f9 > .holder > .messages > .message,
165
+ .e-1b9140f9 > .holder > .panel > .messages > .message
166
+ {
167
+ display: flex;
168
+ max-width: 85%;
169
+ animation: e-1b9140f9-enter 0.2s ease;
170
+ }
171
+
172
+ .e-1b9140f9 > .holder > .messages > .message.user,
173
+ .e-1b9140f9 > .holder > .panel > .messages > .message.user
174
+ {
175
+ align-self: flex-end;
176
+ }
177
+
178
+ .e-1b9140f9 > .holder > .messages > .message.assistant,
179
+ .e-1b9140f9 > .holder > .messages > .message.error,
180
+ .e-1b9140f9 > .holder > .panel > .messages > .message.assistant,
181
+ .e-1b9140f9 > .holder > .panel > .messages > .message.error
182
+ {
183
+ align-self: flex-start;
184
+ }
185
+
186
+ /* Bubble */
187
+
188
+ .e-1b9140f9 > .holder .message > .bubble
189
+ {
190
+ display: flex;
191
+ gap: var(--ot-spacing-s);
192
+ padding: var(--ot-spacing-s) var(--ot-spacing-m);
193
+ border-radius: var(--ot-radius-m);
194
+ font-size: var(--ot-size-m);
195
+ line-height: 1.6;
196
+ word-break: break-word;
197
+ }
198
+
199
+ .e-1b9140f9 > .holder .message > .bubble.user
200
+ {
201
+ background: var(--ot-brand);
202
+ color: white;
203
+ border-bottom-right-radius: var(--ot-radius-s);
204
+ }
205
+
206
+ .e-1b9140f9 > .holder .message > .bubble.assistant
207
+ {
208
+ flex-direction: row;
209
+ align-items: flex-start;
210
+ background: transparent;
211
+ color: var(--ot-text-1);
212
+ padding: var(--ot-spacing-s) 0;
213
+ }
214
+
215
+ .e-1b9140f9 > .holder .message > .bubble.error
216
+ {
217
+ background: var(--ot-red-opacity);
218
+ color: var(--ot-red);
219
+ flex-direction: row;
220
+ align-items: center;
221
+ gap: var(--ot-spacing-s);
222
+ }
223
+
224
+ .e-1b9140f9 > .holder .message > .bubble.error > .icon
225
+ {
226
+ font-size: 16px;
227
+ flex-shrink: 0;
228
+ }
229
+
230
+ .e-1b9140f9 > .holder .message > .bubble > .content
231
+ {
232
+ white-space: pre-wrap;
233
+ }
234
+
235
+ /* Avatar */
236
+
237
+ .e-1b9140f9 > .holder .message > .bubble > .avatar
238
+ {
239
+ width: 28px;
240
+ height: 28px;
241
+ flex-shrink: 0;
242
+ border-radius: 50%;
243
+ background: var(--ot-bg-3);
244
+ display: flex;
245
+ align-items: center;
246
+ justify-content: center;
247
+ margin-top: 1px;
248
+ }
249
+
250
+ .e-1b9140f9 > .holder .message > .bubble > .avatar > img
251
+ {
252
+ width: 16px;
253
+ height: 16px;
254
+ }
255
+
256
+ /* Body */
257
+
258
+ .e-1b9140f9 > .holder .message > .bubble > .body
259
+ {
260
+ display: flex;
261
+ flex-direction: column;
262
+ gap: var(--ot-spacing-s);
263
+ min-width: 0;
264
+ padding-top: 4px;
265
+ }
266
+
267
+ .e-1b9140f9 > .holder .message > .bubble > .body > .content
268
+ {
269
+ white-space: pre-wrap;
270
+ }
271
+
272
+ /* Meta — steps toggle */
273
+
274
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta
275
+ {
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: var(--ot-spacing-s);
279
+ margin-top: 2px;
280
+ }
281
+
282
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta > .toggle
283
+ {
284
+ display: inline-flex;
285
+ align-items: center;
286
+ gap: var(--ot-spacing-x);
287
+ font-size: var(--ot-size-s);
288
+ color: var(--ot-text-2);
289
+ cursor: pointer;
290
+ user-select: none;
291
+ padding: 2px var(--ot-spacing-s);
292
+ border-radius: var(--ot-radius-s);
293
+ background: var(--ot-bg-3);
294
+ width: fit-content;
295
+ transition: background 0.15s ease;
296
+ }
297
+
298
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta > .toggle:hover
299
+ {
300
+ background: var(--ot-bg-4);
301
+ color: var(--ot-text-1);
302
+ }
303
+
304
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta > .toggle > .icon
305
+ {
306
+ font-size: 14px;
307
+ }
308
+
309
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta > .toggle > .tokens
310
+ {
311
+ opacity: 0.4;
312
+ margin-left: var(--ot-spacing-x);
313
+ }
314
+
315
+ /* Timeline */
316
+
317
+ .e-1b9140f9 > .holder .message > .bubble > .body > .meta > .timeline
318
+ {
319
+ display: flex;
320
+ flex-direction: column;
321
+ gap: 0;
322
+ margin-left: 6px;
323
+ padding-left: var(--ot-spacing-s);
324
+ border-left: 1px solid var(--ot-bg-4-border);
325
+ }
326
+
327
+ /* Step — shared */
328
+
329
+ .e-1b9140f9 > .holder .step
330
+ {
331
+ display: flex;
332
+ align-items: flex-start;
333
+ gap: var(--ot-spacing-s);
334
+ padding: var(--ot-spacing-x) 0;
335
+ }
336
+
337
+ .e-1b9140f9 > .holder .step > .dot
338
+ {
339
+ font-size: 13px;
340
+ flex-shrink: 0;
341
+ margin-top: 1px;
342
+ color: var(--ot-green);
343
+ }
344
+
345
+ .e-1b9140f9 > .holder .step.running > .dot
346
+ {
347
+ color: var(--ot-brand);
348
+ animation: e-1b9140f9-pulse 1.2s ease-in-out infinite;
349
+ }
350
+
351
+ .e-1b9140f9 > .holder .step > .detail
352
+ {
353
+ display: flex;
354
+ flex-direction: column;
355
+ gap: 1px;
356
+ }
357
+
358
+ .e-1b9140f9 > .holder .step > .detail > .agent
359
+ {
360
+ font-size: var(--ot-size-s);
361
+ font-weight: 600;
362
+ color: var(--ot-text-1);
363
+ }
364
+
365
+ .e-1b9140f9 > .holder .step > .detail > .conclusion,
366
+ .e-1b9140f9 > .holder .step > .detail > .goal
367
+ {
368
+ font-size: 10px;
369
+ color: var(--ot-text-2);
370
+ line-height: 1.4;
371
+ }
372
+
373
+ /* Thinking dots */
374
+
375
+ .e-1b9140f9 > .holder .thinking
376
+ {
377
+ display: flex;
378
+ align-items: center;
379
+ padding: var(--ot-spacing-x) 0;
380
+ }
381
+
382
+ .e-1b9140f9 > .holder .thinking > .dots
383
+ {
384
+ display: flex;
385
+ align-items: center;
386
+ gap: 4px;
387
+ }
388
+
389
+ .e-1b9140f9 > .holder .thinking > .dots > span
390
+ {
391
+ width: 6px;
392
+ height: 6px;
393
+ border-radius: 50%;
394
+ background: var(--ot-brand);
395
+ animation: e-1b9140f9-bounce 1.4s ease-in-out infinite;
396
+ }
397
+
398
+ .e-1b9140f9 > .holder .thinking > .dots > span:nth-child(2)
399
+ {
400
+ animation-delay: 0.2s;
401
+ }
402
+
403
+ .e-1b9140f9 > .holder .thinking > .dots > span:nth-child(3)
404
+ {
405
+ animation-delay: 0.4s;
406
+ }
407
+
408
+ /* Loading — progress */
409
+
410
+ .e-1b9140f9 > .holder .bubble.loading > .body > .progress
411
+ {
412
+ display: flex;
413
+ flex-direction: column;
414
+ gap: 0;
415
+ }
416
+
417
+ /* Compose */
418
+
419
+ .e-1b9140f9 > .holder > .compose,
420
+ .e-1b9140f9 > .holder > .panel > .compose
421
+ {
422
+ display: flex;
423
+ align-items: center;
424
+ gap: var(--ot-spacing-s);
425
+ padding: var(--ot-spacing-s) var(--ot-spacing-m);
426
+ border-top: 1px solid var(--ot-bg-3-border);
427
+ flex-shrink: 0;
428
+ }
429
+
430
+ .e-1b9140f9 > .holder > .compose > .field,
431
+ .e-1b9140f9 > .holder > .panel > .compose > .field
432
+ {
433
+ flex: 1;
434
+ height: var(--ot-height-m);
435
+ background: transparent;
436
+ border: none;
437
+ outline: none;
438
+ font-size: var(--ot-size-m);
439
+ font-family: var(--ot-font-primary);
440
+ color: var(--ot-text-1);
441
+ }
442
+
443
+ .e-1b9140f9 > .holder > .compose > .field::placeholder,
444
+ .e-1b9140f9 > .holder > .panel > .compose > .field::placeholder
445
+ {
446
+ color: var(--ot-text-2);
447
+ opacity: 0.5;
448
+ }
449
+
450
+ .e-1b9140f9 > .holder > .compose > .submit,
451
+ .e-1b9140f9 > .holder > .panel > .compose > .submit
452
+ {
453
+ display: flex;
454
+ align-items: center;
455
+ justify-content: center;
456
+ width: var(--ot-height-s);
457
+ height: var(--ot-height-s);
458
+ border-radius: 50%;
459
+ border: none;
460
+ background: var(--ot-brand);
461
+ color: white;
462
+ cursor: pointer;
463
+ flex-shrink: 0;
464
+ transition: background 0.15s ease, opacity 0.15s ease, transform 0.15s ease;
465
+ }
466
+
467
+ .e-1b9140f9 > .holder > .compose > .submit:hover,
468
+ .e-1b9140f9 > .holder > .panel > .compose > .submit:hover
469
+ {
470
+ background: var(--ot-brand-hover);
471
+ transform: scale(1.05);
472
+ }
473
+
474
+ .e-1b9140f9 > .holder > .compose > .submit:disabled,
475
+ .e-1b9140f9 > .holder > .panel > .compose > .submit:disabled
476
+ {
477
+ opacity: 0.25;
478
+ cursor: not-allowed;
479
+ transform: none;
480
+ }
481
+
482
+ .e-1b9140f9 > .holder > .compose > .submit > .icon,
483
+ .e-1b9140f9 > .holder > .panel > .compose > .submit > .icon
484
+ {
485
+ font-size: 18px;
486
+ }
487
+
488
+ /* Background variants */
489
+
490
+ .e-1b9140f9 > .holder.bg-1 { background: var(--ot-bg-1); border-color: var(--ot-bg-1-border); }
491
+ .e-1b9140f9 > .holder.bg-1 > .header { border-bottom-color: var(--ot-bg-1-border); }
492
+ .e-1b9140f9 > .holder.bg-1 > .compose { border-top-color: var(--ot-bg-1-border); }
493
+ .e-1b9140f9 > .holder.bg-2 { background: var(--ot-bg-2); border-color: var(--ot-bg-2-border); }
494
+ .e-1b9140f9 > .holder.bg-2 > .header { border-bottom-color: var(--ot-bg-2-border); }
495
+ .e-1b9140f9 > .holder.bg-2 > .compose { border-top-color: var(--ot-bg-2-border); }
496
+ .e-1b9140f9 > .holder.bg-3 { background: var(--ot-bg-3); border-color: var(--ot-bg-3-border); }
497
+ .e-1b9140f9 > .holder.bg-3 > .header { border-bottom-color: var(--ot-bg-3-border); }
498
+ .e-1b9140f9 > .holder.bg-3 > .compose { border-top-color: var(--ot-bg-3-border); }
499
+ .e-1b9140f9 > .holder.bg-4 { background: var(--ot-bg-4); border-color: var(--ot-bg-4-border); }
500
+ .e-1b9140f9 > .holder.bg-4 > .header { border-bottom-color: var(--ot-bg-4-border); }
501
+ .e-1b9140f9 > .holder.bg-4 > .compose { border-top-color: var(--ot-bg-4-border); }
502
+
503
+ /* Compact variant */
504
+
505
+ .e-1b9140f9 > .holder.compact
506
+ {
507
+ max-width: 480px;
508
+ max-height: 520px;
509
+ min-height: 300px;
510
+ }
511
+
512
+ .e-1b9140f9 > .holder.compact .message
513
+ {
514
+ max-width: 92%;
515
+ }
516
+
517
+ .e-1b9140f9 > .holder.compact .message > .bubble
518
+ {
519
+ font-size: var(--ot-size-s);
520
+ }
521
+
522
+ .e-1b9140f9 > .holder.compact .message > .bubble > .avatar
523
+ {
524
+ width: 24px;
525
+ height: 24px;
526
+ }
527
+
528
+ .e-1b9140f9 > .holder.compact .message > .bubble > .avatar > img
529
+ {
530
+ width: 14px;
531
+ height: 14px;
532
+ }
533
+
534
+ .e-1b9140f9 > .holder.compact .welcome > .logo
535
+ {
536
+ width: 36px;
537
+ height: 36px;
538
+ }
539
+
540
+ .e-1b9140f9 > .holder.compact .welcome > .title
541
+ {
542
+ font-size: 15px;
543
+ }
544
+
545
+ .e-1b9140f9 > .holder.compact .welcome > .subtitle
546
+ {
547
+ font-size: var(--ot-size-s);
548
+ }
549
+
550
+ /* Floated variant */
551
+
552
+ .e-1b9140f9 > .holder.floated
553
+ {
554
+ position: fixed;
555
+ bottom: var(--ot-spacing-m);
556
+ right: var(--ot-spacing-m);
557
+ z-index: 9999;
558
+ width: auto;
559
+ height: auto;
560
+ min-height: 0;
561
+ background: transparent;
562
+ border: none;
563
+ border-radius: 0;
564
+ flex-direction: column;
565
+ align-items: flex-end;
566
+ gap: var(--ot-spacing-s);
567
+ }
568
+
569
+ .e-1b9140f9 > .holder.floated > .panel
570
+ {
571
+ display: flex;
572
+ flex-direction: column;
573
+ width: 380px;
574
+ max-height: 520px;
575
+ background: var(--ot-bg-2);
576
+ border: 1px solid var(--ot-bg-2-border);
577
+ border-radius: var(--ot-radius-l);
578
+ overflow: hidden;
579
+ animation: e-1b9140f9-slide 0.25s ease;
580
+ }
581
+
582
+ .e-1b9140f9 > .holder.floated > .panel > .messages
583
+ {
584
+ flex: 1;
585
+ min-height: 300px;
586
+ }
587
+
588
+ .e-1b9140f9 > .holder.floated .message
589
+ {
590
+ max-width: 92%;
591
+ }
592
+
593
+ .e-1b9140f9 > .holder.floated .message > .bubble
594
+ {
595
+ font-size: var(--ot-size-s);
596
+ }
597
+
598
+ .e-1b9140f9 > .holder.floated .message > .bubble > .avatar
599
+ {
600
+ width: 24px;
601
+ height: 24px;
602
+ }
603
+
604
+ .e-1b9140f9 > .holder.floated .message > .bubble > .avatar > img
605
+ {
606
+ width: 14px;
607
+ height: 14px;
608
+ }
609
+
610
+ .e-1b9140f9 > .holder.floated .welcome > .logo
611
+ {
612
+ width: 36px;
613
+ height: 36px;
614
+ }
615
+
616
+ .e-1b9140f9 > .holder.floated .welcome > .title
617
+ {
618
+ font-size: 15px;
619
+ }
620
+
621
+ .e-1b9140f9 > .holder.floated .welcome > .subtitle
622
+ {
623
+ font-size: var(--ot-size-s);
624
+ }
625
+
626
+ /* FAB */
627
+
628
+ .e-1b9140f9 > .holder.floated > .fab
629
+ {
630
+ width: 56px;
631
+ height: 56px;
632
+ border-radius: 50%;
633
+ border: 1px solid rgba(255, 255, 255, 0.08);
634
+ background: var(--ot-bg-2);
635
+ cursor: pointer;
636
+ display: flex;
637
+ align-items: center;
638
+ justify-content: center;
639
+ transition: transform 0.2s ease, border-color 0.2s ease;
640
+ flex-shrink: 0;
641
+ position: relative;
642
+ }
643
+
644
+ .e-1b9140f9 > .holder.floated > .fab::before
645
+ {
646
+ content: '';
647
+ position: absolute;
648
+ inset: -3px;
649
+ border-radius: 50%;
650
+ background: radial-gradient(circle, var(--ot-brand-opacity) 0%, transparent 70%);
651
+ opacity: 0.6;
652
+ transition: opacity 0.3s ease;
653
+ z-index: -1;
654
+ }
655
+
656
+ .e-1b9140f9 > .holder.floated > .fab:hover
657
+ {
658
+ transform: scale(1.08);
659
+ border-color: rgba(255, 255, 255, 0.12);
660
+ }
661
+
662
+ .e-1b9140f9 > .holder.floated > .fab:hover::before
663
+ {
664
+ opacity: 1;
665
+ }
666
+
667
+ .e-1b9140f9 > .holder.floated > .fab > .logo
668
+ {
669
+ width: 28px;
670
+ height: 28px;
671
+ filter: drop-shadow(0 0 8px rgba(226, 112, 85, 0.3));
672
+ }
673
+
674
+ .e-1b9140f9 > .holder.floated.open > .fab
675
+ {
676
+ display: none;
677
+ }
678
+
679
+ /* Floated bg variants */
680
+
681
+ .e-1b9140f9 > .holder.floated.bg-1 > .panel { background: var(--ot-bg-1); border-color: var(--ot-bg-1-border); }
682
+ .e-1b9140f9 > .holder.floated.bg-2 > .panel { background: var(--ot-bg-2); border-color: var(--ot-bg-2-border); }
683
+ .e-1b9140f9 > .holder.floated.bg-3 > .panel { background: var(--ot-bg-3); border-color: var(--ot-bg-3-border); }
684
+ .e-1b9140f9 > .holder.floated.bg-4 > .panel { background: var(--ot-bg-4); border-color: var(--ot-bg-4-border); }
685
+
686
+ /* Animations */
687
+
688
+ @keyframes e-1b9140f9-enter
689
+ {
690
+ from { opacity: 0; transform: translateY(6px); }
691
+ to { opacity: 1; transform: translateY(0); }
692
+ }
693
+
694
+ @keyframes e-1b9140f9-slide
695
+ {
696
+ from { opacity: 0; transform: translateY(12px) scale(0.97); }
697
+ to { opacity: 1; transform: translateY(0) scale(1); }
698
+ }
699
+
700
+ @keyframes e-1b9140f9-bounce
701
+ {
702
+ 0%, 80%, 100% { transform: scale(0.4); opacity: 0.3; }
703
+ 40% { transform: scale(1); opacity: 1; }
704
+ }
705
+
706
+ @keyframes e-1b9140f9-pulse
707
+ {
708
+ 0%, 100% { opacity: 1; }
709
+ 50% { opacity: 0.3; }
710
+ }