@feedmepos/mf-report 5.31.2 → 5.31.3

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 (38) hide show
  1. package/dist/{App-DoZB9B38.js → App-CAzuIycx.js} +4 -4
  2. package/dist/{DateRangeSelect-B-OUPLDB.js → DateRangeSelect-kBTiWzl8.js} +1 -1
  3. package/dist/{Default.vue_vue_type_script_setup_true_lang-BuTwhR1W.js → Default.vue_vue_type_script_setup_true_lang-QJJFd-aD.js} +1 -1
  4. package/dist/{DynamicWidget.vue_vue_type_script_setup_true_lang-DVqKtAYR.js → DynamicWidget.vue_vue_type_script_setup_true_lang-dhMaJAWF.js} +7 -7
  5. package/dist/{GlobalFilterSelect.vue_vue_type_script_setup_true_lang-CG8fCQW1.js → GlobalFilterSelect.vue_vue_type_script_setup_true_lang-Odt_cfjt.js} +63 -63
  6. package/dist/{InsightView-ChQ0BSqE.js → InsightView-CoyqETUU.js} +5 -5
  7. package/dist/{Integration-B0kp5Ip2.js → Integration-nK20FSKv.js} +3 -3
  8. package/dist/{Integrations-Co3m2GbW.js → Integrations-B2zhjy-7.js} +2 -2
  9. package/dist/{Layout-D1rSBMaa.js → Layout-Dl7UP2Mh.js} +1 -1
  10. package/dist/{LocationSelect.vue_vue_type_script_setup_true_lang-mGjvhC5F.js → LocationSelect.vue_vue_type_script_setup_true_lang-DroCP4X4.js} +2 -2
  11. package/dist/{MenuTab.vue_vue_type_script_setup_true_lang-DSYywVnI.js → MenuTab.vue_vue_type_script_setup_true_lang-Es9KEHbl.js} +5 -5
  12. package/dist/{NavigationTab.vue_vue_type_script_setup_true_lang-DCkznynv.js → NavigationTab.vue_vue_type_script_setup_true_lang-BohRRfew.js} +5 -5
  13. package/dist/{OverviewView-CzfPmLL6.js → OverviewView-_5c2H2MT.js} +5 -5
  14. package/dist/{Report-8pOJt9j7.js → Report-2w23PAp1.js} +3 -3
  15. package/dist/{ReportCanvasView-DGMnwS9i.js → ReportCanvasView-C0WPmew5.js} +435 -347
  16. package/dist/{ReportEditor-DfI8f6n5.js → ReportEditor-Bd6WesQn.js} +7 -7
  17. package/dist/{ReportView-CjuoUhur.js → ReportView-DlYt2nTi.js} +6 -6
  18. package/dist/{ReportViewRoute-DWQlfv7Y.js → ReportViewRoute-37OLAHAq.js} +2 -2
  19. package/dist/{Setting-BM4J1bGC.js → Setting-PmW3vgf2.js} +3 -3
  20. package/dist/{Template-Cm9n0DNY.js → Template-DkTDUZL3.js} +3 -3
  21. package/dist/{TileEditor-BwuehIJP.js → TileEditor-B_X1Z1IF.js} +6 -6
  22. package/dist/{TilePageStack.vue_vue_type_script_setup_true_lang-cAHeLbGq.js → TilePageStack.vue_vue_type_script_setup_true_lang-Dj9ImYdH.js} +2 -2
  23. package/dist/{TransitionFade-BRxnhaJy.js → TransitionFade-k7vzRKon.js} +5 -5
  24. package/dist/{app-0yX5NkWR.js → app-DOyssexi.js} +76 -12
  25. package/dist/app.js +1 -1
  26. package/dist/assets/formatChartData.worker-R9EGYsk6.js +544 -0
  27. package/dist/assets/processTableData.worker-CxpDa0tB.js +544 -0
  28. package/dist/{currency-C0VJTl19.js → currency-Dzf-h7uE.js} +1 -1
  29. package/dist/{index-DJ3gCuhy.js → index-uhMfapU4.js} +2906 -2802
  30. package/dist/{report-DWa0N3Ys.js → report-D1hOlAxl.js} +1 -1
  31. package/dist/report-canvas-libs/chartjs-chart-geo-4.js +2 -0
  32. package/dist/report-canvas-libs/chartjs-chart-sankey-0.js +7 -0
  33. package/dist/report-canvas-libs/components-1.js +1293 -50
  34. package/dist/report-canvas-libs/geo-outlines-1.js +5 -0
  35. package/dist/{useRestaurantPermission-BEaHLbHH.js → useRestaurantPermission-DdscVgP6.js} +1 -1
  36. package/package.json +3 -1
  37. package/dist/assets/formatChartData.worker-UoGYoYc3.js +0 -495
  38. package/dist/assets/processTableData.worker-DxE4bjxG.js +0 -495
