@fv-ui/ai-chat 0.4.0 → 0.5.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/README.md CHANGED
@@ -439,6 +439,12 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
439
439
  | centerWelcome | boolean | true | 空态居中:未开始对话时欢迎内容与输入区整体垂直居中,首条消息后输入区恢复固定底部 |
440
440
  | showUserAvatar | boolean | true | 显示用户头像(false 时用户消息不渲染头像;助手头像不受影响) |
441
441
  | showUserName | boolean | true | 显示用户名称(false 时用户消息不渲染头部名称行;助手名称不受影响) |
442
+ | showAssistantAvatar | boolean | true | 显示助手头像(false 时助手消息不渲染头像;用户头像不受影响) |
443
+ | showAssistantName | boolean | true | 显示助手名称(false 时助手消息不渲染头部名称行;用户名称不受影响) |
444
+ | userAvatar | string | '' | 用户头像图片 URL(空串回落内置图标;`user-avatar` 插槽优先) |
445
+ | assistantAvatar | string | '' | 助手头像图片 URL(空串回落内置图标;`assistant-avatar` 插槽优先) |
446
+ | userName | string | '' | 用户名称(空串回落「你」;`user-name` 插槽优先) |
447
+ | assistantName | string | '' | 助手名称(空串回落「助手」;`assistant-name` 插槽优先) |
442
448
  | placeholder | string | '' | 输入框占位 |
443
449
  | senderShadow | boolean | true | 输入区阴影效果(透传 Sender 的 shadow) |
444
450
  | suggestions | AiChatSuggestion[] | [] | 空态建议列表(Prompts 项,key 必填) |
@@ -461,7 +467,9 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
461
467
 
462
468
  | Slot | 说明 |
463
469
  | --- | --- |
464
- | message-avatar / message-actions | 透传给 AiMessages(作用域见 AiMessage) |
470
+ | message-avatar / message-actions | 透传给 AiMessages(作用域见 AiMessage;message-avatar 优先于细分头像插槽) |
471
+ | user-avatar / assistant-avatar | 自定义用户/助手头像(无作用域,优先于同名 props) |
472
+ | user-name / assistant-name | 自定义用户/助手名称(作用域 { message },优先于同名 props) |
465
473
  | empty | 覆盖空态整区 |
466
474
  | sender-prefix | 输入区前缀 |
467
475
 
@@ -493,6 +501,12 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
493
501
  | showBranchSwitch | boolean | true | 显示分支切换器 |
494
502
  | showUserAvatar | boolean | true | 显示用户头像(助手头像不受影响) |
495
503
  | showUserName | boolean | true | 显示用户名称(助手名称不受影响) |
504
+ | showAssistantAvatar | boolean | true | 显示助手头像(用户头像不受影响) |
505
+ | showAssistantName | boolean | true | 显示助手名称(用户名称不受影响) |
506
+ | userAvatar | string | '' | 用户头像图片 URL(透传 AiMessage) |
507
+ | assistantAvatar | string | '' | 助手头像图片 URL(透传 AiMessage) |
508
+ | userName | string | '' | 用户名称(透传 AiMessage) |
509
+ | assistantName | string | '' | 助手名称(透传 AiMessage) |
496
510
 
497
511
  | Event | 说明 |
498
512
  | --- | --- |
@@ -501,7 +515,9 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
501
515
  | Slot | 说明 |
502
516
  | --- | --- |
503
517
  | empty | 覆盖空态整区 |
504
- | message-avatar / message-actions | 透传给每条 AiMessage |
518
+ | message-avatar / message-actions | 透传给每条 AiMessage(message-avatar 优先于细分头像插槽) |
519
+ | user-avatar / assistant-avatar | 自定义用户/助手头像(无作用域,优先于同名 props) |
520
+ | user-name / assistant-name | 自定义用户/助手名称(作用域 { message },优先于同名 props) |
505
521
 
506
522
  | CSS 变量 | 默认 | 说明 |
507
523
  | --- | --- | --- |
@@ -523,6 +539,12 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
523
539
  | showBranchSwitch | boolean | true | 显示分支切换器(branch.count > 1 时) |
524
540
  | showUserAvatar | boolean | true | 显示用户头像(false 时用户消息不渲染头像块) |
525
541
  | showUserName | boolean | true | 显示用户名称(false 时用户消息不渲染头部名称行) |
542
+ | showAssistantAvatar | boolean | true | 显示助手头像(false 时助手消息不渲染头像块) |
543
+ | showAssistantName | boolean | true | 显示助手名称(false 时助手消息不渲染头部名称行) |
544
+ | userAvatar | string | '' | 用户头像图片 URL(空串回落内置图标) |
545
+ | assistantAvatar | string | '' | 助手头像图片 URL(空串回落内置图标) |
546
+ | userName | string | '' | 用户名称(空串回落「你」) |
547
+ | assistantName | string | '' | 助手名称(空串回落「助手」) |
526
548
 
527
549
  > 用户消息操作区:恒渲染复制按钮,默认透明,鼠标移上消息(或键盘聚焦)时浮现(open-webui 交互)。
528
550
  | autoCollapse | boolean | true | Thinking autoCollapse 透传 |
@@ -533,7 +555,11 @@ Markdown 渲染(Sanitized by DOMPurify),内置 Prism 代码高亮与 KaTeX。
533
555
 
534
556
  | Slot | 说明 |
535
557
  | --- | --- |
536
- | message-avatar | 自定义头像(作用域 { message }) |
558
+ | message-avatar | 自定义头像(作用域 { message };优先于细分头像插槽,两条角色消息均生效) |
559
+ | user-avatar | 自定义用户头像(无作用域;优先于 userAvatar props) |
560
+ | assistant-avatar | 自定义助手头像(无作用域;优先于 assistantAvatar props) |
561
+ | user-name | 自定义用户名称(作用域 { message };优先于 userName props) |
562
+ | assistant-name | 自定义助手名称(作用域 { message };优先于 assistantName props) |
537
563
  | message-files | 自定义附件渲染(作用域 { message, files }) |
538
564
  | message-actions | 自定义操作区(作用域 { message }) |
539
565
 
package/dist/index.d.ts CHANGED
@@ -132,7 +132,7 @@ declare var __VLS_1$9: {};
132
132
  declare var __VLS_10$1: {};
133
133
  declare var __VLS_12$1: {};
134
134
  declare var __VLS_14: {};
