@moontra/moonui-pro 0.1.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,44 @@
1
+ MoonUI Pro Commercial License Agreement
2
+
3
+ Copyright (c) 2024 MoonUI
4
+
5
+ This is proprietary software. Unauthorized copying, modification, distribution, or use of this software, via any medium, is strictly prohibited.
6
+
7
+ This software is licensed, not sold. This license grants you the following rights:
8
+
9
+ 1. GRANT OF LICENSE
10
+ - One license grants the right to use the software on unlimited projects/products
11
+ - License is valid for the individual or company that purchased it
12
+ - License includes all updates released during the subscription period
13
+
14
+ 2. PERMITTED USE
15
+ - Use in commercial and personal projects
16
+ - Modify the components to fit your needs
17
+ - Use in projects for your clients
18
+
19
+ 3. RESTRICTIONS
20
+ - Cannot redistribute the source code
21
+ - Cannot resell the components as your own
22
+ - Cannot share your license key publicly
23
+ - Cannot use in open source projects
24
+
25
+ 4. SUBSCRIPTION TERMS
26
+ - Active subscription required for updates and new components
27
+ - Components downloaded during subscription period can be used perpetually
28
+ - Support requires active subscription
29
+
30
+ 5. TERMINATION
31
+ - This license is effective until terminated
32
+ - License terminates automatically if you fail to comply with any term
33
+ - Upon termination, you must destroy all copies of the software
34
+
35
+ 6. NO WARRANTY
36
+ - Software is provided "as is" without warranty of any kind
37
+ - We do not warrant that the software will be error-free
38
+
39
+ 7. LIMITATION OF LIABILITY
40
+ - In no event shall MoonUI be liable for any damages arising from the use or inability to use this software
41
+
42
+ For full license terms, visit: https://moonui.dev/license
43
+
44
+ Questions? Contact us at: support@moonui.dev
package/README.md ADDED
@@ -0,0 +1,256 @@
1
+ # MoonUI Pro - Premium React Components
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@moontra/moonui-pro.svg)](https://www.npmjs.com/package/@moontra/moonui-pro)
4
+ [![License: Commercial](https://img.shields.io/badge/License-Commercial-red.svg)](https://moonui.dev/license)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
6
+
7
+ Premium React components for MoonUI. Advanced UI components with pro features for building sophisticated web applications.
8
+
9
+ ## 🚀 Pro Components (Latest v2.0.0)
10
+
11
+ ### Core Enterprise Components
12
+ - **📊 Advanced Data Table** - Enterprise-grade data grid with sorting, filtering, pagination, export, and virtual scrolling
13
+ - **📈 Advanced Charts** - Interactive charts with animations, real-time updates, and multiple chart types
14
+ - **📅 Calendar Pro** - Full-featured calendar with events, recurring dates, time zones, and event dialog management
15
+ - **📝 Rich Text Editor Pro** - Advanced WYSIWYG editor with slash commands, AI assistance, and collaboration features
16
+ - **📤 File Upload Pro** - Drag & drop with progress tracking, image editing, and cloud storage integration
17
+ - **🗂️ Kanban Board** - Drag & drop project management with swimlanes, custom fields, and team collaboration
18
+ - **📍 Timeline** - Interactive project timeline with milestones, dependencies, and custom content
19
+
20
+ ### Performance & Data Components
21
+ - **🚀 Memory Efficient Data** - Optimized data handling for large datasets with lazy loading and pagination
22
+ - **📊 Virtual List Pro** - High-performance virtualization for millions of items with smooth scrolling
23
+ - **📋 Dashboard Components** - Pre-built dashboard widgets and layouts for analytics
24
+
25
+ ### New in v2.0.0
26
+ - **Event Dialog System** - Advanced event management for Calendar Pro
27
+ - **Slash Commands** - Rich text editor with AI-powered command palette
28
+ - **Table Styling** - Enhanced table components with advanced styling options
29
+ - **Advanced Chart Types** - New chart variants including heatmaps, treemaps, and custom visualizations
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ npm install @moontra/moonui-pro
35
+ ```
36
+
37
+ **Note**: This package requires an active MoonUI Pro license. Visit [moonui.dev/pro](https://moonui.dev/pro) to get your license.
38
+
39
+ ## Usage
40
+
41
+ ### 1. Import Components
42
+
43
+ ```tsx
44
+ import {
45
+ DataTableCore,
46
+ CalendarCore,
47
+ KanbanCore,
48
+ RichTextEditorCore,
49
+ AdvancedChartCore
50
+ } from '@moontra/moonui-pro'
51
+ ```
52
+
53
+ ### 2. Create Wrapper Components (Recommended)
54
+
55
+ For maximum customization, we recommend creating wrapper components:
56
+
57
+ ```tsx
58
+ // components/pro/data-table.tsx
59
+ import { DataTableCore } from '@moontra/moonui-pro'
60
+ import type { DataTableProps } from '@moontra/moonui-pro'
61
+
62
+ export function DataTable<TData, TValue = unknown>(
63
+ props: DataTableProps<TData, TValue>
64
+ ) {
65
+ return (
66
+ <DataTableCore
67
+ {...props}
68
+ theme={{
69
+ headerBg: '#custom-color',
70
+ ...props.theme
71
+ }}
72
+ features={{
73
+ virtualScrolling: true,
74
+ export: ['csv', 'excel'],
75
+ ...props.features
76
+ }}
77
+ />
78
+ )
79
+ }
80
+ ```
81
+
82
+ ### 3. Advanced Usage Examples
83
+
84
+ #### Calendar with Event Management
85
+ ```tsx
86
+ import { CalendarCore, EventDialog } from '@moontra/moonui-pro'
87
+
88
+ function EventCalendar() {
89
+ const [events, setEvents] = useState([])
90
+ const [selectedEvent, setSelectedEvent] = useState(null)
91
+
92
+ return (
93
+ <>
94
+ <CalendarCore
95
+ events={events}
96
+ onEventClick={setSelectedEvent}
97
+ onDateSelect={(date) => {
98
+ // Create new event
99
+ }}
100
+ features={{
101
+ recurringEvents: true,
102
+ timeZones: true,
103
+ dragDrop: true
104
+ }}
105
+ />
106
+
107
+ <EventDialog
108
+ event={selectedEvent}
109
+ open={!!selectedEvent}
110
+ onClose={() => setSelectedEvent(null)}
111
+ onSave={(updatedEvent) => {
112
+ // Update event
113
+ }}
114
+ />
115
+ </>
116
+ )
117
+ }
118
+ ```
119
+
120
+ #### Rich Text Editor with Slash Commands
121
+ ```tsx
122
+ import { RichTextEditorCore } from '@moontra/moonui-pro'
123
+
124
+ function DocumentEditor() {
125
+ return (
126
+ <RichTextEditorCore
127
+ features={{
128
+ slashCommands: true,
129
+ aiAssistance: true,
130
+ collaboration: true,
131
+ tables: true
132
+ }}
133
+ slashCommands={[
134
+ { trigger: '/table', action: 'insertTable' },
135
+ { trigger: '/ai', action: 'openAiAssistant' },
136
+ { trigger: '/image', action: 'insertImage' }
137
+ ]}
138
+ onSlashCommand={(command) => {
139
+ // Handle slash command
140
+ }}
141
+ />
142
+ )
143
+ }
144
+ ```
145
+
146
+ #### Virtual List for Large Datasets
147
+ ```tsx
148
+ import { VirtualListCore, MemoryEfficientData } from '@moontra/moonui-pro'
149
+
150
+ function LargeDatasetView() {
151
+ const largeDataset = Array.from({ length: 1000000 }, (_, i) => ({
152
+ id: i,
153
+ name: `Item ${i}`,
154
+ value: Math.random() * 100
155
+ }))
156
+
157
+ return (
158
+ <MemoryEfficientData
159
+ data={largeDataset}
160
+ chunkSize={1000}
161
+ renderChunk={(chunk) => (
162
+ <VirtualListCore
163
+ items={chunk}
164
+ itemHeight={50}
165
+ height={600}
166
+ renderItem={({ item, index }) => (
167
+ <div key={item.id} className="p-2 border-b">
168
+ <span className="font-medium">{item.name}</span>
169
+ <span className="ml-2 text-gray-500">{item.value.toFixed(2)}</span>
170
+ </div>
171
+ )}
172
+ />
173
+ )}
174
+ />
175
+ )
176
+ }
177
+ ```
178
+
179
+ ## Customization
180
+
181
+ All Pro components support extensive customization:
182
+
183
+ ### Theme Customization
184
+ ```tsx
185
+ <DataTableCore
186
+ theme={{
187
+ headerBg: '#f9fafb',
188
+ borderColor: '#e5e7eb',
189
+ rowHoverBg: '#f3f4f6',
190
+ // ... more theme options
191
+ }}
192
+ />
193
+ ```
194
+
195
+ ### Feature Toggles
196
+ ```tsx
197
+ <DataTableCore
198
+ features={{
199
+ sorting: true,
200
+ filtering: true,
201
+ columnResize: true,
202
+ export: ['csv', 'excel', 'pdf'],
203
+ // ... more features
204
+ }}
205
+ />
206
+ ```
207
+
208
+ ### Custom Rendering
209
+ ```tsx
210
+ <DataTableCore
211
+ customRender={{
212
+ cell: (value, row) => <CustomCell value={value} />,
213
+ header: (column) => <CustomHeader column={column} />,
214
+ // ... more custom renders
215
+ }}
216
+ />
217
+ ```
218
+
219
+ ## TypeScript Support
220
+
221
+ All components are written in TypeScript with complete type definitions:
222
+
223
+ ```tsx
224
+ import type {
225
+ DataTableProps,
226
+ CalendarEvent,
227
+ KanbanCard,
228
+ FileUploadFile
229
+ } from '@moontra/moonui-pro'
230
+ ```
231
+
232
+ ## License Validation
233
+
234
+ Pro components require a valid license. The package validates your license at build time:
235
+
236
+ 1. **Environment Variable**: Set `MOONUI_LICENSE_KEY` in your environment
237
+ 2. **Build-time Validation**: License is checked during build, not runtime
238
+ 3. **No Runtime Checks**: Components work without internet after build
239
+
240
+ ## Requirements
241
+
242
+ - React 18.0.0 or higher
243
+ - @moontra/moonui 1.0.0 or higher
244
+ - Valid MoonUI Pro license
245
+
246
+ ## Support
247
+
248
+ - Documentation: [moonui.dev/docs/pro](https://moonui.dev/docs/pro)
249
+ - Priority Support: [support@moonui.dev](mailto:support@moonui.dev)
250
+ - Discord: Pro channel access with license
251
+
252
+ ## License
253
+
254
+ Commercial License - see [moonui.dev/license](https://moonui.dev/license) for details.
255
+
256
+ © 2024 MoonUI. All rights reserved.
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type="button"]),input:where([type="reset"]),input:where([type="submit"]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden="until-found"])){display:none}:root{--bg-base: var(--background);--bg-subtle: var(--gray-50);--bg-muted: var(--gray-100);--bg-emphasis: var(--gray-200);--bg-inverse: var(--foreground);--surface-base: var(--background);--surface-overlay: var(--gray-50);--surface-raised: var(--background);--surface-sunken: var(--gray-100);--text-primary: var(--foreground);--text-secondary: var(--gray-600);--text-tertiary: var(--gray-500);--text-disabled: var(--gray-400);--text-inverse: var(--background);--text-link: var(--primary);--text-link-hover: var(--primary-hover);--brand-primary: var(--primary);--brand-primary-hover: var(--primary-hover);--brand-primary-active: var(--primary-active);--brand-secondary: var(--secondary);--state-hover: var(--gray-100);--state-active: var(--gray-200);--state-selected: var(--primary);--state-disabled: var(--gray-300);--state-focus: var(--primary);--feedback-success: var(--success);--feedback-success-light: 142 71% 95%;--feedback-success-dark: 142 71% 35%;--feedback-warning: var(--warning);--feedback-warning-light: 38 92% 95%;--feedback-warning-dark: 38 92% 40%;--feedback-error: var(--error);--feedback-error-light: 0 84% 95%;--feedback-error-dark: 0 84% 50%;--feedback-info: 217 91% 60%;--feedback-info-light: 217 91% 95%;--feedback-info-dark: 217 91% 50%;--border-default: var(--border);--border-subtle: var(--gray-200);--border-strong: var(--gray-400);--border-interactive: var(--primary);--border-error: var(--error);--border-success: var(--success);--border-warning: var(--warning);--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);--shadow-primary: 0 4px 14px 0 hsl(var(--primary) / .3);--shadow-success: 0 4px 14px 0 hsl(var(--success) / .3);--shadow-error: 0 4px 14px 0 hsl(var(--error) / .3);--shadow-warning: 0 4px 14px 0 hsl(var(--warning) / .3);--shadow-inner-xs: inset 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-inner-sm: inset 0 2px 4px 0 rgb(0 0 0 / .05);--shadow-inner-md: inset 0 4px 6px -1px rgb(0 0 0 / .1);--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-elastic: cubic-bezier(.68, -.55, .265, 1.55);--ease-back-in: cubic-bezier(.6, -.28, .735, .045);--ease-back-out: cubic-bezier(.175, .885, .32, 1.275);--ease-back-in-out: cubic-bezier(.68, -.55, .265, 1.55);--duration-instant: 0ms;--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .35s;--duration-slower: .5s;--duration-slowest: .75s;--space-0: 0;--space-px: 1px;--space-0\.5: .125rem;--space-1: .25rem;--space-1\.5: .375rem;--space-2: .5rem;--space-2\.5: .625rem;--space-3: .75rem;--space-3\.5: .875rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-9: 2.25rem;--space-10: 2.5rem;--space-11: 2.75rem;--space-12: 3rem;--space-14: 3.5rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-28: 7rem;--space-32: 8rem;--space-36: 9rem;--space-40: 10rem;--space-44: 11rem;--space-48: 12rem;--space-52: 13rem;--space-56: 14rem;--space-60: 15rem;--space-64: 16rem;--space-72: 18rem;--space-80: 20rem;--space-96: 24rem;--text-2xs: .625rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--text-6xl: 3.75rem;--text-7xl: 4.5rem;--text-8xl: 6rem;--text-9xl: 8rem;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 2;--tracking-tighter: -.05em;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--font-thin: 100;--font-extralight: 200;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--font-black: 900;--radius-none: 0;--radius-sm: .125rem;--radius-base: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-3xl: 1.5rem;--radius-full: 9999px;--z-0: 0;--z-10: 10;--z-20: 20;--z-30: 30;--z-40: 40;--z-50: 50;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-notification: 1080;--blur-none: 0;--blur-sm: 4px;--blur-base: 8px;--blur-md: 12px;--blur-lg: 16px;--blur-xl: 24px;--blur-2xl: 40px;--blur-3xl: 64px}.dark{--bg-base: var(--background);--bg-subtle: var(--gray-800);--bg-muted: var(--gray-700);--bg-emphasis: var(--gray-600);--surface-overlay: var(--gray-800);--surface-raised: var(--gray-800);--surface-sunken: var(--background);--text-secondary: var(--gray-400);--text-tertiary: var(--gray-500);--text-disabled: var(--gray-600);--state-hover: var(--gray-700);--state-active: var(--gray-600);--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .4), 0 1px 2px -1px rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .3);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .4), 0 8px 10px -6px rgb(0 0 0 / .3);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .5)}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@media (min-width: 640px){.container{max-width:640px;padding-right:2rem;padding-left:2rem}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px;padding-right:4rem;padding-left:4rem}}@media (min-width: 1280px){.container{max-width:1280px;padding-right:5rem;padding-left:5rem}}@media (min-width: 1536px){.container{max-width:1536px;padding-right:6rem;padding-left:6rem}}.collapse{visibility:collapse}.static{position:static}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-2{bottom:.5rem}.left-2{left:.5rem}.right-2{right:.5rem}.top-0{top:0}.top-2{top:.5rem}.top-2\.5{top:.625rem}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.-m-2{margin:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-96{height:24rem}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.min-h-\[200px\]{min-height:200px}.min-h-\[80px\]{min-height:80px}.w-0\.5{width:.125rem}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-12{width:3rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100px\]{width:100px}.w-\[70px\]{width:70px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[70px\]{min-width:70px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1.5rem * var(--tw-space-x-reverse));margin-left:calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-\[var\(--login-border-radius\)\]{border-radius:var(--login-border-radius)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-input{--tw-border-opacity: 1;border-color:hsl(var(--input) / var(--tw-border-opacity, 1))}.border-muted-foreground\/25{border-color:hsl(var(--muted-foreground) / .25)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-primary{--tw-border-opacity: 1;border-color:hsl(var(--primary) / var(--tw-border-opacity, 1))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.bg-\[var\(--login-background\)\]{background-color:var(--login-background)}.bg-\[var\(--login-primary\)\]{background-color:var(--login-primary)}.bg-background{--tw-bg-opacity: 1;background-color:hsl(var(--background) / var(--tw-bg-opacity, 1))}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-border{--tw-bg-opacity: 1;background-color:hsl(var(--border) / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-muted{--tw-bg-opacity: 1;background-color:hsl(var(--muted) / var(--tw-bg-opacity, 1))}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-muted\/80{background-color:hsl(var(--muted) / .8)}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/30{background-color:hsl(var(--primary) / .3)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tracking-tight{letter-spacing:-.025em}.text-\[var\(--login-primary\)\]{color:var(--login-primary)}.text-\[var\(--login-text\)\]{color:var(--login-text)}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-destructive{--tw-text-opacity: 1;color:hsl(var(--destructive) / var(--tw-text-opacity, 1))}.text-foreground{--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-muted-foreground{--tw-text-opacity: 1;color:hsl(var(--muted-foreground) / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:hsl(var(--primary) / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/80{color:#fffc}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-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-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.shadow-sm{box-shadow:var(--shadow-sm)}.animate-spin{animation:spin 1s linear infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.transition-all{transition-property:all}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.transition-opacity{transition-property:opacity}.transition-shadow{transition-property:box-shadow}:root{--primary-50: 240 249 255;--primary-100: 224 242 254;--primary-200: 186 230 253;--primary-300: 125 211 252;--primary-400: 56 189 248;--primary-500: 14 165 233;--primary-600: 2 132 199;--primary-700: 3 105 161;--primary-800: 7 89 133;--primary-900: 12 74 110;--primary-950: 8 47 73;--secondary-50: 248 250 252;--secondary-100: 241 245 249;--secondary-200: 226 232 240;--secondary-300: 203 213 225;--secondary-400: 148 163 184;--secondary-500: 100 116 139;--secondary-600: 71 85 105;--secondary-700: 51 65 85;--secondary-800: 30 41 59;--secondary-900: 15 23 42;--secondary-950: 2 6 23;--success-50: 240 253 244;--success-100: 220 252 231;--success-200: 187 247 208;--success-300: 134 239 172;--success-400: 74 222 128;--success-500: 34 197 94;--success-600: 22 163 74;--success-700: 21 128 61;--success-800: 22 101 52;--success-900: 20 83 45;--success-950: 5 46 22;--warning-50: 254 252 232;--warning-100: 254 249 195;--warning-200: 254 240 138;--warning-300: 253 224 71;--warning-400: 250 204 21;--warning-500: 234 179 8;--warning-600: 202 138 4;--warning-700: 161 98 7;--warning-800: 133 77 14;--warning-900: 113 63 18;--warning-950: 66 32 6;--error-50: 254 242 242;--error-100: 254 226 226;--error-200: 254 202 202;--error-300: 252 165 165;--error-400: 248 113 113;--error-500: 239 68 68;--error-600: 220 38 38;--error-700: 185 28 28;--error-800: 153 27 27;--error-900: 127 29 29;--error-950: 69 10 10;--background: 0 0% 100%;--foreground: 222.2 47.4% 11.2%;--card: 0 0% 100%;--card-foreground: 222.2 47.4% 11.2%;--popover: 0 0% 100%;--popover-foreground: 222.2 47.4% 11.2%;--primary: 222.2 47.4% 11.2%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 100% 50%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 215 20.2% 65.1%;--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%;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-serif: "Crimson Text", Georgia, "Times New Roman", serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--text-6xl: 3.75rem;--text-7xl: 4.5rem;--text-8xl: 6rem;--text-9xl: 8rem;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 2;--font-thin: 100;--font-extralight: 200;--font-light: 300;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--font-extrabold: 800;--font-black: 900;--spacing-0: 0;--spacing-px: 1px;--spacing-0-5: .125rem;--spacing-1: .25rem;--spacing-1-5: .375rem;--spacing-2: .5rem;--spacing-2-5: .625rem;--spacing-3: .75rem;--spacing-3-5: .875rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-7: 1.75rem;--spacing-8: 2rem;--spacing-9: 2.25rem;--spacing-10: 2.5rem;--spacing-11: 2.75rem;--spacing-12: 3rem;--spacing-14: 3.5rem;--spacing-16: 4rem;--spacing-20: 5rem;--spacing-24: 6rem;--spacing-28: 7rem;--spacing-32: 8rem;--spacing-36: 9rem;--spacing-40: 10rem;--spacing-44: 11rem;--spacing-48: 12rem;--spacing-52: 13rem;--spacing-56: 14rem;--spacing-60: 15rem;--spacing-64: 16rem;--spacing-72: 18rem;--spacing-80: 20rem;--spacing-96: 24rem;--radius-none: 0;--radius-sm: .125rem;--radius-base: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--radius-3xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06);--shadow-none: 0 0 #0000;--elevation-0: var(--shadow-none);--elevation-1: var(--shadow-sm);--elevation-2: var(--shadow-base);--elevation-3: var(--shadow-md);--elevation-4: var(--shadow-lg);--elevation-5: var(--shadow-xl);--elevation-6: var(--shadow-2xl);--duration-75: 75ms;--duration-100: .1s;--duration-150: .15s;--duration-200: .2s;--duration-300: .3s;--duration-500: .5s;--duration-700: .7s;--duration-1000: 1s;--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-spring: cubic-bezier(.175, .885, .32, 1.275);--animate-fade-in: fadeIn var(--duration-300) var(--ease-out);--animate-fade-out: fadeOut var(--duration-300) var(--ease-in);--animate-slide-in-up: slideInUp var(--duration-300) var(--ease-out);--animate-slide-in-down: slideInDown var(--duration-300) var(--ease-out);--animate-slide-in-left: slideInLeft var(--duration-300) var(--ease-out);--animate-slide-in-right: slideInRight var(--duration-300) var(--ease-out);--animate-scale-in: scaleIn var(--duration-200) var(--ease-out);--animate-scale-out: scaleOut var(--duration-200) var(--ease-in);--animate-bounce: bounce var(--duration-500) var(--ease-bounce);--animate-pulse: pulse var(--duration-1000) var(--ease-in-out) infinite;--animate-spin: spin var(--duration-1000) var(--ease-linear) infinite;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px;--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px;--container-2xl: 1536px;--z-0: 0;--z-10: 10;--z-20: 20;--z-30: 30;--z-40: 40;--z-50: 50;--z-auto: auto;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--button-height-sm: 2rem;--button-height-md: 2.5rem;--button-height-lg: 3rem;--button-height-xl: 3.5rem;--button-padding-sm: .5rem .75rem;--button-padding-md: .625rem 1rem;--button-padding-lg: .75rem 1.25rem;--button-padding-xl: 1rem 1.5rem;--button-font-size-sm: var(--text-sm);--button-font-size-md: var(--text-base);--button-font-size-lg: var(--text-lg);--button-font-size-xl: var(--text-xl);--input-height-sm: 2rem;--input-height-md: 2.5rem;--input-height-lg: 3rem;--input-height-xl: 3.5rem;--input-padding-sm: .5rem .75rem;--input-padding-md: .625rem 1rem;--input-padding-lg: .75rem 1.25rem;--input-padding-xl: 1rem 1.5rem;--input-border-width: 1px;--input-border-radius: var(--radius-md);--input-focus-ring-width: 2px;--input-focus-ring-offset: 2px;--card-padding-sm: 1rem;--card-padding-md: 1.5rem;--card-padding-lg: 2rem;--card-padding-xl: 2.5rem;--card-border-radius: var(--radius-lg);--card-border-width: 1px;--card-shadow: var(--elevation-1);--card-hover-shadow: var(--elevation-2)}.dark{--background: 224 71% 4%;--foreground: 213 31% 91%;--card: 224 71% 4%;--card-foreground: 213 31% 91%;--popover: 224 71% 4%;--popover-foreground: 213 31% 91%;--primary: 210 40% 98%;--primary-foreground: 222.2 47.4% 1.2%;--secondary: 222.2 84% 4.9%;--secondary-foreground: 210 40% 98%;--muted: 223 47% 11%;--muted-foreground: 215.4 16.3% 56.9%;--accent: 216 34% 17%;--accent-foreground: 210 40% 98%;--destructive: 0 63% 31%;--destructive-foreground: 210 40% 98%;--border: 216 34% 17%;--input: 216 34% 17%;--ring: 216 34% 17%;--chart-1: 220 70% 50%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.95);opacity:0}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-30px,0)}70%{transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.animate-fade-in{animation:var(--animate-fade-in)}.animate-fade-out{animation:var(--animate-fade-out)}.animate-slide-in-up{animation:var(--animate-slide-in-up)}.animate-slide-in-down{animation:var(--animate-slide-in-down)}.animate-slide-in-left{animation:var(--animate-slide-in-left)}.animate-slide-in-right{animation:var(--animate-slide-in-right)}.animate-scale-in{animation:var(--animate-scale-in)}.animate-scale-out{animation:var(--animate-scale-out)}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}@media (max-width: 639px){.container{max-width:100%}}@media (min-width: 640px){.container{max-width:var(--container-sm)}}@media (min-width: 768px){.container{max-width:var(--container-md)}}@media (min-width: 1024px){.container{max-width:var(--container-lg)}}@media (min-width: 1280px){.container{max-width:var(--container-xl)}}@media (min-width: 1536px){.container{max-width:var(--container-2xl)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:translateY(0);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:text-foreground:hover{--tw-text-opacity: 1;color:hsl(var(--foreground) / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);box-shadow:var(--shadow-md)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-\[var\(--login-primary\)\]:focus{--tw-ring-color: var(--login-primary)}.focus\:ring-ring:focus{--tw-ring-opacity: 1;--tw-ring-color: hsl(var(--ring) / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:flex{display:flex}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(88 28 135 / var(--tw-bg-opacity, 1))}.dark\:bg-purple-900\/30:is(.dark *){background-color:#581c874d}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-purple-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(107 33 168 / var(--tw-bg-opacity, 1))}@media (min-width: 640px){.sm\:max-w-\[425px\]{max-width:425px}.sm\:max-w-\[500px\]{max-width:500px}}@media (min-width: 768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:flex{display:flex}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}}.\[\&_blockquote\]\:border-l-4 blockquote{border-left-width:4px}.\[\&_blockquote\]\:border-gray-300 blockquote{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.\[\&_blockquote\]\:pl-4 blockquote{padding-left:1rem}.\[\&_blockquote\]\:italic blockquote{font-style:italic}.\[\&_h1\]\:mb-4 h1{margin-bottom:1rem}.\[\&_h1\]\:text-3xl h1{font-size:1.875rem;line-height:2.25rem}.\[\&_h1\]\:font-bold h1{font-weight:700}.\[\&_h2\]\:mb-3 h2{margin-bottom:.75rem}.\[\&_h2\]\:text-2xl h2{font-size:1.5rem;line-height:2rem}.\[\&_h2\]\:font-bold h2{font-weight:700}.\[\&_h3\]\:mb-2 h3{margin-bottom:.5rem}.\[\&_h3\]\:text-xl h3{font-size:1.25rem;line-height:1.75rem}.\[\&_h3\]\:font-bold h3{font-weight:700}.\[\&_h4\]\:mb-2 h4{margin-bottom:.5rem}.\[\&_h4\]\:text-lg h4{font-size:1.125rem;line-height:1.75rem}.\[\&_h4\]\:font-bold h4{font-weight:700}.\[\&_h5\]\:mb-1 h5{margin-bottom:.25rem}.\[\&_h5\]\:text-base h5{font-size:1rem;line-height:1.5rem}.\[\&_h5\]\:font-bold h5{font-weight:700}.\[\&_h6\]\:mb-1 h6{margin-bottom:.25rem}.\[\&_h6\]\:text-sm h6{font-size:.875rem;line-height:1.25rem}.\[\&_h6\]\:font-bold h6{font-weight:700}.\[\&_li\]\:mb-1 li{margin-bottom:.25rem}.\[\&_ol\]\:mb-4 ol{margin-bottom:1rem}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-6 ol{padding-left:1.5rem}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_pre\]\:rounded pre{border-radius:.25rem}.\[\&_pre\]\:bg-gray-100 pre{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.\[\&_pre\]\:p-4 pre{padding:1rem}.\[\&_pre\]\:dark\:bg-gray-800:is(.dark *) pre{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.\[\&_table\]\:mb-4 table{margin-bottom:1rem}.\[\&_table\]\:w-full table{width:100%}.\[\&_table_td\]\:border table td{border-width:1px}.\[\&_table_td\]\:border-gray-300 table td{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.\[\&_table_td\]\:p-2 table td{padding:.5rem}.\[\&_table_th\]\:border table th{border-width:1px}.\[\&_table_th\]\:border-gray-300 table th{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.\[\&_table_th\]\:bg-gray-50 table th{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.\[\&_table_th\]\:p-2 table th{padding:.5rem}.\[\&_table_th\]\:font-semibold table th{font-weight:600}.\[\&_ul\]\:mb-4 ul{margin-bottom:1rem}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-6 ul{padding-left:1.5rem}.slash-commands-menu{border-radius:var(--radius);border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);box-shadow:var(--shadow-lg)}.slash-commands-menu:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.slash-commands-menu{max-height:20rem;min-width:280px;overflow-y:auto;padding:.5rem}.slash-command-item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:calc(var(--radius) - 2px);padding:.5rem .75rem;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke}.slash-command-item:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.slash-command-item:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.slash-command-item.selected{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.slash-command-item.selected:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.slash-command-item svg{height:1rem;width:1rem;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.slash-command-item svg:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.slash-command-item>div{flex:1 1 0%}.slash-command-item .command-name{font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.slash-command-item .command-name:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.slash-command-item .command-description{margin-top:.125rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.slash-command-item .command-description:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark .slash-commands-menu{box-shadow:0 10px 15px -3px #0000004d,0 4px 6px -2px #0003}.ProseMirror table{border-collapse:collapse;margin:0;overflow:hidden;table-layout:fixed;width:100%;border:1px solid #d1d5db}.ProseMirror table td,.ProseMirror table th{border:1px solid #d1d5db;box-sizing:border-box;min-width:1em;padding:6px 8px;position:relative;vertical-align:top}.ProseMirror table th{background-color:#f9fafb;font-weight:600;text-align:left}.ProseMirror table .selectedCell:after{background-color:#3b82f61a;content:"";inset:0;pointer-events:none;position:absolute;z-index:2}.ProseMirror table .column-resize-handle{background-color:#3b82f6;bottom:-2px;position:absolute;right:-2px;top:0;width:4px;pointer-events:none}.dark .ProseMirror table,.dark .ProseMirror table td,.dark .ProseMirror table th{border:1px solid #374151}.dark .ProseMirror table th{background-color:#111827}.dark .ProseMirror table .selectedCell:after{background-color:#3b82f633}