@@ -2,39 +2,39 @@ import { defineComponent as Ze, computed as V, ref as _, watch as ge, onBeforeUn
2
2
  import { useRoute as jn, useRouter as Dn } from "vue-router";
3
3
  import { u as et, _ as mt } from "./_plugin-vue_export-helper-C6QDExPN.js";
4
4
  import { storeToRefs as qe } from "pinia";
5
- import { r as _e, F as Se, u as ut, a as Nt, Z as Vn, _ as Bn, $ as Fn, a0 as qn, a1 as Un, a2 as Hn, i as Wn } from "./app-0yX5NkWR.js";
6
- import { _ as Gn } from "./LocationSelect.vue_vue_type_script_setup_true_lang-mGjvhC5F.js";
7
- import { D as Yn } from "./DateRangeSelect-B-OUPLDB.js";
5
+ import { r as _e, F as Se, u as ut, a as Nt, Z as Vn, _ as Bn, $ as Fn, a0 as qn, a1 as Un, a2 as Hn, i as Wn } from "./app-DOyssexi.js";
6
+ import { _ as Gn } from "./LocationSelect.vue_vue_type_script_setup_true_lang-DroCP4X4.js";
7
+ import { D as Yn } from "./DateRangeSelect-kBTiWzl8.js";
8
8
  import { detectLocale as Jn } from "@feedmepos/mf-common";
9
- import { c as Kn } from "./currency-C0VJTl19.js";
10
- import { v as Ut, u as Xn } from "./report-DWa0N3Ys.js";
9
+ import { c as Kn } from "./currency-Dzf-h7uE.js";
10
+ import { v as Ut, u as Xn } from "./report-D1hOlAxl.js";
11
11
  import { r as Qn } from "./i18n-DbyciK4x.js";
12
12
  const Zn = /^(?:https?:\/\/|mailto:)[^\s]+$/i, St = /`([^`]+)`|(!?)\[([^\]]*)\]\(([^)\s]*)\)|\*\*([\s\S]+?)\*\*|\*([^*\n]+)\*/g;
13
- function It(n, e) {
13
+ function It(a, e) {
14
14
  if (!e) return;
15
- const t = n[n.length - 1];
16
- (t == null ? void 0 : t.type) === "text" ? t.text += e : n.push({ type: "text", text: e });
15
+ const t = a[a.length - 1];
16
+ (t == null ? void 0 : t.type) === "text" ? t.text += e : a.push({ type: "text", text: e });
17
17
  }
18
- function At(n) {
18
+ function At(a) {
19
19
  const e = [];
20
20
  let t = 0;
21
21
  St.lastIndex = 0;
22
- for (let r = St.exec(n); r; r = St.exec(n)) {
23
- It(e, n.slice(t, r.index)), t = r.index + r[0].length;
24
- const [, a, f, u, w, k, x] = r;
25
- a !== void 0 ? e.push({ type: "code", text: a }) : u !== void 0 ? !f && Zn.test(w) ? e.push({ type: "link", text: u || w, href: w }) : It(e, r[0]) : k !== void 0 ? e.push({ type: "strong", text: k }) : x !== void 0 && e.push({ type: "em", text: x });
22
+ for (let r = St.exec(a); r; r = St.exec(a)) {
23
+ It(e, a.slice(t, r.index)), t = r.index + r[0].length;
24
+ const [, n, f, u, w, k, x] = r;
25
+ n !== void 0 ? e.push({ type: "code", text: n }) : u !== void 0 ? !f && Zn.test(w) ? e.push({ type: "link", text: u || w, href: w }) : It(e, r[0]) : k !== void 0 ? e.push({ type: "strong", text: k }) : x !== void 0 && e.push({ type: "em", text: x });
26
26
  }
27
- return It(e, n.slice(t)), e;
27
+ return It(e, a.slice(t)), e;
28
28
  }
29
29
  const ea = /^\s*```/, ta = /^\s{0,3}(#{1,6})\s+(.*)$/, na = /^\s*[-*+]\s+(.*)$/, aa = /^\s*\d{1,3}[.)]\s+(.*)$/;
30
- function Ht(n) {
31
- const e = [], t = String(n ?? "").split(/\r?\n/);
32
- let r = [], a = null, f = null;
30
+ function Ht(a) {
31
+ const e = [], t = String(a ?? "").split(/\r?\n/);
32
+ let r = [], n = null, f = null;
33
33
  function u() {
34
34
  r.length && (e.push({ type: "p", inline: At(r.join(" ")) }), r = []);
35
35
  }
36
36
  function w() {
37
- a && (e.push({ type: "list", ordered: a.ordered, items: a.items }), a = null);
37
+ n && (e.push({ type: "list", ordered: n.ordered, items: n.items }), n = null);
38
38
  }
39
39
  function k() {
40
40
  u(), w();
@@ -57,18 +57,18 @@ function Ht(n) {
57
57
  else if (R || M) {
58
58
  u();
59
59
  const T = !R;
60
- (!a || a.ordered !== T) && (w(), a = { ordered: T, items: [] }), a.items.push(At((R ?? M)[1]));
60
+ (!n || n.ordered !== T) && (w(), n = { ordered: T, items: [] }), n.items.push(At((R ?? M)[1]));
61
61
  } else
62
62
  w(), r.push(x.trim());
63
63
  }
64
64
  return f != null && f.length && e.push({ type: "pre", text: f.join(`
65
65
  `) }), k(), e;
66
66
  }
67
- function ra(n, e) {
68
- const t = String(n ?? "").trim();
67
+ function ra(a, e) {
68
+ const t = String(a ?? "").trim();
69
69
  if (t.length <= e) return t;
70
- const r = t.slice(0, e), a = r.lastIndexOf(" ");
71
- return `${(a > e * 0.6 ? r.slice(0, a) : r).trimEnd()}…`;
70
+ const r = t.slice(0, e), n = r.lastIndexOf(" ");
71
+ return `${(n > e * 0.6 ? r.slice(0, n) : r).trimEnd()}…`;
72
72
  }
73
73
  const Wt = 600, ct = [
74
74
  "reviewing",
@@ -125,95 +125,95 @@ const Wt = 600, ct = [
125
125
  "turn_failed",
126
126
  "step"
127
127
  ]);
128
- function cn(n) {
129
- return n && oa[n] || "working";
128
+ function cn(a) {
129
+ return a && oa[a] || "working";
130
130
  }
131
- function Gt(n, e) {
131
+ function Gt(a, e) {
132
132
  const t = ct.indexOf(e);
133
- return t < 0 || n && ct.indexOf(n) >= t ? n : e;
133
+ return t < 0 || a && ct.indexOf(a) >= t ? a : e;
134
134
  }
135
- function sa(n) {
136
- const e = new Set(n.map(cn));
135
+ function sa(a) {
136
+ const e = new Set(a.map(cn));
137
137
  return ct.filter((t) => e.has(t));
138
138
  }
139
- function mn(n) {
139
+ function mn(a) {
140
140
  var t;
141
141
  const e = [];
142
- for (const r of n) {
143
- const a = (t = r.data) == null ? void 0 : t.step;
144
- if (r.type !== "data-step" || typeof a != "string") continue;
145
- const f = ct.find((u) => u === a);
142
+ for (const r of a) {
143
+ const n = (t = r.data) == null ? void 0 : t.step;
144
+ if (r.type !== "data-step" || typeof n != "string") continue;
145
+ const f = ct.find((u) => u === n);
146
146
  f && !e.includes(f) && e.push(f);
147
147
  }
148
148
  return e;
149
149
  }
150
- function la(n) {
151
- return n ? n.steps.length ? n.steps : sa(n.signals) : [];
150
+ function la(a) {
151
+ return a ? a.steps.length ? a.steps : sa(a.signals) : [];
152
152
  }
153
- function fa(n) {
154
- return mn((n == null ? void 0 : n.parts) ?? []).pop() ?? null;
153
+ function fa(a) {
154
+ return mn((a == null ? void 0 : a.parts) ?? []).pop() ?? null;
155
155
  }
156
- function Ct(n) {
157
- return n.filter((e) => e.type === "text").map((e) => String(e.text ?? "").trim()).filter(Boolean).join(`
156
+ function Ct(a) {
157
+ return a.filter((e) => e.type === "text").map((e) => String(e.text ?? "").trim()).filter(Boolean).join(`
158
158
 
159
159
  `);
160
160
  }
161
- function da(n) {
161
+ function da(a) {
162
162
  const e = [];
163
- for (const t of n) {
163
+ for (const t of a) {
164
164
  const r = t.type.startsWith("tool-") || t.type.startsWith("data-") ? t.type.slice(5) : "";
165
165
  r && !ia.has(r) && e.push(r);
166
166
  }
167
167
  return e;
168
168
  }
169
- function ca(n) {
169
+ function ca(a) {
170
170
  var r;
171
- const e = n.find((a) => a.type === "data-turn_stats"), t = (r = e == null ? void 0 : e.data) == null ? void 0 : r.ms;
171
+ const e = a.find((n) => n.type === "data-turn_stats"), t = (r = e == null ? void 0 : e.data) == null ? void 0 : r.ms;
172
172
  return typeof t == "number" && t >= 0 ? t : void 0;
173
173
  }
174
- function ma(n) {
175
- const e = Math.max(0, Math.floor(n / 1e3));
174
+ function ma(a) {
175
+ const e = Math.max(0, Math.floor(a / 1e3));
176
176
  return e < 60 ? `${e}s` : `${Math.floor(e / 60)}m ${String(e % 60).padStart(2, "0")}s`;
177
177
  }
178
- function ua(n) {
179
- const e = n / 1e3;
178
+ function ua(a) {
179
+ const e = a / 1e3;
180
180
  return e < 60 ? `${e.toFixed(1)}s` : `${Math.floor(e / 60)}m ${String(Math.round(e % 60)).padStart(2, "0")}s`;
181
181
  }
182
- function pa(n) {
183
- return n === "too_costly" || n === "timeout" ? "tooLarge" : n === "deadline" ? "outOfTime" : "ours";
182
+ function pa(a) {
183
+ return a === "too_costly" || a === "timeout" ? "tooLarge" : a === "deadline" ? "outOfTime" : "ours";
184
184
  }
185
- function ha(n) {
185
+ function ha(a) {
186
186
  var t;
187
- const e = (t = n.find((r) => r.type === "data-turn_failed")) == null ? void 0 : t.data;
187
+ const e = (t = a.find((r) => r.type === "data-turn_failed")) == null ? void 0 : t.data;
188
188
  if (e)
189
189
  return {
190
190
  code: typeof e.code == "string" ? e.code : "unknown",
191
191
  ...typeof e.ref == "string" ? { ref: e.ref } : {}
192
192
  };
193
193
  }
194
- function ba(n) {
195
- const e = n.find((t) => t.type === "data-edit-target");
194
+ function ba(a) {
195
+ const e = a.find((t) => t.type === "data-edit-target");
196
196
  return e ? e.data : void 0;
197
197
  }
198
- function ga(n) {
198
+ function ga(a) {
199
199
  const e = [[]];
200
- for (const t of n)
200
+ for (const t of a)
201
201
  t.type === "step-start" ? e.push([]) : e[e.length - 1].push(t);
202
202
  return e.filter((t) => t.length > 0);
203
203
  }
204
- function Yt(n) {
205
- return n.some((e) => e.type.startsWith("tool-"));
204
+ function Yt(a) {
205
+ return a.some((e) => e.type.startsWith("tool-"));
206
206
  }
207
- function va(n, e = {}) {
207
+ function va(a, e = {}) {
208
208
  var r;
209
209
  const t = [];
210
- for (const a of n ?? []) {
211
- const f = a.parts ?? [], u = da(f), w = ba(f);
212
- if (a.role === "user") {
210
+ for (const n of a ?? []) {
211
+ const f = n.parts ?? [], u = da(f), w = ba(f);
212
+ if (n.role === "user") {
213
213
  const G = Ct(f);
214
214
  t.push({
215
- id: a.id,
216
- turnId: a.turnId ?? a.id,
215
+ id: n.id,
216
+ turnId: n.turnId ?? n.id,
217
217
  role: "user",
218
218
  target: w,
219
219
  answer: G,
@@ -226,15 +226,15 @@ function va(n, e = {}) {
226
226
  });
227
227
  continue;
228
228
  }
229
- const k = !!e.streamingId && a.id === e.streamingId;
230
- if (a.inProgress && !k) continue;
229
+ const k = !!e.streamingId && n.id === e.streamingId;
230
+ if (n.inProgress && !k) continue;
231
231
  const x = ga(f), j = x[x.length - 1] ?? [], R = x.some(Yt), M = R && !f.some((G) => G.type === "step-start");
232
232
  let T = "";
233
233
  k || (!R || M ? T = Ct(f) : Yt(j) || (T = Ct(j)));
234
234
  const X = !!T && (M || T.length > Wt), I = k ? void 0 : ha(f);
235
235
  !T && !u.length && !k || t.push({
236
- id: a.id,
237
- turnId: a.turnId ?? a.id,
236
+ id: n.id,
237
+ turnId: n.turnId ?? n.id,
238
238
  role: "assistant",
239
239
  target: w,
240
240
  answer: T,
@@ -244,7 +244,7 @@ function va(n, e = {}) {
244
244
  steps: mn(f),
245
245
  pending: k,
246
246
  noSummary: !k && !T && R,
247
- ms: k ? void 0 : ca(f) ?? ((r = a.stats) == null ? void 0 : r.ms),
247
+ ms: k ? void 0 : ca(f) ?? ((r = n.stats) == null ? void 0 : r.ms),
248
248
  ...I ? { failure: I } : {}
249
249
  });
250
250
  }
@@ -317,8 +317,8 @@ const ya = {
317
317
  retryError: {}
318
318
  },
319
319
  emits: ["retry", "askBuilder", "checkStatus"],
320
- setup(n, { emit: e }) {
321
- const t = n, r = e, { t: a } = et(), f = V(() => {
320
+ setup(a, { emit: e }) {
321
+ const t = a, r = e, { t: n } = et(), f = V(() => {
322
322
  var I;
323
323
  return ((I = t.run) == null ? void 0 : I.sections) ?? [];
324
324
  }), u = V(() => f.value.filter((I) => I.status === "ok").length), w = V(() => f.value.filter((I) => I.status === "error")), k = V(() => {
@@ -358,7 +358,7 @@ const ya = {
358
358
  size: "sm"
359
359
  })
360
360
  ]),
361
- v("span", ka, y(o(a)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
361
+ v("span", ka, y(o(n)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
362
362
  ]))), 128)),
363
363
  v("li", _a, [
364
364
  G[2] || (G[2] = v("span", { class: "flex h-[21px] w-16 shrink-0 items-center justify-center" }, [
@@ -366,21 +366,21 @@ const ya = {
366
366
  ], -1)),
367
367
  v("div", Sa, [
368
368
  v("div", Ia, [
369
- v("p", Aa, y(o(a)(`reportV5.reportAi.chat.phase.${I.phase}`)), 1),
369
+ v("p", Aa, y(o(n)(`reportV5.reportAi.chat.phase.${I.phase}`)), 1),
370
370
  M.value ? (l(), d("span", Ca, y(M.value), 1)) : L("", !0)
371
371
  ]),
372
- f.value.length ? (l(), d("p", Ea, y(o(a)("reportV5.reportAi.build.prepared", { done: u.value, total: f.value.length })), 1)) : L("", !0),
373
- I.slow ? (l(), d("p", Ta, y(o(a)("reportV5.reportAi.build.slow")) + " " + y(o(a)("reportV5.reportAi.build.safeToLeave")), 1)) : L("", !0)
372
+ f.value.length ? (l(), d("p", Ea, y(o(n)("reportV5.reportAi.build.prepared", { done: u.value, total: f.value.length })), 1)) : L("", !0),
373
+ I.slow ? (l(), d("p", Ta, y(o(n)("reportV5.reportAi.build.slow")) + " " + y(o(n)("reportV5.reportAi.build.safeToLeave")), 1)) : L("", !0)
374
374
  ])
375
375
  ])
376
376
  ])) : L("", !0),
377
- I.interrupted ? (l(), d("p", Oa, y(o(a)("reportV5.reportAi.build.interrupted")), 1)) : L("", !0),
377
+ I.interrupted ? (l(), d("p", Oa, y(o(n)("reportV5.reportAi.build.interrupted")), 1)) : L("", !0),
378
378
  I.stale ? (l(), d("div", za, [
379
- v("p", $a, y(o(a)("reportV5.reportAi.build.stalled")), 1),
379
+ v("p", $a, y(o(n)("reportV5.reportAi.build.stalled")), 1),
380
380
  v("button", {
381
381
  class: "fm-typo-en-body-sm-600 text-fm-color-typo-secondary underline",
382
382
  onClick: G[0] || (G[0] = (h) => r("checkStatus"))
383
- }, y(o(a)("reportV5.reportAi.build.checkStatus")), 1)
383
+ }, y(o(n)("reportV5.reportAi.build.checkStatus")), 1)
384
384
  ])) : L("", !0),
385
385
  w.value.length ? (l(), d("ul", Ra, [
386
386
  (l(!0), d(Ae, null, Re(w.value, (h) => (l(), d("li", {
@@ -389,7 +389,7 @@ const ya = {
389
389
  }, [
390
390
  v("div", Na, [
391
391
  v("p", La, y(h.title), 1),
392
- v("p", Ma, y(o(a)(
392
+ v("p", Ma, y(o(n)(
393
393
  h.retries ? "reportV5.reportAi.build.retriedWidget" : "reportV5.reportAi.build.failedWidget"
394
394
  )), 1)
395
395
  ]),
@@ -398,15 +398,15 @@ const ya = {
398
398
  "data-testid": "report-canvas-retry",
399
399
  class: "fm-typo-en-body-sm-600 shrink-0 text-fm-color-typo-secondary underline",
400
400
  onClick: (B) => r("retry", h.id)
401
- }, y(o(a)("reportV5.reportAi.build.retry")), 9, Pa)) : k.value ? (l(), d("button", {
401
+ }, y(o(n)("reportV5.reportAi.build.retry")), 9, Pa)) : k.value ? (l(), d("button", {
402
402
  key: 1,
403
403
  "data-testid": "report-canvas-ask-builder",
404
404
  class: "fm-typo-en-body-sm-600 shrink-0 text-fm-color-typo-secondary underline",
405
405
  onClick: (B) => r("askBuilder", h.title)
406
- }, y(o(a)("reportV5.reportAi.build.askBuilder")), 9, ja)) : L("", !0)
406
+ }, y(o(n)("reportV5.reportAi.build.askBuilder")), 9, ja)) : L("", !0)
407
407
  ]))), 128))
408
408
  ])) : L("", !0),
409
- I.retryError ? (l(), d("p", Da, y(o(a)("reportV5.reportAi.build.retryFailed")), 1)) : L("", !0),
409
+ I.retryError ? (l(), d("p", Da, y(o(n)("reportV5.reportAi.build.retryFailed")), 1)) : L("", !0),
410
410
  X.value ? (l(), d("div", Va, [
411
411
  v("button", {
412
412
  "data-testid": "report-canvas-details-toggle",
@@ -418,7 +418,7 @@ const ya = {
418
418
  name: T.value ? "expand_more" : "chevron_right",
419
419
  size: "sm"
420
420
  }, null, 8, ["name"]),
421
- Ke(" " + y(o(a)("reportV5.reportAi.build.details")), 1)
421
+ Ke(" " + y(o(n)("reportV5.reportAi.build.details")), 1)
422
422
  ], 8, Ba),
423
423
  T.value ? (l(), d("div", Fa, [
424
424
  I.active ? L("", !0) : (l(!0), d(Ae, { key: 0 }, Re(I.phases, (h) => (l(), d("p", {
@@ -431,13 +431,13 @@ const ya = {
431
431
  size: "sm"
432
432
  })
433
433
  ]),
434
- Ke(" " + y(o(a)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
434
+ Ke(" " + y(o(n)(`reportV5.reportAi.chat.phaseDone.${h}`)), 1)
435
435
  ]))), 128)),
436
436
  (l(!0), d(Ae, null, Re(f.value, (h) => (l(), d("p", {
437
437
  key: h.id,
438
438
  "data-testid": "report-canvas-widget-state",
439
439
  class: "fm-typo-en-body-sm-400 flex items-center gap-8 pl-24 text-fm-color-typo-secondary",
440
- title: o(a)(`reportV5.reportAi.build.state.${h.status}`)
440
+ title: o(n)(`reportV5.reportAi.build.state.${h.status}`)
441
441
  }, [
442
442
  v("span", Ha, [
443
443
  h.status === "ok" ? (l(), ye(q, {
@@ -458,7 +458,7 @@ const ya = {
458
458
  }))
459
459
  ]),
460
460
  v("span", Ga, y(h.title), 1),
461
- h.status === "error" ? (l(), d("span", Ya, y(o(a)("reportV5.reportAi.build.state.error")), 1)) : (l(), d("span", Ja, y(o(a)(`reportV5.reportAi.build.state.${h.status}`)), 1))
461
+ h.status === "error" ? (l(), d("span", Ya, y(o(n)("reportV5.reportAi.build.state.error")), 1)) : (l(), d("span", Ja, y(o(n)(`reportV5.reportAi.build.state.${h.status}`)), 1))
462
462
  ], 8, Ua))), 128))
463
463
  ])) : L("", !0)
464
464
  ])) : L("", !0)
@@ -491,8 +491,8 @@ const ya = {
491
491
  stopping: { type: Boolean }
492
492
  },
493
493
  emits: ["update:draft", "submit", "clearTarget", "stop"],
494
- setup(n, { expose: e, emit: t }) {
495
- const r = n, a = t, { t: f } = et(), u = Kt * 2, w = Kt * 6, k = _(), x = _(!1);
494
+ setup(a, { expose: e, emit: t }) {
495
+ const r = a, n = t, { t: f } = et(), u = Kt * 2, w = Kt * 6, k = _(), x = _(!1);
496
496
  function j() {
497
497
  const h = k.value;
498
498
  h && (h.style.height = "auto", h.style.height = `${Math.min(Math.max(h.scrollHeight, u), w)}px`);
@@ -502,14 +502,14 @@ const ya = {
502
502
  () => void De(j)
503
503
  );
504
504
  function R(h) {
505
- a("update:draft", h.target.value);
505
+ n("update:draft", h.target.value);
506
506
  }
507
507
  function M(h) {
508
508
  h.key !== "Enter" || h.shiftKey || x.value || h.isComposing || (h.preventDefault(), X());
509
509
  }
510
510
  const T = V(() => !!r.draft.trim() && !r.streaming && !r.targetStale);
511
511
  function X() {
512
- T.value && a("submit");
512
+ T.value && n("submit");
513
513
  }
514
514
  function I() {
515
515
  var h;
@@ -572,7 +572,7 @@ const ya = {
572
572
  "aria-label": o(f)(
573
573
  h.target.element ? "reportV5.reportAi.chat.removeElement" : "reportV5.reportAi.chat.removeTarget"
574
574
  ),
575
- onClick: B[2] || (B[2] = (Z) => a("clearTarget"))
575
+ onClick: B[2] || (B[2] = (Z) => n("clearTarget"))
576
576
  }, [
577
577
  ae(ne, {
578
578
  name: "close",
@@ -588,7 +588,7 @@ const ya = {
588
588
  disabled: h.stopping,
589
589
  "aria-label": o(f)(h.stopping ? "reportV5.reportAi.chat.stopping" : "reportV5.reportAi.chat.stop"),
590
590
  title: o(f)(h.stopping ? "reportV5.reportAi.chat.stopping" : "reportV5.reportAi.chat.stop"),
591
- onClick: B[3] || (B[3] = (Z) => a("stop"))
591
+ onClick: B[3] || (B[3] = (Z) => n("stop"))
592
592
  }, [
593
593
  ae(ne, {
594
594
  name: "stop",
@@ -617,8 +617,8 @@ const ya = {
617
617
  };
618
618
  }
619
619
  }), cr = "rounded-sm bg-fm-color-neutral-gray-100 px-4 font-mono text-[0.9em]";
620
- function Xt(n) {
621
- return n.map((e) => e.type === "strong" ? Be("strong", { class: "font-semibold" }, e.text) : e.type === "em" ? Be("em", e.text) : e.type === "code" ? Be("code", { class: cr }, e.text) : e.type === "link" ? Be(
620
+ function Xt(a) {
621
+ return a.map((e) => e.type === "strong" ? Be("strong", { class: "font-semibold" }, e.text) : e.type === "em" ? Be("em", e.text) : e.type === "code" ? Be("code", { class: cr }, e.text) : e.type === "link" ? Be(
622
622
  "a",
623
623
  {
624
624
  href: e.href,
@@ -629,10 +629,10 @@ function Xt(n) {
629
629
  e.text
630
630
  ) : e.text);
631
631
  }
632
- const mr = (n) => Be(
632
+ const mr = (a) => Be(
633
633
  "div",
634
634
  { class: "fm-typo-en-body-md-400 flex flex-col items-stretch gap-8 !leading-[21px]" },
635
- (n.blocks ?? []).map((e) => e.type === "pre" ? Be(
635
+ (a.blocks ?? []).map((e) => e.type === "pre" ? Be(
636
636
  "pre",
637
637
  {
638
638
  class: "overflow-x-auto rounded-md bg-fm-color-neutral-gray-100 p-8 font-mono text-xs"
@@ -653,15 +653,15 @@ const mr = (n) => Be(
653
653
  blocks: {},
654
654
  preview: {}
655
655
  },
656
- setup(n) {
657
- const e = n, { t } = et(), r = _(!1);
656
+ setup(a) {
657
+ const e = a, { t } = et(), r = _(!1);
658
658
  ge(
659
659
  () => e.preview,
660
660
  () => r.value = !1
661
661
  );
662
- const a = V(() => e.preview && !r.value ? e.preview : e.blocks);
662
+ const n = V(() => e.preview && !r.value ? e.preview : e.blocks);
663
663
  return (f, u) => (l(), d("div", null, [
664
- ae(o(mr), { blocks: a.value }, null, 8, ["blocks"]),
664
+ ae(o(mr), { blocks: n.value }, null, 8, ["blocks"]),
665
665
  f.preview ? (l(), d("button", {
666
666
  key: 0,
667
667
  "data-testid": "report-canvas-full-reply",
@@ -783,9 +783,9 @@ const mr = (n) => Be(
783
783
  homeDraftModifiers: {}
784
784
  }),
785
785
  emits: /* @__PURE__ */ Vt(["update:draft", "submit", "close", "retry", "undo", "resend", "askAgain", "editRequest", "askBuilder", "checkStatus", "clearTarget", "newChat", "selectChat", "loadChats", "loadMoreChats", "loadEarlier", "stop"], ["update:homeOpen", "update:homeDraft"]),
786
- setup(n, { emit: e }) {
787
- const t = n, r = e, { t: a, locale: f } = et(), u = Bt(n, "homeOpen"), w = _(!1), k = Bt(n, "homeDraft"), x = _(!1), j = V(
788
- () => !t.chatTitle || t.chatTitle === Qt ? a("reportV5.reportAi.chat.chats") : t.chatTitle
786
+ setup(a, { emit: e }) {
787
+ const t = a, r = e, { t: n, locale: f } = et(), u = Bt(a, "homeOpen"), w = _(!1), k = Bt(a, "homeDraft"), x = _(!1), j = V(
788
+ () => !t.chatTitle || t.chatTitle === Qt ? n("reportV5.reportAi.chat.chats") : t.chatTitle
789
789
  ), R = _(!1), M = V(() => t.switching || R.value);
790
790
  ge(
791
791
  () => t.messages,
@@ -837,7 +837,7 @@ const mr = (n) => Be(
837
837
  const $ = [];
838
838
  for (const fe of t.chats ?? []) {
839
839
  const le = new Date(fe.lastMessageAt).getTime(), Le = le >= i.getTime() ? "today" : le >= i.getTime() - so ? "yesterday" : "earlier";
840
- ($.find((me) => me.key === Le) ?? ($.push({ key: Le, label: a(`reportV5.reportAi.chat.group.${Le}`), chats: [] }), $[$.length - 1])).chats.push(fe);
840
+ ($.find((me) => me.key === Le) ?? ($.push({ key: Le, label: n(`reportV5.reportAi.chat.group.${Le}`), chats: [] }), $[$.length - 1])).chats.push(fe);
841
841
  }
842
842
  return $;
843
843
  });
@@ -911,8 +911,8 @@ const mr = (n) => Be(
911
911
  }
912
912
  const Ie = ["one", "two", "three"], ve = V(
913
913
  () => t.blank ? Ie.map((i) => ({
914
- label: a(`reportV5.reportAi.chat.suggestNew.${i}.label`),
915
- prompt: a(`reportV5.reportAi.chat.suggestNew.${i}.prompt`)
914
+ label: n(`reportV5.reportAi.chat.suggestNew.${i}.label`),
915
+ prompt: n(`reportV5.reportAi.chat.suggestNew.${i}.prompt`)
916
916
  })) : []
917
917
  );
918
918
  async function Ne(i) {
@@ -959,25 +959,25 @@ const mr = (n) => Be(
959
959
  const fe = ze("FmIcon"), le = ze("FmTooltip"), Le = ze("FmButton");
960
960
  return l(), d("aside", {
961
961
  class: "flex h-full min-h-0 w-full flex-col border-l border-fm-color-border-secondary bg-fm-color-neutral-white",
962
- "aria-label": o(a)("reportV5.reportAi.chat.title"),
962
+ "aria-label": o(n)("reportV5.reportAi.chat.title"),
963
963
  onKeydown: h
964
964
  }, [
965
965
  v("header", br, [
966
966
  v("div", gr, [
967
- v("h2", vr, y(o(a)("reportV5.reportAi.chat.title")), 1),
967
+ v("h2", vr, y(o(n)("reportV5.reportAi.chat.title")), 1),
968
968
  !he.value && i.chatTitle && i.chatTitle !== Qt ? (l(), d("p", yr, y(i.chatTitle), 1)) : L("", !0)
969
969
  ]),
970
970
  !u.value || w.value ? (l(), ye(le, {
971
971
  key: 0,
972
972
  placement: "bottom",
973
- content: o(a)("reportV5.reportAi.chat.chats")
973
+ content: o(n)("reportV5.reportAi.chat.chats")
974
974
  }, {
975
975
  default: We(() => [
976
976
  v("button", {
977
977
  "data-testid": "report-canvas-chat-back",
978
978
  class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
979
979
  disabled: i.busy,
980
- "aria-label": w.value ? o(a)("reportV5.reportAi.chat.recentChats") : o(a)("reportV5.reportAi.chat.openChats", { title: j.value }),
980
+ "aria-label": w.value ? o(n)("reportV5.reportAi.chat.recentChats") : o(n)("reportV5.reportAi.chat.openChats", { title: j.value }),
981
981
  onClick: I
982
982
  }, [
983
983
  ae(fe, {
@@ -991,15 +991,15 @@ const mr = (n) => Be(
991
991
  he.value ? L("", !0) : (l(), ye(le, {
992
992
  key: 1,
993
993
  placement: "bottom",
994
- content: o(a)("reportV5.reportAi.chat.newChat")
994
+ content: o(n)("reportV5.reportAi.chat.newChat")
995
995
  }, {
996
996
  default: We(() => [
997
997
  v("button", {
998
998
  "data-testid": "report-canvas-new-chat",
999
999
  class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
1000
1000
  disabled: i.busy,
1001
- "aria-label": o(a)("reportV5.reportAi.chat.newChat"),
1002
- title: i.busy ? o(a)("reportV5.reportAi.chat.waitForUpdate") : void 0,
1001
+ "aria-label": o(n)("reportV5.reportAi.chat.newChat"),
1002
+ title: i.busy ? o(n)("reportV5.reportAi.chat.waitForUpdate") : void 0,
1003
1003
  onClick: q
1004
1004
  }, [
1005
1005
  ae(fe, {
@@ -1013,13 +1013,13 @@ const mr = (n) => Be(
1013
1013
  }, 8, ["content"])),
1014
1014
  ae(le, {
1015
1015
  placement: "left",
1016
- content: o(a)("reportV5.reportAi.chat.hide")
1016
+ content: o(n)("reportV5.reportAi.chat.hide")
1017
1017
  }, {
1018
1018
  default: We(() => [
1019
1019
  v("button", {
1020
1020
  "data-testid": "report-canvas-chat-close",
1021
1021
  class: "chat-icon-button flex h-[36px] w-[36px] shrink-0 items-center justify-center rounded-md text-fm-color-typo-secondary",
1022
- "aria-label": o(a)("reportV5.reportAi.chat.hide"),
1022
+ "aria-label": o(n)("reportV5.reportAi.chat.hide"),
1023
1023
  onClick: $[0] || ($[0] = (D) => r("close"))
1024
1024
  }, [
1025
1025
  ae(fe, {
@@ -1035,12 +1035,12 @@ const mr = (n) => Be(
1035
1035
  key: 0,
1036
1036
  "data-testid": u.value ? "report-canvas-chat-list" : "report-canvas-chat-home",
1037
1037
  class: "flex min-h-0 grow flex-col overflow-y-auto px-[20px] py-24",
1038
- "aria-label": o(a)("reportV5.reportAi.chat.chats")
1038
+ "aria-label": o(n)("reportV5.reportAi.chat.chats")
1039
1039
  }, [
1040
1040
  w.value ? L("", !0) : (l(), d("div", Sr, [
1041
1041
  v("div", Ir, [
1042
- v("h3", Ar, y(o(a)("reportV5.reportAi.chat.exploreTitle")), 1),
1043
- v("p", Cr, y(o(a)(
1042
+ v("h3", Ar, y(o(n)("reportV5.reportAi.chat.exploreTitle")), 1),
1043
+ v("p", Cr, y(o(n)(
1044
1044
  i.blank ? "reportV5.reportAi.chat.placeholderNew" : "reportV5.reportAi.chat.exploreHint"
1045
1045
  )), 1)
1046
1046
  ]),
@@ -1065,12 +1065,12 @@ const mr = (n) => Be(
1065
1065
  $e.value ? (l(), d("section", {
1066
1066
  key: 1,
1067
1067
  class: "shrink-0 pt-24",
1068
- "aria-label": o(a)("reportV5.reportAi.chat.recentChats")
1068
+ "aria-label": o(n)("reportV5.reportAi.chat.recentChats")
1069
1069
  }, [
1070
- v("h3", zr, y(o(a)(
1070
+ v("h3", zr, y(o(n)(
1071
1071
  w.value ? "reportV5.reportAi.chat.yourChats" : "reportV5.reportAi.chat.recentChats"
1072
1072
  )), 1),
1073
- i.chatsLoading && !((ie = i.chats) != null && ie.length) ? (l(), d("p", $r, y(o(a)("reportV5.reportAi.chat.loadingChats")), 1)) : i.chatsError ? (l(), d("p", Rr, y(i.chatsError), 1)) : (me = i.chats) != null && me.length ? (l(!0), d(Ae, { key: 3 }, Re(Ee.value, (D) => (l(), d("section", {
1073
+ i.chatsLoading && !((ie = i.chats) != null && ie.length) ? (l(), d("p", $r, y(o(n)("reportV5.reportAi.chat.loadingChats")), 1)) : i.chatsError ? (l(), d("p", Rr, y(i.chatsError), 1)) : (me = i.chats) != null && me.length ? (l(!0), d(Ae, { key: 3 }, Re(Ee.value, (D) => (l(), d("section", {
1074
1074
  key: D.key,
1075
1075
  class: Qe(w.value ? "mb-16" : "")
1076
1076
  }, [
@@ -1090,20 +1090,20 @@ const mr = (n) => Be(
1090
1090
  class: "fm-typo-en-body-sm-400 shrink-0 text-fm-color-typo-secondary"
1091
1091
  }, y(ne(ue)), 9, jr)
1092
1092
  ], 8, Mr))), 128))
1093
- ], 2))), 128)) : (l(), d("p", Nr, y(o(a)("reportV5.reportAi.chat.noChats")), 1)),
1093
+ ], 2))), 128)) : (l(), d("p", Nr, y(o(n)("reportV5.reportAi.chat.noChats")), 1)),
1094
1094
  w.value ? i.chatsCursor ? (l(), d("button", {
1095
1095
  key: 5,
1096
1096
  "data-testid": "report-canvas-chat-list-more",
1097
1097
  class: "chat-row fm-typo-en-body-sm-600 rounded-md px-8 py-12 text-fm-color-typo-secondary",
1098
1098
  disabled: i.chatsLoading,
1099
1099
  onClick: $[1] || ($[1] = (D) => r("loadMoreChats"))
1100
- }, y(o(a)("reportV5.reportAi.chat.loadMoreChats")), 9, Vr)) : L("", !0) : (l(), d("button", {
1100
+ }, y(o(n)("reportV5.reportAi.chat.loadMoreChats")), 9, Vr)) : L("", !0) : (l(), d("button", {
1101
1101
  key: 4,
1102
1102
  "data-testid": "report-canvas-chat-see-all",
1103
1103
  class: "chat-row fm-typo-en-body-sm-600 mt-8 rounded-md px-8 py-12 text-fm-color-typo-secondary",
1104
1104
  disabled: i.chatsLoading,
1105
1105
  onClick: X
1106
- }, y(o(a)("reportV5.reportAi.chat.seeAll")), 9, Dr))
1106
+ }, y(o(n)("reportV5.reportAi.chat.seeAll")), 9, Dr))
1107
1107
  ], 8, Or)) : L("", !0),
1108
1108
  i.error ? (l(), d("p", Br, y(i.error), 1)) : L("", !0)
1109
1109
  ], 8, _r)) : (l(), d("div", Fr, [
@@ -1113,20 +1113,20 @@ const mr = (n) => Be(
1113
1113
  class: "min-h-0 grow overflow-y-auto px-[20px] py-16",
1114
1114
  onScroll: W
1115
1115
  }, [
1116
- M.value ? (l(), d("p", qr, y(o(a)("reportV5.reportAi.chat.loadingChat")), 1)) : (l(), d(Ae, { key: 1 }, [
1116
+ M.value ? (l(), d("p", qr, y(o(n)("reportV5.reportAi.chat.loadingChat")), 1)) : (l(), d(Ae, { key: 1 }, [
1117
1117
  i.earlier ? (l(), d("button", {
1118
1118
  key: 0,
1119
1119
  "data-testid": "report-canvas-load-earlier",
1120
1120
  class: "fm-typo-en-body-sm-600 mb-16 w-full text-fm-color-typo-secondary disabled:opacity-50",
1121
1121
  disabled: i.loadingEarlier,
1122
1122
  onClick: $[2] || ($[2] = (D) => r("loadEarlier"))
1123
- }, y(o(a)("reportV5.reportAi.chat.loadEarlier")), 9, Ur)) : L("", !0),
1123
+ }, y(o(n)("reportV5.reportAi.chat.loadEarlier")), 9, Ur)) : L("", !0),
1124
1124
  (l(!0), d(Ae, null, Re(A.value, (D, ue) => (l(), d("div", {
1125
1125
  key: D.id,
1126
1126
  class: "mb-16"
1127
1127
  }, [
1128
- D.target ? (l(), d("p", Hr, y(o(a)("reportV5.reportAi.chat.commentOn", {
1129
- widget: D.target.label || o(a)("reportV5.reportAi.chat.selectedWidget")
1128
+ D.target ? (l(), d("p", Hr, y(o(n)("reportV5.reportAi.chat.commentOn", {
1129
+ widget: D.target.label || o(n)("reportV5.reportAi.chat.selectedWidget")
1130
1130
  })), 1)) : L("", !0),
1131
1131
  D.role === "user" ? (l(), d("div", Wr, [
1132
1132
  v("div", {
@@ -1137,28 +1137,28 @@ const mr = (n) => Be(
1137
1137
  ])
1138
1138
  }, y(D.answer), 3),
1139
1139
  Z.value.has(D.id) ? (l(), d("p", Gr, [
1140
- Ke(y(o(a)("reportV5.reportAi.chat.notSent")) + " ", 1),
1140
+ Ke(y(o(n)("reportV5.reportAi.chat.notSent")) + " ", 1),
1141
1141
  v("button", {
1142
1142
  "data-testid": "chat-message-resend",
1143
1143
  class: "ml-4 underline disabled:opacity-50",
1144
1144
  disabled: i.streaming || i.busy,
1145
1145
  onClick: (Te) => r("resend", D.id)
1146
- }, y(o(a)("reportV5.reportAi.chat.resend")), 9, Yr)
1146
+ }, y(o(n)("reportV5.reportAi.chat.resend")), 9, Yr)
1147
1147
  ])) : p.value.has(D.id) ? (l(), d("p", Jr, [
1148
- Ke(y(o(a)("reportV5.reportAi.chat.noReply")) + " ", 1),
1148
+ Ke(y(o(n)("reportV5.reportAi.chat.noReply")) + " ", 1),
1149
1149
  v("button", {
1150
1150
  "data-testid": "chat-message-ask-again",
1151
1151
  class: "ml-4 underline disabled:opacity-50",
1152
1152
  disabled: i.streaming || i.busy,
1153
1153
  onClick: (Te) => r("askAgain", D.id)
1154
- }, y(o(a)("reportV5.reportAi.chat.resend")), 9, Kr)
1154
+ }, y(o(n)("reportV5.reportAi.chat.resend")), 9, Kr)
1155
1155
  ])) : oe.value.has(D.turnId) ? (l(), d("button", {
1156
1156
  key: 2,
1157
1157
  "data-testid": "chat-turn-undo",
1158
1158
  class: "fm-typo-en-body-sm-400 mt-4 text-fm-color-typo-secondary underline disabled:opacity-50",
1159
1159
  disabled: i.undoing || i.streaming,
1160
1160
  onClick: (Te) => r("undo", D.turnId)
1161
- }, y(o(a)("reportV5.reportCanvas.draft.undo")), 9, Xr)) : L("", !0)
1161
+ }, y(o(n)("reportV5.reportCanvas.draft.undo")), 9, Xr)) : L("", !0)
1162
1162
  ])) : (l(), d(Ae, { key: 2 }, [
1163
1163
  ue === K.value || ue === re.value ? (l(), ye(Jt, Ft({
1164
1164
  key: 0,
@@ -1176,33 +1176,33 @@ const mr = (n) => Be(
1176
1176
  size: "sm",
1177
1177
  class: "shrink-0 text-fm-color-typo-error"
1178
1178
  }),
1179
- Ke(" " + y(o(a)("reportV5.reportAi.build.failed.title")), 1)
1179
+ Ke(" " + y(o(n)("reportV5.reportAi.build.failed.title")), 1)
1180
1180
  ]),
1181
- v("p", eo, y(o(a)(`reportV5.reportAi.build.failed.${o(pa)(D.failure.code)}`)), 1),
1181
+ v("p", eo, y(o(n)(`reportV5.reportAi.build.failed.${o(pa)(D.failure.code)}`)), 1),
1182
1182
  ue === A.value.length - 1 && H(ue) ? (l(), d("div", to, [
1183
1183
  ae(Le, {
1184
1184
  "data-testid": "report-canvas-try-again",
1185
1185
  variant: "primary",
1186
- label: o(a)("reportV5.reportAi.build.failed.tryAgain"),
1186
+ label: o(n)("reportV5.reportAi.build.failed.tryAgain"),
1187
1187
  disabled: i.streaming || i.busy,
1188
1188
  onClick: (Te) => r("askAgain", H(ue))
1189
1189
  }, null, 8, ["label", "disabled", "onClick"]),
1190
1190
  ae(Le, {
1191
1191
  "data-testid": "report-canvas-edit-request",
1192
1192
  variant: "secondary",
1193
- label: o(a)("reportV5.reportAi.build.failed.editRequest"),
1193
+ label: o(n)("reportV5.reportAi.build.failed.editRequest"),
1194
1194
  disabled: i.streaming || i.busy,
1195
1195
  onClick: (Te) => Ne(H(ue))
1196
1196
  }, null, 8, ["label", "disabled", "onClick"])
1197
1197
  ])) : L("", !0),
1198
- D.failure.ref ? (l(), d("p", no, y(o(a)("reportV5.reportAi.build.failed.ref", { ref: D.failure.ref })), 1)) : L("", !0)
1198
+ D.failure.ref ? (l(), d("p", no, y(o(n)("reportV5.reportAi.build.failed.ref", { ref: D.failure.ref })), 1)) : L("", !0)
1199
1199
  ])) : D.blocks.length ? (l(), ye(pr, {
1200
1200
  key: 2,
1201
1201
  "data-testid": "report-canvas-answer",
1202
1202
  blocks: D.blocks,
1203
1203
  preview: D.preview
1204
- }, null, 8, ["blocks", "preview"])) : D.noSummary ? (l(), d("p", ao, y(o(a)("reportV5.reportAi.chat.noSummary")), 1)) : L("", !0),
1205
- D.ms ? (l(), d("p", ro, y(o(a)("reportV5.reportAi.chat.took", { duration: o(ua)(D.ms) })), 1)) : L("", !0)
1204
+ }, null, 8, ["blocks", "preview"])) : D.noSummary ? (l(), d("p", ao, y(o(n)("reportV5.reportAi.chat.noSummary")), 1)) : L("", !0),
1205
+ D.ms ? (l(), d("p", ro, y(o(n)("reportV5.reportAi.chat.took", { duration: o(ua)(D.ms) })), 1)) : L("", !0)
1206
1206
  ], 64))
1207
1207
  ]))), 128)),
1208
1208
  ee.value ? (l(), ye(Jt, Ft({
@@ -1221,7 +1221,7 @@ const mr = (n) => Be(
1221
1221
  "data-testid": "report-canvas-jump-latest",
1222
1222
  class: "fm-typo-en-body-sm-600 absolute bottom-12 left-1/2 -translate-x-1/2 rounded-full border border-fm-color-border-secondary bg-fm-color-neutral-white px-12 py-4 shadow-sm",
1223
1223
  onClick: Q
1224
- }, y(o(a)("reportV5.reportAi.chat.jumpToLatest")), 1)) : L("", !0)
1224
+ }, y(o(n)("reportV5.reportAi.chat.jumpToLatest")), 1)) : L("", !0)
1225
1225
  ])),
1226
1226
  v("div", io, [
1227
1227
  ae(dr, {
@@ -1244,50 +1244,50 @@ const mr = (n) => Be(
1244
1244
  };
1245
1245
  }
1246
1246
  }), co = /* @__PURE__ */ mt(fo, [["__scopeId", "data-v-7e36736a"]]);
1247
- function Ue(n) {
1247
+ function Ue(a) {
1248
1248
  const { businessId: e } = qe(ut());
1249
1249
  if (!e.value) throw new Error("Business Id is not defined");
1250
- return `/${e.value}/report-canvas/${n}`;
1250
+ return `/${e.value}/report-canvas/${a}`;
1251
1251
  }
1252
- const Zt = (n) => {
1252
+ const Zt = (a) => {
1253
1253
  const e = {
1254
1254
  fetchType: Se.Get,
1255
- url: Ue(n)
1255
+ url: Ue(a)
1256
1256
  };
1257
1257
  return _e.fetch(e);
1258
- }, mo = (n, e, t, r, a, f) => {
1258
+ }, mo = (a, e, t, r, n, f) => {
1259
1259
  const u = {
1260
1260
  fetchType: Se.Post,
1261
- url: `${Ue(n)}/query/${e}`,
1261
+ url: `${Ue(a)}/query/${e}`,
1262
1262
  // a draft-only query id does not exist on the published copy, so the state travels with it
1263
- data: { params: t, timezone: r, state: a },
1263
+ data: { params: t, timezone: r, state: n },
1264
1264
  requestConfig: { signal: f }
1265
1265
  };
1266
1266
  return _e.fetch(u);
1267
- }, uo = (n, e, t, r) => {
1268
- const a = {
1267
+ }, uo = (a, e, t, r) => {
1268
+ const n = {
1269
1269
  fetchType: Se.Post,
1270
- url: `${Ue(n)}/section/${e}/ack`,
1270
+ url: `${Ue(a)}/section/${e}/ack`,
1271
1271
  data: { ...t, state: r }
1272
1272
  };
1273
- return _e.fetch(a);
1274
- }, po = (n) => _e.fetch({
1273
+ return _e.fetch(n);
1274
+ }, po = (a) => _e.fetch({
1275
1275
  fetchType: Se.Post,
1276
- url: `${Ue(n)}/publish`,
1276
+ url: `${Ue(a)}/publish`,
1277
1277
  data: {}
1278
- }), ho = (n) => _e.fetch({
1278
+ }), ho = (a) => _e.fetch({
1279
1279
  fetchType: Se.Delete,
1280
- url: `${Ue(n)}/draft`
1281
- }), bo = (n, e) => _e.fetch({
1280
+ url: `${Ue(a)}/draft`
1281
+ }), bo = (a, e) => _e.fetch({
1282
1282
  fetchType: Se.Post,
1283
- url: `${Ue(n)}/draft/undo`,
1283
+ url: `${Ue(a)}/draft/undo`,
1284
1284
  data: { turnId: e }
1285
- }), go = (n) => _e.fetch({
1285
+ }), go = (a) => _e.fetch({
1286
1286
  fetchType: Se.Get,
1287
- url: `${Ue(n)}/versions`
1288
- }), vo = (n, e) => _e.fetch({
1287
+ url: `${Ue(a)}/versions`
1288
+ }), vo = (a, e) => _e.fetch({
1289
1289
  fetchType: Se.Post,
1290
- url: `${Ue(n)}/restore`,
1290
+ url: `${Ue(a)}/restore`,
1291
1291
  data: { versionId: e }
1292
1292
  }), yo = ["aria-label"], xo = { class: "flex h-64 shrink-0 items-center gap-12 border-b border-fm-color-border-secondary px-[20px]" }, wo = { class: "fm-typo-en-body-md-600 grow" }, ko = ["aria-label", "disabled"], _o = { class: "min-h-0 grow overflow-y-auto px-[20px] py-[20px]" }, So = { class: "fm-typo-en-body-md-400 mb-[20px] text-fm-color-typo-secondary" }, Io = { class: "mb-24 rounded-[12px] border border-fm-color-border-secondary p-16" }, Ao = { class: "mb-8 flex items-center gap-8" }, Co = { class: "fm-typo-en-body-md-600 grow" }, Eo = { class: "fm-typo-en-body-sm-600 rounded-md bg-fm-color-neutral-gray-100 px-8 py-4" }, To = {
1293
1293
  key: 0,
@@ -1332,8 +1332,8 @@ const Zt = (n) => {
1332
1332
  busy: { type: Boolean }
1333
1333
  },
1334
1334
  emits: ["close", "restored", "restoring"],
1335
- setup(n, { emit: e }) {
1336
- const t = n, r = e, { t: a, locale: f } = et(), u = (C, te = {}) => a(`reportV5.reportCanvas.history.${C}`, te), w = _([]), k = _(!0), x = _(!1), j = _(!1), R = _(!1), M = _(!1), T = _(), X = _(), I = _(), G = _(), q = V(() => w.value.find((C) => C.id === T.value)), h = V(() => t.hasDraft || t.busy || R.value);
1335
+ setup(a, { emit: e }) {
1336
+ const t = a, r = e, { t: n, locale: f } = et(), u = (C, te = {}) => n(`reportV5.reportCanvas.history.${C}`, te), w = _([]), k = _(!0), x = _(!1), j = _(!1), R = _(!1), M = _(!1), T = _(), X = _(), I = _(), G = _(), q = V(() => w.value.find((C) => C.id === T.value)), h = V(() => t.hasDraft || t.busy || R.value);
1337
1337
  let B = !0, ne = null;
1338
1338
  function oe(C, te) {
1339
1339
  const c = new Date(C);
@@ -1581,9 +1581,9 @@ const Zt = (n) => {
1581
1581
  };
1582
1582
  }
1583
1583
  }), ri = /* @__PURE__ */ mt(ai, [["__scopeId", "data-v-7df5ac71"]]), oi = ["@from", "@to", "@locationIds", "@timezone"], Et = ["@from", "@to", "@locationIds"], ii = ["@timezone"], si = ["@locationIds"], li = 1, fi = 1500;
1584
- function di(n) {
1585
- if (!(!(n instanceof Un) || n.status !== 429))
1586
- return Math.min(Math.max(n.retryAfterMs ?? fi, 500), 5e3);
1584
+ function di(a) {
1585
+ if (!(!(a instanceof Un) || a.status !== 429))
1586
+ return Math.min(Math.max(a.retryAfterMs ?? fi, 500), 5e3);
1587
1587
  }
1588
1588
  const en = {
1589
1589
  "en-US": qn,
@@ -1591,19 +1591,19 @@ const en = {
1591
1591
  "zh-CN": Bn,
1592
1592
  "zh-Hant": Vn
1593
1593
  };
1594
- function ci(n) {
1595
- var a, f;
1596
- const e = en[n] ?? en["en-US"], t = {}, r = (u, w) => {
1594
+ function ci(a) {
1595
+ var n, f;
1596
+ const e = en[a] ?? en["en-US"], t = {}, r = (u, w) => {
1597
1597
  for (const [k, x] of Object.entries(u ?? {}))
1598
1598
  typeof x == "string" ? t[`${w}${k}`] = x : x && typeof x == "object" && r(x, `${w}${k}.`);
1599
1599
  };
1600
- return r(((f = (a = e == null ? void 0 : e.reportV5) == null ? void 0 : a.reportCanvas) == null ? void 0 : f.frame) ?? {}, ""), t;
1600
+ return r(((f = (n = e == null ? void 0 : e.reportV5) == null ? void 0 : n.reportCanvas) == null ? void 0 : f.frame) ?? {}, ""), t;
1601
1601
  }
1602
- function tn(n) {
1603
- return n == null ? !0 : Array.isArray(n) ? n.length === 0 : n === "";
1602
+ function tn(a) {
1603
+ return a == null ? !0 : Array.isArray(a) ? a.length === 0 : a === "";
1604
1604
  }
1605
- function mi(n) {
1606
- const e = Nt(), { dateRange: t, selectedLocationIds: r, locations: a, timezone: f } = qe(e), { country: u } = qe(ut()), w = _({}), k = _([]), x = _({}), j = Ln({}), R = _(), M = _([]), T = [], X = [], I = { ids: "[]", date: "" };
1605
+ function mi(a) {
1606
+ const e = Nt(), { dateRange: t, selectedLocationIds: r, locations: n, timezone: f } = qe(e), { country: u } = qe(ut()), w = _({}), k = _([]), x = _({}), j = Ln({}), R = _(), M = _([]), T = [], X = [], I = { ids: "[]", date: "" };
1607
1607
  let G = !1;
1608
1608
  const q = {}, h = {};
1609
1609
  fn() && dn(() => Object.values(h).forEach((c) => c.abort()));
@@ -1624,7 +1624,7 @@ function mi(n) {
1624
1624
  O["@from"] = t.value.startDate ?? null, O["@to"] = t.value.endDate ?? null, O["@timezone"] = f.value, O["@locationIds"] = [...r.value], w.value = O, x.value = {}, H();
1625
1625
  }
1626
1626
  function A() {
1627
- return a.value.map((c) => c.id);
1627
+ return n.value.map((c) => c.id);
1628
1628
  }
1629
1629
  function p() {
1630
1630
  return { startDate: t.value.startDate, endDate: t.value.endDate };
@@ -1653,7 +1653,7 @@ function mi(n) {
1653
1653
  JSON.stringify(p()) !== I.date && (O["@from"] = t.value.startDate ?? null, O["@to"] = t.value.endDate ?? null), JSON.stringify(c) !== I.ids ? (O["@locationIds"] = c, delete F["@locationIds"]) : F["@locationIds"] === "all" && (O["@locationIds"] = A()), Object.keys(O).length && Ne(O, F);
1654
1654
  }
1655
1655
  function ee() {
1656
- ge([t, r, a], () => {
1656
+ ge([t, r, n], () => {
1657
1657
  G && re();
1658
1658
  });
1659
1659
  }
@@ -1663,7 +1663,7 @@ function mi(n) {
1663
1663
  function Ce() {
1664
1664
  const c = Jn() || "en-US";
1665
1665
  return {
1666
- locations: a.value.map((O) => ({
1666
+ locations: n.value.map((O) => ({
1667
1667
  id: O.id,
1668
1668
  name: O.name || O.id,
1669
1669
  code: O.code
@@ -1701,7 +1701,7 @@ function mi(n) {
1701
1701
  for (let P = 0; ; P++)
1702
1702
  try {
1703
1703
  const i = await mo(
1704
- n,
1704
+ a,
1705
1705
  c.id,
1706
1706
  O,
1707
1707
  f.value,
@@ -1819,8 +1819,8 @@ function mi(n) {
1819
1819
  }
1820
1820
  const ui = `:root{--fm-palette-brand-fm-100:#fff3e6;--fm-palette-brand-fm-200:#ff9455;--fm-palette-brand-fm-300:#ff7823;--fm-palette-brand-fm-400:#b25300;--fm-palette-brand-fm-500:#6b3100;--fm-palette-aqua-100:#b7e2ff;--fm-palette-aqua-300:#3ab0ff;--fm-palette-aqua-500:#0a5384;--fm-palette-berry-100:#fee4dc;--fm-palette-berry-300:#e94850;--fm-palette-berry-500:#5f090a;--fm-palette-blossom-100:#fff7fc;--fm-palette-blossom-300:#ffc4c3;--fm-palette-blossom-500:#8c146a;--fm-palette-lime-100:#f4fde6;--fm-palette-lime-300:#aeef4b;--fm-palette-lime-500:#306a01;--fm-palette-mustard-100:#fef5ea;--fm-palette-mustard-300:#ffc746;--fm-palette-mustard-500:#903e1f;--fm-palette-stone-100:#f6f8fc;--fm-palette-stone-300:#b2b3b6;--fm-palette-stone-500:#2e2e2e;--fm-palette-grape-100:#eddfff;--fm-palette-grape-300:#8f61e8;--fm-palette-grape-500:#512191;--fm-palette-neurastone-0:#fff;--fm-palette-neurastone-100:#f6f6f8;--fm-palette-neurastone-200:#f0f0f0;--fm-palette-neurastone-300:#b2b3b6;--fm-palette-neurastone-400:#6b6c70;--fm-palette-neurastone-500:#4b4b4b;--fm-palette-neurastone-600:#2e2e2e;--fm-palette-neurastone-700:#262628;--fm-palette-neurastone-800:#1c1c1e;--fm-palette-neurastone-900:#121212;--fm-palette-blue-100:#e6f2ff;--fm-palette-blue-200:#66afff;--fm-palette-blue-300:#007aff;--fm-palette-blue-400:#004999;--fm-palette-blue-500:#002c5c;--fm-palette-orange-100:#fff4e6;--fm-palette-orange-200:#ffbf66;--fm-palette-orange-300:#ff9500;--fm-palette-orange-400:#995900;--fm-palette-orange-500:#5c3500;--fm-palette-green-100:#ebf9ee;--fm-palette-green-200:#85dd9b;--fm-palette-green-300:#34c759;--fm-palette-green-400:#1f7735;--fm-palette-green-500:#134720;--fm-palette-red-100:#ffebea;--fm-palette-red-200:#ff8983;--fm-palette-red-300:#ff3b30;--fm-palette-red-400:#99231d;--fm-palette-red-500:#5c1511;--fm-palette-overlay-black-alpha-4:#1212120a;--fm-palette-overlay-black-alpha-8:#12121214;--fm-palette-overlay-black-alpha-12:#1212121f;--fm-palette-overlay-black-alpha-16:#12121229;--fm-palette-overlay-black-alpha-24:#1212123d;--fm-palette-overlay-black-alpha-32:#12121252;--fm-palette-overlay-black-alpha-48:#1212127a;--fm-palette-overlay-black-alpha-64:#121212a3;--fm-palette-overlay-black-alpha-72:#121212b8;--fm-palette-overlay-black-alpha-80:#121212cc;--fm-palette-overlay-white-alpha-4:#ffffff0a;--fm-palette-overlay-white-alpha-8:#ffffff14;--fm-palette-overlay-white-alpha-12:#ffffff1f;--fm-palette-overlay-white-alpha-16:#ffffff29;--fm-palette-overlay-white-alpha-24:#ffffff3d;--fm-palette-overlay-white-alpha-32:#ffffff52;--fm-palette-overlay-white-alpha-48:#ffffff7a;--fm-palette-overlay-white-alpha-64:#ffffffa3;--fm-palette-overlay-white-alpha-72:#ffffffb8;--fm-palette-overlay-white-alpha-80:#fffc;--fm-spacing-0:0;--fm-spacing-1:1px;--fm-spacing-2:2px;--fm-spacing-4:4px;--fm-spacing-6:6px;--fm-spacing-8:8px;--fm-spacing-10:10px;--fm-spacing-12:12px;--fm-spacing-14:14px;--fm-spacing-16:16px;--fm-spacing-18:18px;--fm-spacing-20:20px;--fm-spacing-24:24px;--fm-spacing-28:28px;--fm-spacing-32:32px;--fm-spacing-40:40px;--fm-spacing-48:48px;--fm-spacing-56:56px;--fm-spacing-64:64px;--fm-spacing-72:72px;--fm-spacing-80:80px;--fm-spacing-88:88px;--fm-spacing-96:96px;--fm-spacing-104:104px;--fm-spacing-112:112px;--fm-spacing-120:120px;--fm-spacing-128:128px;--fm-spacing-160:160px;--fm-spacing-192:192px;--fm-radius-none:0;--fm-radius-xs:4px;--fm-radius-sm:8px;--fm-radius-md:12px;--fm-radius-lg:16px;--fm-radius-xl:24px;--fm-radius-2xl:32px;--fm-radius-3xl:64px;--fm-radius-full:99999px;--fm-border-width-none:0;--fm-border-width-hairline:.5px;--fm-border-width-thin:1px;--fm-border-width-regular:1.5px;--fm-border-width-medium:2px;--fm-border-width-thick:4px;--fm-opacity-0:0;--fm-opacity-8:.08;--fm-opacity-12:.12;--fm-opacity-16:.16;--fm-opacity-24:.24;--fm-opacity-32:.32;--fm-opacity-40:.4;--fm-opacity-48:.48;--fm-opacity-56:.56;--fm-opacity-64:.64;--fm-opacity-80:.8;--fm-opacity-100:1;--fm-shadow-blur-none:0;--fm-shadow-blur-xs:2px;--fm-shadow-blur-sm:4px;--fm-shadow-blur-md:6px;--fm-shadow-blur-lg:10px;--fm-shadow-blur-xl:16px;--fm-shadow-blur-2xl:24px;--fm-blur-sm:8px;--fm-blur-md:16px;--fm-blur-lg:24px;--fm-blur-xl:40px;--fm-z-index-base:0;--fm-z-index-raised:100;--fm-z-index-dropdown:200;--fm-z-index-sticky:300;--fm-z-index-overlay:400;--fm-z-index-modal:500;--fm-z-index-toast:600;--fm-z-index-tooltip:700;--fm-duration-instant:0s;--fm-duration-fast:.1s;--fm-duration-normal:.2s;--fm-duration-slow:.3s;--fm-duration-slower:.5s;--fm-easing-standard:cubic-bezier(.4, 0, .2, 1);--fm-easing-decelerate:cubic-bezier(0, 0, .2, 1);--fm-easing-accelerate:cubic-bezier(.4, 0, 1, 1);--fm-easing-spring:cubic-bezier(.34, 1.56, .64, 1);--fm-shadow-color:#1c1c1e;--fm-breakpoint-sm:0;--fm-breakpoint-md:768px;--fm-breakpoint-lg:1024px;--fm-breakpoint-xl:1440px;--fm-breakpoint-xxl:1920px}:root,[data-fm-theme=light]{--fm-bg-canvas:#f6f6f8;--fm-bg-default:#fff;--fm-bg-subtle:#f6f6f8;--fm-bg-muted:#f0f0f0;--fm-bg-elevated:#fff;--fm-bg-inverse:#1c1c1e;--fm-bg-brand:#fff3e6;--fm-bg-success:#ebf9ee;--fm-bg-warning:#fff4e6;--fm-bg-error:#ffebea;--fm-bg-info:#e6f2ff;--fm-surface-default:#fff;--fm-surface-sunken:#f0f0f0;--fm-surface-inset:#b2b3b6;--fm-surface-raised:#fff;--fm-surface-floating:#fff;--fm-text-primary:#1c1c1e;--fm-text-secondary:#4b4b4b;--fm-text-muted:#6b6c70;--fm-text-disabled:#b2b3b6;--fm-text-inverse:#fff;--fm-text-on-inset:#fff;--fm-text-link:#007aff;--fm-text-brand:#ff7823;--fm-text-success:#1f7735;--fm-text-warning:#995900;--fm-text-error:#99231d;--fm-icon-primary:#1c1c1e;--fm-icon-secondary:#4b4b4b;--fm-icon-muted:#6b6c70;--fm-icon-disabled:#b2b3b6;--fm-icon-inverse:#fff;--fm-icon-link:#007aff;--fm-icon-brand:#ff7823;--fm-icon-success:#1f7735;--fm-icon-warning:#995900;--fm-icon-error:#99231d;--fm-icon-info:#004999;--fm-icon-on-brand:#b25300;--fm-icon-on-success:#1f7735;--fm-icon-on-warning:#995900;--fm-icon-on-error:#99231d;--fm-icon-on-info:#004999;--fm-text-info:#004999;--fm-border-default:#f0f0f0;--fm-border-subtle:#f6f6f8;--fm-border-medium:#b2b3b6;--fm-border-strong:#6b6c70;--fm-border-inverse:#fff;--fm-border-brand:#ff7823;--fm-border-success:#1f7735;--fm-border-warning:#995900;--fm-border-error:#99231d;--fm-border-info:#004999;--fm-overlay-scrim-1:#12121252;--fm-overlay-scrim-2:#1212127a;--fm-overlay-scrim-3:#121212a3;--fm-overlay-scrim-4:#121212b8;--fm-action-primary-bg:#ff7823;--fm-feature-aqua-bg:#b7e2ff;--fm-feature-aqua-accent:#3ab0ff;--fm-feature-aqua-fg:#0a5384;--fm-feature-berry-bg:#fee4dc;--fm-feature-berry-accent:#e94850;--fm-feature-berry-fg:#5f090a;--fm-feature-blossom-bg:#fff7fc;--fm-feature-blossom-accent:#ffc4c3;--fm-feature-blossom-fg:#8c146a;--fm-feature-lime-bg:#f4fde6;--fm-feature-lime-accent:#aeef4b;--fm-feature-lime-fg:#306a01;--fm-feature-mustard-bg:#fef5ea;--fm-feature-mustard-accent:#ffc746;--fm-feature-mustard-fg:#903e1f;--fm-feature-stone-bg:#f6f8fc;--fm-feature-stone-accent:#b2b3b6;--fm-feature-stone-fg:#2e2e2e;--fm-feature-grape-bg:#eddfff;--fm-feature-grape-accent:#8f61e8;--fm-feature-grape-fg:#512191;--fm-state-subtle:#1212120a;--fm-state-hover:#12121214;--fm-state-pressed:#1212121f;--fm-state-selected:#12121229;--fm-state-dragged:#1212123d;--fm-action-primary-bg-hover:#b25300;--fm-action-primary-bg-subtle:#fff3e6;--fm-action-primary-fg:#1c1c1e;--fm-action-secondary-bg:#fff;--fm-action-secondary-bg-hover:#f6f6f8;--fm-action-secondary-fg:#1c1c1e;--fm-action-ghost-bg-hover:#f6f6f8;--fm-action-ghost-bg-active:#f0f0f0;--fm-action-danger-bg:#ff3b30;--fm-action-danger-bg-hover:#99231d;--fm-action-danger-bg-subtle:#ffebea;--fm-action-danger-fg:#1c1c1e;--fm-action-disabled-bg:#f0f0f0;--fm-action-disabled-fg:#6b6c70;--fm-text-on-brand:#b25300;--fm-text-on-success:#1f7735;--fm-text-on-warning:#995900;--fm-text-on-error:#99231d;--fm-text-on-info:#004999;--fm-badge-bg-aqua:#b7e2ff;--fm-badge-text-on-aqua:#0a5384;--fm-badge-icon-on-aqua:#0a5384;--fm-badge-border-aqua:#0a5384;--fm-badge-bg-berry:#fee4dc;--fm-badge-bg-blossom:#fff7fc;--fm-badge-bg-lime:#f4fde6;--fm-badge-bg-mustard:#fef5ea;--fm-badge-bg-stone:#f6f8fc;--fm-badge-bg-grape:#eddfff;--fm-badge-border-blossom:#8c146a;--fm-badge-text-on-blossom:#8c146a;--fm-badge-icon-on-blossom:#8c146a;--fm-badge-border-berry:#5f090a;--fm-badge-text-on-berry:#5f090a;--fm-badge-icon-on-berry:#5f090a;--fm-badge-border-lime:#306a01;--fm-badge-text-on-lime:#306a01;--fm-badge-icon-on-lime:#306a01;--fm-badge-border-mustard:#903e1f;--fm-badge-text-on-mustard:#903e1f;--fm-badge-icon-on-mustard:#903e1f;--fm-badge-border-stone:#2e2e2e;--fm-badge-text-on-stone:#2e2e2e;--fm-badge-icon-on-stone:#2e2e2e;--fm-badge-border-grape:#512191;--fm-badge-text-on-grape:#512191;--fm-badge-icon-on-grape:#512191;--fm-badge-bg-brand:#fff3e6;--fm-badge-border-brand:#ff7823;--fm-badge-text-on-brand:#ff7823;--fm-badge-icon-on-brand:#ff7823}[data-fm-theme=dark]{--fm-bg-canvas:#121212;--fm-bg-default:#1c1c1e;--fm-bg-subtle:#262628;--fm-bg-muted:#2e2e2e;--fm-bg-elevated:#262628;--fm-bg-inverse:#fff;--fm-bg-brand:#b25300;--fm-bg-success:#1f7735;--fm-bg-warning:#995900;--fm-bg-error:#99231d;--fm-bg-info:#004999;--fm-surface-default:#262628;--fm-surface-sunken:#121212;--fm-surface-inset:#1c1c1e;--fm-surface-raised:#2e2e2e;--fm-surface-floating:#4b4b4b;--fm-text-primary:#fff;--fm-text-secondary:#b2b3b6;--fm-text-muted:#6b6c70;--fm-text-disabled:#4b4b4b;--fm-text-inverse:#1c1c1e;--fm-text-on-inset:#fff;--fm-text-link:#66afff;--fm-text-brand:#fff3e6;--fm-text-success:#85dd9b;--fm-text-warning:#ffbf66;--fm-text-error:#ff8983;--fm-icon-primary:#fff;--fm-icon-secondary:#b2b3b6;--fm-icon-muted:#6b6c70;--fm-icon-disabled:#4b4b4b;--fm-icon-inverse:#1c1c1e;--fm-icon-link:#66afff;--fm-icon-brand:#fff3e6;--fm-icon-success:#85dd9b;--fm-icon-warning:#ffbf66;--fm-icon-error:#ff8983;--fm-icon-info:#66afff;--fm-icon-on-brand:#fff3e6;--fm-icon-on-success:#ebf9ee;--fm-icon-on-warning:#fff4e6;--fm-icon-on-error:#ffebea;--fm-icon-on-info:#e6f2ff;--fm-text-info:#66afff;--fm-border-default:#2e2e2e;--fm-border-subtle:#262628;--fm-border-medium:#b2b3b6;--fm-border-strong:#f6f6f8;--fm-border-inverse:#1c1c1e;--fm-border-brand:#fff3e6;--fm-border-success:#85dd9b;--fm-border-warning:#ffbf66;--fm-border-error:#ff8983;--fm-border-info:#66afff;--fm-overlay-scrim-1:#1212127a;--fm-overlay-scrim-2:#121212a3;--fm-overlay-scrim-3:#121212b8;--fm-overlay-scrim-4:#121212cc;--fm-action-primary-bg:#ff7823;--fm-feature-aqua-bg:#0a5384;--fm-feature-aqua-accent:#3ab0ff;--fm-feature-aqua-fg:#b7e2ff;--fm-feature-berry-bg:#5f090a;--fm-feature-berry-accent:#e94850;--fm-feature-berry-fg:#fee4dc;--fm-feature-blossom-bg:#8c146a;--fm-feature-blossom-accent:#ffc4c3;--fm-feature-blossom-fg:#fff7fc;--fm-feature-lime-bg:#306a01;--fm-feature-lime-accent:#aeef4b;--fm-feature-lime-fg:#f4fde6;--fm-feature-mustard-bg:#903e1f;--fm-feature-mustard-accent:#ffc746;--fm-feature-mustard-fg:#fef5ea;--fm-feature-stone-bg:#2e2e2e;--fm-feature-stone-accent:#b2b3b6;--fm-feature-stone-fg:#f6f8fc;--fm-feature-grape-bg:#512191;--fm-feature-grape-accent:#8f61e8;--fm-feature-grape-fg:#eddfff;--fm-state-subtle:#ffffff0a;--fm-state-hover:#ffffff14;--fm-state-pressed:#ffffff1f;--fm-state-selected:#ffffff29;--fm-state-dragged:#ffffff3d;--fm-action-primary-bg-hover:#b25300;--fm-action-primary-bg-subtle:#6b3100;--fm-action-primary-fg:#1c1c1e;--fm-action-secondary-bg:#262628;--fm-action-secondary-bg-hover:#2e2e2e;--fm-action-secondary-fg:#fff;--fm-action-ghost-bg-hover:#262628;--fm-action-ghost-bg-active:#2e2e2e;--fm-action-danger-bg:#ff3b30;--fm-action-danger-bg-hover:#99231d;--fm-action-danger-bg-subtle:#5c1511;--fm-action-danger-fg:#1c1c1e;--fm-action-disabled-bg:#2e2e2e;--fm-action-disabled-fg:#6b6c70;--fm-text-on-brand:#fff3e6;--fm-text-on-success:#ebf9ee;--fm-text-on-warning:#fff4e6;--fm-text-on-error:#ffebea;--fm-text-on-info:#e6f2ff;--fm-badge-bg-aqua:#0a5384;--fm-badge-text-on-aqua:#b7e2ff;--fm-badge-icon-on-aqua:#b7e2ff;--fm-badge-border-aqua:#3ab0ff;--fm-badge-bg-berry:#5f090a;--fm-badge-bg-blossom:#8c146a;--fm-badge-bg-lime:#306a01;--fm-badge-bg-mustard:#903e1f;--fm-badge-bg-stone:#2e2e2e;--fm-badge-bg-grape:#512191;--fm-badge-border-blossom:#ffc4c3;--fm-badge-text-on-blossom:#fff7fc;--fm-badge-icon-on-blossom:#fff7fc;--fm-badge-border-berry:#e94850;--fm-badge-text-on-berry:#fee4dc;--fm-badge-icon-on-berry:#fee4dc;--fm-badge-border-lime:#aeef4b;--fm-badge-text-on-lime:#f4fde6;--fm-badge-icon-on-lime:#f4fde6;--fm-badge-border-mustard:#ffc746;--fm-badge-text-on-mustard:#fef5ea;--fm-badge-icon-on-mustard:#fef5ea;--fm-badge-border-stone:#b2b3b6;--fm-badge-text-on-stone:#f6f8fc;--fm-badge-icon-on-stone:#f6f8fc;--fm-badge-border-grape:#8f61e8;--fm-badge-text-on-grape:#eddfff;--fm-badge-icon-on-grape:#eddfff;--fm-badge-bg-brand:#6b3100;--fm-badge-border-brand:#ff7823;--fm-badge-text-on-brand:#fff3e6;--fm-badge-icon-on-brand:#fff3e6}:root{--fm-font-size-8:8px;--fm-font-size-10:10px;--fm-font-size-12:12px;--fm-font-size-14:14px;--fm-font-size-16:16px;--fm-font-size-18:18px;--fm-font-size-22:22px;--fm-font-size-26:26px;--fm-font-size-32:32px;--fm-font-size-36:36px;--fm-font-size-48:48px;--fm-font-size-60:60px;--fm-font-size-72:72px;--fm-font-family-heading:"Cabinet Grotesk";--fm-font-family-body:"Inter";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:12px;--fm-line-height-10:14px;--fm-line-height-12:16px;--fm-line-height-14:20px;--fm-line-height-16:24px;--fm-line-height-18:26px;--fm-line-height-22:30px;--fm-line-height-26:36px;--fm-line-height-32:40px;--fm-line-height-36:44px;--fm-line-height-48:56px;--fm-line-height-60:72px;--fm-line-height-72:80px}:root:lang(zh),[lang=zh]{--fm-font-family-heading:"Noto Sans SC";--fm-font-family-body:"Noto Sans SC";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:12px;--fm-line-height-10:14px;--fm-line-height-12:18px;--fm-line-height-14:20px;--fm-line-height-16:26px;--fm-line-height-18:26px;--fm-line-height-22:30px;--fm-line-height-26:36px;--fm-line-height-32:44px;--fm-line-height-36:46px;--fm-line-height-48:60px;--fm-line-height-60:76px;--fm-line-height-72:90px}:root:lang(th),[lang=th]{--fm-font-family-heading:"Noto Sans Thai";--fm-font-family-body:"Noto Sans Thai";--fm-font-weight-regular:400;--fm-font-weight-medium:500;--fm-font-weight-semi-bold:600;--fm-font-weight-extra-bold:800;--fm-font-weight-black:900;--fm-line-height-8:14px;--fm-line-height-10:16px;--fm-line-height-12:20px;--fm-line-height-14:24px;--fm-line-height-16:28px;--fm-line-height-18:28px;--fm-line-height-22:32px;--fm-line-height-26:38px;--fm-line-height-32:46px;--fm-line-height-36:50px;--fm-line-height-48:64px;--fm-line-height-60:80px;--fm-line-height-72:96px}.fm-text-display-xl{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:72px;font-weight:900;line-height:80px}.fm-text-display-lg{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:60px;font-weight:900;line-height:72px}.fm-text-display-md{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:48px;font-weight:900;line-height:56px}.fm-text-display-sm{letter-spacing:.015em;font-family:Cabinet Grotesk,sans-serif;font-size:36px;font-weight:900;line-height:44px}.fm-text-title-xl{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:32px;font-weight:800;line-height:40px}.fm-text-title-lg{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:26px;font-weight:800;line-height:36px}.fm-text-title-md{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:22px;font-weight:800;line-height:30px}.fm-text-title-sm{letter-spacing:.01em;font-family:Cabinet Grotesk,sans-serif;font-size:18px;font-weight:800;line-height:26px}.fm-text-body-lg-600{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:600;line-height:24px}.fm-text-body-md-600{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:600;line-height:20px}.fm-text-body-sm-600{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:600;line-height:16px}.fm-text-body-xs-600{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:600;line-height:14px}.fm-text-body-overline-xs-600{letter-spacing:.1em;font-family:Inter,sans-serif;font-size:10px;font-weight:600;line-height:14px}.fm-text-body-overline-2xs-600{letter-spacing:.1em;font-family:Inter,sans-serif;font-size:8px;font-weight:600;line-height:12px}.fm-text-body-lg-500{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:500;line-height:24px}.fm-text-body-md-500{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:500;line-height:20px}.fm-text-body-sm-500{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:500;line-height:16px}.fm-text-body-xs-500{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:500;line-height:14px}.fm-text-body-lg-400{letter-spacing:.0025em;font-family:Inter,sans-serif;font-size:16px;font-weight:400;line-height:24px}.fm-text-body-md-400{letter-spacing:.01em;font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:20px}.fm-text-body-sm-400{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:12px;font-weight:400;line-height:16px}.fm-text-body-xs-400{letter-spacing:.02em;font-family:Inter,sans-serif;font-size:10px;font-weight:400;line-height:14px}:root{--fm-shadow-light-xs:0 1px 2px 0 #1c1c1e0a;--fm-shadow-light-sm:0 2px 4px 0 #1c1c1e0f;--fm-shadow-light-md:0 4px 6px 0 #1c1c1e14;--fm-shadow-light-lg:0 6px 10px 0 #1c1c1e1a;--fm-shadow-light-xl:0 8px 16px 0 #1c1c1e1f;--fm-shadow-light-2xl:0 12px 24px 0 #1c1c1e24;--fm-shadow-light-top-sm:0 -2px 4px 0 #1c1c1e0f;--fm-shadow-light-top-md:0 -4px 6px 0 #1c1c1e14;--fm-shadow-light-side-left-md:-4px 0 6px 0 #1c1c1e14;--fm-shadow-light-side-right-md:4px 0 6px 0 #1c1c1e14;--fm-shadow-light-text-sm:0 1px 1px 0 #1c1c1e0d;--fm-shadow-light-text-md:0 1px 2px 0 #1c1c1e1a;--fm-shadow-light-text-lg:0 2px 4px 0 #1c1c1e26;--fm-shadow-light-text-xl:0 3px 6px 0 #1c1c1e33;--fm-shadow-dark-xs:0 1px 2px 0 #ffffff0a;--fm-shadow-dark-sm:0 2px 4px 0 #ffffff0f;--fm-shadow-dark-md:0 4px 6px 0 #ffffff14;--fm-shadow-dark-lg:0 6px 10px 0 #ffffff1a;--fm-shadow-dark-xl:0 8px 16px 0 #ffffff1f;--fm-shadow-dark-2xl:0 12px 24px 0 #ffffff24;--fm-shadow-dark-top-sm:0 -2px 4px 0 #ffffff0f;--fm-shadow-dark-top-md:0 -4px 6px 0 #ffffff14;--fm-shadow-dark-side-left-md:-4px 0 6px 0 #ffffff14;--fm-shadow-dark-side-right-md:4px 0 6px 0 #ffffff14;--fm-shadow-dark-text-sm:0 1px 1px 0 #ffffff0d;--fm-shadow-dark-text-md:0 1px 2px 0 #ffffff1a;--fm-shadow-dark-text-lg:0 2px 4px 0 #ffffff26;--fm-shadow-dark-text-xl:0 3px 6px 0 #fff3;--fm-outer-shadow-light-brand:0 0 0 4px #ff782352;--fm-outer-shadow-light-error:0 0 0 4px #ff3b3052;--fm-outer-shadow-dark-brand:0 0 0 4px #ff782366;--fm-outer-shadow-dark-error:0 0 0 4px #ff3b3066;--fm-inner-shadow-light-sm:inset 0 1px 2px 0 #1c1c1e0f;--fm-inner-shadow-light-md:inset 0 2px 4px 0 #1c1c1e1a;--fm-inner-shadow-light-brand:0 2px 4px 0 #1c1c1e14, inset 0 0 0 1.25px #1c1c1e1f;--fm-inner-shadow-dark-sm:inset 0 1px 2px 0 #ffffff0f;--fm-inner-shadow-dark-md:inset 0 2px 4px 0 #ffffff1a;--fm-inner-shadow-dark-brand:0 2px 4px 0 #ffffff14, inset 0 0 0 1.25px #ffffff1f;--fm-blur-sm:8px;--fm-blur-md:16px;--fm-blur-lg:24px;--fm-blur-xl:40px}:root,[data-fm-theme=light]{--fm-shadow-xs:var(--fm-shadow-light-xs);--fm-shadow-sm:var(--fm-shadow-light-sm);--fm-shadow-md:var(--fm-shadow-light-md);--fm-shadow-lg:var(--fm-shadow-light-lg);--fm-shadow-xl:var(--fm-shadow-light-xl);--fm-shadow-2xl:var(--fm-shadow-light-2xl);--fm-shadow-top-sm:var(--fm-shadow-light-top-sm);--fm-shadow-top-md:var(--fm-shadow-light-top-md);--fm-shadow-side-left-md:var(--fm-shadow-light-side-left-md);--fm-shadow-side-right-md:var(--fm-shadow-light-side-right-md);--fm-shadow-text-sm:var(--fm-shadow-light-text-sm);--fm-shadow-text-md:var(--fm-shadow-light-text-md);--fm-shadow-text-lg:var(--fm-shadow-light-text-lg);--fm-shadow-text-xl:var(--fm-shadow-light-text-xl);--fm-outer-shadow-brand:var(--fm-outer-shadow-light-brand);--fm-outer-shadow-error:var(--fm-outer-shadow-light-error);--fm-inner-shadow-sm:var(--fm-inner-shadow-light-sm);--fm-inner-shadow-md:var(--fm-inner-shadow-light-md);--fm-inner-shadow-brand:var(--fm-inner-shadow-light-brand)}[data-fm-theme=dark]{--fm-shadow-xs:var(--fm-shadow-dark-xs);--fm-shadow-sm:var(--fm-shadow-dark-sm);--fm-shadow-md:var(--fm-shadow-dark-md);--fm-shadow-lg:var(--fm-shadow-dark-lg);--fm-shadow-xl:var(--fm-shadow-dark-xl);--fm-shadow-2xl:var(--fm-shadow-dark-2xl);--fm-shadow-top-sm:var(--fm-shadow-dark-top-sm);--fm-shadow-top-md:var(--fm-shadow-dark-top-md);--fm-shadow-side-left-md:var(--fm-shadow-dark-side-left-md);--fm-shadow-side-right-md:var(--fm-shadow-dark-side-right-md);--fm-shadow-text-sm:var(--fm-shadow-dark-text-sm);--fm-shadow-text-md:var(--fm-shadow-dark-text-md);--fm-shadow-text-lg:var(--fm-shadow-dark-text-lg);--fm-shadow-text-xl:var(--fm-shadow-dark-text-xl);--fm-outer-shadow-brand:var(--fm-outer-shadow-dark-brand);--fm-outer-shadow-error:var(--fm-outer-shadow-dark-error);--fm-inner-shadow-sm:var(--fm-inner-shadow-dark-sm);--fm-inner-shadow-md:var(--fm-inner-shadow-dark-md);--fm-inner-shadow-brand:var(--fm-inner-shadow-dark-brand)}[data-fm-theme]{color:var(--fm-text-primary)}.fm-icon{width:var(--fm-icon-size,24px);height:var(--fm-icon-size,24px);font-size:var(--fm-icon-size,24px);vertical-align:middle;-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.fm-icon__svg{fill:none;width:100%;height:100%;display:block}.fm-icon--rounded,.fm-icon--outlined{text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:antialiased;text-rendering:optimizelegibility;direction:ltr;font-style:normal;font-weight:400}.fm-icon--rounded{font-family:Material Symbols Filled}.fm-icon--outlined{font-family:Material Symbols Outlined}.fm-alert{--fm-alert-surface:var(--fm-bg-inverse);--fm-alert-fg:var(--fm-text-inverse);--fm-alert-icon:var(--fm-icon-inverse);--fm-alert-progress:var(--fm-bg-default);--fm-alert-pad-x:var(--fm-spacing-16);--fm-alert-pad-y:var(--fm-spacing-12);box-sizing:border-box;border-radius:var(--fm-radius-lg);background-color:var(--fm-alert-surface);color:var(--fm-alert-fg);box-shadow:var(--fm-shadow-sm);flex-direction:column;display:flex;overflow:hidden}@media (width>=768px){.fm-alert{--fm-alert-pad-x:var(--fm-spacing-24);--fm-alert-pad-y:var(--fm-spacing-16)}}.fm-alert__body{align-items:center;gap:var(--fm-spacing-12);padding:var(--fm-alert-pad-y) var(--fm-alert-pad-x);display:flex}.fm-alert__icon{--fm-icon-size:32px;width:32px;height:32px;color:var(--fm-alert-icon);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-alert__danger-mark{width:var(--fm-spacing-24);height:var(--fm-spacing-24);border-radius:var(--fm-radius-full);background-color:var(--fm-alert-icon);justify-content:center;align-items:center;display:inline-flex}.fm-alert__danger-bar{width:var(--fm-spacing-12);height:var(--fm-border-width-medium);border-radius:var(--fm-radius-full);background-color:var(--fm-icon-inverse)}.fm-alert__text{flex-direction:column;flex:auto;min-width:0;display:flex}.fm-alert__close{--fm-icon-size:var(--fm-spacing-20);width:var(--fm-spacing-40);height:var(--fm-spacing-40);border-radius:var(--fm-radius-sm);color:var(--fm-alert-fg);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-alert__progress{border-radius:var(--fm-radius-full);background-color:var(--fm-alert-progress);height:2px}.fm-alert__progress--animated{transform-origin:0;animation:fm-alert-drain var(--fm-alert-duration,3s) linear forwards}@keyframes fm-alert-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.fm-alert--info{--fm-alert-surface:var(--fm-bg-info);--fm-alert-fg:var(--fm-text-on-info);--fm-alert-icon:var(--fm-icon-on-info);--fm-alert-progress:var(--fm-icon-on-info)}.fm-alert--success{--fm-alert-surface:var(--fm-bg-success);--fm-alert-fg:var(--fm-text-on-success);--fm-alert-icon:var(--fm-icon-on-success);--fm-alert-progress:var(--fm-icon-on-success)}.fm-alert--warning{--fm-alert-surface:var(--fm-bg-warning);--fm-alert-fg:var(--fm-text-on-warning);--fm-alert-icon:var(--fm-icon-on-warning);--fm-alert-progress:var(--fm-icon-on-warning)}.fm-alert--danger{--fm-alert-surface:var(--fm-bg-error);--fm-alert-fg:var(--fm-text-on-error);--fm-alert-icon:var(--fm-icon-on-error);--fm-alert-progress:var(--fm-icon-on-error)}.fm-badge{--fm-badge-gap:var(--fm-spacing-2);justify-content:center;align-items:center;gap:var(--fm-badge-gap);box-sizing:border-box;border-radius:var(--fm-radius-xs);background-color:var(--fm-badge-surface);color:var(--fm-badge-fg);padding:var(--fm-badge-pad-y) var(--fm-badge-pad-x);-webkit-user-select:none;user-select:none;display:inline-flex}.fm-badge__label{text-overflow:ellipsis;white-space:nowrap;text-align:center;min-width:0;overflow:hidden}.fm-badge__icon{color:var(--fm-badge-icon,var(--fm-badge-fg));flex:none;display:inline-flex}.fm-badge--sm{--fm-badge-pad-x:var(--fm-spacing-4);--fm-badge-pad-y:var(--fm-spacing-2);--fm-badge-count-size:16px}.fm-badge--md{--fm-badge-pad-x:var(--fm-spacing-6);--fm-badge-pad-y:var(--fm-spacing-4);--fm-badge-count-size:24px}.fm-badge--lg{--fm-badge-pad-x:var(--fm-spacing-8);--fm-badge-pad-y:var(--fm-spacing-4);--fm-badge-count-size:32px}.fm-badge--filled{--fm-badge-surface:var(--fm-badge-bg)}.fm-badge--outlined{--fm-badge-surface:transparent;box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-badge-border)}.fm-badge--count{--fm-badge-surface:var(--fm-action-primary-bg-subtle);--fm-badge-fg:var(--fm-text-brand);width:var(--fm-badge-count-size);height:var(--fm-badge-count-size);border-radius:calc(var(--fm-badge-count-size) / 2);padding:0}.fm-badge__count{line-height:1}.fm-badge--count-overflow{width:auto;min-width:var(--fm-badge-count-size);padding:0 calc(var(--fm-badge-count-size) * .375)}.fm-badge--brand{--fm-badge-bg:var(--fm-badge-bg-brand);--fm-badge-fg:var(--fm-badge-text-on-brand);--fm-badge-icon:var(--fm-badge-icon-on-brand);--fm-badge-border:var(--fm-badge-border-brand)}.fm-badge--info{--fm-badge-bg:var(--fm-bg-info);--fm-badge-fg:var(--fm-text-on-info);--fm-badge-icon:var(--fm-text-on-info);--fm-badge-border:var(--fm-border-info)}.fm-badge--success{--fm-badge-bg:var(--fm-bg-success);--fm-badge-fg:var(--fm-text-on-success);--fm-badge-icon:var(--fm-text-on-success);--fm-badge-border:var(--fm-border-success)}.fm-badge--warning{--fm-badge-bg:var(--fm-bg-warning);--fm-badge-fg:var(--fm-text-on-warning);--fm-badge-icon:var(--fm-text-on-warning);--fm-badge-border:var(--fm-border-warning)}.fm-badge--error{--fm-badge-bg:var(--fm-bg-error);--fm-badge-fg:var(--fm-text-on-error);--fm-badge-icon:var(--fm-text-on-error);--fm-badge-border:var(--fm-border-error)}.fm-badge--aqua{--fm-badge-bg:var(--fm-badge-bg-aqua);--fm-badge-fg:var(--fm-badge-text-on-aqua);--fm-badge-icon:var(--fm-badge-icon-on-aqua);--fm-badge-border:var(--fm-badge-border-aqua)}.fm-badge--berry{--fm-badge-bg:var(--fm-badge-bg-berry);--fm-badge-fg:var(--fm-badge-text-on-berry);--fm-badge-icon:var(--fm-badge-icon-on-berry);--fm-badge-border:var(--fm-badge-border-berry)}.fm-badge--blossom{--fm-badge-bg:var(--fm-badge-bg-blossom);--fm-badge-fg:var(--fm-badge-text-on-blossom);--fm-badge-icon:var(--fm-badge-icon-on-blossom);--fm-badge-border:var(--fm-badge-border-blossom)}.fm-badge--lime{--fm-badge-bg:var(--fm-badge-bg-lime);--fm-badge-fg:var(--fm-badge-text-on-lime);--fm-badge-icon:var(--fm-badge-icon-on-lime);--fm-badge-border:var(--fm-badge-border-lime)}.fm-badge--mustard{--fm-badge-bg:var(--fm-badge-bg-mustard);--fm-badge-fg:var(--fm-badge-text-on-mustard);--fm-badge-icon:var(--fm-badge-icon-on-mustard);--fm-badge-border:var(--fm-badge-border-mustard)}.fm-badge--stone{--fm-badge-bg:var(--fm-badge-bg-stone);--fm-badge-fg:var(--fm-badge-text-on-stone);--fm-badge-icon:var(--fm-badge-icon-on-stone);--fm-badge-border:var(--fm-badge-border-stone)}.fm-badge--grape{--fm-badge-bg:var(--fm-badge-bg-grape);--fm-badge-fg:var(--fm-badge-text-on-grape);--fm-badge-icon:var(--fm-badge-icon-on-grape);--fm-badge-border:var(--fm-badge-border-grape)}.fm-badge-anchor{align-items:center;gap:var(--fm-spacing-8);-webkit-user-select:none;user-select:none;display:inline-flex;position:relative}.fm-badge--overlay{--fm-badge-surface:var(--fm-text-primary);--fm-badge-fg:var(--fm-text-inverse);border-radius:var(--fm-radius-full);padding:0}.fm-badge--overlay-pinned{position:absolute;top:-2px;right:-4px}.fm-badge--overlay:not(.fm-badge--dot){min-width:16px;height:16px;padding:0 var(--fm-spacing-4)}.fm-badge--dot{width:6px;min-width:0;height:6px;padding:0}.fm-badge--overlay-pinned.fm-badge--dot{top:0;right:0}.fm-badge--v1-info{--fm-badge-surface:var(--fm-feature-aqua-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-success{--fm-badge-surface:var(--fm-feature-lime-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-warning{--fm-badge-surface:var(--fm-feature-mustard-accent);--fm-badge-fg:var(--fm-text-primary)}.fm-badge--v1-critical{--fm-badge-surface:var(--fm-feature-berry-accent);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-neutral{--fm-badge-surface:var(--fm-text-primary);--fm-badge-fg:var(--fm-text-inverse)}.fm-badge--v1-numeric{--fm-badge-surface:var(--fm-text-error);--fm-badge-fg:var(--fm-text-inverse)}.fm-button{--fm-button-height:44px;--fm-button-padding-x:var(--fm-spacing-16);--fm-button-gap:var(--fm-spacing-8);--fm-button-icon-size:var(--fm-spacing-20);--fm-button-radius:var(--fm-radius-sm);--fm-button-border-width:var(--fm-border-width-none);--fm-button-border-color:transparent;--fm-button-bg:transparent;--fm-button-bg-hover:var(--fm-button-bg);--fm-button-bg-active:var(--fm-button-bg-hover);--fm-button-fg:var(--fm-text-primary);--fm-button-effects:0 0 #0000;--fm-button-effects-pressed:var(--fm-button-effects);--fm-button-glow:0 0 #0000;--fm-button-focus-ring:0 0 #0000;box-sizing:border-box;justify-content:center;align-items:center;gap:var(--fm-button-gap);height:var(--fm-button-height);padding:0 var(--fm-button-padding-x);border:var(--fm-button-border-width) solid var(--fm-button-border-color);border-radius:var(--fm-button-radius);background-color:var(--fm-button-bg);color:var(--fm-button-fg);box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects);font-family:var(--fm-font-family-body), sans-serif;font-size:var(--fm-font-size-14);font-weight:var(--fm-font-weight-semi-bold);line-height:var(--fm-line-height-14);letter-spacing:.01em;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;appearance:none;-webkit-tap-highlight-color:transparent;background-image:none;text-decoration:none;display:inline-flex}.fm-button:focus{outline:none}.fm-button--xs{--fm-button-height:32px}.fm-button--sm{--fm-button-height:40px}.fm-button--md{--fm-button-height:44px}.fm-button--lg{--fm-button-height:52px}@media (width>=768px){.fm-button--xs{--fm-button-height:28px}.fm-button--sm{--fm-button-height:36px}.fm-button--md{--fm-button-height:40px}.fm-button--lg{--fm-button-height:48px}.fm-button:not(.fm-button--xs){font-size:var(--fm-font-size-16);line-height:var(--fm-line-height-16);letter-spacing:.0025em}}@media (width>=1024px){.fm-button--xs{--fm-button-height:24px}.fm-button--sm{--fm-button-height:32px}.fm-button--md{--fm-button-height:36px}.fm-button--lg{--fm-button-height:44px}}.fm-button--primary{--fm-button-bg:var(--fm-action-primary-bg);--fm-button-bg-hover:var(--fm-action-primary-bg-hover);--fm-button-fg:var(--fm-text-inverse);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--secondary{--fm-button-bg:var(--fm-action-secondary-bg);--fm-button-bg-hover:var(--fm-action-secondary-bg-hover);--fm-button-fg:var(--fm-text-primary);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-effects-pressed:0 0 #0000;--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--danger{--fm-button-bg:var(--fm-action-danger-bg);--fm-button-bg-hover:var(--fm-action-danger-bg-hover);--fm-button-fg:var(--fm-text-inverse);--fm-button-effects:var(--fm-inner-shadow-brand);--fm-button-glow:var(--fm-outer-shadow-error)}.fm-button--ghost{--fm-button-bg:transparent;--fm-button-bg-hover:var(--fm-action-ghost-bg-hover);--fm-button-bg-active:var(--fm-action-ghost-bg-active);--fm-button-fg:var(--fm-text-primary);--fm-button-glow:var(--fm-outer-shadow-brand)}.fm-button--legacy-plain{--fm-button-fg:var(--fm-text-brand)}.fm-button--legacy-fab{--fm-button-height:var(--fm-spacing-56);--fm-button-radius:var(--fm-radius-full);min-width:var(--fm-spacing-56);padding:0 var(--fm-spacing-16)}.fm-button:enabled:hover{background-color:var(--fm-button-bg-hover)}.fm-button:enabled:focus-visible{background-color:var(--fm-button-bg-hover);box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects), var(--fm-button-glow)}.fm-button--secondary:enabled:focus-visible{--fm-button-focus-ring:inset 0 0 0 1px var(--fm-border-brand)}.fm-button:enabled:active{background-color:var(--fm-button-bg-active);background-image:linear-gradient(var(--fm-state-pressed), var(--fm-state-pressed));box-shadow:var(--fm-button-focus-ring), var(--fm-button-effects-pressed), var(--fm-button-glow)}.fm-button--ghost:enabled:active{background-image:none}.fm-button:disabled{--fm-button-bg:var(--fm-action-disabled-bg);--fm-button-fg:var(--fm-text-disabled);cursor:not-allowed}.fm-button--ghost:disabled{--fm-button-bg:transparent}.fm-button--loading{pointer-events:none}.fm-button__labels{display:contents}.fm-button__label,.fm-button__sub-label{overflow-wrap:anywhere;min-width:0}.fm-button__icon{width:var(--fm-button-icon-size);height:var(--fm-button-icon-size);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-button__icon>svg{width:100%;height:100%}.fm-button__icon--legacy{width:var(--fm-spacing-24);height:var(--fm-spacing-24)}@font-face{font-family:Material Symbols Outlined;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v232/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelbd5zrDAt.woff)format("woff");font-display:block}@font-face{font-family:Material Symbols Filled;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v232/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzazHD_dY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOelbd5zrDAt.woff)format("woff");font-display:block}.fm-button__legacy-icon{font-size:var(--fm-spacing-24);letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale;direction:ltr;font-style:normal;font-weight:400;line-height:1;display:inline-block}.fm-button__legacy-icon--outline{font-family:Material Symbols Outlined,sans-serif}.fm-button__legacy-icon--filled{font-family:Material Symbols Filled,sans-serif}.fm-button--icon-only{width:var(--fm-button-height);padding:0}.fm-button--layout-dotted,.fm-button--layout-spaced{width:100%}.fm-button--layout-dotted .fm-button__labels,.fm-button--layout-spaced .fm-button__labels{flex:auto;justify-content:space-between;align-items:center;min-width:0;display:flex}.fm-button__dot{background-color:#ffffff52;border-radius:50%;flex:none;width:4px;height:4px}.fm-button__spinner{--fm-button-spinner-size:18px;box-sizing:border-box;width:var(--fm-button-spinner-size);height:var(--fm-button-spinner-size);animation:fm-button-spin var(--fm-duration-slower,.6s) linear infinite;border:2px solid;border-top-color:#0000;border-radius:50%;flex:none}.fm-button--lg .fm-button__spinner{--fm-button-spinner-size:20px}.fm-button--md .fm-button__spinner{--fm-button-spinner-size:18px}.fm-button--sm .fm-button__spinner,.fm-button--xs .fm-button__spinner{--fm-button-spinner-size:16px}@keyframes fm-button-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.fm-button__spinner{animation-duration:2s}}.fm-checkbox{--fm-checkbox-size:24px;--fm-checkbox-surface:var(--fm-action-secondary-bg);--fm-checkbox-border:var(--fm-border-default);--fm-checkbox-glyph:var(--fm-icon-inverse);--fm-checkbox-glow:0 0 #0000;cursor:pointer;color:var(--fm-text-primary);align-items:center;gap:12px;display:inline-flex}.fm-checkbox--disabled{cursor:not-allowed}.fm-checkbox__box{box-sizing:border-box;width:var(--fm-checkbox-size);height:var(--fm-checkbox-size);border-radius:var(--fm-radius-sm);background-color:var(--fm-checkbox-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-shadow-xs);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.fm-checkbox__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-checkbox__glyph{--fm-icon-size:calc(var(--fm-checkbox-size) * 5 / 6);color:var(--fm-checkbox-glyph);pointer-events:none;position:relative}.fm-checkbox__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-checkbox__sublabel{color:var(--fm-text-secondary)}.fm-checkbox--sm{--fm-checkbox-size:24px}.fm-checkbox--md{--fm-checkbox-size:28px}.fm-checkbox--lg{--fm-checkbox-size:32px}@media (width>=1024px){.fm-checkbox--sm{--fm-checkbox-size:20px}.fm-checkbox--md{--fm-checkbox-size:24px}.fm-checkbox--lg{--fm-checkbox-size:28px}}.fm-checkbox:hover:not(.fm-checkbox--disabled):not(.fm-checkbox--selected){--fm-checkbox-border:var(--fm-border-medium)}.fm-checkbox--pressed:not(.fm-checkbox--disabled):not(.fm-checkbox--selected){--fm-checkbox-border:var(--fm-border-strong)}.fm-checkbox--error:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-border:var(--fm-border-error);--fm-checkbox-glyph:var(--fm-icon-error)}.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--selected):not(.fm-checkbox--disabled){--fm-checkbox-glow:var(--fm-outer-shadow-error)}.fm-checkbox--selected:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-primary-bg);--fm-checkbox-border:transparent;--fm-checkbox-glyph:var(--fm-icon-inverse)}.fm-checkbox--selected.fm-checkbox--pressed:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-primary-bg-hover)}.fm-checkbox--selected.fm-checkbox--error:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-glyph:var(--fm-icon-error)}.fm-checkbox--selected.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-hover);--fm-checkbox-glyph:var(--fm-icon-inverse)}.fm-checkbox:has(.fm-checkbox__input:focus-visible):not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-secondary-bg);--fm-checkbox-border:var(--fm-border-brand);--fm-checkbox-glyph:var(--fm-action-primary-bg);--fm-checkbox-glow:var(--fm-outer-shadow-brand)}.fm-checkbox--error:has(.fm-checkbox__input:focus-visible):not(.fm-checkbox--disabled){--fm-checkbox-surface:var(--fm-action-danger-bg-subtle);--fm-checkbox-border:var(--fm-border-error);--fm-checkbox-glyph:var(--fm-icon-error);--fm-checkbox-glow:var(--fm-outer-shadow-error)}.fm-checkbox--disabled{--fm-checkbox-surface:var(--fm-action-disabled-bg);--fm-checkbox-border:var(--fm-border-default);--fm-checkbox-glyph:var(--fm-icon-disabled)}.fm-checkbox--error.fm-checkbox--pressed:not(.fm-checkbox--selected) .fm-checkbox__box{box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-checkbox-glow)}.fm-checkbox:has(.fm-checkbox__input:focus-visible) .fm-checkbox__box{box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-checkbox-border), var(--fm-checkbox-glow)}.fm-chip{--fm-chip-height:36px;--fm-chip-surface:var(--fm-surface-default);--fm-chip-overlay:transparent;--fm-chip-border:var(--fm-border-default);--fm-chip-border-width:var(--fm-border-width-thin);--fm-chip-fg:var(--fm-text-primary);--fm-chip-icon:var(--fm-icon-primary);--fm-chip-accent:var(--fm-icon-brand);--fm-chip-glow:0 0 #0000;justify-content:center;align-items:center;gap:var(--fm-spacing-4);box-sizing:border-box;height:var(--fm-chip-height);padding:0 var(--fm-spacing-12);border-radius:var(--fm-radius-sm);background-color:var(--fm-chip-surface);background-image:linear-gradient(var(--fm-chip-overlay), var(--fm-chip-overlay));color:var(--fm-chip-fg);cursor:pointer;box-shadow:inset 0 0 0 var(--fm-chip-border-width) var(--fm-chip-border), var(--fm-shadow-xs);border:none;display:inline-flex}.fm-chip:disabled{cursor:not-allowed}.fm-chip__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.fm-chip__icon{--fm-icon-size:var(--fm-spacing-20);color:var(--fm-chip-icon);flex:none;display:inline-flex}.fm-chip__indicator-slot{width:var(--fm-spacing-20);height:var(--fm-spacing-20);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-chip__indicator{width:var(--fm-spacing-12);height:var(--fm-spacing-12);border-radius:var(--fm-radius-full);background-color:var(--fm-chip-accent)}.fm-chip__count{box-sizing:border-box;min-width:var(--fm-spacing-20);height:var(--fm-spacing-20);padding:0 var(--fm-spacing-4);border-radius:var(--fm-radius-full);background-color:var(--fm-chip-accent);color:var(--fm-text-inverse);flex:none;justify-content:center;align-items:center;display:inline-flex}.fm-chip__remove{--fm-icon-size:var(--fm-spacing-16);color:var(--fm-chip-icon);cursor:pointer;flex:none;display:inline-flex}.fm-chip:hover:not(:disabled){--fm-chip-overlay:var(--fm-state-hover)}.fm-chip--pressed:not(:disabled){--fm-chip-overlay:var(--fm-state-pressed)}.fm-chip:hover:not(:disabled):not(.fm-chip--selected),.fm-chip--pressed:not(:disabled):not(.fm-chip--selected){--fm-chip-border:var(--fm-border-medium)}.fm-chip--selected:not(:disabled){--fm-chip-border:var(--fm-border-brand);--fm-chip-border-width:var(--fm-border-width-regular)}.fm-chip:disabled{--fm-chip-surface:var(--fm-surface-sunken);--fm-chip-overlay:transparent;--fm-chip-border:var(--fm-border-medium);--fm-chip-fg:var(--fm-text-disabled);--fm-chip-icon:var(--fm-icon-disabled);--fm-chip-accent:var(--fm-border-medium)}.fm-chip:focus-visible{--fm-chip-border:var(--fm-border-brand);--fm-chip-border-width:var(--fm-border-width-regular);--fm-chip-glow:var(--fm-outer-shadow-brand);box-shadow:inset 0 0 0 var(--fm-chip-border-width) var(--fm-chip-border), var(--fm-chip-glow);outline:none}.fm-chip--compact{--fm-chip-height:22px;padding:0 var(--fm-spacing-8)}.fm-chip--v1-plain{--fm-chip-surface:var(--fm-bg-subtle);--fm-chip-border:transparent}.fm-chip--v1-plain.fm-chip--v1-selected{--fm-chip-surface:var(--fm-text-primary);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse)}.fm-chip--v1-neutral{--fm-chip-surface:var(--fm-text-primary);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-info{--fm-chip-surface:var(--fm-feature-aqua-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-success{--fm-chip-surface:var(--fm-feature-lime-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-critical{--fm-chip-surface:var(--fm-feature-berry-accent);--fm-chip-fg:var(--fm-text-inverse);--fm-chip-icon:var(--fm-text-inverse);--fm-chip-border:transparent}.fm-chip--v1-warning{--fm-chip-surface:var(--fm-feature-mustard-accent);--fm-chip-fg:var(--fm-text-primary);--fm-chip-icon:var(--fm-text-primary);--fm-chip-border:transparent}.fm-radio{--fm-radio-size:24px;--fm-radio-ring-width:var(--fm-border-width-thin);--fm-radio-surface:var(--fm-action-secondary-bg);--fm-radio-ring:var(--fm-border-default);--fm-radio-dot:var(--fm-action-primary-bg);--fm-radio-glow:0 0 #0000;align-items:center;gap:var(--fm-spacing-16);cursor:pointer;color:var(--fm-text-primary);display:inline-flex}.fm-radio--disabled{cursor:not-allowed}.fm-radio__circle{box-sizing:border-box;width:var(--fm-radio-size);height:var(--fm-radio-size);border-radius:var(--fm-radius-full);background-color:var(--fm-radio-surface);box-shadow:inset 0 0 0 var(--fm-radio-ring-width) var(--fm-radio-ring), var(--fm-shadow-xs);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.fm-radio__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-radio__dot{width:calc(var(--fm-radio-size) * 10 / 24);height:calc(var(--fm-radio-size) * 10 / 24);border-radius:var(--fm-radius-full);background-color:var(--fm-radio-dot);pointer-events:none}.fm-radio__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-radio__sublabel{color:var(--fm-text-secondary)}.fm-radio--sm{--fm-radio-size:24px;--fm-radio-selected-ring:1px}.fm-radio--md{--fm-radio-size:28px;--fm-radio-selected-ring:1.5px}.fm-radio--lg{--fm-radio-size:32px;--fm-radio-selected-ring:2.5px}@media (width>=1024px){.fm-radio--sm{--fm-radio-size:20px;--fm-radio-selected-ring:1px}.fm-radio--md{--fm-radio-size:24px;--fm-radio-selected-ring:1px}.fm-radio--lg{--fm-radio-size:28px;--fm-radio-selected-ring:1.5px}}.fm-radio--selected:not(.fm-radio--disabled){--fm-radio-ring:var(--fm-border-brand);--fm-radio-ring-width:var(--fm-radio-selected-ring)}.fm-radio:hover:not(.fm-radio--disabled):not(.fm-radio--selected){--fm-radio-ring:var(--fm-border-medium)}.fm-radio--pressed:not(.fm-radio--disabled):not(.fm-radio--selected){--fm-radio-ring:var(--fm-border-strong)}.fm-radio--selected.fm-radio--pressed:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-primary-bg-hover);--fm-radio-ring:transparent;--fm-radio-dot:#fff9}.fm-radio--error:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-subtle);--fm-radio-ring:var(--fm-border-error);--fm-radio-dot:var(--fm-border-error)}.fm-radio--error.fm-radio--selected.fm-radio--pressed:not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-hover);--fm-radio-ring:transparent;--fm-radio-dot:#fff9}.fm-radio:has(.fm-radio__input:focus-visible):not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-secondary-bg);--fm-radio-ring:var(--fm-border-brand);--fm-radio-glow:var(--fm-outer-shadow-brand)}.fm-radio--error:has(.fm-radio__input:focus-visible):not(.fm-radio--disabled){--fm-radio-surface:var(--fm-action-danger-bg-subtle);--fm-radio-ring:var(--fm-border-error);--fm-radio-glow:var(--fm-outer-shadow-error)}.fm-radio--disabled{--fm-radio-surface:var(--fm-action-disabled-bg);--fm-radio-ring:transparent;--fm-radio-dot:var(--fm-icon-disabled)}.fm-radio:has(.fm-radio__input:focus-visible) .fm-radio__circle{box-shadow:inset 0 0 0 var(--fm-radio-ring-width) var(--fm-radio-ring), var(--fm-radio-glow)}.fm-radio-group{gap:var(--fm-spacing-8);flex-direction:column;display:flex}.fm-radio-group__label{color:var(--fm-text-primary)}.fm-radio-group__items{gap:var(--fm-spacing-8);flex-direction:column;display:flex}.fm-radio-group--inline>.fm-radio-group__items{align-items:center;gap:var(--fm-spacing-16);flex-direction:row}.fm-search-bar{--fm-search-height:44px;--fm-search-surface:var(--fm-surface-raised);--fm-search-border:var(--fm-border-default);--fm-search-fg:var(--fm-text-primary);--fm-search-placeholder:var(--fm-text-muted);--fm-search-icon:var(--fm-icon-primary);--fm-search-glow:0 0 #0000;--fm-search-shadow:var(--fm-shadow-text-sm);align-items:center;gap:var(--fm-spacing-12);box-sizing:border-box;width:100%;height:var(--fm-search-height);padding:0 var(--fm-spacing-8);border-radius:var(--fm-radius-md);background-color:var(--fm-search-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-search-border), var(--fm-search-shadow), var(--fm-search-glow);display:flex}.fm-search-bar__leading{--fm-icon-size:var(--fm-spacing-16);color:var(--fm-search-icon);flex:none;align-items:center;display:inline-flex}.fm-search-bar__control{min-width:0;height:20px;color:var(--fm-search-fg);appearance:none;background:0 0;border:none;outline:none;flex:auto;margin:0;padding:0}.fm-search-bar__control::placeholder{color:var(--fm-search-placeholder);opacity:1}.fm-search-bar__control::-webkit-search-cancel-button{appearance:none;display:none}.fm-search-bar__control::-webkit-search-decoration{appearance:none;display:none}.fm-search-bar__clear{--fm-icon-size:var(--fm-spacing-20);width:var(--fm-spacing-20);height:var(--fm-spacing-20);color:var(--fm-icon-muted);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.fm-search-bar--sm{--fm-search-height:40px}.fm-search-bar--md{--fm-search-height:44px}.fm-search-bar--lg{--fm-search-height:52px}@media (width>=768px){.fm-search-bar--sm{--fm-search-height:36px}.fm-search-bar--md{--fm-search-height:40px}.fm-search-bar--lg{--fm-search-height:48px}}@media (width>=1024px){.fm-search-bar--sm{--fm-search-height:32px}.fm-search-bar--md{--fm-search-height:36px}.fm-search-bar--lg{--fm-search-height:44px}}.fm-search-bar:not(.fm-search-bar--disabled):hover{--fm-search-border:var(--fm-border-medium)}.fm-search-bar:not(.fm-search-bar--disabled):focus-within{--fm-search-border:var(--fm-border-brand);--fm-search-shadow:0 0 #0000;--fm-search-glow:var(--fm-outer-shadow-brand)}.fm-search-bar--error,.fm-search-bar--error:hover,.fm-search-bar--error:focus-within{--fm-search-border:var(--fm-border-error);--fm-search-fg:var(--fm-text-error);--fm-search-placeholder:var(--fm-text-error);--fm-search-icon:var(--fm-icon-error);--fm-search-shadow:0 0 #0000;--fm-search-glow:var(--fm-outer-shadow-error)}.fm-search-bar--disabled{--fm-search-surface:var(--fm-surface-sunken);--fm-search-border:var(--fm-border-default);--fm-search-fg:var(--fm-text-disabled);--fm-search-placeholder:var(--fm-text-disabled);--fm-search-icon:var(--fm-icon-disabled);--fm-search-shadow:0 0 #0000}.fm-search-bar--disabled .fm-search-bar__control{cursor:not-allowed}.fm-switch{--fm-switch-track-w:52px;--fm-switch-track-h:28px;--fm-switch-inset:2px;--fm-switch-thumb:calc(var(--fm-switch-track-h) - var(--fm-switch-inset) * 2);--fm-switch-travel:calc(var(--fm-switch-track-w) - var(--fm-switch-thumb) - var(--fm-switch-inset) * 2);--fm-switch-surface:var(--fm-action-disabled-bg);--fm-switch-thumb-color:var(--fm-border-medium);--fm-switch-icon:var(--fm-action-disabled-fg);--fm-switch-glow:0 0 #0000;align-items:center;gap:var(--fm-spacing-8);cursor:pointer;color:var(--fm-text-primary);display:inline-flex}.fm-switch--label-right{flex-direction:row-reverse}.fm-switch--disabled{cursor:not-allowed;opacity:.32}.fm-switch__track{box-sizing:border-box;width:var(--fm-switch-track-w);height:var(--fm-switch-track-h);border-radius:var(--fm-radius-full);background-color:var(--fm-switch-surface);box-shadow:var(--fm-shadow-sm);flex:none;display:inline-block;position:relative}.fm-switch__input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.fm-switch__thumb{top:var(--fm-switch-inset);left:var(--fm-switch-inset);width:var(--fm-switch-thumb);height:var(--fm-switch-thumb);border-radius:var(--fm-radius-full);background-color:var(--fm-switch-thumb-color);box-shadow:var(--fm-shadow-sm);transition:transform var(--fm-duration-fast,.15s) ease-in-out;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}.fm-switch__thumb-icon{--fm-icon-size:max(8px, calc(var(--fm-switch-thumb) - 8px));color:var(--fm-switch-icon)}.fm-switch__labels{gap:var(--fm-spacing-4);flex-direction:column;min-width:0;display:inline-flex}.fm-switch__sublabel{color:var(--fm-text-secondary)}.fm-switch--sm{--fm-switch-track-w:40px;--fm-switch-track-h:22px}.fm-switch--md{--fm-switch-track-w:52px;--fm-switch-track-h:28px}.fm-switch--lg{--fm-switch-track-w:60px;--fm-switch-track-h:32px}@media (width>=768px){.fm-switch--sm{--fm-switch-track-w:44px;--fm-switch-track-h:24px}}@media (width>=1024px){.fm-switch--sm{--fm-switch-track-w:32px;--fm-switch-track-h:18px}.fm-switch--md{--fm-switch-track-w:44px;--fm-switch-track-h:24px}.fm-switch--lg{--fm-switch-track-w:52px;--fm-switch-track-h:28px}}.fm-switch--on{--fm-switch-surface:var(--fm-action-primary-bg);--fm-switch-thumb-color:var(--fm-surface-raised);--fm-switch-icon:var(--fm-action-primary-bg)}.fm-switch--on .fm-switch__thumb{transform:translateX(var(--fm-switch-travel))}.fm-switch--on.fm-switch--pressed{--fm-switch-surface:var(--fm-action-primary-bg-hover)}.fm-switch--pressed:not(.fm-switch--on){--fm-switch-surface:var(--fm-action-disabled-fg)}.fm-switch:not(.fm-switch--on):has(.fm-switch__thumb-icon){--fm-switch-thumb-color:var(--fm-surface-raised)}.fm-switch:has(.fm-switch__input:focus-visible):not(.fm-switch--disabled){--fm-switch-glow:var(--fm-outer-shadow-brand)}.fm-switch:has(.fm-switch__input:focus-visible) .fm-switch__track{box-shadow:var(--fm-switch-glow)}.fm-field{--fm-field-pad-x:var(--fm-spacing-8);--fm-field-pad-y:var(--fm-spacing-12);--fm-field-radius:var(--fm-radius-md);--fm-field-surface:var(--fm-surface-raised);--fm-field-border:var(--fm-border-default);--fm-field-fg:var(--fm-text-primary);--fm-field-placeholder:var(--fm-text-muted);--fm-field-affix:var(--fm-icon-secondary);--fm-field-label:var(--fm-text-primary);--fm-field-helper:var(--fm-text-secondary);--fm-field-glow:0 0 #0000;--fm-field-shadow:var(--fm-shadow-xs);gap:var(--fm-spacing-4);flex-direction:column;width:100%;display:flex}.fm-field__label{align-items:baseline;gap:var(--fm-spacing-4);color:var(--fm-field-label);display:flex}.fm-field__mark{color:var(--fm-text-error)}.fm-field__box{align-items:center;gap:var(--fm-spacing-4);box-sizing:border-box;width:100%;padding:var(--fm-field-pad-y) var(--fm-field-pad-x);border-radius:var(--fm-field-radius);background-color:var(--fm-field-surface);box-shadow:inset 0 0 0 var(--fm-border-width-thin) var(--fm-field-border), var(--fm-field-shadow), var(--fm-field-glow);display:flex}.fm-field__control{min-width:0;height:20px;color:var(--fm-field-fg);background:0 0;border:none;outline:none;flex:auto;margin:0;padding:0}.fm-field__control::placeholder{color:var(--fm-field-placeholder);opacity:1}.fm-field__affix{--fm-icon-size:var(--fm-spacing-20);color:var(--fm-field-affix);flex:none;align-items:center;display:inline-flex}.fm-field__footer{justify-content:space-between;gap:var(--fm-spacing-8);color:var(--fm-field-helper);display:flex}.fm-field__counter{margin-left:auto}.fm-field--single.fm-field--sm{--fm-field-pad-y:var(--fm-spacing-10)}.fm-field--single.fm-field--md{--fm-field-pad-y:var(--fm-spacing-12)}.fm-field--single.fm-field--lg{--fm-field-pad-y:var(--fm-spacing-16);--fm-field-radius:var(--fm-radius-lg)}.fm-field--multiline{--fm-field-pad-x:var(--fm-spacing-8);--fm-field-pad-y:var(--fm-spacing-8);--fm-field-radius:var(--fm-radius-md);--fm-field-height:128px}.fm-field--multiline>.fm-field__box{height:var(--fm-field-height);align-items:stretch}.fm-field--multiline .fm-field__control{resize:none;height:100%}.fm-field--multiline .fm-field__box{align-items:stretch}.fm-field--multiline.fm-field--sm{--fm-field-height:96px}.fm-field--multiline.fm-field--md{--fm-field-height:128px}.fm-field--multiline.fm-field--lg{--fm-field-height:160px}@media (width>=768px){.fm-field--multiline.fm-field--sm{--fm-field-height:128px}.fm-field--multiline.fm-field--md{--fm-field-height:160px}.fm-field--multiline.fm-field--lg{--fm-field-height:192px}}@media (width>=1024px){.fm-field--multiline.fm-field--sm{--fm-field-height:164px}.fm-field--multiline.fm-field--md{--fm-field-height:196px}.fm-field--multiline.fm-field--lg{--fm-field-height:228px}}.fm-field:not(.fm-field--disabled)>.fm-field__box:hover{--fm-field-border:var(--fm-border-medium)}.fm-field:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-brand);--fm-field-shadow:0 0 #0000;--fm-field-glow:var(--fm-outer-shadow-brand)}.fm-field--error:not(.fm-field--disabled){--fm-field-fg:var(--fm-text-error);--fm-field-placeholder:var(--fm-text-error);--fm-field-affix:var(--fm-text-error);--fm-field-label:var(--fm-text-error);--fm-field-helper:var(--fm-text-error)}.fm-field--error:not(.fm-field--disabled)>.fm-field__box,.fm-field--error:not(.fm-field--disabled)>.fm-field__box:hover,.fm-field--error:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-error);--fm-field-shadow:0 0 #0000;--fm-field-glow:var(--fm-outer-shadow-error)}.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box,.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box:hover,.fm-field--multiline.fm-field--error:not(.fm-field--disabled)>.fm-field__box:focus-within{--fm-field-border:var(--fm-border-warning)}.fm-field--disabled{--fm-field-surface:var(--fm-surface-sunken);--fm-field-border:var(--fm-border-default);--fm-field-fg:var(--fm-text-disabled);--fm-field-placeholder:var(--fm-text-disabled);--fm-field-affix:var(--fm-icon-disabled);--fm-field-label:var(--fm-text-disabled);--fm-field-helper:var(--fm-text-disabled)}.fm-field--disabled .fm-field__control{cursor:not-allowed}
1821
1821
  /*$vite$:1*/`;
1822
- function pi(n) {
1823
- const e = n.replace(/^\//, "");
1822
+ function pi(a) {
1823
+ const e = a.replace(/^\//, "");
1824
1824
  try {
1825
1825
  const t = new URL(import.meta.url);
1826
1826
  if (typeof location < "u" && location.hostname !== t.hostname)
@@ -1832,61 +1832,66 @@ function pi(n) {
1832
1832
  const un = {
1833
1833
  "chart.js@4": "chart.js-4.js",
1834
1834
  "fm-ui@1": "fm-ui-1.js",
1835
- "components@1": "components-1.js"
1836
- }, Tt = /* @__PURE__ */ new Map();
1837
- function hi(n) {
1838
- return pi(`report-canvas-libs/${un[n]}`);
1835
+ "components@1": "components-1.js",
1836
+ "chartjs-chart-geo@4": "chartjs-chart-geo-4.js",
1837
+ "geo-outlines@1": "geo-outlines-1.js",
1838
+ "chartjs-chart-sankey@0": "chartjs-chart-sankey-0.js"
1839
+ }, hi = Object.keys(un), Tt = /* @__PURE__ */ new Map();
1840
+ function bi(a) {
1841
+ return pi(`report-canvas-libs/${un[a]}`);
1839
1842
  }
1840
- async function nn(n) {
1841
- const e = [...new Set(n)].filter((r) => un[r]), t = {};
1842
- return await Promise.all(
1843
+ async function nn(a) {
1844
+ const e = hi.filter((r) => a.includes(r));
1845
+ await Promise.all(
1843
1846
  e.map(async (r) => {
1844
- if (!Tt.has(r)) {
1845
- const f = await fetch(hi(r));
1846
- if (!f.ok) return;
1847
- Tt.set(r, await f.text());
1848
- }
1849
- const a = Tt.get(r);
1850
- a && (t[r] = a);
1847
+ if (Tt.has(r)) return;
1848
+ const n = await fetch(bi(r));
1849
+ n.ok && Tt.set(r, await n.text());
1851
1850
  })
1852
- ), t;
1851
+ );
1852
+ const t = {};
1853
+ for (const r of e) {
1854
+ const n = Tt.get(r);
1855
+ n && (t[r] = n);
1856
+ }
1857
+ return t;
1853
1858
  }
1854
- const pn = /url\(\s*(['"]?)\s*([^)'"]*?)\s*\1\s*\)/gi, bi = /@font-face\s*\{[^}]*\}/gi;
1855
- function hn(n) {
1856
- return /^(data:|blob:|#)/i.test(n);
1859
+ const pn = /url\(\s*(['"]?)\s*([^)'"]*?)\s*\1\s*\)/gi, gi = /@font-face\s*\{[^}]*\}/gi;
1860
+ function hn(a) {
1861
+ return /^(data:|blob:|#)/i.test(a);
1857
1862
  }
1858
- function gi(n) {
1859
- for (const e of n.matchAll(pn))
1863
+ function vi(a) {
1864
+ for (const e of a.matchAll(pn))
1860
1865
  if (!hn(e[2])) return !0;
1861
1866
  return !1;
1862
1867
  }
1863
- function vi(n) {
1868
+ function yi(a) {
1864
1869
  var t;
1865
- return `@font-face ${((t = /font-family\s*:\s*([^;}]+)/i.exec(n)) == null ? void 0 : t[1].trim()) || "(unnamed)"}`;
1870
+ return `@font-face ${((t = /font-family\s*:\s*([^;}]+)/i.exec(a)) == null ? void 0 : t[1].trim()) || "(unnamed)"}`;
1866
1871
  }
1867
- function yi(n) {
1872
+ function xi(a) {
1868
1873
  const e = [];
1869
- let t = n.replace(bi, (r) => gi(r) ? (e.push(vi(r)), "") : r);
1870
- return t = t.replace(pn, (r, a, f) => hn(f) ? r : (e.push(`url(${f})`), "url(about:invalid)")), { css: t, stripped: e };
1874
+ let t = a.replace(gi, (r) => vi(r) ? (e.push(yi(r)), "") : r);
1875
+ return t = t.replace(pn, (r, n, f) => hn(f) ? r : (e.push(`url(${f})`), "url(about:invalid)")), { css: t, stripped: e };
1871
1876
  }
1872
- const Ot = "/* __FM_UI_LIBRARY_V2_STYLES__ */", xi = [
1877
+ const Ot = "/* __FM_UI_LIBRARY_V2_STYLES__ */", wi = [
1873
1878
  "--fm-text-primary",
1874
1879
  "--fm-bg-default",
1875
1880
  "--fm-border-default",
1876
1881
  "--fm-action-primary-bg"
1877
1882
  ];
1878
- function wi(n, e) {
1879
- if (!n.includes(Ot))
1883
+ function ki(a, e) {
1884
+ if (!a.includes(Ot))
1880
1885
  throw new Error("report canvas frame is missing the UI library style placeholder");
1881
- const { css: t, stripped: r } = yi(e), a = xi.filter((u) => !t.includes(u));
1882
- if (a.length)
1883
- throw new Error(`the UI library stylesheet defines none of ${a.join(", ")}`);
1884
- const f = n.replace(Ot, () => t);
1886
+ const { css: t, stripped: r } = xi(e), n = wi.filter((u) => !t.includes(u));
1887
+ if (n.length)
1888
+ throw new Error(`the UI library stylesheet defines none of ${n.join(", ")}`);
1889
+ const f = a.replace(Ot, () => t);
1885
1890
  if (f.includes(Ot))
1886
1891
  throw new Error("the frame declares the UI library style placeholder more than once");
1887
1892
  return { html: f, stripped: r };
1888
1893
  }
1889
- const ki = `<meta charset="utf-8" />
1894
+ const _i = `<meta charset="utf-8" />
1890
1895
  <meta name="viewport" content="width=device-width, initial-scale=1" />
1891
1896
  <!--
1892
1897
  Runtime shell for AI-written report sections. Loaded into ONE iframe per report with
@@ -2465,6 +2470,83 @@ const ki = `<meta charset="utf-8" />
2465
2470
  height: 320px;
2466
2471
  }
2467
2472
 
2473
+ /* A map with a figure lists its places beside it, below it on a phone. */
2474
+ .fmr-map {
2475
+ display: flex;
2476
+ flex-wrap: wrap;
2477
+ align-items: flex-start;
2478
+ gap: 16px 32px;
2479
+ }
2480
+ .fmr-map > .fmr-chart {
2481
+ flex: 2 1 320px;
2482
+ min-width: 0;
2483
+ }
2484
+ .fmr-places {
2485
+ flex: 1 1 240px;
2486
+ margin: 0;
2487
+ padding: 0;
2488
+ list-style: none;
2489
+ min-width: 0;
2490
+ }
2491
+ .fmr-place {
2492
+ display: flex;
2493
+ align-items: center;
2494
+ gap: 10px;
2495
+ padding: 8px 4px;
2496
+ border-bottom: var(--fm-border-width-thin) solid var(--fm-border-default);
2497
+ font-size: 14px;
2498
+ line-height: 20px;
2499
+ letter-spacing: 0.01em;
2500
+ color: var(--fm-text-primary);
2501
+ }
2502
+ .fmr-place:last-child {
2503
+ border-bottom: 0;
2504
+ }
2505
+ .fmr-place:hover {
2506
+ background: var(--fm-bg-subtle);
2507
+ }
2508
+ .fmr-place-link {
2509
+ cursor: pointer;
2510
+ }
2511
+ .fmr-place-link:focus-visible {
2512
+ outline: var(--fm-border-width-medium) solid var(--fm-border-brand);
2513
+ outline-offset: -2px;
2514
+ }
2515
+ /* the dot is the map's own, so the list is also the key to its sizes */
2516
+ .fmr-place-dot {
2517
+ flex: none;
2518
+ border-radius: 50%;
2519
+ background: var(--fm-feature-grape-fg);
2520
+ }
2521
+ .fmr-place-shade {
2522
+ flex: none;
2523
+ width: 12px;
2524
+ height: 12px;
2525
+ border-radius: 2px;
2526
+ }
2527
+ /* a fixed lane for the marks, so the names line up whatever the dot's size */
2528
+ .fmr-place-dot,
2529
+ .fmr-place-shade {
2530
+ margin: 0 calc((36px - var(--mark, 12px)) / 2);
2531
+ }
2532
+ .fmr-place-name {
2533
+ flex: 1;
2534
+ min-width: 0;
2535
+ overflow: hidden;
2536
+ text-overflow: ellipsis;
2537
+ white-space: nowrap;
2538
+ }
2539
+ .fmr-place-value {
2540
+ flex: none;
2541
+ font-variant-numeric: tabular-nums;
2542
+ }
2543
+ .fmr-place-more {
2544
+ color: var(--fm-text-muted);
2545
+ }
2546
+ .fmr-place-more:hover {
2547
+ background: none;
2548
+ }
2549
+
2468
2550
  /* The two states the shell does not paint. */
2469
2551
  .fmr-note {
2470
2552
  margin: 0 20px 16px;
@@ -3254,6 +3336,9 @@ const ki = `<meta charset="utf-8" />
3254
3336
  section.showWhen || section.hideWhen
3255
3337
  ? { show: section.showWhen || null, hide: section.hideWhen || null }
3256
3338
  : null
3339
+ // a component's charts are the house's own drawing, so the chart checks read only code
3340
+ if (section.kind === "component") el.dataset.component = String(section.component || "")
3341
+ else delete el.dataset.component
3257
3342
  mounting = section.id
3258
3343
  delete undelivered[section.id]
3259
3344
  try {
@@ -3548,6 +3633,8 @@ const ki = `<meta charset="utf-8" />
3548
3633
  stylesheets at first audit — nothing here restates a token. */
3549
3634
 
3550
3635
  var HOUSE_CHART_TYPES = { bar: 1, line: 1, doughnut: 1 }
3636
+ // a ring's slices are unrelated categories, one family accent each (chart-design)
3637
+ var CATEGORICAL_CHART_TYPES = { doughnut: 1 }
3551
3638
  var TYPE_PROPS = ["font-size", "font-weight"]
3552
3639
  var SPACE_PROPS = [
3553
3640
  "padding-top", "padding-right", "padding-bottom", "padding-left",
@@ -3756,6 +3843,7 @@ const ki = `<meta charset="utf-8" />
3756
3843
  }
3757
3844
 
3758
3845
  function chartWarnings(root, add) {
3846
+ if (root.dataset.component) return
3759
3847
  var scale = designScales()
3760
3848
  var canvases = root.querySelectorAll("canvas")
3761
3849
  Array.prototype.forEach.call(canvases, function (canvas) {
@@ -3796,7 +3884,7 @@ const ki = `<meta charset="utf-8" />
3796
3884
  ", which are not design tokens; take marks from one --fm-feature-* family"
3797
3885
  )
3798
3886
  }
3799
- if (families.length > 1) {
3887
+ if (families.length > 1 && !CATEGORICAL_CHART_TYPES[type]) {
3800
3888
  add(
3801
3889
  "chart-family:" + where,
3802
3890
  "chart: " + where + " mixes the " + families.join(" and ") +
@@ -4393,11 +4481,11 @@ const ki = `<meta charset="utf-8" />
4393
4481
  post({ type: "ready", nonce: NONCE })
4394
4482
  })()
4395
4483
  <\/script>
4396
- `, _i = wi(ki, ui).html, an = 8e3;
4397
- function Si(n) {
4398
- const e = n;
4484
+ `, Si = ki(_i, ui).html, an = 8e3;
4485
+ function Ii(a) {
4486
+ const e = a;
4399
4487
  if (!e || typeof e != "object") return;
4400
- const t = (a) => Number.isSafeInteger(a) && a >= 0 && a <= 1e4;
4488
+ const t = (n) => Number.isSafeInteger(n) && n >= 0 && n <= 1e4;
4401
4489
  if (!t(e.datasetIndex) || !t(e.index)) return;
4402
4490
  const r = e.value;
4403
4491
  return {
@@ -4408,10 +4496,10 @@ function Si(n) {
4408
4496
  ...r === null || typeof r == "number" && Number.isFinite(r) ? { value: r } : typeof r == "string" ? { value: r.slice(0, 64) } : {}
4409
4497
  };
4410
4498
  }
4411
- function rn(n) {
4412
- const e = n;
4499
+ function rn(a) {
4500
+ const e = a;
4413
4501
  if (!e || typeof e != "object" || typeof e.tag != "string") return;
4414
- const t = Array.isArray(e.path) ? e.path.filter((a) => Number.isSafeInteger(a) && a >= 0).slice(0, 32) : [], r = Si(e.datum);
4502
+ const t = Array.isArray(e.path) ? e.path.filter((n) => Number.isSafeInteger(n) && n >= 0).slice(0, 32) : [], r = Ii(e.datum);
4415
4503
  return {
4416
4504
  tag: e.tag.slice(0, 32),
4417
4505
  ...typeof e.part == "string" ? { part: e.part.slice(0, 128) } : {},
@@ -4421,15 +4509,15 @@ function rn(n) {
4421
4509
  ...r ? { datum: r } : {}
4422
4510
  };
4423
4511
  }
4424
- function Ii(n, e) {
4512
+ function Ai(a, e) {
4425
4513
  const t = _(!1);
4426
4514
  let r = null;
4427
- const a = /* @__PURE__ */ new Map();
4515
+ const n = /* @__PURE__ */ new Map();
4428
4516
  let f;
4429
4517
  const u = /* @__PURE__ */ new Map();
4430
4518
  function w() {
4431
4519
  var m;
4432
- return ((m = n.value) == null ? void 0 : m.contentWindow) ?? null;
4520
+ return ((m = a.value) == null ? void 0 : m.contentWindow) ?? null;
4433
4521
  }
4434
4522
  function k(m) {
4435
4523
  var A;
@@ -4550,8 +4638,8 @@ function Ii(n, e) {
4550
4638
  k({ type: "env", env: m });
4551
4639
  }
4552
4640
  function B() {
4553
- const m = [...a.values()];
4554
- a.clear(), m.forEach(ne);
4641
+ const m = [...n.values()];
4642
+ n.clear(), m.forEach(ne);
4555
4643
  }
4556
4644
  function ne(m) {
4557
4645
  k({
@@ -4567,7 +4655,7 @@ function Ii(n, e) {
4567
4655
  }
4568
4656
  function oe(m) {
4569
4657
  if (!t.value) {
4570
- a.set(m.queryId, m);
4658
+ n.set(m.queryId, m);
4571
4659
  return;
4572
4660
  }
4573
4661
  ne(m);
@@ -4576,7 +4664,7 @@ function Ii(n, e) {
4576
4664
  window.removeEventListener("message", x), T();
4577
4665
  });
4578
4666
  function Z() {
4579
- t.value = !1, r = null, f = void 0, a.clear(), T();
4667
+ t.value = !1, r = null, f = void 0, n.clear(), T();
4580
4668
  }
4581
4669
  return {
4582
4670
  setCommentMode: (m, A) => {
@@ -4604,71 +4692,71 @@ function Ii(n, e) {
4604
4692
  reset: Z
4605
4693
  };
4606
4694
  }
4607
- function tt(n) {
4695
+ function tt(a) {
4608
4696
  const { businessId: e } = qe(ut());
4609
4697
  if (!e.value) throw new Error("Business Id is not defined");
4610
- return `/${e.value}/report-ai/${n}`;
4698
+ return `/${e.value}/report-ai/${a}`;
4611
4699
  }
4612
- const dt = (n, e = {}) => {
4700
+ const dt = (a, e = {}) => {
4613
4701
  const t = new URLSearchParams();
4614
4702
  e.sessionId && t.set("sessionId", e.sessionId), e.before && t.set("before", e.before);
4615
- const r = t.toString(), a = {
4703
+ const r = t.toString(), n = {
4616
4704
  fetchType: Se.Get,
4617
- url: `${tt(n)}/chat${r ? `?${r}` : ""}`
4705
+ url: `${tt(a)}/chat${r ? `?${r}` : ""}`
4618
4706
  };
4619
- return _e.fetch(a);
4620
- }, Ai = (n, e) => {
4707
+ return _e.fetch(n);
4708
+ }, Ci = (a, e) => {
4621
4709
  const t = {
4622
4710
  fetchType: Se.Get,
4623
- url: `${tt(n)}/chats${e ? `?cursor=${encodeURIComponent(e)}` : ""}`
4711
+ url: `${tt(a)}/chats${e ? `?cursor=${encodeURIComponent(e)}` : ""}`
4624
4712
  };
4625
4713
  return _e.fetch(t);
4626
- }, Ci = (n) => {
4714
+ }, Ei = (a) => {
4627
4715
  const e = {
4628
4716
  fetchType: Se.Post,
4629
- url: `${tt(n)}/chats`,
4717
+ url: `${tt(a)}/chats`,
4630
4718
  data: {}
4631
4719
  };
4632
4720
  return _e.fetch(e);
4633
- }, Ei = (n, e) => {
4721
+ }, Ti = (a, e) => {
4634
4722
  const t = {
4635
4723
  fetchType: Se.Get,
4636
- url: `${tt(n)}/runs/latest${e ? `?sessionId=${e}` : ""}`
4724
+ url: `${tt(a)}/runs/latest${e ? `?sessionId=${e}` : ""}`
4637
4725
  };
4638
4726
  return _e.fetch(t);
4639
- }, Ti = (n, e, t, r) => {
4640
- const a = {
4727
+ }, Oi = (a, e, t, r) => {
4728
+ const n = {
4641
4729
  fetchType: Se.Post,
4642
- url: `${tt(n)}/runs/${e}/sections/${t}/retry`,
4730
+ url: `${tt(a)}/runs/${e}/sections/${t}/retry`,
4643
4731
  data: { timezone: r }
4644
4732
  };
4645
- return _e.fetch(a);
4646
- }, Oi = (n, e) => {
4733
+ return _e.fetch(n);
4734
+ }, zi = (a, e) => {
4647
4735
  const t = {
4648
4736
  fetchType: Se.Post,
4649
- url: `${tt(n)}/chat/stop`,
4737
+ url: `${tt(a)}/chat/stop`,
4650
4738
  data: { sessionId: e }
4651
4739
  };
4652
4740
  return _e.fetch(t);
4653
- }, zi = (n, e) => `/${n}/report-ai/${e}/chat`, zt = 3e4, on = 3e3, $i = "New chat", sn = 80;
4654
- function $t(n, e) {
4655
- return `report-canvas:chat:${n}:${e}`;
4741
+ }, $i = (a, e) => `/${a}/report-ai/${e}/chat`, zt = 3e4, on = 3e3, Ri = "New chat", sn = 80;
4742
+ function $t(a, e) {
4743
+ return `report-canvas:chat:${a}:${e}`;
4656
4744
  }
4657
- function Ri(n) {
4745
+ function Ni(a) {
4658
4746
  try {
4659
- return window.localStorage.getItem(n) ?? void 0;
4747
+ return window.localStorage.getItem(a) ?? void 0;
4660
4748
  } catch {
4661
4749
  return;
4662
4750
  }
4663
4751
  }
4664
- function Rt(n, e) {
4752
+ function Rt(a, e) {
4665
4753
  try {
4666
- e ? window.localStorage.setItem(n, e) : window.localStorage.removeItem(n);
4754
+ e ? window.localStorage.setItem(a, e) : window.localStorage.removeItem(a);
4667
4755
  } catch {
4668
4756
  }
4669
4757
  }
4670
- function Ni(n) {
4671
- const { businessId: e, token: t } = qe(ut()), r = _([]), a = _(), f = _(""), u = _(null), w = _(!1), k = _([]), x = _(null), j = _(!1), R = _(""), M = _(!1), T = _(!1), X = _(""), I = _(null), G = _(""), q = _(!1), h = _([]), B = _(!1), ne = _(null), oe = _(!1), Z = _(null), m = _(!1), A = V(() => oe.value || T.value && m.value), p = _(!1);
4758
+ function Li(a) {
4759
+ const { businessId: e, token: t } = qe(ut()), r = _([]), n = _(), f = _(""), u = _(null), w = _(!1), k = _([]), x = _(null), j = _(!1), R = _(""), M = _(!1), T = _(!1), X = _(""), I = _(null), G = _(""), q = _(!1), h = _([]), B = _(!1), ne = _(null), oe = _(!1), Z = _(null), m = _(!1), A = V(() => oe.value || T.value && m.value), p = _(!1);
4672
4760
  ge([T, oe], ([b, S]) => {
4673
4761
  !b && !S && (p.value = !1);
4674
4762
  });
@@ -4690,15 +4778,15 @@ function Ni(n) {
4690
4778
  se += 1, clearTimeout(H), clearTimeout(K);
4691
4779
  });
4692
4780
  async function Ie(b) {
4693
- const S = $t(o(e.value), n), E = b ?? Ri(S), z = se += 1;
4781
+ const S = $t(o(e.value), a), E = b ?? Ni(S), z = se += 1;
4694
4782
  clearTimeout(H), M.value = !0;
4695
4783
  try {
4696
4784
  let N;
4697
4785
  try {
4698
- N = await dt(n, { sessionId: E });
4786
+ N = await dt(a, { sessionId: E });
4699
4787
  } catch (Y) {
4700
4788
  if (!E) throw Y;
4701
- Rt(S, void 0), N = await dt(n);
4789
+ Rt(S, void 0), N = await dt(a);
4702
4790
  }
4703
4791
  return z !== se ? null : (ve(N), N.latestRun ?? null);
4704
4792
  } catch (N) {
@@ -4708,7 +4796,7 @@ function Ni(n) {
4708
4796
  }
4709
4797
  }
4710
4798
  function ve(b) {
4711
- a.value = b.sessionId ?? void 0, f.value = b.title ?? "", r.value = b.messages, u.value = b.earlier ?? null, h.value = [], G.value = "", Rt($t(o(e.value), n), b.sessionId), Ne(b);
4799
+ n.value = b.sessionId ?? void 0, f.value = b.title ?? "", r.value = b.messages, u.value = b.earlier ?? null, h.value = [], G.value = "", Rt($t(o(e.value), a), b.sessionId), Ne(b);
4712
4800
  }
4713
4801
  function Ne(b) {
4714
4802
  clearTimeout(H), clearTimeout(K);
@@ -4724,24 +4812,24 @@ function Ni(n) {
4724
4812
  Y && (X.value = Y.id), I.value = fa(Y), B.value = N >= zt, B.value || (K = setTimeout(() => B.value = !0, zt - N)), H = setTimeout(() => void C(), on);
4725
4813
  }
4726
4814
  async function C(b = !1) {
4727
- const S = se, E = a.value;
4815
+ const S = se, E = n.value;
4728
4816
  try {
4729
- const z = await dt(n, { sessionId: E });
4730
- if (S !== se || T.value || E !== a.value) return;
4817
+ const z = await dt(a, { sessionId: E });
4818
+ if (S !== se || T.value || E !== n.value) return;
4731
4819
  ve(z), (!z.pending || z.pending.stopped) && (he.forEach((N) => N()), $e.forEach((N) => N(z.latestRun ?? null)));
4732
4820
  } catch {
4733
4821
  S === se && (oe.value || b) && (H = setTimeout(() => void C(b), on));
4734
4822
  }
4735
4823
  }
4736
4824
  async function te(b) {
4737
- return b === a.value || T.value || oe.value ? null : Ie(b);
4825
+ return b === n.value || T.value || oe.value ? null : Ie(b);
4738
4826
  }
4739
4827
  async function c() {
4740
4828
  if (T.value || oe.value) return !1;
4741
4829
  const b = se += 1;
4742
4830
  M.value = !0;
4743
4831
  try {
4744
- const { chat: S } = await Ci(n);
4832
+ const { chat: S } = await Ei(a);
4745
4833
  return b !== se ? !1 : (ve({ sessionId: S.id, title: S.title, earlier: null, messages: [], latestRun: null }), k.value = [S, ...k.value.filter((E) => E.id !== S.id)], !0);
4746
4834
  } catch (S) {
4747
4835
  return b === se && (G.value = S instanceof Error ? S.message : String(S)), !1;
@@ -4752,7 +4840,7 @@ function Ni(n) {
4752
4840
  async function O(b) {
4753
4841
  j.value = !0, R.value = "";
4754
4842
  try {
4755
- const S = await Ai(n, b);
4843
+ const S = await Ci(a, b);
4756
4844
  k.value = b ? [...k.value, ...S.chats] : S.chats, x.value = S.cursor;
4757
4845
  } catch (S) {
4758
4846
  R.value = S instanceof Error ? S.message : String(S);
@@ -4762,11 +4850,11 @@ function Ni(n) {
4762
4850
  }
4763
4851
  async function F() {
4764
4852
  if (!u.value || w.value) return;
4765
- const b = u.value, S = a.value;
4853
+ const b = u.value, S = n.value;
4766
4854
  w.value = !0;
4767
4855
  try {
4768
- const E = await dt(n, { sessionId: S, before: b });
4769
- if (S !== a.value) return;
4856
+ const E = await dt(a, { sessionId: S, before: b });
4857
+ if (S !== n.value) return;
4770
4858
  r.value = [...E.messages, ...r.value], u.value = E.earlier ?? null;
4771
4859
  } catch (E) {
4772
4860
  G.value = E instanceof Error ? E.message : String(E);
@@ -4776,20 +4864,20 @@ function Ni(n) {
4776
4864
  }
4777
4865
  const U = /* @__PURE__ */ new Map();
4778
4866
  function W(b, S) {
4779
- a.value && U.set(a.value, { text: b, target: S });
4867
+ n.value && U.set(n.value, { text: b, target: S });
4780
4868
  }
4781
4869
  function Q() {
4782
- return a.value && U.get(a.value) || { text: "" };
4870
+ return n.value && U.get(n.value) || { text: "" };
4783
4871
  }
4784
4872
  function P(b) {
4785
4873
  h.value.includes(b) || (h.value = [...h.value, b]);
4786
4874
  }
4787
4875
  async function i() {
4788
- const b = a.value;
4876
+ const b = n.value;
4789
4877
  if (!A.value || p.value || !b) return null;
4790
4878
  p.value = !0;
4791
4879
  try {
4792
- await Oi(n, b);
4880
+ await zi(a, b);
4793
4881
  } catch (E) {
4794
4882
  return p.value = !1, G.value = E instanceof Error ? E.message : String(E), null;
4795
4883
  }
@@ -4904,14 +4992,14 @@ function Ni(n) {
4904
4992
  }
4905
4993
  if (E.startsWith("data-")) {
4906
4994
  const N = E.slice(5), Y = b.data ?? {};
4907
- N === "plan" && typeof Y.sessionId == "string" && (S.acked = !0, m.value = !0, a.value = Y.sessionId, Rt($t(o(e.value), n), Y.sessionId)), N === "step" && typeof Y.step == "string" ? (S.named = !0, I.value = Gt(I.value, Y.step)) : me(S, N), le(z, (ce) => ce.push({ type: E, data: Y })), re.forEach((ce) => ce({ name: N, data: Y }));
4995
+ N === "plan" && typeof Y.sessionId == "string" && (S.acked = !0, m.value = !0, n.value = Y.sessionId, Rt($t(o(e.value), a), Y.sessionId)), N === "step" && typeof Y.step == "string" ? (S.named = !0, I.value = Gt(I.value, Y.step)) : me(S, N), le(z, (ce) => ce.push({ type: E, data: Y })), re.forEach((ce) => ce({ name: N, data: Y }));
4908
4996
  }
4909
4997
  }
4910
4998
  function ue(b) {
4911
- if (f.value && f.value !== $i) return;
4999
+ if (f.value && f.value !== Ri) return;
4912
5000
  const S = b.length > sn ? `${b.slice(0, sn - 1)}…` : b;
4913
5001
  f.value = S, k.value = k.value.map(
4914
- (E) => E.id === a.value ? { ...E, title: S } : E
5002
+ (E) => E.id === n.value ? { ...E, title: S } : E
4915
5003
  );
4916
5004
  }
4917
5005
  async function Te(b, S) {
@@ -4933,7 +5021,7 @@ function Ni(n) {
4933
5021
  let ce = !1;
4934
5022
  try {
4935
5023
  const Oe = await fetch(
4936
- Hn(zi(e.value, n)),
5024
+ Hn($i(e.value, a)),
4937
5025
  {
4938
5026
  method: "POST",
4939
5027
  headers: {
@@ -4941,7 +5029,7 @@ function Ni(n) {
4941
5029
  Authorization: `Bearer ${t.value}`
4942
5030
  },
4943
5031
  body: JSON.stringify({
4944
- sessionId: a.value,
5032
+ sessionId: n.value,
4945
5033
  target: S,
4946
5034
  message: z
4947
5035
  })
@@ -4953,7 +5041,7 @@ function Ni(n) {
4953
5041
  G.value = Fe.message, r.value = r.value.filter((nt) => nt.id !== z.id);
4954
5042
  return;
4955
5043
  }
4956
- console.warn("[report-canvas] chat rejected", { reportId: n, status: Oe.status }), P(z.id);
5044
+ console.warn("[report-canvas] chat rejected", { reportId: a, status: Oe.status }), P(z.id);
4957
5045
  return;
4958
5046
  }
4959
5047
  const it = Oe.body.getReader(), pt = new TextDecoder();
@@ -4979,14 +5067,14 @@ function Ni(n) {
4979
5067
  }
4980
5068
  }
4981
5069
  } catch (Oe) {
4982
- console.warn("[report-canvas] chat stream failed", { reportId: n, err: Oe }), N.acked ? (q.value = !0, ce = !0) : P(z.id);
5070
+ console.warn("[report-canvas] chat stream failed", { reportId: a, err: Oe }), N.acked ? (q.value = !0, ce = !0) : P(z.id);
4983
5071
  } finally {
4984
5072
  clearTimeout(Y), T.value = !1, I.value = null, B.value = !1, ne.value = null, he.forEach((Oe) => Oe()), ce && C(!0);
4985
5073
  }
4986
5074
  }
4987
5075
  return {
4988
5076
  messages: r,
4989
- sessionId: a,
5077
+ sessionId: n,
4990
5078
  title: f,
4991
5079
  earlier: u,
4992
5080
  loadingEarlier: w,
@@ -5023,9 +5111,9 @@ function Ni(n) {
5023
5111
  onResumed: Ee
5024
5112
  };
5025
5113
  }
5026
- const Li = 2e3, Mi = 10 * 6e4;
5027
- function Pi(n, e, t, r) {
5028
- const { timezone: a } = qe(Nt()), f = _(null), u = _(null), w = _(!1), k = _(""), x = [];
5114
+ const Mi = 2e3, Pi = 10 * 6e4;
5115
+ function ji(a, e, t, r) {
5116
+ const { timezone: n } = qe(Nt()), f = _(null), u = _(null), w = _(!1), k = _(""), x = [];
5029
5117
  function j(m) {
5030
5118
  x.push(m);
5031
5119
  }
@@ -5035,7 +5123,7 @@ function Pi(n, e, t, r) {
5035
5123
  }
5036
5124
  function T() {
5037
5125
  var m;
5038
- R !== void 0 || e.value || ((m = f.value) == null ? void 0 : m.status) === "running" && (R = window.setInterval(() => void X(), Li));
5126
+ R !== void 0 || e.value || ((m = f.value) == null ? void 0 : m.status) === "running" && (R = window.setInterval(() => void X(), Mi));
5039
5127
  }
5040
5128
  async function X() {
5041
5129
  var m;
@@ -5044,8 +5132,8 @@ function Pi(n, e, t, r) {
5044
5132
  return;
5045
5133
  }
5046
5134
  try {
5047
- const { run: A } = await Ei(n, r == null ? void 0 : r.value);
5048
- A && I(A), ((m = f.value) == null ? void 0 : m.status) !== "running" ? M() : f.value.updatedAt && Date.now() - new Date(f.value.updatedAt).getTime() > Mi && (w.value = !0, M());
5135
+ const { run: A } = await Ti(a, r == null ? void 0 : r.value);
5136
+ A && I(A), ((m = f.value) == null ? void 0 : m.status) !== "running" ? M() : f.value.updatedAt && Date.now() - new Date(f.value.updatedAt).getTime() > Pi && (w.value = !0, M());
5049
5137
  } catch {
5050
5138
  }
5051
5139
  }
@@ -5099,11 +5187,11 @@ function Pi(n, e, t, r) {
5099
5187
  if (!(!((A = f.value) != null && A.runId) || f.value.status === "running")) {
5100
5188
  k.value = "";
5101
5189
  try {
5102
- const { run: p } = await Ti(
5103
- n,
5190
+ const { run: p } = await Oi(
5191
+ a,
5104
5192
  f.value.runId,
5105
5193
  m,
5106
- o(a.value)
5194
+ o(n.value)
5107
5195
  );
5108
5196
  I(p);
5109
5197
  } catch (p) {
@@ -5128,18 +5216,18 @@ function Pi(n, e, t, r) {
5128
5216
  onLanded: j
5129
5217
  };
5130
5218
  }
5131
- const ji = 380, Di = 600, ln = 'button:not([disabled]),textarea:not([disabled]),select:not([disabled]),a[href],[tabindex]:not([tabindex="-1"])';
5132
- function Vi(n, e) {
5133
- const t = _(), r = _(), a = _(0);
5219
+ const Di = 380, Vi = 600, ln = 'button:not([disabled]),textarea:not([disabled]),select:not([disabled]),a[href],[tabindex]:not([tabindex="-1"])';
5220
+ function Bi(a, e) {
5221
+ const t = _(), r = _(), n = _(0);
5134
5222
  let f, u = !1;
5135
5223
  Xe(() => {
5136
5224
  !t.value || typeof ResizeObserver > "u" || (f = new ResizeObserver(([R]) => {
5137
- a.value = R.contentRect.width, !u && (u = !0, w.value || (n.value = !1));
5225
+ n.value = R.contentRect.width, !u && (u = !0, w.value || (a.value = !1));
5138
5226
  }), f.observe(t.value));
5139
5227
  }), Ge(() => f == null ? void 0 : f.disconnect());
5140
5228
  const w = V(
5141
- () => !a.value || a.value >= ji + Di
5142
- ), k = V(() => n.value && !w.value && !e.value);
5229
+ () => !n.value || n.value >= Di + Vi
5230
+ ), k = V(() => a.value && !w.value && !e.value);
5143
5231
  let x = null;
5144
5232
  ge(k, async (R) => {
5145
5233
  var M, T, X;
@@ -5158,45 +5246,45 @@ function Vi(n, e) {
5158
5246
  }
5159
5247
  return Xe(() => window.addEventListener("keydown", j, !0)), Ge(() => window.removeEventListener("keydown", j, !0)), { root: t, drawer: r, docked: w, modal: k };
5160
5248
  }
5161
- const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = { class: "fm-typo-en-title-md-600 block min-w-0 max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, Ui = { class: "relative shrink-0" }, Hi = {
5249
+ const Fi = "page_filters", qi = { class: "flex min-w-0 grow flex-col" }, Ui = { class: "fm-typo-en-title-md-600 block min-w-0 max-w-full overflow-hidden text-ellipsis whitespace-nowrap" }, Hi = { class: "relative shrink-0" }, Wi = {
5162
5250
  key: 0,
5163
5251
  class: "flex items-center gap-8 border-b border-fm-color-border-secondary px-16 py-8"
5164
- }, Wi = {
5252
+ }, Gi = {
5165
5253
  key: 0,
5166
5254
  class: "flex min-w-0 grow items-start overflow-x-auto scrollbar-hide"
5167
- }, Gi = {
5255
+ }, Yi = {
5168
5256
  key: 1,
5169
5257
  class: "grow"
5170
- }, Yi = {
5258
+ }, Ji = {
5171
5259
  key: 2,
5172
5260
  class: "flex shrink-0 items-center gap-4"
5173
- }, Ji = ["aria-pressed", "aria-label", "disabled"], Ki = {
5261
+ }, Ki = ["aria-pressed", "aria-label", "disabled"], Xi = {
5174
5262
  key: 1,
5175
5263
  "data-testid": "canvas-draft-bar",
5176
5264
  class: "flex items-center gap-12 border-b border-fm-color-border-secondary bg-fm-color-system-info-100 px-16 py-8"
5177
- }, Xi = { class: "fm-typo-en-body-sm-500 text-fm-color-typo-primary" }, Qi = { class: "fm-typo-en-body-sm-400 grow text-fm-color-typo-secondary" }, Zi = {
5265
+ }, Qi = { class: "fm-typo-en-body-sm-500 text-fm-color-typo-primary" }, Zi = { class: "fm-typo-en-body-sm-400 grow text-fm-color-typo-secondary" }, es = {
5178
5266
  key: 0,
5179
5267
  class: "fm-typo-en-body-sm-400 text-fm-color-typo-error"
5180
- }, es = {
5268
+ }, ts = {
5181
5269
  key: 2,
5182
5270
  role: "status",
5183
5271
  class: "fm-typo-en-body-sm-400 flex items-center gap-8 border-b border-fm-color-border-secondary px-16 py-8"
5184
- }, ts = { class: "grow" }, ns = ["aria-label"], as = {
5272
+ }, ns = { class: "grow" }, as = ["aria-label"], rs = {
5185
5273
  key: 3,
5186
5274
  class: "fm-typo-en-body-sm-400 border-b border-fm-color-border-secondary bg-fm-color-system-warning-100 px-16 py-8"
5187
- }, rs = {
5275
+ }, os = {
5188
5276
  key: 4,
5189
5277
  class: "fm-typo-en-body-sm-400 p-16 text-fm-color-typo-error"
5190
- }, os = ["srcdoc", "title"], is = ["role", "aria-modal", "aria-label"], ss = /* @__PURE__ */ Ze({
5278
+ }, is = ["srcdoc", "title"], ss = ["role", "aria-modal", "aria-label"], ls = /* @__PURE__ */ Ze({
5191
5279
  __name: "ReportCanvasView",
5192
5280
  props: {
5193
5281
  reportId: {},
5194
5282
  viewOnly: { type: Boolean }
5195
5283
  },
5196
- setup(n) {
5197
- const e = n, t = jn(), r = Dn(), { t: a, te: f } = et(), { currentReport: u } = qe(Xn()), w = V(() => {
5284
+ setup(a) {
5285
+ const e = a, t = jn(), r = Dn(), { t: n, te: f } = et(), { currentReport: u } = qe(Xn()), w = V(() => {
5198
5286
  var s;
5199
- return Qn(a, f, (s = u.value) == null ? void 0 : s.name, "other");
5287
+ return Qn(n, f, (s = u.value) == null ? void 0 : s.name, "other");
5200
5288
  }), k = e.reportId || String(t.query.reportId ?? ""), x = _(), j = _(""), R = V(() => {
5201
5289
  var s;
5202
5290
  return ((s = x.value) == null ? void 0 : s.state) === "draft";
@@ -5232,7 +5320,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5232
5320
  function $e(s, g) {
5233
5321
  var J;
5234
5322
  return String(
5235
- ((J = s.config) == null ? void 0 : J.title) || Ce.value[s.id] || a("reportV5.reportAi.chat.widgetNumber", { number: g + 1 })
5323
+ ((J = s.config) == null ? void 0 : J.title) || Ce.value[s.id] || n("reportV5.reportAi.chat.widgetNumber", { number: g + 1 })
5236
5324
  );
5237
5325
  }
5238
5326
  const Ee = _([]), se = _([]), Ie = V({
@@ -5299,7 +5387,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5299
5387
  return c.value = g.text, ee.value = g.target, P();
5300
5388
  }
5301
5389
  function $(s) {
5302
- Me.value || (c.value = a("reportV5.reportAi.build.askBuilderPrompt", { title: s }), ee.value = void 0);
5390
+ Me.value || (c.value = n("reportV5.reportAi.build.askBuilderPrompt", { title: s }), ee.value = void 0);
5303
5391
  }
5304
5392
  async function fe() {
5305
5393
  const s = await me.stop();
@@ -5314,7 +5402,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5314
5402
  if (g)
5315
5403
  return c.value = g.text, ee.value = g.target, P();
5316
5404
  }
5317
- const ie = mi(k), me = Ni(k), {
5405
+ const ie = mi(k), me = Li(k), {
5318
5406
  messages: D,
5319
5407
  sessionId: ue,
5320
5408
  title: Te,
@@ -5342,7 +5430,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5342
5430
  onLifecycle: xn,
5343
5431
  onSettled: wn,
5344
5432
  onResumed: kn
5345
- } = me, Me = V(() => Oe.value || bn.value), { dateRange: bt, selectedLocationIds: gt, locations: Lt, timezone: _n } = qe(Nt()), we = Pi(k, Oe, it, ue), Mt = V(
5433
+ } = me, Me = V(() => Oe.value || bn.value), { dateRange: bt, selectedLocationIds: gt, locations: Lt, timezone: _n } = qe(Nt()), we = ji(k, Oe, it, ue), Mt = V(
5346
5434
  () => {
5347
5435
  var s;
5348
5436
  return Me.value || N.value || ((s = we.run.value) == null ? void 0 : s.status) === "running";
@@ -5350,19 +5438,19 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5350
5438
  ), Pt = V(
5351
5439
  () => {
5352
5440
  var s;
5353
- return ((s = x.value) == null ? void 0 : s.sections.filter((g) => g.id !== Bi)) ?? [];
5441
+ return ((s = x.value) == null ? void 0 : s.sections.filter((g) => g.id !== Fi)) ?? [];
5354
5442
  }
5355
5443
  ), jt = V(() => Pt.value.length === 0), Dt = V({
5356
5444
  get: () => Z.value && m.value || I.value,
5357
5445
  set: (s) => {
5358
5446
  m.value = s, s || (I.value = !1);
5359
5447
  }
5360
- }), { root: Sn, drawer: In, docked: vt, modal: yt } = Vi(Dt, p), An = V(
5448
+ }), { root: Sn, drawer: In, docked: vt, modal: yt } = Bi(Dt, p), An = V(
5361
5449
  () => {
5362
5450
  var s;
5363
5451
  return ((s = x.value) == null ? void 0 : s.sections.some((g) => g.status === "pending")) ?? !1;
5364
5452
  }
5365
- ), Cn = V(() => Me.value ? pt.value ?? "working" : An.value ? "loading" : "updating"), Pe = Ii(A, {
5453
+ ), Cn = V(() => Me.value ? pt.value ?? "working" : An.value ? "loading" : "updating"), Pe = Ai(A, {
5366
5454
  onSelectSection: te,
5367
5455
  onCancelSelection: () => {
5368
5456
  p.value = !1;
@@ -5482,7 +5570,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5482
5570
  ref: Sn,
5483
5571
  class: "relative flex h-full min-h-0 w-full"
5484
5572
  }, [
5485
- v("div", Fi, [
5573
+ v("div", qi, [
5486
5574
  s.viewOnly ? L("", !0) : (l(), ye(de, {
5487
5575
  key: 0,
5488
5576
  class: "remove-line-clamping shrink-0",
@@ -5498,16 +5586,16 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5498
5586
  class: "flex min-w-0 max-w-full justify-start"
5499
5587
  }, {
5500
5588
  default: We(() => [
5501
- v("p", qi, y(w.value), 1)
5589
+ v("p", Ui, y(w.value), 1)
5502
5590
  ]),
5503
5591
  _: 1
5504
5592
  }, 8, ["content"])
5505
5593
  ]),
5506
5594
  _: 1
5507
5595
  }, 8, ["title"])),
5508
- v("div", Ui, [
5509
- !s.viewOnly || ((Ve = x.value) == null ? void 0 : Ve.hostFilters) !== !1 ? (l(), d("div", Hi, [
5510
- ((je = x.value) == null ? void 0 : je.hostFilters) !== !1 ? (l(), d("div", Wi, [
5596
+ v("div", Hi, [
5597
+ !s.viewOnly || ((Ve = x.value) == null ? void 0 : Ve.hostFilters) !== !1 ? (l(), d("div", Wi, [
5598
+ ((je = x.value) == null ? void 0 : je.hostFilters) !== !1 ? (l(), d("div", Gi, [
5511
5599
  ae(Gn, {
5512
5600
  modelValue: o(gt),
5513
5601
  "onUpdate:modelValue": g[2] || (g[2] = (pe) => qt(gt) ? gt.value = pe : null),
@@ -5521,21 +5609,21 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5521
5609
  ]),
5522
5610
  _: 1
5523
5611
  }, 8, ["modelValue", "options"])
5524
- ])) : (l(), d("div", Gi)),
5525
- Pt.value.length && !s.viewOnly ? (l(), d("div", Yi, [
5612
+ ])) : (l(), d("div", Yi)),
5613
+ Pt.value.length && !s.viewOnly ? (l(), d("div", Ji, [
5526
5614
  (xe = x.value) != null && xe.canEdit && ((He = x.value) != null && He.publishedAt) ? (l(), ye(ke, {
5527
5615
  key: 0,
5528
5616
  "data-testid": "canvas-versions-open",
5529
5617
  variant: "tertiary",
5530
5618
  "prepend-icon": "history",
5531
- label: o(a)("reportV5.reportCanvas.draft.history"),
5619
+ label: o(n)("reportV5.reportCanvas.draft.history"),
5532
5620
  "aria-expanded": I.value,
5533
5621
  onClick: h
5534
5622
  }, null, 8, ["label", "aria-expanded"])) : L("", !0),
5535
5623
  Z.value ? (l(), ye(J, {
5536
5624
  key: 1,
5537
5625
  placement: "bottom",
5538
- content: o(a)(
5626
+ content: o(n)(
5539
5627
  p.value ? "reportV5.reportAi.chat.cancelSelection" : "reportV5.reportAi.chat.commentWidget"
5540
5628
  )
5541
5629
  }, {
@@ -5544,7 +5632,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5544
5632
  "data-testid": "canvas-comment-toggle",
5545
5633
  class: Qe(["canvas-comment-target flex h-32 w-32 items-center justify-center rounded-md text-fm-color-typo-secondary disabled:opacity-50", p.value && "bg-fm-color-neutral-gray-100 text-fm-color-primary"]),
5546
5634
  "aria-pressed": p.value,
5547
- "aria-label": o(a)("reportV5.reportAi.chat.commentWidget"),
5635
+ "aria-label": o(n)("reportV5.reportAi.chat.commentWidget"),
5548
5636
  disabled: Me.value || I.value,
5549
5637
  onClick: g[3] || (g[3] = (pe) => p.value = !p.value)
5550
5638
  }, g[15] || (g[15] = [
@@ -5563,7 +5651,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5563
5651
  "stroke-linejoin": "round"
5564
5652
  })
5565
5653
  ], -1)
5566
- ]), 10, Ji)
5654
+ ]), 10, Ki)
5567
5655
  ]),
5568
5656
  _: 1
5569
5657
  }, 8, ["content"])) : L("", !0),
@@ -5572,59 +5660,59 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5572
5660
  "data-testid": "report-canvas-chat-open",
5573
5661
  variant: "tertiary",
5574
5662
  "prepend-icon": "auto_awesome",
5575
- label: o(a)("reportV5.reportAi.chat.open"),
5663
+ label: o(n)("reportV5.reportAi.chat.open"),
5576
5664
  onClick: g[4] || (g[4] = (pe) => m.value = !0)
5577
5665
  }, null, 8, ["label"])) : L("", !0)
5578
5666
  ])) : L("", !0)
5579
5667
  ])) : L("", !0)
5580
5668
  ]),
5581
- R.value && !s.viewOnly ? (l(), d("div", Ki, [
5582
- v("span", Xi, y(o(a)("reportV5.reportCanvas.draft.pending", { count: M.value })), 1),
5583
- v("span", Qi, y(o(a)("reportV5.reportCanvas.draft.hint")), 1),
5584
- X.value ? (l(), d("span", Zi, y(X.value), 1)) : L("", !0),
5669
+ R.value && !s.viewOnly ? (l(), d("div", Xi, [
5670
+ v("span", Qi, y(o(n)("reportV5.reportCanvas.draft.pending", { count: M.value })), 1),
5671
+ v("span", Zi, y(o(n)("reportV5.reportCanvas.draft.hint")), 1),
5672
+ X.value ? (l(), d("span", es, y(X.value), 1)) : L("", !0),
5585
5673
  ae(ke, {
5586
5674
  "data-testid": "canvas-draft-discard",
5587
5675
  variant: "tertiary",
5588
- label: o(a)("reportV5.reportCanvas.draft.discard"),
5676
+ label: o(n)("reportV5.reportCanvas.draft.discard"),
5589
5677
  disabled: T.value,
5590
5678
  onClick: Tn
5591
5679
  }, null, 8, ["label", "disabled"]),
5592
5680
  ae(ke, {
5593
5681
  "data-testid": "canvas-draft-publish",
5594
5682
  variant: "primary",
5595
- label: o(a)("reportV5.reportCanvas.draft.publish"),
5683
+ label: o(n)("reportV5.reportCanvas.draft.publish"),
5596
5684
  disabled: T.value,
5597
5685
  onClick: En
5598
5686
  }, null, 8, ["label", "disabled"])
5599
5687
  ])) : L("", !0),
5600
- G.value ? (l(), d("div", es, [
5688
+ G.value ? (l(), d("div", ts, [
5601
5689
  ae(be, {
5602
5690
  name: "check_circle",
5603
5691
  size: "sm"
5604
5692
  }),
5605
- v("span", ts, y(o(a)("reportV5.reportCanvas.history.restored")), 1),
5693
+ v("span", ns, y(o(n)("reportV5.reportCanvas.history.restored")), 1),
5606
5694
  v("button", {
5607
5695
  class: "flex h-32 w-32 items-center justify-center rounded-md",
5608
- "aria-label": o(a)("reportV5.reportCanvas.draft.close"),
5696
+ "aria-label": o(n)("reportV5.reportCanvas.draft.close"),
5609
5697
  onClick: g[5] || (g[5] = (pe) => G.value = !1)
5610
5698
  }, [
5611
5699
  ae(be, {
5612
5700
  name: "close",
5613
5701
  size: "sm"
5614
5702
  })
5615
- ], 8, ns)
5703
+ ], 8, as)
5616
5704
  ])) : L("", !0),
5617
- Nn.value ? (l(), d("div", as, y(o(a)("reportV5.reportCanvas.canvas.truncated")), 1)) : L("", !0),
5618
- j.value ? (l(), d("p", rs, y(j.value), 1)) : L("", !0),
5705
+ Nn.value ? (l(), d("div", rs, y(o(n)("reportV5.reportCanvas.canvas.truncated")), 1)) : L("", !0),
5706
+ j.value ? (l(), d("p", os, y(j.value), 1)) : L("", !0),
5619
5707
  Mn(v("iframe", {
5620
5708
  ref_key: "frame",
5621
5709
  ref: A,
5622
5710
  "data-testid": "report-canvas-frame",
5623
5711
  class: "min-h-0 grow border-0",
5624
- srcdoc: o(_i),
5712
+ srcdoc: o(Si),
5625
5713
  sandbox: "allow-scripts",
5626
- title: o(a)("reportV5.reportCanvas.canvas.title")
5627
- }, null, 8, os), [
5714
+ title: o(n)("reportV5.reportCanvas.canvas.title")
5715
+ }, null, 8, is), [
5628
5716
  [Pn, !j.value]
5629
5717
  ])
5630
5718
  ]),
@@ -5642,7 +5730,7 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5642
5730
  ),
5643
5731
  role: o(yt) ? "dialog" : void 0,
5644
5732
  "aria-modal": o(yt) ? "true" : void 0,
5645
- "aria-label": o(a)(I.value ? "reportV5.reportCanvas.draft.history" : "reportV5.reportAi.chat.title")
5733
+ "aria-label": o(n)(I.value ? "reportV5.reportCanvas.draft.history" : "reportV5.reportAi.chat.title")
5646
5734
  }, [
5647
5735
  I.value ? (l(), ye(ri, {
5648
5736
  key: 0,
@@ -5710,11 +5798,11 @@ const Bi = "page_filters", Fi = { class: "flex min-w-0 grow flex-col" }, qi = {
5710
5798
  onLoadMoreChats: g[13] || (g[13] = (pe) => o(me).loadChats(o(S) ?? void 0)),
5711
5799
  onLoadEarlier: g[14] || (g[14] = (pe) => o(me).loadEarlier())
5712
5800
  }, null, 8, ["home-draft", "home-open", "messages", "draft", "target", "target-stale", "streaming", "turn-id", "phase", "slow", "started-at", "error", "interrupted", "blank", "run", "run-anchor-id", "run-stale", "retry-error", "undoable-turn-ids", "undoing", "unsent-ids", "no-reply-id", "chat-id", "chat-title", "chats", "chats-cursor", "chats-loading", "chats-error", "switching", "busy", "stoppable", "stopping", "earlier", "loading-earlier", "onRetry", "onCheckStatus"]))
5713
- ], 10, is)) : L("", !0)
5801
+ ], 10, ss)) : L("", !0)
5714
5802
  ], 512);
5715
5803
  };
5716
5804
  }
5717
- }), ys = /* @__PURE__ */ mt(ss, [["__scopeId", "data-v-44470a1c"]]);
5805
+ }), xs = /* @__PURE__ */ mt(ls, [["__scopeId", "data-v-44470a1c"]]);
5718
5806
  export {
5719
- ys as default
5807
+ xs as default
5720
5808
  };