diff --git a/.dockerignore b/.dockerignore
index 8acf18f..08465dc 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -35,6 +35,10 @@ Makefile
*_test.go
*.test
+# Reference code (analysis only)
+evo que funciona*/
+ANALISE-CORRECOES-CAROUSEL-PIX.md
+
# Manager/dist é necessário - serve arquivos estáticos do frontend React
# Não excluir - precisa estar na imagem final para ser acessado via /manager
diff --git a/.env.example b/.env.example
index 831e431..b601db7 100644
--- a/.env.example
+++ b/.env.example
@@ -9,7 +9,7 @@ GLOBAL_API_KEY=429683C4C977415CAAFCCE10F7D57E11
WADEBUG=DEBUG
LOGTYPE=console
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
CONNECT_ON_STARTUP=true
@@ -20,6 +20,15 @@ AMQP_GLOBAL_ENABLED=false
WEBHOOK_URL=https://webhook.site/2e6af2fa-6b04-497f-b4a1-13a905728d83
+# Proxy Configuration
+# PROXY_PROTOCOL can be http, https or socks5. If omitted, it is inferred from
+# the port (1080/2080/42000-43000 → socks5; otherwise http).
+# PROXY_PROTOCOL=http
+# PROXY_HOST=proxy.example.com
+# PROXY_PORT=8080
+# PROXY_USERNAME=user
+# PROXY_PASSWORD=secret
+
# Minio Configuration
MINIO_ENABLED=true
MINIO_ENDPOINT=localhost:9000
diff --git a/.github/ISSUE_TEMPLATE/-en--bug-report.yaml b/.github/ISSUE_TEMPLATE/-en--bug-report.yaml
new file mode 100644
index 0000000..c529699
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/-en--bug-report.yaml
@@ -0,0 +1,89 @@
+name: Bug Report
+description: Create a report to help us improve.
+labels:
+ - bug
+ - en
+body:
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: Welcome!
+ description: |
+ The issue tracker is only for reporting bugs and feature requests.
+ For support questions, please visit:
+ - [Community](https://evolutionfoundation.com.br/community)
+ - [WhatsApp Support](https://wa.me/553196219989)
+
+
+ **DO NOT OPEN AN ISSUE FOR GENERAL SUPPORT QUESTIONS.**
+
+ options:
+ - label: Yes, I have searched for similar issues on [GitHub](https://github.com/EvolutionAPI/evolution-go/issues) and found none.
+ required: true
+
+ - type: textarea
+ attributes:
+ label: What did you do?
+ description: |
+ - Respect the issue template as much as possible.
+ - The title should be short and descriptive.
+ - Explain the conditions that led you to report this issue.
+ - Be clear and concise.
+ placeholder: Describe the problem you encountered in detail.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: What did you expect?
+ placeholder: Describe what you expected to happen.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: What did you observe instead of what you expected?
+ placeholder: Explain what actually happens when you follow the steps above.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Screenshots/Videos
+ placeholder: If possible, add screenshots or videos that illustrate the problem.
+
+ - type: textarea
+ attributes:
+ label: Which version are you using?
+ description: Check the VERSION file or the startup log.
+ placeholder: e.g. 0.6.1
+ validations:
+ required: true
+
+ - type: dropdown
+ id: select
+ attributes:
+ label: What is your environment?
+ options:
+ - Linux
+ - Docker
+ - Mac
+ - Windows
+ - Other
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: If applicable, paste the log output
+ description: Please attach any logs related to the issue.
+ placeholder: Paste the application log here.
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Additional Notes
+ description: Include any other information you think might be useful.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/-en--feature-request.yaml b/.github/ISSUE_TEMPLATE/-en--feature-request.yaml
new file mode 100644
index 0000000..7ce28e2
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/-en--feature-request.yaml
@@ -0,0 +1,62 @@
+name: Feature Request
+description: Suggest ideas for the project.
+labels:
+ - enhancement
+ - en
+body:
+ - type: checkboxes
+ id: terms
+ attributes:
+ label: Welcome!
+ description: '**DO NOT OPEN FOR GENERAL SUPPORT QUESTIONS.**'
+ options:
+ - label: Yes, I have searched for similar requests on [GitHub](https://github.com/EvolutionAPI/evolution-go/issues) and found none.
+ required: true
+
+ - type: dropdown
+ attributes:
+ label: What type of feature?
+ options:
+ - Integration
+ - Functionality
+ - Endpoint
+ - Performance
+ - Other
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: What is the motivation for the request?
+ description: |
+ What problem does the feature seek to solve?
+ Clearly describe the functionality you want implemented.
+ placeholder: Detailed description
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Usage Examples
+ description: Provide specific examples of how this functionality could be used.
+ placeholder: text - image - video - flowcharts
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: How should the feature be developed?
+ description: |
+ Should it be inserted directly into the code?
+ If you have implementation ideas, please share them here.
+ placeholder: Insert feature ideas here
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Additional Notes
+ description: Any other information relevant to your request.
+ placeholder: Insert your observations here.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml b/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml
new file mode 100644
index 0000000..4400a65
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/-pt--reportar-bug.yaml
@@ -0,0 +1,89 @@
+name: Relatório de bug
+description: Crie um relatório para nos ajudar a melhorar.
+labels:
+ - bug
+ - pt-br
+body:
+ - type: checkboxes
+ id: termos
+ attributes:
+ label: Bem-vindo!
+ description: |
+ O rastreador de problemas é apenas para relatar bugs e solicitações de recursos.
+ Para perguntas de suporte, acesse:
+ - [Comunidade](https://evolutionfoundation.com.br/community)
+ - [WhatsApp Suporte](https://wa.me/553196219989)
+
+
+ **NÃO ABRA UM PROBLEMA PARA PERGUNTAS GERAIS DE SUPORTE.**
+
+ options:
+ - label: Sim, pesquisei problemas semelhantes no [GitHub](https://github.com/EvolutionAPI/evolution-go/issues) e não encontrei nenhum.
+ required: true
+
+ - type: textarea
+ attributes:
+ label: O que você fez?
+ description: |
+ - Respeite o modelo de problema tanto quanto possível.
+ - O título deve ser curto e descritivo.
+ - Explique as condições que o levaram a reportar este problema.
+ - Seja claro e conciso.
+ placeholder: Descreva detalhadamente o problema que você encontrou.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: O que você esperava?
+ placeholder: Descreva o que você esperava que acontecesse.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: O que você observou ao invés do que esperava?
+ placeholder: Explique o que realmente acontece quando você segue os passos acima.
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Capturas de Tela/Vídeos
+ placeholder: Se possível, adicione capturas de tela ou vídeos que ilustrem o problema.
+
+ - type: textarea
+ attributes:
+ label: Qual versão você está usando?
+ description: Verifique o arquivo VERSION ou o log de inicialização.
+ placeholder: ex. 0.6.1
+ validations:
+ required: true
+
+ - type: dropdown
+ id: select
+ attributes:
+ label: Qual é o seu ambiente?
+ options:
+ - Linux
+ - Docker
+ - Mac
+ - Windows
+ - Outro
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Se aplicável, cole a saída do log
+ description: Por favor, anexe os logs que possam estar relacionados ao problema.
+ placeholder: Cole aqui o log da aplicação.
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Notas Adicionais
+ description: Inclua qualquer outra informação que possa ser útil.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/-pt--solicitar-recurso.yaml b/.github/ISSUE_TEMPLATE/-pt--solicitar-recurso.yaml
new file mode 100644
index 0000000..6ec7ffc
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/-pt--solicitar-recurso.yaml
@@ -0,0 +1,62 @@
+name: Solicitação de recursos
+description: Sugira ideias para o projeto.
+labels:
+ - enhancement
+ - pt-br
+body:
+ - type: checkboxes
+ id: termos
+ attributes:
+ label: Bem-vindo!
+ description: '**NÃO ABRA PARA PERGUNTAS GERAIS DE SUPORTE.**'
+ options:
+ - label: Sim, pesquisei solicitações semelhantes no [GitHub](https://github.com/EvolutionAPI/evolution-go/issues) e não encontrei nenhum.
+ required: true
+
+ - type: dropdown
+ attributes:
+ label: Qual tipo de recurso?
+ options:
+ - Integração
+ - Funcionalidade
+ - Endpoint
+ - Performance
+ - Outro
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Qual a motivação para a solicitação?
+ description: |
+ Qual problema o recurso busca resolver?
+ Descreva claramente a funcionalidade que você deseja que seja implementada.
+ placeholder: Descrição detalhada
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Exemplos de Uso
+ description: Forneça exemplos específicos de como essa funcionalidade poderia ser utilizada.
+ placeholder: texto - imagem - video - fluxogramas
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Como o recurso deve ser desenvolvido?
+ description: |
+ Deve ser inserido diretamente no código?
+ Se você tem ideias de implementação, por favor compartilhe aqui.
+ placeholder: Insira ideias para o recurso
+ validations:
+ required: false
+
+ - type: textarea
+ attributes:
+ label: Notas Adicionais
+ description: Qualquer outra informação relevante para a sua solicitação.
+ placeholder: Insira aqui as suas observações.
+ validations:
+ required: false
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..7be4e96
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,29 @@
+## Description
+
+
+## Related Issue
+
+Closes #(issue_number)
+
+## Type of Change
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+- [ ] Documentation update
+- [ ] Refactoring (no functional changes)
+- [ ] Performance improvement
+
+## Testing
+- [ ] Manual testing completed
+- [ ] Functionality verified in development environment
+- [ ] No breaking changes introduced
+
+## Screenshots (if applicable)
+
+## Checklist
+- [ ] My code follows the project's style guidelines
+- [ ] I have performed a self-review of my code
+- [ ] I have tested my changes thoroughly
+- [ ] Any dependent changes have been merged and published
+
+## Additional Notes
diff --git a/.github/workflows/publish_docker_image.yml b/.github/workflows/publish_docker_image.yml
index 852fdb5..4551025 100644
--- a/.github/workflows/publish_docker_image.yml
+++ b/.github/workflows/publish_docker_image.yml
@@ -17,6 +17,12 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ - name: Read version
+ id: version
+ run: echo "version=$(cat VERSION 2>/dev/null || echo '0.0.0')" >> $GITHUB_OUTPUT
- name: Docker meta
id: meta
@@ -24,9 +30,8 @@ jobs:
with:
images: evoapicloud/evolution-go
tags: |
- type=ref,event=branch
- type=semver,pattern={{version}}
- type=raw,value=latest,enable={{is_default_branch}}
+ type=raw,value=${{ steps.version.outputs.version }}
+ type=raw,value=latest
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
@@ -44,12 +49,15 @@ jobs:
id: docker_build
uses: docker/build-push-action@v5
with:
+ context: .
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+ build-args: |
+ VERSION=${{ steps.version.outputs.version }}
- name: Image digest
- run: echo ${{ steps.docker_build.outputs.digest }}
\ No newline at end of file
+ run: echo ${{ steps.docker_build.outputs.digest }}
diff --git a/.gitignore b/.gitignore
index 587b9ae..9871eab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,4 @@ coverage.*
.idea/
.vscode/
.DS_Store
-.cursorrules
+evo que funciona botõtes carossel pix etc para analise/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..8cfaa3f
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "whatsmeow-lib"]
+ path = whatsmeow-lib
+ url = https://github.com/EvolutionAPI/whatsmeow.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 031fa45..acceb98 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,41 @@
# Evolution GO - Changelog
+## v0.7.0
+
+**Docker:** `evoapicloud/evolution-go:0.7.0`
+
+### 🆕 New Features
+- **Multi-platform interactive messages** — Buttons, lists and carousel working on Android, iOS and WhatsApp Web/Desktop
+ - **SendButton**: removed `ViewOnceMessage` wrapper that blocked rendering on iOS and WhatsApp Web; `Footer` and `Header` are now conditional
+ - **SendList**: migrated from `InteractiveMessage`/`NativeFlowMessage` to legacy `ListMessage` (native protobuf) for broad compatibility
+ - **SendCarousel**: new endpoint `POST /send/carousel` with cards (image, text, footer, buttons) and automatic JPEG thumbnail generation for instant image loading
+ - `whatsmeow-lib`: added `biz` node for `InteractiveMessage` and pinned `product_list` type on the `biz` node for `ListMessage`
+- **Base64 media support on `/send/media`** — The `url` field on `POST /send/media` now also accepts base64-encoded media. When the value does not start with `http://` or `https://`, it is treated as base64 and decoded; reuses the existing `SendMediaFile` flow
+- **WhatsApp status endpoints** — new `POST /send/status/text` and `POST /send/status/media` publish text/image/video status to `status@broadcast`. Media endpoint supports both JSON (with URL) and multipart/form-data (file upload). Thanks @Eduardo-gato (#15)
+- **Webhook routing for GROUP / NEWSLETTER** — when the primary `MESSAGE` / `SEND_MESSAGE` / `READ_RECEIPT` subscription is absent, events from `@g.us` chats are forwarded to `GROUP` subscribers and events from `@newsletter` chats to `NEWSLETTER` subscribers. Thanks @oismaelash (#18)
+
+### 🔧 Improvements
+- **Proxy protocol** — new optional `protocol` field (and `PROXY_PROTOCOL` env) supporting `http`, `https`, `socks5`. Replaces the hardcoded SOCKS5 dialer with `client.SetProxyAddress`, fixing HTTP-proxy QR pairing (#12). Thanks @TBDevMaster (#13)
+- **WhatsApp Web version cache** — `fetchWhatsAppWebVersion` now caches the result for 1 hour with a mutex instead of issuing one request per instance startup. Thanks @VitorS0uza (#24)
+- **Manager flicker fix** — instance page no longer replaces the list with skeleton cards on every 5s polling cycle (`hasLoaded` flag). Thanks @TBDevMaster (#14), closes #11
+- **`WEBHOOKFILES` → `WEBHOOK_FILES`** — `.env.example`, docker-compose and docs aligned with the env var the runtime actually reads. Thanks @VitorS0uza (#22)
+- **Dependency cleanup** — removed unused `github.com/EvolutionAPI/evo-gate` from `go.mod`
+- **whatsmeow-lib** bumped to `0923702fb`
+- **Telemetry removed** — dropped legacy `pkg/telemetry`
+
+### 🐛 Bug Fixes
+- **`/message/edit`** — was silently ignored because the edit payload used `Conversation` while the original message was sent as `ExtendedTextMessage`. WhatsApp requires matching types; now the edit uses `ExtendedTextMessage` and the response returns the actual server timestamp instead of the zero value. Closes #16
+- **Sticker upload to S3/MinIO** — when `webp.Decode` or `png.Encode` failed, the whole media pipeline aborted and the sticker was lost from the webhook. Now we log a warning and keep the raw `.webp` bytes so the sticker still reaches the bucket. Closes #5
+- **Multipart `/send/media`** — the binary-upload branch silently dropped `mentionAll`, `mentionedJid` and `quoted`. These fields now parse from the form (with `mentionedJid` accepting repeated or comma-separated values) and reach the send service. Closes #2
+
+### ⚠️ Breaking changes
+- **Proxy** — previously all proxies were forced through SOCKS5. If you run SOCKS5 on a non-standard port (anything outside 1080/2080/42000-43000), set `PROXY_PROTOCOL=socks5` in the env or pass `"protocol": "socks5"` in the proxy body explicitly — otherwise the new protocol inference will fall back to HTTP.
+
+### 📝 Docs
+- **README** — updated WhatsApp support number and issue templates
+- **Interactive messages guide** — new `docs/wiki/guias-api/api-interactive.md`
+- **Proxy docs** — environment variables, configuration guide and API reference updated with the new `protocol` field
+
## v0.6.1
### 🆕 New Features
diff --git a/Dockerfile b/Dockerfile
index 8ad0e7a..4c0c7d6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -27,6 +27,7 @@ WORKDIR /app
COPY --from=build /build/server .
COPY --from=build /build/manager/dist ./manager/dist
+COPY --from=build /build/VERSION ./VERSION
ENV TZ=America/Sao_Paulo
diff --git a/LICENSE b/LICENSE
index 2eb13cb..3c78007 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,4 @@
+
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -9,7 +10,8 @@
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
- "Licensor" shall mean the copyright owner or entity granting the License.
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
@@ -34,45 +36,40 @@
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
- (which shall not include communications that are solely written
- by copyright holders to be excluded from the License).
+ (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
- form, that is based upon (or derived from) the Work and for which the
+ form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
- the Work and derivative works thereof.
+ the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
+ submitted to the Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control
- systems, and issue tracking systems that are managed by, or on behalf
- of, the Licensor for the purpose of discussing and improving the Work,
- but excluding communication that is conspicuously marked or otherwise
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
+ on behalf of whom a Contribution has been received by the Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to use, reproduce, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Work, and to
- permit persons to whom the Work is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Work.
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
@@ -110,7 +107,7 @@
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
+ within such NOTICE file, excluding any notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
@@ -124,7 +121,7 @@
that such additional attribution notices cannot be construed
as modifying the License.
- You may add Your own copyright notice to Your modifications and
+ You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
@@ -166,29 +163,20 @@
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
- 9. Accepting Warranty or Support. You may choose to offer, and to
- charge a fee for, warranty, support, indemnity or other liability
- obligations and/or rights consistent with this License. However, in
- accepting such obligations, You may act only on Your own behalf and
- on Your sole responsibility, not on behalf of any other Contributor,
- and only if You agree to indemnify, defend, and hold each Contributor
- harmless for any liability incurred by, or claims asserted against,
- such Contributor by reason of your accepting any such warranty or support.
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same page as the copyright notice for easier identification within
- third-party archives.
-
- Copyright 2025 Evolution API
+ Copyright 2026 Evolution Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -200,23 +188,4 @@
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
- limitations under the License.
-
-
-ADDITIONAL CONDITIONS:
-
-1. LOGO and copyright information: In the process of using Evolution Go API's
- frontend components, you may not remove or modify the LOGO or copyright
- information in the Evolution API console or applications. This restriction
- is inapplicable to uses of Evolution Go API that do not involve its frontend
- components.
-
-2. Usage Notification Requirement: If Evolution Go API is used as part of any
- project, including closed-source systems (e.g., proprietary software), the
- user is required to display a clear notification within the system that
- Evolution Go API is being utilized. This notification should be visible to
- system administrators and accessible from the system's documentation or
- settings page. Failure to comply with this requirement may result in the
- necessity for a commercial license, as determined by the producer.
-
-Please contact contato@evolution-api.com to inquire about licensing matters.
+ limitations under the License.
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..4796578
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,7 @@
+Evolution Foundation
+Copyright 2026 Evolution Foundation
+
+This product includes software developed by Evolution Foundation.
+
+Trademark notice
+"Evolution Foundation" and "Evolution" are trademarks of Evolution Foundation. The Evolution Foundation logo, wordmark, and Evolution Foundation visual identity are governed by the Evolution Foundation Trademark and Brand Assets Policy included in this repository.
\ No newline at end of file
diff --git a/README.md b/README.md
index bc89966..fa39825 100644
--- a/README.md
+++ b/README.md
@@ -168,7 +168,7 @@ evolution-go/
| Website | [evolutionfoundation.com.br](https://evolutionfoundation.com.br/) |
| Documentation | [docs.evolutionfoundation.com.br](https://docs.evolutionfoundation.com.br/) |
| Community | [evolutionfoundation.com.br/community](https://evolutionfoundation.com.br/community) |
-| WhatsApp Support | [+55 31 7503-8350](https://wa.me/553175038350) |
+| WhatsApp Support | [+55 31 9621-9989](https://wa.me/553196219989) |
| GitHub Issues | [evolution-go/issues](https://github.com/EvolutionAPI/evolution-go/issues) |
## Hosting
diff --git a/TRADEMARKS.md b/TRADEMARKS.md
new file mode 100644
index 0000000..ff5297a
--- /dev/null
+++ b/TRADEMARKS.md
@@ -0,0 +1,87 @@
+# EVO AI TRADEMARK AND BRAND ASSETS POLICY
+
+Version 1.0, 2026.03.02
+
+"Evolution Foundation" and "Evolution" are trademarks of Evolution Foundation.
+The "evoai" wordmark and the Evolution Foundation logo are trademarks of Evolution Foundation.
+
+## 1. Scope and purpose
+
+This policy governs the use of Evolution Foundation trademarks and Evolution Foundation brand assets. It is intended to protect users from confusion and to preserve the official Evolution Foundation Community Edition visual identity.
+
+This policy applies to any use of:
+(a) the product names and marks "Evolution Foundation" and "Evolution";
+(b) the official logo and wordmark: the "evoai" wordmark with the neural network or molecule icon in neon green to the right;
+(c) the copyright line "© 2026 Evolution Foundation"; and
+(d) any materials that implement or express the Evolution Foundation official look and feel, including the Protected Visual Identity Elements listed in Section 3.
+
+This policy does not change the software license for the source code, which is licensed under the Apache License 2.0. This policy controls only trademarks and brand assets.
+
+## 2. Permitted trademark and brand asset use
+
+2.1. You may truthfully refer to Evolution Foundation to describe that your software is based on, compatible with, or derived from this project, provided that such use does not imply endorsement by Evolution Foundation.
+
+2.2. You may distribute and publicly host unmodified official builds of the Evolution Foundation Community Edition that include Evolution Foundation brand assets, provided that you comply with Section 3 and do not suggest endorsement beyond being an official unmodified build.
+
+2.3. You may use Evolution Foundation marks in nominative ways, such as "based on Evolution Foundation",
+provided that the use is accurate and does not create confusion.
+
+## 3. Protected Visual Identity Elements (Brand Assets)
+
+The following are the "Protected Visual Identity Elements":
+(a) Product names and marks: "Evolution Foundation" and "Evolution";
+(b) Official logo and wordmark: the "evoai" wordmark with the neural network
+or molecule icon in neon green to the right;
+(c) Copyright line: "© 2026 Evolution Foundation";
+(d) Community Edition theme requirement: Dark Mode is the default and required
+theme for the Community Edition user interface;
+(e) Official palette for the Community Edition user interface:
+ Background main: #0a0a0a
+ Background cards and popovers: #0a0a0a
+ Sidebar background: #171717
+ Primary neon green: #00ffa7
+ Primary green for light mode references: #01b274
+ Main text: #fafafa
+ Muted text: #a1a1a1
+ Borders and inputs: #262626
+ Muted background: #262626
+ Ring and focus: #555555
+ Destructive: approximately oklch 0.396 0.141 25.723
+(f) Typography: ui sans serif, system ui, sans serif with base size 16px;
+(g) Border radius: 0.625rem (10px) as the default component radius;
+(h) Protected UI presentation elements:
+ Left sidebar with icons and navigation in white or green accents
+ Active navigation item highlighted with dark green background and neon
+ green text
+ Topbar with workspace selector showing "Evolution"
+ Notification badge and user avatar on the top right
+ Sidebar footer showing "Evolution Foundation / © 2026 Evolution Foundation / Documentation / Need help"
+
+## 4. Restrictions for forks, modified versions, and redistributions
+
+4.1. No modification of Protected Visual Identity Elements when using Evolution Foundation brand assets. If you distribute or publicly host any version of the user interface that uses Evolution Foundation brand assets, you may not remove, replace, modify, disable, or bypass any Protected Visual Identity Element.
+
+4.2. Modified UI must remove Evolution Foundation brand assets.
+If you distribute or publicly host a modified user interface or user experience (including changes to branding or visual identity), you must:
+(a) remove and replace all Evolution Foundation trademarks and brand assets from the user
+interface, product name display, and related marketing materials for that
+distribution; and
+(b) choose a name and branding that are clearly distinct from Evolution Foundation.
+
+4.3. No endorsement.
+You may not use Evolution Foundation trademarks or brand assets in a way that implies Evolution Foundation sponsors, endorses, or is affiliated with your distribution, except for unmodified official builds.
+
+4.4. No derivative works of the logo and wordmark.
+You may not modify, adapt, recolor, redesign, or create derivative works of the Evolution Foundation logo or wordmark.
+
+## 5. Permission requests
+
+Any use not expressly permitted by this policy requires prior written permission from Evolution Foundation.
+
+## 6. Enforcement and termination
+
+Any violation of this policy terminates your permission to use Evolution Foundation brand assets. You must promptly cease use and remove Evolution Foundation trademarks and brand assets from your distribution and any public hosting.
+
+## 7. Disclaimer
+
+This policy is provided "as is" and does not grant any rights beyond what is expressly stated. All rights not expressly granted are reserved by Evolution Foundation.
\ No newline at end of file
diff --git a/VERSION b/VERSION
index ee6cdce..faef31a 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.6.1
+0.7.0
diff --git a/cmd/evolution-go/main.go b/cmd/evolution-go/main.go
index 3eccf86..d9ad785 100644
--- a/cmd/evolution-go/main.go
+++ b/cmd/evolution-go/main.go
@@ -59,7 +59,6 @@ import (
server_handler "github.com/EvolutionAPI/evolution-go/pkg/server/handler"
storage_interfaces "github.com/EvolutionAPI/evolution-go/pkg/storage/interfaces"
minio_storage "github.com/EvolutionAPI/evolution-go/pkg/storage/minio"
- "github.com/EvolutionAPI/evolution-go/pkg/telemetry"
user_handler "github.com/EvolutionAPI/evolution-go/pkg/user/handler"
user_service "github.com/EvolutionAPI/evolution-go/pkg/user/service"
whatsmeow_service "github.com/EvolutionAPI/evolution-go/pkg/whatsmeow/service"
@@ -68,12 +67,16 @@ import (
var devMode = flag.Bool("dev", false, "Enable development mode")
-var version = "dev"
+var version = "0.0.0"
func init() {
- if version == "dev" {
+ // ldflags -X main.version= sets this at compile time.
+ // If not set (or still default), try reading from VERSION file.
+ if version == "0.0.0" {
if v, err := os.ReadFile("VERSION"); err == nil {
- version = strings.TrimSpace(string(v))
+ if trimmed := strings.TrimSpace(string(v)); trimmed != "" {
+ version = trimmed
+ }
}
}
}
@@ -196,8 +199,6 @@ func setupRouter(db *gorm.DB, authDB *sql.DB, sqliteDB *sql.DB, config *config.C
// NOVO: PollHandler usando PollService já inicializado no whatsmeowService (evita dupla inicialização)
pollHandler := poll_handler.NewPollHandler(whatsmeowService.GetPollService(), loggerWrapper)
- telemetry := telemetry.NewTelemetryService()
-
r := gin.Default()
// CORS middleware — must be before everything else
@@ -214,8 +215,6 @@ func setupRouter(db *gorm.DB, authDB *sql.DB, sqliteDB *sql.DB, config *config.C
c.Next()
})
- r.Use(telemetry.TelemetryMiddleware())
-
r.Use(core.GateMiddleware(runtimeCtx))
// License routes (always accessible, even without license)
diff --git a/docker/examples/.env.example b/docker/examples/.env.example
index a72c0b4..4f8c9cd 100644
--- a/docker/examples/.env.example
+++ b/docker/examples/.env.example
@@ -58,7 +58,7 @@ LOG_COMPRESS=true
CONNECT_ON_STARTUP=false
# Enviar arquivos via webhook
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
# Nome do sistema operacional
OS_NAME=Linux
diff --git a/docker/examples/docker-compose.full.yml b/docker/examples/docker-compose.full.yml
index 31c36f7..c0035d9 100644
--- a/docker/examples/docker-compose.full.yml
+++ b/docker/examples/docker-compose.full.yml
@@ -31,7 +31,7 @@ services:
# Conexão
CONNECT_ON_STARTUP: "false"
- WEBHOOKFILES: "true"
+ WEBHOOK_FILES: "true"
# Sistema
OS_NAME: "Linux"
diff --git a/docker/examples/docker-compose.swarm.yml b/docker/examples/docker-compose.swarm.yml
index b764f28..00c00fe 100644
--- a/docker/examples/docker-compose.swarm.yml
+++ b/docker/examples/docker-compose.swarm.yml
@@ -29,7 +29,7 @@ services:
# Conexão
CONNECT_ON_STARTUP: "true"
- WEBHOOKFILES: "true"
+ WEBHOOK_FILES: "true"
# Sistema
OS_NAME: "Linux"
diff --git a/docker/examples/docker-compose.yml b/docker/examples/docker-compose.yml
index 2714e16..0a60912 100644
--- a/docker/examples/docker-compose.yml
+++ b/docker/examples/docker-compose.yml
@@ -31,7 +31,7 @@ services:
# Conexão
CONNECT_ON_STARTUP: "false"
- WEBHOOKFILES: "true"
+ WEBHOOK_FILES: "true"
# Sistema
OS_NAME: "Linux"
diff --git a/docs/wiki/deploy-producao/docker-deployment.md b/docs/wiki/deploy-producao/docker-deployment.md
index 70d1d8c..f4d7459 100644
--- a/docs/wiki/deploy-producao/docker-deployment.md
+++ b/docs/wiki/deploy-producao/docker-deployment.md
@@ -85,7 +85,7 @@ services:
WADEBUG: "INFO"
LOGTYPE: "console"
CONNECT_ON_STARTUP: "false"
- WEBHOOKFILES: "true"
+ WEBHOOK_FILES: "true"
volumes:
- evolution_data:/app/dbdata
@@ -469,7 +469,7 @@ data:
WADEBUG: "INFO"
LOGTYPE: "console"
CONNECT_ON_STARTUP: "false"
- WEBHOOKFILES: "true"
+ WEBHOOK_FILES: "true"
DATABASE_SAVE_MESSAGES: "false"
```
diff --git a/docs/wiki/desenvolvimento/development-guide.md b/docs/wiki/desenvolvimento/development-guide.md
index a471264..03cb695 100644
--- a/docs/wiki/desenvolvimento/development-guide.md
+++ b/docs/wiki/desenvolvimento/development-guide.md
@@ -147,7 +147,7 @@ LOGTYPE=console
# Configurações de desenvolvimento
CONNECT_ON_STARTUP=false
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
OS_NAME=Linux
```
diff --git a/docs/wiki/fundamentos/configuration.md b/docs/wiki/fundamentos/configuration.md
index 35460c0..575a8ad 100644
--- a/docs/wiki/fundamentos/configuration.md
+++ b/docs/wiki/fundamentos/configuration.md
@@ -211,7 +211,7 @@ CONNECT_ON_STARTUP=false
**Recomendação**: `false` para maior controle sobre o ciclo de vida das instâncias.
-### WEBHOOKFILES
+### WEBHOOK_FILES
Envia URLs de mídia nos payloads de webhook.
@@ -219,7 +219,7 @@ Envia URLs de mídia nos payloads de webhook.
- **Padrão**: `true`
```env
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
```
### QRCODE_MAX_COUNT
@@ -540,7 +540,7 @@ LOGTYPE=console
# Comportamento
CONNECT_ON_STARTUP=false
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
CHECK_USER_EXISTS=true
EVENT_IGNORE_STATUS=true
```
diff --git a/docs/wiki/fundamentos/installation.md b/docs/wiki/fundamentos/installation.md
index ec05c03..ebdd3af 100644
--- a/docs/wiki/fundamentos/installation.md
+++ b/docs/wiki/fundamentos/installation.md
@@ -198,7 +198,7 @@ DATABASE_SAVE_MESSAGES=false
WADEBUG=DEBUG
LOGTYPE=console
CONNECT_ON_STARTUP=false
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
OS_NAME=Linux
```
diff --git a/docs/wiki/guias-api/api-interactive.md b/docs/wiki/guias-api/api-interactive.md
new file mode 100644
index 0000000..368b2a9
--- /dev/null
+++ b/docs/wiki/guias-api/api-interactive.md
@@ -0,0 +1,724 @@
+# API de Mensagens Interativas
+
+Documentação completa dos endpoints para enviar mensagens interativas no WhatsApp: botões, listas e carrosséis. Todos os endpoints são compatíveis com **Android**, **iOS (iPhone)** e **WhatsApp Web/Desktop**.
+
+## 📋 Índice
+
+- [Enviar Botões](#enviar-botões)
+- [Enviar Lista](#enviar-lista)
+- [Enviar Carrossel](#enviar-carrossel)
+- [Evento ButtonClick (Rastreio)](#evento-buttonclick)
+- [Tipos de Botões](#tipos-de-botões)
+- [Notas de Compatibilidade](#notas-de-compatibilidade)
+
+---
+
+## Enviar Botões
+
+Envia uma mensagem com botões interativos. Suporta botões de resposta rápida (reply), URL, ligação (call), cópia (copy) e PIX.
+
+**Endpoint**: `POST /send/button`
+
+**Headers**:
+```
+Content-Type: application/json
+apikey: SUA-CHAVE-API
+```
+
+**Body**:
+```json
+{
+ "number": "5511999999999",
+ "title": "Título da Mensagem",
+ "description": "Texto do corpo da mensagem",
+ "footer": "Texto do rodapé",
+ "buttons": [
+ {
+ "type": "reply",
+ "displayText": "Texto do Botão",
+ "id": "identificador_unico"
+ }
+ ],
+ "delay": 1000,
+ "quoted": {
+ "messageId": "BAE5..."
+ }
+}
+```
+
+**Parâmetros**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `number` | string | ✅ Sim | Número do destinatário (formato: DDI + DDD + número) |
+| `description` | string | ✅ Sim | Texto do corpo da mensagem |
+| `buttons` | array | ✅ Sim | Array de botões (ver [Tipos de Botões](#tipos-de-botões)) |
+| `title` | string | ❌ Não | Título exibido em negrito acima do corpo |
+| `footer` | string | ❌ Não | Texto pequeno no rodapé. **Não enviar vazio** |
+| `delay` | int32 | ❌ Não | Delay em milissegundos antes de enviar |
+| `mentionedJid` | string | ❌ Não | JID do usuário a mencionar |
+| `mentionAll` | bool | ❌ Não | Mencionar todos os participantes (apenas grupos) |
+| `formatJid` | bool | ❌ Não | Formatar número automaticamente (padrão: true) |
+| `quoted` | object | ❌ Não | Mensagem a ser citada |
+
+**Resposta de Sucesso (200)**:
+```json
+{
+ "message": "success",
+ "data": {
+ "Info": {
+ "ID": "3EB034D434158AD2CC0B9A",
+ "Chat": "5511999999999@s.whatsapp.net",
+ "Type": "ButtonMessage",
+ "Timestamp": "2026-04-01T17:54:09Z"
+ }
+ }
+}
+```
+
+**Resposta de Erro (400)**:
+```json
+{
+ "error": "phone number is required"
+}
+```
+
+### Exemplo 1: Botões Quick Reply
+
+Máximo 3 botões. Não pode misturar com outros tipos.
+
+```bash
+curl -X POST http://localhost:4000/send/button \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "title": "Atendimento",
+ "description": "Como podemos ajudar você hoje?",
+ "footer": "Responda clicando em um botão",
+ "buttons": [
+ {"type": "reply", "displayText": "Suporte Técnico", "id": "suporte"},
+ {"type": "reply", "displayText": "Financeiro", "id": "financeiro"},
+ {"type": "reply", "displayText": "Vendas", "id": "vendas"}
+ ]
+ }'
+```
+
+### Exemplo 2: Botões Mistos (URL + Call + Copy)
+
+Podem ser combinados entre si livremente.
+
+```bash
+curl -X POST http://localhost:4000/send/button \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "title": "Nossos Canais",
+ "description": "Escolha como deseja entrar em contato:",
+ "footer": "Empresa XYZ",
+ "buttons": [
+ {"type": "url", "displayText": "Acessar Site", "url": "https://empresa.com"},
+ {"type": "call", "displayText": "Ligar para Nós", "phoneNumber": "+5511999999999"},
+ {"type": "copy", "displayText": "Copiar Email", "copyCode": "contato@empresa.com"}
+ ]
+ }'
+```
+
+### Exemplo 3: Botão PIX
+
+Deve ser enviado **sozinho**, sem outros botões.
+
+```bash
+curl -X POST http://localhost:4000/send/button \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "title": "Pagamento PIX",
+ "description": "Realize o pagamento via PIX:",
+ "buttons": [
+ {
+ "type": "pix",
+ "currency": "BRL",
+ "name": "Empresa XYZ LTDA",
+ "keyType": "CNPJ",
+ "key": "12345678000199"
+ }
+ ]
+ }'
+```
+
+---
+
+## Enviar Lista
+
+Envia uma mensagem com lista de opções organizadas em seções. O usuário toca no botão para abrir a lista e seleciona uma opção.
+
+**Endpoint**: `POST /send/list`
+
+**Headers**:
+```
+Content-Type: application/json
+apikey: SUA-CHAVE-API
+```
+
+**Body**:
+```json
+{
+ "number": "5511999999999",
+ "title": "Título da Lista",
+ "description": "Texto do corpo da mensagem",
+ "buttonText": "Texto do botão que abre a lista",
+ "footerText": "Texto do rodapé",
+ "sections": [
+ {
+ "title": "Nome da Seção",
+ "rows": [
+ {
+ "title": "Título da Opção",
+ "description": "Descrição da opção",
+ "rowId": "identificador_unico"
+ }
+ ]
+ }
+ ],
+ "delay": 1000,
+ "quoted": {
+ "messageId": "BAE5..."
+ }
+}
+```
+
+**Parâmetros**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `number` | string | ✅ Sim | Número do destinatário |
+| `description` | string | ✅ Sim | Texto do corpo da mensagem |
+| `sections` | array | ✅ Sim | Array de seções contendo rows |
+| `buttonText` | string | ❌ Não | Texto do botão que abre a lista (padrão: "Ver Menu") |
+| `title` | string | ❌ Não | Título em negrito no topo |
+| `footerText` | string | ❌ Não | Texto do rodapé |
+| `delay` | int32 | ❌ Não | Delay em milissegundos antes de enviar |
+| `mentionedJid` | string | ❌ Não | JID do usuário a mencionar |
+| `mentionAll` | bool | ❌ Não | Mencionar todos (apenas grupos) |
+| `formatJid` | bool | ❌ Não | Formatar número automaticamente |
+| `quoted` | object | ❌ Não | Mensagem a ser citada |
+
+**Parâmetros da Seção**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `title` | string | ✅ Sim | Nome da seção |
+| `rows` | array | ✅ Sim | Array de opções da seção |
+
+**Parâmetros da Row**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `title` | string | ✅ Sim | Texto da opção |
+| `description` | string | ❌ Não | Descrição da opção |
+| `rowId` | string | ✅ Sim | ID único para rastreio do clique |
+
+**Resposta de Sucesso (200)**:
+```json
+{
+ "message": "success",
+ "data": {
+ "Info": {
+ "ID": "3EB0C5A277F7F9B6C599",
+ "Chat": "5511999999999@s.whatsapp.net",
+ "Type": "ListMessage",
+ "Timestamp": "2026-04-01T18:00:00Z"
+ }
+ }
+}
+```
+
+**Resposta de Erro (400)**:
+```json
+{
+ "error": "sections are required"
+}
+```
+
+### Exemplo 1: Cardápio Digital
+
+```bash
+curl -X POST http://localhost:4000/send/list \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "title": "Cardápio Digital",
+ "description": "Escolha um item do nosso cardápio:",
+ "buttonText": "Ver Cardápio",
+ "footerText": "Restaurante XYZ",
+ "sections": [
+ {
+ "title": "Pratos Principais",
+ "rows": [
+ {"title": "Filé Mignon", "description": "Com arroz e batata - R$ 45,90", "rowId": "file_mignon"},
+ {"title": "Salmão Grelhado", "description": "Com legumes - R$ 52,90", "rowId": "salmao"},
+ {"title": "Frango Parmegiana", "description": "Com purê - R$ 35,90", "rowId": "frango"}
+ ]
+ },
+ {
+ "title": "Bebidas",
+ "rows": [
+ {"title": "Suco Natural", "description": "Laranja, Limão ou Maracujá - R$ 8,00", "rowId": "suco"},
+ {"title": "Refrigerante", "description": "Lata 350ml - R$ 6,00", "rowId": "refri"},
+ {"title": "Água Mineral", "description": "500ml - R$ 4,00", "rowId": "agua"}
+ ]
+ },
+ {
+ "title": "Sobremesas",
+ "rows": [
+ {"title": "Pudim", "description": "R$ 12,00", "rowId": "pudim"},
+ {"title": "Petit Gâteau", "description": "R$ 18,00", "rowId": "petit_gateau"}
+ ]
+ }
+ ]
+ }'
+```
+
+### Exemplo 2: Menu de Serviços
+
+```bash
+curl -X POST http://localhost:4000/send/list \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "description": "Selecione o serviço desejado:",
+ "buttonText": "Ver Serviços",
+ "sections": [
+ {
+ "title": "Atendimento",
+ "rows": [
+ {"title": "Falar com Atendente", "description": "Atendimento humano", "rowId": "atendente"},
+ {"title": "FAQ", "description": "Perguntas frequentes", "rowId": "faq"},
+ {"title": "Abrir Ticket", "description": "Registrar ocorrência", "rowId": "ticket"}
+ ]
+ }
+ ]
+ }'
+```
+
+---
+
+## Enviar Carrossel
+
+Envia uma mensagem com cards deslizáveis (carrossel), cada um com imagem, texto, rodapé e botões. Ideal para catálogos de produtos, planos e portfólios.
+
+**Endpoint**: `POST /send/carousel`
+
+**Headers**:
+```
+Content-Type: application/json
+apikey: SUA-CHAVE-API
+```
+
+**Body**:
+```json
+{
+ "number": "5511999999999",
+ "body": "Texto do corpo principal",
+ "footer": "Texto do rodapé principal",
+ "cards": [
+ {
+ "header": {
+ "title": "Título do Card",
+ "imageUrl": "https://url-da-imagem.com/foto.jpg"
+ },
+ "body": "Texto do corpo do card",
+ "footer": "Rodapé do card",
+ "buttons": [
+ {
+ "type": "REPLY",
+ "displayText": "Texto do Botão",
+ "id": "id_rastreio"
+ }
+ ]
+ }
+ ],
+ "delay": 1000,
+ "quoted": {
+ "messageId": "BAE5..."
+ }
+}
+```
+
+**Parâmetros**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `number` | string | ✅ Sim | Número do destinatário |
+| `cards` | array | ✅ Sim | Array de cards (mínimo 2, máximo ~10) |
+| `body` | string | ❌ Não | Texto do corpo principal (acima dos cards) |
+| `footer` | string | ❌ Não | Rodapé principal |
+| `delay` | int32 | ❌ Não | Delay em milissegundos antes de enviar |
+| `formatJid` | bool | ❌ Não | Formatar número automaticamente |
+| `quoted` | object | ❌ Não | Mensagem a ser citada |
+
+**Parâmetros do Card**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `header` | object | ✅ Sim | Cabeçalho do card (deve conter imagem) |
+| `header.title` | string | ❌ Não | Título do card |
+| `header.subtitle` | string | ❌ Não | Subtítulo do card |
+| `header.imageUrl` | string | ✅ Sim* | URL da imagem do card |
+| `header.videoUrl` | string | ❌ Não | URL de vídeo (alternativa à imagem) |
+| `body` | string | ✅ Sim | Texto do corpo do card |
+| `footer` | string | ❌ Não | Rodapé do card |
+| `buttons` | array | ❌ Não | Array de botões do card |
+
+> ⚠️ **Importante**: Todos os cards **devem** ter imagem (`imageUrl`) para o carrossel renderizar corretamente em todos os dispositivos. As imagens recebem thumbnail JPEG automaticamente para carregamento instantâneo.
+
+**Parâmetros do Botão do Card**:
+
+| Campo | Tipo | Obrigatório | Descrição |
+|-------|------|-------------|-----------|
+| `type` | string | ❌ Não | Tipo do botão: `REPLY`, `URL`, `CALL`, `COPY` (padrão: `REPLY`) |
+| `displayText` | string | ✅ Sim | Texto visível do botão |
+| `id` | string | ✅ Sim* | ID para rastreio (reply) ou URL/telefone (url/call) |
+| `copyCode` | string | ✅ Sim* | Texto a copiar (apenas tipo `COPY`) |
+
+**Resposta de Sucesso (200)**:
+```json
+{
+ "message": "success",
+ "data": {
+ "Info": {
+ "ID": "3EB0C5A277F7F9B6C599",
+ "Chat": "5511999999999@s.whatsapp.net",
+ "Type": "InteractiveMessage",
+ "Timestamp": "2026-04-01T18:30:00Z"
+ }
+ }
+}
+```
+
+**Resposta de Erro (400)**:
+```json
+{
+ "error": "cards are required (minimum 1)"
+}
+```
+
+### Exemplo 1: Catálogo de Produtos
+
+```bash
+curl -X POST http://localhost:4000/send/carousel \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "body": "Confira nossos produtos em destaque!",
+ "footer": "Loja Virtual XYZ",
+ "cards": [
+ {
+ "header": {
+ "title": "Smartphone Pro Max",
+ "imageUrl": "https://placehold.co/600x400/1a1a2e/white?text=Smartphone"
+ },
+ "body": "Tela 6.7 AMOLED, 256GB, Câmera 108MP.\nDe R$ 4.999 por R$ 3.799!",
+ "footer": "12x sem juros",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Comprar", "id": "comprar_smartphone"},
+ {"type": "URL", "displayText": "Ver Detalhes", "id": "https://loja.com/smartphone"}
+ ]
+ },
+ {
+ "header": {
+ "title": "Notebook Ultra",
+ "imageUrl": "https://placehold.co/600x400/16213e/white?text=Notebook"
+ },
+ "body": "Intel i7, 16GB RAM, SSD 512GB, Tela 15.6 FHD.\nPor apenas R$ 5.299!",
+ "footer": "Frete grátis",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Comprar", "id": "comprar_notebook"},
+ {"type": "URL", "displayText": "Ver Detalhes", "id": "https://loja.com/notebook"}
+ ]
+ },
+ {
+ "header": {
+ "title": "Fone Bluetooth",
+ "imageUrl": "https://placehold.co/600x400/0f3460/white?text=Fone"
+ },
+ "body": "Cancelamento de ruído ativo, 30h bateria.\nR$ 299,90",
+ "footer": "Envio imediato",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Comprar", "id": "comprar_fone"},
+ {"type": "CALL", "displayText": "Ligar p/ Comprar", "id": "+5511999999999"}
+ ]
+ }
+ ]
+ }'
+```
+
+### Exemplo 2: Planos de Serviço
+
+```bash
+curl -X POST http://localhost:4000/send/carousel \
+ -H "Content-Type: application/json" \
+ -H "apikey: SUA-CHAVE-API" \
+ -d '{
+ "number": "5511999999999",
+ "body": "Conheça nossos planos:",
+ "cards": [
+ {
+ "header": {
+ "title": "Plano Básico",
+ "imageUrl": "https://placehold.co/600x400/2ecc71/white?text=Basico"
+ },
+ "body": "Ideal para pequenas empresas.\n- 1.000 mensagens/mês\n- 1 instância\n- Suporte email\n\nR$ 97/mês",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Contratar Básico", "id": "plano_basico"},
+ {"type": "COPY", "displayText": "Copiar Link", "copyCode": "https://planos.com/basico"}
+ ]
+ },
+ {
+ "header": {
+ "title": "Plano Pro",
+ "imageUrl": "https://placehold.co/600x400/3498db/white?text=Pro"
+ },
+ "body": "Para empresas em crescimento.\n- 10.000 mensagens/mês\n- 5 instâncias\n- Suporte prioritário\n\nR$ 297/mês",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Contratar Pro", "id": "plano_pro"},
+ {"type": "COPY", "displayText": "Copiar Link", "copyCode": "https://planos.com/pro"}
+ ]
+ },
+ {
+ "header": {
+ "title": "Plano Enterprise",
+ "imageUrl": "https://placehold.co/600x400/9b59b6/white?text=Enterprise"
+ },
+ "body": "Solução completa.\n- Mensagens ilimitadas\n- Instâncias ilimitadas\n- Suporte 24/7\n\nSob consulta",
+ "buttons": [
+ {"type": "REPLY", "displayText": "Solicitar Orçamento", "id": "plano_enterprise"},
+ {"type": "CALL", "displayText": "Falar com Vendas", "id": "+5511999999999"}
+ ]
+ }
+ ]
+ }'
+```
+
+---
+
+## Evento ButtonClick
+
+Quando um usuário clica em um botão, seleciona um item de lista ou interage com um card de carrossel, a API dispara o evento `ButtonClick` para todos os canais configurados na instância.
+
+### Canais de Disparo
+
+- **Webhook** - Callback HTTP para URL configurada
+- **WebSocket** - Evento em tempo real
+- **RabbitMQ** - Mensagem na fila
+- **NATS** - Mensagem no tópico
+
+### Requisito
+
+A instância deve ter o evento `BUTTON_CLICK` ou `MESSAGE` habilitado na configuração de events.
+
+### Payload do Evento
+
+```json
+{
+ "event": "ButtonClick",
+ "data": {
+ "buttonId": "suporte",
+ "buttonText": "Suporte Técnico",
+ "type": "native_flow_response",
+ "phone": "5511999999999",
+ "jid": "5511999999999@s.whatsapp.net",
+ "pushName": "João Silva",
+ "messageId": "3EB034D434158AD2CC0B9A",
+ "chat": "5511999999999@s.whatsapp.net",
+ "fromMe": false,
+ "timestamp": 1711990500,
+ "extraData": {}
+ },
+ "instanceToken": "token_da_instancia",
+ "instanceId": "uuid-da-instancia",
+ "instanceName": "nome_da_instancia"
+}
+```
+
+### Campos do Evento
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| `buttonId` | string | ID do botão/row clicado (conforme definido no envio) |
+| `buttonText` | string | Texto exibido no botão/row |
+| `type` | string | Tipo de resposta (ver tabela abaixo) |
+| `phone` | string | Número do usuário que clicou |
+| `jid` | string | JID completo do usuário |
+| `pushName` | string | Nome do contato no WhatsApp |
+| `messageId` | string | ID da mensagem de resposta |
+| `chat` | string | JID do chat |
+| `fromMe` | bool | Se a mensagem é própria |
+| `timestamp` | int64 | Timestamp Unix do clique |
+
+### Tipos de Resposta
+
+| Valor de `type` | Origem |
+|-----------------|--------|
+| `native_flow_response` | Clique em botão enviado via `/send/button` ou `/send/carousel` |
+| `list_response` | Seleção de item em lista enviada via `/send/list` |
+| `buttons_response` | Resposta a botões legados (ButtonsMessage) |
+| `template_button_reply` | Resposta a template buttons |
+
+### Exemplo: Botão Reply Clicado
+
+```json
+{
+ "event": "ButtonClick",
+ "data": {
+ "buttonId": "vendas",
+ "buttonText": "Vendas",
+ "type": "native_flow_response",
+ "phone": "5511999999999",
+ "jid": "5511999999999@s.whatsapp.net",
+ "pushName": "Maria Santos",
+ "messageId": "3EB0XXXXXXXXXXXXXX",
+ "chat": "5511999999999@s.whatsapp.net",
+ "fromMe": false,
+ "timestamp": 1711991000
+ },
+ "instanceToken": "teste123",
+ "instanceId": "4ee8ab07-8a67-42a8-a029-f382315912b1",
+ "instanceName": "minha_instancia"
+}
+```
+
+### Exemplo: Item de Lista Selecionado
+
+```json
+{
+ "event": "ButtonClick",
+ "data": {
+ "buttonId": "file_mignon",
+ "buttonText": "Filé Mignon",
+ "type": "list_response",
+ "phone": "5511999999999",
+ "jid": "5511999999999@s.whatsapp.net",
+ "pushName": "Pedro Oliveira",
+ "messageId": "3EB0XXXXXXXXXXXXXX",
+ "chat": "5511999999999@s.whatsapp.net",
+ "fromMe": false,
+ "timestamp": 1711991500
+ },
+ "instanceToken": "teste123",
+ "instanceId": "4ee8ab07-8a67-42a8-a029-f382315912b1",
+ "instanceName": "minha_instancia"
+}
+```
+
+### Exemplo: Botão de Carrossel Clicado
+
+```json
+{
+ "event": "ButtonClick",
+ "data": {
+ "buttonId": "comprar_smartphone",
+ "buttonText": "Comprar",
+ "type": "native_flow_response",
+ "phone": "5511999999999",
+ "jid": "5511999999999@s.whatsapp.net",
+ "pushName": "Ana Costa",
+ "messageId": "3EB0XXXXXXXXXXXXXX",
+ "chat": "5511999999999@s.whatsapp.net",
+ "fromMe": false,
+ "timestamp": 1711992000
+ },
+ "instanceToken": "teste123",
+ "instanceId": "4ee8ab07-8a67-42a8-a029-f382315912b1",
+ "instanceName": "minha_instancia"
+}
+```
+
+---
+
+## Tipos de Botões
+
+### Resumo por Endpoint
+
+| Tipo | SendButton | SendCarousel | Campo obrigatório |
+|------|-----------|-------------|-------------------|
+| Reply | `"reply"` | `"REPLY"` (padrão) | `displayText`, `id` |
+| URL | `"url"` | `"URL"` | `displayText`, `url` ou `id` |
+| Call | `"call"` | `"CALL"` | `displayText`, `phoneNumber` ou `id` |
+| Copy | `"copy"` | `"COPY"` | `displayText`, `copyCode` |
+| PIX | `"pix"` | N/A | `currency`, `name`, `keyType`, `key` |
+
+### Regras de Combinação
+
+- **Reply**: Máximo 3 botões. **Não** pode misturar com outros tipos no mesmo envio.
+- **PIX**: Deve ser enviado **sozinho**, sem outros botões.
+- **URL / Call / Copy**: Podem ser combinados livremente entre si.
+- **Carrossel**: Todos os tipos (exceto PIX) podem ser combinados no mesmo card.
+- **Lista**: Não possui botões nos items. Usa `rowId` para rastreio.
+
+### Estrutura de Cada Tipo
+
+**Reply** (Resposta Rápida):
+```json
+{"type": "reply", "displayText": "Suporte", "id": "btn_suporte"}
+```
+
+**URL** (Abre Link):
+```json
+{"type": "url", "displayText": "Acessar Site", "url": "https://empresa.com"}
+```
+
+**Call** (Ligação):
+```json
+{"type": "call", "displayText": "Ligar Agora", "phoneNumber": "+5511999999999"}
+```
+
+**Copy** (Copiar Texto):
+```json
+{"type": "copy", "displayText": "Copiar Código", "copyCode": "DESCONTO20"}
+```
+
+**PIX** (Pagamento):
+```json
+{
+ "type": "pix",
+ "currency": "BRL",
+ "name": "Empresa XYZ",
+ "keyType": "CPF",
+ "key": "12345678901"
+}
+```
+
+---
+
+## Notas de Compatibilidade
+
+### Regras para Funcionamento em Todos os Dispositivos
+
+| Regra | Detalhe |
+|-------|---------|
+| Footer vazio | **Não** envie campo `footer` vazio. Omita o campo ou preencha com texto |
+| Imagens no carrossel | **Todos** os cards devem ter `imageUrl` para renderizar corretamente |
+| Mínimo de cards | Carrossel requer no **mínimo 2 cards** |
+| Thumbnails | Gerados automaticamente pela API (72px JPEG) para carregamento instantâneo |
+| Formato do número | DDI + DDD + número, sem caracteres especiais (`5511999999999`) |
+| Grupos | Use o JID do grupo (ex: `120363XXXXX@g.us`) |
+| Mensagem quoted | Adicione `"quoted": {"messageId": "ID"}` ao payload |
+
+### Compatibilidade Testada
+
+| Tipo de Mensagem | Android | iOS (iPhone) | WhatsApp Web |
+|------------------|---------|--------------|--------------|
+| Botões (reply) | ✅ | ✅ | ✅ |
+| Botões (url) | ✅ | ✅ | ✅ |
+| Botões (call) | ✅ | ✅ | ✅ |
+| Botões (copy) | ✅ | ✅ | ✅ |
+| Botões (pix) | ✅ | ✅ | ✅ |
+| Lista | ✅ | ✅ | ✅ |
+| Carrossel | ✅ | ✅ | ✅ |
diff --git a/docs/wiki/guias-api/api-messages.md b/docs/wiki/guias-api/api-messages.md
index 394c17e..35e2747 100644
--- a/docs/wiki/guias-api/api-messages.md
+++ b/docs/wiki/guias-api/api-messages.md
@@ -12,8 +12,9 @@ Documentação completa dos endpoints para enviar e gerenciar mensagens WhatsApp
- [Enviar Sticker](#enviar-sticker)
- [Enviar Localização](#enviar-localização)
- [Enviar Contato](#enviar-contato)
-- [~~Enviar Botões~~](#enviar-botões) ⚠️ **DEPRECIADO**
-- [~~Enviar Lista~~](#enviar-lista) ⚠️ **DEPRECIADO**
+- [Enviar Botões](api-interactive.md#enviar-botões) ➡️ **Ver [API de Mensagens Interativas](api-interactive.md)**
+- [Enviar Lista](api-interactive.md#enviar-lista) ➡️ **Ver [API de Mensagens Interativas](api-interactive.md)**
+- [Enviar Carrossel](api-interactive.md#enviar-carrossel) ➡️ **Ver [API de Mensagens Interativas](api-interactive.md)**
### Gerenciar Mensagens
- [Reagir a Mensagem](#reagir-a-mensagem)
diff --git a/docs/wiki/referencia/environment-variables.md b/docs/wiki/referencia/environment-variables.md
index a1abf27..2b97a96 100644
--- a/docs/wiki/referencia/environment-variables.md
+++ b/docs/wiki/referencia/environment-variables.md
@@ -59,7 +59,7 @@ POSTGRES_USERS_DB=postgresql://user:pass@host:5432/evogo_users?sslmode=disable
| Variável | Padrão | Descrição |
|----------|--------|-----------|
| `CONNECT_ON_STARTUP` | `false` | Conectar instâncias ao iniciar servidor |
-| `WEBHOOKFILES` | `true` | Enviar URLs de mídia em webhooks |
+| `WEBHOOK_FILES` | `true` | Enviar URLs de mídia em webhooks |
| `QRCODE_MAX_COUNT` | `5` | Tentativas máximas de QR Code |
| `CHECK_USER_EXISTS` | `true` | Validar destinatário antes de enviar |
@@ -197,7 +197,7 @@ LOGTYPE=console
# Comportamento
CONNECT_ON_STARTUP=false
-WEBHOOKFILES=true
+WEBHOOK_FILES=true
CHECK_USER_EXISTS=true
EVENT_IGNORE_STATUS=true
diff --git a/evolution-go b/evolution-go
new file mode 100755
index 0000000..e074bf6
Binary files /dev/null and b/evolution-go differ
diff --git a/go.mod b/go.mod
index e877705..ef2a864 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,6 @@ module github.com/EvolutionAPI/evolution-go
go 1.25.0
require (
- github.com/EvolutionAPI/evo-gate v0.1.2
github.com/chai2010/webp v1.1.1
github.com/gabriel-vasile/mimetype v1.4.5
github.com/gin-gonic/gin v1.10.0
diff --git a/go.sum b/go.sum
index b2d291d..4ec26f6 100644
--- a/go.sum
+++ b/go.sum
@@ -2,8 +2,6 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU=
github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU=
-github.com/EvolutionAPI/evo-gate v0.1.2 h1:ZPQ9SZ7OlajNU1pbtYqbMg1U/ZiUSKmlrYk0GHWOXkc=
-github.com/EvolutionAPI/evo-gate v0.1.2/go.mod h1:48tcAgZ0yVojqLdmLpOSyWDGqPODBYXYRSEs2yIUI/w=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM=
diff --git a/manager/dist/assets/index-BsMXpWP7.css b/manager/dist/assets/index-BsMXpWP7.css
deleted file mode 100644
index e97c33b..0000000
--- a/manager/dist/assets/index-BsMXpWP7.css
+++ /dev/null
@@ -1 +0,0 @@
-@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100: oklch(93.6% .032 17.717);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-orange-100: oklch(95.4% .038 75.164);--color-orange-500: oklch(70.5% .213 47.604);--color-orange-600: oklch(64.6% .222 41.116);--color-orange-700: oklch(55.3% .195 38.402);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-yellow-700: oklch(55.4% .135 66.442);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-600: oklch(62.7% .194 149.214);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-blue-50: oklch(97% .014 254.604);--color-blue-100: oklch(93.2% .032 255.585);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-600: oklch(54.6% .245 262.881);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-purple-50: oklch(97.7% .014 308.299);--color-purple-100: oklch(94.6% .033 307.174);--color-purple-200: oklch(90.2% .063 306.703);--color-purple-500: oklch(62.7% .265 303.9);--color-purple-600: oklch(55.8% .288 302.321);--color-purple-700: oklch(49.6% .265 301.924);--color-purple-900: oklch(38.1% .176 304.987);--color-pink-50: oklch(97.1% .014 343.198);--color-pink-500: oklch(65.6% .241 354.308);--color-pink-600: oklch(59.2% .249 .584);--color-slate-50: oklch(98.4% .003 247.858);--color-slate-800: oklch(27.9% .041 260.031);--color-slate-900: oklch(20.8% .042 265.755);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-900: oklch(21% .034 264.665);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-sm: 24rem;--container-md: 28rem;--container-lg: 32rem;--container-2xl: 42rem;--container-4xl: 56rem;--container-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-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--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;--tracking-tight: -.025em;--tracking-widest: .1em;--leading-tight: 1.25;--leading-snug: 1.375;--leading-relaxed: 1.625;--radius-xs: .125rem;--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;--aspect-video: 16 / 9;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--color-background: var(--background);--color-foreground: var(--foreground);--color-primary: var(--primary);--color-primary-foreground: var(--primary-foreground);--color-secondary: var(--secondary);--color-secondary-foreground: var(--secondary-foreground);--color-muted: var(--muted);--color-muted-foreground: var(--muted-foreground);--color-accent: var(--accent);--color-accent-foreground: var(--accent-foreground);--color-destructive: var(--destructive);--color-destructive-foreground: var(--destructive-foreground);--color-border: var(--border);--color-input: var(--input);--color-ring: var(--ring)}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;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{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-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{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.\@container\/card-header{container-type:inline-size;container-name:card-header}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-top-2{top:calc(var(--spacing) * -2)}.-top-12{top:calc(var(--spacing) * -12)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-0{right:calc(var(--spacing) * -0)}.-right-2{right:calc(var(--spacing) * -2)}.-right-12{right:calc(var(--spacing) * -12)}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-0{bottom:calc(var(--spacing) * -0)}.-bottom-12{bottom:calc(var(--spacing) * -12)}.bottom-0{bottom:calc(var(--spacing) * 0)}.-left-12{left:calc(var(--spacing) * -12)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-span-3{grid-row:span 3 / span 3}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-4{margin-left:calc(var(--spacing) * -4)}.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-8{margin-left:calc(var(--spacing) * 8)}.ml-12{margin-left:calc(var(--spacing) * 12)}.ml-auto{margin-left:auto}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.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}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-\(--cell-size\){width:var(--cell-size);height:var(--cell-size)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-auto{width:auto;height:auto}.size-full{width:100%;height:100%}.h-\(--cell-size\){height:var(--cell-size)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-\[1\.15rem\]{height:1.15rem}.h-\[100px\]{height:100px}.h-\[150px\]{height:150px}.h-\[200px\]{height:200px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\(--radix-context-menu-content-available-height\){max-height:var(--radix-context-menu-content-available-height)}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[80px\]{min-height:80px}.min-h-\[100px\]{min-height:100px}.min-h-\[100vh\]{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--cell-size\){width:var(--cell-size)}.w-0{width:calc(var(--spacing) * 0)}.w-1{width:calc(var(--spacing) * 1)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:calc(2/3 * 100%)}.w-3{width:calc(var(--spacing) * 3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-18{width:calc(var(--spacing) * 18)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[--radix-dropdown-menu-trigger-width\]{width:--radix-dropdown-menu-trigger-width}.w-\[50px\]{width:50px}.w-\[100px\]{width:100px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[250px\]{width:250px}.w-\[280px\]{width:280px}.w-\[300px\]{width:300px}.w-\[350px\]{width:350px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-\[var\(--sidebar-width\)\]{width:var(--sidebar-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--cell-size\){min-width:var(--cell-size)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-8{min-width:calc(var(--spacing) * 8)}.min-w-9{min-width:calc(var(--spacing) * 9)}.min-w-10{min-width:calc(var(--spacing) * 10)}.min-w-56{min-width:calc(var(--spacing) * 56)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--radix-context-menu-content-transform-origin\){transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-menubar-content-transform-origin\){transform-origin:var(--radix-menubar-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x: -1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x: 1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y: calc(var(--spacing) * .5);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)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-caret-blink{animation:caret-blink 1.25s ease-out infinite}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-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-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-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-6>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-\(--color-border\){border-color:var(--color-border)}.border-background{border-color:var(--background)}.border-blue-200{border-color:var(--color-blue-200)}.border-border\/50{border-color:var(--border)}@supports (color: color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-current{border-color:currentcolor}.border-destructive{border-color:var(--destructive)}.border-destructive\/20{border-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.border-destructive\/20{border-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.border-gray-700{border-color:var(--color-gray-700)}.border-green-200{border-color:var(--color-green-200)}.border-green-500{border-color:var(--color-green-500)}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-primary{border-color:var(--primary)}.border-purple-100{border-color:var(--color-purple-100)}.border-purple-200{border-color:var(--color-purple-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:transparent}.border-white{border-color:var(--color-white)}.border-yellow-500{border-color:var(--color-yellow-500)}.border-t-transparent{border-top-color:transparent}.border-l-transparent{border-left-color:transparent}.bg-\(--color-bg\){background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/50{background-color:color-mix(in srgb,#000 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-muted{background-color:var(--muted)}.bg-muted\/50{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-600{background-color:var(--color-orange-600)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary\/10{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary) 10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary) 20%,transparent)}}.bg-purple-100{background-color:var(--color-purple-100)}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sidebar-primary{background-color:var(--sidebar-primary)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.bg-white\/60{background-color:color-mix(in srgb,#fff 60%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.bg-white\/80{background-color:color-mix(in srgb,#fff 80%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-600{background-color:var(--color-yellow-600)}.bg-gradient-to-b{--tw-gradient-position: to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.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-400{--tw-gradient-from: var(--color-blue-400);--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-blue-500{--tw-gradient-from: var(--color-blue-500);--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-blue-500\/20{--tw-gradient-from: color-mix(in srgb, oklch(62.3% .214 259.815) 20%, transparent);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.from-blue-500\/20{--tw-gradient-from: color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.from-muted\/50{--tw-gradient-from: var(--muted);--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))}@supports (color: color-mix(in lab,red,red)){.from-muted\/50{--tw-gradient-from: color-mix(in oklab, var(--muted) 50%, transparent)}}.from-purple-50{--tw-gradient-from: var(--color-purple-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))}.from-purple-500{--tw-gradient-from: var(--color-purple-500);--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-white{--tw-gradient-from: var(--color-white);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-blue-600\/20{--tw-gradient-to: color-mix(in srgb, oklch(54.6% .245 262.881) 20%, transparent);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}@supports (color: color-mix(in lab,red,red)){.to-blue-600\/20{--tw-gradient-to: color-mix(in oklab, var(--color-blue-600) 20%, transparent)}}.to-gray-900{--tw-gradient-to: var(--color-gray-900);--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-muted{--tw-gradient-to: var(--muted);--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-pink-50{--tw-gradient-to: var(--color-pink-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-pink-500{--tw-gradient-to: var(--color-pink-500);--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-purple-600{--tw-gradient-to: var(--color-purple-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-blue-400{fill:var(--color-blue-400)}.fill-current{fill:currentcolor}.fill-primary{fill:var(--primary)}.fill-yellow-400{fill:var(--color-yellow-400)}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-\(--cell-size\){padding-inline:var(--cell-size)}.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-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading: var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading: var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-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-widest{--tw-tracking: var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-accent-foreground{color:var(--accent-foreground)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentcolor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-orange-700{color:var(--color-orange-700)}.text-pink-600{color:var(--color-pink-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-500{color:var(--color-purple-500)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-900{color:var(--color-purple-900)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color: color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.text-sidebar-primary-foreground{color:var(--sidebar-primary-foreground)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0%}.opacity-50{opacity:50%}.opacity-70{opacity:70%}.opacity-75{opacity:75%}.opacity-90{opacity:90%}.opacity-100{opacity:100%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));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, rgb(0 0 0 / .1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-primary{--tw-ring-color: var(--primary)}.ring-ring\/50{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.ring-sidebar-ring{--tw-ring-color: var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color: var(--background)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline:2px solid transparent;outline-offset:2px}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}.duration-1000{--tw-duration: 1s;transition-duration:1s}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease: linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.outline-none{--tw-outline-style: none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale: 95% ;--tw-enter-scale: .95}.\[--cell-size\:--spacing\(8\)\]{--cell-size: calc(var(--spacing) * 8)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:100%}@media(hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:100%}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has(*[data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-has-\[\[data-collapsible\=icon\]\]\/sidebar-wrapper\:h-12:is(:where(.group\/sidebar-wrapper):has(*:is([data-collapsible=icon])) *){height:calc(var(--spacing) * 12)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+1rem\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+1rem\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group-data-\[collapsible\=icon\]\:w-\[var\(--sidebar-width-icon\)\]:is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0%}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:50%}.group-data-\[focused\=true\]\/day\:relative:is(:where(.group\/day)[data-focused=true] *){position:relative}.group-data-\[focused\=true\]\/day\:z-10:is(:where(.group\/day)[data-focused=true] *){z-index:10}.group-data-\[focused\=true\]\/day\:border-ring:is(:where(.group\/day)[data-focused=true] *){border-color:var(--ring)}.group-data-\[focused\=true\]\/day\:ring-\[3px\]:is(:where(.group\/day)[data-focused=true] *){--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.group-data-\[focused\=true\]\/day\:ring-ring\/50:is(:where(.group\/day)[data-focused=true] *){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\/collapsible\:rotate-180:is(:where(.group\/collapsible)[data-state=open] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){text-align:center}.group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=top] *){text-align:center}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing) * 1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration: .2s;transition-duration:.2s}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:50%}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.selection\:bg-primary *::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground *::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing) * 1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-md:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:rounded-r-md:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}@media(hover:hover){.hover\:border-muted-foreground\/50:hover{border-color:var(--muted-foreground)}@supports (color: color-mix(in lab,red,red)){.hover\:border-muted-foreground\/50:hover{border-color:color-mix(in oklab,var(--muted-foreground) 50%,transparent)}}}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}}@media(hover:hover){.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media(hover:hover){.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}}@media(hover:hover){.hover\:bg-green-700:hover{background-color:var(--color-green-700)}}@media(hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}}@media(hover:hover){.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}@media(hover:hover){.hover\:bg-orange-700:hover{background-color:var(--color-orange-700)}}@media(hover:hover){.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media(hover:hover){.hover\:bg-purple-700:hover{background-color:var(--color-purple-700)}}@media(hover:hover){.hover\:bg-red-700:hover{background-color:var(--color-red-700)}}@media(hover:hover){.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}@media(hover:hover){.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}}@media(hover:hover){.hover\:bg-white:hover{background-color:var(--color-white)}}@media(hover:hover){.hover\:bg-yellow-700:hover{background-color:var(--color-yellow-700)}}@media(hover:hover){.hover\:from-purple-600:hover{--tw-gradient-from: var(--color-purple-600);--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))}}@media(hover:hover){.hover\:to-pink-600:hover{--tw-gradient-to: var(--color-pink-600);--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))}}@media(hover:hover){.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}@media(hover:hover){.hover\:text-destructive:hover{color:var(--destructive)}}@media(hover:hover){.hover\:text-foreground:hover{color:var(--foreground)}}@media(hover:hover){.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}}@media(hover:hover){.hover\:text-primary:hover{color:var(--primary)}}@media(hover:hover){.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}}@media(hover:hover){.hover\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\:opacity-90:hover{opacity:90%}}@media(hover:hover){.hover\:opacity-100:hover{opacity:100%}}@media(hover:hover){.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-accent)));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(hover:hover){.hover\:ring-4:hover{--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)}}@media(hover:hover){.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}}@media(hover:hover){.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:z-10:focus{z-index:10}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:shadow-md:focus{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));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-ring:focus{--tw-ring-color: var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline:2px solid transparent;outline-offset:2px}}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4: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)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-green-500\/20:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(72.3% .219 149.579) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-green-500\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-green-500) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: var(--ring)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-yellow-500\/20:focus-visible{--tw-ring-color: color-mix(in srgb, oklch(79.5% .184 86.047) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-yellow-500\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--color-yellow-500) 20%, transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline:2px solid transparent;outline-offset:2px}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style: none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:50%}:where(*[data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where(*[data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-focus\:border-ring:has(*:focus){border-color:var(--ring)}.has-focus\:ring-\[3px\]:has(*:focus){--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-focus\:ring-ring\/50:has(*:focus){--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.has-focus\:ring-ring\/50:has(*:focus){--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.has-disabled\:opacity-50:has(*:disabled){opacity:50%}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has(*[data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has(*[data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:50%}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.aria-selected\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-\[active\=true\]\:z-10[data-active=true]{z-index:10}.data-\[active\=true\]\:border-ring[data-active=true]{border-color:var(--ring)}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[active\=true\]\:ring-\[3px\][data-active=true]{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:ring-ring\/50[data-active=true]{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}@media(hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[active\=true\]\:aria-invalid\:border-destructive[data-active=true][aria-invalid=true]{border-color:var(--destructive)}.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.data-\[active\=true\]\:aria-invalid\:ring-destructive\/20[data-active=true][aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:50%}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:50%}.data-\[empty\=true\]\:text-muted-foreground[data-empty=true]{color:var(--muted-foreground)}.data-\[error\=true\]\:text-destructive[data-error=true]{color:var(--destructive)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing) * 8)}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x: calc(52*var(--spacing))}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x: calc(52*var(--spacing)*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x: calc(52*var(--spacing))}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x: calc(52*var(--spacing)*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity: 0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity: 0}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing) * 1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing) * 44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing) * 1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction=vertical]{height:1px}.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction=vertical]{width:100%}.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction=vertical]{flex-direction:column}.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction=vertical]:after{content:var(--tw-content);height:calc(var(--spacing) * 1)}.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction=vertical]:after{content:var(--tw-content);width:100%}.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction=vertical]:after{content:var(--tw-content);--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:rounded-r-md[data-range-end=true]{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:var(--primary)}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:rounded-l-md[data-range-start=true]{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.data-\[range-start\=true\]\:bg-primary[data-range-start=true]{background-color:var(--primary)}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true]{color:var(--primary-foreground)}.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:var(--primary)}.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing) * 12)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style: none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration: .3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0 ;--tw-exit-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x: 100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity: 0 ;--tw-exit-opacity: 0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale: 95% ;--tw-exit-scale: .95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity: 0}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:100%}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration: .5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale: 90% ;--tw-enter-scale: .9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity: 0 ;--tw-enter-opacity: 0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale: 95% ;--tw-enter-scale: .95}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}}@media(hover:hover){.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity: 0}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0px}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / .05));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing) * 0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing) * 24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@media(min-width:40rem){.sm\:block{display:block}}@media(min-width:40rem){.sm\:flex{display:flex}}@media(min-width:40rem){.sm\:w-auto{width:auto}}@media(min-width:40rem){.sm\:max-w-\[425px\]{max-width:425px}}@media(min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}}@media(min-width:40rem){.sm\:max-w-md{max-width:var(--container-md)}}@media(min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}}@media(min-width:40rem){.sm\:flex-row{flex-direction:row}}@media(min-width:40rem){.sm\:justify-end{justify-content:flex-end}}@media(min-width:40rem){.sm\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}}@media(min-width:40rem){.sm\:pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}}@media(min-width:40rem){.sm\:pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}}@media(min-width:40rem){.sm\:text-left{text-align:left}}@media(min-width:40rem){.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left]{max-width:var(--container-sm)}}@media(min-width:40rem){.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:absolute{position:absolute}}@media(min-width:48rem){.md\:block{display:block}}@media(min-width:48rem){.md\:flex{display:flex}}@media(min-width:48rem){.md\:min-h-min{min-height:min-content}}@media(min-width:48rem){.md\:w-\[400px\]{width:400px}}@media(min-width:48rem){.md\:w-\[500px\]{width:500px}}@media(min-width:48rem){.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}}@media(min-width:48rem){.md\:w-auto{width:auto}}@media(min-width:48rem){.md\:basis-1\/2{flex-basis:50%}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:48rem){.md\:flex-row{flex-direction:row}}@media(min-width:48rem){.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}}@media(min-width:48rem){.md\:text-left{text-align:left}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}}@media(min-width:48rem){.md\:opacity-0{opacity:0%}}@media(min-width:48rem){.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}}@media(min-width:48rem){.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}}@media(min-width:48rem){.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}}@media(min-width:48rem){.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(min-width:48rem){.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}}@media(min-width:48rem){.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:w-\[500px\]{width:500px}}@media(min-width:64rem){.lg\:w-\[600px\]{width:600px}}@media(min-width:64rem){.lg\:basis-1\/3{flex-basis:calc(1/3 * 100%)}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-\[\.75fr_1fr\]{grid-template-columns:.75fr 1fr}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-slate-800:is(.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-900:is(.dark *){background-color:var(--color-slate-900)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}@media(hover:hover){.dark\:hover\:text-accent-foreground:is(.dark *):hover{color:var(--accent-foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[active\=true\]\:aria-invalid\:ring-destructive\/40:is(.dark *)[data-active=true][aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:var(--border)}@supports (color: color-mix(in lab,red,red)){.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:color-mix(in oklab,var(--border) 50%,transparent)}}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-layer\]\:outline-hidden .recharts-layer{outline:2px solid transparent;outline-offset:2px}}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector{fill:var(--muted)}.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:var(--border)}.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-sector\]\:outline-hidden .recharts-sector{outline:2px solid transparent;outline-offset:2px}}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.\[\&_\.recharts-surface\]\:outline-hidden .recharts-surface{outline:2px solid transparent;outline-offset:2px}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing) * 0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing) * 5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing) * 12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing) * 2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing) * 3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing) * 5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing) * 5)}.\[\&_p\]\:leading-relaxed p{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0px}.\[\&\:\:-webkit-calendar-picker-indicator\]\:hidden::-webkit-calendar-picker-indicator{display:none}.\[\&\:\:-webkit-calendar-picker-indicator\]\:appearance-none::-webkit-calendar-picker-indicator{-webkit-appearance:none;-moz-appearance:none;appearance:none}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6:is(.border-b){padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6:is(.border-t){padding-top:calc(var(--spacing) * 6)}:is(.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_next>svg){rotate:180deg}:is(.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *) *):is(.rdp-button_previous>svg){rotate:180deg}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>div\]\:bg-blue-500>div{background-color:var(--color-blue-500)}.\[\&\>div\]\:bg-green-500>div{background-color:var(--color-green-500)}.\[\&\>div\]\:bg-orange-500>div{background-color:var(--color-orange-500)}.\[\&\>div\]\:bg-red-500>div{background-color:var(--color-red-500)}.\[\&\>div\]\:bg-yellow-500>div{background-color:var(--color-yellow-500)}.\[\&\>div\]\:bg-gradient-to-r>div{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.\[\&\>div\]\:from-purple-500>div{--tw-gradient-from: var(--color-purple-500);--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))}.\[\&\>div\]\:to-pink-500>div{--tw-gradient-to: var(--color-pink-500);--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))}.\[\&\>span\]\:text-xs>span{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.\[\&\>span\]\:opacity-70>span{opacity:70%}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:size-3\.5>svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:h-2\.5>svg{height:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:h-3>svg{height:calc(var(--spacing) * 3)}.\[\&\>svg\]\:w-2\.5>svg{width:calc(var(--spacing) * 2.5)}.\[\&\>svg\]\:w-3>svg{width:calc(var(--spacing) * 3)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y: calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentcolor}.\[\&\>svg\]\:text-muted-foreground>svg{color:var(--muted-foreground)}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0px}.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent{background-color:transparent}[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}}@media(hover:hover){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax: "*"; inherits: false; initial-value: 0s;}@property --tw-animation-direction{syntax: "*"; inherits: false; initial-value: normal;}@property --tw-animation-duration{syntax: "*"; inherits: false;}@property --tw-animation-fill-mode{syntax: "*"; inherits: false; initial-value: none;}@property --tw-animation-iteration-count{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-enter-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-enter-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-opacity{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-rotate{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-scale{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-exit-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-exit-translate-y{syntax: "*"; inherits: false; initial-value: 0;}:root{--background: oklch(1 0 0);--foreground: oklch(.145 0 0);--card: oklch(1 0 0);--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: oklch(67.35% .153 159.64);--primary-foreground: oklch(.985 0 0);--secondary: oklch(.97 0 0);--secondary-foreground: oklch(.205 0 0);--muted: oklch(.97 0 0);--muted-foreground: oklch(.556 0 0);--accent: oklch(.97 0 0);--accent-foreground: oklch(.205 0 0);--destructive: oklch(.577 .245 27.325);--destructive-foreground: oklch(.577 .245 27.325);--border: oklch(.922 0 0);--input: oklch(.922 0 0);--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: oklch(.205 0 0);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(88.18% .202 159.34);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}@layer base{*{border-color:var(--border);outline-color:var(--ring)}@supports (color: color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@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-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: ""; 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: ""; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: ""; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-tracking{syntax: "*"; inherits: false;}@property --tw-ordinal{syntax: "*"; inherits: false;}@property --tw-slashed-zero{syntax: "*"; inherits: false;}@property --tw-numeric-figure{syntax: "*"; inherits: false;}@property --tw-numeric-spacing{syntax: "*"; inherits: false;}@property --tw-numeric-fraction{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: ""; 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: ""; 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: ""; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@property --tw-content{syntax: "*"; initial-value: ""; inherits: false;}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}to{height:0}}@keyframes caret-blink{0%,70%,to{opacity:1}20%,50%{opacity:0}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-duration: initial;--tw-ease: initial;--tw-content: "";--tw-animation-delay: 0s;--tw-animation-direction: normal;--tw-animation-duration: initial;--tw-animation-fill-mode: none;--tw-animation-iteration-count: 1;--tw-enter-opacity: 1;--tw-enter-rotate: 0;--tw-enter-scale: 1;--tw-enter-translate-x: 0;--tw-enter-translate-y: 0;--tw-exit-opacity: 1;--tw-exit-rotate: 0;--tw-exit-scale: 1;--tw-exit-translate-x: 0;--tw-exit-translate-y: 0}}}/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com *//*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--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-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}html,body{height:100%;margin:0;padding:0}body{background-color:var(--background);color:var(--foreground);font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif}#root{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0;border-radius:4px}::-webkit-scrollbar-thumb{background-color:#ffffff26;background-clip:content-box;border:2px solid #0000;border-radius:4px;transition:background-color .2s}::-webkit-scrollbar-thumb:hover{background-color:#ffffff40}::-webkit-scrollbar-thumb:active{background-color:#ffffff59}*{scrollbar-width:thin;scrollbar-color:#ffffff26 transparent}@media(max-width:768px){*{scrollbar-width:none}::-webkit-scrollbar{display:none}}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.left-3{left:calc(var(--spacing)*3)}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-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)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.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-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.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-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[150px\]{max-width:150px}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.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)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}: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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.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-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-dashed{--tw-border-style:dashed;border-style:dashed}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-gray-300{border-color:var(--color-gray-300)}.border-input{border-color:var(--input)}.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary)20%,transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.bg-background,.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-primary,.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent,.bg-sidebar-accent\/50{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab,red,red)){.bg-sidebar-accent\/50{background-color:color-mix(in oklab,var(--sidebar-accent)50%,transparent)}}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-white{background-color:var(--color-white)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-primary\/10{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab,var(--primary)10%,transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/20{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/20{--tw-gradient-from:color-mix(in oklab,var(--primary)20%,transparent)}}.from-primary\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-background{--tw-gradient-via:var(--background);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-background\/95{--tw-gradient-via:var(--background)}@supports (color:color-mix(in lab,red,red)){.via-background\/95{--tw-gradient-via:color-mix(in oklab,var(--background)95%,transparent)}}.via-background\/95{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-background{--tw-gradient-to:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-\[0\.3rem\]{padding-inline:.3rem}.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-6{padding-block:calc(var(--spacing)*6)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-\[0\.2rem\]{padding-block:.2rem}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-8{padding-top:calc(var(--spacing)*8)}.pr-1{padding-right:calc(var(--spacing)*1)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-9{padding-left:calc(var(--spacing)*9)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--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))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-sidebar-foreground,.text-sidebar-foreground\/40{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/40{color:color-mix(in oklab,var(--sidebar-foreground)40%,transparent)}}.text-sidebar-foreground\/60{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/60{color:color-mix(in oklab,var(--sidebar-foreground)60%,transparent)}}.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.lowercase{text-transform:lowercase}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.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)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-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-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media(hover:hover){.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-sidebar-foreground\/50::placeholder{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-sidebar-foreground\/50::placeholder{color:color-mix(in oklab,var(--sidebar-foreground)50%,transparent)}}@media(hover:hover){.hover\:border-primary:hover{border-color:var(--primary)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-blue-500\/10:hover{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/10:hover{background-color:color-mix(in oklab,var(--color-blue-500)10%,transparent)}}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-500\/10:hover{background-color:#6a72821a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gray-500\/10:hover{background-color:color-mix(in oklab,var(--color-gray-500)10%,transparent)}}.hover\:bg-green-500\/10:hover{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/10:hover{background-color:color-mix(in oklab,var(--color-green-500)10%,transparent)}}.hover\:bg-green-500\/20:hover{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/20:hover{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-sidebar:hover{background-color:var(--sidebar)}.hover\:bg-sidebar-accent:hover,.hover\:bg-sidebar-accent\/30:hover{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sidebar-accent\/30:hover{background-color:color-mix(in oklab,var(--sidebar-accent)30%,transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-yellow-500\/10:hover{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/10:hover{background-color:color-mix(in oklab,var(--color-yellow-500)10%,transparent)}}.hover\:text-blue-400:hover{color:var(--color-blue-400)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-green-400:hover{color:var(--color-green-400)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:text-yellow-400:hover{color:var(--color-yellow-400)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-black\/10:hover{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:shadow-black\/10:hover{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)10%,transparent)var(--tw-shadow-alpha),transparent)}}}.focus\:border-sidebar-border:focus{border-color:var(--sidebar-border)}.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-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:w-auto{width:auto}.sm\:max-w-md{max-width:var(--container-md)}.sm\:gap-0{gap:calc(var(--spacing)*0)}}@media(min-width:48rem){.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:bg-red-600{background-color:var(--color-red-600)}.dark\:bg-sidebar-accent\/50{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-sidebar-accent\/50{background-color:color-mix(in oklab,var(--sidebar-accent)50%,transparent)}}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-red-500{color:var(--color-red-500)}.dark\:placeholder\:text-gray-400::placeholder{color:var(--color-gray-400)}@media(hover:hover){.dark\:hover\:bg-red-700:hover{background-color:var(--color-red-700)}.dark\:hover\:bg-sidebar:hover{background-color:var(--sidebar)}.dark\:hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.dark\:hover\:text-gray-400:hover{color:var(--color-gray-400)}}}.scrollbar-hidden{scrollbar-width:none!important;-ms-overflow-style:none!important}.scrollbar-hidden::-webkit-scrollbar{display:none!important}.scrollbar-thin::-webkit-scrollbar{width:6px!important;height:6px!important}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:#9ca3af4d!important;border-radius:3px!important}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background-color:#9ca3af80!important}}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";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:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";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:"";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:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
diff --git a/manager/dist/assets/index-CRnVAbpY.js b/manager/dist/assets/index-CRnVAbpY.js
deleted file mode 100644
index d466c7c..0000000
--- a/manager/dist/assets/index-CRnVAbpY.js
+++ /dev/null
@@ -1,340 +0,0 @@
-var iC=Object.defineProperty;var lC=(t,n,r)=>n in t?iC(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r;var tb=(t,n,r)=>lC(t,typeof n!="symbol"?n+"":n,r);function cC(t,n){for(var r=0;rs[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const c of i)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function r(i){const c={};return i.integrity&&(c.integrity=i.integrity),i.referrerPolicy&&(c.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?c.credentials="include":i.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function s(i){if(i.ep)return;i.ep=!0;const c=r(i);fetch(i.href,c)}})();function ix(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var om={exports:{}},Pi={};/**
- * @license React
- * react-jsx-runtime.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var nb;function uC(){if(nb)return Pi;nb=1;var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function r(s,i,c){var u=null;if(c!==void 0&&(u=""+c),i.key!==void 0&&(u=""+i.key),"key"in i){c={};for(var f in i)f!=="key"&&(c[f]=i[f])}else c=i;return i=c.ref,{$$typeof:t,type:s,key:u,ref:i!==void 0?i:null,props:c}}return Pi.Fragment=n,Pi.jsx=r,Pi.jsxs=r,Pi}var ab;function dC(){return ab||(ab=1,om.exports=uC()),om.exports}var p=dC(),im={exports:{}},Pe={};/**
- * @license React
- * react.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var rb;function fC(){if(rb)return Pe;rb=1;var t=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),w=Symbol.iterator;function N(T){return T===null||typeof T!="object"?null:(T=w&&T[w]||T["@@iterator"],typeof T=="function"?T:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,C={};function A(T,Y,D){this.props=T,this.context=Y,this.refs=C,this.updater=D||E}A.prototype.isReactComponent={},A.prototype.setState=function(T,Y){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,Y,"setState")},A.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function O(){}O.prototype=A.prototype;function R(T,Y,D){this.props=T,this.context=Y,this.refs=C,this.updater=D||E}var L=R.prototype=new O;L.constructor=R,S(L,A.prototype),L.isPureReactComponent=!0;var I=Array.isArray;function ee(){}var U={H:null,A:null,T:null,S:null},Q=Object.prototype.hasOwnProperty;function le(T,Y,D){var V=D.ref;return{$$typeof:t,type:T,key:Y,ref:V!==void 0?V:null,props:D}}function ue(T,Y){return le(T.type,Y,T.props)}function me(T){return typeof T=="object"&&T!==null&&T.$$typeof===t}function re(T){var Y={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(D){return Y[D]})}var X=/\/+/g;function he(T,Y){return typeof T=="object"&&T!==null&&T.key!=null?re(""+T.key):Y.toString(36)}function be(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(ee,ee):(T.status="pending",T.then(function(Y){T.status==="pending"&&(T.status="fulfilled",T.value=Y)},function(Y){T.status==="pending"&&(T.status="rejected",T.reason=Y)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function j(T,Y,D,V,te){var fe=typeof T;(fe==="undefined"||fe==="boolean")&&(T=null);var oe=!1;if(T===null)oe=!0;else switch(fe){case"bigint":case"string":case"number":oe=!0;break;case"object":switch(T.$$typeof){case t:case n:oe=!0;break;case v:return oe=T._init,j(oe(T._payload),Y,D,V,te)}}if(oe)return te=te(T),oe=V===""?"."+he(T,0):V,I(te)?(D="",oe!=null&&(D=oe.replace(X,"$&/")+"/"),j(te,Y,D,"",function(_e){return _e})):te!=null&&(me(te)&&(te=ue(te,D+(te.key==null||T&&T.key===te.key?"":(""+te.key).replace(X,"$&/")+"/")+oe)),Y.push(te)),1;oe=0;var K=V===""?".":V+":";if(I(T))for(var de=0;de>>1,we=j[se];if(0>>1;sei(D,P))Vi(te,D)?(j[se]=te,j[V]=P,se=V):(j[se]=D,j[Y]=P,se=Y);else if(Vi(te,P))j[se]=te,j[V]=P,se=V;else break e}}return Z}function i(j,Z){var P=j.sortIndex-Z.sortIndex;return P!==0?P:j.id-Z.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var c=performance;t.unstable_now=function(){return c.now()}}else{var u=Date,f=u.now();t.unstable_now=function(){return u.now()-f}}var g=[],h=[],v=1,y=null,w=3,N=!1,E=!1,S=!1,C=!1,A=typeof setTimeout=="function"?setTimeout:null,O=typeof clearTimeout=="function"?clearTimeout:null,R=typeof setImmediate<"u"?setImmediate:null;function L(j){for(var Z=r(h);Z!==null;){if(Z.callback===null)s(h);else if(Z.startTime<=j)s(h),Z.sortIndex=Z.expirationTime,n(g,Z);else break;Z=r(h)}}function I(j){if(S=!1,L(j),!E)if(r(g)!==null)E=!0,ee||(ee=!0,re());else{var Z=r(h);Z!==null&&be(I,Z.startTime-j)}}var ee=!1,U=-1,Q=5,le=-1;function ue(){return C?!0:!(t.unstable_now()-lej&&ue());){var se=y.callback;if(typeof se=="function"){y.callback=null,w=y.priorityLevel;var we=se(y.expirationTime<=j);if(j=t.unstable_now(),typeof we=="function"){y.callback=we,L(j),Z=!0;break t}y===r(g)&&s(g),L(j)}else s(g);y=r(g)}if(y!==null)Z=!0;else{var T=r(h);T!==null&&be(I,T.startTime-j),Z=!1}}break e}finally{y=null,w=P,N=!1}Z=void 0}}finally{Z?re():ee=!1}}}var re;if(typeof R=="function")re=function(){R(me)};else if(typeof MessageChannel<"u"){var X=new MessageChannel,he=X.port2;X.port1.onmessage=me,re=function(){he.postMessage(null)}}else re=function(){A(me,0)};function be(j,Z){U=A(function(){j(t.unstable_now())},Z)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(j){j.callback=null},t.unstable_forceFrameRate=function(j){0>j||125se?(j.sortIndex=P,n(h,j),r(g)===null&&j===r(h)&&(S?(O(U),U=-1):S=!0,be(I,P-se))):(j.sortIndex=we,n(g,j),E||N||(E=!0,ee||(ee=!0,re()))),j},t.unstable_shouldYield=ue,t.unstable_wrapCallback=function(j){var Z=w;return function(){var P=w;w=Z;try{return j.apply(this,arguments)}finally{w=P}}}})(um)),um}var ib;function hC(){return ib||(ib=1,cm.exports=mC()),cm.exports}var dm={exports:{}},cn={};/**
- * @license React
- * react-dom.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var lb;function pC(){if(lb)return cn;lb=1;var t=mh();function n(g){var h="https://react.dev/errors/"+g;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}return t(),dm.exports=pC(),dm.exports}/**
- * @license React
- * react-dom-client.production.js
- *
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */var ub;function gC(){if(ub)return Hi;ub=1;var t=hC(),n=mh(),r=lx();function s(e){var a="https://react.dev/errors/"+e;if(1we||(e.current=se[we],se[we]=null,we--)}function D(e,a){we++,se[we]=e.current,e.current=a}var V=T(null),te=T(null),fe=T(null),oe=T(null);function K(e,a){switch(D(fe,a),D(te,e),D(V,null),a.nodeType){case 9:case 11:e=(e=a.documentElement)&&(e=e.namespaceURI)?_v(e):0;break;default:if(e=a.tagName,a=a.namespaceURI)a=_v(a),e=Cv(a,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Y(V),D(V,e)}function de(){Y(V),Y(te),Y(fe)}function _e(e){e.memoizedState!==null&&D(oe,e);var a=V.current,o=Cv(a,e.type);a!==o&&(D(te,e),D(V,o))}function rt(e){te.current===e&&(Y(V),Y(te)),oe.current===e&&(Y(oe),zi._currentValue=P)}var De,Le;function xe(e){if(De===void 0)try{throw Error()}catch(o){var a=o.stack.trim().match(/\n( *(at )?)/);De=a&&a[1]||"",Le=-1)":-1d||M[l]!==F[d]){var ne=`
-`+M[l].replace(" at new "," at ");return e.displayName&&ne.includes("")&&(ne=ne.replace("",e.displayName)),ne}while(1<=l&&0<=d);break}}}finally{je=!1,Error.prepareStackTrace=o}return(o=e?e.displayName||e.name:"")?xe(o):""}function pt(e,a){switch(e.tag){case 26:case 27:case 5:return xe(e.type);case 16:return xe("Lazy");case 13:return e.child!==a&&a!==null?xe("Suspense Fallback"):xe("Suspense");case 19:return xe("SuspenseList");case 0:case 15:return at(e.type,!1);case 11:return at(e.type.render,!1);case 1:return at(e.type,!0);case 31:return xe("Activity");default:return""}}function Je(e){try{var a="",o=null;do a+=pt(e,o),o=e,e=e.return;while(e);return a}catch(l){return`
-Error generating stack: `+l.message+`
-`+l.stack}}var Ue=Object.prototype.hasOwnProperty,k=t.unstable_scheduleCallback,H=t.unstable_cancelCallback,$=t.unstable_shouldYield,ye=t.unstable_requestPaint,pe=t.unstable_now,ge=t.unstable_getCurrentPriorityLevel,Se=t.unstable_ImmediatePriority,qe=t.unstable_UserBlockingPriority,Xe=t.unstable_NormalPriority,Ot=t.unstable_LowPriority,on=t.unstable_IdlePriority,dn=t.log,Fn=t.unstable_setDisableYieldValue,Ft=null,Nt=null;function fn(e){if(typeof dn=="function"&&Fn(e),Nt&&typeof Nt.setStrictMode=="function")try{Nt.setStrictMode(Ft,e)}catch{}}var $t=Math.clz32?Math.clz32:ya,Xo=Math.log,cr=Math.LN2;function ya(e){return e>>>=0,e===0?32:31-(Xo(e)/cr|0)|0}var As=256,Rs=262144,Xr=4194304;function va(e){var a=e&42;if(a!==0)return a;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Be(e,a,o){var l=e.pendingLanes;if(l===0)return 0;var d=0,m=e.suspendedLanes,x=e.pingedLanes;e=e.warmLanes;var _=l&134217727;return _!==0?(l=_&~m,l!==0?d=va(l):(x&=_,x!==0?d=va(x):o||(o=_&~e,o!==0&&(d=va(o))))):(_=l&~m,_!==0?d=va(_):x!==0?d=va(x):o||(o=l&~e,o!==0&&(d=va(o)))),d===0?0:a!==0&&a!==d&&(a&m)===0&&(m=d&-d,o=a&-a,m>=o||m===32&&(o&4194048)!==0)?a:d}function Et(e,a){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&a)===0}function Kt(e,a){switch(e){case 1:case 2:case 4:case 8:case 64:return a+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ln(){var e=Xr;return Xr<<=1,(Xr&62914560)===0&&(Xr=4194304),e}function ur(e){for(var a=[],o=0;31>o;o++)a.push(e);return a}function At(e,a){e.pendingLanes|=a,a!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function gn(e,a,o,l,d,m){var x=e.pendingLanes;e.pendingLanes=o,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=o,e.entangledLanes&=o,e.errorRecoveryDisabledLanes&=o,e.shellSuspendCounter=0;var _=e.entanglements,M=e.expirationTimes,F=e.hiddenUpdates;for(o=x&~o;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var tE=/[\n"\\]/g;function Gn(e){return e.replace(tE,function(a){return"\\"+a.charCodeAt(0).toString(16)+" "})}function Ju(e,a,o,l,d,m,x,_){e.name="",x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.type=x:e.removeAttribute("type"),a!=null?x==="number"?(a===0&&e.value===""||e.value!=a)&&(e.value=""+$n(a)):e.value!==""+$n(a)&&(e.value=""+$n(a)):x!=="submit"&&x!=="reset"||e.removeAttribute("value"),a!=null?ed(e,x,$n(a)):o!=null?ed(e,x,$n(o)):l!=null&&e.removeAttribute("value"),d==null&&m!=null&&(e.defaultChecked=!!m),d!=null&&(e.checked=d&&typeof d!="function"&&typeof d!="symbol"),_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"?e.name=""+$n(_):e.removeAttribute("name")}function vp(e,a,o,l,d,m,x,_){if(m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(e.type=m),a!=null||o!=null){if(!(m!=="submit"&&m!=="reset"||a!=null)){Wu(e);return}o=o!=null?""+$n(o):"",a=a!=null?""+$n(a):o,_||a===e.value||(e.value=a),e.defaultValue=a}l=l??d,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=_?e.checked:!!l,e.defaultChecked=!!l,x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(e.name=x),Wu(e)}function ed(e,a,o){a==="number"&&xl(e.ownerDocument)===e||e.defaultValue===""+o||(e.defaultValue=""+o)}function zs(e,a,o,l){if(e=e.options,a){a={};for(var d=0;d"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sd=!1;if(Ua)try{var Jo={};Object.defineProperty(Jo,"passive",{get:function(){sd=!0}}),window.addEventListener("test",Jo,Jo),window.removeEventListener("test",Jo,Jo)}catch{sd=!1}var fr=null,od=null,Sl=null;function Cp(){if(Sl)return Sl;var e,a=od,o=a.length,l,d="value"in fr?fr.value:fr.textContent,m=d.length;for(e=0;e=ni),Op=" ",kp=!1;function Mp(e,a){switch(e){case"keyup":return TE.indexOf(a.keyCode)!==-1;case"keydown":return a.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Dp(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ps=!1;function OE(e,a){switch(e){case"compositionend":return Dp(a);case"keypress":return a.which!==32?null:(kp=!0,Op);case"textInput":return e=a.data,e===Op&&kp?null:e;default:return null}}function kE(e,a){if(Ps)return e==="compositionend"||!dd&&Mp(e,a)?(e=Cp(),Sl=od=fr=null,Ps=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(a.ctrlKey||a.altKey||a.metaKey)||a.ctrlKey&&a.altKey){if(a.char&&1=a)return{node:o,offset:a-e};e=l}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Ip(o)}}function Fp(e,a){return e&&a?e===a?!0:e&&e.nodeType===3?!1:a&&a.nodeType===3?Fp(e,a.parentNode):"contains"in e?e.contains(a):e.compareDocumentPosition?!!(e.compareDocumentPosition(a)&16):!1:!1}function $p(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var a=xl(e.document);a instanceof e.HTMLIFrameElement;){try{var o=typeof a.contentWindow.location.href=="string"}catch{o=!1}if(o)e=a.contentWindow;else break;a=xl(e.document)}return a}function hd(e){var a=e&&e.nodeName&&e.nodeName.toLowerCase();return a&&(a==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||a==="textarea"||e.contentEditable==="true")}var HE=Ua&&"documentMode"in document&&11>=document.documentMode,Hs=null,pd=null,oi=null,gd=!1;function Gp(e,a,o){var l=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;gd||Hs==null||Hs!==xl(l)||(l=Hs,"selectionStart"in l&&hd(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),oi&&si(oi,l)||(oi=l,l=pc(pd,"onSelect"),0>=x,d-=x,ba=1<<32-$t(a)+d|o<Ge?(tt=Oe,Oe=null):tt=Oe.sibling;var ct=G(B,Oe,q[Ge],ie);if(ct===null){Oe===null&&(Oe=tt);break}e&&Oe&&ct.alternate===null&&a(B,Oe),z=m(ct,z,Ge),lt===null?Me=ct:lt.sibling=ct,lt=ct,Oe=tt}if(Ge===q.length)return o(B,Oe),nt&&Pa(B,Ge),Me;if(Oe===null){for(;GeGe?(tt=Oe,Oe=null):tt=Oe.sibling;var Dr=G(B,Oe,ct.value,ie);if(Dr===null){Oe===null&&(Oe=tt);break}e&&Oe&&Dr.alternate===null&&a(B,Oe),z=m(Dr,z,Ge),lt===null?Me=Dr:lt.sibling=Dr,lt=Dr,Oe=tt}if(ct.done)return o(B,Oe),nt&&Pa(B,Ge),Me;if(Oe===null){for(;!ct.done;Ge++,ct=q.next())ct=ce(B,ct.value,ie),ct!==null&&(z=m(ct,z,Ge),lt===null?Me=ct:lt.sibling=ct,lt=ct);return nt&&Pa(B,Ge),Me}for(Oe=l(Oe);!ct.done;Ge++,ct=q.next())ct=J(Oe,B,Ge,ct.value,ie),ct!==null&&(e&&ct.alternate!==null&&Oe.delete(ct.key===null?Ge:ct.key),z=m(ct,z,Ge),lt===null?Me=ct:lt.sibling=ct,lt=ct);return e&&Oe.forEach(function(oC){return a(B,oC)}),nt&&Pa(B,Ge),Me}function vt(B,z,q,ie){if(typeof q=="object"&&q!==null&&q.type===S&&q.key===null&&(q=q.props.children),typeof q=="object"&&q!==null){switch(q.$$typeof){case N:e:{for(var Me=q.key;z!==null;){if(z.key===Me){if(Me=q.type,Me===S){if(z.tag===7){o(B,z.sibling),ie=d(z,q.props.children),ie.return=B,B=ie;break e}}else if(z.elementType===Me||typeof Me=="object"&&Me!==null&&Me.$$typeof===Q&&is(Me)===z.type){o(B,z.sibling),ie=d(z,q.props),fi(ie,q),ie.return=B,B=ie;break e}o(B,z);break}else a(B,z);z=z.sibling}q.type===S?(ie=ns(q.props.children,B.mode,ie,q.key),ie.return=B,B=ie):(ie=kl(q.type,q.key,q.props,null,B.mode,ie),fi(ie,q),ie.return=B,B=ie)}return x(B);case E:e:{for(Me=q.key;z!==null;){if(z.key===Me)if(z.tag===4&&z.stateNode.containerInfo===q.containerInfo&&z.stateNode.implementation===q.implementation){o(B,z.sibling),ie=d(z,q.children||[]),ie.return=B,B=ie;break e}else{o(B,z);break}else a(B,z);z=z.sibling}ie=Ed(q,B.mode,ie),ie.return=B,B=ie}return x(B);case Q:return q=is(q),vt(B,z,q,ie)}if(be(q))return Ce(B,z,q,ie);if(re(q)){if(Me=re(q),typeof Me!="function")throw Error(s(150));return q=Me.call(q),ze(B,z,q,ie)}if(typeof q.then=="function")return vt(B,z,Pl(q),ie);if(q.$$typeof===R)return vt(B,z,zl(B,q),ie);Hl(B,q)}return typeof q=="string"&&q!==""||typeof q=="number"||typeof q=="bigint"?(q=""+q,z!==null&&z.tag===6?(o(B,z.sibling),ie=d(z,q),ie.return=B,B=ie):(o(B,z),ie=Sd(q,B.mode,ie),ie.return=B,B=ie),x(B)):o(B,z)}return function(B,z,q,ie){try{di=0;var Me=vt(B,z,q,ie);return Qs=null,Me}catch(Oe){if(Oe===Ks||Oe===Ul)throw Oe;var lt=On(29,Oe,null,B.mode);return lt.lanes=ie,lt.return=B,lt}finally{}}}var cs=pg(!0),gg=pg(!1),yr=!1;function zd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ld(e,a){e=e.updateQueue,a.updateQueue===e&&(a.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vr(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function br(e,a,o){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(dt&2)!==0){var d=l.pending;return d===null?a.next=a:(a.next=d.next,d.next=a),l.pending=a,a=Ol(e),Jp(e,null,o),a}return jl(e,l,a,o),Ol(e)}function mi(e,a,o){if(a=a.updateQueue,a!==null&&(a=a.shared,(o&4194048)!==0)){var l=a.lanes;l&=e.pendingLanes,o|=l,a.lanes=o,yn(e,o)}}function Ud(e,a){var o=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,o===l)){var d=null,m=null;if(o=o.firstBaseUpdate,o!==null){do{var x={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};m===null?d=m=x:m=m.next=x,o=o.next}while(o!==null);m===null?d=m=a:m=m.next=a}else d=m=a;o={baseState:l.baseState,firstBaseUpdate:d,lastBaseUpdate:m,shared:l.shared,callbacks:l.callbacks},e.updateQueue=o;return}e=o.lastBaseUpdate,e===null?o.firstBaseUpdate=a:e.next=a,o.lastBaseUpdate=a}var Bd=!1;function hi(){if(Bd){var e=Xs;if(e!==null)throw e}}function pi(e,a,o,l){Bd=!1;var d=e.updateQueue;yr=!1;var m=d.firstBaseUpdate,x=d.lastBaseUpdate,_=d.shared.pending;if(_!==null){d.shared.pending=null;var M=_,F=M.next;M.next=null,x===null?m=F:x.next=F,x=M;var ne=e.alternate;ne!==null&&(ne=ne.updateQueue,_=ne.lastBaseUpdate,_!==x&&(_===null?ne.firstBaseUpdate=F:_.next=F,ne.lastBaseUpdate=M))}if(m!==null){var ce=d.baseState;x=0,ne=F=M=null,_=m;do{var G=_.lane&-536870913,J=G!==_.lane;if(J?(et&G)===G:(l&G)===G){G!==0&&G===Zs&&(Bd=!0),ne!==null&&(ne=ne.next={lane:0,tag:_.tag,payload:_.payload,callback:null,next:null});e:{var Ce=e,ze=_;G=a;var vt=o;switch(ze.tag){case 1:if(Ce=ze.payload,typeof Ce=="function"){ce=Ce.call(vt,ce,G);break e}ce=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=ze.payload,G=typeof Ce=="function"?Ce.call(vt,ce,G):Ce,G==null)break e;ce=y({},ce,G);break e;case 2:yr=!0}}G=_.callback,G!==null&&(e.flags|=64,J&&(e.flags|=8192),J=d.callbacks,J===null?d.callbacks=[G]:J.push(G))}else J={lane:G,tag:_.tag,payload:_.payload,callback:_.callback,next:null},ne===null?(F=ne=J,M=ce):ne=ne.next=J,x|=G;if(_=_.next,_===null){if(_=d.shared.pending,_===null)break;J=_,_=J.next,J.next=null,d.lastBaseUpdate=J,d.shared.pending=null}}while(!0);ne===null&&(M=ce),d.baseState=M,d.firstBaseUpdate=F,d.lastBaseUpdate=ne,m===null&&(d.shared.lanes=0),_r|=x,e.lanes=x,e.memoizedState=ce}}function yg(e,a){if(typeof e!="function")throw Error(s(191,e));e.call(a)}function vg(e,a){var o=e.callbacks;if(o!==null)for(e.callbacks=null,e=0;em?m:8;var x=j.T,_={};j.T=_,af(e,!1,a,o);try{var M=d(),F=j.S;if(F!==null&&F(_,M),M!==null&&typeof M=="object"&&typeof M.then=="function"){var ne=XE(M,l);vi(e,a,ne,Ln(e))}else vi(e,a,l,Ln(e))}catch(ce){vi(e,a,{then:function(){},status:"rejected",reason:ce},Ln())}finally{Z.p=m,x!==null&&_.types!==null&&(x.types=_.types),j.T=x}}function t_(){}function tf(e,a,o,l){if(e.tag!==5)throw Error(s(476));var d=Kg(e).queue;Xg(e,d,a,P,o===null?t_:function(){return Qg(e),o(l)})}function Kg(e){var a=e.memoizedState;if(a!==null)return a;a={memoizedState:P,baseState:P,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:qa,lastRenderedState:P},next:null};var o={};return a.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:qa,lastRenderedState:o},next:null},e.memoizedState=a,e=e.alternate,e!==null&&(e.memoizedState=a),a}function Qg(e){var a=Kg(e);a.next===null&&(a=e.alternate.memoizedState),vi(e,a.next.queue,{},Ln())}function nf(){return nn(zi)}function Wg(){return Mt().memoizedState}function Jg(){return Mt().memoizedState}function n_(e){for(var a=e.return;a!==null;){switch(a.tag){case 24:case 3:var o=Ln();e=vr(o);var l=br(a,e,o);l!==null&&(Cn(l,a,o),mi(l,a,o)),a={cache:Od()},e.payload=a;return}a=a.return}}function a_(e,a,o){var l=Ln();o={lane:l,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Kl(e)?ty(a,o):(o=xd(e,a,o,l),o!==null&&(Cn(o,e,l),ny(o,a,l)))}function ey(e,a,o){var l=Ln();vi(e,a,o,l)}function vi(e,a,o,l){var d={lane:l,revertLane:0,gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null};if(Kl(e))ty(a,d);else{var m=e.alternate;if(e.lanes===0&&(m===null||m.lanes===0)&&(m=a.lastRenderedReducer,m!==null))try{var x=a.lastRenderedState,_=m(x,o);if(d.hasEagerState=!0,d.eagerState=_,jn(_,x))return jl(e,a,d,0),bt===null&&Tl(),!1}catch{}finally{}if(o=xd(e,a,d,l),o!==null)return Cn(o,e,l),ny(o,a,l),!0}return!1}function af(e,a,o,l){if(l={lane:2,revertLane:Lf(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Kl(e)){if(a)throw Error(s(479))}else a=xd(e,o,l,2),a!==null&&Cn(a,e,2)}function Kl(e){var a=e.alternate;return e===Fe||a!==null&&a===Fe}function ty(e,a){Js=ql=!0;var o=e.pending;o===null?a.next=a:(a.next=o.next,o.next=a),e.pending=a}function ny(e,a,o){if((o&4194048)!==0){var l=a.lanes;l&=e.pendingLanes,o|=l,a.lanes=o,yn(e,o)}}var bi={readContext:nn,use:Gl,useCallback:Rt,useContext:Rt,useEffect:Rt,useImperativeHandle:Rt,useLayoutEffect:Rt,useInsertionEffect:Rt,useMemo:Rt,useReducer:Rt,useRef:Rt,useState:Rt,useDebugValue:Rt,useDeferredValue:Rt,useTransition:Rt,useSyncExternalStore:Rt,useId:Rt,useHostTransitionStatus:Rt,useFormState:Rt,useActionState:Rt,useOptimistic:Rt,useMemoCache:Rt,useCacheRefresh:Rt};bi.useEffectEvent=Rt;var ay={readContext:nn,use:Gl,useCallback:function(e,a){return mn().memoizedState=[e,a===void 0?null:a],e},useContext:nn,useEffect:Hg,useImperativeHandle:function(e,a,o){o=o!=null?o.concat([e]):null,Zl(4194308,4,Fg.bind(null,a,e),o)},useLayoutEffect:function(e,a){return Zl(4194308,4,e,a)},useInsertionEffect:function(e,a){Zl(4,2,e,a)},useMemo:function(e,a){var o=mn();a=a===void 0?null:a;var l=e();if(us){fn(!0);try{e()}finally{fn(!1)}}return o.memoizedState=[l,a],l},useReducer:function(e,a,o){var l=mn();if(o!==void 0){var d=o(a);if(us){fn(!0);try{o(a)}finally{fn(!1)}}}else d=a;return l.memoizedState=l.baseState=d,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:d},l.queue=e,e=e.dispatch=a_.bind(null,Fe,e),[l.memoizedState,e]},useRef:function(e){var a=mn();return e={current:e},a.memoizedState=e},useState:function(e){e=Kd(e);var a=e.queue,o=ey.bind(null,Fe,a);return a.dispatch=o,[e.memoizedState,o]},useDebugValue:Jd,useDeferredValue:function(e,a){var o=mn();return ef(o,e,a)},useTransition:function(){var e=Kd(!1);return e=Xg.bind(null,Fe,e.queue,!0,!1),mn().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,a,o){var l=Fe,d=mn();if(nt){if(o===void 0)throw Error(s(407));o=o()}else{if(o=a(),bt===null)throw Error(s(349));(et&127)!==0||_g(l,a,o)}d.memoizedState=o;var m={value:o,getSnapshot:a};return d.queue=m,Hg(Ng.bind(null,l,m,e),[e]),l.flags|=2048,to(9,{destroy:void 0},Cg.bind(null,l,m,o,a),null),o},useId:function(){var e=mn(),a=bt.identifierPrefix;if(nt){var o=xa,l=ba;o=(l&~(1<<32-$t(l)-1)).toString(32)+o,a="_"+a+"R_"+o,o=Fl++,0<\/script>",m=m.removeChild(m.firstChild);break;case"select":m=typeof l.is=="string"?x.createElement("select",{is:l.is}):x.createElement("select"),l.multiple?m.multiple=!0:l.size&&(m.size=l.size);break;default:m=typeof l.is=="string"?x.createElement(d,{is:l.is}):x.createElement(d)}}m[en]=a,m[bn]=l;e:for(x=a.child;x!==null;){if(x.tag===5||x.tag===6)m.appendChild(x.stateNode);else if(x.tag!==4&&x.tag!==27&&x.child!==null){x.child.return=x,x=x.child;continue}if(x===a)break e;for(;x.sibling===null;){if(x.return===null||x.return===a)break e;x=x.return}x.sibling.return=x.return,x=x.sibling}a.stateNode=m;e:switch(rn(m,d,l),d){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&$a(a)}}return St(a),vf(a,a.type,e===null?null:e.memoizedProps,a.pendingProps,o),null;case 6:if(e&&a.stateNode!=null)e.memoizedProps!==l&&$a(a);else{if(typeof l!="string"&&a.stateNode===null)throw Error(s(166));if(e=fe.current,Gs(a)){if(e=a.stateNode,o=a.memoizedProps,l=null,d=tn,d!==null)switch(d.tag){case 27:case 5:l=d.memoizedProps}e[en]=a,e=!!(e.nodeValue===o||l!==null&&l.suppressHydrationWarning===!0||Sv(e.nodeValue,o)),e||pr(a,!0)}else e=gc(e).createTextNode(l),e[en]=a,a.stateNode=e}return St(a),null;case 31:if(o=a.memoizedState,e===null||e.memoizedState!==null){if(l=Gs(a),o!==null){if(e===null){if(!l)throw Error(s(318));if(e=a.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(s(557));e[en]=a}else as(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;St(a),e=!1}else o=Ad(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),e=!0;if(!e)return a.flags&256?(Mn(a),a):(Mn(a),null);if((a.flags&128)!==0)throw Error(s(558))}return St(a),null;case 13:if(l=a.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(d=Gs(a),l!==null&&l.dehydrated!==null){if(e===null){if(!d)throw Error(s(318));if(d=a.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(s(317));d[en]=a}else as(),(a.flags&128)===0&&(a.memoizedState=null),a.flags|=4;St(a),d=!1}else d=Ad(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=d),d=!0;if(!d)return a.flags&256?(Mn(a),a):(Mn(a),null)}return Mn(a),(a.flags&128)!==0?(a.lanes=o,a):(o=l!==null,e=e!==null&&e.memoizedState!==null,o&&(l=a.child,d=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(d=l.alternate.memoizedState.cachePool.pool),m=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(m=l.memoizedState.cachePool.pool),m!==d&&(l.flags|=2048)),o!==e&&o&&(a.child.flags|=8192),tc(a,a.updateQueue),St(a),null);case 4:return de(),e===null&&Hf(a.stateNode.containerInfo),St(a),null;case 10:return Va(a.type),St(a),null;case 19:if(Y(kt),l=a.memoizedState,l===null)return St(a),null;if(d=(a.flags&128)!==0,m=l.rendering,m===null)if(d)wi(l,!1);else{if(Tt!==0||e!==null&&(e.flags&128)!==0)for(e=a.child;e!==null;){if(m=Il(e),m!==null){for(a.flags|=128,wi(l,!1),e=m.updateQueue,a.updateQueue=e,tc(a,e),a.subtreeFlags=0,e=o,o=a.child;o!==null;)eg(o,e),o=o.sibling;return D(kt,kt.current&1|2),nt&&Pa(a,l.treeForkCount),a.child}e=e.sibling}l.tail!==null&&pe()>oc&&(a.flags|=128,d=!0,wi(l,!1),a.lanes=4194304)}else{if(!d)if(e=Il(m),e!==null){if(a.flags|=128,d=!0,e=e.updateQueue,a.updateQueue=e,tc(a,e),wi(l,!0),l.tail===null&&l.tailMode==="hidden"&&!m.alternate&&!nt)return St(a),null}else 2*pe()-l.renderingStartTime>oc&&o!==536870912&&(a.flags|=128,d=!0,wi(l,!1),a.lanes=4194304);l.isBackwards?(m.sibling=a.child,a.child=m):(e=l.last,e!==null?e.sibling=m:a.child=m,l.last=m)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=pe(),e.sibling=null,o=kt.current,D(kt,d?o&1|2:o&1),nt&&Pa(a,l.treeForkCount),e):(St(a),null);case 22:case 23:return Mn(a),Hd(),l=a.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(a.flags|=8192):l&&(a.flags|=8192),l?(o&536870912)!==0&&(a.flags&128)===0&&(St(a),a.subtreeFlags&6&&(a.flags|=8192)):St(a),o=a.updateQueue,o!==null&&tc(a,o.retryQueue),o=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(o=e.memoizedState.cachePool.pool),l=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(l=a.memoizedState.cachePool.pool),l!==o&&(a.flags|=2048),e!==null&&Y(os),null;case 24:return o=null,e!==null&&(o=e.memoizedState.cache),a.memoizedState.cache!==o&&(a.flags|=2048),Va(Lt),St(a),null;case 25:return null;case 30:return null}throw Error(s(156,a.tag))}function l_(e,a){switch(Cd(a),a.tag){case 1:return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 3:return Va(Lt),de(),e=a.flags,(e&65536)!==0&&(e&128)===0?(a.flags=e&-65537|128,a):null;case 26:case 27:case 5:return rt(a),null;case 31:if(a.memoizedState!==null){if(Mn(a),a.alternate===null)throw Error(s(340));as()}return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 13:if(Mn(a),e=a.memoizedState,e!==null&&e.dehydrated!==null){if(a.alternate===null)throw Error(s(340));as()}return e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 19:return Y(kt),null;case 4:return de(),null;case 10:return Va(a.type),null;case 22:case 23:return Mn(a),Hd(),e!==null&&Y(os),e=a.flags,e&65536?(a.flags=e&-65537|128,a):null;case 24:return Va(Lt),null;case 25:return null;default:return null}}function Ay(e,a){switch(Cd(a),a.tag){case 3:Va(Lt),de();break;case 26:case 27:case 5:rt(a);break;case 4:de();break;case 31:a.memoizedState!==null&&Mn(a);break;case 13:Mn(a);break;case 19:Y(kt);break;case 10:Va(a.type);break;case 22:case 23:Mn(a),Hd(),e!==null&&Y(os);break;case 24:Va(Lt)}}function Si(e,a){try{var o=a.updateQueue,l=o!==null?o.lastEffect:null;if(l!==null){var d=l.next;o=d;do{if((o.tag&e)===e){l=void 0;var m=o.create,x=o.inst;l=m(),x.destroy=l}o=o.next}while(o!==d)}}catch(_){ht(a,a.return,_)}}function Sr(e,a,o){try{var l=a.updateQueue,d=l!==null?l.lastEffect:null;if(d!==null){var m=d.next;l=m;do{if((l.tag&e)===e){var x=l.inst,_=x.destroy;if(_!==void 0){x.destroy=void 0,d=a;var M=o,F=_;try{F()}catch(ne){ht(d,M,ne)}}}l=l.next}while(l!==m)}}catch(ne){ht(a,a.return,ne)}}function Ry(e){var a=e.updateQueue;if(a!==null){var o=e.stateNode;try{vg(a,o)}catch(l){ht(e,e.return,l)}}}function Ty(e,a,o){o.props=ds(e.type,e.memoizedProps),o.state=e.memoizedState;try{o.componentWillUnmount()}catch(l){ht(e,a,l)}}function Ei(e,a){try{var o=e.ref;if(o!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof o=="function"?e.refCleanup=o(l):o.current=l}}catch(d){ht(e,a,d)}}function wa(e,a){var o=e.ref,l=e.refCleanup;if(o!==null)if(typeof l=="function")try{l()}catch(d){ht(e,a,d)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(d){ht(e,a,d)}else o.current=null}function jy(e){var a=e.type,o=e.memoizedProps,l=e.stateNode;try{e:switch(a){case"button":case"input":case"select":case"textarea":o.autoFocus&&l.focus();break e;case"img":o.src?l.src=o.src:o.srcSet&&(l.srcset=o.srcSet)}}catch(d){ht(e,e.return,d)}}function bf(e,a,o){try{var l=e.stateNode;j_(l,e.type,o,a),l[bn]=a}catch(d){ht(e,e.return,d)}}function Oy(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Tr(e.type)||e.tag===4}function xf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Oy(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Tr(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function wf(e,a,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,a?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(e,a):(a=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,a.appendChild(e),o=o._reactRootContainer,o!=null||a.onclick!==null||(a.onclick=La));else if(l!==4&&(l===27&&Tr(e.type)&&(o=e.stateNode,a=null),e=e.child,e!==null))for(wf(e,a,o),e=e.sibling;e!==null;)wf(e,a,o),e=e.sibling}function nc(e,a,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,a?o.insertBefore(e,a):o.appendChild(e);else if(l!==4&&(l===27&&Tr(e.type)&&(o=e.stateNode),e=e.child,e!==null))for(nc(e,a,o),e=e.sibling;e!==null;)nc(e,a,o),e=e.sibling}function ky(e){var a=e.stateNode,o=e.memoizedProps;try{for(var l=e.type,d=a.attributes;d.length;)a.removeAttributeNode(d[0]);rn(a,l,o),a[en]=e,a[bn]=o}catch(m){ht(e,e.return,m)}}var Ga=!1,Pt=!1,Sf=!1,My=typeof WeakSet=="function"?WeakSet:Set,Wt=null;function c_(e,a){if(e=e.containerInfo,qf=Ec,e=$p(e),hd(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{o=(o=e.ownerDocument)&&o.defaultView||window;var l=o.getSelection&&o.getSelection();if(l&&l.rangeCount!==0){o=l.anchorNode;var d=l.anchorOffset,m=l.focusNode;l=l.focusOffset;try{o.nodeType,m.nodeType}catch{o=null;break e}var x=0,_=-1,M=-1,F=0,ne=0,ce=e,G=null;t:for(;;){for(var J;ce!==o||d!==0&&ce.nodeType!==3||(_=x+d),ce!==m||l!==0&&ce.nodeType!==3||(M=x+l),ce.nodeType===3&&(x+=ce.nodeValue.length),(J=ce.firstChild)!==null;)G=ce,ce=J;for(;;){if(ce===e)break t;if(G===o&&++F===d&&(_=x),G===m&&++ne===l&&(M=x),(J=ce.nextSibling)!==null)break;ce=G,G=ce.parentNode}ce=J}o=_===-1||M===-1?null:{start:_,end:M}}else o=null}o=o||{start:0,end:0}}else o=null;for(Ff={focusedElem:e,selectionRange:o},Ec=!1,Wt=a;Wt!==null;)if(a=Wt,e=a.child,(a.subtreeFlags&1028)!==0&&e!==null)e.return=a,Wt=e;else for(;Wt!==null;){switch(a=Wt,m=a.alternate,e=a.flags,a.tag){case 0:if((e&4)!==0&&(e=a.updateQueue,e=e!==null?e.events:null,e!==null))for(o=0;o title"))),rn(m,l,o),m[en]=e,Qt(m),l=m;break e;case"link":var x=Pv("link","href",d).get(l+(o.href||""));if(x){for(var _=0;_vt&&(x=vt,vt=ze,ze=x);var B=qp(_,ze),z=qp(_,vt);if(B&&z&&(J.rangeCount!==1||J.anchorNode!==B.node||J.anchorOffset!==B.offset||J.focusNode!==z.node||J.focusOffset!==z.offset)){var q=ce.createRange();q.setStart(B.node,B.offset),J.removeAllRanges(),ze>vt?(J.addRange(q),J.extend(z.node,z.offset)):(q.setEnd(z.node,z.offset),J.addRange(q))}}}}for(ce=[],J=_;J=J.parentNode;)J.nodeType===1&&ce.push({element:J,left:J.scrollLeft,top:J.scrollTop});for(typeof _.focus=="function"&&_.focus(),_=0;_o?32:o,j.T=null,o=Tf,Tf=null;var m=Nr,x=Qa;if(Gt=0,oo=Nr=null,Qa=0,(dt&6)!==0)throw Error(s(331));var _=dt;if(dt|=4,Fy(m.current),Vy(m,m.current,x,o),dt=_,Ti(0,!1),Nt&&typeof Nt.onPostCommitFiberRoot=="function")try{Nt.onPostCommitFiberRoot(Ft,m)}catch{}return!0}finally{Z.p=d,j.T=l,lv(e,a)}}function uv(e,a,o){a=Zn(o,a),a=lf(e.stateNode,a,2),e=br(e,a,2),e!==null&&(At(e,2),Sa(e))}function ht(e,a,o){if(e.tag===3)uv(e,e,o);else for(;a!==null;){if(a.tag===3){uv(a,e,o);break}else if(a.tag===1){var l=a.stateNode;if(typeof a.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Cr===null||!Cr.has(l))){e=Zn(o,e),o=dy(2),l=br(a,o,2),l!==null&&(fy(o,l,a,e),At(l,2),Sa(l));break}}a=a.return}}function Mf(e,a,o){var l=e.pingCache;if(l===null){l=e.pingCache=new f_;var d=new Set;l.set(a,d)}else d=l.get(a),d===void 0&&(d=new Set,l.set(a,d));d.has(o)||(Cf=!0,d.add(o),e=y_.bind(null,e,a,o),a.then(e,e))}function y_(e,a,o){var l=e.pingCache;l!==null&&l.delete(a),e.pingedLanes|=e.suspendedLanes&o,e.warmLanes&=~o,bt===e&&(et&o)===o&&(Tt===4||Tt===3&&(et&62914560)===et&&300>pe()-sc?(dt&2)===0&&io(e,0):Nf|=o,so===et&&(so=0)),Sa(e)}function dv(e,a){a===0&&(a=ln()),e=ts(e,a),e!==null&&(At(e,a),Sa(e))}function v_(e){var a=e.memoizedState,o=0;a!==null&&(o=a.retryLane),dv(e,o)}function b_(e,a){var o=0;switch(e.tag){case 31:case 13:var l=e.stateNode,d=e.memoizedState;d!==null&&(o=d.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(s(314))}l!==null&&l.delete(a),dv(e,o)}function x_(e,a){return k(e,a)}var fc=null,co=null,Df=!1,mc=!1,zf=!1,Rr=0;function Sa(e){e!==co&&e.next===null&&(co===null?fc=co=e:co=co.next=e),mc=!0,Df||(Df=!0,S_())}function Ti(e,a){if(!zf&&mc){zf=!0;do for(var o=!1,l=fc;l!==null;){if(e!==0){var d=l.pendingLanes;if(d===0)var m=0;else{var x=l.suspendedLanes,_=l.pingedLanes;m=(1<<31-$t(42|e)+1)-1,m&=d&~(x&~_),m=m&201326741?m&201326741|1:m?m|2:0}m!==0&&(o=!0,pv(l,m))}else m=et,m=Be(l,l===bt?m:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(m&3)===0||Et(l,m)||(o=!0,pv(l,m));l=l.next}while(o);zf=!1}}function w_(){fv()}function fv(){mc=Df=!1;var e=0;Rr!==0&&k_()&&(e=Rr);for(var a=pe(),o=null,l=fc;l!==null;){var d=l.next,m=mv(l,a);m===0?(l.next=null,o===null?fc=d:o.next=d,d===null&&(co=o)):(o=l,(e!==0||(m&3)!==0)&&(mc=!0)),l=d}Gt!==0&&Gt!==5||Ti(e),Rr!==0&&(Rr=0)}function mv(e,a){for(var o=e.suspendedLanes,l=e.pingedLanes,d=e.expirationTimes,m=e.pendingLanes&-62914561;0_)break;var ne=M.transferSize,ce=M.initiatorType;ne&&Ev(ce)&&(M=M.responseEnd,x+=ne*(M<_?1:(_-F)/(M-F)))}if(--l,a+=8*(m+x)/(d.duration/1e3),e++,10"u"?null:document;function zv(e,a,o){var l=uo;if(l&&typeof a=="string"&&a){var d=Gn(a);d='link[rel="'+e+'"][href="'+d+'"]',typeof o=="string"&&(d+='[crossorigin="'+o+'"]'),Dv.has(d)||(Dv.add(d),e={rel:e,crossOrigin:o,href:a},l.querySelector(d)===null&&(a=l.createElement("link"),rn(a,"link",e),Qt(a),l.head.appendChild(a)))}}function V_(e){Wa.D(e),zv("dns-prefetch",e,null)}function I_(e,a){Wa.C(e,a),zv("preconnect",e,a)}function q_(e,a,o){Wa.L(e,a,o);var l=uo;if(l&&e&&a){var d='link[rel="preload"][as="'+Gn(a)+'"]';a==="image"&&o&&o.imageSrcSet?(d+='[imagesrcset="'+Gn(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(d+='[imagesizes="'+Gn(o.imageSizes)+'"]')):d+='[href="'+Gn(e)+'"]';var m=d;switch(a){case"style":m=fo(e);break;case"script":m=mo(e)}ea.has(m)||(e=y({rel:"preload",href:a==="image"&&o&&o.imageSrcSet?void 0:e,as:a},o),ea.set(m,e),l.querySelector(d)!==null||a==="style"&&l.querySelector(Mi(m))||a==="script"&&l.querySelector(Di(m))||(a=l.createElement("link"),rn(a,"link",e),Qt(a),l.head.appendChild(a)))}}function F_(e,a){Wa.m(e,a);var o=uo;if(o&&e){var l=a&&typeof a.as=="string"?a.as:"script",d='link[rel="modulepreload"][as="'+Gn(l)+'"][href="'+Gn(e)+'"]',m=d;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":m=mo(e)}if(!ea.has(m)&&(e=y({rel:"modulepreload",href:e},a),ea.set(m,e),o.querySelector(d)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Di(m)))return}l=o.createElement("link"),rn(l,"link",e),Qt(l),o.head.appendChild(l)}}}function $_(e,a,o){Wa.S(e,a,o);var l=uo;if(l&&e){var d=Ms(l).hoistableStyles,m=fo(e);a=a||"default";var x=d.get(m);if(!x){var _={loading:0,preload:null};if(x=l.querySelector(Mi(m)))_.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":a},o),(o=ea.get(m))&&Qf(e,o);var M=x=l.createElement("link");Qt(M),rn(M,"link",e),M._p=new Promise(function(F,ne){M.onload=F,M.onerror=ne}),M.addEventListener("load",function(){_.loading|=1}),M.addEventListener("error",function(){_.loading|=2}),_.loading|=4,vc(x,a,l)}x={type:"stylesheet",instance:x,count:1,state:_},d.set(m,x)}}}function G_(e,a){Wa.X(e,a);var o=uo;if(o&&e){var l=Ms(o).hoistableScripts,d=mo(e),m=l.get(d);m||(m=o.querySelector(Di(d)),m||(e=y({src:e,async:!0},a),(a=ea.get(d))&&Wf(e,a),m=o.createElement("script"),Qt(m),rn(m,"link",e),o.head.appendChild(m)),m={type:"script",instance:m,count:1,state:null},l.set(d,m))}}function Y_(e,a){Wa.M(e,a);var o=uo;if(o&&e){var l=Ms(o).hoistableScripts,d=mo(e),m=l.get(d);m||(m=o.querySelector(Di(d)),m||(e=y({src:e,async:!0,type:"module"},a),(a=ea.get(d))&&Wf(e,a),m=o.createElement("script"),Qt(m),rn(m,"link",e),o.head.appendChild(m)),m={type:"script",instance:m,count:1,state:null},l.set(d,m))}}function Lv(e,a,o,l){var d=(d=fe.current)?yc(d):null;if(!d)throw Error(s(446));switch(e){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(a=fo(o.href),o=Ms(d).hoistableStyles,l=o.get(a),l||(l={type:"style",instance:null,count:0,state:null},o.set(a,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){e=fo(o.href);var m=Ms(d).hoistableStyles,x=m.get(e);if(x||(d=d.ownerDocument||d,x={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},m.set(e,x),(m=d.querySelector(Mi(e)))&&!m._p&&(x.instance=m,x.state.loading=5),ea.has(e)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},ea.set(e,o),m||Z_(d,e,o,x.state))),a&&l===null)throw Error(s(528,""));return x}if(a&&l!==null)throw Error(s(529,""));return null;case"script":return a=o.async,o=o.src,typeof o=="string"&&a&&typeof a!="function"&&typeof a!="symbol"?(a=mo(o),o=Ms(d).hoistableScripts,l=o.get(a),l||(l={type:"script",instance:null,count:0,state:null},o.set(a,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,e))}}function fo(e){return'href="'+Gn(e)+'"'}function Mi(e){return'link[rel="stylesheet"]['+e+"]"}function Uv(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function Z_(e,a,o,l){e.querySelector('link[rel="preload"][as="style"]['+a+"]")?l.loading=1:(a=e.createElement("link"),l.preload=a,a.addEventListener("load",function(){return l.loading|=1}),a.addEventListener("error",function(){return l.loading|=2}),rn(a,"link",o),Qt(a),e.head.appendChild(a))}function mo(e){return'[src="'+Gn(e)+'"]'}function Di(e){return"script[async]"+e}function Bv(e,a,o){if(a.count++,a.instance===null)switch(a.type){case"style":var l=e.querySelector('style[data-href~="'+Gn(o.href)+'"]');if(l)return a.instance=l,Qt(l),l;var d=y({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),Qt(l),rn(l,"style",d),vc(l,o.precedence,e),a.instance=l;case"stylesheet":d=fo(o.href);var m=e.querySelector(Mi(d));if(m)return a.state.loading|=4,a.instance=m,Qt(m),m;l=Uv(o),(d=ea.get(d))&&Qf(l,d),m=(e.ownerDocument||e).createElement("link"),Qt(m);var x=m;return x._p=new Promise(function(_,M){x.onload=_,x.onerror=M}),rn(m,"link",l),a.state.loading|=4,vc(m,o.precedence,e),a.instance=m;case"script":return m=mo(o.src),(d=e.querySelector(Di(m)))?(a.instance=d,Qt(d),d):(l=o,(d=ea.get(m))&&(l=y({},o),Wf(l,d)),e=e.ownerDocument||e,d=e.createElement("script"),Qt(d),rn(d,"link",l),e.head.appendChild(d),a.instance=d);case"void":return null;default:throw Error(s(443,a.type))}else a.type==="stylesheet"&&(a.state.loading&4)===0&&(l=a.instance,a.state.loading|=4,vc(l,o.precedence,e));return a.instance}function vc(e,a,o){for(var l=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=l.length?l[l.length-1]:null,m=d,x=0;x title"):null)}function X_(e,a,o){if(o===1||a.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof a.precedence!="string"||typeof a.href!="string"||a.href==="")break;return!0;case"link":if(typeof a.rel!="string"||typeof a.href!="string"||a.href===""||a.onLoad||a.onError)break;switch(a.rel){case"stylesheet":return e=a.disabled,typeof a.precedence=="string"&&e==null;default:return!0}case"script":if(a.async&&typeof a.async!="function"&&typeof a.async!="symbol"&&!a.onLoad&&!a.onError&&a.src&&typeof a.src=="string")return!0}return!1}function Vv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function K_(e,a,o,l){if(o.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(o.state.loading&4)===0){if(o.instance===null){var d=fo(l.href),m=a.querySelector(Mi(d));if(m){a=m._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(e.count++,e=xc.bind(e),a.then(e,e)),o.state.loading|=4,o.instance=m,Qt(m);return}m=a.ownerDocument||a,l=Uv(l),(d=ea.get(d))&&Qf(l,d),m=m.createElement("link"),Qt(m);var x=m;x._p=new Promise(function(_,M){x.onload=_,x.onerror=M}),rn(m,"link",l),o.instance=m}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(o,a),(a=o.state.preload)&&(o.state.loading&3)===0&&(e.count++,o=xc.bind(e),a.addEventListener("load",o),a.addEventListener("error",o))}}var Jf=0;function Q_(e,a){return e.stylesheets&&e.count===0&&Sc(e,e.stylesheets),0Jf?50:800)+a);return e.unsuspend=o,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(d)}}:null}function xc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Sc(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var wc=null;function Sc(e,a){e.stylesheets=null,e.unsuspend!==null&&(e.count++,wc=new Map,a.forEach(W_,e),wc=null,xc.call(e))}function W_(e,a){if(!(a.state.loading&4)){var o=wc.get(e);if(o)var l=o.get(null);else{o=new Map,wc.set(e,o);for(var d=e.querySelectorAll("link[data-precedence],style[data-precedence]"),m=0;m"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}return t(),lm.exports=gC(),lm.exports}var vC=yC();/**
- * react-router v7.9.5
- *
- * Copyright (c) Remix Software Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE.md file in the root directory of this source tree.
- *
- * @license MIT
- */var fb="popstate";function bC(t={}){function n(s,i){let{pathname:c,search:u,hash:f}=s.location;return Um("",{pathname:c,search:u,hash:f},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function r(s,i){return typeof i=="string"?i:Wi(i)}return wC(n,r,null,t)}function Ct(t,n){if(t===!1||t===null||typeof t>"u")throw new Error(n)}function da(t,n){if(!t){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function xC(){return Math.random().toString(36).substring(2,10)}function mb(t,n){return{usr:t.state,key:t.key,idx:n}}function Um(t,n,r=null,s){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof n=="string"?Bo(n):n,state:r,key:n&&n.key||s||xC()}}function Wi({pathname:t="/",search:n="",hash:r=""}){return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Bo(t){let n={};if(t){let r=t.indexOf("#");r>=0&&(n.hash=t.substring(r),t=t.substring(0,r));let s=t.indexOf("?");s>=0&&(n.search=t.substring(s),t=t.substring(0,s)),t&&(n.pathname=t)}return n}function wC(t,n,r,s={}){let{window:i=document.defaultView,v5Compat:c=!1}=s,u=i.history,f="POP",g=null,h=v();h==null&&(h=0,u.replaceState({...u.state,idx:h},""));function v(){return(u.state||{idx:null}).idx}function y(){f="POP";let C=v(),A=C==null?null:C-h;h=C,g&&g({action:f,location:S.location,delta:A})}function w(C,A){f="PUSH";let O=Um(S.location,C,A);h=v()+1;let R=mb(O,h),L=S.createHref(O);try{u.pushState(R,"",L)}catch(I){if(I instanceof DOMException&&I.name==="DataCloneError")throw I;i.location.assign(L)}c&&g&&g({action:f,location:S.location,delta:1})}function N(C,A){f="REPLACE";let O=Um(S.location,C,A);h=v();let R=mb(O,h),L=S.createHref(O);u.replaceState(R,"",L),c&&g&&g({action:f,location:S.location,delta:0})}function E(C){return SC(C)}let S={get action(){return f},get location(){return t(i,u)},listen(C){if(g)throw new Error("A history only accepts one active listener");return i.addEventListener(fb,y),g=C,()=>{i.removeEventListener(fb,y),g=null}},createHref(C){return n(i,C)},createURL:E,encodeLocation(C){let A=E(C);return{pathname:A.pathname,search:A.search,hash:A.hash}},push:w,replace:N,go(C){return u.go(C)}};return S}function SC(t,n=!1){let r="http://localhost";typeof window<"u"&&(r=window.location.origin!=="null"?window.location.origin:window.location.href),Ct(r,"No window.location.(origin|href) available to create URL");let s=typeof t=="string"?t:Wi(t);return s=s.replace(/ $/,"%20"),!n&&s.startsWith("//")&&(s=r+s),new URL(s,r)}function cx(t,n,r="/"){return EC(t,n,r,!1)}function EC(t,n,r,s){let i=typeof n=="string"?Bo(n):n,c=ar(i.pathname||"/",r);if(c==null)return null;let u=ux(t);_C(u);let f=null;for(let g=0;f==null&&g{let v={relativePath:h===void 0?u.path||"":h,caseSensitive:u.caseSensitive===!0,childrenIndex:f,route:u};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(s)&&g)return;Ct(v.relativePath.startsWith(s),`Absolute route path "${v.relativePath}" nested under path "${s}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(s.length)}let y=nr([s,v.relativePath]),w=r.concat(v);u.children&&u.children.length>0&&(Ct(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${y}".`),ux(u.children,n,w,y,g)),!(u.path==null&&!u.index)&&n.push({path:y,score:OC(y,u.index),routesMeta:w})};return t.forEach((u,f)=>{var g;if(u.path===""||!((g=u.path)!=null&&g.includes("?")))c(u,f);else for(let h of dx(u.path))c(u,f,!0,h)}),n}function dx(t){let n=t.split("/");if(n.length===0)return[];let[r,...s]=n,i=r.endsWith("?"),c=r.replace(/\?$/,"");if(s.length===0)return i?[c,""]:[c];let u=dx(s.join("/")),f=[];return f.push(...u.map(g=>g===""?c:[c,g].join("/"))),i&&f.push(...u),f.map(g=>t.startsWith("/")&&g===""?"/":g)}function _C(t){t.sort((n,r)=>n.score!==r.score?r.score-n.score:kC(n.routesMeta.map(s=>s.childrenIndex),r.routesMeta.map(s=>s.childrenIndex)))}var CC=/^:[\w-]+$/,NC=3,AC=2,RC=1,TC=10,jC=-2,hb=t=>t==="*";function OC(t,n){let r=t.split("/"),s=r.length;return r.some(hb)&&(s+=jC),n&&(s+=AC),r.filter(i=>!hb(i)).reduce((i,c)=>i+(CC.test(c)?NC:c===""?RC:TC),s)}function kC(t,n){return t.length===n.length&&t.slice(0,-1).every((s,i)=>s===n[i])?t[t.length-1]-n[n.length-1]:0}function MC(t,n,r=!1){let{routesMeta:s}=t,i={},c="/",u=[];for(let f=0;f{if(v==="*"){let E=f[w]||"";u=c.slice(0,c.length-E.length).replace(/(.)\/+$/,"$1")}const N=f[w];return y&&!N?h[v]=void 0:h[v]=(N||"").replace(/%2F/g,"/"),h},{}),pathname:c,pathnameBase:u,pattern:t}}function DC(t,n=!1,r=!0){da(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let s=[],i="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(u,f,g)=>(s.push({paramName:f,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(s.push({paramName:"*"}),i+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?i+="\\/*$":t!==""&&t!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,n?void 0:"i"),s]}function zC(t){try{return t.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return da(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${n}).`),t}}function ar(t,n){if(n==="/")return t;if(!t.toLowerCase().startsWith(n.toLowerCase()))return null;let r=n.endsWith("/")?n.length-1:n.length,s=t.charAt(r);return s&&s!=="/"?null:t.slice(r)||"/"}function LC(t,n="/"){let{pathname:r,search:s="",hash:i=""}=typeof t=="string"?Bo(t):t;return{pathname:r?r.startsWith("/")?r:UC(r,n):n,search:HC(s),hash:VC(i)}}function UC(t,n){let r=n.replace(/\/+$/,"").split("/");return t.split("/").forEach(i=>{i===".."?r.length>1&&r.pop():i!=="."&&r.push(i)}),r.length>1?r.join("/"):"/"}function fm(t,n,r,s){return`Cannot include a '${t}' character in a manually specified \`to.${n}\` field [${JSON.stringify(s)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function BC(t){return t.filter((n,r)=>r===0||n.route.path&&n.route.path.length>0)}function hh(t){let n=BC(t);return n.map((r,s)=>s===n.length-1?r.pathname:r.pathnameBase)}function ph(t,n,r,s=!1){let i;typeof t=="string"?i=Bo(t):(i={...t},Ct(!i.pathname||!i.pathname.includes("?"),fm("?","pathname","search",i)),Ct(!i.pathname||!i.pathname.includes("#"),fm("#","pathname","hash",i)),Ct(!i.search||!i.search.includes("#"),fm("#","search","hash",i)));let c=t===""||i.pathname==="",u=c?"/":i.pathname,f;if(u==null)f=r;else{let y=n.length-1;if(!s&&u.startsWith("..")){let w=u.split("/");for(;w[0]==="..";)w.shift(),y-=1;i.pathname=w.join("/")}f=y>=0?n[y]:"/"}let g=LC(i,f),h=u&&u!=="/"&&u.endsWith("/"),v=(c||u===".")&&r.endsWith("/");return!g.pathname.endsWith("/")&&(h||v)&&(g.pathname+="/"),g}var nr=t=>t.join("/").replace(/\/\/+/g,"/"),PC=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),HC=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,VC=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function IC(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var fx=["POST","PUT","PATCH","DELETE"];new Set(fx);var qC=["GET",...fx];new Set(qC);var Po=b.createContext(null);Po.displayName="DataRouter";var Cu=b.createContext(null);Cu.displayName="DataRouterState";b.createContext(!1);var mx=b.createContext({isTransitioning:!1});mx.displayName="ViewTransition";var FC=b.createContext(new Map);FC.displayName="Fetchers";var $C=b.createContext(null);$C.displayName="Await";var ha=b.createContext(null);ha.displayName="Navigation";var il=b.createContext(null);il.displayName="Location";var aa=b.createContext({outlet:null,matches:[],isDataRoute:!1});aa.displayName="Route";var gh=b.createContext(null);gh.displayName="RouteError";function GC(t,{relative:n}={}){Ct(Ho(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:s}=b.useContext(ha),{hash:i,pathname:c,search:u}=ll(t,{relative:n}),f=c;return r!=="/"&&(f=c==="/"?r:nr([r,c])),s.createHref({pathname:f,search:u,hash:i})}function Ho(){return b.useContext(il)!=null}function Yr(){return Ct(Ho(),"useLocation() may be used only in the context of a component."),b.useContext(il).location}var hx="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function px(t){b.useContext(ha).static||b.useLayoutEffect(t)}function Vo(){let{isDataRoute:t}=b.useContext(aa);return t?l2():YC()}function YC(){Ct(Ho(),"useNavigate() may be used only in the context of a component.");let t=b.useContext(Po),{basename:n,navigator:r}=b.useContext(ha),{matches:s}=b.useContext(aa),{pathname:i}=Yr(),c=JSON.stringify(hh(s)),u=b.useRef(!1);return px(()=>{u.current=!0}),b.useCallback((g,h={})=>{if(da(u.current,hx),!u.current)return;if(typeof g=="number"){r.go(g);return}let v=ph(g,JSON.parse(c),i,h.relative==="path");t==null&&n!=="/"&&(v.pathname=v.pathname==="/"?n:nr([n,v.pathname])),(h.replace?r.replace:r.push)(v,h.state,h)},[n,r,c,i,t])}var ZC=b.createContext(null);function XC(t){let n=b.useContext(aa).outlet;return b.useMemo(()=>n&&b.createElement(ZC.Provider,{value:t},n),[n,t])}function KC(){let{matches:t}=b.useContext(aa),n=t[t.length-1];return n?n.params:{}}function ll(t,{relative:n}={}){let{matches:r}=b.useContext(aa),{pathname:s}=Yr(),i=JSON.stringify(hh(r));return b.useMemo(()=>ph(t,JSON.parse(i),s,n==="path"),[t,i,s,n])}function QC(t,n){return gx(t,n)}function gx(t,n,r,s,i){var O;Ct(Ho(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=b.useContext(ha),{matches:u}=b.useContext(aa),f=u[u.length-1],g=f?f.params:{},h=f?f.pathname:"/",v=f?f.pathnameBase:"/",y=f&&f.route;{let R=y&&y.path||"";yx(h,!y||R.endsWith("*")||R.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${h}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
-
-Please change the parent to .`)}let w=Yr(),N;if(n){let R=typeof n=="string"?Bo(n):n;Ct(v==="/"||((O=R.pathname)==null?void 0:O.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${R.pathname}" was given in the \`location\` prop.`),N=R}else N=w;let E=N.pathname||"/",S=E;if(v!=="/"){let R=v.replace(/^\//,"").split("/");S="/"+E.replace(/^\//,"").split("/").slice(R.length).join("/")}let C=cx(t,{pathname:S});da(y||C!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),da(C==null||C[C.length-1].route.element!==void 0||C[C.length-1].route.Component!==void 0||C[C.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let A=n2(C&&C.map(R=>Object.assign({},R,{params:Object.assign({},g,R.params),pathname:nr([v,c.encodeLocation?c.encodeLocation(R.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:R.pathname]),pathnameBase:R.pathnameBase==="/"?v:nr([v,c.encodeLocation?c.encodeLocation(R.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:R.pathnameBase])})),u,r,s,i);return n&&A?b.createElement(il.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},A):A}function WC(){let t=i2(),n=IC(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,s="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:s},c={padding:"2px 4px",backgroundColor:s},u=null;return console.error("Error handled by React Router default ErrorBoundary:",t),u=b.createElement(b.Fragment,null,b.createElement("p",null,"💿 Hey developer 👋"),b.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",b.createElement("code",{style:c},"ErrorBoundary")," or"," ",b.createElement("code",{style:c},"errorElement")," prop on your route.")),b.createElement(b.Fragment,null,b.createElement("h2",null,"Unexpected Application Error!"),b.createElement("h3",{style:{fontStyle:"italic"}},n),r?b.createElement("pre",{style:i},r):null,u)}var JC=b.createElement(WC,null),e2=class extends b.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){this.props.unstable_onError?this.props.unstable_onError(t,n):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?b.createElement(aa.Provider,{value:this.props.routeContext},b.createElement(gh.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function t2({routeContext:t,match:n,children:r}){let s=b.useContext(Po);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),b.createElement(aa.Provider,{value:t},r)}function n2(t,n=[],r=null,s=null,i=null){if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(n.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let c=t,u=r==null?void 0:r.errors;if(u!=null){let h=c.findIndex(v=>v.route.id&&(u==null?void 0:u[v.route.id])!==void 0);Ct(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),c=c.slice(0,Math.min(c.length,h+1))}let f=!1,g=-1;if(r)for(let h=0;h=0?c=c.slice(0,g+1):c=[c[0]];break}}}return c.reduceRight((h,v,y)=>{let w,N=!1,E=null,S=null;r&&(w=u&&v.route.id?u[v.route.id]:void 0,E=v.route.errorElement||JC,f&&(g<0&&y===0?(yx("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,S=null):g===y&&(N=!0,S=v.route.hydrateFallbackElement||null)));let C=n.concat(c.slice(0,y+1)),A=()=>{let O;return w?O=E:N?O=S:v.route.Component?O=b.createElement(v.route.Component,null):v.route.element?O=v.route.element:O=h,b.createElement(t2,{match:v,routeContext:{outlet:h,matches:C,isDataRoute:r!=null},children:O})};return r&&(v.route.ErrorBoundary||v.route.errorElement||y===0)?b.createElement(e2,{location:r.location,revalidation:r.revalidation,component:E,error:w,children:A(),routeContext:{outlet:null,matches:C,isDataRoute:!0},unstable_onError:s}):A()},null)}function yh(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function a2(t){let n=b.useContext(Po);return Ct(n,yh(t)),n}function r2(t){let n=b.useContext(Cu);return Ct(n,yh(t)),n}function s2(t){let n=b.useContext(aa);return Ct(n,yh(t)),n}function vh(t){let n=s2(t),r=n.matches[n.matches.length-1];return Ct(r.route.id,`${t} can only be used on routes that contain a unique "id"`),r.route.id}function o2(){return vh("useRouteId")}function i2(){var s;let t=b.useContext(gh),n=r2("useRouteError"),r=vh("useRouteError");return t!==void 0?t:(s=n.errors)==null?void 0:s[r]}function l2(){let{router:t}=a2("useNavigate"),n=vh("useNavigate"),r=b.useRef(!1);return px(()=>{r.current=!0}),b.useCallback(async(i,c={})=>{da(r.current,hx),r.current&&(typeof i=="number"?t.navigate(i):await t.navigate(i,{fromRouteId:n,...c}))},[t,n])}var pb={};function yx(t,n,r){!n&&!pb[t]&&(pb[t]=!0,da(!1,r))}b.memo(c2);function c2({routes:t,future:n,state:r,unstable_onError:s}){return gx(t,void 0,r,s,n)}function mm({to:t,replace:n,state:r,relative:s}){Ct(Ho()," may be used only in the context of a component.");let{static:i}=b.useContext(ha);da(!i," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:c}=b.useContext(aa),{pathname:u}=Yr(),f=Vo(),g=ph(t,hh(c),u,s==="path"),h=JSON.stringify(g);return b.useEffect(()=>{f(JSON.parse(h),{replace:n,state:r,relative:s})},[f,h,s,n,r]),null}function u2(t){return XC(t.context)}function ta(t){Ct(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function d2({basename:t="/",children:n=null,location:r,navigationType:s="POP",navigator:i,static:c=!1}){Ct(!Ho(),"You cannot render a inside another . You should never have more than one in your app.");let u=t.replace(/^\/*/,"/"),f=b.useMemo(()=>({basename:u,navigator:i,static:c,future:{}}),[u,i,c]);typeof r=="string"&&(r=Bo(r));let{pathname:g="/",search:h="",hash:v="",state:y=null,key:w="default"}=r,N=b.useMemo(()=>{let E=ar(g,u);return E==null?null:{location:{pathname:E,search:h,hash:v,state:y,key:w},navigationType:s}},[u,g,h,v,y,w,s]);return da(N!=null,` is not able to match the URL "${g}${h}${v}" because it does not start with the basename, so the won't render anything.`),N==null?null:b.createElement(ha.Provider,{value:f},b.createElement(il.Provider,{children:n,value:N}))}function f2({children:t,location:n}){return QC(Bm(t),n)}function Bm(t,n=[]){let r=[];return b.Children.forEach(t,(s,i)=>{if(!b.isValidElement(s))return;let c=[...n,i];if(s.type===b.Fragment){r.push.apply(r,Bm(s.props.children,c));return}Ct(s.type===ta,`[${typeof s.type=="string"?s.type:s.type.name}] is not a component. All component children of must be a or `),Ct(!s.props.index||!s.props.children,"An index route cannot have child routes.");let u={id:s.props.id||c.join("-"),caseSensitive:s.props.caseSensitive,element:s.props.element,Component:s.props.Component,index:s.props.index,path:s.props.path,middleware:s.props.middleware,loader:s.props.loader,action:s.props.action,hydrateFallbackElement:s.props.hydrateFallbackElement,HydrateFallback:s.props.HydrateFallback,errorElement:s.props.errorElement,ErrorBoundary:s.props.ErrorBoundary,hasErrorBoundary:s.props.hasErrorBoundary===!0||s.props.ErrorBoundary!=null||s.props.errorElement!=null,shouldRevalidate:s.props.shouldRevalidate,handle:s.props.handle,lazy:s.props.lazy};s.props.children&&(u.children=Bm(s.props.children,c)),r.push(u)}),r}var Fc="get",$c="application/x-www-form-urlencoded";function Nu(t){return t!=null&&typeof t.tagName=="string"}function m2(t){return Nu(t)&&t.tagName.toLowerCase()==="button"}function h2(t){return Nu(t)&&t.tagName.toLowerCase()==="form"}function p2(t){return Nu(t)&&t.tagName.toLowerCase()==="input"}function g2(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function y2(t,n){return t.button===0&&(!n||n==="_self")&&!g2(t)}var jc=null;function v2(){if(jc===null)try{new FormData(document.createElement("form"),0),jc=!1}catch{jc=!0}return jc}var b2=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function hm(t){return t!=null&&!b2.has(t)?(da(!1,`"${t}" is not a valid \`encType\` for \`