@fusioni/client-sdk 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +389 -0
  3. package/dist/assets/logo-base64.d.ts +2 -0
  4. package/dist/assets/logo-base64.d.ts.map +1 -0
  5. package/dist/browser.d.ts +28 -0
  6. package/dist/browser.d.ts.map +1 -0
  7. package/dist/components/AudioRecorder.d.ts +9 -0
  8. package/dist/components/AudioRecorder.d.ts.map +1 -0
  9. package/dist/components/ChatInput.d.ts +6 -0
  10. package/dist/components/ChatInput.d.ts.map +1 -0
  11. package/dist/components/ChatLoader.d.ts +3 -0
  12. package/dist/components/ChatLoader.d.ts.map +1 -0
  13. package/dist/components/ChatPanel.d.ts +13 -0
  14. package/dist/components/ChatPanel.d.ts.map +1 -0
  15. package/dist/components/ChatWidget.d.ts +5 -0
  16. package/dist/components/ChatWidget.d.ts.map +1 -0
  17. package/dist/components/ConfirmationDialog.d.ts +14 -0
  18. package/dist/components/ConfirmationDialog.d.ts.map +1 -0
  19. package/dist/components/ConversationList.d.ts +4 -0
  20. package/dist/components/ConversationList.d.ts.map +1 -0
  21. package/dist/components/FileUpload.d.ts +11 -0
  22. package/dist/components/FileUpload.d.ts.map +1 -0
  23. package/dist/components/FloatingButton.d.ts +16 -0
  24. package/dist/components/FloatingButton.d.ts.map +1 -0
  25. package/dist/components/ImageGallery.d.ts +14 -0
  26. package/dist/components/ImageGallery.d.ts.map +1 -0
  27. package/dist/components/LanguageSwitcher.d.ts +10 -0
  28. package/dist/components/LanguageSwitcher.d.ts.map +1 -0
  29. package/dist/components/Map.d.ts +14 -0
  30. package/dist/components/Map.d.ts.map +1 -0
  31. package/dist/components/Map.example.d.ts +4 -0
  32. package/dist/components/Map.example.d.ts.map +1 -0
  33. package/dist/components/Message.d.ts +4 -0
  34. package/dist/components/Message.d.ts.map +1 -0
  35. package/dist/components/MessageList.d.ts +25 -0
  36. package/dist/components/MessageList.d.ts.map +1 -0
  37. package/dist/components/PaginatedGalleryStrip.d.ts +20 -0
  38. package/dist/components/PaginatedGalleryStrip.d.ts.map +1 -0
  39. package/dist/components/Spotlight.d.ts +7 -0
  40. package/dist/components/Spotlight.d.ts.map +1 -0
  41. package/dist/components/UrlPreview.d.ts +20 -0
  42. package/dist/components/UrlPreview.d.ts.map +1 -0
  43. package/dist/fusioni-sdk.umd.js +41642 -0
  44. package/dist/fusioni-sdk.umd.js.map +1 -0
  45. package/dist/hooks/useChatState.d.ts +26 -0
  46. package/dist/hooks/useChatState.d.ts.map +1 -0
  47. package/dist/hooks/useSSE.d.ts +2 -0
  48. package/dist/hooks/useSSE.d.ts.map +1 -0
  49. package/dist/hooks/useTheme.d.ts +8 -0
  50. package/dist/hooks/useTheme.d.ts.map +1 -0
  51. package/dist/hooks/useTranslation.d.ts +12 -0
  52. package/dist/hooks/useTranslation.d.ts.map +1 -0
  53. package/dist/i18n/el.d.ts +90 -0
  54. package/dist/i18n/el.d.ts.map +1 -0
  55. package/dist/i18n/en.d.ts +90 -0
  56. package/dist/i18n/en.d.ts.map +1 -0
  57. package/dist/i18n/index.d.ts +190 -0
  58. package/dist/i18n/index.d.ts.map +1 -0
  59. package/dist/index.css +1 -0
  60. package/dist/index.d.ts +495 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.esm.css +1 -0
  63. package/dist/index.esm.js +6458 -0
  64. package/dist/index.esm.js.map +1 -0
  65. package/dist/index.js +6492 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/services/ApiClient.d.ts +17 -0
  68. package/dist/services/ApiClient.d.ts.map +1 -0
  69. package/dist/services/ConversationService.d.ts +45 -0
  70. package/dist/services/ConversationService.d.ts.map +1 -0
  71. package/dist/services/MessageService.d.ts +18 -0
  72. package/dist/services/MessageService.d.ts.map +1 -0
  73. package/dist/services/PipelineService.d.ts +16 -0
  74. package/dist/services/PipelineService.d.ts.map +1 -0
  75. package/dist/services/SDKClientService.d.ts +31 -0
  76. package/dist/services/SDKClientService.d.ts.map +1 -0
  77. package/dist/test.d.ts +4 -0
  78. package/dist/test.d.ts.map +1 -0
  79. package/dist/types/index.d.ts +163 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/package.json +77 -0
