lula2 0.0.5 → 0.0.7-nightly.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/README.md +291 -8
- package/dist/_app/env.js +1 -0
- package/dist/_app/immutable/assets/0.PJPcSyra.css +1 -0
- package/dist/_app/immutable/assets/DynamicControlEditor.BkVTzFZ-.css +1 -0
- package/dist/_app/immutable/chunks/7x_q-1ab.js +1 -0
- package/dist/_app/immutable/chunks/B19gt6-g.js +2 -0
- package/dist/_app/immutable/chunks/BR-0Dorr.js +1 -0
- package/dist/_app/immutable/chunks/B_3ksxz5.js +2 -0
- package/dist/_app/immutable/chunks/But0ls6Y.js +66 -0
- package/dist/_app/immutable/chunks/D3aNP_lg.js +1 -0
- package/dist/_app/immutable/chunks/D4Q_ObIy.js +1 -0
- package/dist/_app/immutable/chunks/DA_jjHdv.js +1 -0
- package/dist/_app/immutable/chunks/DUGOK95H.js +3 -0
- package/dist/_app/immutable/chunks/DsnmJJEf.js +1 -0
- package/dist/_app/immutable/entry/app.BZauz5gw.js +2 -0
- package/dist/_app/immutable/entry/start._Y6yyYNP.js +1 -0
- package/dist/_app/immutable/nodes/0.D11TBcbi.js +1 -0
- package/dist/_app/immutable/nodes/1.n9wWXRXV.js +1 -0
- package/dist/_app/immutable/nodes/2.BlDlLeA4.js +1 -0
- package/dist/_app/immutable/nodes/3.B4RCsjeI.js +1 -0
- package/dist/_app/immutable/nodes/4.Bt1Qhh5l.js +9 -0
- package/dist/_app/version.json +1 -0
- package/dist/cli/commands/crawl.js +128 -0
- package/dist/cli/commands/ui.js +2769 -0
- package/dist/cli/commands/version.js +14 -0
- package/dist/cli/server/index.js +2713 -0
- package/dist/cli/server/server.js +2702 -0
- package/dist/cli/server/serverState.js +1199 -0
- package/dist/cli/server/spreadsheetRoutes.js +788 -0
- package/dist/cli/server/types.js +0 -0
- package/dist/cli/server/websocketServer.js +2625 -0
- package/dist/cli/utils/debug.js +24 -0
- package/dist/favicon.svg +1 -0
- package/dist/index.html +38 -0
- package/dist/index.js +2908 -37
- package/dist/lula.png +0 -0
- package/dist/lula2 +2 -0
- package/package.json +77 -30
- package/src/app.css +192 -0
- package/src/app.d.ts +13 -0
- package/src/app.html +13 -0
- package/src/lib/actions/fadeWhenScrollable.ts +39 -0
- package/src/lib/actions/modal.ts +230 -0
- package/src/lib/actions/tooltip.ts +82 -0
- package/src/lib/components/control-sets/ControlSetInfo.svelte +20 -0
- package/src/lib/components/control-sets/ControlSetSelector.svelte +46 -0
- package/src/lib/components/control-sets/index.ts +5 -0
- package/src/lib/components/controls/ControlDetailsPanel.svelte +235 -0
- package/src/lib/components/controls/ControlsList.svelte +608 -0
- package/src/lib/components/controls/DynamicControlEditor.svelte +298 -0
- package/src/lib/components/controls/MappingCard.svelte +105 -0
- package/src/lib/components/controls/MappingForm.svelte +188 -0
- package/src/lib/components/controls/index.ts +9 -0
- package/src/lib/components/controls/renderers/EditableFieldRenderer.svelte +103 -0
- package/src/lib/components/controls/renderers/FieldRenderer.svelte +49 -0
- package/src/lib/components/controls/renderers/index.ts +5 -0
- package/src/lib/components/controls/tabs/CustomFieldsTab.svelte +130 -0
- package/src/lib/components/controls/tabs/ImplementationTab.svelte +127 -0
- package/src/lib/components/controls/tabs/MappingsTab.svelte +182 -0
- package/src/lib/components/controls/tabs/OverviewTab.svelte +151 -0
- package/src/lib/components/controls/tabs/TimelineTab.svelte +41 -0
- package/src/lib/components/controls/tabs/index.ts +8 -0
- package/src/lib/components/controls/utils/ProcessedTextRenderer.svelte +63 -0
- package/src/lib/components/controls/utils/textProcessor.ts +164 -0
- package/src/lib/components/forms/DynamicControlForm.svelte +340 -0
- package/src/lib/components/forms/DynamicField.svelte +494 -0
- package/src/lib/components/forms/FormField.svelte +107 -0
- package/src/lib/components/forms/index.ts +6 -0
- package/src/lib/components/setup/ExistingControlSets.svelte +284 -0
- package/src/lib/components/setup/SpreadsheetImport.svelte +968 -0
- package/src/lib/components/setup/index.ts +5 -0
- package/src/lib/components/ui/Dropdown.svelte +107 -0
- package/src/lib/components/ui/EmptyState.svelte +80 -0
- package/src/lib/components/ui/FeatureToggle.svelte +50 -0
- package/src/lib/components/ui/SearchBar.svelte +73 -0
- package/src/lib/components/ui/StatusBadge.svelte +79 -0
- package/src/lib/components/ui/TabNavigation.svelte +48 -0
- package/src/lib/components/ui/Tooltip.svelte +120 -0
- package/src/lib/components/ui/index.ts +10 -0
- package/src/lib/components/version-control/DiffViewer.svelte +292 -0
- package/src/lib/components/version-control/TimelineItem.svelte +107 -0
- package/src/lib/components/version-control/YamlDiffViewer.svelte +428 -0
- package/src/lib/components/version-control/index.ts +6 -0
- package/src/lib/form-types.ts +57 -0
- package/src/lib/formatUtils.ts +17 -0
- package/src/lib/index.ts +5 -0
- package/src/lib/types.ts +180 -0
- package/src/lib/websocket.ts +359 -0
- package/src/routes/+layout.svelte +236 -0
- package/src/routes/+page.svelte +38 -0
- package/src/routes/control/[id]/+page.svelte +112 -0
- package/src/routes/setup/+page.svelte +241 -0
- package/src/stores/compliance.ts +95 -0
- package/src/styles/highlightjs.css +20 -0
- package/src/styles/modal.css +58 -0
- package/src/styles/tables.css +111 -0
- package/src/styles/tooltip.css +65 -0
- package/dist/controls/index.d.ts +0 -18
- package/dist/controls/index.d.ts.map +0 -1
- package/dist/controls/index.js +0 -18
- package/dist/crawl.d.ts +0 -62
- package/dist/crawl.d.ts.map +0 -1
- package/dist/crawl.js +0 -172
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/src/controls/index.ts +0 -19
- package/src/crawl.ts +0 -227
- package/src/index.ts +0 -46
package/README.md
CHANGED
|
@@ -1,22 +1,305 @@
|
|
|
1
|
-
# Lula
|
|
1
|
+
# Lula - GitOps for Compliance
|
|
2
|
+
|
|
3
|
+
<img src="static/lula.png" alt="Lula Logo" width="150" align="right" />
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
> [!IMPORTANT]
|
|
7
|
+
> This project is still in its early stages. Expect breaking changes.
|
|
8
|
+
>
|
|
9
|
+
> Looking for the original Lula OSCAL compliance validator? Go to [defenseunicorns-labs/lula1](https://github.com/defenseunicorns-labs/lula1)
|
|
10
|
+
>
|
|
11
|
+
> _Lula 1 is in maintenance mode and not receiving active updates or new features._
|
|
2
12
|
|
|
3
13
|
[](https://npmjs.com/package/lula-next)
|
|
4
14
|
[](https://snyk.io/advisor/npm-package/lula-next)
|
|
5
15
|
[](https://npmjs.com/package/lula-next)
|
|
6
16
|
[](https://npmjs.com/package/lula-next)
|
|
7
17
|
|
|
8
|
-
|
|
18
|
+
Bring GitOps principles to compliance management. Lula treats security controls as code, enabling teams to manage compliance frameworks (NIST 800-53, CIS, SOC2) through pull requests, code reviews, and automated workflows—just like your application code in a user-friendly web interface. Your data stays your data--Lula takes spreadsheet imports, lets you drag & drop the UI layout and version control the data as yaml automatically for you.
|
|
19
|
+
|
|
20
|
+
We built Lula 2 after discovering key limitations with the OSCAL-based approach:
|
|
21
|
+
|
|
22
|
+
**Challenges in Lula 1:**
|
|
23
|
+
- OSCAL proved too complex for most teams to work with effectively
|
|
24
|
+
- Automated tests alone were insufficient for real compliance verification
|
|
25
|
+
- The format made collaboration and review difficult
|
|
26
|
+
|
|
27
|
+
**Lula 2's Approach:**
|
|
28
|
+
- **Simple YAML + Spreadsheets**: Import from any spreadsheet tool (including EMASS), no OSCAL knowledge required
|
|
29
|
+
- **Human + AI Analysis**: Recognizes that compliance requires human judgment augmented by AI reasoning, not just automated tests
|
|
30
|
+
- **Git-native**: Use standard diff tools and pull requests for review
|
|
31
|
+
- **Web UI**: Intuitive interface that anyone can use, not just CLI experts
|
|
32
|
+
- **Change Impact Tracking**: Maps controls to actual code and tracks when changes might affect compliance
|
|
33
|
+
|
|
34
|
+
This evolution reflects our learning that effective compliance management needs to be accessible to all stakeholders—not just those who can navigate complex standards or write validation code.
|
|
35
|
+
|
|
36
|
+
## Why GitOps for Compliance?
|
|
37
|
+
|
|
38
|
+
- **Version Everything**: Every control change, ui change, mapping is tracked, reviewable, and revertable
|
|
39
|
+
- **Pull Request Workflows**: Review compliance changes before they go live
|
|
40
|
+
- **Branch Strategies**: Test control changes in isolated branches
|
|
41
|
+
- **Automated Validation**: CI/CD pipelines can validate control completeness
|
|
42
|
+
- **Audit Trail**: Git history provides immutable audit logs
|
|
43
|
+
- **Collaborative Review**: Security, compliance, and engineering teams collaborate through PRs
|
|
44
|
+
- **Automated Change Detection**: Map controls to source code via generated UUIDs and track when code changes impact your compliance posture
|
|
45
|
+
|
|
46
|
+
## Key Features
|
|
47
|
+
|
|
48
|
+
- **Controls as Code**: Each control stored as an individual YAML file
|
|
49
|
+
- **Import/Export**: Import any generic spreadsheet with column headers, including from tools like EMASS
|
|
50
|
+
- **Smart Formatting**: Automatic text processing for control descriptions and procedures
|
|
51
|
+
- **Source Mappings**: Link controls to actual code implementations
|
|
52
|
+
- **Multi-Framework**: Support NIST, CIS, SOC2, and custom frameworks in one repo
|
|
53
|
+
- **Git Timeline**: Visual history of all control changes
|
|
54
|
+
|
|
55
|
+
## Quick Start
|
|
56
|
+
|
|
57
|
+
Run Lula directly with npx (no installation required):
|
|
9
58
|
|
|
10
59
|
```bash
|
|
11
|
-
|
|
12
|
-
Commenting on file1.ts: **Compliance Alert**: `file1.ts` changed between lines 9–16.
|
|
13
|
-
UUID `123e4567-e89b-12d3-a456-426614174001` may be out of compliance. Please review.
|
|
14
|
-
Commenting on file1.yaml: **Compliance Alert**: `file1.yaml` changed between lines 16–18.
|
|
15
|
-
UUID `123e4567-e89b-12d3-a456-426614174000` may be out of compliance. Please review.
|
|
60
|
+
npx lula2
|
|
16
61
|
```
|
|
17
62
|
|
|
18
|
-
|
|
63
|
+
This will:
|
|
64
|
+
|
|
65
|
+
1. Scan for existing control sets in your directory
|
|
66
|
+
2. Launch the web interface at http://localhost:3000
|
|
67
|
+
3. Start the API server for control management
|
|
68
|
+
|
|
69
|
+
## Interface Features
|
|
70
|
+
|
|
71
|
+
Once launched, you can:
|
|
72
|
+
|
|
73
|
+
- **Browse Controls**: Navigate through control families and individual controls
|
|
74
|
+
- **Edit Controls**: Update implementation narratives, status, and properties
|
|
75
|
+
- **Track Changes**: View Git history and timeline for each control
|
|
76
|
+
- **Manage Mappings**: Link controls to source code and documentation
|
|
77
|
+
- **Import Data**: Use the setup page to import OSCAL catalogs or existing control sets
|
|
78
|
+
- **Export Reports**: Generate compliance reports and assessments
|
|
79
|
+
|
|
80
|
+
## Commands
|
|
81
|
+
|
|
82
|
+
### Version Command
|
|
19
83
|
|
|
20
84
|
```bash
|
|
21
85
|
> npx lula2 --version
|
|
22
86
|
```
|
|
87
|
+
|
|
88
|
+
## Project Structure
|
|
89
|
+
|
|
90
|
+
Lula organizes controls in a Git-friendly structure:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
my-compliance-project/
|
|
94
|
+
├── lula.yaml # Control set metadata
|
|
95
|
+
├── controls/ # Individual control files
|
|
96
|
+
│ ├── AC/ # Access Control family
|
|
97
|
+
│ │ ├── AC-1.yaml
|
|
98
|
+
│ │ ├── AC-2.yaml
|
|
99
|
+
│ │ └── AC-2_1.yaml # Control enhancements
|
|
100
|
+
│ ├── AU/ # Audit family
|
|
101
|
+
│ │ └── ...
|
|
102
|
+
│ └── ...
|
|
103
|
+
└── mappings/ # Source code mappings
|
|
104
|
+
├── AC/
|
|
105
|
+
│ └── AC-1-mappings.yaml
|
|
106
|
+
└── ...
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Control File Format
|
|
110
|
+
|
|
111
|
+
Each control is stored as a YAML file with a consistent schema based on the imported spreadsheet:
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
id: AC-1
|
|
115
|
+
title: Access Control Policy and Procedures
|
|
116
|
+
family: AC
|
|
117
|
+
description: |
|
|
118
|
+
The organization develops, documents, and disseminates...
|
|
119
|
+
implementation_status: Implemented
|
|
120
|
+
security_control_designation: Hybrid
|
|
121
|
+
control_implementation_narrative: |
|
|
122
|
+
Our organization implements AC-1 through...
|
|
123
|
+
implementation_guidance: |
|
|
124
|
+
Step-by-step guidance for implementing this control...
|
|
125
|
+
assessment_procedures: |
|
|
126
|
+
Methods for assessing control effectiveness...
|
|
127
|
+
test_results: |
|
|
128
|
+
Results from the latest assessment...
|
|
129
|
+
properties:
|
|
130
|
+
priority: P1
|
|
131
|
+
responsible_role: CISO
|
|
132
|
+
last_reviewed: 2024-01-15
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Features in Detail
|
|
136
|
+
|
|
137
|
+
### GitOps Workflow
|
|
138
|
+
|
|
139
|
+
Manage compliance like code with full GitOps practices:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Create feature branch for control updates
|
|
143
|
+
git checkout -b update-ac-controls
|
|
144
|
+
|
|
145
|
+
# Make changes through Lula UI
|
|
146
|
+
npx lula2
|
|
147
|
+
|
|
148
|
+
# Commit changes
|
|
149
|
+
git add controls/
|
|
150
|
+
git commit -m "Updated AC family implementation narratives"
|
|
151
|
+
|
|
152
|
+
# Push and create PR
|
|
153
|
+
git push origin update-ac-controls
|
|
154
|
+
# → Team reviews changes in PR
|
|
155
|
+
# → CI validates control completeness
|
|
156
|
+
# → Merge when approved
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Smart Text Processing
|
|
160
|
+
|
|
161
|
+
Lula automatically formats complex text fields:
|
|
162
|
+
|
|
163
|
+
- Detects and styles headers (Description:, Guidance:, etc.)
|
|
164
|
+
- Converts CSV data into formatted tables
|
|
165
|
+
- Properly formats lists and bullet points
|
|
166
|
+
- Highlights control IDs and CCI references
|
|
167
|
+
|
|
168
|
+
### Control Mappings
|
|
169
|
+
|
|
170
|
+
Link controls to actual implementations using a UUID:
|
|
171
|
+
|
|
172
|
+
```yaml
|
|
173
|
+
- control_id: AC-10_3
|
|
174
|
+
justification: 'This is my reason this is compliant'
|
|
175
|
+
status: implemented
|
|
176
|
+
source_entries: [source: src/auth/policies.ts]
|
|
177
|
+
uuid: 439489d2-c1db-4ab4-a4dd-d0a6f4a0dd24
|
|
178
|
+
last_validated: 2024-01-15
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## GitOps Benefits for Compliance
|
|
182
|
+
|
|
183
|
+
### For Compliance Teams
|
|
184
|
+
|
|
185
|
+
- **Review Process**: Control changes go through pull request reviews
|
|
186
|
+
- **Rollback**: Instantly revert problematic control updates
|
|
187
|
+
- **Branching**: Test control changes without affecting production
|
|
188
|
+
- **History**: Complete audit trail in Git log
|
|
189
|
+
- **Protection**: Leverage `CODEOWNERS` to limit who can edit controls/mappings or change the UI
|
|
190
|
+
- **Monitoring**: Leverage SCM tools to track key changes/issues
|
|
191
|
+
|
|
192
|
+
### For Security Engineers
|
|
193
|
+
|
|
194
|
+
- **Infrastructure as Code**: Compliance configurations alongside IaC
|
|
195
|
+
- **Automation**: Trigger compliance checks on control changes
|
|
196
|
+
- **Integration**: Controls in the same repo as security policies
|
|
197
|
+
- **Validation**: Pre-commit hooks for control completeness
|
|
198
|
+
|
|
199
|
+
### For Auditors
|
|
200
|
+
|
|
201
|
+
- **Immutable History**: Git provides tamper-evident audit logs when combined with SCM tooling
|
|
202
|
+
- **Change Attribution**: Every change linked to a person and reason
|
|
203
|
+
- **Point-in-Time**: View controls as they were at any date
|
|
204
|
+
- **Evidence Chain**: PRs document review and approval process
|
|
205
|
+
|
|
206
|
+
## Configuration
|
|
207
|
+
|
|
208
|
+
### lula.yaml
|
|
209
|
+
|
|
210
|
+
Managed by the UI for you, each control set includes a configuration file:
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
name: NIST 800-53 Rev 4 Moderate
|
|
214
|
+
version: 4.0.0
|
|
215
|
+
description: NIST Special Publication 800-53 Security Controls
|
|
216
|
+
source: https://csrc.nist.gov/publications/detail/sp/800-53/rev-4/final
|
|
217
|
+
families:
|
|
218
|
+
- id: AC
|
|
219
|
+
name: Access Control
|
|
220
|
+
- id: AU
|
|
221
|
+
name: Audit and Accountability
|
|
222
|
+
# ... more families
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Troubleshooting
|
|
226
|
+
|
|
227
|
+
### Common Issues
|
|
228
|
+
|
|
229
|
+
**No control sets found:**
|
|
230
|
+
|
|
231
|
+
- Ensure you have a `lula.yaml` file in your control set directory
|
|
232
|
+
- Check that control files are in the correct structure
|
|
233
|
+
|
|
234
|
+
**WebSocket connection failed:**
|
|
235
|
+
|
|
236
|
+
- Verify the port is not in use
|
|
237
|
+
- Check firewall settings
|
|
238
|
+
- Ensure both frontend and backend are running
|
|
239
|
+
|
|
240
|
+
**Git history not showing:**
|
|
241
|
+
|
|
242
|
+
- Verify the directory is a Git repository
|
|
243
|
+
- Ensure Git is installed and accessible
|
|
244
|
+
- Check file permissions
|
|
245
|
+
|
|
246
|
+
## Development
|
|
247
|
+
|
|
248
|
+
### Prerequisites
|
|
249
|
+
|
|
250
|
+
- Node.js 22+
|
|
251
|
+
- Git (for version history features)
|
|
252
|
+
- pnpm (recommended) or npm
|
|
253
|
+
|
|
254
|
+
### Local Development
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# Clone the repository
|
|
258
|
+
git clone https://github.com/defenseunicorns/lula.git
|
|
259
|
+
cd lula
|
|
260
|
+
|
|
261
|
+
# Install dependencies
|
|
262
|
+
pnpm install
|
|
263
|
+
|
|
264
|
+
# Run development servers
|
|
265
|
+
pnpm run dev:full # Runs both frontend and backend
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Build
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
pnpm run build
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Architecture
|
|
275
|
+
|
|
276
|
+
- **Frontend**: SvelteKit 5 with Tailwind CSS
|
|
277
|
+
- **Backend**: Express + WebSocket server
|
|
278
|
+
- **Storage**: YAML files with Git integration
|
|
279
|
+
- **State Management**: Svelte 5 runes
|
|
280
|
+
- **CLI**: Commander.js with TypeScript
|
|
281
|
+
|
|
282
|
+
## Contributing
|
|
283
|
+
|
|
284
|
+
We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
285
|
+
|
|
286
|
+
## License
|
|
287
|
+
|
|
288
|
+
Apache-2.0 - See [LICENSE](LICENSE) for details.
|
|
289
|
+
|
|
290
|
+
## Support
|
|
291
|
+
|
|
292
|
+
- **Documentation**: [https://lula.dev/docs](https://lula.dev/docs)
|
|
293
|
+
- **Issues**: [GitHub Issues](https://github.com/defenseunicorns/lula2/issues)
|
|
294
|
+
- **Discussions**: [GitHub Discussions](https://github.com/defenseunicorns/lula2/discussions)
|
|
295
|
+
|
|
296
|
+
## Related Projects
|
|
297
|
+
|
|
298
|
+
- [Lula 1 (Original CLI)](https://github.com/defenseunicorns-labs/lula1) - OSCAL-based compliance validator CLI
|
|
299
|
+
- [OSCAL](https://pages.nist.gov/OSCAL/) - Open Security Controls Assessment Language
|
|
300
|
+
|
|
301
|
+
## Credits
|
|
302
|
+
|
|
303
|
+
Developed by [The Lula Authors](https://github.com/defenseunicorns/lula2/graphs/contributors)
|
|
304
|
+
|
|
305
|
+
Part of the Defense Unicorns ecosystem for secure, compliant software delivery.
|
package/dist/_app/env.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const env={}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.13 | 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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-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-font-weight:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-amber-100:oklch(96.2% .059 95.617);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--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-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-gray-950:oklch(13% .028 261.692);--spacing:.25rem;--container-sm:24rem;--container-6xl:72rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--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;--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)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;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{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{color-scheme:dark;scrollbar-width:thin;scrollbar-color:#9ca3af80 transparent;overflow-y:auto}html::-webkit-scrollbar{z-index:20;width:5px}html::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:4px}html::-webkit-scrollbar-track{background:0 0}html button:not([disabled]),html [role=button]:not([disabled]){cursor:pointer}.tooltip-arrow,.tooltip-arrow:before{background:inherit;width:8px;height:8px;position:absolute}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:"";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{background:inherit;width:8px;height:8px;position:absolute}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:before{content:"";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{content:"";visibility:visible;background:inherit;width:9px;height:9px;position:absolute;transform:rotate(45deg)}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4a5565}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4a5565}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:before,[role=tooltip].invisible>[data-popper-arrow]:after{visibility:hidden}[type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-width:1px;border-color:#6b7280;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}:is([type=text],[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2;outline:2px solid #0000}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}input[type=time]::-webkit-calendar-picker-indicator{background:0 0}select:not([size]){-webkit-print-color-adjust:exact;print-color-adjust:exact;background-image:url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 10 6'%3e %3cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3e %3c/svg%3e");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem}[dir=rtl] select:not([size]){background-position:.75rem;padding-left:0;padding-right:.75rem}[multiple]{background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;-webkit-print-color-adjust:unset;print-color-adjust:unset;padding-right:.75rem}[type=checkbox],[type=radio]{appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:middle;-webkit-user-select:none;user-select:none;color:#1c64f2;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-width:1px;border-color:#6b7280;flex-shrink:0;width:1rem;height:1rem;padding:0;display:inline-block}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--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);outline:2px solid #0000}[type=checkbox]:checked,[type=radio]:checked,.dark [type=checkbox]:checked,.dark [type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;border-color:#0000}[type=checkbox]:checked{-webkit-print-color-adjust:exact;print-color-adjust:exact;background-image:url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 12'%3e %3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3e %3c/svg%3e");background-repeat:no-repeat;background-size:.55em .55em}[type=radio]:checked,.dark [type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");background-size:1em 1em}[type=checkbox]:indeterminate{-webkit-print-color-adjust:exact;print-color-adjust:exact;background-color:currentColor;background-image:url("data:image/svg+xml,%3csvg aria-hidden='true' xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 12'%3e %3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M0.5 6h14'/%3e %3c/svg%3e");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;border-color:#0000}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;font-size:unset;line-height:inherit;border-width:0;border-radius:0;padding:0}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-size:.875rem;font-weight:500}input[type=file]::file-selector-button{cursor:pointer;margin-inline:-1rem 1rem;padding:.625rem 1rem .625rem 2rem}input[type=file]::file-selector-button:hover{background:#374151}[dir=rtl] input[type=file]::file-selector-button{padding-left:1rem;padding-right:2rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#1c64f2;border:0;border-radius:9999px;width:1.25rem;height:1.25rem}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline-offset:2px;--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(4px + 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);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity));outline:2px solid #0000}input[type=range]::-moz-range-thumb{appearance:none;cursor:pointer;background:#1c64f2;border:0;border-radius:9999px;width:1.25rem;height:1.25rem}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}input[type=range].range-sm::-webkit-slider-thumb{width:1rem;height:1rem}input[type=range].range-lg::-webkit-slider-thumb{width:1.5rem;height:1.5rem}input[type=range].range-sm::-moz-range-thumb{width:1rem;height:1rem}input[type=range].range-lg::-moz-range-thumb{width:1.5rem;height:1.5rem}.toggle-bg:after{content:"";width:1.25rem;height:1.25rem;box-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);background:#fff;border-width:1px;border-color:#d1d5db;border-radius:9999px;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;position:absolute;top:.125rem;left:.125rem}input:checked+.toggle-bg:after{border-color:#fff;transform:translate(100%)}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}}@layer components{.sticky-header{z-index:40;position:sticky}.btn{cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*3);padding-block:calc(var(--spacing)*1.5);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#9ca3af;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out);background-color:#0000;border-width:1px;border-color:#4b5563;align-items:center;display:inline-flex}@media (hover:hover){.btn:hover{color:#fff;background-color:#374151}}.btn-primary{cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#3f83f8;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));background-color:#111827;border-width:1px;border-color:#1c64f2}@media (hover:hover){.btn-primary:hover{color:#fff;background-color:#1c64f2}}.btn-primary:focus{--tw-outline-style:none;outline-style:none}.btn-primary:focus-visible{z-index:10;color:#fff;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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);--tw-ring-color:#c3ddfd;background-color:#1c64f2}.btn-primary:disabled{cursor:not-allowed;color:#fff;background-color:#6b7280;border-color:#0000}.btn-secondary{cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#fff;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));background-color:#1c64f2;border-width:1px;border-color:#0000}@media (hover:hover){.btn-secondary:hover{background-color:#1a56db}}.btn-secondary:focus{--tw-outline-style:none;outline-style:none}.btn-secondary:focus-visible{z-index:10;color:#fff;--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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);--tw-ring-color:#c3ddfd;background-color:#3f83f8}.btn-secondary:disabled{cursor:not-allowed;color:#fff;background-color:#6b7280;border-color:#0000}.btn-alternative{cursor:pointer;border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-inline:calc(var(--spacing)*5);padding-block:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:#9ca3af;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));background-color:#1f2937;border-width:1px;border-color:#4b5563}@media (hover:hover){.btn-alternative:hover{color:#fff;background-color:#374151}}.btn-alternative:focus{z-index:10;--tw-outline-style:none;outline-style:none}.btn-alternative:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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);--tw-ring-color:#374151}.btn-alternative:disabled{cursor:not-allowed;color:#9ca3af;background-color:#1f2937}.card{margin-bottom:calc(var(--spacing)*4);border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding:calc(var(--spacing)*4);--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);background-color:#111827;border-width:1px;border-color:#1f2937}.search-input{border-radius:var(--radius-lg);border-style:var(--tw-border-style);width:100%;padding:calc(var(--spacing)*2.5);padding-right:calc(var(--spacing)*10);padding-left:calc(var(--spacing)*10);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:#f3f4f6;background-color:#1f2937;border-width:1px;border-color:#4b5563;display:block}.search-input::placeholder{color:#d1d5db}.search-input:focus{color:#fff;--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);--tw-ring-color:#3f83f8;--tw-outline-style:none;border-color:#3f83f8;outline-style:none}.search-input::-webkit-search-cancel-button{display:none}select{border-radius:var(--radius-lg);border-style:var(--tw-border-style);width:100%;padding:calc(var(--spacing)*2.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:#f3f4f6;background-color:#1f2937;border-width:1px;border-color:#374151;display:block}select::placeholder{color:#9ca3af}select: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);--tw-ring-color:#3f83f8;--tw-outline-style:none;border-color:#3f83f8;outline-style:none}svg.icon{color:#9ca3af;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;flex-shrink:0;transition-duration:.3s}.text-link{color:#76a9fa;text-decoration-color:#76a9fa}@media (hover:hover){.text-link:hover{text-decoration-line:underline}}.no-scrollbar{scrollbar-width:none}}@layer utilities{.scrollable-container{scrollbar-width:thin;padding-bottom:1rem;overflow:hidden auto;position:static!important}.scrollable-container:not(.no-fade):after{content:"";pointer-events:none;right:calc(var(--spacing)*0);bottom:calc(var(--spacing)*0);left:calc(var(--spacing)*0);--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:oklab(0% 0 0/0);--tw-gradient-to:#111827;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));height:28px;position:absolute}.scrollable-container .btn:not(.keep-default-btn-style){--tw-border-style:none;border-style:none}.scrollable-container table{table-layout:fixed;text-align:left;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:#9ca3af}.scrollable-container table thead{top:calc(var(--spacing)*0);z-index:10;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:#9ca3af;text-transform:uppercase;--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);position:sticky}.scrollable-container table thead tr{text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:#9ca3af;text-transform:uppercase;background-color:#1118274d}.scrollable-container table thead tr th{padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*4);white-space:nowrap;background-color:#1f2937}.scrollable-container table thead tr th:first-child{border-top-left-radius:var(--radius-lg)}.scrollable-container table thead tr th:last-child{border-top-right-radius:var(--radius-lg)}.scrollable-container table tbody tr{background-color:#111827}.scrollable-container table tbody tr.group-boundary{border-top-style:var(--tw-border-style);border-top-width:5px;border-top-color:#1f2937}.scrollable-container table tbody tr.expandable-row td{background-color:var(--color-gray-950)}.scrollable-container table tbody tr td{white-space:nowrap;color:#9ca3af}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.top-12{top:calc(var(--spacing)*12)}.top-\[-4px\]{top:-4px}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-\[-4px\]{right:-4px}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-\[-4px\]{bottom:-4px}.left-0{left:calc(var(--spacing)*0)}.left-4{left:calc(var(--spacing)*4)}.left-\[-4px\]{left:-4px}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-100{z-index:100}.col-span-1{grid-column:span 1/span 1}.col-span-full{grid-column:1/-1}.container{width:100%}@media (min-width:31rem){.container{max-width:31rem}}@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-auto{margin-inline:auto}.me-2{margin-inline-end:calc(var(--spacing)*2)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.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)}.mt-6{margin-top:calc(var(--spacing)*6)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mr-3{margin-right:calc(var(--spacing)*3)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.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-12{margin-left:calc(var(--spacing)*12)}.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}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-64{height:calc(var(--spacing)*64)}.h-\[12px\]{height:12px}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[600px\]{max-height:600px}.min-h-\[100px\]{min-height:100px}.min-h-\[120px\]{min-height:120px}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.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-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-\[12px\]{width:12px}.w-fit{width:fit-content}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-60{min-width:calc(var(--spacing)*60)}.min-w-\[400px\]{min-width:400px}.min-w-\[700px\]{min-width:700px}.min-w-\[800px\]{min-width:800px}.min-w-\[850px\]{min-width:850px}.min-w-\[900px\]{min-width:900px}.min-w-\[1024px\]{min-width:1024px}.min-w-\[1100px\]{min-width:1100px}.min-w-\[1150px\]{min-width:1150px}.min-w-\[1200px\]{min-width:1200px}.min-w-\[1250px\]{min-width:1250px}.min-w-\[1300px\]{min-width:1300px}.min-w-\[1450px\]{min-width:1450px}.min-w-\[1500px\]{min-width:1500px}.min-w-\[1600px\]{min-width:1600px}.min-w-\[1650px\]{min-width:1650px}.min-w-\[1750px\]{min-width:1750px}.min-w-\[1865px\]{min-width:1865px}.min-w-\[2000px\]{min-width:2000px}.min-w-\[2200px\]{min-width:2200px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.origin-top-right{transform-origin:100% 0}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;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)}.rotate-45{rotate:45deg}.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-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.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-1{gap:calc(var(--spacing)*1)}.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-8{gap:calc(var(--spacing)*8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*10)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*10)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*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(.space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*8)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*8)*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-gray-200>:not(:last-child)){border-color:#e5e7eb}.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-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.rounded-l-lg{border-top-left-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.rounded-r-lg{border-top-right-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.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-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.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-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-blue-200{border-color:#c3ddfd}.border-blue-300{border-color:#a4cafe}.border-blue-500{border-color:#3f83f8}.border-blue-600{border-color:#1c64f2}.border-gray-100{border-color:#f3f4f6}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d1d5db}.border-gray-700{border-color:#374151}.border-green-200{border-color:#bcf0da}.border-green-300{border-color:#84e1bc}.border-green-500{border-color:#0e9f6e}.border-purple-200{border-color:#dcd7fe}.border-purple-300{border-color:#cabffd}.border-purple-500{border-color:#9061f9}.border-red-200{border-color:#fbd5d5}.border-red-400{border-color:#f98080}.border-red-500{border-color:#f05252}.border-transparent{border-color:#0000}.bg-amber-100{background-color:var(--color-amber-100)}.bg-amber-400{background-color:var(--color-amber-400)}.bg-blue-50{background-color:#ebf5ff}.bg-blue-100{background-color:#e1effe}.bg-blue-500{background-color:#3f83f8}.bg-blue-600{background-color:#1c64f2}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:#f9fafb}.bg-gray-100{background-color:#f3f4f6}.bg-gray-200{background-color:#e5e7eb}.bg-gray-600{background-color:#4b5563}.bg-gray-700{background-color:#374151}.bg-gray-800{background-color:#1f2937}.bg-gray-900{background-color:#111827}.bg-gray-950{background-color:var(--color-gray-950)}.bg-green-50{background-color:#f3faf7}.bg-green-100{background-color:#def7ec}.bg-green-200{background-color:#bcf0da}.bg-green-500{background-color:#0e9f6e}.bg-purple-50{background-color:#f6f5ff}.bg-purple-100{background-color:#edebfe}.bg-red-50{background-color:#fdf2f2}.bg-red-100{background-color:#fde8e8}.bg-red-200{background-color:#fbd5d5}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.bg-yellow-50{background-color:#fdfdea}.bg-yellow-500{background-color:#c27803}.\!bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab!important;background-image:linear-gradient(var(--tw-gradient-stops))!important}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:#ebf5ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-gray-50{--tw-gradient-from:#f9fafb;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-green-50{--tw-gradient-from:#f3faf7;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-emerald-50{--tw-gradient-to:var(--color-emerald-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to:#f3f4f6;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-50{--tw-gradient-to:#f0f5ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-0{padding:calc(var(--spacing)*0)}.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)}.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-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-10{padding-left:calc(var(--spacing)*10)}.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-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.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-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-blue-600{color:#1c64f2}.text-blue-700{color:#1a56db}.text-blue-800{color:#1e429f}.text-emerald-800{color:var(--color-emerald-800)}.text-gray-300{color:#d1d5db}.text-gray-400{color:#9ca3af}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-800{color:#1f2937}.text-gray-900{color:#111827}.text-green-600{color:#057a55}.text-green-700{color:#046c4e}.text-green-800{color:#03543f}.text-green-900{color:#014737}.text-orange-600{color:#d03801}.text-purple-600{color:#7e3af2}.text-purple-700{color:#6c2bd9}.text-purple-800{color:#5521b5}.text-red-500{color:#f05252}.text-red-600{color:#e02424}.text-red-700{color:#c81e1e}.text-red-800{color:#9b1c1c}.text-red-900{color:#771d1d}.text-white{color:#fff}.text-yellow-800{color:#723b13}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.placeholder-gray-500::placeholder{color:#6b7280}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.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-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-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-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)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:bg-blue-200:is(:where(.group):hover *){background-color:#c3ddfd}.group-hover\:text-blue-600:is(:where(.group):hover *){color:#1c64f2}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.first\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}@media (hover:hover){.hover\:border-blue-300:hover{border-color:#a4cafe}.hover\:border-blue-400:hover{border-color:#76a9fa}.hover\:bg-blue-100:hover{background-color:#e1effe}.hover\:bg-blue-200:hover{background-color:#c3ddfd}.hover\:bg-blue-700:hover{background-color:#1a56db}.hover\:bg-gray-50:hover{background-color:#f9fafb}.hover\:bg-gray-100:hover{background-color:#f3f4f6}.hover\:bg-gray-200:hover{background-color:#e5e7eb}.hover\:bg-gray-300:hover{background-color:#d1d5db}.hover\:bg-gray-700:hover{background-color:#374151}.hover\:bg-green-200:hover{background-color:#bcf0da}.hover\:bg-purple-200:hover{background-color:#dcd7fe}.hover\:bg-red-50:hover{background-color:#fdf2f2}.hover\:bg-red-100:hover{background-color:#fde8e8}.hover\:text-blue-700:hover{color:#1a56db}.hover\:text-blue-800:hover{color:#1e429f}.hover\:text-gray-600:hover{color:#4b5563}.hover\:text-gray-700:hover{color:#374151}.hover\:text-gray-800:hover{color:#1f2937}.hover\:text-gray-900:hover{color:#111827}.hover\:text-red-500:hover{color:#f05252}.hover\:text-red-700:hover{color:#c81e1e}.hover\:text-red-800:hover{color:#9b1c1c}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:z-10:focus{z-index:10}.focus\:border-blue-500:focus{border-color:#3f83f8}.focus\:border-red-500:focus{border-color:#f05252}.focus\:border-transparent:focus{border-color:#0000}.focus\:bg-gray-700:focus{background-color:#374151}.focus\:placeholder-gray-400:focus::placeholder{color:#9ca3af}.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-4:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + 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-blue-300:focus{--tw-ring-color:#a4cafe}.focus\:ring-blue-500:focus{--tw-ring-color:#3f83f8}.focus\:ring-blue-600:focus{--tw-ring-color:#1c64f2}.focus\:ring-gray-500:focus{--tw-ring-color:#6b7280}.focus\:ring-red-500:focus{--tw-ring-color:#f05252}.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}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-400:disabled{background-color:#9ca3af}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:px-4{padding-inline:calc(var(--spacing)*4)}.md\:py-2{padding-block:calc(var(--spacing)*2)}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}}@media (min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}:where(.dark\:divide-gray-600:is(.dark *)>:not(:last-child)){border-color:#4b5563}:where(.dark\:divide-gray-700:is(.dark *)>:not(:last-child)){border-color:#374151}.dark\:border-blue-600:is(.dark *){border-color:#1c64f2}.dark\:border-blue-700:is(.dark *){border-color:#1a56db}.dark\:border-blue-800:is(.dark *){border-color:#1e429f}.dark\:border-gray-500:is(.dark *){border-color:#6b7280}.dark\:border-gray-600:is(.dark *){border-color:#4b5563}.dark\:border-gray-700:is(.dark *){border-color:#374151}.dark\:border-green-700:is(.dark *){border-color:#046c4e}.dark\:border-green-800:is(.dark *){border-color:#03543f}.dark\:border-purple-700:is(.dark *){border-color:#6c2bd9}.dark\:border-purple-800:is(.dark *){border-color:#5521b5}.dark\:border-red-800:is(.dark *){border-color:#9b1c1c}.dark\:bg-amber-900\/30:is(.dark *){background-color:#7b33064d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-900)30%,transparent)}}.dark\:bg-blue-600:is(.dark *){background-color:#1c64f2}.dark\:bg-blue-800:is(.dark *){background-color:#1e429f}.dark\:bg-blue-900:is(.dark *){background-color:#233876}.dark\:bg-blue-900\/10:is(.dark *){background-color:#2338761a}.dark\:bg-blue-900\/20:is(.dark *){background-color:#23387633}.dark\:bg-blue-900\/30:is(.dark *){background-color:#2338764d}.dark\:bg-emerald-900\/30:is(.dark *){background-color:#004e3b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-emerald-900\/30:is(.dark *){background-color:color-mix(in oklab,var(--color-emerald-900)30%,transparent)}}.dark\:bg-gray-600:is(.dark *){background-color:#4b5563}.dark\:bg-gray-700:is(.dark *){background-color:#374151}.dark\:bg-gray-800:is(.dark *){background-color:#1f2937}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){background-color:#111827}.dark\:bg-gray-900\/20:is(.dark *){background-color:#11182733}.dark\:bg-green-800:is(.dark *){background-color:#03543f}.dark\:bg-green-900:is(.dark *){background-color:#014737}.dark\:bg-green-900\/10:is(.dark *){background-color:#0147371a}.dark\:bg-green-900\/20:is(.dark *){background-color:#01473733}.dark\:bg-green-900\/30:is(.dark *){background-color:#0147374d}.dark\:bg-orange-800:is(.dark *){background-color:#8a2c0d}.dark\:bg-purple-900:is(.dark *){background-color:#4a1d96}.dark\:bg-purple-900\/10:is(.dark *){background-color:#4a1d961a}.dark\:bg-purple-900\/20:is(.dark *){background-color:#4a1d9633}.dark\:bg-purple-900\/30:is(.dark *){background-color:#4a1d964d}.dark\:bg-red-800:is(.dark *){background-color:#9b1c1c}.dark\:bg-red-900:is(.dark *){background-color:#771d1d}.dark\:bg-red-900\/20:is(.dark *){background-color:#771d1d33}.dark\:bg-red-900\/30:is(.dark *){background-color:#771d1d4d}.dark\:bg-yellow-600:is(.dark *){background-color:#9f580a}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from:oklab(36.062% -.00615554 -.109299/.2);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:from-gray-800:is(.dark *){--tw-gradient-from:#1f2937;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from:oklab(35.4524% -.0679389 .010396/.2);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-to:#004e3b33}@supports (color:color-mix(in lab,red,red)){.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-to:color-mix(in oklab,var(--color-emerald-900)20%,transparent)}}.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-900:is(.dark *){--tw-gradient-to:#111827;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to:oklab(35.707% .0266021 -.117194/.2);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.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-200:is(.dark *){color:#c3ddfd}.dark\:text-blue-300:is(.dark *){color:#a4cafe}.dark\:text-blue-400:is(.dark *){color:#76a9fa}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-gray-100:is(.dark *){color:#f3f4f6}.dark\:text-gray-200:is(.dark *){color:#e5e7eb}.dark\:text-gray-300:is(.dark *){color:#d1d5db}.dark\:text-gray-400:is(.dark *){color:#9ca3af}.dark\:text-gray-500:is(.dark *){color:#6b7280}.dark\:text-gray-600:is(.dark *){color:#4b5563}.dark\:text-green-100:is(.dark *){color:#def7ec}.dark\:text-green-200:is(.dark *){color:#bcf0da}.dark\:text-green-300:is(.dark *){color:#84e1bc}.dark\:text-green-400:is(.dark *){color:#31c48d}.dark\:text-orange-200:is(.dark *){color:#fcd9bd}.dark\:text-orange-400:is(.dark *){color:#ff8a4c}.dark\:text-purple-200:is(.dark *){color:#dcd7fe}.dark\:text-purple-300:is(.dark *){color:#cabffd}.dark\:text-purple-400:is(.dark *){color:#ac94fa}.dark\:text-red-100:is(.dark *){color:#fde8e8}.dark\:text-red-200:is(.dark *){color:#fbd5d5}.dark\:text-red-300:is(.dark *){color:#f8b4b4}.dark\:text-red-400:is(.dark *){color:#f98080}.dark\:text-white:is(.dark *){color:#fff}.dark\:text-yellow-100:is(.dark *){color:#fdf6b2}.dark\:text-yellow-300:is(.dark *){color:#faca15}.dark\:placeholder-gray-400:is(.dark *)::placeholder{color:#9ca3af}.dark\:ring-offset-gray-800:is(.dark *){--tw-ring-offset-color:#1f2937}@media (hover:hover){.dark\:group-hover\:bg-blue-700:is(.dark *):is(:where(.group):hover *){background-color:#1a56db}.dark\:group-hover\:text-blue-400:is(.dark *):is(:where(.group):hover *){color:#76a9fa}.dark\:hover\:border-blue-500:is(.dark *):hover{border-color:#3f83f8}.dark\:hover\:border-blue-700:is(.dark *):hover{border-color:#1a56db}.dark\:hover\:bg-blue-700:is(.dark *):hover{background-color:#1a56db}.dark\:hover\:bg-blue-800:is(.dark *):hover{background-color:#1e429f}.dark\:hover\:bg-blue-800\/30:is(.dark *):hover{background-color:#1e429f4d}.dark\:hover\:bg-blue-900\/30:is(.dark *):hover{background-color:#2338764d}.dark\:hover\:bg-blue-900\/50:is(.dark *):hover{background-color:#23387680}.dark\:hover\:bg-gray-600:is(.dark *):hover{background-color:#4b5563}.dark\:hover\:bg-gray-700:is(.dark *):hover{background-color:#374151}.dark\:hover\:bg-gray-800:is(.dark *):hover{background-color:#1f2937}.dark\:hover\:bg-gray-800\/50:is(.dark *):hover{background-color:#1f293780}.dark\:hover\:bg-green-800\/30:is(.dark *):hover{background-color:#03543f4d}.dark\:hover\:bg-purple-800\/30:is(.dark *):hover{background-color:#5521b54d}.dark\:hover\:bg-red-900\/20:is(.dark *):hover{background-color:#771d1d33}.dark\:hover\:bg-red-900\/50:is(.dark *):hover{background-color:#771d1d80}.dark\:hover\:text-blue-100:is(.dark *):hover{color:#e1effe}.dark\:hover\:text-blue-300:is(.dark *):hover{color:#a4cafe}.dark\:hover\:text-gray-100:is(.dark *):hover{color:#f3f4f6}.dark\:hover\:text-gray-200:is(.dark *):hover{color:#e5e7eb}.dark\:hover\:text-gray-300:is(.dark *):hover{color:#d1d5db}.dark\:hover\:text-red-100:is(.dark *):hover{color:#fde8e8}.dark\:hover\:text-white:is(.dark *):hover{color:#fff}}.dark\:focus\:ring-blue-400:is(.dark *):focus{--tw-ring-color:#76a9fa}.dark\:focus\:ring-blue-600:is(.dark *):focus{--tw-ring-color:#1c64f2}.dark\:focus\:ring-blue-800:is(.dark *):focus{--tw-ring-color:#1e429f}}:root{--navbar-height:4rem;--sidebar-width:16rem;--table-height:350px}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-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-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.diff-viewer.svelte-tcwuie{font-family:Monaco,Menlo,Consolas,monospace}.diff-line.svelte-tcwuie:hover{background-color:#3b82f60d}.diff-line.bg-green-50.svelte-tcwuie:hover{background-color:#22c55e1a}.diff-line.bg-red-50.svelte-tcwuie:hover{background-color:#ef44441a}.dark .diff-line.svelte-tcwuie:hover{background-color:#3b82f61a}.yaml-diff-viewer.svelte-1mbkpm9{font-family:Monaco,Menlo,Consolas,monospace}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as k,j as t,k as S,q as b,S as h}from"./B_3ksxz5.js";function u(r,i){return r===i||r?.[h]===i}function c(r={},i,a,q){return k(()=>{var f,s;return t(()=>{f=s,s=[],S(()=>{r!==a(...s)&&(i(r,...s),f&&u(a(...f),r)&&i(null,...f))})}),()=>{b(()=>{s&&u(a(...s),r)&&i(null,...s)})}}),r}export{c as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{O as K,l as k,aw as Ne,v as de,m as Me,t as ae,h as te,a0 as Oe,L as We,M as Ie,N as ie,P as R,z as D,ax as De,ay as Le,w as H,y as Pe,az as B,aA as J,x as W,aB as ve,aC as he,aD as pe,T as Re,ab as oe,aE as le,Q as we,A as $e,aF as X,q as He,aG as U,aH as Ue,aI as qe,aJ as Fe,aK as Ve,aL as Ye,aM as Be,a3 as Je,i as ne,aN as ze,aO as Ge,X as Ke,aP as se,aQ as Xe,aR as Qe,aS as Ze,aT as je,at as xe,aU as et,aV as tt,U as rt,aW as at,aX as nt,aY as st,aZ as it,a_ as ot,a$ as lt,b0 as ct,as as ft,k as be,j as _e,b1 as ut,b2 as dt}from"./B_3ksxz5.js";function mt(e,t){return t}function vt(e,t,r){for(var a=e.items,n=[],s=t.length,i=0;i<s;i++)Ve(t[i].e,n,!0);var l=s>0&&n.length===0&&r!==null;if(l){var g=r.parentNode;Ye(g),g.append(r),a.clear(),T(e,t[0].prev,t[s-1].next)}Be(n,()=>{for(var d=0;d<s;d++){var S=t[d];l||(a.delete(S.k),T(e,S.prev,S.next)),U(S.e,!l)}})}function Tt(e,t,r,a,n,s=null){var i=e,l={flags:t,items:new Map,first:null},g=(t&ve)!==0;if(g){var d=e;i=k?K(Ne(d)):d.appendChild(de())}k&&Me();var S=null,y=!1,w=new Map,E=Oe(()=>{var h=r();return pe(h)?h:h==null?[]:he(h)}),f,u;function _(){ht(u,f,l,w,i,n,t,a,r),s!==null&&(f.length===0?S?we(S):S=H(()=>s(i)):S!==null&&$e(S,()=>{S=null}))}ae(()=>{u??=Je,f=te(E);var h=f.length;if(y&&h===0)return;y=h===0;let C=!1;if(k){var v=We(i)===Ie;v!==(h===0)&&(i=ie(),K(i),R(!1),C=!0)}if(k){for(var p=null,b,o=0;o<h;o++){if(D.nodeType===De&&D.data===Le){i=D,C=!0,R(!1);break}var c=f[o],A=a(c,o);b=re(D,l,p,null,c,A,o,n,t,r),l.items.set(A,b),p=b}h>0&&K(ie())}if(k)h===0&&s&&(S=H(()=>s(i)));else if(Pe()){var M=new Set,q=W;for(o=0;o<h;o+=1){c=f[o],A=a(c,o);var O=l.items.get(A)??w.get(A);O?(t&(B|J))!==0&&Se(O,c,o,t):(b=re(null,l,null,null,c,A,o,n,t,r,!0),w.set(A,b)),M.add(A)}for(const[m,F]of l.items)M.has(m)||q.skipped_effects.add(F.e);q.add_callback(_)}else _();C&&R(!0),te(E)}),k&&(i=D)}function ht(e,t,r,a,n,s,i,l,g){var d=(i&qe)!==0,S=(i&(B|J))!==0,y=t.length,w=r.items,E=r.first,f=E,u,_=null,h,C=[],v=[],p,b,o,c;if(d)for(c=0;c<y;c+=1)p=t[c],b=l(p,c),o=w.get(b),o!==void 0&&(o.a?.measure(),(h??=new Set).add(o));for(c=0;c<y;c+=1){if(p=t[c],b=l(p,c),o=w.get(b),o===void 0){var A=a.get(b);if(A!==void 0){a.delete(b),w.set(b,A);var M=_?_.next:f;T(r,_,A),T(r,A,M),Q(A,M,n),_=A}else{var q=f?f.e.nodes_start:n;_=re(q,r,_,_===null?r.first:_.next,p,b,c,s,i,g)}w.set(b,_),C=[],v=[],f=_.next;continue}if(S&&Se(o,p,c,i),(o.e.f&X)!==0&&(we(o.e),d&&(o.a?.unfix(),(h??=new Set).delete(o))),o!==f){if(u!==void 0&&u.has(o)){if(C.length<v.length){var O=v[0],m;_=O.prev;var F=C[0],z=C[C.length-1];for(m=0;m<C.length;m+=1)Q(C[m],O,n);for(m=0;m<v.length;m+=1)u.delete(v[m]);T(r,F.prev,z.next),T(r,_,F),T(r,z,O),f=O,_=z,c-=1,C=[],v=[]}else u.delete(o),Q(o,f,n),T(r,o.prev,o.next),T(r,o,_===null?r.first:_.next),T(r,_,o),_=o;continue}for(C=[],v=[];f!==null&&f.k!==b;)(f.e.f&X)===0&&(u??=new Set).add(f),v.push(f),f=f.next;if(f===null)continue;o=f}C.push(o),_=o,f=o.next}if(f!==null||u!==void 0){for(var I=u===void 0?[]:he(u);f!==null;)(f.e.f&X)===0&&I.push(f),f=f.next;var G=I.length;if(G>0){var me=(i&ve)!==0&&y===0?n:null;if(d){for(c=0;c<G;c+=1)I[c].a?.measure();for(c=0;c<G;c+=1)I[c].a?.fix()}vt(r,I,me)}}d&&He(()=>{if(h!==void 0)for(o of h)o.a?.apply()}),e.first=r.first&&r.first.e,e.last=_&&_.e;for(var Te of a.values())U(Te.e);a.clear()}function Se(e,t,r,a){(a&B)!==0&&le(e.v,t),(a&J)!==0?le(e.i,r):e.i=r}function re(e,t,r,a,n,s,i,l,g,d,S){var y=(g&B)!==0,w=(g&Ue)===0,E=y?w?Re(n,!1,!1):oe(n):n,f=(g&J)===0?i:oe(i),u={i:f,v:E,k:s,a:null,e:null,prev:r,next:a};try{if(e===null){var _=document.createDocumentFragment();_.append(e=de())}return u.e=H(()=>l(e,E,f,d),k),u.e.prev=r&&r.e,u.e.next=a&&a.e,r===null?S||(t.first=u):(r.next=u,r.e.next=u.e),a!==null&&(a.prev=u,a.e.prev=u.e),u}finally{}}function Q(e,t,r){for(var a=e.next?e.next.e.nodes_start:r,n=t?t.e.nodes_start:r,s=e.e.nodes_start;s!==null&&s!==a;){var i=Fe(s);n.before(s),s=i}}function T(e,t,r){t===null?e.first=r:(t.next=r,t.e.next=r&&r.e),r!==null&&(r.prev=t,r.e.prev=t&&t.e)}function pt(e,t){var r=void 0,a;ae(()=>{r!==(r=t())&&(a&&(U(a),a=null),r&&(a=H(()=>{ne(()=>r(e))})))})}function ge(e){var t,r,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(r=ge(e[t]))&&(a&&(a+=" "),a+=r)}else for(r in e)e[r]&&(a&&(a+=" "),a+=r);return a}function wt(){for(var e,t,r=0,a="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=ge(e))&&(a&&(a+=" "),a+=t);return a}function bt(e){return typeof e=="object"?wt(e):e??""}const ce=[...`
|
|
2
|
+
\r\f \v\uFEFF`];function _t(e,t,r){var a=e==null?"":""+e;if(t&&(a=a?a+" "+t:t),r){for(var n in r)if(r[n])a=a?a+" "+n:n;else if(a.length)for(var s=n.length,i=0;(i=a.indexOf(n,i))>=0;){var l=i+s;(i===0||ce.includes(a[i-1]))&&(l===a.length||ce.includes(a[l]))?a=(i===0?"":a.substring(0,i))+a.substring(l+1):i=l}}return a===""?null:a}function fe(e,t=!1){var r=t?" !important;":";",a="";for(var n in e){var s=e[n];s!=null&&s!==""&&(a+=" "+n+": "+s+r)}return a}function Z(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function St(e,t){if(t){var r="",a,n;if(Array.isArray(t)?(a=t[0],n=t[1]):a=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var s=!1,i=0,l=!1,g=[];a&&g.push(...Object.keys(a).map(Z)),n&&g.push(...Object.keys(n).map(Z));var d=0,S=-1;const u=e.length;for(var y=0;y<u;y++){var w=e[y];if(l?w==="/"&&e[y-1]==="*"&&(l=!1):s?s===w&&(s=!1):w==="/"&&e[y+1]==="*"?l=!0:w==='"'||w==="'"?s=w:w==="("?i++:w===")"&&i--,!l&&s===!1&&i===0){if(w===":"&&S===-1)S=y;else if(w===";"||y===u-1){if(S!==-1){var E=Z(e.substring(d,S).trim());if(!g.includes(E)){w!==";"&&y++;var f=e.substring(d,y).trim();r+=" "+f+";"}}d=y+1,S=-1}}}}return a&&(r+=fe(a)),n&&(r+=fe(n,!0)),r=r.trim(),r===""?null:r}return e==null?null:String(e)}function gt(e,t,r,a,n,s){var i=e.__className;if(k||i!==r||i===void 0){var l=_t(r,a,s);(!k||l!==e.getAttribute("class"))&&(l==null?e.removeAttribute("class"):t?e.className=l:e.setAttribute("class",l)),e.__className=r}else if(s&&n!==s)for(var g in s){var d=!!s[g];(n==null||d!==!!n[g])&&e.classList.toggle(g,d)}return s}function j(e,t={},r,a){for(var n in r){var s=r[n];t[n]!==s&&(r[n]==null?e.style.removeProperty(n):e.style.setProperty(n,s,a))}}function yt(e,t,r,a){var n=e.__style;if(k||n!==t){var s=St(t,a);(!k||s!==e.getAttribute("style"))&&(s==null?e.removeAttribute("style"):e.style.cssText=s),e.__style=t}else a&&(Array.isArray(a)?(j(e,r?.[0],a[0]),j(e,r?.[1],a[1],"important")):j(e,r,a));return a}function V(e,t,r=!1){if(e.multiple){if(t==null)return;if(!pe(t))return ze();for(var a of e.options)a.selected=t.includes($(a));return}for(a of e.options){var n=$(a);if(Ge(n,t)){a.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function ye(e){var t=new MutationObserver(()=>{V(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ke(()=>{t.disconnect()})}function Nt(e,t,r=t){var a=!0;se(e,"change",n=>{var s=n?"[selected]":":checked",i;if(e.multiple)i=[].map.call(e.querySelectorAll(s),$);else{var l=e.querySelector(s)??e.querySelector("option:not([disabled])");i=l&&$(l)}r(i)}),ne(()=>{var n=t();if(V(e,n,a),a&&n===void 0){var s=e.querySelector(":checked");s!==null&&(n=$(s),r(n))}e.__value=n,a=!1}),ye(e)}function $(e){return"__value"in e?e.__value:e.value}const L=Symbol("class"),P=Symbol("style"),Ce=Symbol("is custom element"),Ae=Symbol("is html");function Mt(e){if(k){var t=!1,r=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var a=e.value;Y(e,"value",null),e.value=a}if(e.hasAttribute("checked")){var n=e.checked;Y(e,"checked",null),e.checked=n}}};e.__on_r=r,it(r),ot()}}function Ct(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Y(e,t,r,a){var n=ke(e);k&&(n[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||n[t]!==(n[t]=r)&&(t==="loading"&&(e[st]=r),r==null?e.removeAttribute(t):typeof r!="string"&&Ee(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function At(e,t,r,a,n=!1){var s=ke(e),i=s[Ce],l=!s[Ae];let g=k&&i;g&&R(!1);var d=t||{},S=e.tagName==="OPTION";for(var y in t)y in r||(r[y]=null);r.class?r.class=bt(r.class):r[L]&&(r.class=null),r[P]&&(r.style??=null);var w=Ee(e);for(const v in r){let p=r[v];if(S&&v==="value"&&p==null){e.value=e.__value="",d[v]=p;continue}if(v==="class"){var E=e.namespaceURI==="http://www.w3.org/1999/xhtml";gt(e,E,p,a,t?.[L],r[L]),d[v]=p,d[L]=r[L];continue}if(v==="style"){yt(e,p,t?.[P],r[P]),d[v]=p,d[P]=r[P];continue}var f=d[v];if(!(p===f&&!(p===void 0&&e.hasAttribute(v)))){d[v]=p;var u=v[0]+v[1];if(u!=="$$")if(u==="on"){const b={},o="$$"+v;let c=v.slice(2);var _=lt(c);if(Ze(c)&&(c=c.slice(0,-7),b.capture=!0),!_&&f){if(p!=null)continue;e.removeEventListener(c,d[o],b),d[o]=null}if(p!=null)if(_)e[`__${c}`]=p,xe([c]);else{let A=function(M){d[v].call(this,M)};d[o]=je(c,e,A,b)}else _&&(e[`__${c}`]=void 0)}else if(v==="style")Y(e,v,p);else if(v==="autofocus")et(e,!!p);else if(!i&&(v==="__value"||v==="value"&&p!=null))e.value=e.__value=p;else if(v==="selected"&&S)Ct(e,p);else{var h=v;l||(h=tt(h));var C=h==="defaultValue"||h==="defaultChecked";if(p==null&&!i&&!C)if(s[v]=null,h==="value"||h==="checked"){let b=e;const o=t===void 0;if(h==="value"){let c=b.defaultValue;b.removeAttribute(h),b.defaultValue=c,b.value=b.__value=o?c:null}else{let c=b.defaultChecked;b.removeAttribute(h),b.defaultChecked=c,b.checked=o?c:!1}}else e.removeAttribute(v);else C||w.includes(h)&&(i||typeof p!="string")?(e[h]=p,h in s&&(s[h]=rt)):typeof p!="function"&&Y(e,h,p)}}}return g&&R(!0),d}function Ot(e,t,r=[],a=[],n,s=!1){Xe(r,a,i=>{var l=void 0,g={},d=e.nodeName==="SELECT",S=!1;if(ae(()=>{var w=t(...i.map(te)),E=At(e,l,w,n,s);S&&d&&"value"in w&&V(e,w.value);for(let u of Object.getOwnPropertySymbols(g))w[u]||U(g[u]);for(let u of Object.getOwnPropertySymbols(w)){var f=w[u];u.description===Qe&&(!l||f!==l[u])&&(g[u]&&U(g[u]),g[u]=H(()=>pt(e,()=>f))),E[u]=f}l=E}),d){var y=e;ne(()=>{V(y,l.value,!0),ye(y)})}S=!0})}function ke(e){return e.__attributes??={[Ce]:e.nodeName.includes("-"),[Ae]:e.namespaceURI===at}}var ue=new Map;function Ee(e){var t=e.getAttribute("is")||e.nodeName,r=ue.get(t);if(r)return r;ue.set(t,r=[]);for(var a,n=e,s=Element.prototype;s!==n;){a=ct(n);for(var i in a)a[i].set&&r.push(i);n=nt(n)}return r}function Wt(e,t,r=t){var a=new WeakSet;se(e,"input",async n=>{var s=n?e.defaultValue:e.value;if(s=x(e)?ee(s):s,r(s),W!==null&&a.add(W),await ft(),s!==(s=t())){var i=e.selectionStart,l=e.selectionEnd;e.value=s??"",l!==null&&(e.selectionStart=i,e.selectionEnd=Math.min(l,e.value.length))}}),(k&&e.defaultValue!==e.value||be(t)==null&&e.value)&&(r(x(e)?ee(e.value):e.value),W!==null&&a.add(W)),_e(()=>{var n=t();if(e===document.activeElement){var s=ut??W;if(a.has(s))return}x(e)&&n===ee(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function It(e,t,r=t){se(e,"change",a=>{var n=a?e.defaultChecked:e.checked;r(n)}),(k&&e.defaultChecked!==e.checked||be(t)==null)&&r(e.checked),_e(()=>{var a=t();e.checked=!!a})}function x(e){var t=e.type;return t==="number"||t==="range"}function ee(e){return e===""?null:+e}const N=dt({id:"unknown",name:"Unknown Control Set",currentPath:"",controls:[],mappings:[],families:[],totalControls:0,totalMappings:0,isConnected:!1});class kt{ws=null;reconnectTimer=null;reconnectAttempts=0;maxReconnectAttempts=5;reconnectDelay=1e3;connect(){if(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN)){console.log("WebSocket already connected or connecting");return}const t=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.hostname==="localhost"?"localhost:3000":window.location.host,a=`${t}//${r}/ws`;console.log("Connecting to WebSocket:",a);try{this.ws=new WebSocket(a),this.ws.onopen=()=>{console.log("WebSocket connected"),this.reconnectAttempts=0,this.reconnectDelay=1e3},this.ws.onmessage=n=>{try{const s=JSON.parse(n.data);this.handleMessage(s)}catch(s){console.error("Failed to parse WebSocket message:",s)}},this.ws.onerror=n=>{console.error("WebSocket error:",n)},this.ws.onclose=()=>{console.log("WebSocket disconnected"),N.update(n=>({...n,isConnected:!1})),this.ws=null,this.scheduleReconnect()}}catch(n){console.error("Failed to create WebSocket:",n),this.scheduleReconnect()}}handleMessage(t){switch(console.log("WebSocket message received:",t),t.type){case"connected":console.log("WebSocket connection confirmed"),N.update(r=>({...r,isConnected:!0}));break;case"state-update":console.log("State update received"),t.payload&&N.set({...t.payload,isConnected:!0,isSwitchingControlSet:!1});break;case"metadata-update":console.log("Metadata update received"),t.payload&&N.update(r=>({...r,...t.payload,isConnected:!0,isSwitchingControlSet:!1}));break;case"controls-update":console.log("Controls update received"),t.payload&&N.update(r=>({...r,controls:t.payload}));break;case"mappings-update":console.log("Mappings update received"),t.payload&&N.update(r=>({...r,mappings:t.payload}));break;case"control-details":console.log("Control details received:",t.payload),t.payload&&window.dispatchEvent(new CustomEvent("control-details",{detail:t.payload}));break;case"control-sets-list":console.log("Control sets list received"),t.payload&&window.dispatchEvent(new CustomEvent("control-sets-list",{detail:t.payload}));break;case"control-updated":console.log("Control updated successfully:",t.payload);break;case"mapping-created":case"mapping-updated":case"mapping-deleted":console.log(`Mapping operation successful: ${t.type}`,t.payload),window.dispatchEvent(new CustomEvent("mappings-changed",{detail:t.payload}));break;case"error":console.error("WebSocket error:",t.payload);break;default:console.warn("Unknown WebSocket message type:",t.type)}}scheduleReconnect(){if(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectAttempts>=this.maxReconnectAttempts){console.error("Max reconnection attempts reached");return}this.reconnectAttempts++,console.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${this.reconnectDelay}ms`),this.reconnectTimer=window.setTimeout(()=>{this.connect()},this.reconnectDelay),this.reconnectDelay=Math.min(this.reconnectDelay*2,3e4)}disconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(),this.ws=null),N.update(t=>({...t,isConnected:!1}))}isConnected(){return this.ws!==null&&this.ws.readyState===WebSocket.OPEN}async sendCommand(t,r){if(console.log(`Sending WebSocket command: ${t}`,r),!this.ws||this.ws.readyState!==WebSocket.OPEN){console.log("WebSocket not ready, waiting for connection...");try{await this.waitForConnection()}catch(a){throw console.error("Failed to connect:",a),a}}if(this.ws&&this.ws.readyState===WebSocket.OPEN){const a=JSON.stringify({type:t,payload:r});console.log("Sending message:",a),this.ws.send(a)}else{const a=new Error("WebSocket not connected after waiting");throw console.error(a),a}}waitForConnection(t=5e3){return new Promise((r,a)=>{const n=Date.now(),s=()=>{this.ws&&this.ws.readyState===WebSocket.OPEN?r():Date.now()-n>t?a(new Error("WebSocket connection timeout")):setTimeout(s,100)};s()})}async updateControl(t){return this.sendCommand("update-control",t)}async createMapping(t){return this.sendCommand("create-mapping",t)}async updateMapping(t){return this.sendCommand("update-mapping",t)}async deleteMapping(t){return this.sendCommand("delete-mapping",{uuid:t})}async switchControlSet(t){return N.update(r=>({...r,isSwitchingControlSet:!0})),this.sendCommand("switch-control-set",{path:t})}async getControlDetails(t){return this.sendCommand("get-control",{id:t})}async scanControlSets(){return this.sendCommand("scan-control-sets")}send(t){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(t)):console.warn("WebSocket not connected, cannot send message")}}const Dt=new kt;export{Ot as a,Y as b,Wt as c,Nt as d,Tt as e,N as f,bt as g,yt as h,mt as i,It as j,Mt as r,gt as s,Dt as w};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l,m,t as p,E as _,v,w as h,x as s,y as b,z as x,A as y}from"./B_3ksxz5.js";function g(d,i,u){l&&m();var r=d,n,e,a=null,f=null;function t(){e&&(y(e),e=null),a&&(a.lastChild.remove(),r.before(a),a=null),e=f,f=null}p(()=>{if(n!==(n=i())){var c=b();if(n){var o=r;c&&(a=document.createDocumentFragment(),a.append(o=v()),e&&s.skipped_effects.add(e)),f=h(()=>u(o,n))}c?s.add_callback(t):t()}},_),l&&(r=x)}export{g as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var Qe=Array.isArray,yn=Array.prototype.indexOf,bn=Array.from,$e=Object.defineProperty,we=Object.getOwnPropertyDescriptor,gn=Object.getOwnPropertyDescriptors,wn=Object.prototype,mn=Array.prototype,St=Object.getPrototypeOf,dt=Object.isExtensible;function Mr(e){return typeof e=="function"}const X=()=>{};function Lr(e){return e()}function et(e){for(var t=0;t<e.length;t++)e[t]()}function En(){var e,t,n=new Promise((r,s)=>{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Fr(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const k=2,tt=4,Fe=8,ve=16,F=32,se=64,kt=128,R=256,Ce=512,m=1024,C=2048,j=4096,B=8192,de=16384,nt=32768,rt=65536,pt=1<<17,Tn=1<<18,Ae=1<<19,Ot=1<<20,We=1<<21,st=1<<22,Z=1<<23,J=Symbol("$state"),jr=Symbol("legacy props"),qr=Symbol(""),at=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},it=3,Ie=8;function An(){throw new Error("https://svelte.dev/e/await_outside_boundary")}function pe(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function xn(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Sn(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function kn(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function On(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Rn(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Nn(){throw new Error("https://svelte.dev/e/get_abort_signal_outside_reaction")}function Cn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Rt(e){throw new Error("https://svelte.dev/e/lifecycle_legacy_only")}function Yr(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function In(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Pn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Dn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}const Hr=1,Ur=2,Br=4,$r=8,Wr=16,Gr=1,Kr=2,zr=4,Xr=8,Zr=16,Jr=4,Mn=1,Ln=2,Nt="[",Fn="[!",Ct="]",oe={},E=Symbol(),Qr="http://www.w3.org/1999/xhtml",es="@attach";function je(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function ts(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}let g=!1;function Re(e){g=e}let b;function $(e){if(e===null)throw je(),oe;return b=e}function ut(){return $(K(b))}function ns(e){if(g){if(K(b)!==null)throw je(),oe;b=e}}function rs(e=1){if(g){for(var t=e,n=b;t--;)n=K(n);b=n}}function ss(){for(var e=0,t=b;;){if(t.nodeType===Ie){var n=t.data;if(n===Ct){if(e===0)return t;e-=1}else(n===Nt||n===Fn)&&(e+=1)}var r=K(t);t.remove(),t=r}}function as(e){if(!e||e.nodeType!==Ie)throw je(),oe;return e.data}function It(e){return e===this.v}function Pt(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Dt(e){return!Pt(e,this.v)}let xe=!1;function is(){xe=!0}let y=null;function Pe(e){y=e}function jn(e){return qe().get(e)}function qn(e,t){return qe().set(e,t),t}function Vn(e){return qe().has(e)}function Yn(){return qe()}function Hn(e,t=!1,n){y={p:y,c:null,e:null,s:e,x:null,l:xe&&!t?{s:null,u:null,$:[]}:null}}function Un(e){var t=y,n=t.e;if(n!==null){t.e=null;for(var r of n)Zt(r)}return y=t.p,{}}function Se(){return!xe||y!==null&&y.l===null}function qe(e){return y===null&&pe(),y.c??=new Map(Bn(y)||void 0)}function Bn(e){let t=e.p;for(;t!==null;){const n=t.c;if(n!==null)return n;t=t.p}return null}const $n=new WeakMap;function Wn(e){var t=h;if(t===null)return p.f|=Z,e;if((t.f&nt)===0){if((t.f&kt)===0)throw!t.parent&&e instanceof Error&&Mt(e),e;t.b.error(e)}else lt(e,t)}function lt(e,t){for(;t!==null;){if((t.f&kt)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e instanceof Error&&Mt(e),e}function Mt(e){const t=$n.get(e);t&&($e(e,"message",{value:t.message}),$e(e,"stack",{value:t.stack}))}const Gn=typeof requestIdleCallback>"u"?e=>setTimeout(e,1):requestIdleCallback;let me=[],Ee=[];function Lt(){var e=me;me=[],et(e)}function Ft(){var e=Ee;Ee=[],et(e)}function jt(e){me.length===0&&queueMicrotask(Lt),me.push(e)}function us(e){Ee.length===0&&Gn(Ft),Ee.push(e)}function Kn(){me.length>0&&Lt(),Ee.length>0&&Ft()}function zn(){for(var e=h.b;e!==null&&!e.has_pending_snippet();)e=e.parent;return e===null&&An(),e}function ft(e){var t=k|C,n=p!==null&&(p.f&k)!==0?p:null;return h===null||n!==null&&(n.f&R)!==0?t|=R:h.f|=Ae,{ctx:y,deps:null,effects:null,equals:It,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:n??h,ac:null}}function Xn(e,t){let n=h;n===null&&xn();var r=n.b,s=void 0,a=ct(E),i=null,f=!p;return ir(()=>{try{var u=e();i&&Promise.resolve(u).catch(()=>{})}catch(_){u=Promise.reject(_)}var l=()=>u;s=i?.then(l,l)??Promise.resolve(u),i=s;var o=w,c=r.pending;f&&(r.update_pending_count(1),c||o.increment());const v=(_,d=void 0)=>{i=null,c||o.activate(),d?d!==at&&(a.f|=Z,Me(a,d)):((a.f&Z)!==0&&(a.f^=Z),Me(a,_)),f&&(r.update_pending_count(-1),c||o.decrement()),Yt()};if(s.then(v,_=>v(null,_||"unknown")),o)return()=>{queueMicrotask(()=>o.neuter())}}),new Promise(u=>{function l(o){function c(){o===s?u(a):l(s)}o.then(c,c)}l(s)})}function ls(e){const t=ft(e);return an(t),t}function Zn(e){const t=ft(e);return t.equals=Dt,t}function qt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)W(t[n])}}function Jn(e){for(var t=e.parent;t!==null;){if((t.f&k)===0)return t;t=t.parent}return null}function ot(e){var t,n=h;G(Jn(e));try{qt(e),t=on(e)}finally{G(n)}return t}function Vt(e){var t=ot(e);if(e.equals(t)||(e.v=t,e.wv=ln()),!he){var n=(H||(e.f&R)!==0)&&e.deps!==null?j:m;x(e,n)}}function Qn(e,t,n){const r=Se()?ft:Zn;if(t.length===0){n(e.map(r));return}var s=w,a=h,i=er(),f=zn();Promise.all(t.map(u=>Xn(u))).then(u=>{s?.activate(),i();try{n([...e.map(r),...u])}catch(l){(a.f&de)===0&<(l,a)}s?.deactivate(),Yt()}).catch(u=>{f.error(u)})}function er(){var e=h,t=p,n=y,r=w;return function(){G(e),D(t),Pe(n),r?.activate()}}function Yt(){G(null),D(null),Pe(null)}const He=new Set;let w=null,Ue=null,ht=new Set,De=[];function Ht(){const e=De.shift();De.length>0&&queueMicrotask(Ht),e()}let te=[],Ve=null,Ge=!1,Ne=!1;class ne{current=new Map;#l=new Map;#s=new Set;#e=0;#f=null;#o=!1;#n=[];#a=[];#r=[];#t=[];#i=[];#c=[];#_=[];skipped_effects=new Set;process(t){te=[],Ue=null;for(const s of t)this.#d(s);if(this.#n.length===0&&this.#e===0){this.#v();var n=this.#r,r=this.#t;this.#r=[],this.#t=[],this.#i=[],Ue=w,w=null,yt(n),yt(r),w===null?w=this:He.delete(this),this.#f?.resolve()}else this.#u(this.#r),this.#u(this.#t),this.#u(this.#i);for(const s of this.#n)ee(s);for(const s of this.#a)ee(s);this.#n=[],this.#a=[]}#d(t){t.f^=m;for(var n=t.first;n!==null;){var r=n.f,s=(r&(F|se))!==0,a=s&&(r&m)!==0,i=a||(r&B)!==0||this.skipped_effects.has(n);if(!i&&n.fn!==null){if(s)n.f^=m;else if((r&tt)!==0)this.#t.push(n);else if((r&m)===0)if((r&st)!==0){var f=n.b?.pending?this.#a:this.#n;f.push(n)}else ke(n)&&((n.f&ve)!==0&&this.#i.push(n),ee(n));var u=n.first;if(u!==null){n=u;continue}}var l=n.parent;for(n=n.next;n===null&&l!==null;)n=l.next,l=l.parent}}#u(t){for(const n of t)((n.f&C)!==0?this.#c:this.#_).push(n),x(n,m);t.length=0}capture(t,n){this.#l.has(t)||this.#l.set(t,n),this.current.set(t,t.v)}activate(){w=this}deactivate(){w=null,Ue=null;for(const t of ht)if(ht.delete(t),t(),w!==null)break}neuter(){this.#o=!0}flush(){te.length>0?Ke():this.#v(),w===this&&(this.#e===0&&He.delete(this),this.deactivate())}#v(){if(!this.#o)for(const t of this.#s)t();this.#s.clear()}increment(){this.#e+=1}decrement(){if(this.#e-=1,this.#e===0){for(const t of this.#c)x(t,C),_e(t);for(const t of this.#_)x(t,j),_e(t);this.#r=[],this.#t=[],this.flush()}else this.deactivate()}add_callback(t){this.#s.add(t)}settled(){return(this.#f??=En()).promise}static ensure(){if(w===null){const t=w=new ne;He.add(w),Ne||ne.enqueue(()=>{w===t&&t.flush()})}return w}static enqueue(t){De.length===0&&queueMicrotask(Ht),De.unshift(t)}}function Ut(e){var t=Ne;Ne=!0;try{var n;for(e&&(Ke(),n=e());;){if(Kn(),te.length===0&&(w?.flush(),te.length===0))return Ve=null,n;Ke()}}finally{Ne=t}}function Ke(){var e=ce;Ge=!0;try{var t=0;for(mt(!0);te.length>0;){var n=ne.ensure();if(t++>1e3){var r,s;tr()}n.process(te),U.clear()}}finally{Ge=!1,mt(e),Ve=null}}function tr(){try{Rn()}catch(e){lt(e,Ve)}}let z=null;function yt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if((r.f&(de|B))===0&&ke(r)&&(z=[],ee(r),r.deps===null&&r.first===null&&r.nodes_start===null&&(r.teardown===null&&r.ac===null?nn(r):r.fn=null),z?.length>0)){U.clear();for(const s of z)ee(s);z=[]}}z=null}}function _e(e){for(var t=Ve=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ge&&t===h&&(n&ve)!==0)return;if((n&(se|F))!==0){if((n&m)===0)return;t.f^=m}}te.push(t)}const U=new Map;function ct(e,t){var n={f:0,v:e,reactions:null,equals:It,rv:0,wv:0};return n}function V(e,t){const n=ct(e);return an(n),n}function fs(e,t=!1,n=!0){const r=ct(e);return t||(r.equals=Dt),xe&&n&&y!==null&&y.l!==null&&(y.l.s??=[]).push(r),r}function Y(e,t,n=!1){p!==null&&(!I||(p.f&pt)!==0)&&Se()&&(p.f&(k|ve|st|pt))!==0&&!L?.includes(e)&&Dn();let r=n?be(t):t;return Me(e,r)}function Me(e,t){if(!e.equals(t)){var n=e.v;he?U.set(e,t):U.set(e,n),e.v=t;var r=ne.ensure();r.capture(e,n),(e.f&k)!==0&&((e.f&C)!==0&&ot(e),x(e,(e.f&R)===0?m:j)),e.wv=ln(),Bt(e,C),Se()&&h!==null&&(h.f&m)!==0&&(h.f&(F|se))===0&&(O===null?vr([e]):O.push(e))}return t}function os(e,t=1){var n=fe(e),r=t===1?n++:n--;return Y(e,n),r}function Be(e){Y(e,e.v+1)}function Bt(e,t){var n=e.reactions;if(n!==null)for(var r=Se(),s=n.length,a=0;a<s;a++){var i=n[a],f=i.f;if(!(!r&&i===h)){var u=(f&C)===0;u&&x(i,t),(f&k)!==0?Bt(i,j):u&&((f&ve)!==0&&z!==null&&z.push(i),_e(i))}}}function be(e){if(typeof e!="object"||e===null||J in e)return e;const t=St(e);if(t!==wn&&t!==mn)return e;var n=new Map,r=Qe(e),s=V(0),a=Q,i=f=>{if(Q===a)return f();var u=p,l=Q;D(null),Tt(a);var o=f();return D(u),Tt(l),o};return r&&n.set("length",V(e.length)),new Proxy(e,{defineProperty(f,u,l){(!("value"in l)||l.configurable===!1||l.enumerable===!1||l.writable===!1)&&In();var o=n.get(u);return o===void 0?o=i(()=>{var c=V(l.value);return n.set(u,c),c}):Y(o,l.value,!0),!0},deleteProperty(f,u){var l=n.get(u);if(l===void 0){if(u in f){const o=i(()=>V(E));n.set(u,o),Be(s)}}else Y(l,E),Be(s);return!0},get(f,u,l){if(u===J)return e;var o=n.get(u),c=u in f;if(o===void 0&&(!c||we(f,u)?.writable)&&(o=i(()=>{var _=be(c?f[u]:E),d=V(_);return d}),n.set(u,o)),o!==void 0){var v=fe(o);return v===E?void 0:v}return Reflect.get(f,u,l)},getOwnPropertyDescriptor(f,u){var l=Reflect.getOwnPropertyDescriptor(f,u);if(l&&"value"in l){var o=n.get(u);o&&(l.value=fe(o))}else if(l===void 0){var c=n.get(u),v=c?.v;if(c!==void 0&&v!==E)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return l},has(f,u){if(u===J)return!0;var l=n.get(u),o=l!==void 0&&l.v!==E||Reflect.has(f,u);if(l!==void 0||h!==null&&(!o||we(f,u)?.writable)){l===void 0&&(l=i(()=>{var v=o?be(f[u]):E,_=V(v);return _}),n.set(u,l));var c=fe(l);if(c===E)return!1}return o},set(f,u,l,o){var c=n.get(u),v=u in f;if(r&&u==="length")for(var _=l;_<c.v;_+=1){var d=n.get(_+"");d!==void 0?Y(d,E):_ in f&&(d=i(()=>V(E)),n.set(_+"",d))}if(c===void 0)(!v||we(f,u)?.writable)&&(c=i(()=>V(void 0)),Y(c,be(l)),n.set(u,c));else{v=c.v!==E;var T=i(()=>be(l));Y(c,T)}var ae=Reflect.getOwnPropertyDescriptor(f,u);if(ae?.set&&ae.set.call(o,l),!v){if(r&&typeof u=="string"){var Oe=n.get("length"),q=Number(u);Number.isInteger(q)&&q>=Oe.v&&Y(Oe,q+1)}Be(s)}return!0},ownKeys(f){fe(s);var u=Reflect.ownKeys(f).filter(c=>{var v=n.get(c);return v===void 0||v.v!==E});for(var[l,o]of n)o.v!==E&&!(l in f)&&u.push(l);return u},setPrototypeOf(){Pn()}})}function bt(e){try{if(e!==null&&typeof e=="object"&&J in e)return e[J]}catch{}return e}function cs(e,t){return Object.is(bt(e),bt(t))}var gt,$t,Wt,Gt;function ze(){if(gt===void 0){gt=window,$t=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Wt=we(t,"firstChild").get,Gt=we(t,"nextSibling").get,dt(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),dt(n)&&(n.__t=void 0)}}function re(e=""){return document.createTextNode(e)}function P(e){return Wt.call(e)}function K(e){return Gt.call(e)}function _s(e,t){if(!g)return P(e);var n=P(b);if(n===null)n=b.appendChild(re());else if(t&&n.nodeType!==it){var r=re();return n?.before(r),$(r),r}return $(n),n}function vs(e,t){if(!g){var n=P(e);return n instanceof Comment&&n.data===""?K(n):n}return b}function ds(e,t=1,n=!1){let r=g?b:e;for(var s;t--;)s=r,r=K(r);if(!g)return r;if(n&&r?.nodeType!==it){var a=re();return r===null?s?.after(a):r.before(a),$(a),a}return $(r),r}function Kt(e){e.textContent=""}function ps(){return!1}function hs(e,t){if(t){const n=document.body;e.autofocus=!0,jt(()=>{document.activeElement===n&&e.focus()})}}function ys(e){g&&P(e)!==null&&Kt(e)}let wt=!1;function nr(){wt||(wt=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ye(e){var t=p,n=h;D(null),G(null);try{return e()}finally{D(t),G(n)}}function bs(e,t,n,r=n){e.addEventListener(t,()=>Ye(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),nr()}function zt(e){h===null&&p===null&&On(),p!==null&&(p.f&R)!==0&&h===null&&kn(),he&&Sn()}function rr(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function M(e,t,n,r=!0){var s=h;s!==null&&(s.f&B)!==0&&(e|=B);var a={ctx:y,deps:null,nodes_start:null,nodes_end:null,f:e|C,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(n)try{ee(a),a.f|=nt}catch(u){throw W(a),u}else t!==null&&_e(a);if(r){var i=a;if(n&&i.deps===null&&i.teardown===null&&i.nodes_start===null&&i.first===i.last&&(i.f&Ae)===0&&(i=i.first),i!==null&&(i.parent=s,s!==null&&rr(i,s),p!==null&&(p.f&k)!==0&&(e&se)===0)){var f=p;(f.effects??=[]).push(i)}}return a}function Xt(e){const t=M(Fe,null,!1);return x(t,m),t.teardown=e,t}function sr(e){zt();var t=h.f,n=!p&&(t&F)!==0&&(t&nt)===0;if(n){var r=y;(r.e??=[]).push(e)}else return Zt(e)}function Zt(e){return M(tt|Ot,e,!1)}function gs(e){return zt(),M(Fe|Ot,e,!0)}function ar(e){ne.ensure();const t=M(se|Ae,e,!0);return(n={})=>new Promise(r=>{n.outro?or(t,()=>{W(t),r(void 0)}):(W(t),r(void 0))})}function ws(e){return M(tt,e,!1)}function ms(e,t){var n=y,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=Jt(()=>{e(),!r.ran&&(r.ran=!0,ye(t))})}function Es(){var e=y;Jt(()=>{for(var t of e.l.$){t.deps();var n=t.effect;(n.f&m)!==0&&x(n,j),ke(n)&&ee(n),t.ran=!1}})}function ir(e){return M(st|Ae,e,!0)}function Jt(e,t=0){return M(Fe|t,e,!0)}function Ts(e,t=[],n=[]){Qn(t,n,r=>{M(Fe,()=>e(...r.map(fe)),!0)})}function ur(e,t=0){var n=M(ve|t,e,!0);return n}function Qt(e,t=!0){return M(F|Ae,e,!0,t)}function en(e){var t=e.teardown;if(t!==null){const n=he,r=p;Et(!0),D(null);try{t.call(null)}finally{Et(n),D(r)}}}function tn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&Ye(()=>{s.abort(at)});var r=n.next;(n.f&se)!==0?n.parent=null:W(n,t),n=r}}function lr(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&F)===0&&W(t),t=n}}function W(e,t=!0){var n=!1;(t||(e.f&Tn)!==0)&&e.nodes_start!==null&&e.nodes_end!==null&&(fr(e.nodes_start,e.nodes_end),n=!0),tn(e,t&&!n),Le(e,0),x(e,de);var r=e.transitions;if(r!==null)for(const a of r)a.stop();en(e);var s=e.parent;s!==null&&s.first!==null&&nn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=e.ac=null}function fr(e,t){for(;e!==null;){var n=e===t?null:K(e);e.remove(),e=n}}function nn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function or(e,t){var n=[];rn(e,n,!0),cr(n,()=>{W(e),t&&t()})}function cr(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var s of e)s.out(r)}else t()}function rn(e,t,n){if((e.f&B)===0){if(e.f^=B,e.transitions!==null)for(const i of e.transitions)(i.is_global||n)&&t.push(i);for(var r=e.first;r!==null;){var s=r.next,a=(r.f&rt)!==0||(r.f&F)!==0;rn(r,t,a?n:!1),r=s}}}function As(e){sn(e,!0)}function sn(e,t){if((e.f&B)!==0){e.f^=B,(e.f&m)===0&&(x(e,C),_e(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&rt)!==0||(n.f&F)!==0;sn(n,s?t:!1),n=r}if(e.transitions!==null)for(const a of e.transitions)(a.is_global||t)&&a.in()}}let le=null;function _r(e){var t=le;try{if(le=new Set,ye(e),t!==null)for(var n of le)t.add(n);return le}finally{le=t}}function xs(e){for(var t of _r(e))Me(t,t.v)}let ce=!1;function mt(e){ce=e}let he=!1;function Et(e){he=e}let p=null,I=!1;function D(e){p=e}let h=null;function G(e){h=e}let L=null;function an(e){p!==null&&(L===null?L=[e]:L.push(e))}let A=null,S=0,O=null;function vr(e){O=e}let un=1,Te=0,Q=Te;function Tt(e){Q=e}let H=!1;function ln(){return++un}function ke(e){var t=e.f;if((t&C)!==0)return!0;if((t&j)!==0){var n=e.deps,r=(t&R)!==0;if(n!==null){var s,a,i=(t&Ce)!==0,f=r&&h!==null&&!H,u=n.length;if((i||f)&&(h===null||(h.f&de)===0)){var l=e,o=l.parent;for(s=0;s<u;s++)a=n[s],(i||!a?.reactions?.includes(l))&&(a.reactions??=[]).push(l);i&&(l.f^=Ce),f&&o!==null&&(o.f&R)===0&&(l.f^=R)}for(s=0;s<u;s++)if(a=n[s],ke(a)&&Vt(a),a.wv>e.wv)return!0}(!r||h!==null&&!H)&&x(e,m)}return!1}function fn(e,t,n=!0){var r=e.reactions;if(r!==null&&!L?.includes(e))for(var s=0;s<r.length;s++){var a=r[s];(a.f&k)!==0?fn(a,t,!1):t===a&&(n?x(a,C):(a.f&m)!==0&&x(a,j),_e(a))}}function on(e){var t=A,n=S,r=O,s=p,a=H,i=L,f=y,u=I,l=Q,o=e.f;A=null,S=0,O=null,H=(o&R)!==0&&(I||!ce||p===null),p=(o&(F|se))===0?e:null,L=null,Pe(e.ctx),I=!1,Q=++Te,e.ac!==null&&(Ye(()=>{e.ac.abort(at)}),e.ac=null);try{e.f|=We;var c=e.fn,v=c(),_=e.deps;if(A!==null){var d;if(Le(e,S),_!==null&&S>0)for(_.length=S+A.length,d=0;d<A.length;d++)_[S+d]=A[d];else e.deps=_=A;if(!H||(o&k)!==0&&e.reactions!==null)for(d=S;d<_.length;d++)(_[d].reactions??=[]).push(e)}else _!==null&&S<_.length&&(Le(e,S),_.length=S);if(Se()&&O!==null&&!I&&_!==null&&(e.f&(k|j|C))===0)for(d=0;d<O.length;d++)fn(O[d],e);return s!==null&&s!==e&&(Te++,O!==null&&(r===null?r=O:r.push(...O))),(e.f&Z)!==0&&(e.f^=Z),v}catch(T){return Wn(T)}finally{e.f^=We,A=t,S=n,O=r,p=s,H=a,L=i,Pe(f),I=u,Q=l}}function dr(e,t){let n=t.reactions;if(n!==null){var r=yn.call(n,e);if(r!==-1){var s=n.length-1;s===0?n=t.reactions=null:(n[r]=n[s],n.pop())}}n===null&&(t.f&k)!==0&&(A===null||!A.includes(t))&&(x(t,j),(t.f&(R|Ce))===0&&(t.f^=Ce),qt(t),Le(t,0))}function Le(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)dr(e,n[r])}function ee(e){var t=e.f;if((t&de)===0){x(e,m);var n=h,r=ce;h=e,ce=!0;try{(t&ve)!==0?lr(e):tn(e),en(e);var s=on(e);e.teardown=typeof s=="function"?s:null,e.wv=un;var a}finally{ce=r,h=n}}}async function pr(){await Promise.resolve(),Ut()}function hr(){return ne.ensure().settled()}function fe(e){var t=e.f,n=(t&k)!==0;if(le?.add(e),p!==null&&!I){var r=h!==null&&(h.f&de)!==0;if(!r&&!L?.includes(e)){var s=p.deps;if((p.f&We)!==0)e.rv<Te&&(e.rv=Te,A===null&&s!==null&&s[S]===e?S++:A===null?A=[e]:(!H||!A.includes(e))&&A.push(e));else{(p.deps??=[]).push(e);var a=e.reactions;a===null?e.reactions=[p]:a.includes(p)||a.push(p)}}}else if(n&&e.deps===null&&e.effects===null){var i=e,f=i.parent;f!==null&&(f.f&R)===0&&(i.f^=R)}if(he){if(U.has(e))return U.get(e);if(n){i=e;var u=i.v;return((i.f&m)===0&&i.reactions!==null||cn(i))&&(u=ot(i)),U.set(i,u),u}}else n&&(i=e,ke(i)&&Vt(i));if((e.f&Z)!==0)throw e.v;return e.v}function cn(e){if(e.v===E)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(U.has(t)||(t.f&k)!==0&&cn(t))return!0;return!1}function ye(e){var t=I;try{return I=!0,e()}finally{I=t}}const yr=-7169;function x(e,t){e.f=e.f&yr|t}function Ss(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(J in e)Xe(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&J in n&&Xe(n)}}}function Xe(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{Xe(e[r],t)}catch{}const n=St(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=gn(n);for(let s in r){const a=r[s].get;if(a)try{a.call(e)}catch{}}}}}function ks(e){return e.endsWith("capture")&&e!=="gotpointercapture"&&e!=="lostpointercapture"}const br=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function Os(e){return br.includes(e)}const gr={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function Rs(e){return e=e.toLowerCase(),gr[e]??e}const wr=["touchstart","touchmove"];function mr(e){return wr.includes(e)}const _n=new Set,Ze=new Set;function Er(e,t,n,r={}){function s(a){if(r.capture||ge.call(t,a),!a.cancelBubble)return Ye(()=>n?.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?jt(()=>{t.addEventListener(e,s,r)}):t.addEventListener(e,s,r),s}function Ns(e,t,n,r,s){var a={capture:r,passive:s},i=Er(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Xt(()=>{t.removeEventListener(e,i,a)})}function Cs(e){for(var t=0;t<e.length;t++)_n.add(e[t]);for(var n of Ze)n(e)}let At=null;function ge(e){var t=this,n=t.ownerDocument,r=e.type,s=e.composedPath?.()||[],a=s[0]||e.target;At=e;var i=0,f=At===e&&e.__root;if(f){var u=s.indexOf(f);if(u!==-1&&(t===document||t===window)){e.__root=t;return}var l=s.indexOf(t);if(l===-1)return;u<=l&&(i=u)}if(a=s[i]||e.target,a!==t){$e(e,"currentTarget",{configurable:!0,get(){return a||n}});var o=p,c=h;D(null),G(null);try{for(var v,_=[];a!==null;){var d=a.assignedSlot||a.parentNode||a.host||null;try{var T=a["__"+r];if(T!=null&&(!a.disabled||e.target===a))if(Qe(T)){var[ae,...Oe]=T;ae.apply(a,[e,...Oe])}else T.call(a,e)}catch(q){v?_.push(q):v=q}if(e.cancelBubble||d===t||d===null)break;a=d}if(v){for(let q of _)queueMicrotask(()=>{throw q});throw v}}finally{e.__root=t,delete e.currentTarget,D(o),G(c)}}}function _t(e){var t=document.createElement("template");return t.innerHTML=e.replaceAll("<!>","<!---->"),t.content}function N(e,t){var n=h;n.nodes_start===null&&(n.nodes_start=e,n.nodes_end=t)}function Is(e,t){var n=(t&Mn)!==0,r=(t&Ln)!==0,s,a=!e.startsWith("<!>");return()=>{if(g)return N(b,null),b;s===void 0&&(s=_t(a?e:"<!>"+e),n||(s=P(s)));var i=r||$t?document.importNode(s,!0):s.cloneNode(!0);if(n){var f=P(i),u=i.lastChild;N(f,u)}else N(i,i);return i}}function Tr(e,t,n="svg"){var r=!e.startsWith("<!>"),s=`<${n}>${r?e:"<!>"+e}</${n}>`,a;return()=>{if(g)return N(b,null),b;if(!a){var i=_t(s),f=P(i);a=P(f)}var u=a.cloneNode(!0);return N(u,u),u}}function Ps(e,t){return Tr(e,t,"svg")}function Ds(e=""){if(!g){var t=re(e+"");return N(t,t),t}var n=b;return n.nodeType!==it&&(n.before(n=re()),$(n)),N(n,n),n}function Ms(){if(g)return N(b,null),b;var e=document.createDocumentFragment(),t=document.createComment(""),n=re();return e.append(t,n),N(t,n),e}function Ls(e,t){if(g){h.nodes_end=b,ut();return}e!==null&&e.before(t)}let xt=!0;function Fs(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=n+"")}function vn(e,t){return dn(e,t)}function Ar(e,t){ze(),t.intro=t.intro??!1;const n=t.target,r=g,s=b;try{for(var a=P(n);a&&(a.nodeType!==Ie||a.data!==Nt);)a=K(a);if(!a)throw oe;Re(!0),$(a),ut();const i=dn(e,{...t,anchor:a});if(b===null||b.nodeType!==Ie||b.data!==Ct)throw je(),oe;return Re(!1),i}catch(i){if(i instanceof Error&&i.message.split(`
|
|
2
|
+
`).some(f=>f.startsWith("https://svelte.dev/e/")))throw i;return i!==oe&&console.warn("Failed to hydrate: ",i),t.recover===!1&&Cn(),ze(),Kt(n),Re(!1),vn(e,t)}finally{Re(r),$(s)}}const ie=new Map;function dn(e,{target:t,anchor:n,props:r={},events:s,context:a,intro:i=!0}){ze();var f=new Set,u=c=>{for(var v=0;v<c.length;v++){var _=c[v];if(!f.has(_)){f.add(_);var d=mr(_);t.addEventListener(_,ge,{passive:d});var T=ie.get(_);T===void 0?(document.addEventListener(_,ge,{passive:d}),ie.set(_,1)):ie.set(_,T+1)}}};u(bn(_n)),Ze.add(u);var l=void 0,o=ar(()=>{var c=n??t.appendChild(re());return Qt(()=>{if(a){Hn({});var v=y;v.c=a}s&&(r.$$events=s),g&&N(c,null),xt=i,l=e(c,r)||{},xt=!0,g&&(h.nodes_end=b),a&&Un()}),()=>{for(var v of f){t.removeEventListener(v,ge);var _=ie.get(v);--_===0?(document.removeEventListener(v,ge),ie.delete(v)):ie.set(v,_)}Ze.delete(u),c!==n&&c.parentNode?.removeChild(c)}});return Je.set(l,o),l}let Je=new WeakMap;function xr(e,t){const n=Je.get(e);return n?(Je.delete(e),n(t)):Promise.resolve()}function js(e,t,...n){var r=e,s=X,a;ur(()=>{s!==(s=t())&&(a&&(W(a),a=null),a=Qt(()=>s(r,...n)))},rt),g&&(r=b)}function Sr(e){return(t,...n)=>{var r=e(...n),s;if(g)s=b,ut();else{var a=r.render().trim(),i=_t(a);s=P(i),t.before(s)}const f=r.setup?.(s);N(s,s),typeof f=="function"&&Xt(f)}}function pn(e,t,n){if(e==null)return t(void 0),n&&n(void 0),X;const r=ye(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const ue=[];function kr(e,t){return{subscribe:Or(e,t).subscribe}}function Or(e,t=X){let n=null;const r=new Set;function s(f){if(Pt(e,f)&&(e=f,n)){const u=!ue.length;for(const l of r)l[1](),ue.push(l,e);if(u){for(let l=0;l<ue.length;l+=2)ue[l][0](ue[l+1]);ue.length=0}}}function a(f){s(f(e))}function i(f,u=X){const l=[f,u];return r.add(l),r.size===1&&(n=t(s,a)||X),f(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:s,update:a,subscribe:i}}function qs(e,t,n){const r=!Array.isArray(e),s=r?[e]:e;if(!s.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const a=t.length<2;return kr(n,(i,f)=>{let u=!1;const l=[];let o=0,c=X;const v=()=>{if(o)return;c();const d=t(r?l[0]:l,i,f);a?i(d):c=typeof d=="function"?d:X},_=s.map((d,T)=>pn(d,ae=>{l[T]=ae,o&=~(1<<T),u&&v()},()=>{o|=1<<T}));return u=!0,v(),function(){et(_),c(),u=!1}})}function Vs(e){let t;return pn(e,n=>t=n)(),t}function Rr(){return p===null&&Nn(),(p.ac??=new AbortController).signal}function hn(e){y===null&&pe(),xe&&y.l!==null?vt(y).m.push(e):sr(()=>{const t=ye(e);if(typeof t=="function")return t})}function Nr(e){y===null&&pe(),hn(()=>()=>ye(e))}function Cr(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Ir(){const e=y;return e===null&&pe(),(t,n,r)=>{const s=e.s.$$events?.[t];if(s){const a=Qe(s)?s.slice():[s],i=Cr(t,n,r);for(const f of a)f.call(e.x,i);return!i.defaultPrevented}return!0}}function Pr(e){y===null&&pe(),y.l===null&&Rt(),vt(y).b.push(e)}function Dr(e){y===null&&pe(),y.l===null&&Rt(),vt(y).a.push(e)}function vt(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}const Ys=Object.freeze(Object.defineProperty({__proto__:null,afterUpdate:Dr,beforeUpdate:Pr,createEventDispatcher:Ir,createRawSnippet:Sr,flushSync:Ut,getAbortSignal:Rr,getAllContexts:Yn,getContext:jn,hasContext:Vn,hydrate:Ar,mount:vn,onDestroy:Nr,onMount:hn,setContext:qn,settled:hr,tick:pr,unmount:xr,untrack:ye},Symbol.toStringTag,{value:"Module"}));export{zr as $,or as A,y as B,gs as C,et as D,rt as E,Lr as F,Ss as G,ft as H,is as I,Ts as J,Fs as K,as as L,Fn as M,ss as N,$ as O,Re as P,As as Q,X as R,J as S,fs as T,E as U,pn as V,Vs as W,Xt as X,$e as Y,we as Z,Yr as _,vs as a,Os as a$,Zn as a0,be as a1,he as a2,h as a3,de as a4,Xr as a5,xe as a6,Kr as a7,Gr as a8,Zr as a9,Ur as aA,Br as aB,bn as aC,Qe as aD,Me as aE,B as aF,W as aG,Wr as aH,$r as aI,K as aJ,rn as aK,Kt as aL,cr as aM,ts as aN,cs as aO,bs as aP,Qn as aQ,es as aR,ks as aS,Er as aT,hs as aU,Rs as aV,Qr as aW,St as aX,qr as aY,us as aZ,nr as a_,jr as aa,ct as ab,os as ac,G as ad,ms as ae,Es as af,Ps as ag,Ir as ah,Ns as ai,xs as aj,Ms as ak,ls as al,Ds as am,Fr as an,Ar as ao,vn as ap,Ut as aq,xr as ar,pr as as,Cs as at,Nr as au,js as av,P as aw,Ie as ax,Ct as ay,Hr as az,Ls as b,gn as b0,Ue as b1,Or as b2,xt as b3,ve as b4,nt as b5,Jr as b6,Ye as b7,Mr as b8,qs as b9,fr as ba,je as bb,oe as bc,N as bd,_t as be,ys as bf,Ys as bg,_s as c,Y as d,Un as e,Is as f,V as g,fe as h,ws as i,Jt as j,ye as k,g as l,ut as m,rs as n,hn as o,Hn as p,jt as q,ns as r,ds as s,ur as t,sr as u,re as v,Qt as w,w as x,ps as y,b as z};
|