@json-to-office/jto 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +18 -0
- package/README.md +23 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +5639 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/assets/HomePage-CGK1cPFp.js +99 -0
- package/dist/client/assets/HomePage-CGK1cPFp.js.map +1 -0
- package/dist/client/assets/JsonEditorPage-DKaFqYpM.js +3 -0
- package/dist/client/assets/JsonEditorPage-DKaFqYpM.js.map +1 -0
- package/dist/client/assets/NotFoundPage-Et1QhbQw.js +2 -0
- package/dist/client/assets/NotFoundPage-Et1QhbQw.js.map +1 -0
- package/dist/client/assets/button-B5W5GwSc.js +2 -0
- package/dist/client/assets/button-B5W5GwSc.js.map +1 -0
- package/dist/client/assets/docx-preview-CUjVWdSJ.js +34 -0
- package/dist/client/assets/docx-preview-CUjVWdSJ.js.map +1 -0
- package/dist/client/assets/editor-CH_tiHyn.js +9 -0
- package/dist/client/assets/editor-CH_tiHyn.js.map +1 -0
- package/dist/client/assets/editor-monaco-json-8I2epq6g.js +6 -0
- package/dist/client/assets/editor-monaco-json-8I2epq6g.js.map +1 -0
- package/dist/client/assets/index-B9dV-vCI.css +1 -0
- package/dist/client/assets/index-DactvF4v.js +3 -0
- package/dist/client/assets/index-DactvF4v.js.map +1 -0
- package/dist/client/assets/monaco-editor-DzeBDgmk.js +12 -0
- package/dist/client/assets/monaco-editor-DzeBDgmk.js.map +1 -0
- package/dist/client/assets/preview-CJlTPgks.js +3 -0
- package/dist/client/assets/preview-CJlTPgks.js.map +1 -0
- package/dist/client/assets/query-vendor-UL64zsGL.js +15 -0
- package/dist/client/assets/query-vendor-UL64zsGL.js.map +1 -0
- package/dist/client/assets/radix-ui-CXavUarI.js +2 -0
- package/dist/client/assets/radix-ui-CXavUarI.js.map +1 -0
- package/dist/client/assets/react-vendor-DhdcN9D5.js +102 -0
- package/dist/client/assets/react-vendor-DhdcN9D5.js.map +1 -0
- package/dist/client/assets/settings-store-provider-DuCKtwqs.js +2 -0
- package/dist/client/assets/settings-store-provider-DuCKtwqs.js.map +1 -0
- package/dist/client/assets/state-vendor-CAMVKh-F.js +6 -0
- package/dist/client/assets/state-vendor-CAMVKh-F.js.map +1 -0
- package/dist/client/assets/ui-vendor-C6DsfOoA.js +247 -0
- package/dist/client/assets/ui-vendor-C6DsfOoA.js.map +1 -0
- package/dist/client/css/preview/docxjs.css +11 -0
- package/dist/client/icon.svg +5 -0
- package/dist/client/index.html +23 -0
- package/dist/client/templates/Charts Demo.pptx.json +174 -0
- package/dist/client/templates/Company Branding.pptx.json +143 -0
- package/dist/client/templates/Dashboard.pptx.json +91 -0
- package/dist/client/templates/Product Launch.pptx.json +87 -0
- package/dist/client/templates/Sales Deck.pptx.json +80 -0
- package/dist/client/templates/Wiseair.pptx.json +5382 -0
- package/dist/client/templates/themes/corporate.pptx.theme.json +32 -0
- package/dist/client/templates/themes/minimal.pptx.theme.json +32 -0
- package/dist/client/templates/themes/vibrant.pptx.theme.json +32 -0
- package/dist/index.d.ts +387 -0
- package/dist/index.js +2303 -0
- package/dist/index.js.map +1 -0
- package/package.json +147 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-monaco-json-8I2epq6g.js","sources":["../../../../../node_modules/.pnpm/lodash.debounce@4.0.8/node_modules/lodash.debounce/index.js","../../../src/client/store/editor-refs-store.ts","../../../src/client/lib/monaco-selection-utils.ts","../../../src/client/components/json-editor/validation-panel.tsx","../../../src/client/components/json-editor/editor-monaco-json.tsx"],"sourcesContent":["/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Editor References Store\n * Manages references to Monaco editor instances for selection context\n */\n\nimport { create } from 'zustand';\nimport type { editor as MonacoEditorType } from 'monaco-editor';\nimport type { Monaco } from '@monaco-editor/react';\n\nexport interface EditorReference {\n editor: MonacoEditorType.IStandaloneCodeEditor;\n monaco: Monaco;\n documentName: string;\n}\n\ninterface EditorRefsState {\n editors: Map<string, EditorReference>;\n activeEditorName: string | null;\n}\n\ninterface EditorRefsActions {\n registerEditor: (\n documentName: string,\n editor: MonacoEditorType.IStandaloneCodeEditor,\n monaco: Monaco\n ) => void;\n unregisterEditor: (documentName: string) => void;\n setActiveEditor: (documentName: string | null) => void;\n getActiveEditor: () => EditorReference | null;\n getEditor: (documentName: string) => EditorReference | null;\n}\n\nexport type EditorRefsStore = EditorRefsState & EditorRefsActions;\n\nexport const useEditorRefsStore = create<EditorRefsStore>((set, get) => ({\n editors: new Map(),\n activeEditorName: null,\n\n registerEditor: (documentName, editor, monaco) => {\n set((state) => {\n const newEditors = new Map(state.editors);\n newEditors.set(documentName, { editor, monaco, documentName });\n return { editors: newEditors };\n });\n },\n\n unregisterEditor: (documentName) => {\n set((state) => {\n const newEditors = new Map(state.editors);\n newEditors.delete(documentName);\n return {\n editors: newEditors,\n activeEditorName:\n state.activeEditorName === documentName\n ? null\n : state.activeEditorName,\n };\n });\n },\n\n setActiveEditor: (documentName) => {\n set({ activeEditorName: documentName });\n },\n\n getActiveEditor: () => {\n const state = get();\n if (!state.activeEditorName) return null;\n return state.editors.get(state.activeEditorName) || null;\n },\n\n getEditor: (documentName) => {\n return get().editors.get(documentName) || null;\n },\n}));\n","/**\n * Monaco Editor Selection Utilities\n * Provides functionality to extract selected text and JSON paths from Monaco editor instances\n */\n\nimport type { editor as MonacoEditorType } from 'monaco-editor';\nimport type { Monaco } from '@monaco-editor/react';\n\nexport interface SelectionContext {\n selectedText: string;\n jsonPath?: string;\n propertyKey?: string;\n fullDocument?: any;\n isValidJson: boolean;\n startLine: number;\n endLine: number;\n}\n\n/**\n * Get the current selection context from a Monaco editor instance\n */\nexport function getSelectionContext(\n editor: MonacoEditorType.IStandaloneCodeEditor,\n monaco: Monaco\n): SelectionContext | null {\n if (!editor || !monaco) {\n return null;\n }\n\n const model = editor.getModel();\n if (!model) {\n return null;\n }\n\n const selection = editor.getSelection();\n if (!selection) {\n return null;\n }\n\n // Get selected text\n const selectedText = model.getValueInRange(selection);\n\n // If no text is selected, get the word at cursor position\n const finalText = selectedText || getWordAtCursor(editor, monaco);\n\n if (!finalText) {\n return null;\n }\n\n // Get the full document text\n const fullDocumentText = model.getValue();\n let fullDocument: any = null;\n let isValidJson = false;\n\n try {\n fullDocument = JSON.parse(fullDocumentText);\n isValidJson = true;\n } catch {\n // Document is not valid JSON\n }\n\n // Try to determine the JSON path\n const jsonPath = isValidJson\n ? getJsonPathAtPosition(\n fullDocumentText,\n selection.startLineNumber,\n selection.startColumn\n )\n : undefined;\n\n // Extract property key if we're selecting a property value\n const propertyKey = extractPropertyKey(\n fullDocumentText,\n selection.startLineNumber,\n selection.startColumn\n );\n\n return {\n selectedText: finalText,\n jsonPath,\n propertyKey,\n fullDocument,\n isValidJson,\n startLine: selection.startLineNumber,\n endLine: selection.endLineNumber,\n };\n}\n\n/**\n * Get the word at the current cursor position\n */\nfunction getWordAtCursor(\n editor: MonacoEditorType.IStandaloneCodeEditor,\n _monaco: Monaco\n): string {\n const model = editor.getModel();\n const position = editor.getPosition();\n\n if (!model || !position) {\n return '';\n }\n\n const word = model.getWordAtPosition(position);\n if (word) {\n return model.getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn: word.startColumn,\n endLineNumber: position.lineNumber,\n endColumn: word.endColumn,\n });\n }\n\n return '';\n}\n\n/**\n * Determine the JSON path at a specific position in the document\n */\nfunction getJsonPathAtPosition(\n documentText: string,\n lineNumber: number,\n column: number\n): string | undefined {\n try {\n // Split document into lines\n const lines = documentText.split('\\n');\n\n // Build a path by analyzing the nesting level\n const path: string[] = [];\n let depth = 0;\n let inArray = false;\n let arrayIndex = 0;\n\n for (let i = 0; i < Math.min(lineNumber, lines.length); i++) {\n const line = lines[i];\n\n // Count braces and brackets to track nesting\n for (let j = 0; j < line.length; j++) {\n const char = line[j];\n\n if (i === lineNumber - 1 && j >= column) {\n // We've reached the target position\n break;\n }\n\n if (char === '{') {\n depth++;\n } else if (char === '}') {\n depth--;\n if (path.length > depth) {\n path.pop();\n }\n } else if (char === '[') {\n inArray = true;\n arrayIndex = 0;\n } else if (char === ']') {\n inArray = false;\n if (path[path.length - 1]?.match(/\\[\\d+\\]$/)) {\n path.pop();\n }\n } else if (char === ',' && inArray) {\n arrayIndex++;\n }\n }\n\n // Try to extract property names from the line\n const propertyMatch = line.match(/^\\s*\"([^\"]+)\"\\s*:/);\n if (propertyMatch) {\n // Adjust path length to current depth\n while (path.length >= depth) {\n path.pop();\n }\n\n if (inArray) {\n path.push(`${propertyMatch[1]}[${arrayIndex}]`);\n } else {\n path.push(propertyMatch[1]);\n }\n }\n }\n\n return path.length > 0 ? path.join('.') : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Extract the property key at a specific position\n */\nfunction extractPropertyKey(\n documentText: string,\n lineNumber: number,\n _column: number\n): string | undefined {\n try {\n const lines = documentText.split('\\n');\n if (lineNumber > lines.length) {\n return undefined;\n }\n\n const line = lines[lineNumber - 1];\n\n // Look for a property key on the same line\n const propertyMatch = line.match(/^\\s*\"([^\"]+)\"\\s*:/);\n if (propertyMatch) {\n return propertyMatch[1];\n }\n\n // Look backwards for the nearest property key\n for (let i = lineNumber - 2; i >= 0; i--) {\n const prevLine = lines[i];\n const prevMatch = prevLine.match(/^\\s*\"([^\"]+)\"\\s*:/);\n if (prevMatch) {\n // Check if this property's value extends to our line\n // This is a simplified check - more complex logic might be needed\n return prevMatch[1];\n }\n\n // Stop if we hit a closing brace (end of object)\n if (prevLine.includes('}')) {\n break;\n }\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Format a selection context for display\n */\nexport function formatSelectionContext(context: SelectionContext): string {\n const parts: string[] = [];\n\n if (context.jsonPath) {\n parts.push(`Path: ${context.jsonPath}`);\n }\n\n if (context.propertyKey) {\n parts.push(`Property: ${context.propertyKey}`);\n }\n\n parts.push(`Lines: ${context.startLine}-${context.endLine}`);\n\n return parts.join(' | ');\n}\n\n/**\n * Extract a JSON subtree from a path\n */\nexport function extractJsonSubtree(obj: any, path: string): any {\n if (!obj || !path) {\n return undefined;\n }\n\n const parts = path.split('.');\n let current = obj;\n\n for (const part of parts) {\n if (!current) {\n return undefined;\n }\n\n // Handle array notation like \"items[0]\"\n const arrayMatch = part.match(/^([^[]+)\\[(\\d+)\\]$/);\n if (arrayMatch) {\n const [, key, index] = arrayMatch;\n current = current[key];\n if (Array.isArray(current)) {\n current = current[parseInt(index, 10)];\n } else {\n return undefined;\n }\n } else {\n current = current[part];\n }\n }\n\n return current;\n}\n\n/**\n * Create a context snippet for AI\n */\nexport function createContextSnippet(context: SelectionContext): string {\n const lines: string[] = [];\n\n if (context.jsonPath) {\n lines.push(`JSON Path: ${context.jsonPath}`);\n }\n\n if (context.selectedText.length > 500) {\n lines.push(\n `Selected Text (truncated): ${context.selectedText.substring(0, 500)}...`\n );\n } else {\n lines.push(`Selected Text: ${context.selectedText}`);\n }\n\n if (context.isValidJson && context.fullDocument && context.jsonPath) {\n const subtree = extractJsonSubtree(context.fullDocument, context.jsonPath);\n if (subtree !== undefined) {\n const subtreeStr = JSON.stringify(subtree, null, 2);\n if (subtreeStr.length > 500) {\n lines.push(\n `Context Value (truncated): ${subtreeStr.substring(0, 500)}...`\n );\n } else {\n lines.push(`Context Value: ${subtreeStr}`);\n }\n }\n }\n\n return lines.join('\\n');\n}\n","import React, { useState, useEffect } from 'react';\nimport {\n AlertCircle,\n ChevronDown,\n ChevronUp,\n X,\n AlertTriangle,\n Copy,\n Check,\n} from 'lucide-react';\nimport { cn } from '../../lib/utils';\nimport type { JsonEditorError } from '../../lib/json-types';\n\ninterface ValidationPanelProps {\n errors: JsonEditorError[];\n onErrorClick?: (error: JsonEditorError) => void;\n onClose?: () => void;\n className?: string;\n isMinimized?: boolean;\n onToggleMinimize?: () => void;\n}\n\nexport function ValidationPanel({\n errors,\n onErrorClick,\n onClose,\n className,\n isMinimized = false,\n onToggleMinimize,\n}: ValidationPanelProps) {\n const [isExpanded, setIsExpanded] = useState(!isMinimized);\n\n useEffect(() => {\n setIsExpanded(!isMinimized);\n }, [isMinimized]);\n\n const hasErrors = errors.length > 0;\n const errorCount = errors.length;\n\n if (!hasErrors) return null;\n\n const toggleExpanded = () => {\n const newExpanded = !isExpanded;\n setIsExpanded(newExpanded);\n onToggleMinimize?.();\n };\n\n return (\n <div\n className={cn(\n 'absolute bottom-0 left-0 right-0 z-50 bg-background border-t shadow-lg transition-all duration-200',\n isExpanded ? 'h-48' : 'h-10',\n className\n )}\n >\n {/* Header Bar */}\n <div\n className={cn(\n 'flex items-center justify-between px-3 py-2 cursor-pointer',\n 'bg-destructive/10 border-b border-destructive/20',\n 'hover:bg-destructive/15 transition-colors'\n )}\n onClick={toggleExpanded}\n >\n <div className=\"flex items-center gap-2\">\n <AlertCircle className=\"w-4 h-4 text-destructive\" />\n <span className=\"text-sm font-medium text-destructive\">\n {errorCount} Validation Error{errorCount !== 1 ? 's' : ''}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n <CopyErrorsButton errors={errors} />\n <button\n onClick={(e) => {\n e.stopPropagation();\n toggleExpanded();\n }}\n className=\"p-1 hover:bg-destructive/20 rounded transition-colors\"\n aria-label={isExpanded ? 'Minimize' : 'Expand'}\n >\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4\" />\n ) : (\n <ChevronUp className=\"w-4 h-4\" />\n )}\n </button>\n {onClose && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"p-1 hover:bg-destructive/20 rounded transition-colors\"\n aria-label=\"Close validation panel\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n </div>\n\n {/* Error List */}\n {isExpanded && (\n <div className=\"overflow-y-auto h-[calc(100%-2.5rem)]\">\n <div className=\"divide-y divide-border/50\">\n {errors.map((error, index) => (\n <ErrorItem\n key={`${error.path}-${index}`}\n error={error}\n onClick={() => onErrorClick?.(error)}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction CopyErrorsButton({ errors }: { errors: JsonEditorError[] }) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (e: React.MouseEvent) => {\n e.stopPropagation();\n const text = errors\n .map((err) => {\n const loc =\n err.startLineNumber && err.startColumn\n ? `Line ${err.startLineNumber}:${err.startColumn}`\n : 'Unknown location';\n return `${loc} — ${err.message}`;\n })\n .join('\\n');\n navigator.clipboard.writeText(text).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n };\n\n return (\n <button\n onClick={handleCopy}\n className={cn(\n 'flex items-center gap-1 px-1.5 py-1 rounded transition-all duration-200 cursor-pointer',\n copied\n ? 'bg-green-500/15 text-green-500'\n : 'hover:bg-destructive/20'\n )}\n aria-label=\"Copy all errors\"\n >\n {copied ? (\n <>\n <Check className=\"w-3.5 h-3.5\" />\n <span className=\"text-xs font-medium\">Copied</span>\n </>\n ) : (\n <Copy className=\"w-4 h-4\" />\n )}\n </button>\n );\n}\n\ninterface ErrorItemProps {\n error: JsonEditorError;\n onClick?: () => void;\n}\n\nfunction ErrorItem({ error, onClick }: ErrorItemProps) {\n const getSeverityIcon = (severity: string) => {\n switch (severity) {\n case 'error':\n return (\n <AlertCircle className=\"w-4 h-4 text-destructive flex-shrink-0\" />\n );\n case 'warning':\n return (\n <AlertTriangle className=\"w-4 h-4 text-yellow-500 flex-shrink-0\" />\n );\n default:\n return <AlertCircle className=\"w-4 h-4 text-blue-500 flex-shrink-0\" />;\n }\n };\n\n const formatPath = (path: string) => {\n if (!path) return 'Document root';\n // Remove leading slash and format nicely\n return path.replace(/^\\//, '').replace(/\\//g, ' → ');\n };\n\n return (\n <div\n className={cn(\n 'px-3 py-2 hover:bg-muted/50 cursor-pointer transition-colors',\n 'group'\n )}\n onClick={onClick}\n >\n <div className=\"flex items-start gap-2\">\n {getSeverityIcon(error.severity)}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"text-xs font-mono text-muted-foreground\">\n {error.startLineNumber && error.startColumn\n ? `Line ${error.startLineNumber}:${error.startColumn}`\n : 'Unknown location'}\n </span>\n {error.path && (\n <>\n <span className=\"text-xs text-muted-foreground\">•</span>\n <span className=\"text-xs text-muted-foreground truncate\">\n {formatPath(error.path)}\n </span>\n </>\n )}\n </div>\n <p className=\"text-sm text-foreground\">{error.message}</p>\n {error.code && error.code !== 'validation_error' && (\n <span className=\"text-xs text-muted-foreground font-mono mt-1 inline-block\">\n Code: {error.code}\n </span>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n// Status bar component for minimal error display\nexport function ValidationStatusBar({\n errors,\n onClick,\n className,\n}: {\n errors: JsonEditorError[];\n onClick?: () => void;\n className?: string;\n}) {\n if (errors.length !== 0) {\n return (\n <div\n className={cn(\n 'flex items-center gap-2 px-2 py-1 text-xs cursor-pointer',\n 'bg-destructive/10 text-destructive hover:bg-destructive/15 transition-colors',\n className\n )}\n onClick={onClick}\n >\n <AlertCircle className=\"w-3 h-3\" />\n <span>\n {errors.length} error{errors.length !== 1 ? 's' : ''}\n </span>\n </div>\n );\n }\n}\n","import React, { useRef, useEffect, useState, useCallback } from 'react';\nimport { useTheme } from '../theme-provider';\nimport Editor, { Monaco, DiffEditor } from '@monaco-editor/react';\nimport debounce from 'lodash.debounce';\nimport type { editor } from 'monaco-editor';\nimport { useDocumentsStore } from '../../store/documents-store-provider';\nimport { useOutputStore } from '../../store/output-store-provider';\nimport { Button } from '../ui/button';\nimport { type JsonEditorError } from '../../lib/json-types';\nimport { configureMonacoInstance } from '../../lib/monaco-config';\nimport { useEditorRefsStore } from '../../store/editor-refs-store';\nimport {\n getSelectionContext,\n createContextSnippet,\n} from '../../lib/monaco-selection-utils';\nimport { ValidationPanel, ValidationStatusBar } from './validation-panel';\n\ninterface EditorMonacoJsonProps {\n name: string;\n defaultValue?: string;\n value?: string; // when provided, the editor becomes controlled\n saveDocumentDebounceWait: number;\n}\n\nfunction EditorMonacoJson({\n name,\n defaultValue,\n value,\n saveDocumentDebounceWait,\n}: EditorMonacoJsonProps) {\n console.debug(`Render EditorMonacoJson (name: ${name})`);\n\n const editorRef = useRef<editor.IStandaloneCodeEditor | null>(null);\n const monacoRef = useRef<Monaco | null>(null);\n const { resolvedTheme } = useTheme();\n const saveDocument = useDocumentsStore((state) => state.saveDocument);\n const bumpEditSequence = useOutputStore((state) => state.bumpEditSequence);\n const closeDocument = useDocumentsStore((state) => state.closeDocument);\n const pendingDiff = useDocumentsStore((state) => state.pendingDiffs[name]);\n const clearPendingDiff = useDocumentsStore((state) => state.clearPendingDiff);\n const [validationErrors, setValidationErrors] = useState<JsonEditorError[]>(\n []\n );\n const [showValidationPanel, setShowValidationPanel] = useState(true);\n const [isValidationPanelMinimized, setIsValidationPanelMinimized] =\n useState(false);\n const decorationIdsRef = useRef<string[]>([]);\n const { registerEditor, unregisterEditor, setActiveEditor } =\n useEditorRefsStore();\n\n const debouncedSaveDocumentRef = useRef(\n debounce(saveDocument, saveDocumentDebounceWait)\n );\n\n // Setup Monaco editor for JSON with schema validation\n const handleEditorWillMount = useCallback((monaco: Monaco) => {\n console.debug('Setting up Monaco for JSON editor');\n\n // Enhanced error styles removed - using Monaco's native styling\n\n // Ensure Monaco is configured with schemas\n configureMonacoInstance(monaco);\n }, []);\n\n function handleEditorDidMount(\n editor: editor.IStandaloneCodeEditor,\n monaco: Monaco\n ) {\n console.debug(`EditorDidMount: (name: ${name})`);\n editorRef.current = editor;\n monacoRef.current = monaco;\n\n // Register editor in the refs store\n registerEditor(name, editor, monaco);\n setActiveEditor(name);\n\n // Ensure the model's language is set to JSON for schema validation\n const model = editor.getModel();\n if (model) {\n monaco.editor.setModelLanguage(model, 'json');\n console.debug('Model language set to JSON for:', model.uri.toString());\n }\n\n // Add context menu action for AI assistant\n editor.addAction({\n id: 'send-to-ai-assistant',\n label: 'Send to AI Assistant (⌘K)',\n contextMenuGroupId: 'navigation',\n contextMenuOrder: 1.5,\n keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK],\n run: function () {\n // Use the editor reference from closure instead of the parameter\n const selection = getSelectionContext(editor, monaco);\n if (selection) {\n const snippet = createContextSnippet(selection);\n // Dispatch event for the chat panel to capture\n window.dispatchEvent(\n new CustomEvent('monaco-selection-to-ai', {\n detail: {\n documentName: name,\n selection,\n snippet,\n },\n })\n );\n }\n },\n });\n\n // Set up keyboard shortcuts\n // Cmd+K => send selection to AI assistant\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, () => {\n const selection = getSelectionContext(editor, monaco);\n if (selection) {\n const snippet = createContextSnippet(selection);\n window.dispatchEvent(\n new CustomEvent('monaco-selection-to-ai', {\n detail: {\n documentName: name,\n selection,\n snippet,\n },\n })\n );\n }\n });\n\n // Cmd+S => save command\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, () => {\n const currentValue = editor.getValue();\n if (currentValue) saveDocument(name, currentValue);\n });\n\n // Cmd+W => close command\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyW, () => {\n const currentValue = editor.getValue();\n if (currentValue) saveDocument(name, currentValue);\n closeDocument(name);\n });\n\n // Format document shortcut (Shift+Alt+F)\n editor.addCommand(\n monaco.KeyMod.Shift | monaco.KeyMod.Alt | monaco.KeyCode.KeyF,\n () => {\n editor.getAction('editor.action.formatDocument')?.run();\n }\n );\n\n // Initial validation will be handled by Monaco's onValidate\n }\n\n function handleEditorValidation(markers: editor.IMarker[]) {\n // Convert Monaco's native JSON validation markers to our error format\n console.debug('Monaco validation markers:', markers);\n\n const errors: JsonEditorError[] = markers.map((marker) => ({\n path: '', // Monaco doesn't provide JSON path, but we don't need it for display\n message: marker.message,\n code:\n typeof marker.code === 'string'\n ? marker.code\n : marker.code?.value || 'validation_error',\n startLineNumber: marker.startLineNumber,\n startColumn: marker.startColumn,\n endLineNumber: marker.endLineNumber,\n endColumn: marker.endColumn,\n severity:\n marker.severity === monacoRef.current?.MarkerSeverity.Error\n ? 'error'\n : marker.severity === monacoRef.current?.MarkerSeverity.Warning\n ? 'warning'\n : 'info',\n }));\n\n setValidationErrors(errors);\n\n // Decorations are now handled by Monaco's native validation\n decorationIdsRef.current = [];\n\n // Show validation panel if there are errors\n if (errors.length > 0 && !showValidationPanel) {\n setShowValidationPanel(true);\n setIsValidationPanelMinimized(false);\n }\n }\n\n // Cancel debounced saveDocument on unmount and unregister editor\n useEffect(() => {\n const debouncedSaveDocument = debouncedSaveDocumentRef?.current;\n return () => {\n debouncedSaveDocument?.cancel();\n // Decorations cleanup handled by Monaco\n unregisterEditor(name);\n console.debug(`EditorWillUnMount: (name: ${name})`);\n };\n }, [name, unregisterEditor]);\n\n // Handle error click - navigate to error in editor\n const handleErrorClick = useCallback((error: JsonEditorError) => {\n if (editorRef.current && error.startLineNumber && error.startColumn) {\n // Navigate to error position\n editorRef.current.setPosition({\n lineNumber: error.startLineNumber,\n column: error.startColumn,\n });\n editorRef.current.revealLineInCenter(error.startLineNumber);\n editorRef.current.focus();\n }\n }, []);\n\n return (\n <div className=\"relative h-full\">\n {pendingDiff ? (\n <>\n <div className=\"flex items-center justify-between px-2 py-1 border-b bg-muted/40 text-xs\">\n <div>\n Review changes for <span className=\"font-medium\">{name}</span>\n </div>\n <div className=\"flex gap-2\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => clearPendingDiff(name)}\n >\n Discard\n </Button>\n <Button\n size=\"sm\"\n onClick={() => {\n saveDocument(name, pendingDiff.modified);\n clearPendingDiff(name, true);\n }}\n >\n Apply Changes\n </Button>\n </div>\n </div>\n <DiffEditor\n height=\"calc(100% - 32px)\"\n original={pendingDiff.original}\n modified={pendingDiff.modified}\n language=\"json\"\n theme={`vs-${resolvedTheme}`}\n options={{\n readOnly: true,\n renderSideBySide: true,\n originalEditable: false,\n automaticLayout: true,\n minimap: { enabled: false },\n }}\n beforeMount={handleEditorWillMount}\n />\n </>\n ) : (\n <Editor\n height=\"100%\"\n defaultLanguage=\"json\"\n theme={`vs-${resolvedTheme}`}\n defaultPath={\n name.endsWith('.json') ? name : `${name}.json`\n }\n value={value ?? defaultValue}\n beforeMount={handleEditorWillMount}\n onMount={handleEditorDidMount}\n onValidate={handleEditorValidation}\n onChange={(value) => {\n if (value) {\n bumpEditSequence();\n debouncedSaveDocumentRef.current(name, value);\n }\n }}\n options={{\n minimap: { enabled: true },\n scrollBeyondLastLine: true,\n wordWrap: 'on',\n automaticLayout: true,\n formatOnPaste: true,\n formatOnType: true,\n tabSize: 2,\n insertSpaces: true,\n detectIndentation: false,\n folding: true,\n foldingStrategy: 'indentation',\n showFoldingControls: 'always',\n bracketPairColorization: { enabled: true },\n guides: {\n bracketPairs: true,\n indentation: true,\n },\n // Enhanced suggest options for better autocomplete\n suggest: {\n showProperties: true,\n showMethods: true,\n showFunctions: true,\n showConstructors: true,\n showDeprecated: true,\n showFields: true,\n showVariables: true,\n showClasses: true,\n showStructs: true,\n showInterfaces: true,\n showModules: true,\n showTypeParameters: true,\n showValues: true,\n showConstants: true,\n showEnums: true,\n showEnumMembers: true,\n showKeywords: true,\n showWords: false,\n showColors: true,\n showFiles: false,\n showReferences: true,\n showFolders: false,\n showOperators: true,\n showUnits: true,\n showSnippets: true,\n snippetsPreventQuickSuggestions: false,\n insertMode: 'insert', // Changed from 'replace' to 'insert' for better UX\n filterGraceful: true, // Allow fuzzy matching\n localityBonus: true, // Prioritize nearby suggestions\n shareSuggestSelections: true, // Share suggestions across files\n showIcons: true, // Show icons in suggestions\n },\n // Quick suggestions appear faster\n quickSuggestions: {\n strings: true,\n comments: false,\n other: true,\n },\n quickSuggestionsDelay: 10, // Faster suggestions\n suggestSelection: 'first',\n suggestOnTriggerCharacters: true,\n acceptSuggestionOnEnter: 'on',\n acceptSuggestionOnCommitCharacter: true,\n wordBasedSuggestions: 'off', // Disable word-based to rely on schema\n // IntelliSense features\n parameterHints: {\n enabled: true,\n cycle: true,\n },\n hover: {\n enabled: true,\n delay: 300,\n sticky: true,\n },\n // Better completion behavior\n tabCompletion: 'on',\n snippetSuggestions: 'inline',\n inlineSuggest: {\n enabled: true,\n },\n }}\n />\n )}\n\n {/* Validation Status Bar */}\n <div className=\"absolute top-0 right-0\">\n <ValidationStatusBar\n errors={validationErrors}\n onClick={() => {\n setShowValidationPanel(true);\n setIsValidationPanelMinimized(false);\n }}\n />\n </div>\n\n {/* Enhanced Validation Panel */}\n {showValidationPanel && validationErrors.length > 0 && (\n <ValidationPanel\n errors={validationErrors}\n isMinimized={isValidationPanelMinimized}\n onToggleMinimize={() =>\n setIsValidationPanelMinimized(!isValidationPanelMinimized)\n }\n onErrorClick={handleErrorClick}\n onClose={() => setShowValidationPanel(false)}\n className=\"z-40\"\n />\n )}\n </div>\n );\n}\n\nexport const EditorMonacoJsonMemoized = React.memo(\n EditorMonacoJson,\n (prev, next) => {\n return (\n prev.name === next.name &&\n prev.value === next.value &&\n prev.saveDocumentDebounceWait === next.saveDocumentDebounceWait\n );\n }\n);\n"],"names":["FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","value","type","isObjectLike","isSymbol","other","isBinary","lodash_debounce","useEditorRefsStore","create","set","get","documentName","editor","monaco","state","newEditors","getSelectionContext","model","selection","finalText","getWordAtCursor","fullDocumentText","fullDocument","isValidJson","jsonPath","getJsonPathAtPosition","propertyKey","extractPropertyKey","_monaco","position","word","documentText","lineNumber","column","lines","path","depth","inArray","arrayIndex","i","line","char","_a","propertyMatch","_column","prevLine","prevMatch","extractJsonSubtree","obj","parts","current","part","arrayMatch","key","index","createContextSnippet","context","subtree","subtreeStr","ValidationPanel","errors","onErrorClick","onClose","className","isMinimized","onToggleMinimize","isExpanded","setIsExpanded","useState","useEffect","hasErrors","errorCount","toggleExpanded","jsxs","cn","jsx","AlertCircle","CopyErrorsButton","e","ChevronDown","ChevronUp","X","error","ErrorItem","copied","setCopied","handleCopy","text","err","Fragment","Check","Copy","onClick","getSeverityIcon","severity","AlertTriangle","formatPath","ValidationStatusBar","EditorMonacoJson","name","defaultValue","saveDocumentDebounceWait","editorRef","useRef","monacoRef","resolvedTheme","useTheme","saveDocument","useDocumentsStore","bumpEditSequence","useOutputStore","closeDocument","pendingDiff","clearPendingDiff","validationErrors","setValidationErrors","showValidationPanel","setShowValidationPanel","isValidationPanelMinimized","setIsValidationPanelMinimized","decorationIdsRef","registerEditor","unregisterEditor","setActiveEditor","debouncedSaveDocumentRef","handleEditorWillMount","useCallback","configureMonacoInstance","handleEditorDidMount","snippet","currentValue","handleEditorValidation","markers","marker","_b","_c","debouncedSaveDocument","handleErrorClick","Button","DiffEditor","Editor","EditorMonacoJsonMemoized","React","prev","next"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@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-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-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:"Geist",system-ui,-apple-system,sans-serif;--font-mono:"Geist Mono","JetBrains Mono","Fira Code",ui-monospace,monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-300:oklch(87.1% .15 154.449);--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-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-50:oklch(97% .014 254.604);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-900:oklch(38.1% .176 304.987);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-4xl:56rem;--container-5xl:64rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:.75rem;--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;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:hsl(var(--background));--color-foreground:hsl(var(--foreground));--color-card:hsl(var(--card));--color-card-foreground:hsl(var(--card-foreground));--color-popover:hsl(var(--popover));--color-popover-foreground:hsl(var(--popover-foreground));--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-secondary:hsl(var(--secondary));--color-secondary-foreground:hsl(var(--secondary-foreground));--color-muted:hsl(var(--muted));--color-muted-foreground:hsl(var(--muted-foreground));--color-accent:hsl(var(--accent));--color-accent-foreground:hsl(var(--accent-foreground));--color-destructive:hsl(var(--destructive));--color-destructive-foreground:hsl(var(--destructive-foreground));--color-border:hsl(var(--border));--color-input:hsl(var(--input));--color-ring:hsl(var(--ring));--color-sidebar:hsl(var(--sidebar-background));--color-sidebar-foreground:hsl(var(--sidebar-foreground));--color-sidebar-accent:hsl(var(--sidebar-accent));--color-sidebar-accent-foreground:hsl(var(--sidebar-accent-foreground));--color-sidebar-border:hsl(var(--sidebar-border));--color-sidebar-ring:hsl(var(--sidebar-ring));--color-surface-editor:hsl(var(--surface-editor));--color-surface-preview:hsl(var(--surface-preview));--color-surface-chat:hsl(var(--surface-chat))}}@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%;-moz-tab-size:4;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;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}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}:root{--background:220 6% 97%;--foreground:220 9% 12%;--card:220 6% 97%;--card-foreground:220 9% 12%;--popover:0 0% 100%;--popover-foreground:220 9% 12%;--primary:220 9% 20%;--primary-foreground:220 6% 97%;--secondary:220 6% 93%;--secondary-foreground:220 9% 12%;--muted:220 6% 93%;--muted-foreground:220 5% 46%;--accent:220 6% 93%;--accent-foreground:220 9% 12%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:220 6% 87%;--input:220 6% 87%;--ring:220 9% 20%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:.5rem;--sidebar-background:220 6% 94%;--sidebar-foreground:220 9% 20%;--sidebar-primary:220 9% 20%;--sidebar-primary-foreground:220 6% 97%;--sidebar-accent:220 6% 90%;--sidebar-accent-foreground:220 9% 12%;--sidebar-border:220 6% 87%;--sidebar-ring:220 9% 20%;--surface-editor:220 6% 97%;--surface-preview:220 5% 95%;--surface-chat:220 6% 95%}.dark{--background:220 8% 7%;--foreground:220 6% 93%;--card:220 8% 9%;--card-foreground:220 6% 93%;--popover:220 8% 9%;--popover-foreground:220 6% 93%;--primary:220 6% 90%;--primary-foreground:220 8% 7%;--secondary:220 6% 14%;--secondary-foreground:220 6% 93%;--muted:220 6% 14%;--muted-foreground:220 5% 55%;--accent:220 6% 14%;--accent-foreground:220 6% 93%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:220 6% 17%;--input:220 6% 17%;--ring:220 6% 80%;--chart-1:220 40% 55%;--chart-2:160 35% 50%;--chart-3:30 50% 55%;--chart-4:280 35% 60%;--chart-5:340 40% 55%;--sidebar-background:220 8% 5%;--sidebar-foreground:220 6% 85%;--sidebar-primary:220 6% 85%;--sidebar-primary-foreground:220 8% 5%;--sidebar-accent:220 6% 12%;--sidebar-accent-foreground:220 6% 85%;--sidebar-border:220 6% 13%;--sidebar-ring:220 6% 80%;--surface-editor:220 8% 7%;--surface-preview:220 7% 9%;--surface-chat:220 8% 8%}*{border-color:var(--color-border)}body{background-color:var(--color-background);color:var(--color-foreground)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);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)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1\.5{top:calc(var(--spacing)*-1.5)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-2{top:calc(var(--spacing)*2)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.-right-1\.5{right:calc(var(--spacing)*-1.5)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.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)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-0{margin-top:calc(var(--spacing)*0)}.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-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.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)}.-ml-2{margin-left:calc(var(--spacing)*-2)}.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}.line-clamp-2{-webkit-line-clamp:2;-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-square{aspect-ratio:1}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.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-4{height:calc(var(--spacing)*4)}.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-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-\[1\.2rem\]{height:1.2rem}.h-\[1\.15rem\]{height:1.15rem}.h-\[1px\]{height:1px}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[calc\(100\%-2\.5rem\)\]{height:calc(100% - 2.5rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-32{max-height:calc(var(--spacing)*32)}.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-\[50vh\]{max-height:50vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.max-h-screen{max-height:100vh}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[36px\]{min-height:36px}.min-h-\[80px\]{min-height:80px}.min-h-\[200px\]{min-height:200px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.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-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-52{width:calc(var(--spacing)*52)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[--sidebar-width\]{width:--sidebar-width}.w-\[1\.2rem\]{width:1.2rem}.w-\[1px\]{width:1px}.w-\[140px\]{width:140px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[--skeleton-width\]{max-width:--skeleton-width}.max-w-\[90\%\]{max-width:90%}.max-w-\[120px\]{max-width:120px}.max-w-\[140px\]{max-width:140px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[280px\]{max-width:280px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-\[1\.25rem\]{min-width:1.25rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;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)}.-rotate-90{rotate:-90deg}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.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-default{cursor:default}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.grid-cols-3{grid-template-columns:repeat(3,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}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.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-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-px{gap:1px}: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-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-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)))}.gap-x-0\.5{column-gap:calc(var(--spacing)*.5)}.gap-x-1{column-gap:calc(var(--spacing)*1)}.gap-x-2{column-gap:calc(var(--spacing)*2)}: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-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\/50>:not(:last-child)){border-color:color-mix(in srgb,hsl(var(--border))50%,transparent)}@supports (color:color-mix(in lab,red,red)){:where(.divide-border\/50>:not(:last-child)){border-color:color-mix(in oklab,var(--color-border)50%,transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.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-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-200{border-color:var(--color-amber-200)}.border-amber-400\/60{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/60{border-color:color-mix(in oklab,var(--color-amber-400)60%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-blue-400\/60{border-color:#54a2ff99}@supports (color:color-mix(in lab,red,red)){.border-blue-400\/60{border-color:color-mix(in oklab,var(--color-blue-400)60%,transparent)}}.border-blue-500{border-color:var(--color-blue-500)}.border-border{border-color:var(--color-border)}.border-border\/40{border-color:color-mix(in srgb,hsl(var(--border))40%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--color-border)40%,transparent)}}.border-border\/60{border-color:color-mix(in srgb,hsl(var(--border))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-destructive{border-color:var(--color-destructive)}.border-destructive\/20{border-color:color-mix(in srgb,hsl(var(--destructive))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--color-destructive)20%,transparent)}}.border-destructive\/30{border-color:color-mix(in srgb,hsl(var(--destructive))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/30{border-color:color-mix(in oklab,var(--color-destructive)30%,transparent)}}.border-destructive\/50{border-color:color-mix(in srgb,hsl(var(--destructive))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--color-destructive)50%,transparent)}}.border-foreground{border-color:var(--color-foreground)}.border-green-500{border-color:var(--color-green-500)}.border-input{border-color:var(--color-input)}.border-muted-foreground{border-color:var(--color-muted-foreground)}.border-primary{border-color:var(--color-primary)}.border-primary-foreground\/20{border-color:color-mix(in srgb,hsl(var(--primary-foreground))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-primary-foreground\/20{border-color:color-mix(in oklab,var(--color-primary-foreground)20%,transparent)}}.border-primary\/20{border-color:color-mix(in srgb,hsl(var(--primary))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-purple-400\/60{border-color:#c07eff99}@supports (color:color-mix(in lab,red,red)){.border-purple-400\/60{border-color:color-mix(in oklab,var(--color-purple-400)60%,transparent)}}.border-purple-500{border-color:var(--color-purple-500)}.border-red-400\/50{border-color:#ff656880}@supports (color:color-mix(in lab,red,red)){.border-red-400\/50{border-color:color-mix(in oklab,var(--color-red-400)50%,transparent)}}.border-secondary{border-color:var(--color-secondary)}.border-sidebar-border{border-color:var(--color-sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/60{background-color:#f99c0099}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/60{background-color:color-mix(in oklab,var(--color-amber-500)60%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:color-mix(in srgb,hsl(var(--background))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background)60%,transparent)}}.bg-background\/80{background-color:color-mix(in srgb,hsl(var(--background))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--color-background)80%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-border{background-color:var(--color-border)}.bg-border\/60{background-color:color-mix(in srgb,hsl(var(--border))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-border\/60{background-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\/10{background-color:color-mix(in srgb,hsl(var(--destructive))10%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--color-destructive)10%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/15{background-color:#00c75826}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/15{background-color:color-mix(in oklab,var(--color-green-500)15%,transparent)}}.bg-muted{background-color:var(--color-muted)}.bg-muted\/10{background-color:color-mix(in srgb,hsl(var(--muted))10%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted)10%,transparent)}}.bg-muted\/30{background-color:color-mix(in srgb,hsl(var(--muted))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-muted\/40{background-color:color-mix(in srgb,hsl(var(--muted))40%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--color-muted)40%,transparent)}}.bg-muted\/50{background-color:color-mix(in srgb,hsl(var(--muted))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--color-muted)50%,transparent)}}.bg-muted\/60{background-color:color-mix(in srgb,hsl(var(--muted))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/60{background-color:color-mix(in oklab,var(--color-muted)60%,transparent)}}.bg-muted\/80{background-color:color-mix(in srgb,hsl(var(--muted))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/80{background-color:color-mix(in oklab,var(--color-muted)80%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary-foreground\/10{background-color:color-mix(in srgb,hsl(var(--primary-foreground))10%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary-foreground\/10{background-color:color-mix(in oklab,var(--color-primary-foreground)10%,transparent)}}.bg-primary-foreground\/20{background-color:color-mix(in srgb,hsl(var(--primary-foreground))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary-foreground\/20{background-color:color-mix(in oklab,var(--color-primary-foreground)20%,transparent)}}.bg-primary\/5{background-color:color-mix(in srgb,hsl(var(--primary))5%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--color-primary)5%,transparent)}}.bg-primary\/10{background-color:color-mix(in srgb,hsl(var(--primary))10%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/70{background-color:color-mix(in srgb,hsl(var(--primary))70%,transparent)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/70{background-color:color-mix(in oklab,var(--color-primary)70%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-red-400\/10{background-color:#ff65681a}@supports (color:color-mix(in lab,red,red)){.bg-red-400\/10{background-color:color-mix(in oklab,var(--color-red-400)10%,transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-sidebar{background-color:var(--color-sidebar)}.bg-sidebar-border{background-color:var(--color-sidebar-border)}.bg-surface-chat{background-color:var(--color-surface-chat)}.bg-surface-editor{background-color:var(--color-surface-editor)}.bg-surface-preview{background-color:var(--color-surface-preview)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.fill-current{fill:currentColor}.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-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-\[1px\]{padding:1px}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.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-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.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-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-4{padding-top:calc(var(--spacing)*4)}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--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-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:var(--color-accent-foreground)}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--color-card-foreground)}.text-cyan-500{color:var(--color-cyan-500)}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-foreground{color:var(--color-foreground)}.text-foreground\/50{color:color-mix(in srgb,hsl(var(--foreground))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/50{color:color-mix(in oklab,var(--color-foreground)50%,transparent)}}.text-foreground\/80{color:color-mix(in srgb,hsl(var(--foreground))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground)80%,transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\/60{color:color-mix(in srgb,hsl(var(--muted-foreground))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--color-muted-foreground)60%,transparent)}}.text-muted-foreground\/80{color:color-mix(in srgb,hsl(var(--muted-foreground))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/80{color:color-mix(in oklab,var(--color-muted-foreground)80%,transparent)}}.text-orange-500{color:var(--color-orange-500)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary-foreground\/50{color:color-mix(in srgb,hsl(var(--primary-foreground))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-primary-foreground\/50{color:color-mix(in oklab,var(--color-primary-foreground)50%,transparent)}}.text-primary-foreground\/60{color:color-mix(in srgb,hsl(var(--primary-foreground))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-primary-foreground\/60{color:color-mix(in oklab,var(--color-primary-foreground)60%,transparent)}}.text-primary\/60{color:color-mix(in srgb,hsl(var(--primary))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-primary\/60{color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-red-400{color:var(--color-red-400)}.text-red-400\/80{color:#ff6568cc}@supports (color:color-mix(in lab,red,red)){.text-red-400\/80{color:color-mix(in oklab,var(--color-red-400)80%,transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-sidebar-accent-foreground{color:var(--color-sidebar-accent-foreground)}.text-sidebar-foreground{color:var(--color-sidebar-foreground)}.text-sidebar-foreground\/70{color:color-mix(in srgb,hsl(var(--sidebar-foreground))70%,transparent)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--color-sidebar-foreground)70%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.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-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_1px_0_0\]{--tw-shadow:0 1px 0 0 var(--tw-shadow-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-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--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)}.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-border\/50{--tw-shadow-color:color-mix(in srgb,hsl(var(--border))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.shadow-border\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-border)50%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-primary\/40{--tw-ring-color:color-mix(in srgb,hsl(var(--primary))40%,transparent)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/40{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--color-sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-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,visibility,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-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opa\]{transition-property:margin,opa;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;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))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[120ms\]{--tw-duration:.12s;transition-duration:.12s}.duration-\[280ms\]{--tw-duration:.28s;transition-duration:.28s}.ease-\[cubic-bezier\(0\.22\,1\,0\.36\,1\)\]{--tw-ease:cubic-bezier(.22,1,.36,1);transition-timing-function:cubic-bezier(.22,1,.36,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-\[120ms\]{animation-duration:.12s}.duration-\[280ms\]{animation-duration:.28s}.ease-\[cubic-bezier\(0\.22\,1\,0\.36\,1\)\]{animation-timing-function:cubic-bezier(.22,1,.36,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.fade-out{--tw-exit-opacity:0}.running{animation-play-state:running}.zoom-in-95{--tw-enter-scale:.95}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\/msg\:opacity-100:is(:where(.group\/msg):hover *){opacity:1}}.group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:\!size-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]:is(:where(.group)[data-collapsible=icon] *){width:--sidebar-width-icon}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:\!p-0:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:\!p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius-lg)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--color-sidebar-border)}.group-data-\[variant\=floating\]\:shadow:is(:where(.group)[data-variant=floating] *){--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)}.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:color-mix(in srgb,hsl(var(--muted))40%,transparent)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:border-muted\/40:is(:where(.group).destructive *){border-color:color-mix(in oklab,var(--color-muted)40%,transparent)}}.group-\[\.destructive\]\:text-red-300:is(:where(.group).destructive *){color:var(--color-red-300)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--color-sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--color-sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.peer-data-\[variant\=inset\]\:min-h-\[calc\(100svh-theme\(spacing\.4\)\)\]:is(:where(.peer)[data-variant=inset]~*){min-height:calc(100svh - 1rem)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:overflow-hidden::placeholder{overflow:hidden}.placeholder\:text-ellipsis::placeholder{text-overflow:ellipsis}.placeholder\:whitespace-nowrap::placeholder{white-space:nowrap}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent\/50:hover{background-color:color-mix(in srgb,hsl(var(--accent))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--color-accent)50%,transparent)}}.hover\:bg-amber-100:hover{background-color:var(--color-amber-100)}.hover\:bg-destructive\/15:hover{background-color:color-mix(in srgb,hsl(var(--destructive))15%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/15:hover{background-color:color-mix(in oklab,var(--color-destructive)15%,transparent)}}.hover\:bg-destructive\/20:hover{background-color:color-mix(in srgb,hsl(var(--destructive))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--color-destructive)20%,transparent)}}.hover\:bg-destructive\/80:hover{background-color:color-mix(in srgb,hsl(var(--destructive))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--color-destructive)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:color-mix(in srgb,hsl(var(--destructive))90%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--color-destructive)90%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/30:hover{background-color:color-mix(in srgb,hsl(var(--muted))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.hover\:bg-muted\/50:hover{background-color:color-mix(in srgb,hsl(var(--muted))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted)50%,transparent)}}.hover\:bg-muted\/60:hover{background-color:color-mix(in srgb,hsl(var(--muted))60%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab,var(--color-muted)60%,transparent)}}.hover\:bg-primary-foreground\/20:hover{background-color:color-mix(in srgb,hsl(var(--primary-foreground))20%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary-foreground\/20:hover{background-color:color-mix(in oklab,var(--color-primary-foreground)20%,transparent)}}.hover\:bg-primary\/10:hover{background-color:color-mix(in srgb,hsl(var(--primary))10%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.hover\:bg-primary\/80:hover{background-color:color-mix(in srgb,hsl(var(--primary))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:color-mix(in srgb,hsl(var(--primary))90%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--color-primary)90%,transparent)}}.hover\:bg-secondary:hover{background-color:var(--color-secondary)}.hover\:bg-secondary\/80:hover{background-color:color-mix(in srgb,hsl(var(--secondary))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--color-secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--color-sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--color-accent-foreground)}.hover\:text-amber-400:hover{color:var(--color-amber-400)}.hover\:text-destructive:hover{color:var(--color-destructive)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-foreground\/80:hover{color:color-mix(in srgb,hsl(var(--foreground))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:text-foreground\/80:hover{color:color-mix(in oklab,var(--color-foreground)80%,transparent)}}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-primary-foreground\/80:hover{color:color-mix(in srgb,hsl(var(--primary-foreground))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:text-primary-foreground\/80:hover{color:color-mix(in oklab,var(--color-primary-foreground)80%,transparent)}}.hover\:text-primary\/80:hover{color:color-mix(in srgb,hsl(var(--primary))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.hover\:text-primary\/80:hover{color:color-mix(in oklab,var(--color-primary)80%,transparent)}}.hover\:text-red-300:hover{color:var(--color-red-300)}.hover\:text-sidebar-accent-foreground:hover{color:var(--color-sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:is(:where(.group)[data-collapsible=offcanvas] *):hover{background-color:var(--color-sidebar)}.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:color-mix(in srgb,hsl(var(--destructive))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.group-\[\.destructive\]\:hover\:border-destructive\/30:is(:where(.group).destructive *):hover{border-color:color-mix(in oklab,var(--color-destructive)30%,transparent)}}.group-\[\.destructive\]\:hover\:bg-destructive:is(:where(.group).destructive *):hover{background-color:var(--color-destructive)}.group-\[\.destructive\]\:hover\:text-destructive-foreground:is(:where(.group).destructive *):hover{color:var(--color-destructive-foreground)}.group-\[\.destructive\]\:hover\:text-red-50:is(:where(.group).destructive *):hover{color:var(--color-red-50)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--color-sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:text-accent-foreground:focus{color:var(--color-accent-foreground)}.focus\:text-destructive:focus{color:var(--color-destructive)}.focus\:opacity-100:focus{opacity:1}.focus\:ring-0: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)}.focus\:ring-1:focus{--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)}.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-primary\/40:focus{--tw-ring-color:color-mix(in srgb,hsl(var(--primary))40%,transparent)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/40:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.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}.group-\[\.destructive\]\:focus\:ring-destructive:is(:where(.group).destructive *):focus{--tw-ring-color:var(--color-destructive)}.group-\[\.destructive\]\:focus\:ring-red-400:is(:where(.group).destructive *):focus{--tw-ring-color:var(--color-red-400)}.group-\[\.destructive\]\:focus\:ring-offset-red-600:is(:where(.group).destructive *):focus{--tw-ring-offset-color:var(--color-red-600)}.focus-visible\:h-9:focus-visible{height:calc(var(--spacing)*9)}.focus-visible\:border-primary\/50:focus-visible{border-color:color-mix(in srgb,hsl(var(--primary))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-primary\/50:focus-visible{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--color-ring)}.focus-visible\:ring-1:focus-visible{--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)}.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-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + 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-primary\/30:focus-visible{--tw-ring-color:color-mix(in srgb,hsl(var(--primary))30%,transparent)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-primary\/30:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in srgb,hsl(var(--ring))50%,transparent)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-ring)50%,transparent)}}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--color-sidebar-ring)}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--color-sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--color-sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--color-sidebar)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--color-sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--color-sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--color-background)}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--color-foreground)}.data-\[state\=active\]\:shadow[data-state=active]{--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)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--color-primary)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--color-accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--color-secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--color-accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--color-muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--color-sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--color-sidebar-accent-foreground)}}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--color-input)}@media (min-width:40rem){.sm\:top-auto{top:auto}.sm\:right-0{right:calc(var(--spacing)*0)}.sm\:bottom-0{bottom:calc(var(--spacing)*0)}.sm\:flex{display:flex}.sm\:inline{display:inline}.sm\:max-w-5xl{max-width:var(--container-5xl)}.sm\:max-w-\[425px\]{max-width:425px}.sm\:max-w-\[525px\]{max-width:525px}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-col{flex-direction:column}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius-lg)}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:max-w-\[420px\]{max-width:420px}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:var(--radius-xl)}.md\:peer-data-\[variant\=inset\]\:shadow:is(:where(.peer)[data-variant=inset]~*){--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)}.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2:is(:where(.peer)[data-state=collapsed]~*):is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*2)}}.after\:md\:hidden:after{content:var(--tw-content)}@media (min-width:48rem){.after\:md\:hidden:after{display:none}}@media (min-width:64rem){.lg\:flex{display:flex}.lg\:hidden{display:none}}.dark\:block:is(.dark *){display:block}.dark\:hidden:is(.dark *){display:none}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.dark\:border-amber-500\/40:is(.dark *){border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.dark\:border-amber-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-amber-500)40%,transparent)}}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-amber-900:is(.dark *){border-color:var(--color-amber-900)}.dark\:border-blue-400:is(.dark *){border-color:var(--color-blue-400)}.dark\:border-blue-500\/40:is(.dark *){border-color:#3080ff66}@supports (color:color-mix(in lab,red,red)){.dark\:border-blue-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-blue-500)40%,transparent)}}.dark\:border-destructive:is(.dark *){border-color:var(--color-destructive)}.dark\:border-green-400:is(.dark *){border-color:var(--color-green-400)}.dark\:border-purple-400:is(.dark *){border-color:var(--color-purple-400)}.dark\:border-purple-500\/40:is(.dark *){border-color:#ac4bff66}@supports (color:color-mix(in lab,red,red)){.dark\:border-purple-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-purple-500)40%,transparent)}}.dark\:bg-amber-900\/40:is(.dark *){background-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900)40%,transparent)}}.dark\:bg-amber-950:is(.dark *){background-color:var(--color-amber-950)}.dark\:bg-amber-950\/30:is(.dark *){background-color:#4619014d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)30%,transparent)}}.dark\:bg-amber-950\/50:is(.dark *){background-color:#46190180}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)50%,transparent)}}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-900)20%,transparent)}}.dark\:bg-gray-900\/50:is(.dark *){background-color:#10182880}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-900\/50:is(.dark *){background-color:color-mix(in oklab,var(--color-gray-900)50%,transparent)}}.dark\:bg-green-400:is(.dark *){background-color:var(--color-green-400)}.dark\:bg-green-900\/20:is(.dark *){background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)20%,transparent)}}.dark\:bg-green-900\/40:is(.dark *){background-color:#0d542b66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-green-900)40%,transparent)}}.dark\:bg-purple-400:is(.dark *){background-color:var(--color-purple-400)}.dark\:bg-purple-900\/20:is(.dark *){background-color:#59168b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900)20%,transparent)}}.dark\:bg-purple-900\/40:is(.dark *){background-color:#59168b66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-900\/40:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-900)40%,transparent)}}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-gray-400:is(.dark *){color:var(--color-gray-400)}.dark\:text-gray-500:is(.dark *){color:var(--color-gray-500)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:text-purple-400:is(.dark *){color:var(--color-purple-400)}@media (hover:hover){.dark\:hover\:bg-amber-900:is(.dark *):hover{background-color:var(--color-amber-900)}.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:#7b330680}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-amber-900\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--color-amber-900)50%,transparent)}}.dark\:hover\:text-gray-300:is(.dark *):hover{color:var(--color-gray-300)}}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--color-primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--color-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in srgb,hsl(var(--input))80%,transparent)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--color-input)80%,transparent)}}.\[\&_\[data-radix-scroll-area-viewport\]\>div\]\:\!block [data-radix-scroll-area-viewport]>div{display:block!important}.\[\&_h1\]\:my-2 h1{margin-block:calc(var(--spacing)*2)}.\[\&_h1\]\:text-base h1{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_h2\]\:my-1\.5 h2{margin-block:calc(var(--spacing)*1.5)}.\[\&_h2\]\:text-sm h2{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_h3\]\:my-1 h3{margin-block:calc(var(--spacing)*1)}.\[\&_h3\]\:text-sm h3{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_li\]\:my-0\.5 li{margin-block:calc(var(--spacing)*.5)}.\[\&_ol\]\:my-1 ol,.\[\&_p\]\:my-1 p{margin-block:calc(var(--spacing)*1)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_ul\]\:my-1 ul{margin-block:calc(var(--spacing)*1)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>div\>div\]\:\!h-full>div>div{height:100%!important}.\[\&\>span\]\:truncate>span,.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:top-4>svg{top:calc(var(--spacing)*4)}.\[\&\>svg\]\:left-4>svg{left:calc(var(--spacing)*4)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-destructive>svg{color:var(--color-destructive)}.\[\&\>svg\]\:text-foreground>svg{color:var(--color-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--color-sidebar-accent-foreground)}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:calc(var(--spacing)*7)}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize,[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,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-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{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-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}}
|