@@ -0,0 +1,495 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+
4
+ interface Pagination {
5
+ page: number;
6
+ size: number;
7
+ total_items?: number;
8
+ total_pages?: number;
9
+ first?: boolean;
10
+ last?: boolean;
11
+ }
12
+ interface FusioniPayload<T> {
13
+ body?: T[];
14
+ pagination?: Pagination;
15
+ }
16
+ interface Conversation {
17
+ id?: string | null;
18
+ agency_id: string;
19
+ title: string;
20
+ created?: Date | null;
21
+ updated?: Date | null;
22
+ messages?: FusioniMemoryMessage[] | null;
23
+ }
24
+ interface FusioniMemoryMessage {
25
+ id?: string;
26
+ agency_id: string;
27
+ conversation_id?: string;
28
+ mem_type: string;
29
+ has_error?: boolean;
30
+ role: 'user' | 'assistant' | 'system';
31
+ keywords: string[] | null;
32
+ thoughts: string | null;
33
+ created: Date;
34
+ content: string;
35
+ loading: boolean;
36
+ shouldAnimate: boolean;
37
+ extra_data?: {
38
+ image?: string;
39
+ image_ref?: string;
40
+ image_base64?: boolean;
41
+ audio_ref?: string;
42
+ audio_base64?: boolean;
43
+ duration?: number;
44
+ coordinates?: {
45
+ lat: number;
46
+ lon: number;
47
+ zoom?: number;
48
+ };
49
+ map?: {
50
+ lat: string | number;
51
+ lng: string | number;
52
+ zoom?: string | number;
53
+ };
54
+ /** Assistant document page screenshots (opens shared image gallery) */
55
+ document_images?: string[];
56
+ [key: string]: any;
57
+ };
58
+ }
59
+ interface PipelineStep {
60
+ name: string | null;
61
+ agent_id: string | null;
62
+ service_id: string | null;
63
+ step_type: string | null;
64
+ }
65
+ interface Pipeline {
66
+ id?: string;
67
+ name: string;
68
+ description: string;
69
+ code?: string;
70
+ agency_id?: string | null;
71
+ steps: PipelineStep[] | null;
72
+ capability_ids: string[];
73
+ active: boolean;
74
+ }
75
+ interface PipelineRequest {
76
+ conversation_id: string;
77
+ agency_id: string;
78
+ inp?: string | null;
79
+ image?: string | ArrayBuffer | null;
80
+ audio?: string | ArrayBuffer | null;
81
+ message_id?: string | null;
82
+ agent_id?: string | null;
83
+ context?: any | null;
84
+ }
85
+ interface PipelineResponse {
86
+ answer: string[];
87
+ context_data: any;
88
+ thoughts: string[];
89
+ messages: FusioniMemoryMessage[];
90
+ }
91
+ interface FusioniSDKConfig {
92
+ apiBaseUrl: string;
93
+ agencyId: string;
94
+ accessToken?: string;
95
+ theme?: 'light' | 'dark' | 'auto';
96
+ position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
97
+ primaryColor?: string;
98
+ showConversationList?: boolean;
99
+ enableAudioRecording?: boolean;
100
+ enableFileUpload?: boolean;
101
+ maxFileSize?: number;
102
+ allowedFileTypes?: string[];
103
+ language?: 'en' | 'el';
104
+ buttonVariant?: 'minimal' | 'glass' | 'solid';
105
+ }
106
+ interface ChatWidgetProps {
107
+ config: FusioniSDKConfig;
108
+ onMessageSent?: (message: FusioniMemoryMessage) => void;
109
+ onMessageReceived?: (message: FusioniMemoryMessage) => void;
110
+ onConversationCreated?: (conversation: Conversation) => void;
111
+ onConversationDeleted?: (conversationId: string) => void;
112
+ onError?: (error: Error) => void;
113
+ }
114
+ interface ConfirmationResult {
115
+ confirmed: 'Confirmed' | 'NotConfirmed';
116
+ key?: string;
117
+ }
118
+ interface MessageProps {
119
+ message: FusioniMemoryMessage;
120
+ showThoughts?: boolean;
121
+ fontSize?: string;
122
+ onDelete?: (messageId: string) => void;
123
+ onConfirmation?: (result: ConfirmationResult) => void;
124
+ enableButtons?: boolean;
125
+ streamMessages?: string[];
126
+ apiBaseUrl?: string;
127
+ apiKey?: string;
128
+ agencyId: string;
129
+ currentLanguage?: 'en' | 'el';
130
+ /** Opens full-screen gallery (fusioni-web parity with `ImageGalleryComponent`) */
131
+ onOpenGallery?: (payload: {
132
+ images: string[];
133
+ index: number;
134
+ }) => void;
135
+ }
136
+ interface ConversationListProps {
137
+ conversations: Conversation[];
138
+ selectedConversationId?: string;
139
+ onSelectConversation: (conversation: Conversation) => void;
140
+ onDeleteConversation: (conversationId: string) => void;
141
+ onCreateConversation: () => void;
142
+ searchQuery?: string;
143
+ onSearchChange?: (query: string) => void;
144
+ isOpen?: boolean;
145
+ currentLanguage?: 'en' | 'el';
146
+ }
147
+ interface ChatInputProps {
148
+ onSendMessage: (content: string, image?: string, audio?: string) => void;
149
+ onFileUpload: (file: File) => Promise<string>;
150
+ disabled?: boolean;
151
+ placeholder?: string;
152
+ enableAudioRecording?: boolean;
153
+ enableFileUpload?: boolean;
154
+ maxFileSize?: number;
155
+ allowedFileTypes?: string[];
156
+ currentLanguage?: 'en' | 'el';
157
+ }
158
+ interface ChatEvent {
159
+ type: 'message_sent' | 'message_received' | 'conversation_created' | 'conversation_deleted' | 'error';
160
+ data: any;
161
+ timestamp: Date;
162
+ }
163
+ type MessageRole = 'user' | 'assistant' | 'system';
164
+ type Theme = 'light' | 'dark' | 'auto';
165
+ type Position = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
166
+
167
+ declare const ChatWidget: React__default.FC<ChatWidgetProps>;
168
+
169
+ interface FloatingButtonProps {
170
+ isOpen: boolean;
171
+ onClick: () => void;
172
+ position?: Position;
173
+ primaryColor?: string;
174
+ buttonRef?: React__default.RefObject<HTMLButtonElement>;
175
+ showNotification?: boolean;
176
+ notificationCount?: number;
177
+ variant?: 'minimal' | 'glass' | 'solid';
178
+ shouldDisplay?: boolean;
179
+ }
180
+ declare const FloatingButton: React__default.FC<FloatingButtonProps>;
181
+
182
+ interface ChatPanelProps {
183
+ isOpen: boolean;
184
+ onClose: () => void;
185
+ position?: Position;
186
+ isFullscreen?: boolean;
187
+ floatingButtonRef?: React__default.RefObject<HTMLButtonElement>;
188
+ children: React__default.ReactNode;
189
+ }
190
+ declare const ChatPanel: React__default.FC<ChatPanelProps>;
191
+
192
+ declare const ConversationList: React__default.FC<ConversationListProps>;
193
+
194
+ interface MessageListProps {
195
+ messages: FusioniMemoryMessage[];
196
+ streamMessages: string[];
197
+ showThoughts?: boolean;
198
+ onDeleteMessage?: (messageId: string) => void;
199
+ onEditMessage?: (payload: {
200
+ messageId: string;
201
+ content: string;
202
+ }) => void;
203
+ onConfirmation?: (result: {
204
+ confirmed: 'Confirmed' | 'NotConfirmed';
205
+ key?: string;
206
+ }) => void;
207
+ enableButtons?: boolean;
208
+ apiBaseUrl?: string;
209
+ apiKey?: string;
210
+ agencyId: string;
211
+ currentLanguage?: 'en' | 'el';
212
+ theme?: 'light' | 'dark';
213
+ }
214
+ declare const MessageList: React__default.FC<MessageListProps>;
215
+
216
+ declare const Message: React__default.FC<MessageProps>;
217
+
218
+ declare const ChatInput: React__default.FC<ChatInputProps>;
219
+
220
+ interface FileUploadProps {
221
+ onFileSelect: (file: File) => void;
222
+ accept?: string;
223
+ maxSize?: number;
224
+ disabled?: boolean;
225
+ className?: string;
226
+ }
227
+ declare const FileUpload: React__default.FC<FileUploadProps>;
228
+
229
+ interface AudioRecorderProps {
230
+ onRecordingComplete: (audioBlob: Blob, duration: number) => void;
231
+ disabled?: boolean;
232
+ className?: string;
233
+ }
234
+ declare const AudioRecorder: React__default.FC<AudioRecorderProps>;
235
+
236
+ declare const en: {
237
+ readonly chat: {
238
+ readonly title: "Fusioni AI";
239
+ readonly subtitle: "AI Assistant";
240
+ readonly welcome: {
241
+ readonly title: "Welcome to Fusioni";
242
+ readonly description: "Start a new conversation to begin chatting with AI";
243
+ readonly startButton: "Start New Conversation";
244
+ readonly creating: "Creating...";
245
+ };
246
+ readonly input: {
247
+ readonly placeholder: "Type your message...";
248
+ readonly send: "Send";
249
+ readonly upload: "Upload";
250
+ readonly record: "Record";
251
+ };
252
+ readonly conversations: {
253
+ readonly title: "Conversations";
254
+ readonly search: "Search conversations...";
255
+ readonly newConversation: "New Conversation";
256
+ readonly noConversations: "No conversations yet";
257
+ readonly delete: "Delete conversation";
258
+ readonly newIndicator: "New conversation - will be saved when you send a message";
259
+ readonly deleteConfirm: {
260
+ readonly title: "Delete Conversation";
261
+ readonly message: "Are you sure you want to delete this conversation? This action cannot be undone.";
262
+ readonly confirm: "Delete";
263
+ readonly cancel: "Cancel";
264
+ };
265
+ };
266
+ readonly attachedImages: "Images";
267
+ readonly messages: {
268
+ readonly loading: "Working on it...";
269
+ readonly error: "Oops! Something went wrong. Please try again later.";
270
+ readonly delete: "Delete message";
271
+ readonly deleteConfirm: {
272
+ readonly title: "Delete Message";
273
+ readonly message: "Are you sure you want to delete this message? This action cannot be undone.";
274
+ readonly confirm: "Delete";
275
+ readonly cancel: "Cancel";
276
+ };
277
+ };
278
+ readonly connection: {
279
+ readonly connected: "Real-time updates connected";
280
+ readonly disconnected: "Real-time updates disconnected";
281
+ };
282
+ readonly fullscreen: {
283
+ readonly enter: "Enter fullscreen";
284
+ readonly exit: "Exit fullscreen";
285
+ };
286
+ readonly theme: {
287
+ readonly light: "Switch to light theme";
288
+ readonly dark: "Switch to dark theme";
289
+ };
290
+ readonly errors: {
291
+ readonly failedToCreateConversation: "Failed to create conversation";
292
+ readonly failedToLoadConversation: "Failed to load conversation";
293
+ readonly failedToDeleteConversation: "Failed to delete conversation";
294
+ readonly failedToSendMessage: "Failed to send message";
295
+ readonly failedToDeleteMessage: "Failed to delete message";
296
+ readonly failedToUploadFile: "Failed to upload file";
297
+ readonly failedToInitialize: "Failed to initialize chat service";
298
+ readonly retry: "Retry";
299
+ };
300
+ };
301
+ readonly language: {
302
+ readonly english: "English";
303
+ readonly greek: "Ελληνικά";
304
+ readonly switchLanguage: "Switch Language";
305
+ };
306
+ readonly common: {
307
+ readonly close: "Close";
308
+ readonly open: "Open";
309
+ readonly cancel: "Cancel";
310
+ readonly confirm: "Confirm";
311
+ readonly save: "Save";
312
+ readonly delete: "Delete";
313
+ readonly edit: "Edit";
314
+ readonly search: "Search";
315
+ readonly clear: "Clear";
316
+ readonly loading: "Loading...";
317
+ readonly error: "Error";
318
+ readonly success: "Success";
319
+ readonly warning: "Warning";
320
+ readonly info: "Info";
321
+ readonly yes: "Yes";
322
+ readonly no: "No";
323
+ };
324
+ };
325
+
326
+ type Language = 'en' | 'el';
327
+ type TranslationKeys = typeof en;
328
+ declare const getTranslation: (language: Language, key: string) => string;
329
+ declare const getAvailableLanguages: () => Array<{
330
+ code: Language;
331
+ name: string;
332
+ }>;
333
+ declare const isValidLanguage: (language: string) => language is Language;
334
+
335
+ interface LanguageSwitcherProps {
336
+ currentLanguage: Language;
337
+ onLanguageChange: (language: Language) => void;
338
+ className?: string;
339
+ }
340
+ declare const LanguageSwitcher: React__default.FC<LanguageSwitcherProps>;
341
+
342
+ declare const ChatLoader: React__default.FC;
343
+
344
+ interface SpotlightProps {
345
+ text: string;
346
+ className?: string;
347
+ }
348
+ declare const Spotlight: React__default.FC<SpotlightProps>;
349
+
350
+ interface LinkPreviewData {
351
+ url: string;
352
+ title: string;
353
+ description: string;
354
+ image: string;
355
+ domain: string;
356
+ }
357
+ interface UrlPreviewProps {
358
+ url: string;
359
+ agencyId: string;
360
+ showCloseButton?: boolean;
361
+ compact?: boolean;
362
+ autoFetch?: boolean;
363
+ apiBaseUrl?: string;
364
+ apiKey?: string;
365
+ onClose?: () => void;
366
+ }
367
+ declare const UrlPreview: React__default.FC<UrlPreviewProps>;
368
+
369
+ interface MapProps {
370
+ lat: string | number;
371
+ lng: string | number;
372
+ zoom?: string | number;
373
+ staticMap?: boolean;
374
+ width?: number;
375
+ height?: number;
376
+ apiBaseUrl?: string;
377
+ apiKey?: string;
378
+ agencyId: string;
379
+ }
380
+ declare const Map: React__default.FC<MapProps>;
381
+
382
+ interface ImageGalleryProps {
383
+ images: string[];
384
+ initialIndex?: number;
385
+ onClose: () => void;
386
+ /** Used for overlay gradient when rendered outside `.fusioni-chat-widget` (e.g. portal). */
387
+ theme?: 'light' | 'dark';
388
+ }
389
+ /**
390
+ * Full-screen image lightbox: main image + prev/next, keyboard nav,
391
+ * and a two-row thumbnail strip with horizontal pages and dot indicators (fusioni-web parity).
392
+ */
393
+ declare const ImageGallery: React__default.FC<ImageGalleryProps>;
394
+
395
+ declare class ApiClient {
396
+ private client;
397
+ private baseUrl;
398
+ private accessToken?;
399
+ constructor(baseUrl: string, accessToken?: string);
400
+ setAccessToken(token: string): void;
401
+ get<T = any>(url: string, config?: any): Promise<T>;
402
+ post<T = any>(url: string, data?: any, config?: any): Promise<T>;
403
+ put<T = any>(url: string, data?: any, config?: any): Promise<T>;
404
+ delete<T = any>(url: string, config?: any): Promise<T>;
405
+ options<T = any>(url: string, config?: any): Promise<T>;
406
+ connectToSSE(agencyId: string, onMessage: (data: any) => void): EventSource;
407
+ healthCheck(): Promise<boolean>;
408
+ }
409
+ declare const getApiClient: (baseUrl?: string, accessToken?: string) => ApiClient;
410
+ declare const initializeApiClient: (baseUrl: string, accessToken?: string) => ApiClient;
411
+
412
+ interface IConversationService {
413
+ getConversation(conversationId: string): Promise<Conversation | undefined>;
414
+ getConversationsByAgency(agencyId: string, page: number, size: number): Promise<Conversation[]>;
415
+ getConversationsByIdsAndAgency(agencyId: string, ids: string[]): Promise<Conversation[]>;
416
+ deleteConversation(conversationId: string): Promise<void>;
417
+ createConversation(conversation: Omit<Conversation, 'id'>): Promise<string>;
418
+ }
419
+ declare const getConversationService: () => IConversationService;
420
+
421
+ declare class PipelineService {
422
+ private getApiClient;
423
+ /**
424
+ * Execute a pipeline request.
425
+ *
426
+ * The API typically returns `messages` with the full turn batch for the exchange,
427
+ * including the persisted **user** message that matches the request. Clients that
428
+ * optimistically append a local user bubble should remove that row from state when
429
+ * merging `response.messages` (ChatWidget tags it with `fusion_sdk_optimistic_user`
430
+ * in `extra_data` and strips it—same pattern as removing the loading message).
431
+ */
432
+ executePipeline(request: PipelineRequest): Promise<PipelineResponse>;
433
+ }
434
+ declare const getPipelineService: () => PipelineService;
435
+
436
+ declare class MessageService {
437
+ private getApiClient;
438
+ /**
439
+ * Delete Message
440
+ * @param messageId
441
+ * @param agencyId
442
+ */
443
+ deleteMessage(messageId: string, agencyId: string): Promise<void>;
444
+ /**
445
+ * Get Messages
446
+ * @param conversationId
447
+ * @param agencyId
448
+ */
449
+ getMessages(conversationId: string, agencyId: string): Promise<FusioniMemoryMessage[]>;
450
+ }
451
+ declare const getMessageService: () => MessageService;
452
+
453
+ declare const useChatState: (agencyId: string) => {
454
+ conversations: Conversation[];
455
+ currentConversation: Conversation | null;
456
+ messages: FusioniMemoryMessage[];
457
+ streamMessages: string[];
458
+ isLoading: boolean;
459
+ setCurrentConversation: React.Dispatch<React.SetStateAction<Conversation | null>>;
460
+ setStreamMessages: React.Dispatch<React.SetStateAction<string[]>>;
461
+ addMessage: (message: FusioniMemoryMessage) => void;
462
+ updateMessage: (messageId: string, updates: Partial<FusioniMemoryMessage>) => void;
463
+ removeMessage: (messageId: string) => void;
464
+ removeOptimisticUserMessages: () => void;
465
+ truncateMessagesAt: (messageId: string) => void;
466
+ addConversation: (conversation: Conversation) => void;
467
+ updateConversation: (conversationId: string | null, updatedConversation: Conversation) => void;
468
+ removeConversation: (conversationId: string) => void;
469
+ loadConversations: (page?: number, size?: number) => Promise<void>;
470
+ loadMessages: (conversationId: string) => Promise<void>;
471
+ clearStreamMessages: () => void;
472
+ clearMessages: () => void;
473
+ };
474
+
475
+ declare const useSSE: (agencyId: string, onMessage: (data: any) => void, isConnected?: boolean, accessToken?: string) => EventSource | null;
476
+
477
+ declare const useTheme: (initialTheme?: Theme) => {
478
+ theme: "light" | "dark";
479
+ toggleTheme: () => void;
480
+ isManualOverride: boolean;
481
+ };
482
+
483
+ declare const useTranslation: (defaultLanguage?: Language) => {
484
+ t: (key: string) => string;
485
+ currentLanguage: Language;
486
+ changeLanguage: (language: Language) => void;
487
+ availableLanguages: {
488
+ code: Language;
489
+ name: string;
490
+ }[];
491
+ isValidLanguage: (lang: string) => lang is Language;
492
+ };
493
+
494
+ export { ApiClient, AudioRecorder, ChatInput, ChatLoader, ChatPanel, ChatWidget, ConversationList, FileUpload, FloatingButton, ImageGallery, LanguageSwitcher, Map, Message, MessageList, MessageService, PipelineService, Spotlight, UrlPreview, ChatWidget as default, getApiClient, getAvailableLanguages, getConversationService, getMessageService, getPipelineService, getTranslation, initializeApiClient, isValidLanguage, useChatState, useSSE, useTheme, useTranslation };
495
+ export type { ChatEvent, ChatInputProps, ChatWidgetProps, ConfirmationResult, Conversation, ConversationListProps, FusioniMemoryMessage, FusioniPayload, FusioniSDKConfig, ImageGalleryProps, Language, LinkPreviewData, MapProps, MessageProps, MessageRole, Pagination, Pipeline, PipelineRequest, PipelineResponse, Position, SpotlightProps, Theme, TranslationKeys, UrlPreviewProps };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAChF,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGxD,YAAY,EAEV,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,cAAc,EAGd,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,SAAS,EACT,kBAAkB,EAGlB,WAAW,EACX,KAAK,EACL,QAAQ,EACT,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGhF,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1 @@
1
+ :root{--fusioni-primary:#2563eb;--fusioni-primary-light:#3b82f6;--fusioni-primary-dark:#1d4ed8;--fusioni-secondary:#64748b;--fusioni-success:#059669;--fusioni-warning:#d97706;--fusioni-error:#dc2626;--fusioni-info:#0284c7;--fusioni-bg-primary:#fff;--fusioni-bg-secondary:#e7e7e7;--fusioni-bg-tertiary:#f1f5f9;--fusioni-bg-accent:#f0f9ff;--fusioni-bg-dark:#0f172a;--fusioni-bg-darker:#020617;--fusioni-text-primary:#0f172a;--fusioni-text-secondary:#475569;--fusioni-text-muted:#94a3b8;--fusioni-text-light:#fff;--fusioni-border:#e2e8f0;--fusioni-border-light:#f1f5f9;--fusioni-border-dark:#334155;--fusioni-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--fusioni-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--fusioni-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--fusioni-shadow-xl:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--fusioni-shadow-2xl:0 25px 50px -12px rgba(0,0,0,.25);--fusioni-radius:0.375rem;--fusioni-radius-md:0.5rem;--fusioni-radius-lg:0.75rem;--fusioni-radius-xl:1rem;--fusioni-radius-2xl:1.5rem;--fusioni-transition:all 0.2s cubic-bezier(0.4,0,0.2,1);--fusioni-transition-fast:all 0.15s cubic-bezier(0.4,0,0.2,1)}.fusioni-chat-widget{--fusioni-primary:var(--primary-color,#2563eb);--fusioni-primary-light:var(--primary-color,#3b82f6);--fusioni-primary-dark:var(--primary-color,#1d4ed8)}.fusioni-chat-widget.dark{--fusioni-primary:var(--primary-color,#3b82f6);--fusioni-primary-light:var(--primary-color,#60a5fa);--fusioni-primary-dark:var(--primary-color,#2563eb);--fusioni-secondary:#64748b;--fusioni-success:#10b981;--fusioni-warning:#f59e0b;--fusioni-error:#ef4444;--fusioni-info:#06b6d4;--fusioni-bg-primary:#0f172a;--fusioni-bg-secondary:#1e293b;--fusioni-bg-tertiary:#334155;--fusioni-bg-accent:#1e293b;--fusioni-bg-dark:#020617;--fusioni-bg-darker:#000;--fusioni-text-primary:#f8fafc;--fusioni-text-secondary:#cbd5e1;--fusioni-text-muted:#64748b;--fusioni-text-light:#fff;--fusioni-border:#334155;--fusioni-border-light:#475569;--fusioni-border-dark:#1e293b}.fusioni-chat-widget{background-color:var(--fusioni-bg-primary);color:var(--fusioni-text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5}.fusioni-floating-button{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);border:none;border:2px solid hsla(0,0%,100%,.1);border-radius:50%;box-shadow:var(--fusioni-shadow-2xl);cursor:pointer;display:flex;height:64px;justify-content:center;overflow:visible;position:fixed;width:64px;z-index:1000}.fusioni-floating-button:hover{background:linear-gradient(135deg,var(--fusioni-primary-dark) 0,var(--fusioni-primary) 100%);box-shadow:0 25px 50px -12px rgba(37,99,235,.4);transform:translateY(-2px) scale(1.05)}.fusioni-floating-button:active{transform:translateY(0) scale(.98)}.fusioni-floating-button-glass{backdrop-filter:blur(20px);background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 8px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.4)}@supports not (backdrop-filter:blur(20px)){.fusioni-floating-button-glass{background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.1)}}.fusioni-floating-button-minimal{background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);box-shadow:0 4px 12px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.1)}.fusioni-floating-button-solid{background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);box-shadow:0 4px 12px rgba(37,99,235,.15),0 1px 3px rgba(37,99,235,.1)}.fusioni-floating-button-content{align-items:center;display:flex;justify-content:center}.fusioni-floating-button-icon{transition:all .3s cubic-bezier(.4,0,.2,1)}.fusioni-floating-button-glass .fusioni-floating-button-icon{color:var(--fusioni-text-primary);filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.fusioni-floating-button-minimal .fusioni-floating-button-icon{color:var(--fusioni-text-primary)}.fusioni-floating-button-solid .fusioni-floating-button-icon{color:#fff}.fusioni-floating-button-attention-ring{animation:attentionRingPulse 3s ease-in-out infinite;border:2px solid var(--fusioni-primary);border-radius:50%;bottom:-8px;left:-8px;opacity:0;pointer-events:none;position:absolute;right:-8px;top:-8px}.fusioni-floating-button-attention-ring-2{animation:attentionRingPulse 3s ease-in-out .5s infinite;border:1px solid var(--fusioni-primary-light);border-radius:50%;bottom:-16px;left:-16px;opacity:0;pointer-events:none;position:absolute;right:-16px;top:-16px}.fusioni-floating-button-attention-ring-3{animation:attentionRingPulse 3s ease-in-out 1s infinite;border:1px solid rgba(99,102,241,.3);border-radius:50%;bottom:-24px;left:-24px;opacity:0;pointer-events:none;position:absolute;right:-24px;top:-24px}.fusioni-floating-button-neural-particles{bottom:0;left:0;overflow:visible;pointer-events:none;position:absolute;right:0;top:0}.fusioni-neural-particle{animation:neuralParticleFloat 4s ease-in-out infinite;background:var(--fusioni-primary-light);border-radius:50%;box-shadow:0 0 6px var(--fusioni-primary-light);height:3px;opacity:0;position:absolute;width:3px}.fusioni-neural-particle:first-child{animation-delay:0s;left:15%;top:20%}.fusioni-neural-particle:nth-child(2){animation-delay:.8s;right:20%;top:15%}.fusioni-neural-particle:nth-child(3){animation-delay:1.6s;bottom:25%;left:25%}.fusioni-neural-particle:nth-child(4){animation-delay:2.4s;bottom:20%;right:15%}.fusioni-neural-particle:nth-child(5){animation-delay:3.2s;left:5%;top:50%}.fusioni-neural-particle:nth-child(6){animation-delay:.4s;right:5%;top:50%}.fusioni-floating-button-brain-activity{animation:brainActivityPulse 2.5s ease-in-out infinite;background:linear-gradient(45deg,#10b981,#059669);border-radius:50%;box-shadow:0 0 8px rgba(16,185,129,.6);height:16px;opacity:0;pointer-events:none;position:absolute;right:-2px;top:-2px;width:16px}.fusioni-floating-button-brain-activity:before{animation:brainCorePulse 1s ease-in-out infinite;background:#fff;border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:6px}.fusioni-floating-button-attention-sequence{height:100px;left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);width:100px}.fusioni-attention-wave{animation:attentionWaveExpand 2s ease-out infinite;border:2px solid var(--fusioni-primary);border-radius:50%;bottom:0;left:0;opacity:0;position:absolute;right:0;top:0}.fusioni-attention-wave:nth-child(2){animation-delay:.3s}.fusioni-attention-wave:nth-child(3){animation-delay:.6s}.fusioni-floating-button-periodic-pulse{animation:periodicAttentionPulse 8s ease-in-out infinite;background:radial-gradient(circle,rgba(99,102,241,.1) 0,transparent 70%);border-radius:50%;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}.fusioni-floating-button-glow{animation:enhancedGlowPulse 3s ease-in-out infinite;background:radial-gradient(circle,rgba(99,102,241,.3) 0,transparent 70%);border-radius:50%;bottom:-4px;left:-4px;opacity:0;pointer-events:none;position:absolute;right:-4px;top:-4px}.fusioni-floating-button-magnetic-field{animation:magneticFieldRotate 6s linear infinite;border:1px solid rgba(99,102,241,.2);border-radius:50%;bottom:-12px;left:-12px;opacity:0;pointer-events:none;position:absolute;right:-12px;top:-12px}.fusioni-floating-button-magnetic-field:after,.fusioni-floating-button-magnetic-field:before{background:var(--fusioni-primary-light);border-radius:50%;box-shadow:0 0 4px var(--fusioni-primary-light);content:"";height:4px;position:absolute;width:4px}.fusioni-floating-button-magnetic-field:before{left:50%;top:0;transform:translateX(-50%)}.fusioni-floating-button-magnetic-field:after{bottom:0;left:50%;transform:translateX(-50%)}.fusioni-floating-button-bottom-right{bottom:1rem;right:1rem}.fusioni-floating-button-bottom-left{bottom:1rem;left:1rem}.fusioni-floating-button-top-right{right:1rem;top:1rem}.fusioni-floating-button-top-left{left:1rem;top:1rem}.fusioni-chat-panel{backdrop-filter:blur(20px);background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border-light);border-radius:var(--fusioni-radius-2xl);box-shadow:var(--fusioni-shadow-2xl);box-sizing:border-box;display:flex;flex-direction:column;height:640px;max-height:calc(100vh - 2rem);max-width:calc(100vw - 2rem);overflow:hidden;position:fixed;width:480px;z-index:50}.fusioni-chat-widget:not(.dark) .fusioni-chat-panel{background:hsla(0,0%,100%,.95)}.fusioni-chat-widget.dark .fusioni-chat-panel{background:rgba(15,23,42,.95)}.fusioni-chat-panel-content{box-sizing:border-box;display:flex;flex-direction:column;height:100%;overflow:hidden;width:100%}.fusioni-chat-panel-bottom-right{bottom:5rem;right:1rem}.fusioni-chat-panel-bottom-left{bottom:5rem;left:1rem}.fusioni-chat-panel-top-right{right:1rem;top:5rem}.fusioni-chat-panel-top-left{left:1rem;top:5rem}.fusioni-chat-panel-fullscreen{border-radius:0!important;bottom:0!important;height:100vh!important;left:0!important;max-height:none!important;max-width:none!important;position:fixed!important;right:0!important;top:0!important;width:100vw!important;z-index:9999!important}.fusioni-chat-backdrop{background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:40}.fusioni-chat-container{box-sizing:border-box}.fusioni-chat-container,.fusioni-chat-main{display:flex;height:100%;overflow:hidden;width:100%}.fusioni-chat-main{flex:1;flex-direction:column;min-width:0;position:relative;transition:width var(--fusioni-transition)}.fusioni-conversation-list{backdrop-filter:blur(10px);background:var(--fusioni-bg-secondary);border-right:1px solid var(--fusioni-border-light);bottom:0;box-shadow:var(--fusioni-shadow-lg);display:flex;flex-direction:column;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transform:translateX(-100%) scale(.95);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);width:280px;z-index:10}.fusioni-chat-widget:not(.dark) .fusioni-conversation-list{background:linear-gradient(180deg,var(--fusioni-bg-accent) 0,var(--fusioni-bg-secondary) 100%)}.fusioni-conversation-list.open{opacity:1;transform:translateX(0) scale(1)}.fusioni-conversation-backdrop{backdrop-filter:blur(2px);background:rgba(0,0,0,.3);bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s cubic-bezier(.4,0,.2,1),visibility .3s cubic-bezier(.4,0,.2,1);visibility:hidden;z-index:5}.fusioni-conversation-backdrop.open{opacity:1;visibility:visible}.fusioni-conversation-header{align-items:center;backdrop-filter:blur(10px);background:var(--fusioni-bg-tertiary);border-bottom:1px solid var(--fusioni-border-light);display:flex;justify-content:space-between;padding:1.25rem 1rem}.fusioni-chat-widget:not(.dark) .fusioni-conversation-header{background:hsla(0,0%,100%,.8)}.fusioni-conversation-title{align-items:center;display:flex;gap:.75rem}.fusioni-conversation-logo{align-items:center;border:2px solid hsla(0,0%,100%,.2);border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-md);color:#fff;display:flex;height:44px;justify-content:center;width:44px}.fusioni-conversation-info h3{color:var(--fusioni-text-primary);font-size:1rem;font-weight:600;margin:0}.fusioni-conversation-info p{color:var(--fusioni-text-secondary);font-size:.75rem;margin:0}.fusioni-conversation-search{padding:1rem}.fusioni-search-input{position:relative}.fusioni-input{border:1px solid var(--fusioni-border-light);border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow);color:var(--fusioni-text-primary);font-size:.875rem;padding:.75rem 2.5rem .75rem 1rem;transition:var(--fusioni-transition);width:100%}.fusioni-input,.fusioni-input:focus{background:var(--fusioni-bg-secondary)}.fusioni-input:focus{border-color:var(--fusioni-primary);box-shadow:0 0 0 3px rgba(59,130,246,.1),var(--fusioni-shadow-md);outline:none}.fusioni-chat-widget:not(.dark) .fusioni-input{background:var(--fusioni-bg-primary)}.fusioni-chat-widget:not(.dark) .fusioni-input:focus{background:var(--fusioni-bg-primary);box-shadow:0 0 0 3px rgba(37,99,235,.1),var(--fusioni-shadow-md)}.fusioni-search-icon{color:var(--fusioni-text-muted);pointer-events:none;position:absolute;right:.75rem;top:50%;transform:translateY(-50%)}.fusioni-divider{background:var(--fusioni-border);height:1px;margin:0 1rem}.fusioni-conversations{flex:1;overflow-y:auto;padding:.5rem}.fusioni-conversation-item{backdrop-filter:blur(10px);background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border-light);border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow);cursor:pointer;margin-bottom:.5rem;overflow:hidden;padding:1rem .5rem 1rem 1rem;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.fusioni-conversation-item:before{background:linear-gradient(135deg,rgba(37,99,235,.02),rgba(59,130,246,.05) 50%,rgba(37,99,235,.02));bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease;z-index:1}.fusioni-conversation-item:hover{background:var(--fusioni-bg-secondary);border-color:var(--fusioni-primary);box-shadow:var(--fusioni-shadow-lg);transform:translateY(-2px) scale(1.02)}.fusioni-conversation-item:hover:before{opacity:1}.fusioni-conversation-item.active{background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);border-color:var(--fusioni-primary);box-shadow:0 8px 32px rgba(37,99,235,.3);color:#fff;transform:translateY(-1px)}.fusioni-conversation-item.active:before{opacity:0}.fusioni-conversation-neural-bg{bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .4s ease;z-index:0}.fusioni-conversation-item:hover .fusioni-conversation-neural-bg{opacity:.6}.fusioni-conversation-item.active .fusioni-conversation-neural-bg{opacity:.8}.fusioni-neural-node{animation:neuralPulse 3s ease-in-out infinite;background:var(--fusioni-primary);border-radius:50%;box-shadow:0 0 8px var(--fusioni-primary);height:4px;position:absolute;width:4px}.fusioni-neural-node-1{animation-delay:0s;left:15%;top:20%}.fusioni-neural-node-2{animation-delay:1s;right:20%;top:60%}.fusioni-neural-node-3{animation-delay:2s;bottom:25%;left:40%}.fusioni-neural-connection{animation:neuralFlow 4s ease-in-out infinite;background:linear-gradient(90deg,transparent 0,var(--fusioni-primary) 50%,transparent 100%);height:1px;position:absolute}.fusioni-neural-connection-1{animation-delay:.5s;left:15%;top:30%;transform:rotate(15deg);width:60%}.fusioni-neural-connection-2{animation-delay:1.5s;bottom:40%;left:25%;transform:rotate(-20deg);width:45%}.fusioni-ai-pulse-ring{animation:aiPulse 2s ease-in-out infinite;border:2px solid var(--fusioni-primary);border-radius:50%;height:100%;opacity:.6;position:absolute;width:100%}.fusioni-ai-core{align-items:center;animation:aiRotate 4s linear infinite;color:var(--fusioni-primary);display:flex;justify-content:center;position:relative;z-index:1}.fusioni-conversation-item.active .fusioni-ai-core{color:#fff}.fusioni-conversation-item.active .fusioni-ai-pulse-ring{border-color:#fff}.fusioni-conversation-content{display:flex;flex-direction:column;gap:.5rem;position:relative;z-index:2}.fusioni-conversation-main{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.fusioni-conversation-title-section{display:flex;flex:1;flex-direction:column;gap:.5rem;min-width:0}.fusioni-conversation-title-text{align-items:center;color:var(--fusioni-text-primary);display:flex;flex-wrap:wrap;font-size:.95rem;font-weight:600;gap:.5rem;line-height:1.3;margin:0;word-break:break-word}.fusioni-conversation-item.active .fusioni-conversation-title-text{color:#fff}.fusioni-conversation-meta{align-items:center;display:flex;gap:.75rem;justify-content:space-between;margin-top:.25rem}.fusioni-conversation-status{align-items:center;color:var(--fusioni-text-muted);display:flex;font-size:.75rem;font-weight:500;gap:.375rem}.fusioni-conversation-item.active .fusioni-conversation-status{color:hsla(0,0%,100%,.8)}.fusioni-status-dot{animation:statusPulse 2s ease-in-out infinite;background:var(--fusioni-success);border-radius:50%;box-shadow:0 0 4px var(--fusioni-success);height:6px;width:6px}.fusioni-conversation-temp-indicator{flex-shrink:0}.fusioni-new-badge{align-items:center;animation:newBadgePulse 2s ease-in-out infinite;background:linear-gradient(135deg,var(--fusioni-warning) 0,#f59e0b 100%);border-radius:var(--fusioni-radius);box-shadow:0 2px 8px rgba(217,119,6,.3);color:#fff;display:inline-flex;font-size:.625rem;font-weight:700;letter-spacing:.05em;padding:.25rem .5rem;position:relative;text-transform:uppercase}.fusioni-new-text{position:relative;z-index:2}.fusioni-new-pulse{animation:newPulseRing 2s ease-in-out infinite;background:linear-gradient(135deg,var(--fusioni-warning) 0,#f59e0b 100%);border-radius:var(--fusioni-radius);bottom:0;left:0;opacity:.6;position:absolute;right:0;top:0}.fusioni-conversation-actions{align-items:flex-start;display:flex;gap:.25rem;margin-top:.25rem}.fusioni-delete-btn{opacity:0;transform:scale(.8);transition:all .3s cubic-bezier(.4,0,.2,1)}.fusioni-conversation-item:hover .fusioni-delete-btn{opacity:1;transform:scale(1)}.fusioni-conversation-item.active .fusioni-delete-btn{background:hsla(0,0%,100%,.2);color:#fff;opacity:1;transform:scale(1)}.fusioni-conversation-item.active .fusioni-delete-btn:hover{background:hsla(0,0%,100%,.3);transform:scale(1.1)}.fusioni-conversation-date{color:var(--fusioni-text-muted);font-size:.75rem;font-weight:500;margin:0}.fusioni-conversation-item.active .fusioni-conversation-date{color:hsla(0,0%,100%,.8)}.fusioni-conversation-data-flow{bottom:0;height:2px;left:0;opacity:0;overflow:hidden;position:absolute;right:0;transition:opacity .3s ease}.fusioni-conversation-item.active .fusioni-conversation-data-flow,.fusioni-conversation-item:hover .fusioni-conversation-data-flow{opacity:1}.fusioni-data-stream{animation:dataFlow 3s ease-in-out infinite;background:linear-gradient(90deg,transparent 0,var(--fusioni-primary) 20%,var(--fusioni-primary-light) 50%,var(--fusioni-primary) 80%,transparent 100%);height:100%;left:-100%;position:absolute;top:0;width:100%}.fusioni-conversation-item.active .fusioni-data-stream{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3) 20%,hsla(0,0%,100%,.6) 50%,hsla(0,0%,100%,.3) 80%,transparent)}.fusioni-empty-state{color:var(--fusioni-text-muted);padding:2rem;text-align:center}.fusioni-message-list{background:var(--fusioni-bg-primary);display:flex;flex:1;flex-direction:column;overflow-y:auto;padding:1rem}.fusioni-messages-container{display:flex;flex-direction:column;gap:1rem;height:100%}.fusioni-empty-messages,.fusioni-empty-messages-content{align-items:center;display:flex;height:100%;justify-content:center}.fusioni-empty-messages-content{color:var(--fusioni-text-muted);flex-direction:column;text-align:center}.fusioni-empty-icon{color:var(--fusioni-text-muted);height:64px;margin:0 auto 1rem;width:64px}.fusioni-messages{gap:1rem}.fusioni-message-wrapper,.fusioni-messages{display:flex;flex-direction:column}.fusioni-message{align-items:flex-start;display:flex;gap:5px}.fusioni-message.user{flex-direction:row-reverse}.fusioni-message-avatar{align-items:center;background:var(--fusioni-bg-tertiary);border-radius:8px;color:var(--fusioni-text-secondary);display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.fusioni-message.user .fusioni-message-avatar{background:var(--fusioni-primary);color:#fff}.fusioni-message-content{flex:1;min-width:0}.fusioni-message-header{align-items:center;display:flex;gap:.5rem;margin-bottom:.25rem}.fusioni-message-role{color:var(--fusioni-text-secondary);font-size:.75rem;font-weight:500;margin-left:5px}.fusioni-message-time{color:var(--fusioni-text-muted);font-size:.75rem}.fusioni-message-body{margin-bottom:0}.fusioni-message-bubble{word-wrap:break-word;border-radius:var(--fusioni-radius-lg);max-width:100%;padding:.75rem 1rem;position:relative;transition:var(--fusioni-transition)}.fusioni-message-bubble:hover{box-shadow:var(--fusioni-shadow)}.fusioni-message-user{background:var(--fusioni-primary);border-bottom-right-radius:.25rem;color:#fff}.fusioni-message-assistant{background:var(--fusioni-bg-secondary);border-bottom-left-radius:.25rem;color:var(--fusioni-text-primary)}.fusioni-message-error{background:var(--fusioni-error);color:#fff}.fusioni-message-text{line-height:1.5}.fusioni-message-text h1,.fusioni-message-text h2,.fusioni-message-text h3{line-height:1.25;margin:.5rem 0 .25rem}.fusioni-message-text p{margin:.5rem 0}.fusioni-message-text ol,.fusioni-message-text ul{margin:.5rem 0;padding-left:1.5rem}.fusioni-message-text code{background:var(--fusioni-bg-tertiary);border-radius:.25rem;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875em;padding:.125rem .25rem}.fusioni-message-text pre{background:var(--fusioni-bg-dark);border-radius:var(--fusioni-radius);color:var(--fusioni-text-light);margin:.5rem 0;overflow-x:auto;padding:.75rem}.fusioni-message-text a{color:var(--fusioni-primary);text-decoration:underline}.fusioni-message-extra,.fusioni-message-image{margin-top:.5rem}.fusioni-image{border-radius:var(--fusioni-radius);box-shadow:var(--fusioni-shadow);height:auto;max-width:100%}.fusioni-message-audio{background:var(--fusioni-bg-tertiary);border-radius:var(--fusioni-radius);margin-top:.5rem;padding:.75rem}.fusioni-audio-header{align-items:center;color:var(--fusioni-text-secondary);display:flex;font-size:.875rem;gap:.5rem;margin-bottom:.5rem}.fusioni-audio-duration{color:var(--fusioni-text-muted);font-size:.75rem}.fusioni-audio-player{height:32px;width:100%}.fusioni-message-map{margin-top:.5rem}.fusioni-map-placeholder{background:var(--fusioni-bg-tertiary);border-radius:var(--fusioni-radius);color:var(--fusioni-text-secondary);padding:1rem;text-align:center}.fusioni-map-container{border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius);box-shadow:var(--fusioni-shadow);margin-top:.5rem;overflow:hidden}.fusioni-map-interactive,.fusioni-map-static{height:auto;position:relative;width:100%}.fusioni-map-image{border-radius:var(--fusioni-radius);display:block;height:auto;width:100%}.fusioni-map-iframe{border:none;border-radius:var(--fusioni-radius);height:400px;width:100%}.fusioni-map-loading{align-items:center;background:var(--fusioni-bg-tertiary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius);display:flex;justify-content:center;padding:2rem}.fusioni-map-loading-content{align-items:center;color:var(--fusioni-text-secondary);display:flex;flex-direction:column;gap:.75rem}.fusioni-map-loading-spinner{animation:spin 1s linear infinite;border-top:2px solid var(--fusioni-border);border:2px solid var(--fusioni-border);border-radius:50%;border-top-color:var(--fusioni-primary);height:24px;width:24px}.fusioni-map-error{align-items:center;background:rgba(220,38,38,.05);border:1px solid rgba(220,38,38,.2);border-radius:var(--fusioni-radius);color:var(--fusioni-error);display:flex;justify-content:center;padding:1rem}.fusioni-map-error-content{align-items:center;display:flex;font-size:.875rem;gap:.5rem}.fusioni-chat-widget.dark .fusioni-map-container{border-color:var(--fusioni-border-dark)}.fusioni-chat-widget.dark .fusioni-map-loading{background:var(--fusioni-bg-dark);border-color:var(--fusioni-border-dark)}.fusioni-chat-widget.dark .fusioni-map-error{background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.3)}.fusioni-message-thoughts{color:var(--fusioni-text-muted);font-size:.75rem;margin-top:.5rem}.fusioni-message-thoughts details{cursor:pointer}.fusioni-message-thoughts summary{font-weight:500}.fusioni-message-actions{align-items:center;align-self:center;display:flex;flex-direction:column;gap:.25rem;opacity:0;transition:var(--fusioni-transition)}.fusioni-message:hover .fusioni-message-actions{opacity:1}.fusioni-message-error-indicator{align-items:center;color:var(--fusioni-error);display:flex;font-size:.75rem;gap:.25rem;margin-top:.25rem}.fusioni-stream-message{align-items:center;display:flex;gap:.75rem;margin-bottom:.5rem}.fusioni-stream-message:last-child{margin-bottom:0}.fusioni-stream-indicator{align-items:center;display:flex;justify-content:center}.fusioni-stream-dot{animation:dotPulse 1.5s infinite;background:var(--fusioni-primary);border-radius:50%;box-shadow:0 0 8px rgba(99,102,241,.4);height:6px;width:6px}.fusioni-stream-text{color:var(--fusioni-text-secondary);font-size:.875rem;line-height:1.4}.fusioni-chat-input{background:var(--fusioni-bg-primary);border-top:1px solid var(--fusioni-border);padding:1rem}.fusioni-image-preview{margin-bottom:.75rem}.fusioni-image-preview-content{display:inline-block;position:relative}.fusioni-preview-image{border-radius:var(--fusioni-radius);box-shadow:var(--fusioni-shadow);max-height:200px;max-width:200px}.fusioni-image-preview-content .fusioni-btn{position:absolute;right:.5rem;top:.5rem}.fusioni-audio-preview{background:var(--fusioni-bg-secondary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius);margin-bottom:.75rem;padding:.75rem}.fusioni-audio-preview-content{display:flex;flex-direction:column;gap:.5rem}.fusioni-audio-preview-header{align-items:center;color:var(--fusioni-text-secondary);display:flex;font-size:.875rem;justify-content:space-between}.fusioni-audio-preview-player{height:32px;width:100%}.fusioni-audio-preview-text{color:var(--fusioni-text-muted);font-size:.75rem;margin:0;text-align:center}.fusioni-input-container{width:100%}.fusioni-input-wrapper{align-items:flex-end;background:var(--fusioni-bg-secondary);border:2px solid var(--fusioni-border);border-radius:var(--fusioni-radius-xl);display:flex;gap:.5rem;padding:.5rem;transition:var(--fusioni-transition)}.fusioni-input-wrapper:focus-within{border-color:var(--fusioni-primary);box-shadow:0 0 0 3px rgba(99,102,241,.1)}.fusioni-textarea{background:transparent;border:none;color:var(--fusioni-text-primary);flex:1;font-family:inherit;font-size:.875rem;line-height:1.5;max-height:120px;min-height:20px;outline:none;padding:.5rem;resize:none}.fusioni-textarea::placeholder{color:var(--fusioni-text-muted)}.fusioni-input-actions{align-items:center;display:flex;gap:.25rem}.fusioni-btn{align-items:center;background:transparent;border:none;border-radius:var(--fusioni-radius);color:var(--fusioni-text-secondary);cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:500;justify-content:center;padding:.5rem;text-decoration:none;transition:var(--fusioni-transition)}.fusioni-btn:hover{background:var(--fusioni-bg-tertiary);color:var(--fusioni-text-primary)}.fusioni-btn:disabled{cursor:not-allowed;opacity:.5}.fusioni-btn-icon-primary{background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);box-shadow:var(--fusioni-shadow)}.fusioni-btn-icon-primary:hover{background:var(--fusioni-primary-dark);border-color:var(--fusioni-primary-dark);color:#fff}.fusioni-btn-icon{border-radius:50%;height:25px;padding:0;transition:var(--fusioni-transition-fast);width:28px}.fusioni-btn-icon:hover{background:var(--fusioni-primary);border-color:var(--fusioni-primary);color:#fff;transform:scale(1.05)}.fusioni-btn-primary{background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);border:none;border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-md);color:#fff;font-weight:600;padding:.75rem 1.5rem;transition:var(--fusioni-transition)}.fusioni-btn-primary:hover{background:linear-gradient(135deg,var(--fusioni-primary-dark) 0,var(--fusioni-primary) 100%);box-shadow:var(--fusioni-shadow-lg);color:#fff;transform:translateY(-1px)}.fusioni-btn-danger{color:var(--fusioni-error)}.fusioni-btn-danger:hover{background:var(--fusioni-error);color:#fff}.fusioni-btn-text{background:transparent;color:var(--fusioni-primary);padding:.25rem .5rem}.fusioni-btn-text:hover{background:var(--fusioni-bg-tertiary);color:var(--fusioni-primary)}.fusioni-btn-send{background:var(--fusioni-primary);color:#fff}.fusioni-btn-send:hover{background:var(--fusioni-primary-dark);color:#fff}.fusioni-btn-send:disabled{background:var(--fusioni-text-muted);color:var(--fusioni-text-light)}.fusioni-btn-send-audio{background:var(--fusioni-success)}.fusioni-btn-send-audio:hover{background:#059669}.fusioni-btn-recording{animation:recordingPulse 2s ease-in-out infinite;background:var(--fusioni-error);color:#fff}.fusioni-btn-recording:hover{background:#dc2626;color:#fff}.fusioni-confirmation-widget{display:flex;gap:.75rem;padding-top:1.25rem}.fusioni-btn-confirm{background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);border:none;border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-md);color:#fff;font-size:.875rem;font-weight:600;padding:.75rem 1.5rem;transition:var(--fusioni-transition)}.fusioni-btn-confirm:hover:not(:disabled){background:linear-gradient(135deg,var(--fusioni-primary-dark) 0,var(--fusioni-primary) 100%);box-shadow:var(--fusioni-shadow-lg);color:#fff;transform:translateY(-1px) scale(1.05)}.fusioni-btn-confirm:active:not(:disabled){transform:translateY(0) scale(1)}.fusioni-btn-confirm:disabled{background:var(--fusioni-primary);cursor:not-allowed;opacity:.5;transform:none}.fusioni-btn-cancel{background:var(--fusioni-secondary);border:none;border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-md);color:#fff;font-size:.875rem;font-weight:600;padding:.75rem 1.5rem;transition:var(--fusioni-transition)}.fusioni-btn-cancel:hover:not(:disabled){background:var(--fusioni-secondary);box-shadow:var(--fusioni-shadow-lg);color:#fff;transform:translateY(-1px) scale(1.05)}.fusioni-btn-cancel:active:not(:disabled){transform:translateY(0) scale(1)}.fusioni-btn-cancel:disabled{cursor:not-allowed;opacity:.5;transform:none}.dark .fusioni-btn-cancel,.dark .fusioni-btn-cancel:hover:not(:disabled),.fusioni-btn-cancel:disabled{background:var(--fusioni-secondary)}.fusioni-audio-recorder{align-items:center;display:flex;gap:.5rem}.fusioni-recording-indicator{align-items:center;display:flex;justify-content:center}.fusioni-recording-dot{animation:recordingPulse 1.5s ease-in-out infinite;background:#fff;border-radius:50%;height:8px;width:8px}.fusioni-recording-timer{color:var(--fusioni-error);font-size:.75rem;font-weight:500;min-width:3rem;text-align:center}.fusioni-audio-error{background:var(--fusioni-error);border-radius:var(--fusioni-radius);bottom:100%;color:#fff;font-size:.75rem;left:0;margin-bottom:.5rem;padding:.5rem;position:absolute;right:0}.fusioni-audio-error p{margin:0 0 .25rem}.fusioni-audio-error button{background:transparent;border:1px solid #fff;border-radius:var(--fusioni-radius);color:#fff;cursor:pointer;font-size:.75rem;padding:.25rem .5rem}.fusioni-chat-loader{padding:1rem;text-align:center}.fusioni-loader-content{align-items:center;display:flex;gap:.75rem;justify-content:center}.fusioni-loader-dots{display:flex;gap:.25rem}.fusioni-loader-dot{animation:dotPulse 1.5s ease-in-out infinite;background:var(--fusioni-primary);border-radius:50%;height:6px;width:6px}.fusioni-loader-dot:nth-child(2){animation-delay:.2s}.fusioni-loader-dot:nth-child(3){animation-delay:.4s}.fusioni-loader-text{color:var(--fusioni-text-secondary);font-size:.875rem}.fusioni-chat-main-header{align-items:center;backdrop-filter:blur(10px);background:var(--fusioni-bg-tertiary);border-bottom:1px solid var(--fusioni-border-light);display:flex;justify-content:space-between;padding:1rem;position:relative;z-index:5}.fusioni-chat-widget:not(.dark) .fusioni-chat-main-header{background:hsla(0,0%,100%,.8)}.fusioni-header-actions{align-items:center;display:flex;gap:.75rem}.fusioni-conversation-toggle{align-items:center;background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius-lg);color:var(--fusioni-text-secondary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem .75rem;transition:var(--fusioni-transition)}.fusioni-conversation-toggle:hover{background:var(--fusioni-primary);border-color:var(--fusioni-primary);color:#fff}.fusioni-conversation-toggle-icon{height:16px;transition:transform var(--fusioni-transition);width:16px}.fusioni-conversation-toggle.open .fusioni-conversation-toggle-icon{transform:rotate(180deg)}.fusioni-connection-indicator,.fusioni-connection-status{align-items:center;display:flex}.fusioni-connection-indicator{border-radius:var(--fusioni-radius);padding:.25rem;transition:var(--fusioni-transition)}.fusioni-connection-dot{border-radius:50%;height:8px;transition:var(--fusioni-transition);width:8px}.fusioni-connection-indicator.connected .fusioni-connection-dot{background:var(--fusioni-success);box-shadow:0 0 0 2px rgba(16,185,129,.2)}.fusioni-connection-indicator.disconnected .fusioni-connection-dot{background:var(--fusioni-text-muted);box-shadow:0 0 0 2px rgba(148,163,184,.2)}.fusioni-language-switcher{display:inline-block;position:relative}.fusioni-language-button{align-items:center;background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius-lg);color:var(--fusioni-text-primary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;min-width:120px;padding:.5rem .75rem;transition:var(--fusioni-transition)}.fusioni-language-button:hover{background:var(--fusioni-bg-secondary);border-color:var(--fusioni-primary)}.fusioni-language-flag{font-size:1rem;line-height:1}.fusioni-language-name{flex:1;font-weight:500;text-align:left}.fusioni-language-arrow{transition:transform var(--fusioni-transition)}.fusioni-language-arrow.open{transform:rotate(180deg)}.fusioni-language-dropdown{background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-lg);left:0;margin-top:.25rem;overflow:hidden;position:absolute;right:0;top:100%;z-index:1000}.fusioni-language-option{align-items:center;background:transparent;border:none;color:var(--fusioni-text-primary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.75rem;text-align:left;transition:var(--fusioni-transition);width:100%}.fusioni-language-option:hover{background:var(--fusioni-bg-secondary)}.fusioni-language-option.active{background:var(--fusioni-primary);color:#fff}.fusioni-language-check{margin-left:auto;opacity:.8}.fusioni-chat-welcome{align-items:center;background:var(--fusioni-bg-primary);bottom:0;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;overflow:hidden;padding:3rem 2rem;position:absolute;right:0;top:0;width:100%}.fusioni-chat-widget:not(.dark) .fusioni-chat-welcome{background:linear-gradient(135deg,var(--fusioni-bg-accent) 0,var(--fusioni-bg-primary) 100%)}.fusioni-chat-welcome-content{box-sizing:border-box;margin:0 auto;max-width:320px;text-align:center;width:100%}.fusioni-chat-welcome-content h3{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,var(--fusioni-primary) 0,var(--fusioni-primary-light) 100%);-webkit-background-clip:text;background-clip:text;color:var(--fusioni-text-primary);font-size:1.5rem;font-weight:700;margin:0 0 1rem}.fusioni-chat-welcome-content p{color:var(--fusioni-text-secondary);font-size:1rem;line-height:1.6;margin:0 0 2rem}.fusioni-chat-error{background:var(--fusioni-error);border-radius:var(--fusioni-radius);color:#fff;margin:1rem;padding:1rem}.fusioni-chat-error p{margin:0 0 .5rem}.fusioni-chat-error button{background:transparent;border:1px solid #fff;border-radius:var(--fusioni-radius);color:#fff;cursor:pointer;padding:.25rem .5rem}.fusioni-spinner{animation:spin 1s linear infinite;border-top:2px solid var(--fusioni-border);border:2px solid var(--fusioni-border);border-radius:50%;border-top-color:var(--fusioni-primary);height:16px;width:16px}@keyframes shimmer{0%{left:-100%}to{left:100%}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}@keyframes recordingPulse{0%,to{box-shadow:0 0 5px rgba(239,68,68,.5)}50%{box-shadow:0 0 20px rgba(239,68,68,.8),0 0 30px rgba(239,68,68,.6)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes neuralPulse{0%,to{box-shadow:0 0 8px var(--fusioni-primary);opacity:.6;transform:scale(1)}50%{box-shadow:0 0 16px var(--fusioni-primary);opacity:1;transform:scale(1.5)}}@keyframes neuralFlow{0%{opacity:0;transform:scaleX(0)}50%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(0)}}@keyframes aiPulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes aiRotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes statusPulse{0%,to{box-shadow:0 0 4px var(--fusioni-success);opacity:1;transform:scale(1)}50%{box-shadow:0 0 8px var(--fusioni-success);opacity:.8;transform:scale(1.2)}}@keyframes newBadgePulse{0%,to{box-shadow:0 2px 8px rgba(217,119,6,.3);transform:scale(1)}50%{box-shadow:0 4px 16px rgba(217,119,6,.5);transform:scale(1.05)}}@keyframes newPulseRing{0%{opacity:.6;transform:scale(1)}50%{opacity:.2;transform:scale(1.3)}to{opacity:0;transform:scale(1.6)}}@keyframes dataFlow{0%{left:-100%;opacity:0}10%{opacity:1}90%{opacity:1}to{left:100%;opacity:0}}@keyframes magneticHover{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.02)}to{transform:translateY(-1px) scale(1.01)}}@keyframes neuralGlow{0%,to{filter:brightness(1) saturate(1)}50%{filter:brightness(1.2) saturate(1.3)}}@media (max-width:768px){.fusioni-chat-panel{height:calc(100vh - 1rem);max-height:none;max-width:none;width:calc(100vw - 1rem)}.fusioni-chat-panel-bottom-left,.fusioni-chat-panel-bottom-right,.fusioni-chat-panel-top-left,.fusioni-chat-panel-top-right{bottom:.5rem;height:calc(100vh - 1rem);top:.5rem}.fusioni-conversation-list{border-bottom:1px solid var(--fusioni-border);border-right:none;width:100%}.fusioni-chat-container{flex-direction:column}.fusioni-message-bubble:hover{transform:scale(1.01)}}.fusioni-conversations::-webkit-scrollbar,.fusioni-message-list::-webkit-scrollbar{width:6px}.fusioni-conversations::-webkit-scrollbar-track,.fusioni-message-list::-webkit-scrollbar-track{background:var(--fusioni-bg-tertiary)}.fusioni-conversations::-webkit-scrollbar-thumb,.fusioni-message-list::-webkit-scrollbar-thumb{background:var(--fusioni-text-muted);border-radius:3px}.fusioni-conversations::-webkit-scrollbar-thumb:hover,.fusioni-message-list::-webkit-scrollbar-thumb:hover{background:var(--fusioni-text-secondary)}.fusioni-url-preview{background:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius);box-shadow:var(--fusioni-shadow);margin:.5rem 0;overflow:hidden;transition:var(--fusioni-transition)}.fusioni-url-preview:hover{box-shadow:var(--fusioni-shadow-md);transform:translateY(-1px)}.fusioni-url-preview-compact{margin:.25rem 0}.fusioni-url-preview-loading{align-items:center;color:var(--fusioni-text-secondary);display:flex;font-size:.875rem;gap:.5rem;padding:.75rem}.fusioni-url-preview-spinner{animation:fusioni-spin 1s linear infinite;border-top:2px solid var(--fusioni-border);border:2px solid var(--fusioni-border);border-radius:50%;border-top-color:var(--fusioni-primary);height:16px;width:16px}@keyframes fusioni-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fusioni-url-preview-error{align-items:center;background:rgba(220,38,38,.05);color:var(--fusioni-error);display:flex;font-size:.875rem;justify-content:space-between;padding:.75rem}.fusioni-url-preview-content{position:relative}.fusioni-url-preview-close{align-items:center;background:rgba(0,0,0,.5);border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:16px;height:24px;justify-content:center;line-height:1;position:absolute;right:.5rem;top:.5rem;transition:var(--fusioni-transition);width:24px;z-index:10}.fusioni-url-preview-close:hover{background:rgba(0,0,0,.7)}.fusioni-url-preview-link{display:flex;transition:var(--fusioni-transition)}.fusioni-url-preview-link,.fusioni-url-preview-link:hover{color:inherit;text-decoration:none}.fusioni-url-preview-image{flex-shrink:0;height:80px;overflow:hidden;width:120px}.fusioni-url-preview-compact .fusioni-url-preview-image{height:60px;width:80px}.fusioni-url-preview-image img{height:100%;object-fit:cover;transition:var(--fusioni-transition);width:100%}.fusioni-url-preview-link:hover .fusioni-url-preview-image img{transform:scale(1.05)}.fusioni-url-preview-text{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-width:0;padding:.75rem}.fusioni-url-preview-compact .fusioni-url-preview-text{padding:.5rem}.fusioni-url-preview-title{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;color:var(--fusioni-text-primary);display:-webkit-box;font-size:.875rem;font-weight:600;line-height:1.25;margin-bottom:.25rem;overflow:hidden}.fusioni-url-preview-compact .fusioni-url-preview-title{-webkit-line-clamp:1;line-clamp:1;font-size:.8125rem}.fusioni-url-preview-description{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;color:var(--fusioni-text-secondary);display:-webkit-box;font-size:.8125rem;line-height:1.4;margin-bottom:.25rem;overflow:hidden}.fusioni-url-preview-compact .fusioni-url-preview-description{-webkit-line-clamp:1;line-clamp:1;font-size:.75rem}.fusioni-url-preview-domain{color:var(--fusioni-text-muted);font-size:.75rem;letter-spacing:.025em;text-transform:uppercase}.fusioni-message-url-previews{margin-top:.5rem}.fusioni-chat-widget.dark .fusioni-url-preview{background:var(--fusioni-bg-dark);border-color:var(--fusioni-border-dark)}.fusioni-chat-widget.dark .fusioni-url-preview-title{color:var(--fusioni-text-light)}.fusioni-chat-widget.dark .fusioni-url-preview-description{color:var(--fusioni-text-secondary)}.fusioni-chat-widget.dark .fusioni-url-preview-error{background:rgba(220,38,38,.1)}.fusioni-stream-messages{display:flex;flex-direction:column;gap:8px;margin-top:8px}.fusioni-stream-message-item{align-items:flex-start;display:flex;gap:8px}.fusioni-stream-message-logo-wrap{flex-shrink:0}.fusioni-stream-message-logo-frame{align-items:center;background:linear-gradient(to bottom right,#f3f4f6,#e5e7eb);border-radius:12px;box-shadow:var(--fusioni-shadow-lg);display:flex;height:32px;justify-content:center;overflow:hidden;width:32px}.fusioni-chat-widget.dark .fusioni-stream-message-logo-frame{background:linear-gradient(to bottom right,#1f2937,#111827)}.fusioni-stream-message-logo-img{animation:fusioni-spin 1s linear infinite;height:32px;margin:0;object-fit:contain;padding:4px;width:32px}.fusioni-stream-message-spotlight{margin-top:4px;min-width:0}.fusioni-spotlight{--mask-x:0%;--mask-y:50%;--text-spotlight-size:100px;display:block}.fusioni-spotlight-title{color:inherit;display:inline-block;position:relative}.fusioni-spotlight-text-base,.fusioni-spotlight-text-overlay,.fusioni-spotlight-title{font-family:inherit;font-size:16px;font-weight:inherit;letter-spacing:inherit;line-height:1.2}.fusioni-spotlight-text-base,.fusioni-spotlight-text-overlay{white-space:nowrap}.fusioni-spotlight-text-base{opacity:.2}.fusioni-spotlight-text-base,.fusioni-spotlight-text-overlay{-webkit-text-fill-color:transparent;background:currentColor;-webkit-background-clip:text;background-clip:text}.fusioni-spotlight-text-overlay{left:0;mask:radial-gradient(circle var(--text-spotlight-size) at var(--mask-x) var(--mask-y),#000 0,transparent 70%);-webkit-mask:radial-gradient(circle var(--text-spotlight-size) at var(--mask-x) var(--mask-y),#000 0,transparent 70%);opacity:1;pointer-events:none;position:absolute;top:0}@keyframes fusioni-dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}}.fusioni-chat-widget.dark .fusioni-conversation-item{background:var(--fusioni-bg-dark);border-color:var(--fusioni-border-dark)}.fusioni-chat-widget.dark .fusioni-conversation-item:before{background:linear-gradient(135deg,rgba(59,130,246,.05),rgba(37,99,235,.1) 50%,rgba(59,130,246,.05))}.fusioni-chat-widget.dark .fusioni-conversation-item:hover{background:var(--fusioni-bg-secondary);border-color:var(--fusioni-primary-light)}.fusioni-chat-widget.dark .fusioni-neural-node{background:var(--fusioni-primary-light);box-shadow:0 0 8px var(--fusioni-primary-light)}.fusioni-chat-widget.dark .fusioni-neural-connection{background:linear-gradient(90deg,transparent 0,var(--fusioni-primary-light) 50%,transparent 100%)}.fusioni-chat-widget.dark .fusioni-ai-core{color:var(--fusioni-primary-light)}.fusioni-chat-widget.dark .fusioni-ai-pulse-ring{border-color:var(--fusioni-primary-light)}.fusioni-chat-widget.dark .fusioni-data-stream{background:linear-gradient(90deg,transparent 0,var(--fusioni-primary-light) 20%,var(--fusioni-primary) 50%,var(--fusioni-primary-light) 80%,transparent 100%)}.fusioni-chat-widget.dark .fusioni-conversation-title-text{color:var(--fusioni-text-light)}.fusioni-chat-widget.dark .fusioni-conversation-status{color:var(--fusioni-text-secondary)}.fusioni-chat-widget.dark .fusioni-conversation-date{color:var(--fusioni-text-muted)}@media (prefers-reduced-motion:reduce){.fusioni-ai-core,.fusioni-ai-pulse-ring,.fusioni-conversation-item,.fusioni-data-stream,.fusioni-neural-connection,.fusioni-neural-node,.fusioni-new-badge,.fusioni-new-pulse,.fusioni-status-dot{animation:none!important;transition:none!important}.fusioni-conversation-item:hover{transform:none!important}}@media (prefers-contrast:high){.fusioni-conversation-item{border-width:2px}.fusioni-conversation-item.active{border-width:3px}.fusioni-ai-pulse-ring,.fusioni-neural-node,.fusioni-status-dot{border:1px solid;box-shadow:none}}.fusioni-conversation-item:focus-visible{outline:2px solid var(--fusioni-primary);outline-offset:2px}.fusioni-conversation-item.active:focus-visible{outline-color:#fff}.fusioni-conversation-item{contain:layout style paint;will-change:transform,box-shadow}.fusioni-ai-pulse-ring,.fusioni-data-stream,.fusioni-neural-connection,.fusioni-neural-node{contain:layout style paint;will-change:transform,opacity}.fusioni-ai-core,.fusioni-conversation-item,.fusioni-data-stream,.fusioni-neural-node{backface-visibility:hidden;perspective:1000px;transform:translateZ(0)}@keyframes attentionRingPulse{0%,to{opacity:0;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes neuralParticleFloat{0%,to{opacity:0;transform:scale(.5) translateY(0)}25%{opacity:.6;transform:scale(1) translateY(-10px)}50%{opacity:1;transform:scale(1.2) translateY(-20px)}75%{opacity:.6;transform:scale(1) translateY(-10px)}}@keyframes brainActivityPulse{0%,to{opacity:0;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}@keyframes brainCorePulse{0%,to{opacity:1;transform:translate(-50%,-50%) scale(1)}50%{opacity:.7;transform:translate(-50%,-50%) scale(1.3)}}@keyframes attentionWaveExpand{0%{opacity:.8;transform:scale(.5)}50%{opacity:.4;transform:scale(1.2)}to{opacity:0;transform:scale(2)}}@keyframes periodicAttentionPulse{0%,90%{opacity:0;transform:scale(1)}95%{opacity:.6;transform:scale(1.3)}to{opacity:0;transform:scale(1.5)}}@keyframes enhancedGlowPulse{0%,to{opacity:0;transform:scale(1)}50%{opacity:.4;transform:scale(1.1)}}@keyframes magneticFieldRotate{0%{opacity:.3;transform:rotate(0deg)}50%{opacity:.6}to{opacity:.3;transform:rotate(1turn)}}@keyframes floatingButtonEntrance{0%{transform:scale(1)}20%{transform:scale(6)}40%{transform:scale(1.1)}70%{transform:scale(.8)}to{transform:scale(1)}}@keyframes attentionSequenceTrigger{0%{opacity:0;transform:scale(.8)}20%{opacity:1;transform:scale(1.2)}40%{opacity:.8;transform:scale(1)}60%{opacity:1;transform:scale(1.1)}80%{opacity:.6;transform:scale(.9)}to{opacity:0;transform:scale(1)}}@keyframes floatingButtonHover{0%{transform:translateY(0) scale(1) rotate(0deg)}25%{transform:translateY(-3px) scale(1.05) rotate(1deg)}50%{transform:translateY(-5px) scale(1.08) rotate(0deg)}75%{transform:translateY(-2px) scale(1.03) rotate(-1deg)}to{transform:translateY(0) scale(1) rotate(0deg)}}@keyframes aiProcessingIndicator{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}@keyframes neuralConnectionFlow{0%{opacity:0;transform:scaleX(0)}20%{opacity:.8;transform:scaleX(.3)}50%{opacity:1;transform:scaleX(1)}80%{opacity:.8;transform:scaleX(.7)}to{opacity:0;transform:scaleX(0)}}.fusioni-floating-button-attention-active .fusioni-floating-button-attention-ring,.fusioni-floating-button-attention-active .fusioni-floating-button-attention-ring-2,.fusioni-floating-button-attention-active .fusioni-floating-button-attention-ring-3,.fusioni-floating-button-attention-active .fusioni-floating-button-attention-sequence,.fusioni-floating-button-attention-active .fusioni-floating-button-brain-activity,.fusioni-floating-button-attention-active .fusioni-floating-button-glow,.fusioni-floating-button-attention-active .fusioni-floating-button-magnetic-field,.fusioni-floating-button-attention-active .fusioni-floating-button-neural-particles,.fusioni-floating-button-attention-active .fusioni-floating-button-periodic-pulse{opacity:1}.fusioni-floating-button-entering{animation:floatingButtonEntrance 1.2s ease-in-out forwards}@media (prefers-reduced-motion:reduce){.fusioni-attention-wave,.fusioni-floating-button-attention-ring,.fusioni-floating-button-attention-ring-2,.fusioni-floating-button-attention-ring-3,.fusioni-floating-button-brain-activity,.fusioni-floating-button-glow,.fusioni-floating-button-magnetic-field,.fusioni-floating-button-periodic-pulse,.fusioni-floating-button:hover,.fusioni-neural-particle{animation:none!important}}.fusioni-dialog-backdrop{animation:fadeIn .2s ease-out;backdrop-filter:blur(4px);background-color:rgba(0,0,0,.5);z-index:9998}.fusioni-dialog-backdrop,.fusioni-dialog-container{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.fusioni-dialog-container{pointer-events:none;z-index:9999}.fusioni-dialog{animation:dialogSlideIn .3s cubic-bezier(.4,0,.2,1);background-color:var(--fusioni-bg-primary);border:1px solid var(--fusioni-border);border-radius:var(--fusioni-radius-lg);box-shadow:var(--fusioni-shadow-2xl);max-width:420px;overflow:hidden;pointer-events:auto;width:90%}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes dialogSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.fusioni-dialog-header{border-bottom:1px solid var(--fusioni-border);padding:1.5rem 1.5rem 1rem}.fusioni-dialog-title{color:var(--fusioni-text-primary);font-size:1.25rem;font-weight:600;line-height:1.5;margin:0}.fusioni-dialog-body{padding:1.5rem}.fusioni-dialog-message{color:var(--fusioni-text-secondary);font-size:.9375rem;line-height:1.6;margin:0}.fusioni-dialog-footer{border-top:1px solid var(--fusioni-border);display:flex;gap:.75rem;justify-content:flex-end;padding:1rem 1.5rem 1.5rem}.fusioni-dialog-cancel,.fusioni-dialog-confirm{min-width:80px}.fusioni-dialog-confirm-danger{background-color:var(--fusioni-error);border-color:var(--fusioni-error);color:var(--fusioni-text-light)}.fusioni-dialog-confirm-danger:hover:not(:disabled){background-color:#b91c1c;border-color:#b91c1c;box-shadow:var(--fusioni-shadow-md);transform:translateY(-1px)}.fusioni-dialog-confirm-danger:active:not(:disabled){box-shadow:var(--fusioni-shadow);transform:translateY(0)}.fusioni-dialog-confirm-warning{background-color:var(--fusioni-warning);border-color:var(--fusioni-warning);color:var(--fusioni-text-light)}.fusioni-dialog-confirm-warning:hover:not(:disabled){background-color:#b45309;border-color:#b45309;box-shadow:var(--fusioni-shadow-md);transform:translateY(-1px)}.fusioni-dialog-confirm-info{background-color:var(--fusioni-info);border-color:var(--fusioni-info);color:var(--fusioni-text-light)}.fusioni-dialog-confirm-info:hover:not(:disabled){background-color:#0369a1;border-color:#0369a1;box-shadow:var(--fusioni-shadow-md);transform:translateY(-1px)}.fusioni-chat-widget.dark .fusioni-dialog{background-color:var(--fusioni-bg-secondary);border-color:var(--fusioni-border)}.fusioni-chat-widget.dark .fusioni-dialog-header{border-bottom-color:var(--fusioni-border)}.fusioni-chat-widget.dark .fusioni-dialog-footer{border-top-color:var(--fusioni-border)}.fusioni-image-gallery-overlay{--fusioni-ig-img-offset:8rem;align-items:stretch;animation:fusionImageGalleryFadeIn .2s ease-out;box-sizing:border-box;display:flex;flex-direction:column;inset:0;justify-content:flex-start;overflow:hidden;position:fixed;z-index:100000}.fusioni-image-gallery-overlay.fusioni-image-gallery-has-thumbs{--fusioni-ig-img-offset:14rem}.fusioni-image-gallery-body{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;width:100%}.fusioni-image-gallery-stage{align-items:center;display:flex;flex:1 1 0;justify-content:center;min-height:0;min-width:0;position:relative;width:100%}.fusioni-image-gallery-overlay.fusioni-image-gallery-theme-light{background:linear-gradient(180deg,#374151 0,#9ca3af)}.fusioni-image-gallery-overlay.fusioni-image-gallery-theme-dark{background:linear-gradient(180deg,#111827 0,#1f2937)}@keyframes fusionImageGalleryFadeIn{0%{opacity:0}to{opacity:1}}.fusioni-image-gallery-topbar{align-items:center;background:linear-gradient(180deg,rgba(0,0,0,.7),transparent);display:flex;justify-content:space-between;left:0;padding:.75rem 1rem;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.fusioni-image-gallery-topbar-spacer{width:2.5rem}.fusioni-image-gallery-counter{color:hsla(0,0%,100%,.9);font-size:.875rem;font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:.025em}.fusioni-image-gallery-close{align-items:center;background-color:hsla(0,0%,100%,.1);border:none;border-radius:9999px;color:#fff;cursor:pointer;display:flex;height:2.5rem;justify-content:center;pointer-events:auto;transition:background-color .15s ease;width:2.5rem}.fusioni-image-gallery-close:hover{background-color:hsla(0,0%,100%,.2)}.fusioni-image-gallery-close:focus{outline:none}.fusioni-image-gallery-close:focus-visible{box-shadow:0 0 0 2px hsla(0,0%,100%,.5)}.fusioni-image-gallery-icon{height:1.25rem;width:1.25rem}.fusioni-image-gallery-icon-lg{height:2rem;width:2rem}.fusioni-image-gallery-content{align-items:center;box-sizing:border-box;display:flex;flex:1 1 0;justify-content:center;max-width:100%;min-height:0;min-width:0;padding:4rem 4.5rem;width:100%}.fusioni-image-gallery-img{animation:fusionImageGalleryZoomIn .25s ease-out;border-radius:.5rem;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);display:block;height:auto;max-height:calc(100vh - var(--fusioni-ig-img-offset, 8rem));max-height:calc(100dvh - var(--fusioni-ig-img-offset, 8rem));max-width:100%;object-fit:contain;width:auto}.fusioni-image-gallery-thumbs-wrap{box-sizing:border-box;flex:0 0 auto;margin:0 auto;max-height:12.5rem;max-width:min(100vw - 2rem,42rem);overflow:hidden;padding:0 1rem .75rem;width:100%}.fusioni-image-gallery-thumbs-wrap .fusioni-gallery-strip--lightbox .fusioni-gallery-strip-grid{gap:.5rem}.fusioni-image-gallery-thumbs-wrap .fusioni-gallery-strip--lightbox .fusioni-gallery-strip-cell{align-items:center;display:flex;justify-content:center;max-height:3.75rem}.fusioni-image-gallery-thumb{background:rgba(0,0,0,.35);border:2px solid transparent;border-radius:var(--fusioni-radius-md);box-sizing:border-box;cursor:pointer;display:block;flex-shrink:0;height:3.5rem;margin:0 auto;max-width:5.5rem;overflow:hidden;padding:0;transition:border-color .15s ease,transform .15s ease;width:100%}.fusioni-image-gallery-thumb:hover{border-color:hsla(0,0%,100%,.45)}.fusioni-image-gallery-thumb:focus{outline:none}.fusioni-image-gallery-thumb:focus-visible{box-shadow:0 0 0 2px hsla(0,0%,100%,.55)}.fusioni-image-gallery-thumb-selected{border-color:hsla(0,0%,100%,.9)}.fusioni-image-gallery-thumb img{display:block;height:100%;object-fit:cover;width:100%}.fusioni-image-gallery-thumbs-wrap .fusioni-gallery-strip-dots{margin-top:.5rem}@keyframes fusionImageGalleryZoomIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.fusioni-image-gallery-nav{align-items:center;background-color:hsla(0,0%,100%,.12);border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:3rem;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .15s ease,transform .15s ease;width:3rem;z-index:10}.fusioni-image-gallery-nav:hover{background-color:hsla(0,0%,100%,.22);transform:translateY(-50%) scale(1.05)}.fusioni-image-gallery-nav:active{transform:translateY(-50%) scale(.98)}.fusioni-image-gallery-nav:focus{outline:none}.fusioni-image-gallery-nav:focus-visible{box-shadow:0 0 0 2px hsla(0,0%,100%,.5)}.fusioni-image-gallery-nav-prev{left:1rem}.fusioni-image-gallery-nav-next{right:1rem}@media (min-width:640px){.fusioni-image-gallery-nav{height:3.5rem;width:3.5rem}.fusioni-image-gallery-nav-prev{left:1.5rem}.fusioni-image-gallery-nav-next{right:1.5rem}}.fusioni-image.fusioni-image-clickable{cursor:pointer}.fusioni-image-clickable-wrap{background:none;border:none;border-radius:var(--fusioni-radius);cursor:pointer;display:block;margin:0;padding:0;text-align:left;width:100%}.fusioni-image-clickable-wrap:focus-visible{outline:2px solid var(--fusioni-primary);outline-offset:2px}.fusioni-gallery-strip{width:100%}.fusioni-gallery-strip-viewport{max-width:100%;overflow:hidden;width:100%}.fusioni-gallery-strip-track{display:flex;transition:margin-left .3s ease-in-out;width:100%}.fusioni-gallery-strip-page{box-sizing:border-box;flex:0 0 100%;max-width:100%;min-width:0}.fusioni-gallery-strip-grid{display:grid;gap:.75rem}.fusioni-gallery-strip-cell{min-width:0}.fusioni-gallery-strip-dots{align-items:center;display:flex;gap:.5rem;justify-content:center;margin-top:1rem}.fusioni-gallery-strip-dot{border:none;border-radius:9999px;cursor:pointer;height:.625rem;padding:0;transition:background-color .15s ease,transform .15s ease;width:.625rem}.fusioni-gallery-strip--document .fusioni-gallery-strip-dot{background-color:#d1d5db}.fusioni-chat-widget.dark .fusioni-gallery-strip--document .fusioni-gallery-strip-dot{background-color:#475569}.fusioni-gallery-strip--document .fusioni-gallery-strip-dot-active{background-color:var(--fusioni-primary)}.fusioni-chat-widget.dark .fusioni-gallery-strip--document .fusioni-gallery-strip-dot-active{background-color:var(--fusioni-primary-light)}.fusioni-gallery-strip--lightbox .fusioni-gallery-strip-dot{background-color:hsla(0,0%,100%,.35)}.fusioni-gallery-strip--lightbox .fusioni-gallery-strip-dot-active{background-color:hsla(0,0%,100%,.95);transform:scale(1.15)}.fusioni-gallery-strip-dot:focus-visible{outline:2px solid var(--fusioni-primary);outline-offset:2px}.fusioni-gallery-strip--lightbox .fusioni-gallery-strip-dot:focus-visible{outline-color:hsla(0,0%,100%,.85)}.fusioni-document-images{margin-top:.25rem;max-width:100%;min-width:0;position:relative;width:100%}.fusioni-document-images-header{align-items:center;display:flex;justify-content:center;margin-bottom:.75rem;min-height:1.25rem;position:relative}.fusioni-document-images-header:before{background:var(--fusioni-border);content:"";height:1px;left:0;position:absolute;right:0;top:50%;z-index:0}.fusioni-chat-widget.dark .fusioni-document-images-header:before{background:hsla(0,0%,100%,.12)}.fusioni-document-images-header-label{align-items:center;background:var(--fusioni-bg-secondary);color:var(--fusioni-text-secondary);display:inline-flex;font-size:.8125rem;font-weight:600;gap:.375rem;padding:0 .625rem;position:relative;z-index:1}.fusioni-document-images-header-icon{flex-shrink:0;height:1rem;opacity:.9;width:1rem}.fusioni-document-image-btn{background:hsla(0,0%,100%,.4);border:1px solid rgba(0,0,0,.1);border-radius:var(--fusioni-radius-xl);box-shadow:var(--fusioni-shadow);cursor:pointer;display:block;overflow:hidden;padding:0;position:relative;transition:transform .2s ease,box-shadow .2s ease;width:100%}.fusioni-chat-widget.dark .fusioni-document-image-btn{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.1)}.fusioni-document-image-btn:hover{box-shadow:var(--fusioni-shadow-md);transform:translateY(-2px)}.fusioni-document-image-btn:focus{outline:none}.fusioni-document-image-btn:focus-visible{box-shadow:0 0 0 2px rgba(37,99,235,.5)}.fusioni-document-image-aspect{aspect-ratio:4/3;width:100%}.fusioni-document-image-aspect img{display:block;height:100%;object-fit:cover;transition:transform .2s ease;width:100%}.fusioni-document-image-btn:hover .fusioni-document-image-aspect img{transform:scale(1.02)}