@hyddenlabs/hydn-ui 0.3.7 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/forms/form-grid/form-grid-row.d.ts.map +1 -1
- package/dist/components/forms/form-grid/form-grid-row.js +53 -65
- package/dist/components/forms/form-grid/form-grid-row.js.map +1 -1
- package/dist/components/forms/form-grid/form-grid.d.ts +10 -2
- package/dist/components/forms/form-grid/form-grid.d.ts.map +1 -1
- package/dist/components/forms/form-grid/form-grid.js +46 -22
- package/dist/components/forms/form-grid/form-grid.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-grid-row.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-grid/form-grid-row.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAInF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe;IACf,GAAG,EAAE,eAAe,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,eAAe,CAAC;IACtB,uDAAuD;IACvD,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;IAC/C,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,gCAAgC;IAChC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kCAAkC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACpD,CAAC;
|
|
1
|
+
{"version":3,"file":"form-grid-row.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-grid/form-grid-row.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAInF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe;IACf,GAAG,EAAE,eAAe,CAAC;IACrB,yBAAyB;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,IAAI,EAAE,eAAe,CAAC;IACtB,uDAAuD;IACvD,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC;IAC/C,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,gCAAgC;IAChC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kCAAkC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACpD,CAAC;AAwDF;;;GAGG;AACH,iBAAS,WAAW,CAAC,EACnB,GAAG,EACH,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,WAAW,EACX,QAAQ,EACR,SAAS,EACT,gBAAqB,EACtB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,2CAmM5B;kBAnNQ,WAAW;;;AAuNpB,eAAe,WAAW,CAAC"}
|
|
@@ -16,6 +16,9 @@ const depthIndentClasses = {
|
|
|
16
16
|
4: "pl-32",
|
|
17
17
|
5: "pl-40"
|
|
18
18
|
};
|
|
19
|
+
function rowHasContent(row) {
|
|
20
|
+
return Object.values(row.values).some((v) => v !== "" && v !== false && v !== null && v !== void 0);
|
|
21
|
+
}
|
|
19
22
|
function getCheckboxColumnWidth(label) {
|
|
20
23
|
const minCh = 8;
|
|
21
24
|
return `${Math.max(minCh, label.length + 2)}ch`;
|
|
@@ -63,9 +66,8 @@ function FormGridRow({
|
|
|
63
66
|
}) {
|
|
64
67
|
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
65
68
|
const desktopGridTemplate = getDesktopGridTemplate(columns);
|
|
66
|
-
const showAddSubRowButton = allowSubRows && depth < maxDepth;
|
|
67
69
|
const hasSubRows = row.subRows && row.subRows.length > 0;
|
|
68
|
-
const renderField = (column) => {
|
|
70
|
+
const renderField = (column, fieldId) => {
|
|
69
71
|
const value = row.values[column.key];
|
|
70
72
|
const validationState = validationStates[column.key] || "neutral";
|
|
71
73
|
const handleChange = (newValue) => {
|
|
@@ -76,6 +78,8 @@ function FormGridRow({
|
|
|
76
78
|
return /* @__PURE__ */ jsx(
|
|
77
79
|
Input,
|
|
78
80
|
{
|
|
81
|
+
id: fieldId,
|
|
82
|
+
ariaLabel: column.label,
|
|
79
83
|
value: value ?? "",
|
|
80
84
|
onChange: (e) => handleChange(e.target.value),
|
|
81
85
|
placeholder: column.placeholder,
|
|
@@ -90,6 +94,8 @@ function FormGridRow({
|
|
|
90
94
|
return /* @__PURE__ */ jsx(
|
|
91
95
|
Select,
|
|
92
96
|
{
|
|
97
|
+
id: fieldId,
|
|
98
|
+
ariaLabel: column.label,
|
|
93
99
|
value: value ?? "",
|
|
94
100
|
onChange: (e) => handleChange(e.target.value),
|
|
95
101
|
size,
|
|
@@ -104,6 +110,8 @@ function FormGridRow({
|
|
|
104
110
|
return /* @__PURE__ */ jsx("div", { className: `flex items-center h-full ${!isMobile ? "justify-center" : ""}`, children: /* @__PURE__ */ jsx(
|
|
105
111
|
Checkbox,
|
|
106
112
|
{
|
|
113
|
+
id: fieldId,
|
|
114
|
+
ariaLabel: column.label,
|
|
107
115
|
checked: Boolean(value),
|
|
108
116
|
onChange: (e) => handleChange(e.target.checked),
|
|
109
117
|
disabled,
|
|
@@ -114,6 +122,8 @@ function FormGridRow({
|
|
|
114
122
|
return /* @__PURE__ */ jsx(
|
|
115
123
|
Textarea,
|
|
116
124
|
{
|
|
125
|
+
id: fieldId,
|
|
126
|
+
ariaLabel: column.label,
|
|
117
127
|
value: value ?? "",
|
|
118
128
|
onChange: (e) => handleChange(e.target.value),
|
|
119
129
|
placeholder: column.placeholder,
|
|
@@ -140,32 +150,24 @@ function FormGridRow({
|
|
|
140
150
|
`,
|
|
141
151
|
style: !isMobile ? { gridTemplateColumns: desktopGridTemplate } : void 0,
|
|
142
152
|
children: [
|
|
143
|
-
columns.map((column) =>
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
children: [
|
|
148
|
-
isMobile && /* @__PURE__ */ jsxs("label", { className: "block text-sm font-medium text-muted-foreground mb-1", children: [
|
|
149
|
-
column.label,
|
|
150
|
-
column.required && /* @__PURE__ */ jsx("span", { className: "text-error ml-0.5", children: "*" })
|
|
151
|
-
] }),
|
|
152
|
-
renderField(column)
|
|
153
|
-
]
|
|
154
|
-
},
|
|
155
|
-
column.key
|
|
156
|
-
)),
|
|
157
|
-
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-1 ${isMobile ? "justify-end" : "w-16 shrink-0 justify-end"}`, children: [
|
|
158
|
-
showAddSubRowButton && /* @__PURE__ */ jsx(
|
|
159
|
-
IconButton,
|
|
153
|
+
columns.map((column) => {
|
|
154
|
+
const fieldId = `${row.id}-${column.key}`;
|
|
155
|
+
return /* @__PURE__ */ jsxs(
|
|
156
|
+
"div",
|
|
160
157
|
{
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
158
|
+
className: `${isMobile ? "w-full" : "min-w-0"} ${column.type === "checkbox" && !isMobile ? "flex justify-center" : ""}`,
|
|
159
|
+
children: [
|
|
160
|
+
isMobile && /* @__PURE__ */ jsxs("label", { htmlFor: fieldId, className: "block text-sm font-medium text-muted-foreground mb-1", children: [
|
|
161
|
+
column.label,
|
|
162
|
+
column.required && /* @__PURE__ */ jsx("span", { className: "text-error ml-0.5", children: "*" })
|
|
163
|
+
] }),
|
|
164
|
+
renderField(column, fieldId)
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
column.key
|
|
168
|
+
);
|
|
169
|
+
}),
|
|
170
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center gap-1 ${isMobile ? "justify-end" : "w-16 shrink-0 justify-end"}`, children: [
|
|
169
171
|
canRemove && !isMobile && /* @__PURE__ */ jsx(
|
|
170
172
|
IconButton,
|
|
171
173
|
{
|
|
@@ -173,9 +175,10 @@ function FormGridRow({
|
|
|
173
175
|
ariaLabel: "Remove row",
|
|
174
176
|
onClick: () => onRemove(row.id),
|
|
175
177
|
disabled,
|
|
176
|
-
|
|
178
|
+
iconSize: "sm",
|
|
179
|
+
hoverIcon: "IconTrashFilled",
|
|
180
|
+
noPadding: true,
|
|
177
181
|
buttonStyle: "link",
|
|
178
|
-
className: "p-0!",
|
|
179
182
|
variant: "error"
|
|
180
183
|
}
|
|
181
184
|
),
|
|
@@ -211,42 +214,27 @@ function FormGridRow({
|
|
|
211
214
|
]
|
|
212
215
|
}
|
|
213
216
|
),
|
|
214
|
-
!isCollapsed && /* @__PURE__ */
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
)),
|
|
236
|
-
depth + 1 < maxDepth && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsx(
|
|
237
|
-
ButtonWithIcon,
|
|
238
|
-
{
|
|
239
|
-
icon: "plus",
|
|
240
|
-
buttonStyle: "link",
|
|
241
|
-
ariaLabel: "Add Property",
|
|
242
|
-
onClick: () => onAddSubRow(row.id),
|
|
243
|
-
disabled,
|
|
244
|
-
size,
|
|
245
|
-
className: "pl-0!",
|
|
246
|
-
children: "Add Property"
|
|
247
|
-
}
|
|
248
|
-
) })
|
|
249
|
-
] })
|
|
217
|
+
!isCollapsed && /* @__PURE__ */ jsx("div", { className: "space-y-1", children: row.subRows.map((subRow) => /* @__PURE__ */ jsx(
|
|
218
|
+
FormGridRow,
|
|
219
|
+
{
|
|
220
|
+
row: subRow,
|
|
221
|
+
columns,
|
|
222
|
+
depth: depth + 1,
|
|
223
|
+
maxDepth,
|
|
224
|
+
isMobile,
|
|
225
|
+
size,
|
|
226
|
+
allowSubRows,
|
|
227
|
+
autoSubRow,
|
|
228
|
+
disabled,
|
|
229
|
+
addSubRowLabel,
|
|
230
|
+
onValueChange,
|
|
231
|
+
onAddSubRow,
|
|
232
|
+
onRemove,
|
|
233
|
+
canRemove: rowHasContent(subRow),
|
|
234
|
+
validationStates
|
|
235
|
+
},
|
|
236
|
+
subRow.id
|
|
237
|
+
)) })
|
|
250
238
|
] })
|
|
251
239
|
] });
|
|
252
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-grid-row.js","sources":["../../../../src/components/forms/form-grid/form-grid-row.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Input from '../input/input';\nimport Select from '../select/select';\nimport SelectItem from '../select/select-item';\nimport Checkbox from '../checkbox/checkbox';\nimport Textarea from '../textarea/textarea';\nimport IconButton from '../button/icon-button';\nimport type { FormGridColumn, FormGridRowData } from './form-grid';\nimport type { InteractiveSize, ValidationState } from '../../../theme/size-tokens';\nimport { ButtonWithIcon } from '../button';\nimport { IconChevronDown, IconChevronRight } from '@tabler/icons-react';\n\nexport type FormGridRowProps = {\n /** Row data */\n row: FormGridRowData;\n /** Column definitions */\n columns: FormGridColumn[];\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum allowed nesting depth */\n maxDepth: number;\n /** Whether in mobile layout mode */\n isMobile: boolean;\n /** Size variant for form controls */\n size: InteractiveSize;\n /** Whether sub-rows are allowed (manual add button) */\n allowSubRows: boolean;\n /** Auto sub-row callback (when provided, sub-rows are auto-managed, no manual button) */\n autoSubRow?: (row: FormGridRowData) => boolean;\n /** Whether the row is disabled */\n disabled: boolean;\n /** Label for add sub-row button */\n addSubRowLabel: string;\n /** Callback when a field value changes */\n onValueChange: (rowId: string, key: string, value: unknown) => void;\n /** Callback to add a sub-row */\n onAddSubRow: (parentId: string) => void;\n /** Callback to remove this row */\n onRemove: (id: string) => void;\n /** Whether this row can be removed */\n canRemove: boolean;\n /** Validation states for fields */\n validationStates?: Record<string, ValidationState>;\n};\n\n// Depth indent classes (using pl-* for left padding)\nconst depthIndentClasses: Record<number, string> = {\n 0: '',\n 1: 'pl-8',\n 2: 'pl-16',\n 3: 'pl-24',\n 4: 'pl-32',\n 5: 'pl-40'\n};\n\nfunction getCheckboxColumnWidth(label: string): string {\n const minCh = 8;\n return `${Math.max(minCh, label.length + 2)}ch`;\n}\n\n/**\n * Convert a Tailwind width utility class to a valid CSS grid track value.\n * e.g. 'w-24' → '6rem', 'flex-1' → 'minmax(0, 1fr)', 'w-1/2' → '50%'\n */\nfunction tailwindWidthToCss(width: string): string {\n if (width === 'flex-1' || width === 'w-full') return 'minmax(0, 1fr)';\n if (width === 'w-auto') return 'auto';\n // w-{number} → n * 0.25rem\n const numMatch = width.match(/^w-(\\d+)$/);\n if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;\n // w-{num}/{den} fraction\n const fracMatch = width.match(/^w-(\\d+)\\/(\\d+)$/);\n if (fracMatch) return `${((parseInt(fracMatch[1]) / parseInt(fracMatch[2])) * 100).toFixed(2)}%`;\n // Already a valid CSS value (contains a unit or keyword)\n if (/\\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {\n return width;\n }\n return 'auto';\n}\n\nfunction getDesktopGridTemplate(columns: FormGridColumn[]): string {\n const columnTracks = columns.map((column) => {\n if (column.width) {\n return tailwindWidthToCss(column.width);\n }\n if (column.type === 'checkbox') {\n return getCheckboxColumnWidth(column.label);\n }\n return 'minmax(0, 1fr)';\n });\n\n return `${columnTracks.join(' ')} 4rem`;\n}\n\n/**\n * FormGridRow - Recursive row component for FormGrid\n * Handles rendering of field controls and nested sub-rows\n */\nfunction FormGridRow({\n row,\n columns,\n depth,\n maxDepth,\n isMobile,\n size,\n allowSubRows,\n autoSubRow,\n disabled,\n addSubRowLabel,\n onValueChange,\n onAddSubRow,\n onRemove,\n canRemove,\n validationStates = {}\n}: Readonly<FormGridRowProps>) {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const desktopGridTemplate = getDesktopGridTemplate(columns);\n // Show manual add button only if allowSubRows is true (which is false when autoSubRow is provided)\n const showAddSubRowButton = allowSubRows && depth < maxDepth;\n const hasSubRows = row.subRows && row.subRows.length > 0;\n\n // Render a single field based on column type\n const renderField = (column: FormGridColumn) => {\n const value = row.values[column.key];\n const validationState = validationStates[column.key] || 'neutral';\n\n const handleChange = (newValue: unknown) => {\n onValueChange(row.id, column.key, newValue);\n };\n\n switch (column.type) {\n case 'input':\n return (\n <Input\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={column.placeholder}\n type={column.inputType || 'text'}\n size={size}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n />\n );\n\n case 'select':\n return (\n <Select\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n size={size}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n label={column.placeholder}\n >\n {column.options?.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </Select>\n );\n\n case 'checkbox':\n return (\n <div className={`flex items-center h-full ${!isMobile ? 'justify-center' : ''}`}>\n <Checkbox\n checked={Boolean(value)}\n onChange={(e) => handleChange(e.target.checked)}\n disabled={disabled}\n validationState={validationState}\n />\n </div>\n );\n\n case 'textarea':\n return (\n <Textarea\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={column.placeholder}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n />\n );\n\n case 'custom':\n if (column.render) {\n return column.render(value, row, handleChange, 0);\n }\n return null;\n\n default:\n return null;\n }\n };\n\n return (\n <div>\n {/* Row content */}\n <div\n className={`\n ${isMobile ? 'flex flex-col gap-3 border border-border rounded-lg bg-muted/20 px-3 py-3' : 'grid items-center gap-3 py-1'}\n `}\n style={!isMobile ? { gridTemplateColumns: desktopGridTemplate } : undefined}\n >\n {/* Fields */}\n {columns.map((column) => (\n <div\n key={column.key}\n className={`${isMobile ? 'w-full' : 'min-w-0'} ${column.type === 'checkbox' && !isMobile ? 'flex justify-center' : ''}`}\n >\n {/* Mobile: show label above field */}\n {isMobile && (\n <label className=\"block text-sm font-medium text-muted-foreground mb-1\">\n {column.label}\n {column.required && <span className=\"text-error ml-0.5\">*</span>}\n </label>\n )}\n {renderField(column)}\n </div>\n ))}\n\n {/* Action buttons */}\n <div className={`flex items-center gap-1 ${isMobile ? 'justify-end' : 'w-16 shrink-0 justify-end'}`}>\n {showAddSubRowButton && (\n <IconButton\n icon=\"hierarchy-2\"\n ariaLabel={addSubRowLabel}\n onClick={() => onAddSubRow(row.id)}\n disabled={disabled}\n size=\"sm\"\n buttonStyle=\"ghost\"\n />\n )}\n {canRemove && !isMobile && (\n <IconButton\n icon=\"trash\"\n ariaLabel=\"Remove row\"\n onClick={() => onRemove(row.id)}\n disabled={disabled}\n size=\"sm\"\n buttonStyle=\"link\"\n className=\"p-0!\"\n variant=\"error\"\n />\n )}\n {canRemove && isMobile && (\n <ButtonWithIcon\n icon=\"trash\"\n ariaLabel=\"Remove row\"\n onClick={() => onRemove(row.id)}\n disabled={disabled}\n size={size}\n buttonStyle=\"link\"\n variant=\"error\"\n iconPosition=\"right\"\n >\n Delete Field\n </ButtonWithIcon>\n )}\n </div>\n </div>\n\n {/* Sub-rows section with collapse toggle */}\n {hasSubRows && (\n <div className={`mt-1 ${depthIndentClasses[Math.min(depth + 1, 5)] || ''}`}>\n {/* Collapse toggle at the start of sub-rows */}\n <button\n type=\"button\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n className=\"cursor-pointer flex items-center gap-1 mb-1 text-sm text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={isCollapsed ? 'Expand sub-rows' : 'Collapse sub-rows'}\n >\n {isCollapsed ? <IconChevronRight size={14} /> : <IconChevronDown size={14} />}\n <span>{isCollapsed ? 'Show properties' : 'Hide properties'}</span>\n </button>\n\n {/* Sub-rows (recursive) - collapsible */}\n {!isCollapsed && (\n <div className=\"space-y-1\">\n {row.subRows!.map((subRow, index) => (\n <FormGridRow\n key={subRow.id}\n row={subRow}\n columns={columns}\n depth={depth + 1}\n maxDepth={maxDepth}\n isMobile={isMobile}\n size={size}\n allowSubRows={allowSubRows}\n autoSubRow={autoSubRow}\n disabled={disabled}\n addSubRowLabel={addSubRowLabel}\n onValueChange={onValueChange}\n onAddSubRow={onAddSubRow}\n onRemove={onRemove}\n canRemove={autoSubRow ? index > 0 : true}\n validationStates={validationStates}\n />\n ))}\n {/* Add field button within sub-row section */}\n {depth + 1 < maxDepth && (\n <div className=\"flex items-center gap-2\">\n <ButtonWithIcon\n icon=\"plus\"\n buttonStyle=\"link\"\n ariaLabel=\"Add Property\"\n onClick={() => onAddSubRow(row.id)}\n disabled={disabled}\n size={size}\n className=\"pl-0!\"\n >\n Add Property\n </ButtonWithIcon>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nFormGridRow.displayName = 'FormGridRow';\n\nexport default FormGridRow;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-grid-row.js","sources":["../../../../src/components/forms/form-grid/form-grid-row.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Input from '../input/input';\nimport Select from '../select/select';\nimport SelectItem from '../select/select-item';\nimport Checkbox from '../checkbox/checkbox';\nimport Textarea from '../textarea/textarea';\nimport IconButton from '../button/icon-button';\nimport type { FormGridColumn, FormGridRowData } from './form-grid';\nimport type { InteractiveSize, ValidationState } from '../../../theme/size-tokens';\nimport { ButtonWithIcon } from '../button';\nimport { IconChevronDown, IconChevronRight } from '@tabler/icons-react';\n\nexport type FormGridRowProps = {\n /** Row data */\n row: FormGridRowData;\n /** Column definitions */\n columns: FormGridColumn[];\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum allowed nesting depth */\n maxDepth: number;\n /** Whether in mobile layout mode */\n isMobile: boolean;\n /** Size variant for form controls */\n size: InteractiveSize;\n /** Whether sub-rows are allowed (manual add button) */\n allowSubRows: boolean;\n /** Auto sub-row callback (when provided, sub-rows are auto-managed, no manual button) */\n autoSubRow?: (row: FormGridRowData) => boolean;\n /** Whether the row is disabled */\n disabled: boolean;\n /** Label for add sub-row button */\n addSubRowLabel: string;\n /** Callback when a field value changes */\n onValueChange: (rowId: string, key: string, value: unknown) => void;\n /** Callback to add a sub-row */\n onAddSubRow: (parentId: string) => void;\n /** Callback to remove this row */\n onRemove: (id: string) => void;\n /** Whether this row can be removed */\n canRemove: boolean;\n /** Validation states for fields */\n validationStates?: Record<string, ValidationState>;\n};\n\n// Depth indent classes (using pl-* for left padding)\nconst depthIndentClasses: Record<number, string> = {\n 0: '',\n 1: 'pl-8',\n 2: 'pl-16',\n 3: 'pl-24',\n 4: 'pl-32',\n 5: 'pl-40'\n};\n\n/** Check whether a row has any user-entered content (non-empty, non-default values) */\nfunction rowHasContent(row: FormGridRowData): boolean {\n return Object.values(row.values).some((v) => v !== '' && v !== false && v !== null && v !== undefined);\n}\n\nfunction getCheckboxColumnWidth(label: string): string {\n const minCh = 8;\n return `${Math.max(minCh, label.length + 2)}ch`;\n}\n\n/**\n * Convert a Tailwind width utility class to a valid CSS grid track value.\n * e.g. 'w-24' → '6rem', 'flex-1' → 'minmax(0, 1fr)', 'w-1/2' → '50%'\n */\nfunction tailwindWidthToCss(width: string): string {\n if (width === 'flex-1' || width === 'w-full') return 'minmax(0, 1fr)';\n if (width === 'w-auto') return 'auto';\n // w-{number} → n * 0.25rem\n const numMatch = width.match(/^w-(\\d+)$/);\n if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;\n // w-{num}/{den} fraction\n const fracMatch = width.match(/^w-(\\d+)\\/(\\d+)$/);\n if (fracMatch) return `${((parseInt(fracMatch[1]) / parseInt(fracMatch[2])) * 100).toFixed(2)}%`;\n // Already a valid CSS value (contains a unit or keyword)\n if (/\\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {\n return width;\n }\n return 'auto';\n}\n\nfunction getDesktopGridTemplate(columns: FormGridColumn[]): string {\n const columnTracks = columns.map((column) => {\n if (column.width) {\n return tailwindWidthToCss(column.width);\n }\n if (column.type === 'checkbox') {\n return getCheckboxColumnWidth(column.label);\n }\n return 'minmax(0, 1fr)';\n });\n\n return `${columnTracks.join(' ')} 4rem`;\n}\n\n/**\n * FormGridRow - Recursive row component for FormGrid\n * Handles rendering of field controls and nested sub-rows\n */\nfunction FormGridRow({\n row,\n columns,\n depth,\n maxDepth,\n isMobile,\n size,\n allowSubRows,\n autoSubRow,\n disabled,\n addSubRowLabel,\n onValueChange,\n onAddSubRow,\n onRemove,\n canRemove,\n validationStates = {}\n}: Readonly<FormGridRowProps>) {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const desktopGridTemplate = getDesktopGridTemplate(columns);\n const hasSubRows = row.subRows && row.subRows.length > 0;\n\n // Render a single field based on column type\n const renderField = (column: FormGridColumn, fieldId: string) => {\n const value = row.values[column.key];\n const validationState = validationStates[column.key] || 'neutral';\n\n const handleChange = (newValue: unknown) => {\n onValueChange(row.id, column.key, newValue);\n };\n\n switch (column.type) {\n case 'input':\n return (\n <Input\n id={fieldId}\n ariaLabel={column.label}\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={column.placeholder}\n type={column.inputType || 'text'}\n size={size}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n />\n );\n\n case 'select':\n return (\n <Select\n id={fieldId}\n ariaLabel={column.label}\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n size={size}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n label={column.placeholder}\n >\n {column.options?.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </Select>\n );\n\n case 'checkbox':\n return (\n <div className={`flex items-center h-full ${!isMobile ? 'justify-center' : ''}`}>\n <Checkbox\n id={fieldId}\n ariaLabel={column.label}\n checked={Boolean(value)}\n onChange={(e) => handleChange(e.target.checked)}\n disabled={disabled}\n validationState={validationState}\n />\n </div>\n );\n\n case 'textarea':\n return (\n <Textarea\n id={fieldId}\n ariaLabel={column.label}\n value={(value as string) ?? ''}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={column.placeholder}\n disabled={disabled}\n required={column.required}\n validationState={validationState}\n />\n );\n\n case 'custom':\n if (column.render) {\n return column.render(value, row, handleChange, 0);\n }\n return null;\n\n default:\n return null;\n }\n };\n\n return (\n <div>\n {/* Row content */}\n <div\n className={`\n ${isMobile ? 'flex flex-col gap-3 border border-border rounded-lg bg-muted/20 px-3 py-3' : 'grid items-center gap-3 py-1'}\n `}\n style={!isMobile ? { gridTemplateColumns: desktopGridTemplate } : undefined}\n >\n {/* Fields */}\n {columns.map((column) => {\n const fieldId = `${row.id}-${column.key}`;\n return (\n <div\n key={column.key}\n className={`${isMobile ? 'w-full' : 'min-w-0'} ${column.type === 'checkbox' && !isMobile ? 'flex justify-center' : ''}`}\n >\n {/* Mobile: show label above field */}\n {isMobile && (\n <label htmlFor={fieldId} className=\"block text-sm font-medium text-muted-foreground mb-1\">\n {column.label}\n {column.required && <span className=\"text-error ml-0.5\">*</span>}\n </label>\n )}\n {renderField(column, fieldId)}\n </div>\n );\n })}\n\n {/* Action buttons */}\n <div className={`flex items-center gap-1 ${isMobile ? 'justify-end' : 'w-16 shrink-0 justify-end'}`}>\n {canRemove && !isMobile && (\n <IconButton\n icon=\"trash\"\n ariaLabel=\"Remove row\"\n onClick={() => onRemove(row.id)}\n disabled={disabled}\n iconSize=\"sm\"\n hoverIcon=\"IconTrashFilled\"\n noPadding\n buttonStyle=\"link\"\n variant=\"error\"\n />\n )}\n {canRemove && isMobile && (\n <ButtonWithIcon\n icon=\"trash\"\n ariaLabel=\"Remove row\"\n onClick={() => onRemove(row.id)}\n disabled={disabled}\n size={size}\n buttonStyle=\"link\"\n variant=\"error\"\n iconPosition=\"right\"\n >\n Delete Field\n </ButtonWithIcon>\n )}\n </div>\n </div>\n\n {/* Sub-rows section with collapse toggle */}\n {hasSubRows && (\n <div className={`mt-1 ${depthIndentClasses[Math.min(depth + 1, 5)] || ''}`}>\n {/* Collapse toggle at the start of sub-rows */}\n <button\n type=\"button\"\n onClick={() => setIsCollapsed(!isCollapsed)}\n className=\"cursor-pointer flex items-center gap-1 mb-1 text-sm text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={isCollapsed ? 'Expand sub-rows' : 'Collapse sub-rows'}\n >\n {isCollapsed ? <IconChevronRight size={14} /> : <IconChevronDown size={14} />}\n <span>{isCollapsed ? 'Show properties' : 'Hide properties'}</span>\n </button>\n\n {/* Sub-rows (recursive) - collapsible */}\n {!isCollapsed && (\n <div className=\"space-y-1\">\n {row.subRows!.map((subRow) => (\n <FormGridRow\n key={subRow.id}\n row={subRow}\n columns={columns}\n depth={depth + 1}\n maxDepth={maxDepth}\n isMobile={isMobile}\n size={size}\n allowSubRows={allowSubRows}\n autoSubRow={autoSubRow}\n disabled={disabled}\n addSubRowLabel={addSubRowLabel}\n onValueChange={onValueChange}\n onAddSubRow={onAddSubRow}\n onRemove={onRemove}\n canRemove={rowHasContent(subRow)}\n validationStates={validationStates}\n />\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nFormGridRow.displayName = 'FormGridRow';\n\nexport default FormGridRow;\n"],"names":[],"mappings":"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"}
|
|
@@ -68,8 +68,6 @@ export type FormGridProps = {
|
|
|
68
68
|
size?: InteractiveSize;
|
|
69
69
|
/** Maximum nesting depth for sub-rows (default: 3) */
|
|
70
70
|
maxDepth?: number;
|
|
71
|
-
/** Label for add row button */
|
|
72
|
-
addRowLabel?: string;
|
|
73
71
|
/** Label for add sub-row button */
|
|
74
72
|
addSubRowLabel?: string;
|
|
75
73
|
/** Whether to allow sub-rows (manual add button) */
|
|
@@ -84,7 +82,17 @@ export type FormGridProps = {
|
|
|
84
82
|
className?: string;
|
|
85
83
|
/** Validation state map by row id and column key */
|
|
86
84
|
validationStates?: Record<string, Record<string, ValidationState>>;
|
|
85
|
+
/** Label displayed above the grid */
|
|
86
|
+
label?: string;
|
|
87
|
+
/** Helper text displayed below the grid */
|
|
88
|
+
helperText?: string;
|
|
89
|
+
/** Error message displayed below the grid (overrides helperText) */
|
|
90
|
+
error?: string;
|
|
91
|
+
/** Shows required asterisk next to label */
|
|
92
|
+
required?: boolean;
|
|
87
93
|
};
|
|
94
|
+
/** Check whether a row has any user-entered content (non-empty, non-default values) */
|
|
95
|
+
export declare function rowHasContent(row: FormGridRowData): boolean;
|
|
88
96
|
/**
|
|
89
97
|
* FormGrid - Dynamic form builder with support for adding/removing rows and nested sub-rows.
|
|
90
98
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-grid/form-grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiE,SAAS,EAAE,MAAM,OAAO,CAAC;AAExG,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"form-grid.d.ts","sourceRoot":"","sources":["../../../../src/components/forms/form-grid/form-grid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import React, { useState, useRef, useEffect, useCallback, useImperativeHandle } from "react";
|
|
3
3
|
import FormGridRow from "./form-grid-row.js";
|
|
4
|
-
import
|
|
4
|
+
import { validationTextClasses } from "../../../theme/size-tokens.js";
|
|
5
|
+
import Text from "../../typography/text/text.js";
|
|
5
6
|
const MOBILE_BREAKPOINT = 640;
|
|
6
7
|
function getCheckboxColumnWidth(label) {
|
|
7
8
|
const minCh = 8;
|
|
@@ -91,6 +92,30 @@ function validateRows(rows, columns) {
|
|
|
91
92
|
};
|
|
92
93
|
return rows.every(checkRow);
|
|
93
94
|
}
|
|
95
|
+
function rowHasContent(row) {
|
|
96
|
+
return Object.values(row.values).some((v) => v !== "" && v !== false && v !== null && v !== void 0);
|
|
97
|
+
}
|
|
98
|
+
function ensureTrailingEmptyRows(rows, changedRowId, columns) {
|
|
99
|
+
const rootIdx = rows.findIndex((r) => r.id === changedRowId);
|
|
100
|
+
if (rootIdx === rows.length - 1) {
|
|
101
|
+
if (rowHasContent(rows[rootIdx])) {
|
|
102
|
+
return [...rows, createEmptyRow(columns)];
|
|
103
|
+
}
|
|
104
|
+
return rows;
|
|
105
|
+
}
|
|
106
|
+
return rows.map((row) => {
|
|
107
|
+
if (!row.subRows || row.subRows.length === 0) return row;
|
|
108
|
+
const subIdx = row.subRows.findIndex((r) => r.id === changedRowId);
|
|
109
|
+
if (subIdx === row.subRows.length - 1) {
|
|
110
|
+
if (rowHasContent(row.subRows[subIdx])) {
|
|
111
|
+
return { ...row, subRows: [...row.subRows, createEmptyRow(columns)] };
|
|
112
|
+
}
|
|
113
|
+
return row;
|
|
114
|
+
}
|
|
115
|
+
const newSubRows = ensureTrailingEmptyRows(row.subRows, changedRowId, columns);
|
|
116
|
+
return newSubRows !== row.subRows ? { ...row, subRows: newSubRows } : row;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
94
119
|
function getRowDepth(rows, targetId, currentDepth = 0) {
|
|
95
120
|
for (const row of rows) {
|
|
96
121
|
if (row.id === targetId) {
|
|
@@ -112,14 +137,17 @@ const FormGrid = React.forwardRef(
|
|
|
112
137
|
onChange,
|
|
113
138
|
size = "md",
|
|
114
139
|
maxDepth = 3,
|
|
115
|
-
addRowLabel = "Add Row",
|
|
116
140
|
addSubRowLabel = "Add Sub-Row",
|
|
117
141
|
allowSubRows = true,
|
|
118
142
|
autoSubRow,
|
|
119
143
|
disabled = false,
|
|
120
144
|
showHeaders = true,
|
|
121
145
|
className = "",
|
|
122
|
-
validationStates = {}
|
|
146
|
+
validationStates = {},
|
|
147
|
+
label,
|
|
148
|
+
helperText,
|
|
149
|
+
error,
|
|
150
|
+
required = false
|
|
123
151
|
}, ref) => {
|
|
124
152
|
const [rows, setRows] = useState(() => {
|
|
125
153
|
if (defaultRows && defaultRows.length > 0) {
|
|
@@ -184,6 +212,7 @@ const FormGrid = React.forwardRef(
|
|
|
184
212
|
return row;
|
|
185
213
|
});
|
|
186
214
|
}
|
|
215
|
+
updated = ensureTrailingEmptyRows(updated, rowId, columns);
|
|
187
216
|
return updated;
|
|
188
217
|
});
|
|
189
218
|
},
|
|
@@ -207,11 +236,17 @@ const FormGrid = React.forwardRef(
|
|
|
207
236
|
[rows, columns, handleAddRow, handleAddSubRow, handleRemoveRow]
|
|
208
237
|
);
|
|
209
238
|
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: `w-full ${className}`, children: [
|
|
210
|
-
|
|
239
|
+
label && /* @__PURE__ */ jsxs("label", { className: "block text-sm font-semibold text-foreground mb-1.5", children: [
|
|
240
|
+
label,
|
|
241
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", children: "*" })
|
|
242
|
+
] }),
|
|
243
|
+
showHeaders && !isMobile && /* @__PURE__ */ jsxs("div", { className: "grid items-center gap-3 mt-3 mb-1", style: { gridTemplateColumns: desktopGridTemplate }, children: [
|
|
211
244
|
columns.map((col) => /* @__PURE__ */ jsxs(
|
|
212
|
-
|
|
245
|
+
Text,
|
|
213
246
|
{
|
|
214
|
-
|
|
247
|
+
size: "sm",
|
|
248
|
+
align: col.type === "checkbox" ? "center" : "left",
|
|
249
|
+
className: "text-muted-foreground min-w-0",
|
|
215
250
|
children: [
|
|
216
251
|
col.label,
|
|
217
252
|
col.required && /* @__PURE__ */ jsx("span", { className: "text-error ml-0.5", children: "*" })
|
|
@@ -221,7 +256,7 @@ const FormGrid = React.forwardRef(
|
|
|
221
256
|
)),
|
|
222
257
|
/* @__PURE__ */ jsx("div", { className: "w-16 shrink-0" })
|
|
223
258
|
] }),
|
|
224
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-
|
|
259
|
+
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: rows.map((row) => /* @__PURE__ */ jsx(
|
|
225
260
|
FormGridRow,
|
|
226
261
|
{
|
|
227
262
|
row,
|
|
@@ -237,29 +272,18 @@ const FormGrid = React.forwardRef(
|
|
|
237
272
|
onValueChange: handleValueChange,
|
|
238
273
|
onAddSubRow: handleAddSubRow,
|
|
239
274
|
onRemove: handleRemoveRow,
|
|
240
|
-
canRemove:
|
|
275
|
+
canRemove: rowHasContent(row),
|
|
241
276
|
validationStates: validationStates[row.id]
|
|
242
277
|
},
|
|
243
278
|
row.id
|
|
244
279
|
)) }),
|
|
245
|
-
/* @__PURE__ */ jsx(
|
|
246
|
-
ButtonWithIcon,
|
|
247
|
-
{
|
|
248
|
-
icon: "plus",
|
|
249
|
-
ariaLabel: addRowLabel,
|
|
250
|
-
onClick: handleAddRow,
|
|
251
|
-
disabled,
|
|
252
|
-
size,
|
|
253
|
-
buttonStyle: "link",
|
|
254
|
-
className: "pl-0!",
|
|
255
|
-
children: addRowLabel
|
|
256
|
-
}
|
|
257
|
-
) })
|
|
280
|
+
(helperText || error) && /* @__PURE__ */ jsx(Text, { size: "xs", className: `mt-1.5 ${error ? validationTextClasses.error : "text-muted-foreground"}`, children: error || helperText })
|
|
258
281
|
] });
|
|
259
282
|
}
|
|
260
283
|
);
|
|
261
284
|
FormGrid.displayName = "FormGrid";
|
|
262
285
|
export {
|
|
263
|
-
FormGrid as default
|
|
286
|
+
FormGrid as default,
|
|
287
|
+
rowHasContent
|
|
264
288
|
};
|
|
265
289
|
//# sourceMappingURL=form-grid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-grid.js","sources":["../../../../src/components/forms/form-grid/form-grid.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useEffect, useRef, useCallback, ReactNode } from 'react';\nimport FormGridRow from './form-grid-row';\nimport type { InteractiveSize, ValidationState } from '../../../theme/size-tokens';\nimport { ButtonWithIcon } from '../..';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Column definition for FormGrid fields\n */\nexport type FormGridColumn = {\n /** Unique key identifying this column in row data */\n key: string;\n /** Display label for the column header */\n label: string;\n /** Type of form control to render */\n type: 'input' | 'select' | 'checkbox' | 'textarea' | 'custom';\n /** HTML input type (only for type='input') */\n inputType?: 'text' | 'email' | 'number' | 'tel' | 'url' | 'password';\n /** Placeholder text for input/textarea/select */\n placeholder?: string;\n /** Options for select type */\n options?: { value: string; label: string }[];\n /** Custom render function for type='custom' */\n render?: (value: unknown, row: FormGridRowData, onChange: (value: unknown) => void, rowIndex: number) => ReactNode;\n /** Width of the field (Tailwind width class or 'flex-1') */\n width?: string;\n /** Whether this field is required */\n required?: boolean;\n /** Default value for new rows */\n defaultValue?: unknown;\n};\n\n/**\n * Row data structure with recursive sub-rows\n */\nexport type FormGridRowData = {\n /** Unique identifier for the row */\n id: string;\n /** Key-value map of field values */\n values: Record<string, unknown>;\n /** Nested sub-rows */\n subRows?: FormGridRowData[];\n};\n\n/**\n * Methods exposed via ref for uncontrolled usage\n */\nexport type FormGridRef = {\n /** Get all row data including sub-rows */\n getData: () => FormGridRowData[];\n /** Add a new row at root level or as sub-row of parentId */\n addRow: (parentId?: string) => void;\n /** Remove a row by id (searches recursively) */\n removeRow: (id: string) => void;\n /** Validate all rows, returns true if valid */\n validate: () => boolean;\n /** Reset to initial state with one empty row */\n reset: () => void;\n};\n\n/**\n * Props for the FormGrid component\n */\nexport type FormGridProps = {\n /** Column definitions describing each field */\n columns: FormGridColumn[];\n /** Initial rows data (defaults to one empty row) */\n defaultRows?: FormGridRowData[];\n /** Callback when data changes */\n onChange?: (rows: FormGridRowData[]) => void;\n /** Size variant for form controls */\n size?: InteractiveSize;\n /** Maximum nesting depth for sub-rows (default: 3) */\n maxDepth?: number;\n /** Label for add row button */\n addRowLabel?: string;\n /** Label for add sub-row button */\n addSubRowLabel?: string;\n /** Whether to allow sub-rows (manual add button) */\n allowSubRows?: boolean;\n /** Callback to determine if a row should automatically have sub-rows. When provided, sub-rows are auto-managed based on row data (e.g., type === 'object'). No manual add button is shown. */\n autoSubRow?: (row: FormGridRowData) => boolean;\n /** Whether the entire grid is disabled */\n disabled?: boolean;\n /** Whether to show column headers */\n showHeaders?: boolean;\n /** Custom class name */\n className?: string;\n /** Validation state map by row id and column key */\n validationStates?: Record<string, Record<string, ValidationState>>;\n};\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\nconst MOBILE_BREAKPOINT = 640;\n\nfunction getCheckboxColumnWidth(label: string): string {\n const minCh = 8;\n return `${Math.max(minCh, label.length + 2)}ch`;\n}\n\n/**\n * Convert a Tailwind width utility class to a valid CSS grid track value.\n * e.g. 'w-24' → '6rem', 'flex-1' → 'minmax(0, 1fr)', 'w-1/2' → '50%'\n */\nfunction tailwindWidthToCss(width: string): string {\n if (width === 'flex-1' || width === 'w-full') return 'minmax(0, 1fr)';\n if (width === 'w-auto') return 'auto';\n // w-{number} → n * 0.25rem\n const numMatch = width.match(/^w-(\\d+)$/);\n if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;\n // w-{num}/{den} fraction\n const fracMatch = width.match(/^w-(\\d+)\\/(\\d+)$/);\n if (fracMatch) return `${((parseInt(fracMatch[1]) / parseInt(fracMatch[2])) * 100).toFixed(2)}%`;\n // Already a valid CSS value (contains a unit or keyword)\n if (/\\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {\n return width;\n }\n return 'auto';\n}\n\nfunction getDesktopGridTemplate(columns: FormGridColumn[]): string {\n const columnTracks = columns.map((col) => {\n if (col.width) {\n return tailwindWidthToCss(col.width);\n }\n if (col.type === 'checkbox') {\n return getCheckboxColumnWidth(col.label);\n }\n return 'minmax(0, 1fr)';\n });\n\n return `${columnTracks.join(' ')} 4rem`;\n}\n\n/** Generate a unique ID for rows */\nfunction generateId(): string {\n return crypto.randomUUID();\n}\n\n/** Create an empty row with default values from columns */\nfunction createEmptyRow(columns: FormGridColumn[]): FormGridRowData {\n const values: Record<string, unknown> = {};\n columns.forEach((col) => {\n if (col.defaultValue !== undefined) {\n values[col.key] = col.defaultValue;\n } else if (col.type === 'checkbox') {\n values[col.key] = false;\n } else {\n values[col.key] = '';\n }\n });\n return { id: generateId(), values };\n}\n\n/** Recursively find and update a row */\nfunction updateRowInTree(\n rows: FormGridRowData[],\n targetId: string,\n updater: (row: FormGridRowData) => FormGridRowData\n): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === targetId) {\n return updater(row);\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: updateRowInTree(row.subRows, targetId, updater) };\n }\n return row;\n });\n}\n\n/** Recursively remove a row */\nfunction removeRowFromTree(rows: FormGridRowData[], targetId: string): FormGridRowData[] {\n return rows\n .filter((row) => row.id !== targetId)\n .map((row) => ({\n ...row,\n subRows: row.subRows ? removeRowFromTree(row.subRows, targetId) : undefined\n }));\n}\n\n/** Recursively add a sub-row to a parent */\nfunction addSubRowToParent(rows: FormGridRowData[], parentId: string, newRow: FormGridRowData): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === parentId) {\n return { ...row, subRows: [...(row.subRows || []), newRow] };\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: addSubRowToParent(row.subRows, parentId, newRow) };\n }\n return row;\n });\n}\n\n/** Check if any required fields are empty */\nfunction validateRows(rows: FormGridRowData[], columns: FormGridColumn[]): boolean {\n const requiredKeys = columns.filter((c) => c.required).map((c) => c.key);\n\n const checkRow = (row: FormGridRowData): boolean => {\n for (const key of requiredKeys) {\n const value = row.values[key];\n if (value === undefined || value === null || value === '') {\n return false;\n }\n }\n if (row.subRows) {\n return row.subRows.every(checkRow);\n }\n return true;\n };\n\n return rows.every(checkRow);\n}\n\n/** Get the depth of a row in the tree (0-indexed) */\nfunction getRowDepth(rows: FormGridRowData[], targetId: string, currentDepth: number = 0): number | null {\n for (const row of rows) {\n if (row.id === targetId) {\n return currentDepth;\n }\n if (row.subRows) {\n const foundDepth = getRowDepth(row.subRows, targetId, currentDepth + 1);\n if (foundDepth !== null) {\n return foundDepth;\n }\n }\n }\n return null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * FormGrid - Dynamic form builder with support for adding/removing rows and nested sub-rows.\n *\n * The component manages its own state internally and exposes methods via ref for\n * uncontrolled usage. Use `onChange` callback to react to data changes.\n *\n * @example\n * ```tsx\n * const formGridRef = useRef<FormGridRef>(null);\n *\n * const columns: FormGridColumn[] = [\n * { key: 'name', label: 'Field Name', type: 'input', placeholder: 'Enter name' },\n * { key: 'type', label: 'Type', type: 'select', options: [\n * { value: 'string', label: 'String' },\n * { value: 'number', label: 'Number' },\n * ]},\n * { key: 'required', label: 'Required', type: 'checkbox' },\n * ];\n *\n * <FormGrid ref={formGridRef} columns={columns} onChange={console.log} />\n *\n * // Get data via ref\n * const data = formGridRef.current?.getData();\n * ```\n */\nconst FormGrid = React.forwardRef<FormGridRef, FormGridProps>(\n (\n {\n columns,\n defaultRows,\n onChange,\n size = 'md',\n maxDepth = 3,\n addRowLabel = 'Add Row',\n addSubRowLabel = 'Add Sub-Row',\n allowSubRows = true,\n autoSubRow,\n disabled = false,\n showHeaders = true,\n className = '',\n validationStates = {}\n },\n ref\n ) => {\n // Internal state\n const [rows, setRows] = useState<FormGridRowData[]>(() => {\n if (defaultRows && defaultRows.length > 0) {\n return defaultRows;\n }\n return [createEmptyRow(columns)];\n });\n\n const [isMobile, setIsMobile] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const desktopGridTemplate = getDesktopGridTemplate(columns);\n\n // Responsive detection via ResizeObserver\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateLayout = () => {\n const containerWidth = container.offsetWidth;\n setIsMobile(containerWidth < MOBILE_BREAKPOINT);\n };\n\n updateLayout();\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(container);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n // Notify parent of changes\n useEffect(() => {\n onChange?.(rows);\n }, [rows, onChange]);\n\n // Row management handlers\n const handleAddRow = useCallback(() => {\n setRows((prev) => [...prev, createEmptyRow(columns)]);\n }, [columns]);\n\n const handleAddSubRow = useCallback(\n (parentId: string) => {\n setRows((prev) => addSubRowToParent(prev, parentId, createEmptyRow(columns)));\n },\n [columns]\n );\n\n const handleRemoveRow = useCallback((id: string) => {\n setRows((prev) => {\n const result = removeRowFromTree(prev, id);\n // Ensure at least one row remains\n if (result.length === 0) {\n return prev;\n }\n return result;\n });\n }, []);\n\n const handleValueChange = useCallback(\n (rowId: string, key: string, value: unknown) => {\n setRows((prev) => {\n // First update the value\n let updated = updateRowInTree(prev, rowId, (row) => ({\n ...row,\n values: { ...row.values, [key]: value }\n }));\n\n // If autoSubRow is provided, check if we need to add/remove sub-rows\n if (autoSubRow) {\n // Get the row's current depth to respect maxDepth\n const rowDepth = getRowDepth(updated, rowId);\n\n updated = updateRowInTree(updated, rowId, (row) => {\n const shouldHaveSubRows = autoSubRow(row);\n const hasSubRows = row.subRows && row.subRows.length > 0;\n const canAddMore = rowDepth !== null && rowDepth < maxDepth;\n\n if (shouldHaveSubRows && !hasSubRows && canAddMore) {\n // Auto-add a sub-row\n return { ...row, subRows: [createEmptyRow(columns)] };\n } else if (!shouldHaveSubRows && hasSubRows) {\n // Remove sub-rows when condition no longer applies\n return { ...row, subRows: undefined };\n }\n return row;\n });\n }\n\n return updated;\n });\n },\n [autoSubRow, columns, maxDepth]\n );\n\n // Expose methods via ref\n useImperativeHandle(\n ref,\n () => ({\n getData: () => rows,\n addRow: (parentId?: string) => {\n if (parentId) {\n handleAddSubRow(parentId);\n } else {\n handleAddRow();\n }\n },\n removeRow: (id: string) => handleRemoveRow(id),\n validate: () => validateRows(rows, columns),\n reset: () => setRows([createEmptyRow(columns)])\n }),\n [rows, columns, handleAddRow, handleAddSubRow, handleRemoveRow]\n );\n\n return (\n <div ref={containerRef} className={`w-full ${className}`}>\n {/* Column Headers (desktop only) */}\n {showHeaders && !isMobile && (\n <div className=\"grid items-center gap-3 mb-2\" style={{ gridTemplateColumns: desktopGridTemplate }}>\n {columns.map((col) => (\n <div\n key={col.key}\n className={`text-sm font-medium text-muted-foreground min-w-0 ${col.type === 'checkbox' ? 'text-center' : ''}`}\n >\n {col.label}\n {col.required && <span className=\"text-error ml-0.5\">*</span>}\n </div>\n ))}\n {/* Spacer for action buttons */}\n <div className=\"w-16 shrink-0\" />\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-2\">\n {rows.map((row, index) => (\n <FormGridRow\n key={row.id}\n row={row}\n columns={columns}\n depth={0}\n maxDepth={maxDepth}\n isMobile={isMobile}\n size={size}\n allowSubRows={allowSubRows && !autoSubRow}\n autoSubRow={autoSubRow}\n disabled={disabled}\n addSubRowLabel={addSubRowLabel}\n onValueChange={handleValueChange}\n onAddSubRow={handleAddSubRow}\n onRemove={handleRemoveRow}\n canRemove={rows.length > 1 || index > 0}\n validationStates={validationStates[row.id]}\n />\n ))}\n </div>\n\n {/* Add Row Button */}\n <div className=\"flex items-center gap-2\">\n <ButtonWithIcon\n icon=\"plus\"\n ariaLabel={addRowLabel}\n onClick={handleAddRow}\n disabled={disabled}\n size={size}\n buttonStyle=\"link\"\n className=\"pl-0!\"\n >\n {addRowLabel}\n </ButtonWithIcon>\n </div>\n </div>\n );\n }\n);\n\nFormGrid.displayName = 'FormGrid';\n\nexport default FormGrid;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-grid.js","sources":["../../../../src/components/forms/form-grid/form-grid.tsx"],"sourcesContent":["import React, { useState, useImperativeHandle, useEffect, useRef, useCallback, ReactNode } from 'react';\nimport FormGridRow from './form-grid-row';\nimport type { InteractiveSize, ValidationState } from '../../../theme/size-tokens';\nimport { validationTextClasses } from '../../../theme/size-tokens';\nimport Text from '../../typography/text/text';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Column definition for FormGrid fields\n */\nexport type FormGridColumn = {\n /** Unique key identifying this column in row data */\n key: string;\n /** Display label for the column header */\n label: string;\n /** Type of form control to render */\n type: 'input' | 'select' | 'checkbox' | 'textarea' | 'custom';\n /** HTML input type (only for type='input') */\n inputType?: 'text' | 'email' | 'number' | 'tel' | 'url' | 'password';\n /** Placeholder text for input/textarea/select */\n placeholder?: string;\n /** Options for select type */\n options?: { value: string; label: string }[];\n /** Custom render function for type='custom' */\n render?: (value: unknown, row: FormGridRowData, onChange: (value: unknown) => void, rowIndex: number) => ReactNode;\n /** Width of the field (Tailwind width class or 'flex-1') */\n width?: string;\n /** Whether this field is required */\n required?: boolean;\n /** Default value for new rows */\n defaultValue?: unknown;\n};\n\n/**\n * Row data structure with recursive sub-rows\n */\nexport type FormGridRowData = {\n /** Unique identifier for the row */\n id: string;\n /** Key-value map of field values */\n values: Record<string, unknown>;\n /** Nested sub-rows */\n subRows?: FormGridRowData[];\n};\n\n/**\n * Methods exposed via ref for uncontrolled usage\n */\nexport type FormGridRef = {\n /** Get all row data including sub-rows */\n getData: () => FormGridRowData[];\n /** Add a new row at root level or as sub-row of parentId */\n addRow: (parentId?: string) => void;\n /** Remove a row by id (searches recursively) */\n removeRow: (id: string) => void;\n /** Validate all rows, returns true if valid */\n validate: () => boolean;\n /** Reset to initial state with one empty row */\n reset: () => void;\n};\n\n/**\n * Props for the FormGrid component\n */\nexport type FormGridProps = {\n /** Column definitions describing each field */\n columns: FormGridColumn[];\n /** Initial rows data (defaults to one empty row) */\n defaultRows?: FormGridRowData[];\n /** Callback when data changes */\n onChange?: (rows: FormGridRowData[]) => void;\n /** Size variant for form controls */\n size?: InteractiveSize;\n /** Maximum nesting depth for sub-rows (default: 3) */\n maxDepth?: number;\n /** Label for add sub-row button */\n addSubRowLabel?: string;\n /** Whether to allow sub-rows (manual add button) */\n allowSubRows?: boolean;\n /** Callback to determine if a row should automatically have sub-rows. When provided, sub-rows are auto-managed based on row data (e.g., type === 'object'). No manual add button is shown. */\n autoSubRow?: (row: FormGridRowData) => boolean;\n /** Whether the entire grid is disabled */\n disabled?: boolean;\n /** Whether to show column headers */\n showHeaders?: boolean;\n /** Custom class name */\n className?: string;\n /** Validation state map by row id and column key */\n validationStates?: Record<string, Record<string, ValidationState>>;\n /** Label displayed above the grid */\n label?: string;\n /** Helper text displayed below the grid */\n helperText?: string;\n /** Error message displayed below the grid (overrides helperText) */\n error?: string;\n /** Shows required asterisk next to label */\n required?: boolean;\n};\n\n// =============================================================================\n// HELPERS\n// =============================================================================\n\nconst MOBILE_BREAKPOINT = 640;\n\nfunction getCheckboxColumnWidth(label: string): string {\n const minCh = 8;\n return `${Math.max(minCh, label.length + 2)}ch`;\n}\n\n/**\n * Convert a Tailwind width utility class to a valid CSS grid track value.\n * e.g. 'w-24' → '6rem', 'flex-1' → 'minmax(0, 1fr)', 'w-1/2' → '50%'\n */\nfunction tailwindWidthToCss(width: string): string {\n if (width === 'flex-1' || width === 'w-full') return 'minmax(0, 1fr)';\n if (width === 'w-auto') return 'auto';\n // w-{number} → n * 0.25rem\n const numMatch = width.match(/^w-(\\d+)$/);\n if (numMatch) return `${parseInt(numMatch[1]) * 0.25}rem`;\n // w-{num}/{den} fraction\n const fracMatch = width.match(/^w-(\\d+)\\/(\\d+)$/);\n if (fracMatch) return `${((parseInt(fracMatch[1]) / parseInt(fracMatch[2])) * 100).toFixed(2)}%`;\n // Already a valid CSS value (contains a unit or keyword)\n if (/\\d+(px|rem|em|%|fr|ch|vw|vh)/.test(width) || /^(auto|min-content|max-content|fit-content)$/.test(width)) {\n return width;\n }\n return 'auto';\n}\n\nfunction getDesktopGridTemplate(columns: FormGridColumn[]): string {\n const columnTracks = columns.map((col) => {\n if (col.width) {\n return tailwindWidthToCss(col.width);\n }\n if (col.type === 'checkbox') {\n return getCheckboxColumnWidth(col.label);\n }\n return 'minmax(0, 1fr)';\n });\n\n return `${columnTracks.join(' ')} 4rem`;\n}\n\n/** Generate a unique ID for rows */\nfunction generateId(): string {\n return crypto.randomUUID();\n}\n\n/** Create an empty row with default values from columns */\nfunction createEmptyRow(columns: FormGridColumn[]): FormGridRowData {\n const values: Record<string, unknown> = {};\n columns.forEach((col) => {\n if (col.defaultValue !== undefined) {\n values[col.key] = col.defaultValue;\n } else if (col.type === 'checkbox') {\n values[col.key] = false;\n } else {\n values[col.key] = '';\n }\n });\n return { id: generateId(), values };\n}\n\n/** Recursively find and update a row */\nfunction updateRowInTree(\n rows: FormGridRowData[],\n targetId: string,\n updater: (row: FormGridRowData) => FormGridRowData\n): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === targetId) {\n return updater(row);\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: updateRowInTree(row.subRows, targetId, updater) };\n }\n return row;\n });\n}\n\n/** Recursively remove a row */\nfunction removeRowFromTree(rows: FormGridRowData[], targetId: string): FormGridRowData[] {\n return rows\n .filter((row) => row.id !== targetId)\n .map((row) => ({\n ...row,\n subRows: row.subRows ? removeRowFromTree(row.subRows, targetId) : undefined\n }));\n}\n\n/** Recursively add a sub-row to a parent */\nfunction addSubRowToParent(rows: FormGridRowData[], parentId: string, newRow: FormGridRowData): FormGridRowData[] {\n return rows.map((row) => {\n if (row.id === parentId) {\n return { ...row, subRows: [...(row.subRows || []), newRow] };\n }\n if (row.subRows && row.subRows.length > 0) {\n return { ...row, subRows: addSubRowToParent(row.subRows, parentId, newRow) };\n }\n return row;\n });\n}\n\n/** Check if any required fields are empty */\nfunction validateRows(rows: FormGridRowData[], columns: FormGridColumn[]): boolean {\n const requiredKeys = columns.filter((c) => c.required).map((c) => c.key);\n\n const checkRow = (row: FormGridRowData): boolean => {\n for (const key of requiredKeys) {\n const value = row.values[key];\n if (value === undefined || value === null || value === '') {\n return false;\n }\n }\n if (row.subRows) {\n return row.subRows.every(checkRow);\n }\n return true;\n };\n\n return rows.every(checkRow);\n}\n\n/** Check whether a row has any user-entered content (non-empty, non-default values) */\nexport function rowHasContent(row: FormGridRowData): boolean {\n return Object.values(row.values).some((v) => v !== '' && v !== false && v !== null && v !== undefined);\n}\n\n/**\n * After a value change, ensure there is always a trailing empty row at every level\n * that contains the changed row.\n */\nfunction ensureTrailingEmptyRows(\n rows: FormGridRowData[],\n changedRowId: string,\n columns: FormGridColumn[]\n): FormGridRowData[] {\n // Check root level\n const rootIdx = rows.findIndex((r) => r.id === changedRowId);\n if (rootIdx === rows.length - 1) {\n if (rowHasContent(rows[rootIdx])) {\n return [...rows, createEmptyRow(columns)];\n }\n return rows;\n }\n\n // Recurse into sub-rows\n return rows.map((row) => {\n if (!row.subRows || row.subRows.length === 0) return row;\n const subIdx = row.subRows.findIndex((r) => r.id === changedRowId);\n if (subIdx === row.subRows.length - 1) {\n if (rowHasContent(row.subRows[subIdx])) {\n return { ...row, subRows: [...row.subRows, createEmptyRow(columns)] };\n }\n return row;\n }\n // Recurse deeper\n const newSubRows = ensureTrailingEmptyRows(row.subRows, changedRowId, columns);\n return newSubRows !== row.subRows ? { ...row, subRows: newSubRows } : row;\n });\n}\n\n/** Get the depth of a row in the tree (0-indexed) */\nfunction getRowDepth(rows: FormGridRowData[], targetId: string, currentDepth: number = 0): number | null {\n for (const row of rows) {\n if (row.id === targetId) {\n return currentDepth;\n }\n if (row.subRows) {\n const foundDepth = getRowDepth(row.subRows, targetId, currentDepth + 1);\n if (foundDepth !== null) {\n return foundDepth;\n }\n }\n }\n return null;\n}\n\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * FormGrid - Dynamic form builder with support for adding/removing rows and nested sub-rows.\n *\n * The component manages its own state internally and exposes methods via ref for\n * uncontrolled usage. Use `onChange` callback to react to data changes.\n *\n * @example\n * ```tsx\n * const formGridRef = useRef<FormGridRef>(null);\n *\n * const columns: FormGridColumn[] = [\n * { key: 'name', label: 'Field Name', type: 'input', placeholder: 'Enter name' },\n * { key: 'type', label: 'Type', type: 'select', options: [\n * { value: 'string', label: 'String' },\n * { value: 'number', label: 'Number' },\n * ]},\n * { key: 'required', label: 'Required', type: 'checkbox' },\n * ];\n *\n * <FormGrid ref={formGridRef} columns={columns} onChange={console.log} />\n *\n * // Get data via ref\n * const data = formGridRef.current?.getData();\n * ```\n */\nconst FormGrid = React.forwardRef<FormGridRef, FormGridProps>(\n (\n {\n columns,\n defaultRows,\n onChange,\n size = 'md',\n maxDepth = 3,\n addSubRowLabel = 'Add Sub-Row',\n allowSubRows = true,\n autoSubRow,\n disabled = false,\n showHeaders = true,\n className = '',\n validationStates = {},\n label,\n helperText,\n error,\n required = false\n },\n ref\n ) => {\n // Internal state\n const [rows, setRows] = useState<FormGridRowData[]>(() => {\n if (defaultRows && defaultRows.length > 0) {\n return defaultRows;\n }\n return [createEmptyRow(columns)];\n });\n\n const [isMobile, setIsMobile] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const desktopGridTemplate = getDesktopGridTemplate(columns);\n\n // Responsive detection via ResizeObserver\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateLayout = () => {\n const containerWidth = container.offsetWidth;\n setIsMobile(containerWidth < MOBILE_BREAKPOINT);\n };\n\n updateLayout();\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(container);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n // Notify parent of changes\n useEffect(() => {\n onChange?.(rows);\n }, [rows, onChange]);\n\n // Row management handlers\n const handleAddRow = useCallback(() => {\n setRows((prev) => [...prev, createEmptyRow(columns)]);\n }, [columns]);\n\n const handleAddSubRow = useCallback(\n (parentId: string) => {\n setRows((prev) => addSubRowToParent(prev, parentId, createEmptyRow(columns)));\n },\n [columns]\n );\n\n const handleRemoveRow = useCallback((id: string) => {\n setRows((prev) => {\n const result = removeRowFromTree(prev, id);\n // Ensure at least one row remains\n if (result.length === 0) {\n return prev;\n }\n return result;\n });\n }, []);\n\n const handleValueChange = useCallback(\n (rowId: string, key: string, value: unknown) => {\n setRows((prev) => {\n // First update the value\n let updated = updateRowInTree(prev, rowId, (row) => ({\n ...row,\n values: { ...row.values, [key]: value }\n }));\n\n // If autoSubRow is provided, check if we need to add/remove sub-rows\n if (autoSubRow) {\n // Get the row's current depth to respect maxDepth\n const rowDepth = getRowDepth(updated, rowId);\n\n updated = updateRowInTree(updated, rowId, (row) => {\n const shouldHaveSubRows = autoSubRow(row);\n const hasSubRows = row.subRows && row.subRows.length > 0;\n const canAddMore = rowDepth !== null && rowDepth < maxDepth;\n\n if (shouldHaveSubRows && !hasSubRows && canAddMore) {\n // Auto-add a sub-row\n return { ...row, subRows: [createEmptyRow(columns)] };\n } else if (!shouldHaveSubRows && hasSubRows) {\n // Remove sub-rows when condition no longer applies\n return { ...row, subRows: undefined };\n }\n return row;\n });\n }\n\n // Always ensure there is a trailing empty row at every level\n updated = ensureTrailingEmptyRows(updated, rowId, columns);\n\n return updated;\n });\n },\n [autoSubRow, columns, maxDepth]\n );\n\n // Expose methods via ref\n useImperativeHandle(\n ref,\n () => ({\n getData: () => rows,\n addRow: (parentId?: string) => {\n if (parentId) {\n handleAddSubRow(parentId);\n } else {\n handleAddRow();\n }\n },\n removeRow: (id: string) => handleRemoveRow(id),\n validate: () => validateRows(rows, columns),\n reset: () => setRows([createEmptyRow(columns)])\n }),\n [rows, columns, handleAddRow, handleAddSubRow, handleRemoveRow]\n );\n\n return (\n <div ref={containerRef} className={`w-full ${className}`}>\n {/* Label */}\n {label && (\n <label className=\"block text-sm font-semibold text-foreground mb-1.5\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n\n {/* Column Headers (desktop only) */}\n {showHeaders && !isMobile && (\n <div className=\"grid items-center gap-3 mt-3 mb-1\" style={{ gridTemplateColumns: desktopGridTemplate }}>\n {columns.map((col) => (\n <Text\n key={col.key}\n size=\"sm\"\n align={col.type === 'checkbox' ? 'center' : 'left'}\n className=\"text-muted-foreground min-w-0\"\n >\n {col.label}\n {col.required && <span className=\"text-error ml-0.5\">*</span>}\n </Text>\n ))}\n {/* Spacer for action buttons */}\n <div className=\"w-16 shrink-0\" />\n </div>\n )}\n\n {/* Rows */}\n <div className=\"space-y-1\">\n {rows.map((row) => (\n <FormGridRow\n key={row.id}\n row={row}\n columns={columns}\n depth={0}\n maxDepth={maxDepth}\n isMobile={isMobile}\n size={size}\n allowSubRows={allowSubRows && !autoSubRow}\n autoSubRow={autoSubRow}\n disabled={disabled}\n addSubRowLabel={addSubRowLabel}\n onValueChange={handleValueChange}\n onAddSubRow={handleAddSubRow}\n onRemove={handleRemoveRow}\n canRemove={rowHasContent(row)}\n validationStates={validationStates[row.id]}\n />\n ))}\n </div>\n\n {/* Helper / error text */}\n {(helperText || error) && (\n <Text size=\"xs\" className={`mt-1.5 ${error ? validationTextClasses.error : 'text-muted-foreground'}`}>\n {error || helperText}\n </Text>\n )}\n </div>\n );\n }\n);\n\nFormGrid.displayName = 'FormGrid';\n\nexport default FormGrid;\n"],"names":[],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.2.0 | 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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--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-space-x-reverse:0;--tw-divide-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-500:oklch(62.7% .265 303.9);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--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);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--blur-3xl:64px;--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);--radius-box:16px;--max-width-sm:24rem;--max-width-md:28rem;--max-width-xl:36rem;--max-width-2xl:42rem;--max-width-3xl:48rem;--max-width-4xl:56rem;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground)}}@layer base{*,: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:var(--border)}body{background-color:var(--background);font-family:var(--font-sans);--tw-leading:var(--leading-relaxed);font-size:17px;line-height:var(--leading-relaxed);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width:40rem){body{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}body{margin:0}::selection{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--accent) 25%, transparent)}}::selection{color:var(--foreground)}::placeholder{opacity:.5;font-weight:300}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-1{bottom:calc(var(--spacing) * -1)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.-left-1{left:calc(var(--spacing) * -1)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.left-8{left:calc(var(--spacing) * 8)}.z-1{z-index:1}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-99{z-index:99}.z-999{z-index:999}.z-1000{z-index:1000}.z-9999{z-index:9999}.z-\[999\]{z-index:999}.z-\[9999\]{z-index:9999}.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}}.m-0{margin:calc(var(--spacing) * 0)}.m-3{margin:calc(var(--spacing) * 3)}.m-5{margin:calc(var(--spacing) * 5)}.m-7{margin:calc(var(--spacing) * 7)}.m-9{margin:calc(var(--spacing) * 9)}.m-12{margin:calc(var(--spacing) * 12)}.m-14{margin:calc(var(--spacing) * 14)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-7{margin-inline:calc(var(--spacing) * 7)}.mx-9{margin-inline:calc(var(--spacing) * 9)}.mx-12{margin-inline:calc(var(--spacing) * 12)}.mx-14{margin-inline:calc(var(--spacing) * 14)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-7{margin-block:calc(var(--spacing) * 7)}.my-9{margin-block:calc(var(--spacing) * 9)}.my-12{margin-block:calc(var(--spacing) * 12)}.my-14{margin-block:calc(var(--spacing) * 14)}.my-auto{margin-block:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.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-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-24{margin-bottom:calc(var(--spacing) * 24)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[3\/4\]{aspect-ratio:3/4}.aspect-\[21\/9\]{aspect-ratio:21/9}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.\!h-auto{height:auto!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-1\/4{height:25%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.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-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-28{height:calc(var(--spacing) * 28)}.h-32{height:calc(var(--spacing) * 32)}.h-60{height:calc(var(--spacing) * 60)}.h-96{height:calc(var(--spacing) * 96)}.h-\[10rem\]{height:10rem}.h-\[15rem\]{height:15rem}.h-\[20rem\]{height:20rem}.h-\[25rem\]{height:25rem}.h-\[30rem\]{height:30rem}.h-\[35rem\]{height:35rem}.h-\[40rem\]{height:40rem}.h-\[calc\(100vh-3\.5rem\)\]{height:calc(100vh - 3.5rem)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:calc(var(--spacing) * 0)}.max-h-1\/2{max-height:50%}.max-h-1\/4{max-height:25%}.max-h-3\/4{max-height:75%}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-128{max-height:calc(var(--spacing) * 128)}.max-h-150{max-height:calc(var(--spacing) * 150)}.max-h-\[10rem\]{max-height:10rem}.max-h-\[15rem\]{max-height:15rem}.max-h-\[20rem\]{max-height:20rem}.max-h-\[25rem\]{max-height:25rem}.max-h-\[30rem\]{max-height:30rem}.max-h-\[35rem\]{max-height:35rem}.max-h-\[40rem\]{max-height:40rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[calc\(100vh-5em\)\]{max-height:calc(100vh - 5em)}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-1\/2{min-height:50%}.min-h-1\/4{min-height:25%}.min-h-3\/4{min-height:75%}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[10rem\]{min-height:10rem}.min-h-\[15rem\]{min-height:15rem}.min-h-\[20rem\]{min-height:20rem}.min-h-\[25rem\]{min-height:25rem}.min-h-\[30rem\]{min-height:30rem}.min-h-\[35rem\]{min-height:35rem}.min-h-\[40rem\]{min-height:40rem}.min-h-\[100px\]{min-height:100px}.min-h-full{min-height:100%}.min-h-full\!{min-height:100%!important}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-18{width:calc(var(--spacing) * 18)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[100vw\]{width:100vw}.w-\[1920px\]{width:1920px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-1\/2{max-width:50%}.max-w-1\/4{max-width:25%}.max-w-2xl{max-width:var(--max-width-2xl)}.max-w-3\/4{max-width:75%}.max-w-3xl{max-width:var(--max-width-3xl)}.max-w-4xl{max-width:var(--max-width-4xl)}.max-w-\[20rem\]{max-width:20rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[32rem\]{max-width:32rem}.max-w-\[36rem\]{max-width:36rem}.max-w-\[42rem\]{max-width:42rem}.max-w-\[48rem\]{max-width:48rem}.max-w-\[100vw\]{max-width:100vw}.max-w-\[1920px\]{max-width:1920px}.max-w-full{max-width:100%}.max-w-md{max-width:var(--max-width-md)}.max-w-screen{max-width:100vw}.max-w-screen-2xl{max-width:var(--breakpoint-2xl)}.max-w-screen-lg{max-width:var(--breakpoint-lg)}.max-w-screen-md{max-width:var(--breakpoint-md)}.max-w-screen-sm{max-width:var(--breakpoint-sm)}.max-w-screen-xl{max-width:var(--breakpoint-xl)}.max-w-sm{max-width:var(--max-width-sm)}.max-w-xl{max-width:var(--max-width-xl)}.\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-1\/2{min-width:50%}.min-w-1\/4{min-width:25%}.min-w-3\/4{min-width:75%}.min-w-4\.5{min-width:calc(var(--spacing) * 4.5)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[20rem\]{min-width:20rem}.min-w-\[24rem\]{min-width:24rem}.min-w-\[28rem\]{min-width:28rem}.min-w-\[32rem\]{min-width:32rem}.min-w-\[36rem\]{min-width:36rem}.min-w-\[42rem\]{min-width:42rem}.min-w-\[48rem\]{min-width:48rem}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.min-w-screen{min-width:100vw}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-left{transform-origin:0}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-4{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-7{--tw-translate-x:calc(var(--spacing) * 7);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-8{--tw-translate-x:calc(var(--spacing) * 8);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);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-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-3{--tw-translate-y:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.97\]{scale:.97}.scale-\[0\.99\]{scale:.99}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-x{resize:horizontal}.resize-y{resize:vertical}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.justify-items-stretch{justify-items:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-14{gap:calc(var(--spacing) * 14)}.gap-20{gap:calc(var(--spacing) * 20)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}: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-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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * 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)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.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)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)),:where(.divide-border\/50>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.self-center{align-self:center}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.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)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-accent,.border-accent\/50{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-card{border-color:var(--card)}.border-error,.border-error\/20{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.border-error\/20{border-color:color-mix(in oklab, var(--error) 20%, transparent)}}.border-error\/50{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.border-error\/50{border-color:color-mix(in oklab, var(--error) 50%, transparent)}}.border-info,.border-info\/50{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.border-info\/50{border-color:color-mix(in oklab, var(--info) 50%, transparent)}}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-neutral,.border-neutral\/50{border-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.border-neutral\/50{border-color:color-mix(in oklab, var(--neutral) 50%, transparent)}}.border-primary{border-color:var(--primary)}.border-primary-foreground{border-color:var(--primary-foreground)}.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.border-success,.border-success\/20{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/20{border-color:color-mix(in oklab, var(--success) 20%, transparent)}}.border-success\/50{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/50{border-color:color-mix(in oklab, var(--success) 50%, transparent)}}.border-transparent{border-color:#0000}.border-warning,.border-warning\/20{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/20{border-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.border-warning\/50{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/50{border-color:color-mix(in oklab, var(--warning) 50%, transparent)}}.border-t-accent{border-top-color:var(--accent)}.border-t-neutral{border-top-color:var(--neutral)}.border-t-primary{border-top-color:var(--primary)}.border-b-error{border-bottom-color:var(--error)}.border-b-foreground\/30{border-bottom-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-b-foreground\/30{border-bottom-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.border-b-success{border-bottom-color:var(--success)}.border-b-warning{border-bottom-color:var(--warning)}.\!bg-transparent{background-color:#0000!important}.bg-accent,.bg-accent\/5{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab, var(--accent) 5%, transparent)}}.bg-accent\/10{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.bg-accent\/30{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/30{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.bg-accent\/90{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/90{background-color:color-mix(in oklab, var(--accent) 90%, transparent)}}.bg-accent\/95{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/95{background-color:color-mix(in oklab, var(--accent) 95%, transparent)}}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black{background-color:var(--color-black)}.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\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-current{background-color:currentColor}.bg-error,.bg-error\/5{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/5{background-color:color-mix(in oklab, var(--error) 5%, transparent)}}.bg-error\/10{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--error) 10%, transparent)}}.bg-error\/20{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/20{background-color:color-mix(in oklab, var(--error) 20%, transparent)}}.bg-error\/30{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/30{background-color:color-mix(in oklab, var(--error) 30%, transparent)}}.bg-error\/90{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/90{background-color:color-mix(in oklab, var(--error) 90%, transparent)}}.bg-error\/95{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/95{background-color:color-mix(in oklab, var(--error) 95%, transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/10{background-color:color-mix(in oklab, var(--color-green-500) 10%, transparent)}}.bg-info,.bg-info\/5{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/5{background-color:color-mix(in oklab, var(--info) 5%, transparent)}}.bg-info\/10{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/10{background-color:color-mix(in oklab, var(--info) 10%, transparent)}}.bg-info\/20{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/20{background-color:color-mix(in oklab, var(--info) 20%, transparent)}}.bg-info\/30{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/30{background-color:color-mix(in oklab, var(--info) 30%, transparent)}}.bg-info\/90{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/90{background-color:color-mix(in oklab, var(--info) 90%, transparent)}}.bg-info\/95{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/95{background-color:color-mix(in oklab, var(--info) 95%, transparent)}}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-neutral,.bg-neutral\/5{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/5{background-color:color-mix(in oklab, var(--neutral) 5%, transparent)}}.bg-neutral\/20{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/20{background-color:color-mix(in oklab, var(--neutral) 20%, transparent)}}.bg-neutral\/30{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/30{background-color:color-mix(in oklab, var(--neutral) 30%, transparent)}}.bg-neutral\/40{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/40{background-color:color-mix(in oklab, var(--neutral) 40%, transparent)}}.bg-neutral\/95{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/95{background-color:color-mix(in oklab, var(--neutral) 95%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-primary\/30{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/30{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.bg-primary\/90{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/90{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.bg-primary\/95{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/95{background-color:color-mix(in oklab, var(--primary) 95%, transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-success,.bg-success\/5{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/5{background-color:color-mix(in oklab, var(--success) 5%, transparent)}}.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-success\/20{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/20{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.bg-success\/30{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/30{background-color:color-mix(in oklab, var(--success) 30%, transparent)}}.bg-success\/90{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/90{background-color:color-mix(in oklab, var(--success) 90%, transparent)}}.bg-success\/95{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/95{background-color:color-mix(in oklab, var(--success) 95%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/5{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/5{background-color:color-mix(in oklab, var(--warning) 5%, transparent)}}.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.bg-warning\/20{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/20{background-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.bg-warning\/30{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/30{background-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.bg-warning\/90{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/90{background-color:color-mix(in oklab, var(--warning) 90%, transparent)}}.bg-warning\/95{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/95{background-color:color-mix(in oklab, var(--warning) 95%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-linear-to-l{--tw-gradient-position:to left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-t{--tw-gradient-position:to top}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-linear-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[url\(\'data\:image\/svg\+xml\;charset\=utf-8\,\%3Csvg\%20xmlns\%3D\%22http\%3A\%2F\%2Fwww\.w3\.org\%2F2000\%2Fsvg\%22\%20fill\%3D\%22none\%22\%20viewBox\%3D\%220\%200\%2020\%2020\%22\%3E\%3Cpath\%20stroke\%3D\%22\%236b7280\%22\%20stroke-linecap\%3D\%22round\%22\%20stroke-linejoin\%3D\%22round\%22\%20stroke-width\%3D\%221\.5\%22\%20d\%3D\%22M6\%208l4\%204\%204-4\%22\%2F\%3E\%3C\%2Fsvg\%3E\'\)\]{background-image:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20stroke%3D%22%236b7280%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.5%22%20d%3D%22M6%208l4%204%204-4%22%2F%3E%3C%2Fsvg%3E)}.from-background{--tw-gradient-from:var(--background);--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))}.from-background\/95{--tw-gradient-from:var(--background)}@supports (color:color-mix(in lab, red, red)){.from-background\/95{--tw-gradient-from:color-mix(in oklab, var(--background) 95%, transparent)}}.from-background\/95{--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))}.from-primary\/10{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--primary) 10%, transparent)}}.from-primary\/10{--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))}.from-transparent{--tw-gradient-from:transparent;--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))}.via-primary\/5{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab, red, red)){.via-primary\/5{--tw-gradient-via:color-mix(in oklab, var(--primary) 5%, transparent)}}.via-primary\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/20{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab, red, red)){.via-primary\/20{--tw-gradient-via:color-mix(in oklab, var(--primary) 20%, transparent)}}.via-primary\/20{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--background);--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-transparent{--tw-gradient-to:transparent;--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))}.bg-size-\[1\.5em\]{background-size:1.5em}.bg-position-\[right_0\.5rem_center\]{background-position:right .5rem center}.bg-no-repeat{background-repeat:no-repeat}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\!{padding:calc(var(--spacing) * 0)!important}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-9{padding:calc(var(--spacing) * 9)}.p-12{padding:calc(var(--spacing) * 12)}.p-14{padding:calc(var(--spacing) * 14)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.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-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-0{padding-block:calc(var(--spacing) * 0)}.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-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-28{padding-block:calc(var(--spacing) * 28)}.py-36{padding-block:calc(var(--spacing) * 36)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-32{padding-top:calc(var(--spacing) * 32)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-24{padding-right:calc(var(--spacing) * 24)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-0\!{padding-left:calc(var(--spacing) * 0)!important}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-16{padding-left:calc(var(--spacing) * 16)}.pl-24{padding-left:calc(var(--spacing) * 24)}.pl-32{padding-left:calc(var(--spacing) * 32)}.pl-40{padding-left:calc(var(--spacing) * 40)}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--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-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-\[10px\]{font-size:10px}.leading-loose{--tw-leading:var(--leading-loose);line-height:var(--leading-loose)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.text-wrap{text-wrap:wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-accent-active{color:var(--accent-active)}.text-accent-foreground{color:var(--accent-foreground)}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:var(--card-foreground)}.text-current,.text-current\/80{color:currentColor}@supports (color:color-mix(in lab, red, red)){.text-current\/80{color:color-mix(in oklab, currentcolor 80%, transparent)}}.text-error{color:var(--error)}.text-error-active{color:var(--error-active)}.text-error-foreground{color:var(--error-foreground)}.text-foreground,.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/90{color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-info{color:var(--info)}.text-info-active{color:var(--info-active)}.text-info-foreground{color:var(--info-foreground)}.text-inherit{color:inherit}.text-muted{color:var(--muted)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral{color:var(--neutral)}.text-neutral-active{color:var(--neutral-active)}.text-neutral-foreground{color:var(--neutral-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-active{color:var(--primary-active)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-red-500{color:var(--color-red-500)}.text-success{color:var(--success)}.text-success-active{color:var(--success-active)}.text-success-foreground{color:var(--success-foreground)}.text-warning{color:var(--warning)}.text-warning-active{color:var(--warning-active)}.text-warning-foreground{color:var(--warning-foreground)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:var(--foreground)}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--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-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 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)}.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-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-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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)}.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-2{--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)}.shadow-primary\/20{--tw-shadow-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.shadow-primary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--primary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-popover{--tw-ring-color:var(--popover)}.ring-ring{--tw-ring-color:var(--ring)}.ring-offset-2{--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)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\!blur{--tw-blur:blur(8px)!important;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,)!important}.blur{--tw-blur:blur(8px);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,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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-\[background-color\,border-color\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[max-height\,opacity\,margin\]{transition-property:max-height,opacity,margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,opacity\]{transition-property:transform,opacity;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))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-50{transition-delay:50ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500,.duration-\[500ms\]{--tw-duration:.5s;transition-duration:.5s}.ease-\[cubic-bezier\(\.33\,\.66\,\.33\,1\)\]{--tw-ease:cubic-bezier(.33,.66,.33,1);transition-timing-function:cubic-bezier(.33,.66,.33,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[backface-visibility\:hidden\]{backface-visibility:hidden}.\[transform-style\:preserve-3d\]{transform-style:preserve-3d}@media (hover:hover){.group-hover\:opacity-60:is(:where(.group):hover *){opacity:.6}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus\:opacity-60:is(:where(.group):focus *){opacity:.6}.peer-checked\:border-primary:is(:where(.peer):checked~*){border-color:var(--primary)}@media (hover:hover){.peer-hover\:border-primary\/60:is(:where(.peer):hover~*){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.peer-hover\:border-primary\/60:is(:where(.peer):hover~*){border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}}.peer-focus-visible\:ring-2:is(:where(.peer):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)}.peer-focus-visible\:ring-ring:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--ring)}.peer-focus-visible\:ring-offset-2:is(:where(.peer):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)}.peer-active\:scale-95:is(:where(.peer):active~*){--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:h-3:before{content:var(--tw-content);height:calc(var(--spacing) * 3)}.before\:w-3:before{content:var(--tw-content);width:calc(var(--spacing) * 3)}.before\:scale-0:before{content:var(--tw-content);--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\:bg-primary:before{content:var(--tw-content);background-color:var(--primary)}.before\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:duration-200:before{content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}.before\:ease-out:before{content:var(--tw-content);--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.peer-checked\:before\:scale-100:is(:where(.peer):checked~*):before{content:var(--tw-content);--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:right-0:after{content:var(--tw-content);right:calc(var(--spacing) * 0)}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:rounded-t:after{content:var(--tw-content);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--primary)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-200:after{content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}.checked\:border-primary:checked{border-color:var(--primary)}.checked\:bg-primary:checked{background-color:var(--primary)}.focus-within\:border-ring:focus-within{border-color:var(--ring)}.focus-within\:ring-2:focus-within{--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-within\:ring-ring\/20:focus-within{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/20:focus-within{--tw-ring-color:color-mix(in oklab, var(--ring) 20%, transparent)}}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--accent)}.hover\:border-accent-hover:hover{border-color:var(--accent-hover)}.hover\:border-error-hover:hover{border-color:var(--error-hover)}.hover\:border-info-hover:hover{border-color:var(--info-hover)}.hover\:border-neutral-hover:hover{border-color:var(--neutral-hover)}.hover\:border-primary-hover:hover{border-color:var(--primary-hover)}.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.hover\:border-ring:hover{border-color:var(--ring)}.hover\:border-success-hover:hover{border-color:var(--success-hover)}.hover\:border-warning-hover:hover{border-color:var(--warning-hover)}.hover\:border-b-foreground\/30:hover{border-bottom-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-b-foreground\/30:hover{border-bottom-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.hover\:\!bg-transparent:hover{background-color:#0000!important}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-accent-hover:hover{background-color:var(--accent-hover)}.hover\:bg-accent\/10:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.hover\:bg-accent\/15:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/15:hover{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.hover\:bg-accent\/30:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-error-foreground\/10:hover{background-color:var(--error-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error-foreground\/10:hover{background-color:color-mix(in oklab, var(--error-foreground) 10%, transparent)}}.hover\:bg-error-hover:hover{background-color:var(--error-hover)}.hover\:bg-error\/10:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab, var(--error) 10%, transparent)}}.hover\:bg-error\/15:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/15:hover{background-color:color-mix(in oklab, var(--error) 15%, transparent)}}.hover\:bg-error\/30:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/30:hover{background-color:color-mix(in oklab, var(--error) 30%, transparent)}}.hover\:bg-foreground\/10:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/10:hover{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.hover\:bg-info-hover:hover{background-color:var(--info-hover)}.hover\:bg-info\/10:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/10:hover{background-color:color-mix(in oklab, var(--info) 10%, transparent)}}.hover\:bg-info\/15:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/15:hover{background-color:color-mix(in oklab, var(--info) 15%, transparent)}}.hover\:bg-info\/30:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/30:hover{background-color:color-mix(in oklab, var(--info) 30%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-muted-hover:hover{background-color:var(--muted-hover)}.hover\:bg-muted\/30:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-neutral-hover:hover{background-color:var(--neutral-hover)}.hover\:bg-neutral\/10:hover{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral\/10:hover{background-color:color-mix(in oklab, var(--neutral) 10%, transparent)}}.hover\:bg-neutral\/30:hover{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral\/30:hover{background-color:color-mix(in oklab, var(--neutral) 30%, transparent)}}.hover\:bg-primary-hover:hover{background-color:var(--primary-hover)}.hover\:bg-primary\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.hover\:bg-primary\/15:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/15:hover{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.hover\:bg-primary\/30:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/30:hover{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-success-hover:hover{background-color:var(--success-hover)}.hover\:bg-success\/10:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.hover\:bg-success\/15:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/15:hover{background-color:color-mix(in oklab, var(--success) 15%, transparent)}}.hover\:bg-success\/30:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/30:hover{background-color:color-mix(in oklab, var(--success) 30%, transparent)}}.hover\:bg-warning-hover:hover{background-color:var(--warning-hover)}.hover\:bg-warning\/10:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.hover\:bg-warning\/18:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/18:hover{background-color:color-mix(in oklab, var(--warning) 18%, transparent)}}.hover\:bg-warning\/30:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/30:hover{background-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-accent-hover:hover{color:var(--accent-hover)}.hover\:text-error-foreground:hover{color:var(--error-foreground)}.hover\:text-error-hover:hover{color:var(--error-hover)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-info-foreground:hover{color:var(--info-foreground)}.hover\:text-info-hover:hover{color:var(--info-hover)}.hover\:text-neutral-hover:hover{color:var(--neutral-hover)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-primary-hover:hover{color:var(--primary-hover)}.hover\:text-success-foreground:hover{color:var(--success-foreground)}.hover\:text-success-hover:hover{color:var(--success-hover)}.hover\:text-warning-foreground:hover{color:var(--warning-foreground)}.hover\:text-warning-hover:hover{color:var(--warning-hover)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[inset_0_0_0_1px_var\(--accent\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--error\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--error));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--info\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--info));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--neutral\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--neutral));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--primary\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--primary));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--success\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--success));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--warning\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--warning));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-lg:hover{--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)}.hover\:shadow-md:hover{--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)}.hover\:shadow-sm:hover{--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)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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)}.hover\:shadow-primary\/30:hover{--tw-shadow-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--primary) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.checked\:hover\:bg-primary\/90:checked:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.checked\:hover\:bg-primary\/90:checked:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}}.focus\:rounded:focus{border-radius:.25rem}.focus\:border-error:focus{border-color:var(--error)}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:border-success:focus{border-color:var(--success)}.focus\:border-warning:focus{border-color:var(--warning)}.focus\:border-b-error:focus{border-bottom-color:var(--error)}.focus\:border-b-foreground:focus{border-bottom-color:var(--foreground)}.focus\:border-b-success:focus{border-bottom-color:var(--success)}.focus\:border-b-warning:focus{border-bottom-color:var(--warning)}.focus\:opacity-100:focus{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-error:focus,.focus\:ring-error\/20:focus{--tw-ring-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-error\/20:focus{--tw-ring-color:color-mix(in oklab, var(--error) 20%, transparent)}}.focus\:ring-primary:focus{--tw-ring-color:var(--primary)}.focus\:ring-ring:focus,.focus\:ring-ring\/20:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/20:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 20%, transparent)}}.focus\:ring-success:focus,.focus\:ring-success\/20:focus{--tw-ring-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-success\/20:focus{--tw-ring-color:color-mix(in oklab, var(--success) 20%, transparent)}}.focus\:ring-warning:focus,.focus\:ring-warning\/20:focus{--tw-ring-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-warning\/20:focus{--tw-ring-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.focus\:ring-offset-0:focus{--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\: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\:shadow-\[inset_0_0_0_1px_var\(--accent\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--accent));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\:shadow-\[inset_0_0_0_1px_var\(--error\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--error));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\:shadow-\[inset_0_0_0_1px_var\(--info\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--info));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\:shadow-\[inset_0_0_0_1px_var\(--neutral\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--neutral));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\:shadow-\[inset_0_0_0_1px_var\(--primary\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--primary));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\:shadow-\[inset_0_0_0_1px_var\(--success\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--success));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\:shadow-\[inset_0_0_0_1px_var\(--warning\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--warning));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-accent:focus-visible{--tw-ring-color:var(--accent)}.focus-visible\:ring-error:focus-visible{--tw-ring-color:var(--error)}.focus-visible\:ring-info:focus-visible{--tw-ring-color:var(--info)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--primary)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-success:focus-visible{--tw-ring-color:var(--success)}.focus-visible\:ring-warning:focus-visible{--tw-ring-color:var(--warning)}.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\:ring-offset-popover:focus-visible{--tw-ring-offset-color:var(--popover)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-accent\/3:focus-visible{outline-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-accent\/3:focus-visible{outline-color:color-mix(in oklab, var(--accent) 3%, transparent)}}.focus-visible\:outline-error\/5:focus-visible{outline-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-error\/5:focus-visible{outline-color:color-mix(in oklab, var(--error) 5%, transparent)}}.focus-visible\:outline-info\/3:focus-visible{outline-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-info\/3:focus-visible{outline-color:color-mix(in oklab, var(--info) 3%, transparent)}}.focus-visible\:outline-neutral\/3:focus-visible{outline-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-neutral\/3:focus-visible{outline-color:color-mix(in oklab, var(--neutral) 3%, transparent)}}.focus-visible\:outline-primary\/3:focus-visible{outline-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-primary\/3:focus-visible{outline-color:color-mix(in oklab, var(--primary) 3%, transparent)}}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-success\/3:focus-visible{outline-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-success\/3:focus-visible{outline-color:color-mix(in oklab, var(--success) 3%, transparent)}}.focus-visible\:outline-transparent:focus-visible{outline-color:#0000}.focus-visible\:outline-warning\/3:focus-visible{outline-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-warning\/3:focus-visible{outline-color:color-mix(in oklab, var(--warning) 3%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:\!bg-transparent:active{background-color:#0000!important}.active\:bg-accent-active:active{background-color:var(--accent-active)}.active\:bg-accent\/20:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/20:active{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.active\:bg-accent\/25:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/25:active{background-color:color-mix(in oklab, var(--accent) 25%, transparent)}}.active\:bg-accent\/40:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/40:active{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.active\:bg-error-active:active{background-color:var(--error-active)}.active\:bg-error\/20:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/20:active{background-color:color-mix(in oklab, var(--error) 20%, transparent)}}.active\:bg-error\/25:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/25:active{background-color:color-mix(in oklab, var(--error) 25%, transparent)}}.active\:bg-error\/40:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/40:active{background-color:color-mix(in oklab, var(--error) 40%, transparent)}}.active\:bg-info-active:active{background-color:var(--info-active)}.active\:bg-info\/20:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/20:active{background-color:color-mix(in oklab, var(--info) 20%, transparent)}}.active\:bg-info\/25:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/25:active{background-color:color-mix(in oklab, var(--info) 25%, transparent)}}.active\:bg-info\/40:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/40:active{background-color:color-mix(in oklab, var(--info) 40%, transparent)}}.active\:bg-muted:active,.active\:bg-muted\/80:active{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.active\:bg-muted\/80:active{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.active\:bg-neutral-active:active{background-color:var(--neutral-active)}.active\:bg-neutral\/20:active{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.active\:bg-neutral\/20:active{background-color:color-mix(in oklab, var(--neutral) 20%, transparent)}}.active\:bg-neutral\/40:active{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.active\:bg-neutral\/40:active{background-color:color-mix(in oklab, var(--neutral) 40%, transparent)}}.active\:bg-primary-active:active{background-color:var(--primary-active)}.active\:bg-primary\/20:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/20:active{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.active\:bg-primary\/25:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/25:active{background-color:color-mix(in oklab, var(--primary) 25%, transparent)}}.active\:bg-primary\/40:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/40:active{background-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.active\:bg-success-active:active{background-color:var(--success-active)}.active\:bg-success\/20:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/20:active{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.active\:bg-success\/25:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/25:active{background-color:color-mix(in oklab, var(--success) 25%, transparent)}}.active\:bg-success\/40:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/40:active{background-color:color-mix(in oklab, var(--success) 40%, transparent)}}.active\:bg-warning-active:active{background-color:var(--warning-active)}.active\:bg-warning\/20:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/20:active{background-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.active\:bg-warning\/28:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/28:active{background-color:color-mix(in oklab, var(--warning) 28%, transparent)}}.active\:bg-warning\/40:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/40:active{background-color:color-mix(in oklab, var(--warning) 40%, transparent)}}.active\:text-accent-active:active{color:var(--accent-active)}.active\:text-error-active:active{color:var(--error-active)}.active\:text-info-active:active{color:var(--info-active)}.active\:text-neutral-active:active{color:var(--neutral-active)}.active\:text-primary-active:active{color:var(--primary-active)}.active\:text-success-active:active{color:var(--success-active)}.active\:text-warning-active:active{color:var(--warning-active)}.active\:opacity-60:active{opacity:.6}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted\/50:disabled{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-muted\/50:disabled{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}}@media (min-width:40rem){.sm\:left-auto{left:auto}.sm\:m-2{margin:calc(var(--spacing) * 2)}.sm\:m-4{margin:calc(var(--spacing) * 4)}.sm\:m-6{margin:calc(var(--spacing) * 6)}.sm\:m-8{margin:calc(var(--spacing) * 8)}.sm\:m-10{margin:calc(var(--spacing) * 10)}.sm\:m-12{margin:calc(var(--spacing) * 12)}.sm\:mx-2{margin-inline:calc(var(--spacing) * 2)}.sm\:mx-4{margin-inline:calc(var(--spacing) * 4)}.sm\:mx-6{margin-inline:calc(var(--spacing) * 6)}.sm\:mx-8{margin-inline:calc(var(--spacing) * 8)}.sm\:mx-10{margin-inline:calc(var(--spacing) * 10)}.sm\:mx-12{margin-inline:calc(var(--spacing) * 12)}.sm\:my-2{margin-block:calc(var(--spacing) * 2)}.sm\:my-4{margin-block:calc(var(--spacing) * 4)}.sm\:my-6{margin-block:calc(var(--spacing) * 6)}.sm\:my-8{margin-block:calc(var(--spacing) * 8)}.sm\:my-10{margin-block:calc(var(--spacing) * 10)}.sm\:my-12{margin-block:calc(var(--spacing) * 12)}.sm\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.sm\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.sm\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.sm\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.sm\:inline-flex{display:inline-flex}.sm\:h-3{height:calc(var(--spacing) * 3)}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-5{height:calc(var(--spacing) * 5)}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:h-7{height:calc(var(--spacing) * 7)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-10{height:calc(var(--spacing) * 10)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:h-14{height:calc(var(--spacing) * 14)}.sm\:h-16{height:calc(var(--spacing) * 16)}.sm\:h-20{height:calc(var(--spacing) * 20)}.sm\:h-24{height:calc(var(--spacing) * 24)}.sm\:max-h-\[calc\(100vh-8em\)\]{max-height:calc(100vh - 8em)}.sm\:min-h-6{min-height:calc(var(--spacing) * 6)}.sm\:min-h-8{min-height:calc(var(--spacing) * 8)}.sm\:min-h-10{min-height:calc(var(--spacing) * 10)}.sm\:min-h-12{min-height:calc(var(--spacing) * 12)}.sm\:min-h-14{min-height:calc(var(--spacing) * 14)}.sm\:min-h-20{min-height:calc(var(--spacing) * 20)}.sm\:w-3{width:calc(var(--spacing) * 3)}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-5{width:calc(var(--spacing) * 5)}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-7{width:calc(var(--spacing) * 7)}.sm\:w-8{width:calc(var(--spacing) * 8)}.sm\:w-10{width:calc(var(--spacing) * 10)}.sm\:w-12{width:calc(var(--spacing) * 12)}.sm\:w-16{width:calc(var(--spacing) * 16)}.sm\:w-20{width:calc(var(--spacing) * 20)}.sm\:w-24{width:calc(var(--spacing) * 24)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-80{width:calc(var(--spacing) * 80)}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-\[28rem\]{width:28rem}.sm\:w-\[32rem\]{width:32rem}.sm\:w-\[40rem\]{width:40rem}.sm\:w-\[48rem\]{width:48rem}.sm\:w-full{width:100%}.sm\:max-w-36{max-width:calc(var(--spacing) * 36)}.sm\:max-w-64{max-width:calc(var(--spacing) * 64)}.sm\:max-w-96{max-width:calc(var(--spacing) * 96)}.sm\:max-w-\[28rem\]{max-width:28rem}.sm\:max-w-\[32rem\]{max-width:32rem}.sm\:max-w-\[36rem\]{max-width:36rem}.sm\:max-w-md{max-width:var(--max-width-md)}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-0\.5{gap:calc(var(--spacing) * .5)}.sm\:gap-1{gap:calc(var(--spacing) * 1)}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-3\.5{gap:calc(var(--spacing) * 3.5)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-12{gap:calc(var(--spacing) * 12)}.sm\:gap-16{gap:calc(var(--spacing) * 16)}.sm\:p-2{padding:calc(var(--spacing) * 2)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-10{padding:calc(var(--spacing) * 10)}.sm\:p-12{padding:calc(var(--spacing) * 12)}.sm\:px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-7{padding-inline:calc(var(--spacing) * 7)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-0\.5{padding-block:calc(var(--spacing) * .5)}.sm\:py-1{padding-block:calc(var(--spacing) * 1)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:py-16{padding-block:calc(var(--spacing) * 16)}.sm\:py-24{padding-block:calc(var(--spacing) * 24)}.sm\:py-32{padding-block:calc(var(--spacing) * 32)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:before\:h-2\.5:before{content:var(--tw-content);height:calc(var(--spacing) * 2.5)}.sm\:before\:w-2\.5:before{content:var(--tw-content);width:calc(var(--spacing) * 2.5)}}@media (min-width:48rem){.md\:top-16{top:calc(var(--spacing) * 16)}.md\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:mb-16{margin-bottom:calc(var(--spacing) * 16)}.md\:ml-10{margin-left:calc(var(--spacing) * 10)}.md\:flex{display:flex}.md\:inline-block{display:inline-block}.md\:h-8{height:calc(var(--spacing) * 8)}.md\:h-16{height:calc(var(--spacing) * 16)}.md\:h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.md\:w-8{width:calc(var(--spacing) * 8)}.md\:w-16{width:calc(var(--spacing) * 16)}.md\:flex-1{flex:1}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-3{gap:calc(var(--spacing) * 3)}:where(.md\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.md\:rounded-xl{border-radius:var(--radius-xl)}.md\:p-2{padding:calc(var(--spacing) * 2)}.md\:px-0{padding-inline:calc(var(--spacing) * 0)}.md\:py-0{padding-block:calc(var(--spacing) * 0)}.md\:py-16{padding-block:calc(var(--spacing) * 16)}.md\:py-20{padding-block:calc(var(--spacing) * 20)}.md\:pt-36{padding-top:calc(var(--spacing) * 36)}.md\:pb-28{padding-bottom:calc(var(--spacing) * 28)}.md\:text-left{text-align:left}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:top-0{top:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline-flex{display:inline-flex}.lg\:h-full{height:100%}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media (prefers-color-scheme:dark){.dark\:text-green-400{color:var(--color-green-400)}}.\[\&_\[data-interactive\]\]\:pointer-events-auto [data-interactive],.\[\&_a\]\:pointer-events-auto a,.\[\&_button\]\:pointer-events-auto button{pointer-events:auto}.\[\&_button\]\:m-0 button{margin:calc(var(--spacing) * 0)}.\[\&_button\]\:h-full button{height:100%}.\[\&_button\]\:rounded-none button{border-radius:0}.\[\&_button\]\:border-0 button{border-style:var(--tw-border-style);border-width:0}.\[\&_button\]\:shadow-none button{--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)}.\[\&_input\]\:pointer-events-auto input,.\[\&_label\]\:pointer-events-auto label,.\[\&_select\]\:pointer-events-auto select,.\[\&_textarea\]\:pointer-events-auto textarea{pointer-events:auto}.\[\&\:\:-webkit-scrollbar\]\:w-1\.5::-webkit-scrollbar{width:calc(var(--spacing) * 1.5)}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-transparent::-webkit-scrollbar-thumb{background-color:#0000}@media (hover:hover){.hover\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-muted-foreground\/20:hover::-webkit-scrollbar-thumb{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-muted-foreground\/20:hover::-webkit-scrollbar-thumb{background-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}}.\[\&\:\:-webkit-scrollbar-thumb\:hover\]\:bg-muted-foreground\/30::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.\[\&\:\:-webkit-scrollbar-thumb\:hover\]\:bg-muted-foreground\/30::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.\[\&\:\:-webkit-scrollbar-track\]\:bg-transparent::-webkit-scrollbar-track{background-color:#0000}.\[\&\:last-child\>\*\:last-child\]\:hidden:last-child>:last-child{display:none}.\[\&\>button\]\:rounded-none>button{border-radius:0}.\[\&\>button\:first-child\]\:rounded-t-md>button:first-child{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.\[\&\>button\:first-child\]\:rounded-l-md>button:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\[\&\>button\:last-child\]\:rounded-r-md>button:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\[\&\>button\:last-child\]\:rounded-b-md>button:last-child{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\[\&\>button\:not\(\:last-child\)\]\:border-r-0>button:not(:last-child){border-right-style:var(--tw-border-style);border-right-width:0}.\[\&\>button\:not\(\:last-child\)\]\:border-b-0>button:not(:last-child){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\>input\]\:min-w-0>input{min-width:calc(var(--spacing) * 0)}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\>input\]\:rounded-none>input{border-radius:0}.\[\&\>input\]\:border-0>input{border-style:var(--tw-border-style);border-width:0}.\[\&\>input\]\:bg-transparent>input{background-color:#0000}.\[\&\>input\]\:shadow-none>input{--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)}.\[\&\>input\]\:ring-0>input{--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)}.\[\&\>input\]\:focus\:border-0>input:focus{border-style:var(--tw-border-style);border-width:0}.\[\&\>input\]\:focus\:ring-0>input:focus{--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)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:mx-2{margin-inline:calc(var(--spacing) * 2)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:hidden{display:none}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:w-12{width:calc(var(--spacing) * 12)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:justify-center{justify-content:center}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:px-0{padding-inline:calc(var(--spacing) * 0)}.rounded-box{border-radius:var(--radius-box,1rem)}.animate-scaleIn{animation:.2s ease-out scaleIn}.animate-slideInLeft{animation:.3s ease-out slideInLeft}.animate-slideInRight{animation:.3s ease-out slideInRight}.animate-slideInTop{animation:.3s ease-out slideInTop}.animate-slideInBottom{animation:.3s ease-out slideInBottom}.scrollbar-thin{scrollbar-width:thin;scrollbar-gutter:stable}.scrollbar-thin::-webkit-scrollbar{width:6px}.scrollbar-thin::-webkit-scrollbar-thumb{background:var(--muted-foreground) / .3;border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background:var(--muted-foreground) / .5}}:root,.light{--background:#fdfcfe;--foreground:#1c1b29;--card:#fff;--card-foreground:#1c1b29;--popover:#fff;--popover-foreground:#1c1b29;--primary:#72458c;--primary-hover:#623a79;--primary-active:#523065;--primary-foreground:#fff;--accent:#d4a24a;--accent-hover:#c1933f;--accent-active:#ad8435;--accent-foreground:#1c1b29;--neutral:#5b5863;--neutral-hover:#4b4852;--neutral-active:#38363e;--neutral-foreground:#fff;--muted:#f1edf6;--muted-hover:#e6e0ee;--muted-active:#dad3e6;--muted-foreground:#3a3746;--error:#d64545;--error-hover:#c13b3b;--error-active:#aa3232;--error-foreground:#fff;--success:#2f7d57;--success-hover:#276a4a;--success-active:#1f573e;--success-foreground:#fff;--warning:#f08a24;--warning-hover:#dd7b1f;--warning-active:#c86c1b;--warning-foreground:#fff;--info:#3b6edc;--info-hover:#325fc1;--info-active:#2a50a5;--info-foreground:#fff;--border:#e3dde9;--input:#ede7f3;--ring:#72458c}.dark{--background:#1e1d2a;--foreground:#f5f4f8;--card:#242334;--card-foreground:#f5f4f8;--popover:#191826;--popover-foreground:#f5f4f8;--primary:#8f63aa;--primary-hover:#9d75b6;--primary-active:#aa87c1;--primary-foreground:#fff;--accent:#e0b15a;--accent-hover:#e6be73;--accent-active:#ebcb8c;--accent-foreground:#1e1d2a;--neutral:#bcb9c8;--neutral-hover:#c8c5d6;--neutral-active:#d8d5e6;--neutral-foreground:#1e1d2a;--muted:#353347;--muted-hover:#424058;--muted-active:#4f4d69;--muted-foreground:#c7c6d1;--error:#e05252;--error-hover:#e86868;--error-active:#ef7f7f;--error-foreground:#fff;--success:#3fb07a;--success-hover:#56bc8b;--success-active:#6ec89d;--success-foreground:#fff;--warning:#f4a24d;--warning-hover:#f6b46c;--warning-active:#f8c68a;--warning-foreground:#1e1d2a;--info:#6b8df0;--info-hover:#809ff3;--info-active:#95b1f6;--info-foreground:#fff;--border:#3d3b52;--input:#353347;--ring:#8f63aa}@keyframes scaleIn{0%{opacity:0;scale:.95}to{opacity:1;scale:1}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideInTop{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@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-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--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-space-x-reverse:0;--tw-divide-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-500:oklch(62.7% .265 303.9);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--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);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--blur-3xl:64px;--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);--radius-box:16px;--max-width-sm:24rem;--max-width-md:28rem;--max-width-xl:36rem;--max-width-2xl:42rem;--max-width-3xl:48rem;--max-width-4xl:56rem;--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground)}}@layer base{*,: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:var(--border)}body{background-color:var(--background);font-family:var(--font-sans);--tw-leading:var(--leading-relaxed);font-size:17px;line-height:var(--leading-relaxed);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width:40rem){body{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}body{margin:0}::selection{background:var(--accent)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--accent) 25%, transparent)}}::selection{color:var(--foreground)}::placeholder{opacity:.5;font-weight:300}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.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}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1{right:calc(var(--spacing) * -1)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-1{bottom:calc(var(--spacing) * -1)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-4{bottom:calc(var(--spacing) * 4)}.-left-1{left:calc(var(--spacing) * -1)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.left-8{left:calc(var(--spacing) * 8)}.z-1{z-index:1}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-99{z-index:99}.z-999{z-index:999}.z-1000{z-index:1000}.z-9999{z-index:9999}.z-\[999\]{z-index:999}.z-\[9999\]{z-index:9999}.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}}.m-0{margin:calc(var(--spacing) * 0)}.m-3{margin:calc(var(--spacing) * 3)}.m-5{margin:calc(var(--spacing) * 5)}.m-7{margin:calc(var(--spacing) * 7)}.m-9{margin:calc(var(--spacing) * 9)}.m-12{margin:calc(var(--spacing) * 12)}.m-14{margin:calc(var(--spacing) * 14)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-7{margin-inline:calc(var(--spacing) * 7)}.mx-9{margin-inline:calc(var(--spacing) * 9)}.mx-12{margin-inline:calc(var(--spacing) * 12)}.mx-14{margin-inline:calc(var(--spacing) * 14)}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-5{margin-block:calc(var(--spacing) * 5)}.my-7{margin-block:calc(var(--spacing) * 7)}.my-9{margin-block:calc(var(--spacing) * 9)}.my-12{margin-block:calc(var(--spacing) * 12)}.my-14{margin-block:calc(var(--spacing) * 14)}.my-auto{margin-block:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.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-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-24{margin-bottom:calc(var(--spacing) * 24)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[3\/4\]{aspect-ratio:3/4}.aspect-\[21\/9\]{aspect-ratio:21/9}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.\!h-auto{height:auto!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-1\/4{height:25%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-3\/4{height:75%}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.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-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-28{height:calc(var(--spacing) * 28)}.h-32{height:calc(var(--spacing) * 32)}.h-60{height:calc(var(--spacing) * 60)}.h-96{height:calc(var(--spacing) * 96)}.h-\[10rem\]{height:10rem}.h-\[15rem\]{height:15rem}.h-\[20rem\]{height:20rem}.h-\[25rem\]{height:25rem}.h-\[30rem\]{height:30rem}.h-\[35rem\]{height:35rem}.h-\[40rem\]{height:40rem}.h-\[calc\(100vh-3\.5rem\)\]{height:calc(100vh - 3.5rem)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:calc(var(--spacing) * 0)}.max-h-1\/2{max-height:50%}.max-h-1\/4{max-height:25%}.max-h-3\/4{max-height:75%}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-128{max-height:calc(var(--spacing) * 128)}.max-h-150{max-height:calc(var(--spacing) * 150)}.max-h-\[10rem\]{max-height:10rem}.max-h-\[15rem\]{max-height:15rem}.max-h-\[20rem\]{max-height:20rem}.max-h-\[25rem\]{max-height:25rem}.max-h-\[30rem\]{max-height:30rem}.max-h-\[35rem\]{max-height:35rem}.max-h-\[40rem\]{max-height:40rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[calc\(100vh-5em\)\]{max-height:calc(100vh - 5em)}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-1\/2{min-height:50%}.min-h-1\/4{min-height:25%}.min-h-3\/4{min-height:75%}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[10rem\]{min-height:10rem}.min-h-\[15rem\]{min-height:15rem}.min-h-\[20rem\]{min-height:20rem}.min-h-\[25rem\]{min-height:25rem}.min-h-\[30rem\]{min-height:30rem}.min-h-\[35rem\]{min-height:35rem}.min-h-\[40rem\]{min-height:40rem}.min-h-\[100px\]{min-height:100px}.min-h-full{min-height:100%}.min-h-full\!{min-height:100%!important}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-18{width:calc(var(--spacing) * 18)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[100vw\]{width:100vw}.w-\[1920px\]{width:1920px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-1\/2{max-width:50%}.max-w-1\/4{max-width:25%}.max-w-2xl{max-width:var(--max-width-2xl)}.max-w-3\/4{max-width:75%}.max-w-3xl{max-width:var(--max-width-3xl)}.max-w-4xl{max-width:var(--max-width-4xl)}.max-w-\[20rem\]{max-width:20rem}.max-w-\[24rem\]{max-width:24rem}.max-w-\[28rem\]{max-width:28rem}.max-w-\[32rem\]{max-width:32rem}.max-w-\[36rem\]{max-width:36rem}.max-w-\[42rem\]{max-width:42rem}.max-w-\[48rem\]{max-width:48rem}.max-w-\[100vw\]{max-width:100vw}.max-w-\[1920px\]{max-width:1920px}.max-w-full{max-width:100%}.max-w-md{max-width:var(--max-width-md)}.max-w-screen{max-width:100vw}.max-w-screen-2xl{max-width:var(--breakpoint-2xl)}.max-w-screen-lg{max-width:var(--breakpoint-lg)}.max-w-screen-md{max-width:var(--breakpoint-md)}.max-w-screen-sm{max-width:var(--breakpoint-sm)}.max-w-screen-xl{max-width:var(--breakpoint-xl)}.max-w-sm{max-width:var(--max-width-sm)}.max-w-xl{max-width:var(--max-width-xl)}.\!min-w-0{min-width:calc(var(--spacing) * 0)!important}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-1\/2{min-width:50%}.min-w-1\/4{min-width:25%}.min-w-3\/4{min-width:75%}.min-w-4\.5{min-width:calc(var(--spacing) * 4.5)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[20rem\]{min-width:20rem}.min-w-\[24rem\]{min-width:24rem}.min-w-\[28rem\]{min-width:28rem}.min-w-\[32rem\]{min-width:32rem}.min-w-\[36rem\]{min-width:36rem}.min-w-\[42rem\]{min-width:42rem}.min-w-\[48rem\]{min-width:48rem}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-full{min-width:100%}.min-w-screen{min-width:100vw}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-left{transform-origin:0}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-4{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing) * 6);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-7{--tw-translate-x:calc(var(--spacing) * 7);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-8{--tw-translate-x:calc(var(--spacing) * 8);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);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-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-4{--tw-translate-y:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-3{--tw-translate-y:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-90{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.97\]{scale:.97}.scale-\[0\.99\]{scale:.99}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-x{resize:horizontal}.resize-y{resize:vertical}.scroll-mt-24{scroll-margin-top:calc(var(--spacing) * 24)}.appearance-none{appearance:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.justify-items-stretch{justify-items:stretch}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-14{gap:calc(var(--spacing) * 14)}.gap-20{gap:calc(var(--spacing) * 20)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}: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-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-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * 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)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.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)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)),:where(.divide-border\/50>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.self-center{align-self:center}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.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)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-accent,.border-accent\/50{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-accent\/50{border-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-card{border-color:var(--card)}.border-error,.border-error\/20{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.border-error\/20{border-color:color-mix(in oklab, var(--error) 20%, transparent)}}.border-error\/50{border-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.border-error\/50{border-color:color-mix(in oklab, var(--error) 50%, transparent)}}.border-info,.border-info\/50{border-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.border-info\/50{border-color:color-mix(in oklab, var(--info) 50%, transparent)}}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-neutral,.border-neutral\/50{border-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.border-neutral\/50{border-color:color-mix(in oklab, var(--neutral) 50%, transparent)}}.border-primary{border-color:var(--primary)}.border-primary-foreground{border-color:var(--primary-foreground)}.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/50{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.border-success,.border-success\/20{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/20{border-color:color-mix(in oklab, var(--success) 20%, transparent)}}.border-success\/50{border-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.border-success\/50{border-color:color-mix(in oklab, var(--success) 50%, transparent)}}.border-transparent{border-color:#0000}.border-warning,.border-warning\/20{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/20{border-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.border-warning\/50{border-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.border-warning\/50{border-color:color-mix(in oklab, var(--warning) 50%, transparent)}}.border-t-accent{border-top-color:var(--accent)}.border-t-neutral{border-top-color:var(--neutral)}.border-t-primary{border-top-color:var(--primary)}.border-b-error{border-bottom-color:var(--error)}.border-b-foreground\/30{border-bottom-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-b-foreground\/30{border-bottom-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.border-b-success{border-bottom-color:var(--success)}.border-b-warning{border-bottom-color:var(--warning)}.\!bg-transparent{background-color:#0000!important}.bg-accent,.bg-accent\/5{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/5{background-color:color-mix(in oklab, var(--accent) 5%, transparent)}}.bg-accent\/10{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/10{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.bg-accent\/30{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/30{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.bg-accent\/90{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/90{background-color:color-mix(in oklab, var(--accent) 90%, transparent)}}.bg-accent\/95{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/95{background-color:color-mix(in oklab, var(--accent) 95%, transparent)}}.bg-background,.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black{background-color:var(--color-black)}.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\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\/10{background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-current{background-color:currentColor}.bg-error,.bg-error\/5{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/5{background-color:color-mix(in oklab, var(--error) 5%, transparent)}}.bg-error\/10{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--error) 10%, transparent)}}.bg-error\/20{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/20{background-color:color-mix(in oklab, var(--error) 20%, transparent)}}.bg-error\/30{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/30{background-color:color-mix(in oklab, var(--error) 30%, transparent)}}.bg-error\/90{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/90{background-color:color-mix(in oklab, var(--error) 90%, transparent)}}.bg-error\/95{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/95{background-color:color-mix(in oklab, var(--error) 95%, transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/10{background-color:color-mix(in oklab, var(--color-green-500) 10%, transparent)}}.bg-info,.bg-info\/5{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/5{background-color:color-mix(in oklab, var(--info) 5%, transparent)}}.bg-info\/10{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/10{background-color:color-mix(in oklab, var(--info) 10%, transparent)}}.bg-info\/20{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/20{background-color:color-mix(in oklab, var(--info) 20%, transparent)}}.bg-info\/30{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/30{background-color:color-mix(in oklab, var(--info) 30%, transparent)}}.bg-info\/90{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/90{background-color:color-mix(in oklab, var(--info) 90%, transparent)}}.bg-info\/95{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.bg-info\/95{background-color:color-mix(in oklab, var(--info) 95%, transparent)}}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-neutral,.bg-neutral\/5{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/5{background-color:color-mix(in oklab, var(--neutral) 5%, transparent)}}.bg-neutral\/20{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/20{background-color:color-mix(in oklab, var(--neutral) 20%, transparent)}}.bg-neutral\/30{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/30{background-color:color-mix(in oklab, var(--neutral) 30%, transparent)}}.bg-neutral\/40{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/40{background-color:color-mix(in oklab, var(--neutral) 40%, transparent)}}.bg-neutral\/95{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.bg-neutral\/95{background-color:color-mix(in oklab, var(--neutral) 95%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.bg-primary\/30{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/30{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.bg-primary\/90{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/90{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.bg-primary\/95{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/95{background-color:color-mix(in oklab, var(--primary) 95%, transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\/10{background-color:color-mix(in oklab, var(--color-purple-500) 10%, transparent)}}.bg-success,.bg-success\/5{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/5{background-color:color-mix(in oklab, var(--success) 5%, transparent)}}.bg-success\/10{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.bg-success\/20{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/20{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.bg-success\/30{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/30{background-color:color-mix(in oklab, var(--success) 30%, transparent)}}.bg-success\/90{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/90{background-color:color-mix(in oklab, var(--success) 90%, transparent)}}.bg-success\/95{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/95{background-color:color-mix(in oklab, var(--success) 95%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning,.bg-warning\/5{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/5{background-color:color-mix(in oklab, var(--warning) 5%, transparent)}}.bg-warning\/10{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.bg-warning\/20{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/20{background-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.bg-warning\/30{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/30{background-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.bg-warning\/90{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/90{background-color:color-mix(in oklab, var(--warning) 90%, transparent)}}.bg-warning\/95{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/95{background-color:color-mix(in oklab, var(--warning) 95%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-linear-to-l{--tw-gradient-position:to left}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-l{--tw-gradient-position:to left in oklab}}.bg-linear-to-l{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-t{--tw-gradient-position:to top}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-t{--tw-gradient-position:to top in oklab}}.bg-linear-to-t{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[url\(\'data\:image\/svg\+xml\;charset\=utf-8\,\%3Csvg\%20xmlns\%3D\%22http\%3A\%2F\%2Fwww\.w3\.org\%2F2000\%2Fsvg\%22\%20fill\%3D\%22none\%22\%20viewBox\%3D\%220\%200\%2020\%2020\%22\%3E\%3Cpath\%20stroke\%3D\%22\%236b7280\%22\%20stroke-linecap\%3D\%22round\%22\%20stroke-linejoin\%3D\%22round\%22\%20stroke-width\%3D\%221\.5\%22\%20d\%3D\%22M6\%208l4\%204\%204-4\%22\%2F\%3E\%3C\%2Fsvg\%3E\'\)\]{background-image:url(data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20stroke%3D%22%236b7280%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.5%22%20d%3D%22M6%208l4%204%204-4%22%2F%3E%3C%2Fsvg%3E)}.from-background{--tw-gradient-from:var(--background);--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))}.from-background\/95{--tw-gradient-from:var(--background)}@supports (color:color-mix(in lab, red, red)){.from-background\/95{--tw-gradient-from:color-mix(in oklab, var(--background) 95%, transparent)}}.from-background\/95{--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))}.from-primary\/10{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab, red, red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--primary) 10%, transparent)}}.from-primary\/10{--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))}.from-transparent{--tw-gradient-from:transparent;--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))}.via-primary\/5{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab, red, red)){.via-primary\/5{--tw-gradient-via:color-mix(in oklab, var(--primary) 5%, transparent)}}.via-primary\/5{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/20{--tw-gradient-via:var(--primary)}@supports (color:color-mix(in lab, red, red)){.via-primary\/20{--tw-gradient-via:color-mix(in oklab, var(--primary) 20%, transparent)}}.via-primary\/20{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--background);--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-transparent{--tw-gradient-to:transparent;--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))}.bg-size-\[1\.5em\]{background-size:1.5em}.bg-position-\[right_0\.5rem_center\]{background-position:right .5rem center}.bg-no-repeat{background-repeat:no-repeat}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-9{padding:calc(var(--spacing) * 9)}.p-12{padding:calc(var(--spacing) * 12)}.p-14{padding:calc(var(--spacing) * 14)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.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-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-0{padding-block:calc(var(--spacing) * 0)}.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-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-28{padding-block:calc(var(--spacing) * 28)}.py-36{padding-block:calc(var(--spacing) * 36)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-32{padding-top:calc(var(--spacing) * 32)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-24{padding-right:calc(var(--spacing) * 24)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-16{padding-left:calc(var(--spacing) * 16)}.pl-24{padding-left:calc(var(--spacing) * 24)}.pl-32{padding-left:calc(var(--spacing) * 32)}.pl-40{padding-left:calc(var(--spacing) * 40)}.text-center{text-align:center}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--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-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-\[10px\]{font-size:10px}.leading-loose{--tw-leading:var(--leading-loose);line-height:var(--leading-loose)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-nowrap{text-wrap:nowrap}.text-pretty{text-wrap:pretty}.text-wrap{text-wrap:wrap}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--accent)}.text-accent-active{color:var(--accent-active)}.text-accent-foreground{color:var(--accent-foreground)}.text-blue-500{color:var(--color-blue-500)}.text-card-foreground{color:var(--card-foreground)}.text-current,.text-current\/80{color:currentColor}@supports (color:color-mix(in lab, red, red)){.text-current\/80{color:color-mix(in oklab, currentcolor 80%, transparent)}}.text-error{color:var(--error)}.text-error-active{color:var(--error-active)}.text-error-foreground{color:var(--error-foreground)}.text-foreground,.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/90{color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-info{color:var(--info)}.text-info-active{color:var(--info-active)}.text-info-foreground{color:var(--info-foreground)}.text-inherit{color:inherit}.text-muted{color:var(--muted)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral{color:var(--neutral)}.text-neutral-active{color:var(--neutral-active)}.text-neutral-foreground{color:var(--neutral-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-active{color:var(--primary-active)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-red-500{color:var(--color-red-500)}.text-success{color:var(--success)}.text-success-active{color:var(--success-active)}.text-success-foreground{color:var(--success-foreground)}.text-warning{color:var(--warning)}.text-warning-active{color:var(--warning-active)}.text-warning-foreground{color:var(--warning-foreground)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.accent-foreground{accent-color:var(--foreground)}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow{--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-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 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)}.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-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-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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)}.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-2{--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)}.shadow-primary\/20{--tw-shadow-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.shadow-primary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--primary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-popover{--tw-ring-color:var(--popover)}.ring-ring{--tw-ring-color:var(--ring)}.ring-offset-2{--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)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.\!blur{--tw-blur:blur(8px)!important;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,)!important}.blur{--tw-blur:blur(8px);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,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,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-\[background-color\,border-color\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[max-height\,opacity\,margin\]{transition-property:max-height,opacity,margin;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,opacity\]{transition-property:transform,opacity;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))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-50{transition-delay:50ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500,.duration-\[500ms\]{--tw-duration:.5s;transition-duration:.5s}.ease-\[cubic-bezier\(\.33\,\.66\,\.33\,1\)\]{--tw-ease:cubic-bezier(.33,.66,.33,1);transition-timing-function:cubic-bezier(.33,.66,.33,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[backface-visibility\:hidden\]{backface-visibility:hidden}.\[transform-style\:preserve-3d\]{transform-style:preserve-3d}@media (hover:hover){.group-hover\:opacity-60:is(:where(.group):hover *){opacity:.6}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus\:opacity-60:is(:where(.group):focus *){opacity:.6}.peer-checked\:border-primary:is(:where(.peer):checked~*){border-color:var(--primary)}@media (hover:hover){.peer-hover\:border-primary\/60:is(:where(.peer):hover~*){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.peer-hover\:border-primary\/60:is(:where(.peer):hover~*){border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}}.peer-focus-visible\:ring-2:is(:where(.peer):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)}.peer-focus-visible\:ring-ring:is(:where(.peer):focus-visible~*){--tw-ring-color:var(--ring)}.peer-focus-visible\:ring-offset-2:is(:where(.peer):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)}.peer-active\:scale-95:is(:where(.peer):active~*){--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:h-3:before{content:var(--tw-content);height:calc(var(--spacing) * 3)}.before\:w-3:before{content:var(--tw-content);width:calc(var(--spacing) * 3)}.before\:scale-0:before{content:var(--tw-content);--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.before\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\:bg-primary:before{content:var(--tw-content);background-color:var(--primary)}.before\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:duration-200:before{content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}.before\:ease-out:before{content:var(--tw-content);--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.peer-checked\:before\:scale-100:is(:where(.peer):checked~*):before{content:var(--tw-content);--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:right-0:after{content:var(--tw-content);right:calc(var(--spacing) * 0)}.after\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.after\:h-0\.5:after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.after\:rounded-t:after{content:var(--tw-content);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.after\:bg-primary:after{content:var(--tw-content);background-color:var(--primary)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:duration-200:after{content:var(--tw-content);--tw-duration:.2s;transition-duration:.2s}.checked\:border-primary:checked{border-color:var(--primary)}.checked\:bg-primary:checked{background-color:var(--primary)}.focus-within\:border-ring:focus-within{border-color:var(--ring)}.focus-within\:ring-2:focus-within{--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-within\:ring-ring\/20:focus-within{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-within\:ring-ring\/20:focus-within{--tw-ring-color:color-mix(in oklab, var(--ring) 20%, transparent)}}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent:hover{border-color:var(--accent)}.hover\:border-accent-hover:hover{border-color:var(--accent-hover)}.hover\:border-error-hover:hover{border-color:var(--error-hover)}.hover\:border-info-hover:hover{border-color:var(--info-hover)}.hover\:border-neutral-hover:hover{border-color:var(--neutral-hover)}.hover\:border-primary-hover:hover{border-color:var(--primary-hover)}.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent)}}.hover\:border-ring:hover{border-color:var(--ring)}.hover\:border-success-hover:hover{border-color:var(--success-hover)}.hover\:border-warning-hover:hover{border-color:var(--warning-hover)}.hover\:border-b-foreground\/30:hover{border-bottom-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-b-foreground\/30:hover{border-bottom-color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.hover\:\!bg-transparent:hover{background-color:#0000!important}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-accent-hover:hover{background-color:var(--accent-hover)}.hover\:bg-accent\/10:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab, var(--accent) 10%, transparent)}}.hover\:bg-accent\/15:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/15:hover{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.hover\:bg-accent\/30:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-error-foreground\/10:hover{background-color:var(--error-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error-foreground\/10:hover{background-color:color-mix(in oklab, var(--error-foreground) 10%, transparent)}}.hover\:bg-error-hover:hover{background-color:var(--error-hover)}.hover\:bg-error\/10:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab, var(--error) 10%, transparent)}}.hover\:bg-error\/15:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/15:hover{background-color:color-mix(in oklab, var(--error) 15%, transparent)}}.hover\:bg-error\/30:hover{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-error\/30:hover{background-color:color-mix(in oklab, var(--error) 30%, transparent)}}.hover\:bg-foreground\/10:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/10:hover{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.hover\:bg-info-hover:hover{background-color:var(--info-hover)}.hover\:bg-info\/10:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/10:hover{background-color:color-mix(in oklab, var(--info) 10%, transparent)}}.hover\:bg-info\/15:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/15:hover{background-color:color-mix(in oklab, var(--info) 15%, transparent)}}.hover\:bg-info\/30:hover{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-info\/30:hover{background-color:color-mix(in oklab, var(--info) 30%, transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-muted-hover:hover{background-color:var(--muted-hover)}.hover\:bg-muted\/30:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-neutral-hover:hover{background-color:var(--neutral-hover)}.hover\:bg-neutral\/10:hover{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral\/10:hover{background-color:color-mix(in oklab, var(--neutral) 10%, transparent)}}.hover\:bg-neutral\/30:hover{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-neutral\/30:hover{background-color:color-mix(in oklab, var(--neutral) 30%, transparent)}}.hover\:bg-primary-hover:hover{background-color:var(--primary-hover)}.hover\:bg-primary\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.hover\:bg-primary\/15:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/15:hover{background-color:color-mix(in oklab, var(--primary) 15%, transparent)}}.hover\:bg-primary\/20:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/20:hover{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.hover\:bg-primary\/30:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/30:hover{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-success-hover:hover{background-color:var(--success-hover)}.hover\:bg-success\/10:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab, var(--success) 10%, transparent)}}.hover\:bg-success\/15:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/15:hover{background-color:color-mix(in oklab, var(--success) 15%, transparent)}}.hover\:bg-success\/30:hover{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-success\/30:hover{background-color:color-mix(in oklab, var(--success) 30%, transparent)}}.hover\:bg-warning-hover:hover{background-color:var(--warning-hover)}.hover\:bg-warning\/10:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab, var(--warning) 10%, transparent)}}.hover\:bg-warning\/18:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/18:hover{background-color:color-mix(in oklab, var(--warning) 18%, transparent)}}.hover\:bg-warning\/30:hover{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-warning\/30:hover{background-color:color-mix(in oklab, var(--warning) 30%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-accent-hover:hover{color:var(--accent-hover)}.hover\:text-error-foreground:hover{color:var(--error-foreground)}.hover\:text-error-hover:hover{color:var(--error-hover)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-info-foreground:hover{color:var(--info-foreground)}.hover\:text-info-hover:hover{color:var(--info-hover)}.hover\:text-neutral-hover:hover{color:var(--neutral-hover)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-primary-foreground:hover{color:var(--primary-foreground)}.hover\:text-primary-hover:hover{color:var(--primary-hover)}.hover\:text-success-foreground:hover{color:var(--success-foreground)}.hover\:text-success-hover:hover{color:var(--success-hover)}.hover\:text-warning-foreground:hover{color:var(--warning-foreground)}.hover\:text-warning-hover:hover{color:var(--warning-hover)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[inset_0_0_0_1px_var\(--accent\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--error\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--error));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--info\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--info));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--neutral\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--neutral));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--primary\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--primary));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--success\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--success));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[inset_0_0_0_1px_var\(--warning\)\)\]:hover{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--warning));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-lg:hover{--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)}.hover\:shadow-md:hover{--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)}.hover\:shadow-sm:hover{--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)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px 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)}.hover\:shadow-primary\/30:hover{--tw-shadow-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-primary\/30:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--primary) 30%, transparent) var(--tw-shadow-alpha), transparent)}}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}.checked\:hover\:bg-primary\/90:checked:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.checked\:hover\:bg-primary\/90:checked:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}}.focus\:rounded:focus{border-radius:.25rem}.focus\:border-error:focus{border-color:var(--error)}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:border-success:focus{border-color:var(--success)}.focus\:border-warning:focus{border-color:var(--warning)}.focus\:border-b-error:focus{border-bottom-color:var(--error)}.focus\:border-b-foreground:focus{border-bottom-color:var(--foreground)}.focus\:border-b-success:focus{border-bottom-color:var(--success)}.focus\:border-b-warning:focus{border-bottom-color:var(--warning)}.focus\:opacity-100:focus{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-error:focus,.focus\:ring-error\/20:focus{--tw-ring-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-error\/20:focus{--tw-ring-color:color-mix(in oklab, var(--error) 20%, transparent)}}.focus\:ring-primary:focus{--tw-ring-color:var(--primary)}.focus\:ring-ring:focus,.focus\:ring-ring\/20:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-ring\/20:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 20%, transparent)}}.focus\:ring-success:focus,.focus\:ring-success\/20:focus{--tw-ring-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-success\/20:focus{--tw-ring-color:color-mix(in oklab, var(--success) 20%, transparent)}}.focus\:ring-warning:focus,.focus\:ring-warning\/20:focus{--tw-ring-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-warning\/20:focus{--tw-ring-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.focus\:ring-offset-0:focus{--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\: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\:shadow-\[inset_0_0_0_1px_var\(--accent\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--accent));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\:shadow-\[inset_0_0_0_1px_var\(--error\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--error));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\:shadow-\[inset_0_0_0_1px_var\(--info\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--info));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\:shadow-\[inset_0_0_0_1px_var\(--neutral\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--neutral));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\:shadow-\[inset_0_0_0_1px_var\(--primary\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--primary));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\:shadow-\[inset_0_0_0_1px_var\(--success\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--success));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\:shadow-\[inset_0_0_0_1px_var\(--warning\)\)\]:focus-visible{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--warning));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-accent:focus-visible{--tw-ring-color:var(--accent)}.focus-visible\:ring-error:focus-visible{--tw-ring-color:var(--error)}.focus-visible\:ring-info:focus-visible{--tw-ring-color:var(--info)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:var(--primary)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-success:focus-visible{--tw-ring-color:var(--success)}.focus-visible\:ring-warning:focus-visible{--tw-ring-color:var(--warning)}.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\:ring-offset-popover:focus-visible{--tw-ring-offset-color:var(--popover)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-accent\/3:focus-visible{outline-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-accent\/3:focus-visible{outline-color:color-mix(in oklab, var(--accent) 3%, transparent)}}.focus-visible\:outline-error\/5:focus-visible{outline-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-error\/5:focus-visible{outline-color:color-mix(in oklab, var(--error) 5%, transparent)}}.focus-visible\:outline-info\/3:focus-visible{outline-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-info\/3:focus-visible{outline-color:color-mix(in oklab, var(--info) 3%, transparent)}}.focus-visible\:outline-neutral\/3:focus-visible{outline-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-neutral\/3:focus-visible{outline-color:color-mix(in oklab, var(--neutral) 3%, transparent)}}.focus-visible\:outline-primary\/3:focus-visible{outline-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-primary\/3:focus-visible{outline-color:color-mix(in oklab, var(--primary) 3%, transparent)}}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-success\/3:focus-visible{outline-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-success\/3:focus-visible{outline-color:color-mix(in oklab, var(--success) 3%, transparent)}}.focus-visible\:outline-transparent:focus-visible{outline-color:#0000}.focus-visible\:outline-warning\/3:focus-visible{outline-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:outline-warning\/3:focus-visible{outline-color:color-mix(in oklab, var(--warning) 3%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:\!bg-transparent:active{background-color:#0000!important}.active\:bg-accent-active:active{background-color:var(--accent-active)}.active\:bg-accent\/20:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/20:active{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.active\:bg-accent\/25:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/25:active{background-color:color-mix(in oklab, var(--accent) 25%, transparent)}}.active\:bg-accent\/40:active{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.active\:bg-accent\/40:active{background-color:color-mix(in oklab, var(--accent) 40%, transparent)}}.active\:bg-error-active:active{background-color:var(--error-active)}.active\:bg-error\/20:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/20:active{background-color:color-mix(in oklab, var(--error) 20%, transparent)}}.active\:bg-error\/25:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/25:active{background-color:color-mix(in oklab, var(--error) 25%, transparent)}}.active\:bg-error\/40:active{background-color:var(--error)}@supports (color:color-mix(in lab, red, red)){.active\:bg-error\/40:active{background-color:color-mix(in oklab, var(--error) 40%, transparent)}}.active\:bg-info-active:active{background-color:var(--info-active)}.active\:bg-info\/20:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/20:active{background-color:color-mix(in oklab, var(--info) 20%, transparent)}}.active\:bg-info\/25:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/25:active{background-color:color-mix(in oklab, var(--info) 25%, transparent)}}.active\:bg-info\/40:active{background-color:var(--info)}@supports (color:color-mix(in lab, red, red)){.active\:bg-info\/40:active{background-color:color-mix(in oklab, var(--info) 40%, transparent)}}.active\:bg-muted:active,.active\:bg-muted\/80:active{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.active\:bg-muted\/80:active{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.active\:bg-neutral-active:active{background-color:var(--neutral-active)}.active\:bg-neutral\/20:active{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.active\:bg-neutral\/20:active{background-color:color-mix(in oklab, var(--neutral) 20%, transparent)}}.active\:bg-neutral\/40:active{background-color:var(--neutral)}@supports (color:color-mix(in lab, red, red)){.active\:bg-neutral\/40:active{background-color:color-mix(in oklab, var(--neutral) 40%, transparent)}}.active\:bg-primary-active:active{background-color:var(--primary-active)}.active\:bg-primary\/20:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/20:active{background-color:color-mix(in oklab, var(--primary) 20%, transparent)}}.active\:bg-primary\/25:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/25:active{background-color:color-mix(in oklab, var(--primary) 25%, transparent)}}.active\:bg-primary\/40:active{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.active\:bg-primary\/40:active{background-color:color-mix(in oklab, var(--primary) 40%, transparent)}}.active\:bg-success-active:active{background-color:var(--success-active)}.active\:bg-success\/20:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/20:active{background-color:color-mix(in oklab, var(--success) 20%, transparent)}}.active\:bg-success\/25:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/25:active{background-color:color-mix(in oklab, var(--success) 25%, transparent)}}.active\:bg-success\/40:active{background-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.active\:bg-success\/40:active{background-color:color-mix(in oklab, var(--success) 40%, transparent)}}.active\:bg-warning-active:active{background-color:var(--warning-active)}.active\:bg-warning\/20:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/20:active{background-color:color-mix(in oklab, var(--warning) 20%, transparent)}}.active\:bg-warning\/28:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/28:active{background-color:color-mix(in oklab, var(--warning) 28%, transparent)}}.active\:bg-warning\/40:active{background-color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.active\:bg-warning\/40:active{background-color:color-mix(in oklab, var(--warning) 40%, transparent)}}.active\:text-accent-active:active{color:var(--accent-active)}.active\:text-error-active:active{color:var(--error-active)}.active\:text-info-active:active{color:var(--info-active)}.active\:text-neutral-active:active{color:var(--neutral-active)}.active\:text-primary-active:active{color:var(--primary-active)}.active\:text-success-active:active{color:var(--success-active)}.active\:text-warning-active:active{color:var(--warning-active)}.active\:opacity-60:active{opacity:.6}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted\/50:disabled{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.disabled\:bg-muted\/50:disabled{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}}@media (min-width:40rem){.sm\:left-auto{left:auto}.sm\:m-2{margin:calc(var(--spacing) * 2)}.sm\:m-4{margin:calc(var(--spacing) * 4)}.sm\:m-6{margin:calc(var(--spacing) * 6)}.sm\:m-8{margin:calc(var(--spacing) * 8)}.sm\:m-10{margin:calc(var(--spacing) * 10)}.sm\:m-12{margin:calc(var(--spacing) * 12)}.sm\:mx-2{margin-inline:calc(var(--spacing) * 2)}.sm\:mx-4{margin-inline:calc(var(--spacing) * 4)}.sm\:mx-6{margin-inline:calc(var(--spacing) * 6)}.sm\:mx-8{margin-inline:calc(var(--spacing) * 8)}.sm\:mx-10{margin-inline:calc(var(--spacing) * 10)}.sm\:mx-12{margin-inline:calc(var(--spacing) * 12)}.sm\:my-2{margin-block:calc(var(--spacing) * 2)}.sm\:my-4{margin-block:calc(var(--spacing) * 4)}.sm\:my-6{margin-block:calc(var(--spacing) * 6)}.sm\:my-8{margin-block:calc(var(--spacing) * 8)}.sm\:my-10{margin-block:calc(var(--spacing) * 10)}.sm\:my-12{margin-block:calc(var(--spacing) * 12)}.sm\:mb-2{margin-bottom:calc(var(--spacing) * 2)}.sm\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.sm\:mb-4{margin-bottom:calc(var(--spacing) * 4)}.sm\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.sm\:inline-flex{display:inline-flex}.sm\:h-3{height:calc(var(--spacing) * 3)}.sm\:h-4{height:calc(var(--spacing) * 4)}.sm\:h-5{height:calc(var(--spacing) * 5)}.sm\:h-6{height:calc(var(--spacing) * 6)}.sm\:h-7{height:calc(var(--spacing) * 7)}.sm\:h-8{height:calc(var(--spacing) * 8)}.sm\:h-10{height:calc(var(--spacing) * 10)}.sm\:h-12{height:calc(var(--spacing) * 12)}.sm\:h-14{height:calc(var(--spacing) * 14)}.sm\:h-16{height:calc(var(--spacing) * 16)}.sm\:h-20{height:calc(var(--spacing) * 20)}.sm\:h-24{height:calc(var(--spacing) * 24)}.sm\:max-h-\[calc\(100vh-8em\)\]{max-height:calc(100vh - 8em)}.sm\:min-h-6{min-height:calc(var(--spacing) * 6)}.sm\:min-h-8{min-height:calc(var(--spacing) * 8)}.sm\:min-h-10{min-height:calc(var(--spacing) * 10)}.sm\:min-h-12{min-height:calc(var(--spacing) * 12)}.sm\:min-h-14{min-height:calc(var(--spacing) * 14)}.sm\:min-h-20{min-height:calc(var(--spacing) * 20)}.sm\:w-3{width:calc(var(--spacing) * 3)}.sm\:w-4{width:calc(var(--spacing) * 4)}.sm\:w-5{width:calc(var(--spacing) * 5)}.sm\:w-6{width:calc(var(--spacing) * 6)}.sm\:w-7{width:calc(var(--spacing) * 7)}.sm\:w-8{width:calc(var(--spacing) * 8)}.sm\:w-10{width:calc(var(--spacing) * 10)}.sm\:w-12{width:calc(var(--spacing) * 12)}.sm\:w-16{width:calc(var(--spacing) * 16)}.sm\:w-20{width:calc(var(--spacing) * 20)}.sm\:w-24{width:calc(var(--spacing) * 24)}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-80{width:calc(var(--spacing) * 80)}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-\[28rem\]{width:28rem}.sm\:w-\[32rem\]{width:32rem}.sm\:w-\[40rem\]{width:40rem}.sm\:w-\[48rem\]{width:48rem}.sm\:w-full{width:100%}.sm\:max-w-36{max-width:calc(var(--spacing) * 36)}.sm\:max-w-64{max-width:calc(var(--spacing) * 64)}.sm\:max-w-96{max-width:calc(var(--spacing) * 96)}.sm\:max-w-\[28rem\]{max-width:28rem}.sm\:max-w-\[32rem\]{max-width:32rem}.sm\:max-w-\[36rem\]{max-width:36rem}.sm\:max-w-md{max-width:var(--max-width-md)}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-0\.5{gap:calc(var(--spacing) * .5)}.sm\:gap-1{gap:calc(var(--spacing) * 1)}.sm\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-3\.5{gap:calc(var(--spacing) * 3.5)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-12{gap:calc(var(--spacing) * 12)}.sm\:gap-16{gap:calc(var(--spacing) * 16)}.sm\:p-2{padding:calc(var(--spacing) * 2)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-10{padding:calc(var(--spacing) * 10)}.sm\:p-12{padding:calc(var(--spacing) * 12)}.sm\:px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.sm\:px-2{padding-inline:calc(var(--spacing) * 2)}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-7{padding-inline:calc(var(--spacing) * 7)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-0\.5{padding-block:calc(var(--spacing) * .5)}.sm\:py-1{padding-block:calc(var(--spacing) * 1)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.sm\:py-2{padding-block:calc(var(--spacing) * 2)}.sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.sm\:py-3{padding-block:calc(var(--spacing) * 3)}.sm\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.sm\:py-4{padding-block:calc(var(--spacing) * 4)}.sm\:py-8{padding-block:calc(var(--spacing) * 8)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:py-16{padding-block:calc(var(--spacing) * 16)}.sm\:py-24{padding-block:calc(var(--spacing) * 24)}.sm\:py-32{padding-block:calc(var(--spacing) * 32)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:before\:h-2\.5:before{content:var(--tw-content);height:calc(var(--spacing) * 2.5)}.sm\:before\:w-2\.5:before{content:var(--tw-content);width:calc(var(--spacing) * 2.5)}}@media (min-width:48rem){.md\:top-16{top:calc(var(--spacing) * 16)}.md\:mb-3{margin-bottom:calc(var(--spacing) * 3)}.md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.md\:mb-16{margin-bottom:calc(var(--spacing) * 16)}.md\:ml-10{margin-left:calc(var(--spacing) * 10)}.md\:flex{display:flex}.md\:inline-block{display:inline-block}.md\:h-8{height:calc(var(--spacing) * 8)}.md\:h-16{height:calc(var(--spacing) * 16)}.md\:h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.md\:w-8{width:calc(var(--spacing) * 8)}.md\:w-16{width:calc(var(--spacing) * 16)}.md\:flex-1{flex:1}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-3{gap:calc(var(--spacing) * 3)}:where(.md\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.md\:rounded-xl{border-radius:var(--radius-xl)}.md\:p-2{padding:calc(var(--spacing) * 2)}.md\:px-0{padding-inline:calc(var(--spacing) * 0)}.md\:py-0{padding-block:calc(var(--spacing) * 0)}.md\:py-16{padding-block:calc(var(--spacing) * 16)}.md\:py-20{padding-block:calc(var(--spacing) * 20)}.md\:pt-36{padding-top:calc(var(--spacing) * 36)}.md\:pb-28{padding-bottom:calc(var(--spacing) * 28)}.md\:text-left{text-align:left}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:relative{position:relative}.lg\:top-0{top:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline-flex{display:inline-flex}.lg\:h-full{height:100%}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media (prefers-color-scheme:dark){.dark\:text-green-400{color:var(--color-green-400)}}.\[\&_\[data-interactive\]\]\:pointer-events-auto [data-interactive],.\[\&_a\]\:pointer-events-auto a,.\[\&_button\]\:pointer-events-auto button{pointer-events:auto}.\[\&_button\]\:m-0 button{margin:calc(var(--spacing) * 0)}.\[\&_button\]\:h-full button{height:100%}.\[\&_button\]\:rounded-none button{border-radius:0}.\[\&_button\]\:border-0 button{border-style:var(--tw-border-style);border-width:0}.\[\&_button\]\:shadow-none button{--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)}.\[\&_input\]\:pointer-events-auto input,.\[\&_label\]\:pointer-events-auto label,.\[\&_select\]\:pointer-events-auto select,.\[\&_textarea\]\:pointer-events-auto textarea{pointer-events:auto}.\[\&\:\:-webkit-scrollbar\]\:w-1\.5::-webkit-scrollbar{width:calc(var(--spacing) * 1.5)}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:3.40282e38px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-transparent::-webkit-scrollbar-thumb{background-color:#0000}@media (hover:hover){.hover\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-muted-foreground\/20:hover::-webkit-scrollbar-thumb{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:\[\&\:\:-webkit-scrollbar-thumb\]\:bg-muted-foreground\/20:hover::-webkit-scrollbar-thumb{background-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}}.\[\&\:\:-webkit-scrollbar-thumb\:hover\]\:bg-muted-foreground\/30::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.\[\&\:\:-webkit-scrollbar-thumb\:hover\]\:bg-muted-foreground\/30::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.\[\&\:\:-webkit-scrollbar-track\]\:bg-transparent::-webkit-scrollbar-track{background-color:#0000}.\[\&\:last-child\>\*\:last-child\]\:hidden:last-child>:last-child{display:none}.\[\&\>button\]\:rounded-none>button{border-radius:0}.\[\&\>button\:first-child\]\:rounded-t-md>button:first-child{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.\[\&\>button\:first-child\]\:rounded-l-md>button:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\[\&\>button\:last-child\]\:rounded-r-md>button:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\[\&\>button\:last-child\]\:rounded-b-md>button:last-child{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\[\&\>button\:not\(\:last-child\)\]\:border-r-0>button:not(:last-child){border-right-style:var(--tw-border-style);border-right-width:0}.\[\&\>button\:not\(\:last-child\)\]\:border-b-0>button:not(:last-child){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\>input\]\:min-w-0>input{min-width:calc(var(--spacing) * 0)}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\>input\]\:rounded-none>input{border-radius:0}.\[\&\>input\]\:border-0>input{border-style:var(--tw-border-style);border-width:0}.\[\&\>input\]\:bg-transparent>input{background-color:#0000}.\[\&\>input\]\:shadow-none>input{--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)}.\[\&\>input\]\:ring-0>input{--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)}.\[\&\>input\]\:focus\:border-0>input:focus{border-style:var(--tw-border-style);border-width:0}.\[\&\>input\]\:focus\:ring-0>input:focus{--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)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:mx-2{margin-inline:calc(var(--spacing) * 2)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:hidden{display:none}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:w-12{width:calc(var(--spacing) * 12)}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:justify-center{justify-content:center}nav[data-collapsed=true] .\[nav\[data-collapsed\=\'true\'\]_\&\]\:px-0{padding-inline:calc(var(--spacing) * 0)}.rounded-box{border-radius:var(--radius-box,1rem)}.animate-scaleIn{animation:.2s ease-out scaleIn}.animate-slideInLeft{animation:.3s ease-out slideInLeft}.animate-slideInRight{animation:.3s ease-out slideInRight}.animate-slideInTop{animation:.3s ease-out slideInTop}.animate-slideInBottom{animation:.3s ease-out slideInBottom}.scrollbar-thin{scrollbar-width:thin;scrollbar-gutter:stable}.scrollbar-thin::-webkit-scrollbar{width:6px}.scrollbar-thin::-webkit-scrollbar-thumb{background:var(--muted-foreground) / .3;border-radius:3px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background:var(--muted-foreground) / .5}}:root,.light{--background:#fdfcfe;--foreground:#1c1b29;--card:#fff;--card-foreground:#1c1b29;--popover:#fff;--popover-foreground:#1c1b29;--primary:#72458c;--primary-hover:#623a79;--primary-active:#523065;--primary-foreground:#fff;--accent:#d4a24a;--accent-hover:#c1933f;--accent-active:#ad8435;--accent-foreground:#1c1b29;--neutral:#5b5863;--neutral-hover:#4b4852;--neutral-active:#38363e;--neutral-foreground:#fff;--muted:#f1edf6;--muted-hover:#e6e0ee;--muted-active:#dad3e6;--muted-foreground:#3a3746;--error:#d64545;--error-hover:#c13b3b;--error-active:#aa3232;--error-foreground:#fff;--success:#2f7d57;--success-hover:#276a4a;--success-active:#1f573e;--success-foreground:#fff;--warning:#f08a24;--warning-hover:#dd7b1f;--warning-active:#c86c1b;--warning-foreground:#fff;--info:#3b6edc;--info-hover:#325fc1;--info-active:#2a50a5;--info-foreground:#fff;--border:#e3dde9;--input:#ede7f3;--ring:#72458c}.dark{--background:#1e1d2a;--foreground:#f5f4f8;--card:#242334;--card-foreground:#f5f4f8;--popover:#191826;--popover-foreground:#f5f4f8;--primary:#8f63aa;--primary-hover:#9d75b6;--primary-active:#aa87c1;--primary-foreground:#fff;--accent:#e0b15a;--accent-hover:#e6be73;--accent-active:#ebcb8c;--accent-foreground:#1e1d2a;--neutral:#bcb9c8;--neutral-hover:#c8c5d6;--neutral-active:#d8d5e6;--neutral-foreground:#1e1d2a;--muted:#353347;--muted-hover:#424058;--muted-active:#4f4d69;--muted-foreground:#c7c6d1;--error:#e05252;--error-hover:#e86868;--error-active:#ef7f7f;--error-foreground:#fff;--success:#3fb07a;--success-hover:#56bc8b;--success-active:#6ec89d;--success-foreground:#fff;--warning:#f4a24d;--warning-hover:#f6b46c;--warning-active:#f8c68a;--warning-foreground:#1e1d2a;--info:#6b8df0;--info-hover:#809ff3;--info-active:#95b1f6;--info-foreground:#fff;--border:#3d3b52;--input:#353347;--ring:#8f63aa}@keyframes scaleIn{0%{opacity:0;scale:.95}to{opacity:1;scale:1}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideInTop{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@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-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|