From 3ea17b0980c8c287653dd8ff124d84a884f85085 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Wed, 19 Aug 2026 12:45:41 -0500 Subject: [PATCH] feat(umind): cargar conocimiento de tres formas y que deje de quedar viejo en silencio MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hasta ahora la única forma de darle información a un agente era crawlear una URL, una vez, para siempre. Tres cosas cambian: Escribir a mano. Es la fuente más valiosa y la única que no está en ningún documento: horarios, qué no hacen, la respuesta que dan quince veces por día. También es la única que el dueño puede corregir en el momento en que ve al agente contestar mal. Subir un archivo. La lista de precios suele estar en un PDF, no en la web. Usa el mismo extractor que los adjuntos de los canales, así que PDF, Word, texto e imágenes entran sin código nuevo. El texto se extrae con la persona mirando la pantalla: si el archivo no se puede leer, se dice ahí y no en un log. Y lo importante: el conocimiento se congelaba el día que se cargaba. Si el cliente cambiaba los precios en su sitio, el agente seguía dando los viejos con total seguridad — sin error, sin aviso, nada. Ahora cada fuente muestra de cuándo es ("leído hace 3 meses", en ámbar pasados dos meses), tiene botón de actualizar, y las URLs pueden marcarse para releerse solas cada semana (cron a las 4 AM). Reprocesar reemplaza los fragmentos en vez de sumarlos: si no, quedaban las dos versiones compitiendo en la búsqueda y podía ganar la vieja. De paso, el troceado dejaba fragmentos que arrancaban a mitad de palabra ("alabra…") porque el solape no se alineaba a un espacio. Co-Authored-By: Claude Opus 5 --- orchestrator/src/views/AgenteDetail.vue | 172 ++++++++++++++++- pkg/models/umind.go | 48 ++++- pkg/services/cron_service.go | 7 + pkg/services/umind_ingest_service.go | 103 ++++++++-- pkg/services/umind_ingest_test.go | 38 ++++ ...{index-BaBLTLOm.css => index-C_8yw0Pk.css} | 2 +- public/orchestrator/assets/index-D4CbBy2Y.js | 26 +++ public/orchestrator/assets/index-Dn2ZJSQE.js | 26 --- public/orchestrator/index.html | 4 +- rest/controllers/umind_admin_controller.go | 177 +++++++++++++++++- rest/routes/umind.go | 4 + 11 files changed, 542 insertions(+), 65 deletions(-) create mode 100644 pkg/services/umind_ingest_test.go rename public/orchestrator/assets/{index-BaBLTLOm.css => index-C_8yw0Pk.css} (72%) create mode 100644 public/orchestrator/assets/index-D4CbBy2Y.js delete mode 100644 public/orchestrator/assets/index-Dn2ZJSQE.js diff --git a/orchestrator/src/views/AgenteDetail.vue b/orchestrator/src/views/AgenteDetail.vue index 6ab0b58..d18f98f 100644 --- a/orchestrator/src/views/AgenteDetail.vue +++ b/orchestrator/src/views/AgenteDetail.vue @@ -37,6 +37,15 @@ async function cargarDocumentos() { documentos.value = r.items || [] } +// Tres formas de cargar conocimiento, no una: la web, un archivo (lista de +// precios, condiciones) y lo que el dueño escribe a mano, que es lo más +// valioso y lo único que no está en ningún documento. +const fuenteNueva = ref('texto') +const autoActualizar = ref(true) +const notaTitulo = ref('') +const notaTexto = ref('') +const archivoRef = ref(null) + async function agregarFuente() { if (!nuevaUrl.value.trim()) return ingestando.value = true @@ -46,6 +55,7 @@ async function agregarFuente() { agente_id: agenteIdNum.value, url: nuevaUrl.value.trim(), max_paginas: Number(maxPaginas.value) || 30, + auto_actualizar: autoActualizar.value, }) nuevaUrl.value = '' await cargarDocumentos() @@ -56,6 +66,84 @@ async function agregarFuente() { } } +async function agregarNota() { + if (!notaTexto.value.trim()) return + ingestando.value = true + error.value = '' + try { + await api.post(apiUmind('/umind/documentos/texto'), { + agente_id: agenteIdNum.value, + titulo: notaTitulo.value.trim(), + contenido: notaTexto.value, + }) + notaTitulo.value = '' + notaTexto.value = '' + await cargarDocumentos() + } catch (e) { + error.value = e.message + } finally { + ingestando.value = false + } +} + +async function subirArchivo() { + const f = archivoRef.value?.files?.[0] + if (!f) return + ingestando.value = true + error.value = '' + try { + const fd = new FormData() + fd.append('agente_id', String(agenteIdNum.value)) + fd.append('archivo', f) + // Sin Content-Type a mano: el navegador tiene que poner el boundary. + const res = await fetch(apiUmind('/umind/documentos/archivo'), { method: 'POST', body: fd }) + const data = await res.json() + if (!res.ok) throw new Error(data.error || 'No se pudo subir') + archivoRef.value.value = '' + await cargarDocumentos() + } catch (e) { + error.value = e.message + } finally { + ingestando.value = false + } +} + +async function reprocesar(d) { + error.value = '' + try { + await api.post(apiUmind(`/umind/documentos/${d.ID}/reprocesar`), {}) + await cargarDocumentos() + } catch (e) { + error.value = e.message + } +} + +async function alternarAuto(d) { + try { + await api.put(apiUmind(`/umind/documentos/${d.ID}`), { auto_actualizar: !d.auto_actualizar }) + await cargarDocumentos() + } catch (e) { + error.value = e.message + } +} + +// "hace 3 días" en vez de una fecha: lo que importa no es cuándo se procesó +// sino qué tan viejo es lo que el agente está contestando. +function antiguedad(fecha) { + if (!fecha) return 'sin procesar' + const dias = Math.floor((Date.now() - new Date(fecha)) / 86400000) + if (dias <= 0) return 'hoy' + if (dias === 1) return 'ayer' + if (dias < 30) return `hace ${dias} días` + const meses = Math.floor(dias / 30) + return meses === 1 ? 'hace un mes' : `hace ${meses} meses` +} + +function estaVieja(d) { + if (!d.procesado_at) return false + return Date.now() - new Date(d.procesado_at) > 60 * 86400000 +} + async function eliminarDocumento(id) { if (!confirm('¿Eliminar esta fuente y sus fragmentos indexados?')) return await api.del(apiUmind(`/umind/documentos/${id}`)) @@ -410,13 +498,61 @@ watch(
-
- - - -
+
+
+ +
+ + +
+ + +
+

Lo que te preguntan todos los días y no está en tu web.

+ +
+
+ +
+ +
+

PDF, Word, texto o una foto. Ej: tu lista de precios.

