markdown-flow-ui 0.1.70-beta.1 → 0.1.70-beta.2

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 (22) hide show
  1. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
  2. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.js +1 -1
  3. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/ResizableTextArea.js +1 -1
  4. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.js +1 -1
  5. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/index.js +1 -1
  6. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/remark-flow@0.1.6/node_modules/remark-flow/dist/remark-custom-variable.js +1 -1
  7. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/remark-flow@0.1.6/node_modules/remark-flow/dist/remark-interaction.js +1 -1
  8. package/dist/Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.js +1 -1
  9. package/dist/_virtual/index3.js +5 -4
  10. package/dist/_virtual/index3.js.map +1 -1
  11. package/dist/_virtual/index4.js +4 -5
  12. package/dist/_virtual/index4.js.map +1 -1
  13. package/dist/_virtual/index5.js +4 -4
  14. package/dist/_virtual/index6.js +4 -4
  15. package/dist/components/ContentRender/ContentBlackboard.js +112 -62
  16. package/dist/components/ContentRender/ContentBlackboard.js.map +1 -1
  17. package/dist/components/ContentRender/utils/content-html-stream.d.ts +1 -0
  18. package/dist/components/ContentRender/utils/content-html-stream.js +10 -9
  19. package/dist/components/ContentRender/utils/content-html-stream.js.map +1 -1
  20. package/dist/components/ui/inputGroup/textarea.js +1 -1
  21. package/dist/markdown-flow-ui-lib.css +1 -1
  22. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { stringify as w } from "../../../../comma-separated-tokens@2.0.3/node_mo
2
2
  import { ok as u } from "../../../../devlop@1.1.0/node_modules/devlop/lib/default.js";
3
3
  import { svg as m, html as C } from "../../../../property-information@7.1.0/node_modules/property-information/index.js";
4
4
  import { stringify as N } from "../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.js";
5
- import S from "../../../../../../../../../_virtual/index5.js";
5
+ import S from "../../../../../../../../../_virtual/index6.js";
6
6
  import { whitespace as j } from "../../../../hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.js";
7
7
  import { name as x } from "../../../../estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.js";
8
8
  import { VFileMessage as h } from "../../../../vfile-message@4.0.3/node_modules/vfile-message/lib/index.js";
@@ -2,7 +2,7 @@ import $ from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
2
2
  import oe from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js";
3
3
  import r from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.js";
4
4
  import te from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.js";
5
- import d from "../../../../../../../../../_virtual/index4.js";
5
+ import d from "../../../../../../../../../_virtual/index3.js";
6
6
  import l, { useRef as q, cloneElement as ie } from "react";
7
7
  import { hasPrefixSuffix as re, hasAddon as de } from "./utils/commonUtils.js";
