@miiflow/assistant-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +563 -0
- package/dist/WelcomeScreen-CsFaFNcu.d.mts +246 -0
- package/dist/WelcomeScreen-TrcbOYob.d.ts +246 -0
- package/dist/avatar-D5eHcfjf.d.mts +109 -0
- package/dist/avatar-DftdWqSs.d.ts +109 -0
- package/dist/branding-SzYU4ncD.d.mts +18 -0
- package/dist/branding-SzYU4ncD.d.ts +18 -0
- package/dist/chunk-3E2HG62U.mjs +2 -0
- package/dist/chunk-3E2HG62U.mjs.map +1 -0
- package/dist/chunk-3ERHTQXR.js +2 -0
- package/dist/chunk-3ERHTQXR.js.map +1 -0
- package/dist/chunk-3GQNGDXX.mjs +22 -0
- package/dist/chunk-3GQNGDXX.mjs.map +1 -0
- package/dist/chunk-3KB4JYSQ.js +2 -0
- package/dist/chunk-3KB4JYSQ.js.map +1 -0
- package/dist/chunk-BA3VCHRC.js +22 -0
- package/dist/chunk-BA3VCHRC.js.map +1 -0
- package/dist/chunk-CRNBTU42.mjs +2 -0
- package/dist/chunk-CRNBTU42.mjs.map +1 -0
- package/dist/chunk-KPGHBLGY.mjs +2 -0
- package/dist/chunk-KPGHBLGY.mjs.map +1 -0
- package/dist/chunk-LJQHWCUK.js +2 -0
- package/dist/chunk-LJQHWCUK.js.map +1 -0
- package/dist/chunk-MFCWFFJV.mjs +2 -0
- package/dist/chunk-MFCWFFJV.mjs.map +1 -0
- package/dist/chunk-NSTK5EUQ.js +2 -0
- package/dist/chunk-NSTK5EUQ.js.map +1 -0
- package/dist/chunk-OCKHJ4WO.js +2 -0
- package/dist/chunk-OCKHJ4WO.js.map +1 -0
- package/dist/chunk-RTT6LULU.mjs +2 -0
- package/dist/chunk-RTT6LULU.mjs.map +1 -0
- package/dist/client/index.d.mts +249 -0
- package/dist/client/index.d.ts +249 -0
- package/dist/client/index.js +9 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/index.mjs +9 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/context/index.d.mts +43 -0
- package/dist/context/index.d.ts +43 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/index.mjs +2 -0
- package/dist/context/index.mjs.map +1 -0
- package/dist/hooks/index.d.mts +109 -0
- package/dist/hooks/index.d.ts +109 -0
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +2 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/index.d.mts +157 -0
- package/dist/index.d.ts +157 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/message-B21_kqE2.d.ts +78 -0
- package/dist/message-ufYsvKXP.d.mts +78 -0
- package/dist/primitives/index.d.mts +86 -0
- package/dist/primitives/index.d.ts +86 -0
- package/dist/primitives/index.js +2 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/index.mjs +2 -0
- package/dist/primitives/index.mjs.map +1 -0
- package/dist/streaming-CF63E6iS.d.mts +426 -0
- package/dist/streaming-CF63E6iS.d.ts +426 -0
- package/dist/styled/index.d.mts +477 -0
- package/dist/styled/index.d.ts +477 -0
- package/dist/styled/index.js +2 -0
- package/dist/styled/index.js.map +1 -0
- package/dist/styled/index.mjs +2 -0
- package/dist/styled/index.mjs.map +1 -0
- package/dist/styles-no-preflight.css +1 -0
- package/dist/styles.css +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
export { A as AttachmentPreview, g as AttachmentPreviewProps, a as Avatar, h as AvatarProps, C as ChatContainer, i as ChatContainerProps, b as ChatLayout, j as ChatLayoutProps, M as MarkdownContent, k as MarkdownContentProps, c as Message, d as MessageComposer, l as MessageComposerProps, e as MessageList, m as MessageListProps, n as MessageProps, S as StreamingText, o as StreamingTextProps, f as SuggestedActions, p as SuggestedActionsProps, T as TypingIndicator, q as TypingIndicatorProps, W as WelcomeScreen, r as WelcomeScreenProps } from '../WelcomeScreen-TrcbOYob.js';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import react__default, { ReactNode } from 'react';
|
|
4
|
+
import { A as Attachment, S as SourceReference } from '../message-B21_kqE2.js';
|
|
5
|
+
export { C as ChatMessage, M as MessageData, a as Participant, P as ParticipantRole, b as SourceTypeConfig, c as SuggestedAction, d as SuggestedActionType } from '../message-B21_kqE2.js';
|
|
6
|
+
import { S as StreamingChunk, P as PlanData, C as ClarificationData, V as VisualizationChunkData, d as VisualizationActionEvent, e as ChartVisualizationData, f as VisualizationConfig, T as TableVisualizationData, g as CardVisualizationData, K as KpiVisualizationData, h as CodePreviewVisualizationData, F as FormVisualizationData, E as Event, i as EventStatus } from '../streaming-CF63E6iS.js';
|
|
7
|
+
export { j as ChunkType, k as ClaudeToolChunkData, l as EventType, m as FileOperationChunkData, n as FollowupAction, O as ObservationEvent, o as ParallelSubtaskData, p as PlanningEvent, q as ProgressData, r as SearchResultsChunkData, s as StreamingMessage, t as SubTaskData, u as SubagentChunkData, v as SubagentInfo, w as SubtaskEvent, x as TerminalChunkData, y as ThinkingEvent, z as ToolEvent, A as VisualizationType, W as WaveData, B as WebOperationChunkData } from '../streaming-CF63E6iS.js';
|
|
8
|
+
import { z, ZodSchema } from 'zod';
|
|
9
|
+
export { ChatContextValue, ChatProvider, ChatProviderProps, useChatContext } from '../context/index.js';
|
|
10
|
+
export { B as BrandingData } from '../branding-SzYU4ncD.js';
|
|
11
|
+
export { u as useComposer, g as useMessage } from '../avatar-DftdWqSs.js';
|
|
12
|
+
|
|
13
|
+
interface LoadingDotsProps {
|
|
14
|
+
/** Size variant */
|
|
15
|
+
size?: "small" | "medium" | "large";
|
|
16
|
+
/** Additional CSS classes */
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Animated loading dots indicator
|
|
21
|
+
*/
|
|
22
|
+
declare function LoadingDots({ size, className }: LoadingDotsProps): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
interface TimeMarkerProps {
|
|
25
|
+
/** The label to display (e.g. "Today", "Yesterday", "Monday") */
|
|
26
|
+
label: string;
|
|
27
|
+
/** Additional CSS classes */
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Centered time separator between message groups.
|
|
32
|
+
* Displays a label like "Today" or "Yesterday" with horizontal rules.
|
|
33
|
+
*/
|
|
34
|
+
declare function TimeMarker({ label, className }: TimeMarkerProps): react_jsx_runtime.JSX.Element;
|
|
35
|
+
|
|
36
|
+
interface ChatHeaderAction {
|
|
37
|
+
id: string;
|
|
38
|
+
label: string;
|
|
39
|
+
icon?: react__default.ReactNode;
|
|
40
|
+
onClick: () => void;
|
|
41
|
+
disabled?: boolean;
|
|
42
|
+
}
|
|
43
|
+
interface ChatHeaderProps {
|
|
44
|
+
/** Assistant/chat title */
|
|
45
|
+
title: string;
|
|
46
|
+
/** Optional subtitle/description */
|
|
47
|
+
subtitle?: string;
|
|
48
|
+
/** Logo URL or element */
|
|
49
|
+
logo?: string | react__default.ReactNode;
|
|
50
|
+
/** Menu actions */
|
|
51
|
+
actions?: ChatHeaderAction[];
|
|
52
|
+
/** Show close button */
|
|
53
|
+
showClose?: boolean;
|
|
54
|
+
/** Close button handler */
|
|
55
|
+
onClose?: () => void;
|
|
56
|
+
/** Loading state */
|
|
57
|
+
loading?: boolean;
|
|
58
|
+
/** Additional class names */
|
|
59
|
+
className?: string;
|
|
60
|
+
/** Custom styles via CSS variables */
|
|
61
|
+
style?: react__default.CSSProperties;
|
|
62
|
+
}
|
|
63
|
+
declare function ChatHeader({ title, subtitle, logo, actions, showClose, onClose, loading, className, style, }: ChatHeaderProps): react_jsx_runtime.JSX.Element;
|
|
64
|
+
|
|
65
|
+
interface MessageAttachmentsProps {
|
|
66
|
+
/** List of attachments to display */
|
|
67
|
+
attachments: Attachment[];
|
|
68
|
+
/** Custom download handler */
|
|
69
|
+
onDownload?: (attachment: Attachment) => void;
|
|
70
|
+
/** Custom preview handler */
|
|
71
|
+
onPreview?: (attachment: Attachment) => void;
|
|
72
|
+
/** Additional class names */
|
|
73
|
+
className?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Display attachments (images, videos, documents) in messages
|
|
77
|
+
*/
|
|
78
|
+
declare function MessageAttachments({ attachments, onDownload, onPreview, className, }: MessageAttachmentsProps): react_jsx_runtime.JSX.Element | null;
|
|
79
|
+
|
|
80
|
+
interface ReasoningPanelProps {
|
|
81
|
+
/** Whether currently streaming */
|
|
82
|
+
isStreaming?: boolean;
|
|
83
|
+
/** Streaming chunks */
|
|
84
|
+
chunks?: StreamingChunk[];
|
|
85
|
+
/** Execution plan for Plan & Execute mode */
|
|
86
|
+
plan?: PlanData;
|
|
87
|
+
/** Execution timeline (completed messages) */
|
|
88
|
+
executionTimeline?: any[];
|
|
89
|
+
/** User message timestamp for duration calculation */
|
|
90
|
+
userMessageTimestamp?: number;
|
|
91
|
+
/** Total execution time in seconds */
|
|
92
|
+
executionTime?: number;
|
|
93
|
+
/** Whether expanded by default */
|
|
94
|
+
defaultExpanded?: boolean;
|
|
95
|
+
/** Controlled expanded state */
|
|
96
|
+
expanded?: boolean;
|
|
97
|
+
/** Callback when expanded state changes */
|
|
98
|
+
onExpandedChange?: (expanded: boolean) => void;
|
|
99
|
+
/** Additional class names */
|
|
100
|
+
className?: string;
|
|
101
|
+
}
|
|
102
|
+
declare function ReasoningPanel({ isStreaming, chunks, plan, executionTimeline, userMessageTimestamp, executionTime, defaultExpanded, expanded: controlledExpanded, onExpandedChange, className, }: ReasoningPanelProps): react_jsx_runtime.JSX.Element | null;
|
|
103
|
+
|
|
104
|
+
interface ClarificationPanelProps {
|
|
105
|
+
clarification: ClarificationData;
|
|
106
|
+
onSubmit: (response: string) => void;
|
|
107
|
+
onOptionSelect?: (option: string) => void;
|
|
108
|
+
disabled?: boolean;
|
|
109
|
+
loading?: boolean;
|
|
110
|
+
className?: string;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Stateless clarification panel - displays when the AI agent needs user input.
|
|
114
|
+
* Orange left-border panel with question, radio options, and free-text input.
|
|
115
|
+
*/
|
|
116
|
+
declare function ClarificationPanel({ clarification, onSubmit, onOptionSelect, disabled, loading, className, }: ClarificationPanelProps): react_jsx_runtime.JSX.Element;
|
|
117
|
+
|
|
118
|
+
interface CitationSourcesProps {
|
|
119
|
+
sources: SourceReference[];
|
|
120
|
+
className?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Renders citation sources as a horizontal row of clickable chips.
|
|
124
|
+
* Clicking a chip opens a modal showing full source content.
|
|
125
|
+
*/
|
|
126
|
+
declare function CitationSources({ sources, className }: CitationSourcesProps): react_jsx_runtime.JSX.Element | null;
|
|
127
|
+
interface SourceDetailModalProps {
|
|
128
|
+
source: SourceReference | null;
|
|
129
|
+
onClose: () => void;
|
|
130
|
+
}
|
|
131
|
+
declare function SourceDetailModal({ source, onClose, }: SourceDetailModalProps): react_jsx_runtime.JSX.Element | null;
|
|
132
|
+
/**
|
|
133
|
+
* Inline citation badge - renders a small numbered badge like [1]
|
|
134
|
+
* with optional tooltip on hover and click-to-open URL.
|
|
135
|
+
*/
|
|
136
|
+
interface InlineCitationProps {
|
|
137
|
+
index: number;
|
|
138
|
+
source?: SourceReference;
|
|
139
|
+
}
|
|
140
|
+
declare function InlineCitation({ index, source }: InlineCitationProps): react_jsx_runtime.JSX.Element;
|
|
141
|
+
|
|
142
|
+
interface ClaudeToolPreviewProps {
|
|
143
|
+
chunk: StreamingChunk;
|
|
144
|
+
}
|
|
145
|
+
declare function ClaudeToolPreview({ chunk }: ClaudeToolPreviewProps): react_jsx_runtime.JSX.Element | null;
|
|
146
|
+
|
|
147
|
+
interface TerminalOutputProps {
|
|
148
|
+
chunk: StreamingChunk;
|
|
149
|
+
}
|
|
150
|
+
declare function TerminalOutput({ chunk }: TerminalOutputProps): react_jsx_runtime.JSX.Element | null;
|
|
151
|
+
|
|
152
|
+
interface FileOperationPreviewProps {
|
|
153
|
+
chunk: StreamingChunk;
|
|
154
|
+
}
|
|
155
|
+
declare function FileOperationPreview({ chunk }: FileOperationPreviewProps): react_jsx_runtime.JSX.Element | null;
|
|
156
|
+
|
|
157
|
+
interface SearchResultsViewProps {
|
|
158
|
+
chunk: StreamingChunk;
|
|
159
|
+
}
|
|
160
|
+
declare function SearchResultsView({ chunk }: SearchResultsViewProps): react_jsx_runtime.JSX.Element | null;
|
|
161
|
+
|
|
162
|
+
interface WebOperationPreviewProps {
|
|
163
|
+
chunk: StreamingChunk;
|
|
164
|
+
}
|
|
165
|
+
declare function WebOperationPreview({ chunk }: WebOperationPreviewProps): react_jsx_runtime.JSX.Element | null;
|
|
166
|
+
|
|
167
|
+
interface SubagentPanelProps {
|
|
168
|
+
chunk: StreamingChunk;
|
|
169
|
+
}
|
|
170
|
+
declare function SubagentPanel({ chunk }: SubagentPanelProps): react_jsx_runtime.JSX.Element | null;
|
|
171
|
+
|
|
172
|
+
declare const chartVisualizationSchema: z.ZodObject<{
|
|
173
|
+
chartType: z.ZodEnum<{
|
|
174
|
+
line: "line";
|
|
175
|
+
bar: "bar";
|
|
176
|
+
pie: "pie";
|
|
177
|
+
area: "area";
|
|
178
|
+
scatter: "scatter";
|
|
179
|
+
composed: "composed";
|
|
180
|
+
}>;
|
|
181
|
+
series: z.ZodArray<z.ZodObject<{
|
|
182
|
+
name: z.ZodString;
|
|
183
|
+
data: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
184
|
+
x: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
185
|
+
y: z.ZodNumber;
|
|
186
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
187
|
+
name: z.ZodString;
|
|
188
|
+
value: z.ZodNumber;
|
|
189
|
+
}, z.core.$strip>]>>;
|
|
190
|
+
color: z.ZodOptional<z.ZodString>;
|
|
191
|
+
}, z.core.$strip>>;
|
|
192
|
+
xAxis: z.ZodOptional<z.ZodObject<{
|
|
193
|
+
label: z.ZodOptional<z.ZodString>;
|
|
194
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
195
|
+
number: "number";
|
|
196
|
+
category: "category";
|
|
197
|
+
time: "time";
|
|
198
|
+
}>>;
|
|
199
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
200
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
201
|
+
}, z.core.$strip>>;
|
|
202
|
+
yAxis: z.ZodOptional<z.ZodObject<{
|
|
203
|
+
label: z.ZodOptional<z.ZodString>;
|
|
204
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
205
|
+
number: "number";
|
|
206
|
+
category: "category";
|
|
207
|
+
time: "time";
|
|
208
|
+
}>>;
|
|
209
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
210
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
211
|
+
}, z.core.$strip>>;
|
|
212
|
+
}, z.core.$strip>;
|
|
213
|
+
declare const tableVisualizationSchema: z.ZodObject<{
|
|
214
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
215
|
+
key: z.ZodString;
|
|
216
|
+
label: z.ZodString;
|
|
217
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
218
|
+
string: "string";
|
|
219
|
+
number: "number";
|
|
220
|
+
boolean: "boolean";
|
|
221
|
+
progress: "progress";
|
|
222
|
+
currency: "currency";
|
|
223
|
+
date: "date";
|
|
224
|
+
badge: "badge";
|
|
225
|
+
link: "link";
|
|
226
|
+
}>>;
|
|
227
|
+
align: z.ZodOptional<z.ZodEnum<{
|
|
228
|
+
left: "left";
|
|
229
|
+
center: "center";
|
|
230
|
+
right: "right";
|
|
231
|
+
}>>;
|
|
232
|
+
width: z.ZodOptional<z.ZodString>;
|
|
233
|
+
}, z.core.$strip>>;
|
|
234
|
+
rows: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
235
|
+
}, z.core.$strip>;
|
|
236
|
+
declare const cardVisualizationSchema: z.ZodObject<{
|
|
237
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
238
|
+
imageUrl: z.ZodOptional<z.ZodString>;
|
|
239
|
+
sections: z.ZodArray<z.ZodObject<{
|
|
240
|
+
title: z.ZodOptional<z.ZodString>;
|
|
241
|
+
items: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
242
|
+
label: z.ZodString;
|
|
243
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
244
|
+
}, z.core.$strip>>>;
|
|
245
|
+
content: z.ZodOptional<z.ZodString>;
|
|
246
|
+
}, z.core.$strip>>;
|
|
247
|
+
actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
248
|
+
label: z.ZodString;
|
|
249
|
+
action: z.ZodString;
|
|
250
|
+
variant: z.ZodOptional<z.ZodEnum<{
|
|
251
|
+
primary: "primary";
|
|
252
|
+
secondary: "secondary";
|
|
253
|
+
text: "text";
|
|
254
|
+
}>>;
|
|
255
|
+
}, z.core.$strip>>>;
|
|
256
|
+
}, z.core.$strip>;
|
|
257
|
+
declare const kpiVisualizationSchema: z.ZodObject<{
|
|
258
|
+
metrics: z.ZodArray<z.ZodObject<{
|
|
259
|
+
label: z.ZodString;
|
|
260
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
261
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
262
|
+
trend: z.ZodOptional<z.ZodEnum<{
|
|
263
|
+
up: "up";
|
|
264
|
+
down: "down";
|
|
265
|
+
neutral: "neutral";
|
|
266
|
+
}>>;
|
|
267
|
+
change: z.ZodOptional<z.ZodString>;
|
|
268
|
+
changeLabel: z.ZodOptional<z.ZodString>;
|
|
269
|
+
sparkline: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
270
|
+
color: z.ZodOptional<z.ZodString>;
|
|
271
|
+
}, z.core.$strip>>;
|
|
272
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
273
|
+
row: "row";
|
|
274
|
+
grid: "grid";
|
|
275
|
+
}>>;
|
|
276
|
+
}, z.core.$strip>;
|
|
277
|
+
declare const codePreviewVisualizationSchema: z.ZodObject<{
|
|
278
|
+
code: z.ZodString;
|
|
279
|
+
language: z.ZodString;
|
|
280
|
+
lineNumbers: z.ZodOptional<z.ZodBoolean>;
|
|
281
|
+
highlightLines: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
282
|
+
startLine: z.ZodOptional<z.ZodNumber>;
|
|
283
|
+
}, z.core.$strip>;
|
|
284
|
+
declare const formVisualizationSchema: z.ZodObject<{
|
|
285
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
286
|
+
name: z.ZodString;
|
|
287
|
+
type: z.ZodEnum<{
|
|
288
|
+
number: "number";
|
|
289
|
+
date: "date";
|
|
290
|
+
text: "text";
|
|
291
|
+
email: "email";
|
|
292
|
+
select: "select";
|
|
293
|
+
multiselect: "multiselect";
|
|
294
|
+
checkbox: "checkbox";
|
|
295
|
+
radio: "radio";
|
|
296
|
+
textarea: "textarea";
|
|
297
|
+
datetime: "datetime";
|
|
298
|
+
}>;
|
|
299
|
+
label: z.ZodString;
|
|
300
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
301
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
302
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
303
|
+
value: z.ZodString;
|
|
304
|
+
label: z.ZodString;
|
|
305
|
+
}, z.core.$strip>>>;
|
|
306
|
+
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
307
|
+
validation: z.ZodOptional<z.ZodObject<{
|
|
308
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
309
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
310
|
+
pattern: z.ZodOptional<z.ZodString>;
|
|
311
|
+
message: z.ZodOptional<z.ZodString>;
|
|
312
|
+
}, z.core.$strip>>;
|
|
313
|
+
}, z.core.$strip>>;
|
|
314
|
+
submitAction: z.ZodOptional<z.ZodString>;
|
|
315
|
+
}, z.core.$strip>;
|
|
316
|
+
|
|
317
|
+
interface VisualizationRendererProps {
|
|
318
|
+
data: VisualizationChunkData;
|
|
319
|
+
isStreaming?: boolean;
|
|
320
|
+
onAction?: (event: VisualizationActionEvent) => void;
|
|
321
|
+
}
|
|
322
|
+
declare function VisualizationRenderer({ data, isStreaming, onAction, }: VisualizationRendererProps): react_jsx_runtime.JSX.Element;
|
|
323
|
+
|
|
324
|
+
interface ChartVisualizationProps {
|
|
325
|
+
data: ChartVisualizationData;
|
|
326
|
+
config?: VisualizationConfig;
|
|
327
|
+
isStreaming?: boolean;
|
|
328
|
+
}
|
|
329
|
+
declare function ChartVisualization({ data, config, isStreaming }: ChartVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
330
|
+
|
|
331
|
+
interface TableVisualizationProps {
|
|
332
|
+
data: TableVisualizationData;
|
|
333
|
+
config?: VisualizationConfig;
|
|
334
|
+
isStreaming?: boolean;
|
|
335
|
+
}
|
|
336
|
+
declare function TableVisualization({ data, config }: TableVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
337
|
+
|
|
338
|
+
interface CardVisualizationProps {
|
|
339
|
+
data: CardVisualizationData;
|
|
340
|
+
config?: VisualizationConfig;
|
|
341
|
+
isStreaming?: boolean;
|
|
342
|
+
onAction?: (event: VisualizationActionEvent) => void;
|
|
343
|
+
}
|
|
344
|
+
declare function CardVisualization({ data, config, onAction }: CardVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
345
|
+
|
|
346
|
+
interface KpiVisualizationProps {
|
|
347
|
+
data: KpiVisualizationData;
|
|
348
|
+
config?: VisualizationConfig;
|
|
349
|
+
isStreaming?: boolean;
|
|
350
|
+
}
|
|
351
|
+
declare function KpiVisualization({ data, config, isStreaming }: KpiVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
352
|
+
|
|
353
|
+
interface CodePreviewVisualizationProps {
|
|
354
|
+
data: CodePreviewVisualizationData;
|
|
355
|
+
config?: VisualizationConfig;
|
|
356
|
+
isStreaming?: boolean;
|
|
357
|
+
}
|
|
358
|
+
declare function CodePreviewVisualization({ data }: CodePreviewVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
359
|
+
|
|
360
|
+
interface FormVisualizationProps {
|
|
361
|
+
data: FormVisualizationData;
|
|
362
|
+
config?: VisualizationConfig;
|
|
363
|
+
isStreaming?: boolean;
|
|
364
|
+
onAction?: (event: VisualizationActionEvent) => void;
|
|
365
|
+
}
|
|
366
|
+
declare function FormVisualization({ data, config, isStreaming, onAction }: FormVisualizationProps): react_jsx_runtime.JSX.Element;
|
|
367
|
+
|
|
368
|
+
interface VisualizationEntry {
|
|
369
|
+
component: React.ComponentType<{
|
|
370
|
+
data: any;
|
|
371
|
+
config?: VisualizationConfig;
|
|
372
|
+
isStreaming?: boolean;
|
|
373
|
+
onAction?: (event: VisualizationActionEvent) => void;
|
|
374
|
+
}>;
|
|
375
|
+
schema?: ZodSchema;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Register a visualization type. Built-in types are registered at module load.
|
|
379
|
+
* Consumers can call this to add custom visualization types.
|
|
380
|
+
*/
|
|
381
|
+
declare function registerVisualization(type: string, entry: VisualizationEntry): void;
|
|
382
|
+
/**
|
|
383
|
+
* Look up a registered visualization by type string.
|
|
384
|
+
*/
|
|
385
|
+
declare function getVisualization(type: string): VisualizationEntry | undefined;
|
|
386
|
+
/**
|
|
387
|
+
* Return all registered visualization type strings.
|
|
388
|
+
*/
|
|
389
|
+
declare function getRegisteredTypes(): string[];
|
|
390
|
+
|
|
391
|
+
interface EventContentProps {
|
|
392
|
+
event: Event;
|
|
393
|
+
className?: string;
|
|
394
|
+
/** When true, shows beamer scanning effect on tool items */
|
|
395
|
+
isRunning?: boolean;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Renders content for different event types
|
|
399
|
+
* - Thinking: Markdown content with subtle styling
|
|
400
|
+
* - Planning: Markdown content with planning context
|
|
401
|
+
* - Tool: Inline icon + text display with beamer effect when running
|
|
402
|
+
* - Observation: Colored result panel
|
|
403
|
+
*/
|
|
404
|
+
declare function EventContent({ event, className, isRunning }: EventContentProps): react_jsx_runtime.JSX.Element | null;
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Convert StreamingChunk to Event format
|
|
408
|
+
*/
|
|
409
|
+
declare function convertChunkToEvent(chunk: StreamingChunk, index: number): Event | null;
|
|
410
|
+
/**
|
|
411
|
+
* Convert timeline items (from metadata) to Events
|
|
412
|
+
*/
|
|
413
|
+
declare function convertTimelineToEvents(timeline: Array<Record<string, unknown>>): Event[];
|
|
414
|
+
interface EventTimelineProps {
|
|
415
|
+
events: Event[];
|
|
416
|
+
isStreaming?: boolean;
|
|
417
|
+
className?: string;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Unified event timeline component
|
|
421
|
+
* Displays thinking, tool execution, and observation events
|
|
422
|
+
*/
|
|
423
|
+
declare function EventTimeline({ events, className }: EventTimelineProps): react_jsx_runtime.JSX.Element | null;
|
|
424
|
+
|
|
425
|
+
interface PlanTimelineProps {
|
|
426
|
+
plan: PlanData;
|
|
427
|
+
streamingChunks?: StreamingChunk[];
|
|
428
|
+
className?: string;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Minimal timeline for Plan & Execute mode.
|
|
432
|
+
* Matches in-house style: simple "Plan:" header + inline text rows.
|
|
433
|
+
*/
|
|
434
|
+
declare function PlanTimeline({ plan, streamingChunks, className, }: PlanTimelineProps): react_jsx_runtime.JSX.Element;
|
|
435
|
+
|
|
436
|
+
interface StatusBadgeProps {
|
|
437
|
+
status: EventStatus;
|
|
438
|
+
size?: number;
|
|
439
|
+
className?: string;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Circular status badge with magical animations
|
|
443
|
+
* - Pending: Dashed circle (muted)
|
|
444
|
+
* - Running: Glowing orb with pulse effect
|
|
445
|
+
* - Completed: Green check with pop + flash animation
|
|
446
|
+
* - Failed: Red X
|
|
447
|
+
*/
|
|
448
|
+
declare function StatusBadge({ status, size, className }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
449
|
+
|
|
450
|
+
interface TimelineItemData {
|
|
451
|
+
id: string;
|
|
452
|
+
status: EventStatus;
|
|
453
|
+
content: ReactNode;
|
|
454
|
+
}
|
|
455
|
+
interface TimelineProps {
|
|
456
|
+
items: TimelineItemData[];
|
|
457
|
+
badgeSize?: number;
|
|
458
|
+
className?: string;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Vertical timeline component
|
|
462
|
+
* Displays items with status badges and connecting lines
|
|
463
|
+
*/
|
|
464
|
+
declare function Timeline({ items, badgeSize, className }: TimelineProps): react_jsx_runtime.JSX.Element | null;
|
|
465
|
+
interface TimelineItemProps {
|
|
466
|
+
status: EventStatus;
|
|
467
|
+
isLast?: boolean;
|
|
468
|
+
badgeSize?: number;
|
|
469
|
+
children: ReactNode;
|
|
470
|
+
className?: string;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Single timeline item (alternative API)
|
|
474
|
+
*/
|
|
475
|
+
declare function TimelineItem({ status, isLast, badgeSize, children, className, }: TimelineItemProps): react_jsx_runtime.JSX.Element;
|
|
476
|
+
|
|
477
|
+
export { Attachment, CardVisualization, type CardVisualizationProps, ChartVisualization, type ChartVisualizationProps, ChatHeader, type ChatHeaderAction, type ChatHeaderProps, CitationSources, type CitationSourcesProps, ClarificationData, ClarificationPanel, type ClarificationPanelProps, ClaudeToolPreview, type ClaudeToolPreviewProps, CodePreviewVisualization, type CodePreviewVisualizationProps, Event, EventContent, EventStatus, EventTimeline, type EventTimelineProps, FileOperationPreview, type FileOperationPreviewProps, FormVisualization, type FormVisualizationProps, InlineCitation, type InlineCitationProps, KpiVisualization, type KpiVisualizationProps, LoadingDots, type LoadingDotsProps, MessageAttachments, type MessageAttachmentsProps, PlanData, PlanTimeline, type PlanTimelineProps, ReasoningPanel, type ReasoningPanelProps, SearchResultsView, type SearchResultsViewProps, SourceDetailModal, type SourceDetailModalProps, SourceReference, StatusBadge, StreamingChunk, SubagentPanel, type SubagentPanelProps, TableVisualization, type TableVisualizationProps, TerminalOutput, type TerminalOutputProps, TimeMarker, type TimeMarkerProps, Timeline, TimelineItem, type TimelineItemData, type TimelineItemProps, type TimelineProps, VisualizationActionEvent, VisualizationChunkData, VisualizationConfig, type VisualizationEntry, VisualizationRenderer, type VisualizationRendererProps, WebOperationPreview, type WebOperationPreviewProps, cardVisualizationSchema, chartVisualizationSchema, codePreviewVisualizationSchema, convertChunkToEvent, convertTimelineToEvents, formVisualizationSchema, getRegisteredTypes, getVisualization, kpiVisualizationSchema, registerVisualization, tableVisualizationSchema };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkBA3VCHRC_js=require('../chunk-BA3VCHRC.js'),chunk3KB4JYSQ_js=require('../chunk-3KB4JYSQ.js');require('../chunk-LJQHWCUK.js');var chunkOCKHJ4WO_js=require('../chunk-OCKHJ4WO.js');Object.defineProperty(exports,"AttachmentPreview",{enumerable:true,get:function(){return chunkBA3VCHRC_js.b}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkBA3VCHRC_js.c}});Object.defineProperty(exports,"CardVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.E}});Object.defineProperty(exports,"ChartVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.C}});Object.defineProperty(exports,"ChatContainer",{enumerable:true,get:function(){return chunkBA3VCHRC_js.d}});Object.defineProperty(exports,"ChatHeader",{enumerable:true,get:function(){return chunkBA3VCHRC_js.X}});Object.defineProperty(exports,"ChatLayout",{enumerable:true,get:function(){return chunkBA3VCHRC_js.Y}});Object.defineProperty(exports,"CitationSources",{enumerable:true,get:function(){return chunkBA3VCHRC_js.g}});Object.defineProperty(exports,"ClarificationPanel",{enumerable:true,get:function(){return chunkBA3VCHRC_js.j}});Object.defineProperty(exports,"ClaudeToolPreview",{enumerable:true,get:function(){return chunkBA3VCHRC_js.t}});Object.defineProperty(exports,"CodePreviewVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.G}});Object.defineProperty(exports,"EventContent",{enumerable:true,get:function(){return chunkBA3VCHRC_js.o}});Object.defineProperty(exports,"EventTimeline",{enumerable:true,get:function(){return chunkBA3VCHRC_js.r}});Object.defineProperty(exports,"FileOperationPreview",{enumerable:true,get:function(){return chunkBA3VCHRC_js.v}});Object.defineProperty(exports,"FormVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.H}});Object.defineProperty(exports,"InlineCitation",{enumerable:true,get:function(){return chunkBA3VCHRC_js.i}});Object.defineProperty(exports,"KpiVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.F}});Object.defineProperty(exports,"LoadingDots",{enumerable:true,get:function(){return chunkBA3VCHRC_js.e}});Object.defineProperty(exports,"MarkdownContent",{enumerable:true,get:function(){return chunkBA3VCHRC_js.f}});Object.defineProperty(exports,"Message",{enumerable:true,get:function(){return chunkBA3VCHRC_js.S}});Object.defineProperty(exports,"MessageAttachments",{enumerable:true,get:function(){return chunkBA3VCHRC_js.k}});Object.defineProperty(exports,"MessageComposer",{enumerable:true,get:function(){return chunkBA3VCHRC_js.T}});Object.defineProperty(exports,"MessageList",{enumerable:true,get:function(){return chunkBA3VCHRC_js.U}});Object.defineProperty(exports,"PlanTimeline",{enumerable:true,get:function(){return chunkBA3VCHRC_js.s}});Object.defineProperty(exports,"ReasoningPanel",{enumerable:true,get:function(){return chunkBA3VCHRC_js.z}});Object.defineProperty(exports,"SearchResultsView",{enumerable:true,get:function(){return chunkBA3VCHRC_js.w}});Object.defineProperty(exports,"SourceDetailModal",{enumerable:true,get:function(){return chunkBA3VCHRC_js.h}});Object.defineProperty(exports,"StatusBadge",{enumerable:true,get:function(){return chunkBA3VCHRC_js.l}});Object.defineProperty(exports,"StreamingText",{enumerable:true,get:function(){return chunkBA3VCHRC_js.A}});Object.defineProperty(exports,"SubagentPanel",{enumerable:true,get:function(){return chunkBA3VCHRC_js.y}});Object.defineProperty(exports,"SuggestedActions",{enumerable:true,get:function(){return chunkBA3VCHRC_js.B}});Object.defineProperty(exports,"TableVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.D}});Object.defineProperty(exports,"TerminalOutput",{enumerable:true,get:function(){return chunkBA3VCHRC_js.u}});Object.defineProperty(exports,"TimeMarker",{enumerable:true,get:function(){return chunkBA3VCHRC_js.V}});Object.defineProperty(exports,"Timeline",{enumerable:true,get:function(){return chunkBA3VCHRC_js.m}});Object.defineProperty(exports,"TimelineItem",{enumerable:true,get:function(){return chunkBA3VCHRC_js.n}});Object.defineProperty(exports,"TypingIndicator",{enumerable:true,get:function(){return chunkBA3VCHRC_js.W}});Object.defineProperty(exports,"VisualizationRenderer",{enumerable:true,get:function(){return chunkBA3VCHRC_js.R}});Object.defineProperty(exports,"WebOperationPreview",{enumerable:true,get:function(){return chunkBA3VCHRC_js.x}});Object.defineProperty(exports,"WelcomeScreen",{enumerable:true,get:function(){return chunkBA3VCHRC_js.Z}});Object.defineProperty(exports,"cardVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.N}});Object.defineProperty(exports,"chartVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.L}});Object.defineProperty(exports,"codePreviewVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.P}});Object.defineProperty(exports,"convertChunkToEvent",{enumerable:true,get:function(){return chunkBA3VCHRC_js.p}});Object.defineProperty(exports,"convertTimelineToEvents",{enumerable:true,get:function(){return chunkBA3VCHRC_js.q}});Object.defineProperty(exports,"formVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.Q}});Object.defineProperty(exports,"getRegisteredTypes",{enumerable:true,get:function(){return chunkBA3VCHRC_js.K}});Object.defineProperty(exports,"getVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.J}});Object.defineProperty(exports,"kpiVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.O}});Object.defineProperty(exports,"registerVisualization",{enumerable:true,get:function(){return chunkBA3VCHRC_js.I}});Object.defineProperty(exports,"tableVisualizationSchema",{enumerable:true,get:function(){return chunkBA3VCHRC_js.M}});Object.defineProperty(exports,"useComposer",{enumerable:true,get:function(){return chunk3KB4JYSQ_js.h}});Object.defineProperty(exports,"useMessage",{enumerable:true,get:function(){return chunk3KB4JYSQ_js.b}});Object.defineProperty(exports,"ChatProvider",{enumerable:true,get:function(){return chunkOCKHJ4WO_js.b}});Object.defineProperty(exports,"useChatContext",{enumerable:true,get:function(){return chunkOCKHJ4WO_js.c}});//# sourceMappingURL=index.js.map
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export{b as AttachmentPreview,c as Avatar,E as CardVisualization,C as ChartVisualization,d as ChatContainer,X as ChatHeader,Y as ChatLayout,g as CitationSources,j as ClarificationPanel,t as ClaudeToolPreview,G as CodePreviewVisualization,o as EventContent,r as EventTimeline,v as FileOperationPreview,H as FormVisualization,i as InlineCitation,F as KpiVisualization,e as LoadingDots,f as MarkdownContent,S as Message,k as MessageAttachments,T as MessageComposer,U as MessageList,s as PlanTimeline,z as ReasoningPanel,w as SearchResultsView,h as SourceDetailModal,l as StatusBadge,A as StreamingText,y as SubagentPanel,B as SuggestedActions,D as TableVisualization,u as TerminalOutput,V as TimeMarker,m as Timeline,n as TimelineItem,W as TypingIndicator,R as VisualizationRenderer,x as WebOperationPreview,Z as WelcomeScreen,N as cardVisualizationSchema,L as chartVisualizationSchema,P as codePreviewVisualizationSchema,p as convertChunkToEvent,q as convertTimelineToEvents,Q as formVisualizationSchema,K as getRegisteredTypes,J as getVisualization,O as kpiVisualizationSchema,I as registerVisualization,M as tableVisualizationSchema}from'../chunk-3GQNGDXX.mjs';export{h as useComposer,b as useMessage}from'../chunk-MFCWFFJV.mjs';import'../chunk-KPGHBLGY.mjs';export{b as ChatProvider,c as useChatContext}from'../chunk-RTT6LULU.mjs';//# sourceMappingURL=index.mjs.map
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:root{--chat-primary:#106997;--chat-secondary:#56c18a;--chat-error:#b1001b;--chat-warning:#dd9652;--chat-message-bg:rgba(0,0,0,.03);--chat-user-message-bg:var(--chat-primary);--chat-user-message-text:#fff;--chat-panel-bg:rgba(0,0,0,.02);--chat-panel-border:rgba(0,0,0,.06);--chat-border:rgba(0,0,0,.06);--chat-border-hover:rgba(0,0,0,.12);--chat-text:#1d2033;--chat-text-subtle:rgba(0,0,0,.5);--chat-placeholder:rgba(0,0,0,.4);--chat-font-family:"Inter","Assistant",system-ui,-apple-system,sans-serif;--chat-radius-message:0.5rem;--chat-radius-input:1rem;--chat-radius-panel:0.5rem;--chat-radius-button:0.5rem;--chat-halo-primary:rgba(16,105,151,.06);--chat-halo-secondary:rgba(86,193,138,.03)}.dark{--chat-message-bg:hsla(0,0%,100%,.05);--chat-panel-bg:hsla(0,0%,100%,.03);--chat-panel-border:hsla(0,0%,100%,.08);--chat-border:hsla(0,0%,100%,.08);--chat-border-hover:hsla(0,0%,100%,.15);--chat-text:#f5f5f5;--chat-text-subtle:hsla(0,0%,100%,.5);--chat-placeholder:hsla(0,0%,100%,.4);--chat-halo-primary:rgba(16,105,151,.1);--chat-halo-secondary:rgba(86,193,138,.05)}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.chat-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.1) transparent}.chat-scrollbar::-webkit-scrollbar{width:6px}.chat-scrollbar::-webkit-scrollbar-track{background:transparent}.chat-scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.1);border-radius:3px}.chat-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.2)}.dark .chat-scrollbar::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.1)}.dark .chat-scrollbar::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.2)}.chat-prose{line-height:1.625;color:var(--chat-text)}.chat-prose.prose-invert{color:var(--chat-user-message-text,#fff)}.chat-prose p{margin-bottom:.5rem}.chat-prose p:last-child{margin-bottom:0}.chat-prose h1{margin-top:1rem;font-size:1.25rem}.chat-prose h1,.chat-prose h2{margin-bottom:.5rem;line-height:1.75rem;font-weight:600}.chat-prose h2{margin-top:.75rem;font-size:1.125rem}.chat-prose h3{margin-top:.5rem;margin-bottom:.25rem;font-size:1rem;line-height:1.5rem;font-weight:500}.chat-prose ul{margin-bottom:.5rem;list-style-type:disc}.chat-prose ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.chat-prose ul{padding-left:1rem}.chat-prose ol{margin-bottom:.5rem;list-style-type:decimal}.chat-prose ol>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.chat-prose ol{padding-left:1rem}.chat-prose li{line-height:1.625}.chat-prose a{color:var(--chat-primary,#106997);text-decoration-line:underline}.chat-prose a:hover{opacity:.8}.chat-prose blockquote{margin-top:.5rem;margin-bottom:.5rem;border-left-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1));padding-left:.75rem;font-style:italic}.chat-prose code:not(pre code){border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1));padding:.125rem .25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}.dark .chat-prose code:not(pre code){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.chat-prose pre{margin-top:.5rem;margin-bottom:.5rem;overflow-x:auto;border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1));padding:.75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}.dark .chat-prose pre{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.chat-prose table{margin-top:.5rem;margin-bottom:.5rem;min-width:100%}.chat-prose table>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse));--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.chat-prose th{background-color:rgb(249 250 251/var(--tw-bg-opacity,1));padding:.5rem .75rem;text-align:left;font-size:.875rem;line-height:1.25rem;font-weight:500;color:rgb(55 65 81/var(--tw-text-opacity,1))}.chat-prose th,.dark .chat-prose th{--tw-bg-opacity:1;--tw-text-opacity:1}.dark .chat-prose th{background-color:rgb(31 41 55/var(--tw-bg-opacity,1));color:rgb(209 213 219/var(--tw-text-opacity,1))}.chat-prose td{border-top-width:1px;border-color:rgb(243 244 246/var(--tw-border-opacity,1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;color:rgb(75 85 99/var(--tw-text-opacity,1))}.chat-prose td,.dark .chat-prose td{--tw-border-opacity:1;--tw-text-opacity:1}.dark .chat-prose td{border-color:rgb(55 65 81/var(--tw-border-opacity,1));color:rgb(156 163 175/var(--tw-text-opacity,1))}.chat-prose hr{margin-top:1rem;margin-bottom:1rem;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.dark .chat-prose hr{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-right-1\.5{right:-.375rem}.-top-1\.5{top:-.375rem}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.m-0{margin:0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.mr-3{margin-right:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[140px\]{height:140px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\[150px\]{max-height:150px}.max-h-\[200px\]{max-height:200px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[24px\]{min-height:24px}.min-h-\[80px\]{min-height:80px}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[2px\]{width:2px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[16px\]{min-width:16px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-\[120px\]{max-width:120px}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[400px\]{max-width:400px}.max-w-\[80\%\]{max-width:80%}.max-w-\[800px\]{max-width:800px}.max-w-\[85\%\]{max-width:85%}.max-w-\[900px\]{max-width:900px}.max-w-\[90vw\]{max-width:90vw}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-fade-in{animation:fadeIn .2s ease-out}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-l-\[3px\]{border-left-width:3px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[var\(--chat-border\)\]{border-color:var(--chat-border)}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-500\/30{border-color:rgba(59,130,246,.3)}.border-chat-border{border-color:var(--chat-border,rgba(0,0,0,.06))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-green-500\/20{border-color:rgba(34,197,94,.2)}.border-green-500\/30{border-color:rgba(34,197,94,.3)}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.border-purple-500\/30{border-color:rgba(168,85,247,.3)}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-red-500\/30{border-color:rgba(239,68,68,.3)}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity,1))}.border-yellow-500\/30{border-color:rgba(234,179,8,.3)}.bg-\[\#0d0d0d\]{--tw-bg-opacity:1;background-color:rgb(13 13 13/var(--tw-bg-opacity,1))}.bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.bg-\[var\(--chat-border\)\]{background-color:var(--chat-border)}.bg-\[var\(--chat-header-bg\2c \#ffffff\)\]{background-color:var(--chat-header-bg,#fff)}.bg-\[var\(--chat-panel-bg\)\]{background-color:var(--chat-panel-bg)}.bg-\[var\(--chat-text-subtle\)\]{background-color:var(--chat-text-subtle)}.bg-black\/5{background-color:rgba(0,0,0,.05)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-black\/80{background-color:rgba(0,0,0,.8)}.bg-black\/\[0\.01\]{background-color:rgba(0,0,0,.01)}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-500\/10{background-color:rgba(59,130,246,.1)}.bg-blue-500\/5{background-color:rgba(59,130,246,.05)}.bg-chat-panel-bg{background-color:var(--chat-panel-bg,rgba(0,0,0,.02))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-500\/10{background-color:hsla(220,9%,46%,.1)}.bg-gray-500\/5{background-color:hsla(220,9%,46%,.05)}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-500\/10{background-color:rgba(34,197,94,.1)}.bg-green-500\/5{background-color:rgba(34,197,94,.05)}.bg-indigo-500\/20{background-color:rgba(99,102,241,.2)}.bg-orange-50\/60{background-color:rgba(255,247,237,.6)}.bg-purple-500\/10{background-color:rgba(168,85,247,.1)}.bg-purple-500\/5{background-color:rgba(168,85,247,.05)}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-500\/10{background-color:rgba(239,68,68,.1)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/95{background-color:hsla(0,0%,100%,.95)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500\/5{background-color:rgba(234,179,8,.05)}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from:#6366f1 var(--tw-gradient-from-position);--tw-gradient-to:rgba(99,102,241,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-\[2px\]{padding:2px}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-3{padding-bottom:.75rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-3{padding-right:.75rem}.pt-0\.5{padding-top:.125rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-super{vertical-align:super}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--chat-font-family),system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[10px\]{font-size:10px}.text-\[14px\]{font-size:14px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-relaxed{line-height:1.625}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[var\(--chat-primary\)\]{color:var(--chat-primary)}.text-\[var\(--chat-text\)\]{color:var(--chat-text)}.text-\[var\(--chat-text-subtle\)\]{color:var(--chat-text-subtle)}.text-black\/40{color:rgba(0,0,0,.4)}.text-black\/50{color:rgba(0,0,0,.5)}.text-black\/65{color:rgba(0,0,0,.65)}.text-black\/85{color:rgba(0,0,0,.85)}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-chat-subtle{color:var(--chat-text-subtle,rgba(0,0,0,.5))}.text-chat-text{color:var(--chat-text,#1d2033)}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-primary{color:var(--chat-primary,#106997)}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.accent-blue-500{accent-color:#3b82f6}.accent-orange-500{accent-color:#f97316}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[0_0_15px_rgba\(16\2c 105\2c 151\2c 0\.08\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(16\2c 105\2c 151\2c 0\.08\)\]{--tw-shadow:0 0 15px rgba(16,105,151,.08);--tw-shadow-colored:0 0 15px var(--tw-shadow-color)}.shadow-\[0_8px_30px_rgba\(0\2c 0\2c 0\2c 0\.08\)\]{--tw-shadow:0 8px 30px rgba(0,0,0,.08);--tw-shadow-colored:0 8px 30px var(--tw-shadow-color)}.shadow-\[0_8px_30px_rgba\(0\2c 0\2c 0\2c 0\.08\)\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-blue-400{--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity,1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-shadow{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.animate-fade-in{animation:fadeIn .2s ease-out forwards}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}.animate-flow-down{animation:flow-down .4s linear infinite}.animate-complete-pop{animation:complete-pop .3s ease-out forwards}.animate-success-flash{animation:success-flash .5s ease-out forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes beamer{0%{left:-30%}to{left:100%}}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.85}}@keyframes pulse-glow{0%,to{box-shadow:0 0 4px 2px rgba(99,102,241,.3);transform:scale(1)}50%{box-shadow:0 0 10px 4px rgba(99,102,241,.5);transform:scale(1.05)}}@keyframes gradient-shift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes flow-down{0%{background-position:0 0}to{background-position:0 16px}}@keyframes complete-pop{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes success-flash{0%{box-shadow:0 0 0 0 rgba(34,197,94,.6)}50%{box-shadow:0 0 8px 4px rgba(34,197,94,.4)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.animate-loading-dot{animation:loadingDot 1.4s ease-in-out infinite}.animate-loading-dot-1{animation-delay:0s}.animate-loading-dot-2{animation-delay:.2s}.animate-loading-dot-3{animation-delay:.4s}@keyframes loadingDot{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.animate-welcome-halo{animation:welcome-halo-breathe 6s ease-in-out infinite}@keyframes welcome-halo-breathe{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.animate-welcome-halo{animation:none}}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-b-0:last-child{border-bottom-width:0}.focus-within\:border-gray-200:focus-within{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.focus-within\:border-gray-300:focus-within{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.focus-within\:shadow-\[0_0_20px_rgba\(16\2c 105\2c 151\2c 0\.15\)\2c 0_0_40px_rgba\(86\2c 193\2c 138\2c 0\.08\)\]:focus-within{--tw-shadow:0 0 20px rgba(16,105,151,.15),0 0 40px rgba(86,193,138,.08);--tw-shadow-colored:0 0 20px var(--tw-shadow-color),0 0 40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus-within\:shadow-\[0_8px_30px_rgba\(0\2c 0\2c 0\2c 0\.12\)\]:focus-within{--tw-shadow:0 8px 30px rgba(0,0,0,.12);--tw-shadow-colored:0 8px 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus-within\:shadow-md:focus-within{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:-translate-y-px:hover{--tw-translate-y:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:bg-\[var\(--chat-border\)\]:hover{background-color:var(--chat-border)}.hover\:bg-\[var\(--chat-panel-bg\)\]:hover{background-color:var(--chat-panel-bg)}.hover\:bg-black\/\[0\.02\]:hover{background-color:rgba(0,0,0,.02)}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-orange-100\/50:hover{background-color:rgba(255,237,213,.5)}.hover\:bg-white\/10:hover{background-color:hsla(0,0%,100%,.1)}.hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}.hover\:text-\[var\(--chat-text\)\]:hover{color:var(--chat-text)}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-orange-700:hover{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-85:hover{opacity:.85}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.hover\:brightness-110:hover{--tw-brightness:brightness(1.1)}.hover\:brightness-110:hover,.hover\:brightness-95:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-95:hover{--tw-brightness:brightness(.95)}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-blue-500\/20:focus{--tw-ring-color:rgba(59,130,246,.2)}.focus\:ring-red-500\/20:focus{--tw-ring-color:rgba(239,68,68,.2)}.active\:translate-y-0:active{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-gray-100:active{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.active\:shadow-sm:active{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.disabled\:translate-y-0:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-300:disabled{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.disabled\:hover\:translate-y-0:hover:disabled{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-50{opacity:.5}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(250px\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.sm\:pl-6{padding-left:1.5rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}}@media (prefers-color-scheme:dark){.dark\:divide-gray-700>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity,1))}.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.dark\:border-orange-800{--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.dark\:border-red-800{--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\:border-zinc-600{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity,1))}.dark\:border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity,1))}.dark\:border-zinc-700\/50{border-color:rgba(63,63,70,.5)}.dark\:bg-\[\#1a1a1a\]{--tw-bg-opacity:1;background-color:rgb(26 26 26/var(--tw-bg-opacity,1))}.dark\:bg-\[\#1e1e1e\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.dark\:bg-blue-900\/20{background-color:rgba(30,58,138,.2)}.dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-800\/50{background-color:rgba(31,41,55,.5)}.dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.dark\:bg-orange-950\/20{background-color:rgba(67,20,7,.2)}.dark\:bg-red-900\/30{background-color:rgba(127,29,29,.3)}.dark\:bg-red-950\/30{background-color:rgba(69,10,10,.3)}.dark\:bg-white\/5{background-color:hsla(0,0%,100%,.05)}.dark\:bg-zinc-600{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity,1))}.dark\:bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.dark\:bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\:bg-zinc-900\/95{background-color:rgba(24,24,27,.95)}.dark\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity,1))}.dark\:text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.dark\:text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\:text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\:shadow-\[0_0_15px_rgba\(255\2c 255\2c 255\2c 0\.04\)\]{--tw-shadow:0 0 15px hsla(0,0%,100%,.04);--tw-shadow-colored:0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:placeholder\:text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\:placeholder\:text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\:focus-within\:border-zinc-600:focus-within{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity,1))}.dark\:focus-within\:shadow-\[0_0_20px_rgba\(255\2c 255\2c 255\2c 0\.08\)\2c 0_0_40px_rgba\(255\2c 255\2c 255\2c 0\.03\)\]:focus-within{--tw-shadow:0 0 20px hsla(0,0%,100%,.08),0 0 40px hsla(0,0%,100%,.03);--tw-shadow-colored:0 0 20px var(--tw-shadow-color),0 0 40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:hover\:border-gray-600:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:hover\:border-zinc-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 91/var(--tw-border-opacity,1))}.dark\:hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-800\/50:hover{background-color:rgba(31,41,55,.5)}.dark\:hover\:bg-orange-900\/20:hover{background-color:rgba(124,45,18,.2)}.dark\:hover\:bg-zinc-500:hover{--tw-bg-opacity:1;background-color:rgb(113 113 122/var(--tw-bg-opacity,1))}.dark\:hover\:bg-zinc-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity,1))}.dark\:hover\:bg-zinc-700:hover{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.dark\:hover\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.dark\:hover\:text-zinc-300:hover{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.dark\:active\:bg-zinc-700:active{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.dark\:disabled\:bg-zinc-600:disabled{--tw-bg-opacity:1;background-color:rgb(82 82 91/var(--tw-bg-opacity,1))}.dark\:disabled\:bg-zinc-700:disabled{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.dark\:disabled\:text-zinc-400:disabled{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}}.\[\&_\.editor-paragraph\]\:my-0 .editor-paragraph{margin-top:0;margin-bottom:0}.\[\&_\.editor-quote\]\:ml-0 .editor-quote{margin-left:0}.\[\&_\.editor-quote\]\:border-l-4 .editor-quote{border-left-width:4px}.\[\&_\.editor-quote\]\:border-gray-300 .editor-quote{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.\[\&_\.editor-quote\]\:pl-3 .editor-quote{padding-left:.75rem}.\[\&_ol\]\:pl-4 ol,.\[\&_ul\]\:pl-4 ul{padding-left:1rem}
|