nxd-plugin 1.7.76 → 1.7.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/assets/dataJson/AiChatMock.json.d.ts +184 -20
  2. package/dist/chunks/{component-AiChat-DvOiS6XW.mjs → component-AiChat-DtKyyjMt.mjs} +1605 -1051
  3. package/dist/chunks/{component-AqiMonitor-xtkg3YYL.mjs → component-AqiMonitor-Bxw9Os2m.mjs} +1 -1
  4. package/dist/chunks/{component-ChartCumulativePre-CrIsXxUC.mjs → component-ChartCumulativePre-BW1Y8HXf.mjs} +2 -2
  5. package/dist/chunks/{component-ChartServiceMaterial-CH2JRmXk.mjs → component-ChartServiceMaterial-BaE-xlnq.mjs} +2 -2
  6. package/dist/chunks/{component-Duty-Btcizjpy.mjs → component-Duty-CaVzFd_v.mjs} +2 -2
  7. package/dist/chunks/{component-EarlyWarningStatistic-iiIJr86a.mjs → component-EarlyWarningStatistic-D2SEwIRU.mjs} +2 -2
  8. package/dist/chunks/{component-GeologyLiveAlarm-BDKH6_3N.mjs → component-GeologyLiveAlarm-CYzCuF5N.mjs} +2 -2
  9. package/dist/chunks/{component-HighQuality-YqVCokC1.mjs → component-HighQuality-o_x0RVuO.mjs} +18 -8
  10. package/dist/chunks/{component-HighWayEarlyWarningRed-UpU-jUbO.mjs → component-HighWayEarlyWarningRed-pes2Dzrq.mjs} +2 -2
  11. package/dist/chunks/{component-HighWayFreeze-DDt3yPAK.mjs → component-HighWayFreeze-CWnV9Vk4.mjs} +2 -2
  12. package/dist/chunks/{component-HighwayLiveAlarm-vaPU17Pr.mjs → component-HighwayLiveAlarm-C0ohy5Ol.mjs} +2 -2
  13. package/dist/chunks/{component-HighwayLiveAlarmNew-CVFrU6SR.mjs → component-HighwayLiveAlarmNew-CFkywFAj.mjs} +3 -3
  14. package/dist/chunks/{component-HighwayStations-Choq-MV8.mjs → component-HighwayStations-ChM12fKn.mjs} +2 -2
  15. package/dist/chunks/{component-HighwayWeatherForecast-CFnbV8Es.mjs → component-HighwayWeatherForecast-DTsoF5iO.mjs} +2 -2
  16. package/dist/chunks/{component-IframeWeb-GuGLuA4w.mjs → component-IframeWeb-Dx1zJjS0.mjs} +1 -1
  17. package/dist/chunks/{component-ImageGeneration-BMwWQhbf.mjs → component-ImageGeneration-D1cxIDSz.mjs} +1 -1
  18. package/dist/chunks/{component-IntroducePic-D7aUONYj.mjs → component-IntroducePic-DIwIZFsO.mjs} +1 -1
  19. package/dist/chunks/{component-LithiumBatteryMiningArea-BGAEr-4D.mjs → component-LithiumBatteryMiningArea-BpcrvFsU.mjs} +2 -2
  20. package/dist/chunks/{component-MapPopup-CGpYPcYD.mjs → component-MapPopup-CknHKZxl.mjs} +1 -1
  21. package/dist/chunks/{component-MaterialPreview-Z3_Z3x1C.mjs → component-MaterialPreview-cG0FVQ3Q.mjs} +2 -2
  22. package/dist/chunks/{component-PieLegend-D2apgbNW.mjs → component-PieLegend-CYkuk1qu.mjs} +1 -1
  23. package/dist/chunks/{component-RadarChart-D8eFzW4q.mjs → component-RadarChart-B3WK8RQZ.mjs} +2 -2
  24. package/dist/chunks/{component-RadarLegend-DAntSPne.mjs → component-RadarLegend-Dx8GeHtn.mjs} +1 -1
  25. package/dist/chunks/{component-RadarShortTerm-LAv0PwHu.mjs → component-RadarShortTerm-D1-X6iMz.mjs} +4 -4
  26. package/dist/chunks/{component-RadarTime-DqgZVM8j.mjs → component-RadarTime-DAkryOqo.mjs} +2 -2
  27. package/dist/chunks/{component-RenderMarkdown-Bi1MnEOL.mjs → component-RenderMarkdown-CwAf3zZw.mjs} +2 -2
  28. package/dist/chunks/{component-ReservoirLiveAlarm-BalTtyVE.mjs → component-ReservoirLiveAlarm-Bf_1L9P8.mjs} +3 -3
  29. package/dist/chunks/{component-ServiceMaterial-By9uSbYq.mjs → component-ServiceMaterial-DNA13yaJ.mjs} +2 -2
  30. package/dist/chunks/{component-ServiceMaterialsBtn-9ES9CZQH.mjs → component-ServiceMaterialsBtn-DGhKno8S.mjs} +1 -1
  31. package/dist/chunks/{component-TimeBasedForecast-DTdtBrV3.mjs → component-TimeBasedForecast-Vdr2GTn2.mjs} +4 -4
  32. package/dist/chunks/{component-WarningLine-2IP9h9JP.mjs → component-WarningLine-Dxe6d6-c.mjs} +2 -2
  33. package/dist/chunks/{component-WarningSignal-DMypm-jM.mjs → component-WarningSignal-DgXwf24j.mjs} +3 -3
  34. package/dist/chunks/{component-WeatherForecast-BjnV3mxQ.mjs → component-WeatherForecast-C4VAGg-X.mjs} +4 -4
  35. package/dist/chunks/{component-YCDataMonitor-LV6a6dpF.mjs → component-YCDataMonitor-CPjx42cc.mjs} +2 -2
  36. package/dist/chunks/{component-YCDataService-B01UoeW1.mjs → component-YCDataService-DWrWx9uP.mjs} +4 -4
  37. package/dist/chunks/{component-YCHome-BvC1CqzO.mjs → component-YCHome-DtSTz-uR.mjs} +3 -3
  38. package/dist/chunks/{component-YCHomeLegend-DFvcgNHr.mjs → component-YCHomeLegend-C3hoRSE2.mjs} +1 -1
  39. package/dist/chunks/{component-YCLoginNew-CPTUpoF2.mjs → component-YCLoginNew-trb9Q7Ik.mjs} +3 -3
  40. package/dist/components/AiChat/AiChat.vue.d.ts +2 -2
  41. package/dist/components/AiChat/AiChatResource.vue.d.ts +9 -0
  42. package/dist/components/AiChat/AiChatThinking.vue.d.ts +23 -0
  43. package/dist/components/AiChat/sseClient.d.ts +21 -0
  44. package/dist/components/AiChat/types.d.ts +42 -2
  45. package/dist/components/HighQuality/HighQuality.vue.d.ts +2 -0
  46. package/dist/nxd-plugin.mjs +37 -37
  47. package/dist/styles/component-AiChat.css +1 -1
  48. package/dist/styles/component-HighQuality.css +1 -1
  49. package/dist/styles/component-YCLoginNew.css +1 -1
  50. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
3
  import { ElLoadingDirective as n } from "element-plus/es";
4
4
  import { Fragment as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, getCurrentInstance as c, onMounted as l, openBlock as u, ref as d, renderList as f, toDisplayString as p, vModelCheckbox as m, withDirectives as h } from "vue";
5
5
  //#region src/components/RadarChart/RadarChart.vue?vue&type=script&setup=true&lang.ts
@@ -1,4 +1,4 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
2
  import { Fragment as t, createElementBlock as n, createElementVNode as r, defineComponent as i, getCurrentInstance as a, normalizeClass as o, normalizeStyle as s, onMounted as c, openBlock as l, ref as u, renderList as d, toDisplayString as f, vShow as p, withDirectives as m } from "vue";
3
3
  //#region src/components/RadarLegend/RadarLegend.vue?vue&type=script&setup=true&lang.ts