8
8
  var xe = /* @__PURE__ */ l.forwardRef(function(e, z) {
@@ -4,7 +4,7 @@ import w from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
4
4
  import J from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.js";
5
5
  import s from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.js";
6
6
  import K from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js";
7
- import Q from "../../../../../../../../../_virtual/index4.js";
7
+ import Q from "../../../../../../../../../_virtual/index3.js";
8
8
  import ee from "../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.js";
9
9
  import M from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.js";
10
10
  import te from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.js";
@@ -4,7 +4,7 @@ import d from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
4
4
  import Ae from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js";
5
5
  import x from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.js";
6
6
  import Fe from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js";
7
- import h from "../../../../../../../../../_virtual/index4.js";
7
+ import h from "../../../../../../../../../_virtual/index3.js";
8
8
  import Ne from "../../../../rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.js";
9
9
  import Te from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.js";
10
10
  import o, { useRef as Y, useImperativeHandle as $e, useEffect as Ie } from "react";
@@ -1,5 +1,5 @@
1
1
  import t from "./TextArea.js";
2
- import "../../../../../../../../../_virtual/index4.js";
2
+ import "../../../../../../../../../_virtual/index3.js";
3
3
  import "../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.js";
4
4
  import "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.js";
5
5
  import "react";
@@ -1,5 +1,5 @@
1
1
  import { __exports as a } from "../../../../../../../../../_virtual/remark-custom-variable.js";
2
- import g from "../../../../../../../../../_virtual/index3.js";
2
+ import g from "../../../../../../../../../_virtual/index4.js";
3
3
  import { __require as h } from "./interaction-parser.js";
4
4
  var m;
5
5
  function C() {
@@ -1,5 +1,5 @@
1
1
  import { __exports as n } from "../../../../../../../../../_virtual/remark-interaction.js";
2
- import I from "../../../../../../../../../_virtual/index3.js";
2
+ import I from "../../../../../../../../../_virtual/index4.js";
3
3
  import { __require as g } from "./interaction-parser.js";
4
4
  var m;
5
5
  function k() {
@@ -1,5 +1,5 @@
1
1
  import { bail as P } from "../../../../bail@2.0.2/node_modules/bail/index.js";
2
- import y from "../../../../../../../../../_virtual/index6.js";
2
+ import y from "../../../../../../../../../_virtual/index5.js";
3
3
  import z from "../../../../is-plain-obj@4.1.0/node_modules/is-plain-obj/index.js";
4
4
  import { CallableInstance as C } from "./callable-instance.js";
5
5
  import { trough as A } from "../../../../trough@2.2.0/node_modules/trough/lib/index.js";
@@ -1,7 +1,8 @@
1
- import { getAugmentedNamespace as e } from "./_commonjsHelpers.js";
2
- import * as r from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/unist-util-visit@5.0.0/node_modules/unist-util-visit/index.js";
3
- const m = /* @__PURE__ */ e(r);
1
+ import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
+ import { __require as s } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js";
3
+ var e = s();
4
+ const t = /* @__PURE__ */ r(e);
4
5
  export {
5
- m as default
6
+ t as default
6
7
  };
7
8
  //# sourceMappingURL=index3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,8 +1,7 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as s } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js";
3
- var e = s();
4
- const t = /* @__PURE__ */ r(e);
1
+ import { getAugmentedNamespace as e } from "./_commonjsHelpers.js";
2
+ import * as r from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/unist-util-visit@5.0.0/node_modules/unist-util-visit/index.js";
3
+ const m = /* @__PURE__ */ e(r);
5
4
  export {
6
- t as default
5
+ m as default
7
6
  };
8
7
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,7 +1,7 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/style-to-js@1.1.18/node_modules/style-to-js/cjs/index.js";
3
- var t = o();
4
- const a = /* @__PURE__ */ r(t);
1
+ import { getDefaultExportFromCjs as e } from "./_commonjsHelpers.js";
2
+ import { __require as r } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js";
3
+ var t = r();
4
+ const a = /* @__PURE__ */ e(t);
5
5
  export {
6
6
  a as default
7
7
  };
@@ -1,7 +1,7 @@
1
- import { getDefaultExportFromCjs as e } from "./_commonjsHelpers.js";
2
- import { __require as r } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/extend@3.0.2/node_modules/extend/index.js";
3
- var t = r();
4
- const a = /* @__PURE__ */ e(t);
1
+ import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
+ import { __require as o } from "../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/style-to-js@1.1.18/node_modules/style-to-js/cjs/index.js";
3
+ var t = o();
4
+ const a = /* @__PURE__ */ r(t);
5
5
  export {
6
6
  a as default
7
7
  };
@@ -1,49 +1,41 @@
1
- import { j as f } from "../../_virtual/jsx-runtime.js";
2
- import { useState as y, useRef as j, useEffect as u, useMemo as w } from "react";
3
- import { parseContentHtmlStreamChunk as v } from "./utils/content-html-stream.js";
4
- const k = (o) => o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"), I = ({
5
- payload: o,
6
- renderNarrationAsCaption: c = !1,
7
- maxVisibleStepNumber: l,
8
- visibleStepNumber: i
1
+ import { j as x } from "../../_virtual/jsx-runtime.js";
2
+ import { useState as T, useRef as N, useEffect as v, useMemo as D } from "react";
3
+ import { parseContentHtmlStreamChunk as I } from "./utils/content-html-stream.js";
4
+ const M = (m) => m.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;"), k = /<script\b([^>]*)>([\s\S]*?)<\/script>/gim, q = ({
5
+ payload: m,
6
+ renderNarrationAsCaption: h = !1,
7
+ maxVisibleStepNumber: g,
8
+ visibleStepNumber: d
9
9
  }) => {
10
- const [n, m] = y(
10
+ const [s, y] = T(
11
11
  []
12
- ), d = j(null);
13
- u(() => {
14
- if (typeof o > "u") {
15
- m([]);
12
+ ), u = N(null), l = N(-1), [w, C] = T(!1);
13
+ v(() => {
14
+ if (typeof m > "u") {
15
+ y([]);
16
16
  return;
17
17
  }
18
- const e = o.trim();
19
- if (!e) {
20
- m([]);
18
+ const n = m.trim();
19
+ if (!n) {
20
+ y([]);
21
21
  return;
22
22
  }
23
- const t = v(e);
24
- t && m((r) => {
25
- const a = `${t.blockIndex}-${t.stepNumber}`;
23
+ const t = I(n);
24
+ t && y((e) => {
25
+ const o = `${t.blockIndex}-${t.stepNumber}`;
26
26
  return [
27
- ...r.filter((s) => s.id !== a),
27
+ ...e.filter((r) => r.id !== o),
28
28
  {
29
- id: a,
29
+ id: o,
30
30
  stepNumber: t.stepNumber,
31
+ type: t.type,
31
32
  html: t.html,
32
33
  narration: t.narration
33
34
  }
34
- ].sort((s, H) => s.stepNumber - H.stepNumber);
35
+ ].sort((r, c) => r.stepNumber - c.stepNumber);
35
36
  });
36
- }, [o]);
37
- const h = w(() => n.length === 0 ? "" : (typeof i == "number" ? n.filter(
38
- (t) => t.stepNumber === i
39
- ) : typeof l == "number" ? n.filter(
40
- (t) => t.stepNumber <= l
41
- ) : n).map((t) => {
42
- const r = !c && t.narration ? `<p class="content-render-html-stream-narration">${k(
43
- t.narration
44
- )}</p>` : "";
45
- return `${t.html}${r}`;
46
- }).join(""), [l, c, n]), x = w(() => `
37
+ }, [m]);
38
+ const L = D(() => `
47
39
  <!DOCTYPE html>
48
40
  <html lang="zh-CN">
49
41
  <head>
@@ -73,54 +65,112 @@ const k = (o) => o.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&
73
65
  <div id="content-container"></div>
74
66
  </body>
75
67
  </html>
76
- `.trim(), []), [p, b] = y(!1);
77
- return u(() => {
78
- const e = d.current;
79
- if (!e) return;
68
+ `.trim(), []);
69
+ v(() => {
70
+ const n = u.current;
71
+ if (!n) return;
80
72
  const t = () => {
81
- b(!0);
73
+ C(!0), l.current = -1;
82
74
  };
83
- return e.addEventListener("load", t), () => {
84
- e.removeEventListener("load", t);
75
+ return n.addEventListener("load", t), () => {
76
+ n.removeEventListener("load", t);
85
77
  };
86
- }, []), u(() => {
87
- if (!p) return;
88
- const e = d.current;
89
- if (!e) return;
90
- const t = e.contentDocument;
78
+ }, []);
79
+ const R = (n, t, e) => {
80
+ e.forEach(({ attrs: o, content: a }) => {
81
+ const r = n.createElement("script");
82
+ if (r.setAttribute("data-mdflow-dynamic", "true"), o.trim()) {
83
+ const c = n.createElement("div");
84
+ c.innerHTML = `<script ${o}><\/script>`;
85
+ const i = c.querySelector("script");
86
+ i && Array.from(i.attributes).forEach((f) => {
87
+ r.setAttribute(f.name, f.value);
88
+ });
89
+ }
90
+ a && r.appendChild(n.createTextNode(a)), t.appendChild(r);
91
+ });
92
+ }, j = (n) => {
93
+ const t = u.current;
91
94
  if (!t) return;
92
- const r = t.getElementById("content-container");
93
- r && (r.innerHTML = h);
95
+ const e = t.contentDocument;
96
+ if (!e) return;
97
+ const o = e.getElementById("content-container");
98
+ n.forEach((r) => {
99
+ const c = r.type === "head", i = c ? e.head : o;
100
+ if (!i) return;
101
+ let f = r.html;
102
+ !c && !h && r.narration && (f += `<p class="content-render-html-stream-narration">${M(
103
+ r.narration
104
+ )}</p>`);
105
+ const H = [], E = f.replace(
106
+ k,
107
+ (b, S, p) => (H.push({ attrs: S, content: p }), "")
108
+ );
109
+ if (E.trim())
110
+ if (c) {
111
+ const b = e.createElement("div");
112
+ b.innerHTML = E, Array.from(b.children).forEach((S) => {
113
+ const p = S.cloneNode(!0);
114
+ p.setAttribute("data-mdflow-dynamic", "true"), e.head.appendChild(p);
115
+ });
116
+ } else
117
+ i.insertAdjacentHTML("beforeend", E);
118
+ R(e, c ? e.head : i, H);
119
+ });
94
120
  const a = () => {
95
121
  try {
96
- const s = t.body?.scrollHeight || 0;
97
- e.style.height = `${Math.max(s, 100)}px`;
122
+ const r = e.body?.scrollHeight || 0;
123
+ t.style.height = `${Math.max(r, 100)}px`;
98
124
  } catch {
99
125
  }
100
126
  };
101
- a();
102
- const g = window.setTimeout(a, 60);
103
- return () => {
104
- window.clearTimeout(g);
105
- };
106
- }, [h, p]), /* @__PURE__ */ f.jsxs("div", { className: "content-render-html content-render-html-stream", children: [
107
- /* @__PURE__ */ f.jsx(
127
+ a(), setTimeout(a, 60);
128
+ };
129
+ return v(() => {
130
+ if (!w || s.length === 0) return;
131
+ const n = u.current;
132
+ if (!n?.contentDocument) return;
133
+ const t = n.contentDocument;
134
+ let e = -1;
135
+ typeof d == "number" ? e = d : typeof g == "number" ? e = g : e = s[s.length - 1].stepNumber;
136
+ const o = l.current;
137
+ if (e === o)
138
+ return;
139
+ if (e < o) {
140
+ const c = t.getElementById("content-container");
141
+ c && (c.innerHTML = ""), t.head.querySelectorAll('[data-mdflow-dynamic="true"]').forEach((i) => i.remove()), l.current = -1;
142
+ }
143
+ const a = l.current + 1, r = s.filter(
144
+ (c) => c.stepNumber >= a && c.stepNumber <= e
145
+ );
146
+ r.length > 0 && (j(r), l.current = e);
147
+ }, [
148
+ w,
149
+ s,
150
+ d,
151
+ g,
152
+ h
153
+ ]), /* @__PURE__ */ x.jsxs("div", { className: "content-render-html content-render-html-stream", children: [
154
+ /* @__PURE__ */ x.jsx(
108
155
  "iframe",
109
156
  {
110
- ref: d,
157
+ ref: u,
111
158
  className: "content-render-html-stream-iframe",
112
159
  sandbox: "allow-same-origin allow-scripts",
113
160
  loading: "lazy",
114
161
  title: "content-render-html-stream",
115
- srcDoc: x
162
+ srcDoc: L
116
163
  }
117
164
  ),
118
- c && n.length > 0 && /* @__PURE__ */ f.jsx("div", { className: "content-render-html-stream-caption", children: typeof i == "number" && n.find(
119
- (t) => t.stepNumber === i
120
- )?.narration || n[n.length - 1].narration })
165
+ h && s.length > 0 && /* @__PURE__ */ x.jsx("div", { className: "content-render-html-stream-caption", children: (() => {
166
+ const n = typeof d == "number" ? d : l.current;
167
+ return (s.find(
168
+ (o) => o.stepNumber === n
169
+ ) || s[s.length - 1])?.narration;
170
+ })() })
121
171
  ] });
122
172
  };
123
173
  export {
124
- I as default
174
+ q as default
125
175
  };
126
176
  //# sourceMappingURL=ContentBlackboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentBlackboard.js","sources":["../../../src/components/ContentRender/ContentBlackboard.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n ContentHtmlStreamChunk,\n parseContentHtmlStreamChunk,\n} from \"./utils/content-html-stream\";\n\ntype ContentBlackboardProps = {\n payload?: string;\n renderNarrationAsCaption?: boolean;\n maxVisibleStepNumber?: number;\n visibleStepNumber?: number;\n};\n\ntype ContentHtmlStreamStep = {\n id: string;\n stepNumber: number;\n html: string;\n narration?: string;\n};\n\nconst escapeHtml = (value: string) =>\n value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n\nconst ContentBlackboard: React.FC<ContentBlackboardProps> = ({\n payload,\n renderNarrationAsCaption = false,\n maxVisibleStepNumber,\n visibleStepNumber,\n}) => {\n const [streamingSteps, setStreamingSteps] = useState<ContentHtmlStreamStep[]>(\n []\n );\n const iframeRef = useRef<HTMLIFrameElement>(null);\n\n useEffect(() => {\n if (typeof payload === \"undefined\") {\n setStreamingSteps([]);\n return;\n }\n\n const trimmed = payload.trim();\n if (!trimmed) {\n setStreamingSteps([]);\n return;\n }\n\n const chunk: ContentHtmlStreamChunk | null =\n parseContentHtmlStreamChunk(trimmed);\n if (!chunk) return;\n\n setStreamingSteps((prev) => {\n const id = `${chunk.blockIndex}-${chunk.stepNumber}`;\n const filtered = prev.filter((item) => item.id !== id);\n return [\n ...filtered,\n {\n id,\n stepNumber: chunk.stepNumber,\n html: chunk.html,\n narration: chunk.narration,\n },\n ].sort((a, b) => a.stepNumber - b.stepNumber);\n });\n }, [payload]);\n\n const combinedHtml = useMemo(() => {\n if (streamingSteps.length === 0) return \"\";\n const filtered = (() => {\n if (typeof visibleStepNumber === \"number\") {\n return streamingSteps.filter(\n (step) => step.stepNumber === visibleStepNumber\n );\n }\n if (typeof maxVisibleStepNumber === \"number\") {\n return streamingSteps.filter(\n (step) => step.stepNumber <= maxVisibleStepNumber\n );\n }\n return streamingSteps;\n })();\n return filtered\n .map((step) => {\n const narrationHtml =\n !renderNarrationAsCaption && step.narration\n ? `<p class=\"content-render-html-stream-narration\">${escapeHtml(\n step.narration\n )}</p>`\n : \"\";\n return `${step.html}${narrationHtml}`;\n })\n .join(\"\");\n }, [maxVisibleStepNumber, renderNarrationAsCaption, streamingSteps]);\n\n const templateHtml = useMemo(() => {\n return `\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css\"\n />\n <style>\n :root { color-scheme: light; }\n body {\n margin: 0;\n padding: 16px;\n color: #0f172a;\n font-family: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n line-height: 1.6;\n }\n .content-render-html-stream-narration {\n margin-top: 10px;\n color: #4b5563;\n font-size: 14px;\n }\n </style>\n</head>\n<body>\n <div id=\"content-container\"></div>\n</body>\n</html>\n `.trim();\n }, []);\n\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n if (!iframe) return;\n\n const handleLoad = () => {\n setIsLoaded(true);\n };\n\n iframe.addEventListener(\"load\", handleLoad);\n return () => {\n iframe.removeEventListener(\"load\", handleLoad);\n };\n }, []);\n\n useEffect(() => {\n if (!isLoaded) return;\n const iframe = iframeRef.current;\n if (!iframe) return;\n const doc = iframe.contentDocument;\n if (!doc) return;\n\n const container = doc.getElementById(\"content-container\");\n if (container) {\n container.innerHTML = combinedHtml;\n }\n\n const updateHeight = () => {\n try {\n const height = doc.body?.scrollHeight || 0;\n iframe.style.height = `${Math.max(height, 100)}px`;\n } catch {\n // ignore cross-origin issues\n }\n };\n\n updateHeight();\n // re-measure after a short delay to allow for rendering (e.g. images)\n const timer = window.setTimeout(updateHeight, 60);\n return () => {\n window.clearTimeout(timer);\n };\n }, [combinedHtml, isLoaded]);\n\n return (\n <div className=\"content-render-html content-render-html-stream\">\n <iframe\n ref={iframeRef}\n className=\"content-render-html-stream-iframe\"\n sandbox=\"allow-same-origin allow-scripts\"\n loading=\"lazy\"\n title=\"content-render-html-stream\"\n srcDoc={templateHtml}\n />\n {renderNarrationAsCaption && streamingSteps.length > 0 && (\n <div className=\"content-render-html-stream-caption\">\n {(() => {\n if (typeof visibleStepNumber === \"number\") {\n const target = streamingSteps.find(\n (step) => step.stepNumber === visibleStepNumber\n );\n return (\n target?.narration ||\n streamingSteps[streamingSteps.length - 1].narration\n );\n }\n return streamingSteps[streamingSteps.length - 1].narration;\n })()}\n </div>\n )}\n </div>\n );\n};\n\nexport default ContentBlackboard;\n"],"names":["escapeHtml","value","ContentBlackboard","payload","renderNarrationAsCaption","maxVisibleStepNumber","visibleStepNumber","streamingSteps","setStreamingSteps","useState","iframeRef","useRef","useEffect","trimmed","chunk","parseContentHtmlStreamChunk","prev","id","item","a","b","combinedHtml","useMemo","step","narrationHtml","templateHtml","isLoaded","setIsLoaded","iframe","handleLoad","doc","container","updateHeight","height","timer","jsxs","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ContentBlackboard.js","sources":["../../../src/components/ContentRender/ContentBlackboard.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n ContentHtmlStreamChunk,\n parseContentHtmlStreamChunk,\n} from \"./utils/content-html-stream\";\n\ntype ContentBlackboardProps = {\n payload?: string;\n renderNarrationAsCaption?: boolean;\n maxVisibleStepNumber?: number;\n visibleStepNumber?: number;\n};\n\ntype ContentHtmlStreamStep = {\n id: string;\n stepNumber: number;\n type?: \"head\" | \"body\";\n html: string;\n narration?: string;\n};\n\nconst escapeHtml = (value: string) =>\n value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n\nconst SCRIPT_REGEX = /<script\\b([^>]*)>([\\s\\S]*?)<\\/script>/gim;\n\nconst ContentBlackboard: React.FC<ContentBlackboardProps> = ({\n payload,\n renderNarrationAsCaption = false,\n maxVisibleStepNumber,\n visibleStepNumber,\n}) => {\n const [streamingSteps, setStreamingSteps] = useState<ContentHtmlStreamStep[]>(\n []\n );\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const renderedStepNumberRef = useRef<number>(-1);\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n if (typeof payload === \"undefined\") {\n setStreamingSteps([]);\n return;\n }\n\n const trimmed = payload.trim();\n if (!trimmed) {\n setStreamingSteps([]);\n return;\n }\n\n const chunk: ContentHtmlStreamChunk | null =\n parseContentHtmlStreamChunk(trimmed);\n if (!chunk) return;\n\n setStreamingSteps((prev) => {\n const id = `${chunk.blockIndex}-${chunk.stepNumber}`;\n const filtered = prev.filter((item) => item.id !== id);\n return [\n ...filtered,\n {\n id,\n stepNumber: chunk.stepNumber,\n type: chunk.type,\n html: chunk.html,\n narration: chunk.narration,\n },\n ].sort((a, b) => a.stepNumber - b.stepNumber);\n });\n }, [payload]);\n\n const templateHtml = useMemo(() => {\n return `\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css\"\n />\n <style>\n :root { color-scheme: light; }\n body {\n margin: 0;\n padding: 16px;\n color: #0f172a;\n font-family: \"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n line-height: 1.6;\n }\n .content-render-html-stream-narration {\n margin-top: 10px;\n color: #4b5563;\n font-size: 14px;\n }\n </style>\n</head>\n<body>\n <div id=\"content-container\"></div>\n</body>\n</html>\n `.trim();\n }, []);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n if (!iframe) return;\n\n const handleLoad = () => {\n setIsLoaded(true);\n // Reset rendered step on iframe reload\n renderedStepNumberRef.current = -1;\n };\n\n iframe.addEventListener(\"load\", handleLoad);\n return () => {\n iframe.removeEventListener(\"load\", handleLoad);\n };\n }, []);\n\n const executeScripts = (\n doc: Document,\n target: Element,\n scripts: { attrs: string; content: string }[]\n ) => {\n scripts.forEach(({ attrs, content }) => {\n const scriptEl = doc.createElement(\"script\");\n scriptEl.setAttribute(\"data-mdflow-dynamic\", \"true\");\n\n // Parse attributes using a temporary div\n if (attrs.trim()) {\n const tempDiv = doc.createElement(\"div\");\n tempDiv.innerHTML = `<script ${attrs}></script>`;\n const tempScript = tempDiv.querySelector(\"script\");\n if (tempScript) {\n Array.from(tempScript.attributes).forEach((attr) => {\n scriptEl.setAttribute(attr.name, attr.value);\n });\n }\n }\n\n if (content) {\n scriptEl.appendChild(doc.createTextNode(content));\n }\n target.appendChild(scriptEl);\n });\n };\n\n const renderSteps = (steps: ContentHtmlStreamStep[]) => {\n const iframe = iframeRef.current;\n if (!iframe) return;\n const doc = iframe.contentDocument;\n if (!doc) return;\n const container = doc.getElementById(\"content-container\");\n\n steps.forEach((step) => {\n const isHead = step.type === \"head\";\n const targetContainer = isHead ? doc.head : container;\n if (!targetContainer) return;\n\n let htmlToProcess = step.html;\n if (!isHead && !renderNarrationAsCaption && step.narration) {\n htmlToProcess += `<p class=\"content-render-html-stream-narration\">${escapeHtml(\n step.narration\n )}</p>`;\n }\n\n const scripts: { attrs: string; content: string }[] = [];\n const cleanHtml = htmlToProcess.replace(\n SCRIPT_REGEX,\n (match, attrs, content) => {\n scripts.push({ attrs, content });\n return \"\";\n }\n );\n\n // Insert non-script HTML\n if (cleanHtml.trim()) {\n if (isHead) {\n const tempDiv = doc.createElement(\"div\");\n tempDiv.innerHTML = cleanHtml;\n Array.from(tempDiv.children).forEach((child) => {\n const newChild = child.cloneNode(true) as Element;\n newChild.setAttribute(\"data-mdflow-dynamic\", \"true\");\n doc.head.appendChild(newChild);\n });\n } else {\n targetContainer.insertAdjacentHTML(\"beforeend\", cleanHtml);\n }\n }\n\n // Execute extracted scripts\n executeScripts(doc, isHead ? doc.head : targetContainer, scripts);\n });\n\n // Update iframe height\n const updateHeight = () => {\n try {\n const height = doc.body?.scrollHeight || 0;\n iframe.style.height = `${Math.max(height, 100)}px`;\n } catch {\n // ignore\n }\n };\n updateHeight();\n setTimeout(updateHeight, 60);\n };\n\n useEffect(() => {\n if (!isLoaded || streamingSteps.length === 0) return;\n\n const iframe = iframeRef.current;\n if (!iframe?.contentDocument) return;\n const doc = iframe.contentDocument;\n\n let targetStepNumber = -1;\n\n if (typeof visibleStepNumber === \"number\") {\n targetStepNumber = visibleStepNumber;\n } else if (typeof maxVisibleStepNumber === \"number\") {\n targetStepNumber = maxVisibleStepNumber;\n } else {\n // Default to the last step if no restrictions\n targetStepNumber = streamingSteps[streamingSteps.length - 1].stepNumber;\n }\n\n const currentRendered = renderedStepNumberRef.current;\n\n if (targetStepNumber === currentRendered) {\n return;\n }\n\n if (targetStepNumber < currentRendered) {\n // Reset\n const container = doc.getElementById(\"content-container\");\n if (container) container.innerHTML = \"\";\n doc.head\n .querySelectorAll('[data-mdflow-dynamic=\"true\"]')\n .forEach((el) => el.remove());\n renderedStepNumberRef.current = -1;\n }\n\n // Render from (newCurrent + 1) to target\n const startStep = renderedStepNumberRef.current + 1;\n const stepsToRender = streamingSteps.filter(\n (step) =>\n step.stepNumber >= startStep && step.stepNumber <= targetStepNumber\n );\n\n if (stepsToRender.length > 0) {\n renderSteps(stepsToRender);\n renderedStepNumberRef.current = targetStepNumber;\n }\n }, [\n isLoaded,\n streamingSteps,\n visibleStepNumber,\n maxVisibleStepNumber,\n renderNarrationAsCaption,\n ]);\n\n return (\n <div className=\"content-render-html content-render-html-stream\">\n <iframe\n ref={iframeRef}\n className=\"content-render-html-stream-iframe\"\n sandbox=\"allow-same-origin allow-scripts\"\n loading=\"lazy\"\n title=\"content-render-html-stream\"\n srcDoc={templateHtml}\n />\n {renderNarrationAsCaption && streamingSteps.length > 0 && (\n <div className=\"content-render-html-stream-caption\">\n {(() => {\n const currentStepNum =\n typeof visibleStepNumber === \"number\"\n ? visibleStepNumber\n : renderedStepNumberRef.current;\n\n const target = streamingSteps.find(\n (step) => step.stepNumber === currentStepNum\n );\n const displayStep =\n target || streamingSteps[streamingSteps.length - 1];\n return displayStep?.narration;\n })()}\n </div>\n )}\n </div>\n );\n};\n\nexport default ContentBlackboard;\n"],"names":["escapeHtml","value","SCRIPT_REGEX","ContentBlackboard","payload","renderNarrationAsCaption","maxVisibleStepNumber","visibleStepNumber","streamingSteps","setStreamingSteps","useState","iframeRef","useRef","renderedStepNumberRef","isLoaded","setIsLoaded","useEffect","trimmed","chunk","parseContentHtmlStreamChunk","prev","id","item","a","b","templateHtml","useMemo","iframe","handleLoad","executeScripts","doc","target","scripts","attrs","content","scriptEl","tempDiv","tempScript","attr","renderSteps","steps","container","step","isHead","targetContainer","htmlToProcess","cleanHtml","match","child","newChild","updateHeight","height","targetStepNumber","currentRendered","el","startStep","stepsToRender","jsxs","jsx","currentStepNum"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export type ContentHtmlStreamChunk = {
2
+ type?: "head" | "body";
2
3
  html: string;
3
4
  narration?: string;
4
5
  stepNumber: number;
@@ -1,18 +1,19 @@
1
- const p = (c) => {
1
+ const u = (c) => {
2
2
  try {
3
- const n = JSON.parse(c), e = typeof n == "object" && n !== null ? n : null, t = typeof e?.data == "object" && e?.data !== null ? e.data : e, r = t?.html, o = t?.narration, a = t?.step_number ?? t?.stepNumber, s = t?.is_complete ?? t?.isComplete, l = t?.block_index ?? t?.blockIndex ?? 0;
4
- return typeof r != "string" || typeof a != "number" || typeof s != "boolean" || typeof l != "number" ? null : {
5
- html: r,
6
- narration: typeof o == "string" && o.trim() ? o : void 0,
7
- stepNumber: a,
8
- isComplete: s,
9
- blockIndex: l
3
+ const n = JSON.parse(c), e = typeof n == "object" && n !== null ? n : null, t = typeof e?.data == "object" && e?.data !== null ? e.data : e, o = t?.type, a = t?.html, r = t?.narration, s = t?.step_number ?? t?.stepNumber, l = t?.is_complete ?? t?.isComplete, p = t?.block_index ?? t?.blockIndex ?? 0;
4
+ return typeof a != "string" || typeof s != "number" || typeof l != "boolean" || typeof p != "number" ? null : {
5
+ type: o === "head" || o === "body" ? o : "body",
6
+ html: a,
7
+ narration: typeof r == "string" && r.trim() ? r : void 0,
8
+ stepNumber: s,
9
+ isComplete: l,
10
+ blockIndex: p
10
11
  };
11
12
  } catch {
12
13
  return null;
13
14
  }
14
15
  };
15
16
  export {
16
- p as parseContentHtmlStreamChunk
17
+ u as parseContentHtmlStreamChunk
17
18
  };
18
19
  //# sourceMappingURL=content-html-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-html-stream.js","sources":["../../../../src/components/ContentRender/utils/content-html-stream.ts"],"sourcesContent":["export type ContentHtmlStreamChunk = {\n html: string;\n narration?: string;\n stepNumber: number;\n isComplete: boolean;\n blockIndex: number;\n};\n\nexport const parseContentHtmlStreamChunk = (\n payload: string\n): ContentHtmlStreamChunk | null => {\n try {\n const parsed = JSON.parse(payload);\n const source =\n typeof parsed === \"object\" && parsed !== null ? parsed : null;\n const maybeData =\n typeof source?.data === \"object\" && source?.data !== null\n ? source.data\n : source;\n\n const html = maybeData?.html;\n const narration = maybeData?.narration;\n const stepNumber = maybeData?.step_number ?? maybeData?.stepNumber;\n const isComplete = maybeData?.is_complete ?? maybeData?.isComplete;\n const blockIndex = maybeData?.block_index ?? maybeData?.blockIndex ?? 0;\n\n if (\n typeof html !== \"string\" ||\n typeof stepNumber !== \"number\" ||\n typeof isComplete !== \"boolean\" ||\n typeof blockIndex !== \"number\"\n ) {\n return null;\n }\n\n return {\n html,\n narration:\n typeof narration === \"string\" && narration.trim()\n ? narration\n : undefined,\n stepNumber,\n isComplete,\n blockIndex,\n };\n } catch {\n return null;\n }\n};\n"],"names":["parseContentHtmlStreamChunk","payload","parsed","source","maybeData","html","narration","stepNumber","isComplete","blockIndex"],"mappings":"AAQO,MAAMA,IAA8B,CACzCC,MACkC;AAClC,MAAI;AACF,UAAMC,IAAS,KAAK,MAAMD,CAAO,GAC3BE,IACJ,OAAOD,KAAW,YAAYA,MAAW,OAAOA,IAAS,MACrDE,IACJ,OAAOD,GAAQ,QAAS,YAAYA,GAAQ,SAAS,OACjDA,EAAO,OACPA,GAEAE,IAAOD,GAAW,MAClBE,IAAYF,GAAW,WACvBG,IAAaH,GAAW,eAAeA,GAAW,YAClDI,IAAaJ,GAAW,eAAeA,GAAW,YAClDK,IAAaL,GAAW,eAAeA,GAAW,cAAc;AAEtE,WACE,OAAOC,KAAS,YAChB,OAAOE,KAAe,YACtB,OAAOC,KAAe,aACtB,OAAOC,KAAe,WAEf,OAGF;AAAA,MACL,MAAAJ;AAAA,MACA,WACE,OAAOC,KAAc,YAAYA,EAAU,KAAA,IACvCA,IACA;AAAA,MACN,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,IAAA;AAAA,EAEJ,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
1
+ {"version":3,"file":"content-html-stream.js","sources":["../../../../src/components/ContentRender/utils/content-html-stream.ts"],"sourcesContent":["export type ContentHtmlStreamChunk = {\n type?: \"head\" | \"body\";\n html: string;\n narration?: string;\n stepNumber: number;\n isComplete: boolean;\n blockIndex: number;\n};\n\nexport const parseContentHtmlStreamChunk = (\n payload: string\n): ContentHtmlStreamChunk | null => {\n try {\n const parsed = JSON.parse(payload);\n const source =\n typeof parsed === \"object\" && parsed !== null ? parsed : null;\n const maybeData =\n typeof source?.data === \"object\" && source?.data !== null\n ? source.data\n : source;\n\n const type = maybeData?.type;\n const html = maybeData?.html;\n const narration = maybeData?.narration;\n const stepNumber = maybeData?.step_number ?? maybeData?.stepNumber;\n const isComplete = maybeData?.is_complete ?? maybeData?.isComplete;\n const blockIndex = maybeData?.block_index ?? maybeData?.blockIndex ?? 0;\n\n if (\n typeof html !== \"string\" ||\n typeof stepNumber !== \"number\" ||\n typeof isComplete !== \"boolean\" ||\n typeof blockIndex !== \"number\"\n ) {\n return null;\n }\n\n return {\n type: type === \"head\" || type === \"body\" ? type : \"body\",\n html,\n narration:\n typeof narration === \"string\" && narration.trim()\n ? narration\n : undefined,\n stepNumber,\n isComplete,\n blockIndex,\n };\n } catch {\n return null;\n }\n};\n"],"names":["parseContentHtmlStreamChunk","payload","parsed","source","maybeData","type","html","narration","stepNumber","isComplete","blockIndex"],"mappings":"AASO,MAAMA,IAA8B,CACzCC,MACkC;AAClC,MAAI;AACF,UAAMC,IAAS,KAAK,MAAMD,CAAO,GAC3BE,IACJ,OAAOD,KAAW,YAAYA,MAAW,OAAOA,IAAS,MACrDE,IACJ,OAAOD,GAAQ,QAAS,YAAYA,GAAQ,SAAS,OACjDA,EAAO,OACPA,GAEAE,IAAOD,GAAW,MAClBE,IAAOF,GAAW,MAClBG,IAAYH,GAAW,WACvBI,IAAaJ,GAAW,eAAeA,GAAW,YAClDK,IAAaL,GAAW,eAAeA,GAAW,YAClDM,IAAaN,GAAW,eAAeA,GAAW,cAAc;AAEtE,WACE,OAAOE,KAAS,YAChB,OAAOE,KAAe,YACtB,OAAOC,KAAe,aACtB,OAAOC,KAAe,WAEf,OAGF;AAAA,MACL,MAAML,MAAS,UAAUA,MAAS,SAASA,IAAO;AAAA,MAClD,MAAAC;AAAA,MACA,WACE,OAAOC,KAAc,YAAYA,EAAU,KAAA,IACvCA,IACA;AAAA,MACN,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,IAAA;AAAA,EAEJ,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
@@ -1,7 +1,7 @@
1
1
  import { j as i } from "../../../_virtual/jsx-runtime.js";
2
2
  import * as d from "react";
3
3
  import n from "../../../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.js";
4
- import "../../../_virtual/index4.js";
4
+ import "../../../_virtual/index3.js";
5
5
  import "../../../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.js";
6
6
  import "../../../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.js";
7
7
  import "../../../Documents/ai-shifu/markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.js";
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.1.16 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-space-x-reverse:0}}}@layer theme{:root,:host{--font-sans:"PingFang SC",system-ui,sans-serif;--font-mono:"JetBrains Mono",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-100:oklch(96.2% .044 156.743);--color-green-300:oklch(87.1% .15 154.449);--color-green-700:oklch(52.7% .154 150.069);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--background);--color-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-border:var(--border);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground)}}@layer base{@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:#e2e8f0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 2px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary)10%,transparent)}}.font-mono{font-feature-settings:"liga" 0,"clig" 0,"calt" 0}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.my-3{margin-block:calc(var(--spacing)*3)}.my-4{margin-block:calc(var(--spacing)*4)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-\[9px\]{margin-top:9px}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-\[2px\]{margin-bottom:2px}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-48{height:calc(var(--spacing)*48)}.h-auto{height:auto}.h-full{height:100%}.max-h-\[300px\]{max-height:300px}.min-h-\[32px\]{min-height:32px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-24{width:calc(var(--spacing)*24)}.w-72{width:calc(var(--spacing)*72)}.w-\[360px\]{width:360px}.w-\[1024px\]{width:1024px}.w-auto{width:auto}.w-full{width:100%}.max-w-\[500px\]{max-width:500px}.max-w-lg{max-width:var(--container-lg)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[300px\]{min-width:300px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.resize{resize:both}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[20px_1fr_20px\]{grid-template-rows:20px 1fr 20px}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-center{justify-items:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-16{gap:calc(var(--spacing)*16)}.gap-\[24px\]{gap:24px}.gap-\[32px\]{gap:32px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-\[9px\]{row-gap:9px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#e5e5e5\]{border-color:#e5e5e5}.border-black\/\[\.08\]{border-color:#00000014}@supports (color:color-mix(in lab, red, red)){.border-black\/\[\.08\]{border-color:color-mix(in oklab,var(--color-black)8%,transparent)}}.border-blue-600{border-color:var(--color-blue-600)}.border-border{border-color:var(--color-border)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-300{border-color:var(--color-green-300)}.border-muted{border-color:var(--color-muted)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.\!bg-\[\#171717\]{background-color:#171717!important}.bg-\[\#D7D7D7\]{background-color:#d7d7d7}.bg-accent{background-color:var(--color-accent)}.bg-background,.bg-background\/80{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--color-background)80%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/\[\.05\]{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[\.05\]{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-foreground{background-color:var(--color-foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-green-100{background-color:var(--color-green-100)}.bg-muted\/10{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted)10%,transparent)}}.bg-muted\/40{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--color-muted)40%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.\!fill-\[\#171717\]{fill:#171717!important}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-0{padding-right:calc(var(--spacing)*0)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.font-\[family-name\:var\(--font-geist-mono\)\]{font-family:var(--font-geist-mono)}.font-\[family-name\:var\(--font-geist-sans\)\]{font-family:var(--font-geist-sans)}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing)*6)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[16px\]{font-size:16px}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#0A0A0A\]{color:#0a0a0a}.text-background{color:var(--color-background)}.text-foreground{color:var(--color-foreground)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-neutral-900{color:var(--color-neutral-900)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-\[\>input\]\/input-group\:pt-2\.5:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing)*2.5)}.group-has-\[\>input\]\/input-group\:pb-2\.5:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing)*2.5)}.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--color-primary)}.selection\:bg-primary::selection{background-color:var(--color-primary)}.selection\:text-primary-foreground ::selection{color:var(--color-primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--color-primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-\[rgba\(99\,114\,128\,1\)\]::placeholder{color:#637280}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-transparent:hover{border-color:#0000}.hover\:bg-\[\#383838\]:hover{background-color:#383838}.hover\:bg-\[\#f2f2f2\]:hover{background-color:#f2f2f2}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-primary\/90:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:underline-offset-4:hover{text-underline-offset:4px}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing)*0)}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing)*2)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}@media (min-width:40rem){.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:p-20{padding:calc(var(--spacing)*20)}.sm\:px-5{padding-inline:calc(var(--spacing)*5)}.sm\:text-left{text-align:left}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media (min-width:48rem){.md\:w-\[158px\]{width:158px}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (prefers-color-scheme:dark){.dark\:border-white\/\[\.145\]{border-color:#ffffff25}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/\[\.145\]{border-color:color-mix(in oklab,var(--color-white)14.5%,transparent)}}.dark\:bg-transparent{background-color:#0000}.dark\:bg-white\/\[\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.dark\:invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}@media (hover:hover){.dark\:hover\:bg-\[\#1a1a1a\]:hover{background-color:#1a1a1a}.dark\:hover\:bg-\[\#ccc\]:hover{background-color:#ccc}.dark\:hover\:bg-accent\/50:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--color-accent)50%,transparent)}}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\.border-b\]\:pb-3.border-b{padding-bottom:calc(var(--spacing)*3)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-3.border-t{padding-top:calc(var(--spacing)*3)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing)*3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing)*3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing)*2)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing)*2)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.bg-border{background-color:#e2e8f0!important}.section-subtitle{color:#64748bb3;font-size:.75rem;line-height:1}.title-subtitle-container{align-content:flex-start;align-items:baseline;gap:.2rem .4rem;line-height:1.3}.section-title-main{font-size:1.125rem;font-weight:700}.section-title-form{font-size:1rem;font-weight:600;line-height:1.25}}#storybook-root{width:100%}:root{--background:#fff;--foreground:#171717;--primary:#0f63ee;--primary-foreground:#fff;--border:#e2e8f0;--muted:#f8fafc;--muted-foreground:#64748b;--accent:#f5f5f5;--accent-foreground:#0f172a}body{background:var(--background);color:var(--foreground);font-family:PingFang SC,Microsoft YaHei,Source Han Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-space-x-reverse:0}}}@layer theme{:root,:host{--font-sans:"PingFang SC",system-ui,sans-serif;--font-mono:"JetBrains Mono",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-blue-50:oklch(97% .014 254.604);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--background);--color-foreground:var(--foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-border:var(--border);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground)}}@layer base{@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:#e2e8f0}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;box-shadow:0 0 0 2px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary)10%,transparent)}}.font-mono{font-feature-settings:"liga" 0,"clig" 0,"calt" 0}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.left-3{left:calc(var(--spacing)*3)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-50{z-index:50}.order-first{order:-9999}.order-last{order:9999}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing)*4)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-\[9px\]{margin-top:9px}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-\[2px\]{margin-bottom:2px}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-auto{height:auto}.h-full{height:100%}.max-h-\[300px\]{max-height:300px}.min-h-\[32px\]{min-height:32px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-24{width:calc(var(--spacing)*24)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[360px\]{width:360px}.w-\[1024px\]{width:1024px}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[500px\]{max-width:500px}.max-w-lg{max-width:var(--container-lg)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[300px\]{min-width:300px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-wait{cursor:wait}.resize{resize:both}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[20px_1fr_20px\]{grid-template-rows:20px 1fr 20px}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-center{justify-items:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-16{gap:calc(var(--spacing)*16)}.gap-\[24px\]{gap:24px}.gap-\[32px\]{gap:32px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-\[9px\]{row-gap:9px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[calc\(var\(--radius\)-5px\)\]{border-radius:calc(var(--radius) - 5px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#e5e5e5\]{border-color:#e5e5e5}.border-black\/\[\.08\]{border-color:#00000014}@supports (color:color-mix(in lab, red, red)){.border-black\/\[\.08\]{border-color:color-mix(in oklab,var(--color-black)8%,transparent)}}.border-blue-600{border-color:var(--color-blue-600)}.border-border{border-color:var(--color-border)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-muted{border-color:var(--color-muted)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-transparent{border-color:#0000}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.\!bg-\[\#171717\]{background-color:#171717!important}.bg-\[\#D7D7D7\]{background-color:#d7d7d7}.bg-accent{background-color:var(--color-accent)}.bg-background,.bg-background\/80{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab,var(--color-background)80%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/\[\.05\]{background-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[\.05\]{background-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-foreground{background-color:var(--color-foreground)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-muted\/10{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted)10%,transparent)}}.bg-muted\/40{background-color:var(--color-muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--color-muted)40%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-white{--tw-gradient-to:var(--color-white);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.\!fill-\[\#171717\]{fill:#171717!important}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-3{padding-top:calc(var(--spacing)*3)}.pr-0{padding-right:calc(var(--spacing)*0)}.pr-3{padding-right:calc(var(--spacing)*3)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.font-\[family-name\:var\(--font-geist-mono\)\]{font-family:var(--font-geist-mono)}.font-\[family-name\:var\(--font-geist-sans\)\]{font-family:var(--font-geist-sans)}.font-mono{font-family:var(--font-mono)}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-sm\/6{font-size:var(--text-sm);line-height:calc(var(--spacing)*6)}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[16px\]{font-size:16px}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#0A0A0A\]{color:#0a0a0a}.text-background{color:var(--color-background)}.text-blue-600{color:var(--color-blue-600)}.text-foreground{color:var(--color-foreground)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-neutral-900{color:var(--color-neutral-900)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.05\)\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-\[\>input\]\/input-group\:pt-2\.5:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing)*2.5)}.group-has-\[\>input\]\/input-group\:pb-2\.5:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing)*2.5)}.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.selection\:bg-primary ::selection{background-color:var(--color-primary)}.selection\:bg-primary::selection{background-color:var(--color-primary)}.selection\:text-primary-foreground ::selection{color:var(--color-primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--color-primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-\[rgba\(99\,114\,128\,1\)\]::placeholder{color:#637280}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-transparent:hover{border-color:#0000}.hover\:bg-\[\#383838\]:hover{background-color:#383838}.hover\:bg-\[\#f2f2f2\]:hover{background-color:#f2f2f2}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-primary\/90:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:underline-offset-4:hover{text-underline-offset:4px}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.45rem\]:has(>button){margin-right:-.45rem}.has-\[\>button\]\:ml-\[-0\.45rem\]:has(>button){margin-left:-.45rem}.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(>kbd){margin-right:-.35rem}.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(>kbd){margin-left:-.35rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing)*0)}.has-\[\>svg\]\:px-2:has(>svg){padding-inline:calc(var(--spacing)*2)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}@media (min-width:40rem){.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:p-20{padding:calc(var(--spacing)*20)}.sm\:px-5{padding-inline:calc(var(--spacing)*5)}.sm\:text-left{text-align:left}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media (min-width:48rem){.md\:w-\[158px\]{width:158px}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (prefers-color-scheme:dark){.dark\:border-white\/\[\.145\]{border-color:#ffffff25}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/\[\.145\]{border-color:color-mix(in oklab,var(--color-white)14.5%,transparent)}}.dark\:bg-transparent{background-color:#0000}.dark\:bg-white\/\[\.06\]{background-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[\.06\]{background-color:color-mix(in oklab,var(--color-white)6%,transparent)}}.dark\:invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}@media (hover:hover){.dark\:hover\:bg-\[\#1a1a1a\]:hover{background-color:#1a1a1a}.dark\:hover\:bg-\[\#ccc\]:hover{background-color:#ccc}.dark\:hover\:bg-accent\/50:hover{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--color-accent)50%,transparent)}}}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\.border-b\]\:pb-3.border-b{padding-bottom:calc(var(--spacing)*3)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-3.border-t{padding-top:calc(var(--spacing)*3)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing)*3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing)*3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing)*2)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing)*2)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.bg-border{background-color:#e2e8f0!important}.section-subtitle{color:#64748bb3;font-size:.75rem;line-height:1}.title-subtitle-container{align-content:flex-start;align-items:baseline;gap:.2rem .4rem;line-height:1.3}.section-title-main{font-size:1.125rem;font-weight:700}.section-title-form{font-size:1rem;font-weight:600;line-height:1.25}}#storybook-root{width:100%}:root{--background:#fff;--foreground:#171717;--primary:#0f63ee;--primary-foreground:#fff;--border:#e2e8f0;--muted:#f8fafc;--muted-foreground:#64748b;--accent:#f5f5f5;--accent-foreground:#0f172a}body{background:var(--background);color:var(--foreground);font-family:PingFang SC,Microsoft YaHei,Source Han Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}
package/package.json CHANGED
@@ -149,7 +149,7 @@
149
149
  "storybook": "storybook dev -p 6006",
150
150
  "test": "echo \"No tests specified\" && exit 0"
151
151
  },
152
- "version": "0.1.70-beta.1",
152
+ "version": "0.1.70-beta.2",
153
153
  "type": "module",
154
154
  "exports": {
155
155
  ".": {