135
- declare var __VLS_32: {};
135
+ declare var __VLS_32$1: {};
136
136
  type __VLS_Slots$e = {} & {
137
137
  avatar?: (props: typeof __VLS_1$9) => any;
138
138
  } & {
@@ -142,7 +142,7 @@ type __VLS_Slots$e = {} & {
142
142
  } & {
143
143
  content?: (props: typeof __VLS_14) => any;
144
144
  } & {
145
- footer?: (props: typeof __VLS_32) => any;
145
+ footer?: (props: typeof __VLS_32$1) => any;
146
146
  };
147
147
  declare const __VLS_base$e: vue.DefineComponent<__VLS_Props$f, {
148
148
  interrupt: typeof interrupt;
@@ -257,7 +257,7 @@ declare var __VLS_13: {
257
257
  item: BubbleListItemProps;
258
258
  index: number;
259
259
  };
260
- declare var __VLS_16: {
260
+ declare var __VLS_16$1: {
261
261
  item: BubbleListItemProps;
262
262
  index: number;
263
263
  };
@@ -274,7 +274,7 @@ type __VLS_Slots$d = {} & {
274
274
  } & {
275
275
  header?: (props: typeof __VLS_13) => any;
276
276
  } & {
277
- content?: (props: typeof __VLS_16) => any;
277
+ content?: (props: typeof __VLS_16$1) => any;
278
278
  } & {
279
279
  loading?: (props: typeof __VLS_19$1) => any;
280
280
  } & {
@@ -367,9 +367,9 @@ declare function blur$2(): void;
367
367
  declare function openHeader$2(): void;
368
368
  declare function closeHeader$2(): void;
369
369
  declare var __VLS_1$8: {};
370
- declare var __VLS_3$2: {};
370
+ declare var __VLS_3$3: {};
371
371
  declare var __VLS_5: {};
372
- declare var __VLS_52: {
372
+ declare var __VLS_52$1: {
373
373
  keyword: string;
374
374
  };
375
375
  declare var __VLS_54: {};
@@ -378,11 +378,11 @@ declare var __VLS_134: {};
378
378
  type __VLS_Slots$c = {} & {
379
379
  header?: (props: typeof __VLS_1$8) => any;
380
380
  } & {
381
- 'body-top'?: (props: typeof __VLS_3$2) => any;
381
+ 'body-top'?: (props: typeof __VLS_3$3) => any;
382
382
  } & {
383
383
  prefix?: (props: typeof __VLS_5) => any;
384
384
  } & {
385
- trigger?: (props: typeof __VLS_52) => any;
385
+ trigger?: (props: typeof __VLS_52$1) => any;
386
386
  } & {
387
387
  'action-list'?: (props: typeof __VLS_54) => any;
388
388
  } & {
@@ -713,7 +713,7 @@ declare function chatState(): {
713
713
  declare function openHeader(): void;
714
714
  declare function closeHeader(): void;
715
715
  declare var __VLS_1$7: {};
716
- declare var __VLS_3$1: {};
716
+ declare var __VLS_3$2: {};
717
717
  declare var __VLS_19: {
718
718
  nodeId: string;
719
719
  };
@@ -722,7 +722,7 @@ declare var __VLS_80: {};
722
722
  type __VLS_Slots$a = {} & {
723
723
  header?: (props: typeof __VLS_1$7) => any;
724
724
  } & {
725
- prefix?: (props: typeof __VLS_3$1) => any;
725
+ prefix?: (props: typeof __VLS_3$2) => any;
726
726
  } & {
727
727
  'tag-tip'?: (props: typeof __VLS_19) => any;
728
728
  } & {
@@ -820,16 +820,16 @@ type __VLS_Props$a = {
820
820
  /** 切换门控:start 起始态不可切换;thinking 中可展开查看思考流,end/error 后可自由收起展开 */
821
821
  declare function toggle(): void;
822
822
  declare var __VLS_1$6: {};
823
- declare var __VLS_36: {};
824
- declare var __VLS_38: {};
823
+ declare var __VLS_36$1: {};
824
+ declare var __VLS_38$1: {};
825
825
  declare var __VLS_51: {};
826
826
  declare var __VLS_53: {};
827
827
  type __VLS_Slots$9 = {} & {
828
828
  'status-icon'?: (props: typeof __VLS_1$6) => any;
829
829
  } & {
830
- label?: (props: typeof __VLS_36) => any;
830
+ label?: (props: typeof __VLS_36$1) => any;
831
831
  } & {
832
- arrow?: (props: typeof __VLS_38) => any;
832
+ arrow?: (props: typeof __VLS_38$1) => any;
833
833
  } & {
834
834
  error?: (props: typeof __VLS_51) => any;
835
835
  } & {
@@ -1113,19 +1113,19 @@ declare function deleteConfirm(key: string | number): Promise<void>;
1113
1113
  declare var __VLS_1$2: {
1114
1114
  group: string;
1115
1115
  };
1116
- declare var __VLS_3: {
1116
+ declare var __VLS_3$1: {
1117
1117
  item: ConversationItem;
1118
1118
  active: boolean;
1119
1119
  };
1120
- declare var __VLS_31: {
1120
+ declare var __VLS_31$1: {
1121
1121
  item: ConversationItem;
1122
1122
  };
1123
1123
  type __VLS_Slots$3 = {} & {
1124
1124
  'group-title'?: (props: typeof __VLS_1$2) => any;
1125
1125
  } & {
1126
- item?: (props: typeof __VLS_3) => any;
1126
+ item?: (props: typeof __VLS_3$1) => any;
1127
1127
  } & {
1128
- menu?: (props: typeof __VLS_31) => any;
1128
+ menu?: (props: typeof __VLS_31$1) => any;
1129
1129
  };
1130
1130
  declare const __VLS_base$3: vue.DefineComponent<__VLS_Props$4, {
1131
1131
  handleMenuCommand: typeof handleMenuCommand;
@@ -1478,6 +1478,18 @@ type __VLS_Props$3 = {
1478
1478
  showUserAvatar?: boolean;
1479
1479
  /** 显示用户名称(助手名称不受影响) */
1480
1480
  showUserName?: boolean;
1481
+ /** 显示助手头像(用户头像不受影响) */
1482
+ showAssistantAvatar?: boolean;
1483
+ /** 显示助手名称(用户名称不受影响) */
1484
+ showAssistantName?: boolean;
1485
+ /** 用户头像图片 URL(透传 AiMessage) */
1486
+ userAvatar?: string;
1487
+ /** 助手头像图片 URL(透传 AiMessage) */
1488
+ assistantAvatar?: string;
1489
+ /** 用户名称(透传 AiMessage) */
1490
+ userName?: string;
1491
+ /** 助手名称(透传 AiMessage) */
1492
+ assistantName?: string;
1481
1493
  };
1482
1494
  declare function scrollToBottom(smooth?: boolean): void;
1483
1495
  /** 回到顶部:与 scrollToBottom 同款 try/catch 回落(happy-dom 旧版 scrollTo(options) 可能缺实现) */
@@ -1486,7 +1498,15 @@ declare var __VLS_1$1: {};
1486
1498
  declare var __VLS_26: {
1487
1499
  message: MessageNode;
1488
1500
  };
1489
- declare var __VLS_29: {
1501
+ declare var __VLS_29$1: {
1502
+ message: MessageNode;
1503
+ };
1504
+ declare var __VLS_32: {};
1505
+ declare var __VLS_35: {};
1506
+ declare var __VLS_38: {
1507
+ message: MessageNode;
1508
+ };
1509
+ declare var __VLS_41: {
1490
1510
  message: MessageNode;
1491
1511
  };
1492
1512
  type __VLS_Slots$2 = {} & {
@@ -1494,7 +1514,15 @@ type __VLS_Slots$2 = {} & {
1494
1514
  } & {
1495
1515
  'message-avatar'?: (props: typeof __VLS_26) => any;
1496
1516
  } & {
1497
- 'message-actions'?: (props: typeof __VLS_29) => any;
1517
+ 'message-actions'?: (props: typeof __VLS_29$1) => any;
1518
+ } & {
1519
+ 'user-avatar'?: (props: typeof __VLS_32) => any;
1520
+ } & {
1521
+ 'assistant-avatar'?: (props: typeof __VLS_35) => any;
1522
+ } & {
1523
+ 'user-name'?: (props: typeof __VLS_38) => any;
1524
+ } & {
1525
+ 'assistant-name'?: (props: typeof __VLS_41) => any;
1498
1526
  };
1499
1527
  declare const __VLS_base$2: vue.DefineComponent<__VLS_Props$3, {
1500
1528
  scrollToBottom: typeof scrollToBottom;
@@ -1518,6 +1546,12 @@ declare const __VLS_base$2: vue.DefineComponent<__VLS_Props$3, {
1518
1546
  showBranchSwitch: boolean;
1519
1547
  showUserAvatar: boolean;
1520
1548
  showUserName: boolean;
1549
+ showAssistantAvatar: boolean;
1550
+ showAssistantName: boolean;
1551
+ userAvatar: string;
1552
+ assistantAvatar: string;
1553
+ userName: string;
1554
+ assistantName: string;
1521
1555
  suggestions: AiMessagesSuggestion[];
1522
1556
  suggestionsTitle: string;
1523
1557
  scrollThreshold: number;
@@ -1565,6 +1599,18 @@ type __VLS_Props$2 = {
1565
1599
  showUserAvatar?: boolean;
1566
1600
  /** 显示用户名称(false 时用户消息不渲染头部名称行;助手名称不受影响) */
1567
1601
  showUserName?: boolean;
1602
+ /** 显示助手头像(false 时助手消息不渲染头像;用户头像不受影响) */
1603
+ showAssistantAvatar?: boolean;
1604
+ /** 显示助手名称(false 时助手消息不渲染头部名称行;用户名称不受影响) */
1605
+ showAssistantName?: boolean;
1606
+ /** 用户头像图片 URL(空串回落内置图标;user-avatar 插槽可整体覆盖) */
1607
+ userAvatar?: string;
1608
+ /** 助手头像图片 URL(空串回落内置图标;assistant-avatar 插槽可整体覆盖) */
1609
+ assistantAvatar?: string;
1610
+ /** 用户名称(空串回落「你」;user-name 插槽可整体覆盖) */
1611
+ userName?: string;
1612
+ /** 助手名称(空串回落「助手」;assistant-name 插槽可整体覆盖) */
1613
+ assistantName?: string;
1568
1614
  /** 输入框占位 */
1569
1615
  placeholder?: string;
1570
1616
  /** 输入区阴影效果(透传 Sender;关闭传 false) */
@@ -1602,15 +1648,31 @@ declare var __VLS_27: {
1602
1648
  message: MessageNode;
1603
1649
  };
1604
1650
  declare var __VLS_30: {};
1605
- declare var __VLS_66: {};
1651
+ declare var __VLS_33$1: {};
1652
+ declare var __VLS_36: {
1653
+ message: MessageNode;
1654
+ };
1655
+ declare var __VLS_39: {
1656
+ message: MessageNode;
1657
+ };
1658
+ declare var __VLS_42: {};
1659
+ declare var __VLS_78: {};
1606
1660
  type __VLS_Slots$1 = {} & {
1607
1661
  'message-avatar'?: (props: typeof __VLS_24) => any;
1608
1662
  } & {
1609
1663
  'message-actions'?: (props: typeof __VLS_27) => any;
1610
1664
  } & {
1611
- empty?: (props: typeof __VLS_30) => any;
1665
+ 'user-avatar'?: (props: typeof __VLS_30) => any;
1666
+ } & {
1667
+ 'assistant-avatar'?: (props: typeof __VLS_33$1) => any;
1668
+ } & {
1669
+ 'user-name'?: (props: typeof __VLS_36) => any;
1670
+ } & {
1671
+ 'assistant-name'?: (props: typeof __VLS_39) => any;
1612
1672
  } & {
1613
- 'sender-prefix'?: (props: typeof __VLS_66) => any;
1673
+ empty?: (props: typeof __VLS_42) => any;
1674
+ } & {
1675
+ 'sender-prefix'?: (props: typeof __VLS_78) => any;
1614
1676
  };
1615
1677
  declare const __VLS_base$1: vue.DefineComponent<__VLS_Props$2, {
1616
1678
  sendMessage: typeof sendMessage;
@@ -1652,6 +1714,12 @@ declare const __VLS_base$1: vue.DefineComponent<__VLS_Props$2, {
1652
1714
  messages: MessageNode[];
1653
1715
  showUserAvatar: boolean;
1654
1716
  showUserName: boolean;
1717
+ showAssistantAvatar: boolean;
1718
+ showAssistantName: boolean;
1719
+ userAvatar: string;
1720
+ assistantAvatar: string;
1721
+ userName: string;
1722
+ assistantName: string;
1655
1723
  suggestions: AiChatSuggestion[];
1656
1724
  models: string[];
1657
1725
  adapter: ChatAdapter;
@@ -1692,25 +1760,53 @@ type __VLS_Props$1 = {
1692
1760
  showUserAvatar?: boolean;
1693
1761
  /** 显示用户名称(false 时用户消息不渲染头部名称行;助手侧不受影响) */
1694
1762
  showUserName?: boolean;
1763
+ /** 显示助手头像(false 时助手消息不渲染头像块;用户侧不受影响) */
1764
+ showAssistantAvatar?: boolean;
1765
+ /** 显示助手名称(false 时助手消息不渲染头部名称行;用户侧不受影响) */
1766
+ showAssistantName?: boolean;
1767
+ /** 用户头像图片 URL(空串回落内置图标;细分插槽可整体覆盖) */
1768
+ userAvatar?: string;
1769
+ /** 助手头像图片 URL(空串回落内置图标;细分插槽可整体覆盖) */
1770
+ assistantAvatar?: string;
1771
+ /** 用户名称(空串回落「你」;细分插槽可整体覆盖) */
1772
+ userName?: string;
1773
+ /** 助手名称(空串回落「助手」;细分插槽可整体覆盖) */
1774
+ assistantName?: string;
1695
1775
  /** Thinking autoCollapse 透传 */
1696
1776
  autoCollapse?: boolean;
1697
1777
  };
1698
1778
  declare var __VLS_1: {
1699
1779
  message: MessageNode;
1700
1780
  };
1701
- declare var __VLS_25: {
1781
+ declare var __VLS_3: {};
1782
+ declare var __VLS_16: {};
1783
+ declare var __VLS_29: {
1784
+ message: MessageNode;
1785
+ };
1786
+ declare var __VLS_31: {
1787
+ message: MessageNode;
1788
+ };
1789
+ declare var __VLS_33: {
1702
1790
  message: MessageNode;
1703
1791
  files: ChatFile[];
1704
1792
  };
1705
- declare var __VLS_44: {
1793
+ declare var __VLS_52: {
1706
1794
  message: MessageNode;
1707
1795
  };
1708
1796
  type __VLS_Slots = {} & {
1709
1797
  'message-avatar'?: (props: typeof __VLS_1) => any;
1710
1798
  } & {
1711
- 'message-files'?: (props: typeof __VLS_25) => any;
1799
+ 'user-avatar'?: (props: typeof __VLS_3) => any;
1800
+ } & {
1801
+ 'assistant-avatar'?: (props: typeof __VLS_16) => any;
1802
+ } & {
1803
+ 'user-name'?: (props: typeof __VLS_29) => any;
1804
+ } & {
1805
+ 'assistant-name'?: (props: typeof __VLS_31) => any;
1806
+ } & {
1807
+ 'message-files'?: (props: typeof __VLS_33) => any;
1712
1808
  } & {
1713
- 'message-actions'?: (props: typeof __VLS_44) => any;
1809
+ 'message-actions'?: (props: typeof __VLS_52) => any;
1714
1810
  };
1715
1811
  declare const __VLS_base: vue.DefineComponent<__VLS_Props$1, {
1716
1812
  message: vue.ComputedRef<MessageNode>;
@@ -1729,6 +1825,12 @@ declare const __VLS_base: vue.DefineComponent<__VLS_Props$1, {
1729
1825
  showBranchSwitch: boolean;
1730
1826
  showUserAvatar: boolean;
1731
1827
  showUserName: boolean;
1828
+ showAssistantAvatar: boolean;
1829
+ showAssistantName: boolean;
1830
+ userAvatar: string;
1831
+ assistantAvatar: string;
1832
+ userName: string;
1833
+ assistantName: string;
1732
1834
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
1733
1835
  declare const __VLS_export$1: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
1734
1836
  declare const _default$1: typeof __VLS_export$1;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .fv-xmarkdown{color:var(--el-text-color-primary,#303133);line-height:1.7;word-break:break-word}.fv-xmarkdown h1,.fv-xmarkdown h2,.fv-xmarkdown h3,.fv-xmarkdown h4,.fv-xmarkdown h5,.fv-xmarkdown h6{color:var(--el-text-color-primary,#303133);font-weight:600;margin:1em 0 .5em}.fv-xmarkdown h1{font-size:1.5em}.fv-xmarkdown h2{font-size:1.3em}.fv-xmarkdown h3{font-size:1.15em}.fv-xmarkdown p{margin:.5em 0}.fv-xmarkdown a{color:var(--el-color-primary,#409eff);text-decoration:none}.fv-xmarkdown a:hover{text-decoration:underline}.fv-xmarkdown blockquote{border-left:4px solid var(--el-border-color,#dcdfe6);color:var(--el-text-color-regular,#606266);margin:.5em 0;padding:.4em 1em}.fv-xmarkdown blockquote,.fv-xmarkdown code{background:var(--el-fill-color-light,#f5f7fa)}.fv-xmarkdown code{border-radius:3px;color:var(--el-color-danger,#f56c6c);font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:.9em;padding:.15em .4em}.fv-xmarkdown pre{background:#282c34;border-radius:6px;margin:.5em 0;overflow-x:auto;padding:1em}.fv-xmarkdown pre code{background:transparent;color:#dcdfe6;font-size:.9em;line-height:1.6;padding:0}.fv-xmarkdown table{border-collapse:collapse;margin:.5em 0;width:100%}.fv-xmarkdown table td,.fv-xmarkdown table th{border:1px solid var(--el-border-color-lighter,#ebeef5);padding:.5em .8em;text-align:left}.fv-xmarkdown table th{background:var(--el-fill-color-light,#f5f7fa);font-weight:600}.fv-xmarkdown table tr:nth-child(2n) td{background:var(--el-fill-color-blank,#fafcff)}.fv-xmarkdown .katex-display{margin:.5em 0;overflow-x:auto}.fv-typewriter{display:inline-block;max-width:100%;position:relative}.fv-typewriter .fv-typewriter-text{white-space:pre-wrap;word-break:break-word}.fv-typewriter .fv-typewriter-suffix{animation:fv-typewriter-blink 1s step-start infinite;display:inline-block}.fv-typewriter .fv-typewriter-fog{animation:fv-typewriter-fog-in .3s ease-out both;background:linear-gradient(90deg,transparent,var(--fv-typewriter-fog-color,var(--el-bg-color,#fff)));bottom:0;pointer-events:none;position:absolute;right:0;top:0}@keyframes fv-typewriter-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes fv-typewriter-fog-in{0%{opacity:0}to{opacity:1}}.fv-bubble{align-items:flex-start;display:flex;gap:var(--fv-bubble-avatar-gap,12px)}.fv-bubble.is-end{flex-direction:row-reverse;justify-content:flex-end}.fv-bubble.is-end .fv-bubble-main{align-items:flex-end}.fv-bubble .fv-bubble-avatar{display:flex;flex-shrink:0}.fv-bubble .fv-bubble-avatar .el-avatar{height:var(--fv-bubble-avatar-size,36px);width:var(--fv-bubble-avatar-size,36px)}.fv-bubble .fv-bubble-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;max-width:100%;min-width:0}.fv-bubble .fv-bubble-main .fv-bubble-footer,.fv-bubble .fv-bubble-main .fv-bubble-header{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px)}.fv-bubble .fv-bubble-main .fv-bubble-footer{margin-top:4px}.fv-bubble .fv-bubble-content{border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;padding:var(--el-main-padding,12px) calc(var(--el-main-padding, 12px) + 4px);position:relative;word-break:break-word}.fv-bubble .fv-bubble-content.no-padding{padding:0}.fv-bubble .fv-bubble-content .fv-bubble-text{white-space:pre-wrap}.fv-bubble.shape-round .fv-bubble-content{border-radius:var(--el-border-radius-round,20px)}.fv-bubble.shape-corner .fv-bubble-content{border-start-start-radius:calc(var(--el-border-radius-base, 4px) - 2px)}.fv-bubble.is-end.shape-corner .fv-bubble-content{border-start-end-radius:calc(var(--el-border-radius-base, 4px) - 2px);border-start-start-radius:calc(var(--el-border-radius-base, 4px) + 4px)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-filled .fv-bubble-content{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-outlined .fv-bubble-content{border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6)}.fv-bubble.variant-outlined .fv-bubble-content{background:none}.fv-bubble.variant-shadow .fv-bubble-content{background:none;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12))}.fv-bubble .fv-bubble-content.no-style{background:transparent;border:none;box-shadow:none;padding:0}.fv-bubble .fv-bubble-loading{align-items:center;display:flex;gap:5px;min-height:1em;width:fit-content}.fv-bubble .fv-bubble-loading .fv-bubble-loading-dot{animation:fv-bubble-wave 1s ease-in-out infinite;background-color:var(--el-color-primary,#409eff);border-radius:50%;height:5px;width:5px}@keyframes fv-bubble-wave{0%,to{transform:translateY(-2px)}50%{transform:translateY(2px)}}.fv-bubble-list{display:flex;flex-direction:column;min-height:0;position:relative}.fv-bubble-list .fv-bubble-list-scroll{display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.fv-bubble-list .fv-bubble-list-scroll>.fv-bubble{flex-shrink:0}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar{overflow-y:scroll;scrollbar-width:auto}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar{-webkit-appearance:none;width:6px}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar-thumb{background-color:var(--el-border-color,#dcdfe6);border-radius:3px}.fv-bubble-list .fv-bubble-list-back{align-items:center;bottom:16px;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12));display:inline-flex;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);z-index:1}.fv-bubble-list .fv-bubble-list-back .fv-bubble-list-back-icon{align-items:center;display:inline-flex;justify-content:center;line-height:1}.fv-bubble-list-fade-enter-active,.fv-bubble-list-fade-leave-active{transition:opacity .2s ease,transform .2s ease}.fv-bubble-list-fade-enter-from,.fv-bubble-list-fade-leave-to{opacity:0;transform:translate(-50%,4px)}.fv-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-sender .fv-sender-header{animation:fv-sender-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-sender .fv-sender-body{background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;flex-direction:column;gap:6px;padding:8px 12px;transition:border-color .2s}.fv-sender .fv-sender-body .fv-sender-body-top:empty{display:none}.fv-sender .fv-sender-body .fv-sender-row{align-items:flex-end;display:flex;gap:8px}.fv-sender .fv-sender-body .fv-sender-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:calc(var(--el-border-radius-base, 4px) + 2px);display:flex;flex:1;gap:8px;min-width:0;outline:none;padding:4px 8px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel:hover{color:var(--el-color-danger,#f56c6c)}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave{align-items:center;direction:rtl;display:flex;flex:1;gap:2px;height:22px;justify-content:flex-end;min-width:0;overflow:hidden}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave .fv-sender-recording-bar{background-color:var(--el-color-primary,#409eff);border-radius:1px;flex-shrink:0;min-height:2px;opacity:.75;width:2px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-duration{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:var(--el-font-size-small,12px);font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-confirm{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-input{display:flex;flex:1;min-width:0;position:relative}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea{background:transparent;border:none;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;min-width:0;outline:none;padding:4px 0;resize:none}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea:disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea[readonly]{cursor:default}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-trigger-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-sender .fv-sender-body .fv-sender-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-action-left{align-items:center;display:flex;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech{color:var(--el-text-color-regular,#606266);padding:6px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech .el-icon{font-size:18px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):active,.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):hover{background-color:transparent;color:var(--el-text-color-primary,#303133)}.fv-sender.variant-updown .fv-sender-row{align-items:stretch;flex-direction:column;gap:6px}.fv-sender.variant-updown .fv-sender-row .fv-sender-input{width:100%}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions{align-self:flex-end;justify-content:flex-end}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left){align-self:stretch}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left) .fv-sender-action-left{margin-right:auto}.fv-sender.is-focused .fv-sender-body{border-color:var(--el-color-primary,#409eff)}.fv-sender.is-disabled .fv-sender-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-sender.has-shadow .fv-sender-body{box-shadow:0 8px 20px 0 var(--el-box-shadow-color,rgba(0,0,0,.08));transition:border-color .2s,box-shadow .2s}.fv-sender.has-shadow.is-focused .fv-sender-body{box-shadow:0 8px 24px 0 var(--el-box-shadow-color,rgba(0,0,0,.12))}.fv-sender .fv-sender-stop{--fv-sender-stop-icon-size:16px;--fv-sender-stop-ring-width:2px;--fv-sender-stop-ring-duration:1.1s;position:relative}.fv-sender .fv-sender-stop .el-icon{align-items:center;display:inline-flex;font-size:var(--fv-sender-stop-icon-size);justify-content:center}.fv-sender .fv-sender-stop .fv-stop-icon{display:block}.fv-sender .fv-sender-stop .fv-sender-stop-ring{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.fv-sender .fv-sender-stop .fv-sender-stop-ring .fv-sender-stop-ring-rect{x:calc(var(--fv-sender-stop-ring-width)/2);y:calc(var(--fv-sender-stop-ring-width)/2);fill:none;stroke:rgb(255,255,255,var(--ring-alpha,.9));stroke-width:var(--fv-sender-stop-ring-width);stroke-dasharray:0 calc(100 - var(--ring-len, 10)) var(--ring-len,10) 0;animation:fv-sender-stop-spin var(--fv-sender-stop-ring-duration) linear infinite;height:calc(100% - var(--fv-sender-stop-ring-width));width:calc(100% - var(--fv-sender-stop-ring-width))}@media (prefers-reduced-motion:reduce){.fv-sender .fv-sender-stop .fv-sender-stop-ring-rect{animation:none}}.fv-sender .fv-sender-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}@keyframes fv-sender-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}@keyframes fv-sender-stop-spin{to{stroke-dashoffset:-100}}.fv-mention-sender{position:relative}.fv-mention-sender .fv-mention-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-mention-popover .fv-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-mention-popover .fv-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-mention-popover .fv-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-mention-popover .fv-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-mention-popover .fv-mention-item.is-active,.fv-mention-popover .fv-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-mention-popover .fv-mention-item .fv-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-mention-popover .fv-mention-item .fv-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-mention-popover .fv-mention-item .fv-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-editor-sender .fv-editor-header{animation:fv-editor-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-editor-sender .fv-editor-body{align-items:flex-end;background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;gap:8px;padding:8px 12px;transition:border-color .2s}.fv-editor-sender .fv-editor-body .fv-editor-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-editor-sender .fv-editor-body .fv-editor-input{display:flex;flex:1;min-width:0;position:relative}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content{background:transparent;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;max-height:220px;min-width:0;outline:none;overflow-y:auto;padding:4px 0;white-space:pre-wrap;word-break:break-word}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content:empty:before{color:var(--el-text-color-placeholder,#a8abb2);content:attr(data-placeholder);pointer-events:none}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-editor-sender .fv-editor-body .fv-editor-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-editor-sender .fv-editor-tag{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--el-color-primary,#409eff);display:inline-flex;font-size:var(--el-font-size-base,14px);line-height:20px;margin:0 1px;max-width:100%;padding:0 6px;user-select:all;white-space:nowrap}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag{padding:0 2px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input{background:transparent;border:none;box-sizing:border-box;color:inherit;font:inherit;line-height:20px;outline:none;padding:0 4px;width:120px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-editor-sender .fv-editor-tag.fv-editor-tag-htmlTag{display:inline;user-select:text;white-space:normal}.fv-editor-sender.variant-updown .fv-editor-body{align-items:stretch;flex-direction:column;gap:6px}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-input{width:100%}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-actions{align-self:flex-end;justify-content:flex-end}.fv-editor-sender.device-h5 .fv-editor-body{padding:6px 10px}.fv-editor-sender.is-focused .fv-editor-body{border-color:var(--el-color-primary,#409eff)}.fv-editor-sender.is-disabled .fv-editor-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-sender .fv-editor-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}.fv-editor-mention-popover .fv-editor-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-editor-mention-popover .fv-editor-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-editor-mention-popover .fv-editor-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-editor-mention-popover .fv-editor-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-editor-mention-popover .fv-editor-mention-item.is-active,.fv-editor-mention-popover .fv-editor-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-tip-popover .fv-editor-tip-panel{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:6px 8px}.fv-editor-select-dialog .fv-editor-select-group+.fv-editor-select-group{margin-top:12px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-title{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:600;margin-bottom:8px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;transition:border-color .2s}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item:hover{border-color:var(--el-color-primary,#409eff)}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-preview{border-radius:var(--el-border-radius-base,4px);height:56px;object-fit:cover;width:100%}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-name{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fv-editor-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}.fv-thinking{background-color:var(--fv-thinking-bg,transparent);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--fv-thinking-color,var(--el-text-color-regular,#606266));display:flex;flex-direction:column;width:100%}.fv-thinking .fv-thinking-toggle{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font:inherit;font-size:var(--el-font-size-base,14px);gap:6px;line-height:22px;padding:4px 0;text-align:left;transition:color .2s;user-select:none}.fv-thinking .fv-thinking-toggle:hover{color:var(--fv-thinking-color,var(--el-color-primary,#409eff))}.fv-thinking .fv-thinking-toggle:focus{outline:none}.fv-thinking.is-disabled .fv-thinking-toggle{cursor:not-allowed;opacity:.6}.fv-thinking .fv-thinking-status-icon{align-items:center;display:inline-flex;height:16px;justify-content:center;width:16px}.fv-thinking .fv-thinking-status-icon .fv-thinking-dot{background-color:var(--el-color-primary,#409eff);border-radius:50%;height:8px;width:8px}.fv-thinking .fv-thinking-status-icon .is-loading{animation:fv-thinking-rotate 1s linear infinite;color:var(--el-color-primary,#409eff)}.fv-thinking .fv-thinking-status-icon .is-success{color:var(--el-color-success,#67c23a)}.fv-thinking .fv-thinking-status-icon .is-error{color:var(--el-color-danger,#f56c6c)}.fv-thinking .fv-thinking-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-thinking .fv-thinking-arrow{align-items:center;display:inline-flex;transition:transform .3s ease}.fv-thinking .fv-thinking-arrow.is-open{transform:rotate(180deg)}.fv-thinking .fv-thinking-content{box-sizing:border-box;color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);line-height:22px;padding:8px 0 8px 22px;white-space:pre-wrap;word-break:break-word}@keyframes fv-thinking-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-chain{box-sizing:border-box;display:flex;font-size:var(--el-font-size-base,14px)}.fv-chain.is-vertical{flex-direction:column}.fv-chain.is-vertical .fv-chain-item{display:flex;gap:10px}.fv-chain.is-vertical .fv-chain-item:not(:last-child) .fv-chain-node:before{background-color:var(--el-border-color-lighter,#ebeef5);bottom:-4px;content:"";left:50%;margin-left:-1px;position:absolute;top:18px;width:2px}.fv-chain.is-horizontal{flex-direction:row;gap:24px}.fv-chain.is-horizontal .fv-chain-item{align-items:flex-start;display:flex;gap:6px}.fv-chain .fv-chain-node{align-items:center;display:inline-flex;flex-shrink:0;font-size:16px;height:18px;justify-content:center;position:relative;width:18px}.fv-chain .fv-chain-node .fv-chain-dot{background-color:var(--el-fill-color-blank,#fff);border:2px solid var(--el-border-color,#dcdfe6);border-radius:50%;box-sizing:border-box;height:8px;width:8px}.fv-chain .fv-chain-item.status-success .fv-chain-node{color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-success .fv-chain-node .fv-chain-dot{background-color:var(--el-color-success,#67c23a);border-color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-error .fv-chain-node{color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-error .fv-chain-node .fv-chain-dot{background-color:var(--el-color-danger,#f56c6c);border-color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-loading .fv-chain-node{color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-loading .fv-chain-node .is-loading{animation:fv-chain-rotate 1s linear infinite}.fv-chain .fv-chain-item.status-loading .fv-chain-node .fv-chain-dot{border-color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-pending .fv-chain-title{color:var(--el-text-color-placeholder,#a8abb2)}.fv-chain .fv-chain-main{flex:1;min-width:0;padding-bottom:4px}.fv-chain .fv-chain-main .fv-chain-title{color:var(--el-text-color-primary,#303133);line-height:22px}.fv-chain .fv-chain-main .fv-chain-description{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);line-height:20px;word-break:break-word}@keyframes fv-chain-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-welcome{box-sizing:border-box;flex-direction:column;padding:var(--el-main-padding,20px);text-align:center;width:100%}.fv-welcome,.fv-welcome-icon{align-items:center;display:flex;justify-content:center}.fv-welcome-icon{margin-bottom:16px}.fv-welcome-icon .fv-welcome-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 8px);color:var(--el-color-primary,#409eff);font-size:36px;height:72px;width:72px}.fv-welcome-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-extra-large,20px);font-weight:600;line-height:1.4;margin:0}.fv-welcome-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin:8px 0 0;max-width:480px;white-space:pre-wrap;word-break:break-word}.fv-prompts{box-sizing:border-box;width:100%}.fv-prompts .fv-prompts-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin-bottom:12px}.fv-prompts .fv-prompts-list{display:flex;flex-wrap:wrap;gap:12px}.fv-prompts .fv-prompt-item{background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;cursor:pointer;flex:1 1 200px;max-width:100%;padding:12px 14px;transition:background-color var(--el-transition-duration,.3s),border-color var(--el-transition-duration,.3s)}.fv-prompts .fv-prompt-item:hover:not(.is-disabled){background-color:var(--el-fill-color-light,#f5f7fa);border-color:var(--el-border-color,#dcdfe6)}.fv-prompts .fv-prompt-item:focus-visible:not(.is-disabled){border-color:var(--el-color-primary,#409eff);outline:none}.fv-prompts .fv-prompt-item.is-disabled{background-color:var(--el-fill-color-lighter,#fafafa);cursor:not-allowed;opacity:.6}.fv-prompts .fv-prompt-item.is-disabled,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-description,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-icon,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-label{color:var(--el-text-color-placeholder,#a8abb2)}.fv-prompts .fv-prompt-item .fv-prompt-item-main{align-items:flex-start;display:flex;gap:10px}.fv-prompts .fv-prompt-item .fv-prompt-item-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:18px;margin-top:2px}.fv-prompts .fv-prompt-item .fv-prompt-item-text{flex:1;min-width:0}.fv-prompts .fv-prompt-item .fv-prompt-item-label{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:500;line-height:var(--el-font-line-height-primary,24px);word-break:break-word}.fv-prompts .fv-prompt-item .fv-prompt-item-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);line-height:var(--el-font-line-height-primary,24px);margin-top:2px;word-break:break-word}.fv-files-card{align-items:center;background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;display:flex;gap:8px;max-width:100%;min-width:0;padding:8px 24px 8px 10px;position:relative;transition:border-color var(--el-transition-duration,.3s)}.fv-files-card .fv-files-card-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:20px}.fv-files-card .fv-files-card-info{flex:1;min-width:0}.fv-files-card .fv-files-card-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-small,12px);line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-files-card .fv-files-card-size{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:16px;white-space:nowrap}.fv-files-card .fv-files-card-thumb{align-items:center;background-color:var(--el-fill-color-light,#f5f7fa);border-radius:var(--el-border-radius-base,4px);display:flex;flex-shrink:0;height:48px;justify-content:center;overflow:hidden;width:48px}.fv-files-card .fv-files-card-thumb .fv-files-card-img{display:block;height:100%;object-fit:cover;width:100%}.fv-files-card .fv-files-card-thumb .fv-files-card-thumb-placeholder{color:var(--el-text-color-placeholder,#a8abb2);font-size:20px}.fv-files-card .fv-files-card-status{align-items:center;background-color:var(--el-bg-color,#fff);border-radius:50%;bottom:-8px;display:flex;height:16px;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:16px}.fv-files-card .fv-files-card-status .fv-files-card-loading{animation:fv-files-card-rotating 1.5s linear infinite;color:var(--el-color-primary,#409eff);font-size:14px}.fv-files-card .fv-files-card-remove{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:12px;height:18px;justify-content:center;opacity:0;padding:0;position:absolute;right:2px;top:2px;transition:opacity var(--el-transition-duration,.3s),color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:18px}.fv-files-card .fv-files-card-remove:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-danger,#f56c6c)}.fv-files-card:hover .fv-files-card-remove{opacity:1}.fv-files-card.is-error{border-color:var(--el-color-danger,#f56c6c)}.fv-files-card.is-error .fv-files-card-name{color:var(--el-color-danger,#f56c6c)}@keyframes fv-files-card-rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-attachments{align-items:flex-start;box-sizing:border-box;display:flex;gap:8px;width:100%}.fv-attachments .fv-attachments-input{display:none}.fv-attachments .fv-attachments-trigger{align-items:center;background-color:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:32px}.fv-attachments .fv-attachments-trigger:hover:not(:disabled){background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-trigger.is-full,.fv-attachments .fv-attachments-trigger:disabled{color:var(--el-text-color-placeholder,#a8abb2);cursor:not-allowed}.fv-attachments .fv-attachments-list{display:flex;flex-wrap:wrap;gap:8px;min-width:0}.fv-attachments .fv-attachments-item{align-items:center;display:flex;min-width:0;position:relative}.fv-attachments .fv-attachments-item .fv-files-card{max-width:240px}.fv-attachments .fv-attachments-item .fv-attachments-retry{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:14px;height:20px;justify-content:center;margin-left:4px;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:20px}.fv-attachments .fv-attachments-item .fv-attachments-retry:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-tip{color:var(--el-text-color-placeholder,#a8abb2);flex:1;font-size:var(--el-font-size-extra-small,12px);line-height:32px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations{box-sizing:border-box;overflow-y:auto;width:100%}.fv-conversations .fv-conversations-group .fv-conversations-group-title{background-color:var(--el-bg-color,#fff);color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:20px;padding:8px 12px 4px;position:sticky;top:0;z-index:1}.fv-conversations .fv-conversations-item{align-items:center;border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;gap:4px;padding:0 8px 0 12px;transition:background-color .2s;user-select:none}.fv-conversations .fv-conversations-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-conversations .fv-conversations-item:hover .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-conversations .fv-conversations-item.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-conversations .fv-conversations-item.is-active .fv-conversations-item-label{color:var(--el-color-primary,#409eff);font-weight:600}.fv-conversations .fv-conversations-item.is-disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-conversations .fv-conversations-item.is-disabled .fv-conversations-item-label{color:var(--el-text-color-disabled,#a8abb2)}.fv-conversations .fv-conversations-item.is-disabled:hover{background-color:transparent}.fv-conversations .fv-conversations-item .fv-conversations-item-content{flex:1;min-width:0;padding:9px 0}.fv-conversations .fv-conversations-item .fv-conversations-item-content .fv-conversations-item-label{color:var(--el-text-color-regular,#606266);display:block;font-size:var(--el-font-size-base,14px);line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn{align-items:center;background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:inline-flex;flex-shrink:0;height:24px;justify-content:center;opacity:0;padding:0;pointer-events:none;transition:opacity .2s;width:24px}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn:hover{background-color:var(--el-fill-color,#f0f2f5);color:var(--el-text-color-primary,#303133)}.fv-conversations.show-menu-always .fv-conversations-item .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-msg{align-items:flex-start;box-sizing:border-box;display:flex;gap:12px;padding:8px 0;width:100%}.fv-msg .fv-msg-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);color:var(--el-text-color-secondary,#909399);flex-shrink:0;font-size:18px;height:32px;width:32px}.fv-msg .fv-msg-avatar,.fv-msg .fv-msg-avatar-bot{align-items:center;display:flex;justify-content:center}.fv-msg .fv-msg-avatar-bot{background-color:var(--el-color-primary,#409eff);border-radius:inherit;color:#fff;height:100%;width:100%}.fv-msg.is-user .fv-msg-avatar{background-color:var(--el-color-primary-light-8,#d9ecff);color:var(--el-color-primary,#409eff);order:2}.fv-msg .fv-msg-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;min-width:0}.fv-msg .fv-msg-main .fv-msg-header{align-items:center;color:var(--el-text-color-secondary,#909399);display:flex;font-size:var(--el-font-size-small,12px);gap:8px;margin-bottom:2px}.fv-msg .fv-msg-main .fv-msg-header .fv-msg-model{background-color:var(--el-fill-color,#f0f2f5);border-radius:var(--el-border-radius-base,4px);line-height:18px;padding:0 6px}.fv-msg .fv-msg-main .fv-msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);display:inline-flex;font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file .fv-msg-file-img{border-radius:var(--el-border-radius-base,4px);max-height:64px;max-width:64px;object-fit:cover}.fv-msg .fv-msg-main .fv-msg-content{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;word-break:break-word}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-error{color:var(--el-color-danger,#f56c6c)}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending{align-items:center;display:inline-flex;gap:4px;padding:4px 0}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending .fv-msg-dot{animation:fv-msg-blink 1s infinite;background-color:var(--el-text-color-secondary,#909399);border-radius:50%;height:6px;width:6px}.fv-msg .fv-msg-main .fv-msg-content-user{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);padding:8px 12px;white-space:pre-wrap}.fv-msg.is-user{flex-direction:row;justify-content:flex-end}.fv-msg.is-user .fv-msg-main{align-items:flex-end}.fv-msg .fv-msg-actions{align-items:center;display:flex;gap:2px;margin-top:2px}.fv-msg .fv-msg-actions .el-button+.el-button{margin-left:0}.fv-msg .fv-msg-actions .fv-msg-branch{align-items:center;display:inline-flex;gap:2px;margin-left:6px}.fv-msg .fv-msg-actions .fv-msg-branch .fv-msg-branch-label{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:0 2px}.fv-msg.is-user .fv-msg-actions{opacity:0;pointer-events:none;transition:opacity .15s}.fv-msg.is-user .fv-msg-actions .fv-msg-branch{margin-left:0}.fv-msg.is-user:focus-within .fv-msg-actions,.fv-msg.is-user:hover .fv-msg-actions{opacity:1;pointer-events:auto}@keyframes fv-msg-blink{0%,to{opacity:.3}50%{opacity:1}}.fv-messages{box-sizing:border-box;display:flex;flex:1;flex-direction:column;min-height:0;width:100%}.fv-messages .fv-messages-scroll{box-sizing:border-box;flex:1;min-height:0;overflow-y:auto;padding:0 16px}.fv-messages .fv-messages-inner{margin:0 auto;max-width:var(--fv-messages-max-width,none)}.fv-messages .fv-messages-empty{align-items:center;box-sizing:border-box;display:flex;flex:1;flex-direction:column;justify-content:center;padding:32px 16px}.fv-messages .fv-messages-empty .fv-messages-prompts{margin-top:8px;max-width:640px;width:100%}.fv-ai-chat{background-color:var(--el-bg-color,#fff);box-sizing:border-box;color:var(--el-text-color-primary,#303133);display:flex;flex-direction:column;height:100%;min-height:0;width:100%}.fv-ai-chat .fv-ai-chat-header{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:8px 16px}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-title{font-size:var(--el-font-size-base,14px);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-models{flex-shrink:0;width:220px}.fv-ai-chat .fv-ai-chat-body{display:flex;flex:1;min-height:0;overflow:hidden}.fv-ai-chat .fv-ai-chat-footer{flex-shrink:0;padding:8px 16px 12px}.fv-ai-chat.is-center-welcome .fv-ai-chat-body{flex:0 1 auto;margin-top:auto;min-height:0}.fv-ai-chat.is-center-welcome .fv-ai-chat-footer{margin-bottom:auto}html.dark .fv-ai-chat{background-color:var(--el-bg-color,#141414)}.fv-artifacts{background-color:var(--el-bg-color,#fff);border-left:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);box-sizing:border-box;display:flex;flex-direction:column;flex-shrink:0;max-width:60%;overflow:hidden;width:420px}.fv-artifacts .fv-artifacts-tabs{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:4px;overflow-x:auto;padding:6px 8px}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab{background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);cursor:pointer;flex-shrink:0;font-size:var(--el-font-size-small,12px);line-height:1.4;padding:4px 10px;white-space:nowrap}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-text-color-primary,#303133)}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-artifacts .fv-artifacts-tabs .fv-artifacts-spacer{flex:1}.fv-artifacts .fv-artifacts-frame{background-color:var(--el-bg-color-page,#f2f3f5);border:none;flex:1;min-height:0;width:100%}html.dark .fv-artifacts{background-color:var(--el-bg-color,#141414)}
1
+ .fv-xmarkdown{color:var(--el-text-color-primary,#303133);line-height:1.7;word-break:break-word}.fv-xmarkdown h1,.fv-xmarkdown h2,.fv-xmarkdown h3,.fv-xmarkdown h4,.fv-xmarkdown h5,.fv-xmarkdown h6{color:var(--el-text-color-primary,#303133);font-weight:600;margin:1em 0 .5em}.fv-xmarkdown h1{font-size:1.5em}.fv-xmarkdown h2{font-size:1.3em}.fv-xmarkdown h3{font-size:1.15em}.fv-xmarkdown p{margin:.5em 0}.fv-xmarkdown a{color:var(--el-color-primary,#409eff);text-decoration:none}.fv-xmarkdown a:hover{text-decoration:underline}.fv-xmarkdown blockquote{border-left:4px solid var(--el-border-color,#dcdfe6);color:var(--el-text-color-regular,#606266);margin:.5em 0;padding:.4em 1em}.fv-xmarkdown blockquote,.fv-xmarkdown code{background:var(--el-fill-color-light,#f5f7fa)}.fv-xmarkdown code{border-radius:3px;color:var(--el-color-danger,#f56c6c);font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:.9em;padding:.15em .4em}.fv-xmarkdown pre{background:#282c34;border-radius:6px;margin:.5em 0;overflow-x:auto;padding:1em}.fv-xmarkdown pre code{background:transparent;color:#dcdfe6;font-size:.9em;line-height:1.6;padding:0}.fv-xmarkdown table{border-collapse:collapse;margin:.5em 0;width:100%}.fv-xmarkdown table td,.fv-xmarkdown table th{border:1px solid var(--el-border-color-lighter,#ebeef5);padding:.5em .8em;text-align:left}.fv-xmarkdown table th{background:var(--el-fill-color-light,#f5f7fa);font-weight:600}.fv-xmarkdown table tr:nth-child(2n) td{background:var(--el-fill-color-blank,#fafcff)}.fv-xmarkdown .katex-display{margin:.5em 0;overflow-x:auto}.fv-typewriter{display:inline-block;max-width:100%;position:relative}.fv-typewriter .fv-typewriter-text{white-space:pre-wrap;word-break:break-word}.fv-typewriter .fv-typewriter-suffix{animation:fv-typewriter-blink 1s step-start infinite;display:inline-block}.fv-typewriter .fv-typewriter-fog{animation:fv-typewriter-fog-in .3s ease-out both;background:linear-gradient(90deg,transparent,var(--fv-typewriter-fog-color,var(--el-bg-color,#fff)));bottom:0;pointer-events:none;position:absolute;right:0;top:0}@keyframes fv-typewriter-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes fv-typewriter-fog-in{0%{opacity:0}to{opacity:1}}.fv-bubble{align-items:flex-start;display:flex;gap:var(--fv-bubble-avatar-gap,12px)}.fv-bubble.is-end{flex-direction:row-reverse;justify-content:flex-end}.fv-bubble.is-end .fv-bubble-main{align-items:flex-end}.fv-bubble .fv-bubble-avatar{display:flex;flex-shrink:0}.fv-bubble .fv-bubble-avatar .el-avatar{height:var(--fv-bubble-avatar-size,36px);width:var(--fv-bubble-avatar-size,36px)}.fv-bubble .fv-bubble-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;max-width:100%;min-width:0}.fv-bubble .fv-bubble-main .fv-bubble-footer,.fv-bubble .fv-bubble-main .fv-bubble-header{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px)}.fv-bubble .fv-bubble-main .fv-bubble-footer{margin-top:4px}.fv-bubble .fv-bubble-content{border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;padding:var(--el-main-padding,12px) calc(var(--el-main-padding, 12px) + 4px);position:relative;word-break:break-word}.fv-bubble .fv-bubble-content.no-padding{padding:0}.fv-bubble .fv-bubble-content .fv-bubble-text{white-space:pre-wrap}.fv-bubble.shape-round .fv-bubble-content{border-radius:var(--el-border-radius-round,20px)}.fv-bubble.shape-corner .fv-bubble-content{border-start-start-radius:calc(var(--el-border-radius-base, 4px) - 2px)}.fv-bubble.is-end.shape-corner .fv-bubble-content{border-start-end-radius:calc(var(--el-border-radius-base, 4px) - 2px);border-start-start-radius:calc(var(--el-border-radius-base, 4px) + 4px)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-filled .fv-bubble-content{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-bubble.variant-borderless .fv-bubble-content,.fv-bubble.variant-outlined .fv-bubble-content{border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6)}.fv-bubble.variant-outlined .fv-bubble-content{background:none}.fv-bubble.variant-shadow .fv-bubble-content{background:none;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12))}.fv-bubble .fv-bubble-content.no-style{background:transparent;border:none;box-shadow:none;padding:0}.fv-bubble .fv-bubble-loading{align-items:center;display:flex;gap:5px;min-height:1em;width:fit-content}.fv-bubble .fv-bubble-loading .fv-bubble-loading-dot{animation:fv-bubble-wave 1s ease-in-out infinite;background-color:var(--el-color-primary,#409eff);border-radius:50%;height:5px;width:5px}@keyframes fv-bubble-wave{0%,to{transform:translateY(-2px)}50%{transform:translateY(2px)}}.fv-bubble-list{display:flex;flex-direction:column;min-height:0;position:relative}.fv-bubble-list .fv-bubble-list-scroll{display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.fv-bubble-list .fv-bubble-list-scroll>.fv-bubble{flex-shrink:0}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar{overflow-y:scroll;scrollbar-width:auto}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar{-webkit-appearance:none;width:6px}.fv-bubble-list .fv-bubble-list-scroll.always-scrollbar::-webkit-scrollbar-thumb{background-color:var(--el-border-color,#dcdfe6);border-radius:3px}.fv-bubble-list .fv-bubble-list-back{align-items:center;bottom:16px;box-shadow:var(--el-box-shadow-light,0 0 12px rgba(0,0,0,.12));display:inline-flex;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);z-index:1}.fv-bubble-list .fv-bubble-list-back .fv-bubble-list-back-icon{align-items:center;display:inline-flex;justify-content:center;line-height:1}.fv-bubble-list-fade-enter-active,.fv-bubble-list-fade-leave-active{transition:opacity .2s ease,transform .2s ease}.fv-bubble-list-fade-enter-from,.fv-bubble-list-fade-leave-to{opacity:0;transform:translate(-50%,4px)}.fv-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-sender .fv-sender-header{animation:fv-sender-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-sender .fv-sender-body{background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;flex-direction:column;gap:6px;padding:8px 12px;transition:border-color .2s}.fv-sender .fv-sender-body .fv-sender-body-top:empty{display:none}.fv-sender .fv-sender-body .fv-sender-row{align-items:flex-end;display:flex;gap:8px}.fv-sender .fv-sender-body .fv-sender-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:calc(var(--el-border-radius-base, 4px) + 2px);display:flex;flex:1;gap:8px;min-width:0;outline:none;padding:4px 8px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-cancel:hover{color:var(--el-color-danger,#f56c6c)}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave{align-items:center;direction:rtl;display:flex;flex:1;gap:2px;height:22px;justify-content:flex-end;min-width:0;overflow:hidden}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-wave .fv-sender-recording-bar{background-color:var(--el-color-primary,#409eff);border-radius:1px;flex-shrink:0;min-height:2px;opacity:.75;width:2px}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-duration{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:var(--el-font-size-small,12px);font-variant-numeric:tabular-nums;min-width:3em;text-align:center}.fv-sender .fv-sender-body .fv-sender-recording .fv-sender-recording-confirm{flex-shrink:0}.fv-sender .fv-sender-body .fv-sender-input{display:flex;flex:1;min-width:0;position:relative}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea{background:transparent;border:none;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;min-width:0;outline:none;padding:4px 0;resize:none}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea:disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-textarea[readonly]{cursor:default}.fv-sender .fv-sender-body .fv-sender-input .fv-sender-trigger-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-sender .fv-sender-body .fv-sender-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-action-left{align-items:center;display:flex;gap:4px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech{color:var(--el-text-color-regular,#606266);padding:6px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech .el-icon{font-size:18px}.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):active,.fv-sender .fv-sender-body .fv-sender-actions .fv-sender-speech:not(.is-disabled):hover{background-color:transparent;color:var(--el-text-color-primary,#303133)}.fv-sender.variant-updown .fv-sender-row{align-items:stretch;flex-direction:column;gap:6px}.fv-sender.variant-updown .fv-sender-row .fv-sender-input{width:100%}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions{align-self:flex-end;justify-content:flex-end}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left){align-self:stretch}.fv-sender.variant-updown .fv-sender-row .fv-sender-actions:has(.fv-sender-action-left) .fv-sender-action-left{margin-right:auto}.fv-sender.is-focused .fv-sender-body{border-color:var(--el-color-primary,#409eff)}.fv-sender.is-disabled .fv-sender-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-sender.has-shadow .fv-sender-body{box-shadow:0 8px 20px 0 var(--el-box-shadow-color,rgba(0,0,0,.08));transition:border-color .2s,box-shadow .2s}.fv-sender.has-shadow.is-focused .fv-sender-body{box-shadow:0 8px 24px 0 var(--el-box-shadow-color,rgba(0,0,0,.12))}.fv-sender .fv-sender-stop{--fv-sender-stop-icon-size:16px;--fv-sender-stop-ring-width:2px;--fv-sender-stop-ring-duration:1.1s;position:relative}.fv-sender .fv-sender-stop .el-icon{align-items:center;display:inline-flex;font-size:var(--fv-sender-stop-icon-size);justify-content:center}.fv-sender .fv-sender-stop .fv-stop-icon{display:block}.fv-sender .fv-sender-stop .fv-sender-stop-ring{height:100%;inset:0;overflow:visible;pointer-events:none;position:absolute;width:100%}.fv-sender .fv-sender-stop .fv-sender-stop-ring .fv-sender-stop-ring-rect{x:calc(var(--fv-sender-stop-ring-width)/2);y:calc(var(--fv-sender-stop-ring-width)/2);fill:none;stroke:rgb(255,255,255,var(--ring-alpha,.9));stroke-width:var(--fv-sender-stop-ring-width);stroke-dasharray:0 calc(100 - var(--ring-len, 10)) var(--ring-len,10) 0;animation:fv-sender-stop-spin var(--fv-sender-stop-ring-duration) linear infinite;height:calc(100% - var(--fv-sender-stop-ring-width));width:calc(100% - var(--fv-sender-stop-ring-width))}@media (prefers-reduced-motion:reduce){.fv-sender .fv-sender-stop .fv-sender-stop-ring-rect{animation:none}}.fv-sender .fv-sender-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}@keyframes fv-sender-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}@keyframes fv-sender-stop-spin{to{stroke-dashoffset:-100}}.fv-mention-sender{position:relative}.fv-mention-sender .fv-mention-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-mention-popover .fv-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-mention-popover .fv-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-mention-popover .fv-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-mention-popover .fv-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-mention-popover .fv-mention-item.is-active,.fv-mention-popover .fv-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-mention-popover .fv-mention-item .fv-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-mention-popover .fv-mention-item .fv-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-mention-popover .fv-mention-item .fv-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-sender{box-sizing:border-box;display:flex;flex-direction:column;width:100%}.fv-editor-sender .fv-editor-header{animation:fv-editor-slide-down .3s ease;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);max-height:300px;overflow:hidden;padding:8px 12px}.fv-editor-sender .fv-editor-body{align-items:flex-end;background-color:var(--el-fill-color-blank,#fff);border:var(--el-border-width,1px) solid var(--el-border-color,#dcdfe6);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);display:flex;gap:8px;padding:8px 12px;transition:border-color .2s}.fv-editor-sender .fv-editor-body .fv-editor-prefix{align-items:center;align-self:center;display:flex;flex-shrink:0}.fv-editor-sender .fv-editor-body .fv-editor-input{display:flex;flex:1;min-width:0;position:relative}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content{background:transparent;box-sizing:border-box;color:var(--el-text-color-primary,#303133);flex:1;font:inherit;font-family:inherit;font-size:var(--el-font-size-base,14px);line-height:22px;max-height:220px;min-width:0;outline:none;overflow-y:auto;padding:4px 0;white-space:pre-wrap;word-break:break-word}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-content:empty:before{color:var(--el-text-color-placeholder,#a8abb2);content:attr(data-placeholder);pointer-events:none}.fv-editor-sender .fv-editor-body .fv-editor-input .fv-editor-anchor{bottom:0;height:0;pointer-events:none;position:absolute;width:0}.fv-editor-sender .fv-editor-body .fv-editor-actions{align-items:center;align-self:flex-end;display:flex;flex-shrink:0;gap:4px}.fv-editor-sender .fv-editor-tag{align-items:center;background-color:var(--el-color-primary-light-9,#ecf5ff);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--el-color-primary,#409eff);display:inline-flex;font-size:var(--el-font-size-base,14px);line-height:20px;margin:0 1px;max-width:100%;padding:0 6px;user-select:all;white-space:nowrap}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag{padding:0 2px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input{background:transparent;border:none;box-sizing:border-box;color:inherit;font:inherit;line-height:20px;outline:none;padding:0 4px;width:120px}.fv-editor-sender .fv-editor-tag.fv-editor-tag-inputTag .fv-editor-tag-input::placeholder{color:var(--el-text-color-placeholder,#a8abb2)}.fv-editor-sender .fv-editor-tag.fv-editor-tag-htmlTag{display:inline;user-select:text;white-space:normal}.fv-editor-sender.variant-updown .fv-editor-body{align-items:stretch;flex-direction:column;gap:6px}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-input{width:100%}.fv-editor-sender.variant-updown .fv-editor-body .fv-editor-actions{align-self:flex-end;justify-content:flex-end}.fv-editor-sender.device-h5 .fv-editor-body{padding:6px 10px}.fv-editor-sender.is-focused .fv-editor-body{border-color:var(--el-color-primary,#409eff)}.fv-editor-sender.is-disabled .fv-editor-body{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-sender .fv-editor-footer{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);padding:6px 12px}.fv-editor-mention-popover .fv-editor-mention-panel{max-height:260px;overflow-y:auto;padding:4px}.fv-editor-mention-popover .fv-editor-mention-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-editor-mention-popover .fv-editor-mention-loading{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);padding:8px;text-align:center}.fv-editor-mention-popover .fv-editor-mention-item{align-items:center;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-primary,#303133);cursor:pointer;display:flex;font-size:var(--el-font-size-base,14px);gap:8px;padding:6px 8px}.fv-editor-mention-popover .fv-editor-mention-item.is-active,.fv-editor-mention-popover .fv-editor-mention-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar{align-items:center;background-color:var(--el-fill-color,#e9e9eb);border-radius:50%;color:var(--el-text-color-regular,#606266);display:inline-flex;flex-shrink:0;font-size:var(--el-font-size-small,12px);height:24px;justify-content:center;overflow:hidden;width:24px}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-avatar img{height:100%;object-fit:cover;width:100%}.fv-editor-mention-popover .fv-editor-mention-item .fv-editor-mention-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-editor-tip-popover .fv-editor-tip-panel{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:6px 8px}.fv-editor-select-dialog .fv-editor-select-group+.fv-editor-select-group{margin-top:12px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-title{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:600;margin-bottom:8px}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;transition:border-color .2s}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item:hover{border-color:var(--el-color-primary,#409eff)}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-preview{border-radius:var(--el-border-radius-base,4px);height:56px;object-fit:cover;width:100%}.fv-editor-select-dialog .fv-editor-select-group .fv-editor-select-item .fv-editor-select-name{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fv-editor-slide-down{0%{max-height:0;opacity:0}to{max-height:300px;opacity:1}}.fv-thinking{background-color:var(--fv-thinking-bg,transparent);border-radius:var(--el-border-radius-base,4px);box-sizing:border-box;color:var(--fv-thinking-color,var(--el-text-color-regular,#606266));display:flex;flex-direction:column;width:100%}.fv-thinking .fv-thinking-toggle{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;font:inherit;font-size:var(--el-font-size-base,14px);gap:6px;line-height:22px;padding:4px 0;text-align:left;transition:color .2s;user-select:none}.fv-thinking .fv-thinking-toggle:hover{color:var(--fv-thinking-color,var(--el-color-primary,#409eff))}.fv-thinking .fv-thinking-toggle:focus{outline:none}.fv-thinking.is-disabled .fv-thinking-toggle{cursor:not-allowed;opacity:.6}.fv-thinking .fv-thinking-status-icon{align-items:center;display:inline-flex;height:16px;justify-content:center;width:16px}.fv-thinking .fv-thinking-status-icon .fv-thinking-dot{background-color:var(--el-color-primary,#409eff);border-radius:50%;height:8px;width:8px}.fv-thinking .fv-thinking-status-icon .is-loading{animation:fv-thinking-rotate 1s linear infinite;color:var(--el-color-primary,#409eff)}.fv-thinking .fv-thinking-status-icon .is-success{color:var(--el-color-success,#67c23a)}.fv-thinking .fv-thinking-status-icon .is-error{color:var(--el-color-danger,#f56c6c)}.fv-thinking .fv-thinking-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-thinking .fv-thinking-arrow{align-items:center;display:inline-flex;transition:transform .3s ease}.fv-thinking .fv-thinking-arrow.is-open{transform:rotate(180deg)}.fv-thinking .fv-thinking-content{box-sizing:border-box;color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-base,14px);line-height:22px;padding:8px 0 8px 22px;white-space:pre-wrap;word-break:break-word}@keyframes fv-thinking-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-chain{box-sizing:border-box;display:flex;font-size:var(--el-font-size-base,14px)}.fv-chain.is-vertical{flex-direction:column}.fv-chain.is-vertical .fv-chain-item{display:flex;gap:10px}.fv-chain.is-vertical .fv-chain-item:not(:last-child) .fv-chain-node:before{background-color:var(--el-border-color-lighter,#ebeef5);bottom:-4px;content:"";left:50%;margin-left:-1px;position:absolute;top:18px;width:2px}.fv-chain.is-horizontal{flex-direction:row;gap:24px}.fv-chain.is-horizontal .fv-chain-item{align-items:flex-start;display:flex;gap:6px}.fv-chain .fv-chain-node{align-items:center;display:inline-flex;flex-shrink:0;font-size:16px;height:18px;justify-content:center;position:relative;width:18px}.fv-chain .fv-chain-node .fv-chain-dot{background-color:var(--el-fill-color-blank,#fff);border:2px solid var(--el-border-color,#dcdfe6);border-radius:50%;box-sizing:border-box;height:8px;width:8px}.fv-chain .fv-chain-item.status-success .fv-chain-node{color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-success .fv-chain-node .fv-chain-dot{background-color:var(--el-color-success,#67c23a);border-color:var(--el-color-success,#67c23a)}.fv-chain .fv-chain-item.status-error .fv-chain-node{color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-error .fv-chain-node .fv-chain-dot{background-color:var(--el-color-danger,#f56c6c);border-color:var(--el-color-danger,#f56c6c)}.fv-chain .fv-chain-item.status-loading .fv-chain-node{color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-loading .fv-chain-node .is-loading{animation:fv-chain-rotate 1s linear infinite}.fv-chain .fv-chain-item.status-loading .fv-chain-node .fv-chain-dot{border-color:var(--el-color-primary,#409eff)}.fv-chain .fv-chain-item.status-pending .fv-chain-title{color:var(--el-text-color-placeholder,#a8abb2)}.fv-chain .fv-chain-main{flex:1;min-width:0;padding-bottom:4px}.fv-chain .fv-chain-main .fv-chain-title{color:var(--el-text-color-primary,#303133);line-height:22px}.fv-chain .fv-chain-main .fv-chain-description{color:var(--el-text-color-regular,#606266);font-size:var(--el-font-size-small,12px);line-height:20px;word-break:break-word}@keyframes fv-chain-rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-welcome{box-sizing:border-box;flex-direction:column;padding:var(--el-main-padding,20px);text-align:center;width:100%}.fv-welcome,.fv-welcome-icon{align-items:center;display:flex;justify-content:center}.fv-welcome-icon{margin-bottom:16px}.fv-welcome-icon .fv-welcome-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 8px);color:var(--el-color-primary,#409eff);font-size:36px;height:72px;width:72px}.fv-welcome-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-extra-large,20px);font-weight:600;line-height:1.4;margin:0}.fv-welcome-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin:8px 0 0;max-width:480px;white-space:pre-wrap;word-break:break-word}.fv-prompts{box-sizing:border-box;width:100%}.fv-prompts .fv-prompts-title{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);margin-bottom:12px}.fv-prompts .fv-prompts-list{display:flex;flex-wrap:wrap;gap:12px}.fv-prompts .fv-prompt-item{background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;cursor:pointer;flex:1 1 200px;max-width:100%;padding:12px 14px;transition:background-color var(--el-transition-duration,.3s),border-color var(--el-transition-duration,.3s)}.fv-prompts .fv-prompt-item:hover:not(.is-disabled){background-color:var(--el-fill-color-light,#f5f7fa);border-color:var(--el-border-color,#dcdfe6)}.fv-prompts .fv-prompt-item:focus-visible:not(.is-disabled){border-color:var(--el-color-primary,#409eff);outline:none}.fv-prompts .fv-prompt-item.is-disabled{background-color:var(--el-fill-color-lighter,#fafafa);cursor:not-allowed;opacity:.6}.fv-prompts .fv-prompt-item.is-disabled,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-description,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-icon,.fv-prompts .fv-prompt-item.is-disabled .fv-prompt-item-label{color:var(--el-text-color-placeholder,#a8abb2)}.fv-prompts .fv-prompt-item .fv-prompt-item-main{align-items:flex-start;display:flex;gap:10px}.fv-prompts .fv-prompt-item .fv-prompt-item-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:18px;margin-top:2px}.fv-prompts .fv-prompt-item .fv-prompt-item-text{flex:1;min-width:0}.fv-prompts .fv-prompt-item .fv-prompt-item-label{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);font-weight:500;line-height:var(--el-font-line-height-primary,24px);word-break:break-word}.fv-prompts .fv-prompt-item .fv-prompt-item-description{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);line-height:var(--el-font-line-height-primary,24px);margin-top:2px;word-break:break-word}.fv-files-card{align-items:center;background-color:var(--el-bg-color,#fff);border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);box-sizing:border-box;display:flex;gap:8px;max-width:100%;min-width:0;padding:8px 24px 8px 10px;position:relative;transition:border-color var(--el-transition-duration,.3s)}.fv-files-card .fv-files-card-icon{color:var(--el-color-primary,#409eff);flex-shrink:0;font-size:20px}.fv-files-card .fv-files-card-info{flex:1;min-width:0}.fv-files-card .fv-files-card-name{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-small,12px);line-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-files-card .fv-files-card-size{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:16px;white-space:nowrap}.fv-files-card .fv-files-card-thumb{align-items:center;background-color:var(--el-fill-color-light,#f5f7fa);border-radius:var(--el-border-radius-base,4px);display:flex;flex-shrink:0;height:48px;justify-content:center;overflow:hidden;width:48px}.fv-files-card .fv-files-card-thumb .fv-files-card-img{display:block;height:100%;object-fit:cover;width:100%}.fv-files-card .fv-files-card-thumb .fv-files-card-thumb-placeholder{color:var(--el-text-color-placeholder,#a8abb2);font-size:20px}.fv-files-card .fv-files-card-status{align-items:center;background-color:var(--el-bg-color,#fff);border-radius:50%;bottom:-8px;display:flex;height:16px;justify-content:center;left:50%;position:absolute;transform:translateX(-50%);width:16px}.fv-files-card .fv-files-card-status .fv-files-card-loading{animation:fv-files-card-rotating 1.5s linear infinite;color:var(--el-color-primary,#409eff);font-size:14px}.fv-files-card .fv-files-card-remove{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:12px;height:18px;justify-content:center;opacity:0;padding:0;position:absolute;right:2px;top:2px;transition:opacity var(--el-transition-duration,.3s),color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:18px}.fv-files-card .fv-files-card-remove:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-danger,#f56c6c)}.fv-files-card:hover .fv-files-card-remove{opacity:1}.fv-files-card.is-error{border-color:var(--el-color-danger,#f56c6c)}.fv-files-card.is-error .fv-files-card-name{color:var(--el-color-danger,#f56c6c)}@keyframes fv-files-card-rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fv-attachments{align-items:flex-start;box-sizing:border-box;display:flex;gap:8px;width:100%}.fv-attachments .fv-attachments-input{display:none}.fv-attachments .fv-attachments-trigger{align-items:center;background-color:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;flex-shrink:0;font-size:16px;height:32px;justify-content:center;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:32px}.fv-attachments .fv-attachments-trigger:hover:not(:disabled){background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-trigger.is-full,.fv-attachments .fv-attachments-trigger:disabled{color:var(--el-text-color-placeholder,#a8abb2);cursor:not-allowed}.fv-attachments .fv-attachments-list{display:flex;flex-wrap:wrap;gap:8px;min-width:0}.fv-attachments .fv-attachments-item{align-items:center;display:flex;min-width:0;position:relative}.fv-attachments .fv-attachments-item .fv-files-card{max-width:240px}.fv-attachments .fv-attachments-item .fv-attachments-retry{align-items:center;background-color:transparent;border:none;border-radius:50%;color:var(--el-text-color-secondary,#909399);cursor:pointer;display:flex;font-size:14px;height:20px;justify-content:center;margin-left:4px;padding:0;transition:color var(--el-transition-duration,.3s),background-color var(--el-transition-duration,.3s);width:20px}.fv-attachments .fv-attachments-item .fv-attachments-retry:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-color-primary,#409eff)}.fv-attachments .fv-attachments-tip{color:var(--el-text-color-placeholder,#a8abb2);flex:1;font-size:var(--el-font-size-extra-small,12px);line-height:32px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations{box-sizing:border-box;overflow-y:auto;width:100%}.fv-conversations .fv-conversations-group .fv-conversations-group-title{background-color:var(--el-bg-color,#fff);color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-extra-small,12px);line-height:20px;padding:8px 12px 4px;position:sticky;top:0;z-index:1}.fv-conversations .fv-conversations-item{align-items:center;border-radius:var(--el-border-radius-base,4px);cursor:pointer;display:flex;gap:4px;padding:0 8px 0 12px;transition:background-color .2s;user-select:none}.fv-conversations .fv-conversations-item:hover{background-color:var(--el-fill-color-light,#f5f7fa)}.fv-conversations .fv-conversations-item:hover .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-conversations .fv-conversations-item.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-conversations .fv-conversations-item.is-active .fv-conversations-item-label{color:var(--el-color-primary,#409eff);font-weight:600}.fv-conversations .fv-conversations-item.is-disabled{color:var(--el-text-color-disabled,#a8abb2);cursor:not-allowed}.fv-conversations .fv-conversations-item.is-disabled .fv-conversations-item-label{color:var(--el-text-color-disabled,#a8abb2)}.fv-conversations .fv-conversations-item.is-disabled:hover{background-color:transparent}.fv-conversations .fv-conversations-item .fv-conversations-item-content{flex:1;min-width:0;padding:9px 0}.fv-conversations .fv-conversations-item .fv-conversations-item-content .fv-conversations-item-label{color:var(--el-text-color-regular,#606266);display:block;font-size:var(--el-font-size-base,14px);line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn{align-items:center;background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-secondary,#909399);cursor:pointer;display:inline-flex;flex-shrink:0;height:24px;justify-content:center;opacity:0;padding:0;pointer-events:none;transition:opacity .2s;width:24px}.fv-conversations .fv-conversations-item .fv-conversations-menu-btn:hover{background-color:var(--el-fill-color,#f0f2f5);color:var(--el-text-color-primary,#303133)}.fv-conversations.show-menu-always .fv-conversations-item .fv-conversations-menu-btn{opacity:1;pointer-events:auto}.fv-msg{align-items:flex-start;box-sizing:border-box;display:flex;gap:12px;padding:8px 0;width:100%}.fv-msg .fv-msg-avatar{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);color:var(--el-text-color-secondary,#909399);flex-shrink:0;font-size:18px;height:32px;width:32px}.fv-msg .fv-msg-avatar,.fv-msg .fv-msg-avatar-bot{align-items:center;display:flex;justify-content:center}.fv-msg .fv-msg-avatar-bot{background-color:var(--el-color-primary,#409eff);border-radius:inherit;color:#fff;height:100%;width:100%}.fv-msg .fv-msg-avatar-img{border-radius:inherit;display:block;height:100%;object-fit:cover;width:100%}.fv-msg.is-user .fv-msg-avatar{background-color:var(--el-color-primary-light-8,#d9ecff);color:var(--el-color-primary,#409eff);order:2}.fv-msg .fv-msg-main{align-items:flex-start;display:flex;flex:1;flex-direction:column;min-width:0}.fv-msg .fv-msg-main .fv-msg-header{align-items:center;color:var(--el-text-color-secondary,#909399);display:flex;font-size:var(--el-font-size-small,12px);gap:8px;margin-bottom:2px}.fv-msg .fv-msg-main .fv-msg-header .fv-msg-model{background-color:var(--el-fill-color,#f0f2f5);border-radius:var(--el-border-radius-base,4px);line-height:18px;padding:0 6px}.fv-msg .fv-msg-main .fv-msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file{align-items:center;border:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);display:inline-flex;font-size:var(--el-font-size-small,12px);padding:4px 8px}.fv-msg .fv-msg-main .fv-msg-files .fv-msg-file .fv-msg-file-img{border-radius:var(--el-border-radius-base,4px);max-height:64px;max-width:64px;object-fit:cover}.fv-msg .fv-msg-main .fv-msg-content{color:var(--el-text-color-primary,#303133);font-size:var(--el-font-size-base,14px);line-height:var(--el-font-line-height-primary,24px);max-width:100%;min-width:0;word-break:break-word}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-error{color:var(--el-color-danger,#f56c6c)}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending{align-items:center;display:inline-flex;gap:4px;padding:4px 0}.fv-msg .fv-msg-main .fv-msg-content .fv-msg-pending .fv-msg-dot{animation:fv-msg-blink 1s infinite;background-color:var(--el-text-color-secondary,#909399);border-radius:50%;height:6px;width:6px}.fv-msg .fv-msg-main .fv-msg-content-user{background-color:var(--el-fill-color-light,#f5f7fa);border-radius:calc(var(--el-border-radius-base, 4px) + 4px);padding:8px 12px;white-space:pre-wrap}.fv-msg.is-user{flex-direction:row;justify-content:flex-end}.fv-msg.is-user .fv-msg-main{align-items:flex-end}.fv-msg .fv-msg-actions{align-items:center;display:flex;gap:2px;margin-top:2px}.fv-msg .fv-msg-actions .el-button+.el-button{margin-left:0}.fv-msg .fv-msg-actions .fv-msg-branch{align-items:center;display:inline-flex;gap:2px;margin-left:6px}.fv-msg .fv-msg-actions .fv-msg-branch .fv-msg-branch-label{color:var(--el-text-color-secondary,#909399);font-size:var(--el-font-size-small,12px);padding:0 2px}.fv-msg.is-user .fv-msg-actions{opacity:0;pointer-events:none;transition:opacity .15s}.fv-msg.is-user .fv-msg-actions .fv-msg-branch{margin-left:0}.fv-msg.is-user:focus-within .fv-msg-actions,.fv-msg.is-user:hover .fv-msg-actions{opacity:1;pointer-events:auto}@keyframes fv-msg-blink{0%,to{opacity:.3}50%{opacity:1}}.fv-messages{box-sizing:border-box;display:flex;flex:1;flex-direction:column;min-height:0;width:100%}.fv-messages .fv-messages-scroll{box-sizing:border-box;flex:1;min-height:0;overflow-y:auto;padding:0 16px}.fv-messages .fv-messages-inner{margin:0 auto;max-width:var(--fv-messages-max-width,none)}.fv-messages .fv-messages-empty{align-items:center;box-sizing:border-box;display:flex;flex:1;flex-direction:column;justify-content:center;padding:32px 16px}.fv-messages .fv-messages-empty .fv-messages-prompts{margin-top:8px;max-width:640px;width:100%}.fv-ai-chat{background-color:var(--el-bg-color,#fff);box-sizing:border-box;color:var(--el-text-color-primary,#303133);display:flex;flex-direction:column;height:100%;min-height:0;width:100%}.fv-ai-chat .fv-ai-chat-header{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:12px;justify-content:space-between;padding:8px 16px}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-title{font-size:var(--el-font-size-base,14px);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-ai-chat .fv-ai-chat-header .fv-ai-chat-models{flex-shrink:0;width:220px}.fv-ai-chat .fv-ai-chat-body{display:flex;flex:1;min-height:0;overflow:hidden}.fv-ai-chat .fv-ai-chat-footer{flex-shrink:0;padding:8px 16px 12px}.fv-ai-chat.is-center-welcome .fv-ai-chat-body{flex:0 1 auto;margin-top:auto;min-height:0}.fv-ai-chat.is-center-welcome .fv-ai-chat-footer{margin-bottom:auto}html.dark .fv-ai-chat{background-color:var(--el-bg-color,#141414)}.fv-artifacts{background-color:var(--el-bg-color,#fff);border-left:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);box-sizing:border-box;display:flex;flex-direction:column;flex-shrink:0;max-width:60%;overflow:hidden;width:420px}.fv-artifacts .fv-artifacts-tabs{align-items:center;border-bottom:var(--el-border-width,1px) solid var(--el-border-color-lighter,#ebeef5);display:flex;flex-shrink:0;gap:4px;overflow-x:auto;padding:6px 8px}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab{background:transparent;border:none;border-radius:var(--el-border-radius-base,4px);color:var(--el-text-color-regular,#606266);cursor:pointer;flex-shrink:0;font-size:var(--el-font-size-small,12px);line-height:1.4;padding:4px 10px;white-space:nowrap}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab:hover{background-color:var(--el-fill-color-light,#f5f7fa);color:var(--el-text-color-primary,#303133)}.fv-artifacts .fv-artifacts-tabs .fv-artifact-tab.is-active{background-color:var(--el-color-primary-light-9,#ecf5ff);color:var(--el-color-primary,#409eff)}.fv-artifacts .fv-artifacts-tabs .fv-artifacts-spacer{flex:1}.fv-artifacts .fv-artifacts-frame{background-color:var(--el-bg-color-page,#f2f3f5);border:none;flex:1;min-height:0;width:100%}html.dark .fv-artifacts{background-color:var(--el-bg-color,#141414)}