+ +
+
+ +
+
+ + +
+
+ + +
+
+
Sin fuentes todavía.
@@ -424,11 +560,31 @@ watch(
{{ d.origen }}
{{ d.estado }} + · {{ { url: 'sitio', archivo: 'archivo', texto: 'nota' }[d.tipo] || d.tipo }} · {{ d.total_chunks }} fragmentos + + + · leído {{ antiguedad(d.procesado_at) }} + + · se actualiza sola · {{ d.error }}
- +
+ + + +
diff --git a/pkg/models/umind.go b/pkg/models/umind.go index b032a57..4313032 100644 --- a/pkg/models/umind.go +++ b/pkg/models/umind.go @@ -131,11 +131,23 @@ func (t *UmindTenant) DominioPermitido(host string) bool { type UmindDocumento struct { gorm.Model AgenteID uint `json:"agente_id" gorm:"column:agente_id;index"` - Tipo string `json:"tipo" gorm:"column:tipo;size:20"` // url | archivo - Origen string `json:"origen" gorm:"column:origen;type:text"` // la URL crawleada, o el nombre del archivo + Tipo string `json:"tipo" gorm:"column:tipo;size:20"` // url | archivo | texto + Origen string `json:"origen" gorm:"column:origen;type:text"` // la URL crawleada, el nombre del archivo, o el título del texto Estado string `json:"estado" gorm:"column:estado;default:'pendiente'"` // pendiente | procesando | listo | error Error string `json:"error" gorm:"column:error;type:text"` TotalChunks int `json:"total_chunks" gorm:"column:total_chunks;default:0"` + // Contenido guarda el texto de las fuentes que no se pueden volver a + // buscar solas (lo que escribió el dueño, lo que se extrajo de un archivo). + // Sin esto no se puede editar ni reprocesar sin volver a subir el archivo. + Contenido string `json:"contenido" gorm:"column:contenido;type:text"` + // MaxPaginas se guarda para poder recrawlear igual que la primera vez. + MaxPaginas int `json:"max_paginas" gorm:"column:max_paginas;default:0"` + // ProcesadoAt dice de cuándo es el conocimiento. Una web cambia y el agente + // sigue contestando lo viejo con total seguridad: esta fecha es lo único + // que delata que la fuente quedó vieja. + ProcesadoAt *time.Time `json:"procesado_at" gorm:"column:procesado_at"` + // AutoActualizar deja que el cron la vuelva a procesar sola. + AutoActualizar bool `json:"auto_actualizar" gorm:"column:auto_actualizar;default:false"` } func (UmindDocumento) TableName() string { return "umind_documentos" } @@ -159,11 +171,32 @@ func GetUmindDocumentoByID(id uint) (*UmindDocumento, error) { } func UpdateUmindDocumentoEstado(id uint, estado, errMsg string, totalChunks int) error { - return app.Http.Database.DB.Model(&UmindDocumento{}).Where("id = ?", id).Updates(map[string]interface{}{ + updates := map[string]interface{}{ "estado": estado, "error": errMsg, "total_chunks": totalChunks, - }).Error + } + if estado == "listo" { + ahora := time.Now() + updates["procesado_at"] = &ahora + } + return app.Http.Database.DB.Model(&UmindDocumento{}).Where("id = ?", id).Updates(updates).Error +} + +func UpdateUmindDocumento(id uint, updates map[string]interface{}) error { + return app.Http.Database.DB.Model(&UmindDocumento{}).Where("id = ?", id).Updates(updates).Error +} + +// GetDocumentosParaRefrescar devuelve las fuentes con auto-actualización que no +// se procesan desde hace más de los días indicados. +func GetDocumentosParaRefrescar(dias int) ([]UmindDocumento, error) { + var items []UmindDocumento + corte := time.Now().AddDate(0, 0, -dias) + err := app.Http.Database.DB. + Where("auto_actualizar = ? AND estado <> ?", true, "procesando"). + Where("procesado_at IS NULL OR procesado_at < ?", corte). + Find(&items).Error + return items, err } func DeleteUmindDocumento(id uint) error { @@ -206,6 +239,13 @@ func EmbeddingFromJSON(s string) ([]float32, error) { return v, nil } +// BorrarChunksDeDocumento limpia los fragmentos de una fuente antes de volver a +// procesarla. Sin esto, reprocesar deja la versión vieja y la nueva compitiendo +// en la búsqueda, y la vieja puede ganar. +func BorrarChunksDeDocumento(documentoID uint) error { + return app.Http.Database.DB.Where("documento_id = ?", documentoID).Delete(&UmindChunk{}).Error +} + func CreateUmindChunks(chunks []UmindChunk) error { if len(chunks) == 0 { return nil diff --git a/pkg/services/cron_service.go b/pkg/services/cron_service.go index 55f82ac..3cf3e6f 100644 --- a/pkg/services/cron_service.go +++ b/pkg/services/cron_service.go @@ -78,6 +78,13 @@ func IniciarCron() { return } + // Conocimiento de los agentes que se actualiza solo — 4 AM, cuando nadie + // está mirando: recrawlear varios sitios no es gratis. + if _, err := cronScheduler.AddFunc("0 4 * * *", RefrescarConocimientoUmind); err != nil { + log.Printf("[CRON] Error registrando tarea refresco_conocimiento: %v", err) + return + } + // Buzón de soporte por IMAP — cada 2 minutos. No hace nada si no está // configurado, así que registrarlo siempre no cuesta. if _, err := cronScheduler.AddFunc("*/2 * * * *", RevisarBuzonSoporte); err != nil { diff --git a/pkg/services/umind_ingest_service.go b/pkg/services/umind_ingest_service.go index 6f3855f..e9f74ca 100644 --- a/pkg/services/umind_ingest_service.go +++ b/pkg/services/umind_ingest_service.go @@ -197,6 +197,13 @@ func trocearTexto(texto string) []string { if siguiente <= inicio { siguiente = inicio + corte } + // El solape caía en cualquier lado, así que el fragmento siguiente + // podía arrancar a mitad de una palabra ("alabra…"). Se corre hasta el + // espacio siguiente: media palabra suelta al principio no aporta nada + // al embedding y ensucia el fragmento que se le muestra al modelo. + if esp := strings.IndexByte(texto[siguiente:], ' '); esp > 0 && siguiente+esp < inicio+corte { + siguiente += esp + 1 + } inicio = siguiente } return chunks @@ -212,16 +219,6 @@ func IngestarAgente(agenteID uint, documentoID uint, urlInicial string, maxPagin models.UpdateUmindDocumentoEstado(documentoID, "error", fmt.Sprintf("agente no encontrado: %v", err), 0) return } - // Los embeddings usan una config global (módulo "umind_embeddings"), no la - // del agente: todos los chunks de todos los agentes deben salir del mismo - // modelo de embeddings para que la similitud coseno entre vectores tenga - // sentido. La config del agente (AiConfigID) es solo para el chat. - ai, err := models.GetUmindEmbeddingsConfig() - if err != nil { - models.UpdateUmindDocumentoEstado(documentoID, "error", err.Error(), 0) - return - } - if maxPaginas <= 0 { maxPaginas = 30 } @@ -235,10 +232,43 @@ func IngestarAgente(agenteID uint, documentoID uint, urlInicial string, maxPagin return } - // Trocear todo el contenido crawleado en chunks de texto plano. var textos []string for _, p := range paginas { - for _, c := range trocearTexto(p.Texto) { + textos = append(textos, p.Texto) + } + if n, err := guardarConocimiento(agenteID, documentoID, textos); err != nil { + log.Printf("[UMIND] Ingesta de agente %d fallida: %v", agenteID, err) + } else { + log.Printf("[UMIND] Ingesta de agente %d completada: %d páginas, %d chunks", agenteID, len(paginas), n) + } +} + +// IngestarTexto guarda como conocimiento un texto que se cargó a mano o que se +// extrajo de un archivo. Es el mismo trabajo que hace la ingesta de una URL +// desde que tiene el texto: trocear, embeber y guardar. +func IngestarTexto(agenteID, documentoID uint, texto string) { + if _, err := guardarConocimiento(agenteID, documentoID, []string{texto}); err != nil { + log.Printf("[UMIND] Ingesta de texto del agente %d fallida: %v", agenteID, err) + } +} + +// guardarConocimiento trocea, genera los embeddings y reemplaza los fragmentos +// del documento. Reemplaza y no agrega: si no, reprocesar una fuente dejaría +// dos versiones del mismo contenido compitiendo en la búsqueda, y la vieja +// puede ganar. +func guardarConocimiento(agenteID, documentoID uint, fuentes []string) (int, error) { + // Los embeddings usan una config global (módulo "umind_embeddings"), no la + // del agente: todos los chunks de todos los agentes deben salir del mismo + // modelo para que la similitud coseno entre vectores tenga sentido. + ai, err := models.GetUmindEmbeddingsConfig() + if err != nil { + models.UpdateUmindDocumentoEstado(documentoID, "error", err.Error(), 0) + return 0, err + } + + var textos []string + for _, fuente := range fuentes { + for _, c := range trocearTexto(fuente) { if len(strings.TrimSpace(c)) < 40 { continue // fragmentos demasiado cortos no aportan al RAG } @@ -246,8 +276,9 @@ func IngestarAgente(agenteID uint, documentoID uint, urlInicial string, maxPagin } } if len(textos) == 0 { - models.UpdateUmindDocumentoEstado(documentoID, "error", "no se generó ningún fragmento de texto aprovechable", 0) - return + msg := "no se generó ningún fragmento de texto aprovechable" + models.UpdateUmindDocumentoEstado(documentoID, "error", msg, 0) + return 0, fmt.Errorf("%s", msg) } // Generar embeddings en tandas para no mandar un solo request gigante. @@ -262,7 +293,7 @@ func IngestarAgente(agenteID uint, documentoID uint, urlInicial string, maxPagin vectores, err := GenerarEmbeddings(ai, tanda) if err != nil { models.UpdateUmindDocumentoEstado(documentoID, "error", fmt.Sprintf("error generando embeddings: %v", err), len(chunks)) - return + return 0, err } for j, texto := range tanda { embJSON, err := models.EmbeddingToJSON(vectores[j]) @@ -278,11 +309,49 @@ func IngestarAgente(agenteID uint, documentoID uint, urlInicial string, maxPagin } } + if err := models.BorrarChunksDeDocumento(documentoID); err != nil { + models.UpdateUmindDocumentoEstado(documentoID, "error", fmt.Sprintf("no se pudieron limpiar los fragmentos anteriores: %v", err), 0) + return 0, err + } if err := models.CreateUmindChunks(chunks); err != nil { models.UpdateUmindDocumentoEstado(documentoID, "error", fmt.Sprintf("error guardando fragmentos: %v", err), 0) - return + return 0, err } models.UpdateUmindDocumentoEstado(documentoID, "listo", "", len(chunks)) - log.Printf("[UMIND] Ingesta de agente %d completada: %d páginas, %d chunks", agenteID, len(paginas), len(chunks)) + return len(chunks), nil +} + +// ReprocesarDocumento vuelve a procesar una fuente, en segundo plano. +// Una URL se recrawlea —es la única forma de que el agente deje de contestar +// con la información del año pasado— y una nota o un archivo se rearman desde +// el texto guardado, sin pedirle al dueño que lo vuelva a subir. +func ReprocesarDocumento(doc models.UmindDocumento) { + _ = models.UpdateUmindDocumentoEstado(doc.ID, "procesando", "", doc.TotalChunks) + if doc.Tipo == "url" { + go IngestarAgente(doc.AgenteID, doc.ID, doc.Origen, doc.MaxPaginas) + return + } + if strings.TrimSpace(doc.Contenido) == "" { + _ = models.UpdateUmindDocumentoEstado(doc.ID, "error", + "esta fuente se cargó antes de que se guardara su texto: volvé a subirla", 0) + return + } + go IngestarTexto(doc.AgenteID, doc.ID, doc.Contenido) +} + +// RefrescarConocimientoUmind recrawlea las fuentes marcadas para actualizarse +// solas. Lo llama el cron: sin esto, el conocimiento se congela el día que se +// cargó y nadie se entera, porque no falla — solo queda viejo. +func RefrescarConocimientoUmind() { + const diasEntreRefrescos = 7 + docs, err := models.GetDocumentosParaRefrescar(diasEntreRefrescos) + if err != nil { + log.Printf("[UMIND] No se pudieron buscar fuentes para refrescar: %v", err) + return + } + for _, d := range docs { + log.Printf("[UMIND] Refrescando fuente %d del agente %d (%s)", d.ID, d.AgenteID, d.Origen) + ReprocesarDocumento(d) + } } diff --git a/pkg/services/umind_ingest_test.go b/pkg/services/umind_ingest_test.go new file mode 100644 index 0000000..b3a767d --- /dev/null +++ b/pkg/services/umind_ingest_test.go @@ -0,0 +1,38 @@ +package services + +import ( + "strings" + "testing" +) + +// El troceado es lo que decide qué puede encontrar el agente después. Un +// fragmento cortado a la mitad de una frase o sin solape hace que la búsqueda +// devuelva texto que no responde nada. +func TestTrocearTexto(t *testing.T) { + if got := trocearTexto(" "); got != nil { + t.Errorf("texto vacío debería dar nil, dio %v", got) + } + + corto := "Atendemos de 9 a 18." + if got := trocearTexto(corto); len(got) != 1 || got[0] != corto { + t.Errorf("un texto corto tiene que quedar en un solo fragmento: %v", got) + } + + largo := strings.Repeat("palabra ", 900) + chunks := trocearTexto(largo) + if len(chunks) < 2 { + t.Fatalf("un texto largo debería partirse, dio %d fragmento(s)", len(chunks)) + } + for i, c := range chunks { + if strings.HasPrefix(c, " ") || strings.HasSuffix(c, " ") { + t.Errorf("fragmento %d con espacios en los bordes: %q", i, c) + } + if c == "" { + t.Errorf("fragmento %d vacío", i) + } + } + // Sin solape, una frase que cae justo en el corte se pierde para siempre. + if !strings.HasPrefix(chunks[1], "palabra") { + t.Errorf("el segundo fragmento debería arrancar con contenido real: %q", chunks[1][:20]) + } +} diff --git a/public/orchestrator/assets/index-BaBLTLOm.css b/public/orchestrator/assets/index-C_8yw0Pk.css similarity index 72% rename from public/orchestrator/assets/index-BaBLTLOm.css rename to public/orchestrator/assets/index-C_8yw0Pk.css index b361d8d..7631053 100644 --- a/public/orchestrator/assets/index-BaBLTLOm.css +++ b/public/orchestrator/assets/index-C_8yw0Pk.css @@ -1 +1 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--superficie: 255 255 255;--elevado: 249 250 251;--borde: 229 231 235;--texto: 31 41 55;--tenue: 107 114 128;--fondo: 249 250 251}.dark{--superficie: 17 24 39;--elevado: 24 33 51;--borde: 42 52 70;--texto: 229 231 235;--tenue: 148 163 184;--fondo: 9 13 22}body{background:rgb(var(--fondo));color:rgb(var(--texto));-webkit-font-smoothing:antialiased}.card{border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1))}.input{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1));outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.input::-moz-placeholder{color:rgb(var(--tenue) / .6)}.input::placeholder{color:rgb(var(--tenue) / .6)}.input:focus{--tw-border-opacity: 1;border-color:rgb(142 176 47 / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(142 176 47 / .2)}.label{margin-bottom:.25rem;display:block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(113 144 38 / var(--tw-bg-opacity, 1))}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:disabled{cursor:not-allowed;opacity:.5}.btn-ghost{--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.btn-ghost:hover{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.badge-ok{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.badge-ok:is(.dark *){background-color:#22c55e26;--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.badge-alerta{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.badge-alerta:is(.dark *){background-color:#f59e0b26;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.badge-error{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.badge-error:is(.dark *){background-color:#ef444426;--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.badge-neutro{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.tab{white-space:nowrap;border-radius:9999px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-0{top:0}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.mx-auto{margin-left:auto;margin-right:auto}.-mt-2{margin-top:-.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-28{height:7rem}.h-3\.5{height:.875rem}.h-5{height:1.25rem}.h-9{height:2.25rem}.h-\[28rem\]{height:28rem}.h-full{height:100%}.max-h-\[28rem\]{max-height:28rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-28{width:7rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[3px\]{min-width:3px}.max-w-5xl{max-width:64rem}.max-w-\[80\%\]{max-width:80%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes aparecer{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-aparecer{animation:aparecer .2s ease-out}@keyframes escalar{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.animate-escalar{animation:escalar .15s ease-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.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-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-borde>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(var(--borde) / var(--tw-divide-opacity, 1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-borde{--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-brand{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1))}.bg-brand\/10{background-color:#8eb02f1a}.bg-brand\/70{background-color:#8eb02fb3}.bg-elevado{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-superficie{--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1))}.bg-tenue\/40{background-color:rgb(var(--tenue) / .4)}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!px-2\.5{padding-left:.625rem!important;padding-right:.625rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.\!py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-1{padding-bottom:.25rem}.pr-1\.5{padding-right:.375rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-xs{font-size:.75rem!important;line-height:1rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.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)}.leading-none{line-height:1}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-brand{--tw-text-opacity: 1;color:rgb(142 176 47 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-tenue{--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.text-texto{--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-brand:hover{--tw-border-opacity: 1;border-color:rgb(142 176 47 / var(--tw-border-opacity, 1))}.hover\:border-brand\/50:hover{border-color:#8eb02f80}.hover\:bg-brand:hover{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-dark:hover{--tw-bg-opacity: 1;background-color:rgb(113 144 38 / var(--tw-bg-opacity, 1))}.hover\:bg-elevado:hover{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1))}.hover\:text-brand:hover{--tw-text-opacity: 1;color:rgb(142 176 47 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-texto:hover{--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:ring-brand:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(142 176 47 / var(--tw-ring-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}}@media(min-width:768px){.md\:static{position:static}.md\:sticky{position:sticky}.md\:top-0{top:0}.md\:hidden{display:none}.md\:h-screen{height:100vh}.md\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media(min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}} +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--superficie: 255 255 255;--elevado: 249 250 251;--borde: 229 231 235;--texto: 31 41 55;--tenue: 107 114 128;--fondo: 249 250 251}.dark{--superficie: 17 24 39;--elevado: 24 33 51;--borde: 42 52 70;--texto: 229 231 235;--tenue: 148 163 184;--fondo: 9 13 22}body{background:rgb(var(--fondo));color:rgb(var(--texto));-webkit-font-smoothing:antialiased}.card{border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1))}.input{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1));padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1));outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.input::-moz-placeholder{color:rgb(var(--tenue) / .6)}.input::placeholder{color:rgb(var(--tenue) / .6)}.input:focus{--tw-border-opacity: 1;border-color:rgb(142 176 47 / var(--tw-border-opacity, 1));--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(142 176 47 / .2)}.label{margin-bottom:.25rem;display:block;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.btn-primary{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(113 144 38 / var(--tw-bg-opacity, 1))}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-ghost:disabled{cursor:not-allowed;opacity:.5}.btn-ghost{--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.btn-ghost:hover{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.badge-ok{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.badge-ok:is(.dark *){background-color:#22c55e26;--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.badge-alerta{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.badge-alerta:is(.dark *){background-color:#f59e0b26;--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.badge-error{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.badge-error:is(.dark *){background-color:#ef444426;--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.badge-neutro{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.tab{white-space:nowrap;border-radius:9999px;padding:.375rem .75rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-0{top:0}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.mx-auto{margin-left:auto;margin-right:auto}.-mt-2{margin-top:-.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-28{height:7rem}.h-3\.5{height:.875rem}.h-5{height:1.25rem}.h-9{height:2.25rem}.h-\[28rem\]{height:28rem}.h-full{height:100%}.max-h-\[28rem\]{max-height:28rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-28{width:7rem}.w-5{width:1.25rem}.w-64{width:16rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[3px\]{min-width:3px}.max-w-5xl{max-width:64rem}.max-w-\[80\%\]{max-width:80%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes aparecer{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-aparecer{animation:aparecer .2s ease-out}@keyframes escalar{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.animate-escalar{animation:escalar .15s ease-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.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-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-borde>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(var(--borde) / var(--tw-divide-opacity, 1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-borde{--tw-border-opacity: 1;border-color:rgb(var(--borde) / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-brand{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1))}.bg-brand\/10{background-color:#8eb02f1a}.bg-brand\/70{background-color:#8eb02fb3}.bg-elevado{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-superficie{--tw-bg-opacity: 1;background-color:rgb(var(--superficie) / var(--tw-bg-opacity, 1))}.bg-tenue\/40{background-color:rgb(var(--tenue) / .4)}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!px-2\.5{padding-left:.625rem!important;padding-right:.625rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.\!py-1\.5{padding-top:.375rem!important;padding-bottom:.375rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-1{padding-bottom:.25rem}.pr-1\.5{padding-right:.375rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-xs{font-size:.75rem!important;line-height:1rem!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.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)}.leading-none{line-height:1}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-brand{--tw-text-opacity: 1;color:rgb(142 176 47 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-tenue{--tw-text-opacity: 1;color:rgb(var(--tenue) / var(--tw-text-opacity, 1))}.text-texto{--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-brand:hover{--tw-border-opacity: 1;border-color:rgb(142 176 47 / var(--tw-border-opacity, 1))}.hover\:border-brand\/50:hover{border-color:#8eb02f80}.hover\:bg-brand:hover{--tw-bg-opacity: 1;background-color:rgb(142 176 47 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-dark:hover{--tw-bg-opacity: 1;background-color:rgb(113 144 38 / var(--tw-bg-opacity, 1))}.hover\:bg-elevado:hover{--tw-bg-opacity: 1;background-color:rgb(var(--elevado) / var(--tw-bg-opacity, 1))}.hover\:text-brand:hover{--tw-text-opacity: 1;color:rgb(142 176 47 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-texto:hover{--tw-text-opacity: 1;color:rgb(var(--texto) / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:ring-brand:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(142 176 47 / var(--tw-ring-opacity, 1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}}@media(min-width:768px){.md\:static{position:static}.md\:sticky{position:sticky}.md\:top-0{top:0}.md\:hidden{display:none}.md\:h-screen{height:100vh}.md\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}@media(min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}} diff --git a/public/orchestrator/assets/index-D4CbBy2Y.js b/public/orchestrator/assets/index-D4CbBy2Y.js new file mode 100644 index 0000000..80bfcad --- /dev/null +++ b/public/orchestrator/assets/index-D4CbBy2Y.js @@ -0,0 +1,26 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const i of r.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerPolicy&&(r.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?r.credentials="include":o.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** +* @vue/shared v3.5.41 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function to(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ve={},nn=[],bt=()=>{},xr=()=>!1,cs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),fs=e=>e.startsWith("onUpdate:"),Ve=Object.assign,no=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ki=Object.prototype.hasOwnProperty,me=(e,t)=>Ki.call(e,t),X=Array.isArray,sn=e=>Un(e)==="[object Map]",mn=e=>Un(e)==="[object Set]",Eo=e=>Un(e)==="[object Date]",ee=e=>typeof e=="function",Re=e=>typeof e=="string",at=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",_r=e=>(ge(e)||ee(e))&&ee(e.then)&&ee(e.catch),yr=Object.prototype.toString,Un=e=>yr.call(e),qi=e=>Un(e).slice(8,-1),wr=e=>Un(e)==="[object Object]",so=e=>Re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Cn=to(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ds=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Gi=/-\w/g,Je=ds(e=>e.replace(Gi,t=>t.slice(1).toUpperCase())),Wi=/\B([A-Z])/g,Xt=ds(e=>e.replace(Wi,"-$1").toLowerCase()),ps=ds(e=>e.charAt(0).toUpperCase()+e.slice(1)),As=ds(e=>e?`on${ps(e)}`:""),gt=(e,t)=>!Object.is(e,t),Xn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},hs=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let So;const ms=()=>So||(So=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Yt(e){if(X(e)){const t={};for(let n=0;n{if(n){const s=n.split(Ji);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ie(e){let t="";if(Re(e))t=e;else if(X(e))for(let n=0;ngn(n,t))}const Sr=e=>!!(e&&e.__v_isRef===!0),T=e=>Re(e)?e:e==null?"":X(e)||ge(e)&&(e.toString===yr||!ee(e.toString))?Sr(e)?T(e.value):JSON.stringify(e,Ar,2):String(e),Ar=(e,t)=>Sr(t)?Ar(e,t.value):sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[ks(s,r)+" =>"]=o,n),{})}:mn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ks(n))}:at(t)?ks(t):ge(t)&&!X(t)&&!wr(t)?String(t):t,ks=(e,t="")=>{var n;return at(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.41 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let De;class tl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&De&&(De.active?(this.parent=De,this.index=(De.scopes||(De.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t0&&--this._on===0){if(De===this)De=this.prevScope;else{let t=De;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Sn){let t=Sn;for(Sn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;En;){let t=En;for(En=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Pr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Or(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),lo(s),sl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function Fs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Tr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Tr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===In)||(e.globalVersion=In,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Fs(e))))return;e.flags|=2;const t=e.dep,n=xe,s=it;xe=e,it=!0;try{Pr(e);const o=e.fn(e._value);(t.version===0||gt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{xe=n,it=s,Or(e),e.flags&=-3}}function lo(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)lo(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function sl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let it=!0;const $r=[];function Pt(){$r.push(it),it=!1}function Ot(){const e=$r.pop();it=e===void 0?!0:e}function Ao(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=xe;xe=void 0;try{t()}finally{xe=n}}}let In=0;class ol{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ao{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!xe||!it||xe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==xe)n=this.activeLink=new ol(xe,this),xe.deps?(n.prevDep=xe.depsTail,xe.depsTail.nextDep=n,xe.depsTail=n):xe.deps=xe.depsTail=n,Nr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=xe.depsTail,n.nextDep=void 0,xe.depsTail.nextDep=n,xe.depsTail=n,xe.deps===n&&(xe.deps=s)}return n}trigger(t){this.version++,In++,this.notify(t)}notify(t){ro();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{io()}}}function Nr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Nr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Hs=new WeakMap,Jt=Symbol(""),Bs=Symbol(""),Pn=Symbol("");function Le(e,t,n){if(it&&xe){let s=Hs.get(e);s||Hs.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new ao),o.map=s,o.key=n),o.track()}}function kt(e,t,n,s,o,r){const i=Hs.get(e);if(!i){In++;return}const l=a=>{a&&a.trigger()};if(ro(),t==="clear")i.forEach(l);else{const a=X(e),d=a&&so(n);if(a&&n==="length"){const c=Number(s);i.forEach((h,g)=>{(g==="length"||g===Pn||!at(g)&&g>=c)&&l(h)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),d&&l(i.get(Pn)),t){case"add":a?d&&l(i.get("length")):(l(i.get(Jt)),sn(e)&&l(i.get(Bs)));break;case"delete":a||(l(i.get(Jt)),sn(e)&&l(i.get(Bs)));break;case"set":sn(e)&&l(i.get(Jt));break}}io()}function Zt(e){const t=he(e);return t===e?t:(Le(t,"iterate",Pn),ot(e)?t:t.map(ut))}function gs(e){return Le(e=he(e),"iterate",Pn),e}function ht(e,t){return Tt(e)?un(Qt(e)?ut(t):t):ut(t)}const rl={__proto__:null,[Symbol.iterator](){return Is(this,Symbol.iterator,e=>ht(this,e))},concat(...e){return Zt(this).concat(...e.map(t=>X(t)?Zt(t):t))},entries(){return Is(this,"entries",e=>(e[1]=ht(this,e[1]),e))},every(e,t){return wt(this,"every",e,t,void 0,arguments)},filter(e,t){return wt(this,"filter",e,t,n=>n.map(s=>ht(this,s)),arguments)},find(e,t){return wt(this,"find",e,t,n=>ht(this,n),arguments)},findIndex(e,t){return wt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return wt(this,"findLast",e,t,n=>ht(this,n),arguments)},findLastIndex(e,t){return wt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return wt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ps(this,"includes",e)},indexOf(...e){return Ps(this,"indexOf",e)},join(e){return Zt(this).join(e)},lastIndexOf(...e){return Ps(this,"lastIndexOf",e)},map(e,t){return wt(this,"map",e,t,void 0,arguments)},pop(){return vn(this,"pop")},push(...e){return vn(this,"push",e)},reduce(e,...t){return ko(this,"reduce",e,t)},reduceRight(e,...t){return ko(this,"reduceRight",e,t)},shift(){return vn(this,"shift")},some(e,t){return wt(this,"some",e,t,void 0,arguments)},splice(...e){return vn(this,"splice",e)},toReversed(){return Zt(this).toReversed()},toSorted(e){return Zt(this).toSorted(e)},toSpliced(...e){return Zt(this).toSpliced(...e)},unshift(...e){return vn(this,"unshift",e)},values(){return Is(this,"values",e=>ht(this,e))}};function Is(e,t,n){const s=gs(e),o=s[t]();return s!==e&&!ot(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.done||(r.value=n(r.value)),r}),o}const il=Array.prototype;function wt(e,t,n,s,o,r){const i=gs(e),l=i!==e&&!ot(e),a=i[t];if(a!==il[t]){const h=a.apply(e,r);return l?ut(h):h}let d=n;i!==e&&(l?d=function(h,g){return n.call(this,ht(e,h),g,e)}:n.length>2&&(d=function(h,g){return n.call(this,h,g,e)}));const c=a.call(i,d,s);return l&&o?o(c):c}function ko(e,t,n,s){const o=gs(e),r=o!==e&&!ot(e);let i=n,l=!1;o!==e&&(r?(l=s.length===0,i=function(d,c,h){return l&&(l=!1,d=ht(e,d)),n.call(this,d,ht(e,c),h,e)}):n.length>3&&(i=function(d,c,h){return n.call(this,d,c,h,e)}));const a=o[t](i,...s);return l?ht(e,a):a}function Ps(e,t,n){const s=he(e);Le(s,"iterate",Pn);const o=s[t](...n);return(o===-1||o===!1)&&fo(n[0])?(n[0]=he(n[0]),s[t](...n)):o}function vn(e,t,n=[]){Pt(),ro();const s=he(e)[t].apply(e,n);return io(),Ot(),s}const ll=to("__proto__,__v_isRef,__isVue"),Dr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(at));function al(e){at(e)||(e=String(e));const t=he(this);return Le(t,"has",e),t.hasOwnProperty(e)}class Mr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?bl:Lr:r?Ur:jr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=X(t);if(!o){let a;if(i&&(a=rl[n]))return a;if(n==="hasOwnProperty")return al}const l=Reflect.get(t,n,He(t)?t:s);if((at(n)?Dr.has(n):ll(n))||(o||Le(t,"get",n),r))return l;if(He(l)){const a=i&&so(n)?l:l.value;return o&&ge(a)?qs(a):a}return ge(l)?o?qs(l):vs(l):l}}class Vr extends Mr{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];const i=X(t)&&so(n);if(!this._isShallow){const d=Tt(r);if(!ot(s)&&!Tt(s)&&(r=he(r),s=he(s)),!i&&He(r)&&!He(s))return d||(r.value=s),!0}const l=i?Number(n)e,Gn=e=>Reflect.getPrototypeOf(e);function pl(e,t,n){return function(...s){const o=this.__v_raw,r=he(o),i=sn(r),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,d=o[e](...s),c=n?Ks:t?un:ut;return!t&&Le(r,"iterate",a?Bs:Jt),Ve(Object.create(d),{next(){const{value:h,done:g}=d.next();return g?{value:h,done:g}:{value:l?[c(h[0]),c(h[1])]:c(h),done:g}}})}}function Wn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function hl(e,t){const n={get(o){const r=this.__v_raw,i=he(r),l=he(o);e||(gt(o,l)&&Le(i,"get",o),Le(i,"get",l));const{has:a}=Gn(i),d=t?Ks:e?un:ut;if(a.call(i,o))return d(r.get(o));if(a.call(i,l))return d(r.get(l));r!==i&&r.get(o)},get size(){const o=this.__v_raw;return!e&&Le(he(o),"iterate",Jt),o.size},has(o){const r=this.__v_raw,i=he(r),l=he(o);return e||(gt(o,l)&&Le(i,"has",o),Le(i,"has",l)),o===l?r.has(o):r.has(o)||r.has(l)},forEach(o,r){const i=this,l=i.__v_raw,a=he(l),d=t?Ks:e?un:ut;return!e&&Le(a,"iterate",Jt),l.forEach((c,h)=>o.call(r,d(c),d(h),i))}};return Ve(n,e?{add:Wn("add"),set:Wn("set"),delete:Wn("delete"),clear:Wn("clear")}:{add(o){const r=he(this),i=Gn(r),l=he(o),a=!t&&!ot(o)&&!Tt(o)?l:o;return i.has.call(r,a)||gt(o,a)&&i.has.call(r,o)||gt(l,a)&&i.has.call(r,l)||(r.add(a),kt(r,"add",a,a)),this},set(o,r){!t&&!ot(r)&&!Tt(r)&&(r=he(r));const i=he(this),{has:l,get:a}=Gn(i);let d=l.call(i,o);d||(o=he(o),d=l.call(i,o));const c=a.call(i,o);return i.set(o,r),d?gt(r,c)&&kt(i,"set",o,r):kt(i,"add",o,r),this},delete(o){const r=he(this),{has:i,get:l}=Gn(r);let a=i.call(r,o);a||(o=he(o),a=i.call(r,o)),l&&l.call(r,o);const d=r.delete(o);return a&&kt(r,"delete",o,void 0),d},clear(){const o=he(this),r=o.size!==0,i=o.clear();return r&&kt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=pl(o,e,t)}),n}function uo(e,t){const n=hl(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(me(n,o)&&o in s?n:s,o,r)}const ml={get:uo(!1,!1)},gl={get:uo(!1,!0)},vl={get:uo(!0,!1)};const jr=new WeakMap,Ur=new WeakMap,Lr=new WeakMap,bl=new WeakMap;function xl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function vs(e){return Tt(e)?e:co(e,!1,cl,ml,jr)}function Fr(e){return co(e,!1,dl,gl,Ur)}function qs(e){return co(e,!0,fl,vl,Lr)}function co(e,t,n,s,o){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=o.get(e);if(r)return r;const i=xl(qi(e));if(i===0)return e;const l=new Proxy(e,i===2?s:n);return o.set(e,l),l}function Qt(e){return Tt(e)?Qt(e.__v_raw):!!(e&&e.__v_isReactive)}function Tt(e){return!!(e&&e.__v_isReadonly)}function ot(e){return!!(e&&e.__v_isShallow)}function fo(e){return e?!!e.__v_raw:!1}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function _l(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&Cr(e,"__v_skip",!0),e}const ut=e=>ge(e)?vs(e):e,un=e=>ge(e)?qs(e):e;function He(e){return e?e.__v_isRef===!0:!1}function W(e){return Hr(e,!1)}function yl(e){return Hr(e,!0)}function Hr(e,t){return He(e)?e:new wl(e,t)}class wl{constructor(t,n){this.dep=new ao,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:he(t),this._value=n?t:ut(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ot(t)||Tt(t);t=s?t:he(t),gt(t,n)&&(this._rawValue=t,this._value=s?t:ut(t),this.dep.trigger())}}function Te(e){return He(e)?e.value:e}const Cl={get:(e,t,n)=>t==="__v_raw"?e:Te(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return He(o)&&!He(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function Br(e){return Qt(e)?e:new Proxy(e,Cl)}class El{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ao(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=In-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&xe!==this)return Ir(this,!0),!0}get value(){const t=this.dep.track();return Tr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Sl(e,t,n=!1){let s,o;return ee(e)?s=e:(s=e.get,o=e.set),new El(s,o,n)}const zn={},ns=new WeakMap;let Wt;function Al(e,t=!1,n=Wt){if(n){let s=ns.get(n);s||ns.set(n,s=[]),s.push(e)}}function kl(e,t,n=ve){const{immediate:s,deep:o,once:r,scheduler:i,augmentJob:l,call:a}=n,d=P=>o?P:ot(P)||o===!1||o===0?Rt(P,1):Rt(P);let c,h,g,x,j=!1,O=!1;if(He(e)?(h=()=>e.value,j=ot(e)):Qt(e)?(h=()=>d(e),j=!0):X(e)?(O=!0,j=e.some(P=>Qt(P)||ot(P)),h=()=>e.map(P=>{if(He(P))return P.value;if(Qt(P))return d(P);if(ee(P))return a?a(P,2):P()})):ee(e)?t?h=a?()=>a(e,2):e:h=()=>{if(g){Pt();try{g()}finally{Ot()}}const P=Wt;Wt=c;try{return a?a(e,3,[x]):e(x)}finally{Wt=P}}:h=bt,t&&o){const P=h,A=o===!0?1/0:o;h=()=>Rt(P(),A)}const G=nl(),K=()=>{c.stop(),G&&G.active&&no(G.effects,c)};if(r&&t){const P=t;t=(...A)=>{const V=P(...A);return K(),V}}let M=O?new Array(e.length).fill(zn):zn;const q=P=>{if(!(!(c.flags&1)||!c.dirty&&!P))if(t){const A=c.run();if(P||o||j||(O?A.some((V,te)=>gt(V,M[te])):gt(A,M))){g&&g();const V=Wt;Wt=c;try{const te=[A,M===zn?void 0:O&&M[0]===zn?[]:M,x];M=A,a?a(t,3,te):t(...te)}finally{Wt=V}}}else c.run()};return l&&l(q),c=new kr(h),c.scheduler=i?()=>i(q,!1):q,x=P=>Al(P,!1,c),g=c.onStop=()=>{const P=ns.get(c);if(P){if(a)a(P,4);else for(const A of P)A();ns.delete(c)}},t?s?q(!0):M=c.run():i?i(q.bind(null,!0),!0):c.run(),K.pause=c.pause.bind(c),K.resume=c.resume.bind(c),K.stop=K,K}function Rt(e,t=1/0,n){if(t<=0||!ge(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,He(e))Rt(e.value,t,n);else if(X(e))for(let s=0;s{Rt(s,t,n)});else if(wr(e)){for(const s in e)Rt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Rt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.41 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ln(e,t,n,s){try{return s?e(...s):e()}catch(o){bs(o,t,n)}}function ct(e,t,n,s){if(ee(e)){const o=Ln(e,t,n,s);return o&&_r(o)&&o.catch(r=>{bs(r,t,n)}),o}if(X(e)){const o=[];for(let r=0;r>>1,o=We[s],r=On(o);r=On(n)?We.push(e):We.splice(Il(t),0,e),e.flags|=1,qr()}}function qr(){ss||(ss=Kr.then(Wr))}function Pl(e){if(!X(e))jt&&e.id===-1?jt.splice(en+1,0,e):e.flags&1||(on.push(e),e.flags|=1);else for(let t=0;tOn(n)-On(s));if(on.length=0,jt){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function Wr(e){try{for(pt=0;pt{s._d&&ls(-1);const r=os(t),i=It.length;let l;try{l=e(...o)}finally{for(let a=It.length;a>i;a--)_o();os(r),s._d&&ls(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ne(e,t){if(Me===null)return e;const n=Cs(Me),s=e.dirs||(e.dirs=[]);for(let o=0;o1)return n&&ee(t)?t.call(s&&s.proxy):t}}const Ol=Symbol.for("v-scx"),Tl=()=>lt(Ol);function Ht(e,t,n){return Jr(e,t,n)}function Jr(e,t,n=ve){const{immediate:s,deep:o,flush:r,once:i}=n,l=Ve({},n),a=t&&s||!t&&r!=="post";let d;if(Dn){if(r==="sync"){const x=Tl();d=x.__watcherHandles||(x.__watcherHandles=[])}else if(!a){const x=()=>{};return x.stop=bt,x.resume=bt,x.pause=bt,x}}const c=Fe;l.call=(x,j,O)=>ct(x,c,j,O);let h=!1;r==="post"?l.scheduler=x=>{Xe(x,c&&c.suspense)}:r!=="sync"&&(h=!0,l.scheduler=(x,j)=>{j?x():ho(x)}),l.augmentJob=x=>{t&&(x.flags|=4),h&&(x.flags|=2,c&&(x.id=c.uid,x.i=c))};const g=kl(e,t,l);return Dn&&(d?d.push(g):a&&g()),g}function $l(e,t,n){const s=this.proxy,o=Re(e)?e.includes(".")?Qr(s,e):()=>s[e]:e.bind(s,s);let r;ee(t)?r=t:(r=t.handler,n=t);const i=Hn(this),l=Jr(o,r.bind(s),n);return i(),l}function Qr(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;oe.__isTeleport,Os=Symbol("_leaveCb");function Dl(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==xt){t=n;break}}return t}function Yr(e){if(!go(e))return xs(e.type)&&e.children?Dl(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&ee(n.default))return n.default()}}function mo(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;mo(xs(n.type)&&Yr(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Xr(e,t){return ee(e)?Ve({name:e.name},t,{setup:e}):e}function Zr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Io(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const rs=new WeakMap;function An(e,t,n,s,o=!1){if(X(e)){e.forEach((O,G)=>An(O,t&&(X(t)?t[G]:t),n,s,o));return}if(rn(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&An(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?Cs(s.component):s.el,i=o?null:r,{i:l,r:a}=e,d=t&&t.r,c=l.refs===ve?l.refs={}:l.refs,h=l.setupState,g=he(h),x=h===ve?xr:O=>Io(c,O)?!1:me(g,O),j=(O,G)=>!(G&&Io(c,G));if(d!=null&&d!==a){if(Po(t),Re(d))c[d]=null,x(d)&&(h[d]=null);else if(He(d)){const O=t;j(d,O.k)&&(d.value=null),O.k&&(c[O.k]=null)}}if(ee(a))Ln(a,l,12,[i,c]);else{const O=Re(a),G=He(a);if(O||G){const K=()=>{if(e.f){const M=O?x(a)?h[a]:c[a]:j()||!e.k?a.value:c[e.k];if(o)X(M)&&no(M,r);else if(X(M))M.includes(r)||M.push(r);else if(O)c[a]=[r],x(a)&&(h[a]=c[a]);else{const q=[r];j(a,e.k)&&(a.value=q),e.k&&(c[e.k]=q)}}else O?(c[a]=i,x(a)&&(h[a]=i)):G&&(j(a,e.k)&&(a.value=i),e.k&&(c[e.k]=i))};if(i){const M=()=>{K(),rs.delete(e)};M.id=-1,rs.set(e,M),Xe(M,n)}else Po(e),K()}}}function Po(e){const t=rs.get(e);t&&(t.flags|=8,rs.delete(e))}ms().requestIdleCallback;ms().cancelIdleCallback;const rn=e=>!!e.type.__asyncLoader,go=e=>e.type.__isKeepAlive;function Ml(e,t){ei(e,"a",t)}function Vl(e,t){ei(e,"da",t)}function ei(e,t,n=Fe){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(_s(t,s,n),n){let o=n.parent;for(;o&&o.parent;)go(o.parent.vnode)&&jl(s,t,n,o),o=o.parent}}function jl(e,t,n,s){const o=_s(t,e,s,!0);ti(()=>{no(s[t],o)},n)}function _s(e,t,n=Fe,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...i)=>{Pt();const l=Hn(n),a=ct(t,n,e,i);return l(),Ot(),a});return s?o.unshift(r):o.push(r),r}}const $t=e=>(t,n=Fe)=>{(!Dn||e==="sp")&&_s(e,(...s)=>t(...s),n)},Ul=$t("bm"),vo=$t("m"),Ll=$t("bu"),Fl=$t("u"),Hl=$t("bum"),ti=$t("um"),Bl=$t("sp"),Kl=$t("rtg"),ql=$t("rtc");function Gl(e,t=Fe){_s("ec",e,t)}const Wl="components";function Fn(e,t){return Jl(Wl,e,!0,t)||e}const zl=Symbol.for("v-ndc");function Jl(e,t,n=!0,s=!1){const o=Me||Fe;if(o){const r=o.type;{const l=Na(r,!1);if(l&&(l===t||l===Je(t)||l===ps(Je(t))))return r}const i=Oo(o[e]||r[e],t)||Oo(o.appContext[e],t);return!i&&s?r:i}}function Oo(e,t){return e&&(e[t]||e[Je(t)]||e[ps(Je(t))])}function Oe(e,t,n,s){let o;const r=n,i=X(e);if(i||Re(e)){const l=i&&Qt(e);let a=!1,d=!1;l&&(a=!ot(e),d=Tt(e),e=gs(e)),o=new Array(e.length);for(let c=0,h=e.length;ct(l,a,void 0,r));else{const l=Object.keys(e);o=new Array(l.length);for(let a=0,d=l.length;a0;return w(),cn(ce,null,[ke("slot",d,s)],c?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const l=It.length;w();let a;try{const d=i&&ni(i(n)),c=n.key||r||d&&d.key;a=cn(ce,{key:(c&&!at(c)?c:`_${t}`)+(!d&&s?"_fb":"")},d||(s?s():[]),d&&e._===1?64:-2)}catch(d){for(let c=It.length;c>l;c--)_o();throw d}finally{i&&i._c&&(i._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function ni(e){return e.some(t=>$n(t)?!(t.type===xt||t.type===ce&&!ni(t.children)):!0)?e:null}const Gs=e=>e?Ci(e)?Cs(e):Gs(e.parent):null,kn=Ve(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Gs(e.parent),$root:e=>Gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>oi(e),$forceUpdate:e=>e.f||(e.f=()=>{ho(e.update)}),$nextTick:e=>e.n||(e.n=po.bind(e.proxy)),$watch:e=>$l.bind(e)}),Ts=(e,t)=>e!==ve&&!e.__isScriptSetup&&me(e,t),Yl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(Ts(s,t))return i[t]=1,s[t];if(o!==ve&&me(o,t))return i[t]=2,o[t];if(me(r,t))return i[t]=3,r[t];if(n!==ve&&me(n,t))return i[t]=4,n[t];Ws&&(i[t]=0)}}const d=kn[t];let c,h;if(d)return t==="$attrs"&&Le(e.attrs,"get",""),d(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==ve&&me(n,t))return i[t]=4,n[t];if(h=a.config.globalProperties,me(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return Ts(o,t)?(o[t]=n,!0):s!==ve&&me(s,t)?(s[t]=n,!0):me(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,props:r,type:i}},l){let a;return!!(n[l]||e!==ve&&l[0]!=="$"&&me(e,l)||Ts(t,l)||me(r,l)||me(s,l)||me(kn,l)||me(o.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:me(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function To(e){return X(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ws=!0;function Xl(e){const t=oi(e),n=e.proxy,s=e.ctx;Ws=!1,t.beforeCreate&&$o(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:i,watch:l,provide:a,inject:d,created:c,beforeMount:h,mounted:g,beforeUpdate:x,updated:j,activated:O,deactivated:G,beforeDestroy:K,beforeUnmount:M,destroyed:q,unmounted:P,render:A,renderTracked:V,renderTriggered:te,errorCaptured:R,serverPrefetch:U,expose:Ne,inheritAttrs:J,components:et,directives:Be,filters:Bt}=t;if(d&&Zl(d,s,null),i)for(const ue in i){const re=i[ue];ee(re)&&(s[ue]=re.bind(n))}if(o){const ue=o.call(n,n);ge(ue)&&(e.data=vs(ue))}if(Ws=!0,r)for(const ue in r){const re=r[ue],se=ee(re)?re.bind(n,n):ee(re.get)?re.get.bind(n,n):bt,rt=!ee(re)&&ee(re.set)?re.set.bind(n):bt,Qe=_e({get:se,set:rt});Object.defineProperty(s,ue,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:je=>Qe.value=je})}if(l)for(const ue in l)si(l[ue],s,n,ue);if(a){const ue=ee(a)?a.call(n):a;Reflect.ownKeys(ue).forEach(re=>{Zn(re,ue[re])})}c&&$o(c,e,"c");function we(ue,re){X(re)?re.forEach(se=>ue(se.bind(n))):re&&ue(re.bind(n))}if(we(Ul,h),we(vo,g),we(Ll,x),we(Fl,j),we(Ml,O),we(Vl,G),we(Gl,R),we(ql,V),we(Kl,te),we(Hl,M),we(ti,P),we(Bl,U),X(Ne))if(Ne.length){const ue=e.exposed||(e.exposed={});Ne.forEach(re=>{Object.defineProperty(ue,re,{get:()=>n[re],set:se=>n[re]=se,enumerable:!0})})}else e.exposed||(e.exposed={});A&&e.render===bt&&(e.render=A),J!=null&&(e.inheritAttrs=J),et&&(e.components=et),Be&&(e.directives=Be),U&&Zr(e)}function Zl(e,t,n=bt){X(e)&&(e=zs(e));for(const s in e){const o=e[s];let r;ge(o)?"default"in o?r=lt(o.from||s,o.default,!0):r=lt(o.from||s):r=lt(o),He(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:i=>r.value=i}):t[s]=r}}function $o(e,t,n){ct(X(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function si(e,t,n,s){let o=s.includes(".")?Qr(n,s):()=>n[s];if(Re(e)){const r=t[e];ee(r)&&Ht(o,r)}else if(ee(e))Ht(o,e.bind(n));else if(ge(e))if(X(e))e.forEach(r=>si(r,t,n,s));else{const r=ee(e.handler)?e.handler.bind(n):t[e.handler];ee(r)&&Ht(o,r,e)}}function oi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:i}}=e.appContext,l=r.get(t);let a;return l?a=l:!o.length&&!n&&!s?a=t:(a={},o.length&&o.forEach(d=>is(a,d,i,!0)),is(a,t,i)),ge(t)&&r.set(t,a),a}function is(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&is(e,r,n,!0),o&&o.forEach(i=>is(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=ea[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ea={data:No,props:Do,emits:Do,methods:_n,computed:_n,beforeCreate:qe,created:qe,beforeMount:qe,mounted:qe,beforeUpdate:qe,updated:qe,beforeDestroy:qe,beforeUnmount:qe,destroyed:qe,unmounted:qe,activated:qe,deactivated:qe,errorCaptured:qe,serverPrefetch:qe,components:_n,directives:_n,watch:na,provide:No,inject:ta};function No(e,t){return t?e?function(){return Ve(ee(e)?e.call(this,this):e,ee(t)?t.call(this,this):t)}:t:e}function ta(e,t){return _n(zs(e),zs(t))}function zs(e){if(X(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Je(t)}Modifiers`]||e[`${Xt(t)}Modifiers`];function ia(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ve;let o=n;const r=t.startsWith("update:"),i=r&&ra(s,t.slice(7));i&&(i.trim&&(o=n.map(c=>Re(c)?c.trim():c)),i.number&&(o=n.map(hs)));let l,a=s[l=As(t)]||s[l=As(Je(t))];!a&&r&&(a=s[l=As(Xt(t))]),a&&ct(a,e,6,o);const d=s[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ct(d,e,6,o)}}const la=new WeakMap;function ii(e,t,n=!1){const s=n?la:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let i={},l=!1;if(!ee(e)){const a=d=>{const c=ii(d,t,!0);c&&(l=!0,Ve(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(ge(e)&&s.set(e,null),null):(X(r)?r.forEach(a=>i[a]=null):Ve(i,r),ge(e)&&s.set(e,i),i)}function ys(e,t){return!e||!cs(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),me(e,t[0].toLowerCase()+t.slice(1))||me(e,Xt(t))||me(e,t))}function Mo(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:i,attrs:l,emit:a,render:d,renderCache:c,props:h,data:g,setupState:x,ctx:j,inheritAttrs:O}=e,G=os(e);let K,M;try{if(n.shapeFlag&4){const P=o||s,A=P;K=mt(d.call(A,P,c,h,x,g,j)),M=l}else{const P=t;K=mt(P.length>1?P(h,{attrs:l,slots:i,emit:a}):P(h,null)),M=t.props?l:aa(l)}}catch(P){It.length=0,bs(P,e,1),K=ke(xt)}let q=K;if(M&&O!==!1){const P=Object.keys(M),{shapeFlag:A}=q;P.length&&A&7&&(r&&P.some(fs)&&(M=ua(M,r)),q=fn(q,M,!1,!0))}if(n.dirs&&(q=fn(q,null,!1,!0),q.dirs=q.dirs?q.dirs.concat(n.dirs):n.dirs),n.transition){const P=xs(q.type)&&Yr(q)||q;mo(P,n.transition)}return K=q,os(G),K}const aa=e=>{let t;for(const n in e)(n==="class"||n==="style"||cs(n))&&((t||(t={}))[n]=e[n]);return t},ua=(e,t)=>{const n={};for(const s in e)(!fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ca(e,t,n){const{props:s,children:o,component:r}=e,{props:i,children:l,patchFlag:a}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Vo(s,i,d):!!i;if(a&8){const c=t.dynamicProps;for(let h=0;hObject.create(ai),ci=e=>Object.getPrototypeOf(e)===ai;function da(e,t,n,s=!1){const o={},r=ui();e.propsDefaults=Object.create(null),fi(e,t,o,r);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=s?o:Fr(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function pa(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:i}}=e,l=he(o),[a]=e.propsOptions;let d=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let h=0;h{a=!0;const[g,x]=di(h,t,!0);Ve(i,g),x&&l.push(...x)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!r&&!a)return ge(e)&&s.set(e,nn),nn;if(X(r))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",xo=e=>X(e)?e.map(mt):[mt(e)],ma=(e,t,n)=>{if(t._n)return t;const s=Ft((...o)=>xo(t(...o)),n);return s._c=!1,s},pi=(e,t,n)=>{const s=e._ctx;for(const o in e){if(bo(o))continue;const r=e[o];if(ee(r))t[o]=ma(o,r,s);else if(r!=null){const i=xo(r);t[o]=()=>i}}},hi=(e,t)=>{const n=xo(t);e.slots.default=()=>n},mi=(e,t,n)=>{for(const s in t)(n||!bo(s))&&(e[s]=t[s])},ga=(e,t,n)=>{const s=e.slots=ui();if(e.vnode.shapeFlag&32){const o=t._;o?(mi(s,t,n),n&&Cr(s,"_",o,!0)):pi(t,s)}else t&&hi(e,t)},va=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,i=ve;if(s.shapeFlag&32){const l=t._;l?n&&l===1?r=!1:mi(o,t,n):(r=!t.$stable,pi(t,o)),i=t}else t&&(hi(e,t),i={default:1});if(r)for(const l in o)!bo(l)&&i[l]==null&&delete o[l]},Xe=wa;function ba(e){return xa(e)}function xa(e,t){const n=ms();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:i,createText:l,createComment:a,setText:d,setElementText:c,parentNode:h,nextSibling:g,setScopeId:x=bt,insertStaticContent:j}=e,O=(f,p,m,y=null,E=null,_=null,F=void 0,N=null,D=!!p.dynamicChildren)=>{if(f===p)return;f&&!bn(f,p)&&(y=C(f),je(f,E,_,!0),f=null),p.patchFlag===-2&&(D=!1,p.dynamicChildren=null);const{type:k,ref:Q,shapeFlag:H}=p;switch(k){case ws:G(f,p,m,y);break;case xt:K(f,p,m,y);break;case es:f==null&&M(p,m,y,F);break;case ce:et(f,p,m,y,E,_,F,N,D);break;default:H&1?A(f,p,m,y,E,_,F,N,D):H&6?Be(f,p,m,y,E,_,F,N,D):(H&64||H&128)&&k.process(f,p,m,y,E,_,F,N,D,$)}Q!=null&&E?An(Q,f&&f.ref,_,p||f,!p):Q==null&&f&&f.ref!=null&&An(f.ref,null,_,f,!0)},G=(f,p,m,y)=>{if(f==null)s(p.el=l(p.children),m,y);else{const E=p.el=f.el;p.children!==f.children&&d(E,p.children)}},K=(f,p,m,y)=>{f==null?s(p.el=a(p.children||""),m,y):p.el=f.el},M=(f,p,m,y)=>{[f.el,f.anchor]=j(f.children,p,m,y,f.el,f.anchor)},q=({el:f,anchor:p},m,y)=>{let E;for(;f&&f!==p;)E=g(f),s(f,m,y),f=E;s(p,m,y)},P=({el:f,anchor:p})=>{let m;for(;f&&f!==p;)m=g(f),o(f),f=m;o(p)},A=(f,p,m,y,E,_,F,N,D)=>{if(p.type==="svg"?F="svg":p.type==="math"&&(F="mathml"),f==null)V(p,m,y,E,_,F,N,D);else{const k=f.el&&f.el._isVueCE?f.el:null;try{k&&k._beginPatch(),U(f,p,E,_,F,N,D)}finally{k&&k._endPatch()}}},V=(f,p,m,y,E,_,F,N)=>{let D,k;const{props:Q,shapeFlag:H,transition:z,dirs:Y}=f;if(D=f.el=i(f.type,_,Q&&Q.is,Q),H&8?c(D,f.children):H&16&&R(f.children,D,null,y,E,$s(f,_),F,N),Y&&qt(f,null,y,"created"),te(D,f,f.scopeId,F,y),Q){for(const fe in Q)fe!=="value"&&!Cn(fe)&&r(D,fe,null,Q[fe],_,y);"value"in Q&&r(D,"value",null,Q.value,_),(k=Q.onVnodeBeforeMount)&&dt(k,y,f)}Y&&qt(f,null,y,"beforeMount");const le=_a(E,z);le&&z.beforeEnter(D),s(D,p,m),((k=Q&&Q.onVnodeMounted)||le||Y)&&Xe(()=>{try{k&&dt(k,y,f),le&&z.enter(D),Y&&qt(f,null,y,"mounted")}finally{}},E)},te=(f,p,m,y,E)=>{if(m&&x(f,m),y)for(let _=0;_{for(let k=D;k{const N=p.el=f.el;let{patchFlag:D,dynamicChildren:k,dirs:Q}=p;D|=f.patchFlag&16;const H=f.props||ve,z=p.props||ve;let Y;if(m&&Gt(m,!1),(Y=z.onVnodeBeforeUpdate)&&dt(Y,m,p,f),Q&&qt(p,f,m,"beforeUpdate"),m&&Gt(m,!0),k&&(!f.dynamicChildren||f.dynamicChildren.length!==k.length)&&(D=0,F=!1,k=null),(H.innerHTML&&z.innerHTML==null||H.textContent&&z.textContent==null)&&c(N,""),k?Ne(f.dynamicChildren,k,N,m,y,$s(p,E),_):F||re(f,p,N,null,m,y,$s(p,E),_,!1),D>0){if(D&16)J(N,H,z,m,E);else if(D&2&&H.class!==z.class&&r(N,"class",null,z.class,E),D&4&&r(N,"style",H.style,z.style,E),D&8){const le=p.dynamicProps;for(let fe=0;fe{Y&&dt(Y,m,p,f),Q&&qt(p,f,m,"updated")},y)},Ne=(f,p,m,y,E,_,F)=>{for(let N=0;N{if(p!==m){if(p!==ve)for(const _ in p)!Cn(_)&&!(_ in m)&&r(f,_,p[_],null,E,y);for(const _ in m){if(Cn(_))continue;const F=m[_],N=p[_];F!==N&&_!=="value"&&r(f,_,N,F,E,y)}"value"in m&&r(f,"value",p.value,m.value,E)}},et=(f,p,m,y,E,_,F,N,D)=>{const k=p.el=f?f.el:l(""),Q=p.anchor=f?f.anchor:l("");let{patchFlag:H,dynamicChildren:z,slotScopeIds:Y}=p;Y&&(N=N?N.concat(Y):Y),f==null?(s(k,m,y),s(Q,m,y),R(p.children||[],m,Q,E,_,F,N,D)):H>0&&H&64&&z&&f.dynamicChildren&&f.dynamicChildren.length===z.length?(Ne(f.dynamicChildren,z,m,E,_,F,N),(p.key!=null||E&&p===E.subTree)&&gi(f,p,!0)):re(f,p,m,Q,E,_,F,N,D)},Be=(f,p,m,y,E,_,F,N,D)=>{p.slotScopeIds=N,f==null?p.shapeFlag&512?E.ctx.activate(p,m,y,F,D):Bt(p,m,y,E,_,F,D):Nt(f,p,D)},Bt=(f,p,m,y,E,_,F)=>{const N=f.component=Ra(f,y,E);if(go(f)&&(N.ctx.renderer=$),Pa(N,!1,F),N.asyncDep){if(E&&E.registerDep(N,we,F),!f.el){const D=N.subTree=ke(xt);K(null,D,p,m),f.placeholder=D.el}}else we(N,f,p,m,E,_,F)},Nt=(f,p,m)=>{const y=p.component=f.component;if(ca(f,p,m))if(y.asyncDep&&!y.asyncResolved){ue(y,p,m);return}else y.next=p,y.update();else p.el=f.el,y.vnode=p},we=(f,p,m,y,E,_,F)=>{const N=()=>{if(f.isMounted){let{next:H,bu:z,u:Y,parent:le,vnode:fe}=f;{const Ue=vi(f);if(Ue){H&&(H.el=fe.el,ue(f,H,F)),Ue.asyncDep.then(()=>{Xe(()=>{f.isUnmounted||k()},E)});return}}let de=H,Se;Gt(f,!1),H?(H.el=fe.el,ue(f,H,F)):H=fe,z&&Xn(z),(Se=H.props&&H.props.onVnodeBeforeUpdate)&&dt(Se,le,H,fe),Gt(f,!0);const Ce=Mo(f),Ke=f.subTree;f.subTree=Ce,O(Ke,Ce,h(Ke.el),C(Ke),f,E,_),H.el=Ce.el,de===null&&fa(f,Ce.el),Y&&Xe(Y,E),(Se=H.props&&H.props.onVnodeUpdated)&&Xe(()=>dt(Se,le,H,fe),E)}else{let H;const{el:z,props:Y}=p,{bm:le,m:fe,parent:de,root:Se,type:Ce}=f,Ke=rn(p);Gt(f,!1),le&&Xn(le),!Ke&&(H=Y&&Y.onVnodeBeforeMount)&&dt(H,de,p),Gt(f,!0);{Se.ce&&Se.ce._hasShadowRoot()&&Se.ce._injectChildStyle(Ce,f.parent?f.parent.type:void 0);const Ue=f.subTree=Mo(f);O(null,Ue,m,y,f,E,_),p.el=Ue.el}if(fe&&Xe(fe,E),!Ke&&(H=Y&&Y.onVnodeMounted)){const Ue=p;Xe(()=>dt(H,de,Ue),E)}(p.shapeFlag&256||de&&rn(de.vnode)&&de.vnode.shapeFlag&256)&&f.a&&Xe(f.a,E),f.isMounted=!0,p=m=y=null}};f.scope.on();const D=f.effect=new kr(N);f.scope.off();const k=f.update=D.run.bind(D),Q=f.job=D.runIfDirty.bind(D);Q.i=f,Q.id=f.uid,D.scheduler=()=>ho(Q),Gt(f,!0),k()},ue=(f,p,m)=>{p.component=f;const y=f.vnode.props;f.vnode=p,f.next=null,pa(f,p.props,y,m),va(f,p.children,m),Pt(),Ro(f),Ot()},re=(f,p,m,y,E,_,F,N,D=!1)=>{const k=f&&f.children,Q=f?f.shapeFlag:0,H=p.children,{patchFlag:z,shapeFlag:Y}=p;if(z>0){if(z&128){rt(k,H,m,y,E,_,F,N,D);return}else if(z&256){se(k,H,m,y,E,_,F,N,D);return}}Y&8?(Q&16&&Ye(k,E,_),H!==k&&c(m,H)):Q&16?Y&16?rt(k,H,m,y,E,_,F,N,D):Ye(k,E,_,!0):(Q&8&&c(m,""),Y&16&&R(H,m,y,E,_,F,N,D))},se=(f,p,m,y,E,_,F,N,D)=>{f=f||nn,p=p||nn;const k=f.length,Q=p.length,H=Math.min(k,Q);let z;for(z=0;zQ?Ye(f,E,_,!0,!1,H):R(p,m,y,E,_,F,N,D,H)},rt=(f,p,m,y,E,_,F,N,D)=>{let k=0;const Q=p.length;let H=f.length-1,z=Q-1;for(;k<=H&&k<=z;){const Y=f[k],le=p[k]=D?At(p[k]):mt(p[k]);if(bn(Y,le))O(Y,le,m,null,E,_,F,N,D);else break;k++}for(;k<=H&&k<=z;){const Y=f[H],le=p[z]=D?At(p[z]):mt(p[z]);if(bn(Y,le))O(Y,le,m,null,E,_,F,N,D);else break;H--,z--}if(k>H){if(k<=z){const Y=z+1,le=Yz)for(;k<=H;)je(f[k],E,_,!0),k++;else{const Y=k,le=k,fe=new Map;for(k=le;k<=z;k++){const $e=p[k]=D?At(p[k]):mt(p[k]);$e.key!=null&&fe.set($e.key,k)}let de,Se=0;const Ce=z-le+1;let Ke=!1,Ue=0;const Kt=new Array(Ce);for(k=0;k=Ce){je($e,E,_,!0);continue}let nt;if($e.key!=null)nt=fe.get($e.key);else for(de=le;de<=z;de++)if(Kt[de-le]===0&&bn($e,p[de])){nt=de;break}nt===void 0?je($e,E,_,!0):(Kt[nt-le]=k+1,nt>=Ue?Ue=nt:Ke=!0,O($e,p[nt],m,null,E,_,F,N,D),Se++)}const Bn=Ke?ya(Kt):nn;for(de=Bn.length-1,k=Ce-1;k>=0;k--){const $e=le+k,nt=p[$e],Kn=p[$e+1],qn=$e+1{const{el:_,type:F,transition:N,children:D,shapeFlag:k}=f;if(k&6){Qe(f.component.subTree,p,m,y);return}if(k&128){f.suspense.move(p,m,y);return}if(k&64){F.move(f,p,m,$);return}if(F===ce){s(_,p,m);for(let H=0;HN.enter(_),E));else{const{leave:H,delayLeave:z,afterLeave:Y}=N,le=()=>{f.ctx.isUnmounted?o(_):s(_,p,m)},fe=()=>{const de=_._isLeaving||!!_[Os];_._isLeaving&&_[Os](!0),N.persisted&&!de?le():H(_,()=>{le(),Y&&Y()})};z?z(_,le,fe):fe()}else s(_,p,m)},je=(f,p,m,y=!1,E=!1)=>{const{type:_,props:F,ref:N,children:D,dynamicChildren:k,shapeFlag:Q,patchFlag:H,dirs:z,cacheIndex:Y,memo:le}=f;if(H===-2&&(E=!1),N!=null&&(Pt(),An(N,null,m,f,!0),Ot()),Y!=null&&(p.renderCache[Y]=void 0),Q&256){p.ctx.deactivate(f);return}const fe=Q&1&&z,de=!rn(f);let Se;if(de&&(Se=F&&F.onVnodeBeforeUnmount)&&dt(Se,p,f),Q&6)_t(f.component,m,y);else{if(Q&128){f.suspense.unmount(m,y);return}fe&&qt(f,null,p,"beforeUnmount"),Q&64?f.type.remove(f,p,m,$,y):k&&!k.hasOnce&&(_!==ce||H>0&&H&64)?Ye(k,p,m,!1,!0):(_===ce&&H&384||!E&&Q&16)&&Ye(D,p,m),y&&Dt(f)}const Ce=le!=null&&Y==null;(de&&(Se=F&&F.onVnodeUnmounted)||fe||Ce)&&Xe(()=>{Se&&dt(Se,p,f),fe&&qt(f,null,p,"unmounted"),Ce&&(f.el=null)},m)},Dt=f=>{const{type:p,el:m,anchor:y,transition:E}=f;if(p===ce){Mt(m,y);return}if(p===es){P(f);return}const _=()=>{o(m),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(f.shapeFlag&1&&E&&!E.persisted){const{leave:F,delayLeave:N}=E,D=()=>F(m,_);N?N(f.el,_,D):D()}else _()},Mt=(f,p)=>{let m;for(;f!==p;)m=g(f),o(f),f=m;o(p)},_t=(f,p,m)=>{const{bum:y,scope:E,job:_,subTree:F,um:N,m:D,a:k}=f;Uo(D),Uo(k),y&&Xn(y),E.stop(),_&&(_.flags|=8,je(F,f,p,m)),N&&Xe(N,p),Xe(()=>{f.isUnmounted=!0},p)},Ye=(f,p,m,y=!1,E=!1,_=0)=>{for(let F=_;F{if(f.shapeFlag&6)return C(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const p=g(f.anchor||f.el),m=p&&p[Nl];return m?g(m):p};let B=!1;const L=(f,p,m)=>{let y;f==null?p._vnode&&(je(p._vnode,null,null,!0),y=p._vnode.component):O(p._vnode||null,f,p,null,null,null,m),p._vnode=f,B||(B=!0,Ro(y),Gr(),B=!1)},$={p:O,um:je,m:Qe,r:Dt,mt:Bt,mc:R,pc:re,pbc:Ne,n:C,o:e};return{render:L,hydrate:void 0,createApp:oa(L)}}function $s({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Gt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function _a(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function gi(e,t,n=!1){const s=e.children,o=t.children;if(X(s)&&X(o))for(let r=0;r>1,e[n[l]]0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,i=n[r-1];r-- >0;)n[r]=i,i=t[i];return n}function vi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:vi(t)}function Uo(e){if(e)for(let t=0;te.__isSuspense;function wa(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):Pl(e)}const ce=Symbol.for("v-fgt"),ws=Symbol.for("v-txt"),xt=Symbol.for("v-cmt"),es=Symbol.for("v-stc"),It=[];let tt=null;function w(e=!1){It.push(tt=e?null:[])}function _o(){It.pop(),tt=It[It.length-1]||null}let Tn=1;function ls(e,t=!1){Tn+=e,e<0&&tt&&t&&(tt.hasOnce=!0)}function _i(e){return e.dynamicChildren=Tn>0?tt||nn:null,_o(),Tn>0&&tt&&tt.push(e),e}function S(e,t,n,s,o,r){return _i(u(e,t,n,s,o,r,!0))}function cn(e,t,n,s,o){return _i(ke(e,t,n,s,o,!0))}function $n(e){return e?e.__v_isVNode===!0:!1}function bn(e,t){return e.type===t.type&&e.key===t.key}const yi=({key:e})=>e??null,ts=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Re(e)||He(e)||ee(e)?{i:Me,r:e,k:t,f:!!n}:e:null);function u(e,t=null,n=null,s=0,o=null,r=e===ce?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yi(t),ref:t&&ts(t),scopeId:zr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Me};return l?(as(a,n),r&128&&e.normalize(a)):n&&(a.shapeFlag|=Re(n)?8:16),Tn>0&&!i&&tt&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&tt.push(a),a}const ke=Ca;function Ca(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===zl)&&(e=xt),$n(e)){const l=fn(e,t,!0);return n&&as(l,n),Tn>0&&!r&&tt&&(l.shapeFlag&6?tt[tt.indexOf(e)]=l:tt.push(l)),l.patchFlag=-2,l}if(Da(e)&&(e=e.__vccOpts),t){t=Ea(t);let{class:l,style:a}=t;l&&!Re(l)&&(t.class=Ie(l)),ge(a)&&(fo(a)&&!X(a)&&(a=Ve({},a)),t.style=Yt(a))}const i=Re(e)?1:xi(e)?128:xs(e)?64:ge(e)?4:ee(e)?2:0;return u(e,t,n,s,o,i,r,!0)}function Ea(e){return e?fo(e)||ci(e)?Ve({},e):e:null}function fn(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:i,children:l,transition:a}=e,d=t?Sa(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&yi(d),ref:t&&t.ref?n&&r?X(r)?r.concat(ts(t)):[r,ts(t)]:ts(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&fn(e.ssContent),ssFallback:e.ssFallback&&fn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&mo(c,a.clone(c)),c}function ye(e=" ",t=0){return ke(ws,null,e,t)}function wi(e,t){const n=ke(es,null,e);return n.staticCount=t,n}function Z(e="",t=!1){return t?(w(),cn(xt,null,e)):ke(xt,null,e)}function mt(e){return e==null||typeof e=="boolean"?ke(xt):X(e)?ke(ce,null,e.slice()):$n(e)?At(e):ke(ws,null,String(e))}function At(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:fn(e)}function as(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),as(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!ci(t)?t._ctx=Me:o===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(ee(t)){if(s&65){as(e,{default:t});return}t={default:t,_ctx:Me},n=32}else t=String(t),s&64?(n=16,t=[ye(t)]):n=8;e.children=t,e.shapeFlag|=n}function Sa(...e){const t={};for(let n=0;nFe||Me;let us,Nn;{const e=ms(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(i=>i(r)):o[0](r)}};us=t("__VUE_INSTANCE_SETTERS__",n=>Fe=n),Nn=t("__VUE_SSR_SETTERS__",n=>Dn=n)}const Hn=e=>{const t=Fe;return us(e),e.scope.on(),()=>{e.scope.off(),us(t)}},Lo=()=>{Fe&&Fe.scope.off(),us(null)};function Ci(e){return e.vnode.shapeFlag&4}let Dn=!1;function Pa(e,t=!1,n=!1){t&&Nn(t);const{props:s,children:o}=e.vnode,r=Ci(e);da(e,s,r,t),ga(e,o,n||t);const i=r?Oa(e,t):void 0;return t&&Nn(!1),i}function Oa(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Yl);const{setup:s}=n;if(s){Pt();const o=e.setupContext=s.length>1?$a(e):null,r=Hn(e),i=Ln(s,e,0,[e.props,o]),l=_r(i);if(Ot(),r(),(l||e.sp)&&!rn(e)&&Zr(e),l){if(i.then(Lo,Lo),t)return i.then(a=>{Nn(!0);try{Fo(e,a,t)}finally{Nn(!1)}}).catch(a=>{bs(a,e,0)});e.asyncDep=i}else Fo(e,i)}else Ei(e)}function Fo(e,t,n){ee(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=Br(t)),Ei(e)}function Ei(e,t,n){const s=e.type;e.render||(e.render=s.render||bt);{const o=Hn(e);Pt();try{Xl(e)}finally{Ot(),o()}}}const Ta={get(e,t){return Le(e,"get",""),e[t]}};function $a(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ta),slots:e.slots,emit:e.emit,expose:t}}function Cs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Br(_l(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in kn)return kn[n](e)},has(t,n){return n in t||n in kn}})):e.proxy}function Na(e,t=!0){return ee(e)?e.displayName||e.name:e.name||t&&e.__name}function Da(e){return ee(e)&&"__vccOpts"in e}const _e=(e,t)=>Sl(e,t,Dn);function Si(e,t,n){try{ls(-1);const s=arguments.length;return s===2?ge(t)&&!X(t)?$n(t)?ke(e,null,[t]):ke(e,t):ke(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&$n(n)&&(n=[n]),ke(e,t,n))}finally{ls(1)}}const Ma="3.5.41";/** +* @vue/runtime-dom v3.5.41 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Qs;const Ho=typeof window<"u"&&window.trustedTypes;if(Ho)try{Qs=Ho.createPolicy("vue",{createHTML:e=>e})}catch{}const Ai=Qs?e=>Qs.createHTML(e):e=>e,Va="http://www.w3.org/2000/svg",ja="http://www.w3.org/1998/Math/MathML",Et=typeof document<"u"?document:null,Bo=Et&&Et.createElement("template"),Ua={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?Et.createElementNS(Va,e):t==="mathml"?Et.createElementNS(ja,e):n?Et.createElement(e,{is:n}):Et.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Et.createTextNode(e),createComment:e=>Et.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Et.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const i=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{Bo.innerHTML=Ai(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Bo.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},La=Symbol("_vtc");function Fa(e,t,n){const s=e[La];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ko=Symbol("_vod"),Ha=Symbol("_vsh"),Ba=Symbol(""),Ka=/(?:^|;)\s*display\s*:/;function qa(e,t,n){const s=e.style,o=Re(n);let r=!1;if(n&&!o){if(t)if(Re(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&yn(s,l,"")}else for(const i in t)n[i]==null&&yn(s,i,"");for(const i in n){i==="display"&&(r=!0);const l=n[i];l!=null?Wa(e,i,!Re(t)&&t?t[i]:void 0,l)||yn(s,i,l):yn(s,i,"")}}else if(o){if(t!==n){const i=s[Ba];i&&(n+=";"+i),s.cssText=n,r=Ka.test(n)}}else t&&e.removeAttribute("style");Ko in e&&(e[Ko]=r?s.display:"",e[Ha]&&(s.display="none"))}const qo=/\s*!important$/;function yn(e,t,n){if(X(n))n.forEach(s=>yn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Ga(e,t);qo.test(n)?e.setProperty(Xt(s),n.replace(qo,""),"important"):e[s]=n}}const Go=["Webkit","Moz","ms"],Ns={};function Ga(e,t){const n=Ns[t];if(n)return n;let s=Je(t);if(s!=="filter"&&s in e)return Ns[t]=s;s=ps(s);for(let o=0;oDs||(Za.then(()=>Ds=0),Ds=Date.now());function tu(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const o=n.value;if(X(o)){const r=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{r.call(s),s._stopped=!0};const i=o.slice(),l=[s];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,nu=(e,t,n,s,o,r)=>{const i=o==="svg";t==="class"?Fa(e,s,i):t==="style"?qa(e,n,s):cs(t)?fs(t)||Ja(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):su(e,t,s,i))?(Jo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&zo(e,t,s,i,r,t!=="value")):e._isVueCE&&(ou(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Re(s)))?Jo(e,Je(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),zo(e,t,s,i))};function su(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Yo(t)&&ee(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Yo(t)&&Re(n)?!1:t in e}function ou(e,t){const n=e._def.props;if(!n)return!1;const s=Je(t);return Array.isArray(n)?n.some(o=>Je(o)===s):Object.keys(n).some(o=>Je(o)===s)}const dn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return X(t)?n=>Xn(t,n):t};function ru(e){e.target.composing=!0}function Xo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const vt=Symbol("_assign"),Jn=Symbol("_initialValue");function Ms(e,t,n){return t&&(e=e.trim()),n&&(e=hs(e)),e}const be={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e.parentNode&&(e.type==="text"?e[Jn]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Jn]=e.defaultValue.replace(/\r\n?/g,` +`))),e[vt]=dn(o);const r=s||o.props&&o.props.type==="number";Lt(e,t?"change":"input",i=>{i.target.composing||e[vt](Ms(e.value,n,r))}),(n||r)&&Lt(e,"change",()=>{e.value=Ms(e.value,n,r)}),t||(Lt(e,"compositionstart",ru),Lt(e,"compositionend",Xo),Lt(e,"change",Xo))},mounted(e,{value:t,modifiers:{trim:n,number:s}}){const o=t??"",r=e[Jn];delete e[Jn],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[vt](Ms(e.value,n,s)):e.value=o},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},i){if(e[vt]=dn(i),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?hs(e.value):e.value,a=t??"";if(l===a)return;const d=e.getRootNode();(d instanceof Document||d instanceof ShadowRoot)&&d.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===a)||(e.value=a)}},St={deep:!0,created(e,t,n){e[vt]=dn(n),Lt(e,"change",()=>{const s=e._modelValue,o=Vn(e),r=e.checked,i=e[vt];if(X(s)){const l=oo(s,o),a=l!==-1;if(r&&!a)i(s.concat(o));else if(!r&&a){const d=[...s];d.splice(l,1),i(d)}}else if(mn(s)){const l=new Set(s);r?l.add(o):l.delete(o),i(l)}else i(ki(e,r))})},mounted:Zo,beforeUpdate(e,t,n){e[vt]=dn(n),Zo(e,t,n)}};function Zo(e,{value:t,oldValue:n},s){e._modelValue=t;let o;if(X(t))o=oo(t,s.props.value)>-1;else if(mn(t))o=t.has(s.props.value);else{if(t===n)return;o=gn(t,ki(e,!0))}e.checked!==o&&(e.checked=o)}const Mn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,Lt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,r=>r.selected).map(r=>n?hs(Vn(r)):Vn(r));e[vt](e.multiple?mn(e._modelValue)?new Set(o):o:o[0]),e._assigning=!0,po(()=>{e._assigning=!1})}),e[vt]=dn(s)},mounted(e,{value:t}){er(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[vt]=dn(n)},updated(e,{value:t}){e._assigning||er(e,t)}};function er(e,t){const n=e.multiple,s=X(t);if(!(n&&!s&&!mn(t))){for(let o=0,r=e.options.length;oString(d)===String(l)):i.selected=oo(t,l)>-1}else i.selected=t.has(l);else if(gn(Vn(i),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Vn(e){return"_value"in e?e._value:e.value}function ki(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const iu=["ctrl","shift","alt","meta"],lu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>iu.some(n=>e[`${n}Key`]&&!t.includes(n))},Ze=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((o,...r)=>{for(let i=0;i{const t=uu().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=du(s);if(!o)return;const r=t._component;!ee(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const i=n(o,!1,fu(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t});function fu(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function du(e){return Re(e)?document.querySelector(e):e}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const tn=typeof document<"u";function Ri(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function pu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ri(e.default)}const pe=Object.assign;function Vs(e,t){const n={};for(const s in t){const o=t[s];n[s]=ft(o)?o.map(e):e(o)}return n}const Rn=()=>{},ft=Array.isArray;function nr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const Ii=/#/g,hu=/&/g,mu=/\//g,gu=/=/g,vu=/\?/g,Pi=/\+/g,bu=/%5B/g,xu=/%5D/g,Oi=/%5E/g,_u=/%60/g,Ti=/%7B/g,yu=/%7C/g,$i=/%7D/g,wu=/%20/g;function yo(e){return e==null?"":encodeURI(""+e).replace(yu,"|").replace(bu,"[").replace(xu,"]")}function Cu(e){return yo(e).replace(Ti,"{").replace($i,"}").replace(Oi,"^")}function Ys(e){return yo(e).replace(Pi,"%2B").replace(wu,"+").replace(Ii,"%23").replace(hu,"%26").replace(_u,"`").replace(Ti,"{").replace($i,"}").replace(Oi,"^")}function Eu(e){return Ys(e).replace(gu,"%3D")}function Su(e){return yo(e).replace(Ii,"%23").replace(vu,"%3F")}function Au(e){return Su(e).replace(mu,"%2F")}function jn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const ku=/\/$/,Ru=e=>e.replace(ku,"");function js(e,t,n="/"){let s,o={},r="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),r=t.slice(a,l>0?l:t.length),o=e(r.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Tu(s??t,n),{fullPath:s+r+i,path:s,query:o,hash:jn(i)}}function Iu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function sr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Pu(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&pn(t.matched[s],n.matched[o])&&Ni(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function pn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ni(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Ou(e[n],t[n]))return!1;return!0}function Ou(e,t){return ft(e)?or(e,t):ft(t)?or(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function or(e,t){return ft(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Tu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let r=n.length-1,i,l;for(i=0;i1&&r--;else break;return n.slice(0,r).join("/")+"/"+s.slice(i).join("/")}const Vt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Xs=(function(e){return e.pop="pop",e.push="push",e})({}),Us=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function $u(e){if(!e)if(tn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Ru(e)}const Nu=/^[^#]+#/;function Du(e,t){return e.replace(Nu,"#")+t}function Mu(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Es=()=>({left:window.scrollX,top:window.scrollY});function Vu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Mu(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function rr(e,t){return(history.state?history.state.position-t:-1)+e}const Zs=new Map;function ju(e,t){Zs.set(e,t)}function Uu(e){const t=Zs.get(e);return Zs.delete(e),t}function Lu(e){return typeof e=="string"||e&&typeof e=="object"}function Di(e){return typeof e=="string"||typeof e=="symbol"}let Ae=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const Mi=Symbol("");Ae.MATCHER_NOT_FOUND+"",Ae.NAVIGATION_GUARD_REDIRECT+"",Ae.NAVIGATION_ABORTED+"",Ae.NAVIGATION_CANCELLED+"",Ae.NAVIGATION_DUPLICATED+"";function hn(e,t){return pe(new Error,{type:e,[Mi]:!0},t)}function Ct(e,t){return e instanceof Error&&Mi in e&&(t==null||!!(e.type&t))}const Fu=["params","query","hash"];function Hu(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Fu)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Bu(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&Ys(o)):[s&&Ys(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Ku(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=ft(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const qu=Symbol(""),lr=Symbol(""),Ss=Symbol(""),wo=Symbol(""),eo=Symbol("");function xn(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Ut(e,t,n,s,o,r=i=>i()){const i=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((l,a)=>{const d=g=>{g===!1?a(hn(Ae.NAVIGATION_ABORTED,{from:n,to:t})):g instanceof Error?a(g):Lu(g)?a(hn(Ae.NAVIGATION_GUARD_REDIRECT,{from:t,to:g})):(i&&s.enterCallbacks[o]===i&&typeof g=="function"&&i.push(g),l())},c=r(()=>e.call(s&&s.instances[o],t,n,d));let h=Promise.resolve(c);e.length<3&&(h=h.then(d)),h.catch(g=>a(g))})}function Ls(e,t,n,s,o=r=>r()){const r=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Ri(a)){const d=(a.__vccOpts||a)[t];d&&r.push(Ut(d,n,s,i,l,o))}else{let d=a();r.push(()=>d.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const h=pu(c)?c.default:c;i.mods[l]=c,i.components[l]=h;const g=(h.__vccOpts||h)[t];return g&&Ut(g,n,s,i,l,o)()}))}}return r}function Gu(e,t){const n=[],s=[],o=[],r=Math.max(t.matched.length,e.matched.length);for(let i=0;ipn(d,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(d=>pn(d,a))||o.push(a))}return[n,s,o]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Wu=()=>location.protocol+"//"+location.host;function Vi(e,t){const{pathname:n,search:s,hash:o}=t,r=e.indexOf("#");if(r>-1){let i=o.includes(e.slice(r))?e.slice(r).length:1,l=o.slice(i);return l[0]!=="/"&&(l="/"+l),sr(l,"")}return sr(n,e)+s+o}function zu(e,t,n,s){let o=[],r=[],i=null;const l=({state:g})=>{const x=Vi(e,location),j=n.value,O=t.value;let G=0;if(g){if(n.value=x,t.value=g,i&&i===j){i=null;return}G=O?g.position-O.position:0}else s(x);o.forEach(K=>{K(n.value,j,{delta:G,type:Xs.pop,direction:G?G>0?Us.forward:Us.back:Us.unknown})})};function a(){i=n.value}function d(g){o.push(g);const x=()=>{const j=o.indexOf(g);j>-1&&o.splice(j,1)};return r.push(x),x}function c(){if(document.visibilityState==="hidden"){const{history:g}=window;if(!g.state)return;g.replaceState(pe({},g.state,{scroll:Es()}),"")}}function h(){for(const g of r)g();r=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:a,listen:d,destroy:h}}function ar(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?Es():null}}function Ju(e){const{history:t,location:n}=window,s={value:Vi(e,n)},o={value:t.state};o.value||r(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(a,d,c){const h=e.indexOf("#"),g=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+a:Wu()+e+a;try{t[c?"replaceState":"pushState"](d,"",g),o.value=d}catch(x){console.error(x),n[c?"replace":"assign"](g)}}function i(a,d){r(a,pe({},t.state,ar(o.value.back,a,o.value.forward,!0),d,{position:o.value.position}),!0),s.value=a}function l(a,d){const c=pe({},o.value,t.state,{forward:a,scroll:Es()});r(c.current,c,!0),r(a,pe({},ar(s.value,a,null),{position:c.position+1},d),!1),s.value=a}return{location:s,state:o,push:l,replace:i}}function Qu(e){e=$u(e);const t=Ju(e),n=zu(e,t.state,t.location,t.replace);function s(r,i=!0){i||n.pauseListeners(),history.go(r)}const o=pe({location:"",base:e,go:s,createHref:Du.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let zt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Pe=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Pe||{});const Yu={type:zt.Static,value:""},Xu=/[a-zA-Z0-9_]/;function Zu(e){if(!e)return[[]];if(e==="/")return[[Yu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(x){throw new Error(`ERR (${n})/"${d}": ${x}`)}let n=Pe.Static,s=n;const o=[];let r;function i(){r&&o.push(r),r=[]}let l=0,a,d="",c="";function h(){d&&(n===Pe.Static?r.push({type:zt.Static,value:d}):n===Pe.Param||n===Pe.ParamRegExp||n===Pe.ParamRegExpEnd?(r.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),r.push({type:zt.Param,value:d,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),d="")}function g(){d+=a}for(;lt.length?t.length===1&&t[0]===Ge.Static+Ge.Segment?1:-1:0}function ji(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const oc={strict:!1,end:!0,sensitive:!1};function rc(e,t,n){const s=nc(Zu(e.path),n),o=pe(s,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function ic(e,t){const n=[],s=new Map;t=nr(oc,t);function o(h){return s.get(h)}function r(h,g,x){const j=!x,O=dr(h);O.aliasOf=x&&x.record;const G=nr(t,h),K=[O];if("alias"in h){const P=typeof h.alias=="string"?[h.alias]:h.alias;for(const A of P)K.push(dr(pe({},O,{components:x?x.record.components:O.components,path:A,aliasOf:x?x.record:O})))}let M,q;for(const P of K){const{path:A}=P;if(g&&A[0]!=="/"){const V=g.record.path,te=V[V.length-1]==="/"?"":"/";P.path=g.record.path+(A&&te+A)}if(M=rc(P,g,G),x?x.alias.push(M):(q=q||M,q!==M&&q.alias.push(M),j&&h.name&&!pr(M)&&i(h.name)),Ui(M)&&a(M),O.children){const V=O.children;for(let te=0;te{i(q)}:Rn}function i(h){if(Di(h)){const g=s.get(h);g&&(s.delete(h),n.splice(n.indexOf(g),1),g.children.forEach(i),g.alias.forEach(i))}else{const g=n.indexOf(h);g>-1&&(n.splice(g,1),h.record.name&&s.delete(h.record.name),h.children.forEach(i),h.alias.forEach(i))}}function l(){return n}function a(h){const g=uc(h,n);n.splice(g,0,h),h.record.name&&!pr(h)&&s.set(h.record.name,h)}function d(h,g){let x,j={},O,G;if("name"in h&&h.name){if(x=s.get(h.name),!x)throw hn(Ae.MATCHER_NOT_FOUND,{location:h});G=x.record.name,j=pe(fr(g.params,x.keys.filter(q=>!q.optional).concat(x.parent?x.parent.keys.filter(q=>q.optional):[]).map(q=>q.name)),h.params&&fr(h.params,x.keys.map(q=>q.name))),O=x.stringify(j)}else if(h.path!=null)O=h.path,x=n.find(q=>q.re.test(O)),x&&(j=x.parse(O),G=x.record.name);else{if(x=g.name?s.get(g.name):n.find(q=>q.re.test(g.path)),!x)throw hn(Ae.MATCHER_NOT_FOUND,{location:h,currentLocation:g});G=x.record.name,j=pe({},g.params,h.params),O=x.stringify(j)}const K=[];let M=x;for(;M;)K.unshift(M.record),M=M.parent;return{name:G,path:O,params:j,matched:K,meta:ac(K)}}e.forEach(h=>r(h));function c(){n.length=0,s.clear()}return{addRoute:r,resolve:d,removeRoute:i,clearRoutes:c,getRoutes:l,getRecordMatcher:o}}function fr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function dr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:lc(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function lc(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function pr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ac(e){return e.reduce((t,n)=>pe(t,n.meta),{})}function uc(e,t){let n=0,s=t.length;for(;n!==s;){const r=n+s>>1;ji(e,t[r])<0?s=r:n=r+1}const o=cc(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function cc(e){let t=e;for(;t=t.parent;)if(Ui(t)&&ji(e,t)===0)return t}function Ui({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function hr(e){const t=lt(Ss),n=lt(wo),s=_e(()=>{const a=Te(e.to);return t.resolve(a)}),o=_e(()=>{const{matched:a}=s.value,{length:d}=a,c=a[d-1],h=n.matched;if(!c||!h.length)return-1;const g=h.findIndex(pn.bind(null,c));if(g>-1)return g;const x=mr(a[d-2]);return d>1&&mr(c)===x&&h[h.length-1].path!==x?h.findIndex(pn.bind(null,a[d-2])):g}),r=_e(()=>o.value>-1&&mc(n.params,s.value.params)),i=_e(()=>o.value>-1&&o.value===n.matched.length-1&&Ni(n.params,s.value.params));function l(a={}){if(hc(a)){const d=t[Te(e.replace)?"replace":"push"](Te(e.to)).catch(Rn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:s,href:_e(()=>s.value.href),isActive:r,isExactActive:i,navigate:l}}function fc(e){return e.length===1?e[0]:e}const dc=Xr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:hr,setup(e,{slots:t}){const n=vs(hr(e)),{options:s}=lt(Ss),o=_e(()=>({[gr(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[gr(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=t.default&&fc(t.default(n));return e.custom?r:Si("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),pc=dc;function hc(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function mc(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!ft(o)||o.length!==s.length||s.some((r,i)=>r.valueOf()!==o[i].valueOf()))return!1}return!0}function mr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const gr=(e,t,n)=>e??t??n,gc=Xr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=lt(eo),o=_e(()=>e.route||s.value),r=lt(lr,0),i=_e(()=>{let d=Te(r);const{matched:c}=o.value;let h;for(;(h=c[d])&&!h.components;)d++;return d}),l=_e(()=>o.value.matched[i.value]);Zn(lr,_e(()=>i.value+1)),Zn(qu,l),Zn(eo,o);const a=W();return Ht(()=>[a.value,l.value,e.name],([d,c,h],[g,x,j])=>{c&&(c.instances[h]=d,x&&x!==c&&d&&d===g&&(c.leaveGuards.size||(c.leaveGuards=x.leaveGuards),c.updateGuards.size||(c.updateGuards=x.updateGuards))),d&&c&&(!x||!pn(c,x)||!g)&&(c.enterCallbacks[h]||[]).forEach(O=>O(d))},{flush:"post"}),()=>{const d=o.value,c=e.name,h=l.value,g=h&&h.components[c];if(!g)return vr(n.default,{Component:g,route:d});const x=h.props[c],j=x?x===!0?d.params:typeof x=="function"?x(d):x:null,G=Si(g,pe({},j,t,{onVnodeUnmounted:K=>{K.component.isUnmounted&&(h.instances[c]=null)},ref:a}));return vr(n.default,{Component:G,route:d})||G}}});function vr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const vc=gc;function bc(e){const t=ic(e.routes,e),n=e.parseQuery||Bu,s=e.stringifyQuery||ir,o=e.history,r=xn(),i=xn(),l=xn(),a=yl(Vt);let d=Vt;tn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Vs.bind(null,C=>""+C),h=Vs.bind(null,Au),g=Vs.bind(null,jn);function x(C,B){let L,$;return Di(C)?(L=t.getRecordMatcher(C),$=B):$=C,t.addRoute($,L)}function j(C){const B=t.getRecordMatcher(C);B&&t.removeRoute(B)}function O(){return t.getRoutes().map(C=>C.record)}function G(C){return!!t.getRecordMatcher(C)}function K(C,B){if(B=pe({},B||a.value),typeof C=="string"){const m=js(n,C,B.path),y=t.resolve({path:m.path},B),E=o.createHref(m.fullPath);return pe(m,y,{params:g(y.params),hash:jn(m.hash),redirectedFrom:void 0,href:E})}let L;if(C.path!=null)L=pe({},C,{path:js(n,C.path,B.path).path});else{const m=pe({},C.params);for(const y in m)m[y]==null&&delete m[y];L=pe({},C,{params:h(m)}),B.params=h(B.params)}const $=t.resolve(L,B),oe=C.hash||"";$.params=c(g($.params));const f=Iu(s,pe({},C,{hash:Cu(oe),path:$.path})),p=o.createHref(f);return pe({fullPath:f,hash:oe,query:s===ir?Ku(C.query):C.query||{}},$,{redirectedFrom:void 0,href:p})}function M(C){return typeof C=="string"?js(n,C,a.value.path):pe({},C)}function q(C,B){if(d!==C)return hn(Ae.NAVIGATION_CANCELLED,{from:B,to:C})}function P(C){return te(C)}function A(C){return P(pe(M(C),{replace:!0}))}function V(C,B){const L=C.matched[C.matched.length-1];if(L&&L.redirect){const{redirect:$}=L;let oe=typeof $=="function"?$(C,B):$;return typeof oe=="string"&&(oe=oe.includes("?")||oe.includes("#")?oe=M(oe):{path:oe},oe.params={}),pe({query:C.query,hash:C.hash,params:oe.path!=null?{}:C.params},oe)}}function te(C,B){const L=d=K(C),$=a.value,oe=C.state,f=C.force,p=C.replace===!0,m=V(L,$);if(m)return te(pe(M(m),{state:typeof m=="object"?pe({},oe,m.state):oe,force:f,replace:p}),B||L);const y=L;y.redirectedFrom=B;let E;return!f&&Pu(s,$,L)&&(E=hn(Ae.NAVIGATION_DUPLICATED,{to:y,from:$}),Qe($,$,!0,!1)),(E?Promise.resolve(E):Ne(y,$)).catch(_=>Ct(_)?Ct(_,Ae.NAVIGATION_GUARD_REDIRECT)?_:rt(_):re(_,y,$)).then(_=>{if(_){if(Ct(_,Ae.NAVIGATION_GUARD_REDIRECT))return te(pe({replace:p},M(_.to),{state:typeof _.to=="object"?pe({},oe,_.to.state):oe,force:f}),B||y)}else _=et(y,$,!0,p,oe);return J(y,$,_),_})}function R(C,B){const L=q(C,B);return L?Promise.reject(L):Promise.resolve()}function U(C){const B=Mt.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(C):C()}function Ne(C,B){let L;const[$,oe,f]=Gu(C,B);L=Ls($.reverse(),"beforeRouteLeave",C,B);for(const m of $)m.leaveGuards.forEach(y=>{L.push(Ut(y,C,B))});const p=R.bind(null,C,B);return L.push(p),Ye(L).then(()=>{L=[];for(const m of r.list())L.push(Ut(m,C,B));return L.push(p),Ye(L)}).then(()=>{L=Ls(oe,"beforeRouteUpdate",C,B);for(const m of oe)m.updateGuards.forEach(y=>{L.push(Ut(y,C,B))});return L.push(p),Ye(L)}).then(()=>{L=[];for(const m of f)if(m.beforeEnter)if(ft(m.beforeEnter))for(const y of m.beforeEnter)L.push(Ut(y,C,B));else L.push(Ut(m.beforeEnter,C,B));return L.push(p),Ye(L)}).then(()=>(C.matched.forEach(m=>m.enterCallbacks={}),L=Ls(f,"beforeRouteEnter",C,B,U),L.push(p),Ye(L))).then(()=>{L=[];for(const m of i.list())L.push(Ut(m,C,B));return L.push(p),Ye(L)}).catch(m=>Ct(m,Ae.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function J(C,B,L){l.list().forEach($=>U(()=>$(C,B,L)))}function et(C,B,L,$,oe){const f=q(C,B);if(f)return f;const p=B===Vt,m=tn?history.state:{};L&&($||p?o.replace(C.fullPath,pe({scroll:p&&m&&m.scroll},oe)):o.push(C.fullPath,oe)),a.value=C,Qe(C,B,L,p),rt()}let Be;function Bt(){Be||(Be=o.listen((C,B,L)=>{if(!_t.listening)return;const $=K(C),oe=V($,_t.currentRoute.value);if(oe){te(pe(oe,{replace:!0,force:!0}),$).catch(Rn);return}d=$;const f=a.value;tn&&ju(rr(f.fullPath,L.delta),Es()),Ne($,f).catch(p=>Ct(p,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_CANCELLED)?p:Ct(p,Ae.NAVIGATION_GUARD_REDIRECT)?(te(pe(M(p.to),{force:!0}),$).then(m=>{Ct(m,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&!L.delta&&L.type===Xs.pop&&o.go(-1,!1)}).catch(Rn),Promise.reject()):(L.delta&&o.go(-L.delta,!1),re(p,$,f))).then(p=>{p=p||et($,f,!1),p&&(L.delta&&!Ct(p,Ae.NAVIGATION_CANCELLED)?o.go(-L.delta,!1):L.type===Xs.pop&&Ct(p,Ae.NAVIGATION_ABORTED|Ae.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),J($,f,p)}).catch(Rn)}))}let Nt=xn(),we=xn(),ue;function re(C,B,L){rt(C);const $=we.list();return $.length?$.forEach(oe=>oe(C,B,L)):console.error(C),Promise.reject(C)}function se(){return ue&&a.value!==Vt?Promise.resolve():new Promise((C,B)=>{Nt.add([C,B])})}function rt(C){return ue||(ue=!C,Bt(),Nt.list().forEach(([B,L])=>C?L(C):B()),Nt.reset()),C}function Qe(C,B,L,$){const{scrollBehavior:oe}=e;if(!tn||!oe)return Promise.resolve();const f=!L&&Uu(rr(C.fullPath,0))||($||!L)&&history.state&&history.state.scroll||null;return po().then(()=>oe(C,B,f)).then(p=>p&&Vu(p)).catch(p=>re(p,C,B))}const je=C=>o.go(C);let Dt;const Mt=new Set,_t={currentRoute:a,listening:!0,addRoute:x,removeRoute:j,clearRoutes:t.clearRoutes,hasRoute:G,getRoutes:O,resolve:K,options:e,push:P,replace:A,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:r.add,beforeResolve:i.add,afterEach:l.add,onError:we.add,isReady:se,install(C){C.component("RouterLink",pc),C.component("RouterView",vc),C.config.globalProperties.$router=_t,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>Te(a)}),tn&&!Dt&&a.value===Vt&&(Dt=!0,P(o.location).catch($=>{}));const B={};for(const $ in Vt)Object.defineProperty(B,$,{get:()=>a.value[$],enumerable:!0});C.provide(Ss,_t),C.provide(wo,Fr(B)),C.provide(eo,a);const L=C.unmount;Mt.add(C),C.unmount=function(){Mt.delete(C),Mt.size<1&&(d=Vt,Be&&Be(),Be=null,a.value=Vt,Dt=!1,ue=!1),L()}}};function Ye(C){return C.reduce((B,L)=>B.then(()=>U(L)),Promise.resolve())}return _t}function Co(){return lt(Ss)}function Li(e){return lt(wo)}const Qn=window.location.pathname.startsWith("/portal/"),ze={esPortal:Qn,baseRuta:Qn?"/portal/studio/":"/studio/",apiBase:Qn?"/portal":"/app",urlLogin:Qn?"/portal/login":"/login"};function ie(e){return ze.apiBase+e}async function Yn(e,t={}){const n=await fetch(e,{...t,headers:{"Content-Type":"application/json",...t.headers}}),s=n.headers.get("content-type")||"";if(n.redirected||!s.includes("application/json"))throw window.location.href=ze.urlLogin,new Error("Sesión expirada");const o=await n.json();if(!n.ok){const r=typeof(o==null?void 0:o.error)=="string"?o.error:o==null?void 0:o.message;throw new Error(r||"Error de servidor")}return o}const ae={get:e=>Yn(e),post:(e,t)=>Yn(e,{method:"POST",body:JSON.stringify(t)}),put:(e,t)=>Yn(e,{method:"PUT",body:JSON.stringify(t)}),del:e=>Yn(e,{method:"DELETE"})},wn=W(!1),xc={class:"h-14 px-4 flex items-center border-b border-borde"},_c={key:0,class:"px-3 pt-3"},yc={key:1,class:"px-3 pt-2 text-xs text-red-600 dark:text-red-400"},wc={class:"flex-1 overflow-y-auto px-2 py-3 space-y-0.5"},Cc={key:0,class:"px-2 text-xs text-tenue"},Ec={key:1,class:"px-2 text-xs text-tenue"},Sc={class:"truncate"},Ac={class:"flex items-center gap-1 mt-0.5"},kc={class:"text-[11px] text-tenue"},Rc={key:0,class:"flex opacity-0 group-hover:opacity-100 transition-opacity pr-1.5 gap-0.5"},Ic=["onClick"],Pc=["onClick"],Oc={class:"card w-full max-w-lg p-6 animate-escalar shadow-2xl"},Tc={class:"font-semibold text-texto mb-4"},$c={key:0,class:"grid grid-cols-2 gap-3"},Nc=["value"],Dc={class:"text-[11px] text-tenue mt-1"},Mc=["value"],Vc={class:"text-[11px] text-tenue mt-1"},jc={class:"flex items-center gap-2 text-sm text-texto"},Uc={class:"flex justify-end gap-2 pt-2"},Lc={__name:"Sidebar",setup(e,{expose:t}){const n=Li(),s=Co(),o=W([]),r=W([]),i=W([]),l=W(!0),a=W(""),d=W(!1),c=W(null),h=W(x()),g=_e(()=>n.params.tenantId||n.params.id);Ht(()=>n.fullPath,()=>{wn.value=!1});function x(){return{nombre:"",dominios_permitidos:"",activo:!0,cliente_id:null,plan_id:null}}async function j(){l.value=!0,a.value="";try{const A=await ae.get(ie("/umind/tenants"));o.value=A.items||[]}catch(A){a.value=A.message}finally{l.value=!1}}function O(A){return Array.isArray(A)?A:(A==null?void 0:A.items)||(A==null?void 0:A.registros)||[]}async function G(){if(ze.esPortal)return;const[A,V]=await Promise.allSettled([ae.get("/app/api/clientes/select"),ae.get("/app/umind-planes/list")]);r.value=A.status==="fulfilled"?O(A.value):[],i.value=V.status==="fulfilled"?O(V.value):[];const te=[];A.status==="rejected"&&te.push("clientes"),V.status==="rejected"&&te.push("planes"),te.length&&(a.value=`No se pudo cargar la lista de ${te.join(" ni ")}.`)}function K(){c.value=null,h.value=x(),d.value=!0}function M(A){c.value=A,h.value={nombre:A.nombre,dominios_permitidos:A.dominios_permitidos,activo:A.activo,cliente_id:A.cliente_id??null,plan_id:A.plan_id??null},d.value=!0}async function q(){const A={...h.value,dominios_permitidos:h.value.dominios_permitidos.split(",").map(V=>V.trim()).filter(Boolean)};try{if(c.value)await ae.put(ie(`/umind/tenants/${c.value.ID}`),A),d.value=!1,await j();else{const V=await ae.post(ie("/umind/tenants"),A);d.value=!1,await j(),s.push(`/tenants/${V.id}`)}}catch(V){a.value=V.message}}async function P(A){confirm(`¿Eliminar el tenant "${A.nombre}"? Esto borra también sus agentes. No se puede deshacer.`)&&(await ae.del(ie(`/umind/tenants/${A.ID}`)),g.value===String(A.ID)&&s.push("/"),await j())}return t({recargar:j}),vo(()=>{j(),G()}),(A,V)=>{const te=Fn("router-link");return w(),S(ce,null,[Te(wn)?(w(),S("div",{key:0,class:"fixed inset-0 bg-black/50 z-30 md:hidden",onClick:V[0]||(V[0]=R=>wn.value=!1)})):Z("",!0),u("aside",{class:Ie(["w-64 shrink-0 flex flex-col border-r border-borde bg-superficie fixed inset-y-0 left-0 z-40 transition-transform duration-200 md:static md:h-screen md:sticky md:top-0 md:translate-x-0",Te(wn)?"translate-x-0":"-translate-x-full"])},[u("div",xc,[ke(te,{to:"/",class:"text-base font-semibold text-texto"},{default:Ft(()=>[...V[8]||(V[8]=[ye(" uMind ",-1),u("span",{class:"text-brand"},"Studio",-1)])]),_:1})]),Te(ze).esPortal?Z("",!0):(w(),S("div",_c,[u("button",{class:"btn-primary w-full",onClick:K}," + Nuevo tenant ")])),a.value?(w(),S("p",yc,T(a.value),1)):Z("",!0),u("nav",wc,[l.value?(w(),S("p",Cc,"Cargando...")):o.value.length===0?(w(),S("p",Ec,T(Te(ze).esPortal?"Todavía no tenés ningún espacio asignado. Escribinos y lo activamos.":"Sin tenants todavía."),1)):Z("",!0),(w(!0),S(ce,null,Oe(o.value,R=>(w(),S("div",{key:R.ID,class:Ie(["group flex items-center rounded-lg transition-colors",g.value===String(R.ID)?"bg-brand/10":"hover:bg-elevado"])},[ke(te,{to:`/tenants/${R.ID}`,class:Ie(["flex-1 min-w-0 px-2.5 py-2 text-sm",g.value===String(R.ID)?"text-brand font-medium":"text-texto"])},{default:Ft(()=>[u("div",Sc,T(R.nombre),1),u("div",Ac,[u("span",{class:Ie(["w-1.5 h-1.5 rounded-full",R.activo?"bg-green-500":"bg-tenue/40"])},null,2),u("span",kc,T(R.activo?"activo":"inactivo"),1)])]),_:2},1032,["to","class"]),Te(ze).esPortal?Z("",!0):(w(),S("div",Rc,[u("button",{class:"p-1 text-tenue hover:text-texto",title:"Editar",onClick:U=>M(R)}," ✎ ",8,Ic),u("button",{class:"p-1 text-tenue hover:text-red-600",title:"Eliminar",onClick:U=>P(R)}," ✕ ",8,Pc)]))],2))),128))])],2),d.value?(w(),S("div",{key:1,class:"fixed inset-0 bg-black/40 flex items-center justify-center p-4 z-50",onClick:V[7]||(V[7]=Ze(R=>d.value=!1,["self"]))},[u("div",Oc,[u("h2",Tc,T(c.value?"Editar tenant":"Nuevo tenant"),1),V[17]||(V[17]=u("p",{class:"text-xs text-tenue mb-3"}," Un tenant es el negocio/sitio dueño de los dominios permitidos. La config de IA, tono y demás se configuran por agente, dentro del tenant. ",-1)),u("form",{class:"space-y-3",onSubmit:Ze(q,["prevent"])},[u("div",null,[V[9]||(V[9]=u("label",{class:"label"},"Nombre",-1)),ne(u("input",{"onUpdate:modelValue":V[1]||(V[1]=R=>h.value.nombre=R),required:"",class:"input"},null,512),[[be,h.value.nombre]])]),u("div",null,[V[10]||(V[10]=u("label",{class:"label"},"Dominios permitidos (separados por coma)",-1)),ne(u("input",{"onUpdate:modelValue":V[2]||(V[2]=R=>h.value.dominios_permitidos=R),placeholder:"ejemplo.com, www.ejemplo.com",required:"",class:"input"},null,512),[[be,h.value.dominios_permitidos]])]),Te(ze).esPortal?Z("",!0):(w(),S("div",$c,[u("div",null,[V[12]||(V[12]=u("label",{class:"label"},"Cliente",-1)),ne(u("select",{"onUpdate:modelValue":V[3]||(V[3]=R=>h.value.cliente_id=R),class:"input"},[V[11]||(V[11]=u("option",{value:null},"— sin asignar —",-1)),(w(!0),S(ce,null,Oe(r.value,R=>(w(),S("option",{key:R.ID,value:R.ID},T(R.nombre),9,Nc))),128))],512),[[Mn,h.value.cliente_id]]),u("p",Dc,T(r.value.length?"Define quién ve este tenant desde el portal.":"No hay clientes activos — creá uno en Clientes."),1)]),u("div",null,[V[14]||(V[14]=u("label",{class:"label"},"Plan",-1)),ne(u("select",{"onUpdate:modelValue":V[4]||(V[4]=R=>h.value.plan_id=R),class:"input"},[V[13]||(V[13]=u("option",{value:null},"— sin plan —",-1)),(w(!0),S(ce,null,Oe(i.value,R=>(w(),S("option",{key:R.ID,value:R.ID},T(R.nombre)+" ("+T(R.max_agentes===0?"∞":R.max_agentes)+" agentes) ",9,Mc))),128))],512),[[Mn,h.value.plan_id]]),u("p",Vc,T(i.value.length?"Límite de agentes y precios de consumo.":"No hay planes — creá uno en uMind Planes."),1)])])),u("label",jc,[ne(u("input",{"onUpdate:modelValue":V[5]||(V[5]=R=>h.value.activo=R),type:"checkbox"},null,512),[[St,h.value.activo]]),V[15]||(V[15]=ye(" Activo ",-1))]),u("div",Uc,[u("button",{type:"button",class:"btn-ghost",onClick:V[6]||(V[6]=R=>d.value=!1)}," Cancelar "),V[16]||(V[16]=u("button",{type:"submit",class:"btn-primary"}," Guardar ",-1))])],32)])])):Z("",!0)],64)}}},Fi="umind-tema";function Fc(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"oscuro":"claro"}const an=W(localStorage.getItem(Fi)||Fc());function Hi(){document.documentElement.classList.toggle("dark",an.value==="oscuro")}function br(){an.value=an.value==="oscuro"?"claro":"oscuro",localStorage.setItem(Fi,an.value),Hi()}Hi();const Hc={class:"min-h-screen flex"},Bc={class:"flex-1 min-w-0 flex flex-col"},Kc={class:"h-14 shrink-0 flex items-center gap-1 px-4 sm:px-6 border-b border-borde"},qc=["title"],Gc={class:"text-base leading-none"},Wc={class:"flex-1 max-w-5xl w-full mx-auto px-4 sm:px-6 lg:px-8 py-6 sm:py-8 animate-aparecer"},zc={__name:"App",setup(e){return(t,n)=>{const s=Fn("router-view");return w(),S("div",Hc,[ke(Lc),u("main",Bc,[u("header",Kc,[u("button",{class:"btn-ghost !px-2 !py-1.5 md:hidden","aria-label":"Abrir menú",onClick:n[0]||(n[0]=o=>wn.value=!0)},[...n[2]||(n[2]=[u("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor","stroke-width":"2",viewBox:"0 0 24 24"},[u("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4 6h16M4 12h16M4 18h16"})],-1)])]),n[3]||(n[3]=u("span",{class:"flex-1"},null,-1)),u("button",{class:"btn-ghost !px-2.5 !py-1.5",title:Te(an)==="oscuro"?"Cambiar a claro":"Cambiar a oscuro",onClick:n[1]||(n[1]=(...o)=>Te(br)&&Te(br)(...o))},[u("span",Gc,T(Te(an)==="oscuro"?"☀️":"🌙"),1)],8,qc)]),u("div",Wc,[ke(s)])])])}}},Jc={key:0,class:"flex flex-col items-center justify-center py-24 text-sm text-tenue"},Qc={key:1,class:"max-w-md mx-auto text-center py-20"},Yc={key:2,class:"flex flex-col items-center justify-center text-center py-24"},Xc={class:"text-lg font-medium text-texto"},Zc={class:"text-sm text-tenue mt-1"},ef={__name:"Home",setup(e){const t=Co(),n=W(ze.esPortal),s=W(!1);async function o(){if(ze.esPortal)try{const i=(await ae.get(ie("/umind/tenants"))).items||[];if(i.length===0){s.value=!0;return}if(i.length!==1)return;const l=i[0].ID,d=(await ae.get(ie(`/umind/agentes?tenant_id=${l}`))).items||[];if(d.length===1){t.replace(`/tenants/${l}/agentes/${d[0].ID}`);return}t.replace(`/tenants/${l}`)}catch{}finally{n.value=!1}}return vo(o),(r,i)=>n.value?(w(),S("div",Jc," Abriendo tu asistente… ")):s.value?(w(),S("div",Qc,[...i[0]||(i[0]=[wi('
🤖

Todavía no tenés un asistente activo

uMind contesta por vos en WhatsApp y en tu sitio, con la información de tu negocio. Entiende las notas de voz y lee las fotos y archivos que te mandan tus clientes.

Quiero activarlo

Volver al portal

',5)])])):(w(),S("div",Yc,[i[1]||(i[1]=u("div",{class:"text-4xl mb-4"},"💬",-1)),u("h1",Xc,T(Te(ze).esPortal?"Elegí tu espacio de la izquierda":"Elegí un tenant de la izquierda"),1),u("p",Zc,T(Te(ze).esPortal?"Adentro vas a poder crear y configurar tus agentes.":"o creá uno nuevo para empezar a configurar su agente."),1)]))}},tf={class:"flex flex-col items-center justify-center text-center py-12 px-6"},nf={key:0,class:"text-3xl mb-3 opacity-70"},sf={class:"text-sm font-medium text-texto"},of={key:1,class:"text-xs text-tenue mt-1 max-w-sm"},rf={class:"mt-4"},Bi={__name:"UiEmptyState",props:{icono:{type:String,default:""},titulo:String,detalle:String},setup(e){return(t,n)=>(w(),S("div",tf,[e.icono?(w(),S("div",nf,T(e.icono),1)):Z("",!0),u("p",sf,T(e.titulo),1),e.detalle?(w(),S("p",of,T(e.detalle),1)):Z("",!0),u("div",rf,[Ql(t.$slots,"default")])]))}},lf={key:0,class:"mb-6"},af={class:"flex items-start justify-between gap-4"},uf={class:"text-xl font-semibold text-texto"},cf={class:"text-xs text-tenue mt-1"},ff={key:1,class:"text-sm text-red-600 dark:text-red-400 mb-4"},df={class:"flex items-center justify-between mb-4"},pf={class:"flex items-center gap-2"},hf={key:0,class:"badge-alerta"},mf={key:1,class:"badge-neutro"},gf=["disabled"],vf={key:2,class:"text-xs text-tenue -mt-2 mb-4"},bf={key:3,class:"text-xs text-tenue -mt-2 mb-4"},xf={key:4,class:"grid gap-3 sm:grid-cols-2"},_f=["disabled"],yf={key:6,class:"grid gap-3 sm:grid-cols-2"},wf={class:"flex items-start gap-3"},Cf={class:"min-w-0 flex-1"},Ef={class:"flex items-center gap-2"},Sf={class:"font-medium text-texto truncate"},Af={class:"text-xs text-tenue mt-0.5 truncate"},kf={class:"flex gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0"},Rf=["onClick"],If=["onClick"],Pf={class:"flex items-center gap-4 mt-3.5 pt-3 border-t border-borde text-xs text-tenue"},Of={class:"tabular-nums"},Tf={class:"text-texto font-medium"},$f={class:"tabular-nums"},Nf={class:"text-texto font-medium"},Df={class:"tabular-nums"},Mf={class:"text-texto font-medium"},Vf={class:"bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-800 rounded-xl p-6 w-full max-w-lg"},jf={class:"font-semibold text-gray-800 dark:text-gray-100 mb-4"},Uf=["value"],Lf={class:"flex items-center gap-2"},Ff={class:"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-300"},Hf={class:"flex justify-end gap-2 pt-2"},Bf={type:"submit",class:"bg-brand hover:bg-brand-dark text-white text-sm font-medium px-4 py-2 rounded-lg"},Kf={__name:"TenantAgentes",props:{id:{type:String,required:!0}},setup(e){const t=e,n=_e(()=>Number(t.id)),s=Co(),o=W(null),r=W([]),i=W([]),l=W(""),a=W(!1),d=W(null),c=W(M()),h=W(null),g=W({}),x=W(!0);function j(R){const U=g.value[R.ID]||{};return R.activo?U.documentos>0?{tipo:"ok",texto:"listo"}:{tipo:"alerta",texto:"sin conocimiento"}:{tipo:"neutro",texto:"inactivo"}}function O(R){const U=g.value[R.ID]||{};return{documentos:U.documentos||0,canales:U.canales||0,conversaciones:U.conversaciones_7d||0}}function G(R){return String(R||"?").trim().split(/\s+/).slice(0,2).map(U=>U[0]).join("").toUpperCase()}const K=_e(()=>{if(!h.value)return{sinPlan:!0};const R=h.value.max_agentes||0;return{sinPlan:!1,nombre:h.value.nombre,ilimitado:R<=0,max:R,usados:r.value.length,lleno:R>0&&r.value.length>=R}});function M(){return{nombre:"",ai_config_id:null,tono:"",mensaje_bienvenida:"",color:"#8eb02f",activo:!0}}async function q(){l.value="",x.value=!0;try{const[R,U,Ne]=await Promise.all([ae.get(ie("/umind/tenants")),ae.get(ie(`/umind/agentes?tenant_id=${t.id}`)),ae.get(ie("/umind/ai-configs"))]);o.value=(R.items||[]).find(J=>String(J.ID)===t.id)||null,r.value=U.items||[],h.value=U.plan||null,g.value=U.resumen||{},i.value=Ne.items||[]}catch(R){l.value=R.message}finally{x.value=!1}}function P(){d.value=null,c.value=M(),a.value=!0}function A(R){d.value=R,c.value={nombre:R.nombre,ai_config_id:R.ai_config_id,tono:R.tono,mensaje_bienvenida:R.mensaje_bienvenida,color:R.color||"#8eb02f",activo:R.activo},a.value=!0}async function V(){try{if(d.value)await ae.put(ie(`/umind/agentes/${d.value.ID}`),{tenant_id:n.value,...c.value}),a.value=!1,await q();else{const R=await ae.post(ie("/umind/agentes"),{tenant_id:n.value,...c.value});a.value=!1,s.push(`/tenants/${n.value}/agentes/${R.id}`)}}catch(R){l.value=R.message}}async function te(R){confirm(`¿Eliminar el agente "${R.nombre}"? Esto no se puede deshacer.`)&&(await ae.del(ie(`/umind/agentes/${R.ID}`)),await q())}return Ht(()=>t.id,q,{immediate:!0}),(R,U)=>{const Ne=Fn("router-link");return w(),S("div",null,[o.value?(w(),S("div",lf,[u("div",af,[u("div",null,[u("h1",uf,T(o.value.nombre),1),u("p",cf,T(o.value.dominios_permitidos||"sin dominios configurados"),1)]),ke(Ne,{to:`/tenants/${n.value??e.id}/uso`,class:"btn-ghost"},{default:Ft(()=>[...U[9]||(U[9]=[ye("📊 Consumo",-1)])]),_:1},8,["to"])])])):Z("",!0),l.value?(w(),S("p",ff,T(l.value),1)):Z("",!0),u("div",df,[u("div",pf,[U[10]||(U[10]=u("h2",{class:"text-sm font-medium text-tenue"},"Agentes",-1)),K.value.sinPlan?(w(),S("span",hf,"sin plan · sin límite")):K.value.ilimitado?(w(),S("span",mf,T(K.value.nombre)+" · ilimitado",1)):(w(),S("span",{key:2,class:Ie(K.value.lleno?"badge-alerta":"badge-neutro")},T(K.value.nombre)+" · "+T(K.value.usados)+" de "+T(K.value.max),3))]),u("button",{class:"btn-primary",disabled:K.value.lleno,onClick:P},"+ Nuevo agente",8,gf)]),K.value.sinPlan&&!Te(ze).esPortal?(w(),S("p",vf," Este tenant no tiene plan asignado, así que no se le aplica ningún límite de agentes. Asignale uno desde el lápiz del tenant en la barra izquierda. ")):K.value.lleno?(w(),S("p",bf," Alcanzaste el máximo de agentes de tu plan. ")):Z("",!0),x.value?(w(),S("div",xf,[(w(),S(ce,null,Oe(2,J=>u("div",{key:J,class:"card p-4 animate-pulse"},[...U[11]||(U[11]=[wi('
',2)])])),64))])):r.value.length===0?(w(),cn(Bi,{key:5,class:"card",icono:"🤖",titulo:"Todavía no hay agentes",detalle:"Creá el primero y cargale su base de conocimiento para que empiece a responder."},{default:Ft(()=>[u("button",{class:"btn-primary",disabled:K.value.lleno,onClick:P},"+ Crear el primer agente",8,_f)]),_:1})):(w(),S("div",yf,[(w(!0),S(ce,null,Oe(r.value,J=>(w(),cn(Ne,{key:J.ID,to:`/tenants/${n.value}/agentes/${J.ID}`,class:"card p-4 relative group hover:shadow-lg hover:-translate-y-0.5 transition-all overflow-hidden"},{default:Ft(()=>[u("span",{class:"absolute inset-x-0 top-0 h-1",style:Yt({background:J.color||"#8eb02f"})},null,4),u("div",wf,[u("span",{class:"w-10 h-10 rounded-xl flex items-center justify-center text-white text-sm font-semibold shrink-0",style:Yt({background:J.color||"#8eb02f",opacity:J.activo?1:.4})},T(G(J.nombre)),5),u("div",Cf,[u("div",Ef,[u("span",Sf,T(J.nombre),1),u("span",{class:Ie(`badge-${j(J).tipo}`)},T(j(J).texto),3)]),u("p",Af,T(J.tono||"sin tono definido"),1)]),u("div",kf,[u("button",{class:"p-1 text-tenue hover:text-texto",title:"Editar",onClick:Ze(et=>A(J),["prevent","stop"])},"✎",8,Rf),u("button",{class:"p-1 text-tenue hover:text-red-600",title:"Eliminar",onClick:Ze(et=>te(J),["prevent","stop"])},"✕",8,If)])]),u("div",Pf,[u("span",Of,[u("b",Tf,T(O(J).conversaciones),1),U[12]||(U[12]=ye(" conversaciones · 7d",-1))]),u("span",$f,[u("b",Nf,T(O(J).documentos),1),U[13]||(U[13]=ye(" fuentes",-1))]),u("span",Df,[u("b",Mf,T(O(J).canales),1),U[14]||(U[14]=ye(" canales",-1))])])]),_:2},1032,["to"]))),128))])),a.value?(w(),S("div",{key:7,class:"fixed inset-0 bg-black/40 flex items-center justify-center p-4 z-50",onClick:U[8]||(U[8]=Ze(J=>a.value=!1,["self"]))},[u("div",Vf,[u("h2",jf,T(d.value?"Editar agente":"Nuevo agente"),1),u("form",{class:"space-y-3",onSubmit:Ze(V,["prevent"])},[u("div",null,[U[15]||(U[15]=u("label",{class:"label"},"Nombre",-1)),ne(u("input",{"onUpdate:modelValue":U[0]||(U[0]=J=>c.value.nombre=J),required:"",placeholder:"ej: Ventas, Soporte",class:"input"},null,512),[[be,c.value.nombre]])]),u("div",null,[U[17]||(U[17]=u("label",{class:"label"},"Config de IA",-1)),ne(u("select",{"onUpdate:modelValue":U[1]||(U[1]=J=>c.value.ai_config_id=J),class:"input"},[U[16]||(U[16]=u("option",{value:null},"— sin asignar —",-1)),(w(!0),S(ce,null,Oe(i.value,J=>(w(),S("option",{key:J.ID,value:J.ID},T(J.nombre)+" ("+T(J.provider)+")",9,Uf))),128))],512),[[Mn,c.value.ai_config_id]])]),u("div",null,[U[18]||(U[18]=u("label",{class:"label"},"Tono / personalidad",-1)),ne(u("textarea",{"onUpdate:modelValue":U[2]||(U[2]=J=>c.value.tono=J),rows:"2",class:"input"},null,512),[[be,c.value.tono]])]),u("div",null,[U[19]||(U[19]=u("label",{class:"label"},"Mensaje de bienvenida",-1)),ne(u("input",{"onUpdate:modelValue":U[3]||(U[3]=J=>c.value.mensaje_bienvenida=J),class:"input"},null,512),[[be,c.value.mensaje_bienvenida]])]),u("div",null,[U[20]||(U[20]=u("label",{class:"label"},"Color del widget",-1)),u("div",Lf,[ne(u("input",{"onUpdate:modelValue":U[4]||(U[4]=J=>c.value.color=J),type:"color",class:"w-10 h-9 border border-gray-300 dark:border-gray-700 rounded cursor-pointer bg-white dark:bg-gray-800"},null,512),[[be,c.value.color]]),ne(u("input",{"onUpdate:modelValue":U[5]||(U[5]=J=>c.value.color=J),type:"text",pattern:"#[0-9a-fA-F]{6}",class:"flex-1 border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-100 rounded-lg px-3 py-2 text-sm font-mono"},null,512),[[be,c.value.color]])])]),u("label",Ff,[ne(u("input",{"onUpdate:modelValue":U[6]||(U[6]=J=>c.value.activo=J),type:"checkbox"},null,512),[[St,c.value.activo]]),U[21]||(U[21]=ye(" Activo ",-1))]),u("div",Hf,[u("button",{type:"button",class:"px-4 py-2 text-sm text-gray-500 dark:text-gray-400",onClick:U[7]||(U[7]=J=>a.value=!1)},"Cancelar"),u("button",Bf,T(d.value?"Guardar":"Crear"),1)])],32)])])):Z("",!0)])}}},qf={key:0,class:"mb-6 mt-1 flex items-start justify-between gap-4"},Gf={class:"min-w-0"},Wf={class:"text-xl font-semibold text-texto"},zf={class:"text-xs text-tenue mt-1"},Jf={class:"bg-elevado px-1.5 py-0.5 rounded"},Qf=["href"],Yf={key:1,class:"text-sm text-red-600 dark:text-red-400 mb-4"},Xf={class:"flex gap-1.5 mb-6 overflow-x-auto pb-1"},Zf=["onClick"],ed={key:2},td={class:"card p-4 mb-4"},nd={class:"flex gap-1 mb-3"},sd=["onClick"],od={class:"flex items-center justify-between"},rd=["disabled"],id={class:"flex items-center justify-between"},ld=["disabled"],ad={class:"flex gap-2"},ud={class:"flex items-center justify-between"},cd={class:"flex items-center gap-2 text-xs text-tenue cursor-pointer"},fd=["disabled"],dd={class:"card divide-y divide-borde"},pd={key:0,class:"p-6 text-sm text-tenue"},hd={class:"text-sm text-texto"},md={class:"text-xs text-tenue mt-0.5"},gd={key:0},vd={key:1},bd={key:2},xd={key:3,class:"text-red-600 dark:text-red-400"},_d={class:"flex items-center gap-3 shrink-0"},yd=["title","onClick"],wd=["disabled","onClick"],Cd=["onClick"],Ed={key:3},Sd={class:"card divide-y divide-borde"},Ad={key:0,class:"p-6 text-sm text-tenue"},kd={class:"text-sm text-texto font-mono"},Rd={class:"label mt-0.5"},Id={class:"text-xs text-tenue mt-0.5"},Pd={key:0,class:"ml-1 text-green-600 dark:text-green-400"},Od={key:1,class:"ml-1 text-gray-400"},Td={class:"flex gap-3 text-sm shrink-0"},$d=["onClick"],Nd=["onClick"],Dd={class:"card p-6 w-full max-w-xl max-h-[85vh] overflow-y-auto"},Md={class:"font-semibold text-texto mb-4"},Vd={class:"border border-borde rounded-lg p-3 space-y-2"},jd=["onUpdate:modelValue"],Ud=["onUpdate:modelValue"],Ld=["onUpdate:modelValue"],Fd={class:"label flex items-center gap-1"},Hd=["onUpdate:modelValue"],Bd=["onClick"],Kd={key:0,class:"text-xs text-gray-400"},qd={class:"border border-borde rounded-lg p-3 space-y-2"},Gd={class:"flex items-center gap-2 label"},Wd={class:"flex items-center gap-2 text-sm text-texto"},zd={class:"flex justify-end gap-2 pt-2"},Jd={key:4},Qd={class:"card p-4 mb-4"},Yd={class:"flex items-center justify-between mb-2"},Xd={class:"bg-elevado border border-borde rounded-lg p-2.5 text-xs text-texto overflow-x-auto"},Zd={class:"card divide-y divide-borde"},ep={key:0,class:"p-6 text-sm text-tenue"},tp={class:"flex items-center justify-between"},np={class:"font-medium text-texto capitalize"},sp={class:"flex gap-3 text-sm"},op=["onClick"],rp=["onClick"],ip={class:"flex gap-4 mt-2 text-xs"},lp={class:"flex items-center gap-1.5 text-texto cursor-pointer"},ap=["checked","onChange"],up={class:"flex items-center gap-1.5 text-texto cursor-pointer"},cp=["checked","onChange"],fp={class:"flex items-center gap-1.5 text-texto cursor-pointer"},dp=["checked","onChange"],pp={class:"label mt-1 break-all"},hp={class:"bg-elevado px-1 rounded"},mp={key:0,class:"text-xs text-tenue mt-1"},gp={key:1,class:"text-xs text-red-600 dark:text-red-400 mt-1"},vp={class:"card p-6 w-full max-w-md"},bp={key:0},xp={class:"flex flex-col gap-2 pt-1"},_p={class:"flex items-center gap-2 text-sm text-texto cursor-pointer"},yp={class:"flex items-center gap-2 text-sm text-texto cursor-pointer"},wp={class:"flex items-center gap-2 text-sm text-texto cursor-pointer"},Cp={class:"flex justify-end gap-2 pt-2"},Ep={key:5},Sp={class:"flex gap-2 mb-4"},Ap={class:"card divide-y divide-borde"},kp={key:0,class:"p-6 text-sm text-tenue"},Rp={class:"font-medium text-texto capitalize"},Ip={class:"ml-2 text-sm text-tenue"},Pp=["onClick"],Op={key:6,class:"card p-4 flex flex-col h-[28rem]"},Tp={class:"flex-1 overflow-y-auto space-y-2 mb-3"},$p={key:0,class:"text-sm text-tenue"},Np={key:1,class:"text-xs text-tenue"},Dp=["disabled"],Mp={key:7,class:"grid grid-cols-3 gap-4"},Vp={class:"col-span-1 card divide-y divide-borde max-h-[28rem] overflow-y-auto"},jp={key:0,class:"p-4 text-sm text-tenue"},Up=["onClick"],Lp={class:"text-texto truncate"},Fp={class:"text-xs text-tenue mt-0.5"},Hp={class:"col-span-2 card p-4 max-h-[28rem] overflow-y-auto space-y-2"},Bp={key:0,class:"text-sm text-tenue"},Kp={key:8},qp={class:"card divide-y divide-borde max-h-[32rem] overflow-y-auto"},Gp={key:0,class:"p-6 text-sm text-tenue"},Wp={class:"cursor-pointer flex items-center gap-2 text-sm"},zp={class:"text-tenue text-xs shrink-0"},Jp={class:"text-texto truncate"},Qp={class:"text-tenue text-xs ml-auto shrink-0"},Yp={key:0,class:"mt-2 bg-elevado border border-borde rounded-lg p-2 text-xs text-gray-600 dark:text-gray-400 overflow-x-auto whitespace-pre-wrap"},Xp={__name:"AgenteDetail",props:{tenantId:{type:String,required:!0},agenteId:{type:String,required:!0}},setup(e){const t=e,n=_e(()=>Number(t.agenteId)),s=Li(),o=W(null),r=W(""),i=W(typeof s.query.tab=="string"?s.query.tab:ze.esPortal?"conversaciones":"conocimiento"),l=W([]),a=W(""),d=W(30),c=W(!1);async function h(){const I=await ae.get(ie(`/umind/agentes?tenant_id=${t.tenantId}`));o.value=(I.items||[]).find(v=>String(v.ID)===t.agenteId)||null}async function g(){const I=await ae.get(ie(`/umind/documentos?agente_id=${t.agenteId}`));l.value=I.items||[]}const x=W("texto"),j=W(!0),O=W(""),G=W(""),K=W(null);async function M(){if(a.value.trim()){c.value=!0,r.value="";try{await ae.post(ie("/umind/documentos"),{agente_id:n.value,url:a.value.trim(),max_paginas:Number(d.value)||30,auto_actualizar:j.value}),a.value="",await g()}catch(I){r.value=I.message}finally{c.value=!1}}}async function q(){if(G.value.trim()){c.value=!0,r.value="";try{await ae.post(ie("/umind/documentos/texto"),{agente_id:n.value,titulo:O.value.trim(),contenido:G.value}),O.value="",G.value="",await g()}catch(I){r.value=I.message}finally{c.value=!1}}}async function P(){var v,yt;const I=(yt=(v=K.value)==null?void 0:v.files)==null?void 0:yt[0];if(I){c.value=!0,r.value="";try{const b=new FormData;b.append("agente_id",String(n.value)),b.append("archivo",I);const Ee=await fetch(ie("/umind/documentos/archivo"),{method:"POST",body:b}),st=await Ee.json();if(!Ee.ok)throw new Error(st.error||"No se pudo subir");K.value.value="",await g()}catch(b){r.value=b.message}finally{c.value=!1}}}async function A(I){r.value="";try{await ae.post(ie(`/umind/documentos/${I.ID}/reprocesar`),{}),await g()}catch(v){r.value=v.message}}async function V(I){try{await ae.put(ie(`/umind/documentos/${I.ID}`),{auto_actualizar:!I.auto_actualizar}),await g()}catch(v){r.value=v.message}}function te(I){if(!I)return"sin procesar";const v=Math.floor((Date.now()-new Date(I))/864e5);if(v<=0)return"hoy";if(v===1)return"ayer";if(v<30)return`hace ${v} días`;const yt=Math.floor(v/30);return yt===1?"hace un mes":`hace ${yt} meses`}function R(I){return I.procesado_at?Date.now()-new Date(I.procesado_at)>60*864e5:!1}async function U(I){confirm("¿Eliminar esta fuente y sus fragmentos indexados?")&&(await ae.del(ie(`/umind/documentos/${I}`)),await g())}const Ne=_e(()=>I=>({listo:"badge-ok",procesando:"badge-alerta",pendiente:"badge-neutro",error:"badge-error"})[I]||"badge-neutro"),J=W([]),et=W([]),Be=W(null);async function Bt(){const I=await ae.get(ie(`/umind/sesiones?agente_id=${t.agenteId}`));J.value=I.items||[]}async function Nt(I){Be.value=I;const v=await ae.get(ie(`/umind/historial?agente_id=${t.agenteId}&session_id=${I}`));et.value=v.items||[]}const we=W([]),ue=W(!1),re=W(null),se=W(rt());function rt(){return{nombre:"",descripcion:"",url:"",auth_header_nombre:"",auth_header_valor:"",tocarAuth:!1,parametros:[],activa:!0}}async function Qe(){const I=await ae.get(ie(`/umind/tools?agente_id=${t.agenteId}`));we.value=I.items||[]}function je(){re.value=null,se.value=rt(),ue.value=!0}function Dt(I){re.value=I;let v=[];try{v=JSON.parse(I.parametros_json||"[]")||[]}catch{v=[]}se.value={nombre:I.nombre,descripcion:I.descripcion,url:I.url,auth_header_nombre:I.auth_header_nombre,auth_header_valor:"",tocarAuth:!1,parametros:v,activa:I.activa},ue.value=!0}function Mt(){se.value.parametros.push({nombre:"",tipo:"string",descripcion:"",requerido:!1})}function _t(I){se.value.parametros.splice(I,1)}async function Ye(){const I={agente_id:n.value,nombre:se.value.nombre.trim(),descripcion:se.value.descripcion,url:se.value.url.trim(),auth_header_nombre:se.value.auth_header_nombre,parametros:se.value.parametros,activa:se.value.activa};se.value.tocarAuth&&(I.auth_header_valor=se.value.auth_header_valor);try{re.value?await ae.put(ie(`/umind/tools/${re.value.ID}`),I):await ae.post(ie("/umind/tools"),I),ue.value=!1,await Qe()}catch(v){r.value=v.message}}async function C(I){confirm(`¿Eliminar la tool "${I.nombre}"?`)&&(await ae.del(ie(`/umind/tools/${I.ID}`)),await Qe())}const B=W([]),L=W(!1),$=W(y()),oe=W(!1),f=_e(()=>{const I=new Date,v=new Date(I.getFullYear(),I.getMonth(),1).toISOString().slice(0,10),yt=I.toISOString().slice(0,10);return ie(`/umind/reporte.xlsx?agente_id=${t.agenteId}&desde=${v}&hasta=${yt}`)}),p=_e(()=>{var v;const I=((v=o.value)==null?void 0:v.site_key)||"TU_SITE_KEY";return` - + +