4
4
  var h = { class: "RadarLegend-colorList" }, g = { class: "valueText" }, _ = /* @__PURE__ */ e(/* @__PURE__ */ i({
@@ -1,7 +1,7 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { n } from "./component-HighWayEarlyWarningRed-UpU-jUbO.mjs";
4
- import { t as r } from "./component-RadarLegend-DAntSPne.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { n } from "./component-HighWayEarlyWarningRed-pes2Dzrq.mjs";
4
+ import { t as r } from "./component-RadarLegend-Dx8GeHtn.mjs";
5
5
  import { ElCheckbox as i, ElIcon as a, ElLoadingDirective as o } from "element-plus/es";
6
6
  import { Fragment as s, computed as c, createBlock as l, createCommentVNode as ee, createElementBlock as u, createElementVNode as d, createTextVNode as te, createVNode as f, defineComponent as p, nextTick as m, normalizeClass as h, normalizeStyle as g, onBeforeUnmount as ne, onMounted as re, openBlock as _, ref as v, renderList as y, toDisplayString as b, unref as x, vShow as S, watch as C, withCtx as w, withDirectives as T } from "vue";
7
7
  import { ArrowRight as E, VideoPause as ie, VideoPlay as ae } from "@element-plus/icons-vue";
@@ -1,5 +1,5 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
3
  import { ElLoadingDirective as n } from "element-plus/es";
4
4
  import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, defineComponent as c, getCurrentInstance as l, normalizeClass as u, normalizeStyle as d, onMounted as f, onUnmounted as ee, openBlock as p, ref as m, renderList as h, toDisplayString as g, vShow as _, watch as te, withDirectives as v, withModifiers as y } from "vue";
5
5
  //#region src/components/RadarTime/RadarTime.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
3
  import { createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, onBeforeUnmount as o, onMounted as s, openBlock as c, ref as l, toDisplayString as u } from "vue";
4
4
  //#region src/components/RenderMarkdown/RenderMarkdown.vue?vue&type=script&setup=true&lang.ts
5
5
  var d = {
@@ -1,6 +1,6 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { n } from "./component-GeologyLiveAlarm-BDKH6_3N.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { n } from "./component-GeologyLiveAlarm-CYzCuF5N.mjs";
4
4
  import { ElIcon as r, ElLoadingDirective as i, ElRadio as a, ElRadioGroup as o } from "element-plus/es";
5
5
  import { Fragment as s, computed as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createTextVNode as f, createVNode as p, defineComponent as m, nextTick as h, normalizeClass as g, normalizeStyle as ee, onBeforeUnmount as te, onMounted as ne, openBlock as _, ref as v, renderList as y, toDisplayString as b, unref as x, vShow as S, withCtx as C, withDirectives as w } from "vue";
6
6
  import { ArrowRight as T } from "@element-plus/icons-vue";
@@ -1,5 +1,5 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
3
  import { Fragment as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, getCurrentInstance as s, onMounted as c, openBlock as l, ref as u, renderList as d, toDisplayString as f, withModifiers as p } from "vue";
4
4
  //#region src/components/ServiceMaterial/ServiceMaterial.vue?vue&type=script&setup=true&lang.ts
5
5
  var m = { class: "ServiceMaterial" }, h = { class: "ServiceMaterial__head" }, g = { class: "ServiceMaterial__head-top" }, _ = { class: "ServiceMaterial__body" }, v = { class: "ServiceMaterial__list" }, y = { class: "ServiceMaterial__list-container" }, b = { class: "ServiceMaterial__list-content" }, x = { class: "ServiceMaterial__list-col ServiceMaterial__list-col--name" }, S = ["title"], C = { class: "ServiceMaterial__list-col ServiceMaterial__list-col--time" }, w = { class: "ServiceMaterial__list-col ServiceMaterial__list-col--action" }, T = ["onClick"], E = ["onClick"], D = {
@@ -1,4 +1,4 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
2
  import { ElButton as t, ElDialog as n } from "element-plus/es";
3
3
  import { Fragment as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, isRef as l, onBeforeUnmount as u, onMounted as d, openBlock as f, ref as p, unref as m, withCtx as h } from "vue";
4
4
  import "element-plus/es/components/dialog/style/css";
@@ -1,7 +1,7 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { A as n, C as r, D as i, E as ee, F as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, a as p, b as m, c as te, d as ne, f as re, g as ie, h as ae, i as oe, j as se, k as ce, l as le, m as ue, o as h, p as g, r as _, s as de, u as fe, v as pe, w as me, x as he, y as ge } from "./component-HighwayWeatherForecast-CFnbV8Es.mjs";
4
- import { n as v } from "./component-LithiumBatteryMiningArea-BGAEr-4D.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { A as n, C as r, D as i, E as ee, F as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, a as p, b as m, c as te, d as ne, f as re, g as ie, h as ae, i as oe, j as se, k as ce, l as le, m as ue, o as h, p as g, r as _, s as de, u as fe, v as pe, w as me, x as he, y as ge } from "./component-HighwayWeatherForecast-DTsoF5iO.mjs";
4
+ import { n as v } from "./component-LithiumBatteryMiningArea-BpcrvFsU.mjs";
5
5
  import { ElLoadingDirective as y, ElOption as b, ElSelect as x } from "element-plus/es";
6
6
  import { Fragment as S, createElementBlock as C, createElementVNode as w, createVNode as T, defineComponent as E, getCurrentInstance as D, nextTick as O, normalizeStyle as k, onBeforeUnmount as A, onMounted as j, openBlock as M, ref as N, renderList as P, toDisplayString as F, watch as I, withCtx as L, withDirectives as _e } from "vue";
7
7
  import * as ve from "echarts";
@@ -1,5 +1,5 @@
1
- import { i as e } from "./component-AiChat-DvOiS6XW.mjs";
2
- import { $ as t, A as n, B as r, C as ee, D as te, E as ne, F as re, G as ie, H as ae, I as oe, J as se, K as ce, L as le, M as ue, N as de, O as fe, P as pe, Q as me, R as he, S as ge, T as _e, U as ve, V as ye, W as be, X as xe, Y as Se, Z as Ce, _ as i, a, at as o, b as s, c, ct as l, d as u, dt as d, et as f, f as p, ft as m, g as h, h as g, i as _, it as v, j as y, k as b, l as x, lt as S, m as C, nt as w, o as T, ot as E, p as D, q as O, r as k, rt as A, s as we, st as Te, tt as Ee, u as De, ut as Oe, v as ke, w as Ae, x as je, y as Me, z as j } from "./component-HighWayEarlyWarningRed-UpU-jUbO.mjs";
1
+ import { i as e } from "./component-AiChat-DtKyyjMt.mjs";
2
+ import { $ as t, A as n, B as r, C as ee, D as te, E as ne, F as re, G as ie, H as ae, I as oe, J as se, K as ce, L as le, M as ue, N as de, O as fe, P as pe, Q as me, R as he, S as ge, T as _e, U as ve, V as ye, W as be, X as xe, Y as Se, Z as Ce, _ as i, a, at as o, b as s, c, ct as l, d as u, dt as d, et as f, f as p, ft as m, g as h, h as g, i as _, it as v, j as y, k as b, l as x, lt as S, m as C, nt as w, o as T, ot as E, p as D, q as O, r as k, rt as A, s as we, st as Te, tt as Ee, u as De, ut as Oe, v as ke, w as Ae, x as je, y as Me, z as j } from "./component-HighWayEarlyWarningRed-pes2Dzrq.mjs";
3
3
  import { Fragment as M, Transition as N, computed as P, createCommentVNode as F, createElementBlock as I, createElementVNode as L, createVNode as Ne, defineComponent as R, getCurrentInstance as Pe, normalizeStyle as Fe, onMounted as Ie, onUnmounted as Le, openBlock as z, ref as B, renderList as Re, toDisplayString as V, watch as ze, withCtx as Be } from "vue";
4
4
  //#region src/components/WarningLine/WarningLine.vue?vue&type=script&setup=true&lang.ts
5
5
  var Ve = { class: "WarningLine__content" }, He = { class: "WarningLine__scroll-container" }, Ue = ["src"], We = { class: "WarningLine__text" }, Ge = {
@@ -1,6 +1,6 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { $ as n, A as r, B as i, C as a, D as o, E as s, F as c, G as l, H as u, I as d, J as f, K as p, L as m, M as h, N as ee, O as te, P as ne, Q as re, R as ie, S as ae, T as oe, U as se, V as ce, W as le, X as ue, Y as de, Z as fe, _ as pe, a as me, at as he, b as ge, c as _e, ct as ve, d as ye, dt as be, et as xe, f as Se, ft as Ce, g as we, h as Te, i as Ee, it as g, j as _, k as v, l as y, lt as b, m as x, n as S, nt as C, o as w, ot as T, p as E, q as D, r as De, rt as Oe, s as ke, st as Ae, tt as je, u as Me, ut as Ne, v as Pe, w as Fe, x as Ie, y as Le, z as Re } from "./component-HighWayEarlyWarningRed-UpU-jUbO.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { $ as n, A as r, B as i, C as a, D as o, E as s, F as c, G as l, H as u, I as d, J as f, K as p, L as m, M as h, N as ee, O as te, P as ne, Q as re, R as ie, S as ae, T as oe, U as se, V as ce, W as le, X as ue, Y as de, Z as fe, _ as pe, a as me, at as he, b as ge, c as _e, ct as ve, d as ye, dt as be, et as xe, f as Se, ft as Ce, g as we, h as Te, i as Ee, it as g, j as _, k as v, l as y, lt as b, m as x, n as S, nt as C, o as w, ot as T, p as E, q as D, r as De, rt as Oe, s as ke, st as Ae, tt as je, u as Me, ut as Ne, v as Pe, w as Fe, x as Ie, y as Le, z as Re } from "./component-HighWayEarlyWarningRed-pes2Dzrq.mjs";
4
4
  import { ElLoadingDirective as O } from "element-plus/es";
5
5
  import { Fragment as k, computed as A, createCommentVNode as j, createElementBlock as M, createElementVNode as N, createStaticVNode as ze, createVNode as Be, defineComponent as P, getCurrentInstance as Ve, normalizeStyle as F, onBeforeUnmount as I, onMounted as He, openBlock as L, ref as R, renderList as Ue, toDisplayString as z, unref as B, vShow as We, watch as V, withDirectives as H, withModifiers as U } from "vue";
6
6
  import "element-plus/es/components/loading/style/css";
@@ -1,7 +1,7 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { A as n, C as r, D as i, E as a, F as o, M as s, N as ee, O as c, P as l, S as u, T as d, _ as f, a as te, b as ne, c as re, d as ie, f as ae, g as p, h as m, i as h, j as g, k as _, l as v, m as y, o as b, p as x, r as S, s as C, u as w, v as T, w as E, x as D, y as O } from "./component-HighwayWeatherForecast-CFnbV8Es.mjs";
4
- import { n as k } from "./component-LithiumBatteryMiningArea-BGAEr-4D.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { A as n, C as r, D as i, E as a, F as o, M as s, N as ee, O as c, P as l, S as u, T as d, _ as f, a as te, b as ne, c as re, d as ie, f as ae, g as p, h as m, i as h, j as g, k as _, l as v, m as y, o as b, p as x, r as S, s as C, u as w, v as T, w as E, x as D, y as O } from "./component-HighwayWeatherForecast-DTsoF5iO.mjs";
4
+ import { n as k } from "./component-LithiumBatteryMiningArea-BpcrvFsU.mjs";
5
5
  import { ElLoadingDirective as A } from "element-plus/es";
6
6
  import { Fragment as j, createElementBlock as M, createElementVNode as N, defineComponent as P, getCurrentInstance as F, onMounted as I, openBlock as L, ref as R, renderList as z, toDisplayString as B, withDirectives as V } from "vue";
7
7
  //#region src/components/WeatherForecast/WeatherForecast.vue?vue&type=script&setup=true&lang.ts
@@ -1,5 +1,5 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
3
  import { ElConfigProvider as n, ElDatePicker as r, ElInput as i, ElLoadingDirective as a } from "element-plus/es";
4
4
  import { Fragment as o, Teleport as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, normalizeClass as g, onBeforeUnmount as _, onMounted as v, openBlock as y, ref as b, renderList as x, toDisplayString as S, unref as ee, withCtx as te, withDirectives as C, withModifiers as w } from "vue";
5
5
  import { ElMessage as T } from "element-plus";
@@ -1,7 +1,7 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { n } from "./component-HighwayWeatherForecast-CFnbV8Es.mjs";
4
- import { t as r } from "./component-YCDataMonitor-LV6a6dpF.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { n } from "./component-HighwayWeatherForecast-DTsoF5iO.mjs";
4
+ import { t as r } from "./component-YCDataMonitor-CPjx42cc.mjs";
5
5
  import { ElConfigProvider as i, ElDatePicker as a, ElInput as o, ElLoadingDirective as s } from "element-plus/es";
6
6
  import { Fragment as c, computed as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, normalizeClass as g, onBeforeUnmount as _, onMounted as v, openBlock as y, ref as b, renderList as x, toDisplayString as S, unref as C, vShow as w, withCtx as T, withDirectives as E } from "vue";
7
7
  import "element-plus/es/components/loading/style/css";
@@ -1,6 +1,6 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { i as t } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { n } from "./component-LithiumBatteryMiningArea-BGAEr-4D.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { i as t } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { n } from "./component-LithiumBatteryMiningArea-BpcrvFsU.mjs";
4
4
  import { ElButton as r, ElDialog as i, ElForm as ee, ElFormItem as te, ElIcon as ne, ElInput as re } from "element-plus/es";
5
5
  import { Fragment as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createStaticVNode as u, createTextVNode as d, createVNode as f, normalizeClass as p, normalizeStyle as ie, onBeforeUnmount as m, onMounted as h, openBlock as g, reactive as _, ref as v, renderList as y, toDisplayString as b, unref as x, withCtx as S, withKeys as ae, withModifiers as oe } from "vue";
6
6
  import { ArrowLeft as se, ArrowRight as ce, Lock as le, User as ue } from "@element-plus/icons-vue";
@@ -1,4 +1,4 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
2
  import { createElementBlock as t, createElementVNode as n, createStaticVNode as r, onMounted as i, openBlock as a } from "vue";
3
3
  //#endregion
4
4
  //#region src/components/YCHomeLegend/YCHomeLegend.vue
@@ -1,6 +1,6 @@
1
- import { n as e } from "./component-AqiMonitor-xtkg3YYL.mjs";
2
- import { a as t, i as n, o as r } from "./component-AiChat-DvOiS6XW.mjs";
3
- import { n as i } from "./component-LithiumBatteryMiningArea-BGAEr-4D.mjs";
1
+ import { n as e } from "./component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { a as t, i as n, o as r } from "./component-AiChat-DtKyyjMt.mjs";
3
+ import { n as i } from "./component-LithiumBatteryMiningArea-BpcrvFsU.mjs";
4
4
  import { ElButton as ee, ElForm as a, ElFormItem as o, ElIcon as s, ElInput as te } from "element-plus/es";
5
5
  import { Fragment as ne, createBlock as c, createElementBlock as l, createElementVNode as u, createTextVNode as re, createVNode as d, defineComponent as f, onBeforeUnmount as p, onMounted as ie, openBlock as m, reactive as h, ref as g, renderList as _, toDisplayString as v, unref as y, withCtx as b, withKeys as ae } from "vue";
6
6
  import { Lock as x, Message as oe, Platform as se, User as S } from "@element-plus/icons-vue";
@@ -49,14 +49,14 @@ declare const _default: import('vue').DefineComponent<Props, {
49
49
  }>;
50
50
  width: number | string;
51
51
  theme: AiChatTheme;
52
+ stream: boolean;
52
53
  draggable: boolean;
53
54
  defaultX: number;
54
55
  defaultY: number;
55
56
  defaultType: AiContentType;
56
- stream: boolean;
57
57
  mock: boolean;
58
58
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
59
59
  bodyRef: HTMLDivElement;
60
- textareaRef: HTMLTextAreaElement;
60
+ textareaRef: HTMLInputElement;
61
61
  }, HTMLDivElement>;
62
62
  export default _default;
@@ -0,0 +1,9 @@
1
+ import { AiChatResource } from './types';
2
+ interface Props {
3
+ resources: AiChatResource[];
4
+ baseHttp?: string;
5
+ }
6
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ baseHttp: string;
8
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
9
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import { AiChatStep, AiChatTheme, AiChatTool } from './types';
2
+ interface Props {
3
+ reasoning_content?: string;
4
+ status?: 'thinking' | 'end' | 'error';
5
+ tools?: AiChatTool[];
6
+ steps?: AiChatStep[];
7
+ theme: AiChatTheme;
8
+ baseHttp?: string;
9
+ defaultExpanded?: boolean;
10
+ }
11
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ complete: () => any;
13
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
14
+ onComplete?: (() => any) | undefined;
15
+ }>, {
16
+ baseHttp: string;
17
+ reasoning_content: string;
18
+ status: "thinking" | "end" | "error";
19
+ tools: AiChatTool[];
20
+ steps: AiChatStep[];
21
+ defaultExpanded: boolean;
22
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
23
+ export default _default;
@@ -0,0 +1,21 @@
1
+ export interface SseMessage {
2
+ event?: string;
3
+ data?: string;
4
+ id?: string;
5
+ retry?: number;
6
+ }
7
+ export interface SseOptions {
8
+ onMessage?: (message: SseMessage) => void;
9
+ onError?: (err: any) => void;
10
+ onFinished?: () => void;
11
+ }
12
+ export interface SsePostOptions extends SseOptions {
13
+ headers?: Record<string, string>;
14
+ }
15
+ export declare class SseClient {
16
+ private controller;
17
+ private currentRequestId;
18
+ abort(): void;
19
+ isActive(): boolean;
20
+ post(url: string, data?: any, options?: SsePostOptions): Promise<void>;
21
+ }
@@ -4,6 +4,23 @@ export interface AiChatRequestPayload {
4
4
  text: string;
5
5
  type: AiContentType;
6
6
  }
7
+ export type AiChatToolStatus = 'thinking' | 'calling' | 'success' | 'error';
8
+ export interface AiChatTool {
9
+ id: string;
10
+ name: string;
11
+ status: AiChatToolStatus;
12
+ arguments?: any;
13
+ result?: any;
14
+ rawStatus?: 'TOOL_CALL' | 'TOOL_RESULT';
15
+ }
16
+ export type AiChatResourceType = 'image' | 'video' | 'audio' | 'doc' | 'other';
17
+ export interface AiChatResource {
18
+ resourceId: string;
19
+ resourceType: AiChatResourceType;
20
+ resourceName: string;
21
+ resourceUrl: string;
22
+ coverUrl?: string;
23
+ }
7
24
  export type AiChatBlockType = 'markdown' | 'text' | 'table' | 'echarts' | 'image' | 'list' | 'fileList' | 'thinking' | 'file';
8
25
  export interface AiChatFileItem {
9
26
  name: string;
@@ -17,11 +34,23 @@ export interface AiChatTableColumn {
17
34
  title: string;
18
35
  align?: 'left' | 'center' | 'right';
19
36
  }
37
+ export interface AiChatStep {
38
+ type: 'text' | 'markdown' | 'table' | 'image' | 'echarts' | 'tool';
39
+ content?: string;
40
+ columns?: AiChatTableColumn[];
41
+ data?: Record<string, any>[];
42
+ url?: string;
43
+ caption?: string;
44
+ option?: any;
45
+ tool?: AiChatTool;
46
+ delay?: number;
47
+ }
20
48
  export interface AiChatBlock {
21
49
  sort: number;
22
50
  type: AiChatBlockType;
23
51
  title?: string;
24
52
  content?: string;
53
+ steps?: AiChatStep[];
25
54
  columns?: AiChatTableColumn[];
26
55
  data?: Record<string, any>[];
27
56
  option?: any;
@@ -47,7 +76,10 @@ export interface AiChatMockData {
47
76
  }
48
77
  export interface AiChatResponse {
49
78
  type: AiContentType;
50
- blocks: AiChatBlock[];
79
+ blocks?: AiChatBlock[];
80
+ content?: string;
81
+ structuredData?: any;
82
+ resources?: AiChatResource[];
51
83
  }
52
84
  export interface AiChatMessageUser {
53
85
  role: 'user';
@@ -57,7 +89,15 @@ export interface AiChatMessageUser {
57
89
  export interface AiChatMessageAi {
58
90
  role: 'ai';
59
91
  type: AiContentType;
60
- blocks: AiChatBlock[];
92
+ content?: string;
93
+ blocks?: AiChatBlock[];
94
+ resources?: AiChatResource[];
95
+ tools?: AiChatTool[];
96
+ reasoning_content?: string;
97
+ thinkingStatus?: 'thinking' | 'end' | 'error';
98
+ structuredData?: any;
99
+ audioUrl?: string;
100
+ thinkCollapse?: boolean;
61
101
  time: string;
62
102
  }
63
103
  export type AiChatMessage = AiChatMessageUser | AiChatMessageAi;
@@ -48,6 +48,7 @@ interface Props {
48
48
  baseHttp?: string;
49
49
  imgBaseUrl?: string;
50
50
  jsonPath?: string;
51
+ workPopPanelWidth?: string;
51
52
  title?: string;
52
53
  titleStyle?: Record<string, string>;
53
54
  }
@@ -61,6 +62,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
61
62
  config: HighQualityConfig;
62
63
  imgBaseUrl: string;
63
64
  jsonPath: string;
65
+ workPopPanelWidth: string;
64
66
  titleStyle: Record<string, string>;
65
67
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
66
68
  chartRef: HTMLDivElement;
@@ -1,40 +1,40 @@
1
- import { t as e } from "./chunks/component-AqiMonitor-xtkg3YYL.mjs";
2
- import { t } from "./chunks/component-AiChat-DvOiS6XW.mjs";
3
- import { t as n } from "./chunks/component-HighwayLiveAlarm-vaPU17Pr.mjs";
4
- import { t as r } from "./chunks/component-GeologyLiveAlarm-BDKH6_3N.mjs";
5
- import { t as i } from "./chunks/component-HighwayLiveAlarmNew-CVFrU6SR.mjs";
6
- import { t as a } from "./chunks/component-HighwayStations-Choq-MV8.mjs";
7
- import { t as o } from "./chunks/component-HighWayEarlyWarningRed-UpU-jUbO.mjs";
8
- import { t as s } from "./chunks/component-HighwayWeatherForecast-CFnbV8Es.mjs";
9
- import { t as c } from "./chunks/component-ServiceMaterialsBtn-9ES9CZQH.mjs";
10
- import { t as l } from "./chunks/component-YCHome-BvC1CqzO.mjs";
11
- import { t as u } from "./chunks/component-LithiumBatteryMiningArea-BGAEr-4D.mjs";
12
- import { t as d } from "./chunks/component-YCLoginNew-CPTUpoF2.mjs";
13
- import { t as f } from "./chunks/component-HighWayFreeze-DDt3yPAK.mjs";
14
- import { t as p } from "./chunks/component-RadarLegend-DAntSPne.mjs";
15
- import { t as m } from "./chunks/component-RadarShortTerm-LAv0PwHu.mjs";
16
- import { t as h } from "./chunks/component-TimeBasedForecast-DTdtBrV3.mjs";
17
- import { t as g } from "./chunks/component-WeatherForecast-BjnV3mxQ.mjs";
18
- import { t as _ } from "./chunks/component-ImageGeneration-BMwWQhbf.mjs";
19
- import { t as v } from "./chunks/component-WarningSignal-DMypm-jM.mjs";
20
- import { t as y } from "./chunks/component-RadarChart-D8eFzW4q.mjs";
21
- import { t as b } from "./chunks/component-MapPopup-CGpYPcYD.mjs";
22
- import { t as x } from "./chunks/component-RadarTime-DqgZVM8j.mjs";
23
- import { t as S } from "./chunks/component-ServiceMaterial-By9uSbYq.mjs";
24
- import { t as C } from "./chunks/component-WarningLine-2IP9h9JP.mjs";
25
- import { t as w } from "./chunks/component-PieLegend-D2apgbNW.mjs";
26
- import { t as T } from "./chunks/component-MaterialPreview-Z3_Z3x1C.mjs";
27
- import { t as E } from "./chunks/component-ReservoirLiveAlarm-BalTtyVE.mjs";
28
- import { t as D } from "./chunks/component-IframeWeb-GuGLuA4w.mjs";
29
- import { t as O } from "./chunks/component-Duty-Btcizjpy.mjs";
30
- import { t as k } from "./chunks/component-RenderMarkdown-Bi1MnEOL.mjs";
31
- import { t as A } from "./chunks/component-EarlyWarningStatistic-iiIJr86a.mjs";
32
- import { t as j } from "./chunks/component-YCDataService-B01UoeW1.mjs";
33
- import { t as M } from "./chunks/component-ChartCumulativePre-CrIsXxUC.mjs";
34
- import { t as N } from "./chunks/component-ChartServiceMaterial-CH2JRmXk.mjs";
35
- import { t as P } from "./chunks/component-YCHomeLegend-DFvcgNHr.mjs";
36
- import { t as F } from "./chunks/component-IntroducePic-D7aUONYj.mjs";
37
- import { t as I } from "./chunks/component-HighQuality-YqVCokC1.mjs";
1
+ import { t as e } from "./chunks/component-AqiMonitor-Bxw9Os2m.mjs";
2
+ import { t } from "./chunks/component-AiChat-DtKyyjMt.mjs";
3
+ import { t as n } from "./chunks/component-HighwayLiveAlarm-C0ohy5Ol.mjs";
4
+ import { t as r } from "./chunks/component-GeologyLiveAlarm-CYzCuF5N.mjs";
5
+ import { t as i } from "./chunks/component-HighwayLiveAlarmNew-CFkywFAj.mjs";
6
+ import { t as a } from "./chunks/component-HighwayStations-ChM12fKn.mjs";
7
+ import { t as o } from "./chunks/component-HighWayEarlyWarningRed-pes2Dzrq.mjs";
8
+ import { t as s } from "./chunks/component-HighwayWeatherForecast-DTsoF5iO.mjs";
9
+ import { t as c } from "./chunks/component-ServiceMaterialsBtn-DGhKno8S.mjs";
10
+ import { t as l } from "./chunks/component-YCHome-DtSTz-uR.mjs";
11
+ import { t as u } from "./chunks/component-LithiumBatteryMiningArea-BpcrvFsU.mjs";
12
+ import { t as d } from "./chunks/component-YCLoginNew-trb9Q7Ik.mjs";
13
+ import { t as f } from "./chunks/component-HighWayFreeze-CWnV9Vk4.mjs";
14
+ import { t as p } from "./chunks/component-RadarLegend-Dx8GeHtn.mjs";
15
+ import { t as m } from "./chunks/component-RadarShortTerm-D1-X6iMz.mjs";
16
+ import { t as h } from "./chunks/component-TimeBasedForecast-Vdr2GTn2.mjs";
17
+ import { t as g } from "./chunks/component-WeatherForecast-C4VAGg-X.mjs";
18
+ import { t as _ } from "./chunks/component-ImageGeneration-D1cxIDSz.mjs";
19
+ import { t as v } from "./chunks/component-WarningSignal-DgXwf24j.mjs";
20
+ import { t as y } from "./chunks/component-RadarChart-B3WK8RQZ.mjs";
21
+ import { t as b } from "./chunks/component-MapPopup-CknHKZxl.mjs";
22
+ import { t as x } from "./chunks/component-RadarTime-DAkryOqo.mjs";
23
+ import { t as S } from "./chunks/component-ServiceMaterial-DNA13yaJ.mjs";
24
+ import { t as C } from "./chunks/component-WarningLine-Dxe6d6-c.mjs";
25
+ import { t as w } from "./chunks/component-PieLegend-CYkuk1qu.mjs";
26
+ import { t as T } from "./chunks/component-MaterialPreview-cG0FVQ3Q.mjs";
27
+ import { t as E } from "./chunks/component-ReservoirLiveAlarm-Bf_1L9P8.mjs";
28
+ import { t as D } from "./chunks/component-IframeWeb-Dx1zJjS0.mjs";
29
+ import { t as O } from "./chunks/component-Duty-CaVzFd_v.mjs";
30
+ import { t as k } from "./chunks/component-RenderMarkdown-CwAf3zZw.mjs";
31
+ import { t as A } from "./chunks/component-EarlyWarningStatistic-D2SEwIRU.mjs";
32
+ import { t as j } from "./chunks/component-YCDataService-DWrWx9uP.mjs";
33
+ import { t as M } from "./chunks/component-ChartCumulativePre-BW1Y8HXf.mjs";
34
+ import { t as N } from "./chunks/component-ChartServiceMaterial-BaE-xlnq.mjs";
35
+ import { t as P } from "./chunks/component-YCHomeLegend-C3hoRSE2.mjs";
36
+ import { t as F } from "./chunks/component-IntroducePic-DIwIZFsO.mjs";
37
+ import { t as I } from "./chunks/component-HighQuality-o_x0RVuO.mjs";
38
38
  //#region src/index.ts
39
39
  var L = { install(L) {
40
40
  L.component("HighwayLiveAlarm", n), L.component("HighwayLiveAlarmNew", i), L.component("HighwayStations", a), L.component("HighWayEarlyWarningRed", o), L.component("HighwayWeatherForecast", s), L.component("ServiceMaterialsBtn", c), L.component("YCHome", l), L.component("YCLoginNew", d), L.component("HighWayFreeze", f), L.component("RadarShortTerm", m), L.component("LithiumBatteryMiningArea", u), L.component("TimeBasedForecast", h), L.component("WeatherForecast", g), L.component("ImageGeneration", _), L.component("WarningSignal", v), L.component("RadarChart", y), L.component("AqiMonitor", e), L.component("MapPopup", b), L.component("RadarTime", x), L.component("ServiceMaterial", S), L.component("WarningLine", C), L.component("RadarLegend", p), L.component("PieLegend", w), L.component("GeologyLiveAlarm", r), L.component("MaterialPreview", T), L.component("ReservoirLiveAlarm", E), L.component("IframeWeb", D), L.component("Duty", O), L.component("RenderMarkdown", k), L.component("EarlyWarningStatistic", A), L.component("YCDataService", j), L.component("ChartCumulativePre", M), L.component("ChartServiceMaterial", N), L.component("YCHomeLegend", P), L.component("IntroducePic", F), L.component("HighQuality", I), L.component("AiChat", t);
@@ -1 +1 @@
1
- :root{--ai-bg:#0b1a2b;--ai-bg-light:#0f2742;--ai-bg-input:#0f2742;--ai-primary:#22d3ee;--ai-primary-dark:#0ea5e9;--ai-text:#e0f2fe;--ai-text-strong:#fff;--ai-text-secondary:#7aa7c7;--ai-border:#22d3ee2e;--ai-shadow:0 12px 40px #0000008c, 0 0 24px #22d3ee14;--ai-radius:8px;--ai-bubble-ai-bg:#0f2742;--ai-bubble-ai-text:#e0f2fe;--ai-code-bg:#071321;--ai-code-text:#fbbf24;--ai-table-header-bg:#0ea5e92e;--ai-table-hover:#22d3ee0d;--ai-pdf-page-bg:#0f2742;--ai-pdf-page-text:#e0f2fe;--ai-hljs-base:#cbd5e1;--ai-hljs-keyword:#22d3ee;--ai-hljs-string:#7dd3fc;--ai-hljs-number:#fbbf24;--ai-hljs-comment:#5c7a94;--ai-hljs-function:#38bdf8;--ai-hljs-class:#fbbf24;--ai-hljs-operator:#67e8f9}.AiChat--light{--ai-bg:#fff;--ai-bg-light:#f5f7fa;--ai-bg-input:#f3f4f6;--ai-primary:#165dff;--ai-primary-dark:#0f4bcc;--ai-text:#1f2937;--ai-text-strong:#111827;--ai-text-secondary:#6b7280;--ai-border:#00000014;--ai-shadow:0 12px 40px #0000001f;--ai-bubble-ai-bg:#f3f4f6;--ai-bubble-ai-text:#1f2937;--ai-code-bg:#f8fafc;--ai-code-text:#b45309;--ai-table-header-bg:#165dff14;--ai-table-hover:#00000005;--ai-pdf-page-bg:#f9fafb;--ai-pdf-page-text:#1f2937;--ai-hljs-base:#383a42;--ai-hljs-keyword:#a626a4;--ai-hljs-string:#50a14f;--ai-hljs-number:#986801;--ai-hljs-comment:#a0a1a7;--ai-hljs-function:#4078f2;--ai-hljs-class:#c18401;--ai-hljs-operator:#0184bc}.AiChat{z-index:1000;background:var(--ai-bg);border-radius:var(--ai-radius);width:336px;max-width:calc(100% - 32px);box-shadow:var(--ai-shadow);border:1px solid var(--ai-border);color:var(--ai-text);flex-direction:column;font-size:14px;line-height:1.5;display:flex;position:fixed;top:16px;left:16px;overflow:hidden}.AiChat *{box-sizing:border-box}.AiChat:not(.AiChat--fullscreen){width:auto;min-width:256px;max-width:336px;box-shadow:none;background:0 0;border:none;flex-direction:column-reverse;gap:8px;font-size:12px;line-height:1.5;overflow:visible}.AiChat:not(.AiChat--fullscreen) .markdown-body{font-size:12px}.AiChat:not(.AiChat--fullscreen) .markdown-body h1{font-size:1.4em}.AiChat:not(.AiChat--fullscreen) .markdown-body h2{font-size:1.2em}.AiChat:not(.AiChat--fullscreen) .markdown-body h3{font-size:1.1em}.AiChat:not(.AiChat--fullscreen) .markdown-body h4{font-size:1.05em}.AiChat:not(.AiChat--fullscreen) .markdown-body pre code{font-size:11px}.AiChat:not(.AiChat--fullscreen) .AiChat__bubble{box-shadow:none;color:var(--ai-text);background:0 0;border:none;border-radius:0;max-width:312px;padding:0;font-size:12px}.AiChat:not(.AiChat--fullscreen) .AiChat__bubble--user{color:var(--ai-text);background:0 0}.AiChat:not(.AiChat--fullscreen) .AiChat__avatar{display:none}.AiChat:not(.AiChat--fullscreen) .AiChat__message--user{flex-direction:row;align-self:flex-start}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab{color:#fff;text-shadow:0 0 6px #22d3ee99;background:#22d3ee59;border-color:#22d3ee8c}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab:hover{color:#fff;background:#22d3ee73;border-color:#22d3eeb3}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab--active{color:#fff;background:#22d3ee99;border-color:#22d3eed9;box-shadow:0 0 14px #22d3ee73}.AiChat:not(.AiChat--fullscreen) .table-wrap{scrollbar-width:thin;-ms-overflow-style:auto;overflow-x:auto}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar{height:4px;display:block}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar-track{background:0 0}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat:not(.AiChat--fullscreen) .table-wrap table{font-size:10px}.AiChat:not(.AiChat--fullscreen) .table-wrap th,.AiChat:not(.AiChat--fullscreen) .table-wrap td{padding:6px 8px}.AiChat:not(.AiChat--fullscreen) .block-title{font-size:12px}.AiChat:not(.AiChat--fullscreen) .echarts-container{height:140px}.AiChat:not(.AiChat--fullscreen) .file-name,.AiChat:not(.AiChat--fullscreen) .file-list-name{font-size:12px}.AiChat:not(.AiChat--fullscreen) .file-icon{width:32px;height:32px}.AiChat:not(.AiChat--fullscreen) .file-download,.AiChat:not(.AiChat--fullscreen) .file-list-download{font-size:12px}.AiChat:not(.AiChat--fullscreen) .block-image .image-card img{object-fit:contain;height:auto;max-height:120px}.AiChat--fullscreen{border-radius:0;width:100vw;max-width:none;height:100vh;position:fixed!important;inset:0!important;transform:none!important}.AiChat--fullscreen .AiChat__body{max-height:none}.AiChat--fullscreen .AiChat__message:not(.AiChat__message--user){width:100%}.AiChat--fullscreen .AiChat__message:not(.AiChat__message--user) .AiChat__content{flex:1;min-width:0;max-width:min(900px,70vw)}.AiChat--fullscreen .AiChat__bubble{width:auto;max-width:min(900px,70vw)}.AiChat__contentWrapper{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:var(--ai-radius);box-shadow:var(--ai-shadow);flex-direction:column;max-height:400px;display:flex;overflow:hidden}.AiChat__contentHeader{background:var(--ai-bg-light);border-bottom:1px solid var(--ai-border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.AiChat__contentTitle{color:var(--ai-text-strong);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.AiChat__contentPanel{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px;display:flex;overflow:hidden auto}.AiChat__contentPanel::-webkit-scrollbar{width:4px}.AiChat__contentPanel::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat__inputPanel{box-shadow:none;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border:none;flex-direction:column;gap:8px;padding:0;display:flex}.AiChat__inputPanel .AiChat__inputBar{border:1px solid var(--ai-border);background:var(--ai-bg);box-shadow:var(--ai-shadow);border-radius:24px;flex:1}.AiChat__typeTabs{align-items:center;gap:4px;padding:0 4px;display:flex}.AiChat__typeTabs--fullscreen{justify-content:flex-start;margin-bottom:8px;padding:0 12px}.AiChat__typeTab{color:#fff;text-shadow:0 0 4px #22d3ee66;cursor:pointer;background:#22d3ee2e;border:1px solid #22d3ee66;border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.5;transition:all .2s;display:inline-flex}.AiChat__typeTab:hover{color:#fff;background:#22d3ee4d;border-color:#22d3ee8c}.AiChat__typeTab--active{color:#fff;background:#22d3ee73;border-color:#22d3eebf;box-shadow:0 0 12px #22d3ee59}.AiChat__typeTabDivider{background:var(--ai-border);width:1px;height:12px}.AiChat__header{background:var(--ai-bg-light);border-bottom:1px solid var(--ai-border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.AiChat__title{color:var(--ai-text-strong);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.AiChat__status{color:var(--ai-text-secondary);align-items:center;gap:4px;font-size:12px;display:inline-flex}.AiChat__statusDot{background:#22d3ee;border-radius:50%;width:8px;height:8px;box-shadow:0 0 6px #22d3ee99}.AiChat__headerActions{align-items:center;gap:4px;display:flex}.AiChat__headerBtn{width:24px;height:24px;color:var(--ai-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .2s;display:flex}.AiChat__headerBtn:hover{background:var(--ai-border);color:var(--ai-text-strong)}.AiChat__headerBtn--close{font-size:16px}.AiChat__body{flex-direction:column;flex:1;gap:12px;min-height:256px;max-height:384px;padding:12px;display:flex;overflow-y:auto}.AiChat__body::-webkit-scrollbar{width:4px}.AiChat__body::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat__empty{color:var(--ai-text-secondary);flex:1;justify-content:center;align-items:center;font-size:14px;display:flex}.AiChat__message{gap:8px;display:flex}.AiChat__message--user{flex-direction:row-reverse;align-self:flex-end}.AiChat__avatar{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.AiChat__avatar--ai{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff}.AiChat__avatar--user{color:#fff;background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.AiChat__bubble{background:var(--ai-bubble-ai-bg);border:1px solid var(--ai-border);color:var(--ai-bubble-ai-text);word-break:break-word;border-radius:4px 12px 12px;padding:8px 12px}.AiChat__bubble--user{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;border-radius:12px 4px 12px 12px}.AiChat__time{color:var(--ai-text-secondary);margin-top:4px;padding:0 4px;font-size:12px}.AiChat__footer{padding:4px 12px}.AiChat__inputBar{background:var(--ai-bg-input);border:1px solid var(--ai-border);border-radius:24px;align-items:center;gap:8px;padding:4px 8px;display:flex}.AiChat__textareaWrap{flex:1;min-width:0}.AiChat__textarea{resize:none;width:100%;min-height:32px;max-height:96px;color:var(--ai-text);cursor:text;background:0 0;border:none;outline:none;padding:4px 0;font-family:inherit;font-size:13px;line-height:1.5}.AiChat__textarea::placeholder{color:var(--ai-text-secondary)}.AiChat__send{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;transition:all .2s;display:flex}.AiChat__send:hover:not(:disabled){transform:scale(1.05)}.AiChat__send:disabled{opacity:.4;cursor:not-allowed}.AiChat__typing{align-items:center;gap:4px;padding:8px 0;display:flex}.AiChat__typing span{background:var(--ai-primary);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite ai-typing}.AiChat__typing span:first-child{animation-delay:0s}.AiChat__typing span:nth-child(2){animation-delay:.2s}.AiChat__typing span:nth-child(3){animation-delay:.4s}@keyframes ai-typing{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.markdown-body{word-break:break-word;color:var(--ai-text);line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--ai-text-strong);margin:12px 0 8px;font-weight:600}.markdown-body h1{border-bottom:1px solid var(--ai-border);padding-bottom:8px;font-size:1.5em}.markdown-body h2{font-size:1.3em}.markdown-body h3{font-size:1.15em}.markdown-body p{color:var(--ai-text);margin:8px 0}.markdown-body a{color:var(--ai-primary);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body ul,.markdown-body ol{margin:8px 0;padding-left:16px}.markdown-body li{color:var(--ai-text);margin:4px 0}.markdown-body blockquote{border-left:4px solid var(--ai-primary);background:var(--ai-table-header-bg);border-radius:0 8px 8px 0;margin:8px 0;padding:8px 12px}.markdown-body code{background:var(--ai-code-bg);color:var(--ai-code-text);border-radius:4px;padding:2px 4px;font-family:Fira Code,Consolas,monospace;font-size:.9em}.markdown-body pre{background:var(--ai-code-bg);border:1px solid var(--ai-border);border-radius:8px;margin:8px 0;padding:12px;overflow-x:auto}.markdown-body pre code{color:var(--ai-text);background:0 0;padding:0;font-size:12px;line-height:1.6}.markdown-body hr{border:none;border-top:1px solid var(--ai-border);margin:12px 0}.markdown-body strong{color:var(--ai-text-strong);font-weight:600}.markdown-body .table-wrap{max-width:100%;overflow-x:auto}.markdown-body .table-wrap::-webkit-scrollbar{height:4px}.markdown-body .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.markdown-body table{border-collapse:collapse;table-layout:auto;width:auto;min-width:100%;margin:8px 0;font-size:12px}.markdown-body th{background:var(--ai-table-header-bg);color:var(--ai-text-strong);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:8px 12px;font-weight:600}.markdown-body td{border-bottom:1px solid var(--ai-border);color:var(--ai-text);white-space:nowrap;padding:8px 12px}.markdown-body tr:hover td{background:var(--ai-table-hover)}.markdown-body .is-left{text-align:left}.markdown-body .is-right{text-align:right}.markdown-body .is-center{text-align:center}.markdown-body .hljs{color:var(--ai-hljs-base);background:0 0}.markdown-body .hljs-keyword,.markdown-body .hljs-selector-tag,.markdown-body .hljs-literal,.markdown-body .hljs-section,.markdown-body .hljs-link{color:var(--ai-hljs-keyword)}.markdown-body .hljs-string,.markdown-body .hljs-title,.markdown-body .hljs-name,.markdown-body .hljs-type,.markdown-body .hljs-attribute,.markdown-body .hljs-symbol,.markdown-body .hljs-bullet,.markdown-body .hljs-addition,.markdown-body .hljs-variable,.markdown-body .hljs-template-tag,.markdown-body .hljs-template-variable{color:var(--ai-hljs-string)}.markdown-body .hljs-comment,.markdown-body .hljs-quote,.markdown-body .hljs-deletion,.markdown-body .hljs-meta{color:var(--ai-hljs-comment)}.markdown-body .hljs-number,.markdown-body .hljs-regexp,.markdown-body .hljs-built_in{color:var(--ai-hljs-number)}.markdown-body .hljs-function,.markdown-body .hljs-params{color:var(--ai-hljs-function)}.markdown-body .hljs-class,.markdown-body .hljs-tag{color:var(--ai-hljs-class)}.markdown-body .hljs-operator,.markdown-body .hljs-punctuation{color:var(--ai-hljs-operator)}.AiChatResponse__fallback{color:var(--ai-text);margin:0}.block-text{margin:8px 0}.block-title{color:var(--ai-text-strong);margin-bottom:8px;font-size:14px;font-weight:600}.plain-text{color:var(--ai-text);margin:0;line-height:1.6}.block-thinking{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;margin:8px 0;overflow:hidden}.thinking-header{cursor:pointer;color:var(--ai-primary);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 12px;font-weight:500;display:flex}.thinking-icon{flex-shrink:0}.thinking-arrow{width:16px;height:16px;color:var(--ai-text-secondary);margin-left:auto;transition:transform .2s}.thinking-arrow.is-open{transform:rotate(180deg)}.thinking-body{color:var(--ai-text-secondary);border-top:1px solid var(--ai-border);padding:8px 12px;font-size:12px;line-height:1.6}.thinking-body .markdown-body{color:var(--ai-text-secondary);font-size:12px}.thinking-body .markdown-body h1,.thinking-body .markdown-body h2,.thinking-body .markdown-body h3,.thinking-body .markdown-body h4{color:var(--ai-text);margin:8px 0 6px;font-size:1.1em}.thinking-body .markdown-body p{color:var(--ai-text-secondary);margin:6px 0}.thinking-body .markdown-body .table-wrap{margin:6px 0}.thinking-body .markdown-body table{border-collapse:collapse;font-size:11px}.thinking-body .markdown-body th{color:var(--ai-text);border-bottom:1px solid var(--ai-border);white-space:nowrap;background:#22d3ee14;padding:6px 8px;font-weight:600}.thinking-body .markdown-body td{color:var(--ai-text-secondary);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:6px 8px}.thinking-body .markdown-body pre{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.thinking-body .markdown-body pre code{color:var(--ai-text-secondary);font-size:11px}.thinking-body .markdown-body code{background:var(--ai-bg);color:var(--ai-text-secondary);font-size:11px}.thinking-body .markdown-body ul,.thinking-body .markdown-body ol{margin:6px 0;padding-left:14px}.thinking-body .markdown-body li{color:var(--ai-text-secondary);margin:3px 0}.block-table{margin:8px 0}.block-table .table-wrap{max-width:100%;overflow-x:auto}.block-table .table-wrap::-webkit-scrollbar{height:4px}.block-table .table-wrap::-webkit-scrollbar-track{background:0 0}.block-table .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.block-table table{border-collapse:collapse;table-layout:auto;width:auto;min-width:100%;font-size:12px}.block-table th{background:var(--ai-table-header-bg);color:var(--ai-text-strong);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:8px 12px;font-weight:600}.block-table td{border-bottom:1px solid var(--ai-border);color:var(--ai-text);white-space:nowrap;padding:8px 12px}.block-table tr:hover td{background:var(--ai-table-hover)}.block-table .is-left{text-align:left}.block-table .is-right{text-align:right}.block-table .is-center{text-align:center}.block-echarts{margin:8px 0}.echarts-container{width:100%;height:220px}.block-image{margin:8px 0}.block-image .image-card img{object-fit:contain;height:auto;max-height:160px}.block-list{margin:8px 0}.block-list ul{margin:0;padding-left:16px}.block-list li{color:var(--ai-text);margin:4px 0;line-height:1.6}.block-file-list{margin:8px 0}.file-list{flex-direction:column;gap:8px;display:flex}.file-list-item{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;overflow:hidden}.file-list-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.file-list-icon{color:var(--ai-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-list-name{min-width:0;color:var(--ai-text-strong);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.file-list-size{color:var(--ai-text-secondary);flex-shrink:0;font-size:12px}.file-list-arrow{width:16px;height:16px;color:var(--ai-text-secondary);flex-shrink:0;transition:transform .2s}.file-list-arrow.is-open{transform:rotate(180deg)}.file-list-body{border-top:1px solid var(--ai-border);padding:8px 12px}.file-list-desc{color:var(--ai-text-secondary);margin:0 0 8px;font-size:12px;line-height:1.5}.file-list-download{background:var(--ai-primary);color:#fff;cursor:pointer;border:none;border-radius:4px;align-items:center;gap:4px;padding:4px 12px;font-size:12px;transition:all .2s;display:inline-flex}.file-list-download:hover{background:var(--ai-primary-dark)}.block-file{margin:8px 0}.file-card{background:var(--ai-bg-light);border:1px solid var(--ai-border);border-radius:8px;align-items:center;gap:12px;padding:10px 12px;display:flex}.file-icon{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.file-meta{flex:1;min-width:0}.file-name{color:var(--ai-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.file-ext{color:var(--ai-text-secondary);margin-top:4px;font-size:12px}.file-download{border:1px solid var(--ai-border);background:var(--ai-bg);width:32px;height:32px;color:var(--ai-text);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.file-download svg{width:18px;height:18px}.file-download:hover{border-color:var(--ai-primary);color:var(--ai-primary);background:var(--ai-table-header-bg)}.image-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;margin-top:8px;display:grid}.image-card{border:1px solid var(--ai-border);background:var(--ai-bg-light);cursor:pointer;border-radius:8px;transition:all .2s;overflow:hidden}.image-card:hover{box-shadow:var(--ai-shadow);transform:translateY(-2px)}.image-card img{object-fit:cover;width:100%;height:80px;display:block}.image-card .image-caption{color:var(--ai-text-secondary);text-align:center;padding:8px;font-size:12px}.AiChatResponse__summary{color:var(--ai-text);margin:0 0 8px}.pdf-card{background:var(--ai-bg-light);border:1px solid var(--ai-border);border-radius:8px;align-items:center;gap:8px;padding:8px;display:flex}.pdf-icon{color:#fff;background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.pdf-meta{flex:1;min-width:0}.pdf-title{color:var(--ai-text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.pdf-sub{color:var(--ai-text-secondary);margin-top:4px;font-size:12px}.pdf-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.pdf-download{border:1px solid var(--ai-border);background:var(--ai-bg);width:28px;height:28px;color:var(--ai-text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;text-decoration:none;transition:all .2s;display:inline-flex}.pdf-download svg{width:16px;height:16px}.pdf-download:hover{background:var(--ai-table-header-bg);border-color:var(--ai-primary);color:var(--ai-primary)}.pdf-viewer-wrap{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;width:100%;max-height:320px;margin-top:8px;overflow:hidden auto}.pdf-viewer-wrap .vue-pdf-embed{width:100%}.image-preview-overlay{z-index:10000;background:#000000d9;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.image-preview-overlay img{border-radius:8px;max-width:90vw;max-height:85vh}.preview-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;display:flex;position:absolute;top:16px;right:16px}.preview-close:hover{background:#ffffff40}.preview-caption{color:#fff;background:#0009;border-radius:12px;padding:4px 12px;font-size:12px;position:absolute;bottom:32px}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}
1
+ :root{--ai-bg:#0b1a2b;--ai-bg-light:#0f2742;--ai-bg-input:#0f2742;--ai-primary:#22d3ee;--ai-primary-dark:#0ea5e9;--ai-success:#00b42a;--ai-text:#e0f2fe;--ai-text-strong:#fff;--ai-text-secondary:#7aa7c7;--ai-border:#22d3ee2e;--ai-shadow:0 12px 40px #0000008c, 0 0 24px #22d3ee14;--ai-radius:8px;--ai-bubble-ai-bg:#0f2742;--ai-bubble-ai-text:#e0f2fe;--ai-code-bg:#071321;--ai-code-text:#fbbf24;--ai-table-header-bg:#0ea5e92e;--ai-table-hover:#22d3ee0d;--ai-pdf-page-bg:#0f2742;--ai-pdf-page-text:#e0f2fe;--ai-hljs-base:#cbd5e1;--ai-hljs-keyword:#22d3ee;--ai-hljs-string:#7dd3fc;--ai-hljs-number:#fbbf24;--ai-hljs-comment:#5c7a94;--ai-hljs-function:#38bdf8;--ai-hljs-class:#fbbf24;--ai-hljs-operator:#67e8f9}.AiChat--light{--ai-bg:#fff;--ai-bg-light:#f5f7fa;--ai-bg-input:#f3f4f6;--ai-primary:#165dff;--ai-primary-dark:#0f4bcc;--ai-success:#00b42a;--ai-text:#1f2937;--ai-text-strong:#111827;--ai-text-secondary:#6b7280;--ai-border:#00000014;--ai-shadow:0 12px 40px #0000001f;--ai-bubble-ai-bg:#f3f4f6;--ai-bubble-ai-text:#1f2937;--ai-code-bg:#f8fafc;--ai-code-text:#b45309;--ai-table-header-bg:#165dff14;--ai-table-hover:#00000005;--ai-pdf-page-bg:#f9fafb;--ai-pdf-page-text:#1f2937;--ai-hljs-base:#383a42;--ai-hljs-keyword:#a626a4;--ai-hljs-string:#50a14f;--ai-hljs-number:#986801;--ai-hljs-comment:#a0a1a7;--ai-hljs-function:#4078f2;--ai-hljs-class:#c18401;--ai-hljs-operator:#0184bc}.AiChat{z-index:1000;background:var(--ai-bg);border-radius:var(--ai-radius);width:336px;max-width:calc(100% - 32px);box-shadow:var(--ai-shadow);border:1px solid var(--ai-border);color:var(--ai-text);flex-direction:column;font-size:14px;line-height:1.5;display:flex;position:fixed;top:16px;left:16px;overflow:hidden}.AiChat *{box-sizing:border-box}.AiChat:not(.AiChat--fullscreen){width:auto;min-width:256px;max-width:336px;box-shadow:none;background:0 0;border:none;flex-direction:column-reverse;gap:8px;font-size:12px;line-height:1.5;overflow:visible}.AiChat:not(.AiChat--fullscreen) .markdown-body{font-size:12px}.AiChat:not(.AiChat--fullscreen) .markdown-body h1{font-size:1.4em}.AiChat:not(.AiChat--fullscreen) .markdown-body h2{font-size:1.2em}.AiChat:not(.AiChat--fullscreen) .markdown-body h3{font-size:1.1em}.AiChat:not(.AiChat--fullscreen) .markdown-body h4{font-size:1.05em}.AiChat:not(.AiChat--fullscreen) .markdown-body pre code{font-size:11px}.AiChat:not(.AiChat--fullscreen) .AiChat__bubble{box-shadow:none;color:var(--ai-text);background:0 0;border:none;border-radius:0;max-width:312px;padding:0;font-size:12px}.AiChat:not(.AiChat--fullscreen) .AiChat__bubble--user{color:var(--ai-text);background:0 0}.AiChat:not(.AiChat--fullscreen) .AiChat__avatar{display:none}.AiChat:not(.AiChat--fullscreen) .AiChat__message--user{flex-direction:row;align-self:flex-start}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab{color:#fff;text-shadow:0 0 6px #22d3ee99;background:#22d3ee59;border-color:#22d3ee8c}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab:hover{color:#fff;background:#22d3eecc;border-color:#22d3eeb3}.AiChat:not(.AiChat--fullscreen) .AiChat__typeTab--active{color:#fff;background:#22d3eecc;border-color:#22d3eed9;box-shadow:0 0 14px #22d3ee73}.AiChat:not(.AiChat--fullscreen) .table-wrap{scrollbar-width:thin;-ms-overflow-style:auto;overflow-x:auto}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar{height:4px;display:block}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar-track{background:0 0}.AiChat:not(.AiChat--fullscreen) .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat:not(.AiChat--fullscreen) .table-wrap table{font-size:10px}.AiChat:not(.AiChat--fullscreen) .table-wrap th,.AiChat:not(.AiChat--fullscreen) .table-wrap td{padding:6px 8px}.AiChat:not(.AiChat--fullscreen) .block-title{font-size:12px}.AiChat:not(.AiChat--fullscreen) .echarts-container{height:140px}.AiChat:not(.AiChat--fullscreen) .file-name,.AiChat:not(.AiChat--fullscreen) .file-list-name{font-size:12px}.AiChat:not(.AiChat--fullscreen) .file-icon{width:32px;height:32px}.AiChat:not(.AiChat--fullscreen) .file-download,.AiChat:not(.AiChat--fullscreen) .file-list-download{font-size:12px}.AiChat:not(.AiChat--fullscreen) .block-image .image-card img{object-fit:contain;height:auto;max-height:120px}.AiChat--fullscreen{border-radius:0;width:100vw;max-width:none;height:100vh;position:fixed!important;inset:0!important;transform:none!important}.AiChat--fullscreen .AiChat__body{max-height:none}.AiChat--fullscreen .AiChat__message:not(.AiChat__message--user){width:100%}.AiChat--fullscreen .AiChat__message:not(.AiChat__message--user) .AiChat__content{flex:1;min-width:0;max-width:min(900px,70vw)}.AiChat--fullscreen .AiChat__bubble{width:auto;max-width:min(900px,70vw)}.AiChat__contentWrapper{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:var(--ai-radius);box-shadow:var(--ai-shadow);flex-direction:column;max-height:70vh;display:flex;overflow:hidden}.AiChat__contentHeader{background:var(--ai-bg-light);border-bottom:1px solid var(--ai-border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.AiChat__contentTitle{color:var(--ai-text-strong);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.AiChat__contentPanel{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px;display:flex;overflow:hidden auto}.AiChat__contentPanel::-webkit-scrollbar{width:4px}.AiChat__contentPanel::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat__inputPanel{box-shadow:none;cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border:none;flex-direction:column;gap:8px;padding:0;display:flex}.AiChat__inputPanel .AiChat__inputBar{border:1px solid var(--ai-border);background:var(--ai-bg);box-shadow:var(--ai-shadow);border-radius:24px;flex:1}.AiChat__typeTabs{align-items:center;gap:4px;padding:0 4px;display:flex}.AiChat__typeTabs--fullscreen{justify-content:flex-start;margin-bottom:8px;padding:0 12px}.AiChat__typeTab{color:#fff;text-shadow:0 0 4px #22d3ee66;cursor:pointer;background:#22d3ee2e;border:1px solid #22d3ee66;border-radius:12px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:500;line-height:1.5;transition:all .2s;display:inline-flex}.AiChat__typeTab:hover{color:#fff;background:#22d3ee4d;border-color:#22d3ee8c}.AiChat__typeTab--active{color:#fff;background:#22d3ee73;border-color:#22d3eebf;box-shadow:0 0 12px #22d3ee59}.AiChat__typeTabDivider{background:var(--ai-border);width:1px;height:12px}.AiChat__header{background:var(--ai-bg-light);border-bottom:1px solid var(--ai-border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.AiChat__title{color:var(--ai-text-strong);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.AiChat__status{color:var(--ai-text-secondary);align-items:center;gap:4px;font-size:12px;display:inline-flex}.AiChat__statusDot{background:#22d3ee;border-radius:50%;width:8px;height:8px;box-shadow:0 0 6px #22d3ee99}.AiChat__headerActions{align-items:center;gap:4px;display:flex}.AiChat__headerBtn{width:24px;height:24px;color:var(--ai-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:all .2s;display:flex}.AiChat__headerBtn:hover{background:var(--ai-border);color:var(--ai-text-strong)}.AiChat__headerBtn--close{font-size:16px}.AiChat__body{flex-direction:column;flex:1;gap:12px;min-height:256px;max-height:384px;padding:12px;display:flex;overflow-y:auto}.AiChat__body::-webkit-scrollbar{width:4px}.AiChat__body::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChat__empty{color:var(--ai-text-secondary);flex:1;justify-content:center;align-items:center;font-size:14px;display:flex}.AiChat__message{gap:8px;display:flex}.AiChat__message--user{flex-direction:row-reverse;align-self:flex-end}.AiChat__avatar{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.AiChat__avatar--ai{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff}.AiChat__avatar--user{color:#fff;background:linear-gradient(135deg,#f093fb 0%,#f5576c 100%)}.AiChat__bubble{background:var(--ai-bubble-ai-bg);border:1px solid var(--ai-border);color:var(--ai-bubble-ai-text);word-break:break-word;border-radius:4px 12px 12px;padding:8px 12px}.AiChat__bubble--user{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;border-radius:12px 4px 12px 12px}.AiChat__time{color:var(--ai-text-secondary);margin-top:4px;padding:0 4px;font-size:12px}.AiChat__footer{padding:4px 12px}.AiChat__inputBar{background:var(--ai-bg-input);border:1px solid var(--ai-border);border-radius:24px;align-items:center;gap:8px;padding:4px 8px;display:flex}.AiChat__textareaWrap{flex:1;min-width:0}.AiChat__textarea{resize:none;width:100%;color:var(--ai-text);cursor:text;background:0 0;border:none;outline:none;padding:4px 0;font-family:inherit;font-size:13px;line-height:1.5}.AiChat__textarea::placeholder{color:var(--ai-text-secondary)}.AiChat__send{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;cursor:pointer;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;transition:all .2s;display:flex}.AiChat__send:hover:not(:disabled){transform:scale(1.05)}.AiChat__send:disabled{opacity:.4;cursor:not-allowed}.AiChat__typing{align-items:center;gap:4px;padding:8px 0;display:flex}.AiChat__typing span{background:var(--ai-primary);border-radius:50%;width:8px;height:8px;animation:1.4s ease-in-out infinite ai-typing}.AiChat__typing span:first-child{animation-delay:0s}.AiChat__typing span:nth-child(2){animation-delay:.2s}.AiChat__typing span:nth-child(3){animation-delay:.4s}@keyframes ai-typing{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.markdown-body{word-break:break-word;color:var(--ai-text);line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--ai-text-strong);margin:12px 0 8px;font-weight:600}.markdown-body h1{border-bottom:1px solid var(--ai-border);padding-bottom:8px;font-size:1.5em}.markdown-body h2{font-size:1.3em}.markdown-body h3{font-size:1.15em}.markdown-body p{color:var(--ai-text);margin:8px 0}.markdown-body a{color:var(--ai-primary);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body ul,.markdown-body ol{margin:8px 0;padding-left:16px}.markdown-body li{color:var(--ai-text);margin:4px 0}.markdown-body blockquote{border-left:4px solid var(--ai-primary);background:var(--ai-table-header-bg);border-radius:0 8px 8px 0;margin:8px 0;padding:8px 12px}.markdown-body code{background:var(--ai-code-bg);color:var(--ai-code-text);border-radius:4px;padding:2px 4px;font-family:Fira Code,Consolas,monospace;font-size:.9em}.markdown-body pre{background:var(--ai-code-bg);border:1px solid var(--ai-border);border-radius:8px;margin:8px 0;padding:12px;overflow-x:auto}.markdown-body pre code{color:var(--ai-text);background:0 0;padding:0;font-size:12px;line-height:1.6}.markdown-body hr{border:none;border-top:1px solid var(--ai-border);margin:12px 0}.markdown-body strong{color:var(--ai-text-strong);font-weight:600}.markdown-body .table-wrap{max-width:100%;overflow-x:auto}.markdown-body .table-wrap::-webkit-scrollbar{height:4px}.markdown-body .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.markdown-body table{border-collapse:collapse;table-layout:auto;width:auto;min-width:100%;margin:8px 0;font-size:12px}.markdown-body th{background:var(--ai-table-header-bg);color:var(--ai-text-strong);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:8px 12px;font-weight:600}.markdown-body td{border-bottom:1px solid var(--ai-border);color:var(--ai-text);white-space:nowrap;padding:8px 12px}.markdown-body tr:hover td{background:var(--ai-table-hover)}.markdown-body .is-left{text-align:left}.markdown-body .is-right{text-align:right}.markdown-body .is-center{text-align:center}.markdown-body .hljs{color:var(--ai-hljs-base);background:0 0}.markdown-body .hljs-keyword,.markdown-body .hljs-selector-tag,.markdown-body .hljs-literal,.markdown-body .hljs-section,.markdown-body .hljs-link{color:var(--ai-hljs-keyword)}.markdown-body .hljs-string,.markdown-body .hljs-title,.markdown-body .hljs-name,.markdown-body .hljs-type,.markdown-body .hljs-attribute,.markdown-body .hljs-symbol,.markdown-body .hljs-bullet,.markdown-body .hljs-addition,.markdown-body .hljs-variable,.markdown-body .hljs-template-tag,.markdown-body .hljs-template-variable{color:var(--ai-hljs-string)}.markdown-body .hljs-comment,.markdown-body .hljs-quote,.markdown-body .hljs-deletion,.markdown-body .hljs-meta{color:var(--ai-hljs-comment)}.markdown-body .hljs-number,.markdown-body .hljs-regexp,.markdown-body .hljs-built_in{color:var(--ai-hljs-number)}.markdown-body .hljs-function,.markdown-body .hljs-params{color:var(--ai-hljs-function)}.markdown-body .hljs-class,.markdown-body .hljs-tag{color:var(--ai-hljs-class)}.markdown-body .hljs-operator,.markdown-body .hljs-punctuation{color:var(--ai-hljs-operator)}.AiChatResponse__fallback{color:var(--ai-text);margin:0}.block-text{margin:8px 0}.block-title{color:var(--ai-text-strong);margin-bottom:8px;font-size:14px;font-weight:600}.plain-text{color:var(--ai-text);margin:0;line-height:1.6}.block-thinking{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;margin:8px 0;overflow:hidden}.thinking-header{cursor:pointer;color:var(--ai-primary);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 12px;font-weight:500;display:flex}.thinking-icon{flex-shrink:0}.thinking-arrow{width:16px;height:16px;color:var(--ai-text-secondary);margin-left:auto;transition:transform .2s}.thinking-arrow.is-open{transform:rotate(180deg)}.thinking-body{color:var(--ai-text-secondary);border-top:1px solid var(--ai-border);padding:8px 12px;font-size:12px;line-height:1.6}.thinking-body .markdown-body{color:var(--ai-text-secondary);font-size:12px}.thinking-body .markdown-body h1,.thinking-body .markdown-body h2,.thinking-body .markdown-body h3,.thinking-body .markdown-body h4{color:var(--ai-text);margin:8px 0 6px;font-size:1.1em}.thinking-body .markdown-body p{color:var(--ai-text-secondary);margin:6px 0}.thinking-body .markdown-body .table-wrap{margin:6px 0}.thinking-body .markdown-body table{border-collapse:collapse;font-size:11px}.thinking-body .markdown-body th{color:var(--ai-text);border-bottom:1px solid var(--ai-border);white-space:nowrap;background:#22d3ee14;padding:6px 8px;font-weight:600}.thinking-body .markdown-body td{color:var(--ai-text-secondary);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:6px 8px}.thinking-body .markdown-body pre{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.thinking-body .markdown-body pre code{color:var(--ai-text-secondary);font-size:11px}.thinking-body .markdown-body code{background:var(--ai-bg);color:var(--ai-text-secondary);font-size:11px}.thinking-body .markdown-body ul,.thinking-body .markdown-body ol{margin:6px 0;padding-left:14px}.thinking-body .markdown-body li{color:var(--ai-text-secondary);margin:3px 0}.block-table{margin:8px 0}.block-table .table-wrap{max-width:100%;overflow-x:auto}.block-table .table-wrap::-webkit-scrollbar{height:4px}.block-table .table-wrap::-webkit-scrollbar-track{background:0 0}.block-table .table-wrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.block-table table{border-collapse:collapse;table-layout:auto;width:auto;min-width:100%;font-size:12px}.block-table th{background:var(--ai-table-header-bg);color:var(--ai-text-strong);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:8px 12px;font-weight:600}.block-table td{border-bottom:1px solid var(--ai-border);color:var(--ai-text);white-space:nowrap;padding:8px 12px}.block-table tr:hover td{background:var(--ai-table-hover)}.block-table .is-left{text-align:left}.block-table .is-right{text-align:right}.block-table .is-center{text-align:center}.block-echarts{margin:8px 0}.echarts-container{width:100%;height:220px}.block-image{margin:8px 0}.block-image .image-card img{object-fit:contain;height:auto;max-height:160px}.block-list{margin:8px 0}.block-list ul{margin:0;padding-left:16px}.block-list li{color:var(--ai-text);margin:4px 0;line-height:1.6}.block-file-list{margin:8px 0}.file-list{flex-direction:column;gap:8px;display:flex}.file-list-item{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;overflow:hidden}.file-list-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.file-list-icon{color:var(--ai-primary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-list-name{min-width:0;color:var(--ai-text-strong);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.file-list-size{color:var(--ai-text-secondary);flex-shrink:0;font-size:12px}.file-list-arrow{width:16px;height:16px;color:var(--ai-text-secondary);flex-shrink:0;transition:transform .2s}.file-list-arrow.is-open{transform:rotate(180deg)}.file-list-body{border-top:1px solid var(--ai-border);padding:8px 12px}.file-list-desc{color:var(--ai-text-secondary);margin:0 0 8px;font-size:12px;line-height:1.5}.file-list-download{background:var(--ai-primary);color:#fff;cursor:pointer;border:none;border-radius:4px;align-items:center;gap:4px;padding:4px 12px;font-size:12px;transition:all .2s;display:inline-flex}.file-list-download:hover{background:var(--ai-primary-dark)}.block-file,.block-audio{margin:8px 0}.block-audio .ai-audio-player{border-radius:18px;width:100%;height:36px}.file-card{background:var(--ai-bg-light);border:1px solid var(--ai-border);border-radius:8px;align-items:center;gap:12px;padding:10px 12px;display:flex}.file-icon{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.file-meta{flex:1;min-width:0}.file-name{color:var(--ai-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.file-ext{color:var(--ai-text-secondary);margin-top:4px;font-size:12px}.file-download{border:1px solid var(--ai-border);background:var(--ai-bg);width:32px;height:32px;color:var(--ai-text);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.file-download svg{width:18px;height:18px}.file-download:hover{border-color:var(--ai-primary);color:var(--ai-primary);background:var(--ai-table-header-bg)}.AiChatThinking{margin:8px 0}.AiChatThinking__header{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--ai-text-secondary);background:var(--ai-bg-light);border:1px solid var(--ai-border);border-radius:12px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;transition:all .2s;display:inline-flex}.AiChatThinking__header:hover{color:var(--ai-primary);border-color:var(--ai-primary)}.AiChatThinking__label{align-items:center;gap:4px;font-weight:500;display:inline-flex}.AiChatThinking__status{opacity:.8;margin-left:4px;font-size:11px}.AiChatThinking__spinner{animation:1.2s linear infinite ai-thinking-spin}.AiChatThinking__icon--success{color:var(--ai-success)}.AiChatThinking__icon--error{color:var(--ai-error)}.AiChatThinking__arrow{width:16px;height:16px;transition:transform .2s}.AiChatThinking__arrow.is-open{transform:rotate(90deg)}.AiChatThinking__body{background:var(--ai-bg-light);border:1px solid var(--ai-border);color:var(--ai-text-secondary);border-radius:8px;margin-top:8px;padding:8px 12px;font-size:12px;line-height:1.6}.AiChatThinking__tools{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.AiChatThinking__tool{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:6px;align-items:center;gap:6px;width:fit-content;padding:4px 8px;font-size:11px;display:inline-flex}.AiChatThinking__tool.is-calling,.AiChatThinking__tool.is-thinking{color:var(--ai-primary);border-color:#22d3ee66}.AiChatThinking__tool.is-success{color:var(--ai-success);border-color:#00b42a4d}.AiChatThinking__tool.is-error{color:var(--ai-error);border-color:#f53f3f4d}.AiChatThinking__toolIcon{flex-shrink:0}.AiChatThinking__toolName{font-weight:500}.AiChatThinking__toolBadge{opacity:.8;font-size:10px}.AiChatThinking__content .markdown-body{color:var(--ai-text-secondary);font-size:12px}.AiChatThinking__content .markdown-body h1,.AiChatThinking__content .markdown-body h2,.AiChatThinking__content .markdown-body h3,.AiChatThinking__content .markdown-body h4{color:var(--ai-text);margin:8px 0 6px;font-size:1.1em}.AiChatThinking__content .markdown-body p{color:var(--ai-text-secondary);margin:6px 0}.AiChatThinking__content .markdown-body .table-wrap{margin:6px 0}.AiChatThinking__content .markdown-body table{border-collapse:collapse;font-size:11px}.AiChatThinking__content .markdown-body th{color:var(--ai-text);border-bottom:1px solid var(--ai-border);white-space:nowrap;background:#22d3ee14;padding:6px 8px;font-weight:600}.AiChatThinking__content .markdown-body td{color:var(--ai-text-secondary);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:6px 8px}.AiChatThinking__content .markdown-body pre{background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.AiChatThinking__content .markdown-body pre code{color:var(--ai-text-secondary);font-size:11px}.AiChatThinking__content .markdown-body code{background:var(--ai-bg);color:var(--ai-text-secondary);font-size:11px}.AiChatThinking__content .markdown-body ul,.AiChatThinking__content .markdown-body ol{margin:6px 0;padding-left:14px}.AiChatThinking__content .markdown-body li{color:var(--ai-text-secondary);margin:3px 0}.AiChatThinking__steps{flex-direction:column;gap:8px;display:flex}.AiChatThinking__step{color:var(--ai-text-secondary);align-items:flex-start;gap:8px;font-size:12px;line-height:1.6;display:flex}.AiChatThinking__dot{flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;margin-top:2px;display:flex}.AiChatThinking__pulse{background:var(--ai-primary);border-radius:50%;width:8px;height:8px;animation:1.2s infinite ai-thinking-pulse}.AiChatThinking__stepBody{flex:1;min-width:0}.AiChatThinking__text{word-break:break-word}.AiChatThinking__tableWrap{max-width:100%;margin-top:4px;overflow-x:auto}.AiChatThinking__tableWrap::-webkit-scrollbar{height:4px}.AiChatThinking__tableWrap::-webkit-scrollbar-track{background:0 0}.AiChatThinking__tableWrap::-webkit-scrollbar-thumb{background:var(--ai-border);border-radius:4px}.AiChatThinking__tableWrap table{border-collapse:collapse;table-layout:auto;width:auto;min-width:100%;font-size:11px}.AiChatThinking__tableWrap th{background:var(--ai-table-header-bg);color:var(--ai-text-strong);border-bottom:1px solid var(--ai-border);white-space:nowrap;padding:6px 8px;font-weight:600}.AiChatThinking__tableWrap td{border-bottom:1px solid var(--ai-border);color:var(--ai-text);white-space:nowrap;padding:6px 8px}.AiChatThinking__tableWrap .is-left{text-align:left}.AiChatThinking__tableWrap .is-right{text-align:right}.AiChatThinking__tableWrap .is-center{text-align:center}.AiChatThinking__image{object-fit:contain;border-radius:6px;max-width:100%;height:auto;max-height:160px;margin-top:4px}@keyframes ai-thinking-pulse{0%{opacity:1;transform:scale(.6)}50%{opacity:.6;transform:scale(1)}to{opacity:1;transform:scale(.6)}}@keyframes ai-thinking-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.image-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px;margin-top:8px;display:grid}.image-card{border:1px solid var(--ai-border);background:var(--ai-bg-light);cursor:pointer;border-radius:8px;padding-top:12px;transition:all .2s;overflow:hidden}.image-card:hover{box-shadow:var(--ai-shadow);transform:translateY(-2px)}.image-card img{object-fit:cover;width:100%;height:80px;display:block}.image-card .image-caption{color:var(--ai-text-secondary);text-align:center;padding:8px;font-size:12px}.AiChatResponse__summary{color:var(--ai-text);margin:0 0 8px}.pdf-card{background:var(--ai-bg-light);border:1px solid var(--ai-border);border-radius:8px;align-items:center;gap:8px;padding:8px;display:flex}.pdf-icon{color:#fff;background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.pdf-meta{flex:1;min-width:0}.pdf-title{color:var(--ai-text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.pdf-sub{color:var(--ai-text-secondary);margin-top:4px;font-size:12px}.pdf-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.pdf-download{border:1px solid var(--ai-border);background:var(--ai-bg);width:28px;height:28px;color:var(--ai-text);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;text-decoration:none;transition:all .2s;display:inline-flex}.pdf-download svg{width:16px;height:16px}.pdf-download:hover{background:var(--ai-table-header-bg);border-color:var(--ai-primary);color:var(--ai-primary)}.pdf-viewer-wrap{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;width:100%;max-height:320px;margin-top:8px;overflow:hidden auto}.pdf-viewer-wrap .vue-pdf-embed{width:100%}.image-preview-overlay{z-index:10000;background:#000000d9;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.image-preview-overlay img{border-radius:8px;max-width:90vw;max-height:85vh}.preview-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;display:flex;position:absolute;top:16px;right:16px}.preview-close:hover{background:#ffffff40}.preview-caption{color:#fff;background:#0009;border-radius:12px;padding:4px 12px;font-size:12px;position:absolute;bottom:32px}.AiChatResource{margin:8px 0}.AiChatResource__title{color:var(--ai-text-secondary);align-items:center;gap:6px;margin-bottom:8px;font-size:12px;font-weight:500;display:inline-flex}.AiChatResource__section{margin-bottom:8px}.AiChatResource__section:last-child{margin-bottom:0}.AiChatResource__grid{gap:8px;display:grid}.AiChatResource__grid--image{grid-template-columns:repeat(3,1fr)}.AiChatResource__grid--video{grid-template-columns:repeat(2,1fr)}.AiChatResource__imageCard,.AiChatResource__videoCard{border:1px solid var(--ai-border);background:var(--ai-bg-light);cursor:pointer;border-radius:8px;transition:all .2s;overflow:hidden}.AiChatResource__imageCard:hover,.AiChatResource__videoCard:hover{box-shadow:var(--ai-shadow);transform:translateY(-2px)}.AiChatResource__imageCard img,.AiChatResource__imageCard video,.AiChatResource__videoCard img,.AiChatResource__videoCard video{object-fit:cover;width:100%;height:80px;display:block}.AiChatResource__videoWrap{aspect-ratio:16/9;width:100%;position:relative}.AiChatResource__videoWrap video{width:100%;height:100%;position:absolute;inset:0}.AiChatResource__caption{color:var(--ai-text-secondary);text-align:center;white-space:nowrap;text-overflow:ellipsis;padding:6px 8px;font-size:11px;overflow:hidden}.AiChatResource__audioCard,.AiChatResource__fileCard{border:1px solid var(--ai-border);background:var(--ai-bg-light);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.AiChatResource__audioCard svg{color:var(--ai-primary);flex-shrink:0}.AiChatResource__audioMeta{flex:1;min-width:0}.AiChatResource__audioMeta audio{width:100%;height:28px;margin-top:4px}.AiChatResource__fileIcon{background:linear-gradient(135deg, var(--ai-primary) 0%, var(--ai-primary-dark) 100%);color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.AiChatResource__fileMeta{flex:1;min-width:0}.AiChatResource__name{color:var(--ai-text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.AiChatResource__type{color:var(--ai-text-secondary);margin-top:2px;font-size:11px}.AiChatResource__download{border:1px solid var(--ai-border);background:var(--ai-bg);width:28px;height:28px;color:var(--ai-text);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.AiChatResource__download svg{width:16px;height:16px}.AiChatResource__download:hover{border-color:var(--ai-primary);color:var(--ai-primary);background:var(--ai-table-header-bg)}.AiChat:not(.AiChat--fullscreen) .AiChatResource__grid--image{grid-template-columns:repeat(2,1fr)}.AiChat:not(.AiChat--fullscreen) .AiChatResource__grid--video{grid-template-columns:1fr}.AiChat:not(.AiChat--fullscreen) .AiChatResource__imageCard img,.AiChat:not(.AiChat--fullscreen) .AiChatResource__imageCard video,.AiChat:not(.AiChat--fullscreen) .AiChatResource__videoCard img,.AiChat:not(.AiChat--fullscreen) .AiChatResource__videoCard video{height:60px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__audioCard,.AiChat:not(.AiChat--fullscreen) .AiChatResource__fileCard{padding:6px 8px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__fileIcon{width:28px;height:28px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__fileIcon svg{width:16px;height:16px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__name{font-size:11px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__type,.AiChat:not(.AiChat--fullscreen) .AiChatResource__caption{font-size:10px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__download{width:24px;height:24px}.AiChat:not(.AiChat--fullscreen) .AiChatResource__download svg{width:14px;height:14px}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}