From e445c46054048a107bf86e02f76c97d6e0299e23 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Jul 2026 20:19:42 -0700 Subject: [PATCH 1/4] feat: add embeddable thread view --- CHANGELOG.md | 25 + apps/api/cmd/clickclack/main.go | 14 +- apps/api/cmd/clickclack/main_test.go | 14 + apps/api/internal/config/config.go | 80 ++- apps/api/internal/config/config_test.go | 13 +- apps/api/internal/httpapi/server.go | 31 +- apps/api/internal/httpapi/server_test.go | 28 + .../components/embed/EmbedThreadView.svelte | 559 ++++++++++++++++++ .../src/components/thread/ThreadPanel.svelte | 27 +- .../[workspaceID]/[messageID]/+page.svelte | 12 + .../thread/[workspaceID]/[messageID]/+page.ts | 2 + apps/web/src/styles/thread.css | 21 + docs/README.md | 1 + docs/configuration.md | 2 + docs/features/embedding.md | 86 +++ tests/e2e/embed-thread.spec.ts | 69 +++ 16 files changed, 939 insertions(+), 45 deletions(-) create mode 100644 apps/web/src/components/embed/EmbedThreadView.svelte create mode 100644 apps/web/src/routes/embed/thread/[workspaceID]/[messageID]/+page.svelte create mode 100644 apps/web/src/routes/embed/thread/[workspaceID]/[messageID]/+page.ts create mode 100644 docs/features/embedding.md create mode 100644 tests/e2e/embed-thread.spec.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a2ec844b..f1c85cdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 0.2.1 - Unreleased +- Added a standalone, live-updating, cookie-authenticated thread embed with the shared thread composer and rendering, public route IDs, focused auth recovery, and an opt-in per-origin `/embed/*` frame policy. - Signed and notarized macOS desktop release bundles with the OpenClaw Foundation identity, hardened runtime, and strict sealed-artifact verification. ## 0.2.0 - 2026-07-17 @@ -46,6 +47,30 @@ - Proxied WebSocket upgrades in the Vite development server so local realtime connects without a reconnect loop. - Refreshed frontend, Electron, Cloudflare Worker, router, SQLite, Node, pnpm, GoReleaser, GitHub Actions, and container bases to their latest stable releases. - Aligned the pull-request template with the repository workflow. Thanks @hannesrudolph. +||||||| parent of 26c95ce (feat: add embeddable thread view) +- Added validated split frontend/API origins, credentialed exact-origin browser access, and versioned server-issued bot setup endpoints while preserving same-origin setup commands. +- Refreshed frontend, Cloudflare Worker, router, and SQLite dependencies to their current compatible releases. +- Tightened integration administration with manager-only registration changes, signing-secret rotation, atomic installation revoke cascades, paginated delivery history, and a discoverable durable event-type vocabulary. +- Added owner-scoped message nonce lookup so durable clients can distinguish completed sends from interrupted requests and recover attachments safely. Thanks @shakkernerd. +- Added durable upload idempotency and nonce lookup so retried bot deliveries reuse the original upload without consuming more storage or quota. Thanks @shakkernerd. +- Allowed disabled Pushover notification settings to clear the stored user key through the public API contract. +- Unified the desktop shell chrome like Slack: title bar, workspace rail, and sidebar share one continuous plate with the conversation floating on it as a rounded card, the sidebar workspace header and the in-card channel header are gone on desktop — the workspace name (click for workspace settings) and the current channel or DM title live in the title bar — and the always-on "Connected" labels are gone everywhere (app settings stay on the native menu and Cmd/Ctrl+,; a pulsing "Connecting…" note appears only while the realtime link is down). The browser app keeps its sidebar workspace header and channel header unchanged. +- Fixed live agent-activity bursts so same-turn preambles grow in place without dropping realtime rows or pulling a bottom-pinned timeline away from the live edge. +- Added typed agent-progress SDK payloads while preserving workspace-wide presence events without channel or DM targets. Thanks @arcabotai for surfacing the integration needs. +- Softened message bubbles: hairline accent-tint borders replace the heavier outlines, gentler keycap under-edges, and roomier padding. +- Added Appearance settings with a light/dark/system color mode and four full-app board themes (Signal, the heritage Ember, Moss, Iris) — each tuned for both modes via a light-dark() token refactor, applied instantly with live swatch previews, persisted per device, and flash-free on load. +- Redesigned the product site around the "Switchboard" keycap identity: cool porcelain/night-board themes over a dot-grid plate, electric cyan accent with indigo bot/thread tones, keycap buttons and step markers with press states, Bricolage Grotesque display type, and mono kickers/labels. +- Redesigned the web app around a "Switchboard" keycap identity: cool porcelain/night-board themes replace the warm paper look, an electric cyan signal accent with indigo delivery and amber working-log tones, tactile keycap controls with hard press states, Bricolage Grotesque display type, and mono machine metadata (timestamps, section labels, day dividers, bot chips). +- Added personal channel ordering with desktop drag-and-drop, keyboard and touch move-menu controls, per-user/workspace browser persistence, same-profile tab synchronization, and preserved active/unread priority rows while sections are collapsed. Thanks @jjjhenriksen. +- Added independently collapsible Channels, Direct messages, and People sidebar sections that retain active and unread rows while collapsed, with accessible controls and per-workspace browser persistence. Thanks @jjjhenriksen. +- Unified the web app on one warm "paper & ember" design language: a new espresso dark theme replaces the cool slate look, identity marks share a theme-tied brand gradient, off-palette purple/indigo/blue hardcodes (including workspace-settings buttons and quote blocks) now follow the coral accent, settings surfaces inherit the app font, and scrollbars are visible on the light theme. +- Added manager workspace profile and icon controls plus owner-only ownership transfer and permanent deletion with durable upload cleanup. Thanks @Solvely-Colin. +- Proxied WebSocket upgrades in the Vite dev server so the local app connects to realtime instead of looping on "Reconnecting…". +- Added a bounded read-only artifact pane for code, text, Markdown, PDF, and sandboxed HTML attachments, while keeping DOCX download-only and preserving thread routes when the pane closes. Thanks @jjjhenriksen. +- Added an opt-in realtime tail cursor so fresh clients can skip retained history without racing new events, and applied read-receipt visibility before event pagination. Thanks @shakkernerd. +- Added SDK helpers for paginated realtime recovery and bounded latest thread-history windows. Thanks @arcabotai for surfacing the integration needs. +- Preserved validated request correlation IDs as optional metadata on durable message and thread-reply events across replay and realtime delivery, and added canary run/case evidence IDs without changing message storage or gateway traffic. +- Added an isolated FakeCo small-VM deployment path with idempotent synthetic chat seed data, OpenClaw and ClawRouter SecretRef configuration, correlated health/readiness and metadata-only telemetry, a quoted-reply end-to-end canary, tests, and teardown guidance. ## 0.1.0 - 2026-07-06 diff --git a/apps/api/cmd/clickclack/main.go b/apps/api/cmd/clickclack/main.go index b77b6028..e41681ce 100644 --- a/apps/api/cmd/clickclack/main.go +++ b/apps/api/cmd/clickclack/main.go @@ -87,6 +87,7 @@ func serve(args []string) error { configPath := flags.String("config", "", "config file") flags.Bool("dev-bootstrap", false, "create a local owner/workspace/channel if no user exists") flags.Bool("metrics-enabled", false, "expose metadata-only Prometheus metrics at /metrics") + flags.String("embed-frame-ancestors", "", "comma-separated origins allowed to embed /embed/* pages") if err := flags.Parse(args); err != nil { return err } @@ -133,11 +134,12 @@ func serve(args []string) error { } log.Printf("ClickClack listening on %s", displayURL(cfg.Addr)) server := httpapi.New(st, realtime.NewHub(), httpapi.Options{ - UploadStorage: uploads, - DisableDevAuth: !cfg.DevBootstrap, - CookieNames: cookieNames, - FrontendURL: cfg.PublicURL, - PublicAPIURL: cfg.PublicAPIURL, + UploadStorage: uploads, + DisableDevAuth: !cfg.DevBootstrap, + CookieNames: cookieNames, + FrontendURL: cfg.PublicURL, + PublicAPIURL: cfg.PublicAPIURL, + EmbedFrameAncestors: cfg.EmbedFrameAncestors, GitHubOAuth: httpapi.GitHubOAuthConfig{ ClientID: cfg.GitHubClientID, ClientSecret: cfg.GitHubClientSecret, @@ -582,6 +584,8 @@ func applyFlagOverrides(flags *flag.FlagSet, cfg *config.Config) { cfg.DevBootstrap = f.Value.String() == "true" case "metrics-enabled": cfg.MetricsEnabled = f.Value.String() == "true" + case "embed-frame-ancestors": + cfg.EmbedFrameAncestors = config.ParseEmbedFrameAncestors(f.Value.String()) } }) } diff --git a/apps/api/cmd/clickclack/main_test.go b/apps/api/cmd/clickclack/main_test.go index 2836944f..671f9b5e 100644 --- a/apps/api/cmd/clickclack/main_test.go +++ b/apps/api/cmd/clickclack/main_test.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "flag" "net/http" "net/http/httptest" "os" @@ -58,6 +59,19 @@ func TestCommandDBDefaultsUseEnvironment(t *testing.T) { } } +func TestApplyFlagOverridesParsesEmbedFrameAncestors(t *testing.T) { + flags := flag.NewFlagSet("test", flag.ContinueOnError) + flags.String("embed-frame-ancestors", "", "") + if err := flags.Parse([]string{"--embed-frame-ancestors", "https://control.example.com,https://dock.example.com"}); err != nil { + t.Fatal(err) + } + cfg := config.Config{} + applyFlagOverrides(flags, &cfg) + if len(cfg.EmbedFrameAncestors) != 2 || cfg.EmbedFrameAncestors[1] != "https://dock.example.com" { + t.Fatalf("unexpected embed frame ancestors: %#v", cfg.EmbedFrameAncestors) + } +} + func TestFakeCoSeedRequiresExplicitEnvironment(t *testing.T) { t.Setenv("CLICKCLACK_ENVIRONMENT", "") err := admin([]string{"fakeco", "seed", "--data", t.TempDir()}) diff --git a/apps/api/internal/config/config.go b/apps/api/internal/config/config.go index eaf9e471..ddf2bc50 100644 --- a/apps/api/internal/config/config.go +++ b/apps/api/internal/config/config.go @@ -13,25 +13,26 @@ import ( ) type Config struct { - Addr string `json:"addr"` - Data string `json:"data"` - DB string `json:"db"` - Uploads string `json:"uploads"` - Environment string `json:"environment"` - MetricsEnabled bool `json:"metrics_enabled"` - PublicURL string `json:"public_url"` - PublicAPIURL string `json:"public_api_url"` - CookieNamespace string `json:"cookie_namespace"` - DevBootstrap bool `json:"dev_bootstrap"` - GitHubClientID string `json:"github_client_id"` - GitHubClientSecret string `json:"github_client_secret"` - GitHubAllowedOrg string `json:"github_allowed_org"` - GitHubModeratorOrg string `json:"github_moderator_org"` - PushoverAPIToken string `json:"pushover_api_token"` - R2AccountID string `json:"r2_account_id"` - R2AccessKeyID string `json:"r2_access_key_id"` - R2SecretAccessKey string `json:"r2_secret_access_key"` - R2Endpoint string `json:"r2_endpoint"` + Addr string `json:"addr"` + Data string `json:"data"` + DB string `json:"db"` + Uploads string `json:"uploads"` + Environment string `json:"environment"` + MetricsEnabled bool `json:"metrics_enabled"` + PublicURL string `json:"public_url"` + PublicAPIURL string `json:"public_api_url"` + EmbedFrameAncestors []string `json:"embed_frame_ancestors"` + CookieNamespace string `json:"cookie_namespace"` + DevBootstrap bool `json:"dev_bootstrap"` + GitHubClientID string `json:"github_client_id"` + GitHubClientSecret string `json:"github_client_secret"` + GitHubAllowedOrg string `json:"github_allowed_org"` + GitHubModeratorOrg string `json:"github_moderator_org"` + PushoverAPIToken string `json:"pushover_api_token"` + R2AccountID string `json:"r2_account_id"` + R2AccessKeyID string `json:"r2_access_key_id"` + R2SecretAccessKey string `json:"r2_secret_access_key"` + R2Endpoint string `json:"r2_endpoint"` } func Defaults() Config { @@ -83,6 +84,9 @@ func Load(path string) (Config, error) { if env := os.Getenv("CLICKCLACK_PUBLIC_API_URL"); env != "" { cfg.PublicAPIURL = env } + if env := os.Getenv("CLICKCLACK_EMBED_FRAME_ANCESTORS"); env != "" { + cfg.EmbedFrameAncestors = ParseEmbedFrameAncestors(env) + } if env := os.Getenv("CLICKCLACK_COOKIE_NAMESPACE"); env != "" { cfg.CookieNamespace = env } @@ -145,6 +149,10 @@ func (c *Config) ValidateServe() error { if publicAPIURL == "" { publicAPIURL = publicURL } + embedFrameAncestors, err := normalizeEmbedFrameAncestors(c.EmbedFrameAncestors) + if err != nil { + return fmt.Errorf("CLICKCLACK_EMBED_FRAME_ANCESTORS: %w", err) + } if err := validatePublicURLPair(publicURL, publicAPIURL); err != nil { return err } @@ -167,6 +175,7 @@ func (c *Config) ValidateServe() error { return fmt.Errorf("cookie policy: %w", err) } c.PublicAPIURL = publicAPIURL + c.EmbedFrameAncestors = embedFrameAncestors c.CookieNamespace = namespace c.PublicURL = publicURL c.GitHubClientID = clientID @@ -176,6 +185,39 @@ func (c *Config) ValidateServe() error { return nil } +// ParseEmbedFrameAncestors parses the comma- or whitespace-separated format +// accepted by CLICKCLACK_EMBED_FRAME_ANCESTORS and --embed-frame-ancestors. +func ParseEmbedFrameAncestors(value string) []string { + return strings.FieldsFunc(value, func(r rune) bool { + return r == ',' || r == ' ' || r == '\t' || r == '\n' || r == '\r' + }) +} + +func normalizeEmbedFrameAncestors(values []string) ([]string, error) { + seen := make(map[string]struct{}, len(values)) + normalized := make([]string, 0, len(values)) + for _, value := range values { + value = strings.TrimSpace(value) + if value == "" { + continue + } + parsed, err := url.Parse(value) + if err != nil || parsed.Opaque != "" || parsed.User != nil || parsed.Hostname() == "" || + strings.Contains(parsed.Hostname(), "*") || + (parsed.Scheme != "http" && parsed.Scheme != "https") || + (parsed.Path != "" && parsed.Path != "/") || parsed.RawQuery != "" || parsed.Fragment != "" { + return nil, fmt.Errorf("%q must be an HTTP(S) origin without a path, query, or fragment", value) + } + origin := (&url.URL{Scheme: strings.ToLower(parsed.Scheme), Host: strings.ToLower(parsed.Host)}).String() + if _, ok := seen[origin]; ok { + continue + } + seen[origin] = struct{}{} + normalized = append(normalized, origin) + } + return normalized, nil +} + func validatePublicURLPair(publicURL, publicAPIURL string) error { if publicURL == "" || publicAPIURL == "" { return nil diff --git a/apps/api/internal/config/config_test.go b/apps/api/internal/config/config_test.go index 1df5ffa3..1482dff6 100644 --- a/apps/api/internal/config/config_test.go +++ b/apps/api/internal/config/config_test.go @@ -15,6 +15,7 @@ func TestLoadDefaultsEnvAndFile(t *testing.T) { t.Setenv("CLICKCLACK_METRICS_ENABLED", "true") t.Setenv("CLICKCLACK_PUBLIC_URL", "https://clickclack.test") t.Setenv("CLICKCLACK_PUBLIC_API_URL", "https://api.clickclack.test/services/clickclack/") + t.Setenv("CLICKCLACK_EMBED_FRAME_ANCESTORS", "https://control.example.com, https://dock.example.com") t.Setenv("CLICKCLACK_COOKIE_NAMESPACE", "prod-2") t.Setenv("CLICKCLACK_DEV_BOOTSTRAP", "false") t.Setenv("CLICKCLACK_GITHUB_CLIENT_ID", "client") @@ -30,7 +31,7 @@ func TestLoadDefaultsEnvAndFile(t *testing.T) { if err != nil { t.Fatal(err) } - if cfg.Addr != ":9000" || cfg.Data != "/tmp/clickclack" || cfg.DB != "sqlite:///tmp/clickclack.db" || cfg.Uploads != "r2://clickclack-uploads/prod" || cfg.Environment != "fakeco" || !cfg.MetricsEnabled || cfg.PublicURL != "https://clickclack.test" || cfg.PublicAPIURL != "https://api.clickclack.test/services/clickclack/" || cfg.CookieNamespace != "prod-2" || cfg.DevBootstrap || cfg.GitHubClientID != "client" || cfg.GitHubClientSecret != "secret" || cfg.GitHubAllowedOrg != "openclaw" || cfg.GitHubModeratorOrg != "openclaw" || cfg.PushoverAPIToken != "app-token" || cfg.R2AccountID != "account" || cfg.R2AccessKeyID != "access" || cfg.R2SecretAccessKey != "secret-access" || cfg.R2Endpoint != "https://r2.example.com" { + if cfg.Addr != ":9000" || cfg.Data != "/tmp/clickclack" || cfg.DB != "sqlite:///tmp/clickclack.db" || cfg.Uploads != "r2://clickclack-uploads/prod" || cfg.Environment != "fakeco" || !cfg.MetricsEnabled || cfg.PublicURL != "https://clickclack.test" || cfg.PublicAPIURL != "https://api.clickclack.test/services/clickclack/" || len(cfg.EmbedFrameAncestors) != 2 || cfg.EmbedFrameAncestors[0] != "https://control.example.com" || cfg.CookieNamespace != "prod-2" || cfg.DevBootstrap || cfg.GitHubClientID != "client" || cfg.GitHubClientSecret != "secret" || cfg.GitHubAllowedOrg != "openclaw" || cfg.GitHubModeratorOrg != "openclaw" || cfg.PushoverAPIToken != "app-token" || cfg.R2AccountID != "account" || cfg.R2AccessKeyID != "access" || cfg.R2SecretAccessKey != "secret-access" || cfg.R2Endpoint != "https://r2.example.com" { t.Fatalf("unexpected env config: %#v", cfg) } @@ -54,6 +55,7 @@ func TestLoadDefaultsEnvAndFile(t *testing.T) { t.Setenv("CLICKCLACK_METRICS_ENABLED", "") t.Setenv("CLICKCLACK_PUBLIC_URL", "") t.Setenv("CLICKCLACK_PUBLIC_API_URL", "") + t.Setenv("CLICKCLACK_EMBED_FRAME_ANCESTORS", "") t.Setenv("CLICKCLACK_COOKIE_NAMESPACE", "") t.Setenv("CLICKCLACK_DEV_BOOTSTRAP", "") t.Setenv("CLICKCLACK_GITHUB_CLIENT_ID", "") @@ -140,6 +142,13 @@ func TestValidateServe(t *testing.T) { if err := splitOrigin.ValidateServe(); err != nil || splitOrigin.PublicAPIURL != "https://api.example.com/services/clickclack" { t.Fatalf("expected canonical split API URL: %#v %v", splitOrigin, err) } + embedOrigins := Config{EmbedFrameAncestors: []string{"HTTPS://Control.Example.com/", "https://control.example.com", "http://localhost:3000"}} + if err := embedOrigins.ValidateServe(); err != nil { + t.Fatal(err) + } + if len(embedOrigins.EmbedFrameAncestors) != 2 || embedOrigins.EmbedFrameAncestors[0] != "https://control.example.com" || embedOrigins.EmbedFrameAncestors[1] != "http://localhost:3000" { + t.Fatalf("unexpected normalized embed origins: %#v", embedOrigins.EmbedFrameAncestors) + } for _, tc := range []struct { name string @@ -155,6 +164,8 @@ func TestValidateServe(t *testing.T) { {"missing client secret", Config{PublicURL: "https://chat.example.com", GitHubClientID: "client"}}, {"oauth without public url", Config{GitHubClientID: "client", GitHubClientSecret: "secret"}}, {"org without oauth", Config{GitHubAllowedOrg: "openclaw"}}, + {"invalid embed ancestor", Config{EmbedFrameAncestors: []string{"https://control.example.com/path"}}}, + {"wildcard embed ancestor", Config{EmbedFrameAncestors: []string{"https://*.example.com"}}}, } { t.Run(tc.name, func(t *testing.T) { if err := tc.cfg.ValidateServe(); err == nil { diff --git a/apps/api/internal/httpapi/server.go b/apps/api/internal/httpapi/server.go index 73ccef05..4c922f6b 100644 --- a/apps/api/internal/httpapi/server.go +++ b/apps/api/internal/httpapi/server.go @@ -34,6 +34,7 @@ type Server struct { githubOAuth GitHubOAuthConfig frontendURL string publicAPIURL string + embedFrameAncestors []string cookies authpolicy.CookieNames cookieSameSite http.SameSite disableDevAuth bool @@ -67,18 +68,19 @@ type actor struct { } type Options struct { - UploadDir string - UploadStorage uploadstore.Store - GitHubOAuth GitHubOAuthConfig - FrontendURL string - PublicAPIURL string - CookieNames authpolicy.CookieNames - DisableDevAuth bool - PushNotifier PushNotifier - MetricsEnabled bool - Environment string - Version string - Commit string + UploadDir string + UploadStorage uploadstore.Store + GitHubOAuth GitHubOAuthConfig + FrontendURL string + PublicAPIURL string + EmbedFrameAncestors []string + CookieNames authpolicy.CookieNames + DisableDevAuth bool + PushNotifier PushNotifier + MetricsEnabled bool + Environment string + Version string + Commit string } func New(st store.Store, hub *realtime.Hub, options Options) *Server { @@ -102,6 +104,7 @@ func New(st store.Store, hub *realtime.Hub, options Options) *Server { githubOAuth: options.GitHubOAuth.withDefaults(), frontendURL: strings.TrimSpace(options.FrontendURL), publicAPIURL: strings.TrimRight(strings.TrimSpace(options.PublicAPIURL), "/"), + embedFrameAncestors: append([]string(nil), options.EmbedFrameAncestors...), cookies: cookieNames, cookieSameSite: configuredCookieSameSite(options.FrontendURL, options.PublicAPIURL), disableDevAuth: options.DisableDevAuth, @@ -1456,6 +1459,10 @@ func (s *Server) serveSPA(w http.ResponseWriter, r *http.Request) { } w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Header().Set("Cache-Control", "no-store") + if strings.HasPrefix(r.URL.Path, "/embed/") { + ancestors := append([]string{"'self'"}, s.embedFrameAncestors...) + w.Header().Set("Content-Security-Policy", "frame-ancestors "+strings.Join(ancestors, " ")) + } index = s.injectRuntimeConfig(index) _, _ = w.Write(index) } diff --git a/apps/api/internal/httpapi/server_test.go b/apps/api/internal/httpapi/server_test.go index aa0d042f..a4f82b22 100644 --- a/apps/api/internal/httpapi/server_test.go +++ b/apps/api/internal/httpapi/server_test.go @@ -344,6 +344,34 @@ func TestChatAPIVerticalSlice(t *testing.T) { } } +func TestEmbedFrameAncestorsCSP(t *testing.T) { + t.Parallel() + tests := []struct { + name string + path string + ancestors []string + want string + }{ + {name: "configured embed", path: "/embed/thread/TEXAMPLE/MEXAMPLE", ancestors: []string{"https://control.example.com", "https://dock.example.com"}, want: "frame-ancestors 'self' https://control.example.com https://dock.example.com"}, + {name: "default embed", path: "/embed/thread/TEXAMPLE/MEXAMPLE", want: "frame-ancestors 'self'"}, + {name: "non embed app", path: "/app/TEXAMPLE/MEXAMPLE", ancestors: []string{"https://control.example.com"}, want: ""}, + {name: "embed prefix without slash", path: "/embed", ancestors: []string{"https://control.example.com"}, want: ""}, + } + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + handler := New(nil, nil, Options{EmbedFrameAncestors: tc.ancestors}).Handler() + response := httptest.NewRecorder() + handler.ServeHTTP(response, httptest.NewRequest(http.MethodGet, tc.path, nil)) + if response.Code != http.StatusOK { + t.Fatalf("expected SPA response, got %d: %s", response.Code, response.Body.String()) + } + if got := response.Header().Get("Content-Security-Policy"); got != tc.want { + t.Fatalf("Content-Security-Policy = %q, want %q", got, tc.want) + } + }) + } +} + func TestWorkspaceAdminHTTPUploadLifecycle(t *testing.T) { t.Parallel() ctx := context.Background() diff --git a/apps/web/src/components/embed/EmbedThreadView.svelte b/apps/web/src/components/embed/EmbedThreadView.svelte new file mode 100644 index 00000000..aaac9018 --- /dev/null +++ b/apps/web/src/components/embed/EmbedThreadView.svelte @@ -0,0 +1,559 @@ + + + + ClickClack thread + + + +{#if viewState === "ready" && root && route} +
+
+ (replyBody = value)} + onSubmitReply={() => void sendReply()} + onReplyKeydown={handleReplyKeydown} + onReplyFocus={() => (replyError = "")} + onReplyInputRef={(node) => (replyInput = node)} + onSetReplyTarget={(message) => setReplyTarget(message)} + onClearReply={clearReplyTarget} + onActivateThreadComposer={() => {}} + onInlineImagePointerUp={handleInlineImagePointerUp} + onJumpToQuote={jumpToQuote} + onOpenImage={(url, title) => (selectedImage = { url, title })} + onOpenArtifact={openArtifact} + /> +
+ {#if replyError}

{replyError}

{/if} +
+{:else if viewState === "auth"} +
+
+ +

Sign in to ClickClack

+

Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

+ Open ClickClack +
+
+{:else if viewState === "forbidden"} +
+ +
+{:else if viewState === "not-found"} +
+ +
+{:else if viewState === "error"} +
+ +
+{:else} +
+ +
+{/if} + +{#if selectedImage} + (selectedImage = null)} + /> +{/if} + + diff --git a/apps/web/src/components/thread/ThreadPanel.svelte b/apps/web/src/components/thread/ThreadPanel.svelte index 12e0ea56..8b99c12d 100644 --- a/apps/web/src/components/thread/ThreadPanel.svelte +++ b/apps/web/src/components/thread/ThreadPanel.svelte @@ -22,7 +22,10 @@ currentUserID?: string; mentionPeople?: User[]; replyDisabled?: boolean; - onClose: () => void; + headerLabel?: string; + headerDetail?: string; + openHref?: string; + onClose?: () => void; onBack?: () => void; onReplyBody: (value: string) => void; onSubmitReply: () => void; @@ -50,6 +53,9 @@ currentUserID, mentionPeople = [], replyDisabled = false, + headerLabel = "Thread", + headerDetail, + openHref, onClose, onBack, onReplyBody, @@ -89,14 +95,19 @@ {/if}
-

Thread

- {threadState?.reply_count ?? replies.length} {(threadState?.reply_count ?? replies.length) === 1 ? "reply" : "replies"} +

{headerLabel}

+ {headerDetail ?? `${threadState?.reply_count ?? replies.length} ${(threadState?.reply_count ?? replies.length) === 1 ? "reply" : "replies"}`}
- + {#if openHref} + Open in ClickClack + {/if} + {#if onClose} + + {/if}
+ import EmbedThreadView from "../../../../../components/embed/EmbedThreadView.svelte"; + + let { params } = $props(); + + +{#key `${params.workspaceID}:${params.messageID}`} + +{/key} diff --git a/apps/web/src/routes/embed/thread/[workspaceID]/[messageID]/+page.ts b/apps/web/src/routes/embed/thread/[workspaceID]/[messageID]/+page.ts new file mode 100644 index 00000000..ae88a275 --- /dev/null +++ b/apps/web/src/routes/embed/thread/[workspaceID]/[messageID]/+page.ts @@ -0,0 +1,2 @@ +export const prerender = false; +export const ssr = false; diff --git a/apps/web/src/styles/thread.css b/apps/web/src/styles/thread.css index e3680d85..e1cfc953 100644 --- a/apps/web/src/styles/thread.css +++ b/apps/web/src/styles/thread.css @@ -77,6 +77,27 @@ color: var(--text-strong); } +.thread .thread-open-link { + flex: 0 0 auto; + color: var(--accent); + font-family: var(--font-mono); + font-size: 11px; + font-weight: 700; + text-decoration: none; + white-space: nowrap; +} + +.thread .thread-open-link:hover { + color: var(--accent-hover); + text-decoration: underline; +} + +.thread .thread-open-link:focus-visible { + border-radius: 3px; + outline: 2px solid var(--accent); + outline-offset: 3px; +} + .thread .thread-back { display: grid; flex: 0 0 auto; diff --git a/docs/README.md b/docs/README.md index 9c2d55ec..c6418425 100644 --- a/docs/README.md +++ b/docs/README.md @@ -52,6 +52,7 @@ it for anything that isn't a local clone. | --- | --- | | Channels, messages, edits, soft-delete | [Messages](features/messages.md) | | Slack-style threads, one level deep | [Threads](features/threads.md) | +| Iframe-ready standalone thread panels | [Embedded threads](features/embedding.md) | | Reactions on every message | [Reactions](features/reactions.md) | | Realtime over WebSocket with cursor recovery | [Realtime](features/realtime.md) | | SQLite FTS5 full-text search | [Search](features/search.md) | diff --git a/docs/configuration.md b/docs/configuration.md index c5545b3b..4b438f8a 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -36,6 +36,7 @@ hook in `cmd/clickclack/main.go`. | `--dev-bootstrap` | `CLICKCLACK_DEV_BOOTSTRAP` | `false` | `serve` only. Creates a default user/workspace/channel and enables local dev auth fallbacks when explicitly set to `true`. | | — | `CLICKCLACK_PUBLIC_URL` | unset | Canonical external origin. Required for GitHub OAuth and namespaced cookies. | | — | `CLICKCLACK_PUBLIC_API_URL` | public URL | Canonical external API base. May use a different origin and a normalized base path. | +| `--embed-frame-ancestors` | `CLICKCLACK_EMBED_FRAME_ANCESTORS` | unset | Comma- or whitespace-separated exact origins allowed to frame `/embed/*`; see [Embedded threads](features/embedding.md). | | — | `CLICKCLACK_COOKIE_NAMESPACE` | unset | Stable lowercase cookie namespace for multiple trusted ClickClack instances on one hostname. | | — | `CLICKCLACK_GITHUB_CLIENT_ID` | unset | GitHub OAuth app client ID. | | — | `CLICKCLACK_GITHUB_CLIENT_SECRET`| unset | GitHub OAuth app client secret. | @@ -60,6 +61,7 @@ hook in `cmd/clickclack/main.go`. "dev_bootstrap": false, "public_url": "https://chat.example.com", "public_api_url": "https://api.example.com/services/clickclack", + "embed_frame_ancestors": ["https://control.example.com"], "cookie_namespace": "production", "github_client_id": "Iv1.xxxxxxxxxxxx", "github_client_secret": "...", diff --git a/docs/features/embedding.md b/docs/features/embedding.md new file mode 100644 index 00000000..92513508 --- /dev/null +++ b/docs/features/embedding.md @@ -0,0 +1,86 @@ +--- +read_when: + - embedding a ClickClack thread in another application + - configuring frame-ancestors for embedded pages +--- + +# Embedded threads + +ClickClack exposes a minimal thread-only page for docking a conversation in an +iframe. It contains the root message, replies, the normal thread composer, and +live updates, but none of the workspace rail, sidebar, or full-app top bar. + +## URL + +Use the public route IDs from a normal ClickClack thread URL: + +```text +https://chat.example.com/embed/thread/{workspace_route_id}/{message_route_id} +``` + +For example: + +```text +https://chat.example.com/embed/thread/T01KR3EXAMPLE1234/M01KR3EXAMPLE1234 +``` + +The message route ID must identify a thread-root message. The viewer resolves +both public IDs through the normal route API, then uses the existing thread and +realtime endpoints. Humans authenticate with their normal ClickClack session +cookie. A signed-out frame offers a link that opens ClickClack in a new tab and +automatically retries when focus returns after sign-in. + +## Allowing a host to frame ClickClack + +Only `/embed/*` HTML responses receive a frame policy. With no configuration, +the response is restricted to: + +```http +Content-Security-Policy: frame-ancestors 'self' +``` + +Add the exact HTTP(S) origins that may host the iframe with the environment +variable or serve flag: + +```sh +CLICKCLACK_EMBED_FRAME_ANCESTORS=https://control.example.com,https://ops.example.com +``` + +```sh +clickclack serve \ + --embed-frame-ancestors https://control.example.com,https://ops.example.com +``` + +The JSON config-file equivalent is: + +```json +{ + "embed_frame_ancestors": [ + "https://control.example.com", + "https://ops.example.com" + ] +} +``` + +ClickClack validates each value as an origin without credentials, a path, +query, or fragment. The resulting policy always retains `'self'`. Other SPA, +API, upload, and asset responses keep their existing frame behavior. + +## Cookie and deployment topology + +An iframe is authenticated only when the browser sends the ClickClack session +cookie in that embedding context. ClickClack's cookie SameSite mode follows the +configured `CLICKCLACK_PUBLIC_URL` and `CLICKCLACK_PUBLIC_API_URL`: same-host +deployments use `SameSite=Lax`, while different HTTPS frontend/API hostnames +use `SameSite=None; Secure`. Browser third-party-cookie controls can still +block cookies in an unrelated-site iframe even when the cookie uses +`SameSite=None`. Allowing an unrelated origin in `frame-ancestors` does not +change this cookie setting; an embed on an unrelated site will not authenticate +when the session cookie is `SameSite=Lax`. + +The recommended deployment keeps ClickClack and the host application under the +same parent domain, such as `chat.example.com` and `control.example.com`. That +topology is same-site, avoids depending on third-party-cookie exceptions, and +still allows each service to keep its own origin. Do not loosen CORS, cookie, +or global frame policy for embedding; configure only the host origins that need +the `/embed/*` view. diff --git a/tests/e2e/embed-thread.spec.ts b/tests/e2e/embed-thread.spec.ts new file mode 100644 index 00000000..7552a5b8 --- /dev/null +++ b/tests/e2e/embed-thread.spec.ts @@ -0,0 +1,69 @@ +import { expect, test } from "@playwright/test"; + +test("embedded thread loads, posts replies, and follows realtime updates", async ({ page }) => { + const workspacesResponse = await page.request.get("/api/workspaces"); + const { workspaces } = (await workspacesResponse.json()) as { + workspaces: { id: string; route_id: string }[]; + }; + const workspace = workspaces[0]; + const stamp = Date.now(); + + const channelResponse = await page.request.post(`/api/workspaces/${workspace.id}/channels`, { + data: { name: `embed-${stamp}`, kind: "public" }, + }); + const { channel } = (await channelResponse.json()) as { + channel: { id: string; route_id: string; name: string }; + }; + + const rootResponse = await page.request.post(`/api/channels/${channel.id}/messages`, { + data: { body: `embedded root ${stamp}` }, + }); + const { message } = (await rootResponse.json()) as { + message: { id: string; body: string }; + }; + const threadResponse = await page.request.get(`/api/messages/${message.id}/thread`); + const { root } = (await threadResponse.json()) as { + root: { route_id: string }; + }; + + await page.goto(`/embed/thread/${workspace.route_id}/${root.route_id}`); + + await expect(page.getByLabel("Embedded thread")).toBeVisible(); + await expect(page.locator(".thread-root .markdown")).toContainText(message.body); + await expect(page.getByText(`#${channel.name}`, { exact: true })).toBeVisible(); + const openLink = page.getByRole("link", { name: "Open in ClickClack" }); + await expect(openLink).toHaveAttribute("href", `/app/${workspace.route_id}/${root.route_id}`); + await expect(openLink).toHaveAttribute("target", "_blank"); + await expect(page.locator(".sidebar, .topbar")).toHaveCount(0); + + const composer = page.getByLabel("Reply body"); + await composer.fill(`embedded reply ${stamp}`); + await page.locator(".reply-composer").getByRole("button", { name: "Reply" }).click(); + await expect( + page.locator(".reply .markdown").filter({ hasText: `embedded reply ${stamp}` }), + ).toBeVisible(); + + const realtimeReply = `realtime embed reply ${stamp}`; + const realtimeResponse = await page.request.post(`/api/messages/${message.id}/thread/replies`, { + data: { body: realtimeReply, nonce: `embed-realtime-${stamp}` }, + }); + expect(realtimeResponse.ok()).toBe(true); + const realtimeReplyRow = page.locator(".reply").filter({ hasText: realtimeReply }); + await expect(realtimeReplyRow.locator(".markdown")).toBeVisible(); + + const { message: createdReply } = (await realtimeResponse.json()) as { + message: { id: string }; + }; + const editedReply = `${realtimeReply} edited`; + const editResponse = await page.request.patch(`/api/messages/${createdReply.id}`, { + data: { body: editedReply }, + }); + expect(editResponse.ok()).toBe(true); + await expect(page.locator(".reply .markdown").filter({ hasText: editedReply })).toBeVisible(); + + const deleteResponse = await page.request.delete(`/api/messages/${createdReply.id}`); + expect(deleteResponse.ok()).toBe(true); + await expect(page.locator(`[data-message-id="${createdReply.id}"] .message-deleted`)).toHaveText( + "This message was deleted.", + ); +}); From e1f3d240c6c6772d0dc16c8ac4b90bb97d7682d9 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Jul 2026 20:31:54 -0700 Subject: [PATCH 2/4] fix: cover embed layout and hidden direct threads --- .../src/components/embed/EmbedThreadView.svelte | 15 +++++++++++++-- tests/e2e/embed-thread.spec.ts | 4 ++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/web/src/components/embed/EmbedThreadView.svelte b/apps/web/src/components/embed/EmbedThreadView.svelte index aaac9018..5ad64a8c 100644 --- a/apps/web/src/components/embed/EmbedThreadView.svelte +++ b/apps/web/src/components/embed/EmbedThreadView.svelte @@ -125,8 +125,13 @@ const data = await api<{ conversations: DirectConversation[] }>( `/api/dms?workspace_id=${encodeURIComponent(target.workspace_id)}`, ); - const conversation = data.conversations.find((item) => item.id === target.parent_id); - if (!conversation) throw new APIError(404, "Thread conversation not found"); + let conversation = data.conversations.find((item) => item.id === target.parent_id); + if (!conversation) { + const hidden = await api<{ conversation: DirectConversation }>( + `/api/dms/${encodeURIComponent(target.parent_id)}`, + ); + conversation = hidden.conversation; + } directConversation = conversation; parentLabel = dmTitle(conversation, currentUser.id) || "Direct message"; return; @@ -438,8 +443,14 @@ } .embed-shell :global(.thread) { + position: relative; + inset: auto; + z-index: auto; height: 100%; + width: 100%; + max-width: none; border-left: 0; + box-shadow: none; } .embed-shell :global(.thread > header) { diff --git a/tests/e2e/embed-thread.spec.ts b/tests/e2e/embed-thread.spec.ts index 7552a5b8..f8aa647f 100644 --- a/tests/e2e/embed-thread.spec.ts +++ b/tests/e2e/embed-thread.spec.ts @@ -26,9 +26,13 @@ test("embedded thread loads, posts replies, and follows realtime updates", async root: { route_id: string }; }; + await page.setViewportSize({ width: 800, height: 700 }); await page.goto(`/embed/thread/${workspace.route_id}/${root.route_id}`); await expect(page.getByLabel("Embedded thread")).toBeVisible(); + const threadBounds = await page.getByLabel("Embedded thread").boundingBox(); + expect(threadBounds?.x).toBe(0); + expect(threadBounds?.width).toBe(800); await expect(page.locator(".thread-root .markdown")).toContainText(message.body); await expect(page.getByText(`#${channel.name}`, { exact: true })).toBeVisible(); const openLink = page.getByRole("link", { name: "Open in ClickClack" }); From 35fa1158eb25e0963a6ad6cefb4ab8b200219a61 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Jul 2026 20:44:45 -0700 Subject: [PATCH 3/4] chore: refresh embedded web assets --- apps/api/internal/webassets/dist/200.html | 8 +- .../assets/{0.zhCwU1YX.css => 0.B4KZu4e-.css} | 2 +- .../_app/immutable/assets/12.CkeTUuaJ.css | 1 + .../dist/_app/immutable/chunks/2PbeDRak.js | 74 ------------------- .../dist/_app/immutable/chunks/DDgJhXUi.js | 66 +++++++++++++++++ .../dist/_app/immutable/chunks/DRy8p13A.js | 9 +++ .../{app.CPds4rfU.js => app.Bsb6xClM.js} | 4 +- .../nodes/{0.LF7MykI2.js => 0.B_nJVpRW.js} | 0 .../nodes/{11.D8J-Bmsg.js => 11.Bpf1JA7W.js} | 2 +- .../dist/_app/immutable/nodes/12.BuatSkE5.js | 1 + .../dist/_app/immutable/nodes/3.Byc2fJWl.js | 2 + .../dist/_app/immutable/nodes/3.Cc2txCCJ.js | 2 - .../nodes/{4.Dko9an8f.js => 4.D4FrkrQj.js} | 2 +- .../nodes/{5.CQmOzmw-.js => 5.JSWzES8F.js} | 2 +- apps/api/internal/webassets/dist/index.html | 10 +-- 15 files changed, 94 insertions(+), 91 deletions(-) rename apps/api/internal/webassets/dist/_app/immutable/assets/{0.zhCwU1YX.css => 0.B4KZu4e-.css} (52%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/assets/12.CkeTUuaJ.css delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/2PbeDRak.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DDgJhXUi.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/chunks/DRy8p13A.js rename apps/api/internal/webassets/dist/_app/immutable/entry/{app.CPds4rfU.js => app.Bsb6xClM.js} (51%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{0.LF7MykI2.js => 0.B_nJVpRW.js} (100%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{11.D8J-Bmsg.js => 11.Bpf1JA7W.js} (77%) create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/12.BuatSkE5.js create mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/3.Byc2fJWl.js delete mode 100644 apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cc2txCCJ.js rename apps/api/internal/webassets/dist/_app/immutable/nodes/{4.Dko9an8f.js => 4.D4FrkrQj.js} (63%) rename apps/api/internal/webassets/dist/_app/immutable/nodes/{5.CQmOzmw-.js => 5.JSWzES8F.js} (72%) diff --git a/apps/api/internal/webassets/dist/200.html b/apps/api/internal/webassets/dist/200.html index 663384da..805c57fa 100644 --- a/apps/api/internal/webassets/dist/200.html +++ b/apps/api/internal/webassets/dist/200.html @@ -30,12 +30,12 @@ - + - + - +
@@ -49,7 +49,7 @@ Promise.all([ import("/_app/immutable/entry/start.DpGC7Oln.js"), - import("/_app/immutable/entry/app.CPds4rfU.js") + import("/_app/immutable/entry/app.Bsb6xClM.js") ]).then(([kit, app]) => { kit.start(app, element); }); diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/0.zhCwU1YX.css b/apps/api/internal/webassets/dist/_app/immutable/assets/0.B4KZu4e-.css similarity index 52% rename from apps/api/internal/webassets/dist/_app/immutable/assets/0.zhCwU1YX.css rename to apps/api/internal/webassets/dist/_app/immutable/assets/0.B4KZu4e-.css index a25862d4..5bd524f8 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/assets/0.zhCwU1YX.css +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/0.B4KZu4e-.css @@ -1 +1 @@ -@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-symbols2-wght-normal.GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal.B_7UjwxQ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-feature-settings:"ss01", "cv11";--font-display:"Bricolage Grotesque Variable", "Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--surface:var(--panel-2);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--activity-accent:var(--lightningcss-light,#c07e0a)var(--lightningcss-dark,#e8b23e);--activity-accent-soft:var(--lightningcss-light,#c07e0a17)var(--lightningcss-dark,#e8b23e1a);--delivery-accent:var(--lightningcss-light,#5558d9)var(--lightningcss-dark,#8b8df2);--delivery-accent-soft:var(--lightningcss-light,#5558d90f)var(--lightningcss-dark,#8b8df214);--tool-call-bg:var(--lightningcss-light,#5558d917)var(--lightningcss-dark,#8b8df21f);--tool-call-bg-hover:var(--lightningcss-light,#5558d924)var(--lightningcss-dark,#8b8df22e);--accent-glow:0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 48%, transparent);--success:var(--lightningcss-light,#14876a)var(--lightningcss-dark,#30c48d);--warn:#e8a33e;--danger:var(--lightningcss-light,#d13438)var(--lightningcss-dark,#ff6d68);--scrollbar:var(--lightningcss-light,#10151d2e)var(--lightningcss-dark,#bed2ff1f);--scrollbar-hover:var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#bed2ff38);--shadow:0 24px 60px -22px var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#02050ab3);--tooltip-bg:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#2b3448);--tooltip-fg:var(--lightningcss-light,#f0f4fa)var(--lightningcss-dark,#f4f7fb);--key-edge:0 1px 0 var(--line-strong), 0 2px 0 var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#00000073);--key-edge-pressed:0 1px 0 var(--line-strong);--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-xl:14px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-right:env(safe-area-inset-right,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);background:var(--bg);color:var(--text);font-family:Geist Variable,Inter,SF Pro Text,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-color-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-board=ember]{--rail:var(--lightningcss-light,#e9e1d7)var(--lightningcss-dark,#16110d);--bg:var(--lightningcss-light,#f7f3ed)var(--lightningcss-dark,#1a1511);--panel:var(--lightningcss-light,#fffaf2)var(--lightningcss-dark,#211a15);--panel-2:var(--lightningcss-light,#efe7dc)var(--lightningcss-dark,#29211a);--panel-3:var(--lightningcss-light,#e4dbcf)var(--lightningcss-dark,#322820);--hover:var(--lightningcss-light,#1020270d)var(--lightningcss-dark,#fff4eb0b);--hover-strong:var(--lightningcss-light,#10202714)var(--lightningcss-dark,#fff4eb14);--line:var(--lightningcss-light,#1020271a)var(--lightningcss-dark,#ffece014);--line-strong:var(--lightningcss-light,#10202729)var(--lightningcss-dark,#ffece024);--text:var(--lightningcss-light,#22201d)var(--lightningcss-dark,#ece4da);--text-strong:var(--lightningcss-light,#11100e)var(--lightningcss-dark,#fbf6f0);--muted:var(--lightningcss-light,#6f675f)var(--lightningcss-dark,#a4917f);--muted-2:var(--lightningcss-light,#958b80)var(--lightningcss-dark,#6f6152);--accent:var(--lightningcss-light,#c94a32)var(--lightningcss-dark,#f0714c);--accent-hover:var(--lightningcss-light,#b13c26)var(--lightningcss-dark,#ff8560);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#241009);--accent-2:var(--lightningcss-light,#006d77)var(--lightningcss-dark,#45b8ac);--accent-soft:var(--lightningcss-light,#c94a3224)var(--lightningcss-dark,#f0714c2b);--brand-a:var(--lightningcss-light,#c64b32)var(--lightningcss-dark,#f0714c);--brand-b:var(--lightningcss-light,#c8425a)var(--lightningcss-dark,#d84a63);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#11100e);--scrollbar:var(--lightningcss-light,#1020272e)var(--lightningcss-dark,#ffece01a);--scrollbar-hover:var(--lightningcss-light,#1020274d)var(--lightningcss-dark,#ffece033);--shadow:0 24px 60px -22px var(--lightningcss-light,#10202752)var(--lightningcss-dark,#080402a6)}[data-board=moss]{--rail:var(--lightningcss-light,#dfe5e0)var(--lightningcss-dark,#0a100d);--bg:var(--lightningcss-light,#ecf0ed)var(--lightningcss-dark,#0e1512);--panel:var(--lightningcss-light,#f7f9f7)var(--lightningcss-dark,#131b16);--panel-2:var(--lightningcss-light,#e6ebe7)var(--lightningcss-dark,#1a241d);--panel-3:var(--lightningcss-light,#dbe2dc)var(--lightningcss-dark,#223026);--hover:var(--lightningcss-light,#0f17120d)var(--lightningcss-dark,#d6ffe40b);--hover-strong:var(--lightningcss-light,#0f171214)var(--lightningcss-dark,#d6ffe414);--line:var(--lightningcss-light,#0f17121a)var(--lightningcss-dark,#c8ffdc17);--line-strong:var(--lightningcss-light,#0f17122b)var(--lightningcss-dark,#c8ffdc29);--text:var(--lightningcss-light,#212b24)var(--lightningcss-dark,#dbe7de);--text-strong:var(--lightningcss-light,#0f1712)var(--lightningcss-dark,#f3faf4);--muted:var(--lightningcss-light,#5c6b60)var(--lightningcss-dark,#8fa295);--muted-2:var(--lightningcss-light,#8a9a8e)var(--lightningcss-dark,#5d6e62);--accent:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--accent-hover:var(--lightningcss-light,#0f6a44)var(--lightningcss-dark,#63e6ab);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--accent-2:var(--lightningcss-light,#d97f26)var(--lightningcss-dark,#ffab5e);--accent-soft:var(--lightningcss-light,#177a5021)var(--lightningcss-dark,#3ddc9726);--brand-a:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--brand-b:var(--lightningcss-light,#0e7490)var(--lightningcss-dark,#2bb3a3);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--scrollbar:var(--lightningcss-light,#0f17122e)var(--lightningcss-dark,#c8ffdc1f);--scrollbar-hover:var(--lightningcss-light,#0f17124d)var(--lightningcss-dark,#c8ffdc38)}[data-board=iris]{--rail:var(--lightningcss-light,#e2e2ea)var(--lightningcss-dark,#0d0c15);--bg:var(--lightningcss-light,#eeeef4)var(--lightningcss-dark,#12111c);--panel:var(--lightningcss-light,#f8f8fb)var(--lightningcss-dark,#181726);--panel-2:var(--lightningcss-light,#e9e9f0)var(--lightningcss-dark,#201e33);--panel-3:var(--lightningcss-light,#dedee8)var(--lightningcss-dark,#2a2742);--hover:var(--lightningcss-light,#1213270d)var(--lightningcss-dark,#e0dcff0b);--hover-strong:var(--lightningcss-light,#12132714)var(--lightningcss-dark,#e0dcff14);--line:var(--lightningcss-light,#1213271a)var(--lightningcss-dark,#d2cdff17);--line-strong:var(--lightningcss-light,#1213272b)var(--lightningcss-dark,#d2cdff29);--text:var(--lightningcss-light,#26283a)var(--lightningcss-dark,#e0dff0);--text-strong:var(--lightningcss-light,#121327)var(--lightningcss-dark,#f6f5fd);--muted:var(--lightningcss-light,#61637a)var(--lightningcss-dark,#918fa9);--muted-2:var(--lightningcss-light,#9092a8)var(--lightningcss-dark,#605e78);--accent:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--accent-hover:var(--lightningcss-light,#5f39c2)var(--lightningcss-dark,#bda4ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--accent-2:var(--lightningcss-light,#d94f8a)var(--lightningcss-dark,#ff8bb3);--accent-soft:var(--lightningcss-light,#7048d921)var(--lightningcss-dark,#a78bfa29);--brand-a:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--scrollbar:var(--lightningcss-light,#1213272e)var(--lightningcss-dark,#d2cdff1f);--scrollbar-hover:var(--lightningcss-light,#1213274d)var(--lightningcss-dark,#d2cdff38)}[data-board=signal]{--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:radial-gradient(1000px 600px at 0% 0%, color-mix(in srgb, var(--accent) 6%, transparent), transparent 60%), radial-gradient(900px 700px at 100% 100%, color-mix(in srgb, var(--delivery-accent) 5%, transparent), transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}code,pre,kbd,samp{font-variant-ligatures:none}button{cursor:pointer}input,textarea{background:0 0;border:0;outline:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover);background-clip:content-box}.auth-shell{min-height:100dvh;padding:calc(32px + var(--safe-area-top)) calc(32px + var(--safe-area-right)) calc(32px + var(--safe-area-bottom)) calc(32px + var(--safe-area-left));background:radial-gradient(color-mix(in srgb, var(--text) 6%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px, radial-gradient(700px 500px at 30% 20%, color-mix(in srgb, var(--brand-a) 14%, transparent), transparent 60%), radial-gradient(700px 500px at 80% 90%, color-mix(in srgb, var(--brand-b) 10%, transparent), transparent 60%), var(--bg);place-items:center;display:grid}.auth-panel{border:1px solid var(--line-strong);border-radius:var(--radius-xl);background:linear-gradient(180deg, #ffffff0a, #fff0) var(--panel);width:min(100%,440px);box-shadow:var(--key-edge), var(--shadow);gap:22px;padding:36px;display:grid}.auth-brand{align-items:center;gap:12px;display:flex}.auth-brand .mark{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:44px;height:44px;color:var(--brand-contrast);letter-spacing:-.02em;box-shadow:0 10px 24px -8px color-mix(in srgb, var(--brand-b) 65%, transparent);border-radius:12px;place-items:center;font-weight:800;display:grid}.auth-brand .brand-text strong{color:var(--text-strong);letter-spacing:-.01em;display:block}.auth-brand .brand-text span{color:var(--muted);font-size:12px;display:block}.auth-copy{gap:8px;margin-top:8px;display:grid}.auth-copy h1{letter-spacing:-.02em;color:var(--text-strong);font-size:28px;font-family:var(--font-display);margin:0;font-weight:700}.auth-copy p{color:var(--muted);margin:0;line-height:1.5}.github-login{color:#fff;background:#0d1117;border:1px solid #2b2f36;border-radius:12px;justify-content:center;align-items:center;gap:10px;min-height:46px;font-weight:600;text-decoration:none;transition:transform 80ms,background .12s,border-color .12s;display:inline-flex}.github-login:hover{background:#161b22;border-color:#3f4750;transform:translateY(-1px)}.auth-foot{color:var(--muted-2);text-align:center;margin:0;font-size:12px}.shell{grid-template-columns:72px 260px minmax(0,1fr) 0;height:100dvh;min-height:100dvh;transition:grid-template-columns .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.shell.thread-open,.shell.search-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(340px,28vw)}.shell.artifact-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(460px,42vw)}.shell.sidebar-collapsed{grid-template-columns:72px 0 minmax(0,1fr) 0}.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(340px,28vw)}.shell.sidebar-collapsed.artifact-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(460px,42vw)}.shell>.thread,.shell>.search-results,.shell>.artifact-viewer{grid-area:1/4}.shell.desktop-shell{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);grid-template-rows:52px minmax(0,1fr)}.desktop-shell>.guild-rail,.desktop-shell>.sidebar{background:0 0;border-right:0}.desktop-shell>.sidebar{grid-template-rows:minmax(0,1fr) auto}@media (width<=820px){.desktop-shell>.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line)}.desktop-shell>.sidebar{background:var(--panel);border-right:1px solid var(--line)}}.desktop-shell>.timeline{border-top:1px solid var(--line);border-left:1px solid var(--line);border-top-left-radius:12px}.desktop-shell:not(.thread-open):not(.search-open):not(.artifact-open)>.timeline{border-top-right-radius:12px}.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{border-top:1px solid var(--line);border-top-right-radius:12px}.desktop-shell>.desktop-titlebar{grid-area:1/1/auto/-1}.desktop-shell>.guild-rail,.desktop-shell>.sidebar,.desktop-shell>.timeline,.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{grid-row:2}.desktop-shell .mobile-nav-toggle{display:none}.desktop-auth-titlebar{z-index:10;-webkit-app-region:drag;height:52px;position:fixed;inset:0 0 auto}.desktop-titlebar{z-index:8;-webkit-app-region:drag;-webkit-user-select:none;user-select:none;background:0 0;align-items:center;min-width:0;height:52px;padding:0;display:flex;position:relative}.desktop-titlebar-safe-area{-webkit-app-region:drag;align-items:center;width:100%;min-width:0;height:100%;padding:0 14px;display:flex;position:relative}.desktop-titlebar[data-platform=darwin] .desktop-titlebar-safe-area{padding-left:78px}.desktop-titlebar[data-platform=win32] .desktop-titlebar-safe-area,.desktop-titlebar[data-platform=linux] .desktop-titlebar-safe-area{left:env(titlebar-area-x,0px);width:env(titlebar-area-width,calc(100% - 148px));position:absolute}.desktop-titlebar-leading{-webkit-app-region:no-drag;align-items:center;gap:9px;min-width:0;max-width:max(150px,50% - 300px);display:flex;overflow:hidden}.desktop-titlebar button{color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;display:grid}.desktop-titlebar button:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.desktop-titlebar-leading>.desktop-sidebar-toggle{border-radius:8px;width:30px;height:30px}.desktop-titlebar-workspace{min-width:36px;max-width:190px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;flex:0 auto;padding:5px 9px;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel{min-width:30px;max-width:230px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel.with-glyph:first-letter{color:var(--accent);margin-right:1px}.desktop-titlebar-divider{flex:none}.desktop-titlebar-status{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.desktop-titlebar-status:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@media (prefers-reduced-motion:reduce){.desktop-titlebar-status:before{animation:none}}.desktop-titlebar-search.search{border-color:var(--line-strong);background:color-mix(in srgb, var(--panel-2) 84%, transparent);-webkit-app-region:no-drag;width:clamp(220px,100vw - 700px,520px);height:32px;position:absolute;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffffff09}.desktop-titlebar-search.search:focus-within{border-color:color-mix(in srgb, var(--accent) 66%, var(--line));background:var(--panel-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 13%, transparent)}.timeline{background:var(--bg);flex-direction:column;min-width:0;display:flex;overflow:hidden}.timeline>*{flex-shrink:0;min-width:0}.timeline>.messages{flex:1 1 0;min-height:0}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--bg);align-items:center;gap:14px;min-height:60px;padding:12px 20px;display:flex}.topbar-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.topbar-title h1{letter-spacing:-.01em;color:var(--text-strong);font-size:16px;font-weight:650;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.topbar-title h1.with-glyph:first-letter{color:var(--accent);margin-right:1px}.topbar-divider{background:var(--line-strong);width:1px;height:18px;margin:0 6px}.topbar-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:12px;overflow:hidden}.search{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);width:min(280px,30vw);height:34px;color:var(--muted);align-items:center;gap:8px;padding:0 10px;transition:border-color .12s,background .12s;display:flex}.search:focus-within{border-color:var(--accent);background:var(--panel-2);color:var(--text)}.search input{min-width:0;height:100%;color:var(--text);flex:1}.search input::placeholder{color:var(--muted)}.search-clear{background:var(--panel-3);width:18px;height:18px;color:var(--muted);border:0;border-radius:50%;place-items:center;font-size:14px;line-height:1;display:grid}.search-clear:hover{background:var(--accent);color:var(--accent-contrast)}.search-submit{background:var(--accent-soft);height:22px;color:var(--accent);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:5px;padding:0 8px;font-size:10px;font-weight:600}.search-submit:hover{background:var(--accent);color:var(--accent-contrast)}.topbar-actions{align-items:center;gap:6px;display:inline-flex}.topbar-actions button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);width:32px;height:32px;color:var(--muted);box-shadow:var(--key-edge);place-items:center;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform 80ms;display:grid}.topbar-actions button:hover,.topbar-actions button.active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.topbar-actions button:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.search-results{border-left:1px solid var(--line);background:var(--panel);opacity:1;grid-template-rows:auto auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(0)}.search-results.covered{opacity:0;pointer-events:none}.search-results-head{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);justify-content:space-between;align-items:center;min-height:60px;padding:10px 16px;display:flex}.search-results-head>div{min-width:0}.search-results-head p{color:var(--muted);font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase;margin:0 0 2px;font-size:10px;font-weight:600}.search-results-head strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.search-results-head button{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;font-size:19px;line-height:1;display:grid}.search-results-head button:hover{background:var(--hover);color:var(--text)}.search-results-summary{color:var(--muted);padding:12px 16px 8px;font-size:12px;font-weight:600}.search-results-scroll{min-height:0;padding:0 8px 16px;overflow-y:auto}.search-result-list{margin:0;padding:0;list-style:none}.search-result{color:var(--text);border-radius:var(--radius);text-align:left;background:0 0;border:0;align-items:flex-start;gap:10px;width:100%;padding:10px 8px;display:flex}.search-result:hover{background:var(--hover)}.search-result.is-active{background:color-mix(in srgb, var(--accent) 10%, transparent)}.search-result:focus-visible,.search-results-head button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-result .dm-avatar{width:30px;height:30px;font-size:13px}.search-result-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.search-result-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.search-result-meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.search-result-handle{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.search-result-meta time{color:var(--muted);flex:none;margin-left:auto;font-size:11px}.search-result-snippet{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.search-result-snippet mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text-strong);border-radius:2px;font-weight:650}.search-result-context{min-width:0;color:var(--muted-2);align-items:center;gap:10px;margin-top:1px;font-size:11px;display:flex}.search-result-context:empty{display:none}.search-result-where{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.search-result-thread{color:var(--accent);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.search-load-more{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);width:calc(100% - 16px);color:var(--text);margin:8px auto 0;padding:8px 12px;font-size:12px;font-weight:600;display:block}.search-load-more:hover:not(:disabled){background:var(--hover)}.search-load-more:disabled{color:var(--muted)}.search-load-more:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-end{color:var(--muted-2);text-align:center;padding:14px 8px 4px;font-size:11px}.search-foot-error{border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--text);justify-content:space-between;align-items:center;gap:10px;margin:8px 8px 0;padding:8px 12px;font-size:12px;display:flex}.search-foot-error p{min-width:0;margin:0}.search-foot-error button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--text);flex:none;padding:4px 10px;font-size:12px;font-weight:600}.search-foot-error button:hover{background:var(--hover)}.search-state{color:var(--muted);text-align:center;justify-items:center;padding:56px 24px;display:grid}.search-state-icon{border:1px solid var(--line-strong);background:var(--panel-2);width:44px;height:44px;color:var(--muted-2);border-radius:50%;place-items:center;margin-bottom:14px;font-size:23px;display:grid}.search-state strong{color:var(--text-strong);font-size:14px}.search-state p{margin:5px 0 0;font-size:12px}.search-state-loading{grid-template-columns:repeat(3,7px);justify-content:center;gap:6px}.search-state-loading span{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pulse}.search-state-loading span:nth-child(2){animation-delay:.12s}.search-state-loading span:nth-child(3){animation-delay:.24s}.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:8px;padding:14px 0;display:flex;position:relative;overflow-y:auto}.guild-rail .guild{background:var(--panel);width:48px;height:48px;color:var(--text);border:1px solid var(--line-strong);letter-spacing:-.02em;box-shadow:var(--key-edge);border-radius:12px;place-items:center;font-size:14px;font-weight:700;text-decoration:none;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s;display:grid;position:relative}.guild-rail .guild:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent);box-shadow:var(--key-edge), 0 6px 16px -8px color-mix(in srgb, var(--accent) 45%, transparent);transform:translateY(-1px)}.guild-rail .guild:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild.home{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border-color:color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));color:var(--brand-contrast);font-weight:800;font-family:var(--font-display)}.guild-rail .guild.home:hover{color:var(--brand-contrast);transform:translateY(-1px)}.guild-rail .guild.home:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild__image{border-radius:inherit;object-fit:cover;width:100%;height:100%;display:block}.guild-rail .guild.add{color:var(--success);border:1px dashed color-mix(in srgb, var(--success) 45%, transparent);background:0 0}.guild-rail .guild.add:hover{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-style:solid;border-color:var(--success)}.guild-divider{background:var(--line-strong);width:36px;height:1px;margin:4px 0}.guild-list{flex-direction:column;align-items:center;gap:8px;display:flex}.guild-wrap{position:relative}.guild-wrap:before{content:"";background:var(--accent);opacity:0;border-radius:0 4px 4px 0;width:4px;height:28px;transition:opacity .14s,transform .14s;position:absolute;top:50%;left:-14px;transform:translateY(-50%)scaleY(.2)}.guild-wrap:hover:before{opacity:.6;transform:translateY(-50%)scaleY(.5)}.guild-wrap.active:before{opacity:1;transform:translateY(-50%)scaleY(1)}.guild-wrap.active .guild{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast)}.guild-create{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;margin-left:8px;padding:8px;position:absolute;top:14px;left:100%}.guild-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:200px;height:32px;color:var(--text);padding:0 10px}.sidebar{background:var(--panel);border-right:1px solid var(--line);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .16s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.sidebar-collapsed .sidebar{opacity:0;pointer-events:none;transform:translate(-14px)}.workspace-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:6px;min-height:60px;padding:14px 16px;display:flex}.workspace-header-icon{object-fit:cover;background:var(--panel-2);border-radius:8px;flex:none;width:28px;height:28px}.workspace-header-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.workspace-menu{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;margin-left:-8px;padding:5px 8px;transition:background .12s;display:flex}.workspace-menu:hover{background:var(--panel-2)}.workspace-menu-caret{color:var(--muted);flex:none;transition:color .12s}.workspace-menu:hover .workspace-menu-caret{color:var(--text-strong)}.sidebar-collapse{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:8px;place-items:center;transition:color .12s,background .12s,transform .12s;display:grid}.sidebar-collapse:hover{background:var(--panel-3);color:var(--text-strong);transform:translate(-1px)}.workspace-name{flex-direction:column;gap:2px;min-width:0;display:flex}.workspace-name strong{min-width:0;color:var(--text-strong);letter-spacing:-.01em;font-size:15px;font-family:var(--font-display);align-items:center;gap:5px;font-weight:650;display:flex}.workspace-name-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.workspace-name .presence{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.workspace-name .presence:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@keyframes presence-pulse{0%,to{opacity:.4}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.workspace-name .presence:before{animation:none}}.sidebar-scroll{padding:12px 8px 16px;overflow-y:auto}.nav-section+.nav-section{margin-top:12px}.section-title{border-radius:var(--radius-sm);background:0 0;border:0;align-items:center;gap:4px;width:100%;padding:2px 4px;display:flex}.nav-section.collapsed+.nav-section{margin-top:4px}.section-toggle{border-radius:var(--radius-sm);min-width:0;min-height:28px;color:var(--muted);text-transform:uppercase;font-family:var(--font-mono);letter-spacing:.09em;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;padding:4px;font-size:10px;font-weight:600;display:flex}.section-toggle:hover{color:var(--text);background:var(--hover)}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.section-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.section-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.section-toggle .label{text-align:left;flex:1}.section-title .add-button{background:var(--hover-strong);width:18px;height:18px;color:var(--text);border:0;border-radius:4px;flex:none;place-items:center;padding:0;font-size:14px;font-weight:700;line-height:1;display:grid}.section-title .add-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.section-title:hover .add-button{background:var(--accent);color:var(--accent-contrast)}.nav-list{flex-direction:column;gap:1px;margin-top:4px;display:flex}.nav-list[hidden]{display:none}@media (prefers-reduced-motion:reduce){.section-toggle .caret{transition:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.channel-row{border-radius:var(--radius-sm);align-items:center;display:flex;position:relative}.channel-row .nav-item{flex:1;min-width:0}.channel-row.reorderable .nav-item{padding-left:2px}.channel-drag-handle{border-radius:var(--radius-sm);color:var(--muted-2);cursor:grab;opacity:0;background:0 0;border:0;flex:0 0 24px;align-self:stretch;place-items:center;display:grid}.channel-row:hover .channel-drag-handle,.channel-drag-handle:focus-visible{opacity:1}.channel-drag-handle:hover{color:var(--text);background:var(--hover)}.channel-drag-handle:active{cursor:grabbing}.channel-drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.channel-drag-handle svg{fill:currentColor}.channel-move-menu{z-index:4;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-width:112px;box-shadow:var(--shadow);padding:4px;display:grid;position:absolute;top:calc(100% + 2px);left:0}.channel-move-menu button{color:var(--text);text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}.channel-move-menu button:hover:not(:disabled),.channel-move-menu button:focus-visible{background:var(--hover-strong);outline:none}.channel-move-menu button:disabled{color:var(--muted-2);cursor:default}.channel-row.dragging{opacity:.45}.channel-row.drop-before:before,.channel-row.drop-after:after{content:"";z-index:1;background:var(--accent);pointer-events:none;border-radius:1px;height:2px;position:absolute;left:4px;right:4px}.channel-row.drop-before:before{top:-1px}.channel-row.drop-after:after{bottom:-1px}@media (hover:none){.channel-drag-handle{opacity:1}}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:8px;min-height:30px;padding:6px 10px;text-decoration:none;transition:background .1s,color .1s;display:flex}.nav-item:hover{background:var(--hover);color:var(--text)}.nav-item:focus{outline:none}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-item.active{background:var(--accent-soft);color:var(--text-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.nav-item.has-unread{color:var(--text-strong);font-weight:600}.nav-item.has-unread .hash{color:var(--text-strong)}.unread-badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-contrast,white);text-align:center;letter-spacing:.01em;border-radius:9px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.nav-item .hash{color:var(--muted);text-align:center;width:14px;font-weight:600}.nav-item.active .hash{color:var(--accent)}.nav-label{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.dm-row{grid-template-columns:minmax(0,1fr) 24px;align-items:center;gap:2px;display:grid;position:relative}.dm-row .nav-item{min-width:0}.dm-actions-trigger{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--muted-2);opacity:0;background:0 0;border:0;place-items:center;font-size:18px;font-weight:700;line-height:1;display:grid}.dm-row:hover .dm-actions-trigger,.dm-row:focus-within .dm-actions-trigger,.dm-row.active .dm-actions-trigger{opacity:1}.dm-actions-trigger:hover,.dm-actions-trigger:focus-visible,.dm-actions-trigger[aria-expanded=true]{background:var(--hover);color:var(--text);outline:none}.dm-actions-menu{z-index:30;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-2);min-width:164px;box-shadow:var(--shadow);padding:4px;position:absolute;top:28px;right:0}.dm-actions-item{width:100%;min-height:30px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:13px}.dm-actions-item:hover,.dm-actions-item:focus-visible{background:var(--hover);color:var(--text-strong);outline:none}.dm-undo{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 2px;padding:6px 8px;font-size:12px;display:flex}.dm-undo span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dm-undo button{background:var(--hover);color:var(--text);border:0;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:700}.dm-undo button:hover,.dm-undo button:focus-visible{background:var(--accent);color:var(--accent-contrast);outline:none}.nav-empty{color:var(--muted-2);margin:4px 8px;font-size:12px}.dm-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:grid;overflow:hidden}.dm-avatar img,.avatar img{object-fit:cover;width:100%;height:100%;display:block}.presence-dot{background:var(--muted-2);border-radius:50%;flex-shrink:0;width:8px;height:8px}.presence-dot.active{background:var(--success);box-shadow:0 0 0 2px var(--panel)}.inline-create{grid-template-columns:minmax(0,1fr) auto;gap:6px;margin:6px 4px 2px;display:grid}.inline-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:100%;min-width:0;height:30px;color:var(--text);border:1px solid var(--line);padding:0 10px}.inline-create input:focus{border-color:var(--accent);background:var(--panel-3)}.inline-create button.ghost,button.ghost{border-radius:var(--radius-sm);background:var(--panel-3);width:30px;height:30px;color:var(--muted);border:0;place-items:center;padding:0;font-size:14px;font-weight:600;display:grid}.inline-create button.ghost:hover{background:var(--accent);color:var(--accent-contrast)}.user-card{background:var(--panel-2);border-top:1px solid var(--line);width:100%;color:inherit;text-align:left;cursor:pointer;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:10px;padding:10px 12px;transition:background .12s;display:flex}.user-card:hover{background:var(--panel-3)}.user-card .dm-avatar{width:28px;height:28px;font-size:12px}.user-card .user-meta{flex:1;min-width:0}.user-card .user-meta strong{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.user-card .user-meta span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}@media (width<=820px){.workspace-header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(14px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right))}.sidebar-scroll{padding-bottom:calc(16px + var(--safe-area-bottom))}.user-card{padding-bottom:calc(10px + var(--safe-area-bottom))}}.messages{flex-direction:column;display:flex;position:relative}.messages-scroll{overflow-anchor:none;opacity:1;flex-direction:column;flex:1;min-height:0;padding:0 4px;transition:opacity .14s ease-out;display:flex;overflow-y:auto}.messages-scroll:focus{outline:none}.messages.is-revealing .messages-scroll{opacity:0;pointer-events:none;transition:opacity}.messages-spacer{flex-grow:1}.history-loader{pointer-events:none;gap:14px;margin:4px 0 6px;padding:6px 18px;animation:.22s ease-out both history-loader-fade;display:grid}.history-loader--newer{margin-top:6px;margin-bottom:4px}@keyframes history-loader-fade{0%{opacity:0}to{opacity:1}}.history-loader__row{grid-template-columns:56px minmax(0,1fr);min-height:44px;display:grid}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:linear-gradient(90deg, color-mix(in srgb, var(--muted-2) 16%, transparent), color-mix(in srgb, var(--muted-2) 36%, transparent), color-mix(in srgb, var(--muted-2) 16%, transparent));animation:1.4s ease-in-out infinite history-loading;animation-delay:calc(var(--history-row,0) * 80ms);background-size:220% 100%;display:block}.history-loader__avatar{border-radius:10px;width:38px;height:38px}.history-loader__body{align-content:start;gap:8px;min-width:0;padding-top:4px;display:grid}.history-loader__meta{border-radius:999px;width:min(180px,38%);height:11px}.history-loader__line{border-radius:999px;height:10px}.history-loader__line--wide{width:min(540px,72%)}.history-loader__line--mid{width:min(360px,48%)}@keyframes history-loading{0%{background-position:120% 0}to{background-position:-120% 0}}@media (prefers-reduced-motion:reduce){.history-loader{animation:none}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:color-mix(in srgb, var(--muted-2) 22%, transparent);animation:none}}.unread-bar{z-index:5;background:color-mix(in srgb, var(--panel) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1px solid color-mix(in srgb, var(--accent) 38%, transparent);max-width:calc(100% - 32px);height:30px;color:var(--text);letter-spacing:.005em;box-shadow:inset 0 1px 0 #ffffff14, 0 10px 24px -14px #0000008c, 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent);opacity:1;border-radius:999px;align-items:center;gap:6px;padding:0 5px 0 14px;font-size:12px;font-weight:600;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:inline-flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.unread-bar.is-clearing{opacity:0;pointer-events:none;transform:translate(-50%,-6px)}.unread-bar__jump,.unread-bar__mark{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;transition:background-color .12s ease-out,color .12s ease-out;display:inline-flex}.unread-bar__jump{text-align:left;min-width:0;color:color-mix(in srgb, var(--accent) 92%, var(--text));flex:0 auto;padding:0 6px 0 0}.unread-bar__jump:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);border-radius:50%;flex-shrink:0;animation:1.8s ease-out infinite unread-bar-pulse}@keyframes unread-bar-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.unread-bar__jump:before{animation:none}}.unread-bar__mark{background:color-mix(in srgb, var(--accent) 14%, transparent);height:22px;color:color-mix(in srgb, var(--accent) 90%, var(--text));letter-spacing:.01em;border-radius:999px;flex-shrink:0;padding:0 10px;font-size:11px;font-weight:600}.unread-bar__jump:hover{color:var(--accent)}.unread-bar__mark:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--accent)}.unread-bar__jump:focus-visible,.unread-bar__mark:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 70%, transparent);outline-offset:2px;border-radius:999px}.unread-bar__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.typing-indicator{height:0;color:var(--text-muted);opacity:0;pointer-events:none;align-items:center;gap:8px;margin-top:0;padding:0 22px;font-size:12px;transition:height .12s ease-out,margin-top .12s ease-out,opacity .12s ease-out,transform .16s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden;transform:translateY(2px)}.typing-indicator.visible{opacity:1;height:20px;margin-top:-4px;transform:translateY(0)}.composer-dock{padding-top:20px;position:relative}.composer-dock .agent-responding{opacity:0;pointer-events:none;align-items:center;height:20px;margin:0;padding:0 22px;transition:opacity .12s ease-out;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden;transform:none}.composer-dock .agent-responding.visible{opacity:1;height:20px;margin:0;transform:none}.typing-indicator__dots{align-items:center;gap:3px;display:inline-flex}.typing-indicator__dots i{opacity:.55;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite typing-dot}.typing-indicator__dots i:nth-child(2){animation-delay:.15s}.typing-indicator__dots i:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.message-row.is-pending{opacity:.55}.message-row.is-pending .message-content,.message-row.is-pending .markdown{pointer-events:none}.message-row.is-failed{opacity:1}.message-row.is-deleted{color:var(--muted)}.message-failed{background:color-mix(in srgb, var(--danger,#d04848) 14%, transparent);color:var(--danger,#d04848);border-radius:999px;align-items:center;gap:10px;margin-top:6px;padding:4px 10px;font-size:12px;display:inline-flex}.message-failed__label{font-weight:500}.message-failed__action{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:999px;padding:2px 8px;line-height:1}.message-failed__action:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.message-failed__action--ghost{border-color:color-mix(in srgb, currentColor 50%, transparent)}@media (prefers-reduced-motion:reduce){.typing-indicator{transition:opacity 80ms ease-out;transform:none}.typing-indicator.visible{transform:none}.typing-indicator__dots i{opacity:.7;animation:none}}.empty{text-align:center;align-content:center;place-items:center;gap:10px;min-height:50vh;padding:48px 24px;display:grid}.empty-icon{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border:1px solid color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));width:64px;height:64px;color:var(--brand-contrast);box-shadow:var(--key-edge), 0 18px 40px -16px color-mix(in srgb, var(--brand-b) 60%, transparent);border-radius:16px;place-items:center;font-size:26px;font-weight:800;display:grid}.empty strong{color:var(--text-strong);letter-spacing:-.01em;font-size:19px;font-family:var(--font-display);font-weight:700}.empty span{color:var(--muted);max-width:380px;line-height:1.5}.day-divider{pointer-events:none;align-items:center;gap:12px;margin:18px 18px 8px;display:flex}.day-divider:before,.day-divider:after{content:"";background:var(--line);flex:1;height:1px}.day-divider span{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:4px 12px;font-size:10px;font-weight:600}.new-messages-divider{pointer-events:none;opacity:1;align-items:center;gap:0;margin:4px 0 2px;padding:0 18px;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:flex;position:relative;transform:translateY(0)}.new-messages-divider.is-clearing{opacity:0;transform:translateY(-4px)}.new-messages-divider:before{content:"";background:var(--danger,#ed4245);opacity:.9;flex:1;height:1px}.new-messages-divider span{background:var(--danger,#ed4245);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:3px;align-items:center;height:14px;margin-left:8px;padding:0 5px;font-size:9px;font-weight:700;display:inline-flex}.message-group{grid-template-columns:56px minmax(0,1fr);padding:8px 18px;display:grid;position:relative}.message-group:hover{background:var(--hover)}.avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:10px;place-items:center;width:38px;height:38px;margin-top:2px;font-size:14px;font-weight:700;display:grid;overflow:hidden;box-shadow:0 6px 20px -10px #0009}.avatar-button{z-index:2;cursor:pointer;border:0;padding:0;transition:transform .1s,box-shadow .12s,filter .12s;position:relative}.avatar-button:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 10px 24px -12px #000c}.avatar.small{border-radius:10px;width:30px;height:30px;font-size:12px}.avatar.large{border-radius:16px;width:56px;height:56px;margin:0;font-size:18px}.group-body{min-width:0}.group-body>header{align-items:baseline;gap:8px;margin-bottom:2px;display:flex}.group-body>header strong{color:var(--text-strong);letter-spacing:-.005em;font-size:14.5px;font-weight:700}.author-name{color:var(--text-strong);letter-spacing:0;background:0 0;border:0;border-radius:4px;padding:0;font-size:14.5px;font-weight:700}.author-name:hover{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.author-name--static:hover{color:var(--text-strong);text-decoration:none}.group-body>header time{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10.5px}.group-body>header span{color:var(--muted);font-size:12px}.bot-chip{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);height:18px;color:var(--accent);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;padding:0 6px;font-size:9.5px;font-weight:700;line-height:1;display:inline-flex}.bot-chip--deleted{border-color:var(--line-strong);color:var(--muted)}.message-row{border-radius:0;margin-left:-56px;padding:1px 0 1px 56px;transition:background 80ms;position:relative}.message-row:not(:first-child){margin-top:1px}.message-row.selected{background:var(--accent-soft)}.message-row.can-open-thread{cursor:pointer}.row-stamp{font-family:var(--font-mono);color:var(--muted-2);opacity:0;font-variant-numeric:tabular-nums;font-size:9.5px;position:absolute;top:4px;left:8px}.message-row.is-preamble{background:0 0;margin-bottom:6px;padding-top:4px;padding-bottom:4px}.message-row.is-preamble:not(.before-final-message) .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);border-radius:var(--radius-lg);background:var(--activity-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--activity-accent) 14%, transparent);padding:10px 14px}.message-row.is-preamble-collapsed .message-content{padding-top:6px;padding-bottom:6px}.message-row.is-preamble.before-final-message{background:0 0;margin-bottom:0;padding-top:2px;padding-bottom:0}.message-row.after-preamble{margin-top:0;padding-top:0;padding-bottom:2px}.message-row.is-preamble.before-final-message:before{display:none}.message-row.is-preamble.before-final-message .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);background:var(--activity-accent-soft);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);border-bottom:0;padding:10px 14px}.message-row.after-preamble .message-content{border:1px solid color-mix(in srgb, var(--delivery-accent) 20%, transparent);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:var(--delivery-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--delivery-accent) 14%, transparent);border-top:0;padding:10px 14px}.message-row.is-preamble.before-final-message.is-preamble-collapsed .message-content{background:color-mix(in srgb, var(--activity-accent) 10%, var(--panel));border-bottom:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);padding-top:7px;padding-bottom:7px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 56px}:root[data-user-align=right] .message-group.is-self>.avatar,:root[data-other-align=right] .message-group:not(.is-self)>.avatar{grid-area:1/2;justify-self:end}:root[data-user-align=right] .message-group.is-self>.group-body,:root[data-other-align=right] .message-group:not(.is-self)>.group-body{grid-area:1/1;min-width:0}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{justify-content:flex-end}:root[data-user-align=right] .message-group.is-self .message-content,:root[data-other-align=right] .message-group:not(.is-self) .message-content{text-align:right;margin-left:auto}:root[data-user-align=right] .message-group.is-self .markdown,:root[data-other-align=right] .message-group:not(.is-self) .markdown{text-align:right}:root[data-user-align=right] .message-group.is-self .attachment-grid,:root[data-other-align=right] .message-group:not(.is-self) .attachment-grid{margin-left:auto}.preamble-contract{gap:7px;min-width:0;display:grid}.preamble-toggle{width:100%;min-height:20px;color:var(--activity-accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;gap:7px;padding:0;display:grid}.preamble-chevron{color:var(--activity-accent);font-size:10px;transition:transform .12s}.preamble-chevron.open{transform:rotate(90deg)}.preamble-state,.preamble-action{line-height:1}.preamble-state{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);height:17px;color:var(--activity-accent);text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:0 7px;font-size:9.5px;font-weight:750;display:inline-flex}.preamble-state.is-live{border-color:color-mix(in srgb, var(--activity-accent) 55%, transparent);animation:1.6s ease-in-out infinite preamble-live-pulse}@keyframes preamble-live-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.preamble-state.is-live{animation:none}}.preamble-action{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.preamble-body{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;min-width:0}.preamble-flow{gap:7px;min-width:0;padding-left:17px;display:grid}.preamble-tool{--tool-accent:var(--activity-accent);background:var(--tool-call-bg);border-radius:7px;min-width:0;overflow:hidden}.preamble-tool-summary{width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:7px;padding:4px 9px;line-height:1.5;display:flex}.preamble-tool-summary:hover{background:var(--tool-call-bg-hover)}.preamble-tool-full{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;gap:5px;min-width:0;padding:2px 10px 8px 27px;font-size:12px;display:grid}.preamble-tool-full-head{font-family:var(--font-mono);color:color-mix(in srgb, var(--tool-accent) 45%, var(--muted));font-size:11px;font-weight:600}.preamble-tool-full-body{min-width:0}.preamble-tool-full pre{white-space:pre-wrap;overflow-wrap:anywhere}.tool-line-chevron{color:var(--muted-2);flex-shrink:0;font-size:9px;transition:transform .12s}.tool-line-chevron.open{transform:rotate(90deg)}.tool-line-glyph{filter:saturate(.85);flex-shrink:0;font-size:11px}.tool-line-action{color:color-mix(in srgb, var(--tool-accent) 38%, var(--text));flex-shrink:0;font-size:11.5px;font-weight:600}.tool-line-name{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:color-mix(in srgb, var(--tool-accent) 55%, var(--muted));font-size:11px;font-weight:500;font-family:var(--font-mono);flex-shrink:0;overflow:hidden}.tool-line-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);font-size:11px;font-weight:400;font-family:var(--font-mono);opacity:.85;flex:auto;overflow:hidden}.message-row:hover .row-stamp{opacity:1}.message-content{min-width:0}.thread-hint{border:1px solid color-mix(in srgb, var(--line-strong) 70%, transparent);background:color-mix(in srgb, var(--panel) 70%, transparent);min-height:22px;color:var(--muted-2);cursor:pointer;border-radius:8px;align-items:center;gap:5px;margin-top:5px;padding:2px 7px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.thread-hint:not(.has-replies):not(.is-open){display:none}.thread-hint svg{flex:none}.thread-hint time{color:var(--muted-2);font-variant-numeric:tabular-nums;font-size:10px;font-weight:700}.thread-hint.has-replies,.thread-hint.is-open{border-color:color-mix(in srgb, var(--accent) 48%, var(--line-strong));background:color-mix(in srgb, var(--accent-soft) 70%, transparent);color:var(--text-strong)}.thread-hint.has-replies time,.thread-hint.is-open time{color:var(--muted)}.thread-hint:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));background:var(--hover-strong);color:var(--text-strong)}.thread-hint:disabled{cursor:default;opacity:.45}.message-actions{opacity:0;background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow);border-radius:8px;align-items:flex-start;gap:4px;padding:2px;transition:opacity .1s,transform .1s;display:flex;position:absolute;top:0;right:8px;transform:translateY(-50%)}.message-row:hover .message-actions,.message-row.selected .message-actions{opacity:1}.message-actions button{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.message-actions button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-actions .message-action-danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.message-deleted{min-height:22px;color:var(--muted);align-items:center;font-size:13px;font-style:italic;display:inline-flex}.markdown{color:var(--text);overflow-wrap:anywhere;word-break:break-word;font-size:14.5px;line-height:1.5}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0}.markdown p+p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre{margin-top:6px}.markdown a{color:var(--accent);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown code{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-family:Geist Mono Variable,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.markdown pre{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;overflow-x:auto}.markdown pre code{background:0 0;border:0;padding:0}.markdown blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:0;padding:4px 0 4px 12px}.markdown ul,.markdown ol{padding-left:22px}.markdown img{border-radius:var(--radius);border:1px solid var(--line);object-fit:contain;background:var(--panel);cursor:zoom-in;max-width:100%;max-height:360px;margin-top:6px}.gif-player{vertical-align:top;max-width:100%;display:inline-block;position:relative}.gif-player img{display:block}.gif-badge,.gif-replay{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:0;position:absolute}.gif-badge{letter-spacing:.04em;pointer-events:none;background:#0000008a;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800;bottom:9px;left:9px}.gif-replay{opacity:0;pointer-events:none;background:#0a0c12b8;border-radius:999px;place-items:center;width:30px;height:30px;font-size:16px;line-height:1;transition:opacity .13s,transform .13s,background .12s;display:grid;bottom:9px;right:9px;transform:scale(.88)}.gif-replay:hover{background:var(--accent)}.gif-player.paused .gif-replay{opacity:1;pointer-events:auto;transform:scale(1)}.gif-player.playing .gif-badge{animation:.9s ease-in-out infinite gif-breathe}@keyframes gif-breathe{0%,to{opacity:.85}50%{opacity:.45}}.attachment-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;max-width:560px;margin-top:8px;display:grid}.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:420px}.media-tile{border:1px solid var(--line);border-radius:var(--radius-lg);isolation:isolate;text-align:left;width:100%;color:inherit;cursor:pointer;background:#0a0c12;margin:0;padding:0;text-decoration:none;transition:border-color .14s,transform .14s,box-shadow .14s;display:block;position:relative;overflow:hidden}.media-tile:hover{border-color:var(--line-strong);box-shadow:0 18px 40px -28px #000000e6}.media-tile:focus-visible{border-color:var(--line-strong);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.media-tile--image{cursor:zoom-in}.media-tile__open{width:100%;color:inherit;cursor:zoom-in;background:0 0;border:0;margin:0;padding:0;display:block}.media-tile__open:focus{outline:0}.media-tile__open:focus-visible+.media-tile__caption .media-tile__name{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.media-tile--video{cursor:default}.media-tile img,.media-tile video{object-fit:contain;background:#05070d;width:100%;max-height:360px;display:block}.media-tile--image img{max-height:320px}.media-tile__caption{z-index:3;opacity:0;pointer-events:none;background:linear-gradient(#0000 0%,#00000080 60%,#000000c7 100%);align-items:center;gap:8px;padding:22px 10px 8px;transition:opacity .14s;display:flex;position:absolute;inset:auto 0 0}.media-tile__caption>*{pointer-events:auto}.media-tile:hover .media-tile__caption,.media-tile:focus-within .media-tile__caption{opacity:1}.media-tile--video.is-started .media-tile__caption{display:none}.media-tile__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 2px #0009;flex:1;min-width:0;font-size:12px;font-weight:500;overflow:hidden}.media-tile__chip{z-index:4;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border:1px solid #ffffff2e;border-radius:8px;flex:none;place-items:center;width:28px;height:28px;text-decoration:none;transition:background .12s,border-color .12s,transform .12s;display:inline-grid;position:relative}.media-tile__chip:hover{background:#000000b3;border-color:#ffffff52;transform:translateY(-1px)}.media-tile__play{cursor:pointer;z-index:1;background:0 0;border:0;place-items:center;width:100%;height:auto;margin:0;padding:0;display:grid;position:absolute;inset:0 0 48px}.media-tile__play:before{content:"";opacity:.7;pointer-events:none;background:radial-gradient(#0000002e 0%,#0000000d 45%,#0000 70%);transition:opacity .16s;position:absolute;inset:0}.media-tile__play:hover:before{opacity:.9}.media-tile__play-icon{color:#fff;-webkit-backdrop-filter:blur(10px);background:#0000008c;border-radius:999px;place-items:center;width:46px;height:46px;padding-left:3px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background .18s,box-shadow .2s;display:grid;position:relative;box-shadow:0 6px 20px -8px #0000008c}.media-tile__play-icon svg{filter:drop-shadow(0 1px 2px #0006)}.media-tile__play:hover .media-tile__play-icon{background:#000000b3;transform:scale(1.06);box-shadow:0 10px 28px -10px #000000a6}.media-tile__play:active .media-tile__play-icon{transition-duration:80ms;transform:scale(.97)}.media-tile__play:focus-visible{outline:none}.media-tile__play:focus-visible .media-tile__play-icon{box-shadow:0 0 0 2px #fff9,0 10px 28px -10px #000000a6}.media-tile__duration{z-index:2;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em;pointer-events:none;background:#000000b8;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;position:absolute;bottom:8px;left:8px}.file-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);align-items:center;gap:10px;max-width:360px;padding:10px;display:flex}.file-attachment:hover{border-color:var(--line-strong);background:var(--panel-2)}.file-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:8px;place-items:center;font-weight:800;display:grid}.file-attachment strong,.file-attachment small{display:block}.file-attachment strong{color:var(--text-strong);font-size:13px}.file-attachment small{color:var(--muted);font-size:11px}.audio-attachment,.document-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,420px);overflow:hidden}.audio-attachment{gap:10px;padding:10px;display:grid}.audio-attachment__meta{align-items:center;gap:10px;min-width:0;display:flex}.audio-attachment audio{width:100%;height:36px}.document-attachment{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;display:grid}.document-attachment__thumbnail{border:1px solid var(--line);background:linear-gradient(135deg, transparent 0 76%, var(--panel-3) 76% 100%), linear-gradient(180deg, #fff 0%, #f0f2f7 100%);width:64px;height:82px;color:var(--accent);letter-spacing:0;cursor:pointer;border-radius:6px;place-items:center;font-size:13px;font-weight:800;text-decoration:none;display:inline-grid;position:relative;overflow:hidden;box-shadow:0 8px 18px -16px #0009}.document-attachment__thumbnail:before,.document-attachment__thumbnail:after{content:"";background:color-mix(in srgb, var(--muted) 36%, transparent);border-radius:999px;height:2px;position:absolute;left:14px;right:14px}.document-attachment__thumbnail:before{top:48px}.document-attachment__thumbnail:after{top:56px}.document-attachment__meta{gap:5px;min-width:0;display:grid}.document-attachment__title{width:100%;min-width:0;color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:700;text-decoration:none;overflow:hidden}.document-attachment__title:hover{text-underline-offset:3px;text-decoration:underline}.document-attachment__meta small{color:var(--muted);white-space:nowrap;font-size:11px}.document-attachment__download{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;text-decoration:none;transition:background .12s,color .12s;display:inline-grid}.document-attachment__download:hover{background:var(--panel-2);color:var(--text-strong)}@media (width<=520px){.message-group{grid-template-columns:44px minmax(0,1fr);padding:7px 12px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 44px}.message-row{margin-left:-44px;padding-left:44px}.row-stamp{display:none}.attachment-grid,.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:100%}}:root[data-message-layout=outlined] .message-group .group-body{width:100%}:root[data-message-layout=outlined] .message-group .message-row{margin-left:0;padding:0}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-content,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-content,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .markdown,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .markdown{text-align:start}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .thread-hint,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .thread-hint{width:fit-content;margin-left:auto;display:flex}:root[data-message-layout=outlined] .message-group .row-stamp{left:-48px}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-48px}:root[data-message-layout=outlined] .message-group .message-row:not(:first-child){margin-top:4px}:root[data-message-layout=outlined] .message-group .message-content{border-radius:var(--radius-lg);width:fit-content;max-width:min(96%,1100px);margin-top:2px;padding:10px 14px;position:relative}:root[data-message-layout=outlined] .message-group .message-row:not(.is-preamble):not(.after-preamble) .message-content{border:1px solid var(--line-strong)}:root[data-message-layout=outlined] .message-group.is-agent .message-content{width:96%;max-width:1100px}:root[data-message-layout=outlined] .message-group .message-row.before-final-message+.message-row.after-preamble{margin-top:-1px}:root[data-message-layout=outlined] .message-group.is-agent .message-row.before-final-message .message-content{border-bottom-right-radius:0;border-bottom-left-radius:0}:root[data-message-layout=outlined] .message-group.is-agent .message-row.after-preamble .message-content{border-top-left-radius:0;border-top-right-radius:0}.composer{--composer-card-top:8px;--composer-overlay-gap:8px;--composer-overlay-inset-x:18px;background:var(--bg);gap:0;padding:8px 18px 6px;display:grid;position:relative}.composer-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--key-edge);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.composer:focus-within .composer-card{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent)}.composer-suggestions{left:var(--composer-overlay-inset-x);bottom:calc(100% - var(--composer-card-top) + var(--composer-overlay-gap));z-index:40;width:min(560px, calc(100% - (var(--composer-overlay-inset-x) * 2)));border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);max-height:min(320px,45vh);box-shadow:var(--shadow);border-radius:12px;margin:0;position:absolute;overflow:hidden auto}.composer-suggestions button{border:0;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--text);text-align:left;background:0 0;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.composer-suggestions button:last-child{border-bottom:0}.composer-suggestions button:hover,.composer-suggestions button.active{background:var(--hover-strong)}.suggestion-mark{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.suggestion-copy{gap:2px;min-width:0;display:grid}.suggestion-copy strong,.suggestion-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.suggestion-copy strong{color:var(--text-strong);font-size:13px}.suggestion-copy span{color:var(--muted);font-size:12px}.suggestion-kind{color:var(--muted-2);text-transform:uppercase;font-size:11px;font-weight:700}.suggestion-hint{color:var(--muted);font-size:12px;font-style:normal;font-weight:500}.composer-notice{margin:0 var(--composer-overlay-inset-x,0) 6px;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);border-radius:10px;align-items:baseline;gap:8px;padding:7px 10px;font-size:13px;display:flex}.composer-notice__label{color:var(--muted-2);text-transform:uppercase;flex:none;font-size:11px;font-weight:700}.composer-notice--error .composer-notice__label{color:var(--danger)}.composer-notice__text{min-width:0;color:var(--text);overflow-wrap:anywhere;flex:1}.composer-notice__dismiss{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:center;place-items:center;font-size:15px;line-height:1;display:grid}.composer-notice__dismiss:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-toolbar{border:0;border-top:1px solid var(--line);background:color-mix(in srgb, var(--panel-2) 35%, transparent);width:100%;min-width:0;box-shadow:none;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:0;align-items:center;gap:2px;margin:0;padding:4px 6px;display:inline-flex;overflow:auto hidden}.composer-toolbar::-webkit-scrollbar{display:none}.composer-toolbar button{min-width:28px;height:26px;color:var(--text);opacity:.78;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:11.5px;font-weight:700;transition:background .1s,color .1s,opacity .1s,transform 80ms;display:grid}.composer-toolbar button:hover{background:var(--hover-strong);color:var(--text-strong);opacity:1}.composer-toolbar button.active{background:var(--accent-soft);color:var(--accent);opacity:1}.composer-toolbar button:active{transform:translateY(1px)}.gif-picker{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 96%, transparent);width:min(520px,100vw - 40px);box-shadow:var(--shadow);border-radius:16px;margin-top:8px;margin-bottom:8px;padding:10px;animation:.16s cubic-bezier(.2,.8,.2,1) picker-in}.gif-picker-head{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:2px 2px 10px;display:grid}.gif-picker-head strong{color:var(--text-strong);font-size:13px}.gif-picker-head input{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-width:0;height:32px;padding:0 10px}.gif-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px;display:grid;overflow-y:auto}.gif-grid button{aspect-ratio:4/3;background:var(--panel-2);color:#fff;box-shadow:inset 0 0 0 1px var(--line);border:0;border-radius:12px;padding:0;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden}.gif-grid button:hover{box-shadow:inset 0 0 0 2px var(--accent), 0 14px 30px -22px #000c;transform:translateY(-2px)}.gif-grid img{object-fit:cover;width:100%;height:100%;display:block}.gif-grid span{text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008f;border-radius:999px;padding:4px 7px;font-size:10.5px;font-weight:700;position:absolute;bottom:6px;left:6px;right:6px;overflow:hidden}@keyframes picker-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.composer-row{--composer-control-size:36px;--composer-line-height:22px;--composer-text-padding-block:7px;background:0 0;border:0;border-radius:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:4px;padding:8px 8px 4px 10px;display:grid}.composer:focus-within .composer-toolbar,.composer-row:focus-within{border-color:#0000}.composer-row:focus-within{box-shadow:none}.composer-icon{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);color:var(--muted);cursor:pointer;border-radius:10px;align-self:start;place-items:center;transition:background .12s,color .12s;display:grid}.composer-icon:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-icon input[type=file]{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.composer textarea,.reply-composer textarea{width:100%;height:auto;min-height:44px;max-height:50vh;padding:var(--composer-text-padding-block) 4px;resize:none;color:var(--text);line-height:var(--composer-line-height);box-sizing:border-box;align-self:start;font-size:14.5px;overflow-y:auto}.composer textarea::placeholder,.reply-composer textarea::placeholder{color:var(--muted)}.send{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));border-radius:var(--radius);background:var(--accent);color:var(--accent-contrast);box-shadow:var(--key-edge);align-self:start;place-items:center;transition:background .12s,transform 80ms,box-shadow 80ms,opacity .12s;display:grid}.send:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.send:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.send:disabled{background:var(--panel-3);border-color:var(--line-strong);color:var(--muted-2);cursor:not-allowed;box-shadow:none}.composer-attachment{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;width:fit-content;margin-top:8px;margin-bottom:8px;padding:6px 10px;font-size:13px;display:inline-flex}.attachment-icon{background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:6px;place-items:center;display:grid}.pending-image{object-fit:cover;border:1px solid var(--line);background:var(--panel-2);border-radius:7px;width:42px;height:32px}.attachment-name{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.attachment-remove{width:18px;height:18px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:14px;line-height:1}.attachment-remove:hover{background:var(--danger);color:#fff}.composer-hint{color:var(--muted-2);padding:7px 4px 0;font-size:11px}.composer-hint kbd{background:var(--panel-2);border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--text);box-shadow:0 1px 0 var(--line-strong);border-radius:4px;padding:0 5px;font-size:10.5px;display:inline-block}@media (width<=820px){.composer{padding:8px calc(14px + var(--safe-area-right)) calc(6px + var(--safe-area-bottom)) calc(14px + var(--safe-area-left))}.composer textarea,.reply-composer textarea{font-size:16px}.composer-suggestions{max-height:min(320px,42dvh)}}.thread{background:var(--panel);border-left:1px solid var(--line);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.thread.open{opacity:1;pointer-events:auto;transform:translate(0)}.thread.covered{opacity:0;pointer-events:none}.thread>header{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);align-items:center;gap:10px;min-height:60px;padding:12px 16px;display:flex}.thread>header>div{flex:1;min-width:0}.thread>header p,.thread>header strong{margin:0}.thread>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.thread>header strong{color:var(--text-strong);font-size:14px;display:block}.thread .close{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;font-size:18px;line-height:1}.thread .close:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-back{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.thread .thread-back:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-back:focus-visible,.thread .close:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.thread-scroll{padding:12px 16px;overflow-y:auto}.thread-root{border-bottom:1px solid var(--line);grid-template-columns:38px minmax(0,1fr);gap:12px;padding-bottom:12px;display:grid}.thread-divider{align-items:center;gap:10px;margin:14px 0 10px;display:flex}.thread-divider:before,.thread-divider:after{content:"";background:var(--line);flex:1;height:1px}.thread-divider span{font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.reply-list{flex-direction:column;gap:10px;display:flex}.reply{border-radius:var(--radius-sm);grid-template-columns:30px minmax(0,1fr);gap:10px;padding:6px;display:grid}.reply:hover{background:var(--hover)}.thread .reply-quote-btn,.thread .thread-action-btn{width:26px;height:26px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.thread .reply-quote-btn:hover,.thread .thread-action-btn:hover{background:var(--hover-strong);color:var(--text-strong)}.thread .reply-quote-btn:disabled,.thread .thread-action-btn:disabled{cursor:default;opacity:.45}.thread .thread-action-btn--danger{color:var(--danger)}.thread .thread-action-btn--danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.reply-composer{--composer-card-top:10px;--composer-overlay-inset-x:14px;background:var(--panel);border-top:1px solid var(--line);padding:10px 14px 14px}.reply-composer .composer-row{border-radius:0}.thread-empty{text-align:center;grid-row:span 3;align-content:center;place-items:center;gap:8px;padding:32px 24px;display:grid}.thread-icon{background:var(--panel-2);width:56px;height:56px;color:var(--muted);border-radius:16px;place-items:center;display:grid}.thread-empty strong{color:var(--text-strong);font-size:15px}.thread-empty span{color:var(--muted);max-width:260px;font-size:13px;line-height:1.5}.profile-pane{overflow-y:auto}.profile-hero{background:linear-gradient(180deg, transparent, #0000003d), linear-gradient(135deg, hsl(var(--hue,220deg) 76% 58%), hsl(calc(var(--hue,220deg) + 54deg) 74% 38%));border-bottom:1px solid var(--line);place-items:end center;min-height:210px;padding:28px 20px;display:grid}.profile-avatar{aspect-ratio:1;color:#fff;background:#ffffff2e;border-radius:16px;place-items:center;width:min(240px,70%);font-size:clamp(48px,12vw,88px);font-weight:800;display:grid;overflow:hidden;box-shadow:0 26px 60px -30px #000000e6}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-pane-body{gap:18px;padding:18px 16px 22px;display:grid}.profile-pane-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.profile-pane-title h2{color:var(--text-strong);letter-spacing:0;margin:0;font-size:22px}.profile-pane-title span{color:var(--muted);margin-top:3px;font-size:13px;display:block}.profile-pane-title .bot-badge{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);min-height:20px;color:var(--accent);border-radius:999px;align-items:center;margin-top:6px;padding:0 8px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.text-action{color:var(--accent);background:0 0;border:0;border-radius:6px;padding:4px 6px;font-size:13px;font-weight:700}.text-action:hover{background:var(--accent-soft)}.profile-presence{color:var(--text);align-items:center;gap:8px;font-size:14px;display:inline-flex}.profile-actions-row{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;display:grid}.profile-actions-row .primary-action,.profile-actions-row .ghost-action{border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;width:100%;min-width:0;height:48px;padding:0 16px;font-size:14px;font-weight:800;line-height:1;display:inline-flex}.moderation-actions{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:8px;display:grid}.moderation-actions .primary-action,.moderation-actions .ghost-action,.moderation-actions .danger-action{border-radius:var(--radius);min-height:40px;font-size:13px;font-weight:800}.danger-action{border:1px solid color-mix(in srgb, var(--danger), transparent 35%);background:color-mix(in srgb, var(--danger), transparent 86%);color:var(--danger)}.role-pill{background:var(--panel-2);color:var(--muted);text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.profile-info{border-top:1px solid var(--line);gap:12px;padding-top:18px;display:grid}.profile-info header{justify-content:space-between;align-items:center;gap:10px;display:flex}.profile-info header strong{color:var(--text-strong);font-size:14px}.profile-info-row{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px;min-height:48px;display:grid}.info-icon{background:var(--panel-2);width:48px;height:48px;color:var(--muted);border-radius:12px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.info-icon svg{flex:none;display:block}.profile-info-row>div>small,.profile-info-row>div>span{display:block}.profile-info-row>div>small{color:var(--muted);font-size:12px;line-height:1.2}.profile-info-row>div>span{color:var(--text);overflow-wrap:anywhere;font-size:14px;line-height:1.3}.profile-note{color:var(--muted);margin:0;font-size:13px;line-height:1.5}@media (width<=820px){.thread{min-height:100dvh}.thread>header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.thread-scroll{padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.reply-composer{padding-right:calc(14px + var(--safe-area-right));padding-bottom:calc(14px + var(--safe-area-bottom));padding-left:calc(14px + var(--safe-area-left))}}.artifact-viewer{z-index:2;border-left:1px solid var(--line);background:var(--panel);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.artifact-viewer.open{opacity:1;pointer-events:auto;transform:translate(0)}.artifact-viewer__header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, var(--bg));justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:10px 12px 10px 16px;display:flex}.artifact-viewer__identity{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:5px 10px;min-width:0;display:grid}.artifact-viewer__identity span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:700}.artifact-viewer__identity strong{min-width:0;color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.artifact-viewer__identity small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.artifact-viewer__actions,.artifact-viewer__segmented{align-items:center;gap:4px;display:inline-flex}.artifact-viewer__actions>a,.artifact-viewer__actions>button,.artifact-viewer__segmented button,.artifact-viewer__pdf-toolbar button{border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;padding:0 9px;text-decoration:none;display:inline-grid}.artifact-viewer__office-toolbar button,.artifact-viewer__sheet-tabs button{border-radius:var(--radius-sm);min-height:30px;color:var(--muted);background:0 0;border:1px solid #0000;padding:0 10px;font-size:11px}.artifact-viewer__actions>button{font-size:20px;line-height:1}.artifact-viewer__actions>a:hover,.artifact-viewer__actions>button:hover,.artifact-viewer__segmented button:hover,.artifact-viewer__pdf-toolbar button:hover:not(:disabled){border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__actions :focus-visible,.artifact-viewer__pdf-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:2px}.artifact-viewer__segmented button{min-width:58px;height:28px;font-size:11px;font-weight:650}.artifact-viewer__segmented button.active{border-color:var(--line);background:var(--panel);color:var(--text-strong)}.artifact-viewer__body{background:var(--bg);min-height:0;overflow:auto}.artifact-viewer__state{min-height:100%;color:var(--muted);text-align:center;align-content:center;justify-items:center;gap:10px;padding:32px 24px;display:grid}.artifact-viewer__state strong{color:var(--text-strong);font-size:15px}.artifact-viewer__state p{max-width:34ch;margin:0;font-size:13px;line-height:1.5}.artifact-viewer__state a{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-height:36px;color:var(--text-strong);margin-top:4px;padding:8px 12px;font-size:13px;font-weight:650;text-decoration:none}.artifact-viewer__state--error svg{color:var(--danger)}.artifact-viewer__spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.7s linear infinite artifact-spin}@keyframes artifact-spin{to{transform:rotate(360deg)}}.artifact-viewer__source{background:color-mix(in srgb, var(--bg) 90%, #090b10);width:max-content;min-width:100%;min-height:100%;color:var(--text);font-family:var(--font-mono);tab-size:2;white-space:pre;margin:0;padding:20px;font-size:12px;line-height:1.65}.artifact-viewer__source code{font:inherit}.artifact-viewer__document{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,760px);min-height:calc(100% - 32px);color:var(--text);overflow-wrap:anywhere;margin:16px auto;padding:clamp(24px,5vw,56px);font-size:15px;line-height:1.65}.artifact-viewer__document>:first-child{margin-top:0}.artifact-viewer__document>:last-child{margin-bottom:0}.artifact-viewer__document h1,.artifact-viewer__document h2,.artifact-viewer__document h3{color:var(--text-strong);line-height:1.25}.artifact-viewer__document h1{font-size:28px}.artifact-viewer__document h2{margin-top:1.75em;font-size:21px}.artifact-viewer__document h3{margin-top:1.5em;font-size:17px}.artifact-viewer__document pre{border-radius:var(--radius);background:var(--panel-2);padding:14px;overflow:auto}.artifact-viewer__document code{font-family:var(--font-mono)}.artifact-viewer__document table{border-collapse:collapse;width:100%}.artifact-viewer__document th,.artifact-viewer__document td{border:1px solid var(--line-strong);text-align:left;padding:8px 10px}.artifact-viewer__document img{max-width:100%;height:auto}.artifact-viewer__document a{color:var(--accent)}.artifact-viewer__body.is-pdf{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.artifact-viewer__body.is-office{grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.artifact-viewer__office-toolbar,.artifact-viewer__sheet-tabs{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__office-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__office-toolbar button:hover:not(:disabled),.artifact-viewer__sheet-tabs button:hover,.artifact-viewer__sheet-tabs button.active{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__office-toolbar button:focus-visible,.artifact-viewer__sheet-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__office-toolbar{flex-wrap:wrap}.artifact-viewer__spreadsheet{background:var(--panel);min-height:0;overflow:auto}.artifact-viewer__spreadsheet table{table-layout:fixed;border-spacing:0;border-collapse:separate;width:max-content;color:var(--text);font-size:12px}.artifact-viewer__spreadsheet th,.artifact-viewer__spreadsheet td{box-sizing:border-box;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel);text-align:left;text-overflow:ellipsis;white-space:nowrap;width:160px;min-width:160px;max-width:160px;height:30px;padding:5px 8px;overflow:hidden}.artifact-viewer__spreadsheet thead th{z-index:2;background:var(--panel-2);color:var(--muted);text-align:center;position:sticky;top:0}.artifact-viewer__spreadsheet .row-heading{z-index:1;background:var(--panel-2);width:44px;min-width:44px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;position:sticky;left:0}.artifact-viewer__spreadsheet thead .row-heading{z-index:3}.artifact-viewer__grid-note{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:max-content;max-width:min(480px,100vw - 48px);color:var(--muted);white-space:normal;margin:16px;padding:8px 10px;font-size:12px;line-height:1.45;position:sticky;left:0}.artifact-viewer__sheet-tabs{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-start;overflow-x:auto}.artifact-viewer__sheet-tabs button{flex:none}.artifact-viewer__slide-stage{align-content:center;place-items:center;gap:12px;min-height:0;padding:24px;display:grid;overflow:auto}.artifact-viewer__slide{aspect-ratio:16/9;color:#172033;background:#fff;flex-direction:column;justify-content:safe center;width:min(100%,860px);padding:48px;display:flex;overflow:auto;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__slide h2{letter-spacing:0;margin:0 0 .7em;font-size:36px;line-height:1.15}.artifact-viewer__slide p{margin:.35em 0;font-size:20px;line-height:1.4}.artifact-viewer__office-note{color:var(--muted);margin:0;font-size:12px}@media (width<=640px){.artifact-viewer__slide{padding:28px}.artifact-viewer__slide h2{font-size:24px}.artifact-viewer__slide p{font-size:15px}}.artifact-viewer__pdf-toolbar{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__pdf-toolbar button{min-width:30px;height:30px;font-size:11px}.artifact-viewer__pdf-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__toolbar-divider{background:var(--line);width:1px;height:18px;margin:0 4px}.artifact-viewer__pdf-stage{text-align:center;min-height:0;padding:24px;overflow:auto}.artifact-viewer__pdf-stage canvas{background:#fff;max-width:none;transition:opacity .12s;display:inline-block;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__pdf-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.artifact-viewer__pdf-stage.is-rendering canvas{opacity:.55}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:var(--accent)}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition{color:var(--success)}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:var(--activity-accent)}.hljs-deletion{color:var(--danger)}@media (width<=820px){.artifact-viewer{z-index:40;border-left:0;min-height:100dvh;position:fixed;inset:0}.artifact-viewer__header{min-height:calc(64px + var(--safe-area-top));padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.artifact-viewer__identity small{display:none}.artifact-viewer__document{border:0;border-radius:0;min-height:100%;margin:0}}@media (prefers-reduced-motion:reduce){.artifact-viewer{transition:none}.artifact-viewer__spinner{animation-duration:1.4s}}.modal-scrim{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#05080f8a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-backdrop{background:0 0;border:0;position:absolute;inset:0}.modal-backdrop:focus{outline:0}.profile-modal{z-index:1;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-xl);width:min(480px,100%);box-shadow:var(--key-edge), var(--shadow);animation:.15s ease-out settings-modal-fade;position:relative;overflow:hidden}.profile-modal>header{justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 4px;display:flex}.profile-modal>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin:0 0 4px;font-size:10px;font-weight:600}.profile-modal>header h2{color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}.profile-modal>header>button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:28px;height:28px;color:var(--muted);flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.profile-modal>header>button:hover{background:var(--panel-3);color:var(--text-strong)}.create-modal{width:min(420px,100%)}.profile-form{gap:14px;padding:20px;display:grid}.profile-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);align-items:center;gap:14px;padding:14px;display:flex}.profile-preview strong,.profile-preview span{display:block}.profile-preview strong{color:var(--text-strong);font-size:15px}.profile-preview span{color:var(--muted);font-size:13px}.field{gap:6px;display:grid}.field span{color:var(--muted);font-size:12px;font-weight:700}.field input,.field select{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:100%;height:38px;color:var(--text);padding:0 12px}.field select{cursor:pointer}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.check-field{align-items:center;gap:10px;display:flex}.check-field input{width:16px;height:16px;padding:0}.profile-status{color:var(--success);font-size:12px}.profile-status.error{color:var(--danger)}.profile-actions{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.person-picker{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);gap:4px;max-height:240px;padding:4px;display:grid;overflow-y:auto}.person-choice{border-radius:var(--radius-sm);width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;padding:6px 8px;display:grid}.person-choice:hover{background:var(--hover-strong)}.person-choice .dm-avatar{width:32px;height:32px}.person-choice strong,.person-choice small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.person-choice strong{color:var(--text-strong);font-size:13px}.person-choice small{color:var(--muted);font-size:12px}.person-empty{color:var(--muted);padding:10px 8px;font-size:12px}.profile-actions .ghost-action,.profile-actions .primary-action,.profile-actions .danger-action{box-sizing:border-box;border-radius:var(--radius);white-space:nowrap;min-height:44px;box-shadow:var(--key-edge);flex:none;justify-content:center;align-items:center;padding:0 14px;font-weight:700;line-height:1;transition:background .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.ghost-action{border:1px solid var(--line-strong);background:var(--panel);color:var(--text)}.primary-action{border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));background:var(--accent);color:var(--accent-contrast)}.profile-actions .danger-action{border:1px solid color-mix(in srgb, var(--danger) 76%, var(--text-strong));background:var(--danger);color:#fff}.ghost-action:hover{background:var(--hover)}.primary-action:hover{background:var(--accent-hover)}.profile-actions .danger-action:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 86%, #000)}.profile-actions .ghost-action:disabled,.profile-actions .primary-action:disabled,.profile-actions .danger-action:disabled{cursor:default;opacity:.58}.profile-actions .ghost-action:active,.profile-actions .primary-action:active,.profile-actions .danger-action:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.delete-message-scrim{padding:20px}.delete-message-modal{width:min(520px,100%)}.delete-message-modal>header{padding-bottom:10px}.delete-message-content{gap:18px;padding:4px 20px 20px;display:grid}.delete-message-content>p{color:var(--text);margin:0;font-size:14px;line-height:1.5}.delete-message-preview{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);grid-template-columns:36px minmax(0,1fr);align-items:start;gap:12px;padding:14px;display:grid}.delete-message-preview__content{min-width:0}.delete-message-preview>.avatar{border-radius:9px;width:36px;height:36px;margin:0}.delete-message-preview__meta{align-items:baseline;gap:8px;min-width:0;display:flex}.delete-message-preview__meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.delete-message-preview__meta time{color:var(--muted);flex:none;font-size:11px}.delete-message-preview__body{max-height:128px;color:var(--text);overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px;font-size:14px;line-height:1.45;overflow:auto}.delete-message-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:0;display:grid}.delete-message-actions button{width:100%}@media (width<=520px){.delete-message-modal{width:100%}.delete-message-content,.delete-message-modal>header{padding-inline:16px}}.image-viewer-scrim{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#000000c7;padding:28px}.image-viewer{z-index:1;color:#fff;background:#07090f;border-radius:14px;grid-template-rows:auto minmax(0,1fr);width:min(1120px,100%);max-height:min(86vh,900px);animation:.15s cubic-bezier(.2,.8,.2,1) picker-in;display:grid;position:relative;overflow:hidden;box-shadow:0 34px 90px -34px #000000f2}.image-viewer>header{background:#ffffff0a;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:16px;min-height:52px;padding:10px 12px 10px 16px;display:flex}.image-viewer>header strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.image-viewer>header div{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.image-viewer>header a{color:#fff;background:#ffffff14;border-radius:7px;align-items:center;height:30px;padding:0 10px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.image-viewer>header a:hover{background:#ffffff24}.image-viewer>header button{color:#ffffffc7;background:0 0;border:0;border-radius:7px;place-items:center;width:30px;height:30px;font-size:22px;line-height:1;display:grid}.image-viewer>header button:hover{color:#fff;background:#ffffff1f}.image-viewer-stage{place-items:center;min-height:0;padding:18px;display:grid}.image-viewer-stage img{object-fit:contain;background:#ffffff0a;border-radius:8px;max-width:100%;max-height:calc(86vh - 96px);display:block}.mobile-nav-toggle{top:calc(14px + var(--safe-area-top));left:calc(14px + var(--safe-area-left));z-index:30;border:1px solid var(--line-strong);background:var(--panel);width:38px;height:38px;color:var(--text);border-radius:10px;font-size:22px;line-height:1;display:none;position:fixed}.mobile-nav-toggle .bars{gap:3px;display:grid}.mobile-nav-toggle .bars i{background:currentColor;border-radius:2px;width:16px;height:2px;display:block}.mobile-nav-backdrop{display:none}@media (width<=1180px){.shell{grid-template-columns:72px 240px minmax(0,1fr)}.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr)}.thread,.search-results{width:min(420px,100vw);box-shadow:var(--shadow);z-index:4;border-left:1px solid var(--line-strong);transition:transform .18s;position:fixed;inset:0 0 0 auto;transform:translate(100%)}.thread.open,.search-results{transform:translate(0)}.desktop-shell .thread,.desktop-shell .search-results{top:52px;bottom:0}}@media (width<=820px){.mobile-nav-toggle{place-items:center;display:grid}.shell,.shell.thread-open,.shell.search-open,.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:1fr}.sidebar-collapsed .sidebar{opacity:1;pointer-events:none;transform:translate(calc(-100% - 72px))}.guild-rail,.sidebar{z-index:20;pointer-events:none;height:100dvh;transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.guild-rail{width:72px;padding-top:calc(14px + var(--safe-area-top));padding-bottom:calc(14px + var(--safe-area-bottom))}.sidebar{width:min(260px,100vw - 72px);left:72px;transform:translate(calc(-100% - 72px))}.nav-open .guild-rail,.nav-open .sidebar{pointer-events:auto;transform:translate(0,0)}.nav-open .guild-rail{padding-top:calc(62px + var(--safe-area-top))}.desktop-shell .guild-rail,.desktop-shell .sidebar{height:calc(100dvh - 52px);top:52px}.desktop-shell.nav-open .guild-rail{padding-top:calc(14px + var(--safe-area-top))}.desktop-shell .mobile-nav-backdrop{top:52px}.mobile-nav-backdrop{z-index:15;background:#05081075;border:0;padding:0;display:block;position:fixed;inset:0 0 0 min(332px,100vw)}.topbar{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(20px + var(--safe-area-right));padding-left:calc(64px + var(--safe-area-left))}.search{width:180px}}@media (width<=520px){.search,.topbar-meta,.topbar-divider{display:none}}.message-row.highlight,.thread-root.highlight,.reply.highlight{animation:1.4s ease-out quote-flash}@keyframes quote-flash{0%{background:color-mix(in srgb, var(--accent) 22%, transparent)}to{background:0 0}}.quote-block{color:inherit;cursor:pointer;text-align:left;max-width:100%;font:inherit;background:0 0;border:0;border-radius:6px;align-items:stretch;gap:.5rem;margin:0 0 .35rem;padding:.25rem .5rem .25rem 0;display:inline-flex}.quote-block:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 8%, transparent)}.quote-block:disabled{cursor:default;opacity:.75}.quote-block .quote-bar{background:var(--accent);border-radius:2px;flex:0 0 3px;align-self:stretch;width:3px}.quote-block .quote-content{flex-direction:column;gap:.1rem;min-width:0;display:flex}.quote-block .quote-author{color:var(--accent);font-size:.78rem;font-weight:600}.quote-block .quote-snippet{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:56ch;font-size:.85rem;overflow:hidden}.quote-block .quote-snippet.muted{opacity:.75;font-style:italic}.quote-preview{background:color-mix(in srgb, var(--accent) 5%, transparent);border:0;border-bottom:1px solid var(--line);color:var(--muted);border-radius:0;align-items:center;gap:.5rem;margin:0;padding:6px 10px 6px 12px;font-size:12.5px;display:flex}.quote-preview .quote-bar{display:none}.quote-preview-body{flex:1;align-items:baseline;gap:.4rem;min-width:0;display:flex;overflow:hidden}.quote-preview-label{color:color-mix(in srgb, var(--accent) 85%, var(--text));white-space:nowrap;font-size:12px}.quote-preview-label strong{color:var(--text-strong);font-weight:600}.quote-preview-snippet{white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;min-width:0;font-size:12px;overflow:hidden}.quote-preview-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:16px;line-height:1;transition:background .1s,color .1s}.quote-preview-clear:hover{color:var(--text-strong);background:var(--hover-strong)}.reply-quote-btn{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;margin-left:auto;padding:0 .3rem;font-size:.95rem;transition:opacity .15s;position:relative}.reply:hover .reply-quote-btn,.thread-root:hover .reply-quote-btn,.reply-quote-btn:focus-visible{opacity:1}.reply-quote-btn:hover{color:var(--accent)}.tooltip{position:relative}.tooltip:before,.reply-quote-btn:before{content:attr(data-tooltip);z-index:20;background:var(--tooltip-bg);color:var(--tooltip-fg);white-space:nowrap;opacity:0;pointer-events:none;border-radius:9px;padding:.42rem .62rem;font-size:.78rem;font-weight:700;line-height:1;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,4px)scale(.96);box-shadow:0 10px 28px #00000047}.tooltip:after,.reply-quote-btn:after{content:"";z-index:20;background:var(--tooltip-bg);opacity:0;pointer-events:none;border-radius:2px;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%,4px)rotate(45deg)scale(.9)}.tooltip:hover:before,.tooltip:focus-visible:before,.reply-quote-btn:hover:before,.reply-quote-btn:focus-visible:before,.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{opacity:1;transform:translate(-50%)scale(1)}.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{transform:translate(-50%)rotate(45deg)scale(1)}.settings-modal-scrim{z-index:1000;color:var(--text);-webkit-font-smoothing:antialiased;background:var(--lightningcss-light,#080a0e6b)var(--lightningcss-dark,#0000008c);place-items:center;font-size:14px;line-height:1.5;animation:.15s ease-out settings-modal-fade;display:grid;position:fixed;inset:0}@keyframes settings-modal-fade{0%{opacity:0}to{opacity:1}}.settings-modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(1100px,96vw);height:min(760px,92vh);box-shadow:var(--shadow);grid-template-columns:232px minmax(0,1fr);display:grid;position:relative;overflow:hidden}.settings-modal__close{z-index:6;width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;place-items:center;transition:background .12s,color .12s;display:grid;position:absolute;top:14px;right:14px}.settings-modal__close:hover{background:var(--hover);color:var(--text-strong)}.settings-modal__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:16px 10px;display:flex;overflow-y:auto}.settings-modal__rail-group+.settings-modal__rail-group{margin-top:14px}.settings-modal__rail-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0;padding:6px 8px 4px;font-size:10px;font-weight:600}.settings-modal__rail ul{margin:0;padding:0;list-style:none}.settings-modal__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:13.5px;line-height:1.4;transition:background .1s,color .1s;display:flex}.settings-modal__rail-item:hover{background:var(--hover)}.settings-modal__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.settings-modal__rail-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.settings-modal__rail-icon svg{width:16px;height:16px;display:block}.settings-modal__rail-item.is-active .settings-modal__rail-icon{color:var(--text-strong)}.settings-modal__rail-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:4px;flex-shrink:0;place-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:grid;overflow:hidden}.settings-modal__rail-avatar img{object-fit:cover;width:100%;height:100%;display:block}.settings-modal__rail-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.settings-modal__content{background:var(--panel);color:var(--text);padding:40px 56px 56px;overflow-y:auto}.settings-modal__content .settings-page__header{margin-bottom:32px}.settings-modal__content .settings-page__eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 6px;font-size:10px;font-weight:600}.settings-modal__content .settings-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:26px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 6px}.settings-modal__content .settings-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.settings-modal__content .settings-form{flex-direction:column;gap:24px;max-width:640px;display:flex}.settings-modal__content .settings-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:20px;display:flex}.settings-modal__content .settings-footer__spacer{flex:1}.settings-modal__content .settings-section{flex-direction:column;gap:20px;display:flex}.settings-modal__content .settings-section__h{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:600}.settings-modal__content .settings-field{flex-direction:column;gap:6px;display:flex}.settings-modal__content .settings-field__label{color:var(--text-strong);font-size:13px;font-weight:600}.settings-modal__content .settings-field__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-field__hint.is-error{color:var(--danger)}.settings-modal__content .settings-identity{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:14px;padding:14px 16px;display:flex}.settings-modal__content .settings-identity__meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.settings-modal__content .settings-identity__name{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;line-height:1.25;overflow:hidden}.settings-modal__content .settings-identity__handle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.3;overflow:hidden}.settings-modal__content .settings-identity__tag{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:600}.settings-modal__content .settings-rows{flex-direction:column;display:flex}.settings-modal__content .settings-rows--sectioned .settings-row2{border-top:0;align-items:center;padding:12px 0}.settings-modal__content .settings-row2{border-top:1px solid var(--line);grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:32px;padding:20px 0;display:grid}.settings-modal__content .settings-row2--toggle{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px}.settings-modal__content .settings-row2:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-row2__desc{min-width:0}.settings-modal__content .settings-row2__label{color:var(--text-strong);margin-bottom:4px;font-size:13.5px;font-weight:600;display:block}.settings-modal__content .settings-row2__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row2__control{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;max-width:380px;display:flex}.settings-modal__content .settings-row2__control--end{flex-direction:row;justify-content:center;align-items:flex-end;max-width:none}.settings-modal__content .settings-rows__head{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;padding:24px 0 12px;font-size:11px;font-weight:600}.settings-modal__content .settings-rows__head:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-rows__head+.settings-row2{border-top:0;padding-top:0}.settings-modal__content .settings-input-group{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:stretch;width:100%;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.settings-modal__content .settings-input-group:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input-group:focus-within{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}.settings-modal__content .settings-input-group__prefix{color:var(--muted);border-right:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius-sm) 0 0 var(--radius-sm);place-items:center;padding:0 10px;font-size:14px;font-weight:500;display:grid}.settings-modal__content .settings-input--in-group{box-shadow:none!important;border-radius:0 var(--radius-sm) var(--radius-sm) 0!important;background:0 0!important;border:0!important;max-width:none!important}.settings-modal__content .settings-input--in-group:focus{box-shadow:none!important;background:0 0!important;border:0!important}.settings-modal__content .settings-linklike{color:var(--muted);cursor:pointer;font:inherit;text-underline-offset:2px;background:0 0;border:0;padding:2px 0;font-size:12.5px;text-decoration:underline;transition:color .12s}.settings-modal__content .settings-linklike:hover{color:var(--text-strong)}.settings-modal__content .settings-row{grid-template-columns:1fr auto;align-items:center;gap:24px;display:grid}.settings-modal__content .settings-row__main{min-width:0}.settings-modal__content .settings-row__label{color:var(--text-strong);margin-bottom:2px;font-size:13.5px;font-weight:600}.settings-modal__content .settings-row__hint{color:var(--muted);font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row__hint.is-error{color:var(--danger)}.settings-modal__content .settings-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;max-width:420px;height:36px;color:var(--text);font:inherit;padding:0 12px;font-size:14px;transition:border-color .12s,box-shadow .12s,background .12s}.settings-modal__content .settings-input:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-input--wide{max-width:560px}.settings-modal__content .settings-row .settings-input{width:auto;min-width:240px;max-width:320px}.settings-modal__content .settings-button{background:var(--panel-2);height:34px;color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .1s,border-color .1s,box-shadow 80ms,transform 80ms;display:inline-flex}.settings-modal__content .settings-button:hover{background:var(--panel-3);border-color:var(--line-strong)}.settings-modal__content .settings-button:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.settings-modal__content .settings-button:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-button:disabled{opacity:.55;cursor:not-allowed}.settings-modal__content .settings-button--primary{background:var(--accent);color:var(--accent-contrast);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong))}.settings-modal__content .settings-button--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.settings-modal__content .settings-switch{appearance:none;background:var(--line-strong);cursor:pointer;border:0;border-radius:9px;flex-shrink:0;width:32px;height:18px;margin:0;transition:background .15s;position:relative}.settings-modal__content .settings-switch:checked{background:var(--accent)}.settings-modal__content .settings-switch:disabled{opacity:.5;cursor:not-allowed}.settings-modal__content .settings-switch:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.settings-modal__content .settings-switch:checked:after{transform:translate(14px)}.settings-modal__content .settings-switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-actions{justify-content:flex-end;align-items:center;gap:12px;margin-top:4px;display:flex}.settings-modal__content .settings-status{color:var(--muted);margin:0;font-size:13px}.settings-modal__content .settings-status.is-error{color:var(--danger)}@media (width<=720px){.settings-modal{border-radius:0;grid-template-rows:auto 1fr;grid-template-columns:1fr;width:100vw;height:100dvh}.settings-modal__rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:8px;overflow-x:auto}.settings-modal__content{padding:24px 20px 60px}.settings-modal__content .settings-row2{grid-template-columns:1fr;gap:10px}.settings-modal__content .settings-row2__control{max-width:none}}.ws-settings{color:var(--text);z-index:50;background:var(--lightningcss-light,#0f0f0f38)var(--lightningcss-dark,#00000059);place-items:center;padding:28px 80px 28px 28px;font-size:14px;line-height:1.5;display:grid;position:fixed;inset:0}.ws-settings__panel{background:var(--panel);border:1px solid var(--line);width:100%;max-width:1400px;height:100%;box-shadow:var(--shadow);grid-template-columns:260px minmax(0,1fr);display:grid;overflow:hidden}.ws-settings__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:14px 10px 18px;display:flex;overflow-y:auto}.ws-settings__rail-search{margin:2px 4px 12px;position:relative}.ws-settings__rail-search-icon{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.ws-settings__rail-search-icon svg{width:14px;height:14px;display:block}.ws-settings__rail-search-input{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:32px;color:var(--text);font:inherit;padding:0 12px 0 32px;font-size:13px}.ws-settings__rail-search-input::placeholder{color:var(--muted)}.ws-settings__rail-search-input:disabled{cursor:not-allowed;opacity:.65}.ws-settings__rail-group{margin-top:6px}.ws-settings__rail-heading{color:var(--muted);letter-spacing:.02em;margin:0;padding:8px 10px 6px;font-size:11.5px;font-weight:600}.ws-settings__rail-heading-name{color:var(--text-strong);font-weight:700}.ws-settings__rail-list{margin:0;padding:0;list-style:none}.ws-settings__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:14px;line-height:1.4;transition:background .1s,color .1s;display:flex}.ws-settings__rail-item:hover{background:var(--hover)}.ws-settings__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.ws-settings__rail-item-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.ws-settings__rail-item-icon svg{width:16px;height:16px;display:block}.ws-settings__rail-item.is-active .ws-settings__rail-item-icon{color:var(--text-strong)}.ws-settings__rail-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ws-settings__content{background:var(--bg);position:relative;overflow-y:auto}.ws-settings__content-inner{max-width:740px;padding:56px 80px 80px}.ws-settings__close{border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;color:var(--text-strong);cursor:pointer;z-index:60;border-radius:50%;place-items:center;transition:background .12s,color .12s,border-color .12s;display:grid;position:fixed;top:28px;right:22px;box-shadow:0 1px 3px #00000026}@media (width<=760px){.ws-settings{padding:0}.ws-settings__panel{border:0;border-radius:0;max-width:none}}.ws-settings__close:hover{background:var(--panel-2);color:var(--text-strong);border-color:var(--line-strong)}.ws-settings__error{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--danger);margin:0 0 20px;padding:14px 16px;font-size:13.5px}.ws-settings .ws-page__header{margin-bottom:32px}.ws-settings .ws-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:28px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 8px}.ws-settings .ws-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.workspace-settings-empty{background:var(--panel-2);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);padding:24px;font-size:14px;line-height:1.6}.workspace-settings-empty p{margin:0}.ws-section{border-top:1px solid var(--line);flex-direction:column;margin-top:24px;display:flex}.ws-section__h{color:var(--text-strong);margin:0;padding:18px 0 6px;font-size:14px;font-weight:700}.ws-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;display:grid}.ws-section>.ws-row:first-child,.ws-section>.ws-section__h+.ws-row{border-top:0}.ws-row__main{min-width:0}.ws-row__label{color:var(--text-strong);margin-bottom:4px;font-size:14px;font-weight:600}.ws-row__hint{color:var(--muted);font-size:13px;line-height:1.5}.ws-row__hint b{color:var(--text-strong);font-weight:600}.ws-row__value{color:var(--text-strong);text-align:right;word-break:break-word;max-width:320px;font-size:14px;font-weight:500}.ws-row__control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;max-width:420px;display:flex}.ws-strip{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;font-size:14px;display:flex}.ws-strip__avatar{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:28px;height:28px;color:var(--brand-contrast);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid;overflow:hidden}.ws-strip__avatar img{object-fit:cover;width:100%;height:100%;display:block}.ws-strip__name{color:var(--text-strong);font-weight:600}.ws-strip__pill{letter-spacing:.01em;border-radius:999px;margin-left:auto;padding:2px 10px;font-size:12px;font-weight:600}.ws-strip__pill--owner{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 32%, transparent)}.ws-strip__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 15%, transparent);color:var(--delivery-accent);border:1px solid color-mix(in srgb, var(--delivery-accent) 32%, transparent)}.ws-strip__pill--member,.ws-strip__pill--guest,.ws-strip__pill--bot{background:var(--panel-3,var(--hover));color:var(--text);border:1px solid var(--line)}.ws-input{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 12px;font-size:14px}.ws-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-input:disabled{opacity:.65;cursor:not-allowed}.ws-select{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 34px 0 10px;font-size:13.5px}.ws-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-select:disabled{opacity:.65;cursor:not-allowed}.ws-file{display:none}.ws-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:12px;padding:14px 0 0;display:flex}.ws-status{min-height:20px;color:var(--muted);flex:1;margin:0;font-size:13px}.ws-status.is-error{color:var(--danger)}.ws-input[readonly]{cursor:default;color:var(--text)}.ws-btn{background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius);height:34px;color:var(--text-strong);font:inherit;cursor:pointer;box-shadow:var(--key-edge);padding:0 14px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s,border-color .12s,box-shadow 80ms,transform 80ms}.ws-btn:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.ws-btn:hover:not(:disabled){background:var(--panel-3,var(--hover-strong));border-color:var(--line-strong)}.ws-btn:disabled{opacity:.55;cursor:not-allowed}.ws-btn--danger{color:var(--danger);border-color:var(--line)}.ws-btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 9%, transparent);border-color:var(--danger)}.ws-btn--primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast);align-items:center;gap:6px;display:inline-flex}.ws-btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ws-btn--primary svg{width:14px;height:14px}.ws-settings__content:has(.ws-members-page){overflow:hidden}.ws-settings__content-inner:has(.ws-members-page){flex-direction:column;max-width:none;height:100%;min-height:0;padding:56px 80px 28px;display:flex}.ws-members-page{flex-direction:column;flex:1;min-height:0;display:flex}.ws-members-page__header{flex:none}.ws-members__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-members__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-members__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-members__search{align-items:center;display:flex;position:relative}.ws-members__search-icon{width:14px;height:14px;color:var(--muted);pointer-events:none;display:inline-flex;position:absolute;left:10px}.ws-members__search-icon svg{width:100%;height:100%}.ws-members__search-input{width:220px;height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px 0 32px;font-size:13px}.ws-members__search-input::-webkit-search-cancel-button{appearance:none}.ws-members__search-input:focus{border-color:var(--accent)}.ws-members__role-select{height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;outline:none;padding:0 28px 0 10px;font-size:13px}.ws-members__list{border:1px solid var(--line);background:var(--panel);border-radius:6px;flex:auto;min-height:0;overflow:hidden auto}.ws-members__row{border-bottom:1px solid var(--line);box-sizing:border-box;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:0 16px;display:grid}.ws-members__avatar{letter-spacing:-.02em;background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex;overflow:hidden}.ws-members__avatar--bot{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__avatar img{object-fit:cover;width:100%;height:100%}.ws-members__main{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-members__name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-members__meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-members__handle{font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px}.ws-members__dot{opacity:.6}.ws-members__pill{text-transform:capitalize;color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-members__pill--owner{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.ws-members__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-members__pill--bot{background:var(--accent-soft);color:var(--accent)}.ws-members__pill--guest{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__actions{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.ws-members__actions:hover:not(:disabled){background:var(--bg);border-color:var(--line);color:var(--text)}.ws-members__actions:disabled{opacity:.45;cursor:not-allowed}.ws-members__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--panel);border-radius:8px;margin-top:24px;padding:36px 20px;font-size:13.5px}.ws-members__loading{color:var(--muted);text-align:center;border-top:1px solid var(--line);padding:10px 16px;font-size:12.5px}.ws-members__row--skeleton{height:64px}.ws-members__skeleton{background:linear-gradient(90deg,#7f7f7f14,#7f7f7f2e,#7f7f7f14) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite ws-members-shimmer}.ws-members__skeleton--line{height:10px;margin:4px 0}.ws-members__skeleton--pill{border-radius:999px;width:64px;height:18px}@keyframes ws-members-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=760px){.ws-settings__panel{grid-template-rows:auto 1fr;grid-template-columns:1fr}.ws-settings__rail{border-right:0;border-bottom:1px solid var(--line);padding:10px}.ws-settings__content-inner{padding:32px 20px 60px}.ws-settings__close{top:10px;right:12px}}.ws-bots-page{flex-direction:column;gap:0;display:flex}.ws-bots__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-bots__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-bots__toolbar-actions{align-items:center;gap:8px;display:flex}.ws-bots__panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:8px 0 16px;padding:18px 20px}.ws-bots__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--surface);border-radius:8px;margin-top:16px;padding:36px 20px;font-size:13.5px}.ws-bots__list{flex-direction:column;margin-bottom:60px;display:flex}.ws-bots__row{border-bottom:1px solid var(--line)}.ws-bots__row:last-child{border-bottom:0}.ws-bots__row.is-expanded{background:var(--surface)}.ws-bots__row-main{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.ws-bots__row-main:hover{background:var(--hover,#7f7f7f0f)}.ws-bots__row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__row-name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-bots__row-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-bots__owner-pill{color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-bots__owner-pill--service{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-bots__owner-pill--user{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-bots__chevron{width:20px;height:20px;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.ws-bots__detail{border-top:1px dashed var(--line);flex-direction:column;gap:12px;padding:4px 16px 18px;display:flex}.ws-bots__detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-top:14px;display:flex}.ws-bots__detail-title{color:var(--text-strong,var(--text));margin:0 0 4px;font-size:13.5px;font-weight:600}.ws-bots__detail-hint{color:var(--muted);max-width:60ch;margin:0;font-size:12.5px}.ws-bots__detail-actions{flex-wrap:wrap;gap:8px;display:flex}.ws-bots__detail-empty{color:var(--muted);background:var(--bg);border:1px dashed var(--line);border-radius:6px;margin:0;padding:16px;font-size:13px}.ws-bots__token-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ws-bots__token-row{background:var(--bg);border:1px solid var(--line);border-radius:6px;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.ws-bots__token-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-bots__token-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__token-meta{color:var(--muted);font-size:12.5px}.ws-bots__scope-row{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.ws-bots__scope-chip{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:2px 8px;font-size:11.5px}.ws-bots__form{flex-direction:column;gap:16px;display:flex}.ws-bots__form-header{flex-direction:column;gap:4px;display:flex}.ws-bots__form-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__form-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.ws-bots__form-grid{grid-template-columns:1fr}}.ws-bots__form-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.ws-bots__form-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__form-input{height:34px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px;font-size:13.5px}.ws-bots__form-input:focus{border-color:var(--accent)}.ws-bots__form-handle{background:var(--surface);border:1px solid var(--line);border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.ws-bots__form-handle span{color:var(--muted);font-family:var(--font-mono);font-size:13px}.ws-bots__form-handle .ws-bots__form-input{background:0 0;border:0;flex:1;padding-left:0}.ws-bots__choices{flex-direction:column;gap:8px;display:flex}.ws-bots__choice{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:18px 1fr;gap:2px 10px;padding:10px 12px;display:grid}.ws-bots__choice.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.ws-bots__choice input{accent-color:var(--accent);grid-row:1/span 2;align-self:center}.ws-bots__choice-title{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__choice-hint{color:var(--muted);font-size:12.5px}.ws-bots__form-error{background:color-mix(in srgb, var(--danger) 9%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.ws-bots__form-actions{justify-content:flex-end;gap:8px;display:flex}.ws-bots__token-form-panel{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:14px}.ws-bots__token-form .ws-bots__choices{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=720px){.ws-bots__token-form .ws-bots__choices{grid-template-columns:1fr}}.ws-bots__reveal{background:var(--surface);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:14px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-bots__reveal-header{flex-direction:column;gap:4px;display:flex}.ws-bots__reveal-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__reveal-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__reveal-hint code{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:12px}.ws-bots__reveal-field{flex-direction:column;gap:6px;display:flex}.ws-bots__reveal-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__reveal-row{align-items:center;gap:8px;display:flex}.ws-bots__reveal-input{height:34px;font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;flex:1;padding:0 12px;font-size:13px}.ws-bots__reveal-snippet-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.ws-bots__reveal-details{border:1px solid var(--line);background:var(--bg);border-radius:6px}.ws-bots__reveal-summary{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;padding:10px 14px;font-size:11px;font-weight:600}.ws-bots__reveal-summary:hover{color:var(--text)}.ws-bots__reveal-details-body{gap:8px;padding:0 14px 12px;display:grid}.ws-bots__reveal-details-body .ws-bots__reveal-hint{margin:0}.ws-bots__setup-mode{background:var(--bg);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));width:min(320px,100%);padding:3px;display:inline-grid}.ws-bots__setup-mode button{min-height:30px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 12px;font-size:12.5px;font-weight:600}.ws-bots__setup-mode button.is-active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--line)}.ws-bots__reveal-snippet{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:pre-wrap;border-radius:6px;margin:0;padding:12px 14px;font-size:12.5px;overflow-x:auto}.ws-bots__reveal-ack{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.ws-bots__reveal-actions{justify-content:flex-end;display:flex}.ws-bots__my-list{flex-direction:column;gap:18px;display:flex}.ws-bots__my-group{flex-direction:column;gap:8px;display:flex}.ws-bots__my-group-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-bots__my-group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:13px;font-weight:600}.ws-bots__my-rows{border:1px solid var(--line);background:var(--surface);border-radius:6px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-bots__my-row{border-bottom:1px solid var(--line);grid-template-columns:36px 1fr auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.ws-bots__my-row:last-child{border-bottom:0}.ws-bots__my-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__my-row-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-bots__my-row-meta{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.appearance-modes{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:460px;display:grid}.appearance-mode{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);min-height:40px;color:var(--text);box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.appearance-mode:hover{background:var(--panel-3)}.appearance-mode:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.appearance-mode.is-active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.appearance-mode__icon{place-items:center;width:16px;height:16px;display:grid}.appearance-mode__icon svg{width:16px;height:16px;display:block}.board-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:640px;display:grid}.board-swatch{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--panel);color:var(--text);text-align:left;box-shadow:var(--key-edge);gap:10px;padding:12px;transition:border-color .12s,box-shadow 80ms,transform 80ms;display:grid}.board-swatch:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line-strong))}.board-swatch:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.board-swatch.is-active{border-color:color-mix(in srgb, var(--accent) 70%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.board-swatch__preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);grid-template-columns:18px minmax(0,1fr);height:64px;display:grid;overflow:hidden}.board-swatch__rail{background:var(--rail);border-right:1px solid var(--line)}.board-swatch__body{position:relative}.board-swatch__key{background:var(--accent);width:22px;height:14px;box-shadow:0 1.5px 0 color-mix(in srgb, var(--text-strong) 25%, transparent);border-radius:4px;position:absolute;top:10px;left:10px}.board-swatch__bubble{border:1px solid var(--line-strong);background:var(--panel);border-radius:6px;height:22px;position:absolute;bottom:10px;left:40px;right:10px}.board-swatch__meta{gap:2px;display:grid}.board-swatch__meta strong{color:var(--text-strong);font-size:13.5px;font-family:var(--font-display);font-weight:650}.board-swatch__meta span{color:var(--muted);font-size:12px}.message-layout-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:640px;display:grid}.message-layout-option{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--panel);min-height:92px;color:var(--text);text-align:left;box-shadow:var(--key-edge);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:12px;padding:12px;transition:border-color .12s,box-shadow 80ms,transform 80ms;display:grid}.message-layout-option:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line-strong))}.message-layout-option:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.message-layout-option:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.message-layout-option.is-active{border-color:color-mix(in srgb, var(--accent) 70%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.message-layout-option__preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);align-content:center;gap:3px;height:66px;padding:9px;display:grid}.message-layout-option__activity,.message-layout-option__answer{background:var(--panel-2);justify-self:start;width:86%;display:block}.message-layout-option__activity{background:color-mix(in srgb, var(--activity-accent) 18%, var(--panel-2));height:16px}.message-layout-option__answer{background:var(--delivery-accent-soft);height:24px}.message-layout-option__preview[data-layout=standard] .message-layout-option__activity{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, var(--line));border-bottom:0;border-radius:6px 6px 0 0}.message-layout-option__preview[data-layout=standard] .message-layout-option__answer{border:1px solid color-mix(in srgb, var(--delivery-accent) 24%, var(--line));border-top:0;border-radius:0 0 6px 6px}.message-layout-option__preview[data-layout=outlined] .message-layout-option__activity,.message-layout-option__preview[data-layout=outlined] .message-layout-option__answer{width:100%}.message-layout-option__preview[data-layout=outlined] .message-layout-option__activity{border:1px solid color-mix(in srgb, var(--activity-accent) 42%, var(--line));border-radius:6px 6px 0 0}.message-layout-option__preview[data-layout=outlined] .message-layout-option__answer{border:1px solid color-mix(in srgb, var(--delivery-accent) 36%, var(--line));border-radius:0 0 6px 6px;margin-top:-4px}.message-layout-option__meta{gap:4px;min-width:0;display:grid}.message-layout-option__meta strong{color:var(--text-strong);font-family:var(--font-display);font-size:13.5px;font-weight:650}.message-layout-option__meta span{color:var(--muted);font-size:12px;line-height:1.35}@media (width<=640px){.appearance-modes,.board-grid,.message-layout-grid{grid-template-columns:1fr}.message-layout-option{grid-template-columns:92px minmax(0,1fr)}}.ws-intg-page{padding-bottom:60px}.ws-intg__app-icon{background:var(--surface);border:1px solid var(--line);width:36px;height:36px;color:var(--text);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ws-intg__wizard{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:16px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-intg__wizard-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__wizard-step{color:var(--muted);white-space:nowrap;padding-top:2px;font-size:11.5px;font-weight:600}.ws-intg__wizard-body{flex-direction:column;gap:14px;display:flex}.ws-intg__catalog{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.ws-intg__catalog-card{border:1px solid var(--line);text-align:left;cursor:pointer;color:inherit;background:0 0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;transition:border-color .12s,background .12s;display:flex}.ws-intg__catalog-card:hover{border-color:var(--accent);background:var(--hover,#7f7f7f0f)}.ws-intg__catalog-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-intg__catalog-desc{color:var(--muted);font-size:12.5px;line-height:1.45}.ws-intg__chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ws-intg__chip{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;display:inline-flex}.ws-intg__chip-remove{width:16px;height:16px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.ws-intg__chip-remove:hover{color:var(--text);background:#7f7f7f2e}.ws-intg__member-results{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:2px;max-height:220px;margin:6px 0 0;padding:4px;list-style:none;display:flex;overflow-y:auto}.ws-intg__member-result{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.ws-intg__member-result:hover{background:var(--hover,#7f7f7f14)}.ws-intg__toggle{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.ws-intg__toggle input[type=checkbox]{flex-shrink:0;margin-top:3px}.ws-intg__toggle>span{flex-direction:column;gap:2px;display:flex}.ws-intg__panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__panel-title{color:var(--text-strong,var(--text));margin:0 0 3px;font-size:13px;font-weight:600}.ws-intg__panel-hint{color:var(--muted);max-width:560px;margin:0;font-size:12.5px;line-height:1.45}.ws-intg__panel-empty{color:var(--muted);margin:0;font-size:12.5px}.ws-intg__inline-form{border:1px dashed var(--line);border-radius:8px;flex-direction:column;gap:12px;padding:14px;display:flex}.ws-intg__item-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-intg__item-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding:11px 0;display:flex}.ws-intg__item-row:last-child{border-bottom:0}.ws-intg__item-row--stacked{flex-direction:column;align-items:stretch}.ws-intg__item-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.ws-intg__item-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-intg__item-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-intg__item-meta{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.ws-intg__url{font-family:var(--mono,ui-monospace, monospace);font-size:11.5px}.ws-intg__item-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ws-intg__type-chips{flex-wrap:wrap;gap:5px;display:flex}.ws-intg__secret{border:1px solid color-mix(in srgb, var(--warn) 45%, var(--line));background:color-mix(in srgb, var(--warn) 7%, transparent);border-radius:8px;flex-direction:column;gap:6px;margin-top:6px;padding:10px 12px;display:flex}.ws-intg__secret-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.ws-intg__secret-row{align-items:center;gap:8px;display:flex}.ws-intg__secret-row .ws-bots__reveal-input{flex:1;min-width:0}.ws-intg__confirm{border:1px solid color-mix(in srgb, var(--danger,#d33) 40%, var(--line));background:color-mix(in srgb, var(--danger,#d33) 6%, transparent);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__confirm-text{color:var(--text);margin:0;font-size:13px;line-height:1.5}.ws-intg__event-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;margin-top:10px;display:grid}.ws-intg__event-option{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.ws-intg__event-option.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.ws-intg__deliveries{border-top:1px dashed var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.ws-intg__deliveries-scroll{border:1px solid var(--line);border-radius:8px;max-height:420px;overflow-y:auto}.ws-intg__delivery{border-bottom:1px solid var(--line)}.ws-intg__delivery:last-child{border-bottom:0}.ws-intg__delivery-row{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:84px 1fr auto auto;align-items:center;gap:12px;padding:10px 12px;font-size:12.5px;display:grid}.ws-intg__delivery-row:hover{background:var(--hover,#7f7f7f0f)}.ws-intg__delivery-status{text-align:center;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.ws-intg__delivery-status--ok{background:color-mix(in srgb, var(--delivery-accent,#2a9d5c) 16%, transparent);color:var(--delivery-accent,#2a9d5c)}.ws-intg__delivery-status--fail{background:color-mix(in srgb, var(--danger,#d33) 14%, transparent);color:var(--danger,#d33)}.ws-intg__delivery-type{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ws-intg__delivery-attempt,.ws-intg__delivery-time{color:var(--muted);white-space:nowrap;font-size:11.5px}.ws-intg__delivery-detail{flex-direction:column;gap:10px;padding:4px 12px 14px;display:flex}.ws-intg__delivery-block{flex-direction:column;gap:4px;display:flex}.ws-intg__delivery-block .ws-bots__reveal-snippet{max-height:260px;overflow:auto}.ws-intg__deliveries-more{justify-content:center;display:flex}.ws-intg__deliveries-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-intg__section{flex-direction:column;gap:12px;margin-top:28px;display:flex}.ws-intg__section-title{color:var(--text-strong,var(--text));margin:0;font-size:15px;font-weight:600}.ws-intg__section-hint{color:var(--muted);margin:-6px 0 0;font-size:12.5px}.ws-bots__choice.is-disabled{opacity:.55;cursor:not-allowed} +@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-symbols2-wght-normal.GZpp1pK2.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./geist-mono-latin-wght-normal.B_7UjwxQ.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal.DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-feature-settings:"ss01", "cv11";--font-display:"Bricolage Grotesque Variable", "Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--surface:var(--panel-2);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--activity-accent:var(--lightningcss-light,#c07e0a)var(--lightningcss-dark,#e8b23e);--activity-accent-soft:var(--lightningcss-light,#c07e0a17)var(--lightningcss-dark,#e8b23e1a);--delivery-accent:var(--lightningcss-light,#5558d9)var(--lightningcss-dark,#8b8df2);--delivery-accent-soft:var(--lightningcss-light,#5558d90f)var(--lightningcss-dark,#8b8df214);--tool-call-bg:var(--lightningcss-light,#5558d917)var(--lightningcss-dark,#8b8df21f);--tool-call-bg-hover:var(--lightningcss-light,#5558d924)var(--lightningcss-dark,#8b8df22e);--accent-glow:0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent), 0 8px 30px -12px color-mix(in srgb, var(--accent) 48%, transparent);--success:var(--lightningcss-light,#14876a)var(--lightningcss-dark,#30c48d);--warn:#e8a33e;--danger:var(--lightningcss-light,#d13438)var(--lightningcss-dark,#ff6d68);--scrollbar:var(--lightningcss-light,#10151d2e)var(--lightningcss-dark,#bed2ff1f);--scrollbar-hover:var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#bed2ff38);--shadow:0 24px 60px -22px var(--lightningcss-light,#10151d4d)var(--lightningcss-dark,#02050ab3);--tooltip-bg:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#2b3448);--tooltip-fg:var(--lightningcss-light,#f0f4fa)var(--lightningcss-dark,#f4f7fb);--key-edge:0 1px 0 var(--line-strong), 0 2px 0 var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#00000073);--key-edge-pressed:0 1px 0 var(--line-strong);--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-xl:14px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-right:env(safe-area-inset-right,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);background:var(--bg);color:var(--text);font-family:Geist Variable,Inter,SF Pro Text,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-color-mode=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-color-mode=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-board=ember]{--rail:var(--lightningcss-light,#e9e1d7)var(--lightningcss-dark,#16110d);--bg:var(--lightningcss-light,#f7f3ed)var(--lightningcss-dark,#1a1511);--panel:var(--lightningcss-light,#fffaf2)var(--lightningcss-dark,#211a15);--panel-2:var(--lightningcss-light,#efe7dc)var(--lightningcss-dark,#29211a);--panel-3:var(--lightningcss-light,#e4dbcf)var(--lightningcss-dark,#322820);--hover:var(--lightningcss-light,#1020270d)var(--lightningcss-dark,#fff4eb0b);--hover-strong:var(--lightningcss-light,#10202714)var(--lightningcss-dark,#fff4eb14);--line:var(--lightningcss-light,#1020271a)var(--lightningcss-dark,#ffece014);--line-strong:var(--lightningcss-light,#10202729)var(--lightningcss-dark,#ffece024);--text:var(--lightningcss-light,#22201d)var(--lightningcss-dark,#ece4da);--text-strong:var(--lightningcss-light,#11100e)var(--lightningcss-dark,#fbf6f0);--muted:var(--lightningcss-light,#6f675f)var(--lightningcss-dark,#a4917f);--muted-2:var(--lightningcss-light,#958b80)var(--lightningcss-dark,#6f6152);--accent:var(--lightningcss-light,#c94a32)var(--lightningcss-dark,#f0714c);--accent-hover:var(--lightningcss-light,#b13c26)var(--lightningcss-dark,#ff8560);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#241009);--accent-2:var(--lightningcss-light,#006d77)var(--lightningcss-dark,#45b8ac);--accent-soft:var(--lightningcss-light,#c94a3224)var(--lightningcss-dark,#f0714c2b);--brand-a:var(--lightningcss-light,#c64b32)var(--lightningcss-dark,#f0714c);--brand-b:var(--lightningcss-light,#c8425a)var(--lightningcss-dark,#d84a63);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#11100e);--scrollbar:var(--lightningcss-light,#1020272e)var(--lightningcss-dark,#ffece01a);--scrollbar-hover:var(--lightningcss-light,#1020274d)var(--lightningcss-dark,#ffece033);--shadow:0 24px 60px -22px var(--lightningcss-light,#10202752)var(--lightningcss-dark,#080402a6)}[data-board=moss]{--rail:var(--lightningcss-light,#dfe5e0)var(--lightningcss-dark,#0a100d);--bg:var(--lightningcss-light,#ecf0ed)var(--lightningcss-dark,#0e1512);--panel:var(--lightningcss-light,#f7f9f7)var(--lightningcss-dark,#131b16);--panel-2:var(--lightningcss-light,#e6ebe7)var(--lightningcss-dark,#1a241d);--panel-3:var(--lightningcss-light,#dbe2dc)var(--lightningcss-dark,#223026);--hover:var(--lightningcss-light,#0f17120d)var(--lightningcss-dark,#d6ffe40b);--hover-strong:var(--lightningcss-light,#0f171214)var(--lightningcss-dark,#d6ffe414);--line:var(--lightningcss-light,#0f17121a)var(--lightningcss-dark,#c8ffdc17);--line-strong:var(--lightningcss-light,#0f17122b)var(--lightningcss-dark,#c8ffdc29);--text:var(--lightningcss-light,#212b24)var(--lightningcss-dark,#dbe7de);--text-strong:var(--lightningcss-light,#0f1712)var(--lightningcss-dark,#f3faf4);--muted:var(--lightningcss-light,#5c6b60)var(--lightningcss-dark,#8fa295);--muted-2:var(--lightningcss-light,#8a9a8e)var(--lightningcss-dark,#5d6e62);--accent:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--accent-hover:var(--lightningcss-light,#0f6a44)var(--lightningcss-dark,#63e6ab);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--accent-2:var(--lightningcss-light,#d97f26)var(--lightningcss-dark,#ffab5e);--accent-soft:var(--lightningcss-light,#177a5021)var(--lightningcss-dark,#3ddc9726);--brand-a:var(--lightningcss-light,#177a50)var(--lightningcss-dark,#3ddc97);--brand-b:var(--lightningcss-light,#0e7490)var(--lightningcss-dark,#2bb3a3);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#05140c);--scrollbar:var(--lightningcss-light,#0f17122e)var(--lightningcss-dark,#c8ffdc1f);--scrollbar-hover:var(--lightningcss-light,#0f17124d)var(--lightningcss-dark,#c8ffdc38)}[data-board=iris]{--rail:var(--lightningcss-light,#e2e2ea)var(--lightningcss-dark,#0d0c15);--bg:var(--lightningcss-light,#eeeef4)var(--lightningcss-dark,#12111c);--panel:var(--lightningcss-light,#f8f8fb)var(--lightningcss-dark,#181726);--panel-2:var(--lightningcss-light,#e9e9f0)var(--lightningcss-dark,#201e33);--panel-3:var(--lightningcss-light,#dedee8)var(--lightningcss-dark,#2a2742);--hover:var(--lightningcss-light,#1213270d)var(--lightningcss-dark,#e0dcff0b);--hover-strong:var(--lightningcss-light,#12132714)var(--lightningcss-dark,#e0dcff14);--line:var(--lightningcss-light,#1213271a)var(--lightningcss-dark,#d2cdff17);--line-strong:var(--lightningcss-light,#1213272b)var(--lightningcss-dark,#d2cdff29);--text:var(--lightningcss-light,#26283a)var(--lightningcss-dark,#e0dff0);--text-strong:var(--lightningcss-light,#121327)var(--lightningcss-dark,#f6f5fd);--muted:var(--lightningcss-light,#61637a)var(--lightningcss-dark,#918fa9);--muted-2:var(--lightningcss-light,#9092a8)var(--lightningcss-dark,#605e78);--accent:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--accent-hover:var(--lightningcss-light,#5f39c2)var(--lightningcss-dark,#bda4ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--accent-2:var(--lightningcss-light,#d94f8a)var(--lightningcss-dark,#ff8bb3);--accent-soft:var(--lightningcss-light,#7048d921)var(--lightningcss-dark,#a78bfa29);--brand-a:var(--lightningcss-light,#7048d9)var(--lightningcss-dark,#a78bfa);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#150f26);--scrollbar:var(--lightningcss-light,#1213272e)var(--lightningcss-dark,#d2cdff1f);--scrollbar-hover:var(--lightningcss-light,#1213274d)var(--lightningcss-dark,#d2cdff38)}[data-board=signal]{--rail:var(--lightningcss-light,#e2e5ea)var(--lightningcss-dark,#0b0e14);--bg:var(--lightningcss-light,#edeff2)var(--lightningcss-dark,#0e1219);--panel:var(--lightningcss-light,#f8f9fb)var(--lightningcss-dark,#141926);--panel-2:var(--lightningcss-light,#e8ebef)var(--lightningcss-dark,#1b2232);--panel-3:var(--lightningcss-light,#dde1e7)var(--lightningcss-dark,#232c3f);--hover:var(--lightningcss-light,#10151d0d)var(--lightningcss-dark,#d6e4ff0b);--hover-strong:var(--lightningcss-light,#10151d14)var(--lightningcss-dark,#d6e4ff14);--line:var(--lightningcss-light,#10151d1a)var(--lightningcss-dark,#bed2ff17);--line-strong:var(--lightningcss-light,#10151d2b)var(--lightningcss-dark,#bed2ff29);--text:var(--lightningcss-light,#232a35)var(--lightningcss-dark,#dbe2ec);--text-strong:var(--lightningcss-light,#10151d)var(--lightningcss-dark,#f4f7fb);--muted:var(--lightningcss-light,#5d6878)var(--lightningcss-dark,#8a95a8);--muted-2:var(--lightningcss-light,#8b94a3)var(--lightningcss-dark,#5c6577);--accent:var(--lightningcss-light,#0080c4)var(--lightningcss-dark,#41c6ff);--accent-hover:var(--lightningcss-light,#006aa6)var(--lightningcss-dark,#6ad3ff);--accent-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420);--accent-2:var(--lightningcss-light,#f56a1d)var(--lightningcss-dark,#ff9550);--accent-soft:var(--lightningcss-light,#0080c421)var(--lightningcss-dark,#41c6ff26);--brand-a:var(--lightningcss-light,#0072b0)var(--lightningcss-dark,#41c6ff);--brand-b:var(--lightningcss-light,#2653e8)var(--lightningcss-dark,#6d8bff);--brand-contrast:var(--lightningcss-light,#fff)var(--lightningcss-dark,#061420)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:radial-gradient(1000px 600px at 0% 0%, color-mix(in srgb, var(--accent) 6%, transparent), transparent 60%), radial-gradient(900px 700px at 100% 100%, color-mix(in srgb, var(--delivery-accent) 5%, transparent), transparent 60%), var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}code,pre,kbd,samp{font-variant-ligatures:none}button{cursor:pointer}input,textarea{background:0 0;border:0;outline:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scrollbar);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover);background-clip:content-box}.auth-shell{min-height:100dvh;padding:calc(32px + var(--safe-area-top)) calc(32px + var(--safe-area-right)) calc(32px + var(--safe-area-bottom)) calc(32px + var(--safe-area-left));background:radial-gradient(color-mix(in srgb, var(--text) 6%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px, radial-gradient(700px 500px at 30% 20%, color-mix(in srgb, var(--brand-a) 14%, transparent), transparent 60%), radial-gradient(700px 500px at 80% 90%, color-mix(in srgb, var(--brand-b) 10%, transparent), transparent 60%), var(--bg);place-items:center;display:grid}.auth-panel{border:1px solid var(--line-strong);border-radius:var(--radius-xl);background:linear-gradient(180deg, #ffffff0a, #fff0) var(--panel);width:min(100%,440px);box-shadow:var(--key-edge), var(--shadow);gap:22px;padding:36px;display:grid}.auth-brand{align-items:center;gap:12px;display:flex}.auth-brand .mark{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:44px;height:44px;color:var(--brand-contrast);letter-spacing:-.02em;box-shadow:0 10px 24px -8px color-mix(in srgb, var(--brand-b) 65%, transparent);border-radius:12px;place-items:center;font-weight:800;display:grid}.auth-brand .brand-text strong{color:var(--text-strong);letter-spacing:-.01em;display:block}.auth-brand .brand-text span{color:var(--muted);font-size:12px;display:block}.auth-copy{gap:8px;margin-top:8px;display:grid}.auth-copy h1{letter-spacing:-.02em;color:var(--text-strong);font-size:28px;font-family:var(--font-display);margin:0;font-weight:700}.auth-copy p{color:var(--muted);margin:0;line-height:1.5}.github-login{color:#fff;background:#0d1117;border:1px solid #2b2f36;border-radius:12px;justify-content:center;align-items:center;gap:10px;min-height:46px;font-weight:600;text-decoration:none;transition:transform 80ms,background .12s,border-color .12s;display:inline-flex}.github-login:hover{background:#161b22;border-color:#3f4750;transform:translateY(-1px)}.auth-foot{color:var(--muted-2);text-align:center;margin:0;font-size:12px}.shell{grid-template-columns:72px 260px minmax(0,1fr) 0;height:100dvh;min-height:100dvh;transition:grid-template-columns .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.shell.thread-open,.shell.search-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(340px,28vw)}.shell.artifact-open{grid-template-columns:72px 260px minmax(0,1fr) minmax(460px,42vw)}.shell.sidebar-collapsed{grid-template-columns:72px 0 minmax(0,1fr) 0}.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(340px,28vw)}.shell.sidebar-collapsed.artifact-open{grid-template-columns:72px 0 minmax(0,1fr) minmax(460px,42vw)}.shell>.thread,.shell>.search-results,.shell>.artifact-viewer{grid-area:1/4}.shell.desktop-shell{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);grid-template-rows:52px minmax(0,1fr)}.desktop-shell>.guild-rail,.desktop-shell>.sidebar{background:0 0;border-right:0}.desktop-shell>.sidebar{grid-template-rows:minmax(0,1fr) auto}@media (width<=820px){.desktop-shell>.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line)}.desktop-shell>.sidebar{background:var(--panel);border-right:1px solid var(--line)}}.desktop-shell>.timeline{border-top:1px solid var(--line);border-left:1px solid var(--line);border-top-left-radius:12px}.desktop-shell:not(.thread-open):not(.search-open):not(.artifact-open)>.timeline{border-top-right-radius:12px}.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{border-top:1px solid var(--line);border-top-right-radius:12px}.desktop-shell>.desktop-titlebar{grid-area:1/1/auto/-1}.desktop-shell>.guild-rail,.desktop-shell>.sidebar,.desktop-shell>.timeline,.desktop-shell>.thread,.desktop-shell>.search-results,.desktop-shell>.artifact-viewer{grid-row:2}.desktop-shell .mobile-nav-toggle{display:none}.desktop-auth-titlebar{z-index:10;-webkit-app-region:drag;height:52px;position:fixed;inset:0 0 auto}.desktop-titlebar{z-index:8;-webkit-app-region:drag;-webkit-user-select:none;user-select:none;background:0 0;align-items:center;min-width:0;height:52px;padding:0;display:flex;position:relative}.desktop-titlebar-safe-area{-webkit-app-region:drag;align-items:center;width:100%;min-width:0;height:100%;padding:0 14px;display:flex;position:relative}.desktop-titlebar[data-platform=darwin] .desktop-titlebar-safe-area{padding-left:78px}.desktop-titlebar[data-platform=win32] .desktop-titlebar-safe-area,.desktop-titlebar[data-platform=linux] .desktop-titlebar-safe-area{left:env(titlebar-area-x,0px);width:env(titlebar-area-width,calc(100% - 148px));position:absolute}.desktop-titlebar-leading{-webkit-app-region:no-drag;align-items:center;gap:9px;min-width:0;max-width:max(150px,50% - 300px);display:flex;overflow:hidden}.desktop-titlebar button{color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;display:grid}.desktop-titlebar button:hover{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.desktop-titlebar-leading>.desktop-sidebar-toggle{border-radius:8px;width:30px;height:30px}.desktop-titlebar-workspace{min-width:36px;max-width:190px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;flex:0 auto;padding:5px 9px;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel{min-width:30px;max-width:230px;color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;font-weight:650;overflow:hidden}.desktop-titlebar-channel.with-glyph:first-letter{color:var(--accent);margin-right:1px}.desktop-titlebar-divider{flex:none}.desktop-titlebar-status{color:var(--muted);white-space:nowrap;flex:none;align-items:center;gap:6px;margin-left:auto;font-size:11px;display:inline-flex}.desktop-titlebar-status:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@media (prefers-reduced-motion:reduce){.desktop-titlebar-status:before{animation:none}}.desktop-titlebar-search.search{border-color:var(--line-strong);background:color-mix(in srgb, var(--panel-2) 84%, transparent);-webkit-app-region:no-drag;width:clamp(220px,100vw - 700px,520px);height:32px;position:absolute;left:50%;transform:translate(-50%);box-shadow:inset 0 1px #ffffff09}.desktop-titlebar-search.search:focus-within{border-color:color-mix(in srgb, var(--accent) 66%, var(--line));background:var(--panel-2);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 13%, transparent)}.timeline{background:var(--bg);flex-direction:column;min-width:0;display:flex;overflow:hidden}.timeline>*{flex-shrink:0;min-width:0}.timeline>.messages{flex:1 1 0;min-height:0}.topbar{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--bg);align-items:center;gap:14px;min-height:60px;padding:12px 20px;display:flex}.topbar-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.topbar-title h1{letter-spacing:-.01em;color:var(--text-strong);font-size:16px;font-weight:650;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.topbar-title h1.with-glyph:first-letter{color:var(--accent);margin-right:1px}.topbar-divider{background:var(--line-strong);width:1px;height:18px;margin:0 6px}.topbar-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:12px;overflow:hidden}.search{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);width:min(280px,30vw);height:34px;color:var(--muted);align-items:center;gap:8px;padding:0 10px;transition:border-color .12s,background .12s;display:flex}.search:focus-within{border-color:var(--accent);background:var(--panel-2);color:var(--text)}.search input{min-width:0;height:100%;color:var(--text);flex:1}.search input::placeholder{color:var(--muted)}.search-clear{background:var(--panel-3);width:18px;height:18px;color:var(--muted);border:0;border-radius:50%;place-items:center;font-size:14px;line-height:1;display:grid}.search-clear:hover{background:var(--accent);color:var(--accent-contrast)}.search-submit{background:var(--accent-soft);height:22px;color:var(--accent);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:5px;padding:0 8px;font-size:10px;font-weight:600}.search-submit:hover{background:var(--accent);color:var(--accent-contrast)}.topbar-actions{align-items:center;gap:6px;display:inline-flex}.topbar-actions button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);width:32px;height:32px;color:var(--muted);box-shadow:var(--key-edge);place-items:center;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform 80ms;display:grid}.topbar-actions button:hover,.topbar-actions button.active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.topbar-actions button:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.search-results{border-left:1px solid var(--line);background:var(--panel);opacity:1;grid-template-rows:auto auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(0)}.search-results.covered{opacity:0;pointer-events:none}.search-results-head{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);justify-content:space-between;align-items:center;min-height:60px;padding:10px 16px;display:flex}.search-results-head>div{min-width:0}.search-results-head p{color:var(--muted);font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase;margin:0 0 2px;font-size:10px;font-weight:600}.search-results-head strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.search-results-head button{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;font-size:19px;line-height:1;display:grid}.search-results-head button:hover{background:var(--hover);color:var(--text)}.search-results-summary{color:var(--muted);padding:12px 16px 8px;font-size:12px;font-weight:600}.search-results-scroll{min-height:0;padding:0 8px 16px;overflow-y:auto}.search-result-list{margin:0;padding:0;list-style:none}.search-result{color:var(--text);border-radius:var(--radius);text-align:left;background:0 0;border:0;align-items:flex-start;gap:10px;width:100%;padding:10px 8px;display:flex}.search-result:hover{background:var(--hover)}.search-result.is-active{background:color-mix(in srgb, var(--accent) 10%, transparent)}.search-result:focus-visible,.search-results-head button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-result .dm-avatar{width:30px;height:30px;font-size:13px}.search-result-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.search-result-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.search-result-meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.search-result-handle{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.search-result-meta time{color:var(--muted);flex:none;margin-left:auto;font-size:11px}.search-result-snippet{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.search-result-snippet mark{background:color-mix(in srgb, var(--accent) 22%, transparent);color:var(--text-strong);border-radius:2px;font-weight:650}.search-result-context{min-width:0;color:var(--muted-2);align-items:center;gap:10px;margin-top:1px;font-size:11px;display:flex}.search-result-context:empty{display:none}.search-result-where{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.search-result-thread{color:var(--accent);flex:none;align-items:center;gap:4px;font-weight:600;display:inline-flex}.search-load-more{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);width:calc(100% - 16px);color:var(--text);margin:8px auto 0;padding:8px 12px;font-size:12px;font-weight:600;display:block}.search-load-more:hover:not(:disabled){background:var(--hover)}.search-load-more:disabled{color:var(--muted)}.search-load-more:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.search-end{color:var(--muted-2);text-align:center;padding:14px 8px 4px;font-size:11px}.search-foot-error{border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--text);justify-content:space-between;align-items:center;gap:10px;margin:8px 8px 0;padding:8px 12px;font-size:12px;display:flex}.search-foot-error p{min-width:0;margin:0}.search-foot-error button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);color:var(--text);flex:none;padding:4px 10px;font-size:12px;font-weight:600}.search-foot-error button:hover{background:var(--hover)}.search-state{color:var(--muted);text-align:center;justify-items:center;padding:56px 24px;display:grid}.search-state-icon{border:1px solid var(--line-strong);background:var(--panel-2);width:44px;height:44px;color:var(--muted-2);border-radius:50%;place-items:center;margin-bottom:14px;font-size:23px;display:grid}.search-state strong{color:var(--text-strong);font-size:14px}.search-state p{margin:5px 0 0;font-size:12px}.search-state-loading{grid-template-columns:repeat(3,7px);justify-content:center;gap:6px}.search-state-loading span{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pulse}.search-state-loading span:nth-child(2){animation-delay:.12s}.search-state-loading span:nth-child(3){animation-delay:.24s}.guild-rail{background:radial-gradient(color-mix(in srgb, var(--text) 7%, transparent) 1px, transparent 1.5px) 0 0 / 14px 14px, var(--rail);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:8px;padding:14px 0;display:flex;position:relative;overflow-y:auto}.guild-rail .guild{background:var(--panel);width:48px;height:48px;color:var(--text);border:1px solid var(--line-strong);letter-spacing:-.02em;box-shadow:var(--key-edge);border-radius:12px;place-items:center;font-size:14px;font-weight:700;text-decoration:none;transition:border-color .12s,background .12s,transform .12s,box-shadow .12s;display:grid;position:relative}.guild-rail .guild:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent);box-shadow:var(--key-edge), 0 6px 16px -8px color-mix(in srgb, var(--accent) 45%, transparent);transform:translateY(-1px)}.guild-rail .guild:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild.home{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border-color:color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));color:var(--brand-contrast);font-weight:800;font-family:var(--font-display)}.guild-rail .guild.home:hover{color:var(--brand-contrast);transform:translateY(-1px)}.guild-rail .guild.home:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.guild-rail .guild__image{border-radius:inherit;object-fit:cover;width:100%;height:100%;display:block}.guild-rail .guild.add{color:var(--success);border:1px dashed color-mix(in srgb, var(--success) 45%, transparent);background:0 0}.guild-rail .guild.add:hover{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-style:solid;border-color:var(--success)}.guild-divider{background:var(--line-strong);width:36px;height:1px;margin:4px 0}.guild-list{flex-direction:column;align-items:center;gap:8px;display:flex}.guild-wrap{position:relative}.guild-wrap:before{content:"";background:var(--accent);opacity:0;border-radius:0 4px 4px 0;width:4px;height:28px;transition:opacity .14s,transform .14s;position:absolute;top:50%;left:-14px;transform:translateY(-50%)scaleY(.2)}.guild-wrap:hover:before{opacity:.6;transform:translateY(-50%)scaleY(.5)}.guild-wrap.active:before{opacity:1;transform:translateY(-50%)scaleY(1)}.guild-wrap.active .guild{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast)}.guild-create{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;margin-left:8px;padding:8px;position:absolute;top:14px;left:100%}.guild-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:200px;height:32px;color:var(--text);padding:0 10px}.sidebar{background:var(--panel);border-right:1px solid var(--line);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .16s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden}.sidebar-collapsed .sidebar{opacity:0;pointer-events:none;transform:translate(-14px)}.workspace-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:6px;min-height:60px;padding:14px 16px;display:flex}.workspace-header-icon{object-fit:cover;background:var(--panel-2);border-radius:8px;flex:none;width:28px;height:28px}.workspace-header-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.workspace-menu{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;margin-left:-8px;padding:5px 8px;transition:background .12s;display:flex}.workspace-menu:hover{background:var(--panel-2)}.workspace-menu-caret{color:var(--muted);flex:none;transition:color .12s}.workspace-menu:hover .workspace-menu-caret{color:var(--text-strong)}.sidebar-collapse{background:var(--panel-2);width:30px;height:30px;color:var(--muted);border:0;border-radius:8px;place-items:center;transition:color .12s,background .12s,transform .12s;display:grid}.sidebar-collapse:hover{background:var(--panel-3);color:var(--text-strong);transform:translate(-1px)}.workspace-name{flex-direction:column;gap:2px;min-width:0;display:flex}.workspace-name strong{min-width:0;color:var(--text-strong);letter-spacing:-.01em;font-size:15px;font-family:var(--font-display);align-items:center;gap:5px;font-weight:650;display:flex}.workspace-name-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.workspace-name .presence{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:inline-flex}.workspace-name .presence:before{content:"";background:var(--muted-2);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite presence-pulse}@keyframes presence-pulse{0%,to{opacity:.4}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.workspace-name .presence:before{animation:none}}.sidebar-scroll{padding:12px 8px 16px;overflow-y:auto}.nav-section+.nav-section{margin-top:12px}.section-title{border-radius:var(--radius-sm);background:0 0;border:0;align-items:center;gap:4px;width:100%;padding:2px 4px;display:flex}.nav-section.collapsed+.nav-section{margin-top:4px}.section-toggle{border-radius:var(--radius-sm);min-width:0;min-height:28px;color:var(--muted);text-transform:uppercase;font-family:var(--font-mono);letter-spacing:.09em;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;padding:4px;font-size:10px;font-weight:600;display:flex}.section-toggle:hover{color:var(--text);background:var(--hover)}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.section-toggle .caret{opacity:.7;font-size:10px;transition:transform .14s}.section-toggle[aria-expanded=false] .caret{transform:rotate(-90deg)}.section-toggle .label{text-align:left;flex:1}.section-title .add-button{background:var(--hover-strong);width:18px;height:18px;color:var(--text);border:0;border-radius:4px;flex:none;place-items:center;padding:0;font-size:14px;font-weight:700;line-height:1;display:grid}.section-title .add-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.section-title:hover .add-button{background:var(--accent);color:var(--accent-contrast)}.nav-list{flex-direction:column;gap:1px;margin-top:4px;display:flex}.nav-list[hidden]{display:none}@media (prefers-reduced-motion:reduce){.section-toggle .caret{transition:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.channel-row{border-radius:var(--radius-sm);align-items:center;display:flex;position:relative}.channel-row .nav-item{flex:1;min-width:0}.channel-row.reorderable .nav-item{padding-left:2px}.channel-drag-handle{border-radius:var(--radius-sm);color:var(--muted-2);cursor:grab;opacity:0;background:0 0;border:0;flex:0 0 24px;align-self:stretch;place-items:center;display:grid}.channel-row:hover .channel-drag-handle,.channel-drag-handle:focus-visible{opacity:1}.channel-drag-handle:hover{color:var(--text);background:var(--hover)}.channel-drag-handle:active{cursor:grabbing}.channel-drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.channel-drag-handle svg{fill:currentColor}.channel-move-menu{z-index:4;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-width:112px;box-shadow:var(--shadow);padding:4px;display:grid;position:absolute;top:calc(100% + 2px);left:0}.channel-move-menu button{color:var(--text);text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}.channel-move-menu button:hover:not(:disabled),.channel-move-menu button:focus-visible{background:var(--hover-strong);outline:none}.channel-move-menu button:disabled{color:var(--muted-2);cursor:default}.channel-row.dragging{opacity:.45}.channel-row.drop-before:before,.channel-row.drop-after:after{content:"";z-index:1;background:var(--accent);pointer-events:none;border-radius:1px;height:2px;position:absolute;left:4px;right:4px}.channel-row.drop-before:before{top:-1px}.channel-row.drop-after:after{bottom:-1px}@media (hover:none){.channel-drag-handle{opacity:1}}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:8px;min-height:30px;padding:6px 10px;text-decoration:none;transition:background .1s,color .1s;display:flex}.nav-item:hover{background:var(--hover);color:var(--text)}.nav-item:focus{outline:none}.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.nav-item.active{background:var(--accent-soft);color:var(--text-strong);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.nav-item.has-unread{color:var(--text-strong);font-weight:600}.nav-item.has-unread .hash{color:var(--text-strong)}.unread-badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-contrast,white);text-align:center;letter-spacing:.01em;border-radius:9px;flex-shrink:0;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.nav-item .hash{color:var(--muted);text-align:center;width:14px;font-weight:600}.nav-item.active .hash{color:var(--accent)}.nav-label{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.dm-row{grid-template-columns:minmax(0,1fr) 24px;align-items:center;gap:2px;display:grid;position:relative}.dm-row .nav-item{min-width:0}.dm-actions-trigger{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--muted-2);opacity:0;background:0 0;border:0;place-items:center;font-size:18px;font-weight:700;line-height:1;display:grid}.dm-row:hover .dm-actions-trigger,.dm-row:focus-within .dm-actions-trigger,.dm-row.active .dm-actions-trigger{opacity:1}.dm-actions-trigger:hover,.dm-actions-trigger:focus-visible,.dm-actions-trigger[aria-expanded=true]{background:var(--hover);color:var(--text);outline:none}.dm-actions-menu{z-index:30;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel-2);min-width:164px;box-shadow:var(--shadow);padding:4px;position:absolute;top:28px;right:0}.dm-actions-item{width:100%;min-height:30px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;padding:0 10px;font-size:13px}.dm-actions-item:hover,.dm-actions-item:focus-visible{background:var(--hover);color:var(--text-strong);outline:none}.dm-undo{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--muted);align-items:center;gap:8px;margin:6px 8px 2px;padding:6px 8px;font-size:12px;display:flex}.dm-undo span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.dm-undo button{background:var(--hover);color:var(--text);border:0;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:700}.dm-undo button:hover,.dm-undo button:focus-visible{background:var(--accent);color:var(--accent-contrast);outline:none}.nav-empty{color:var(--muted-2);margin:4px 8px;font-size:12px}.dm-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:50%;flex-shrink:0;place-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:grid;overflow:hidden}.dm-avatar img,.avatar img{object-fit:cover;width:100%;height:100%;display:block}.presence-dot{background:var(--muted-2);border-radius:50%;flex-shrink:0;width:8px;height:8px}.presence-dot.active{background:var(--success);box-shadow:0 0 0 2px var(--panel)}.inline-create{grid-template-columns:minmax(0,1fr) auto;gap:6px;margin:6px 4px 2px;display:grid}.inline-create input{border-radius:var(--radius-sm);background:var(--panel-2);width:100%;min-width:0;height:30px;color:var(--text);border:1px solid var(--line);padding:0 10px}.inline-create input:focus{border-color:var(--accent);background:var(--panel-3)}.inline-create button.ghost,button.ghost{border-radius:var(--radius-sm);background:var(--panel-3);width:30px;height:30px;color:var(--muted);border:0;place-items:center;padding:0;font-size:14px;font-weight:600;display:grid}.inline-create button.ghost:hover{background:var(--accent);color:var(--accent-contrast)}.user-card{background:var(--panel-2);border-top:1px solid var(--line);width:100%;color:inherit;text-align:left;cursor:pointer;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:10px;padding:10px 12px;transition:background .12s;display:flex}.user-card:hover{background:var(--panel-3)}.user-card .dm-avatar{width:28px;height:28px;font-size:12px}.user-card .user-meta{flex:1;min-width:0}.user-card .user-meta strong{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.user-card .user-meta span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}@media (width<=820px){.workspace-header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(14px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right))}.sidebar-scroll{padding-bottom:calc(16px + var(--safe-area-bottom))}.user-card{padding-bottom:calc(10px + var(--safe-area-bottom))}}.messages{flex-direction:column;display:flex;position:relative}.messages-scroll{overflow-anchor:none;opacity:1;flex-direction:column;flex:1;min-height:0;padding:0 4px;transition:opacity .14s ease-out;display:flex;overflow-y:auto}.messages-scroll:focus{outline:none}.messages.is-revealing .messages-scroll{opacity:0;pointer-events:none;transition:opacity}.messages-spacer{flex-grow:1}.history-loader{pointer-events:none;gap:14px;margin:4px 0 6px;padding:6px 18px;animation:.22s ease-out both history-loader-fade;display:grid}.history-loader--newer{margin-top:6px;margin-bottom:4px}@keyframes history-loader-fade{0%{opacity:0}to{opacity:1}}.history-loader__row{grid-template-columns:56px minmax(0,1fr);min-height:44px;display:grid}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:linear-gradient(90deg, color-mix(in srgb, var(--muted-2) 16%, transparent), color-mix(in srgb, var(--muted-2) 36%, transparent), color-mix(in srgb, var(--muted-2) 16%, transparent));animation:1.4s ease-in-out infinite history-loading;animation-delay:calc(var(--history-row,0) * 80ms);background-size:220% 100%;display:block}.history-loader__avatar{border-radius:10px;width:38px;height:38px}.history-loader__body{align-content:start;gap:8px;min-width:0;padding-top:4px;display:grid}.history-loader__meta{border-radius:999px;width:min(180px,38%);height:11px}.history-loader__line{border-radius:999px;height:10px}.history-loader__line--wide{width:min(540px,72%)}.history-loader__line--mid{width:min(360px,48%)}@keyframes history-loading{0%{background-position:120% 0}to{background-position:-120% 0}}@media (prefers-reduced-motion:reduce){.history-loader{animation:none}.history-loader__avatar,.history-loader__meta,.history-loader__line,.history-loader__block{background:color-mix(in srgb, var(--muted-2) 22%, transparent);animation:none}}.unread-bar{z-index:5;background:color-mix(in srgb, var(--panel) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);border:1px solid color-mix(in srgb, var(--accent) 38%, transparent);max-width:calc(100% - 32px);height:30px;color:var(--text);letter-spacing:.005em;box-shadow:inset 0 1px 0 #ffffff14, 0 10px 24px -14px #0000008c, 0 0 0 4px color-mix(in srgb, var(--accent) 10%, transparent);opacity:1;border-radius:999px;align-items:center;gap:6px;padding:0 5px 0 14px;font-size:12px;font-weight:600;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:inline-flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.unread-bar.is-clearing{opacity:0;pointer-events:none;transform:translate(-50%,-6px)}.unread-bar__jump,.unread-bar__mark{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;transition:background-color .12s ease-out,color .12s ease-out;display:inline-flex}.unread-bar__jump{text-align:left;min-width:0;color:color-mix(in srgb, var(--accent) 92%, var(--text));flex:0 auto;padding:0 6px 0 0}.unread-bar__jump:before{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);border-radius:50%;flex-shrink:0;animation:1.8s ease-out infinite unread-bar-pulse}@keyframes unread-bar-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent)}70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent)}}@media (prefers-reduced-motion:reduce){.unread-bar__jump:before{animation:none}}.unread-bar__mark{background:color-mix(in srgb, var(--accent) 14%, transparent);height:22px;color:color-mix(in srgb, var(--accent) 90%, var(--text));letter-spacing:.01em;border-radius:999px;flex-shrink:0;padding:0 10px;font-size:11px;font-weight:600}.unread-bar__jump:hover{color:var(--accent)}.unread-bar__mark:hover{background:color-mix(in srgb, var(--accent) 24%, transparent);color:var(--accent)}.unread-bar__jump:focus-visible,.unread-bar__mark:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 70%, transparent);outline-offset:2px;border-radius:999px}.unread-bar__label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.typing-indicator{height:0;color:var(--text-muted);opacity:0;pointer-events:none;align-items:center;gap:8px;margin-top:0;padding:0 22px;font-size:12px;transition:height .12s ease-out,margin-top .12s ease-out,opacity .12s ease-out,transform .16s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden;transform:translateY(2px)}.typing-indicator.visible{opacity:1;height:20px;margin-top:-4px;transform:translateY(0)}.composer-dock{padding-top:20px;position:relative}.composer-dock .agent-responding{opacity:0;pointer-events:none;align-items:center;height:20px;margin:0;padding:0 22px;transition:opacity .12s ease-out;display:flex;position:absolute;top:0;left:0;right:0;overflow:hidden;transform:none}.composer-dock .agent-responding.visible{opacity:1;height:20px;margin:0;transform:none}.typing-indicator__dots{align-items:center;gap:3px;display:inline-flex}.typing-indicator__dots i{opacity:.55;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite typing-dot}.typing-indicator__dots i:nth-child(2){animation-delay:.15s}.typing-indicator__dots i:nth-child(3){animation-delay:.3s}@keyframes typing-dot{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.message-row.is-pending{opacity:.55}.message-row.is-pending .message-content,.message-row.is-pending .markdown{pointer-events:none}.message-row.is-failed{opacity:1}.message-row.is-deleted{color:var(--muted)}.message-failed{background:color-mix(in srgb, var(--danger,#d04848) 14%, transparent);color:var(--danger,#d04848);border-radius:999px;align-items:center;gap:10px;margin-top:6px;padding:4px 10px;font-size:12px;display:inline-flex}.message-failed__label{font-weight:500}.message-failed__action{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:999px;padding:2px 8px;line-height:1}.message-failed__action:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.message-failed__action--ghost{border-color:color-mix(in srgb, currentColor 50%, transparent)}@media (prefers-reduced-motion:reduce){.typing-indicator{transition:opacity 80ms ease-out;transform:none}.typing-indicator.visible{transform:none}.typing-indicator__dots i{opacity:.7;animation:none}}.empty{text-align:center;align-content:center;place-items:center;gap:10px;min-height:50vh;padding:48px 24px;display:grid}.empty-icon{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));border:1px solid color-mix(in srgb, var(--brand-b) 55%, var(--line-strong));width:64px;height:64px;color:var(--brand-contrast);box-shadow:var(--key-edge), 0 18px 40px -16px color-mix(in srgb, var(--brand-b) 60%, transparent);border-radius:16px;place-items:center;font-size:26px;font-weight:800;display:grid}.empty strong{color:var(--text-strong);letter-spacing:-.01em;font-size:19px;font-family:var(--font-display);font-weight:700}.empty span{color:var(--muted);max-width:380px;line-height:1.5}.day-divider{pointer-events:none;align-items:center;gap:12px;margin:18px 18px 8px;display:flex}.day-divider:before,.day-divider:after{content:"";background:var(--line);flex:1;height:1px}.day-divider span{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;border-radius:999px;padding:4px 12px;font-size:10px;font-weight:600}.new-messages-divider{pointer-events:none;opacity:1;align-items:center;gap:0;margin:4px 0 2px;padding:0 18px;transition:opacity .16s ease-out,transform .18s cubic-bezier(.2,.8,.2,1);display:flex;position:relative;transform:translateY(0)}.new-messages-divider.is-clearing{opacity:0;transform:translateY(-4px)}.new-messages-divider:before{content:"";background:var(--danger,#ed4245);opacity:.9;flex:1;height:1px}.new-messages-divider span{background:var(--danger,#ed4245);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:3px;align-items:center;height:14px;margin-left:8px;padding:0 5px;font-size:9px;font-weight:700;display:inline-flex}.message-group{grid-template-columns:56px minmax(0,1fr);padding:8px 18px;display:grid;position:relative}.message-group:hover{background:var(--hover)}.avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:10px;place-items:center;width:38px;height:38px;margin-top:2px;font-size:14px;font-weight:700;display:grid;overflow:hidden;box-shadow:0 6px 20px -10px #0009}.avatar-button{z-index:2;cursor:pointer;border:0;padding:0;transition:transform .1s,box-shadow .12s,filter .12s;position:relative}.avatar-button:hover{filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 10px 24px -12px #000c}.avatar.small{border-radius:10px;width:30px;height:30px;font-size:12px}.avatar.large{border-radius:16px;width:56px;height:56px;margin:0;font-size:18px}.group-body{min-width:0}.group-body>header{align-items:baseline;gap:8px;margin-bottom:2px;display:flex}.group-body>header strong{color:var(--text-strong);letter-spacing:-.005em;font-size:14.5px;font-weight:700}.author-name{color:var(--text-strong);letter-spacing:0;background:0 0;border:0;border-radius:4px;padding:0;font-size:14.5px;font-weight:700}.author-name:hover{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.author-name--static:hover{color:var(--text-strong);text-decoration:none}.group-body>header time{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10.5px}.group-body>header span{color:var(--muted);font-size:12px}.bot-chip{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);height:18px;color:var(--accent);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;padding:0 6px;font-size:9.5px;font-weight:700;line-height:1;display:inline-flex}.bot-chip--deleted{border-color:var(--line-strong);color:var(--muted)}.message-row{border-radius:0;margin-left:-56px;padding:1px 0 1px 56px;transition:background 80ms;position:relative}.message-row:not(:first-child){margin-top:1px}.message-row.selected{background:var(--accent-soft)}.message-row.can-open-thread{cursor:pointer}.row-stamp{font-family:var(--font-mono);color:var(--muted-2);opacity:0;font-variant-numeric:tabular-nums;font-size:9.5px;position:absolute;top:4px;left:8px}.message-row.is-preamble{background:0 0;margin-bottom:6px;padding-top:4px;padding-bottom:4px}.message-row.is-preamble:not(.before-final-message) .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);border-radius:var(--radius-lg);background:var(--activity-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--activity-accent) 14%, transparent);padding:10px 14px}.message-row.is-preamble-collapsed .message-content{padding-top:6px;padding-bottom:6px}.message-row.is-preamble.before-final-message{background:0 0;margin-bottom:0;padding-top:2px;padding-bottom:0}.message-row.after-preamble{margin-top:0;padding-top:0;padding-bottom:2px}.message-row.is-preamble.before-final-message:before{display:none}.message-row.is-preamble.before-final-message .message-content{border:1px solid color-mix(in srgb, var(--activity-accent) 20%, transparent);background:var(--activity-accent-soft);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);border-bottom:0;padding:10px 14px}.message-row.after-preamble .message-content{border:1px solid color-mix(in srgb, var(--delivery-accent) 20%, transparent);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);background:var(--delivery-accent-soft);box-shadow:0 2px 0 color-mix(in srgb, var(--delivery-accent) 14%, transparent);border-top:0;padding:10px 14px}.message-row.is-preamble.before-final-message.is-preamble-collapsed .message-content{background:color-mix(in srgb, var(--activity-accent) 10%, var(--panel));border-bottom:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);padding-top:7px;padding-bottom:7px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 56px}:root[data-user-align=right] .message-group.is-self>.avatar,:root[data-other-align=right] .message-group:not(.is-self)>.avatar{grid-area:1/2;justify-self:end}:root[data-user-align=right] .message-group.is-self>.group-body,:root[data-other-align=right] .message-group:not(.is-self)>.group-body{grid-area:1/1;min-width:0}:root[data-user-align=right] .message-group.is-self .group-body>header,:root[data-other-align=right] .message-group:not(.is-self) .group-body>header{justify-content:flex-end}:root[data-user-align=right] .message-group.is-self .message-content,:root[data-other-align=right] .message-group:not(.is-self) .message-content{text-align:right;margin-left:auto}:root[data-user-align=right] .message-group.is-self .markdown,:root[data-other-align=right] .message-group:not(.is-self) .markdown{text-align:right}:root[data-user-align=right] .message-group.is-self .attachment-grid,:root[data-other-align=right] .message-group:not(.is-self) .attachment-grid{margin-left:auto}.preamble-contract{gap:7px;min-width:0;display:grid}.preamble-toggle{width:100%;min-height:20px;color:var(--activity-accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto auto auto minmax(0,1fr);align-items:center;gap:7px;padding:0;display:grid}.preamble-chevron{color:var(--activity-accent);font-size:10px;transition:transform .12s}.preamble-chevron.open{transform:rotate(90deg)}.preamble-state,.preamble-action{line-height:1}.preamble-state{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, transparent);height:17px;color:var(--activity-accent);text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:0 7px;font-size:9.5px;font-weight:750;display:inline-flex}.preamble-state.is-live{border-color:color-mix(in srgb, var(--activity-accent) 55%, transparent);animation:1.6s ease-in-out infinite preamble-live-pulse}@keyframes preamble-live-pulse{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.preamble-state.is-live{animation:none}}.preamble-action{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.preamble-body{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;min-width:0}.preamble-flow{gap:7px;min-width:0;padding-left:17px;display:grid}.preamble-tool{--tool-accent:var(--activity-accent);background:var(--tool-call-bg);border-radius:7px;min-width:0;overflow:hidden}.preamble-tool-summary{width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:7px;padding:4px 9px;line-height:1.5;display:flex}.preamble-tool-summary:hover{background:var(--tool-call-bg-hover)}.preamble-tool-full{color:var(--muted);overflow-wrap:anywhere;word-break:break-word;gap:5px;min-width:0;padding:2px 10px 8px 27px;font-size:12px;display:grid}.preamble-tool-full-head{font-family:var(--font-mono);color:color-mix(in srgb, var(--tool-accent) 45%, var(--muted));font-size:11px;font-weight:600}.preamble-tool-full-body{min-width:0}.preamble-tool-full pre{white-space:pre-wrap;overflow-wrap:anywhere}.tool-line-chevron{color:var(--muted-2);flex-shrink:0;font-size:9px;transition:transform .12s}.tool-line-chevron.open{transform:rotate(90deg)}.tool-line-glyph{filter:saturate(.85);flex-shrink:0;font-size:11px}.tool-line-action{color:color-mix(in srgb, var(--tool-accent) 38%, var(--text));flex-shrink:0;font-size:11.5px;font-weight:600}.tool-line-name{text-overflow:ellipsis;white-space:nowrap;max-width:40%;color:color-mix(in srgb, var(--tool-accent) 55%, var(--muted));font-size:11px;font-weight:500;font-family:var(--font-mono);flex-shrink:0;overflow:hidden}.tool-line-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);font-size:11px;font-weight:400;font-family:var(--font-mono);opacity:.85;flex:auto;overflow:hidden}.message-row:hover .row-stamp{opacity:1}.message-content{min-width:0}.thread-hint{border:1px solid color-mix(in srgb, var(--line-strong) 70%, transparent);background:color-mix(in srgb, var(--panel) 70%, transparent);min-height:22px;color:var(--muted-2);cursor:pointer;border-radius:8px;align-items:center;gap:5px;margin-top:5px;padding:2px 7px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.thread-hint:not(.has-replies):not(.is-open){display:none}.thread-hint svg{flex:none}.thread-hint time{color:var(--muted-2);font-variant-numeric:tabular-nums;font-size:10px;font-weight:700}.thread-hint.has-replies,.thread-hint.is-open{border-color:color-mix(in srgb, var(--accent) 48%, var(--line-strong));background:color-mix(in srgb, var(--accent-soft) 70%, transparent);color:var(--text-strong)}.thread-hint.has-replies time,.thread-hint.is-open time{color:var(--muted)}.thread-hint:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));background:var(--hover-strong);color:var(--text-strong)}.thread-hint:disabled{cursor:default;opacity:.45}.message-actions{opacity:0;background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow);border-radius:8px;align-items:flex-start;gap:4px;padding:2px;transition:opacity .1s,transform .1s;display:flex;position:absolute;top:0;right:8px;transform:translateY(-50%)}.message-row:hover .message-actions,.message-row.selected .message-actions{opacity:1}.message-actions button{width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.message-actions button:hover{background:var(--hover-strong);color:var(--text-strong)}.message-actions .message-action-danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.message-deleted{min-height:22px;color:var(--muted);align-items:center;font-size:13px;font-style:italic;display:inline-flex}.markdown{color:var(--text);overflow-wrap:anywhere;word-break:break-word;font-size:14.5px;line-height:1.5}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0}.markdown p+p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre{margin-top:6px}.markdown a{color:var(--accent);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown code{background:var(--panel-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;font-family:Geist Mono Variable,JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.markdown pre{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;overflow-x:auto}.markdown pre code{background:0 0;border:0;padding:0}.markdown blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:0;padding:4px 0 4px 12px}.markdown ul,.markdown ol{padding-left:22px}.markdown img{border-radius:var(--radius);border:1px solid var(--line);object-fit:contain;background:var(--panel);cursor:zoom-in;max-width:100%;max-height:360px;margin-top:6px}.gif-player{vertical-align:top;max-width:100%;display:inline-block;position:relative}.gif-player img{display:block}.gif-badge,.gif-replay{z-index:1;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:0;position:absolute}.gif-badge{letter-spacing:.04em;pointer-events:none;background:#0000008a;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800;bottom:9px;left:9px}.gif-replay{opacity:0;pointer-events:none;background:#0a0c12b8;border-radius:999px;place-items:center;width:30px;height:30px;font-size:16px;line-height:1;transition:opacity .13s,transform .13s,background .12s;display:grid;bottom:9px;right:9px;transform:scale(.88)}.gif-replay:hover{background:var(--accent)}.gif-player.paused .gif-replay{opacity:1;pointer-events:auto;transform:scale(1)}.gif-player.playing .gif-badge{animation:.9s ease-in-out infinite gif-breathe}@keyframes gif-breathe{0%,to{opacity:.85}50%{opacity:.45}}.attachment-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;max-width:560px;margin-top:8px;display:grid}.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:420px}.media-tile{border:1px solid var(--line);border-radius:var(--radius-lg);isolation:isolate;text-align:left;width:100%;color:inherit;cursor:pointer;background:#0a0c12;margin:0;padding:0;text-decoration:none;transition:border-color .14s,transform .14s,box-shadow .14s;display:block;position:relative;overflow:hidden}.media-tile:hover{border-color:var(--line-strong);box-shadow:0 18px 40px -28px #000000e6}.media-tile:focus-visible{border-color:var(--line-strong);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.media-tile--image{cursor:zoom-in}.media-tile__open{width:100%;color:inherit;cursor:zoom-in;background:0 0;border:0;margin:0;padding:0;display:block}.media-tile__open:focus{outline:0}.media-tile__open:focus-visible+.media-tile__caption .media-tile__name{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.media-tile--video{cursor:default}.media-tile img,.media-tile video{object-fit:contain;background:#05070d;width:100%;max-height:360px;display:block}.media-tile--image img{max-height:320px}.media-tile__caption{z-index:3;opacity:0;pointer-events:none;background:linear-gradient(#0000 0%,#00000080 60%,#000000c7 100%);align-items:center;gap:8px;padding:22px 10px 8px;transition:opacity .14s;display:flex;position:absolute;inset:auto 0 0}.media-tile__caption>*{pointer-events:auto}.media-tile:hover .media-tile__caption,.media-tile:focus-within .media-tile__caption{opacity:1}.media-tile--video.is-started .media-tile__caption{display:none}.media-tile__name{color:#fff;white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 2px #0009;flex:1;min-width:0;font-size:12px;font-weight:500;overflow:hidden}.media-tile__chip{z-index:4;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border:1px solid #ffffff2e;border-radius:8px;flex:none;place-items:center;width:28px;height:28px;text-decoration:none;transition:background .12s,border-color .12s,transform .12s;display:inline-grid;position:relative}.media-tile__chip:hover{background:#000000b3;border-color:#ffffff52;transform:translateY(-1px)}.media-tile__play{cursor:pointer;z-index:1;background:0 0;border:0;place-items:center;width:100%;height:auto;margin:0;padding:0;display:grid;position:absolute;inset:0 0 48px}.media-tile__play:before{content:"";opacity:.7;pointer-events:none;background:radial-gradient(#0000002e 0%,#0000000d 45%,#0000 70%);transition:opacity .16s;position:absolute;inset:0}.media-tile__play:hover:before{opacity:.9}.media-tile__play-icon{color:#fff;-webkit-backdrop-filter:blur(10px);background:#0000008c;border-radius:999px;place-items:center;width:46px;height:46px;padding-left:3px;transition:transform .2s cubic-bezier(.2,.8,.2,1),background .18s,box-shadow .2s;display:grid;position:relative;box-shadow:0 6px 20px -8px #0000008c}.media-tile__play-icon svg{filter:drop-shadow(0 1px 2px #0006)}.media-tile__play:hover .media-tile__play-icon{background:#000000b3;transform:scale(1.06);box-shadow:0 10px 28px -10px #000000a6}.media-tile__play:active .media-tile__play-icon{transition-duration:80ms;transform:scale(.97)}.media-tile__play:focus-visible{outline:none}.media-tile__play:focus-visible .media-tile__play-icon{box-shadow:0 0 0 2px #fff9,0 10px 28px -10px #000000a6}.media-tile__duration{z-index:2;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em;pointer-events:none;background:#000000b8;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600;position:absolute;bottom:8px;left:8px}.file-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);align-items:center;gap:10px;max-width:360px;padding:10px;display:flex}.file-attachment:hover{border-color:var(--line-strong);background:var(--panel-2)}.file-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:8px;place-items:center;font-weight:800;display:grid}.file-attachment strong,.file-attachment small{display:block}.file-attachment strong{color:var(--text-strong);font-size:13px}.file-attachment small{color:var(--muted);font-size:11px}.audio-attachment,.document-attachment{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,420px);overflow:hidden}.audio-attachment{gap:10px;padding:10px;display:grid}.audio-attachment__meta{align-items:center;gap:10px;min-width:0;display:flex}.audio-attachment audio{width:100%;height:36px}.document-attachment{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px;display:grid}.document-attachment__thumbnail{border:1px solid var(--line);background:linear-gradient(135deg, transparent 0 76%, var(--panel-3) 76% 100%), linear-gradient(180deg, #fff 0%, #f0f2f7 100%);width:64px;height:82px;color:var(--accent);letter-spacing:0;cursor:pointer;border-radius:6px;place-items:center;font-size:13px;font-weight:800;text-decoration:none;display:inline-grid;position:relative;overflow:hidden;box-shadow:0 8px 18px -16px #0009}.document-attachment__thumbnail:before,.document-attachment__thumbnail:after{content:"";background:color-mix(in srgb, var(--muted) 36%, transparent);border-radius:999px;height:2px;position:absolute;left:14px;right:14px}.document-attachment__thumbnail:before{top:48px}.document-attachment__thumbnail:after{top:56px}.document-attachment__meta{gap:5px;min-width:0;display:grid}.document-attachment__title{width:100%;min-width:0;color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:700;text-decoration:none;overflow:hidden}.document-attachment__title:hover{text-underline-offset:3px;text-decoration:underline}.document-attachment__meta small{color:var(--muted);white-space:nowrap;font-size:11px}.document-attachment__download{width:30px;height:30px;color:var(--muted);border-radius:8px;place-items:center;text-decoration:none;transition:background .12s,color .12s;display:inline-grid}.document-attachment__download:hover{background:var(--panel-2);color:var(--text-strong)}@media (width<=520px){.message-group{grid-template-columns:44px minmax(0,1fr);padding:7px 12px}:root[data-user-align=right] .message-group.is-self,:root[data-other-align=right] .message-group:not(.is-self){grid-template-columns:minmax(0,1fr) 44px}.message-row{margin-left:-44px;padding-left:44px}.row-stamp{display:none}.attachment-grid,.attachment-grid.compact{grid-template-columns:minmax(0,1fr);max-width:100%}}:root[data-message-layout=outlined] .message-group .group-body{width:100%}:root[data-message-layout=outlined] .message-group .message-row{margin-left:0;padding:0}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .message-content,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .message-content,:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .markdown,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .markdown{text-align:start}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .thread-hint,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .thread-hint{width:fit-content;margin-left:auto;display:flex}:root[data-message-layout=outlined] .message-group .row-stamp{left:-48px}:root[data-message-layout=outlined][data-user-align=right] .message-group.is-self .row-stamp,:root[data-message-layout=outlined][data-other-align=right] .message-group:not(.is-self) .row-stamp{left:auto;right:-48px}:root[data-message-layout=outlined] .message-group .message-row:not(:first-child){margin-top:4px}:root[data-message-layout=outlined] .message-group .message-content{border-radius:var(--radius-lg);width:fit-content;max-width:min(96%,1100px);margin-top:2px;padding:10px 14px;position:relative}:root[data-message-layout=outlined] .message-group .message-row:not(.is-preamble):not(.after-preamble) .message-content{border:1px solid var(--line-strong)}:root[data-message-layout=outlined] .message-group.is-agent .message-content{width:96%;max-width:1100px}:root[data-message-layout=outlined] .message-group .message-row.before-final-message+.message-row.after-preamble{margin-top:-1px}:root[data-message-layout=outlined] .message-group.is-agent .message-row.before-final-message .message-content{border-bottom-right-radius:0;border-bottom-left-radius:0}:root[data-message-layout=outlined] .message-group.is-agent .message-row.after-preamble .message-content{border-top-left-radius:0;border-top-right-radius:0}.composer{--composer-card-top:8px;--composer-overlay-gap:8px;--composer-overlay-inset-x:18px;background:var(--bg);gap:0;padding:8px 18px 6px;display:grid;position:relative}.composer-card{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-lg);box-shadow:var(--key-edge);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.composer:focus-within .composer-card{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent)}.composer-suggestions{left:var(--composer-overlay-inset-x);bottom:calc(100% - var(--composer-card-top) + var(--composer-overlay-gap));z-index:40;width:min(560px, calc(100% - (var(--composer-overlay-inset-x) * 2)));border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);max-height:min(320px,45vh);box-shadow:var(--shadow);border-radius:12px;margin:0;position:absolute;overflow:hidden auto}.composer-suggestions button{border:0;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--text);text-align:left;background:0 0;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.composer-suggestions button:last-child{border-bottom:0}.composer-suggestions button:hover,.composer-suggestions button.active{background:var(--hover-strong)}.suggestion-mark{background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.suggestion-copy{gap:2px;min-width:0;display:grid}.suggestion-copy strong,.suggestion-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.suggestion-copy strong{color:var(--text-strong);font-size:13px}.suggestion-copy span{color:var(--muted);font-size:12px}.suggestion-kind{color:var(--muted-2);text-transform:uppercase;font-size:11px;font-weight:700}.suggestion-hint{color:var(--muted);font-size:12px;font-style:normal;font-weight:500}.composer-notice{margin:0 var(--composer-overlay-inset-x,0) 6px;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 97%, transparent);border-radius:10px;align-items:baseline;gap:8px;padding:7px 10px;font-size:13px;display:flex}.composer-notice__label{color:var(--muted-2);text-transform:uppercase;flex:none;font-size:11px;font-weight:700}.composer-notice--error .composer-notice__label{color:var(--danger)}.composer-notice__text{min-width:0;color:var(--text);overflow-wrap:anywhere;flex:1}.composer-notice__dismiss{width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-self:center;place-items:center;font-size:15px;line-height:1;display:grid}.composer-notice__dismiss:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-toolbar{border:0;border-top:1px solid var(--line);background:color-mix(in srgb, var(--panel-2) 35%, transparent);width:100%;min-width:0;box-shadow:none;scrollbar-width:none;-webkit-overflow-scrolling:touch;border-radius:0;align-items:center;gap:2px;margin:0;padding:4px 6px;display:inline-flex;overflow:auto hidden}.composer-toolbar::-webkit-scrollbar{display:none}.composer-toolbar button{min-width:28px;height:26px;color:var(--text);opacity:.78;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:11.5px;font-weight:700;transition:background .1s,color .1s,opacity .1s,transform 80ms;display:grid}.composer-toolbar button:hover{background:var(--hover-strong);color:var(--text-strong);opacity:1}.composer-toolbar button.active{background:var(--accent-soft);color:var(--accent);opacity:1}.composer-toolbar button:active{transform:translateY(1px)}.gif-picker{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel) 96%, transparent);width:min(520px,100vw - 40px);box-shadow:var(--shadow);border-radius:16px;margin-top:8px;margin-bottom:8px;padding:10px;animation:.16s cubic-bezier(.2,.8,.2,1) picker-in}.gif-picker-head{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:2px 2px 10px;display:grid}.gif-picker-head strong{color:var(--text-strong);font-size:13px}.gif-picker-head input{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);min-width:0;height:32px;padding:0 10px}.gif-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:240px;display:grid;overflow-y:auto}.gif-grid button{aspect-ratio:4/3;background:var(--panel-2);color:#fff;box-shadow:inset 0 0 0 1px var(--line);border:0;border-radius:12px;padding:0;transition:transform .12s,box-shadow .12s;position:relative;overflow:hidden}.gif-grid button:hover{box-shadow:inset 0 0 0 2px var(--accent), 0 14px 30px -22px #000c;transform:translateY(-2px)}.gif-grid img{object-fit:cover;width:100%;height:100%;display:block}.gif-grid span{text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0000008f;border-radius:999px;padding:4px 7px;font-size:10.5px;font-weight:700;position:absolute;bottom:6px;left:6px;right:6px;overflow:hidden}@keyframes picker-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.composer-row{--composer-control-size:36px;--composer-line-height:22px;--composer-text-padding-block:7px;background:0 0;border:0;border-radius:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:4px;padding:8px 8px 4px 10px;display:grid}.composer:focus-within .composer-toolbar,.composer-row:focus-within{border-color:#0000}.composer-row:focus-within{box-shadow:none}.composer-icon{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);color:var(--muted);cursor:pointer;border-radius:10px;align-self:start;place-items:center;transition:background .12s,color .12s;display:grid}.composer-icon:hover{background:var(--hover-strong);color:var(--text-strong)}.composer-icon input[type=file]{opacity:0;pointer-events:none;block-size:1px;inline-size:1px;position:absolute}.composer textarea,.reply-composer textarea{width:100%;height:auto;min-height:44px;max-height:50vh;padding:var(--composer-text-padding-block) 4px;resize:none;color:var(--text);line-height:var(--composer-line-height);box-sizing:border-box;align-self:start;font-size:14.5px;overflow-y:auto}.composer textarea::placeholder,.reply-composer textarea::placeholder{color:var(--muted)}.send{width:var(--composer-control-size);height:var(--composer-control-size);margin-top:calc(var(--composer-text-padding-block) + (var(--composer-line-height) - var(--composer-control-size)) / 2);border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));border-radius:var(--radius);background:var(--accent);color:var(--accent-contrast);box-shadow:var(--key-edge);align-self:start;place-items:center;transition:background .12s,transform 80ms,box-shadow 80ms,opacity .12s;display:grid}.send:hover:not(:disabled){background:var(--accent-hover);transform:translateY(-1px)}.send:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.send:disabled{background:var(--panel-3);border-color:var(--line-strong);color:var(--muted-2);cursor:not-allowed;box-shadow:none}.composer-attachment{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;width:fit-content;margin-top:8px;margin-bottom:8px;padding:6px 10px;font-size:13px;display:inline-flex}.attachment-icon{background:var(--accent-soft);width:20px;height:20px;color:var(--accent);border-radius:6px;place-items:center;display:grid}.pending-image{object-fit:cover;border:1px solid var(--line);background:var(--panel-2);border-radius:7px;width:42px;height:32px}.attachment-name{text-overflow:ellipsis;white-space:nowrap;max-width:240px;overflow:hidden}.attachment-remove{width:18px;height:18px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:14px;line-height:1}.attachment-remove:hover{background:var(--danger);color:#fff}.composer-hint{color:var(--muted-2);padding:7px 4px 0;font-size:11px}.composer-hint kbd{background:var(--panel-2);border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--text);box-shadow:0 1px 0 var(--line-strong);border-radius:4px;padding:0 5px;font-size:10.5px;display:inline-block}@media (width<=820px){.composer{padding:8px calc(14px + var(--safe-area-right)) calc(6px + var(--safe-area-bottom)) calc(14px + var(--safe-area-left))}.composer textarea,.reply-composer textarea{font-size:16px}.composer-suggestions{max-height:min(320px,42dvh)}}.thread{background:var(--panel);border-left:1px solid var(--line);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.thread.open{opacity:1;pointer-events:auto;transform:translate(0)}.thread.covered{opacity:0;pointer-events:none}.thread>header{border-bottom:1px solid var(--line);background:linear-gradient(180deg, #ffffff05, transparent), var(--panel);align-items:center;gap:10px;min-height:60px;padding:12px 16px;display:flex}.thread>header>div{flex:1;min-width:0}.thread>header p,.thread>header strong{margin:0}.thread>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.thread>header strong{color:var(--text-strong);font-size:14px;display:block}.thread .close{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;font-size:18px;line-height:1}.thread .close:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-open-link{color:var(--accent);font-family:var(--font-mono);white-space:nowrap;flex:none;font-size:11px;font-weight:700;text-decoration:none}.thread .thread-open-link:hover{color:var(--accent-hover);text-decoration:underline}.thread .thread-open-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.thread .thread-back{background:var(--panel-2);width:28px;height:28px;color:var(--muted);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.thread .thread-back:hover{background:var(--panel-3);color:var(--text-strong)}.thread .thread-back:focus-visible,.thread .close:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.thread-scroll{padding:12px 16px;overflow-y:auto}.thread-root{border-bottom:1px solid var(--line);grid-template-columns:38px minmax(0,1fr);gap:12px;padding-bottom:12px;display:grid}.thread-divider{align-items:center;gap:10px;margin:14px 0 10px;display:flex}.thread-divider:before,.thread-divider:after{content:"";background:var(--line);flex:1;height:1px}.thread-divider span{font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.reply-list{flex-direction:column;gap:10px;display:flex}.reply{border-radius:var(--radius-sm);grid-template-columns:30px minmax(0,1fr);gap:10px;padding:6px;display:grid}.reply:hover{background:var(--hover)}.thread .reply-quote-btn,.thread .thread-action-btn{width:26px;height:26px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:inline-grid}.thread .reply-quote-btn:hover,.thread .thread-action-btn:hover{background:var(--hover-strong);color:var(--text-strong)}.thread .reply-quote-btn:disabled,.thread .thread-action-btn:disabled{cursor:default;opacity:.45}.thread .thread-action-btn--danger{color:var(--danger)}.thread .thread-action-btn--danger:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.reply-composer{--composer-card-top:10px;--composer-overlay-inset-x:14px;background:var(--panel);border-top:1px solid var(--line);padding:10px 14px 14px}.reply-composer .composer-row{border-radius:0}.thread-empty{text-align:center;grid-row:span 3;align-content:center;place-items:center;gap:8px;padding:32px 24px;display:grid}.thread-icon{background:var(--panel-2);width:56px;height:56px;color:var(--muted);border-radius:16px;place-items:center;display:grid}.thread-empty strong{color:var(--text-strong);font-size:15px}.thread-empty span{color:var(--muted);max-width:260px;font-size:13px;line-height:1.5}.profile-pane{overflow-y:auto}.profile-hero{background:linear-gradient(180deg, transparent, #0000003d), linear-gradient(135deg, hsl(var(--hue,220deg) 76% 58%), hsl(calc(var(--hue,220deg) + 54deg) 74% 38%));border-bottom:1px solid var(--line);place-items:end center;min-height:210px;padding:28px 20px;display:grid}.profile-avatar{aspect-ratio:1;color:#fff;background:#ffffff2e;border-radius:16px;place-items:center;width:min(240px,70%);font-size:clamp(48px,12vw,88px);font-weight:800;display:grid;overflow:hidden;box-shadow:0 26px 60px -30px #000000e6}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-pane-body{gap:18px;padding:18px 16px 22px;display:grid}.profile-pane-title{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.profile-pane-title h2{color:var(--text-strong);letter-spacing:0;margin:0;font-size:22px}.profile-pane-title span{color:var(--muted);margin-top:3px;font-size:13px;display:block}.profile-pane-title .bot-badge{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);min-height:20px;color:var(--accent);border-radius:999px;align-items:center;margin-top:6px;padding:0 8px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.text-action{color:var(--accent);background:0 0;border:0;border-radius:6px;padding:4px 6px;font-size:13px;font-weight:700}.text-action:hover{background:var(--accent-soft)}.profile-presence{color:var(--text);align-items:center;gap:8px;font-size:14px;display:inline-flex}.profile-actions-row{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;display:grid}.profile-actions-row .primary-action,.profile-actions-row .ghost-action{border-radius:var(--radius);white-space:nowrap;justify-content:center;align-items:center;width:100%;min-width:0;height:48px;padding:0 16px;font-size:14px;font-weight:800;line-height:1;display:inline-flex}.moderation-actions{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:8px;display:grid}.moderation-actions .primary-action,.moderation-actions .ghost-action,.moderation-actions .danger-action{border-radius:var(--radius);min-height:40px;font-size:13px;font-weight:800}.danger-action{border:1px solid color-mix(in srgb, var(--danger), transparent 35%);background:color-mix(in srgb, var(--danger), transparent 86%);color:var(--danger)}.role-pill{background:var(--panel-2);color:var(--muted);text-transform:uppercase;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:800}.profile-info{border-top:1px solid var(--line);gap:12px;padding-top:18px;display:grid}.profile-info header{justify-content:space-between;align-items:center;gap:10px;display:flex}.profile-info header strong{color:var(--text-strong);font-size:14px}.profile-info-row{grid-template-columns:48px minmax(0,1fr);align-items:center;gap:14px;min-height:48px;display:grid}.info-icon{background:var(--panel-2);width:48px;height:48px;color:var(--muted);border-radius:12px;justify-content:center;align-items:center;line-height:1;display:inline-flex}.info-icon svg{flex:none;display:block}.profile-info-row>div>small,.profile-info-row>div>span{display:block}.profile-info-row>div>small{color:var(--muted);font-size:12px;line-height:1.2}.profile-info-row>div>span{color:var(--text);overflow-wrap:anywhere;font-size:14px;line-height:1.3}.profile-note{color:var(--muted);margin:0;font-size:13px;line-height:1.5}@media (width<=820px){.thread{min-height:100dvh}.thread>header{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.thread-scroll{padding-right:calc(16px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.reply-composer{padding-right:calc(14px + var(--safe-area-right));padding-bottom:calc(14px + var(--safe-area-bottom));padding-left:calc(14px + var(--safe-area-left))}}.artifact-viewer{z-index:2;border-left:1px solid var(--line);background:var(--panel);opacity:0;pointer-events:none;grid-template-rows:auto minmax(0,1fr);min-width:0;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1);display:grid;overflow:hidden;transform:translate(28px)}.artifact-viewer.open{opacity:1;pointer-events:auto;transform:translate(0)}.artifact-viewer__header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, var(--bg));justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:10px 12px 10px 16px;display:flex}.artifact-viewer__identity{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:5px 10px;min-width:0;display:grid}.artifact-viewer__identity span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;grid-column:1/-1;font-size:11px;font-weight:700}.artifact-viewer__identity strong{min-width:0;color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.artifact-viewer__identity small{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.artifact-viewer__actions,.artifact-viewer__segmented{align-items:center;gap:4px;display:inline-flex}.artifact-viewer__actions>a,.artifact-viewer__actions>button,.artifact-viewer__segmented button,.artifact-viewer__pdf-toolbar button{border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--muted);background:0 0;border:1px solid #0000;place-items:center;padding:0 9px;text-decoration:none;display:inline-grid}.artifact-viewer__office-toolbar button,.artifact-viewer__sheet-tabs button{border-radius:var(--radius-sm);min-height:30px;color:var(--muted);background:0 0;border:1px solid #0000;padding:0 10px;font-size:11px}.artifact-viewer__actions>button{font-size:20px;line-height:1}.artifact-viewer__actions>a:hover,.artifact-viewer__actions>button:hover,.artifact-viewer__segmented button:hover,.artifact-viewer__pdf-toolbar button:hover:not(:disabled){border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__actions :focus-visible,.artifact-viewer__pdf-toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:2px}.artifact-viewer__segmented button{min-width:58px;height:28px;font-size:11px;font-weight:650}.artifact-viewer__segmented button.active{border-color:var(--line);background:var(--panel);color:var(--text-strong)}.artifact-viewer__body{background:var(--bg);min-height:0;overflow:auto}.artifact-viewer__state{min-height:100%;color:var(--muted);text-align:center;align-content:center;justify-items:center;gap:10px;padding:32px 24px;display:grid}.artifact-viewer__state strong{color:var(--text-strong);font-size:15px}.artifact-viewer__state p{max-width:34ch;margin:0;font-size:13px;line-height:1.5}.artifact-viewer__state a{border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--panel);min-height:36px;color:var(--text-strong);margin-top:4px;padding:8px 12px;font-size:13px;font-weight:650;text-decoration:none}.artifact-viewer__state--error svg{color:var(--danger)}.artifact-viewer__spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:.7s linear infinite artifact-spin}@keyframes artifact-spin{to{transform:rotate(360deg)}}.artifact-viewer__source{background:color-mix(in srgb, var(--bg) 90%, #090b10);width:max-content;min-width:100%;min-height:100%;color:var(--text);font-family:var(--font-mono);tab-size:2;white-space:pre;margin:0;padding:20px;font-size:12px;line-height:1.65}.artifact-viewer__source code{font:inherit}.artifact-viewer__document{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);width:min(100%,760px);min-height:calc(100% - 32px);color:var(--text);overflow-wrap:anywhere;margin:16px auto;padding:clamp(24px,5vw,56px);font-size:15px;line-height:1.65}.artifact-viewer__document>:first-child{margin-top:0}.artifact-viewer__document>:last-child{margin-bottom:0}.artifact-viewer__document h1,.artifact-viewer__document h2,.artifact-viewer__document h3{color:var(--text-strong);line-height:1.25}.artifact-viewer__document h1{font-size:28px}.artifact-viewer__document h2{margin-top:1.75em;font-size:21px}.artifact-viewer__document h3{margin-top:1.5em;font-size:17px}.artifact-viewer__document pre{border-radius:var(--radius);background:var(--panel-2);padding:14px;overflow:auto}.artifact-viewer__document code{font-family:var(--font-mono)}.artifact-viewer__document table{border-collapse:collapse;width:100%}.artifact-viewer__document th,.artifact-viewer__document td{border:1px solid var(--line-strong);text-align:left;padding:8px 10px}.artifact-viewer__document img{max-width:100%;height:auto}.artifact-viewer__document a{color:var(--accent)}.artifact-viewer__body.is-pdf{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.artifact-viewer__body.is-office{grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.artifact-viewer__office-toolbar,.artifact-viewer__sheet-tabs{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__office-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__office-toolbar button:hover:not(:disabled),.artifact-viewer__sheet-tabs button:hover,.artifact-viewer__sheet-tabs button.active{border-color:var(--line);background:var(--hover-strong);color:var(--text-strong)}.artifact-viewer__office-toolbar button:focus-visible,.artifact-viewer__sheet-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.artifact-viewer__office-toolbar{flex-wrap:wrap}.artifact-viewer__spreadsheet{background:var(--panel);min-height:0;overflow:auto}.artifact-viewer__spreadsheet table{table-layout:fixed;border-spacing:0;border-collapse:separate;width:max-content;color:var(--text);font-size:12px}.artifact-viewer__spreadsheet th,.artifact-viewer__spreadsheet td{box-sizing:border-box;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--panel);text-align:left;text-overflow:ellipsis;white-space:nowrap;width:160px;min-width:160px;max-width:160px;height:30px;padding:5px 8px;overflow:hidden}.artifact-viewer__spreadsheet thead th{z-index:2;background:var(--panel-2);color:var(--muted);text-align:center;position:sticky;top:0}.artifact-viewer__spreadsheet .row-heading{z-index:1;background:var(--panel-2);width:44px;min-width:44px;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;position:sticky;left:0}.artifact-viewer__spreadsheet thead .row-heading{z-index:3}.artifact-viewer__grid-note{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:max-content;max-width:min(480px,100vw - 48px);color:var(--muted);white-space:normal;margin:16px;padding:8px 10px;font-size:12px;line-height:1.45;position:sticky;left:0}.artifact-viewer__sheet-tabs{border-top:1px solid var(--line);border-bottom:0;justify-content:flex-start;overflow-x:auto}.artifact-viewer__sheet-tabs button{flex:none}.artifact-viewer__slide-stage{align-content:center;place-items:center;gap:12px;min-height:0;padding:24px;display:grid;overflow:auto}.artifact-viewer__slide{aspect-ratio:16/9;color:#172033;background:#fff;flex-direction:column;justify-content:safe center;width:min(100%,860px);padding:48px;display:flex;overflow:auto;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__slide h2{letter-spacing:0;margin:0 0 .7em;font-size:36px;line-height:1.15}.artifact-viewer__slide p{margin:.35em 0;font-size:20px;line-height:1.4}.artifact-viewer__office-note{color:var(--muted);margin:0;font-size:12px}@media (width<=640px){.artifact-viewer__slide{padding:28px}.artifact-viewer__slide h2{font-size:24px}.artifact-viewer__slide p{font-size:15px}}.artifact-viewer__pdf-toolbar{border-bottom:1px solid var(--line);background:var(--panel);min-height:44px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:4px;padding:6px 10px;font-size:11px;display:flex}.artifact-viewer__pdf-toolbar button{min-width:30px;height:30px;font-size:11px}.artifact-viewer__pdf-toolbar button:disabled{cursor:not-allowed;opacity:.4}.artifact-viewer__toolbar-divider{background:var(--line);width:1px;height:18px;margin:0 4px}.artifact-viewer__pdf-stage{text-align:center;min-height:0;padding:24px;overflow:auto}.artifact-viewer__pdf-stage canvas{background:#fff;max-width:none;transition:opacity .12s;display:inline-block;box-shadow:0 16px 48px -24px #000000a6}.artifact-viewer__pdf-text{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.artifact-viewer__pdf-stage.is-rendering canvas{opacity:.55}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-link{color:var(--accent)}.hljs-string,.hljs-title,.hljs-name,.hljs-type,.hljs-attribute,.hljs-symbol,.hljs-bullet,.hljs-addition{color:var(--success)}.hljs-number,.hljs-meta,.hljs-built_in,.hljs-builtin-name,.hljs-params{color:var(--activity-accent)}.hljs-deletion{color:var(--danger)}@media (width<=820px){.artifact-viewer{z-index:40;border-left:0;min-height:100dvh;position:fixed;inset:0}.artifact-viewer__header{min-height:calc(64px + var(--safe-area-top));padding-top:calc(10px + var(--safe-area-top));padding-right:calc(12px + var(--safe-area-right));padding-left:calc(16px + var(--safe-area-left))}.artifact-viewer__identity small{display:none}.artifact-viewer__document{border:0;border-radius:0;min-height:100%;margin:0}}@media (prefers-reduced-motion:reduce){.artifact-viewer{transition:none}.artifact-viewer__spinner{animation-duration:1.4s}}.modal-scrim{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#05080f8a;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-backdrop{background:0 0;border:0;position:absolute;inset:0}.modal-backdrop:focus{outline:0}.profile-modal{z-index:1;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius-xl);width:min(480px,100%);box-shadow:var(--key-edge), var(--shadow);animation:.15s ease-out settings-modal-fade;position:relative;overflow:hidden}.profile-modal>header{justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 4px;display:flex}.profile-modal>header p{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;margin:0 0 4px;font-size:10px;font-weight:600}.profile-modal>header h2{color:var(--text-strong);font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:20px;font-weight:700}.profile-modal>header>button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:28px;height:28px;color:var(--muted);flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.profile-modal>header>button:hover{background:var(--panel-3);color:var(--text-strong)}.create-modal{width:min(420px,100%)}.profile-form{gap:14px;padding:20px;display:grid}.profile-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);align-items:center;gap:14px;padding:14px;display:flex}.profile-preview strong,.profile-preview span{display:block}.profile-preview strong{color:var(--text-strong);font-size:15px}.profile-preview span{color:var(--muted);font-size:13px}.field{gap:6px;display:grid}.field span{color:var(--muted);font-size:12px;font-weight:700}.field input,.field select{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:100%;height:38px;color:var(--text);padding:0 12px}.field select{cursor:pointer}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.check-field{align-items:center;gap:10px;display:flex}.check-field input{width:16px;height:16px;padding:0}.profile-status{color:var(--success);font-size:12px}.profile-status.error{color:var(--danger)}.profile-actions{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.person-picker{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);gap:4px;max-height:240px;padding:4px;display:grid;overflow-y:auto}.person-choice{border-radius:var(--radius-sm);width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:0;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px;padding:6px 8px;display:grid}.person-choice:hover{background:var(--hover-strong)}.person-choice .dm-avatar{width:32px;height:32px}.person-choice strong,.person-choice small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.person-choice strong{color:var(--text-strong);font-size:13px}.person-choice small{color:var(--muted);font-size:12px}.person-empty{color:var(--muted);padding:10px 8px;font-size:12px}.profile-actions .ghost-action,.profile-actions .primary-action,.profile-actions .danger-action{box-sizing:border-box;border-radius:var(--radius);white-space:nowrap;min-height:44px;box-shadow:var(--key-edge);flex:none;justify-content:center;align-items:center;padding:0 14px;font-weight:700;line-height:1;transition:background .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.ghost-action{border:1px solid var(--line-strong);background:var(--panel);color:var(--text)}.primary-action{border:1px solid color-mix(in srgb, var(--accent) 70%, var(--text-strong));background:var(--accent);color:var(--accent-contrast)}.profile-actions .danger-action{border:1px solid color-mix(in srgb, var(--danger) 76%, var(--text-strong));background:var(--danger);color:#fff}.ghost-action:hover{background:var(--hover)}.primary-action:hover{background:var(--accent-hover)}.profile-actions .danger-action:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 86%, #000)}.profile-actions .ghost-action:disabled,.profile-actions .primary-action:disabled,.profile-actions .danger-action:disabled{cursor:default;opacity:.58}.profile-actions .ghost-action:active,.profile-actions .primary-action:active,.profile-actions .danger-action:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.delete-message-scrim{padding:20px}.delete-message-modal{width:min(520px,100%)}.delete-message-modal>header{padding-bottom:10px}.delete-message-content{gap:18px;padding:4px 20px 20px;display:grid}.delete-message-content>p{color:var(--text);margin:0;font-size:14px;line-height:1.5}.delete-message-preview{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);grid-template-columns:36px minmax(0,1fr);align-items:start;gap:12px;padding:14px;display:grid}.delete-message-preview__content{min-width:0}.delete-message-preview>.avatar{border-radius:9px;width:36px;height:36px;margin:0}.delete-message-preview__meta{align-items:baseline;gap:8px;min-width:0;display:flex}.delete-message-preview__meta strong{color:var(--text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.delete-message-preview__meta time{color:var(--muted);flex:none;font-size:11px}.delete-message-preview__body{max-height:128px;color:var(--text);overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px;font-size:14px;line-height:1.45;overflow:auto}.delete-message-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:0;display:grid}.delete-message-actions button{width:100%}@media (width<=520px){.delete-message-modal{width:100%}.delete-message-content,.delete-message-modal>header{padding-inline:16px}}.image-viewer-scrim{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#000000c7;padding:28px}.image-viewer{z-index:1;color:#fff;background:#07090f;border-radius:14px;grid-template-rows:auto minmax(0,1fr);width:min(1120px,100%);max-height:min(86vh,900px);animation:.15s cubic-bezier(.2,.8,.2,1) picker-in;display:grid;position:relative;overflow:hidden;box-shadow:0 34px 90px -34px #000000f2}.image-viewer>header{background:#ffffff0a;border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:16px;min-height:52px;padding:10px 12px 10px 16px;display:flex}.image-viewer>header strong{color:#fff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.image-viewer>header div{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.image-viewer>header a{color:#fff;background:#ffffff14;border-radius:7px;align-items:center;height:30px;padding:0 10px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.image-viewer>header a:hover{background:#ffffff24}.image-viewer>header button{color:#ffffffc7;background:0 0;border:0;border-radius:7px;place-items:center;width:30px;height:30px;font-size:22px;line-height:1;display:grid}.image-viewer>header button:hover{color:#fff;background:#ffffff1f}.image-viewer-stage{place-items:center;min-height:0;padding:18px;display:grid}.image-viewer-stage img{object-fit:contain;background:#ffffff0a;border-radius:8px;max-width:100%;max-height:calc(86vh - 96px);display:block}.mobile-nav-toggle{top:calc(14px + var(--safe-area-top));left:calc(14px + var(--safe-area-left));z-index:30;border:1px solid var(--line-strong);background:var(--panel);width:38px;height:38px;color:var(--text);border-radius:10px;font-size:22px;line-height:1;display:none;position:fixed}.mobile-nav-toggle .bars{gap:3px;display:grid}.mobile-nav-toggle .bars i{background:currentColor;border-radius:2px;width:16px;height:2px;display:block}.mobile-nav-backdrop{display:none}@media (width<=1180px){.shell{grid-template-columns:72px 240px minmax(0,1fr)}.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:72px 0 minmax(0,1fr)}.thread,.search-results{width:min(420px,100vw);box-shadow:var(--shadow);z-index:4;border-left:1px solid var(--line-strong);transition:transform .18s;position:fixed;inset:0 0 0 auto;transform:translate(100%)}.thread.open,.search-results{transform:translate(0)}.desktop-shell .thread,.desktop-shell .search-results{top:52px;bottom:0}}@media (width<=820px){.mobile-nav-toggle{place-items:center;display:grid}.shell,.shell.thread-open,.shell.search-open,.shell.sidebar-collapsed,.shell.sidebar-collapsed.thread-open,.shell.sidebar-collapsed.search-open{grid-template-columns:1fr}.sidebar-collapsed .sidebar{opacity:1;pointer-events:none;transform:translate(calc(-100% - 72px))}.guild-rail,.sidebar{z-index:20;pointer-events:none;height:100dvh;transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.guild-rail{width:72px;padding-top:calc(14px + var(--safe-area-top));padding-bottom:calc(14px + var(--safe-area-bottom))}.sidebar{width:min(260px,100vw - 72px);left:72px;transform:translate(calc(-100% - 72px))}.nav-open .guild-rail,.nav-open .sidebar{pointer-events:auto;transform:translate(0,0)}.nav-open .guild-rail{padding-top:calc(62px + var(--safe-area-top))}.desktop-shell .guild-rail,.desktop-shell .sidebar{height:calc(100dvh - 52px);top:52px}.desktop-shell.nav-open .guild-rail{padding-top:calc(14px + var(--safe-area-top))}.desktop-shell .mobile-nav-backdrop{top:52px}.mobile-nav-backdrop{z-index:15;background:#05081075;border:0;padding:0;display:block;position:fixed;inset:0 0 0 min(332px,100vw)}.topbar{min-height:calc(60px + var(--safe-area-top));padding-top:calc(12px + var(--safe-area-top));padding-right:calc(20px + var(--safe-area-right));padding-left:calc(64px + var(--safe-area-left))}.search{width:180px}}@media (width<=520px){.search,.topbar-meta,.topbar-divider{display:none}}.message-row.highlight,.thread-root.highlight,.reply.highlight{animation:1.4s ease-out quote-flash}@keyframes quote-flash{0%{background:color-mix(in srgb, var(--accent) 22%, transparent)}to{background:0 0}}.quote-block{color:inherit;cursor:pointer;text-align:left;max-width:100%;font:inherit;background:0 0;border:0;border-radius:6px;align-items:stretch;gap:.5rem;margin:0 0 .35rem;padding:.25rem .5rem .25rem 0;display:inline-flex}.quote-block:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 8%, transparent)}.quote-block:disabled{cursor:default;opacity:.75}.quote-block .quote-bar{background:var(--accent);border-radius:2px;flex:0 0 3px;align-self:stretch;width:3px}.quote-block .quote-content{flex-direction:column;gap:.1rem;min-width:0;display:flex}.quote-block .quote-author{color:var(--accent);font-size:.78rem;font-weight:600}.quote-block .quote-snippet{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:56ch;font-size:.85rem;overflow:hidden}.quote-block .quote-snippet.muted{opacity:.75;font-style:italic}.quote-preview{background:color-mix(in srgb, var(--accent) 5%, transparent);border:0;border-bottom:1px solid var(--line);color:var(--muted);border-radius:0;align-items:center;gap:.5rem;margin:0;padding:6px 10px 6px 12px;font-size:12.5px;display:flex}.quote-preview .quote-bar{display:none}.quote-preview-body{flex:1;align-items:baseline;gap:.4rem;min-width:0;display:flex;overflow:hidden}.quote-preview-label{color:color-mix(in srgb, var(--accent) 85%, var(--text));white-space:nowrap;font-size:12px}.quote-preview-label strong{color:var(--text-strong);font-weight:600}.quote-preview-snippet{white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;min-width:0;font-size:12px;overflow:hidden}.quote-preview-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:16px;line-height:1;transition:background .1s,color .1s}.quote-preview-clear:hover{color:var(--text-strong);background:var(--hover-strong)}.reply-quote-btn{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;margin-left:auto;padding:0 .3rem;font-size:.95rem;transition:opacity .15s;position:relative}.reply:hover .reply-quote-btn,.thread-root:hover .reply-quote-btn,.reply-quote-btn:focus-visible{opacity:1}.reply-quote-btn:hover{color:var(--accent)}.tooltip{position:relative}.tooltip:before,.reply-quote-btn:before{content:attr(data-tooltip);z-index:20;background:var(--tooltip-bg);color:var(--tooltip-fg);white-space:nowrap;opacity:0;pointer-events:none;border-radius:9px;padding:.42rem .62rem;font-size:.78rem;font-weight:700;line-height:1;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,4px)scale(.96);box-shadow:0 10px 28px #00000047}.tooltip:after,.reply-quote-btn:after{content:"";z-index:20;background:var(--tooltip-bg);opacity:0;pointer-events:none;border-radius:2px;width:12px;height:12px;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%,4px)rotate(45deg)scale(.9)}.tooltip:hover:before,.tooltip:focus-visible:before,.reply-quote-btn:hover:before,.reply-quote-btn:focus-visible:before,.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{opacity:1;transform:translate(-50%)scale(1)}.tooltip:hover:after,.tooltip:focus-visible:after,.reply-quote-btn:hover:after,.reply-quote-btn:focus-visible:after{transform:translate(-50%)rotate(45deg)scale(1)}.settings-modal-scrim{z-index:1000;color:var(--text);-webkit-font-smoothing:antialiased;background:var(--lightningcss-light,#080a0e6b)var(--lightningcss-dark,#0000008c);place-items:center;font-size:14px;line-height:1.5;animation:.15s ease-out settings-modal-fade;display:grid;position:fixed;inset:0}@keyframes settings-modal-fade{0%{opacity:0}to{opacity:1}}.settings-modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);width:min(1100px,96vw);height:min(760px,92vh);box-shadow:var(--shadow);grid-template-columns:232px minmax(0,1fr);display:grid;position:relative;overflow:hidden}.settings-modal__close{z-index:6;width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;place-items:center;transition:background .12s,color .12s;display:grid;position:absolute;top:14px;right:14px}.settings-modal__close:hover{background:var(--hover);color:var(--text-strong)}.settings-modal__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:16px 10px;display:flex;overflow-y:auto}.settings-modal__rail-group+.settings-modal__rail-group{margin-top:14px}.settings-modal__rail-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0;padding:6px 8px 4px;font-size:10px;font-weight:600}.settings-modal__rail ul{margin:0;padding:0;list-style:none}.settings-modal__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:13.5px;line-height:1.4;transition:background .1s,color .1s;display:flex}.settings-modal__rail-item:hover{background:var(--hover)}.settings-modal__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.settings-modal__rail-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.settings-modal__rail-icon svg{width:16px;height:16px;display:block}.settings-modal__rail-item.is-active .settings-modal__rail-icon{color:var(--text-strong)}.settings-modal__rail-avatar{color:#fff;background:linear-gradient(135deg, hsl(var(--hue,220deg) 70% 55%), hsl(calc(var(--hue,220deg) + 40deg) 70% 45%));border-radius:4px;flex-shrink:0;place-items:center;width:18px;height:18px;font-size:9px;font-weight:700;display:grid;overflow:hidden}.settings-modal__rail-avatar img{object-fit:cover;width:100%;height:100%;display:block}.settings-modal__rail-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.settings-modal__content{background:var(--panel);color:var(--text);padding:40px 56px 56px;overflow-y:auto}.settings-modal__content .settings-page__header{margin-bottom:32px}.settings-modal__content .settings-page__eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 6px;font-size:10px;font-weight:600}.settings-modal__content .settings-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:26px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 6px}.settings-modal__content .settings-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.settings-modal__content .settings-form{flex-direction:column;gap:24px;max-width:640px;display:flex}.settings-modal__content .settings-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:20px;display:flex}.settings-modal__content .settings-footer__spacer{flex:1}.settings-modal__content .settings-section{flex-direction:column;gap:20px;display:flex}.settings-modal__content .settings-section__h{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:12px;font-weight:600}.settings-modal__content .settings-field{flex-direction:column;gap:6px;display:flex}.settings-modal__content .settings-field__label{color:var(--text-strong);font-size:13px;font-weight:600}.settings-modal__content .settings-field__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-field__hint.is-error{color:var(--danger)}.settings-modal__content .settings-identity{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:14px;padding:14px 16px;display:flex}.settings-modal__content .settings-identity__meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.settings-modal__content .settings-identity__name{color:var(--text-strong);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:700;line-height:1.25;overflow:hidden}.settings-modal__content .settings-identity__handle{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:1.3;overflow:hidden}.settings-modal__content .settings-identity__tag{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:999px;flex-shrink:0;padding:3px 8px;font-size:10px;font-weight:600}.settings-modal__content .settings-rows{flex-direction:column;display:flex}.settings-modal__content .settings-rows--sectioned .settings-row2{border-top:0;align-items:center;padding:12px 0}.settings-modal__content .settings-row2{border-top:1px solid var(--line);grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:32px;padding:20px 0;display:grid}.settings-modal__content .settings-row2--toggle{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px}.settings-modal__content .settings-row2:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-row2__desc{min-width:0}.settings-modal__content .settings-row2__label{color:var(--text-strong);margin-bottom:4px;font-size:13.5px;font-weight:600;display:block}.settings-modal__content .settings-row2__hint{color:var(--muted);margin:0;font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row2__control{flex-direction:column;align-items:flex-start;gap:8px;min-width:0;max-width:380px;display:flex}.settings-modal__content .settings-row2__control--end{flex-direction:row;justify-content:center;align-items:flex-end;max-width:none}.settings-modal__content .settings-rows__head{border-top:1px solid var(--line);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;padding:24px 0 12px;font-size:11px;font-weight:600}.settings-modal__content .settings-rows__head:first-child{border-top:0;padding-top:4px}.settings-modal__content .settings-rows__head+.settings-row2{border-top:0;padding-top:0}.settings-modal__content .settings-input-group{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:stretch;width:100%;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.settings-modal__content .settings-input-group:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input-group:focus-within{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}.settings-modal__content .settings-input-group__prefix{color:var(--muted);border-right:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius-sm) 0 0 var(--radius-sm);place-items:center;padding:0 10px;font-size:14px;font-weight:500;display:grid}.settings-modal__content .settings-input--in-group{box-shadow:none!important;border-radius:0 var(--radius-sm) var(--radius-sm) 0!important;background:0 0!important;border:0!important;max-width:none!important}.settings-modal__content .settings-input--in-group:focus{box-shadow:none!important;background:0 0!important;border:0!important}.settings-modal__content .settings-linklike{color:var(--muted);cursor:pointer;font:inherit;text-underline-offset:2px;background:0 0;border:0;padding:2px 0;font-size:12.5px;text-decoration:underline;transition:color .12s}.settings-modal__content .settings-linklike:hover{color:var(--text-strong)}.settings-modal__content .settings-row{grid-template-columns:1fr auto;align-items:center;gap:24px;display:grid}.settings-modal__content .settings-row__main{min-width:0}.settings-modal__content .settings-row__label{color:var(--text-strong);margin-bottom:2px;font-size:13.5px;font-weight:600}.settings-modal__content .settings-row__hint{color:var(--muted);font-size:12.5px;line-height:1.5}.settings-modal__content .settings-row__hint.is-error{color:var(--danger)}.settings-modal__content .settings-input{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;max-width:420px;height:36px;color:var(--text);font:inherit;padding:0 12px;font-size:14px;transition:border-color .12s,box-shadow .12s,background .12s}.settings-modal__content .settings-input:hover{border-color:var(--line-strong)}.settings-modal__content .settings-input:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-input--wide{max-width:560px}.settings-modal__content .settings-row .settings-input{width:auto;min-width:240px;max-width:320px}.settings-modal__content .settings-button{background:var(--panel-2);height:34px;color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);font:inherit;cursor:pointer;white-space:nowrap;box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .1s,border-color .1s,box-shadow 80ms,transform 80ms;display:inline-flex}.settings-modal__content .settings-button:hover{background:var(--panel-3);border-color:var(--line-strong)}.settings-modal__content .settings-button:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.settings-modal__content .settings-button:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-button:disabled{opacity:.55;cursor:not-allowed}.settings-modal__content .settings-button--primary{background:var(--accent);color:var(--accent-contrast);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong))}.settings-modal__content .settings-button--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.settings-modal__content .settings-switch{appearance:none;background:var(--line-strong);cursor:pointer;border:0;border-radius:9px;flex-shrink:0;width:32px;height:18px;margin:0;transition:background .15s;position:relative}.settings-modal__content .settings-switch:checked{background:var(--accent)}.settings-modal__content .settings-switch:disabled{opacity:.5;cursor:not-allowed}.settings-modal__content .settings-switch:after{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000040}.settings-modal__content .settings-switch:checked:after{transform:translate(14px)}.settings-modal__content .settings-switch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);outline:0}.settings-modal__content .settings-actions{justify-content:flex-end;align-items:center;gap:12px;margin-top:4px;display:flex}.settings-modal__content .settings-status{color:var(--muted);margin:0;font-size:13px}.settings-modal__content .settings-status.is-error{color:var(--danger)}@media (width<=720px){.settings-modal{border-radius:0;grid-template-rows:auto 1fr;grid-template-columns:1fr;width:100vw;height:100dvh}.settings-modal__rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;padding:8px;overflow-x:auto}.settings-modal__content{padding:24px 20px 60px}.settings-modal__content .settings-row2{grid-template-columns:1fr;gap:10px}.settings-modal__content .settings-row2__control{max-width:none}}.ws-settings{color:var(--text);z-index:50;background:var(--lightningcss-light,#0f0f0f38)var(--lightningcss-dark,#00000059);place-items:center;padding:28px 80px 28px 28px;font-size:14px;line-height:1.5;display:grid;position:fixed;inset:0}.ws-settings__panel{background:var(--panel);border:1px solid var(--line);width:100%;max-width:1400px;height:100%;box-shadow:var(--shadow);grid-template-columns:260px minmax(0,1fr);display:grid;overflow:hidden}.ws-settings__rail{background:var(--panel-2);border-right:1px solid var(--line);flex-direction:column;padding:14px 10px 18px;display:flex;overflow-y:auto}.ws-settings__rail-search{margin:2px 4px 12px;position:relative}.ws-settings__rail-search-icon{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.ws-settings__rail-search-icon svg{width:14px;height:14px;display:block}.ws-settings__rail-search-input{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;height:32px;color:var(--text);font:inherit;padding:0 12px 0 32px;font-size:13px}.ws-settings__rail-search-input::placeholder{color:var(--muted)}.ws-settings__rail-search-input:disabled{cursor:not-allowed;opacity:.65}.ws-settings__rail-group{margin-top:6px}.ws-settings__rail-heading{color:var(--muted);letter-spacing:.02em;margin:0;padding:8px 10px 6px;font-size:11.5px;font-weight:600}.ws-settings__rail-heading-name{color:var(--text-strong);font-weight:700}.ws-settings__rail-list{margin:0;padding:0;list-style:none}.ws-settings__rail-item{border-radius:var(--radius-sm);cursor:pointer;width:100%;font:inherit;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;margin:1px 0;padding:6px 10px;font-size:14px;line-height:1.4;transition:background .1s,color .1s;display:flex}.ws-settings__rail-item:hover{background:var(--hover)}.ws-settings__rail-item.is-active{background:var(--hover-strong);color:var(--text-strong);font-weight:600}.ws-settings__rail-item-icon{width:16px;height:16px;color:var(--muted);flex-shrink:0;place-items:center;display:grid}.ws-settings__rail-item-icon svg{width:16px;height:16px;display:block}.ws-settings__rail-item.is-active .ws-settings__rail-item-icon{color:var(--text-strong)}.ws-settings__rail-item-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ws-settings__content{background:var(--bg);position:relative;overflow-y:auto}.ws-settings__content-inner{max-width:740px;padding:56px 80px 80px}.ws-settings__close{border:1px solid var(--line-strong);background:var(--panel);width:36px;height:36px;color:var(--text-strong);cursor:pointer;z-index:60;border-radius:50%;place-items:center;transition:background .12s,color .12s,border-color .12s;display:grid;position:fixed;top:28px;right:22px;box-shadow:0 1px 3px #00000026}@media (width<=760px){.ws-settings{padding:0}.ws-settings__panel{border:0;border-radius:0;max-width:none}}.ws-settings__close:hover{background:var(--panel-2);color:var(--text-strong);border-color:var(--line-strong)}.ws-settings__error{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--danger);margin:0 0 20px;padding:14px 16px;font-size:13.5px}.ws-settings .ws-page__header{margin-bottom:32px}.ws-settings .ws-page__h1{letter-spacing:-.01em;color:var(--text-strong);font-size:28px;font-weight:700;line-height:1.2;font-family:var(--font-display);margin:0 0 8px}.ws-settings .ws-page__lead{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.workspace-settings-empty{background:var(--panel-2);border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);padding:24px;font-size:14px;line-height:1.6}.workspace-settings-empty p{margin:0}.ws-section{border-top:1px solid var(--line);flex-direction:column;margin-top:24px;display:flex}.ws-section__h{color:var(--text-strong);margin:0;padding:18px 0 6px;font-size:14px;font-weight:700}.ws-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;padding:18px 0;display:grid}.ws-section>.ws-row:first-child,.ws-section>.ws-section__h+.ws-row{border-top:0}.ws-row__main{min-width:0}.ws-row__label{color:var(--text-strong);margin-bottom:4px;font-size:14px;font-weight:600}.ws-row__hint{color:var(--muted);font-size:13px;line-height:1.5}.ws-row__hint b{color:var(--text-strong);font-weight:600}.ws-row__value{color:var(--text-strong);text-align:right;word-break:break-word;max-width:320px;font-size:14px;font-weight:500}.ws-row__control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0;max-width:420px;display:flex}.ws-strip{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;font-size:14px;display:flex}.ws-strip__avatar{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:28px;height:28px;color:var(--brand-contrast);border-radius:6px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid;overflow:hidden}.ws-strip__avatar img{object-fit:cover;width:100%;height:100%;display:block}.ws-strip__name{color:var(--text-strong);font-weight:600}.ws-strip__pill{letter-spacing:.01em;border-radius:999px;margin-left:auto;padding:2px 10px;font-size:12px;font-weight:600}.ws-strip__pill--owner{background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success);border:1px solid color-mix(in srgb, var(--success) 32%, transparent)}.ws-strip__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 15%, transparent);color:var(--delivery-accent);border:1px solid color-mix(in srgb, var(--delivery-accent) 32%, transparent)}.ws-strip__pill--member,.ws-strip__pill--guest,.ws-strip__pill--bot{background:var(--panel-3,var(--hover));color:var(--text);border:1px solid var(--line)}.ws-input{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 12px;font-size:14px}.ws-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-input:disabled{opacity:.65;cursor:not-allowed}.ws-select{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:220px;max-width:100%;height:34px;color:var(--text-strong);font:inherit;padding:0 34px 0 10px;font-size:13.5px}.ws-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:0}.ws-select:disabled{opacity:.65;cursor:not-allowed}.ws-file{display:none}.ws-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:12px;padding:14px 0 0;display:flex}.ws-status{min-height:20px;color:var(--muted);flex:1;margin:0;font-size:13px}.ws-status.is-error{color:var(--danger)}.ws-input[readonly]{cursor:default;color:var(--text)}.ws-btn{background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius);height:34px;color:var(--text-strong);font:inherit;cursor:pointer;box-shadow:var(--key-edge);padding:0 14px;font-size:13.5px;font-weight:500;transition:background .12s,color .12s,border-color .12s,box-shadow 80ms,transform 80ms}.ws-btn:active:not(:disabled){box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.ws-btn:hover:not(:disabled){background:var(--panel-3,var(--hover-strong));border-color:var(--line-strong)}.ws-btn:disabled{opacity:.55;cursor:not-allowed}.ws-btn--danger{color:var(--danger);border-color:var(--line)}.ws-btn--danger:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 9%, transparent);border-color:var(--danger)}.ws-btn--primary{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--text-strong));color:var(--accent-contrast);align-items:center;gap:6px;display:inline-flex}.ws-btn--primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ws-btn--primary svg{width:14px;height:14px}.ws-settings__content:has(.ws-members-page){overflow:hidden}.ws-settings__content-inner:has(.ws-members-page){flex-direction:column;max-width:none;height:100%;min-height:0;padding:56px 80px 28px;display:flex}.ws-members-page{flex-direction:column;flex:1;min-height:0;display:flex}.ws-members-page__header{flex:none}.ws-members__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-members__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-members__controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-members__search{align-items:center;display:flex;position:relative}.ws-members__search-icon{width:14px;height:14px;color:var(--muted);pointer-events:none;display:inline-flex;position:absolute;left:10px}.ws-members__search-icon svg{width:100%;height:100%}.ws-members__search-input{width:220px;height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px 0 32px;font-size:13px}.ws-members__search-input::-webkit-search-cancel-button{appearance:none}.ws-members__search-input:focus{border-color:var(--accent)}.ws-members__role-select{height:34px;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;border-radius:6px;outline:none;padding:0 28px 0 10px;font-size:13px}.ws-members__list{border:1px solid var(--line);background:var(--panel);border-radius:6px;flex:auto;min-height:0;overflow:hidden auto}.ws-members__row{border-bottom:1px solid var(--line);box-sizing:border-box;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:0 16px;display:grid}.ws-members__avatar{letter-spacing:-.02em;background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex;overflow:hidden}.ws-members__avatar--bot{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__avatar img{object-fit:cover;width:100%;height:100%}.ws-members__main{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-members__name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-members__meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-members__handle{font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px}.ws-members__dot{opacity:.6}.ws-members__pill{text-transform:capitalize;color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-members__pill--owner{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.ws-members__pill--moderator{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-members__pill--bot{background:var(--accent-soft);color:var(--accent)}.ws-members__pill--guest{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-members__actions{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.ws-members__actions:hover:not(:disabled){background:var(--bg);border-color:var(--line);color:var(--text)}.ws-members__actions:disabled{opacity:.45;cursor:not-allowed}.ws-members__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--panel);border-radius:8px;margin-top:24px;padding:36px 20px;font-size:13.5px}.ws-members__loading{color:var(--muted);text-align:center;border-top:1px solid var(--line);padding:10px 16px;font-size:12.5px}.ws-members__row--skeleton{height:64px}.ws-members__skeleton{background:linear-gradient(90deg,#7f7f7f14,#7f7f7f2e,#7f7f7f14) 0 0/200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite ws-members-shimmer}.ws-members__skeleton--line{height:10px;margin:4px 0}.ws-members__skeleton--pill{border-radius:999px;width:64px;height:18px}@keyframes ws-members-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=760px){.ws-settings__panel{grid-template-rows:auto 1fr;grid-template-columns:1fr}.ws-settings__rail{border-right:0;border-bottom:1px solid var(--line);padding:10px}.ws-settings__content-inner{padding:32px 20px 60px}.ws-settings__close{top:10px;right:12px}}.ws-bots-page{flex-direction:column;gap:0;display:flex}.ws-bots__toolbar{background:var(--bg);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:4px 0 12px;padding:14px 0 12px;display:flex}.ws-bots__count{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px;font-weight:600}.ws-bots__toolbar-actions{align-items:center;gap:8px;display:flex}.ws-bots__panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:8px 0 16px;padding:18px 20px}.ws-bots__empty{text-align:center;border:1px dashed var(--line);color:var(--muted);background:var(--surface);border-radius:8px;margin-top:16px;padding:36px 20px;font-size:13.5px}.ws-bots__list{flex-direction:column;margin-bottom:60px;display:flex}.ws-bots__row{border-bottom:1px solid var(--line)}.ws-bots__row:last-child{border-bottom:0}.ws-bots__row.is-expanded{background:var(--surface)}.ws-bots__row-main{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:36px 1fr auto auto;align-items:center;gap:14px;padding:14px 16px;display:grid}.ws-bots__row-main:hover{background:var(--hover,#7f7f7f0f)}.ws-bots__row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__row-name{color:var(--text-strong,var(--text));white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ws-bots__row-meta{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:12.5px;display:flex;overflow:hidden}.ws-bots__owner-pill{color:var(--text);white-space:nowrap;background:#7f7f7f24;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.ws-bots__owner-pill--service{background:color-mix(in srgb, var(--delivery-accent) 16%, transparent);color:var(--delivery-accent)}.ws-bots__owner-pill--user{background:color-mix(in srgb, var(--warn) 18%, transparent);color:color-mix(in srgb, var(--warn) 72%, var(--text))}.ws-bots__chevron{width:20px;height:20px;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.ws-bots__detail{border-top:1px dashed var(--line);flex-direction:column;gap:12px;padding:4px 16px 18px;display:flex}.ws-bots__detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-top:14px;display:flex}.ws-bots__detail-title{color:var(--text-strong,var(--text));margin:0 0 4px;font-size:13.5px;font-weight:600}.ws-bots__detail-hint{color:var(--muted);max-width:60ch;margin:0;font-size:12.5px}.ws-bots__detail-actions{flex-wrap:wrap;gap:8px;display:flex}.ws-bots__detail-empty{color:var(--muted);background:var(--bg);border:1px dashed var(--line);border-radius:6px;margin:0;padding:16px;font-size:13px}.ws-bots__token-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ws-bots__token-row{background:var(--bg);border:1px solid var(--line);border-radius:6px;justify-content:space-between;align-items:center;gap:16px;padding:12px 14px;display:flex}.ws-bots__token-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-bots__token-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__token-meta{color:var(--muted);font-size:12.5px}.ws-bots__scope-row{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.ws-bots__scope-chip{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:999px;padding:2px 8px;font-size:11.5px}.ws-bots__form{flex-direction:column;gap:16px;display:flex}.ws-bots__form-header{flex-direction:column;gap:4px;display:flex}.ws-bots__form-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__form-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=640px){.ws-bots__form-grid{grid-template-columns:1fr}}.ws-bots__form-field{border:0;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.ws-bots__form-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__form-input{height:34px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px;outline:none;padding:0 12px;font-size:13.5px}.ws-bots__form-input:focus{border-color:var(--accent)}.ws-bots__form-handle{background:var(--surface);border:1px solid var(--line);border-radius:6px;align-items:center;gap:6px;padding:0 10px;display:flex}.ws-bots__form-handle span{color:var(--muted);font-family:var(--font-mono);font-size:13px}.ws-bots__form-handle .ws-bots__form-input{background:0 0;border:0;flex:1;padding-left:0}.ws-bots__choices{flex-direction:column;gap:8px;display:flex}.ws-bots__choice{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:6px;grid-template-rows:auto auto;grid-template-columns:18px 1fr;gap:2px 10px;padding:10px 12px;display:grid}.ws-bots__choice.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.ws-bots__choice input{accent-color:var(--accent);grid-row:1/span 2;align-self:center}.ws-bots__choice-title{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-bots__choice-hint{color:var(--muted);font-size:12.5px}.ws-bots__form-error{background:color-mix(in srgb, var(--danger) 9%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 32%, transparent);border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.ws-bots__form-actions{justify-content:flex-end;gap:8px;display:flex}.ws-bots__token-form-panel{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:14px}.ws-bots__token-form .ws-bots__choices{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}@media (width<=720px){.ws-bots__token-form .ws-bots__choices{grid-template-columns:1fr}}.ws-bots__reveal{background:var(--surface);border:1px solid var(--accent);border-radius:8px;flex-direction:column;gap:14px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-bots__reveal-header{flex-direction:column;gap:4px;display:flex}.ws-bots__reveal-title{color:var(--text-strong,var(--text));margin:0;font-size:16px;font-weight:600}.ws-bots__reveal-hint{color:var(--muted);max-width:60ch;margin:0;font-size:13px}.ws-bots__reveal-hint code{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:12px}.ws-bots__reveal-field{flex-direction:column;gap:6px;display:flex}.ws-bots__reveal-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.ws-bots__reveal-row{align-items:center;gap:8px;display:flex}.ws-bots__reveal-input{height:34px;font-family:var(--font-mono);color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:6px;flex:1;padding:0 12px;font-size:13px}.ws-bots__reveal-snippet-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.ws-bots__reveal-details{border:1px solid var(--line);background:var(--bg);border-radius:6px}.ws-bots__reveal-summary{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;padding:10px 14px;font-size:11px;font-weight:600}.ws-bots__reveal-summary:hover{color:var(--text)}.ws-bots__reveal-details-body{gap:8px;padding:0 14px 12px;display:grid}.ws-bots__reveal-details-body .ws-bots__reveal-hint{margin:0}.ws-bots__setup-mode{background:var(--bg);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(2,minmax(0,1fr));width:min(320px,100%);padding:3px;display:inline-grid}.ws-bots__setup-mode button{min-height:30px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:0 12px;font-size:12.5px;font-weight:600}.ws-bots__setup-mode button.is-active{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--line)}.ws-bots__reveal-snippet{background:var(--bg);border:1px solid var(--line);font-family:var(--font-mono);color:var(--text);white-space:pre-wrap;border-radius:6px;margin:0;padding:12px 14px;font-size:12.5px;overflow-x:auto}.ws-bots__reveal-ack{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.ws-bots__reveal-actions{justify-content:flex-end;display:flex}.ws-bots__my-list{flex-direction:column;gap:18px;display:flex}.ws-bots__my-group{flex-direction:column;gap:8px;display:flex}.ws-bots__my-group-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-bots__my-group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:13px;font-weight:600}.ws-bots__my-rows{border:1px solid var(--line);background:var(--surface);border-radius:6px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-bots__my-row{border-bottom:1px solid var(--line);grid-template-columns:36px 1fr auto;align-items:center;gap:14px;padding:12px 14px;display:grid}.ws-bots__my-row:last-child{border-bottom:0}.ws-bots__my-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.ws-bots__my-row-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-bots__my-row-meta{color:var(--muted);align-items:center;gap:6px;font-size:12.5px;display:flex}.appearance-modes{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:460px;display:grid}.appearance-mode{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel-2);min-height:40px;color:var(--text);box-shadow:var(--key-edge);justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:13.5px;font-weight:600;transition:background .12s,border-color .12s,color .12s,box-shadow 80ms,transform 80ms;display:inline-flex}.appearance-mode:hover{background:var(--panel-3)}.appearance-mode:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.appearance-mode.is-active{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));color:var(--accent)}.appearance-mode__icon{place-items:center;width:16px;height:16px;display:grid}.appearance-mode__icon svg{width:16px;height:16px;display:block}.board-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:640px;display:grid}.board-swatch{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--panel);color:var(--text);text-align:left;box-shadow:var(--key-edge);gap:10px;padding:12px;transition:border-color .12s,box-shadow 80ms,transform 80ms;display:grid}.board-swatch:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line-strong))}.board-swatch:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.board-swatch.is-active{border-color:color-mix(in srgb, var(--accent) 70%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.board-swatch__preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);grid-template-columns:18px minmax(0,1fr);height:64px;display:grid;overflow:hidden}.board-swatch__rail{background:var(--rail);border-right:1px solid var(--line)}.board-swatch__body{position:relative}.board-swatch__key{background:var(--accent);width:22px;height:14px;box-shadow:0 1.5px 0 color-mix(in srgb, var(--text-strong) 25%, transparent);border-radius:4px;position:absolute;top:10px;left:10px}.board-swatch__bubble{border:1px solid var(--line-strong);background:var(--panel);border-radius:6px;height:22px;position:absolute;bottom:10px;left:40px;right:10px}.board-swatch__meta{gap:2px;display:grid}.board-swatch__meta strong{color:var(--text-strong);font-size:13.5px;font-family:var(--font-display);font-weight:650}.board-swatch__meta span{color:var(--muted);font-size:12px}.message-layout-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:640px;display:grid}.message-layout-option{border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--panel);min-height:92px;color:var(--text);text-align:left;box-shadow:var(--key-edge);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:12px;padding:12px;transition:border-color .12s,box-shadow 80ms,transform 80ms;display:grid}.message-layout-option:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line-strong))}.message-layout-option:active{box-shadow:var(--key-edge-pressed);transform:translateY(1px)}.message-layout-option:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.message-layout-option.is-active{border-color:color-mix(in srgb, var(--accent) 70%, var(--line-strong));box-shadow:var(--key-edge), 0 0 0 3px color-mix(in srgb, var(--accent) 16%, transparent)}.message-layout-option__preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);align-content:center;gap:3px;height:66px;padding:9px;display:grid}.message-layout-option__activity,.message-layout-option__answer{background:var(--panel-2);justify-self:start;width:86%;display:block}.message-layout-option__activity{background:color-mix(in srgb, var(--activity-accent) 18%, var(--panel-2));height:16px}.message-layout-option__answer{background:var(--delivery-accent-soft);height:24px}.message-layout-option__preview[data-layout=standard] .message-layout-option__activity{border:1px solid color-mix(in srgb, var(--activity-accent) 30%, var(--line));border-bottom:0;border-radius:6px 6px 0 0}.message-layout-option__preview[data-layout=standard] .message-layout-option__answer{border:1px solid color-mix(in srgb, var(--delivery-accent) 24%, var(--line));border-top:0;border-radius:0 0 6px 6px}.message-layout-option__preview[data-layout=outlined] .message-layout-option__activity,.message-layout-option__preview[data-layout=outlined] .message-layout-option__answer{width:100%}.message-layout-option__preview[data-layout=outlined] .message-layout-option__activity{border:1px solid color-mix(in srgb, var(--activity-accent) 42%, var(--line));border-radius:6px 6px 0 0}.message-layout-option__preview[data-layout=outlined] .message-layout-option__answer{border:1px solid color-mix(in srgb, var(--delivery-accent) 36%, var(--line));border-radius:0 0 6px 6px;margin-top:-4px}.message-layout-option__meta{gap:4px;min-width:0;display:grid}.message-layout-option__meta strong{color:var(--text-strong);font-family:var(--font-display);font-size:13.5px;font-weight:650}.message-layout-option__meta span{color:var(--muted);font-size:12px;line-height:1.35}@media (width<=640px){.appearance-modes,.board-grid,.message-layout-grid{grid-template-columns:1fr}.message-layout-option{grid-template-columns:92px minmax(0,1fr)}}.ws-intg-page{padding-bottom:60px}.ws-intg__app-icon{background:var(--surface);border:1px solid var(--line);width:36px;height:36px;color:var(--text);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ws-intg__wizard{background:var(--surface);border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:16px;margin:8px 0 16px;padding:18px 20px;display:flex}.ws-intg__wizard-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__wizard-step{color:var(--muted);white-space:nowrap;padding-top:2px;font-size:11.5px;font-weight:600}.ws-intg__wizard-body{flex-direction:column;gap:14px;display:flex}.ws-intg__catalog{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.ws-intg__catalog-card{border:1px solid var(--line);text-align:left;cursor:pointer;color:inherit;background:0 0;border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;transition:border-color .12s,background .12s;display:flex}.ws-intg__catalog-card:hover{border-color:var(--accent);background:var(--hover,#7f7f7f0f)}.ws-intg__catalog-name{color:var(--text-strong,var(--text));font-size:14px;font-weight:600}.ws-intg__catalog-desc{color:var(--muted);font-size:12.5px;line-height:1.45}.ws-intg__chips{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.ws-intg__chip{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:3px 6px 3px 10px;font-size:12px;font-weight:600;display:inline-flex}.ws-intg__chip-remove{width:16px;height:16px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.ws-intg__chip-remove:hover{color:var(--text);background:#7f7f7f2e}.ws-intg__member-results{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:2px;max-height:220px;margin:6px 0 0;padding:4px;list-style:none;display:flex;overflow-y:auto}.ws-intg__member-result{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;display:flex}.ws-intg__member-result:hover{background:var(--hover,#7f7f7f14)}.ws-intg__toggle{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.ws-intg__toggle input[type=checkbox]{flex-shrink:0;margin-top:3px}.ws-intg__toggle>span{flex-direction:column;gap:2px;display:flex}.ws-intg__panel{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.ws-intg__panel-title{color:var(--text-strong,var(--text));margin:0 0 3px;font-size:13px;font-weight:600}.ws-intg__panel-hint{color:var(--muted);max-width:560px;margin:0;font-size:12.5px;line-height:1.45}.ws-intg__panel-empty{color:var(--muted);margin:0;font-size:12.5px}.ws-intg__inline-form{border:1px dashed var(--line);border-radius:8px;flex-direction:column;gap:12px;padding:14px;display:flex}.ws-intg__item-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ws-intg__item-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:14px;padding:11px 0;display:flex}.ws-intg__item-row:last-child{border-bottom:0}.ws-intg__item-row--stacked{flex-direction:column;align-items:stretch}.ws-intg__item-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.ws-intg__item-main{flex-direction:column;gap:4px;min-width:0;display:flex}.ws-intg__item-name{color:var(--text-strong,var(--text));font-size:13.5px;font-weight:600}.ws-intg__item-meta{color:var(--muted);overflow-wrap:anywhere;font-size:12px}.ws-intg__url{font-family:var(--mono,ui-monospace, monospace);font-size:11.5px}.ws-intg__item-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.ws-intg__type-chips{flex-wrap:wrap;gap:5px;display:flex}.ws-intg__secret{border:1px solid color-mix(in srgb, var(--warn) 45%, var(--line));background:color-mix(in srgb, var(--warn) 7%, transparent);border-radius:8px;flex-direction:column;gap:6px;margin-top:6px;padding:10px 12px;display:flex}.ws-intg__secret-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.ws-intg__secret-row{align-items:center;gap:8px;display:flex}.ws-intg__secret-row .ws-bots__reveal-input{flex:1;min-width:0}.ws-intg__confirm{border:1px solid color-mix(in srgb, var(--danger,#d33) 40%, var(--line));background:color-mix(in srgb, var(--danger,#d33) 6%, transparent);border-radius:8px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.ws-intg__confirm-text{color:var(--text);margin:0;font-size:13px;line-height:1.5}.ws-intg__event-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;margin-top:10px;display:grid}.ws-intg__event-option{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.ws-intg__event-option.is-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.ws-intg__deliveries{border-top:1px dashed var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.ws-intg__deliveries-scroll{border:1px solid var(--line);border-radius:8px;max-height:420px;overflow-y:auto}.ws-intg__delivery{border-bottom:1px solid var(--line)}.ws-intg__delivery:last-child{border-bottom:0}.ws-intg__delivery-row{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:0;grid-template-columns:84px 1fr auto auto;align-items:center;gap:12px;padding:10px 12px;font-size:12.5px;display:grid}.ws-intg__delivery-row:hover{background:var(--hover,#7f7f7f0f)}.ws-intg__delivery-status{text-align:center;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.ws-intg__delivery-status--ok{background:color-mix(in srgb, var(--delivery-accent,#2a9d5c) 16%, transparent);color:var(--delivery-accent,#2a9d5c)}.ws-intg__delivery-status--fail{background:color-mix(in srgb, var(--danger,#d33) 14%, transparent);color:var(--danger,#d33)}.ws-intg__delivery-type{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ws-intg__delivery-attempt,.ws-intg__delivery-time{color:var(--muted);white-space:nowrap;font-size:11.5px}.ws-intg__delivery-detail{flex-direction:column;gap:10px;padding:4px 12px 14px;display:flex}.ws-intg__delivery-block{flex-direction:column;gap:4px;display:flex}.ws-intg__delivery-block .ws-bots__reveal-snippet{max-height:260px;overflow:auto}.ws-intg__deliveries-more{justify-content:center;display:flex}.ws-intg__deliveries-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.ws-intg__section{flex-direction:column;gap:12px;margin-top:28px;display:flex}.ws-intg__section-title{color:var(--text-strong,var(--text));margin:0;font-size:15px;font-weight:600}.ws-intg__section-hint{color:var(--muted);margin:-6px 0 0;font-size:12.5px}.ws-bots__choice.is-disabled{opacity:.55;cursor:not-allowed} diff --git a/apps/api/internal/webassets/dist/_app/immutable/assets/12.CkeTUuaJ.css b/apps/api/internal/webassets/dist/_app/immutable/assets/12.CkeTUuaJ.css new file mode 100644 index 00000000..e1382a19 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/assets/12.CkeTUuaJ.css @@ -0,0 +1 @@ +.embed-shell.svelte-b3w79y{background:var(--panel);min-width:0;height:100dvh;position:relative;overflow:hidden}.embed-shell.svelte-b3w79y .thread{z-index:auto;width:100%;max-width:none;height:100%;box-shadow:none;border-left:0;position:relative;inset:auto}.embed-shell.svelte-b3w79y .thread>header{min-height:54px;padding-block:9px}.embed-notice.svelte-b3w79y{z-index:2;border:1px solid color-mix(in srgb, var(--danger) 40%, var(--line));border-radius:var(--radius);background:color-mix(in srgb, var(--danger) 9%, var(--panel));color:var(--danger);box-shadow:var(--shadow);margin:0;padding:9px 11px;font-size:12px;position:absolute;bottom:78px;left:14px;right:14px}.embed-state-shell.svelte-b3w79y{background:radial-gradient(color-mix(in srgb, var(--text) 5%, transparent) 1px, transparent 1.5px) 0 0 / 18px 18px, var(--bg);place-items:center;min-height:100dvh;padding:24px;display:grid}.embed-state-card.svelte-b3w79y{border:1px solid var(--line-strong);border-radius:var(--radius-xl);background:var(--panel);width:min(100%,360px);box-shadow:var(--key-edge), var(--shadow);text-align:center;gap:12px;padding:28px;display:grid}.embed-state-card.svelte-b3w79y h1:where(.svelte-b3w79y),.embed-state-card.svelte-b3w79y p:where(.svelte-b3w79y){margin:0}.embed-state-card.svelte-b3w79y h1:where(.svelte-b3w79y){color:var(--text-strong);font-family:var(--font-display);font-size:22px}.embed-state-card.svelte-b3w79y p:where(.svelte-b3w79y){color:var(--muted);font-size:13px;line-height:1.5}.embed-mark.svelte-b3w79y{background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:42px;height:42px;color:var(--brand-contrast);border-radius:11px;place-items:center;margin:0 auto 2px;font-weight:800;display:grid}.embed-action.svelte-b3w79y{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--line));border-radius:var(--radius);background:var(--accent);min-height:40px;color:var(--accent-contrast);font:inherit;cursor:pointer;justify-content:center;align-items:center;margin-top:4px;padding:0 16px;font-weight:700;text-decoration:none;display:inline-flex}.embed-action.svelte-b3w79y:hover{background:var(--accent-hover)}.embed-loading.svelte-b3w79y{gap:7px;display:flex}.embed-loading.svelte-b3w79y span:where(.svelte-b3w79y){background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite svelte-b3w79y-embed-pulse}.embed-loading.svelte-b3w79y span:where(.svelte-b3w79y):nth-child(2){animation-delay:.12s}.embed-loading.svelte-b3w79y span:where(.svelte-b3w79y):nth-child(3){animation-delay:.24s}@keyframes svelte-b3w79y-embed-pulse{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}} diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/2PbeDRak.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/2PbeDRak.js deleted file mode 100644 index efb4b9eb..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/chunks/2PbeDRak.js +++ /dev/null @@ -1,74 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.js","./HclGiUj8.js"])))=>i.map(i=>d[i]); -import{t as e}from"./DK3Fl9T5.js";import{B as t,C as n,D as r,F as i,H as a,I as o,K as s,L as c,N as l,O as u,P as d,Q as f,R as p,S as m,U as h,V as g,W as _,X as v,Y as y,Z as b,_ as x,a as S,at as C,b as w,bt as T,c as E,ct as D,dt as O,f as k,ft as A,gt as ee,h as j,ht as te,it as M,j as N,k as P,m as ne,n as re,nt as F,o as ie,ot as I,p as L,q as R,r as ae,rt as z,s as oe,st as B,tt as V,u as se,ut as H,v as ce,x as le,xt as ue,y as de,yt as fe,z as U}from"./CX2IBWVU.js";import{t as pe}from"./Ct85fhNP.js";import{t as me}from"./HclGiUj8.js";import"./xihTtKlq.js";import{a as he,i as ge,n as W,t as _e}from"./CRJVHtae.js";import"./H8kj0_R5.js";import{a as ve,i as ye,n as be,t as xe}from"./Qo16U5GS.js";import{t as Se}from"./OQjxVT6U.js";import"./BMVuLp4J.js";import{t as G}from"./BBHxP-zi.js";import{f as Ce,r as K}from"./DfVq8Tl1.js";var q=`clickclack:color-mode:v1`,J=`clickclack:board-theme:v1`,we=`clickclack:message-layout:v1`,Y=`system`,X=`signal`,Z=`standard`,Q=[{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`system`,label:`System`}],Te=[{id:`signal`,label:`Signal`,blurb:`Porcelain board, electric cyan`},{id:`ember`,label:`Ember`,blurb:`Warm paper, ember coral`},{id:`moss`,label:`Moss`,blurb:`Sage plate, verdant green`},{id:`iris`,label:`Iris`,blurb:`Violet plate, twilight iris`}],Ee=[{id:`standard`,label:`Standard`,blurb:`Compact messages with activity attached`},{id:`outlined`,label:`Outlined chains`,blurb:`Every message outlined; agent activity caps its answer`}];function De(e){return e===`light`||e===`dark`||e===`system`}function Oe(e){return Te.some(t=>t.id===e)}function ke(e){return Ee.some(t=>t.id===e)}function Ae(){try{let e=window.localStorage.getItem(q);return De(e)?e:Y}catch{return Y}}function je(){try{let e=window.localStorage.getItem(J);return Oe(e)?e:X}catch{return X}}function Me(){try{let e=window.localStorage.getItem(we);return ke(e)?e:Z}catch{return Z}}function Ne(e){try{e===`system`?document.documentElement.removeAttribute(`data-color-mode`):document.documentElement.setAttribute(`data-color-mode`,e)}catch{}}function Pe(e){try{e===`signal`?document.documentElement.removeAttribute(`data-board`):document.documentElement.setAttribute(`data-board`,e)}catch{}}function Fe(e){try{e===`standard`?document.documentElement.removeAttribute(`data-message-layout`):document.documentElement.setAttribute(`data-message-layout`,e)}catch{}}function Ie(e){Ne(e);try{e===`system`?window.localStorage.removeItem(q):window.localStorage.setItem(q,e)}catch{}}function Le(e){Pe(e);try{e===`signal`?window.localStorage.removeItem(J):window.localStorage.setItem(J,e)}catch{}}function Re(e){Fe(e);try{e===`standard`?window.localStorage.removeItem(we):window.localStorage.setItem(we,e)}catch{}}function ze(){Ne(Ae()),Pe(je()),Fe(Me())}var Be=typeof window>`u`?void 0:window.clickclackDesktop;async function Ve(e){return e.type.startsWith(`image/`)?He(e):e.type.startsWith(`video/`)?Ue(e):{width:0,height:0,durationMS:0}}function He(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>{let e={width:r.naturalWidth,height:r.naturalHeight,durationMS:0};URL.revokeObjectURL(n),t(e)},r.onerror=()=>{URL.revokeObjectURL(n),t({width:0,height:0,durationMS:0})},r.src=n})}function Ue(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=document.createElement(`video`);r.preload=`metadata`,r.muted=!0;let i=()=>{URL.revokeObjectURL(n),r.src=``};r.onloadedmetadata=()=>{let e=Number.isFinite(r.duration)&&r.duration>0?Math.round(r.duration*1e3):0,n={width:r.videoWidth,height:r.videoHeight,durationMS:e};i(),t(n)},r.onerror=()=>{i(),t({width:0,height:0,durationMS:0})},r.src=n})}var We=[{title:`Ship it`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYjJ1bm1meHE4N2x3bnN0djJkMWtjNGc5bXYzZDFiOHBsbG16M3F0ZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l0HlHFRbmaZtBRhXG/giphy.gif`,tags:[`ship`,`launch`,`done`]},{title:`Approved`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazBpbzJ6ODZ3bXQ3OHBvNGJidWZoajc0cHV6YnVub3MzZ3c1a2Z2dSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/111ebonMs90YLu/giphy.gif`,tags:[`yes`,`approved`,`nice`]},{title:`Deploy dance`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExY3NkaTVmZW9ydWNnZnl0ZWQ5aHQyeGNrd2k3NG4wZWNqYzNmd3k1ZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/GeimqsH0TLDt4tScGw/giphy.gif`,tags:[`deploy`,`dance`,`celebrate`]},{title:`Looking`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYWZ3emE0dm5mN2h0bGVsY2w0OXBodGd2cGJlNDRiZXo1YWNtdWRmZyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/26n6WywJyh39n1pBu/giphy.gif`,tags:[`search`,`looking`,`debug`]},{title:`Typing faster`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWFlbnJnbnIzbHYxcDIzdXZ3NGF3N2FocHNvMmR5enU3bHpycHBlZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/13HgwGsXF0aiGY/giphy.gif`,tags:[`typing`,`code`,`work`]},{title:`Tiny victory`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdjJ2b2tqNmF4dG16NjE0eXhuc3h5bTlvamgwNTR0Zmd6ZjhtM2JuaSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3o7abKhOpu0NwenH3O/giphy.gif`,tags:[`win`,`victory`,`celebrate`]}],Ge=Symbol(`clickclackAnimatedURL`);function Ke(e){return e[Ge]||e.currentSrc||e.src}function qe(e){let t=new Map,n=new Map,r=new Map,i=!1,a=e=>{try{let t=new URL(e,window.location.href);if(t.hostname!==`giphy.com`&&!t.hostname.endsWith(`.giphy.com`))return``;let n=t.pathname.match(/\/media\/(?:v1\.[^/]+\/)?([^/]+)\/giphy\.gif$/);if(n)return`${t.origin}/media/${n[1]}/giphy_s.gif`}catch{return``}return``},o=e=>`${e}${e.includes(`?`)?`&`:`?`}cc_replay=${Date.now()}`,s=(e,r,a,s,c,l=!1)=>{let u=t.get(r);u&&window.clearTimeout(u);let d=(n.get(r)||0)+1;n.set(r,d),e.classList.add(`playing`),e.classList.remove(`paused`),a.disabled=!0,a.tabIndex=-1,a.ariaHidden=`true`;let f=!1,p=()=>{if(f||(f=!0,i||n.get(r)!==d))return;let o=window.setTimeout(()=>{i||n.get(r)!==d||(e.classList.remove(`playing`),e.classList.add(`paused`),a.disabled=!1,a.tabIndex=0,a.ariaHidden=`false`,c&&(r.src=c))},2600);t.set(r,o)},m=()=>{r.decode().catch(()=>{}).then(p)};r.addEventListener(`load`,m,{once:!0}),l&&(r.src=o(s)),r.complete&&r.naturalWidth>0&&m()},c=()=>{for(let t of e.querySelectorAll(`img`)){if(t.closest(`.gif-player`)||t.closest(`a`))continue;let e=t.getAttribute(`src`)||t.src;if(!/\.gif(?:$|[?#])/i.test(e))continue;let n=a(e);if(!n)continue;let i=document.createElement(`span`);i.className=`gif-player`;let o=document.createElement(`span`);o.className=`gif-badge`,o.textContent=`GIF`;let c=document.createElement(`button`);c.type=`button`,c.className=`gif-replay`,c.disabled=!0,c.tabIndex=-1,c.ariaHidden=`true`,c.ariaLabel=`Replay GIF ${t.alt||`image`}`,c.title=`Replay GIF`,c.textContent=`↻`;let l=t.parentNode,u=t.nextSibling,d=t.getAttribute(`src`)||t.src;t[Ge]=e,l?.insertBefore(i,t),i.append(t,o,c);let f=r=>{r.preventDefault(),r.stopPropagation(),s(i,t,c,e,n,!0)};r.set(t,{wrapper:i,replay:c,originalSrc:d,originalParent:l,originalNextSibling:u,onReplay:f}),c.addEventListener(`click`,f),s(i,t,c,e,n)}},l=new MutationObserver(c);return l.observe(e,{childList:!0,subtree:!0}),c(),{destroy(){i=!0,l.disconnect();for(let e of t.values())window.clearTimeout(e);for(let[e,t]of r)t.replay.removeEventListener(`click`,t.onReplay),delete e[Ge],e.src=t.originalSrc,t.wrapper.parentNode?t.wrapper.replaceWith(e):t.originalParent&&e.parentNode!==t.originalParent&&t.originalParent.insertBefore(e,t.originalNextSibling);r.clear(),t.clear(),n.clear()}}}var Je=1e3;function Ye(e,t,n){if(e.length<=900)return e;let r=Xe(e,n);if(t===`prepend`)return Ze(e,0,700,r,`start`);if(t===`append`)return Ze(e,Math.max(0,e.length-700),e.length,r,`end`);if(t===`around`){let t=r?.first??-1,n=t>=0?t:Math.floor(e.length/2),i=Math.max(0,n-350),a=Math.min(e.length,i+700);return i=Math.max(0,a-700),Ze(e,i,a,r,`start`)}return Ze(e,Math.max(0,e.length-700),e.length,r,`end`)}function Xe(e,t){if(t.size===0)return null;let n=-1,r=-1;for(let i=0;i1e3&&(i===`start`?(a=t,o=Math.min(e.length,a+Je)):(o=n,a=Math.max(0,o-Je))),e.slice(a,o)}function Qe(e){let t=e.trim();if(!t)return`?`;let n=t.split(/\s+/);return n.length>=2?(n[0][0]+n[1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function $e(e){if(!e)return`?`;let t=e.trim();return t?t[0].toUpperCase():`?`}function et(e){return e?`@${e}`:``}function tt(e){return e?.handle||e?.former_handle||``}function nt(e){return e?.kind===`bot`&&!!e.deleted_at}function rt(e,t=`Local User`){let n=e?.display_name||t;return nt(e)?`${n} (deleted bot)`:n}function it(e){let t=0;for(let n=0;n>>0;return t%360}function at(e,t){return e.members.find(e=>e.id!==t)||e.members[0]}function ot(e,t){let n=e.members.filter(e=>e.id!==t);return(n.length>0?n:e.members).map(e=>rt(e)).join(`, `)}function st(e,t,n){let r=new Map;for(let e of t)for(let t of e.members)t.id&&t.id!==n&&!t.deleted_at&&r.set(t.id,t);for(let t of[...e].reverse()){let e=t.author;e?.id&&e.id!==n&&!e.deleted_at&&r.set(e.id,e)}return[...r.values()].slice(0,12)}function ct(e,t){return e.find(e=>e.members.some(e=>e.id===t))}var lt=new Set([`agent_commentary`,`agent_tool`]),ut=180*1e3;function dt(e){return e.kind!==void 0&<.has(e.kind)}function ft(e){return e.kind===void 0||e.kind===`message`}function pt(e){return e.author?.id||e.author_id||``}function mt(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${pt(e)}\u0000${e.turn_id||e.id}`}function ht(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=_t(i[2]);else if(a)n=a[1].trim();else return gt(t.replace(/\*\*/g,``).trim(),``);return gt(n,r)}function gt(e,t){let n=_t(e),r=n.indexOf(` `),i,a;r===-1?(i=n,a=``):(i=n.slice(0,r),a=n.slice(r+1).trim());let o=[a,t].filter(e=>e.length>0).join(` · `);return{name:i,detail:o||void 0}}function _t(e){return e.replace(/\s+/g,` `).trim()}function vt(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=ht(e.body);i.push({type:`tool`,id:e.id,name:t.name,detail:t.detail,full:e.body.trim()})}else{if(r.hideCommentary)continue;let t=e.body.trim();t&&i.push({type:`commentary`,id:e.id,body:t})}return i.length===0?null:{turnId:e,items:i,final:n}}function yt(e,t,n=Date.now()){let r=new Map,i=new Map;for(let t=0;to.firstIndex;if(!r){let e=Date.parse(o.rows[o.rows.length-1].created_at);Number.isFinite(e)&&n-e>ut&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n`clickclack:${e}:cursor`;function jt(e){let{workspaceID:t,onEvent:n,onStatusChange:r}=e,i=e.reconnectDelayMs??1200,a=null,o,s=!1,c=!1;function l(e){c!==e&&(c=e,r?.(e))}function u(){if(s)return;let e=new URL(he(`/api/realtime/ws`),window.location.href);e.protocol=e.protocol===`https:`?`wss:`:`ws:`,e.searchParams.set(`workspace_id`,t);let r=localStorage.getItem(At(t))||``;r&&e.searchParams.set(`after_cursor`,r);let c=new WebSocket(e);a=c,c.addEventListener(`open`,()=>{a===c&&l(!0)}),c.addEventListener(`message`,e=>{let r;try{r=JSON.parse(String(e.data))}catch{return}Mt(r)&&(r.cursor&&localStorage.setItem(At(t),r.cursor),n(r))}),c.addEventListener(`close`,()=>{a!==c||s||(a=null,l(!1),o=window.setTimeout(u,i))})}return u(),{get connected(){return c},close(){s=!0,l(!1),o&&window.clearTimeout(o),a?.close(),a=null}}}function Mt(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}var Nt=5e3,Pt=4e3,Ft=null;function It(e,t){return e.workspaceID===t.workspaceID&&(e.channelID??``)===(t.channelID??``)&&(e.directConversationID??``)===(t.directConversationID??``)}function Lt(e){let t={};return e.channelID&&(t.channel_id=e.channelID),e.directConversationID&&(t.direct_conversation_id=e.directConversationID),t}async function Rt(e,t){try{await W(`/api/realtime/ephemeral`,{method:`POST`,body:JSON.stringify({workspace_id:e.workspaceID,channel_id:e.channelID||``,direct_conversation_id:e.directConversationID||``,type:t,payload:Lt(e)})})}catch{}}function zt(e){if(!e.workspaceID||!e.channelID&&!e.directConversationID)return;let t=Date.now();Ft&&!It(Ft.scope,e)&&(Bt(Ft),Ft=null),Ft||={scope:e,active:!1,lastPingAt:0},(!Ft.active||t-Ft.lastPingAt>=Pt)&&(Ft.active=!0,Ft.lastPingAt=t,Rt(e,`typing.started`)),Ft.idleTimer&&window.clearTimeout(Ft.idleTimer),Ft.idleTimer=window.setTimeout(()=>{Ft&&=(Bt(Ft),null)},Nt)}async function Bt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await Rt(e.scope,`typing.stopped`)}function Vt(){Ft&&=(Bt(Ft),null)}function Ht(e,t){let n=()=>{let t=e.style.height;e.style.height=`auto`;let n=`${e.scrollHeight}px`;t===n?e.style.height=t:e.style.height=n},r=()=>n(),i=()=>n();return requestAnimationFrame(n),e.addEventListener(`input`,r),window.addEventListener(`resize`,i),{update(){requestAnimationFrame(n)},destroy(){e.removeEventListener(`input`,r),window.removeEventListener(`resize`,i)}}}function Ut(e){return he(`/api/uploads/${encodeURIComponent(e.id)}`)}function Wt(e){return e.content_type.startsWith(`image/`)}function Gt(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var Kt=o(`
`);function qt(e,n){ee(n,!0);let r=S(n,`disabled`,3,!1);var i=Kt(),a=F(i),o=M(a,2),s=M(o,2),c=F(s);c.textContent=`<>`,T(s);var l=M(s,2),u=F(l);u.textContent=`{}`,T(l);var f=M(l,2),p=M(f,2);let m;T(i),b(()=>{a.disabled=r(),o.disabled=r(),s.disabled=r(),l.disabled=r(),f.disabled=r(),p.disabled=r(),m=w(p,1,``,null,m,{active:n.showGifPicker})}),t(`click`,a,()=>n.onWrap(`**`)),t(`click`,o,()=>n.onWrap(`_`)),t(`click`,s,()=>n.onWrap("`")),t(`click`,l,()=>n.onWrap("```","\n```")),t(`click`,f,()=>n.onAppend(`[label](https://)`)),t(`click`,p,function(...e){n.onToggleGif?.apply(this,e)}),d(e,i),te()}U([`click`]);var Jt=o(``),Yt=o(`
GIFs
`);function Xt(e,n){ee(n,!0);var r=Yt(),i=F(r),a=M(F(i),2);k(a),T(i);var o=M(i,2);u(o,21,()=>n.gifs,e=>e.url,(e,r)=>{var i=Jt(),a=F(i),o=M(a,2),s=F(o,!0);T(o),T(i),b(()=>{L(a,`src`,_(r).url),L(a,`alt`,_(r).title),l(s,_(r).title)}),t(`click`,i,()=>n.onPick(_(r).url,_(r).title)),d(e,i)}),T(o),T(r),b(()=>j(a,n.query)),t(`input`,a,e=>n.onQuery(e.currentTarget.value)),d(e,r),te()}U([`input`,`click`]);function Zt(e,t=120){if(!e||t<=0)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:t<=3?`.`.repeat(t):`${n.slice(0,t-3)}...`}function Qt(e){return rt(e.quoted_author,`Unknown`)}function $t(e,t){if(t===e.id)return`Open`;let n=e.thread_state?.reply_count||0;return n===0?`No replies yet`:`${n} ${n===1?`reply`:`replies`}`}function en(e){let t=e.thread_state?.reply_count||0;return t===0?`Thread`:`${t} ${t===1?`reply`:`replies`}`}function tn(e){let t=e.thread_state?.last_reply_at;return t?nn(t):``}function nn(e){let t=new Date(e).getTime();if(!Number.isFinite(t))return``;let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h`:`${Math.floor(i/24)}d`}function rn(e){let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let i=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate();return i(t,n)?`Today`:i(t,r)?`Yesterday`:new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`}).format(t)}function an(e){let t=[],n=``,r=``,i=0;for(let a of e){let e=new Date(a.created_at),o=e.toDateString(),s=a.author?.id||a.author_id||`local`,c=o!==n,l=s!==r,u=e.getTime()-i>300*1e3;c||l||u||t.length===0?t.push({key:a.id,dayLabel:c?rn(a.created_at):null,messages:[a],authorName:a.author?.display_name||`Local User`,authorHandle:tt(a.author),authorAvatarURL:nt(a.author)?``:a.author?.avatar_url||``,authorID:s,authorDeleted:nt(a.author),timestamp:a.created_at}):t[t.length-1].messages.push(a),n=o,r=s,i=e.getTime()}return t}var on=o(`
Replying to
`);function sn(e,n){ee(n,!0);var r=on(),i=M(F(r),2),a=F(i),o=M(F(a)),s=F(o,!0);T(o),T(a);var c=M(a,2),u=F(c,!0);T(c),T(i);var f=M(i,2);T(r),b((e,t)=>{l(s,e),l(u,t)},[()=>rt(n.target.author),()=>Zt(n.target.body)]),t(`click`,f,function(...e){n.onClear?.apply(this,e)}),d(e,r),te()}U([`click`]);var cn=o(` `),ln=o(``),un=o(`
`),dn=o(``),fn=o(`
`),pn=o(``),mn=o(`
`);function hn(e,n){ee(n,!0);let r=S(n,`formClass`,3,`composer`),i=S(n,`pendingUpload`,3,null),a=S(n,`replyTarget`,3,null),o=S(n,`showUpload`,3,!1),c=S(n,`showToolbar`,3,!1),h=S(n,`showGifPicker`,3,!1),v=S(n,`gifQuery`,3,``),y=S(n,`filteredGifs`,19,()=>[]),x=S(n,`slashCommands`,19,()=>[]),C=S(n,`botCommands`,19,()=>[]),E=S(n,`mentionPeople`,19,()=>[]),k=S(n,`disabled`,3,!1),P=S(n,`onUploadFile`,3,()=>{}),ne=S(n,`onRemoveUpload`,3,()=>{}),re=S(n,`onClearReply`,3,()=>{}),ie=S(n,`onApplyMarkdownWrap`,3,()=>{}),I=S(n,`onAppendToComposer`,3,()=>{}),R=S(n,`onToggleGif`,3,()=>{}),ae=S(n,`onGifQuery`,3,()=>{}),z=S(n,`onPickGif`,3,()=>{}),V=D(null),se=D(0),H=D(``),ce=D(0),ue=O(()=>U(n.value,_(se))),de=O(()=>!_(ue)||pe(_(ue))===_(H)?[]:_(ue).kind===`slash`?ge(_(ue)):_e(_(ue)));f(()=>(n.onInputRef(_(V)),()=>n.onInputRef(null))),f(()=>{if(_(de).length===0){B(ce,0);return}_(ce)>=_(de).length&&B(ce,0)});function U(e,t){let n=Math.max(0,Math.min(t||e.length,e.length)),r=e.slice(0,n),i=/(^|\s)([/@][^\s]*)$/.exec(r);if(!i)return null;let a=i[2],o=r.length-a.length;return a.startsWith(`/`)&&o!==0?null:{kind:a.startsWith(`/`)?`slash`:`mention`,start:o,end:n,query:a.slice(1).toLowerCase(),raw:a}}function pe(e){return`${e.kind}:${e.start}:${e.raw}`}function me(e=_(V)){B(se,e?.selectionStart??n.value.length,!0)}function he(e){return e.startsWith(`/`)?e:`/${e}`}function ge(e){let t=e.query,n=x().filter(e=>!e.revoked_at).map(e=>{let t=he(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description||`Slash command`,insertText:`${t} `,sortText:t.slice(1).toLowerCase()}}),r=new Set(n.map(e=>e.label)),i=C().filter(e=>!r.has(he(e.command))).map(e=>{let t=he(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description,insertText:`${t} `,sortText:t.slice(1).toLowerCase(),hint:e.args_hint||void 0,source:e.bot.handle?`@${e.bot.handle}`:e.bot.display_name}});return[...n,...i].filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function W(e){return et(e.handle||e.display_name.replace(/\s+/g,``))}function _e(e){let t=e.query,n=new Set;return E().filter(e=>!e.id||n.has(e.id)?!1:(n.add(e.id),!0)).map(e=>{let t=W(e),n=`${e.handle||``} ${e.display_name}`.trim().toLowerCase();return{id:e.id,kind:`mention`,label:t,detail:e.kind===`bot`?`${e.display_name} · bot`:e.display_name,insertText:`${t} `,sortText:n}}).filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function ve(e){if(!_(ue))return;let t=`${n.value.slice(0,_(ue).start)}${e.insertText}${n.value.slice(_(ue).end)}`,r=_(ue).start+e.insertText.length;n.onValue(t),s().then(()=>{_(V)?.focus(),_(V)?.setSelectionRange(r,r),B(se,r)})}function ye(e){let t=e.currentTarget;n.onValue(t.value),me(t)}function be(){me(),n.onFocus()}function xe(e){if(_(de).length>0){if(e.key===`ArrowDown`){e.preventDefault(),B(ce,(_(ce)+1)%_(de).length);return}if(e.key===`ArrowUp`){e.preventDefault(),B(ce,(_(ce)-1+_(de).length)%_(de).length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault(),ve(_(de)[_(ce)]);return}if(e.key===`Escape`&&_(ue)){e.preventDefault(),B(H,pe(_(ue)),!0);return}}n.onKeydown(e)}var Se=mn(),G=F(Se),Ce=e=>{Xt(e,{get gifs(){return y()},get query(){return v()},get onQuery(){return ae()},get onPick(){return z()}})};N(G,e=>{h()&&e(Ce)});var K=M(G,2),q=e=>{var n=un();u(n,23,()=>_(de),e=>e.id,(e,n,r)=>{var i=ln();let a;var o=F(i),s=F(o),c=e=>{d(e,p(`/`))},u=e=>{var t=p();b(e=>l(t,e),[()=>$e(_(n).detail)]),d(e,t)};N(s,e=>{_(n).kind===`slash`?e(c):e(u,-1)}),T(o);var f=M(o,2),m=F(f),h=F(m,!0),g=M(h),v=e=>{var t=cn(),r=F(t,!0);T(t),b(()=>l(r,_(n).hint)),d(e,t)};N(g,e=>{_(n).hint&&e(v)}),T(m);var y=M(m,2),x=F(y,!0);T(y),T(f);var S=M(f,2),C=F(S,!0);T(S),T(i),b(()=>{L(i,`aria-selected`,_(r)===_(ce)),a=w(i,1,``,null,a,{active:_(r)===_(ce)}),l(h,_(n).label),l(x,_(n).detail),l(C,_(n).source??(_(n).kind===`slash`?`command`:`mention`))}),t(`mousedown`,i,e=>e.preventDefault()),t(`click`,i,()=>ve(_(n))),d(e,i)}),T(n),b(()=>L(n,`aria-label`,_(ue)?.kind===`slash`?`Slash command suggestions`:`Mention suggestions`)),d(e,n)};N(K,e=>{_(de).length>0&&e(q)});var J=M(K,2),we=F(J),Y=e=>{var n=fn(),r=M(F(n),2),a=e=>{var t=dn();b(e=>{L(t,`src`,e),L(t,`alt`,i().filename)},[()=>Ut(i())]),d(e,t)},o=O(()=>Wt(i()));N(r,e=>{_(o)&&e(a)});var s=M(r,2),c=F(s);T(s);var u=M(s,2);T(n),b(e=>l(c,`${i().filename??``} · ${e??``}`),[()=>Gt(i().byte_size)]),t(`click`,u,function(...e){ne()?.apply(this,e)}),d(e,n)};N(we,e=>{i()&&e(Y)});var X=M(we,2),Z=e=>{sn(e,{get target(){return a()},get onClear(){return re()}})};N(X,e=>{a()&&e(Z)});var Q=M(X,2),Te=F(Q),Ee=e=>{var n=pn(),r=F(n);fe(2),T(n),b(()=>r.disabled=k()),t(`change`,r,function(...e){P()?.apply(this,e)}),d(e,n)};N(Te,e=>{o()&&e(Ee)});var De=M(Te,2);A(De),oe(De,e=>B(V,e),()=>_(V)),m(De,(e,t)=>Ht?.(e,t),()=>n.value);var Oe=M(De,2);T(Q);var ke=M(Q,2),Ae=e=>{qt(e,{get showGifPicker(){return h()},get disabled(){return k()},get onWrap(){return ie()},get onAppend(){return I()},get onToggleGif(){return R()}})};N(ke,e=>{c()&&e(Ae)}),T(J),T(Se),b(e=>{w(Se,1,le(r())),j(De,n.value),L(De,`placeholder`,n.placeholder),L(De,`aria-label`,n.ariaLabel),De.disabled=k(),L(Oe,`aria-label`,n.submitLabel),Oe.disabled=e},[()=>k()||!n.value.trim()]),g(`submit`,Se,e=>{e.preventDefault(),!k()&&n.onSubmit()}),t(`input`,De,ye),g(`focus`,De,be),t(`keydown`,De,xe),t(`keyup`,De,()=>me()),t(`mouseup`,De,()=>me()),g(`select`,De,()=>me()),d(e,Se),te()}U([`mousedown`,`click`,`change`,`input`,`keydown`,`keyup`,`mouseup`]);function gn(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`?null:$n(BigInt.prototype.toString),Jn=typeof Symbol>`u`?null:$n(Symbol.prototype.toString),Yn=$n(Object.prototype.hasOwnProperty),Xn=$n(Object.prototype.toString),Zn=$n(RegExp.prototype.test),Qn=er(TypeError);function $n(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return jn(e,t,n)}}function er(e){return function(){return Mn(e,[...arguments])}}function tr(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:zn;if(Cn&&Cn(e,null),!Rn(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(wn(t)||(t[r]=e),i=e)}e[i]=!0}return e}function nr(e){for(let t=0;t/g),br=On(/\${[\w\W]*/g),xr=On(/^data-[\-\w.\u00B7-\uFFFF]+$/),Sr=On(/^aria-[\-\w]+$/),Cr=On(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),wr=On(/^(?:\w+script|data):/i),Tr=On(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Er=On(/^html$/i),Dr=On(/^[a-z][.\w]*(-[.\w]+)+$/i),Or=On(/<[/\w!]/g),kr=On(/<[/\w]/g),Ar=On(/<\/no(script|embed|frames)/i),jr=On(/\/>/i),Mr={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Nr=function(){return typeof window>`u`?null:window},Pr=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Fr=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},$=function(e,t,n,r){return Yn(e,t)&&Rn(e[t])?tr(r.base?rr(r.base):{},e[t],r.transform):n};function Ir(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Nr(),t=e=>Ir(e);if(t.version=`3.4.12`,t.removed=[],!e||!e.document||e.document.nodeType!==Mr.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=ar(d,`cloneNode`),p=ar(d,`remove`),m=ar(d,`nextSibling`),h=ar(d,`childNodes`),g=ar(d,`parentNode`),_=ar(d,`shadowRoot`),v=ar(d,`attributes`),y=o&&o.prototype?ar(o.prototype,`nodeType`):null,b=o&&o.prototype?ar(o.prototype,`nodeName`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,C,w=!1,T=0,E=function(){if(T>0)throw Qn(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},D=function(e){E(),T++;try{return x.createHTML(e)}finally{T--}},O=function(e){E(),T++;try{return x.createScriptURL(e)}finally{T--}},k=function(){return w||=(C=Pr(u,i),!0),C},A=n,ee=A.implementation,j=A.createNodeIterator,te=A.createDocumentFragment,M=A.getElementsByTagName,N=r.importNode,P=Fr();t.isSupported=typeof Sn==`function`&&typeof g==`function`&&ee&&ee.createHTMLDocument!==void 0;let ne=vr,re=yr,F=br,ie=xr,I=Sr,L=wr,R=Tr,ae=Dr,z=Cr,oe=null,B=tr({},[...sr,...cr,...lr,...dr,...pr]),V=null,se=tr({},[...mr,...hr,...gr,..._r]),H=Object.seal(kn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ce=null,le=null,ue=Object.seal(kn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),de=!0,fe=!0,U=!1,pe=!0,me=!1,he=!0,ge=!1,W=!1,_e=null,ve=null,ye=!1,be=!1,xe=!1,Se=!1,G=!0,Ce=!1,K=`user-content-`,q=!0,J=!1,we={},Y=null,X=tr({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Z=null,Q=tr({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Te=null,Ee=tr({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),De=`http://www.w3.org/1998/Math/MathML`,Oe=`http://www.w3.org/2000/svg`,ke=`http://www.w3.org/1999/xhtml`,Ae=ke,je=!1,Me=null,Ne=tr({},[De,Oe,ke],Bn),Pe=Dn([`mi`,`mo`,`mn`,`ms`,`mtext`]),Fe=tr({},Pe),Ie=Dn([`annotation-xml`]),Le=tr({},Ie),Re=tr({},[`title`,`style`,`font`,`a`,`script`]),ze=null,Be=[`application/xhtml+xml`,`text/html`],Ve=null,He=null,Ue=n.createElement(`form`),We=function(e){return e instanceof RegExp||e instanceof Function},Ge=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(He&&He===e)return;(!e||typeof e!=`object`)&&(e={}),e=rr(e),ze=Be.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Ve=ze===`application/xhtml+xml`?Bn:zn,oe=$(e,`ALLOWED_TAGS`,B,{transform:Ve}),V=$(e,`ALLOWED_ATTR`,se,{transform:Ve}),Me=$(e,`ALLOWED_NAMESPACES`,Ne,{transform:Bn}),Te=$(e,`ADD_URI_SAFE_ATTR`,Ee,{transform:Ve,base:Ee}),Z=$(e,`ADD_DATA_URI_TAGS`,Q,{transform:Ve,base:Q}),Y=$(e,`FORBID_CONTENTS`,X,{transform:Ve}),ce=$(e,`FORBID_TAGS`,rr({}),{transform:Ve}),le=$(e,`FORBID_ATTR`,rr({}),{transform:Ve}),we=Yn(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?rr(e.USE_PROFILES):e.USE_PROFILES:!1,de=e.ALLOW_ARIA_ATTR!==!1,fe=e.ALLOW_DATA_ATTR!==!1,U=e.ALLOW_UNKNOWN_PROTOCOLS||!1,pe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,me=e.SAFE_FOR_TEMPLATES||!1,he=e.SAFE_FOR_XML!==!1,ge=e.WHOLE_DOCUMENT||!1,be=e.RETURN_DOM||!1,xe=e.RETURN_DOM_FRAGMENT||!1,Se=e.RETURN_TRUSTED_TYPE||!1,ye=e.FORCE_BODY||!1,G=e.SANITIZE_DOM!==!1,Ce=e.SANITIZE_NAMED_PROPS||!1,q=e.KEEP_CONTENT!==!1,J=e.IN_PLACE||!1,z=or(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:Cr,Ae=typeof e.NAMESPACE==`string`?e.NAMESPACE:ke,Fe=Yn(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?rr(e.MATHML_TEXT_INTEGRATION_POINTS):tr({},Pe),Le=Yn(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?rr(e.HTML_INTEGRATION_POINTS):tr({},Ie);let t=Yn(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?rr(e.CUSTOM_ELEMENT_HANDLING):kn(null);if(H=kn(null),Yn(t,`tagNameCheck`)&&We(t.tagNameCheck)&&(H.tagNameCheck=t.tagNameCheck),Yn(t,`attributeNameCheck`)&&We(t.attributeNameCheck)&&(H.attributeNameCheck=t.attributeNameCheck),Yn(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(H.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),On(H),me&&(fe=!1),xe&&(be=!0),we&&(oe=tr({},pr),V=kn(null),we.html===!0&&(tr(oe,sr),tr(V,mr)),we.svg===!0&&(tr(oe,cr),tr(V,hr),tr(V,_r)),we.svgFilters===!0&&(tr(oe,lr),tr(V,hr),tr(V,_r)),we.mathMl===!0&&(tr(oe,dr),tr(V,gr),tr(V,_r))),ue.tagCheck=null,ue.attributeCheck=null,Yn(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?ue.tagCheck=e.ADD_TAGS:Rn(e.ADD_TAGS)&&(oe===B&&(oe=rr(oe)),tr(oe,e.ADD_TAGS,Ve))),Yn(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?ue.attributeCheck=e.ADD_ATTR:Rn(e.ADD_ATTR)&&(V===se&&(V=rr(V)),tr(V,e.ADD_ATTR,Ve))),Yn(e,`ADD_URI_SAFE_ATTR`)&&Rn(e.ADD_URI_SAFE_ATTR)&&tr(Te,e.ADD_URI_SAFE_ATTR,Ve),Yn(e,`FORBID_CONTENTS`)&&Rn(e.FORBID_CONTENTS)&&(Y===X&&(Y=rr(Y)),tr(Y,e.FORBID_CONTENTS,Ve)),Yn(e,`ADD_FORBID_CONTENTS`)&&Rn(e.ADD_FORBID_CONTENTS)&&(Y===X&&(Y=rr(Y)),tr(Y,e.ADD_FORBID_CONTENTS,Ve)),q&&(oe[`#text`]=!0),ge&&tr(oe,[`html`,`head`,`body`]),oe.table&&(tr(oe,[`tbody`]),delete ce.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Qn(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Qn(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=x;x=e.TRUSTED_TYPES_POLICY;try{S=D(``)}catch(e){throw x=t,e}}else e.TRUSTED_TYPES_POLICY===null?(x=void 0,S=``):(x===void 0&&(x=k()),x&&typeof S==`string`&&(S=D(``)));Dn&&Dn(e),He=e},Ke=tr({},[...cr,...lr,...ur]),qe=tr({},[...dr,...fr]),Je=function(e,t,n){return t.namespaceURI===ke?e===`svg`:t.namespaceURI===De?e===`svg`&&(n===`annotation-xml`||Fe[n]):!!Ke[e]},Ye=function(e,t,n){return t.namespaceURI===ke?e===`math`:t.namespaceURI===Oe?e===`math`&&Le[n]:!!qe[e]},Xe=function(e,t,n){return t.namespaceURI===Oe&&!Le[n]||t.namespaceURI===De&&!Fe[n]?!1:!qe[e]&&(Re[e]||!Ke[e])},Ze=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:Ae,tagName:`template`});let n=zn(e.tagName),r=zn(t.tagName);return Me[e.namespaceURI]?e.namespaceURI===Oe?Je(n,t,r):e.namespaceURI===De?Ye(n,t,r):e.namespaceURI===ke?Xe(n,t,r):!!(ze===`application/xhtml+xml`&&Me[e.namespaceURI]):!1},Qe=function(e){In(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw Qn(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},$e=function(e){nt(e);let t=h(e);if(t){let e=[];Nn(t,t=>{In(e,t)}),Nn(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},et=function(e,n){try{In(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{In(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(be||xe)try{Qe(n)}catch{}else try{n.setAttribute(e,``)}catch{}},tt=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||V[Ve(i)]))try{e.removeAttribute(i)}catch{}}},nt=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(y?y(e):e.nodeType)===Mr.element&&tt(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},rt=function(e){if(!he)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=y?y(e):e.nodeType;if(n===Mr.processingInstruction||n===Mr.comment&&Zn(kr,e.data)){try{p(e)}catch{}continue}if(n===Mr.element){let t=e,n=Ve(b?b(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},it=function(e){let t=null,r=null;if(ye)e=``+e;else{let t=Vn(e,/^[\r\n\t ]+/);r=t&&t[0]}ze===`application/xhtml+xml`&&Ae===ke&&(e=``+e+``);let i=x?D(e):e;if(Ae===ke)try{t=new l().parseFromString(i,ze)}catch{}if(!t||!t.documentElement){t=ee.createDocument(Ae,`template`,null);try{t.documentElement.innerHTML=je?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),Ae===ke?M.call(t,ge?`html`:`body`)[0]:ge?t.documentElement:a},at=function(e){return j.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ot=function(e){return e=Hn(e,ne,` `),e=Hn(e,re,` `),e=Hn(e,F,` `),e},st=function(e){e.normalize();let t=j.call(e.ownerDocument||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;)n.data=ot(n.data),n=t.nextNode();let r=e.querySelectorAll?.call(e,`template`);r&&Nn(r,e=>{lt(e.content)&&st(e.content)})},ct=function(e){let t=b?b(e):null;return typeof t!=`string`||Ve(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},lt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===Mr.documentFragment}catch{return!1}},ut=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function dt(e,n,r){e.length!==0&&Nn(e,e=>{e.call(t,n,r,He)})}let ft=function(e,t){return!!(he&&e.hasChildNodes()&&!ut(e.firstElementChild)&&Zn(Or,e.textContent)&&Zn(Or,e.innerHTML)||he&&e.namespaceURI===ke&&t===`style`&&ut(e.firstElementChild)||e.nodeType===Mr.processingInstruction||he&&e.nodeType===Mr.comment&&Zn(kr,e.data))},pt=function(e,t){if(!ce[t]&&_t(t)&&(H.tagNameCheck instanceof RegExp&&Zn(H.tagNameCheck,t)||H.tagNameCheck instanceof Function&&H.tagNameCheck(t)))return!1;if(q&&!Y[t]){let t=g(e),n=h(e);if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=J?n[i]:f(n[i],!0);t.insertBefore(r,m(e))}}}return Qe(e),!0},mt=function(e,n){if(dt(P.beforeSanitizeElements,e,null),e!==n&&g(e)===null)return!0;if(ct(e))return Qe(e),!0;let r=Ve(b?b(e):e.nodeName);if(dt(P.uponSanitizeElement,e,{tagName:r,allowedTags:oe}),e!==n&&g(e)===null)return!0;if(ft(e,r))return Qe(e),!0;if(ce[r]||!(ue.tagCheck instanceof Function&&ue.tagCheck(r))&&!oe[r]){let t=pt(e,r);return t===!1&&dt(P.afterSanitizeElements,e,null),t}if((y?y(e):e.nodeType)===Mr.element&&!Ze(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&Zn(Ar,e.innerHTML))return Qe(e),!0;if(me&&e.nodeType===Mr.text){let n=ot(e.textContent);e.textContent!==n&&(In(t.removed,{element:e.cloneNode()}),e.textContent=n)}return dt(P.afterSanitizeElements,e,null),!1},ht=function(e,t,r){if(le[t]||he&&t===`patchsrc`||he&&t===`for`&&e!==`label`&&e!==`output`||G&&(t===`id`||t===`name`)&&(r in n||r in Ue))return!1;let i=V[t]||ue.attributeCheck instanceof Function&&ue.attributeCheck(t,e);if(!(fe&&Zn(ie,t))&&!(de&&Zn(I,t))){if(!i){if(!(_t(e)&&(H.tagNameCheck instanceof RegExp&&Zn(H.tagNameCheck,e)||H.tagNameCheck instanceof Function&&H.tagNameCheck(e))&&(H.attributeNameCheck instanceof RegExp&&Zn(H.attributeNameCheck,t)||H.attributeNameCheck instanceof Function&&H.attributeNameCheck(t,e))||t===`is`&&H.allowCustomizedBuiltInElements&&(H.tagNameCheck instanceof RegExp&&Zn(H.tagNameCheck,r)||H.tagNameCheck instanceof Function&&H.tagNameCheck(r))))return!1}else if(!Te[t]&&!Zn(z,Hn(r,R,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Un(r,`data:`)===0&&Z[e])&&!(U&&!Zn(L,Hn(r,R,``)))&&r)return!1}return!0},gt=tr({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),_t=function(e){return!gt[zn(e)]&&Zn(ae,e)},vt=function(e,t,n,r){if(x&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return D(r);case`TrustedScriptURL`:return O(r)}return r},yt=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),ct(e)?Qe(e):Fn(t.removed)}catch{et(n,e)}},bt=function(e){dt(P.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||ct(e))return;let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:V,forceKeepAttr:void 0},r=t.length,i=Ve(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=Ve(o),u=c,d=o===`value`?u:Wn(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,dt(P.uponSanitizeAttribute,e,n),d=n.attrValue,Ce&&(l===`id`||l===`name`)&&Un(d,K)!==0&&(et(o,e),d=K+d),he&&Zn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){et(o,e);continue}if(l===`attributename`&&Vn(d,`href`)){et(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){et(o,e);continue}if(!pe&&Zn(jr,d)){et(o,e);continue}if(me&&(d=ot(d)),!ht(i,l,d)){et(o,e);continue}d=vt(i,l,s,d),d!==u&&yt(e,o,s,d)}}dt(P.afterSanitizeAttributes,e,null)},xt=function(e){let t=null,n=at(e);for(dt(P.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(dt(P.uponSanitizeShadowNode,t,null),mt(t,e),bt(t),lt(t.content)&&xt(t.content),(y?y(t):t.nodeType)===Mr.element){let e=_(t);lt(e)&&(St(e),xt(e))}dt(P.afterSanitizeShadowDOM,e,null)},St=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){xt(e.shadow);continue}let n=e.node,r=(y?y(n):n.nodeType)===Mr.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&Ve(e)===`template`){let e=n.content;lt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);lt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(je=!e,je&&(e=``),typeof e!=`string`&&!ut(e)&&(e=ir(e),typeof e!=`string`))throw Qn(`dirty is not a string, aborting`);if(!t.isSupported)return e;W?(oe=_e,V=ve):Ge(n),(P.uponSanitizeElement.length>0||P.uponSanitizeAttribute.length>0)&&(oe=rr(oe)),P.uponSanitizeAttribute.length>0&&(V=rr(V)),t.removed=[];let c=J&&typeof e!=`string`&&ut(e);if(c){rt(e);let t=b?b(e):e.nodeName;if(typeof t==`string`){let n=Ve(t);if(!oe[n]||ce[n])throw $e(e),Qn(`root node is forbidden and cannot be sanitized in-place`)}if(ct(e))throw $e(e),Qn(`root node is clobbered and cannot be sanitized in-place`);try{St(e)}catch(t){throw $e(e),t}}else if(ut(e))i=it(``),a=i.ownerDocument.importNode(e,!0),a.nodeType===Mr.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),St(a);else{if(!be&&!me&&!ge&&e.indexOf(`<`)===-1)return x&&Se?D(e):e;if(i=it(e),!i)return be?null:Se?S:``}i&&ye&&Qe(i.firstChild);let l=c?e:i,u=at(l);try{for(;o=u.nextNode();)mt(o,l),bt(o),lt(o.content)&&xt(o.content)}catch(n){throw c&&($e(e),Nn(t.removed,e=>{e.element&&nt(e.element)})),n}if(c)return Nn(t.removed,e=>{e.element&&nt(e.element)}),me&&st(e),e;if(be){if(me&&st(i),xe)for(s=te.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(V.shadowroot||V.shadowrootmode)&&(s=N.call(r,s,!0)),s}let d=ge?i.outerHTML:i.innerHTML;return ge&&oe[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&Zn(Er,i.ownerDocument.doctype.name)&&(d=` -`+d),me&&(d=ot(d)),x&&Se?D(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ge(e),W=!0,_e=oe,ve=V},t.clearConfig=function(){He=null,W=!1,_e=null,ve=null,x=C,S=``},t.isValidAttribute=function(e,t,n){He||Ge({});let r=Ve(e),i=Ve(t);return ht(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&Yn(P,e)&&In(P[e],t)},t.removeHook=function(e,t){if(Yn(P,e)){if(t!==void 0){let n=Pn(P[e],t);return n===-1?void 0:Ln(P[e],n,1)[0]}return Fn(P[e])}},t.removeHooks=function(e){Yn(P,e)&&(P[e]=[])},t.removeAllHooks=function(){P=Fr()},t}var Lr=Ir(),Rr=2*1024*1024,zr=64*1024*1024,Br=24*1024*1024,Vr={bash:`bash`,c:`c`,cc:`cpp`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,hpp:`cpp`,java:`java`,js:`javascript`,json:`json`,jsx:`javascript`,mjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,sh:`bash`,sql:`sql`,toml:`ini`,ts:`typescript`,tsx:`typescript`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`bash`},Hr=new Set([`application/javascript`,`application/json`,`application/ld+json`,`application/sql`,`application/toml`,`application/typescript`,`application/xml`,`application/x-httpd-php`,`application/x-javascript`,`application/x-sh`,`application/x-yaml`,`text/css`,`text/csv`,`text/javascript`,`text/typescript`,`text/x-python`,`text/x-shellscript`,`text/xml`,`text/yaml`]),Ur=new Set([`application/vnd.ms-excel.sheet.macroenabled.12`,`application/vnd.ms-excel.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/vnd.openxmlformats-officedocument.spreadsheetml.template`]),Wr=new Set([`application/vnd.ms-powerpoint.presentation.macroenabled.12`,`application/vnd.ms-powerpoint.slideshow.macroenabled.12`,`application/vnd.ms-powerpoint.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`,`application/vnd.openxmlformats-officedocument.presentationml.slideshow`,`application/vnd.openxmlformats-officedocument.presentationml.template`]);function Gr(e){let t=e.toLowerCase().split(/[\\/]/).pop()||``,n=t.lastIndexOf(`.`);return n>0?t.slice(n+1):``}function Kr(e){return(e.content_type||``).split(`;`,1)[0].trim().toLowerCase()}function qr(e){let t=Gr(e.filename),n=Kr(e);return t===`docx`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`?`docx`:[`xlsx`,`xlsm`,`xltx`,`xltm`].includes(t)||Ur.has(n)?`spreadsheet`:[`pptx`,`pptm`,`potx`,`potm`,`ppsx`,`ppsm`].includes(t)||Wr.has(n)?`presentation`:t===`md`||t===`markdown`||n===`text/markdown`?`markdown`:t===`html`||t===`htm`||n===`text/html`?`html`:t===`pdf`||n===`application/pdf`?`pdf`:Vr[t]||Hr.has(n)?`code`:t===`txt`||t===`log`||n===`text/plain`||n.startsWith(`text/`)?`text`:`unsupported`}function Jr(e){let t=Gr(e.filename);if(Vr[t])return Vr[t];let n=Kr(e);if(n.includes(`json`))return`json`;if(n.includes(`javascript`))return`javascript`;if(n.includes(`typescript`))return`typescript`;if(n.includes(`yaml`))return`yaml`;if(n.includes(`xml`))return`xml`;if(n.includes(`sql`))return`sql`}function Yr(e){switch(e){case`code`:return`Code`;case`text`:return`Text`;case`markdown`:return`Markdown`;case`pdf`:return`PDF`;case`docx`:return`Word document`;case`spreadsheet`:return`Spreadsheet`;case`presentation`:return`Slide text outline`;case`html`:return`Web page`;default:return`File`}}function Xr(e){if(e===`pdf`)return zr;if(e===`spreadsheet`||e===`presentation`)return Br;if(e===`code`||e===`text`||e===`markdown`||e===`html`)return Rr}function Zr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Qr=Zr();function $r(e){Qr=e}var ei={exec:()=>null};function ti(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function ni(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(ii.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var ri=((e=``)=>{try{return!!RegExp(`(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:ti(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:ti(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:ti(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:ti(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:ti(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:ti(e=>RegExp(`^ {0,${e}}>`))},ai=/^(?:[ \t]*(?:\n|$))+/,oi=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,si=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,ci=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,li=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ui=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,di=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fi=ni(di).replace(/bull/g,ui).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),pi=ni(di).replace(/bull/g,ui).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),mi=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,hi=/^[^\n]+/,gi=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,_i=ni(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,gi).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),vi=ni(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,ui).getRegex(),yi=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,bi=/|$))/,xi=ni(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,bi).replace(`tag`,yi).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Si=e=>ni(mi).replace(`hr`,ci).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,e).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yi).getRegex(),Ci=Si(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),wi=Si(/ {0,3}(?:[*+-]|\d{1,9}[.)])[ \t]+[^ \t\n]/),Ti={blockquote:ni(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,wi).getRegex(),code:oi,def:_i,fences:si,heading:li,hr:ci,html:xi,lheading:fi,list:vi,newline:ai,paragraph:Ci,table:ei,text:hi},Ei=ni(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,ci).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yi).getRegex(),Di={...Ti,lheading:pi,table:Ei,paragraph:ni(mi).replace(`hr`,ci).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Ei).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,yi).getRegex()},Oi={...Ti,html:ni(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,bi).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ei,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ni(mi).replace(`hr`,ci).replace(`heading`,` *#{1,6} *[^ -]`).replace(`lheading`,fi).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},ki=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Ai=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ji=/^( {2,}|\\)\n(?!\s*$)/,Mi=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,ri?"(?`+)[^`]+\k(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Vi=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Hi=ni(Vi,`u`).replace(/punct/g,Ni).getRegex(),Ui=ni(Vi,`u`).replace(/punct/g,Li).getRegex(),Wi=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Gi=ni(Wi,`gu`).replace(/notPunctSpace/g,Fi).replace(/punctSpace/g,Pi).replace(/punct/g,Ni).getRegex(),Ki=ni(Wi,`gu`).replace(/notPunctSpace/g,zi).replace(/punctSpace/g,Ri).replace(/punct/g,Li).getRegex(),qi=ni(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Fi).replace(/punctSpace/g,Pi).replace(/punct/g,Ni).getRegex(),Ji=ni(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Ni).getRegex(),Yi=ni(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Fi).replace(/punctSpace/g,Pi).replace(/punct/g,Ni).getRegex(),Xi=ni(/\\(punct)/,`gu`).replace(/punct/g,Ni).getRegex(),Zi=ni(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Qi=ni(bi).replace(`(?:-->|$)`,`-->`).getRegex(),$i=ni(`^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^`).replace(`comment`,Qi).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ea=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,ta=ni(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,ea).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),na=ni(/^!?\[(label)\]\[(ref)\]/).replace(`label`,ea).replace(`ref`,gi).getRegex(),ra=ni(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,gi).getRegex(),ia=ni(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,na).replace(`nolink`,ra).getRegex(),aa=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,oa={_backpedal:ei,anyPunctuation:Xi,autolink:Zi,blockSkip:Bi,br:ji,code:Ai,del:ei,delLDelim:ei,delRDelim:ei,emStrongLDelim:Hi,emStrongRDelimAst:Gi,emStrongRDelimUnd:qi,escape:ki,link:ta,nolink:ra,punctuation:Ii,reflink:na,reflinkSearch:ia,tag:$i,text:Mi,url:ei},sa={...oa,link:ni(/^!?\[(label)\]\((.*?)\)/).replace(`label`,ea).getRegex(),reflink:ni(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,ea).getRegex()},ca={...oa,emStrongRDelimAst:Ki,emStrongLDelim:Ui,delLDelim:Ji,delRDelim:Yi,url:ni(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,aa).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:ni(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":`>`,'"':`"`,"'":`'`},pa=e=>fa[e];function ma(e,t){if(t){if(ii.escapeTest.test(e))return e.replace(ii.escapeReplace,pa)}else if(ii.escapeTestNoEncode.test(e))return e.replace(ii.escapeReplaceNoEncode,pa);return e}function ha(e){try{e=encodeURI(e).replace(ii.percentDecode,`%`)}catch{return null}return e}function ga(e,t){let n=e.replace(ii.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(ii.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length=0&&ii.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(` -`)}function ya(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r0?-2:-1}function ba(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function xa(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function Sa(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(` -`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(` -`)}var Ca=class{options;rules;lexer;constructor(e){this.options=e||Qr}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:va(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=Sa(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=_a(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:_a(t[0],` -`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:_a(t[0],` -`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=_a(t[0],` -`).split(` -`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=ba(t[2].split(` -`,1)[0],t[1].length),l=e.split(` -`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+` -`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(` -`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=` -`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=` -`+l}u=!l.trim(),r+=p+` -`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]);let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1;if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=va(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:_a(t[0],` -`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=ga(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(` -`):[],a={type:`table`,raw:_a(t[0],` -`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:_a(t[0],` -`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===` -`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=_a(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=ya(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),xa(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return xa(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},wa=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Qr,this.options.tokenizer=this.options.tokenizer||new Ca,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:ii,block:ua.normal,inline:da.normal};this.options.pedantic?(t.block=ua.pedantic,t.inline=da.pedantic):this.options.gfm&&(t.block=ua.gfm,this.options.breaks?t.inline=da.breaks:t.inline=da.gfm),this.tokenizer.rules=t}static get rules(){return{block:ua,inline:da}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(ii.carriageReturn,` -`),this.blockTokens(e,this.tokens);for(let e=0;e(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=` -`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(` -`)?``:` -`)+i.raw,r.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(` -`)?``:` -`)+i.raw,n.text+=` -`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``,s=1/0;for(;e;){if(e.length(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},Ta=class{options;parser;constructor(e){this.options=e||Qr}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(ii.notSpaceStart)?.[0],i=e.replace(ii.endingNewline,``)+` -`;return r?`
`+(n?i:ma(i,!0))+`
-`:`
`+(n?i:ma(i,!0))+`
-`}blockquote({tokens:e}){return`
-${this.parser.parse(e)}
-`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} -`}hr(e){return`
-`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t -`+r+` -`}listitem(e){return`
  • ${this.parser.parse(e.tokens)}
  • -`}checkbox({checked:e}){return` `}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    -`}table(e){let t=``,n=``;for(let t=0;t${r}`,` - -`+t+` -`+r+`
    -`}tablerow({text:e}){return` -${e} -`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` -`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${ma(e,!0)}`}br(e){return`
    `}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=ha(e);if(i===null)return r;e=i;let a=`
    `+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=ha(e);if(i===null)return ma(n);e=i;let a=`${ma(n)}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:ma(e.text)}},Ea=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},Da=class e{options;renderer;textRenderer;constructor(e){this.options=e||Qr,this.options.renderer=this.options.renderer||new Ta,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ea}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Ta(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Ca(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Oa;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];Oa.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Oa.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return wa.lex(e,t??this.defaults)}parser(e,t){return Da.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?wa.lex:wa.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?Da.parse:Da.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?wa.lex:wa.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?Da.parse:Da.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let e=`

    An error occurred:

    `+ma(n.message+``,!0)+`
    `;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Aa(e,t){return ka.parse(e,t)}Aa.options=Aa.setOptions=function(e){return ka.setOptions(e),Aa.defaults=ka.defaults,$r(Aa.defaults),Aa},Aa.getDefaults=Zr,Aa.defaults=Qr,Aa.use=function(...e){return ka.use(...e),Aa.defaults=ka.defaults,$r(Aa.defaults),Aa},Aa.walkTokens=function(e,t){return ka.walkTokens(e,t)},Aa.parseInline=ka.parseInline,Aa.Parser=Da,Aa.parser=Da.parse,Aa.Renderer=Ta,Aa.TextRenderer=Ea,Aa.Lexer=wa,Aa.lexer=wa.lex,Aa.Tokenizer=Ca,Aa.Hooks=Oa,Aa.parse=Aa,Aa.options,Aa.setOptions,Aa.use,Aa.walkTokens,Aa.parseInline,Da.parse,wa.lex;function ja(e){return Lr.sanitize(Aa.parse(e,{async:!1,breaks:!0,gfm:!0}))}function Ma(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e))}var Na=2e3,Pa=2*1024*1024;function Fa(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function Ia(e,t,n){return!t||e.length>262144?Promise.resolve(Fa(e)):new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/highlight.worker-DQwR42_5.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Syntax highlighting was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>r(Fa(e))),Na);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(Fa(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(Fa(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Pa})})}var La=5e3;function Ra(e,t,n){return new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/office.worker-Dh-Qjtqs.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Office preview was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>i(Error(`Office preview took too long and was stopped.`))),La);if(a.onmessage=t=>{let n=t.data;if(`error`in n){s(()=>i(Error(n.error)));return}if(n.kind!==e){s(()=>i(Error(`Office preview returned an unexpected result.`)));return}s(()=>r(n.preview))},a.onerror=()=>s(()=>i(Error(`Could not parse this Office file safely.`))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}let u=t.byteOffset===0&&t.buffer instanceof ArrayBuffer&&t.byteLength===t.buffer.byteLength?t:t.slice(),d={kind:e,bytes:u};a.postMessage(d,[u.buffer])})}var za=16*1024*1024,Ba=1e4,Va=1e4,Ha=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Ua(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Ha)}var Wa=``+new URL(`../assets/pdf.worker.CPbhI6B3.mjs`,import.meta.url).href,Ga=o(`
    `),Ka=o(`

    Preparing a safe preview.

    `),qa=o(``),Ja=o(`
    No preview for this file type

    You can still download the original file.

    Download original
    `),Ya=o(`
    `,1),Xa=o(` `),Za=o(` `),Qa=o(` `),$a=o(` `),eo=o(`

    Preview is limited to 10,000 cells, the first 1,000 rows, and the first 100 columns. Download the original to inspect omitted cells.

    `),to=o(``),no=o(`
    Raw cached values; number and date formatting omitted
    `,1),ro=o(`

    `),io=o(`

    `),ao=o(`

    `),oo=o(`

    Some slide content was omitted by preview limits.

    `),so=o(`

    Text outline only. Visuals, layout, animations, and speaker notes are omitted.

    `,1),co=o(`
    `),lo=o(`
    `),uo=o(`
    `),fo=o(`
     
    `),po=o(`
    `,1);function mo(e,n){ee(n,!0);let a=D(null),o=O(()=>qr(n.upload)),s=D(`preview`),c=D(`idle`),p=D(``),m=D(``),h=D(``),g=D(!1),v=D(``),y=D(null),x=D(1),S=D(1),C=D(!1),E=D(``),k=null,A=!1,j=D(null),ne=D(0),ie=D(null),I=D(0),R=1e4,ae=64*1024,V=5e3;class se extends Error{}let H=O(()=>Yr(_(o))),ce=O(()=>Ut(n.upload)),le=O(()=>(_(o)===`markdown`||_(o)===`html`)&&_(c)===`ready`&&_(g));function ue(e){return`This ${_(H).toLowerCase()} is ${Gt(n.upload.byte_size)}. Preview is limited to ${Gt(e)}.`}function de(e){pe(e);let t=document.createElement(`template`);t.innerHTML=e;let n=Lr.sanitize(t.content,{RETURN_DOM_FRAGMENT:!0,USE_PROFILES:{html:!0},FORBID_TAGS:[`base`,`embed`,`form`,`iframe`,`link`,`meta`,`object`,`script`,`style`],FORBID_ATTR:[`action`,`formaction`,`srcset`,`style`,`xlink:href`]});for(let e of n.querySelectorAll(`*`))for(let t of Array.from(e.attributes))e.removeAttribute(t.name);let r=document.createElement(`div`);r.append(n);let i=r.innerHTML;return he(i),`${i}`}function U(e){pe(e);let t=ja(e);return he(t),Lr.sanitize(t,{ALLOWED_TAGS:[`blockquote`,`br`,`code`,`del`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],ALLOWED_ATTR:[]})}function pe(e){if(e.length>65536)throw new se(`Structured preview exceeded the safe source limit.`);let t=0;for(let n of e)if("<[]>*_`-+.!#>|~".includes(n)&&(t+=1,t>R))throw new se(`Structured preview exceeded the safe complexity limit.`)}function he(e){if(e.length>4194304)throw new se(`Rendered preview exceeded the safe output limit.`);let t=0;for(let n of e)if(n===`<`&&++t>R*2)throw new se(`Rendered preview exceeded the safe element limit.`)}function ge(e){return`Preview data exceeded the ${Gt(e)} safety limit.`}async function W(e,t){let n=await fetch(_(ce),{credentials:`include`,signal:e});if(!n.ok)throw n.status===401||n.status===403?Error(`You no longer have access to this artifact.`):n.status===404?Error(`This artifact is no longer available.`):Error(`Could not load this artifact (${n.status}).`);let r=Number(n.headers.get(`Content-Length`));if(Number.isFinite(r)&&r>t)throw Error(ge(t));if(!n.body){let e=new Uint8Array(await n.arrayBuffer());if(e.byteLength>t)throw Error(ge(t));return e}let i=n.body.getReader(),a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)throw await i.cancel(),Error(ge(t));a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s}async function _e(e,t){return new TextDecoder(`utf-8`,{fatal:!1}).decode(await W(e,t))}async function ve(e){k?.(),k=null,B(y,null),B(m,``),B(h,``),B(g,!1),B(v,``),B(x,1),B(S,1),B(E,``),A=!1,B(j,null),B(ne,0),B(ie,null),B(I,0),B(s,`preview`),B(p,``);let t=Xr(_(o));if(t!==void 0&&n.upload.byte_size>t){B(c,`error`),B(p,ue(t),!0);return}if(_(o)===`unsupported`){B(c,`ready`);return}B(c,`loading`);try{if(_(o)===`pdf`){let n=await me(()=>import(`./DGD3aKTU.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=Wa;let r=new AbortController,i=()=>r.abort();e.addEventListener(`abort`,i,{once:!0});let a=null,o=0,s=new Promise((e,t)=>{o=window.setTimeout(()=>{r.abort(),a?.destroy(),t(Error(`PDF preview took too long and was stopped.`))},Ba)}),l;try{if(l=await Promise.race([W(r.signal,t),s]),e.aborted)throw new DOMException(`Aborted`,`AbortError`);a=new n.PDFWorker,await Promise.race([a.promise,s])}catch(t){throw clearTimeout(o),e.removeEventListener(`abort`,i),t}if(e.aborted||!a){clearTimeout(o),e.removeEventListener(`abort`,i),a?.destroy();return}let u=a.port,d=e=>{let t=e.data;typeof t==`object`&&t&&`reason`in t&&typeof t.reason==`object`&&t.reason!==null&&`message`in t.reason&&t.reason.message===`Image exceeded maximum allowed size and was removed.`&&(A=!0,k?.(),B(c,`error`),B(p,`PDF page content could not be rendered completely within safety limits.`))};u.addEventListener(`message`,d);let f=null,m=!1;k=()=>{m||(m=!0,u.removeEventListener(`message`,d),f&&f.destroy(),a.destroy(),B(y,null))};let h=n.getDocument({data:l,maxImageSize:za,canvasMaxAreaInBytes:za*4,stopAtErrors:!0,worker:a});f=h;try{B(y,await Promise.race([h.promise,s]),!0)}finally{clearTimeout(o),e.removeEventListener(`abort`,i)}}else if(_(o)===`spreadsheet`||_(o)===`presentation`){let n=await W(e,t);if(e.aborted)return;if(_(o)===`spreadsheet`){let t=await Ra(_(o),n,e);if(e.aborted)return;B(j,t,!0)}else{let t=await Ra(_(o),n,e);if(e.aborted)return;B(ie,t,!0)}}else{if(B(m,await _e(e,t),!0),e.aborted)return;_(o)===`code`&&B(v,await Ia(_(m),Jr(n.upload),e),!0);try{_(o)===`markdown`&&(B(h,U(_(m)),!0),B(g,!0)),_(o)===`html`&&(B(h,de(_(m)),!0),B(g,!0))}catch(e){if(!(e instanceof se))throw e;B(h,``),B(s,`source`)}}e.aborted||B(c,`ready`)}catch(t){if(e.aborted||t instanceof Error&&t.name===`AbortError`)return;k?.(),k=null,B(c,`error`),B(p,t instanceof Error?t.message:`Could not preview this artifact.`,!0)}}f(()=>{let e=new AbortController;return ve(e.signal),()=>e.abort()}),f(()=>{if(_(o)!==`pdf`||!_(y)||!_(a)||_(c)!==`ready`)return;let e=_(y),t=_(x),n=_(S),r=!1,i=null,s=null,l=null,u=0;return B(C,!0),B(E,``),(async()=>{try{if(u=window.setTimeout(()=>{r||(i?.cancel(),l?.cancel(),k?.(),B(c,`error`),B(p,`PDF page rendering took too long and was stopped.`))},Va),s=await e.getPage(t),r||!_(a))return;let o=``,d=0;l=s.streamTextContent().getReader();try{for(;!r;){let{done:e,value:t}=await l.read();if(e)break;for(let e of t.items){if(d+=1,d>V){await l.cancel(),o=`${o}…`;break}if(!(`str`in e)||!e.str)continue;let t=`${o}${o?` `:``}${e.str}`;if(t.length>ae){await l.cancel(),o=`${t.slice(0,ae)}…`;break}o=t}if(d>V||o.endsWith(`…`))break}}finally{l.releaseLock(),l=null}if(r)return;B(E,o||`This page has no extractable text.`,!0);let f=s.getViewport({scale:n}),m=Math.min(window.devicePixelRatio||1,2),h=Math.max(1,Math.floor(f.width*m)),g=Math.max(1,Math.floor(f.height*m));Ua(h,g);let v=_(a).getContext(`2d`);if(!v)throw Error(`PDF canvas is unavailable.`);if(_(a).width=h,_(a).height=g,_(a).style.width=`${f.width}px`,_(a).style.height=`${f.height}px`,v.setTransform(m,0,0,m,0,0),i=s.render({canvasContext:v,viewport:f}),await i.promise,A)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(k?.(),B(c,`error`),B(p,e instanceof Error?e.message:`Could not render this PDF page.`,!0))}finally{clearTimeout(u),s?.cleanup(),s=null,r||B(C,!1)}})(),()=>{r=!0,clearTimeout(u),i?.cancel(),l?.cancel()}}),re(()=>k?.());function ye(e){let t=e.match(/^[A-Z]+/i)?.[0]?.toUpperCase()||`A`,n=0;for(let e of t)n=n*26+e.charCodeAt(0)-64;return n}function be(e){return Number(e.match(/\d+$/)?.[0]||1)}function xe(e){let t=``;for(let n=e;n>0;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}let Se=O(()=>{let e=_(j)?.sheets[_(ne)];if(!e)return{columns:[],rows:[],clipped:!1};let t=Math.max(1,...e.cells.map(e=>ye(e.reference))),n=Math.max(1,...e.cells.map(e=>be(e.reference))),r=Math.min(100,t),i=Math.min(1e3,Math.floor(1e4/r),n),a=new Map(e.cells.map(e=>[e.reference.toUpperCase(),e.value])),o=Array.from({length:r},(e,t)=>xe(t+1));return{columns:o,rows:Array.from({length:i},(e,t)=>({number:t+1,values:o.map(e=>a.get(`${e}${t+1}`)||``)})),clipped:t>r||n>i}});var G=po(),Ce=z(G),K=F(Ce),q=F(K),J=F(q,!0);T(q);var we=M(q,2),Y=F(we,!0);T(we);var X=M(we,2),Z=F(X,!0);T(X),T(K);var Q=M(K,2),Te=F(Q),Ee=e=>{var n=Ga(),r=F(n);let i;var a=M(r,2);let o;T(n),b(()=>{L(n,`aria-label`,`${_(H)} view`),L(r,`aria-pressed`,_(s)===`preview`),i=w(r,1,``,null,i,{active:_(s)===`preview`}),L(a,`aria-pressed`,_(s)===`source`),o=w(a,1,``,null,o,{active:_(s)===`source`})}),t(`click`,r,()=>B(s,`preview`)),t(`click`,a,()=>B(s,`source`)),d(e,n)};N(Te,e=>{_(le)&&e(Ee)});var De=M(Te,2),Oe=M(De,2);T(Q),T(Ce);var ke=M(Ce,2);let Ae;var je=F(ke),Me=e=>{var t=Ka(),n=M(F(t),2),r=F(n);T(n),fe(2),T(t),b(e=>l(r,`Opening ${e??``}`),[()=>_(H).toLowerCase()]),d(e,t)},Ne=e=>{var t=qa(),r=M(F(t),4),i=F(r,!0);T(r);var a=M(r,2);T(t),b(()=>{l(i,_(p)),L(a,`href`,_(ce)),L(a,`download`,n.upload.filename)}),d(e,t)},Pe=e=>{var t=Ja(),r=M(F(t),6);T(t),b(()=>{L(r,`href`,_(ce)),L(r,`download`,n.upload.filename)}),d(e,t)},Fe=e=>{var n=Ya(),r=z(n),i=F(r),o=M(i,2),s=F(o);T(o);var c=M(o,2),u=M(c,4),f=M(u,2),p=F(f);T(f);var m=M(f,2);T(r);var h=M(r,2);let g;var v=F(h);oe(v,e=>B(a,e),()=>_(a));var D=M(v,2),O=F(D,!0);T(D),T(h),b(e=>{i.disabled=_(x)<=1||_(C),l(s,`Page ${_(x)??``} of ${_(y).numPages??``}`),c.disabled=_(x)>=_(y).numPages||_(C),u.disabled=_(S)<=.6||_(C),l(p,`${e??``}%`),m.disabled=_(S)>=2||_(C),g=w(h,1,`artifact-viewer__pdf-stage`,null,g,{"is-rendering":_(C)}),L(h,`aria-label`,`PDF page ${_(x)} visual preview`),L(D,`aria-label`,`PDF page ${_(x)} text`),l(O,_(E))},[()=>Math.round(_(S)*100)]),t(`click`,i,()=>B(x,_(x)-1)),t(`click`,c,()=>B(x,_(x)+1)),t(`click`,u,()=>B(S,Math.max(.6,_(S)-.2),!0)),t(`click`,m,()=>B(S,Math.min(2,_(S)+.2),!0)),d(e,n)},Ie=e=>{var n=no(),r=z(n),i=F(r),a=F(i);T(i);var o=M(i,4),s=e=>{var t=Xa(),n=F(t);T(t),b(()=>l(n,`${_(j).hiddenSheets??``} hidden ${_(j).hiddenSheets===1?`sheet`:`sheets`} omitted`)),d(e,t)};N(o,e=>{_(j).hiddenSheets>0&&e(s)});var c=M(o,2),f=e=>{var t=Xa(),n=F(t);T(t),b(()=>l(n,`${_(j).unsupportedSheets??``} non-worksheet ${_(j).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),d(e,t)};N(c,e=>{_(j).unsupportedSheets>0&&e(f)}),T(r);var p=M(r,2),m=F(p),h=F(m),g=F(h);u(M(F(g)),17,()=>_(Se).columns,P,(e,t)=>{var n=Za(),r=F(n,!0);T(n),b(()=>l(r,_(t))),d(e,n)}),T(g),T(h);var v=M(h);u(v,21,()=>_(Se).rows,P,(e,t)=>{var n=$a(),r=F(n),i=F(r,!0);T(r),u(M(r),17,()=>_(t).values,P,(e,t)=>{var n=Qa(),r=F(n,!0);T(n),b(()=>l(r,_(t))),d(e,n)}),T(n),b(()=>l(i,_(t).number)),d(e,n)}),T(v),T(m);var y=M(m,2),x=e=>{d(e,eo())};N(y,e=>{(_(Se).clipped||_(j).sheets[_(ne)].truncated)&&e(x)}),T(p);var S=M(p,2);u(S,21,()=>_(j).sheets,P,(e,n,r)=>{var i=to();let a;var o=F(i,!0);T(i),b(()=>{L(i,`aria-selected`,_(ne)===r),a=w(i,1,``,null,a,{active:_(ne)===r}),l(o,_(n).name)}),t(`click`,i,()=>B(ne,r,!0)),d(e,i)}),T(S),b(()=>{l(a,`${_(j).sheets.length??``} ${_(j).sheets.length===1?`sheet`:`sheets`}`),L(p,`aria-label`,`${_(j).sheets[_(ne)].name} worksheet`)}),d(e,n)},Le=e=>{var n=so(),r=z(n),a=F(r),o=M(a,2),s=F(o);T(o);var c=M(o,2);T(r);var f=M(r,2),p=F(f);u(p,21,()=>_(ie).slides[_(I)].paragraphs,P,(e,t,n)=>{var r=i(),a=z(r),o=e=>{var n=ro(),r=F(n,!0);T(n),b(()=>l(r,_(t))),d(e,n)},s=e=>{var n=io(),r=F(n,!0);T(n),b(()=>l(r,_(t))),d(e,n)};N(a,e=>{n===0?e(o):e(s,-1)}),d(e,r)}),T(p);var m=M(p,4),h=e=>{var t=ao(),n=F(t);T(t),b(()=>l(n,`${_(ie).hiddenSlides??``} hidden ${_(ie).hiddenSlides===1?`slide`:`slides`} omitted.`)),d(e,t)};N(m,e=>{_(ie).hiddenSlides>0&&e(h)});var g=M(m,2),v=e=>{d(e,oo())};N(g,e=>{_(ie).truncated&&e(v)}),T(f),b(()=>{a.disabled=_(I)===0,l(s,`Slide ${_(I)+1} of ${_(ie).slides.length??``}`),c.disabled=_(I)>=_(ie).slides.length-1,L(p,`aria-label`,`Slide ${_(I)+1}: ${_(ie).slides[_(I)].title}`)}),t(`click`,a,()=>B(I,_(I)-1)),t(`click`,c,()=>B(I,_(I)+1)),d(e,n)},Re=e=>{var t=co();r(t,()=>_(h),!0),T(t),d(e,t)},ze=e=>{var t=lo();r(t,()=>_(h),!0),T(t),d(e,t)},Be=e=>{var t=uo(),n=F(t);r(n,()=>_(v),!0),T(n),T(t),d(e,t)},Ve=e=>{var t=fo(),n=F(t),r=F(n,!0);T(n),T(t),b(()=>l(r,_(m))),d(e,t)};N(je,e=>{_(c)===`loading`?e(Me):_(c)===`error`?e(Ne,1):_(o)===`unsupported`?e(Pe,2):_(o)===`pdf`&&_(y)?e(Fe,3):_(o)===`spreadsheet`&&_(j)?e(Ie,4):_(o)===`presentation`&&_(ie)?e(Le,5):_(o)===`html`&&_(s)===`preview`&&_(h)?e(Re,6):_(o)===`markdown`&&_(s)===`preview`?e(ze,7):_(o)===`code`?e(Be,8):e(Ve,-1)}),T(ke),b(e=>{l(J,_(H)),L(we,`title`,n.upload.filename),l(Y,n.upload.filename),l(Z,e),L(De,`href`,_(ce)),L(De,`download`,n.upload.filename),L(De,`aria-label`,`Download ${n.upload.filename}`),Ae=w(ke,1,`artifact-viewer__body`,null,Ae,{"is-pdf":_(o)===`pdf`,"is-office":_(o)===`spreadsheet`||_(o)===`presentation`})},[()=>Gt(n.upload.byte_size)]),t(`click`,Oe,function(...e){n.onClose?.apply(this,e)}),d(e,G),te()}U([`click`]);var ho=o(``);function go(e,n){var r=ho(),i=F(r),a=M(i,2),o=F(a),s=F(o),c=F(s,!0);T(s);var u=M(s,2),f=F(u),p=M(f,2);T(u),T(o);var m=M(o,2),h=F(m);T(m),T(a),T(r),b(()=>{l(c,n.title),L(f,`href`,n.url),L(h,`src`,n.url),L(h,`alt`,n.title)}),t(`click`,i,function(...e){n.onClose?.apply(this,e)}),t(`click`,p,function(...e){n.onClose?.apply(this,e)}),d(e,r)}U([`click`]);var _o=o(`
    `),vo=o(`
    `);function yo(e,t){let n=S(t,`rows`,3,3);var r=vo();u(r,21,()=>Array.from({length:n()}),P,(e,t,n)=>{var r=_o();de(r,`--history-row: ${n}`),d(e,r)}),T(r),b(()=>{w(r,1,`history-loader history-loader--${t.direction}`),L(r,`aria-label`,t.direction===`older`?`Loading older messages`:`Loading newer messages`)}),d(e,r)}var bo=512,xo=new Map;function So(e){let t=ge(e?.trim()||``);if(!t)return``;let n=xo.get(t);if(n)return n;if(xo.size>=bo){let e=xo.keys().next().value;e&&xo.delete(e)}return xo.set(t,t),t}var Co=o(``),wo=o(``),To=o(``);function Eo(e,n){ee(n,!0);let r=S(n,`class`,3,`avatar`),o=S(n,`size`,3,40),s=S(n,`loading`,3,`lazy`),c=S(n,`fetchPriority`,3,`low`),u=D(``),f=O(()=>So(n.src)),m=O(()=>_(f)!==``&&_(u)!==_(f)),h=O(()=>it(n.id||n.name||_(f)||`avatar`)),v=O(()=>$e(n.name));function y(){B(u,_(f),!0)}var x=i(),C=z(x),E=e=>{var i=wo(),u=F(i),x=e=>{var t=Co();b(()=>{L(t,`src`,_(f)),L(t,`width`,o()),L(t,`height`,o()),L(t,`loading`,s()),L(t,`fetchpriority`,c())}),g(`error`,t,y),a(t),d(e,t)},S=e=>{var t=p();b(()=>l(t,_(v))),d(e,t)};N(u,e=>{_(m)?e(x):e(S,-1)}),T(i),b(()=>{w(i,1,le(r())),de(i,`--hue: ${_(h)??``}deg`),L(i,`aria-label`,n.buttonLabel)}),t(`click`,i,function(...e){n.onclick?.apply(this,e)}),d(e,i)},k=e=>{var t=To(),n=F(t),i=e=>{var t=Co();b(()=>{L(t,`src`,_(f)),L(t,`width`,o()),L(t,`height`,o()),L(t,`loading`,s()),L(t,`fetchpriority`,c())}),g(`error`,t,y),a(t),d(e,t)},u=e=>{var t=p();b(()=>l(t,_(v))),d(e,t)};N(n,e=>{_(m)?e(i):e(u,-1)}),T(t),b(()=>{w(t,1,le(r())),de(t,`--hue: ${_(h)??``}deg`)}),d(e,t)};N(C,e=>{n.buttonLabel?e(E):e(k,-1)}),d(e,x),te()}U([`click`]);var Do=o(`
    `),Oo=o(``),ko=o(` `,1),Ao=o(`
    `,2),jo=o(`
    `),Mo=o(`
    `),No=o(` `);function Po(e,n){ee(n,!0);let r=S(n,`onOpenImage`,3,()=>{}),a=S(n,`onOpenArtifact`,3,()=>{}),o=D(null),s=D(!1),c=D(``),u=O(()=>_(c)||E(n.upload.duration_ms??0)),f=O(()=>(n.upload.content_type||``).split(`;`)[0].trim().toLowerCase()),p=O(()=>qr(n.upload)),m=O(()=>_(p)===`unsupported`&&_(f).startsWith(`image/`)),h=O(()=>_(p)===`unsupported`&&_(f).startsWith(`video/`)),v=O(()=>_(p)===`unsupported`&&_(f).startsWith(`audio/`)),y=O(()=>_(p)===`code`||_(p)===`text`||_(p)===`markdown`||_(p)===`pdf`||_(p)===`spreadsheet`||_(p)===`presentation`||_(p)===`html`),x=O(()=>Yr(_(p))),C=O(()=>{let e=n.upload.width??0,t=n.upload.height??0;if(e<=0||t<=0)return``;let r=_(m)?320:360;return`aspect-ratio: ${e} / ${t}; max-height: ${Math.min(r,Math.max(120,t))}px;`});function E(e){if(!e||e<=0)return``;let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function k(){B(s,!0)}function A(){!_(o)||!isFinite(_(o).duration)||B(c,E(_(o).duration*1e3),!0)}function j(){_(o)&&(B(s,!0),_(o).play())}function P(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var ne=i(),re=z(ne),ie=e=>{var i=Do(),a=F(i),o=F(a);T(a);var s=M(a,2),c=F(s),u=F(c,!0);T(c);var f=M(c,2);T(s),T(i),b(()=>{L(a,`aria-label`,`Open image ${n.upload.filename}`),L(o,`src`,n.url),L(o,`alt`,n.upload.filename),L(o,`width`,n.upload.width||void 0),L(o,`height`,n.upload.height||void 0),de(o,_(C)),l(u,n.upload.filename),L(f,`href`,n.url),L(f,`download`,n.upload.filename),L(f,`aria-label`,`Download ${n.upload.filename}`)}),t(`click`,a,()=>r()(n.url,n.upload.filename)),t(`click`,f,e=>e.stopPropagation()),d(e,i)},I=e=>{var r=Ao();let i;var a=F(r),c=F(a);T(a),oe(a,e=>B(o,e),()=>_(o));var p=M(a,2),m=e=>{var r=ko(),i=z(r),a=M(i,2),o=e=>{var t=Oo(),n=F(t,!0);T(t),b(()=>l(n,_(u))),d(e,t)};N(a,e=>{_(u)&&e(o)}),b(()=>L(i,`aria-label`,`Play ${n.upload.filename}`)),t(`click`,i,j),d(e,r)};N(p,e=>{_(s)||e(m)});var h=M(p,2),v=F(h),y=F(v,!0);T(v);var x=M(v,2);T(h),T(r),b(()=>{i=w(r,1,`media-tile media-tile--video`,null,i,{"is-started":_(s)}),a.controls=_(s),L(a,`aria-label`,n.upload.filename),L(a,`width`,n.upload.width||void 0),L(a,`height`,n.upload.height||void 0),de(a,_(C)),L(c,`src`,n.url),L(c,`type`,_(f)),l(y,n.upload.filename),L(x,`href`,n.url),L(x,`download`,n.upload.filename),L(x,`aria-label`,`Download ${n.upload.filename}`)}),g(`play`,a,k),g(`loadedmetadata`,a,A),t(`click`,x,e=>e.stopPropagation()),d(e,r)},R=e=>{var t=jo(),r=F(t),i=M(F(r),2),a=F(i),o=F(a,!0);T(a);var s=M(a,2),c=F(s,!0);T(s),T(i),T(r);var u=M(r,2),f=F(u),p=F(f,!0);T(f),T(u),T(t),b(e=>{l(o,n.upload.filename),l(c,e),L(u,`src`,n.url),L(f,`href`,n.url),l(p,n.upload.filename)},[()=>P(n.upload.byte_size)]),d(e,t)},ae=e=>{var r=Mo(),i=F(r),o=F(i),s=F(o,!0);T(o),T(i);var c=M(i,2),u=F(c),f=F(u,!0);T(u);var p=M(u,2),m=F(p,!0);T(p),T(c);var h=M(c,2);T(r),b(e=>{L(i,`data-artifact-upload-id`,n.upload.id),L(i,`aria-label`,`Open ${n.upload.filename}`),l(s,_(x)),L(u,`data-artifact-upload-id`,n.upload.id),l(f,n.upload.filename),l(m,e),L(h,`href`,n.url),L(h,`download`,n.upload.filename),L(h,`aria-label`,`Download ${n.upload.filename}`)},[()=>P(n.upload.byte_size)]),t(`click`,i,()=>a()(n.upload)),t(`click`,u,()=>a()(n.upload)),d(e,r)},V=e=>{var t=No(),r=M(F(t),2),i=F(r),a=F(i,!0);T(i);var o=M(i,2),s=F(o,!0);T(o),T(r),T(t),b(e=>{L(t,`href`,n.url),L(t,`download`,n.upload.filename),L(t,`aria-label`,`Download ${n.upload.filename}`),l(a,n.upload.filename),l(s,e)},[()=>P(n.upload.byte_size)]),d(e,t)};N(re,e=>{_(m)?e(ie):_(h)?e(I,1):_(v)?e(R,2):_(y)?e(ae,3):e(V,-1)}),d(e,ne),te()}U([`click`]);var Fo=o(` `),Io=o(` `),Lo=o(``);function Ro(e,n){ee(n,!0);var r=i(),a=z(r),o=e=>{var r=Lo();let i;var a=M(F(r),2),o=F(a),s=F(o,!0);T(o);var c=M(o,2),u=e=>{var t=Fo(),r=F(t,!0);T(t),b(e=>l(r,e),[()=>Zt(n.message.quoted_body_snapshot)]),d(e,t)},f=e=>{var t=Io(),r=F(t);T(t),b(e=>l(r,`[original deleted] ${e??``}`),[()=>Zt(n.message.quoted_body_snapshot)]),d(e,t)};N(c,e=>{n.message.quoted_message_id?e(u):e(f,-1)}),T(a),T(r),b((e,t)=>{i=w(r,1,`quote-block`,null,i,{dangling:!n.message.quoted_message_id}),r.disabled=!n.message.quoted_message_id,L(r,`aria-label`,e),l(s,t)},[()=>n.message.quoted_message_id?`Jump to quoted message from ${Qt(n.message)}`:`Original message was deleted`,()=>Qt(n.message)]),t(`click`,r,()=>n.onJump(n.message)),d(e,r)};N(a,e=>{(n.message.quoted_message_id||n.message.quoted_body_snapshot)&&e(o)}),d(e,r),te()}U([`click`]);var zo={bash:{glyph:`🖥`,action:`Ran shell command`},exec:{glyph:`🖥`,action:`Ran shell command`},command:{glyph:`🖥`,action:`Ran shell command`},bashsession:{glyph:`🖥`,action:`Managed shell session`},sessions_send:{glyph:`🖥`,action:`Managed shell session`},read:{glyph:`📖`,action:`Read file`},write:{glyph:`📝`,action:`Wrote file`},edit:{glyph:`✏`,action:`Edited file`},apply_patch:{glyph:`🧩`,action:`Applied patch`},applypatch:{glyph:`🧩`,action:`Applied patch`},browsercontrol:{glyph:`🌐`,action:`Controlled browser`},websearch:{glyph:`🔍`,action:`Searched the web`},webfetch:{glyph:`🔗`,action:`Fetched a page`},image:{glyph:`🖼`,action:`Analyzed image`},imagecreate:{glyph:`🎨`,action:`Generated image`},scheduler:{glyph:`⏰`,action:`Scheduled a job`},sendmessage:{glyph:`📤`,action:`Sent a message`},message:{glyph:`📤`,action:`Sent a message`},systemctl:{glyph:`⚙`,action:`Controlled the system`},process:{glyph:`⚙`,action:`Managed a process`},devicecontrol:{glyph:`📱`,action:`Controlled a device`},pdfparse:{glyph:`📄`,action:`Parsed a PDF`},statuscheck:{glyph:`📊`,action:`Checked status`}},Bo=[{test:e=>e.includes(`search`),glyph:`🔍`,action:`Searched`},{test:e=>e.includes(`fetch`),glyph:`🔗`,action:`Fetched`},{test:e=>e.includes(`browser`),glyph:`🌐`,action:`Controlled browser`},{test:e=>e.includes(`patch`),glyph:`🧩`,action:`Applied patch`},{test:e=>e.includes(`write`),glyph:`📝`,action:`Wrote file`},{test:e=>e.includes(`edit`),glyph:`✏`,action:`Edited file`},{test:e=>e.includes(`read`),glyph:`📖`,action:`Read file`},{test:e=>e.includes(`session`),glyph:`🖥`,action:`Managed shell session`},{test:e=>e.includes(`bash`)||e.includes(`shell`)||e.includes(`exec`),glyph:`🖥`,action:`Ran command`},{test:e=>e.includes(`image`),glyph:`🖼`,action:`Worked with image`},{test:e=>e.includes(`message`)||e.includes(`send`),glyph:`📤`,action:`Sent a message`},{test:e=>e.includes(`agent`)||e.includes(`subagent`),glyph:`🤖`,action:`Ran a sub-agent`},{test:e=>e.includes(`schedul`)||e.includes(`cron`),glyph:`⏰`,action:`Scheduled a job`},{test:e=>e.includes(`device`),glyph:`📱`,action:`Controlled a device`},{test:e=>e.includes(`file`)||e.includes(`dir`),glyph:`📁`,action:`Worked with files`}];function Vo(e,t){let n=String(e||``).trim(),r=n.toLowerCase().replace(/[^a-z0-9_]/g,``),i=String(t||``).trim()||void 0,a=zo[r];if(a)return{name:n,glyph:a.glyph,action:a.action,detail:i};for(let e of Bo)if(e.test(r))return{name:n,glyph:e.glyph,action:e.action,detail:i};return{name:n||`tool`,glyph:`🔧`,action:`Used tool`,detail:i}}var Ho=o(`
    `),Uo=o(` `),Wo=o(` `),Go=o(`
    `),Ko=o(`
    `),qo=o(`
    `),Jo=o(`
    `),Yo=o(`
    `),Xo=o(`
    `);function Zo(e,n){ee(n,!0);let a=D(!0),o=D(void 0);f(()=>{(_(o)===void 0||n.block.final!==_(o))&&(B(o,n.block.final,!0),B(a,!n.block.final))});let s=C({});function c(e){s[e]=!s[e]}function p(e){let t=e.match(/^\*\*([^]*?)\*\*\s*\n*([^]*)$/);if(!t)return{text:e};let n=t[1].trim(),r=t[2].trim();return{head:n||void 0,text:r}}let m=O(()=>n.block.items.map(e=>e.type===`tool`?{item:e,tool:Vo(e.name,e.detail)}:{item:e,tool:null})),h=O(()=>n.block.final?_(a)?`expanded`:`collapsed`:`live`),g=O(()=>_(a)?`Hide preamble`:`Show preamble`);var v=Xo();let y;var x=F(v),S=F(x);let E;var k=M(S,2);let A;var j=F(k,!0);T(k);var P=M(k,2),ne=F(P,!0);T(P),T(x);var re=M(x,2),ie=e=>{var n=Yo();u(n,21,()=>_(m),e=>e.item.id,(e,n)=>{var a=i(),o=z(a),u=e=>{var t=Ho();r(t,()=>ja(_(n).item.body),!0),T(t),d(e,t)},f=e=>{let i=O(()=>s[_(n).item.id]===!0);var a=Jo();let o;var u=F(a),f=F(u);let m;var h=M(f,2),g=F(h,!0);T(h);var v=M(h,2),y=F(v,!0);T(v);var x=M(v,2),S=e=>{var t=Uo(),r=F(t,!0);T(t),b(()=>l(r,_(n).tool.name)),d(e,t)};N(x,e=>{_(n).tool.name&&_(n).tool.name!==`tool`&&e(S)});var C=M(x,2),E=e=>{var t=Wo(),r=F(t,!0);T(t),b(()=>{L(t,`title`,_(n).tool.detail),l(r,_(n).tool.detail)}),d(e,t)};N(C,e=>{!_(i)&&_(n).tool.detail&&e(E)}),T(u);var D=M(u,2),k=e=>{let t=O(()=>p(_(n).item.full));var i=qo(),a=F(i),o=e=>{var n=Go(),r=F(n,!0);T(n),b(()=>l(r,_(t).head)),d(e,n)};N(a,e=>{_(t).head&&e(o)});var s=M(a,2),c=e=>{var n=Ko();r(n,()=>ja(_(t).text),!0),T(n),d(e,n)};N(s,e=>{_(t).text&&e(c)}),T(i),d(e,i)};N(D,e=>{_(i)&&e(k)}),T(a),b(()=>{o=w(a,1,`preamble-tool`,null,o,{expanded:_(i)}),L(u,`aria-expanded`,_(i)),m=w(f,1,`tool-line-chevron`,null,m,{open:_(i)}),l(g,_(n).tool.glyph),l(y,_(n).tool.action)}),t(`click`,u,()=>c(_(n).item.id)),d(e,a)};N(o,e=>{_(n).item.type===`commentary`?e(u):_(n).tool&&e(f,1)}),d(e,a)}),T(n),d(e,n)};N(re,e=>{_(a)&&e(ie)}),T(v),b(()=>{y=w(v,1,`preamble-contract`,null,y,{"is-final":n.block.final}),L(x,`aria-expanded`,_(a)),E=w(S,1,`preamble-chevron`,null,E,{open:_(a)}),A=w(k,1,`preamble-state`,null,A,{"is-live":!n.block.final}),l(j,_(h)),l(ne,_(g))}),t(`click`,x,()=>B(a,!_(a))),d(e,v),te()}U([`click`]);var Qo=o(`
    This message was deleted.
    `),$o=o(`
    `),es=o(``),ts=o(``),ns=o(``),rs=o(`
    `,1),is=o(``),as=o(` `,1),os=o(``),ss=o(``),cs=o(`
    `),ls=o(`
    `);function us(e,n){ee(n,!0);let i=S(n,`canDeleteAnyMessage`,3,!1),a=S(n,`deleting`,3,!1),o=O(()=>n.message.status===`pending`),s=O(()=>n.message.status===`failed`),c=O(()=>!!n.message.deleted_at),f=O(()=>i()||!!n.currentUserID&&(n.message.author?.id||n.message.author_id)===n.currentUserID),p=O(()=>n.message.preamble_block),h=O(()=>!!n.previousMessage?.preamble_block&&!_(p)),g=O(()=>!!_(p)&&!!n.nextMessage&&!n.nextMessage?.preamble_block),v=O(()=>n.message.thread_state?.reply_count||0),y=O(()=>_(v)>0),x=O(()=>tn(n.message)),C=O(()=>n.selectedThreadID===n.message.id),E=O(()=>!_(p)&&!_(o)&&!_(s)&&(!_(c)||_(y)||_(C)));function D(e){_(E)&&(window.getSelection()?.toString()||e.target?.closest(`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .message-actions, .message-failed`)||n.onOpenThread(n.message))}function k(e){return e.addEventListener(`click`,D),{destroy(){e.removeEventListener(`click`,D)}}}var A=ls();let j;var P=F(A),ne=F(P,!0);T(P);var re=M(P,2),ie=F(re),I=e=>{Zo(e,{get block(){return _(p)}})},R=e=>{d(e,Qo())},ae=e=>{var i=rs(),a=z(i);Ro(a,{get message(){return n.message},get onJump(){return n.onJumpToQuote}});var o=M(a,2);r(o,()=>ja(n.message.body),!0),T(o),m(o,e=>qe?.(e));var c=M(o,2),l=e=>{var t=$o();u(t,21,()=>n.message.attachments,e=>e.id,(e,t)=>{{let r=O(()=>Ut(_(t)));Po(e,{get upload(){return _(t)},get url(){return _(r)},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact}})}}),T(t),d(e,t)};N(c,e=>{n.message.attachments?.length&&e(l)});var f=M(c,2),p=e=>{var r=ns(),i=M(F(r),2),a=e=>{var r=es();t(`click`,r,()=>n.onRetry?.(n.message)),d(e,r)};N(i,e=>{n.onRetry&&e(a)});var o=M(i,2),s=e=>{var r=ts();t(`click`,r,()=>n.onDiscard?.(n.message)),d(e,r)};N(o,e=>{n.onDiscard&&e(s)}),T(r),d(e,r)};N(f,e=>{_(s)&&e(p)}),d(e,i)};N(ie,e=>{_(p)?e(I):_(c)?e(R,1):e(ae,-1)});var oe=M(ie,2),B=e=>{var r=os();let i;var a=M(F(r),2),o=e=>{var t=as(),r=z(t),i=F(r,!0);T(r);var a=M(r,2),o=e=>{var t=is(),r=F(t,!0);T(t),b(()=>{L(t,`datetime`,n.message.thread_state?.last_reply_at),l(r,_(x))}),d(e,t)};N(a,e=>{_(x)&&e(o)}),b(e=>l(i,e),[()=>en(n.message)]),d(e,t)};N(a,e=>{(_(y)||_(C))&&e(o)}),T(r),b((e,t)=>{i=w(r,1,`thread-hint tooltip`,null,i,{"has-replies":_(y),"is-open":_(C)}),L(r,`data-tooltip`,e),L(r,`aria-label`,t)},[()=>$t(n.message,n.selectedThreadID),()=>$t(n.message,n.selectedThreadID)]),t(`click`,r,()=>n.onOpenThread(n.message)),d(e,r)};N(oe,e=>{_(E)&&e(B)}),T(re);var V=M(re,2),se=e=>{var r=cs(),i=F(r),c=M(i,2),l=M(c,2),u=e=>{var r=ss();b(()=>r.disabled=_(o)||_(s)||a()),t(`click`,r,()=>n.onDeleteMessage?.(n.message)),d(e,r)};N(l,e=>{_(f)&&n.onDeleteMessage&&e(u)}),T(r),b(e=>{i.disabled=_(o)||_(s),L(c,`data-tooltip`,e),c.disabled=_(o)||_(s)},[()=>$t(n.message,n.selectedThreadID)]),t(`click`,i,()=>n.onReply(n.message,n.replyContext)),t(`click`,c,()=>n.onOpenThread(n.message)),d(e,r)};N(V,e=>{!_(p)&&!_(c)&&e(se)}),T(A),m(A,e=>k?.(e)),b((e,t)=>{j=w(A,1,`message-row`,null,j,e),L(A,`data-message-id`,n.message.id),l(ne,t)},[()=>({selected:n.selected,"is-pending":_(o),"is-failed":_(s),"is-deleted":_(c),"is-preamble":!!_(p),"is-preamble-collapsed":_(p)?.final===!0,"is-preamble-live":_(p)?.final===!1,"before-final-message":_(g),"after-preamble":_(h),"can-open-thread":_(E)}),()=>n.index===0?``:Ma(n.message.created_at)]),d(e,A),te()}U([`click`]);var ds=o(` deleted bot`,1),fs=o(`bot`),ps=o(` `,1),ms=o(` `),hs=o(`
    `);function gs(e,n){ee(n,!0);let r=S(n,`canDeleteAnyMessage`,3,!1),i=S(n,`deletingMessageIDs`,19,()=>new Set),a=O(()=>n.group.messages[0]?.author),o=O(()=>_(a)?.kind===`bot`),s=O(()=>!_(o)&&!!n.currentUserID&&n.group.authorID===n.currentUserID);var c=hs();let f;var p=F(c);{let e=O(()=>n.group.authorDeleted?`avatar`:`avatar avatar-button`),t=O(()=>n.group.authorDeleted?void 0:`View profile for ${n.group.authorName}`);Eo(p,{get class(){return _(e)},get id(){return n.group.authorID},get name(){return n.group.authorName},get src(){return n.group.authorAvatarURL},size:38,get buttonLabel(){return _(t)},onclick:()=>n.onOpenProfile(n.group.messages[0]?.author)})}var m=M(p,2),h=F(m),g=F(h),v=e=>{var t=ds(),r=z(t),i=F(r,!0);T(r),fe(2),b(()=>l(i,n.group.authorName)),d(e,t)},y=e=>{var r=ps(),i=z(r),a=F(i,!0);T(i);var s=M(i,2),c=e=>{d(e,fs())};N(s,e=>{_(o)&&e(c)}),b(()=>l(a,n.group.authorName)),t(`click`,i,()=>n.onOpenProfile(n.group.messages[0]?.author)),d(e,r)};N(g,e=>{n.group.authorDeleted?e(v):e(y,-1)});var x=M(g,2),C=e=>{var t=ms(),r=F(t,!0);T(t),b(e=>l(r,e),[()=>et(n.group.authorHandle)]),d(e,t)};N(x,e=>{n.group.authorHandle&&e(C)});var E=M(x,2),D=F(E,!0);T(E),T(h),u(M(h,2),19,()=>n.group.messages,e=>e.id,(e,t,a)=>{{let o=O(()=>n.selectedThreadID===_(t).id),s=O(()=>i().has(_(t).id));us(e,{get message(){return _(t)},get index(){return _(a)},get previousMessage(){return n.group.messages[_(a)-1]},get nextMessage(){return n.group.messages[_(a)+1]},get selected(){return _(o)},get replyContext(){return n.replyContext},get selectedThreadID(){return n.selectedThreadID},get currentUserID(){return n.currentUserID},get canDeleteAnyMessage(){return r()},get deleting(){return _(s)},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage}})}}),T(m),T(c),b(e=>{f=w(c,1,`message-group`,null,f,{"is-agent":_(o),"is-self":_(s)}),l(D,e)},[()=>Ma(n.group.timestamp)]),d(e,c),te()}U([`click`]);var _s=o(`
    Send a message in Markdown — code fences, lists, links all work. Threads open from any message.
    `),vs=o(`
    `),ys=o(`
    `),bs=o(`
    New
    `),xs=o(`
    `),Ss=o(`
    `),Cs=o(`
    `);function ws(e,n){ee(n,!0);let r=S(n,`loading`,3,!1),a=S(n,`unreadCount`,3,0),o=S(n,`unreadBoundarySeq`,3,0),c=S(n,`unreadBoundaryLoaded`,3,!1),u=S(n,`unreadSince`,3,``),m=S(n,`hasOlder`,3,!1),h=S(n,`hasNewer`,3,!1),g=S(n,`loadingOlder`,3,!1),v=S(n,`loadingNewer`,3,!1),y=S(n,`prepending`,3,!1),x=S(n,`canDeleteAnyMessage`,3,!1),C=S(n,`deletingMessageIDs`,19,()=>new Set),E=1.5,k=D(void 0),A=D(void 0),j=D(void 0),P=D(0),ne=D(0),ie=O(()=>n.selectedDirect?`dm`:`channel`),I=D(``),R=D(-1),ae=D(0),V=O(()=>_(I)===n.viewKey&&_(R)===o()&&a()<=_(ae)?0:a()),se=D(``),H=D(0),ce=D(!1),le,de=O(()=>_(V)>0?_(V):_(H));function U(){le&&=(window.clearTimeout(le),void 0)}f(()=>{if(_(se)&&_(se)!==n.viewKey){U(),B(H,0),B(se,``),B(ce,!1);return}if(_(V)>0){U(),B(se,n.viewKey,!0),B(H,_(V),!0),B(ce,!1);return}_(H)>0&&!_(ce)&&(B(ce,!0),le=window.setTimeout(()=>{le=void 0,!(_(V)>0)&&(B(H,0),B(se,``),B(ce,!1))},180))}),re(U);let pe=O(()=>{let e=o()+1;if(_(de)<=0||e<=0)return!1;let t=1/0,r=0;for(let e of n.messages){if(e.parent_message_id)continue;let n=e.channel_seq||0;n<=0||(t=Math.min(t,n),r=Math.max(r,n))}return t<=e&&r>=e}),me=O(()=>c()&&_(pe)),he=O(()=>{let e=[],t=!1,r=e=>!_(me)||e.parent_message_id||e.author?.id===n.currentUserID||e.author_id===n.currentUserID?!1:_(de)>0&&(e.channel_seq||0)>o();for(let i of an(n.messages)){let n=-1;if(!t){for(let e=0;en.messages.map(e=>{let t=e.preamble_block;if(!t)return``;let n=t.items.map(e=>e.type===`commentary`?`${e.id}\u0000${e.body}`:`${e.id}\u0000${e.name}\u0000${e.detail||``}\u0000${e.full}`).join(``);return`${e.id}\u0000${t.final?`final`:`live`}\u0000${n}`}).filter(Boolean).join(``)),_e=D(!0),ve=D(!1),ye,be=0,xe=``,Se,Ce=!1,K=!1,q=!1,J=!1,we=0,Y=0;function X(e=!0){return e&&(Ce=!1,B(ve,!0)),Y+=1,Y}function Z(e,t){return We(e)&&t===Y}function Q(e=2){let t=++we;K=!0;let n=e=>{requestAnimationFrame(()=>{if(t===we){if(e<=1){K=!1;return}n(e-1)}})};n(e)}function Te(){if(!_(k))return 0;let e=_(k).getScrollSize()+_(P);return Math.max(0,e-_(k).getScrollOffset()-_(k).getViewportSize())}function Ee(){return!_(k)||Te()<=E}function De(e=E){return!_(k)||Te()<=e}function Oe(){if(!_(k))return{atBottom:!0,nearOlder:!1,nearNewer:!1};let e=Te();return{atBottom:Ee(),nearOlder:_(k).getScrollOffset()-_(P)<=160,nearNewer:e<=260}}function ke(){n.onHistorySettled?.(Oe())}function Ae(){h()||_(V)>0||n.onReachedBottom?.()}f(()=>{if(v()){J=!0;return}J&&(J=!1,q=!1)});async function je(){!_(k)||_(he).length===0||(ge=!h(),await Me(X()))}async function Me(e=X()){if(!_(k)||_(he).length===0)return;let t=n.viewKey;document.activeElement===_(A)&&_(A).blur();let r=-1;for(let n=0;n<6;n+=1){if(!_(k)||!Z(t,e)||(ge=!h(),Q(2),_(k).scrollToIndex(_(he).length-1,{align:`end`}),await s(),await Be(),!_(k)||!Z(t,e)))return;let n=_(k).getScrollSize(),i=r>=0&&Math.abs(n-r)<=E;if(r=n,i&&Ee())break}B(ve,!0),ge=!h(),Ee()&&(B(_e,!0),Ae()),ke()}f(()=>{if(!_(A))return;let e=_(A),t=e=>{e.deltaY>0&&!Ce&&!K&&h()&&Ee()&&(q=!0,n.onLoadNewer?.(`wheel`))};return e.addEventListener(`wheel`,t,{passive:!0}),()=>{e.removeEventListener(`wheel`,t)}});function Ne(e){return _(he).findIndex(t=>t.kind===`group`&&t.group.messages.some(t=>t.id===e))}let Pe=O(()=>{if(!m()||r()||!y())return 0;let e=Math.max(_(ne),480);return Math.max(4,Math.ceil(e/52))});f(()=>{if(!_(A))return;let e=()=>{_(A)&&B(ne,_(A).clientHeight,!0)};e();let t=new ResizeObserver(e);return t.observe(_(A)),()=>t.disconnect()});let Fe=0;f(()=>{if(!_(j)||!_(A)){B(P,0),Fe=0;return}let e=_(j),t=()=>{let t=e.offsetHeight,n=Fe;if(B(P,t,!0),Fe=t,n>0&&t!==n){let e=t-n;_(k)&&_(k).getScrollOffset()>0&&_(k).scrollBy(e)}};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect(),B(P,0),Fe=0}});function Ie(){return _(he).findIndex(e=>e.kind===`divider`)}function Le(){if(!_(me)||_(de)<=0)return``;for(let e of n.messages)if(!e.parent_message_id&&!(e.author?.id===n.currentUserID||e.author_id===n.currentUserID)&&(e.channel_seq||0)>o())return e.id;return``}function Re(){let e=0;for(let t of n.messages)e=Math.max(e,t.channel_seq||0);return e}function ze(){B(I,n.viewKey,!0),B(R,o()),B(ae,a()),n.onMarkRead?.(Re())}function Be(){return new Promise(e=>requestAnimationFrame(()=>e()))}function Ve(e){if(!_(A)||!_(k))return!1;let t=_(A).querySelector(e);if(!t)return!1;let n=t.getBoundingClientRect().top-_(A).getBoundingClientRect().top;return Math.abs(n)<=E?!0:(_(k).scrollBy(n),!1)}function He(){if(!_(A))return null;let e=_(A).getBoundingClientRect(),t=new Map(n.messages.map((e,t)=>[e.id,t])),r=1/0,i=-1;for(let n of _(A).querySelectorAll(`[data-message-id]`)){let a=n.getBoundingClientRect();if(a.bottome.bottom)continue;let o=t.get(n.dataset.messageId||``);o!==void 0&&(r=Math.min(r,o),i=Math.max(i,o))}return i<0?null:{first:r,last:i}}function Ue(e){if(!_(A)||!_(k))return!1;let t=n.messages.findIndex(t=>t.id===e),r=He();return t<0||!r?!1:r.first>t?(_(k).scrollBy(-Math.max(80,_(A).clientHeight*.85)),!0):r.lastNe(e),`[data-message-id="${CSS.escape(e)}"]`,e),!0}function qe(e=!0){if(!_(k)||Ie()<0)return!1;ge=!1;let t=n.viewKey,r=X();return Ge(t,r,()=>Ie(),`[data-unread-divider='true']`,Le()).then(i=>{e&&!i&&Z(t,r)&&n.onJumpToUnread?.()}),!0}function Je(){if(!(_(me)&&qe(!1))&&n.onJumpToUnread){n.onJumpToUnread();return}}function Ye(){if(!_(k))return null;if(Ee())return{atBottom:!0};let e=_(k).getScrollOffset(),t=_(k).findItemIndex(e),n=Math.max(0,e-_(P));for(let e=Math.max(0,t);e<_(he).length;e++){let t=_(he)[e];if(t.kind!==`group`)continue;let r=_(k).getItemOffset(e),i=t.group.messages[0]?.id;if(i)return{atBottom:!1,anchorMessageID:i,anchorPixelOffset:Math.max(0,n-r)}}return{atBottom:!1}}f(()=>(n.onListRef({scrollToBottom:je,scrollToMessage:Ke,scrollToDivider:qe,captureState:Ye,isAtBottom:()=>Ee(),isNearBottom:e=>De(e)}),()=>n.onListRef(null))),f(()=>{let e=n.viewKey,t=_(he).length,r=_(W);if(e!==ye){ye=e,be=t,xe=r,Se=n.restoreState,ge=!0,B(_e,!0),B(ve,!1),q=!1,Ce=!0,Ze(e,n.restoreState,!0);return}let i=n.restoreState;if(i&&i!==Se){if(Se=i,i.atBottom){be=t,xe=r,Ce=!0,Ze(e,i,!0);return}if(i.anchorMessageID){be=t,xe=r,Ce=!0,Ze(e,i,!1);return}}let a=t!==be||r!==xe;a&&ge&&!h()&&!Ce?Me():a&&!Ce&&Xe(e),be=t,xe=r});async function Xe(e){await s(),await Be(),e===ye&&ke()}async function Ze(e,t,n){let r=X(!1),i=!1;if(await s(),await new Promise(e=>requestAnimationFrame(e)),Z(e,r)){if(t&&!t.atBottom&&t.anchorMessageID){let i=await Qe(e,r,t.anchorMessageID,t.anchorPixelOffset??0);if(!Z(e,r))return;!i&&n?await Me(r):ge=!1}else _(he).findIndex(e=>e.kind===`divider`)>=0&&_(k)?(i=!0,await Ge(e,r,()=>Ie(),`[data-unread-divider='true']`,Le()),ge=!1):await Me(r);await new Promise(e=>requestAnimationFrame(e)),Z(e,r)&&(Ce=!1,B(ve,!0),B(_e,Ee(),!0),ge=_(_e)&&!h(),i||(_(_e)&&Ae(),_(k)&&$e(_(k).getScrollOffset())),ke())}}async function Qe(e,t,n,r){if(!_(k))return!1;let i=Ne(n);if(i<0)return!1;for(let n=0;n<8;n++){if(!_(k)||!Z(e,t))return!1;let n=_(P)+_(k).getItemOffset(i)+r;if(Q(),_(k).scrollTo(n),await new Promise(e=>requestAnimationFrame(e)),!Z(e,t))return!1;let a=_(P)+_(k).getItemOffset(i)+r,o=_(k).getScrollOffset();if(Math.abs(a-n)<1&&Math.abs(o-n)<1)break}return!0}function $e(e){if(!_(k)||Ce&&!_(ve))return;let t=Te(),r=Ee(),i=r||t<=260;ge=r&&!h(),B(_e,r,!0),h()||(q=!1),!r&&m()&&e-_(P)<=160&&n.onLoadOlder?.(),!K&&h()&&i&&!q&&(q=!0,n.onLoadNewer?.(`scroll`)),r&&!K&&Ae()}var et=Cs();let tt;var nt=F(et),rt=e=>{var t=_s(),r=F(t),i=F(r),a=e=>{d(e,p(`@`))},o=e=>{d(e,p(`#`))};N(i,e=>{n.selectedDirect?e(a):e(o,-1)}),T(r);var s=M(r,2),c=F(s),u=e=>{var t=p();b(e=>l(t,`This is the start of your conversation with ${e??``}.`),[()=>ot(n.selectedDirect,n.currentUserID)]),d(e,t)},f=e=>{var t=p();b(()=>l(t,`Welcome to #${n.selectedChannel.name??``}!`)),d(e,t)},m=e=>{d(e,p(`Pick a channel to get started.`))};N(c,e=>{n.selectedDirect?e(u):n.selectedChannel?e(f,1):e(m,-1)}),T(s),fe(2),T(t),d(e,t)},it=e=>{var t=xs(),r=M(F(t),2),a=e=>{var t=vs();yo(F(t),{direction:`older`,get rows(){return _(Pe)}}),T(t),oe(t,e=>B(j,e),()=>_(j)),b(()=>L(t,`aria-hidden`,g()?`false`:`true`)),d(e,t)};N(r,e=>{_(Pe)>0&&e(a)}),oe(G(M(r,2),{get data(){return _(he)},getKey:e=>e.id,get scrollRef(){return _(A)},get shift(){return y()},get startMargin(){return _(P)},onscroll:$e,children:(e,t=ue,r=ue)=>{var a=i(),o=z(a),s=e=>{yo(e,{get direction(){return t().direction},get rows(){return t().rows}})},c=e=>{var n=ys(),r=F(n),i=F(r,!0);T(r),T(n),b(()=>l(i,t().label)),d(e,n)},u=e=>{var t=bs();let n;b(()=>n=w(t,1,`new-messages-divider`,null,n,{"is-clearing":_(ce)})),d(e,t)},f=e=>{gs(e,{get group(){return t().group},get currentUserID(){return n.currentUserID},get selectedThreadID(){return n.selectedThreadID},get replyContext(){return _(ie)},get canDeleteAnyMessage(){return x()},get deletingMessageIDs(){return C()},get onOpenProfile(){return n.onOpenProfile},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage}})};N(o,e=>{t().kind===`loader`?e(s):t().kind===`day`?e(c,1):t().kind===`divider`?e(u,2):t().kind===`group`&&e(f,3)}),d(e,a)},$$slots:{default:!0}}),e=>B(k,e,!0),()=>_(k)),T(t),oe(t,e=>B(A,e),()=>_(A)),d(e,t)};N(nt,e=>{!r()&&n.messages.length===0?e(rt):n.messages.length>0&&e(it,1)});var at=M(nt,2),st=e=>{var n=Ss();let r;var i=F(n),a=F(i),o=F(a);T(a),T(i);var s=M(i,2);T(n),b(e=>{r=w(n,1,`unread-bar`,null,r,{"is-clearing":_(ce)}),L(n,`aria-hidden`,_(ce)?`true`:void 0),i.disabled=_(ce),L(i,`aria-label`,e),l(o,`${(_(H)>99?`99+`:_(H))??``} new message${_(H)===1?``:`s`}${u()?` since ${u()}`:``}`),s.disabled=_(ce)},[()=>`Jump to ${_(H)>0?_(H):``} new message${_(H)===1?``:`s`}`.replace(/ +/g,` `)]),t(`click`,i,Je),t(`click`,s,ze),d(e,n)};N(at,e=>{!r()&&n.messages.length>0&&_(H)>0&&e(st)}),T(et),b(()=>tt=w(et,1,`messages`,null,tt,{"is-revealing":r()||!_(ve)&&n.messages.length>0})),t(`pointerdown`,et,function(...e){n.onActivateMessageComposer?.apply(this,e)}),t(`pointerup`,et,function(...e){n.onInlineImagePointerUp?.apply(this,e)}),d(e,et),te()}U([`pointerdown`,`pointerup`,`click`]);var Ts=o(``),Es=o(``);function Ds(e,n){ee(n,!0);let r=S(n,`deleting`,3,!1),i=S(n,`error`,3,``),a=O(()=>n.message.author?.display_name||`Local User`);function o(){r()||n.onClose()}var s=Es(),c=F(s),u=M(c,2),f=F(u),p=M(F(f),2);T(f);var m=M(f,2),h=M(F(m),2),g=F(h);{let e=O(()=>n.message.author?.id||n.message.author_id),t=O(()=>n.message.author?.avatar_url);Eo(g,{class:`avatar`,get id(){return _(e)},get name(){return _(a)},get src(){return _(t)},size:36,loading:`eager`,fetchPriority:`auto`})}var v=M(g,2),y=F(v),x=F(y),C=F(x,!0);T(x);var w=M(x,2),E=F(w,!0);T(w),T(y);var D=M(y,2),k=F(D,!0);T(D),T(v),T(h);var A=M(h,2),j=e=>{var t=Ts(),n=F(t,!0);T(t),b(()=>l(n,i())),d(e,t)};N(A,e=>{i()&&e(j)});var P=M(A,2),ne=F(P),re=M(ne,2),ie=F(re,!0);T(re),T(P),T(m),T(u),T(s),b(e=>{c.disabled=r(),p.disabled=r(),l(C,_(a)),L(w,`datetime`,n.message.created_at),l(E,e),l(k,n.message.body),ne.disabled=r(),re.disabled=r(),l(ie,r()?`Deleting...`:`Delete`)},[()=>Ma(n.message.created_at)]),t(`click`,c,o),t(`click`,p,o),t(`click`,ne,o),t(`click`,re,function(...e){n.onConfirm?.apply(this,e)}),d(e,s),te()}U([`click`]);var Os=6500,ks=o(`
    `);function As(e,t){ee(t,!0);let n=O(()=>t.entries.filter(e=>e.userID!==t.currentUserID));function r(e,t=`Someone`){return e?.display_name?.trim()||(e?.handle?`@${e.handle}`:t)}let i=O(()=>_(n).length===0?``:_(n).length===1?`${r(_(n)[0].user)} is typing…`:_(n).length===2?`${r(_(n)[0].user)} and ${r(_(n)[1].user)} are typing…`:_(n).length===3?`${r(_(n)[0].user)}, ${r(_(n)[1].user)}, and ${r(_(n)[2].user)} are typing…`:`Several people are typing…`);var a=ks();let o;var s=M(F(a),2),c=F(s,!0);T(s),T(a),b(()=>{o=w(a,1,`typing-indicator`,null,o,{visible:_(n).length>0}),l(c,_(i))}),d(e,a),te()}var js=45e3,Ms=o(`
    `),Ns=o(`
    `),Ps=o(`
    `);function Fs(e,t){ee(t,!0);function n(e){return e.kind===`tool`&&e.toolName?!e.text||e.text===e.toolName?e.toolName:`${e.toolName}: ${e.text}`:e.text}function r(e){switch(e){case`tool`:return`⚙`;case`thinking`:case`commentary`:return`✦`;case`plan`:return`☰`;case`patch`:return`±`;case`command_output`:return`›`;case`error`:return`✕`;default:return`·`}}var a=i(),o=z(a),s=e=>{var i=Ps();u(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=Ns();u(i,21,()=>_(t).lines,e=>e.id,(e,t)=>{var i=Ms();let a;var o=F(i),s=F(o,!0);T(o);var c=M(o,2),u=F(c,!0);T(c),T(i),b((e,n)=>{a=w(i,1,`agent-progress__line svelte-6vwkyv`,null,a,{"agent-progress__line--done":_(t).finalized}),L(i,`data-kind`,_(t).kind),l(s,e),l(u,n)},[()=>r(_(t).kind),()=>n(_(t))]),d(e,i)}),T(i),d(e,i)}),T(i),d(e,i)};N(o,e=>{t.turns.length>0&&e(s)}),d(e,a),te()}var Is=o(`
    Agent is responding…
    `);function Ls(e,t){var n=Is();let r;b(()=>r=w(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),d(e,n)}var Rs=o(`

    `),zs=o(``);function Bs(e,n){ee(n,!0);var r=zs(),i=F(r),a=M(i,2),o=F(a),s=M(F(o),2);T(o);var c=M(o,2),u=F(c),f=M(F(u),2);k(f),T(u);var p=M(u,2),m=e=>{var t=Rs(),r=F(t,!0);T(t),b(()=>l(r,n.status)),d(e,t)};N(p,e=>{n.status&&e(m)});var h=M(p,2),_=F(h);fe(2),T(h),T(c),T(a),T(r),b(()=>j(f,n.channelName)),t(`click`,i,function(...e){n.onClose?.apply(this,e)}),t(`click`,s,function(...e){n.onClose?.apply(this,e)}),g(`submit`,c,e=>{e.preventDefault(),n.onCreate()}),t(`input`,f,e=>n.onChannelName(e.currentTarget.value)),t(`click`,_,function(...e){n.onClose?.apply(this,e)}),d(e,r),te()}U([`click`,`input`]);var Vs=o(``),Hs=o(`
    No matching people yet
    `),Us=o(``);function Ws(e,n){ee(n,!0);let r=O(()=>n.memberID.trim().toLowerCase()),i=O(()=>n.people.filter(e=>e.id!==n.currentUserID).filter(e=>!_(r)||e.display_name.toLowerCase().includes(_(r))||e.handle?.toLowerCase().includes(_(r))||e.id.toLowerCase().includes(_(r))));var a=Us(),o=F(a),s=M(o,2),c=F(s),f=M(F(c),2);T(c);var p=M(c,2),m=F(p),h=M(F(m),2);k(h),T(m);var v=M(m,2),y=F(v);u(y,17,()=>_(i),e=>e.id,(e,r)=>{var i=Vs(),a=F(i);Eo(a,{class:`dm-avatar`,get id(){return _(r).id},get name(){return _(r).display_name},get src(){return _(r).avatar_url},size:32});var o=M(a,2),s=F(o),c=F(s,!0);T(s);var u=M(s,2),f=F(u,!0);T(u),T(o),T(i),b(e=>{l(c,_(r).display_name),l(f,e)},[()=>et(_(r).handle)||_(r).id]),t(`click`,i,()=>n.onStart(_(r).id)),d(e,i)});var x=M(y,2),S=e=>{d(e,Hs())};N(x,e=>{_(i).length===0&&e(S)}),T(v);var C=M(v,2),w=F(C);fe(2),T(C),T(p),T(s),T(a),b(()=>j(h,n.memberID)),t(`click`,o,function(...e){n.onClose?.apply(this,e)}),t(`click`,f,function(...e){n.onClose?.apply(this,e)}),g(`submit`,p,e=>{e.preventDefault(),n.onStart(n.memberID)}),t(`input`,h,e=>n.onMemberID(e.currentTarget.value)),t(`click`,w,function(...e){n.onClose?.apply(this,e)}),d(e,a),te()}U([`click`,`input`]);var Gs=o(``),Ks=o(` `),qs=o(`
    `),Js=o(`
    `),Ys=o(``);function Xs(e,n){ee(n,!0);let r=S(n,`homeHref`,3,`/`);function i(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var a=Ys(),o=F(a),s=M(o,4),c=F(s);u(c,17,()=>n.workspaces,e=>e.id,(e,r)=>{var a=qs();let o;var s=F(a),c=F(s),u=e=>{var t=Gs();b(e=>L(t,`src`,e),[()=>ge(_(r).icon_url)]),d(e,t)},f=e=>{var t=Ks(),n=F(t,!0);T(t),b(e=>l(n,e),[()=>Qe(_(r).name)]),d(e,t)};N(c,e=>{_(r).icon_url?e(u):e(f,-1)}),T(s),T(a),b(e=>{o=w(a,1,`guild-wrap`,null,o,{active:_(r).id===n.selectedWorkspaceID}),L(s,`title`,_(r).name),L(s,`aria-label`,_(r).name),L(s,`href`,e)},[()=>n.hrefForWorkspace(_(r).id)]),t(`click`,s,e=>{i(e)&&(e.preventDefault(),n.onSelectWorkspace(_(r).id))}),d(e,a)});var f=M(c,2);T(s);var p=M(s,2),m=e=>{var r=Js(),i=F(r);k(i),T(r),b(()=>j(i,n.workspaceName)),g(`submit`,r,e=>{e.preventDefault(),n.onCreateWorkspace()}),t(`input`,i,e=>n.onWorkspaceName(e.currentTarget.value)),d(e,r)};N(p,e=>{n.showWorkspaceCreate&&e(m)}),T(a),b(()=>L(o,`href`,r())),t(`click`,f,function(...e){n.onToggleWorkspaceCreate?.apply(this,e)}),d(e,a),te()}U([`click`,`input`]);var Zs=o(`Drag with a pointer, use Arrow Up and Arrow Down while focused, or open the move menu.`),Qs=o(``),$s=o(` `,1),ec=o(` `),tc=o(``),nc=o(``),rc=o(`
    `);function ic(e,n){ee(n,!0);let r=D(``),i=D(``),a=D(!0),o=D(!1),c=D(``),p=D(void 0),m,h=D(``),v=O(()=>n.expanded?n.channels:n.channels.filter(e=>e.id===n.selectedChannelID&&!n.selectedDirectID||(e.unread_count||0)>0));function y(e){B(h,``),queueMicrotask(()=>{B(h,e,!0)})}function x(e,t,r){if(!e||!t||e===t)return;let i=n.channels.map(e=>e.id),a=i.indexOf(e);if(a<0)return;i.splice(a,1);let o=i.indexOf(t);if(o<0)return;i.splice(o+ +!r,0,e),n.onReorder(i);let s=n.channels.find(t=>t.id===e);s&&y(`Moved #${s.name} to position ${i.indexOf(e)+1} of ${i.length}`)}function S(e,t){let r=n.channels.findIndex(t=>t.id===e),i=r+t;r<0||i<0||i>=n.channels.length||x(e,n.channels[i].id,t<0)}function C(e,t){B(o,!0),B(c,``),B(r,t,!0),e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function E(e,t){if(!_(r)||_(r)===t)return;e.preventDefault();let n=e.currentTarget;B(i,t,!0),B(a,e.clientY{B(o,!1)},0)}async function j(e,t){if(!_(o)){if(_(c)===e){B(c,``);return}m=t,B(c,e,!0),await s(),_(p)?.querySelector(`button:not(:disabled)`)?.focus()}}async function P(e=!1){B(c,``),e&&(await s(),m?.focus())}function ne(e,t){S(e,t),P(!0)}function re(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}f(()=>{n.expanded||(B(c,``),k(),B(o,!1))});var ie=rc();let I;var R=F(ie),ae=F(R),V=M(ae,2);T(R);var se=M(R,2),H=F(se),ce=e=>{d(e,Zs())};N(H,e=>{n.expanded&&e(ce)});var le=M(H,2);u(le,19,()=>_(v),e=>e.id,(e,o,s)=>{let u=O(()=>_(o).unread_count||0);var f=tc();let m;var h=F(f),v=e=>{var r=$s(),i=z(r),a=M(i,2),l=e=>{var r=Qs(),i=F(r),a=M(i,2);T(r),oe(r,e=>B(p,e),()=>_(p)),b(()=>{L(r,`aria-label`,`Move #${_(o).name}`),i.disabled=_(s)<=0,a.disabled=_(s)<0||_(s)>=n.channels.length-1}),t(`keydown`,r,e=>{e.key===`Escape`&&(e.preventDefault(),P(!0))}),t(`click`,i,()=>ne(_(o).id,-1)),t(`click`,a,()=>ne(_(o).id,1)),d(e,r)};N(a,e=>{_(c)===_(o).id&&e(l)}),b(()=>{L(i,`aria-label`,`Move #${_(o).name}`),L(i,`aria-expanded`,_(c)===_(o).id)}),t(`click`,i,e=>void j(_(o).id,e.currentTarget)),g(`dragstart`,i,e=>C(e,_(o).id)),g(`dragend`,i,A),t(`keydown`,i,e=>{e.key===`ArrowUp`||e.key===`ArrowDown`?(e.preventDefault(),B(c,``),S(_(o).id,e.key===`ArrowUp`?-1:1)):e.key===`Escape`&&B(c,``)}),d(e,r)};N(h,e=>{n.expanded&&e(v)});var y=M(h,2);let D;var k=M(F(y),2),ee=F(k,!0);T(k);var te=M(k,2),ie=e=>{var t=ec(),n=F(t,!0);T(t),b(()=>{L(t,`aria-label`,`${_(u)} unread`),l(n,_(u)>99?`99+`:_(u))}),d(e,t)};N(te,e=>{_(u)>0&&!(_(o).id===n.selectedChannelID&&!n.selectedDirectID)&&e(ie)}),T(y),T(f),b(e=>{m=w(f,1,`channel-row`,null,m,{reorderable:n.expanded,dragging:_(r)===_(o).id,"drop-before":_(i)===_(o).id&&_(a),"drop-after":_(i)===_(o).id&&!_(a)}),L(y,`href`,e),D=w(y,1,`nav-item channel`,null,D,{active:_(o).id===n.selectedChannelID&&!n.selectedDirectID,"has-unread":_(u)>0&&!(_(o).id===n.selectedChannelID&&!n.selectedDirectID)}),l(ee,_(o).name)},[()=>n.hrefForChannel(_(o).id)]),g(`dragover`,f,e=>{n.expanded&&E(e,_(o).id)}),g(`drop`,f,e=>{e.preventDefault(),n.expanded&&(x(_(r),_(o).id,_(a)),A())}),t(`focusout`,f,e=>{e.currentTarget.contains(e.relatedTarget)||B(c,``)}),t(`click`,y,e=>{re(e)&&(e.preventDefault(),n.onSelectChannel(_(o).id))}),d(e,f)});var ue=M(le,2),de=e=>{d(e,nc())};N(ue,e=>{n.expanded&&n.channels.length===0&&e(de)}),T(se);var fe=M(se,2),U=F(fe,!0);T(fe),T(ie),b(()=>{I=w(ie,1,`nav-section`,null,I,{collapsed:!n.expanded}),L(ae,`aria-expanded`,n.expanded),L(se,`hidden`,!n.expanded&&_(v).length===0),l(U,_(h))}),t(`click`,ae,function(...e){n.onToggle?.apply(this,e)}),t(`click`,V,function(...e){n.onCreateChannel?.apply(this,e)}),d(e,ie),te()}U([`click`,`focusout`,`keydown`]);var ac=o(` `),oc=o(``),sc=o(``),cc=o(`
    `),lc=o(``),uc=o(`
    `),dc=o(`
    `);function fc(e,n){ee(n,!0);let r=D(``),i=O(()=>n.expanded?n.conversations:n.conversations.filter(e=>e.id===n.selectedDirectID||(e.unread_count||0)>0));function a(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function o(e){B(r,_(r)===e?``:e,!0)}function s(){B(r,``)}var c=dc();let f;var p=F(c),m=F(p),h=M(m,2);T(p);var g=M(p,2),v=F(g);u(v,17,()=>_(i),e=>e.id,(e,i)=>{let c=O(()=>at(_(i),n.currentUserID)),u=O(()=>_(i).unread_count||0),f=O(()=>_(i).id===n.selectedDirectID);var p=cc();let m;var h=F(p);let g;var v=F(h);{let e=O(()=>_(c)?.id||_(i).id),t=O(()=>_(c)?.display_name),n=O(()=>nt(_(c))?void 0:_(c)?.avatar_url);Eo(v,{class:`dm-avatar`,get id(){return _(e)},get name(){return _(t)},get src(){return _(n)},size:22})}var y=M(v,2),x=F(y,!0);T(y);var S=M(y,2),C=e=>{var t=ac(),n=F(t,!0);T(t),b(()=>{L(t,`aria-label`,`${_(u)} unread`),l(n,_(u)>99?`99+`:_(u))}),d(e,t)},E=e=>{d(e,oc())};N(S,e=>{_(u)>0&&!_(f)?e(C):e(E,-1)}),T(h);var D=M(h,2),k=M(D,2),A=e=>{var r=sc(),a=F(r);T(r),t(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),n.onHideDirect(_(i).id)}),d(e,r)};N(k,e=>{_(r)===_(i).id&&e(A)}),T(p),b((e,t,n)=>{m=w(p,1,`dm-row`,null,m,{active:_(f)}),L(h,`href`,e),g=w(h,1,`nav-item dm`,null,g,{active:_(f),"has-unread":_(u)>0&&!_(f)}),l(x,t),L(D,`aria-label`,n),L(D,`aria-expanded`,_(r)===_(i).id)},[()=>n.hrefForDirect(_(i).id),()=>ot(_(i),n.currentUserID),()=>`Direct message actions for ${ot(_(i),n.currentUserID)}`]),t(`click`,h,e=>{a(e)&&(e.preventDefault(),n.onSelectDirect(_(i).id))}),t(`click`,D,e=>{e.preventDefault(),e.stopPropagation(),o(_(i).id)}),t(`keydown`,D,e=>{e.key===`Escape`&&s()}),d(e,p)});var y=M(v,2),x=e=>{d(e,lc())};N(y,e=>{n.expanded&&n.conversations.length===0&&e(x)});var S=M(y,2),C=e=>{var r=uc(),i=F(r),a=F(i);T(i);var o=M(i,2);T(r),b(()=>l(a,`Closed ${n.hiddenDirectTitle??``}`)),t(`click`,o,function(...e){n.onUndoHideDirect?.apply(this,e)}),d(e,r)};N(S,e=>{n.expanded&&n.hiddenDirectTitle&&e(C)}),T(g),T(c),b(()=>{f=w(c,1,`nav-section`,null,f,{collapsed:!n.expanded}),L(m,`aria-expanded`,n.expanded),L(g,`hidden`,!n.expanded&&_(i).length===0)}),t(`click`,m,function(...e){n.onToggle?.apply(this,e)}),t(`click`,h,function(...e){n.onCreateDirect?.apply(this,e)}),d(e,c),te()}U([`click`,`keydown`]);var pc=o(``),mc=o(`Connecting…`),hc=o(`
    `),gc=o(` `),_c=o(``),vc=o(``),yc=o(``);function bc(e,n){ee(n,!0);let r=S(n,`showHeader`,3,!0),i=`clickclack:sidebar-sections:v1:`,a={channels:!0,directMessages:!0,people:!0},o=D(C({...a}));function s(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.channels==`boolean`&&typeof t.directMessages==`boolean`&&typeof t.people==`boolean`}function c(e){if(!e)return{...a};try{let t=window.localStorage.getItem(`${i}${e}`);if(!t)return{...a};let n=JSON.parse(t);return s(n)?n:{...a}}catch{return{...a}}}function p(e){if(B(o,{..._(o),[e]:!_(o)[e]},!0),n.workspaceID)try{window.localStorage.setItem(`${i}${n.workspaceID}`,JSON.stringify(_(o)))}catch{}}f(()=>{B(o,c(n.workspaceID),!0)});let m=1e6,h=D(C([]));function v(e,t){return`clickclack:sidebar-channel-order:v1:${t}:${e}`}function y(e){if(!e||e.length>m)return[];try{let t=JSON.parse(e);return Array.isArray(t)&&t.length<=1e4&&t.every(e=>typeof e==`string`&&e.length<=128)?[...new Set(t)]:[]}catch{return[]}}function x(e,t){if(!e||!t)return[];try{return y(window.localStorage.getItem(v(e,t)))}catch{return[]}}function E(e){if(B(h,e,!0),!(!n.workspaceID||!n.currentUser?.id))try{let t=v(n.workspaceID,n.currentUser.id),r=JSON.stringify(e);if(r.length>m){window.localStorage.removeItem(t);return}window.localStorage.setItem(t,r)}catch{}}function k(e){!n.workspaceID||!n.currentUser?.id||e.key===v(n.workspaceID,n.currentUser.id)&&B(h,y(e.newValue),!0)}let A=O(()=>{let e=new Map(n.channels.map(e=>[e.id,e]));return[..._(h).flatMap(t=>{let n=e.get(t);return n?(e.delete(t),[n]):[]}),...e.values()]});f(()=>{B(h,x(n.workspaceID,n.currentUser?.id||``),!0)});function j(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var P=yc();g(`storage`,V,k);var ne=F(P),re=e=>{var r=hc(),i=F(r),a=F(i),o=e=>{var t=pc();b(e=>L(t,`src`,e),[()=>ge(n.workspaceIconURL)]),d(e,t)};N(a,e=>{n.workspaceIconURL&&e(o)});var s=M(a,2),c=F(s),u=F(c),f=F(u,!0);T(u),fe(2),T(c);var p=M(c,2),m=e=>{d(e,mc())};N(p,e=>{n.connected||e(m)}),T(s),T(i);var h=M(i,2),g=F(h),_=F(g),v=F(_);T(_),T(g),T(h),T(r),b(()=>{l(f,n.workspaceName||`Pick a workspace`),L(g,`aria-label`,n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),L(g,`title`,n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),L(v,`d`,n.sidebarCollapsed?`m9 6 6 6-6 6`:`m15 6-6 6 6 6`)}),t(`click`,i,function(...e){n.onOpenWorkspaceSettings?.apply(this,e)}),t(`click`,g,function(...e){n.onToggleCollapse?.apply(this,e)}),d(e,r)};N(ne,e=>{r()&&e(re)});var ie=M(ne,2),I=F(ie);ic(I,{get expanded(){return _(o).channels},get channels(){return _(A)},get selectedChannelID(){return n.selectedChannelID},get selectedDirectID(){return n.selectedDirectID},get hrefForChannel(){return n.hrefForChannel},get onSelectChannel(){return n.onSelectChannel},get onCreateChannel(){return n.onCreateChannel},onToggle:()=>p(`channels`),onReorder:E});var R=M(I,2);{let e=O(()=>n.currentUser?.id);fc(R,{get expanded(){return _(o).directMessages},get conversations(){return n.directConversations},get currentUserID(){return _(e)},get selectedDirectID(){return n.selectedDirectID},get hrefForDirect(){return n.hrefForDirect},get onSelectDirect(){return n.onSelectDirect},get onCreateDirect(){return n.onCreateDirect},get onHideDirect(){return n.onHideDirect},get hiddenDirectTitle(){return n.hiddenDirectTitle},get onUndoHideDirect(){return n.onUndoHideDirect},onToggle:()=>p(`directMessages`)})}var ae=M(R,2);let z;var oe=F(ae),se=F(oe);T(oe);var H=M(oe,2),ce=F(H);u(ce,17,()=>n.recentPeople,e=>e.id,(e,r)=>{let i=O(()=>ct(n.directConversations,_(r).id));var a=gc();let o;var s=F(a);Eo(s,{class:`dm-avatar`,get id(){return _(r).id},get name(){return _(r).display_name},get src(){return _(r).avatar_url},size:22});var c=M(s,2),u=F(c,!0);T(c),fe(2),T(a),b(e=>{L(a,`href`,e),o=w(a,1,`nav-item dm`,null,o,{active:_(i)?.id===n.selectedDirectID||n.selectedProfile?.id===_(r).id}),l(u,_(r).display_name)},[()=>_(i)?n.hrefForDirect(_(i).id):`#`]),t(`click`,a,e=>{if(_(i)){if(!j(e))return;e.preventDefault(),n.onSelectDirect(_(i).id)}else e.preventDefault(),n.onOpenProfile(_(r))}),d(e,a)});var le=M(ce,2),ue=e=>{d(e,_c())};N(le,e=>{n.recentPeople.length===0&&e(ue)}),T(H),T(ae),T(ie);var de=M(ie,2),U=e=>{var r=vc(),i=F(r);Eo(i,{class:`dm-avatar`,get id(){return n.currentUser.id},get name(){return n.currentUser.display_name},get src(){return n.currentUser.avatar_url},size:28,loading:`eager`,fetchPriority:`auto`});var a=M(i,2),o=F(a),s=F(o,!0);T(o);var c=M(o,2),u=F(c,!0);T(c),T(a),fe(2),T(r),b((e,t)=>{L(r,`aria-label`,e),l(s,n.currentUser.display_name),l(u,t)},[()=>`Account settings for ${n.currentUser.display_name} ${et(n.currentUser.handle)}`,()=>n.currentUser.handle?et(n.currentUser.handle):n.connected?`Active`:`Reconnecting…`]),t(`click`,r,function(...e){n.onOpenSettings?.apply(this,e)}),t(`contextmenu`,r,e=>{e.preventDefault(),n.onOpenSettings()}),d(e,r)};N(de,e=>{n.currentUser&&e(U)}),T(P),b(()=>{z=w(ae,1,`nav-section`,null,z,{collapsed:!_(o).people}),L(se,`aria-expanded`,_(o).people),L(H,`hidden`,!_(o).people)}),t(`click`,se,()=>p(`people`)),d(e,P),te()}U([`click`,`contextmenu`]);var xc=o(` `),Sc=o(` `),Cc=o(``),wc=o(``),Tc=o(`
    User kind
    `),Ec=o(`

    `),Dc=o(`

    Blocked.

    `),Oc=o(``),kc=o(``),Ac=o(``),jc=o(`
    Moderation
    `),Mc=o(`

    Profile

    Active
    Contact information
    Handle
    User ID
    About

    `,1);function Nc(e,n){ee(n,!0);let r=O(()=>n.profile.kind===`bot`?n.profile.owner_user_id?`Bot of ${n.profile.owner_user_id}`:`Service bot`:``),i=O(()=>n.moderation?.role||`member`),a=O(()=>!!n.moderation&&_(i)!==`owner`&&(n.currentUserRole===`owner`||n.currentUserRole===`moderator`&&(_(i)===`member`||_(i)===`guest`))),o=O(()=>n.currentUser?.id!==n.profile.id&&_(a)),s=O(()=>!!n.moderation?.blocked_at),c=O(()=>_(i));var u=Mc(),f=z(u),p=F(f),m=M(F(p),2),h=F(m,!0);T(m),T(p);var g=M(p,2);T(f);var v=M(f,2),y=F(v);Eo(F(y),{class:`profile-avatar`,get id(){return n.profile.id},get name(){return n.profile.display_name},get src(){return n.profile.avatar_url},size:240,loading:`eager`,fetchPriority:`auto`}),T(y);var x=M(y,2),S=F(x),C=F(S),w=F(C),E=F(w,!0);T(w);var D=M(w,2),k=e=>{var t=xc(),n=F(t,!0);T(t),b(()=>l(n,_(r))),d(e,t)};N(D,e=>{_(r)&&e(k)});var A=M(D,2),j=e=>{var t=Sc(),r=F(t,!0);T(t),b(e=>l(r,e),[()=>et(n.profile.handle)]),d(e,t)};N(A,e=>{n.profile.handle&&e(j)}),T(C);var P=M(C,2),ne=e=>{var r=Cc();t(`click`,r,function(...e){n.onEdit?.apply(this,e)}),d(e,r)};N(P,e=>{n.currentUser?.id===n.profile.id&&e(ne)}),T(S);var re=M(S,4),ie=F(re),I=e=>{var r=wc();t(`click`,r,()=>n.onMessage(n.profile.id)),d(e,r)};N(ie,e=>{n.currentUser?.id!==n.profile.id&&e(I)});var L=M(ie,2);T(re);var R=M(re,2),ae=F(R),oe=M(F(ae),2),B=e=>{var r=Cc();t(`click`,r,function(...e){n.onEdit?.apply(this,e)}),d(e,r)};N(oe,e=>{n.currentUser?.id===n.profile.id&&e(B)}),T(ae);var V=M(ae,2),se=M(F(V),2),H=M(F(se),2),ce=F(H,!0);T(H),T(se),T(V);var le=M(V,2),ue=M(F(le),2),fe=M(F(ue),2),U=F(fe,!0);T(fe),T(ue),T(le);var pe=M(le,2),me=e=>{var t=Tc(),n=M(F(t),2),i=M(F(n),2),a=F(i,!0);T(i),T(n),T(t),b(()=>l(a,_(r))),d(e,t)};N(pe,e=>{n.profile.kind===`bot`&&e(me)}),T(R);var he=M(R,2),ge=M(F(he),2),W=F(ge);T(ge),T(he);var _e=M(he,2),ve=e=>{var r=jc(),i=F(r),a=M(F(i),2),o=F(a,!0);T(a),T(i);var u=M(i,2),f=e=>{var t=Ec(),r=F(t);T(t),b(()=>l(r,`${n.moderation.posts_remaining??``} of ${n.moderation.post_limit??``} waiting-room posts left today.`)),d(e,t)};N(u,e=>{n.moderation.role===`guest`&&n.moderation.post_limit>0&&e(f)});var p=M(u,2),m=e=>{var t=Ec(),r=F(t);T(t),b(e=>l(r,`Timed out until ${e??``}.`),[()=>new Date(n.moderation.timeout_until).toLocaleString()]),d(e,t)};N(p,e=>{n.moderation.timeout_until&&e(m)});var h=M(p,2),g=e=>{d(e,Dc())};N(h,e=>{n.moderation.blocked_at&&e(g)});var v=M(h,2),y=F(v),x=e=>{var r=Oc();t(`click`,r,()=>n.onApprove(n.profile.id)),d(e,r)};N(y,e=>{n.moderation.role===`guest`&&e(x)});var S=M(y,2),C=M(S,2),w=e=>{var r=kc();t(`click`,r,()=>n.onUnblock(n.profile.id)),d(e,r)},E=e=>{var r=Ac();t(`click`,r,()=>n.onBlock(n.profile.id)),d(e,r)};N(C,e=>{_(s)?e(w):e(E,-1)}),T(v),T(r),b(()=>l(o,_(c))),t(`click`,S,()=>n.onTimeout(n.profile.id)),d(e,r)};N(_e,e=>{_(o)&&n.moderation&&e(ve)}),T(x),T(v),b((e,t)=>{l(h,n.profile.display_name),de(y,`--hue: ${e??``}deg`),l(E,n.profile.display_name),l(ce,t),l(U,n.profile.id),l(W,`Member of ${(n.workspaceName||`this workspace`)??``}.`)},[()=>it(n.profile.id),()=>n.profile.handle?et(n.profile.handle):`No handle set`]),t(`click`,g,function(...e){n.onClose?.apply(this,e)}),t(`click`,L,function(...e){n.onSetStatus?.apply(this,e)}),d(e,u),te()}U([`click`]);var Pc=o(` `,1),Fc=o(`
    `),Ic=o(`
    We couldn’t search messages

    `),Lc=o(`
    No messages found

    Try another word or phrase.

    `),Rc=o(`deleted bot`),zc=o(` `),Bc=o(` `),Vc=o(` `),Hc=o(` Reply in thread`),Uc=o(` `),Wc=o(`
  • `),Gc=o(``),Kc=o(``),qc=o(``),Jc=o(`
      `,1),Yc=o(``);function Xc(e,n){ee(n,!0);let r=S(n,`covered`,3,!1),a=S(n,`inert`,3,!1),o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),s=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}),c=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,year:`numeric`});function f(e,t){let n=Array.from(e),r=[],i=0;for(let e of t){let t=Math.max(i,Math.min(n.length,e.start)),a=Math.max(t,Math.min(n.length,e.end));t>i&&r.push({text:n.slice(i,t).join(``),highlighted:!1}),a>t&&r.push({text:n.slice(t,a).join(``),highlighted:!0}),i=a}return i{d(e,p(`Searching messages…`))},re=e=>{var t=Pc(),r=z(t),i=M(r),a=e=>{var t=p();b(()=>l(t,`in ${n.session.scope.label??``}`)),d(e,t)};N(i,e=>{n.session.scope.label&&e(a)}),b(()=>l(r,`${n.session.results.length??``}${n.session.nextCursor?`+`:``} - ${n.session.results.length===1&&!n.session.nextCursor?`result`:`results`}`)),d(e,t)},ie=e=>{d(e,p(`Search unavailable`))};N(j,e=>{n.session.state===`loading`?e(ne):n.session.state===`ready`?e(re,1):n.session.state===`error`&&e(ie,2)}),T(A);var I=M(A,2),R=F(I),ae=e=>{d(e,Fc())},oe=e=>{var t=Ic(),r=M(F(t),4),i=F(r,!0);T(r),T(t),b(()=>l(i,n.session.error)),d(e,t)},B=e=>{d(e,Lc())},V=e=>{var r=Jc(),a=z(r);u(a,21,()=>n.session.results,e=>e.id,(e,r)=>{let a=O(()=>n.contextFor(_(r)));var o=Wc(),s=F(o);let c;var h=F(s);{let e=O(()=>nt(_(r).author)?void 0:_(r).author.avatar_url);Eo(h,{class:`dm-avatar`,get id(){return _(r).author.id},get name(){return _(r).author.display_name},get src(){return _(e)},size:30})}var g=M(h,2),v=F(g),y=F(v),x=F(y,!0);T(y);var S=M(y,2),C=e=>{d(e,Rc())},E=O(()=>nt(_(r).author)),D=e=>{var t=zc(),n=F(t,!0);T(t),b(e=>l(n,e),[()=>et(tt(_(r).author))]),d(e,t)},k=O(()=>tt(_(r).author));N(S,e=>{_(E)?e(C):_(k)&&e(D,1)});var A=M(S,2),ee=F(A,!0);T(A),T(v);var j=M(v,2);u(j,21,()=>f(_(r).snippet,_(r).highlights),P,(e,t)=>{var n=i(),r=z(n),a=e=>{var n=Bc(),r=F(n,!0);T(n),b(()=>l(r,_(t).text)),d(e,n)},o=e=>{var n=p();b(()=>l(n,_(t).text)),d(e,n)};N(r,e=>{_(t).highlighted?e(a):e(o,-1)}),d(e,n)}),T(j);var te=M(j,2),ne=F(te),re=e=>{var t=Vc(),n=F(t,!0);T(t),b(()=>l(n,_(a))),d(e,t)};N(ne,e=>{_(a)&&e(re)});var ie=M(ne,2),I=e=>{d(e,Hc())},R=e=>{var t=Uc(),n=M(F(t));T(t),b(()=>l(n,` ${_(r).reply_count??``} ${_(r).reply_count===1?`reply`:`replies`}`)),d(e,t)};N(ie,e=>{_(r).parent_message_id?e(I):_(r).reply_count>0&&e(R,1)}),T(te),T(g),T(s),T(o),b(e=>{c=w(s,1,`search-result`,null,c,{"is-active":n.session.activeResultID===_(r).id}),L(s,`data-result-id`,_(r).id),l(x,_(r).author.display_name||`Local User`),L(A,`datetime`,_(r).created_at),l(ee,e)},[()=>m(_(r).created_at)]),t(`click`,s,()=>n.onOpenResult(_(r))),d(e,o)}),T(a);var o=M(a,2),s=e=>{var r=Gc(),i=F(r),a=F(i,!0);T(i);var o=M(i,2);T(r),b(()=>l(a,n.session.moreError)),t(`click`,o,function(...e){n.onLoadMore?.apply(this,e)}),d(e,r)},c=e=>{var r=Kc(),i=F(r,!0);T(r),b(()=>{r.disabled=n.session.loadingMore,l(i,n.session.loadingMore?`Loading more…`:`Load more results`)}),t(`click`,r,function(...e){n.onLoadMore?.apply(this,e)}),d(e,r)},h=e=>{d(e,qc())};N(o,e=>{n.session.moreError?e(s):n.session.nextCursor?e(c,1):e(h,-1)}),d(e,r)};N(R,e=>{n.session.state===`loading`?e(ae):n.session.state===`error`?e(oe,1):n.session.results.length===0?e(B,2):e(V,-1)}),T(I),T(h),b(()=>{g=w(h,1,`search-results`,null,g,{covered:r()}),h.inert=a(),L(h,`aria-hidden`,r()?`true`:void 0),l(C,`Search${n.session.scope.label?` in ${n.session.scope.label}`:``}`),l(D,`Results for “${n.session.query??``}”`)}),t(`click`,k,function(...e){n.onClose?.apply(this,e)}),d(e,h),te()}U([`click`]);var Zc=`clickclack:browser-notifications-enabled:v1:`;function Qc(e){return`${Zc}${e}`}function $c(e){if(!e)return!1;try{return window.localStorage.getItem(Qc(e))===`enabled`}catch{return!1}}function el(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(Qc(e),`enabled`):window.localStorage.removeItem(Qc(e)),!0}catch{return!1}}var tl=o(`

      Browser notifications are not supported on this device.

      `),nl=o(`

      Browser notifications are blocked by this browser.

      `),rl=o(`

      `),il=o(`

      Show alerts when ClickClack is in the background.

      `);function al(e,n){ee(n,!0);let r=S(n,`isDesktop`,3,!1),i=D(!1),a=D(!1),o=D(`default`),s=D(``),c=D(!1);f(()=>{u(n.user.id,r())});function u(e,t){if(t){B(i,!0),B(o,`granted`),B(a,$c(e),!0),n.onChanged?.(_(a));return}B(i,typeof Notification<`u`),B(o,_(i)?Notification.permission:`unsupported`,!0);let r=$c(e);B(a,_(o)===`granted`&&r,!0),r&&_(o)!==`granted`&&el(e,!1),n.onChanged?.(_(a))}async function p(e){if(B(s,``),B(c,!1),!e){el(n.user.id,!1),B(a,!1),n.onChanged?.(!1),B(s,r()?`Desktop notifications disabled`:`Browser notifications disabled`,!0);return}if(r()){B(a,el(n.user.id,!0),!0),n.onChanged?.(_(a)),B(s,_(a)?`Desktop notifications enabled`:`Desktop notification preference could not be saved`,!0),B(c,!_(a));return}if(typeof Notification>`u`){B(i,!1),B(o,`unsupported`),B(a,!1),n.onChanged?.(!1),B(s,`Browser notifications are not supported`),B(c,!0);return}if(B(o,Notification.permission==="default"?await Notification.requestPermission():Notification.permission,!0),B(i,!0),_(o)===`granted`){B(a,el(n.user.id,!0),!0),n.onChanged?.(_(a)),B(s,_(a)?`Browser notifications enabled`:`Browser notification preference could not be saved`,!0),B(c,!_(a));return}el(n.user.id,!1),B(a,!1),n.onChanged?.(!1),B(s,_(o)===`denied`?`Browser notifications are blocked by this browser`:`Browser notifications were not enabled`,!0),B(c,!0)}var m=il(),h=F(m),g=F(h),v=F(g,!0);T(g);var y=M(g,4),x=e=>{d(e,tl())},C=e=>{d(e,nl())};N(y,e=>{!r()&&!_(i)?e(x):!r()&&_(o)===`denied`&&e(C,1)});var E=M(y,2),O=e=>{var t=rl();let n;var r=F(t,!0);T(t),b(()=>{n=w(t,1,`settings-row2__hint`,null,n,{"is-error":_(c)}),l(r,_(s))}),d(e,t)};N(E,e=>{_(s)&&e(O)}),T(h);var A=M(h,2),j=F(A);k(j),T(A),T(m),b(()=>{l(v,r()?`Desktop notifications`:`Browser notifications`),L(j,`aria-label`,r()?`Desktop notifications`:`Browser notifications`),j.disabled=!_(i)||_(o)===`denied`,ne(j,_(a))}),t(`change`,j,e=>void p(e.currentTarget.checked)),d(e,m),te()}U([`change`]);var ol=o(``),sl=o(`

      `),cl=o(``),ll=o(`
      Preview

      Shown in messages, mentions, and your profile card.

      Used in mentions and the quick switcher. Must be unique.

      Paste a public image URL. Your initials show when empty.

      Conversation display

      Keep agent reasoning summaries out of the message timeline.

      Hide tool execution details while keeping ordinary messages visible.

      Choose which side of the timeline shows your messages.

      Choose which side of the timeline shows messages from other people and agents.

      Notifications

      `);function ul(e,n){ee(n,!0);let r=S(n,`isDesktop`,3,!1),i=D(null),a=O(()=>_(i)??n.user),o=D(``),s=D(``),c=D(``),u=D(``),p=D(!1),m=D(!1),h=O(()=>_(o).trim()||_(a).display_name||`Your name`),v=O(()=>_(s).trim().replace(/^@+/,``)||_(a).handle||``);f(()=>{B(o,_(a).display_name,!0),B(s,_(a).handle??``,!0),B(c,_(a).avatar_url,!0)});function y(){let e=_(s).trim().replace(/^@+/,``);return e?`@${e}`:``}async function C(){if(!_(m)){B(m,!0),B(u,``),B(p,!1);try{let e=await W(`/api/me`,{method:`PATCH`,body:JSON.stringify({display_name:_(o),handle:y(),avatar_url:_(c),notification_settings:_(a).notification_settings})});B(i,e.user,!0),n.onUserUpdated?.(e.user),B(u,`Saved`),n.onSaved?.()}catch(e){B(u,e instanceof Error?e.message:`Could not save profile`,!0),B(p,!0)}finally{B(m,!1)}}}function E(){B(c,``)}var A=ll(),j=F(A),P=F(j);Eo(P,{get id(){return _(a).id},get name(){return _(h)},get src(){return _(c)},size:52,loading:`eager`,fetchPriority:`auto`});var re=M(P,2),ie=F(re),I=F(ie,!0);T(ie);var L=M(ie,2),R=F(L,!0);T(L),T(re),fe(2),T(j);var ae=M(j,2),z=F(ae),oe=M(F(z),2),V=F(oe);k(V),T(oe),T(z);var H=M(z,2),le=M(F(H),2),ue=F(le),de=M(F(ue),2);k(de),T(ue),T(le),T(H);var U=M(H,2),pe=M(F(U),2),me=F(pe);k(me);var he=M(me,2),ge=e=>{var n=ol();t(`click`,n,E),d(e,n)};N(he,e=>{_(c)&&e(ge)}),T(pe),T(U);var _e=M(U,4),ve=M(F(_e),2),ye=F(ve);k(ye),T(ve),T(_e);var be=M(_e,2),xe=M(F(be),2),Se=F(xe);k(Se),T(xe),T(be);var G=M(be,2),Ce=M(F(G),2),K=F(Ce),q=F(K);q.value=q.__value=`left`;var J=M(q);J.value=J.__value=`right`,T(K);var we;x(K),T(Ce),T(G);var Y=M(G,2),X=M(F(Y),2),Z=F(X),Q=F(Z);Q.value=Q.__value=`left`;var Te=M(Q);Te.value=Te.__value=`right`,T(Z);var Ee;x(Z),T(X),T(Y),al(M(Y,4),{get user(){return _(a)},get isDesktop(){return r()},get onChanged(){return n.onBrowserNotificationsChanged}}),T(ae);var De=M(ae,2),Oe=F(De),ke=e=>{var t=sl();let n;var r=F(t,!0);T(t),b(()=>{n=w(t,1,`settings-status`,null,n,{"is-error":_(p)}),l(r,_(u))}),d(e,t)},Ae=e=>{d(e,cl())};N(Oe,e=>{_(u)?e(ke):e(Ae,-1)});var je=M(Oe,2),Me=F(je,!0);T(je),T(De),T(A),b(()=>{l(I,_(h)),l(R,_(v)?`@${_(v)}`:`No handle set`),ne(ye,n.hideCommentary),ne(Se,n.hideToolCalls),we!==(we=n.userAlign)&&(K.value=(K.__value=n.userAlign)??``,ce(K,n.userAlign)),Ee!==(Ee=n.otherAlign)&&(Z.value=(Z.__value=n.otherAlign)??``,ce(Z,n.otherAlign)),je.disabled=_(m),l(Me,_(m)?`Saving...`:`Save profile`)}),g(`submit`,A,e=>{e.preventDefault(),C()}),se(V,()=>_(o),e=>B(o,e)),se(de,()=>_(s),e=>B(s,e)),se(me,()=>_(c),e=>B(c,e)),t(`change`,ye,e=>n.onHideCommentary(e.currentTarget.checked)),t(`change`,Se,e=>n.onHideToolCalls(e.currentTarget.checked)),t(`change`,K,e=>n.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),t(`change`,Z,e=>n.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),d(e,A),te()}U([`click`,`change`]);var dl=o(`

      `),fl=o(``),pl=o(`

      Desktop

      Mobile push

      Send push notifications to your phone via Pushover.

      Find this in your Pushover dashboard under "Your User Key".

      `);function ml(e,t){ee(t,!0);let n=S(t,`isDesktop`,3,!1),r=D(null),i=O(()=>_(r)??t.user),a=D(!1),o=D(``),s=D(``),c=D(!1),u=D(!1);f(()=>{B(a,_(i).notification_settings?.pushover_enabled??!1,!0),B(o,_(i).notification_settings?.pushover_user_key??``,!0)});async function p(){if(!_(u)){B(u,!0),B(s,``),B(c,!1);try{let e=await W(`/api/me`,{method:`PATCH`,body:JSON.stringify({display_name:_(i).display_name,handle:_(i).handle?`@${_(i).handle}`:``,avatar_url:_(i).avatar_url,notification_settings:{pushover_enabled:_(a),pushover_user_key:_(o)}})});B(r,e.user,!0),t.onUserUpdated?.(e.user),B(s,`Saved`)}catch(e){B(s,e instanceof Error?e.message:`Could not save notifications`,!0),B(c,!0)}finally{B(u,!1)}}}var m=pl(),h=F(m),v=M(F(h),2);al(v,{get user(){return _(i)},get isDesktop(){return n()},get onChanged(){return t.onBrowserNotificationsChanged}});var y=M(v,4),x=M(F(y),2),C=F(x);k(C),T(x),T(y);var A=M(y,2),j=M(F(A),2),P=F(j);k(P),T(j),T(A),T(h);var ne=M(h,2),re=F(ne),ie=e=>{var t=dl();let n;var r=F(t,!0);T(t),b(()=>{n=w(t,1,`settings-status`,null,n,{"is-error":_(c)}),l(r,_(s))}),d(e,t)},I=e=>{d(e,fl())};N(re,e=>{_(s)?e(ie):e(I,-1)});var L=M(re,2),R=F(L,!0);T(L),T(ne),T(m),b(()=>{L.disabled=_(u),l(R,_(u)?`Saving...`:`Save notifications`)}),g(`submit`,m,e=>{e.preventDefault(),p()}),E(C,()=>_(a),e=>B(a,e)),se(P,()=>_(o),e=>B(o,e)),d(e,m),te()}var hl=o(`

      Loading…

      `),gl=o(`

      `),_l=o(`
      You don't own any bots yet. Open a workspace's Bots & agents page to mint one.
      `),vl=o(``),yl=o(`
    • `),bl=o(`

        `),xl=o(`
        `),Sl=o(`

        Account

        My bots

        Bots you own across your workspaces. Tokens live with the workspace where the bot was created.

        `,1);function Cl(e,n){ee(n,!0);let r=D(C([])),i=D(`loading`),a=D(``);ae(()=>{o()});async function o(){B(i,`loading`);try{B(r,await Ce(),!0),B(i,`ready`)}catch(e){B(i,`error`),B(a,K(e),!0)}}function s(e){n.onClose(),pe(ve(e.workspace.route_id||e.workspace.id,`bots`))}function c(e){return e.startsWith(`@`)?e:`@${e}`}function f(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let m=O(()=>{let e=new Map;for(let t of _(r)){let n=t.workspace.id,r=e.get(n);r?r.entries.push(t):e.set(n,{workspace:t.workspace,entries:[t]})}return[...e.values()].sort((e,t)=>e.workspace.name.localeCompare(t.workspace.name))});var h=Sl(),g=M(z(h),2),v=e=>{d(e,hl())},y=e=>{var t=gl(),n=F(t,!0);T(t),b(()=>l(n,_(a))),d(e,t)},x=e=>{d(e,_l())},S=e=>{var n=xl();u(n,21,()=>_(m),e=>e.workspace.id,(e,n)=>{var r=bl(),i=F(r),a=F(i),o=F(a,!0);T(a);var m=M(a,2);T(i);var h=M(i,2);u(h,21,()=>_(n).entries,e=>e.bot.id,(e,n)=>{var r=yl(),i=F(r),a=F(i),o=e=>{var t=vl();b(()=>L(t,`src`,_(n).bot.avatar_url)),d(e,t)},u=e=>{var t=p();b(e=>l(t,e),[()=>f(_(n).bot.display_name||_(n).bot.handle||`?`)]),d(e,t)};N(a,e=>{_(n).bot.avatar_url?e(o):e(u,-1)}),T(i);var m=M(i,2),h=F(m),g=F(h,!0);T(h);var v=M(h,2),y=F(v),x=F(y,!0);T(y);var S=M(y,4),C=F(S);T(S),T(v),T(m);var w=M(m,2);T(r),b(e=>{l(g,_(n).bot.display_name||_(n).bot.handle),l(x,e),l(C,`${_(n).active_token_count??``} - active ${_(n).active_token_count===1?`token`:`tokens`}`)},[()=>c(_(n).bot.handle)]),t(`click`,w,()=>s(_(n))),d(e,r)}),T(h),T(r),b(()=>l(o,_(n).workspace.name)),t(`click`,m,()=>s(_(n).entries[0])),d(e,r)}),T(n),d(e,n)};N(g,e=>{_(i)===`loading`?e(v):_(i)===`error`?e(y,1):_(r).length===0?e(x,2):e(S,-1)}),d(e,h),te()}U([`click`]);var wl=c(``),Tl=c(``),El=c(``),Dl=o(``),Ol=o(``),kl=o(``),Al=o(`

        Account

        Appearance

        Pick a color mode, board, and message layout. Changes apply instantly, everywhere in the - app, and stay on this device.

        Color mode

        Board

        Every board comes tuned for light and dark; the swatches preview whichever mode is active.

        Message layout

        `,1);function jl(e,n){ee(n,!0);let r=D(C(Ae())),i=D(C(je())),a=D(C(Me()));function o(e){B(r,e,!0),Ie(e)}function s(e){B(i,e,!0),Le(e)}function c(e){B(a,e,!0),Re(e)}function f(e,t,n,r){let i;switch(e.key){case`ArrowRight`:case`ArrowDown`:i=(n+1)%t;break;case`ArrowLeft`:case`ArrowUp`:i=(n-1+t)%t;break;case`Home`:i=0;break;case`End`:i=t-1;break;default:return}e.preventDefault(),r(i),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.item(i).focus()}var p=Al(),m=M(z(p),2),h=M(F(m),2);u(h,23,()=>Q,e=>e.id,(e,n,i)=>{var a=Dl();let s;var c=F(a),u=F(c),p=e=>{d(e,wl())},m=e=>{d(e,Tl())},h=e=>{d(e,El())};N(u,e=>{_(n).id===`light`?e(p):_(n).id===`dark`?e(m,1):e(h,-1)}),T(c);var g=M(c);T(a),b(()=>{s=w(a,1,`appearance-mode`,null,s,{"is-active":_(r)===_(n).id}),L(a,`aria-checked`,_(r)===_(n).id),L(a,`tabindex`,_(r)===_(n).id?0:-1),l(g,` ${_(n).label??``}`)}),t(`click`,a,()=>o(_(n).id)),t(`keydown`,a,e=>f(e,Q.length,_(i),e=>o(Q[e].id))),d(e,a)}),T(h);var g=M(h,4);u(g,23,()=>Te,e=>e.id,(e,n,r)=>{var a=Ol();let o;var c=M(F(a),2),u=F(c),p=F(u,!0);T(u);var m=M(u,2),h=F(m,!0);T(m),T(c),T(a),b(()=>{o=w(a,1,`board-swatch`,null,o,{"is-active":_(i)===_(n).id}),L(a,`aria-checked`,_(i)===_(n).id),L(a,`tabindex`,_(i)===_(n).id?0:-1),L(a,`data-board`,_(n).id),l(p,_(n).label),l(h,_(n).blurb)}),t(`click`,a,()=>s(_(n).id)),t(`keydown`,a,e=>f(e,Te.length,_(r),e=>s(Te[e].id))),d(e,a)}),T(g);var v=M(g,6);u(v,23,()=>Ee,e=>e.id,(e,n,r)=>{var i=kl();let o;var s=F(i),u=M(s,2),p=F(u),m=F(p,!0);T(p);var h=M(p,2),g=F(h,!0);T(h),T(u),T(i),b(()=>{o=w(i,1,`message-layout-option`,null,o,{"is-active":_(a)===_(n).id}),L(i,`aria-checked`,_(a)===_(n).id),L(i,`tabindex`,_(a)===_(n).id?0:-1),L(s,`data-layout`,_(n).id),l(m,_(n).label),l(g,_(n).blurb)}),t(`click`,i,()=>c(_(n).id)),t(`keydown`,i,e=>f(e,Ee.length,_(r),e=>c(Ee[e].id))),d(e,i)}),T(v),T(m),d(e,p),te()}U([`click`,`keydown`]);var Ml=o(` `,1),Nl=o(` `,1),Pl=o(` `,1),Fl=o(` `,1),Il=o(`
      • `),Ll=o(`
      • `),Rl=o(`

          `),zl=o(`

          Loading...

          `),Bl=o(`

          `),Vl=o(`

          Account

          Profile settings

          How you appear across ClickClack.

          `,1),Hl=o(`

          Account

          Notifications

          Decide when and how ClickClack should reach you.

          `,1),Ul=o(``);function Wl(e,n){ee(n,!0);let r=S(n,`workspaces`,19,()=>[]),a=S(n,`initialSection`,3,be),o=S(n,`isDesktop`,3,!1),s=D(C(be)),c=D(null),p=O(()=>_(c)?.id===n.user.id?_(c):n.user),m=D(`ready`),h=D(``);f(()=>{B(s,a(),!0)}),ae(()=>{v()});async function v(){B(m,`loading`);try{let e=await W(`/api/me`);B(c,e.user,!0),n.onUserUpdated?.(e.user),B(m,`ready`)}catch(e){if(e instanceof _e&&(e.status===401||e.status===403)){B(m,`error`),B(h,`Sign in to manage your account`);return}B(m,`error`),B(h,e instanceof Error?e.message:`Could not load your account`,!0)}}function y(e){B(c,e,!0),n.onUserUpdated?.(e)}function x(e){e.target===e.currentTarget&&n.onClose()}function E(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),n.onClose())}function k(e,t){n.onClose(),pe(ve(e.route_id||e.id,t))}var A=Ul();g(`keydown`,V,E);var j=F(A),P=F(j),ne=M(P,2),re=F(ne),ie=M(F(re),2);u(ie,21,()=>xe,e=>e.id,(e,n)=>{var r=Il(),i=F(r);let a;var o=F(i),c=e=>{var t=Ml(),r=z(t);Eo(r,{class:`settings-modal__rail-avatar`,get id(){return _(p).id},get name(){return _(p).display_name},get src(){return _(p).avatar_url},size:18});var i=M(r,2),a=F(i,!0);T(i),b(()=>l(a,_(p).display_name||_(n).label)),d(e,t)},u=e=>{var t=Nl(),r=M(z(t),2),i=F(r,!0);T(r),b(()=>l(i,_(n).label)),d(e,t)},f=e=>{var t=Pl(),r=M(z(t),2),i=F(r,!0);T(r),b(()=>l(i,_(n).label)),d(e,t)},m=e=>{var t=Fl(),r=M(z(t),2),i=F(r,!0);T(r),b(()=>l(i,_(n).label)),d(e,t)};N(o,e=>{_(n).id===`profile`?e(c):_(n).id===`appearance`?e(u,1):_(n).id===`notifications`?e(f,2):_(n).id===`bots`&&e(m,3)}),T(i),T(r),b(()=>{a=w(i,1,`settings-modal__rail-item`,null,a,{"is-active":_(s)===_(n).id}),L(i,`aria-current`,_(s)===_(n).id?`page`:void 0)}),t(`click`,i,()=>B(s,_(n).id,!0)),d(e,r)}),T(ie),T(re),u(M(re,2),17,r,e=>e.id,(e,n)=>{var r=Rl(),a=F(r),o=F(a);T(a);var s=M(a,2);u(s,21,()=>ye,e=>e.id,(e,r)=>{var a=i(),o=z(a),s=e=>{var i=Ll(),a=F(i),o=M(F(a),2),s=F(o,!0);T(o),T(a),T(i),b(()=>l(s,_(r).label)),t(`click`,a,()=>k(_(n),_(r).slug)),d(e,i)},c=O(()=>!_(r).managersOnly||Se(_(n).role));N(o,e=>{_(c)&&e(s)}),d(e,a)}),T(s),T(r),b(()=>{L(a,`title`,_(n).name),l(o,`Workspace · ${_(n).name??``}`)}),d(e,r)}),T(ne);var I=M(ne,2),R=F(I),oe=e=>{d(e,zl())},se=e=>{var t=Bl(),n=F(t,!0);T(t),b(()=>l(n,_(h))),d(e,t)},H=e=>{var t=Vl();ul(M(z(t),2),{get user(){return _(p)},get hideCommentary(){return n.hideCommentary},get hideToolCalls(){return n.hideToolCalls},get userAlign(){return n.userAlign},get otherAlign(){return n.otherAlign},get isDesktop(){return o()},onUserUpdated:y,get onSaved(){return n.onClose},get onHideCommentary(){return n.onHideCommentary},get onHideToolCalls(){return n.onHideToolCalls},get onUserAlign(){return n.onUserAlign},get onOtherAlign(){return n.onOtherAlign},get onBrowserNotificationsChanged(){return n.onBrowserNotificationsChanged}}),d(e,t)},ce=e=>{jl(e,{})},le=e=>{var t=Hl();ml(M(z(t),2),{get user(){return _(p)},get isDesktop(){return o()},onUserUpdated:y,get onBrowserNotificationsChanged(){return n.onBrowserNotificationsChanged}}),d(e,t)},ue=e=>{Cl(e,{get onClose(){return n.onClose}})};N(R,e=>{_(m)===`loading`?e(oe):_(m)===`error`?e(se,1):_(s)===`profile`?e(H,2):_(s)===`appearance`?e(ce,3):_(s)===`notifications`?e(le,4):_(s)===`bots`&&e(ue,5)}),T(I),T(j),T(A),t(`click`,A,x),t(`click`,P,function(...e){n.onClose?.apply(this,e)}),d(e,A),te()}U([`click`]);var Gl=o(`
          No thread open Hover any message and tap the bubble to keep side conversations tidy.
          `);function Kl(e){d(e,Gl())}var ql=o(``),Jl=o(`deleted bot`),Yl=o(` `),Xl=o(``),Zl=o(` `,1),Ql=o(`
          This message was deleted.
          `),$l=o(`
          `),eu=o(`
          `),tu=o(`
          `,1),nu=o(`
          `),ru=o(`

          Thread

          `,1);function iu(e,n){ee(n,!0);let i=S(n,`mentionPeople`,19,()=>[]),a=S(n,`replyDisabled`,3,!1),o=S(n,`canDeleteAnyMessage`,3,!1),s=S(n,`deletingMessageIDs`,19,()=>new Set),c=e=>o()||!!n.currentUserID&&(e.author?.id||e.author_id)===n.currentUserID;var f=ru(),p=z(f),h=F(p),g=e=>{var r=ql();t(`click`,r,function(...e){n.onBack?.apply(this,e)}),d(e,r)};N(h,e=>{n.onBack&&e(g)});var v=M(h,2),y=M(F(v),2),x=F(y);T(y),T(v);var C=M(v,2);T(p);var w=M(p,2),E=F(w),D=F(E);{let e=O(()=>n.root.author?.id||n.root.author_id),t=O(()=>n.root.author?.display_name),r=O(()=>nt(n.root.author)?void 0:n.root.author?.avatar_url);Eo(D,{class:`avatar`,get id(){return _(e)},get name(){return _(t)},get src(){return _(r)},size:38})}var k=M(D,2),A=F(k),j=F(A),P=F(j,!0);T(j);var ne=M(j,2),re=e=>{d(e,Jl())},ie=O(()=>nt(n.root.author));N(ne,e=>{_(ie)&&e(re)});var I=M(ne,2),R=e=>{var t=Yl(),r=F(t,!0);T(t),b(e=>l(r,e),[()=>et(tt(n.root.author))]),d(e,t)},ae=O(()=>tt(n.root.author));N(I,e=>{_(ae)&&e(R)});var oe=M(I,2),B=F(oe,!0);T(oe);var V=M(oe,2),se=e=>{var r=Zl(),i=z(r),a=M(i,2),o=e=>{var r=Xl();b(e=>r.disabled=e,[()=>s().has(n.root.id)]),t(`click`,r,()=>n.onDeleteMessage?.(n.root)),d(e,r)},l=O(()=>c(n.root)&&n.onDeleteMessage);N(a,e=>{_(l)&&e(o)}),t(`click`,i,()=>n.onSetReplyTarget(n.root,`thread`)),d(e,r)};N(V,e=>{n.root.deleted_at||e(se)}),T(A);var H=M(A,2),ce=e=>{d(e,Ql())},le=e=>{var t=$l();r(t,()=>ja(n.root.body),!0),T(t),m(t,e=>qe?.(e)),d(e,t)};N(H,e=>{n.root.deleted_at?e(ce):e(le,-1)});var ue=M(H,2),de=e=>{var t=eu();u(t,21,()=>n.root.attachments,e=>e.id,(e,t)=>{{let r=O(()=>Ut(_(t)));Po(e,{get upload(){return _(t)},get url(){return _(r)},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact}})}}),T(t),d(e,t)};N(ue,e=>{!n.root.deleted_at&&n.root.attachments?.length&&e(de)}),T(k),T(E);var fe=M(E,2),U=F(fe),pe=F(U);T(U),T(fe);var me=M(fe,2);u(me,21,()=>n.replies,e=>e.id,(e,i)=>{var a=nu(),o=F(a);{let e=O(()=>_(i).author?.id||_(i).author_id),t=O(()=>_(i).author?.display_name),n=O(()=>nt(_(i).author)?void 0:_(i).author?.avatar_url);Eo(o,{class:`avatar small`,get id(){return _(e)},get name(){return _(t)},get src(){return _(n)},size:30})}var f=M(o,2),p=F(f),h=F(p),g=F(h,!0);T(h);var v=M(h,2),y=e=>{d(e,Jl())},x=O(()=>nt(_(i).author));N(v,e=>{_(x)&&e(y)});var S=M(v,2),C=e=>{var t=Yl(),n=F(t,!0);T(t),b(e=>l(n,e),[()=>et(tt(_(i).author))]),d(e,t)},w=O(()=>tt(_(i).author));N(S,e=>{_(w)&&e(C)});var E=M(S,2),D=F(E,!0);T(E);var k=M(E,2),A=e=>{var r=Zl(),a=z(r),o=M(a,2),l=e=>{var r=Xl();b(e=>r.disabled=e,[()=>s().has(_(i).id)]),t(`click`,r,()=>n.onDeleteMessage?.(_(i))),d(e,r)},u=O(()=>c(_(i))&&n.onDeleteMessage);N(o,e=>{_(u)&&e(l)}),t(`click`,a,()=>n.onSetReplyTarget(_(i),`thread`)),d(e,r)};N(k,e=>{_(i).deleted_at||e(A)}),T(p);var ee=M(p,2),j=e=>{d(e,Ql())},te=e=>{var t=tu(),a=z(t);Ro(a,{get message(){return _(i)},get onJump(){return n.onJumpToQuote}});var o=M(a,2);r(o,()=>ja(_(i).body),!0),T(o),m(o,e=>qe?.(e)),d(e,t)};N(ee,e=>{_(i).deleted_at?e(j):e(te,-1)});var P=M(ee,2),ne=e=>{var t=eu();u(t,21,()=>_(i).attachments,e=>e.id,(e,t)=>{{let r=O(()=>Ut(_(t)));Po(e,{get upload(){return _(t)},get url(){return _(r)},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact}})}}),T(t),d(e,t)};N(P,e=>{!_(i).deleted_at&&_(i).attachments?.length&&e(ne)}),T(f),T(a),b(e=>{L(a,`data-message-id`,_(i).id),l(g,_(i).author?.display_name||`Local User`),l(D,e)},[()=>Ma(_(i).created_at)]),d(e,a)}),T(me),T(w);var he=M(w,2);{let e=O(()=>a()?`No active recipient`:`Reply in thread`);hn(he,{get value(){return n.replyBody},get placeholder(){return _(e)},ariaLabel:`Reply body`,submitLabel:`Reply`,formClass:`composer reply-composer`,get disabled(){return a()},get replyTarget(){return n.replyTarget},get mentionPeople(){return i()},get onValue(){return n.onReplyBody},get onSubmit(){return n.onSubmitReply},get onKeydown(){return n.onReplyKeydown},get onFocus(){return n.onReplyFocus},get onInputRef(){return n.onReplyInputRef},get onClearReply(){return n.onClearReply}})}b(e=>{l(x,`${n.threadState?.reply_count??n.replies.length??``} ${(n.threadState?.reply_count??n.replies.length)===1?`reply`:`replies`}`),L(E,`data-message-id`,n.root.id),l(P,n.root.author?.display_name||`Local User`),l(B,e),l(pe,`${n.replies.length??``} ${n.replies.length===1?`reply`:`replies`}`)},[()=>Ma(n.root.created_at)]),t(`click`,C,function(...e){n.onClose?.apply(this,e)}),t(`pointerdown`,w,function(...e){n.onActivateThreadComposer?.apply(this,e)}),t(`pointerup`,w,function(...e){n.onInlineImagePointerUp?.apply(this,e)}),d(e,f),te()}U([`click`,`pointerdown`,`pointerup`]);var au=o(`

          `,1),ou=o(``),su=o(`Connecting…`),cu=o(`
          `);function lu(e,n){ee(n,!0);var r=cu(),i=F(r),a=F(i),o=F(a),s=F(o),c=M(F(s),2);T(s),T(o);var u=M(o,2),f=F(u,!0);T(u);var p=M(u,2),m=e=>{var t=au(),r=M(z(t),2),i=F(r,!0);T(r),b(()=>{L(r,`title`,n.channelTitle),l(i,n.channelTitle)}),d(e,t)};N(p,e=>{n.channelTitle&&e(m)}),T(a);var h=M(a,2),_=M(F(h),2);k(_);var v=M(_,2),y=e=>{var r=ou();t(`click`,r,function(...e){n.onResetSearch?.apply(this,e)}),d(e,r)};N(v,e=>{n.searchQuery&&e(y)}),fe(2),T(h);var x=M(h,2),S=e=>{d(e,su())};N(x,e=>{n.connected||e(S)}),T(i),T(r),b(()=>{L(r,`data-platform`,n.platform),L(o,`aria-label`,n.mobileNavigation?n.mobileNavOpen?`Close navigation`:`Open navigation`:n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),L(o,`title`,n.mobileNavigation?n.mobileNavOpen?`Close navigation`:`Open navigation`:n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),L(c,`d`,n.mobileNavigation?n.mobileNavOpen?`m15 9-3 3 3 3`:`m9 9 3 3-3 3`:n.sidebarCollapsed?`m13 9 3 3-3 3`:`m16 9-3 3 3 3`),l(f,n.workspaceName||`ClickClack`),j(_,n.searchQuery)}),t(`click`,o,function(...e){n.onToggleSidebar?.apply(this,e)}),t(`click`,u,function(...e){n.onOpenWorkspaceSettings?.apply(this,e)}),g(`submit`,h,e=>{e.preventDefault(),n.onSearch()}),t(`input`,_,e=>n.onSearchQuery(e.currentTarget.value)),d(e,r),te()}U([`click`,`input`]);var uu=o(`

          `),du=o(`

          `),fu=o(`

          ClickClack

          `),pu=o(``),mu=o(`

          `);function hu(e,n){ee(n,!0);var r=mu(),i=F(r),a=F(i),o=e=>{var t=uu(),r=F(t,!0);T(t),b(e=>l(r,e),[()=>`@${ot(n.selectedDirect,n.currentUserID)}`]),d(e,t)},s=e=>{var t=du(),r=F(t,!0);T(t),b(()=>l(r,`#${n.selectedChannel.name}`)),d(e,t)},c=e=>{d(e,fu())};N(a,e=>{n.selectedDirect?e(o):n.selectedChannel?e(s,1):e(c,-1)});var u=M(a,4),f=F(u,!0);T(u),T(i);var p=M(i,2),m=M(F(p),2);k(m);var h=M(m,2),_=e=>{var r=pu();t(`click`,r,function(...e){n.onResetSearch?.apply(this,e)}),d(e,r)};N(h,e=>{n.searchQuery&&e(_)}),fe(2),T(p);var v=M(p,2),y=F(v);let x;var S=M(y,2);T(v),T(r),b(()=>{l(f,n.workspaceName||`no workspace`),j(m,n.searchQuery),L(y,`title`,n.threadOpen?`Close thread`:`Open a message thread`),L(y,`aria-label`,n.threadOpen?`Close thread`:`Open a message thread`),x=w(y,1,``,null,x,{active:n.sidePanelOpen})}),g(`submit`,p,e=>{e.preventDefault(),n.onSearch()}),t(`input`,m,e=>n.onSearchQuery(e.currentTarget.value)),t(`click`,y,function(...e){n.onToggleThread?.apply(this,e)}),t(`click`,S,function(...e){n.onPinnedItems?.apply(this,e)}),d(e,r),te()}U([`input`,`click`]);async function gu(e){return(await W(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function _u(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function vu(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:_u(t[1]),text:t[2].trim()}:null}function yu(e,t){return e.find(e=>!e.revoked_at&&_u(e.command)===t)}async function bu(e,t,n){let r=new URLSearchParams;r.set(`command`,t),r.set(`text`,n);let i=await fetch(he(`/api/hooks/slash/${e}`),{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`,"X-ClickClack-CSRF":`1`},body:r.toString()}),a=await i.text();if(!i.ok)throw new _e(i.status,a);let o=a?JSON.parse(a):{};return{response_type:o.response_type||`in_channel`,text:(o.text||``).trim()}}var xu=e({default:()=>ju}),Su=o(``),Cu=o(``),wu=o(`
          cc
          ClickClack OpenClaw workspace chat

          Welcome.

          Sign in with GitHub to join the guest room.

          `,1),Tu=o(``),Eu=o(``),Du=o(`
          `),Ou=o(``),ku=o(``),Au=o(`
          `,1);function ju(e,r){ee(r,!1);let a=I(),o=I(),c=I(),u=I(),f=I(),m=I(),x=I(),C=I(),E=I(),D=I(),O=I(),k=I(),A=I(),j=I(),P=I(),ne=I(),se=I(),ce=I(),le=I(),ue=I(),de=`clickclack:hide-commentary:v1`,fe=`clickclack:hide-tool-calls:v1`,U=`clickclack:user-align:v1`,me=`clickclack:other-align:v1`,ye=Date.now(),be=Be?.integratedTitleBar===!0,xe=S(r,`routeWorkspaceID`,8,``),Se=S(r,`routeTargetID`,8,``),G=I(null),Ce=I([]),K=I([]),q=I([]),J=I([]),we=I([]),Y=I(``),X=I(``),Z=I(``),Q=I(null),Te=I(null),Ee=I(null),De=I([]),Oe=I([]),ke=I([]),Ae=I(null),je=I([]),Me=I(null),Ne=I(null),Pe=I(``),Fe=I(null),Ie=null,Le=I(null),Re=I(null),He=new Set,Ue=I(``),Ge=I(``),qe=I(``),Je=I(``),Xe=I(``),Ze=I(``),Qe=I(null),$e=I(!1),et=0,tt=0,nt=I(null),rt=I(!1),it=I(!1),at=I(`profile`),ct=I(!1),lt=I(!1),ut=I(``),dt=I(!1),ft=I(!1),pt=I(!1),mt=I(`left`),ht=I(`left`),gt=I(`loading`),_t=I(!1),vt=I(``),bt=I(!1),xt=null,St=Promise.resolve(),wt=I(null),Tt=new Map,Et=I(new Map),Dt=new Set,Ot=I(`idle`),At=`idle`,Mt=!1,Nt=!1,Pt=I(!1),Ft=I(!1),It=I(!1),Lt=I(!1),Rt=new Map,Bt=0,Ht=I(``),Ut=I(void 0),Wt=I(``),Gt=I(!0),Kt=I(!1),qt=I(!1),Jt=I(!1),Yt=I(!1),Xt=I(null),Zt=I(null),Qt=I(null),$t=I(null),en=I(`message`),tn=I([]),nn,rn=I([]),an,on=I(Date.now()),sn,cn=I(``),ln=0,un=0,dn=0,fn=0,pn=0,mn=0,gn=0,_n=I(null),vn,yn=I(new Set),bn=I(null),xn=I(``);ae(()=>{ze(),wn(),sn=window.setInterval(()=>{B(on,Date.now())},3e4),Pn(),An();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{B(Jt,!1),B(Yt,e.matches)};t();let n=Be?.onNavigate(e=>{pe(e,{keepFocus:!0,noScroll:!0})}),r=Be?.onQuickCompose(()=>Sn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Sn(){s().then(()=>{(_(en)===`thread`?_($t):_(Qt))?.focus()})}async function Cn(e){if(Be){e.preventDefault(),B(vt,`Opening GitHub in your browser…`);try{await Be.signInWithGitHub(),B(vt,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{B(vt,`Could not open your browser. Try again.`)}}}function wn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;B(ft,window.localStorage.getItem(de)===`1`||e),B(pt,window.localStorage.getItem(fe)===`1`||e),B(mt,window.localStorage.getItem(U)===`right`?`right`:`left`),B(ht,window.localStorage.getItem(me)===`right`?`right`:`left`)}catch{B(ft,!1),B(pt,!1),B(mt,`left`),B(ht,`left`)}Tn()}function Tn(){try{document.documentElement.setAttribute(`data-user-align`,_(mt)),document.documentElement.setAttribute(`data-other-align`,_(ht))}catch{}}function En(e){B(mt,e),Tn();try{window.localStorage.setItem(U,e)}catch{}}function Dn(e){B(ht,e),Tn();try{window.localStorage.setItem(me,e)}catch{}}function On(e){B(ft,e);try{window.localStorage.setItem(de,e?`1`:`0`)}catch{}}function kn(e){B(pt,e);try{window.localStorage.setItem(fe,e?`1`:`0`)}catch{}}re(()=>{xt?.close(),xt=null,B(bt,!1),Vt(),nn&&window.clearInterval(nn),an&&window.clearInterval(an),sn&&window.clearInterval(sn),vn&&clearTimeout(vn),Ca(!1,null)});async function An(){try{let e=await W(`/api/me`);if(B(G,e.user),Pn(),await Rn(),_(Ce).length===0){B(gt,`create a workspace`);return}await Qn(xe(),Se()),B(gt,`ready`)}catch(e){if(e instanceof _e&&(e.status===401||e.status===403)){B(_t,!0),B(gt,`auth`);return}B(gt,e instanceof Error?e.message:`Could not load ClickClack`)}}function jn(){_(G)&&(B(at,`profile`),B(it,!0))}function Mn(){let e=_(a)?.route_id||_(Y)||xe();e&&pe(ve(e))}function Nn(e){B(G,e),ci(_(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),B(we,_(we).map(t=>t.author?.id===e.id?{...t,author:e}:t)),_(Q)?.author?.id===e.id&&B(Q,{..._(Q),author:e})}function Pn(){if(Be){B(dt,In());return}let e=In();B(dt,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!_(dt)&&Ln(!1)}function Fn(){return _(G)?.id?`clickclack:browser-notifications-enabled:v1:${_(G).id}`:``}function In(){let e=Fn();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function Ln(e){let t=Fn();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function Rn(){let e=await W(`/api/workspaces`);B(Ce,e.workspaces)}function zn(e=``,t=``){return`${e||``}/${t||``}`}function Bn(e=_(Y),t=``){let n=Hn(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=Un(t);return i?`${r}/${encodeURIComponent(i)}`:r}function Vn(e){let t=_(K).find(t=>t.id===e)?.route_id||_(q).find(t=>t.id===e)?.route_id;return t?Bn(_(Y),t):!_(Y)||!e?`/app`:`/app/${encodeURIComponent(_(Y))}/${encodeURIComponent(e)}`}function Hn(e=_(Y)){return e?_(Ce).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function Un(e=``){return e?_(K).find(t=>t.id===e||t.route_id===e)?.route_id||_(q).find(t=>t.id===e||t.route_id===e)?.route_id||_(Q)?.id===e&&_(Q).route_id||_(J).find(t=>t.id===e)?.route_id||e:``}async function Wn(e=_(Y),t=``,n=!1){let r=Bn(e,t);window.location.pathname!==r&&await pe(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function Gn(){_($e)&&Hi(),B(Q,null),B(Te,null),B(Ee,null),B(en,`message`),B(we,[]),B(Jt,!1)}function Kn(e=_(Y)){return Xn(e)||_(K).find(e=>e.name.toLowerCase()===`guest`)?.id||_(K)[0]?.id||_(q)[0]?.id||``}function qn(e=_(Y)){return _(Ce).find(t=>t.id===e||t.route_id===e)}function Jn(e=_(Y)){let t=qn(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function Yn(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function Xn(e=_(Y)){let t=Jn(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=Yn(e)}catch{return``}let r=_(K).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function Zn(e,t){if(!e||!t)return;let n=_(K).find(e=>e.id===t);if(!n)return;let r=Jn(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}async function Qn(e=``,t=``){let n=++ln,r=zn(e,t),i=t.trim()?await er(e,t):null;if(n!==ln)return;let a=i?_(Ce).find(e=>e.id===i.workspace_id):_(Ce).find(t=>t.id===e||t.route_id===e)||_(Ce)[0];if(!a){yr(``,vr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),B(cn,r);return}let o=i?zn(i.workspace_route_id,i.target_route_id):zn(a.route_id,``),s=_(Y)!==a.id;if(s&&(oi(),B(Y,a.id),fn+=1,pn+=1,B(Oe,[]),B(ke,[]),B(X,``),B(Z,``),B(Q,null),B(Te,null),B(Ee,null),B(en,`message`),B(we,[]),Hi(),Er(),B(Gt,!0),ia()),(s||_(K).length===0)&&await ir(!1,!1),n!==ln||((s||_(q).length===0)&&await Yi(),s&&await Promise.all([ar(),or(a.id),sr(a.id)]),n!==ln))return;if(i){let e=await $n(i,n);if(n!==ln)return;if(!e){Gn(),await Wn(a.id,Kn(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(B(cn,o),await pe(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==ln))return;if(i?.target_type===`channel`&&_(K).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(X)===e&&!_(Z)&&_(Ht)===e;if(B(X,e),B(Z,``),Zn(a.id,e),Gn(),t){B(cn,o),Cr(e);return}if(await pr(),n!==ln)return;B(cn,o);return}if(i?.target_type===`direct`&&_(q).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&_(Z)===e&&!_(X)&&_(Ht)===e;if(B(Z,e),B(X,``),Gn(),t){B(cn,o),Cr(e);return}if(await pr(),n!==ln)return;B(cn,o);return}if(i?.target_type===`thread`){let e=await tr(i);if(n!==ln)return;if(e){B(cn,o);return}}let c=Kn();if(Gn(),!c){B(X,``),B(Z,``),await pr(),B(cn,r),(e!==a.route_id||t)&&await Wn(a.id,``,!0);return}await Wn(a.id,c,!0)}async function $n(e,t){return e.target_type===`channel`?(_(K).some(t=>t.id===e.target_id)||await ir(!1,!1,!1),t===ln&&_(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(_(q).some(t=>t.id===e.target_id)||(await Yi(),_(q).some(t=>t.id===e.target_id)||Xi((await W(`/api/dms/${e.target_id}`)).conversation)),t===ln&&_(q).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(_(K).some(t=>t.id===e.parent_id)||await ir(!1,!1,!1),t===ln&&_(K).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(_(q).some(t=>t.id===e.parent_id)||(await Yi(),_(q).some(t=>t.id===e.parent_id)||Xi((await W(`/api/dms/${e.parent_id}`)).conversation)),t===ln&&_(q).some(t=>t.id===e.parent_id)):!0}async function er(e,t){try{return(await W(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof _e&&(e.status===403||e.status===404))return null;throw e}}async function tr(e){if(e.workspace_id!==_(Y))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!_(K).some(e=>e.id===t))return!1;B(X,t),B(Z,``),Zn(e.workspace_id,t)}else if(n){if(!_(q).some(e=>e.id===n))return!1;B(Z,n),B(X,``)}else return!1;let r=_(Q)?.id===e.target_id&&_(Ht)===$();return B(Ee,null),B(en,`thread`),B(Jt,!1),await Di(e.target_id),!r&&_(Q)&&await Ki(_(Q)),!0}async function nr(){if(!_(qe).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:_(qe)})});B(qe,``),B(Kt,!1),B(Ce,[..._(Ce),e.workspace]),B(Jt,!1),await Qn(e.workspace.route_id||e.workspace.id,``),await Wn(e.workspace.id),B(gt,`ready`)}async function rr(e){B(Jt,!1),await Wn(e)}async function ir(e=!0,t=!0,n=!0){if(!_(Y))return;let r=await W(`/api/workspaces/${_(Y)}/channels`);B(K,r.channels),t?B(X,_(K).find(e=>e.id===_(X))?.id||_(K)[0]?.id||``):_(X)&&!_(K).some(e=>e.id===_(X))&&B(X,``),n&&(_($e)&&Hi(),B(Q,null),B(Ee,null),B(en,`message`),B(we,[])),e&&await pr()}async function ar(e=_(Y)){let t=++dn;if(!e||e!==_(Y)||_(o)!==`owner`&&_(o)!==`moderator`){t===dn&&B(De,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==dn||e!==_(Y))return;B(De,n.members)}catch{t===dn&&e===_(Y)&&B(De,[])}}async function or(e=_(Y)){let t=++fn;if(!e){B(Oe,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==fn||e!==_(Y))return;B(Oe,n.slash_commands)}catch{t===fn&&e===_(Y)&&B(Oe,[])}}async function sr(e=_(Y)){let t=++pn;if(!e){B(ke,[]);return}try{let n=await gu(e);if(t!==pn||e!==_(Y))return;B(ke,n)}catch{t===pn&&e===_(Y)&&B(ke,[])}}function cr(e){gn+=1,B(Ae,null)}function lr(e,t,n,r){let i=new Map;for(let e of n)e.user.id&&!e.user.deleted_at&&i.set(e.user.id,e.user);for(let e of r?.members||[])e.id&&!e.deleted_at&&i.set(e.id,e);for(let e of t)e.id&&!e.deleted_at&&i.set(e.id,e);return e?.id&&i.set(e.id,e),[...i.values()].slice(0,24)}async function ur(e,t){if(!_(Y))return;let n=await W(`/api/workspaces/${_(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});B(De,[..._(De).filter(t=>t.user.id!==e),n.member]),await ir(!1,!1,!1),B(gt,`ready`)}async function dr(){if(!_(Y)||!_(Je).trim())return;let e=await W(`/api/workspaces/${_(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:_(Je),kind:`public`})});B(Je,``),B(K,[..._(K),e.channel]),B(ct,!1),await Wn(_(Y),e.channel.id)}async function fr(e){B(Jt,!1),Zn(_(Y),e);let t=Bn(_(Y),e);e===_(X)&&!_(Z)&&window.location.pathname===t||await Wn(_(Y),e)}async function pr(){oi();let e=$(),t=e!==_(Ht);Er(),t&&B(Gt,!0);try{if(!_(Z)&&!_(X)){yr(``,vr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let t=await W(_r(hr()));if($()!==e)return;yr(e,vr(t),`replace`)}finally{$()===e&&B(Gt,!1)}}async function mr(){let e=$();if(e){Er(),B(Gt,!0),Tt.set(e,{atBottom:!0});try{let t=await W(_r(`limit=100`));if($()!==e)return;yr(e,vr(t),`replace`)}finally{$()===e&&B(Gt,!1)}}}function hr(){let e=gr(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function gr(){return _(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{}}function _r(e){let t=_(Z)?`/api/dms/${_(Z)}/messages`:`/api/channels/${_(X)}/messages`;return e?`${t}?${e}`:t}function vr(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function yr(e,t,n){let r=kr(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};br(e,c),Cr(e,c),si(e,r)}function br(e,t){e&&(_(Et).delete(e),_(Et).set(e,t),xr(e),Sr(e),B(Et,new Map(_(Et))))}function xr(e){let t=_(Et).size+1;for(;_(Et).size>8&&t>0;){t--;let n=_(Et).keys().next().value;if(!n)return;if(n===e){let e=_(Et).get(n);_(Et).delete(n),e&&_(Et).set(n,e);continue}_(Et).delete(n)}}function Sr(e){let t=Tt.size+1;for(;Tt.size>16&&t>0;){t--;let n=Tt.keys().next().value;if(!n)return;if(n===e){let e=Tt.get(n);Tt.delete(n),e&&Tt.set(n,e);continue}Tt.delete(n)}}function Cr(e,t=_(Et).get(e)){e===$()&&(B(Pt,t?.has_older||!1),B(Ft,t?.has_newer||!1))}function wr(e){let t=_(Et).get(e);!e||!t||(br(e,{...t,has_newer:!0}),Cr(e))}function Tr(e,t){e===`older`?(B(Ot,t),B(It,t===`loading`)):(At=t,B(Lt,t===`loading`))}function Er(){Dt=new Set,B(Ot,`idle`),At=`idle`,Mt=!1,Nt=!1,B(It,!1),B(Lt,!1)}function Dr(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function Or(e){let t=new Set,n=Kr(e);if(n>=0){let r=qr(e,_(J),n);r&&t.add(r.id)}let r=Tt.get(e)?.anchorMessageID;r&&t.add(r),_(Q)&&ui(_(Q),e)&&t.add(_(Q).id),_(Xt)&&ui(_(Xt),e)&&t.add(_(Xt).id);for(let n of _(J))(n.status===`pending`||n.status===`failed`)&&ui(n,e)&&t.add(n.id);return t}function kr(e,t,n){return Ye(t,n,Or(e))}function Ar(){if(_(Ot)!==`idle`){Mt=!0;return}Mr()}function jr(e=!1){if(At!==`idle`){e&&(Nt=!0);return}Nr()}async function Mr(){let e=$(),t=_(Et).get(e),n=`${e}:older`;if(_(Ot)!==`idle`){Mt=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Dt.has(n))return;Dt.add(n),Mt=!1,Tr(`older`,`loading`),oi();let r=!1;try{let n=await W(_r(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;yr(e,{messages:Dr(n.messages,_(J)),oldest_seq:n.oldest_seq||t.oldest_seq,newest_seq:t.newest_seq,has_older:n.has_older,has_newer:t.has_newer},`prepend`),r=!0,Tr(`older`,`settling`)}catch(t){$()===e&&B(gt,t instanceof Error?t.message:`Could not load older messages`)}finally{Dt.delete(n),$()===e&&!r&&Tr(`older`,`idle`)}}async function Nr(){let e=$(),t=_(Et).get(e),n=`${e}:newer`;if(At!==`idle`){Nt=!0;return}if(!e||Dt.has(n))return;if(!t||t.newest_seq<=0){await pr();return}Dt.add(n),Nt=!1,Tr(`newer`,`loading`);let r=!1;try{let n=await W(_r(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){yr(e,{...t,has_newer:n.has_newer},`append`),r=!0,Tr(`newer`,`settling`);return}yr(e,{messages:Dr(_(J),n.messages),oldest_seq:t.oldest_seq,newest_seq:n.newest_seq||t.newest_seq,has_older:t.has_older,has_newer:n.has_newer},`append`),r=!0,Tr(`newer`,`settling`)}catch(t){$()===e&&B(gt,t instanceof Error?t.message:`Could not load newer messages`)}finally{Dt.delete(n),$()===e&&!r&&Tr(`newer`,`idle`)}}function Pr(){let e=_(Y),t=$();if(!e||!t)return Promise.resolve();let n=St.catch(()=>void 0).then(async()=>{if(_(Y)!==e||$()!==t)return;let n=_(Et).get(t);if(!n||n.newest_seq<=0){await pr();return}let r=await W(_r(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(_(Y)!==e||$()!==t)return;let i=_(Et).get(t);if(!i)return;let a=r.newest_seq||n.newest_seq,o=a>i.newest_seq?r.has_newer:an&&(n=r.channel_seq));return n}function Lr(e,t=_(J)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function Rr(e,t){return e&&t.unread_count||0}async function zr(e,t){let n=_(K).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){B(K,_(K).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function Br(e,t){let n=_(q).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){B(q,_(q).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function Vr(e){let t=_(Et).get(e)?.newest_seq||0,n=_(K).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),Ir(e),t);let r=_(q).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),Lr(e),t):0}function Hr(e){let t=_(Et).get(e);return!t||t.has_newer?0:_(K).find(t=>t.id===e)?Ir(e):_(q).find(t=>t.id===e)?Lr(e):0}function Ur(e={}){if(!e.all&&Date.now()=0&&!ri(t,e))return}let n=e.all?Math.max(e.seq||0,Vr(t)):e.seq||Hr(t);if(!(n<=0)){if(_(q).some(e=>e.id===t)){Br(t,n),e.all&&Wr(t,n);return}_(K).some(e=>e.id===t)&&(zr(t,n),e.all&&Wr(t,n))}}function Wr(e,t){Rt.delete(e),Rt=new Map(Rt),B(K,_(K).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),B(q,_(q).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function Gr(e){let t=_(K).find(t=>t.id===e);return t?t.last_read_seq||0:_(q).find(t=>t.id===e)?.last_read_seq||0}function Kr(e){let t=_(K).find(t=>t.id===e);if(t)return Rr(e,t)>0?t.last_read_seq||0:-1;let n=_(q).find(t=>t.id===e);return n&&Rr(e,n)>0?n.last_read_seq||0:-1}function qr(e,t,n){for(let r of t){if(!ui(r,e)||r.parent_message_id||r.author?.id===_(G)?.id||r.author_id===_(G)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function Jr(e,t){if(!e)return;let n=ni(e);if(Rr(e,n)<=0){Rt.delete(e),Rt=new Map(Rt);return}let r=n.last_read_seq||0,i=Rt.get(e);if(i?.boundarySeq===r&&i.since||!ri(e,r))return;let a=qr(e,t,r);a&&(Rt=new Map(Rt).set(e,{boundarySeq:r,since:ai(a.created_at)}))}function Yr(e,t,n){if(!e||!n)return;let r=Rt.get(e);r?.boundarySeq===t&&r.since||(Rt=new Map(Rt).set(e,{boundarySeq:t,since:ai(n)}))}function Xr(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function Zr(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}function Qr(e,t){if(e.type!==`message.created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!_(dt)||document.visibilityState===`visible`&&t)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===_(G)?.id)return;let{channelID:a,dmID:o}=Zr(e),s=_(K).find(e=>e.id===a),c=ma(i)?.display_name||`ClickClack`,l=s?`#${s.name}`:`Direct message`,u=typeof n.body==`string`?n.body:`New message`,d=typeof n.message_id==`string`?n.message_id:`${a||o}:${e.seq||Date.now()}`;if(Be){Be.notify({body:$r(u),route:Vn(a||o),tag:`clickclack:${d}`,title:`${c} in ${l}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${c} in ${l}`,{body:$r(u),tag:`clickclack:${d}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),a?fr(a):o&&Qi(o)}}catch{}}function $r(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function ei(e){if(e.type!==`message.created`)return!1;let t=Xr(e);if(t<=0)return!1;let{channelID:n,dmID:r}=Zr(e);return n?t<=(_(K).find(e=>e.id===n)?.last_seq||0):r?t<=(_(q).find(e=>e.id===r)?.last_seq||0):!1}async function ti(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||_(q).some(e=>e.id===n)?!1:(await Yi(),_(q).some(e=>e.id===n))}function ni(e){return _(K).find(t=>t.id===e)||_(q).find(t=>t.id===e)||{}}function ri(e,t,n=_(Et)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function ii(e,t,n=_(Et)){let r=Rt.get(e);if(r?.boundarySeq===t)return r.since;if(!ri(e,t,n))return``;let i=qr(e,_(J),t);return i?ai(i.created_at):``}function ai(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function oi(){if(!_(Ht)||!_(wt))return;let e=_(wt).captureState();e&&Tt.set(_(Ht),e)}function si(e,t){let n=e!==_(Ht);B(Ut,Tt.get(e));let r=_(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&ui(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e])),o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&hi.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=_(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&ui(t,e));B(J,l.length>0?[...o,...l]:o),B(Ht,e),Jr(e,_(J)),n&&(B(tn,[]),B(rn,[]),Vt())}function ci(e,t=`append`){let n=$(),r=n?_(Et).get(n):void 0;if(!n||!r){B(J,e);return}let i=e.filter(e=>ui(e,n)),a=kr(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=li(a[0])>li(i[0]),u=li(a[a.length-1])0)&&await mr(),await di(),Ur({all:!0}),await di()}catch(e){B(gt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let hi=new Map;function gi(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function _i(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,author_id:_(G)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:_(G)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function vi(){let e=_(Ue).trim();if(!e)return;if(_(m)&&!_(x)){B(gt,`This conversation has no active recipient`);return}if(!_(X)&&!_(Z)){B(gt,`pick or create a channel`);return}Vt(),B(Ae,null);let t=++gn,n=$(),r=_(Z)?`dm`:`channel`,i=_(Xt)&&_(Zt)===r?_(Xt):null;if(_(X)&&!_(Z)&&!_(nt)&&!i){let r=vu(e),i=r?yu(_(Oe),r.command):void 0;if(r&&i){B(Ue,``),await yi(_(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:_(nt)||void 0,workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0,viewKey:$()};B(Ue,``),i&&Pi(),B(nt,null),await xi(a)}async function yi(e,t,n,r,i,a){try{let r=await bu(e,t,n);if(a!==gn||$()!==i)return;r.text&&r.response_type!==`in_channel`&&B(Ae,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==gn||$()!==i)return;B(Ae,{kind:`error`,text:e instanceof _e&&e.message?bi(e):`${t} failed`}),_(Ue).trim()||B(Ue,r)}}function bi(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}async function xi(e,t,n){let r=t??gi(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&_(Ft);hi.set(r,e);let c=_i(r,e,a);t?ci(_(J).map(e=>e.id===a?c:e)):$()===e.viewKey&&(ci([..._(J),c]),pi());let l=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,u={body:e.body,nonce:r};e.quotedMessageID&&(u.quoted_message_id=e.quotedMessageID);try{let t=(await W(l,{method:`POST`,body:JSON.stringify(u)})).message;if(e.upload)try{await W(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};ci(_(J).map(e=>e.id===a?i:e));return}hi.delete(r),_(J).findIndex(e=>e.id===a)>=0?ci(_(J).map(e=>e.id===a?t:e)):_(J).some(e=>e.id===t.id)?ci(_(J).map(e=>e.id===t.id?t:e)):ui(t,$())&&!_(J).some(e=>e.id===t.id)&&ci([..._(J),t]),$()===e.viewKey&&o&&(s&&await mr(),await pi(),Ur({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),ci(_(J).map(e=>e.id===a?{...e,status:`failed`}:e))}}function Si(e){if(!e.nonce)return;let t=hi.get(e.nonce);if(!t){Ci(e);return}xi({...t,viewKey:t.viewKey},e.nonce,e.id)}function Ci(e){e.nonce&&hi.delete(e.nonce),ci(_(J).filter(t=>t.id!==e.id))}function wi(e){!e.id||e.deleted_at||_(yn).has(e.id)||(B(bn,e),B(xn,``))}async function Ti(){let e=_(bn);if(!(!e||_(yn).has(e.id))){B(yn,new Set([..._(yn),e.id])),B(xn,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;ci(_(J).map(e=>e.id===t.id?{...e,...t}:e)),B(we,_(we).map(e=>e.id===t.id?{...e,...t}:e)),_(Q)?.id===t.id&&B(Q,{..._(Q),...t}),_(Xt)?.id===t.id&&Pi(),B(gt,``),B(bn,null)}catch(e){B(xn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(_(yn));t.delete(e.id),B(yn,t)}}}async function Ei(e){Hi(),await Di(e.id,e),_(Y)&&_(Q)?.route_id&&window.location.pathname!==Bn(_(Y),_(Q).id)&&await Wn(_(Y),_(Q).id)}async function Di(e,t,n=()=>!0){B(Ne,null),B(Pe,``),B(Ee,null),t&&(B(Q,t),B(en,`thread`));let r=await W(`/api/messages/${e}/thread`);if(!n())return!1;let i={...r.root,thread_state:r.thread_state};return B(Q,i),B(en,`thread`),ci(_(J).map(e=>e.id===i.id?i:e)),B(we,r.replies),B(Te,r.thread_state),!0}async function Oi(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};ci(_(J).map(e=>e.id===n.id?n:e))}function ki(e,t){let n=_(J).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function Ai(){let e=_(Ge).trim();if(!e||!_(Q))return;if(_(m)&&!_(x)){B(gt,`This direct message has no active recipient`);return}let t=_(Xt)&&_(Zt)===`thread`?_(Xt):null;B(Ge,``);let n={body:e,nonce:gi()};t&&(n.quoted_message_id=t.id);let r=await W(`/api/messages/${_(Q).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&Pi(),_(we).some(e=>e.id===r.message.id)||B(we,[..._(we),r.message]),B(Te,r.thread_state)}function ji(e,t){B(Xt,e),B(Zt,t),B(en,t===`thread`?`thread`:`message`)}function Mi(){return _(bn)!==null||_(Me)!==null||_(it)||_(ct)||_(lt)}function Ni(){return _(en)===`thread`&&_(Q)&&_($t)?_($t):_(Qt)}function Pi(){B(Xt,null),B(Zt,null)}async function Fi(e){let t=e.quoted_message_id;if(!t)return;if(_(wt)?.scrollToMessage(t)??!1){await Ri(t);return}let n=await W(`/api/messages/${t}`);ui(n.message,$())&&await Ki(n.message)}async function Ii(){Bt=Date.now()+1200,!(_(A)&&_(wt)?.scrollToDivider(!1))&&await Li()}async function Li(){let e=$();if(!e)return;Bt=Date.now()+1200;let t=Gr(e),n=Rt.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await qi(r),await s(),_(wt)?.scrollToDivider(!1))}async function Ri(e){await s();let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);t&&(t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500))}async function zi(){if(!_(Y)||!_(Ze).trim()){Hi();return}let e=_(Ze).trim();_(Ne)&&Sa(),(_(Q)||_(Ee))&&ka();let t=++tt,n=_(Z)&&_(m)?{workspaceID:_(Y),channelID:``,directConversationID:_(Z),label:`@${ot(_(m),_(G)?.id)}`}:_(X)&&_(f)?{workspaceID:_(Y),channelID:_(X),directConversationID:``,label:`#${_(f).name}`}:{workspaceID:_(Y),channelID:``,directConversationID:``,label:``};B($e,!1),et=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};B(Qe,r);try{let e=await W(`/api/search?${Bi(r).toString()}`);if(t!==tt)return;B(Qe,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==tt)return;B(Qe,{...r,state:`error`,error:e instanceof _e?e.message:`Search is unavailable right now.`})}}function Bi(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function Vi(){let e=_(Qe);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=tt;B(Qe,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${Bi(e,e.nextCursor).toString()}`);if(t!==tt||!_(Qe))return;let r=new Set(_(Qe).results.map(e=>e.id));B(Qe,{..._(Qe),results:[..._(Qe).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==tt||!_(Qe))return;B(Qe,{..._(Qe),loadingMore:!1,moreError:e instanceof _e?e.message:`Couldn’t load more results.`})}}function Hi(){tt+=1,B(Ze,``),B(Qe,null),B($e,!1),et=0}function Ui(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=_(q).find(t=>t.id===e.direct_conversation_id);return t?`@${ot(t,_(G)?.id)}`:`Direct message`}return``}async function Wi(e){let t=_(Qe),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!_(Y)||!n)&&(B(Qe,{...t,activeResultID:e.id}),$()!==n&&(await Wn(_(Y),n),await Qn(_(Y),n)),$()===n)){if(e.parent_message_id){et=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=tt;B($e,!0);try{if(!await Di(e.thread_root_id,void 0,()=>t===tt&&_($e)&&_(Qe)?.activeResultID===e.id))return}catch(e){throw B($e,!1),await s(),e}_(Q)?.route_id&&await Wn(_(Y),_(Q).id),await s(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await Ri(e.id);return}if(e.channel_seq&&e.channel_seq>0){await qi(e.channel_seq,e.id);return}await pr()}}async function Gi(){if(!_(Qe)||!_($e))return;let e=$();_(Zt)===`thread`&&Pi(),B(Q,null),B(Ee,null),B(en,`message`),B(we,[]),B($e,!1),_(Y)&&e&&await Wn(_(Y),e),await s();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=et),(_(Qe).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(_(Qe).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function Ki(e){let t=e.channel_seq||0;if(t<=0){await pr();return}await qi(t,e.id)}async function qi(e,t=``){let n=$();if(!n)return;t&&Tt.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==_(Ht);Er(),r&&B(Gt,!0);try{let r=await W(_r(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;yr(n,vr(r),`around`),await s(),t&&(_(wt)?.scrollToMessage(t),await Ri(t))}finally{$()===n&&B(Gt,!1)}}async function Ji(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!_(Y))return;let r=await Ve(n),i=new FormData;i.set(`workspace_id`,_(Y)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await W(`/api/uploads`,{method:`POST`,body:i});B(nt,a.upload),t.value=``}async function Yi(e=_(Y)){let t=++un;if(!e){B(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t!==un||e!==_(Y)||B(q,n.conversations)}function Xi(e){B(q,_(q).some(t=>t.id===e.id)?_(q).map(t=>t.id===e.id?e:t):[..._(q),e])}async function Zi(e){let t=e.trim();t&&(await $i(t),B(Xe,``),B(lt,!1))}async function Qi(e){B(Jt,!1);let t=Bn(_(Y),e);e===_(Z)&&!_(X)&&window.location.pathname===t||await Wn(_(Y),e)}async function $i(e){let t=e.trim();if(!_(Y)||!t)return;let n=_(q).find(e=>e.members.some(e=>e.id===t));if(n){B(Jt,!1),await Wn(_(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:_(Y),member_ids:[t]})});Xi(r.conversation),B(Jt,!1),await Wn(_(Y),r.conversation.id)}function ea(){vn&&clearTimeout(vn),vn=void 0,B(_n,null)}function ta(e,t){ea(),B(_n,{conversation:e,restoreRoute:t,title:ot(e,_(G)?.id)}),vn=setTimeout(()=>{B(_n,null),vn=void 0},8e3)}async function na(){let e=_(_n);if(e){ea();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});Xi(t.conversation),e.restoreRoute&&await Wn(e.conversation.workspace_id,t.conversation.id),B(gt,`direct message restored`)}catch(e){B(gt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function ra(e){if(!e)return;let t=_(q).find(t=>t.id===e),n=_(Z)===e;if(await W(`/api/dms/${e}`,{method:`DELETE`}),B(q,_(q).filter(t=>t.id!==e)),t&&ta(t,n),n){Gn();let e=_(K)[0]?.id||``;B(Z,``),B(X,e),e&&Zn(_(Y),e),await Wn(_(Y),e),await pr()}}function ia(){if(mn+=1,xt?.close(),xt=null,B(bt,!1),!_(Y))return;let e=_(Y);xt=jt({workspaceID:e,onEvent:e=>{oa(e).catch(e=>{B(gt,e instanceof Error?e.message:`Could not process realtime event`)})},onStatusChange:t=>{B(bt,t),t&&aa(e).catch(t=>{e===_(Y)&&_(gt)===`ready`&&B(gt,t instanceof Error?t.message:`Could not refresh after reconnect`)})}})}async function aa(e){let t=++mn;if(!e||e!==_(Y))return;let n=_(Q)?.id||``,r=_(Ee)?.kind===`bot`?_(Ee).id:``;if(B(tn,[]),B(rn,[]),await Promise.all([Yi(e),ar(e),or(e),sr(e)]),!(t!==mn||e!==_(Y))&&(await pr(),!(t!==mn||e!==_(Y))&&(n&&_(Q)?.id===n&&await Di(n,_(Q)),r&&_(Ee)?.id===r))){let e=ma(r);B(Ee,e&&!e.deleted_at?e:null)}}async function oa(e){if(e.type===`typing.started`||e.type===`typing.stopped`){da(e);return}if(e.type===`agent.progress`){fa(e);return}if(e.type===`channel.read`||e.type===`dm.read`){la(e);return}if(e.type===`bot_command.updated`){e.workspace_id===_(Y)&&await sr(e.workspace_id);return}if(e.type===`bot.deleted`){e.workspace_id===_(Y)&&await sa(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===_(Y)&&await ca(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===_(Y)){await ir(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===_(Y)){let t=_(Z),n=e.payload.user_id===_(G)?.id;if(await Rn(),await ar(),await ir(!1,n,n),n){if(await Yi(),t&&(_(q).some(e=>e.id===t)?(B(Z,t),B(X,``)):B(Z,``)),!_(X)&&!_(Z)){yr(``,vr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await pr()}return}if(ei(e))return;let t=e.channel_id===_(X)||e.payload.direct_conversation_id===_(Z);if(Qr(e,t),e.type===`message.created`&&!t&&(await ti(e)||ua(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&hi.has(t))return;let n=fi();e.type===`message.created`&&!n?(Bt=Date.now()+1200,wr($())):e.type===`message.created`?await Pr():await pr(),e.type===`message.created`&&ua(e,n),e.type===`message.created`&&n&&(await di(),Ur({all:!0,seq:Xr(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&ki(n,e)?_(Q)?.id===n?await Di(n,_(Q)):await Oi(n):e.type!==`thread.reply_created`&&_(Q)&&n===_(Q).id&&await Di(_(Q).id,_(Q))}async function sa(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;B(q,_(q).map(e=>({...e,members:e.members.map(i)}))),B(De,_(De).filter(e=>e.user.id!==t)),B(Oe,_(Oe).filter(e=>e.bot_user_id!==t)),B(ke,_(ke).filter(e=>e.bot.id!==t)),B(tn,_(tn).filter(e=>e.userID!==t)),_(Qe)&&B(Qe,{..._(Qe),results:_(Qe).results.map(e=>({...e,author:i(e.author)}))}),_(Ee)?.id===t&&B(Ee,null);let a=_(Q)?.id||``;await Promise.all([Yi(),ar(),or(),sr()]),await pr(),a&&await Di(a)}async function ca(e){let t=e.payload.bot_user_id||``;t&&(B(De,_(De).filter(e=>e.user.id!==t)),B(Oe,_(Oe).filter(e=>e.bot_user_id!==t)),B(ke,_(ke).filter(e=>e.bot.id!==t)),_(Ee)?.id===t&&B(Ee,null),await Promise.all([Yi(e.workspace_id),ar(e.workspace_id),or(e.workspace_id),sr(e.workspace_id)]))}function la(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==_(G)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;B(K,_(K).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;B(q,_(q).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function ua(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===_(G)?.id||n.parent_message_id)return;let a=Xr(e),{channelID:o,dmID:s}=Zr(e);if(o){let n=o===_(X)&&!_(Z),r=n?t??fi():!1,i=_(K).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Yr(o,i?.last_read_seq||0,e.created_at),B(K,_(K).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===_(Z),r=n?t??fi():!1,i=_(q).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&Yr(s,i?.last_read_seq||0,e.created_at),B(q,_(q).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function da(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===_(G)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&r===_(X)||_(Z)&&i===_(Z)))return;if(e.type===`typing.stopped`){B(tn,_(tn).filter(e=>e.userID!==n));return}let a=ma(n),o=_(tn).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+Os}),B(tn,o),ha()}function fa(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(_(X)&&n===_(X)||_(Z)&&r===_(Z)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;if(a===`clear`){B(rn,_(rn).filter(e=>e.turnId!==i));return}let o=t.line,s=o&&typeof o.id==`string`?o.id:``;if(!s)return;let c=o&&typeof o.text==`string`?o.text:``,l=o&&typeof o.title==`string`?o.title:``,u=c||l,d=o&&typeof o.tool_name==`string`?o.tool_name:typeof o?.toolName==`string`?o.toolName:void 0,f=o&&typeof o.status==`string`?o.status:void 0,p=o&&typeof o.kind==`string`?o.kind:void 0,m=_(rn).find(e=>e.turnId===i),h=m?.lines.find(e=>e.id===s),g={id:s,kind:p??h?.kind??`lifecycle`,text:u||h?.text||``,toolName:d??h?.toolName,status:f??h?.status,finalized:a===`finalize`||(h?.finalized??!1)};if(!h&&!g.text&&!g.toolName)return;let v=typeof t.user_id==`string`?t.user_id:``,y=Date.now()+js;if(!m)B(rn,[..._(rn),{turnId:i,userId:v,lines:[g],expiresAt:y}]);else{let e=m.lines.some(e=>e.id===s)?m.lines.map(e=>e.id===s?g:e):[...m.lines,g];B(rn,_(rn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}pa()}function pa(){an||=window.setInterval(()=>{let e=Date.now(),t=_(rn).filter(t=>t.expiresAt>e);t.length!==_(rn).length&&B(rn,t),t.length===0&&an&&(window.clearInterval(an),an=void 0)},1e3)}function ma(e){if(_(G)?.id===e)return _(G);let t=_(J).find(t=>t.author?.id===e)?.author;if(t)return t;let n=_(we).find(t=>t.author?.id===e)?.author;if(n)return n;if(_(Q)?.author?.id===e)return _(Q).author;let r=_(De).find(t=>t.user.id===e)?.user;if(r)return r;for(let t of _(q)){let n=t.members.find(t=>t.id===e);if(n)return n}}function ha(){nn||=window.setInterval(()=>{let e=Date.now(),t=_(tn).filter(t=>t.expiresAt>e);t.length!==_(tn).length&&B(tn,t),t.length===0&&nn&&(window.clearInterval(nn),nn=void 0)},1e3)}function ga(){_(Y)&&(!_(X)&&!_(Z)||zt({workspaceID:_(Y),channelID:_(X)||void 0,directConversationID:_(Z)||void 0}))}function _a(e){!e||e.deleted_at||(Hi(),B(Ne,null),B(Pe,``),B(Q,null),B(Ee,e),(_(o)===`owner`||_(o)===`moderator`)&&!_(De).some(t=>t.user.id===e.id)&&ar())}function va(e){if(e.key===`Escape`&&_(Xt)&&_(Zt)!==`thread`){e.preventDefault(),Pi();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),vi())}function ya(e){if(e.key===`Escape`&&_(Xt)&&_(Zt)===`thread`){e.preventDefault(),Pi();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ai())}function ba(e,t){B(Me,{url:e,title:t})}function xa(e){B(Fe,document.activeElement instanceof HTMLElement?document.activeElement:null),Ie=_(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,B(Pe,_(Wt)),B(Ne,e),s().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Sa(){let e=_(Fe),t=_(Ne)?.id||``;B(Ne,null),B(Pe,``),B(Fe,null),s().then(()=>{if(Ie!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=Ie)}if(Ie=null,e?.isConnected){e.focus({preventScroll:!0});return}(_(Q)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function Ca(e,t){for(let e of He)e.inert=!1;if(He.clear(),!(!e||!_(Re)||!t))for(let e of _(Re).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,He.add(e))}function wa(e){if(!_(Ne)||!_(Yt)||e.key!==`Tab`||!_(Le))return;let t=Array.from(_(Le).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),_(Le).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!_(Le).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!_(Le).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function Ta(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),ba(Ke(t),t.alt||`Image`))}function Ea(e){let t=_(Ue)&&!_(Ue).endsWith(` -`)?` -`:``;B(Ue,`${_(Ue)}${t}${e}`)}function Da(e,t=e){Ea(`${e}${e==="```"?` -code -`:`text`}${t}`)}function Oa(e,t){Ea(`![${t}](${e})`),B(rt,!1),B(ut,``)}function ka(){if(_(Ne)){Sa();return}let e=_(Q)!==null,t=_($e),n=$();_(Zt)===`thread`&&Pi(),B(Q,null),B(Ee,null),B(en,`message`),B(we,[]),t&&Hi(),(e||t)&&_(Y)&&n&&Wn(_(Y),n)}function Aa(){_(se)?ka():B(gt,`pick a message to open its thread`)}function ja(e){if(wa(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`))return;if(Mi())Ma();else if(_(Jt)){e.preventDefault(),Na();return}else if(_(Ne)){e.preventDefault(),ka();return}else if(_($e)){e.preventDefault(),ka();return}else if(_(ce)){e.preventDefault(),Hi();return}else if(_(Xt)){e.preventDefault(),Pi();return}else{e.preventDefault(),mi();return}}if(_(Jt)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}kt(e,{authRequired:_(_t),isModalOpen:()=>Mi()||_(Jt),messageInput:_(Qt),replyInput:_($t),target:Ni})}}function Ma(){_(bn)&&_(yn).has(_(bn).id)||(B(bn,null),B(xn,``),B(Me,null),B(it,!1),B(ct,!1),B(lt,!1))}function Na(){B(Jt,!1)}function Pa(){if(_(Yt)){B(Jt,!_(Jt));return}B(qt,!_(qt))}y(()=>(_(Ce),_(Y)),()=>{B(a,_(Ce).find(e=>e.id===_(Y)))}),y(()=>_(a),()=>{B(o,_(a)?.role||``)}),y(()=>_(o),()=>{B(c,_(o)===`owner`)}),y(()=>(_(Ee),_(De)),()=>{B(u,_(Ee)?_(De).find(e=>e.user.id===_(Ee)?.id):void 0)}),y(()=>(_(K),_(X)),()=>{B(f,_(K).find(e=>e.id===_(X)))}),y(()=>(_(q),_(Z)),()=>{B(m,_(q).find(e=>e.id===_(Z)))}),y(()=>_(m),()=>{B(x,_(m)?.can_send??!0)}),y(()=>(_(Z),_(X)),()=>{B(Wt,_(Z)||_(X)||``)}),y(()=>_(Wt),()=>{cr(_(Wt))}),y(()=>(_(X),_(ke),_(m)),()=>{B(C,_(X)?_(ke):_(m)?_(ke).filter(e=>_(m)?.members?.some(t=>t.id===e.bot.id)):[])}),y(()=>(_(Z),_(q),_(X),_(K)),()=>{B(E,_(Z)?_(q).find(e=>e.id===_(Z))||{}:_(X)&&_(K).find(e=>e.id===_(X))||{})}),y(()=>(_(Wt),_(E)),()=>{B(D,Rr(_(Wt),_(E)))}),y(()=>(_(gt),_(K),_(q)),()=>{B(O,_(gt)===`ready`?_(K).reduce((e,t)=>e+(t.unread_count||0),0)+_(q).reduce((e,t)=>e+(t.unread_count||0),0):0)}),y(()=>_(O),()=>{Be?.setUnreadCount(_(O))}),y(()=>_(cn),()=>{Be&&_(cn)&&typeof window<`u`&&Be.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),y(()=>(_(D),_(E)),()=>{B(k,_(D)>0&&_(E).last_read_seq||0)}),y(()=>(_(D),_(Wt),_(k),_(Et)),()=>{B(A,_(D)>0&&ri(_(Wt),_(k),_(Et)))}),y(()=>(_(D),_(Wt),_(k),_(Et)),()=>{B(j,_(D)>0?ii(_(Wt),_(k),_(Et)):``)}),y(()=>(_(J),_(ft),_(pt),_(on)),()=>{B(P,yt(_(J),{hideCommentary:_(ft),hideToolCalls:_(pt)},_(on)))}),y(()=>_(rn),()=>{B(ne,_(rn).some(e=>e.lines.some(e=>!e.finalized)))}),y(()=>(_(Ne),_(Pe),_(Wt)),()=>{_(Ne)&&_(Pe)&&_(Pe)!==_(Wt)&&(B(Ne,null),B(Pe,``),B(Fe,null))}),y(()=>(_(Q),_(Ee),_(Ne)),()=>{B(se,_(Q)!==null||_(Ee)!==null||_(Ne)!==null)}),y(()=>(_(Qe),_($e)),()=>{B(ce,_(Qe)!==null&&!_($e))}),y(()=>(_(Yt),_(Ne),_(Le)),()=>{Ca(_(Yt)&&_(Ne)!==null,_(Le))}),y(()=>(_(J),_(q),_(G)),()=>{B(le,st(_(J),_(q),_(G)?.id||``))}),y(()=>(_(G),_(le),_(De),_(m)),()=>{B(je,lr(_(G),_(le),_(De),_(m)))}),y(()=>(_(Zt),_(Xt),_(J)),()=>{_(Zt)===`channel`&&_(Xt)&&!_(J).some(e=>e.id===_(Xt)?.id)&&Pi()}),y(()=>(_(Zt),_(Xt),_(J)),()=>{_(Zt)===`dm`&&_(Xt)&&!_(J).some(e=>e.id===_(Xt)?.id)&&Pi()}),y(()=>(_(Zt),_(Xt),_(Q),_(we)),()=>{_(Zt)===`thread`&&_(Xt)&&_(Q)&&_(Xt).id!==_(Q).id&&!_(we).some(e=>e.id===_(Xt)?.id)&&Pi()}),y(()=>(_(gt),_(G),h(xe()),h(Se()),_(cn)),()=>{_(gt)===`ready`&&_(G)&&zn(xe(),Se())!==_(cn)&&Qn(xe(),Se())}),y(()=>(_(rt),_(ut)),()=>{B(ue,_(rt)?We.filter(e=>{let t=_(ut).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),v(),ie();var Fa=i();n(`1oa2eo8`,e=>{d(e,Su())}),g(`keydown`,V,ja,!0),g(`pointerdown`,V,function(...e){Ct?.apply(this,e)},!0);var Ia=z(Fa),La=e=>{var n=wu(),r=z(n),i=e=>{var t=Cu();b(()=>L(t,`data-platform`,(h(Be),R(()=>Be.platform)))),d(e,t)};N(r,e=>{be&&Be&&e(i)});var a=M(r,2),o=F(a),s=M(F(o),4),c=M(s,2),u=F(c,!0);T(c),T(o),T(a),b(e=>{L(s,`href`,e),l(u,_(vt)||`Any GitHub account can join.`)},[()=>(h(he),R(()=>he(`/api/auth/github/start`)))]),t(`click`,s,Cn),d(e,n)},Ra=e=>{var n=Au(),r=z(n);let i;var s=F(r),g=e=>{{let t=H(()=>(_(m),h(ot),_(G),_(f),R(()=>_(m)?`@${ot(_(m),_(G)?.id)}`:_(f)?`#${_(f).name}`:void 0))),n=H(()=>(_(a),R(()=>_(a)?.name)));lu(e,{get channelTitle(){return _(t)},get connected(){return _(bt)},get platform(){return h(Be),R(()=>Be.platform)},get searchQuery(){return _(Ze)},get sidebarCollapsed(){return _(qt)},get mobileNavOpen(){return _(Jt)},get mobileNavigation(){return _(Yt)},get workspaceName(){return _(n)},onOpenWorkspaceSettings:Mn,onResetSearch:Hi,onSearch:()=>void zi(),onSearchQuery:e=>B(Ze,e),onToggleSidebar:Pa})}};N(s,e=>{be&&Be&&e(g)});var v=M(s,2),y=F(v),S=e=>{d(e,p(`×`))},E=e=>{d(e,Tu())};N(y,e=>{_(Jt)?e(S):e(E,-1)}),T(v);var O=M(v,2),ee=e=>{var n=Eu();t(`click`,n,Na),d(e,n)};N(O,e=>{_(Jt)&&e(ee)});var te=M(O,2);{let e=H(()=>be?`/app`:`/`);Xs(te,{get workspaces(){return _(Ce)},get homeHref(){return _(e)},get selectedWorkspaceID(){return _(Y)},get workspaceName(){return _(qe)},get showWorkspaceCreate(){return _(Kt)},hrefForWorkspace:e=>Bn(e),onSelectWorkspace:e=>void rr(e),onToggleWorkspaceCreate:()=>B(Kt,!_(Kt)),onWorkspaceName:e=>B(qe,e),onCreateWorkspace:()=>void nr()})}var re=M(te,2);{let e=H(()=>(_(a),R(()=>_(a)?.name))),t=H(()=>(_(a),h(ge),R(()=>_(a)?.icon_url?ge(_(a).icon_url):``))),n=H(()=>!be),r=H(()=>(_(_n),R(()=>_(_n)?.title)));bc(re,{get workspaceID(){return _(Y)},get workspaceName(){return _(e)},get workspaceIconURL(){return _(t)},get connected(){return _(bt)},get sidebarCollapsed(){return _(qt)},get showHeader(){return _(n)},get channels(){return _(K)},get directConversations(){return _(q)},get recentPeople(){return _(le)},get currentUser(){return _(G)},get selectedChannelID(){return _(X)},get selectedDirectID(){return _(Z)},get selectedProfile(){return _(Ee)},onToggleCollapse:Pa,hrefForChannel:e=>Bn(_(Y),e),hrefForDirect:e=>Bn(_(Y),e),onSelectChannel:e=>void fr(e),onCreateChannel:()=>B(ct,!0),onSelectDirect:e=>void Qi(e),onCreateDirect:()=>B(lt,!0),onHideDirect:e=>void ra(e),get hiddenDirectTitle(){return _(r)},onUndoHideDirect:()=>void na(),onOpenProfile:_a,onOpenSettings:jn,onOpenWorkspaceSettings:Mn})}var ie=M(re,2),I=F(ie),ae=e=>{{let t=H(()=>(_(a),R(()=>_(a)?.name))),n=H(()=>(_(G),R(()=>_(G)?.id))),r=H(()=>_(Q)!==null);hu(e,{get selectedDirect(){return _(m)},get selectedChannel(){return _(f)},get workspaceName(){return _(t)},get currentUserID(){return _(n)},get searchQuery(){return _(Ze)},get sidePanelOpen(){return _(se)},get threadOpen(){return _(r)},onSearchQuery:e=>B(Ze,e),onSearch:()=>void zi(),onResetSearch:Hi,onToggleThread:Aa,onPinnedItems:()=>B(gt,`no pinned items`)})}};N(I,e=>{be||e(ae)});var V=M(I,2);{let e=H(()=>_(Ot)!==`idle`),t=H(()=>(_(Q),R(()=>_(Q)?.id))),n=H(()=>(_(G),R(()=>_(G)?.id))),r=H(()=>_(c)&&!_(Z));ws(V,{get messages(){return _(P)},get selectedDirect(){return _(m)},get selectedChannel(){return _(f)},get restoreState(){return _(Ut)},get viewKey(){return _(Ht)},get loading(){return _(Gt)},get unreadCount(){return _(D)},get unreadBoundarySeq(){return _(k)},get unreadBoundaryLoaded(){return _(A)},get unreadSince(){return _(j)},get hasOlder(){return _(Pt)},get hasNewer(){return _(Ft)},get loadingOlder(){return _(It)},get loadingNewer(){return _(Lt)},get prepending(){return _(e)},get selectedThreadID(){return _(t)},get currentUserID(){return _(n)},get canDeleteAnyMessage(){return _(r)},get deletingMessageIDs(){return _(yn)},onListRef:e=>B(wt,e),onActivateMessageComposer:()=>B(en,`message`),onInlineImagePointerUp:Ta,onOpenProfile:_a,onReply:ji,onOpenThread:Ei,onJumpToQuote:e=>void Fi(e),onOpenImage:ba,onOpenArtifact:xa,onLoadOlder:Ar,onLoadNewer:e=>jr(e===`wheel`),onJumpToUnread:()=>void Ii(),onHistorySettled:Fr,onReachedBottom:Ur,onMarkRead:e=>{Ur({all:!0,seq:e})},onRetry:Si,onDiscard:Ci,onDeleteMessage:wi})}var de=M(V,2);Fs(de,{get turns(){return _(rn)}});var fe=M(de,2);{let e=H(()=>(_(G),R(()=>_(G)?.id)));As(fe,{get entries(){return _(tn)},get currentUserID(){return _(e)}})}var U=M(fe,2),pe=F(U);Ls(pe,{get active(){return _(ne)}});var me=M(pe,2),he=e=>{var n=Du();let r;var i=F(n),a=F(i,!0);T(i);var o=M(i,2),s=F(o,!0);T(o);var c=M(o,2);T(n),b(()=>{r=w(n,1,`composer-notice`,null,r,{"composer-notice--error":_(Ae).kind===`error`}),l(a,(_(Ae),R(()=>_(Ae).kind===`ephemeral`?`Only visible to you`:`Command failed`))),l(s,(_(Ae),R(()=>_(Ae).text)))}),t(`click`,c,()=>B(Ae,null)),d(e,n)};N(me,e=>{_(Ae)&&e(he)});var W=M(me,2);{let e=H(()=>(_(m),_(x),h(ot),_(G),_(f),R(()=>_(m)&&!_(x)?`No active recipient`:_(m)?`Message ${ot(_(m),_(G)?.id)}`:_(f)?`Message #${_(f).name}`:`Pick a channel to start`))),t=H(()=>!!_(m)&&!_(x)),n=H(()=>_(Xt)&&_(Zt)===(_(Z)?`dm`:`channel`)?_(Xt):null),r=H(()=>_(X)?_(Oe):[]);hn(W,{get value(){return _(Ue)},get placeholder(){return _(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return _(t)},get pendingUpload(){return _(nt)},get replyTarget(){return _(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return _(rt)},get gifQuery(){return _(ut)},get filteredGifs(){return _(ue)},get slashCommands(){return _(r)},get botCommands(){return _(C)},get mentionPeople(){return _(je)},onValue:e=>{let t=_(Ue);B(Ue,e),e.trim()&&e!==t?ga():e.trim()||Vt()},onSubmit:()=>void vi(),onKeydown:va,onFocus:()=>B(en,`message`),onInputRef:e=>B(Qt,e),onUploadFile:Ji,onRemoveUpload:()=>B(nt,null),onClearReply:Pi,onApplyMarkdownWrap:Da,onAppendToComposer:Ea,onToggleGif:()=>B(rt,!_(rt)),onGifQuery:e=>B(ut,e),onPickGif:Oa})}T(U),T(ie);var _e=M(ie,2),ve=e=>{var t=Ou();mo(F(t),{get upload(){return _(Ne)},onClose:Sa}),T(t),oe(t,e=>B(Le,e),()=>_(Le)),b(()=>{t.inert=_(Jt),L(t,`role`,_(Yt)?`dialog`:`complementary`),L(t,`aria-modal`,_(Yt)?`true`:void 0)}),d(e,t)};N(_e,e=>{_(Ne)&&e(ve)});var ye=M(_e,2),xe=e=>{{let t=H(()=>_(Ne)!==null),n=H(()=>_(Jt)||_(Ne)!==null);Xc(e,{get session(){return _(Qe)},get covered(){return _(t)},get inert(){return _(n)},contextFor:Ui,onClose:Hi,onOpenResult:e=>void Wi(e),onLoadMore:()=>void Vi()})}},Se=e=>{var t=ku();let n;var r=F(t),i=e=>{{let t=H(()=>_(Xt)&&_(Zt)===`thread`?_(Xt):null),n=H(()=>(_(m),_(x),R(()=>!!(_(m)&&!_(x))))),r=H(()=>_($e)&&_(Qe)?()=>void Gi():void 0),i=H(()=>(_(G),R(()=>_(G)?.id))),a=H(()=>_(c)&&!_(Z));iu(e,{get root(){return _(Q)},get replies(){return _(we)},get threadState(){return _(Te)},get replyBody(){return _(Ge)},get replyTarget(){return _(t)},get mentionPeople(){return _(je)},get replyDisabled(){return _(n)},onClose:ka,get onBack(){return _(r)},onReplyBody:e=>B(Ge,e),onSubmitReply:()=>void Ai(),onReplyKeydown:ya,onReplyFocus:()=>B(en,`thread`),onReplyInputRef:e=>B($t,e),get currentUserID(){return _(i)},onSetReplyTarget:ji,onClearReply:Pi,get canDeleteAnyMessage(){return _(a)},get deletingMessageIDs(){return _(yn)},onDeleteMessage:wi,onActivateThreadComposer:()=>B(en,`thread`),onInlineImagePointerUp:Ta,onJumpToQuote:e=>void Fi(e),onOpenImage:ba,onOpenArtifact:xa})}},s=e=>{{let t=H(()=>(_(a),R(()=>_(a)?.name)));Nc(e,{get profile(){return _(Ee)},get currentUser(){return _(G)},get workspaceName(){return _(t)},get currentUserRole(){return _(o)},get moderation(){return _(u)},onClose:ka,onEdit:jn,onMessage:e=>void $i(e),onApprove:e=>void ur(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void ur(e,{timeout_minutes:60}),onBlock:e=>void ur(e,{blocked:!0}),onUnblock:e=>void ur(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>B(gt,`status messages are coming soon`)})}},l=e=>{Kl(e,{})};N(r,e=>{_(Q)?e(i):_(Ee)?e(s,1):e(l,-1)}),T(t),b(()=>{n=w(t,1,`thread`,null,n,{open:_(se),covered:_(Ne)!==null}),t.inert=_(Jt)||_(Ne)!==null,L(t,`aria-hidden`,_(Ne)?`true`:void 0),L(t,`aria-label`,_(Ee)?`Profile pane`:`Thread pane`)}),d(e,t)};N(ye,e=>{_(ce)&&_(Qe)?e(xe):e(Se,-1)}),T(r),oe(r,e=>B(Re,e),()=>_(Re));var J=M(r,2),De=e=>{{let t=H(()=>Be!=null);Wl(e,{get user(){return _(G)},get workspaces(){return _(Ce)},get initialSection(){return _(at)},get hideCommentary(){return _(ft)},get hideToolCalls(){return _(pt)},get userAlign(){return _(mt)},get otherAlign(){return _(ht)},get isDesktop(){return _(t)},onUserUpdated:Nn,onHideCommentary:On,onHideToolCalls:kn,onUserAlign:En,onOtherAlign:Dn,onBrowserNotificationsChanged:e=>B(dt,e),onClose:Ma})}};N(J,e=>{_(it)&&_(G)&&e(De)});var ke=M(J,2),Pe=e=>{Bs(e,{get channelName(){return _(Je)},status:``,onChannelName:e=>B(Je,e),onClose:Ma,onCreate:()=>void dr()})};N(ke,e=>{_(ct)&&e(Pe)});var Fe=M(ke,2),Ie=e=>{{let t=H(()=>(_(G),R(()=>_(G)?.id)));Ws(e,{get people(){return _(le)},get currentUserID(){return _(t)},get memberID(){return _(Xe)},onMemberID:e=>B(Xe,e),onClose:Ma,onStart:e=>void Zi(e)})}};N(Fe,e=>{_(lt)&&e(Ie)});var ze=M(Fe,2),Ve=e=>{{let t=H(()=>(_(yn),_(bn),R(()=>_(yn).has(_(bn).id))));Ds(e,{get message(){return _(bn)},get deleting(){return _(t)},get error(){return _(xn)},onClose:Ma,onConfirm:()=>void Ti()})}};N(ze,e=>{_(bn)&&e(Ve)});var He=M(ze,2),We=e=>{go(e,{get url(){return _(Me),R(()=>_(Me).url)},get title(){return _(Me),R(()=>_(Me).title)},onClose:Ma})};N(He,e=>{_(Me)&&e(We)}),b(()=>{i=w(r,1,`shell`,null,i,{"desktop-shell":be,"nav-open":_(Jt),"sidebar-collapsed":_(qt),"thread-open":_(se)&&!_(ce),"search-open":_(ce),"artifact-open":_(Ne)!==null}),L(r,`data-connected`,_(bt)),L(r,`data-app-ready`,_(bt)&&_(gt)===`ready`),L(v,`aria-expanded`,_(Jt)),ie.inert=_(Jt)}),t(`click`,v,()=>B(Jt,!_(Jt))),d(e,n)};N(Ia,e=>{_(_t)?e(La):e(Ra,-1)}),d(e,Fa),te()}U([`click`]);export{xu as n,ju as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DDgJhXUi.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DDgJhXUi.js new file mode 100644 index 00000000..214b4468 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DDgJhXUi.js @@ -0,0 +1,66 @@ +import{B as e,D as t,F as n,H as r,I as i,K as a,N as o,O as s,P as c,Q as l,R as u,S as d,V as f,W as p,Z as m,a as h,b as g,bt as _,ct as v,dt as y,f as b,ft as x,gt as S,h as C,ht as ee,it as w,j as T,nt as E,p as D,rt as te,s as ne,st as O,x as re,y as ie,yt as ae,z as k}from"./CX2IBWVU.js";import"./xihTtKlq.js";import{a as A,i as oe}from"./CRJVHtae.js";var se=`clickclack:color-mode:v1`,ce=`clickclack:board-theme:v1`,le=`clickclack:message-layout:v1`,ue=`system`,de=`signal`,fe=`standard`,pe=[{id:`light`,label:`Light`},{id:`dark`,label:`Dark`},{id:`system`,label:`System`}],me=[{id:`signal`,label:`Signal`,blurb:`Porcelain board, electric cyan`},{id:`ember`,label:`Ember`,blurb:`Warm paper, ember coral`},{id:`moss`,label:`Moss`,blurb:`Sage plate, verdant green`},{id:`iris`,label:`Iris`,blurb:`Violet plate, twilight iris`}],j=[{id:`standard`,label:`Standard`,blurb:`Compact messages with activity attached`},{id:`outlined`,label:`Outlined chains`,blurb:`Every message outlined; agent activity caps its answer`}];function he(e){return e===`light`||e===`dark`||e===`system`}function M(e){return me.some(t=>t.id===e)}function ge(e){return j.some(t=>t.id===e)}function N(){try{let e=window.localStorage.getItem(se);return he(e)?e:ue}catch{return ue}}function _e(){try{let e=window.localStorage.getItem(ce);return M(e)?e:de}catch{return de}}function ve(){try{let e=window.localStorage.getItem(le);return ge(e)?e:fe}catch{return fe}}function P(e){try{e===`system`?document.documentElement.removeAttribute(`data-color-mode`):document.documentElement.setAttribute(`data-color-mode`,e)}catch{}}function F(e){try{e===`signal`?document.documentElement.removeAttribute(`data-board`):document.documentElement.setAttribute(`data-board`,e)}catch{}}function I(e){try{e===`standard`?document.documentElement.removeAttribute(`data-message-layout`):document.documentElement.setAttribute(`data-message-layout`,e)}catch{}}function ye(e){P(e);try{e===`system`?window.localStorage.removeItem(se):window.localStorage.setItem(se,e)}catch{}}function be(e){F(e);try{e===`signal`?window.localStorage.removeItem(ce):window.localStorage.setItem(ce,e)}catch{}}function L(e){I(e);try{e===`standard`?window.localStorage.removeItem(le):window.localStorage.setItem(le,e)}catch{}}function R(){P(N()),F(_e()),I(ve())}var xe=Symbol(`clickclackAnimatedURL`);function Se(e){return e[xe]||e.currentSrc||e.src}function Ce(e){let t=new Map,n=new Map,r=new Map,i=!1,a=e=>{try{let t=new URL(e,window.location.href);if(t.hostname!==`giphy.com`&&!t.hostname.endsWith(`.giphy.com`))return``;let n=t.pathname.match(/\/media\/(?:v1\.[^/]+\/)?([^/]+)\/giphy\.gif$/);if(n)return`${t.origin}/media/${n[1]}/giphy_s.gif`}catch{return``}return``},o=e=>`${e}${e.includes(`?`)?`&`:`?`}cc_replay=${Date.now()}`,s=(e,r,a,s,c,l=!1)=>{let u=t.get(r);u&&window.clearTimeout(u);let d=(n.get(r)||0)+1;n.set(r,d),e.classList.add(`playing`),e.classList.remove(`paused`),a.disabled=!0,a.tabIndex=-1,a.ariaHidden=`true`;let f=!1,p=()=>{if(f||(f=!0,i||n.get(r)!==d))return;let o=window.setTimeout(()=>{i||n.get(r)!==d||(e.classList.remove(`playing`),e.classList.add(`paused`),a.disabled=!1,a.tabIndex=0,a.ariaHidden=`false`,c&&(r.src=c))},2600);t.set(r,o)},m=()=>{r.decode().catch(()=>{}).then(p)};r.addEventListener(`load`,m,{once:!0}),l&&(r.src=o(s)),r.complete&&r.naturalWidth>0&&m()},c=()=>{for(let t of e.querySelectorAll(`img`)){if(t.closest(`.gif-player`)||t.closest(`a`))continue;let e=t.getAttribute(`src`)||t.src;if(!/\.gif(?:$|[?#])/i.test(e))continue;let n=a(e);if(!n)continue;let i=document.createElement(`span`);i.className=`gif-player`;let o=document.createElement(`span`);o.className=`gif-badge`,o.textContent=`GIF`;let c=document.createElement(`button`);c.type=`button`,c.className=`gif-replay`,c.disabled=!0,c.tabIndex=-1,c.ariaHidden=`true`,c.ariaLabel=`Replay GIF ${t.alt||`image`}`,c.title=`Replay GIF`,c.textContent=`↻`;let l=t.parentNode,u=t.nextSibling,d=t.getAttribute(`src`)||t.src;t[xe]=e,l?.insertBefore(i,t),i.append(t,o,c);let f=r=>{r.preventDefault(),r.stopPropagation(),s(i,t,c,e,n,!0)};r.set(t,{wrapper:i,replay:c,originalSrc:d,originalParent:l,originalNextSibling:u,onReplay:f}),c.addEventListener(`click`,f),s(i,t,c,e,n)}},l=new MutationObserver(c);return l.observe(e,{childList:!0,subtree:!0}),c(),{destroy(){i=!0,l.disconnect();for(let e of t.values())window.clearTimeout(e);for(let[e,t]of r)t.replay.removeEventListener(`click`,t.onReplay),delete e[xe],e.src=t.originalSrc,t.wrapper.parentNode?t.wrapper.replaceWith(e):t.originalParent&&e.parentNode!==t.originalParent&&t.originalParent.insertBefore(e,t.originalNextSibling);r.clear(),t.clear(),n.clear()}}}function we(e){let t=e.trim();if(!t)return`?`;let n=t.split(/\s+/);return n.length>=2?(n[0][0]+n[1][0]).toUpperCase():t.slice(0,2).toUpperCase()}function Te(e){if(!e)return`?`;let t=e.trim();return t?t[0].toUpperCase():`?`}function Ee(e){return e?`@${e}`:``}function De(e){return e?.handle||e?.former_handle||``}function z(e){return e?.kind===`bot`&&!!e.deleted_at}function Oe(e,t=`Local User`){let n=e?.display_name||t;return z(e)?`${n} (deleted bot)`:n}function ke(e){let t=0;for(let n=0;n>>0;return t%360}function Ae(e,t){return e.members.find(e=>e.id!==t)||e.members[0]}function je(e,t){let n=e.members.filter(e=>e.id!==t);return(n.length>0?n:e.members).map(e=>Oe(e)).join(`, `)}function Me(e,t,n){let r=new Map;for(let e of t)for(let t of e.members)t.id&&t.id!==n&&!t.deleted_at&&r.set(t.id,t);for(let t of[...e].reverse()){let e=t.author;e?.id&&e.id!==n&&!e.deleted_at&&r.set(e.id,e)}return[...r.values()].slice(0,12)}function Ne(e,t){return e.find(e=>e.members.some(e=>e.id===t))}var B=e=>`clickclack:${e}:cursor`;function Pe(e){let{workspaceID:t,onEvent:n,onStatusChange:r}=e,i=e.reconnectDelayMs??1200,a=null,o,s=!1,c=!1;function l(e){c!==e&&(c=e,r?.(e))}function u(){if(s)return;let e=new URL(A(`/api/realtime/ws`),window.location.href);e.protocol=e.protocol===`https:`?`wss:`:`ws:`,e.searchParams.set(`workspace_id`,t);let r=localStorage.getItem(B(t))||``;r&&e.searchParams.set(`after_cursor`,r);let c=new WebSocket(e);a=c,c.addEventListener(`open`,()=>{a===c&&l(!0)}),c.addEventListener(`message`,e=>{let r;try{r=JSON.parse(String(e.data))}catch{return}Fe(r)&&(r.cursor&&localStorage.setItem(B(t),r.cursor),n(r))}),c.addEventListener(`close`,()=>{a!==c||s||(a=null,l(!1),o=window.setTimeout(u,i))})}return u(),{get connected(){return c},close(){s=!0,l(!1),o&&window.clearTimeout(o),a?.close(),a=null}}}function Fe(e){return typeof e==`object`&&!!e&&typeof e.type==`string`}function Ie(e,t){let n=()=>{let t=e.style.height;e.style.height=`auto`;let n=`${e.scrollHeight}px`;t===n?e.style.height=t:e.style.height=n},r=()=>n(),i=()=>n();return requestAnimationFrame(n),e.addEventListener(`input`,r),window.addEventListener(`resize`,i),{update(){requestAnimationFrame(n)},destroy(){e.removeEventListener(`input`,r),window.removeEventListener(`resize`,i)}}}function Le(e){return A(`/api/uploads/${encodeURIComponent(e.id)}`)}function Re(e){return e.content_type.startsWith(`image/`)}function ze(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var Be=i(`
          `);function Ve(t,n){S(n,!0);let r=h(n,`disabled`,3,!1);var i=Be(),a=E(i),o=w(a,2),s=w(o,2),l=E(s);l.textContent=`<>`,_(s);var u=w(s,2),d=E(u);d.textContent=`{}`,_(u);var f=w(u,2),p=w(f,2);let v;_(i),m(()=>{a.disabled=r(),o.disabled=r(),s.disabled=r(),u.disabled=r(),f.disabled=r(),p.disabled=r(),v=g(p,1,``,null,v,{active:n.showGifPicker})}),e(`click`,a,()=>n.onWrap(`**`)),e(`click`,o,()=>n.onWrap(`_`)),e(`click`,s,()=>n.onWrap("`")),e(`click`,u,()=>n.onWrap("```","\n```")),e(`click`,f,()=>n.onAppend(`[label](https://)`)),e(`click`,p,function(...e){n.onToggleGif?.apply(this,e)}),c(t,i),ee()}k([`click`]);var He=i(``),Ue=i(`
          GIFs
          `);function We(t,n){S(n,!0);var r=Ue(),i=E(r),a=w(E(i),2);b(a),_(i);var l=w(i,2);s(l,21,()=>n.gifs,e=>e.url,(t,r)=>{var i=He(),a=E(i),s=w(a,2),l=E(s,!0);_(s),_(i),m(()=>{D(a,`src`,p(r).url),D(a,`alt`,p(r).title),o(l,p(r).title)}),e(`click`,i,()=>n.onPick(p(r).url,p(r).title)),c(t,i)}),_(l),_(r),m(()=>C(a,n.query)),e(`input`,a,e=>n.onQuery(e.currentTarget.value)),c(t,r),ee()}k([`input`,`click`]);function Ge(e,t=120){if(!e||t<=0)return``;let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:t<=3?`.`.repeat(t):`${n.slice(0,t-3)}...`}function Ke(e){return Oe(e.quoted_author,`Unknown`)}function V(e,t){if(t===e.id)return`Open`;let n=e.thread_state?.reply_count||0;return n===0?`No replies yet`:`${n} ${n===1?`reply`:`replies`}`}function qe(e){let t=e.thread_state?.reply_count||0;return t===0?`Thread`:`${t} ${t===1?`reply`:`replies`}`}function Je(e){let t=e.thread_state?.last_reply_at;return t?Ye(t):``}function Ye(e){let t=new Date(e).getTime();if(!Number.isFinite(t))return``;let n=Math.max(0,Date.now()-t),r=Math.floor(n/6e4);if(r<1)return`now`;if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h`:`${Math.floor(i/24)}d`}function Xe(e){let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let i=(e,t)=>e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate();return i(t,n)?`Today`:i(t,r)?`Yesterday`:new Intl.DateTimeFormat(void 0,{weekday:`long`,month:`long`,day:`numeric`}).format(t)}function Ze(e){let t=[],n=``,r=``,i=0;for(let a of e){let e=new Date(a.created_at),o=e.toDateString(),s=a.author?.id||a.author_id||`local`,c=o!==n,l=s!==r,u=e.getTime()-i>300*1e3;c||l||u||t.length===0?t.push({key:a.id,dayLabel:c?Xe(a.created_at):null,messages:[a],authorName:a.author?.display_name||`Local User`,authorHandle:De(a.author),authorAvatarURL:z(a.author)?``:a.author?.avatar_url||``,authorID:s,authorDeleted:z(a.author),timestamp:a.created_at}):t[t.length-1].messages.push(a),n=o,r=s,i=e.getTime()}return t}var H=i(`
          Replying to
          `);function Qe(t,n){S(n,!0);var r=H(),i=w(E(r),2),a=E(i),s=w(E(a)),l=E(s,!0);_(s),_(a);var u=w(a,2),d=E(u,!0);_(u),_(i);var f=w(i,2);_(r),m((e,t)=>{o(l,e),o(d,t)},[()=>Oe(n.target.author),()=>Ge(n.target.body)]),e(`click`,f,function(...e){n.onClear?.apply(this,e)}),c(t,r),ee()}k([`click`]);var $e=i(` `),et=i(``),tt=i(`
          `),nt=i(``),rt=i(`
          `),it=i(``),at=i(`
          `);function ot(t,n){S(n,!0);let r=h(n,`formClass`,3,`composer`),i=h(n,`pendingUpload`,3,null),b=h(n,`replyTarget`,3,null),te=h(n,`showUpload`,3,!1),ie=h(n,`showToolbar`,3,!1),k=h(n,`showGifPicker`,3,!1),A=h(n,`gifQuery`,3,``),oe=h(n,`filteredGifs`,19,()=>[]),se=h(n,`slashCommands`,19,()=>[]),ce=h(n,`botCommands`,19,()=>[]),le=h(n,`mentionPeople`,19,()=>[]),ue=h(n,`disabled`,3,!1),de=h(n,`onUploadFile`,3,()=>{}),fe=h(n,`onRemoveUpload`,3,()=>{}),pe=h(n,`onClearReply`,3,()=>{}),me=h(n,`onApplyMarkdownWrap`,3,()=>{}),j=h(n,`onAppendToComposer`,3,()=>{}),he=h(n,`onToggleGif`,3,()=>{}),M=h(n,`onGifQuery`,3,()=>{}),ge=h(n,`onPickGif`,3,()=>{}),N=v(null),_e=v(0),ve=v(``),P=v(0),F=y(()=>ye(n.value,p(_e))),I=y(()=>!p(F)||be(p(F))===p(ve)?[]:p(F).kind===`slash`?xe(p(F)):Ce(p(F)));l(()=>(n.onInputRef(p(N)),()=>n.onInputRef(null))),l(()=>{if(p(I).length===0){O(P,0);return}p(P)>=p(I).length&&O(P,0)});function ye(e,t){let n=Math.max(0,Math.min(t||e.length,e.length)),r=e.slice(0,n),i=/(^|\s)([/@][^\s]*)$/.exec(r);if(!i)return null;let a=i[2],o=r.length-a.length;return a.startsWith(`/`)&&o!==0?null:{kind:a.startsWith(`/`)?`slash`:`mention`,start:o,end:n,query:a.slice(1).toLowerCase(),raw:a}}function be(e){return`${e.kind}:${e.start}:${e.raw}`}function L(e=p(N)){O(_e,e?.selectionStart??n.value.length,!0)}function R(e){return e.startsWith(`/`)?e:`/${e}`}function xe(e){let t=e.query,n=se().filter(e=>!e.revoked_at).map(e=>{let t=R(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description||`Slash command`,insertText:`${t} `,sortText:t.slice(1).toLowerCase()}}),r=new Set(n.map(e=>e.label)),i=ce().filter(e=>!r.has(R(e.command))).map(e=>{let t=R(e.command);return{id:e.id,kind:`slash`,label:t,detail:e.description,insertText:`${t} `,sortText:t.slice(1).toLowerCase(),hint:e.args_hint||void 0,source:e.bot.handle?`@${e.bot.handle}`:e.bot.display_name}});return[...n,...i].filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function Se(e){return Ee(e.handle||e.display_name.replace(/\s+/g,``))}function Ce(e){let t=e.query,n=new Set;return le().filter(e=>!e.id||n.has(e.id)?!1:(n.add(e.id),!0)).map(e=>{let t=Se(e),n=`${e.handle||``} ${e.display_name}`.trim().toLowerCase();return{id:e.id,kind:`mention`,label:t,detail:e.kind===`bot`?`${e.display_name} · bot`:e.display_name,insertText:`${t} `,sortText:n}}).filter(e=>!t||e.sortText.includes(t)).sort((e,n)=>Number(!e.sortText.startsWith(t))-Number(!n.sortText.startsWith(t))||e.sortText.localeCompare(n.sortText)).slice(0,6)}function we(e){if(!p(F))return;let t=`${n.value.slice(0,p(F).start)}${e.insertText}${n.value.slice(p(F).end)}`,r=p(F).start+e.insertText.length;n.onValue(t),a().then(()=>{p(N)?.focus(),p(N)?.setSelectionRange(r,r),O(_e,r)})}function De(e){let t=e.currentTarget;n.onValue(t.value),L(t)}function z(){L(),n.onFocus()}function Oe(e){if(p(I).length>0){if(e.key===`ArrowDown`){e.preventDefault(),O(P,(p(P)+1)%p(I).length);return}if(e.key===`ArrowUp`){e.preventDefault(),O(P,(p(P)-1+p(I).length)%p(I).length);return}if(e.key===`Enter`||e.key===`Tab`){e.preventDefault(),we(p(I)[p(P)]);return}if(e.key===`Escape`&&p(F)){e.preventDefault(),O(ve,be(p(F)),!0);return}}n.onKeydown(e)}var ke=at(),Ae=E(ke),je=e=>{We(e,{get gifs(){return oe()},get query(){return A()},get onQuery(){return M()},get onPick(){return ge()}})};T(Ae,e=>{k()&&e(je)});var Me=w(Ae,2),Ne=t=>{var n=tt();s(n,23,()=>p(I),e=>e.id,(t,n,r)=>{var i=et();let a;var s=E(i),l=E(s),d=e=>{c(e,u(`/`))},f=e=>{var t=u();m(e=>o(t,e),[()=>Te(p(n).detail)]),c(e,t)};T(l,e=>{p(n).kind===`slash`?e(d):e(f,-1)}),_(s);var h=w(s,2),v=E(h),y=E(v,!0),b=w(y),x=e=>{var t=$e(),r=E(t,!0);_(t),m(()=>o(r,p(n).hint)),c(e,t)};T(b,e=>{p(n).hint&&e(x)}),_(v);var S=w(v,2),C=E(S,!0);_(S),_(h);var ee=w(h,2),te=E(ee,!0);_(ee),_(i),m(()=>{D(i,`aria-selected`,p(r)===p(P)),a=g(i,1,``,null,a,{active:p(r)===p(P)}),o(y,p(n).label),o(C,p(n).detail),o(te,p(n).source??(p(n).kind===`slash`?`command`:`mention`))}),e(`mousedown`,i,e=>e.preventDefault()),e(`click`,i,()=>we(p(n))),c(t,i)}),_(n),m(()=>D(n,`aria-label`,p(F)?.kind===`slash`?`Slash command suggestions`:`Mention suggestions`)),c(t,n)};T(Me,e=>{p(I).length>0&&e(Ne)});var B=w(Me,2),Pe=E(B),Fe=t=>{var n=rt(),r=w(E(n),2),a=e=>{var t=nt();m(e=>{D(t,`src`,e),D(t,`alt`,i().filename)},[()=>Le(i())]),c(e,t)},s=y(()=>Re(i()));T(r,e=>{p(s)&&e(a)});var l=w(r,2),u=E(l);_(l);var d=w(l,2);_(n),m(e=>o(u,`${i().filename??``} · ${e??``}`),[()=>ze(i().byte_size)]),e(`click`,d,function(...e){fe()?.apply(this,e)}),c(t,n)};T(Pe,e=>{i()&&e(Fe)});var Be=w(Pe,2),He=e=>{Qe(e,{get target(){return b()},get onClear(){return pe()}})};T(Be,e=>{b()&&e(He)});var Ue=w(Be,2),Ge=E(Ue),Ke=t=>{var n=it(),r=E(n);ae(2),_(n),m(()=>r.disabled=ue()),e(`change`,r,function(...e){de()?.apply(this,e)}),c(t,n)};T(Ge,e=>{te()&&e(Ke)});var V=w(Ge,2);x(V),ne(V,e=>O(N,e),()=>p(N)),d(V,(e,t)=>Ie?.(e,t),()=>n.value);var qe=w(V,2);_(Ue);var Je=w(Ue,2),Ye=e=>{Ve(e,{get showGifPicker(){return k()},get disabled(){return ue()},get onWrap(){return me()},get onAppend(){return j()},get onToggleGif(){return he()}})};T(Je,e=>{ie()&&e(Ye)}),_(B),_(ke),m(e=>{g(ke,1,re(r())),C(V,n.value),D(V,`placeholder`,n.placeholder),D(V,`aria-label`,n.ariaLabel),V.disabled=ue(),D(qe,`aria-label`,n.submitLabel),qe.disabled=e},[()=>ue()||!n.value.trim()]),f(`submit`,ke,e=>{e.preventDefault(),!ue()&&n.onSubmit()}),e(`input`,V,De),f(`focus`,V,z),e(`keydown`,V,Oe),e(`keyup`,V,()=>L()),e(`mouseup`,V,()=>L()),f(`select`,V,()=>L()),c(t,ke),ee()}k([`mousedown`,`click`,`change`,`input`,`keydown`,`keyup`,`mouseup`]);function st(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`u`?null:q(BigInt.prototype.toString),Lt=typeof Symbol>`u`?null:q(Symbol.prototype.toString),G=q(Object.prototype.hasOwnProperty),Rt=q(Object.prototype.toString),K=q(RegExp.prototype.test),zt=Bt(TypeError);function q(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return bt(e,t,n)}}function Bt(e){return function(){return xt(e,[...arguments])}}function J(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ot;if(mt&&mt(e,null),!Dt(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ht(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Vt(e){for(let t=0;t/g),an=W(/\${[\w\W]*/g),on=W(/^data-[\-\w.\u00B7-\uFFFF]+$/),sn=W(/^aria-[\-\w]+$/),cn=W(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ln=W(/^(?:\w+script|data):/i),un=W(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dn=W(/^html$/i),fn=W(/^[a-z][.\w]*(-[.\w]+)+$/i),pn=W(/<[/\w!]/g),mn=W(/<[/\w]/g),hn=W(/<\/no(script|embed|frames)/i),gn=W(/\/>/i),X={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},_n=function(){return typeof window>`u`?null:window},vn=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},yn=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},bn=function(e,t,n,r){return G(e,t)&&Dt(e[t])?J(r.base?Y(r.base):{},e[t],r.transform):n};function xn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_n(),t=e=>xn(e);if(t.version=`3.4.12`,t.removed=[],!e||!e.document||e.document.nodeType!==X.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Ut(d,`cloneNode`),p=Ut(d,`remove`),m=Ut(d,`nextSibling`),h=Ut(d,`childNodes`),g=Ut(d,`parentNode`),_=Ut(d,`shadowRoot`),v=Ut(d,`attributes`),y=o&&o.prototype?Ut(o.prototype,`nodeType`):null,b=o&&o.prototype?Ut(o.prototype,`nodeName`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,C,ee=!1,w=0,T=function(){if(w>0)throw zt(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},E=function(e){T(),w++;try{return x.createHTML(e)}finally{w--}},D=function(e){T(),w++;try{return x.createScriptURL(e)}finally{w--}},te=function(){return ee||=(C=vn(u,i),!0),C},ne=n,O=ne.implementation,re=ne.createNodeIterator,ie=ne.createDocumentFragment,ae=ne.getElementsByTagName,k=r.importNode,A=yn();t.isSupported=typeof pt==`function`&&typeof g==`function`&&O&&O.createHTMLDocument!==void 0;let oe=nn,se=rn,ce=an,le=on,ue=sn,de=ln,fe=un,pe=fn,me=cn,j=null,he=J({},[...Gt,...Kt,...qt,...Yt,...Zt]),M=null,ge=J({},[...Qt,...$t,...en,...tn]),N=Object.seal(vt(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_e=null,ve=null,P=Object.seal(vt(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),F=!0,I=!0,ye=!1,be=!0,L=!1,R=!0,xe=!1,Se=!1,Ce=null,we=null,Te=!1,Ee=!1,De=!1,z=!1,Oe=!0,ke=!1,Ae=`user-content-`,je=!0,Me=!1,Ne={},B=null,Pe=J({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Fe=null,Ie=J({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Le=null,Re=J({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),ze=`http://www.w3.org/1998/Math/MathML`,Be=`http://www.w3.org/2000/svg`,Ve=`http://www.w3.org/1999/xhtml`,He=Ve,Ue=!1,We=null,Ge=J({},[ze,Be,Ve],kt),Ke=U([`mi`,`mo`,`mn`,`ms`,`mtext`]),V=J({},Ke),qe=U([`annotation-xml`]),Je=J({},qe),Ye=J({},[`title`,`style`,`font`,`a`,`script`]),Xe=null,Ze=[`application/xhtml+xml`,`text/html`],H=null,Qe=null,$e=n.createElement(`form`),et=function(e){return e instanceof RegExp||e instanceof Function},tt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Qe&&Qe===e)return;(!e||typeof e!=`object`)&&(e={}),e=Y(e),Xe=Ze.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,H=Xe===`application/xhtml+xml`?kt:Ot,j=bn(e,`ALLOWED_TAGS`,he,{transform:H}),M=bn(e,`ALLOWED_ATTR`,ge,{transform:H}),We=bn(e,`ALLOWED_NAMESPACES`,Ge,{transform:kt}),Le=bn(e,`ADD_URI_SAFE_ATTR`,Re,{transform:H,base:Re}),Fe=bn(e,`ADD_DATA_URI_TAGS`,Ie,{transform:H,base:Ie}),B=bn(e,`FORBID_CONTENTS`,Pe,{transform:H}),_e=bn(e,`FORBID_TAGS`,Y({}),{transform:H}),ve=bn(e,`FORBID_ATTR`,Y({}),{transform:H}),Ne=G(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?Y(e.USE_PROFILES):e.USE_PROFILES:!1,F=e.ALLOW_ARIA_ATTR!==!1,I=e.ALLOW_DATA_ATTR!==!1,ye=e.ALLOW_UNKNOWN_PROTOCOLS||!1,be=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,L=e.SAFE_FOR_TEMPLATES||!1,R=e.SAFE_FOR_XML!==!1,xe=e.WHOLE_DOCUMENT||!1,Ee=e.RETURN_DOM||!1,De=e.RETURN_DOM_FRAGMENT||!1,z=e.RETURN_TRUSTED_TYPE||!1,Te=e.FORCE_BODY||!1,Oe=e.SANITIZE_DOM!==!1,ke=e.SANITIZE_NAMED_PROPS||!1,je=e.KEEP_CONTENT!==!1,Me=e.IN_PLACE||!1,me=Wt(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:cn,He=typeof e.NAMESPACE==`string`?e.NAMESPACE:Ve,V=G(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?Y(e.MATHML_TEXT_INTEGRATION_POINTS):J({},Ke),Je=G(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?Y(e.HTML_INTEGRATION_POINTS):J({},qe);let t=G(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?Y(e.CUSTOM_ELEMENT_HANDLING):vt(null);if(N=vt(null),G(t,`tagNameCheck`)&&et(t.tagNameCheck)&&(N.tagNameCheck=t.tagNameCheck),G(t,`attributeNameCheck`)&&et(t.attributeNameCheck)&&(N.attributeNameCheck=t.attributeNameCheck),G(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(N.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),W(N),L&&(I=!1),De&&(Ee=!0),Ne&&(j=J({},Zt),M=vt(null),Ne.html===!0&&(J(j,Gt),J(M,Qt)),Ne.svg===!0&&(J(j,Kt),J(M,$t),J(M,tn)),Ne.svgFilters===!0&&(J(j,qt),J(M,$t),J(M,tn)),Ne.mathMl===!0&&(J(j,Yt),J(M,en),J(M,tn))),P.tagCheck=null,P.attributeCheck=null,G(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?P.tagCheck=e.ADD_TAGS:Dt(e.ADD_TAGS)&&(j===he&&(j=Y(j)),J(j,e.ADD_TAGS,H))),G(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?P.attributeCheck=e.ADD_ATTR:Dt(e.ADD_ATTR)&&(M===ge&&(M=Y(M)),J(M,e.ADD_ATTR,H))),G(e,`ADD_URI_SAFE_ATTR`)&&Dt(e.ADD_URI_SAFE_ATTR)&&J(Le,e.ADD_URI_SAFE_ATTR,H),G(e,`FORBID_CONTENTS`)&&Dt(e.FORBID_CONTENTS)&&(B===Pe&&(B=Y(B)),J(B,e.FORBID_CONTENTS,H)),G(e,`ADD_FORBID_CONTENTS`)&&Dt(e.ADD_FORBID_CONTENTS)&&(B===Pe&&(B=Y(B)),J(B,e.ADD_FORBID_CONTENTS,H)),je&&(j[`#text`]=!0),xe&&J(j,[`html`,`head`,`body`]),j.table&&(J(j,[`tbody`]),delete _e.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw zt(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw zt(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=x;x=e.TRUSTED_TYPES_POLICY;try{S=E(``)}catch(e){throw x=t,e}}else e.TRUSTED_TYPES_POLICY===null?(x=void 0,S=``):(x===void 0&&(x=te()),x&&typeof S==`string`&&(S=E(``)));U&&U(e),Qe=e},nt=J({},[...Kt,...qt,...Jt]),rt=J({},[...Yt,...Xt]),it=function(e,t,n){return t.namespaceURI===Ve?e===`svg`:t.namespaceURI===ze?e===`svg`&&(n===`annotation-xml`||V[n]):!!nt[e]},at=function(e,t,n){return t.namespaceURI===Ve?e===`math`:t.namespaceURI===Be?e===`math`&&Je[n]:!!rt[e]},ot=function(e,t,n){return t.namespaceURI===Be&&!Je[n]||t.namespaceURI===ze&&!V[n]?!1:!rt[e]&&(Ye[e]||!nt[e])},st=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:He,tagName:`template`});let n=Ot(e.tagName),r=Ot(t.tagName);return We[e.namespaceURI]?e.namespaceURI===Be?it(n,t,r):e.namespaceURI===ze?at(n,t,r):e.namespaceURI===Ve?ot(n,t,r):!!(Xe===`application/xhtml+xml`&&We[e.namespaceURI]):!1},ct=function(e){Tt(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw zt(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},lt=function(e){ft(e);let t=h(e);if(t){let e=[];St(t,t=>{Tt(e,t)}),St(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},ut=function(e,n){try{Tt(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Tt(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(Ee||De)try{ct(n)}catch{}else try{n.setAttribute(e,``)}catch{}},dt=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||M[H(i)]))try{e.removeAttribute(i)}catch{}}},ft=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(y?y(e):e.nodeType)===X.element&&dt(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},mt=function(e){if(!R)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=y?y(e):e.nodeType;if(n===X.processingInstruction||n===X.comment&&K(mn,e.data)){try{p(e)}catch{}continue}if(n===X.element){let t=e,n=H(b?b(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},ht=function(e){let t=null,r=null;if(Te)e=``+e;else{let t=At(e,/^[\r\n\t ]+/);r=t&&t[0]}Xe===`application/xhtml+xml`&&He===Ve&&(e=``+e+``);let i=x?E(e):e;if(He===Ve)try{t=new l().parseFromString(i,Xe)}catch{}if(!t||!t.documentElement){t=O.createDocument(He,`template`,null);try{t.documentElement.innerHTML=Ue?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),He===Ve?ae.call(t,xe?`html`:`body`)[0]:xe?t.documentElement:a},gt=function(e){return re.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},_t=function(e){return e=jt(e,oe,` `),e=jt(e,se,` `),e=jt(e,ce,` `),e},yt=function(e){e.normalize();let t=re.call(e.ownerDocument||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;)n.data=_t(n.data),n=t.nextNode();let r=e.querySelectorAll?.call(e,`template`);r&&St(r,e=>{xt(e.content)&&yt(e.content)})},bt=function(e){let t=b?b(e):null;return typeof t!=`string`||H(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},xt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===X.documentFragment}catch{return!1}},Pt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function Ft(e,n,r){e.length!==0&&St(e,e=>{e.call(t,n,r,Qe)})}let It=function(e,t){return!!(R&&e.hasChildNodes()&&!Pt(e.firstElementChild)&&K(pn,e.textContent)&&K(pn,e.innerHTML)||R&&e.namespaceURI===Ve&&t===`style`&&Pt(e.firstElementChild)||e.nodeType===X.processingInstruction||R&&e.nodeType===X.comment&&K(mn,e.data))},Lt=function(e,t){if(!_e[t]&&Vt(t)&&(N.tagNameCheck instanceof RegExp&&K(N.tagNameCheck,t)||N.tagNameCheck instanceof Function&&N.tagNameCheck(t)))return!1;if(je&&!B[t]){let t=g(e),n=h(e);if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=Me?n[i]:f(n[i],!0);t.insertBefore(r,m(e))}}}return ct(e),!0},Rt=function(e,n){if(Ft(A.beforeSanitizeElements,e,null),e!==n&&g(e)===null)return!0;if(bt(e))return ct(e),!0;let r=H(b?b(e):e.nodeName);if(Ft(A.uponSanitizeElement,e,{tagName:r,allowedTags:j}),e!==n&&g(e)===null)return!0;if(It(e,r))return ct(e),!0;if(_e[r]||!(P.tagCheck instanceof Function&&P.tagCheck(r))&&!j[r]){let t=Lt(e,r);return t===!1&&Ft(A.afterSanitizeElements,e,null),t}if((y?y(e):e.nodeType)===X.element&&!st(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&K(hn,e.innerHTML))return ct(e),!0;if(L&&e.nodeType===X.text){let n=_t(e.textContent);e.textContent!==n&&(Tt(t.removed,{element:e.cloneNode()}),e.textContent=n)}return Ft(A.afterSanitizeElements,e,null),!1},q=function(e,t,r){if(ve[t]||R&&t===`patchsrc`||R&&t===`for`&&e!==`label`&&e!==`output`||Oe&&(t===`id`||t===`name`)&&(r in n||r in $e))return!1;let i=M[t]||P.attributeCheck instanceof Function&&P.attributeCheck(t,e);if(!(I&&K(le,t))&&!(F&&K(ue,t))){if(!i){if(!(Vt(e)&&(N.tagNameCheck instanceof RegExp&&K(N.tagNameCheck,e)||N.tagNameCheck instanceof Function&&N.tagNameCheck(e))&&(N.attributeNameCheck instanceof RegExp&&K(N.attributeNameCheck,t)||N.attributeNameCheck instanceof Function&&N.attributeNameCheck(t,e))||t===`is`&&N.allowCustomizedBuiltInElements&&(N.tagNameCheck instanceof RegExp&&K(N.tagNameCheck,r)||N.tagNameCheck instanceof Function&&N.tagNameCheck(r))))return!1}else if(!Le[t]&&!K(me,jt(r,fe,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Mt(r,`data:`)===0&&Fe[e])&&!(ye&&!K(de,jt(r,fe,``)))&&r)return!1}return!0},Bt=J({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Vt=function(e){return!Bt[Ot(e)]&&K(pe,e)},Sn=function(e,t,n,r){if(x&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return E(r);case`TrustedScriptURL`:return D(r)}return r},Cn=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),bt(e)?ct(e):wt(t.removed)}catch{ut(n,e)}},wn=function(e){Ft(A.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||bt(e))return;let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:M,forceKeepAttr:void 0},r=t.length,i=H(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=H(o),u=c,d=o===`value`?u:Nt(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,Ft(A.uponSanitizeAttribute,e,n),d=n.attrValue,ke&&(l===`id`||l===`name`)&&Mt(d,Ae)!==0&&(ut(o,e),d=Ae+d),R&&K(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){ut(o,e);continue}if(l===`attributename`&&At(d,`href`)){ut(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){ut(o,e);continue}if(!be&&K(gn,d)){ut(o,e);continue}if(L&&(d=_t(d)),!q(i,l,d)){ut(o,e);continue}d=Sn(i,l,s,d),d!==u&&Cn(e,o,s,d)}}Ft(A.afterSanitizeAttributes,e,null)},Tn=function(e){let t=null,n=gt(e);for(Ft(A.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(Ft(A.uponSanitizeShadowNode,t,null),Rt(t,e),wn(t),xt(t.content)&&Tn(t.content),(y?y(t):t.nodeType)===X.element){let e=_(t);xt(e)&&(En(e),Tn(e))}Ft(A.afterSanitizeShadowDOM,e,null)},En=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Tn(e.shadow);continue}let n=e.node,r=(y?y(n):n.nodeType)===X.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&H(e)===`template`){let e=n.content;xt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);xt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(Ue=!e,Ue&&(e=``),typeof e!=`string`&&!Pt(e)&&(e=Ht(e),typeof e!=`string`))throw zt(`dirty is not a string, aborting`);if(!t.isSupported)return e;Se?(j=Ce,M=we):tt(n),(A.uponSanitizeElement.length>0||A.uponSanitizeAttribute.length>0)&&(j=Y(j)),A.uponSanitizeAttribute.length>0&&(M=Y(M)),t.removed=[];let c=Me&&typeof e!=`string`&&Pt(e);if(c){mt(e);let t=b?b(e):e.nodeName;if(typeof t==`string`){let n=H(t);if(!j[n]||_e[n])throw lt(e),zt(`root node is forbidden and cannot be sanitized in-place`)}if(bt(e))throw lt(e),zt(`root node is clobbered and cannot be sanitized in-place`);try{En(e)}catch(t){throw lt(e),t}}else if(Pt(e))i=ht(``),a=i.ownerDocument.importNode(e,!0),a.nodeType===X.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),En(a);else{if(!Ee&&!L&&!xe&&e.indexOf(`<`)===-1)return x&&z?E(e):e;if(i=ht(e),!i)return Ee?null:z?S:``}i&&Te&&ct(i.firstChild);let l=c?e:i,u=gt(l);try{for(;o=u.nextNode();)Rt(o,l),wn(o),xt(o.content)&&Tn(o.content)}catch(n){throw c&&(lt(e),St(t.removed,e=>{e.element&&ft(e.element)})),n}if(c)return St(t.removed,e=>{e.element&&ft(e.element)}),L&&yt(e),e;if(Ee){if(L&&yt(i),De)for(s=ie.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(M.shadowroot||M.shadowrootmode)&&(s=k.call(r,s,!0)),s}let d=xe?i.outerHTML:i.innerHTML;return xe&&j[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&K(dn,i.ownerDocument.doctype.name)&&(d=` +`+d),L&&(d=_t(d)),x&&z?E(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};tt(e),Se=!0,Ce=j,we=M},t.clearConfig=function(){Qe=null,Se=!1,Ce=null,we=null,x=C,S=``},t.isValidAttribute=function(e,t,n){Qe||tt({});let r=H(e),i=H(t);return q(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&G(A,e)&&Tt(A[e],t)},t.removeHook=function(e,t){if(G(A,e)){if(t!==void 0){let n=Ct(A[e],t);return n===-1?void 0:Et(A[e],n,1)[0]}return wt(A[e])}},t.removeHooks=function(e){G(A,e)&&(A[e]=[])},t.removeAllHooks=function(){A=yn()},t}var Sn=xn(),Cn=2*1024*1024,wn=64*1024*1024,Tn=24*1024*1024,En={bash:`bash`,c:`c`,cc:`cpp`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,hpp:`cpp`,java:`java`,js:`javascript`,json:`json`,jsx:`javascript`,mjs:`javascript`,py:`python`,rb:`ruby`,rs:`rust`,sh:`bash`,sql:`sql`,toml:`ini`,ts:`typescript`,tsx:`typescript`,xml:`xml`,yaml:`yaml`,yml:`yaml`,zsh:`bash`},Dn=new Set([`application/javascript`,`application/json`,`application/ld+json`,`application/sql`,`application/toml`,`application/typescript`,`application/xml`,`application/x-httpd-php`,`application/x-javascript`,`application/x-sh`,`application/x-yaml`,`text/css`,`text/csv`,`text/javascript`,`text/typescript`,`text/x-python`,`text/x-shellscript`,`text/xml`,`text/yaml`]),On=new Set([`application/vnd.ms-excel.sheet.macroenabled.12`,`application/vnd.ms-excel.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,`application/vnd.openxmlformats-officedocument.spreadsheetml.template`]),kn=new Set([`application/vnd.ms-powerpoint.presentation.macroenabled.12`,`application/vnd.ms-powerpoint.slideshow.macroenabled.12`,`application/vnd.ms-powerpoint.template.macroenabled.12`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`,`application/vnd.openxmlformats-officedocument.presentationml.slideshow`,`application/vnd.openxmlformats-officedocument.presentationml.template`]);function An(e){let t=e.toLowerCase().split(/[\\/]/).pop()||``,n=t.lastIndexOf(`.`);return n>0?t.slice(n+1):``}function jn(e){return(e.content_type||``).split(`;`,1)[0].trim().toLowerCase()}function Mn(e){let t=An(e.filename),n=jn(e);return t===`docx`||n===`application/vnd.openxmlformats-officedocument.wordprocessingml.document`?`docx`:[`xlsx`,`xlsm`,`xltx`,`xltm`].includes(t)||On.has(n)?`spreadsheet`:[`pptx`,`pptm`,`potx`,`potm`,`ppsx`,`ppsm`].includes(t)||kn.has(n)?`presentation`:t===`md`||t===`markdown`||n===`text/markdown`?`markdown`:t===`html`||t===`htm`||n===`text/html`?`html`:t===`pdf`||n===`application/pdf`?`pdf`:En[t]||Dn.has(n)?`code`:t===`txt`||t===`log`||n===`text/plain`||n.startsWith(`text/`)?`text`:`unsupported`}function Nn(e){let t=An(e.filename);if(En[t])return En[t];let n=jn(e);if(n.includes(`json`))return`json`;if(n.includes(`javascript`))return`javascript`;if(n.includes(`typescript`))return`typescript`;if(n.includes(`yaml`))return`yaml`;if(n.includes(`xml`))return`xml`;if(n.includes(`sql`))return`sql`}function Pn(e){switch(e){case`code`:return`Code`;case`text`:return`Text`;case`markdown`:return`Markdown`;case`pdf`:return`PDF`;case`docx`:return`Word document`;case`spreadsheet`:return`Spreadsheet`;case`presentation`:return`Slide text outline`;case`html`:return`Web page`;default:return`File`}}function Fn(e){if(e===`pdf`)return wn;if(e===`spreadsheet`||e===`presentation`)return Tn;if(e===`code`||e===`text`||e===`markdown`||e===`html`)return Cn}function In(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ln=In();function Rn(e){Ln=e}var zn={exec:()=>null};function Bn(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function Z(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Q.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Vn=((e=``)=>{try{return!!RegExp(`(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Bn(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Bn(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Bn(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Bn(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Bn(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Bn(e=>RegExp(`^ {0,${e}}>`))},Hn=/^(?:[ \t]*(?:\n|$))+/,Un=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Wn=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Gn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Kn=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,qn=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Jn=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Yn=Z(Jn).replace(/bull/g,qn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),Xn=Z(Jn).replace(/bull/g,qn).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Zn=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Qn=/^[^\n]+/,$n=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,er=Z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,$n).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),tr=Z(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,qn).getRegex(),nr=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,rr=/|$))/,ir=Z(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|[^\\n]*\\n+|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,rr).replace(`tag`,nr).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),ar=e=>Z(Zn).replace(`hr`,Gn).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,e).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,nr).getRegex(),or=ar(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),sr=ar(/ {0,3}(?:[*+-]|\d{1,9}[.)])[ \t]+[^ \t\n]/),cr={blockquote:Z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,sr).getRegex(),code:Un,def:er,fences:Wn,heading:Kn,hr:Gn,html:ir,lheading:Yn,list:tr,newline:Hn,paragraph:or,table:zn,text:Qn},lr=Z(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,Gn).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,nr).getRegex(),ur={...cr,lheading:Xn,table:lr,paragraph:Z(Zn).replace(`hr`,Gn).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,lr).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,nr).getRegex()},dr={...cr,html:Z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,rr).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:zn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Z(Zn).replace(`hr`,Gn).replace(`heading`,` *#{1,6} *[^ +]`).replace(`lheading`,Yn).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},fr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,pr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mr=/^( {2,}|\\)\n(?!\s*$)/,hr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Vn?"(?`+)[^`]+\k(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),wr=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Tr=Z(wr,`u`).replace(/punct/g,gr).getRegex(),Er=Z(wr,`u`).replace(/punct/g,br).getRegex(),Dr=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Or=Z(Dr,`gu`).replace(/notPunctSpace/g,vr).replace(/punctSpace/g,_r).replace(/punct/g,gr).getRegex(),kr=Z(Dr,`gu`).replace(/notPunctSpace/g,Sr).replace(/punctSpace/g,xr).replace(/punct/g,br).getRegex(),Ar=Z(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,vr).replace(/punctSpace/g,_r).replace(/punct/g,gr).getRegex(),jr=Z(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,gr).getRegex(),Mr=Z(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,vr).replace(/punctSpace/g,_r).replace(/punct/g,gr).getRegex(),Nr=Z(/\\(punct)/,`gu`).replace(/punct/g,gr).getRegex(),Pr=Z(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Fr=Z(rr).replace(`(?:-->|$)`,`-->`).getRegex(),Ir=Z(`^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^`).replace(`comment`,Fr).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Lr=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Rr=Z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Lr).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),zr=Z(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Lr).replace(`ref`,$n).getRegex(),Br=Z(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,$n).getRegex(),Vr=Z(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,zr).replace(`nolink`,Br).getRegex(),Hr=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ur={_backpedal:zn,anyPunctuation:Nr,autolink:Pr,blockSkip:Cr,br:mr,code:pr,del:zn,delLDelim:zn,delRDelim:zn,emStrongLDelim:Tr,emStrongRDelimAst:Or,emStrongRDelimUnd:Ar,escape:fr,link:Rr,nolink:Br,punctuation:yr,reflink:zr,reflinkSearch:Vr,tag:Ir,text:hr,url:zn},Wr={...Ur,link:Z(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Lr).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Lr).getRegex()},Gr={...Ur,emStrongRDelimAst:kr,emStrongLDelim:Er,delLDelim:jr,delRDelim:Mr,url:Z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Hr).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Z(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":`>`,'"':`"`,"'":`'`},Xr=e=>Yr[e];function Zr(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,Xr)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,Xr);return e}function Qr(e){try{e=encodeURI(e).replace(Q.percentDecode,`%`)}catch{return null}return e}function $r(e,t){let n=e.replace(Q.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Q.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length=0&&Q.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(` +`)}function ni(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r0?-2:-1}function ri(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function ii(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function ai(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(` +`).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(` +`)}var oi=class{options;rules;lexer;constructor(e){this.options=e||Ln}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:ti(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=ai(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=ei(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:ei(t[0],` +`),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:ei(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=ei(t[0],` +`).split(` +`),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o;for(o=0;o1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=ri(t[2].split(` +`,1)[0],t[1].length),l=e.split(` +`,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+` +`,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(` +`,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=` +`+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=` +`+l}u=!l.trim(),r+=p+` +`,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items){this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]);let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1;if(!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=ti(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:ei(t[0],` +`),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=$r(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(` +`):[],a={type:`table`,raw:ei(t[0],` +`),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:ei(t[0],` +`),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=ei(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=ni(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),ii(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return ii(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=0,c=r[0][0]===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+n);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(a=[...i].length,r[3]||r[4]){o+=a;continue}else if((r[5]||r[6])&&n%3&&!((n+a)%3)){s+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o+s);let t=[...r[0]][0].length,c=e.slice(0,n+r.index+t+a);if(Math.min(n,a)%2){let e=c.slice(1,-1);return{type:`em`,raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:`strong`,raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},si=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Ln,this.options.tokenizer=this.options.tokenizer||new oi,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Q,block:qr.normal,inline:Jr.normal};this.options.pedantic?(t.block=qr.pedantic,t.inline=Jr.pedantic):this.options.gfm&&(t.block=qr.gfm,this.options.breaks?t.inline=Jr.breaks:t.inline=Jr.gfm),this.tokenizer.rules=t}static get rules(){return{block:qr,inline:Jr}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Q.carriageReturn,` +`),this.blockTokens(e,this.tokens);for(let e=0;e(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=` +`:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(` +`)?``:` +`)+i.raw,r.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(` +`)?``:` +`)+i.raw,n.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)e.includes(r[0].slice(r[0].lastIndexOf(`[`)+1,-1))&&(n=n.slice(0,r.index)+`[`+`a`.repeat(r[0].length-2)+`]`+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+`++`+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+`[`+`a`.repeat(r[0].length-i-2)+`]`+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,o=``,s=1/0;for(;e;){if(e.length(r=n.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);r.type===`text`&&n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e,n,o)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),r.raw.slice(-1)!==`_`&&(o=r.raw.slice(-1)),a=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},ci=class{options;parser;constructor(e){this.options=e||Ln}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Q.notSpaceStart)?.[0],i=e.replace(Q.endingNewline,``)+` +`;return r?`
          `+(n?i:Zr(i,!0))+`
          +`:`
          `+(n?i:Zr(i,!0))+`
          +`}blockquote({tokens:e}){return`
          +${this.parser.parse(e)}
          +`}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
          +`}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t +`+r+` +`}listitem(e){return`
        • ${this.parser.parse(e.tokens)}
        • +`}checkbox({checked:e}){return` `}paragraph({tokens:e}){return`

          ${this.parser.parseInline(e)}

          +`}table(e){let t=``,n=``;for(let t=0;t${r}`,` + +`+t+` +`+r+`
          +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${Zr(e,!0)}`}br(e){return`
          `}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=Qr(e);if(i===null)return r;e=i;let a=`
          `+r+``,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=Qr(e);if(i===null)return Zr(n);e=i;let a=`${Zr(n)}`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:Zr(e.text)}},li=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},ui=class e{options;renderer;textRenderer;constructor(e){this.options=e||Ln,this.options.renderer=this.options.renderer||new ci,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new li}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new ci(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new oi(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new di;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];di.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&di.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return si.lex(e,t??this.defaults)}parser(e,t){return ui.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?si.lex:si.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?ui.parse:ui.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?si.lex:si.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?ui.parse:ui.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let e=`

          An error occurred:

          `+Zr(n.message+``,!0)+`
          `;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return fi.parse(e,t)}$.options=$.setOptions=function(e){return fi.setOptions(e),$.defaults=fi.defaults,Rn($.defaults),$},$.getDefaults=In,$.defaults=Ln,$.use=function(...e){return fi.use(...e),$.defaults=fi.defaults,Rn($.defaults),$},$.walkTokens=function(e,t){return fi.walkTokens(e,t)},$.parseInline=fi.parseInline,$.Parser=ui,$.parser=ui.parse,$.Renderer=ci,$.TextRenderer=li,$.Lexer=si,$.lexer=si.lex,$.Tokenizer=oi,$.Hooks=di,$.parse=$,$.options,$.setOptions,$.use,$.walkTokens,$.parseInline,ui.parse,si.lex;function pi(e){return Sn.sanitize($.parse(e,{async:!1,breaks:!0,gfm:!0}))}function mi(e){return new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(new Date(e))}var hi=i(``);function gi(t,n){var r=hi(),i=E(r),a=w(i,2),s=E(a),l=E(s),u=E(l,!0);_(l);var d=w(l,2),f=E(d),p=w(f,2);_(d),_(s);var h=w(s,2),g=E(h);_(h),_(a),_(r),m(()=>{o(u,n.title),D(f,`href`,n.url),D(g,`src`,n.url),D(g,`alt`,n.title)}),e(`click`,i,function(...e){n.onClose?.apply(this,e)}),e(`click`,p,function(...e){n.onClose?.apply(this,e)}),c(t,r)}k([`click`]);var _i=512,vi=new Map;function yi(e){let t=oe(e?.trim()||``);if(!t)return``;let n=vi.get(t);if(n)return n;if(vi.size>=_i){let e=vi.keys().next().value;e&&vi.delete(e)}return vi.set(t,t),t}var bi=i(``),xi=i(``),Si=i(``);function Ci(t,i){S(i,!0);let a=h(i,`class`,3,`avatar`),s=h(i,`size`,3,40),l=h(i,`loading`,3,`lazy`),d=h(i,`fetchPriority`,3,`low`),b=v(``),x=y(()=>yi(i.src)),C=y(()=>p(x)!==``&&p(b)!==p(x)),w=y(()=>ke(i.id||i.name||p(x)||`avatar`)),ne=y(()=>Te(i.name));function ae(){O(b,p(x),!0)}var k=n(),A=te(k),oe=t=>{var n=xi(),h=E(n),v=e=>{var t=bi();m(()=>{D(t,`src`,p(x)),D(t,`width`,s()),D(t,`height`,s()),D(t,`loading`,l()),D(t,`fetchpriority`,d())}),f(`error`,t,ae),r(t),c(e,t)},y=e=>{var t=u();m(()=>o(t,p(ne))),c(e,t)};T(h,e=>{p(C)?e(v):e(y,-1)}),_(n),m(()=>{g(n,1,re(a())),ie(n,`--hue: ${p(w)??``}deg`),D(n,`aria-label`,i.buttonLabel)}),e(`click`,n,function(...e){i.onclick?.apply(this,e)}),c(t,n)},se=e=>{var t=Si(),n=E(t),i=e=>{var t=bi();m(()=>{D(t,`src`,p(x)),D(t,`width`,s()),D(t,`height`,s()),D(t,`loading`,l()),D(t,`fetchpriority`,d())}),f(`error`,t,ae),r(t),c(e,t)},h=e=>{var t=u();m(()=>o(t,p(ne))),c(e,t)};T(n,e=>{p(C)?e(i):e(h,-1)}),_(t),m(()=>{g(t,1,re(a())),ie(t,`--hue: ${p(w)??``}deg`)}),c(e,t)};T(A,e=>{i.buttonLabel?e(oe):e(se,-1)}),c(t,k),ee()}k([`click`]);var wi=i(`
          `),Ti=i(``),Ei=i(` `,1),Di=i(`
          `,2),Oi=i(`
          `),ki=i(`
          `),Ai=i(` `);function ji(t,r){S(r,!0);let i=h(r,`onOpenImage`,3,()=>{}),a=h(r,`onOpenArtifact`,3,()=>{}),s=v(null),l=v(!1),u=v(``),d=y(()=>p(u)||se(r.upload.duration_ms??0)),b=y(()=>(r.upload.content_type||``).split(`;`)[0].trim().toLowerCase()),x=y(()=>Mn(r.upload)),C=y(()=>p(x)===`unsupported`&&p(b).startsWith(`image/`)),re=y(()=>p(x)===`unsupported`&&p(b).startsWith(`video/`)),ae=y(()=>p(x)===`unsupported`&&p(b).startsWith(`audio/`)),k=y(()=>p(x)===`code`||p(x)===`text`||p(x)===`markdown`||p(x)===`pdf`||p(x)===`spreadsheet`||p(x)===`presentation`||p(x)===`html`),A=y(()=>Pn(p(x))),oe=y(()=>{let e=r.upload.width??0,t=r.upload.height??0;if(e<=0||t<=0)return``;let n=p(C)?320:360;return`aspect-ratio: ${e} / ${t}; max-height: ${Math.min(n,Math.max(120,t))}px;`});function se(e){if(!e||e<=0)return``;let t=Math.floor(e/1e3);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function ce(){O(l,!0)}function le(){!p(s)||!isFinite(p(s).duration)||O(u,se(p(s).duration*1e3),!0)}function ue(){p(s)&&(O(l,!0),p(s).play())}function de(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var fe=n(),pe=te(fe),me=t=>{var n=wi(),a=E(n),s=E(a);_(a);var l=w(a,2),u=E(l),d=E(u,!0);_(u);var f=w(u,2);_(l),_(n),m(()=>{D(a,`aria-label`,`Open image ${r.upload.filename}`),D(s,`src`,r.url),D(s,`alt`,r.upload.filename),D(s,`width`,r.upload.width||void 0),D(s,`height`,r.upload.height||void 0),ie(s,p(oe)),o(d,r.upload.filename),D(f,`href`,r.url),D(f,`download`,r.upload.filename),D(f,`aria-label`,`Download ${r.upload.filename}`)}),e(`click`,a,()=>i()(r.url,r.upload.filename)),e(`click`,f,e=>e.stopPropagation()),c(t,n)},j=t=>{var n=Di();let i;var a=E(n),u=E(a);_(a),ne(a,e=>O(s,e),()=>p(s));var h=w(a,2),v=t=>{var n=Ei(),i=te(n),a=w(i,2),s=e=>{var t=Ti(),n=E(t,!0);_(t),m(()=>o(n,p(d))),c(e,t)};T(a,e=>{p(d)&&e(s)}),m(()=>D(i,`aria-label`,`Play ${r.upload.filename}`)),e(`click`,i,ue),c(t,n)};T(h,e=>{p(l)||e(v)});var y=w(h,2),x=E(y),S=E(x,!0);_(x);var C=w(x,2);_(y),_(n),m(()=>{i=g(n,1,`media-tile media-tile--video`,null,i,{"is-started":p(l)}),a.controls=p(l),D(a,`aria-label`,r.upload.filename),D(a,`width`,r.upload.width||void 0),D(a,`height`,r.upload.height||void 0),ie(a,p(oe)),D(u,`src`,r.url),D(u,`type`,p(b)),o(S,r.upload.filename),D(C,`href`,r.url),D(C,`download`,r.upload.filename),D(C,`aria-label`,`Download ${r.upload.filename}`)}),f(`play`,a,ce),f(`loadedmetadata`,a,le),e(`click`,C,e=>e.stopPropagation()),c(t,n)},he=e=>{var t=Oi(),n=E(t),i=w(E(n),2),a=E(i),s=E(a,!0);_(a);var l=w(a,2),u=E(l,!0);_(l),_(i),_(n);var d=w(n,2),f=E(d),p=E(f,!0);_(f),_(d),_(t),m(e=>{o(s,r.upload.filename),o(u,e),D(d,`src`,r.url),D(f,`href`,r.url),o(p,r.upload.filename)},[()=>de(r.upload.byte_size)]),c(e,t)},M=t=>{var n=ki(),i=E(n),s=E(i),l=E(s,!0);_(s),_(i);var u=w(i,2),d=E(u),f=E(d,!0);_(d);var h=w(d,2),g=E(h,!0);_(h),_(u);var v=w(u,2);_(n),m(e=>{D(i,`data-artifact-upload-id`,r.upload.id),D(i,`aria-label`,`Open ${r.upload.filename}`),o(l,p(A)),D(d,`data-artifact-upload-id`,r.upload.id),o(f,r.upload.filename),o(g,e),D(v,`href`,r.url),D(v,`download`,r.upload.filename),D(v,`aria-label`,`Download ${r.upload.filename}`)},[()=>de(r.upload.byte_size)]),e(`click`,i,()=>a()(r.upload)),e(`click`,d,()=>a()(r.upload)),c(t,n)},ge=e=>{var t=Ai(),n=w(E(t),2),i=E(n),a=E(i,!0);_(i);var s=w(i,2),l=E(s,!0);_(s),_(n),_(t),m(e=>{D(t,`href`,r.url),D(t,`download`,r.upload.filename),D(t,`aria-label`,`Download ${r.upload.filename}`),o(a,r.upload.filename),o(l,e)},[()=>de(r.upload.byte_size)]),c(e,t)};T(pe,e=>{p(C)?e(me):p(re)?e(j,1):p(ae)?e(he,2):p(k)?e(M,3):e(ge,-1)}),c(t,fe),ee()}k([`click`]);var Mi=i(` `),Ni=i(` `),Pi=i(``);function Fi(t,r){S(r,!0);var i=n(),a=te(i),s=t=>{var n=Pi();let i;var a=w(E(n),2),s=E(a),l=E(s,!0);_(s);var u=w(s,2),d=e=>{var t=Mi(),n=E(t,!0);_(t),m(e=>o(n,e),[()=>Ge(r.message.quoted_body_snapshot)]),c(e,t)},f=e=>{var t=Ni(),n=E(t);_(t),m(e=>o(n,`[original deleted] ${e??``}`),[()=>Ge(r.message.quoted_body_snapshot)]),c(e,t)};T(u,e=>{r.message.quoted_message_id?e(d):e(f,-1)}),_(a),_(n),m((e,t)=>{i=g(n,1,`quote-block`,null,i,{dangling:!r.message.quoted_message_id}),n.disabled=!r.message.quoted_message_id,D(n,`aria-label`,e),o(l,t)},[()=>r.message.quoted_message_id?`Jump to quoted message from ${Ke(r.message)}`:`Original message was deleted`,()=>Ke(r.message)]),e(`click`,n,()=>r.onJump(r.message)),c(t,n)};T(a,e=>{(r.message.quoted_message_id||r.message.quoted_body_snapshot)&&e(s)}),c(t,i),ee()}k([`click`]);var Ii=i(``),Li=i(`Open in ClickClack`),Ri=i(``),zi=i(`deleted bot`),Bi=i(` `),Vi=i(``),Hi=i(` `,1),Ui=i(`
          This message was deleted.
          `),Wi=i(`
          `),Gi=i(`
          `),Ki=i(`
          `,1),qi=i(`
          `),Ji=i(`

          `,1);function Yi(n,r){S(r,!0);let i=h(r,`mentionPeople`,19,()=>[]),a=h(r,`replyDisabled`,3,!1),l=h(r,`headerLabel`,3,`Thread`),u=h(r,`canDeleteAnyMessage`,3,!1),f=h(r,`deletingMessageIDs`,19,()=>new Set),g=e=>u()||!!r.currentUserID&&(e.author?.id||e.author_id)===r.currentUserID;var v=Ji(),b=te(v),x=E(b),C=t=>{var n=Ii();e(`click`,n,function(...e){r.onBack?.apply(this,e)}),c(t,n)};T(x,e=>{r.onBack&&e(C)});var ne=w(x,2),O=E(ne),re=E(O,!0);_(O);var ie=w(O,2),ae=E(ie,!0);_(ie),_(ne);var k=w(ne,2),A=e=>{var t=Li();m(()=>D(t,`href`,r.openHref)),c(e,t)};T(k,e=>{r.openHref&&e(A)});var oe=w(k,2),se=t=>{var n=Ri();e(`click`,n,function(...e){r.onClose?.apply(this,e)}),c(t,n)};T(oe,e=>{r.onClose&&e(se)}),_(b);var ce=w(b,2),le=E(ce),ue=E(le);{let e=y(()=>r.root.author?.id||r.root.author_id),t=y(()=>r.root.author?.display_name),n=y(()=>z(r.root.author)?void 0:r.root.author?.avatar_url);Ci(ue,{class:`avatar`,get id(){return p(e)},get name(){return p(t)},get src(){return p(n)},size:38})}var de=w(ue,2),fe=E(de),pe=E(fe),me=E(pe,!0);_(pe);var j=w(pe,2),he=e=>{c(e,zi())},M=y(()=>z(r.root.author));T(j,e=>{p(M)&&e(he)});var ge=w(j,2),N=e=>{var t=Bi(),n=E(t,!0);_(t),m(e=>o(n,e),[()=>Ee(De(r.root.author))]),c(e,t)},_e=y(()=>De(r.root.author));T(ge,e=>{p(_e)&&e(N)});var ve=w(ge,2),P=E(ve,!0);_(ve);var F=w(ve,2),I=t=>{var n=Hi(),i=te(n),a=w(i,2),o=t=>{var n=Vi();m(e=>n.disabled=e,[()=>f().has(r.root.id)]),e(`click`,n,()=>r.onDeleteMessage?.(r.root)),c(t,n)},s=y(()=>g(r.root)&&r.onDeleteMessage);T(a,e=>{p(s)&&e(o)}),e(`click`,i,()=>r.onSetReplyTarget(r.root,`thread`)),c(t,n)};T(F,e=>{r.root.deleted_at||e(I)}),_(fe);var ye=w(fe,2),be=e=>{c(e,Ui())},L=e=>{var n=Wi();t(n,()=>pi(r.root.body),!0),_(n),d(n,e=>Ce?.(e)),c(e,n)};T(ye,e=>{r.root.deleted_at?e(be):e(L,-1)});var R=w(ye,2),xe=e=>{var t=Gi();s(t,21,()=>r.root.attachments,e=>e.id,(e,t)=>{{let n=y(()=>Le(p(t)));ji(e,{get upload(){return p(t)},get url(){return p(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),_(t),c(e,t)};T(R,e=>{!r.root.deleted_at&&r.root.attachments?.length&&e(xe)}),_(de),_(le);var Se=w(le,2),we=E(Se),Te=E(we);_(we),_(Se);var Oe=w(Se,2);s(Oe,21,()=>r.replies,e=>e.id,(n,i)=>{var a=qi(),l=E(a);{let e=y(()=>p(i).author?.id||p(i).author_id),t=y(()=>p(i).author?.display_name),n=y(()=>z(p(i).author)?void 0:p(i).author?.avatar_url);Ci(l,{class:`avatar small`,get id(){return p(e)},get name(){return p(t)},get src(){return p(n)},size:30})}var u=w(l,2),h=E(u),v=E(h),b=E(v,!0);_(v);var x=w(v,2),S=e=>{c(e,zi())},C=y(()=>z(p(i).author));T(x,e=>{p(C)&&e(S)});var ee=w(x,2),ne=e=>{var t=Bi(),n=E(t,!0);_(t),m(e=>o(n,e),[()=>Ee(De(p(i).author))]),c(e,t)},O=y(()=>De(p(i).author));T(ee,e=>{p(O)&&e(ne)});var re=w(ee,2),ie=E(re,!0);_(re);var ae=w(re,2),k=t=>{var n=Hi(),a=te(n),o=w(a,2),s=t=>{var n=Vi();m(e=>n.disabled=e,[()=>f().has(p(i).id)]),e(`click`,n,()=>r.onDeleteMessage?.(p(i))),c(t,n)},l=y(()=>g(p(i))&&r.onDeleteMessage);T(o,e=>{p(l)&&e(s)}),e(`click`,a,()=>r.onSetReplyTarget(p(i),`thread`)),c(t,n)};T(ae,e=>{p(i).deleted_at||e(k)}),_(h);var A=w(h,2),oe=e=>{c(e,Ui())},se=e=>{var n=Ki(),a=te(n);Fi(a,{get message(){return p(i)},get onJump(){return r.onJumpToQuote}});var o=w(a,2);t(o,()=>pi(p(i).body),!0),_(o),d(o,e=>Ce?.(e)),c(e,n)};T(A,e=>{p(i).deleted_at?e(oe):e(se,-1)});var ce=w(A,2),le=e=>{var t=Gi();s(t,21,()=>p(i).attachments,e=>e.id,(e,t)=>{{let n=y(()=>Le(p(t)));ji(e,{get upload(){return p(t)},get url(){return p(n)},get onOpenImage(){return r.onOpenImage},get onOpenArtifact(){return r.onOpenArtifact}})}}),_(t),c(e,t)};T(ce,e=>{!p(i).deleted_at&&p(i).attachments?.length&&e(le)}),_(u),_(a),m(e=>{D(a,`data-message-id`,p(i).id),o(b,p(i).author?.display_name||`Local User`),o(ie,e)},[()=>mi(p(i).created_at)]),c(n,a)}),_(Oe),_(ce);var ke=w(ce,2);{let e=y(()=>a()?`No active recipient`:`Reply in thread`);ot(ke,{get value(){return r.replyBody},get placeholder(){return p(e)},ariaLabel:`Reply body`,submitLabel:`Reply`,formClass:`composer reply-composer`,get disabled(){return a()},get replyTarget(){return r.replyTarget},get mentionPeople(){return i()},get onValue(){return r.onReplyBody},get onSubmit(){return r.onSubmitReply},get onKeydown(){return r.onReplyKeydown},get onFocus(){return r.onReplyFocus},get onInputRef(){return r.onReplyInputRef},get onClearReply(){return r.onClearReply}})}m(e=>{o(re,l()),o(ae,r.headerDetail??`${r.threadState?.reply_count??r.replies.length} ${(r.threadState?.reply_count??r.replies.length)===1?`reply`:`replies`}`),D(le,`data-message-id`,r.root.id),o(me,r.root.author?.display_name||`Local User`),o(P,e),o(Te,`${r.replies.length??``} ${r.replies.length===1?`reply`:`replies`}`)},[()=>mi(r.root.created_at)]),e(`pointerdown`,ce,function(...e){r.onActivateThreadComposer?.apply(this,e)}),e(`pointerup`,ce,function(...e){r.onInlineImagePointerUp?.apply(this,e)}),c(n,v),ee()}k([`click`,`pointerdown`,`pointerup`]);export{Ce as A,ye as B,Ne as C,z as D,Ee as E,R as F,_e as I,N as L,me as M,pe as N,De as O,j as P,ve as R,Me as S,je as T,L as V,V as _,gi as a,Pe as b,Pn as c,Mn as d,Sn as f,Je as g,qe as h,Ci as i,Se as j,we as k,Nn as l,Ze as m,Fi as n,pi as o,ot as p,ji as r,mi as s,Yi as t,Fn as u,ze as v,Ae as w,ke as x,Le as y,be as z}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/chunks/DRy8p13A.js b/apps/api/internal/webassets/dist/_app/immutable/chunks/DRy8p13A.js new file mode 100644 index 00000000..c94cd740 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/chunks/DRy8p13A.js @@ -0,0 +1,9 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DGD3aKTU.js","./HclGiUj8.js"])))=>i.map(i=>d[i]); +import{t as e}from"./DK3Fl9T5.js";import{B as t,C as n,D as r,F as i,I as a,K as o,L as s,N as c,O as l,P as u,Q as d,R as f,S as p,U as m,V as h,W as g,X as _,Y as v,Z as y,_ as b,a as x,at as S,b as C,bt as w,c as T,ct as E,dt as D,f as O,gt as k,h as A,ht as ee,it as j,j as M,k as N,m as te,n as P,nt as F,o as I,ot as L,p as R,q as z,r as ne,rt as B,s as re,st as V,tt as ie,u as ae,ut as H,v as oe,xt as se,y as ce,yt as le,z as U}from"./CX2IBWVU.js";import{t as ue}from"./Ct85fhNP.js";import{t as de}from"./HclGiUj8.js";import"./xihTtKlq.js";import{a as fe,i as pe,n as W,t as me}from"./CRJVHtae.js";import"./H8kj0_R5.js";import{a as he,i as ge,n as _e,t as ve}from"./Qo16U5GS.js";import{t as ye}from"./OQjxVT6U.js";import"./BMVuLp4J.js";import{A as be,B as xe,C as Se,D as G,E as Ce,F as we,I as K,L as q,M as J,N as Te,O as Y,P as X,R as Z,S as Ee,T as De,V as Q,_ as Oe,a as ke,b as Ae,c as je,d as Me,f as Ne,g as Pe,h as Fe,i as Ie,j as Le,k as Re,l as ze,m as Be,n as Ve,o as He,p as Ue,r as We,s as Ge,t as Ke,u as qe,v as Je,w as Ye,x as Xe,y as Ze,z as Qe}from"./DDgJhXUi.js";import{t as $e}from"./BBHxP-zi.js";import{f as et,r as tt}from"./DfVq8Tl1.js";var nt=typeof window>`u`?void 0:window.clickclackDesktop;async function rt(e){return e.type.startsWith(`image/`)?it(e):e.type.startsWith(`video/`)?at(e):{width:0,height:0,durationMS:0}}function it(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>{let e={width:r.naturalWidth,height:r.naturalHeight,durationMS:0};URL.revokeObjectURL(n),t(e)},r.onerror=()=>{URL.revokeObjectURL(n),t({width:0,height:0,durationMS:0})},r.src=n})}function at(e){return new Promise(t=>{let n=URL.createObjectURL(e),r=document.createElement(`video`);r.preload=`metadata`,r.muted=!0;let i=()=>{URL.revokeObjectURL(n),r.src=``};r.onloadedmetadata=()=>{let e=Number.isFinite(r.duration)&&r.duration>0?Math.round(r.duration*1e3):0,n={width:r.videoWidth,height:r.videoHeight,durationMS:e};i(),t(n)},r.onerror=()=>{i(),t({width:0,height:0,durationMS:0})},r.src=n})}var ot=[{title:`Ship it`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYjJ1bm1meHE4N2x3bnN0djJkMWtjNGc5bXYzZDFiOHBsbG16M3F0ZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/l0HlHFRbmaZtBRhXG/giphy.gif`,tags:[`ship`,`launch`,`done`]},{title:`Approved`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExazBpbzJ6ODZ3bXQ3OHBvNGJidWZoajc0cHV6YnVub3MzZ3c1a2Z2dSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/111ebonMs90YLu/giphy.gif`,tags:[`yes`,`approved`,`nice`]},{title:`Deploy dance`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExY3NkaTVmZW9ydWNnZnl0ZWQ5aHQyeGNrd2k3NG4wZWNqYzNmd3k1ZCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/GeimqsH0TLDt4tScGw/giphy.gif`,tags:[`deploy`,`dance`,`celebrate`]},{title:`Looking`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYWZ3emE0dm5mN2h0bGVsY2w0OXBodGd2cGJlNDRiZXo1YWNtdWRmZyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/26n6WywJyh39n1pBu/giphy.gif`,tags:[`search`,`looking`,`debug`]},{title:`Typing faster`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExOWFlbnJnbnIzbHYxcDIzdXZ3NGF3N2FocHNvMmR5enU3bHpycHBlZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/13HgwGsXF0aiGY/giphy.gif`,tags:[`typing`,`code`,`work`]},{title:`Tiny victory`,url:`https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExdjJ2b2tqNmF4dG16NjE0eXhuc3h5bTlvamgwNTR0Zmd6ZjhtM2JuaSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/3o7abKhOpu0NwenH3O/giphy.gif`,tags:[`win`,`victory`,`celebrate`]}],st=1e3;function ct(e,t,n){if(e.length<=900)return e;let r=lt(e,n);if(t===`prepend`)return ut(e,0,700,r,`start`);if(t===`append`)return ut(e,Math.max(0,e.length-700),e.length,r,`end`);if(t===`around`){let t=r?.first??-1,n=t>=0?t:Math.floor(e.length/2),i=Math.max(0,n-350),a=Math.min(e.length,i+700);return i=Math.max(0,a-700),ut(e,i,a,r,`start`)}return ut(e,Math.max(0,e.length-700),e.length,r,`end`)}function lt(e,t){if(t.size===0)return null;let n=-1,r=-1;for(let i=0;i1e3&&(i===`start`?(a=t,o=Math.min(e.length,a+st)):(o=n,a=Math.max(0,o-st))),e.slice(a,o)}var dt=new Set([`agent_commentary`,`agent_tool`]),ft=180*1e3;function pt(e){return e.kind!==void 0&&dt.has(e.kind)}function mt(e){return e.kind===void 0||e.kind===`message`}function ht(e){return e.author?.id||e.author_id||``}function gt(e){return`${e.channel_id?`channel:${e.channel_id}`:`direct:${e.direct_conversation_id||``}`}\u0000${ht(e)}\u0000${e.turn_id||e.id}`}function _t(e){let t=e.trim(),n=``,r=``,i=t.match(/^\*\*([^*]+)\*\*\s*\n+([\s\S]+)$/),a=t.match(/^\*\*([^*]+)\*\*$/);if(i)n=i[1].trim(),r=yt(i[2]);else if(a)n=a[1].trim();else return vt(t.replace(/\*\*/g,``).trim(),``);return vt(n,r)}function vt(e,t){let n=yt(e),r=n.indexOf(` `),i,a;r===-1?(i=n,a=``):(i=n.slice(0,r),a=n.slice(r+1).trim());let o=[a,t].filter(e=>e.length>0).join(` · `);return{name:i,detail:o||void 0}}function yt(e){return e.replace(/\s+/g,` `).trim()}function bt(e,t,n,r){let i=[];for(let e of t)if(e.kind===`agent_tool`){if(r.hideToolCalls)continue;let t=_t(e.body);i.push({type:`tool`,id:e.id,name:t.name,detail:t.detail,full:e.body.trim()})}else{if(r.hideCommentary)continue;let t=e.body.trim();t&&i.push({type:`commentary`,id:e.id,body:t})}return i.length===0?null:{turnId:e,items:i,final:n}}function xt(e,t,n=Date.now()){let r=new Map,i=new Map;for(let t=0;to.firstIndex;if(!r){let e=Date.parse(o.rows[o.rows.length-1].created_at);Number.isFinite(e)&&n-e>ft&&(r=!0)}a.set(t,r)}let o=[];for(let n=0;n=Nt)&&(Pt.active=!0,Pt.lastPingAt=t,Lt(e,`typing.started`)),Pt.idleTimer&&window.clearTimeout(Pt.idleTimer),Pt.idleTimer=window.setTimeout(()=>{Pt&&=(zt(Pt),null)},Mt)}async function zt(e){e.idleTimer&&window.clearTimeout(e.idleTimer),e.active&&await Lt(e.scope,`typing.stopped`)}function Bt(){Pt&&=(zt(Pt),null)}var Vt=2e3,Ht=2*1024*1024;function Ut(e){let t=document.createElement(`span`);return t.textContent=e,t.innerHTML}function Wt(e,t,n){return!t||e.length>262144?Promise.resolve(Ut(e)):new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/highlight.worker-DQwR42_5.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Syntax highlighting was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>r(Ut(e))),Vt);if(a.onmessage=t=>{let n=t.data;`error`in n?s(()=>r(Ut(e))):s(()=>r(n.html))},a.onerror=()=>s(()=>r(Ut(e))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}a.postMessage({source:e,language:t,outputLimit:Ht})})}var Gt=5e3;function Kt(e,t,n){return new Promise((r,i)=>{let a=new Worker(new URL(``+new URL(`../workers/office.worker-Dh-Qjtqs.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),o=!1,s=e=>{o||(o=!0,clearTimeout(l),n.removeEventListener(`abort`,c),a.terminate(),e())},c=()=>s(()=>i(new DOMException(`Office preview was aborted.`,`AbortError`))),l=window.setTimeout(()=>s(()=>i(Error(`Office preview took too long and was stopped.`))),Gt);if(a.onmessage=t=>{let n=t.data;if(`error`in n){s(()=>i(Error(n.error)));return}if(n.kind!==e){s(()=>i(Error(`Office preview returned an unexpected result.`)));return}s(()=>r(n.preview))},a.onerror=()=>s(()=>i(Error(`Could not parse this Office file safely.`))),n.addEventListener(`abort`,c,{once:!0}),n.aborted){c();return}let u=t.byteOffset===0&&t.buffer instanceof ArrayBuffer&&t.byteLength===t.buffer.byteLength?t:t.slice(),d={kind:e,bytes:u};a.postMessage(d,[u.buffer])})}var qt=16*1024*1024,Jt=1e4,Yt=1e4,Xt=`This PDF page is too large to preview safely. Download the original to open it locally.`;function Zt(e,t){if(!Number.isSafeInteger(e)||!Number.isSafeInteger(t)||e<1||t<1||e>8192||t>8192||e*t>16777216)throw Error(Xt)}var Qt=``+new URL(`../assets/pdf.worker.CPbhI6B3.mjs`,import.meta.url).href,$t=a(`
          `),en=a(`

          Preparing a safe preview.

          `),tn=a(``),nn=a(`
          No preview for this file type

          You can still download the original file.

          Download original
          `),rn=a(`
          `,1),an=a(` `),on=a(` `),sn=a(` `),cn=a(` `),ln=a(`

          Preview is limited to 10,000 cells, the first 1,000 rows, and the first 100 columns. Download the original to inspect omitted cells.

          `),un=a(``),dn=a(`
          Raw cached values; number and date formatting omitted
          `,1),fn=a(`

          `),pn=a(`

          `),mn=a(`

          `),hn=a(`

          Some slide content was omitted by preview limits.

          `),gn=a(`

          Text outline only. Visuals, layout, animations, and speaker notes are omitted.

          `,1),_n=a(`
          `),vn=a(`
          `),yn=a(`
          `),bn=a(`
           
          `),xn=a(`
          `,1);function Sn(e,n){k(n,!0);let a=E(null),o=D(()=>Me(n.upload)),s=E(`preview`),f=E(`idle`),p=E(``),m=E(``),h=E(``),_=E(!1),v=E(``),b=E(null),x=E(1),S=E(1),T=E(!1),O=E(``),A=null,te=!1,I=E(null),L=E(0),z=E(null),ne=E(0),ie=1e4,ae=64*1024,H=5e3;class oe extends Error{}let se=D(()=>je(g(o))),ce=D(()=>Ze(n.upload)),U=D(()=>(g(o)===`markdown`||g(o)===`html`)&&g(f)===`ready`&&g(_));function ue(e){return`This ${g(se).toLowerCase()} is ${Je(n.upload.byte_size)}. Preview is limited to ${Je(e)}.`}function fe(e){W(e);let t=document.createElement(`template`);t.innerHTML=e;let n=Ne.sanitize(t.content,{RETURN_DOM_FRAGMENT:!0,USE_PROFILES:{html:!0},FORBID_TAGS:[`base`,`embed`,`form`,`iframe`,`link`,`meta`,`object`,`script`,`style`],FORBID_ATTR:[`action`,`formaction`,`srcset`,`style`,`xlink:href`]});for(let e of n.querySelectorAll(`*`))for(let t of Array.from(e.attributes))e.removeAttribute(t.name);let r=document.createElement(`div`);r.append(n);let i=r.innerHTML;return me(i),`${i}`}function pe(e){W(e);let t=He(e);return me(t),Ne.sanitize(t,{ALLOWED_TAGS:[`blockquote`,`br`,`code`,`del`,`em`,`h1`,`h2`,`h3`,`h4`,`h5`,`h6`,`hr`,`li`,`ol`,`p`,`pre`,`strong`,`table`,`tbody`,`td`,`th`,`thead`,`tr`,`ul`],ALLOWED_ATTR:[]})}function W(e){if(e.length>65536)throw new oe(`Structured preview exceeded the safe source limit.`);let t=0;for(let n of e)if("<[]>*_`-+.!#>|~".includes(n)&&(t+=1,t>ie))throw new oe(`Structured preview exceeded the safe complexity limit.`)}function me(e){if(e.length>4194304)throw new oe(`Rendered preview exceeded the safe output limit.`);let t=0;for(let n of e)if(n===`<`&&++t>ie*2)throw new oe(`Rendered preview exceeded the safe element limit.`)}function he(e){return`Preview data exceeded the ${Je(e)} safety limit.`}async function ge(e,t){let n=await fetch(g(ce),{credentials:`include`,signal:e});if(!n.ok)throw n.status===401||n.status===403?Error(`You no longer have access to this artifact.`):n.status===404?Error(`This artifact is no longer available.`):Error(`Could not load this artifact (${n.status}).`);let r=Number(n.headers.get(`Content-Length`));if(Number.isFinite(r)&&r>t)throw Error(he(t));if(!n.body){let e=new Uint8Array(await n.arrayBuffer());if(e.byteLength>t)throw Error(he(t));return e}let i=n.body.getReader(),a=[],o=0;try{for(;;){let{done:e,value:n}=await i.read();if(e)break;if(o+=n.byteLength,o>t)throw await i.cancel(),Error(he(t));a.push(n)}}finally{i.releaseLock()}let s=new Uint8Array(o),c=0;for(let e of a)s.set(e,c),c+=e.byteLength;return s}async function _e(e,t){return new TextDecoder(`utf-8`,{fatal:!1}).decode(await ge(e,t))}async function ve(e){A?.(),A=null,V(b,null),V(m,``),V(h,``),V(_,!1),V(v,``),V(x,1),V(S,1),V(O,``),te=!1,V(I,null),V(L,0),V(z,null),V(ne,0),V(s,`preview`),V(p,``);let t=qe(g(o));if(t!==void 0&&n.upload.byte_size>t){V(f,`error`),V(p,ue(t),!0);return}if(g(o)===`unsupported`){V(f,`ready`);return}V(f,`loading`);try{if(g(o)===`pdf`){let n=await de(()=>import(`./DGD3aKTU.js`),__vite__mapDeps([0,1]),import.meta.url);if(e.aborted)return;n.GlobalWorkerOptions.workerSrc=Qt;let r=new AbortController,i=()=>r.abort();e.addEventListener(`abort`,i,{once:!0});let a=null,o=0,s=new Promise((e,t)=>{o=window.setTimeout(()=>{r.abort(),a?.destroy(),t(Error(`PDF preview took too long and was stopped.`))},Jt)}),c;try{if(c=await Promise.race([ge(r.signal,t),s]),e.aborted)throw new DOMException(`Aborted`,`AbortError`);a=new n.PDFWorker,await Promise.race([a.promise,s])}catch(t){throw clearTimeout(o),e.removeEventListener(`abort`,i),t}if(e.aborted||!a){clearTimeout(o),e.removeEventListener(`abort`,i),a?.destroy();return}let l=a.port,u=e=>{let t=e.data;typeof t==`object`&&t&&`reason`in t&&typeof t.reason==`object`&&t.reason!==null&&`message`in t.reason&&t.reason.message===`Image exceeded maximum allowed size and was removed.`&&(te=!0,A?.(),V(f,`error`),V(p,`PDF page content could not be rendered completely within safety limits.`))};l.addEventListener(`message`,u);let d=null,m=!1;A=()=>{m||(m=!0,l.removeEventListener(`message`,u),d&&d.destroy(),a.destroy(),V(b,null))};let h=n.getDocument({data:c,maxImageSize:qt,canvasMaxAreaInBytes:qt*4,stopAtErrors:!0,worker:a});d=h;try{V(b,await Promise.race([h.promise,s]),!0)}finally{clearTimeout(o),e.removeEventListener(`abort`,i)}}else if(g(o)===`spreadsheet`||g(o)===`presentation`){let n=await ge(e,t);if(e.aborted)return;if(g(o)===`spreadsheet`){let t=await Kt(g(o),n,e);if(e.aborted)return;V(I,t,!0)}else{let t=await Kt(g(o),n,e);if(e.aborted)return;V(z,t,!0)}}else{if(V(m,await _e(e,t),!0),e.aborted)return;g(o)===`code`&&V(v,await Wt(g(m),ze(n.upload),e),!0);try{g(o)===`markdown`&&(V(h,pe(g(m)),!0),V(_,!0)),g(o)===`html`&&(V(h,fe(g(m)),!0),V(_,!0))}catch(e){if(!(e instanceof oe))throw e;V(h,``),V(s,`source`)}}e.aborted||V(f,`ready`)}catch(t){if(e.aborted||t instanceof Error&&t.name===`AbortError`)return;A?.(),A=null,V(f,`error`),V(p,t instanceof Error?t.message:`Could not preview this artifact.`,!0)}}d(()=>{let e=new AbortController;return ve(e.signal),()=>e.abort()}),d(()=>{if(g(o)!==`pdf`||!g(b)||!g(a)||g(f)!==`ready`)return;let e=g(b),t=g(x),n=g(S),r=!1,i=null,s=null,c=null,l=0;return V(T,!0),V(O,``),(async()=>{try{if(l=window.setTimeout(()=>{r||(i?.cancel(),c?.cancel(),A?.(),V(f,`error`),V(p,`PDF page rendering took too long and was stopped.`))},Yt),s=await e.getPage(t),r||!g(a))return;let o=``,u=0;c=s.streamTextContent().getReader();try{for(;!r;){let{done:e,value:t}=await c.read();if(e)break;for(let e of t.items){if(u+=1,u>H){await c.cancel(),o=`${o}…`;break}if(!(`str`in e)||!e.str)continue;let t=`${o}${o?` `:``}${e.str}`;if(t.length>ae){await c.cancel(),o=`${t.slice(0,ae)}…`;break}o=t}if(u>H||o.endsWith(`…`))break}}finally{c.releaseLock(),c=null}if(r)return;V(O,o||`This page has no extractable text.`,!0);let d=s.getViewport({scale:n}),m=Math.min(window.devicePixelRatio||1,2),h=Math.max(1,Math.floor(d.width*m)),_=Math.max(1,Math.floor(d.height*m));Zt(h,_);let v=g(a).getContext(`2d`);if(!v)throw Error(`PDF canvas is unavailable.`);if(g(a).width=h,g(a).height=_,g(a).style.width=`${d.width}px`,g(a).style.height=`${d.height}px`,v.setTransform(m,0,0,m,0,0),i=s.render({canvasContext:v,viewport:d}),await i.promise,te)throw Error(`PDF page content could not be rendered completely within safety limits.`)}catch(e){!r&&!(e instanceof Error&&e.name===`RenderingCancelledException`)&&(A?.(),V(f,`error`),V(p,e instanceof Error?e.message:`Could not render this PDF page.`,!0))}finally{clearTimeout(l),s?.cleanup(),s=null,r||V(T,!1)}})(),()=>{r=!0,clearTimeout(l),i?.cancel(),c?.cancel()}}),P(()=>A?.());function ye(e){let t=e.match(/^[A-Z]+/i)?.[0]?.toUpperCase()||`A`,n=0;for(let e of t)n=n*26+e.charCodeAt(0)-64;return n}function be(e){return Number(e.match(/\d+$/)?.[0]||1)}function xe(e){let t=``;for(let n=e;n>0;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}let Se=D(()=>{let e=g(I)?.sheets[g(L)];if(!e)return{columns:[],rows:[],clipped:!1};let t=Math.max(1,...e.cells.map(e=>ye(e.reference))),n=Math.max(1,...e.cells.map(e=>be(e.reference))),r=Math.min(100,t),i=Math.min(1e3,Math.floor(1e4/r),n),a=new Map(e.cells.map(e=>[e.reference.toUpperCase(),e.value])),o=Array.from({length:r},(e,t)=>xe(t+1));return{columns:o,rows:Array.from({length:i},(e,t)=>({number:t+1,values:o.map(e=>a.get(`${e}${t+1}`)||``)})),clipped:t>r||n>i}});var G=xn(),Ce=B(G),we=F(Ce),K=F(we),q=F(K,!0);w(K);var J=j(K,2),Te=F(J,!0);w(J);var Y=j(J,2),X=F(Y,!0);w(Y),w(we);var Z=j(we,2),Ee=F(Z),De=e=>{var n=$t(),r=F(n);let i;var a=j(r,2);let o;w(n),y(()=>{R(n,`aria-label`,`${g(se)} view`),R(r,`aria-pressed`,g(s)===`preview`),i=C(r,1,``,null,i,{active:g(s)===`preview`}),R(a,`aria-pressed`,g(s)===`source`),o=C(a,1,``,null,o,{active:g(s)===`source`})}),t(`click`,r,()=>V(s,`preview`)),t(`click`,a,()=>V(s,`source`)),u(e,n)};M(Ee,e=>{g(U)&&e(De)});var Q=j(Ee,2),Oe=j(Q,2);w(Z),w(Ce);var ke=j(Ce,2);let Ae;var Pe=F(ke),Fe=e=>{var t=en(),n=j(F(t),2),r=F(n);w(n),le(2),w(t),y(e=>c(r,`Opening ${e??``}`),[()=>g(se).toLowerCase()]),u(e,t)},Ie=e=>{var t=tn(),r=j(F(t),4),i=F(r,!0);w(r);var a=j(r,2);w(t),y(()=>{c(i,g(p)),R(a,`href`,g(ce)),R(a,`download`,n.upload.filename)}),u(e,t)},Le=e=>{var t=nn(),r=j(F(t),6);w(t),y(()=>{R(r,`href`,g(ce)),R(r,`download`,n.upload.filename)}),u(e,t)},Re=e=>{var n=rn(),r=B(n),i=F(r),o=j(i,2),s=F(o);w(o);var l=j(o,2),d=j(l,4),f=j(d,2),p=F(f);w(f);var m=j(f,2);w(r);var h=j(r,2);let _;var v=F(h);re(v,e=>V(a,e),()=>g(a));var E=j(v,2),D=F(E,!0);w(E),w(h),y(e=>{i.disabled=g(x)<=1||g(T),c(s,`Page ${g(x)??``} of ${g(b).numPages??``}`),l.disabled=g(x)>=g(b).numPages||g(T),d.disabled=g(S)<=.6||g(T),c(p,`${e??``}%`),m.disabled=g(S)>=2||g(T),_=C(h,1,`artifact-viewer__pdf-stage`,null,_,{"is-rendering":g(T)}),R(h,`aria-label`,`PDF page ${g(x)} visual preview`),R(E,`aria-label`,`PDF page ${g(x)} text`),c(D,g(O))},[()=>Math.round(g(S)*100)]),t(`click`,i,()=>V(x,g(x)-1)),t(`click`,l,()=>V(x,g(x)+1)),t(`click`,d,()=>V(S,Math.max(.6,g(S)-.2),!0)),t(`click`,m,()=>V(S,Math.min(2,g(S)+.2),!0)),u(e,n)},Be=e=>{var n=dn(),r=B(n),i=F(r),a=F(i);w(i);var o=j(i,4),s=e=>{var t=an(),n=F(t);w(t),y(()=>c(n,`${g(I).hiddenSheets??``} hidden ${g(I).hiddenSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(o,e=>{g(I).hiddenSheets>0&&e(s)});var d=j(o,2),f=e=>{var t=an(),n=F(t);w(t),y(()=>c(n,`${g(I).unsupportedSheets??``} non-worksheet ${g(I).unsupportedSheets===1?`sheet`:`sheets`} omitted`)),u(e,t)};M(d,e=>{g(I).unsupportedSheets>0&&e(f)}),w(r);var p=j(r,2),m=F(p),h=F(m),_=F(h);l(j(F(_)),17,()=>g(Se).columns,N,(e,t)=>{var n=on(),r=F(n,!0);w(n),y(()=>c(r,g(t))),u(e,n)}),w(_),w(h);var v=j(h);l(v,21,()=>g(Se).rows,N,(e,t)=>{var n=cn(),r=F(n),i=F(r,!0);w(r),l(j(r),17,()=>g(t).values,N,(e,t)=>{var n=sn(),r=F(n,!0);w(n),y(()=>c(r,g(t))),u(e,n)}),w(n),y(()=>c(i,g(t).number)),u(e,n)}),w(v),w(m);var b=j(m,2),x=e=>{u(e,ln())};M(b,e=>{(g(Se).clipped||g(I).sheets[g(L)].truncated)&&e(x)}),w(p);var S=j(p,2);l(S,21,()=>g(I).sheets,N,(e,n,r)=>{var i=un();let a;var o=F(i,!0);w(i),y(()=>{R(i,`aria-selected`,g(L)===r),a=C(i,1,``,null,a,{active:g(L)===r}),c(o,g(n).name)}),t(`click`,i,()=>V(L,r,!0)),u(e,i)}),w(S),y(()=>{c(a,`${g(I).sheets.length??``} ${g(I).sheets.length===1?`sheet`:`sheets`}`),R(p,`aria-label`,`${g(I).sheets[g(L)].name} worksheet`)}),u(e,n)},Ve=e=>{var n=gn(),r=B(n),a=F(r),o=j(a,2),s=F(o);w(o);var d=j(o,2);w(r);var f=j(r,2),p=F(f);l(p,21,()=>g(z).slides[g(ne)].paragraphs,N,(e,t,n)=>{var r=i(),a=B(r),o=e=>{var n=fn(),r=F(n,!0);w(n),y(()=>c(r,g(t))),u(e,n)},s=e=>{var n=pn(),r=F(n,!0);w(n),y(()=>c(r,g(t))),u(e,n)};M(a,e=>{n===0?e(o):e(s,-1)}),u(e,r)}),w(p);var m=j(p,4),h=e=>{var t=mn(),n=F(t);w(t),y(()=>c(n,`${g(z).hiddenSlides??``} hidden ${g(z).hiddenSlides===1?`slide`:`slides`} omitted.`)),u(e,t)};M(m,e=>{g(z).hiddenSlides>0&&e(h)});var _=j(m,2),v=e=>{u(e,hn())};M(_,e=>{g(z).truncated&&e(v)}),w(f),y(()=>{a.disabled=g(ne)===0,c(s,`Slide ${g(ne)+1} of ${g(z).slides.length??``}`),d.disabled=g(ne)>=g(z).slides.length-1,R(p,`aria-label`,`Slide ${g(ne)+1}: ${g(z).slides[g(ne)].title}`)}),t(`click`,a,()=>V(ne,g(ne)-1)),t(`click`,d,()=>V(ne,g(ne)+1)),u(e,n)},Ue=e=>{var t=_n();r(t,()=>g(h),!0),w(t),u(e,t)},We=e=>{var t=vn();r(t,()=>g(h),!0),w(t),u(e,t)},Ge=e=>{var t=yn(),n=F(t);r(n,()=>g(v),!0),w(n),w(t),u(e,t)},Ke=e=>{var t=bn(),n=F(t),r=F(n,!0);w(n),w(t),y(()=>c(r,g(m))),u(e,t)};M(Pe,e=>{g(f)===`loading`?e(Fe):g(f)===`error`?e(Ie,1):g(o)===`unsupported`?e(Le,2):g(o)===`pdf`&&g(b)?e(Re,3):g(o)===`spreadsheet`&&g(I)?e(Be,4):g(o)===`presentation`&&g(z)?e(Ve,5):g(o)===`html`&&g(s)===`preview`&&g(h)?e(Ue,6):g(o)===`markdown`&&g(s)===`preview`?e(We,7):g(o)===`code`?e(Ge,8):e(Ke,-1)}),w(ke),y(e=>{c(q,g(se)),R(J,`title`,n.upload.filename),c(Te,n.upload.filename),c(X,e),R(Q,`href`,g(ce)),R(Q,`download`,n.upload.filename),R(Q,`aria-label`,`Download ${n.upload.filename}`),Ae=C(ke,1,`artifact-viewer__body`,null,Ae,{"is-pdf":g(o)===`pdf`,"is-office":g(o)===`spreadsheet`||g(o)===`presentation`})},[()=>Je(n.upload.byte_size)]),t(`click`,Oe,function(...e){n.onClose?.apply(this,e)}),u(e,G),ee()}U([`click`]);var Cn=a(`
          `),wn=a(`
          `);function Tn(e,t){let n=x(t,`rows`,3,3);var r=wn();l(r,21,()=>Array.from({length:n()}),N,(e,t,n)=>{var r=Cn();ce(r,`--history-row: ${n}`),u(e,r)}),w(r),y(()=>{C(r,1,`history-loader history-loader--${t.direction}`),R(r,`aria-label`,t.direction===`older`?`Loading older messages`:`Loading newer messages`)}),u(e,r)}var En={bash:{glyph:`🖥`,action:`Ran shell command`},exec:{glyph:`🖥`,action:`Ran shell command`},command:{glyph:`🖥`,action:`Ran shell command`},bashsession:{glyph:`🖥`,action:`Managed shell session`},sessions_send:{glyph:`🖥`,action:`Managed shell session`},read:{glyph:`📖`,action:`Read file`},write:{glyph:`📝`,action:`Wrote file`},edit:{glyph:`✏`,action:`Edited file`},apply_patch:{glyph:`🧩`,action:`Applied patch`},applypatch:{glyph:`🧩`,action:`Applied patch`},browsercontrol:{glyph:`🌐`,action:`Controlled browser`},websearch:{glyph:`🔍`,action:`Searched the web`},webfetch:{glyph:`🔗`,action:`Fetched a page`},image:{glyph:`🖼`,action:`Analyzed image`},imagecreate:{glyph:`🎨`,action:`Generated image`},scheduler:{glyph:`⏰`,action:`Scheduled a job`},sendmessage:{glyph:`📤`,action:`Sent a message`},message:{glyph:`📤`,action:`Sent a message`},systemctl:{glyph:`⚙`,action:`Controlled the system`},process:{glyph:`⚙`,action:`Managed a process`},devicecontrol:{glyph:`📱`,action:`Controlled a device`},pdfparse:{glyph:`📄`,action:`Parsed a PDF`},statuscheck:{glyph:`📊`,action:`Checked status`}},Dn=[{test:e=>e.includes(`search`),glyph:`🔍`,action:`Searched`},{test:e=>e.includes(`fetch`),glyph:`🔗`,action:`Fetched`},{test:e=>e.includes(`browser`),glyph:`🌐`,action:`Controlled browser`},{test:e=>e.includes(`patch`),glyph:`🧩`,action:`Applied patch`},{test:e=>e.includes(`write`),glyph:`📝`,action:`Wrote file`},{test:e=>e.includes(`edit`),glyph:`✏`,action:`Edited file`},{test:e=>e.includes(`read`),glyph:`📖`,action:`Read file`},{test:e=>e.includes(`session`),glyph:`🖥`,action:`Managed shell session`},{test:e=>e.includes(`bash`)||e.includes(`shell`)||e.includes(`exec`),glyph:`🖥`,action:`Ran command`},{test:e=>e.includes(`image`),glyph:`🖼`,action:`Worked with image`},{test:e=>e.includes(`message`)||e.includes(`send`),glyph:`📤`,action:`Sent a message`},{test:e=>e.includes(`agent`)||e.includes(`subagent`),glyph:`🤖`,action:`Ran a sub-agent`},{test:e=>e.includes(`schedul`)||e.includes(`cron`),glyph:`⏰`,action:`Scheduled a job`},{test:e=>e.includes(`device`),glyph:`📱`,action:`Controlled a device`},{test:e=>e.includes(`file`)||e.includes(`dir`),glyph:`📁`,action:`Worked with files`}];function On(e,t){let n=String(e||``).trim(),r=n.toLowerCase().replace(/[^a-z0-9_]/g,``),i=String(t||``).trim()||void 0,a=En[r];if(a)return{name:n,glyph:a.glyph,action:a.action,detail:i};for(let e of Dn)if(e.test(r))return{name:n,glyph:e.glyph,action:e.action,detail:i};return{name:n||`tool`,glyph:`🔧`,action:`Used tool`,detail:i}}var kn=a(`
          `),An=a(` `),jn=a(` `),Mn=a(`
          `),Nn=a(`
          `),Pn=a(`
          `),Fn=a(`
          `),In=a(`
          `),Ln=a(`
          `);function Rn(e,n){k(n,!0);let a=E(!0),o=E(void 0);d(()=>{(g(o)===void 0||n.block.final!==g(o))&&(V(o,n.block.final,!0),V(a,!n.block.final))});let s=S({});function f(e){s[e]=!s[e]}function p(e){let t=e.match(/^\*\*([^]*?)\*\*\s*\n*([^]*)$/);if(!t)return{text:e};let n=t[1].trim(),r=t[2].trim();return{head:n||void 0,text:r}}let m=D(()=>n.block.items.map(e=>e.type===`tool`?{item:e,tool:On(e.name,e.detail)}:{item:e,tool:null})),h=D(()=>n.block.final?g(a)?`expanded`:`collapsed`:`live`),_=D(()=>g(a)?`Hide preamble`:`Show preamble`);var v=Ln();let b;var x=F(v),T=F(x);let O;var A=j(T,2);let N;var te=F(A,!0);w(A);var P=j(A,2),I=F(P,!0);w(P),w(x);var L=j(x,2),z=e=>{var n=In();l(n,21,()=>g(m),e=>e.item.id,(e,n)=>{var a=i(),o=B(a),l=e=>{var t=kn();r(t,()=>He(g(n).item.body),!0),w(t),u(e,t)},d=e=>{let i=D(()=>s[g(n).item.id]===!0);var a=Fn();let o;var l=F(a),d=F(l);let m;var h=j(d,2),_=F(h,!0);w(h);var v=j(h,2),b=F(v,!0);w(v);var x=j(v,2),S=e=>{var t=An(),r=F(t,!0);w(t),y(()=>c(r,g(n).tool.name)),u(e,t)};M(x,e=>{g(n).tool.name&&g(n).tool.name!==`tool`&&e(S)});var T=j(x,2),E=e=>{var t=jn(),r=F(t,!0);w(t),y(()=>{R(t,`title`,g(n).tool.detail),c(r,g(n).tool.detail)}),u(e,t)};M(T,e=>{!g(i)&&g(n).tool.detail&&e(E)}),w(l);var O=j(l,2),k=e=>{let t=D(()=>p(g(n).item.full));var i=Pn(),a=F(i),o=e=>{var n=Mn(),r=F(n,!0);w(n),y(()=>c(r,g(t).head)),u(e,n)};M(a,e=>{g(t).head&&e(o)});var s=j(a,2),l=e=>{var n=Nn();r(n,()=>He(g(t).text),!0),w(n),u(e,n)};M(s,e=>{g(t).text&&e(l)}),w(i),u(e,i)};M(O,e=>{g(i)&&e(k)}),w(a),y(()=>{o=C(a,1,`preamble-tool`,null,o,{expanded:g(i)}),R(l,`aria-expanded`,g(i)),m=C(d,1,`tool-line-chevron`,null,m,{open:g(i)}),c(_,g(n).tool.glyph),c(b,g(n).tool.action)}),t(`click`,l,()=>f(g(n).item.id)),u(e,a)};M(o,e=>{g(n).item.type===`commentary`?e(l):g(n).tool&&e(d,1)}),u(e,a)}),w(n),u(e,n)};M(L,e=>{g(a)&&e(z)}),w(v),y(()=>{b=C(v,1,`preamble-contract`,null,b,{"is-final":n.block.final}),R(x,`aria-expanded`,g(a)),O=C(T,1,`preamble-chevron`,null,O,{open:g(a)}),N=C(A,1,`preamble-state`,null,N,{"is-live":!n.block.final}),c(te,g(h)),c(I,g(_))}),t(`click`,x,()=>V(a,!g(a))),u(e,v),ee()}U([`click`]);var zn=a(`
          This message was deleted.
          `),Bn=a(`
          `),Vn=a(``),Hn=a(``),Un=a(``),Wn=a(`
          `,1),Gn=a(``),Kn=a(` `,1),qn=a(``),Jn=a(``),Yn=a(`
          `),Xn=a(`
          `);function Zn(e,n){k(n,!0);let i=x(n,`canDeleteAnyMessage`,3,!1),a=x(n,`deleting`,3,!1),o=D(()=>n.message.status===`pending`),s=D(()=>n.message.status===`failed`),d=D(()=>!!n.message.deleted_at),f=D(()=>i()||!!n.currentUserID&&(n.message.author?.id||n.message.author_id)===n.currentUserID),m=D(()=>n.message.preamble_block),h=D(()=>!!n.previousMessage?.preamble_block&&!g(m)),_=D(()=>!!g(m)&&!!n.nextMessage&&!n.nextMessage?.preamble_block),v=D(()=>n.message.thread_state?.reply_count||0),b=D(()=>g(v)>0),S=D(()=>Pe(n.message)),T=D(()=>n.selectedThreadID===n.message.id),E=D(()=>!g(m)&&!g(o)&&!g(s)&&(!g(d)||g(b)||g(T)));function O(e){g(E)&&(window.getSelection()?.toString()||e.target?.closest(`a, button, input, textarea, select, .attachment-grid, .media-tile, .markdown img, .gif-player, .message-actions, .message-failed`)||n.onOpenThread(n.message))}function A(e){return e.addEventListener(`click`,O),{destroy(){e.removeEventListener(`click`,O)}}}var N=Xn();let te;var P=F(N),I=F(P,!0);w(P);var L=j(P,2),z=F(L),ne=e=>{Rn(e,{get block(){return g(m)}})},re=e=>{u(e,zn())},V=e=>{var i=Wn(),a=B(i);Ve(a,{get message(){return n.message},get onJump(){return n.onJumpToQuote}});var o=j(a,2);r(o,()=>He(n.message.body),!0),w(o),p(o,e=>be?.(e));var c=j(o,2),d=e=>{var t=Bn();l(t,21,()=>n.message.attachments,e=>e.id,(e,t)=>{{let r=D(()=>Ze(g(t)));We(e,{get upload(){return g(t)},get url(){return g(r)},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact}})}}),w(t),u(e,t)};M(c,e=>{n.message.attachments?.length&&e(d)});var f=j(c,2),m=e=>{var r=Un(),i=j(F(r),2),a=e=>{var r=Vn();t(`click`,r,()=>n.onRetry?.(n.message)),u(e,r)};M(i,e=>{n.onRetry&&e(a)});var o=j(i,2),s=e=>{var r=Hn();t(`click`,r,()=>n.onDiscard?.(n.message)),u(e,r)};M(o,e=>{n.onDiscard&&e(s)}),w(r),u(e,r)};M(f,e=>{g(s)&&e(m)}),u(e,i)};M(z,e=>{g(m)?e(ne):g(d)?e(re,1):e(V,-1)});var ie=j(z,2),ae=e=>{var r=qn();let i;var a=j(F(r),2),o=e=>{var t=Kn(),r=B(t),i=F(r,!0);w(r);var a=j(r,2),o=e=>{var t=Gn(),r=F(t,!0);w(t),y(()=>{R(t,`datetime`,n.message.thread_state?.last_reply_at),c(r,g(S))}),u(e,t)};M(a,e=>{g(S)&&e(o)}),y(e=>c(i,e),[()=>Fe(n.message)]),u(e,t)};M(a,e=>{(g(b)||g(T))&&e(o)}),w(r),y((e,t)=>{i=C(r,1,`thread-hint tooltip`,null,i,{"has-replies":g(b),"is-open":g(T)}),R(r,`data-tooltip`,e),R(r,`aria-label`,t)},[()=>Oe(n.message,n.selectedThreadID),()=>Oe(n.message,n.selectedThreadID)]),t(`click`,r,()=>n.onOpenThread(n.message)),u(e,r)};M(ie,e=>{g(E)&&e(ae)}),w(L);var H=j(L,2),oe=e=>{var r=Yn(),i=F(r),c=j(i,2),l=j(c,2),d=e=>{var r=Jn();y(()=>r.disabled=g(o)||g(s)||a()),t(`click`,r,()=>n.onDeleteMessage?.(n.message)),u(e,r)};M(l,e=>{g(f)&&n.onDeleteMessage&&e(d)}),w(r),y(e=>{i.disabled=g(o)||g(s),R(c,`data-tooltip`,e),c.disabled=g(o)||g(s)},[()=>Oe(n.message,n.selectedThreadID)]),t(`click`,i,()=>n.onReply(n.message,n.replyContext)),t(`click`,c,()=>n.onOpenThread(n.message)),u(e,r)};M(H,e=>{!g(m)&&!g(d)&&e(oe)}),w(N),p(N,e=>A?.(e)),y((e,t)=>{te=C(N,1,`message-row`,null,te,e),R(N,`data-message-id`,n.message.id),c(I,t)},[()=>({selected:n.selected,"is-pending":g(o),"is-failed":g(s),"is-deleted":g(d),"is-preamble":!!g(m),"is-preamble-collapsed":g(m)?.final===!0,"is-preamble-live":g(m)?.final===!1,"before-final-message":g(_),"after-preamble":g(h),"can-open-thread":g(E)}),()=>n.index===0?``:Ge(n.message.created_at)]),u(e,N),ee()}U([`click`]);var Qn=a(` deleted bot`,1),$n=a(`bot`),er=a(` `,1),tr=a(` `),nr=a(`
          `);function rr(e,n){k(n,!0);let r=x(n,`canDeleteAnyMessage`,3,!1),i=x(n,`deletingMessageIDs`,19,()=>new Set),a=D(()=>n.group.messages[0]?.author),o=D(()=>g(a)?.kind===`bot`),s=D(()=>!g(o)&&!!n.currentUserID&&n.group.authorID===n.currentUserID);var d=nr();let f;var p=F(d);{let e=D(()=>n.group.authorDeleted?`avatar`:`avatar avatar-button`),t=D(()=>n.group.authorDeleted?void 0:`View profile for ${n.group.authorName}`);Ie(p,{get class(){return g(e)},get id(){return n.group.authorID},get name(){return n.group.authorName},get src(){return n.group.authorAvatarURL},size:38,get buttonLabel(){return g(t)},onclick:()=>n.onOpenProfile(n.group.messages[0]?.author)})}var m=j(p,2),h=F(m),_=F(h),v=e=>{var t=Qn(),r=B(t),i=F(r,!0);w(r),le(2),y(()=>c(i,n.group.authorName)),u(e,t)},b=e=>{var r=er(),i=B(r),a=F(i,!0);w(i);var s=j(i,2),l=e=>{u(e,$n())};M(s,e=>{g(o)&&e(l)}),y(()=>c(a,n.group.authorName)),t(`click`,i,()=>n.onOpenProfile(n.group.messages[0]?.author)),u(e,r)};M(_,e=>{n.group.authorDeleted?e(v):e(b,-1)});var S=j(_,2),T=e=>{var t=tr(),r=F(t,!0);w(t),y(e=>c(r,e),[()=>Ce(n.group.authorHandle)]),u(e,t)};M(S,e=>{n.group.authorHandle&&e(T)});var E=j(S,2),O=F(E,!0);w(E),w(h),l(j(h,2),19,()=>n.group.messages,e=>e.id,(e,t,a)=>{{let o=D(()=>n.selectedThreadID===g(t).id),s=D(()=>i().has(g(t).id));Zn(e,{get message(){return g(t)},get index(){return g(a)},get previousMessage(){return n.group.messages[g(a)-1]},get nextMessage(){return n.group.messages[g(a)+1]},get selected(){return g(o)},get replyContext(){return n.replyContext},get selectedThreadID(){return n.selectedThreadID},get currentUserID(){return n.currentUserID},get canDeleteAnyMessage(){return r()},get deleting(){return g(s)},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage}})}}),w(m),w(d),y(e=>{f=C(d,1,`message-group`,null,f,{"is-agent":g(o),"is-self":g(s)}),c(O,e)},[()=>Ge(n.group.timestamp)]),u(e,d),ee()}U([`click`]);var ir=a(`
          Send a message in Markdown — code fences, lists, links all work. Threads open from any message.
          `),ar=a(`
          `),or=a(`
          `),sr=a(`
          New
          `),cr=a(`
          `),lr=a(`
          `),ur=a(`
          `);function dr(e,n){k(n,!0);let r=x(n,`loading`,3,!1),a=x(n,`unreadCount`,3,0),s=x(n,`unreadBoundarySeq`,3,0),l=x(n,`unreadBoundaryLoaded`,3,!1),p=x(n,`unreadSince`,3,``),m=x(n,`hasOlder`,3,!1),h=x(n,`hasNewer`,3,!1),_=x(n,`loadingOlder`,3,!1),v=x(n,`loadingNewer`,3,!1),b=x(n,`prepending`,3,!1),S=x(n,`canDeleteAnyMessage`,3,!1),T=x(n,`deletingMessageIDs`,19,()=>new Set),O=1.5,A=E(void 0),N=E(void 0),te=E(void 0),I=E(0),L=E(0),z=D(()=>n.selectedDirect?`dm`:`channel`),ne=E(``),ie=E(-1),ae=E(0),H=D(()=>g(ne)===n.viewKey&&g(ie)===s()&&a()<=g(ae)?0:a()),oe=E(``),ce=E(0),U=E(!1),ue,de=D(()=>g(H)>0?g(H):g(ce));function fe(){ue&&=(window.clearTimeout(ue),void 0)}d(()=>{if(g(oe)&&g(oe)!==n.viewKey){fe(),V(ce,0),V(oe,``),V(U,!1);return}if(g(H)>0){fe(),V(oe,n.viewKey,!0),V(ce,g(H),!0),V(U,!1);return}g(ce)>0&&!g(U)&&(V(U,!0),ue=window.setTimeout(()=>{ue=void 0,!(g(H)>0)&&(V(ce,0),V(oe,``),V(U,!1))},180))}),P(fe);let pe=D(()=>{let e=s()+1;if(g(de)<=0||e<=0)return!1;let t=1/0,r=0;for(let e of n.messages){if(e.parent_message_id)continue;let n=e.channel_seq||0;n<=0||(t=Math.min(t,n),r=Math.max(r,n))}return t<=e&&r>=e}),W=D(()=>l()&&g(pe)),me=D(()=>{let e=[],t=!1,r=e=>!g(W)||e.parent_message_id||e.author?.id===n.currentUserID||e.author_id===n.currentUserID?!1:g(de)>0&&(e.channel_seq||0)>s();for(let i of Be(n.messages)){let n=-1;if(!t){for(let e=0;en.messages.map(e=>{let t=e.preamble_block;if(!t)return``;let n=t.items.map(e=>e.type===`commentary`?`${e.id}\u0000${e.body}`:`${e.id}\u0000${e.name}\u0000${e.detail||``}\u0000${e.full}`).join(``);return`${e.id}\u0000${t.final?`final`:`live`}\u0000${n}`}).filter(Boolean).join(``)),_e=E(!0),ve=E(!1),ye,be=0,xe=``,Se,G=!1,Ce=!1,we=!1,K=!1,q=0,J=0;function Te(e=!0){return e&&(G=!1,V(ve,!0)),J+=1,J}function Y(e,t){return Ge(e)&&t===J}function X(e=2){let t=++q;Ce=!0;let n=e=>{requestAnimationFrame(()=>{if(t===q){if(e<=1){Ce=!1;return}n(e-1)}})};n(e)}function Z(){if(!g(A))return 0;let e=g(A).getScrollSize()+g(I);return Math.max(0,e-g(A).getScrollOffset()-g(A).getViewportSize())}function Ee(){return!g(A)||Z()<=O}function Q(e=O){return!g(A)||Z()<=e}function Oe(){if(!g(A))return{atBottom:!0,nearOlder:!1,nearNewer:!1};let e=Z();return{atBottom:Ee(),nearOlder:g(A).getScrollOffset()-g(I)<=160,nearNewer:e<=260}}function ke(){n.onHistorySettled?.(Oe())}function Ae(){h()||g(H)>0||n.onReachedBottom?.()}d(()=>{if(v()){K=!0;return}K&&(K=!1,we=!1)});async function je(){!g(A)||g(me).length===0||(he=!h(),await Me(Te()))}async function Me(e=Te()){if(!g(A)||g(me).length===0)return;let t=n.viewKey;document.activeElement===g(N)&&g(N).blur();let r=-1;for(let n=0;n<6;n+=1){if(!g(A)||!Y(t,e)||(he=!h(),X(2),g(A).scrollToIndex(g(me).length-1,{align:`end`}),await o(),await Ve(),!g(A)||!Y(t,e)))return;let n=g(A).getScrollSize(),i=r>=0&&Math.abs(n-r)<=O;if(r=n,i&&Ee())break}V(ve,!0),he=!h(),Ee()&&(V(_e,!0),Ae()),ke()}d(()=>{if(!g(N))return;let e=g(N),t=e=>{e.deltaY>0&&!G&&!Ce&&h()&&Ee()&&(we=!0,n.onLoadNewer?.(`wheel`))};return e.addEventListener(`wheel`,t,{passive:!0}),()=>{e.removeEventListener(`wheel`,t)}});function Ne(e){return g(me).findIndex(t=>t.kind===`group`&&t.group.messages.some(t=>t.id===e))}let Pe=D(()=>{if(!m()||r()||!b())return 0;let e=Math.max(g(L),480);return Math.max(4,Math.ceil(e/52))});d(()=>{if(!g(N))return;let e=()=>{g(N)&&V(L,g(N).clientHeight,!0)};e();let t=new ResizeObserver(e);return t.observe(g(N)),()=>t.disconnect()});let Fe=0;d(()=>{if(!g(te)||!g(N)){V(I,0),Fe=0;return}let e=g(te),t=()=>{let t=e.offsetHeight,n=Fe;if(V(I,t,!0),Fe=t,n>0&&t!==n){let e=t-n;g(A)&&g(A).getScrollOffset()>0&&g(A).scrollBy(e)}};t();let n=new ResizeObserver(t);return n.observe(e),()=>{n.disconnect(),V(I,0),Fe=0}});function Ie(){return g(me).findIndex(e=>e.kind===`divider`)}function Le(){if(!g(W)||g(de)<=0)return``;for(let e of n.messages)if(!e.parent_message_id&&!(e.author?.id===n.currentUserID||e.author_id===n.currentUserID)&&(e.channel_seq||0)>s())return e.id;return``}function Re(){let e=0;for(let t of n.messages)e=Math.max(e,t.channel_seq||0);return e}function ze(){V(ne,n.viewKey,!0),V(ie,s()),V(ae,a()),n.onMarkRead?.(Re())}function Ve(){return new Promise(e=>requestAnimationFrame(()=>e()))}function He(e){if(!g(N)||!g(A))return!1;let t=g(N).querySelector(e);if(!t)return!1;let n=t.getBoundingClientRect().top-g(N).getBoundingClientRect().top;return Math.abs(n)<=O?!0:(g(A).scrollBy(n),!1)}function Ue(){if(!g(N))return null;let e=g(N).getBoundingClientRect(),t=new Map(n.messages.map((e,t)=>[e.id,t])),r=1/0,i=-1;for(let n of g(N).querySelectorAll(`[data-message-id]`)){let a=n.getBoundingClientRect();if(a.bottome.bottom)continue;let o=t.get(n.dataset.messageId||``);o!==void 0&&(r=Math.min(r,o),i=Math.max(i,o))}return i<0?null:{first:r,last:i}}function We(e){if(!g(N)||!g(A))return!1;let t=n.messages.findIndex(t=>t.id===e),r=Ue();return t<0||!r?!1:r.first>t?(g(A).scrollBy(-Math.max(80,g(N).clientHeight*.85)),!0):r.lastNe(e),`[data-message-id="${CSS.escape(e)}"]`,e),!0}function Je(e=!0){if(!g(A)||Ie()<0)return!1;he=!1;let t=n.viewKey,r=Te();return Ke(t,r,()=>Ie(),`[data-unread-divider='true']`,Le()).then(i=>{e&&!i&&Y(t,r)&&n.onJumpToUnread?.()}),!0}function Ye(){if(!(g(W)&&Je(!1))&&n.onJumpToUnread){n.onJumpToUnread();return}}function Xe(){if(!g(A))return null;if(Ee())return{atBottom:!0};let e=g(A).getScrollOffset(),t=g(A).findItemIndex(e),n=Math.max(0,e-g(I));for(let e=Math.max(0,t);e(n.onListRef({scrollToBottom:je,scrollToMessage:qe,scrollToDivider:Je,captureState:Xe,isAtBottom:()=>Ee(),isNearBottom:e=>Q(e)}),()=>n.onListRef(null))),d(()=>{let e=n.viewKey,t=g(me).length,r=g(ge);if(e!==ye){ye=e,be=t,xe=r,Se=n.restoreState,he=!0,V(_e,!0),V(ve,!1),we=!1,G=!0,Qe(e,n.restoreState,!0);return}let i=n.restoreState;if(i&&i!==Se){if(Se=i,i.atBottom){be=t,xe=r,G=!0,Qe(e,i,!0);return}if(i.anchorMessageID){be=t,xe=r,G=!0,Qe(e,i,!1);return}}let a=t!==be||r!==xe;a&&he&&!h()&&!G?Me():a&&!G&&Ze(e),be=t,xe=r});async function Ze(e){await o(),await Ve(),e===ye&&ke()}async function Qe(e,t,n){let r=Te(!1),i=!1;if(await o(),await new Promise(e=>requestAnimationFrame(e)),Y(e,r)){if(t&&!t.atBottom&&t.anchorMessageID){let i=await et(e,r,t.anchorMessageID,t.anchorPixelOffset??0);if(!Y(e,r))return;!i&&n?await Me(r):he=!1}else g(me).findIndex(e=>e.kind===`divider`)>=0&&g(A)?(i=!0,await Ke(e,r,()=>Ie(),`[data-unread-divider='true']`,Le()),he=!1):await Me(r);await new Promise(e=>requestAnimationFrame(e)),Y(e,r)&&(G=!1,V(ve,!0),V(_e,Ee(),!0),he=g(_e)&&!h(),i||(g(_e)&&Ae(),g(A)&&tt(g(A).getScrollOffset())),ke())}}async function et(e,t,n,r){if(!g(A))return!1;let i=Ne(n);if(i<0)return!1;for(let n=0;n<8;n++){if(!g(A)||!Y(e,t))return!1;let n=g(I)+g(A).getItemOffset(i)+r;if(X(),g(A).scrollTo(n),await new Promise(e=>requestAnimationFrame(e)),!Y(e,t))return!1;let a=g(I)+g(A).getItemOffset(i)+r,o=g(A).getScrollOffset();if(Math.abs(a-n)<1&&Math.abs(o-n)<1)break}return!0}function tt(e){if(!g(A)||G&&!g(ve))return;let t=Z(),r=Ee(),i=r||t<=260;he=r&&!h(),V(_e,r,!0),h()||(we=!1),!r&&m()&&e-g(I)<=160&&n.onLoadOlder?.(),!Ce&&h()&&i&&!we&&(we=!0,n.onLoadNewer?.(`scroll`)),r&&!Ce&&Ae()}var nt=ur();let rt;var it=F(nt),at=e=>{var t=ir(),r=F(t),i=F(r),a=e=>{u(e,f(`@`))},o=e=>{u(e,f(`#`))};M(i,e=>{n.selectedDirect?e(a):e(o,-1)}),w(r);var s=j(r,2),l=F(s),d=e=>{var t=f();y(e=>c(t,`This is the start of your conversation with ${e??``}.`),[()=>De(n.selectedDirect,n.currentUserID)]),u(e,t)},p=e=>{var t=f();y(()=>c(t,`Welcome to #${n.selectedChannel.name??``}!`)),u(e,t)},m=e=>{u(e,f(`Pick a channel to get started.`))};M(l,e=>{n.selectedDirect?e(d):n.selectedChannel?e(p,1):e(m,-1)}),w(s),le(2),w(t),u(e,t)},ot=e=>{var t=cr(),r=j(F(t),2),a=e=>{var t=ar();Tn(F(t),{direction:`older`,get rows(){return g(Pe)}}),w(t),re(t,e=>V(te,e),()=>g(te)),y(()=>R(t,`aria-hidden`,_()?`false`:`true`)),u(e,t)};M(r,e=>{g(Pe)>0&&e(a)}),re($e(j(r,2),{get data(){return g(me)},getKey:e=>e.id,get scrollRef(){return g(N)},get shift(){return b()},get startMargin(){return g(I)},onscroll:tt,children:(e,t=se,r=se)=>{var a=i(),o=B(a),s=e=>{Tn(e,{get direction(){return t().direction},get rows(){return t().rows}})},l=e=>{var n=or(),r=F(n),i=F(r,!0);w(r),w(n),y(()=>c(i,t().label)),u(e,n)},d=e=>{var t=sr();let n;y(()=>n=C(t,1,`new-messages-divider`,null,n,{"is-clearing":g(U)})),u(e,t)},f=e=>{rr(e,{get group(){return t().group},get currentUserID(){return n.currentUserID},get selectedThreadID(){return n.selectedThreadID},get replyContext(){return g(z)},get canDeleteAnyMessage(){return S()},get deletingMessageIDs(){return T()},get onOpenProfile(){return n.onOpenProfile},get onReply(){return n.onReply},get onOpenThread(){return n.onOpenThread},get onJumpToQuote(){return n.onJumpToQuote},get onOpenImage(){return n.onOpenImage},get onOpenArtifact(){return n.onOpenArtifact},get onRetry(){return n.onRetry},get onDiscard(){return n.onDiscard},get onDeleteMessage(){return n.onDeleteMessage}})};M(o,e=>{t().kind===`loader`?e(s):t().kind===`day`?e(l,1):t().kind===`divider`?e(d,2):t().kind===`group`&&e(f,3)}),u(e,a)},$$slots:{default:!0}}),e=>V(A,e,!0),()=>g(A)),w(t),re(t,e=>V(N,e),()=>g(N)),u(e,t)};M(it,e=>{!r()&&n.messages.length===0?e(at):n.messages.length>0&&e(ot,1)});var st=j(it,2),ct=e=>{var n=lr();let r;var i=F(n),a=F(i),o=F(a);w(a),w(i);var s=j(i,2);w(n),y(e=>{r=C(n,1,`unread-bar`,null,r,{"is-clearing":g(U)}),R(n,`aria-hidden`,g(U)?`true`:void 0),i.disabled=g(U),R(i,`aria-label`,e),c(o,`${(g(ce)>99?`99+`:g(ce))??``} new message${g(ce)===1?``:`s`}${p()?` since ${p()}`:``}`),s.disabled=g(U)},[()=>`Jump to ${g(ce)>0?g(ce):``} new message${g(ce)===1?``:`s`}`.replace(/ +/g,` `)]),t(`click`,i,Ye),t(`click`,s,ze),u(e,n)};M(st,e=>{!r()&&n.messages.length>0&&g(ce)>0&&e(ct)}),w(nt),y(()=>rt=C(nt,1,`messages`,null,rt,{"is-revealing":r()||!g(ve)&&n.messages.length>0})),t(`pointerdown`,nt,function(...e){n.onActivateMessageComposer?.apply(this,e)}),t(`pointerup`,nt,function(...e){n.onInlineImagePointerUp?.apply(this,e)}),u(e,nt),ee()}U([`pointerdown`,`pointerup`,`click`]);var fr=a(``),pr=a(``);function mr(e,n){k(n,!0);let r=x(n,`deleting`,3,!1),i=x(n,`error`,3,``),a=D(()=>n.message.author?.display_name||`Local User`);function o(){r()||n.onClose()}var s=pr(),l=F(s),d=j(l,2),f=F(d),p=j(F(f),2);w(f);var m=j(f,2),h=j(F(m),2),_=F(h);{let e=D(()=>n.message.author?.id||n.message.author_id),t=D(()=>n.message.author?.avatar_url);Ie(_,{class:`avatar`,get id(){return g(e)},get name(){return g(a)},get src(){return g(t)},size:36,loading:`eager`,fetchPriority:`auto`})}var v=j(_,2),b=F(v),S=F(b),C=F(S,!0);w(S);var T=j(S,2),E=F(T,!0);w(T),w(b);var O=j(b,2),A=F(O,!0);w(O),w(v),w(h);var N=j(h,2),te=e=>{var t=fr(),n=F(t,!0);w(t),y(()=>c(n,i())),u(e,t)};M(N,e=>{i()&&e(te)});var P=j(N,2),I=F(P),L=j(I,2),z=F(L,!0);w(L),w(P),w(m),w(d),w(s),y(e=>{l.disabled=r(),p.disabled=r(),c(C,g(a)),R(T,`datetime`,n.message.created_at),c(E,e),c(A,n.message.body),I.disabled=r(),L.disabled=r(),c(z,r()?`Deleting...`:`Delete`)},[()=>Ge(n.message.created_at)]),t(`click`,l,o),t(`click`,p,o),t(`click`,I,o),t(`click`,L,function(...e){n.onConfirm?.apply(this,e)}),u(e,s),ee()}U([`click`]);var hr=6500,gr=a(`
          `);function _r(e,t){k(t,!0);let n=D(()=>t.entries.filter(e=>e.userID!==t.currentUserID));function r(e,t=`Someone`){return e?.display_name?.trim()||(e?.handle?`@${e.handle}`:t)}let i=D(()=>g(n).length===0?``:g(n).length===1?`${r(g(n)[0].user)} is typing…`:g(n).length===2?`${r(g(n)[0].user)} and ${r(g(n)[1].user)} are typing…`:g(n).length===3?`${r(g(n)[0].user)}, ${r(g(n)[1].user)}, and ${r(g(n)[2].user)} are typing…`:`Several people are typing…`);var a=gr();let o;var s=j(F(a),2),l=F(s,!0);w(s),w(a),y(()=>{o=C(a,1,`typing-indicator`,null,o,{visible:g(n).length>0}),c(l,g(i))}),u(e,a),ee()}var vr=45e3,yr=a(`
          `),br=a(`
          `),xr=a(`
          `);function Sr(e,t){k(t,!0);function n(e){return e.kind===`tool`&&e.toolName?!e.text||e.text===e.toolName?e.toolName:`${e.toolName}: ${e.text}`:e.text}function r(e){switch(e){case`tool`:return`⚙`;case`thinking`:case`commentary`:return`✦`;case`plan`:return`☰`;case`patch`:return`±`;case`command_output`:return`›`;case`error`:return`✕`;default:return`·`}}var a=i(),o=B(a),s=e=>{var i=xr();l(i,21,()=>t.turns,e=>e.turnId,(e,t)=>{var i=br();l(i,21,()=>g(t).lines,e=>e.id,(e,t)=>{var i=yr();let a;var o=F(i),s=F(o,!0);w(o);var l=j(o,2),d=F(l,!0);w(l),w(i),y((e,n)=>{a=C(i,1,`agent-progress__line svelte-6vwkyv`,null,a,{"agent-progress__line--done":g(t).finalized}),R(i,`data-kind`,g(t).kind),c(s,e),c(d,n)},[()=>r(g(t).kind),()=>n(g(t))]),u(e,i)}),w(i),u(e,i)}),w(i),u(e,i)};M(o,e=>{t.turns.length>0&&e(s)}),u(e,a),ee()}var Cr=a(`
          Agent is responding…
          `);function wr(e,t){var n=Cr();let r;y(()=>r=C(n,1,`typing-indicator agent-responding`,null,r,{visible:t.active})),u(e,n)}var Tr=a(`

          `),Er=a(``);function Dr(e,n){k(n,!0);var r=Er(),i=F(r),a=j(i,2),o=F(a),s=j(F(o),2);w(o);var l=j(o,2),d=F(l),f=j(F(d),2);O(f),w(d);var p=j(d,2),m=e=>{var t=Tr(),r=F(t,!0);w(t),y(()=>c(r,n.status)),u(e,t)};M(p,e=>{n.status&&e(m)});var g=j(p,2),_=F(g);le(2),w(g),w(l),w(a),w(r),y(()=>A(f,n.channelName)),t(`click`,i,function(...e){n.onClose?.apply(this,e)}),t(`click`,s,function(...e){n.onClose?.apply(this,e)}),h(`submit`,l,e=>{e.preventDefault(),n.onCreate()}),t(`input`,f,e=>n.onChannelName(e.currentTarget.value)),t(`click`,_,function(...e){n.onClose?.apply(this,e)}),u(e,r),ee()}U([`click`,`input`]);var Or=a(``),kr=a(`
          No matching people yet
          `),Ar=a(``);function jr(e,n){k(n,!0);let r=D(()=>n.memberID.trim().toLowerCase()),i=D(()=>n.people.filter(e=>e.id!==n.currentUserID).filter(e=>!g(r)||e.display_name.toLowerCase().includes(g(r))||e.handle?.toLowerCase().includes(g(r))||e.id.toLowerCase().includes(g(r))));var a=Ar(),o=F(a),s=j(o,2),d=F(s),f=j(F(d),2);w(d);var p=j(d,2),m=F(p),_=j(F(m),2);O(_),w(m);var v=j(m,2),b=F(v);l(b,17,()=>g(i),e=>e.id,(e,r)=>{var i=Or(),a=F(i);Ie(a,{class:`dm-avatar`,get id(){return g(r).id},get name(){return g(r).display_name},get src(){return g(r).avatar_url},size:32});var o=j(a,2),s=F(o),l=F(s,!0);w(s);var d=j(s,2),f=F(d,!0);w(d),w(o),w(i),y(e=>{c(l,g(r).display_name),c(f,e)},[()=>Ce(g(r).handle)||g(r).id]),t(`click`,i,()=>n.onStart(g(r).id)),u(e,i)});var x=j(b,2),S=e=>{u(e,kr())};M(x,e=>{g(i).length===0&&e(S)}),w(v);var C=j(v,2),T=F(C);le(2),w(C),w(p),w(s),w(a),y(()=>A(_,n.memberID)),t(`click`,o,function(...e){n.onClose?.apply(this,e)}),t(`click`,f,function(...e){n.onClose?.apply(this,e)}),h(`submit`,p,e=>{e.preventDefault(),n.onStart(n.memberID)}),t(`input`,_,e=>n.onMemberID(e.currentTarget.value)),t(`click`,T,function(...e){n.onClose?.apply(this,e)}),u(e,a),ee()}U([`click`,`input`]);var Mr=a(``),Nr=a(` `),Pr=a(`
          `),Fr=a(`
          `),Ir=a(``);function Lr(e,n){k(n,!0);let r=x(n,`homeHref`,3,`/`);function i(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var a=Ir(),o=F(a),s=j(o,4),d=F(s);l(d,17,()=>n.workspaces,e=>e.id,(e,r)=>{var a=Pr();let o;var s=F(a),l=F(s),d=e=>{var t=Mr();y(e=>R(t,`src`,e),[()=>pe(g(r).icon_url)]),u(e,t)},f=e=>{var t=Nr(),n=F(t,!0);w(t),y(e=>c(n,e),[()=>Re(g(r).name)]),u(e,t)};M(l,e=>{g(r).icon_url?e(d):e(f,-1)}),w(s),w(a),y(e=>{o=C(a,1,`guild-wrap`,null,o,{active:g(r).id===n.selectedWorkspaceID}),R(s,`title`,g(r).name),R(s,`aria-label`,g(r).name),R(s,`href`,e)},[()=>n.hrefForWorkspace(g(r).id)]),t(`click`,s,e=>{i(e)&&(e.preventDefault(),n.onSelectWorkspace(g(r).id))}),u(e,a)});var f=j(d,2);w(s);var p=j(s,2),m=e=>{var r=Fr(),i=F(r);O(i),w(r),y(()=>A(i,n.workspaceName)),h(`submit`,r,e=>{e.preventDefault(),n.onCreateWorkspace()}),t(`input`,i,e=>n.onWorkspaceName(e.currentTarget.value)),u(e,r)};M(p,e=>{n.showWorkspaceCreate&&e(m)}),w(a),y(()=>R(o,`href`,r())),t(`click`,f,function(...e){n.onToggleWorkspaceCreate?.apply(this,e)}),u(e,a),ee()}U([`click`,`input`]);var Rr=a(`Drag with a pointer, use Arrow Up and Arrow Down while focused, or open the move menu.`),zr=a(``),Br=a(` `,1),Vr=a(` `),Hr=a(``),Ur=a(``),Wr=a(`
          `);function Gr(e,n){k(n,!0);let r=E(``),i=E(``),a=E(!0),s=E(!1),f=E(``),p=E(void 0),m,_=E(``),v=D(()=>n.expanded?n.channels:n.channels.filter(e=>e.id===n.selectedChannelID&&!n.selectedDirectID||(e.unread_count||0)>0));function b(e){V(_,``),queueMicrotask(()=>{V(_,e,!0)})}function x(e,t,r){if(!e||!t||e===t)return;let i=n.channels.map(e=>e.id),a=i.indexOf(e);if(a<0)return;i.splice(a,1);let o=i.indexOf(t);if(o<0)return;i.splice(o+ +!r,0,e),n.onReorder(i);let s=n.channels.find(t=>t.id===e);s&&b(`Moved #${s.name} to position ${i.indexOf(e)+1} of ${i.length}`)}function S(e,t){let r=n.channels.findIndex(t=>t.id===e),i=r+t;r<0||i<0||i>=n.channels.length||x(e,n.channels[i].id,t<0)}function T(e,t){V(s,!0),V(f,``),V(r,t,!0),e.dataTransfer?.setData(`text/plain`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`move`)}function O(e,t){if(!g(r)||g(r)===t)return;e.preventDefault();let n=e.currentTarget;V(i,t,!0),V(a,e.clientY{V(s,!1)},0)}async function te(e,t){if(!g(s)){if(g(f)===e){V(f,``);return}m=t,V(f,e,!0),await o(),g(p)?.querySelector(`button:not(:disabled)`)?.focus()}}async function P(e=!1){V(f,``),e&&(await o(),m?.focus())}function I(e,t){S(e,t),P(!0)}function L(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}d(()=>{n.expanded||(V(f,``),A(),V(s,!1))});var z=Wr();let ne;var ie=F(z),ae=F(ie),H=j(ae,2);w(ie);var oe=j(ie,2),se=F(oe),ce=e=>{u(e,Rr())};M(se,e=>{n.expanded&&e(ce)});var le=j(se,2);l(le,19,()=>g(v),e=>e.id,(e,o,s)=>{let l=D(()=>g(o).unread_count||0);var d=Hr();let m;var _=F(d),v=e=>{var r=Br(),i=B(r),a=j(i,2),c=e=>{var r=zr(),i=F(r),a=j(i,2);w(r),re(r,e=>V(p,e),()=>g(p)),y(()=>{R(r,`aria-label`,`Move #${g(o).name}`),i.disabled=g(s)<=0,a.disabled=g(s)<0||g(s)>=n.channels.length-1}),t(`keydown`,r,e=>{e.key===`Escape`&&(e.preventDefault(),P(!0))}),t(`click`,i,()=>I(g(o).id,-1)),t(`click`,a,()=>I(g(o).id,1)),u(e,r)};M(a,e=>{g(f)===g(o).id&&e(c)}),y(()=>{R(i,`aria-label`,`Move #${g(o).name}`),R(i,`aria-expanded`,g(f)===g(o).id)}),t(`click`,i,e=>void te(g(o).id,e.currentTarget)),h(`dragstart`,i,e=>T(e,g(o).id)),h(`dragend`,i,N),t(`keydown`,i,e=>{e.key===`ArrowUp`||e.key===`ArrowDown`?(e.preventDefault(),V(f,``),S(g(o).id,e.key===`ArrowUp`?-1:1)):e.key===`Escape`&&V(f,``)}),u(e,r)};M(_,e=>{n.expanded&&e(v)});var b=j(_,2);let E;var k=j(F(b),2),A=F(k,!0);w(k);var ee=j(k,2),z=e=>{var t=Vr(),n=F(t,!0);w(t),y(()=>{R(t,`aria-label`,`${g(l)} unread`),c(n,g(l)>99?`99+`:g(l))}),u(e,t)};M(ee,e=>{g(l)>0&&!(g(o).id===n.selectedChannelID&&!n.selectedDirectID)&&e(z)}),w(b),w(d),y(e=>{m=C(d,1,`channel-row`,null,m,{reorderable:n.expanded,dragging:g(r)===g(o).id,"drop-before":g(i)===g(o).id&&g(a),"drop-after":g(i)===g(o).id&&!g(a)}),R(b,`href`,e),E=C(b,1,`nav-item channel`,null,E,{active:g(o).id===n.selectedChannelID&&!n.selectedDirectID,"has-unread":g(l)>0&&!(g(o).id===n.selectedChannelID&&!n.selectedDirectID)}),c(A,g(o).name)},[()=>n.hrefForChannel(g(o).id)]),h(`dragover`,d,e=>{n.expanded&&O(e,g(o).id)}),h(`drop`,d,e=>{e.preventDefault(),n.expanded&&(x(g(r),g(o).id,g(a)),N())}),t(`focusout`,d,e=>{e.currentTarget.contains(e.relatedTarget)||V(f,``)}),t(`click`,b,e=>{L(e)&&(e.preventDefault(),n.onSelectChannel(g(o).id))}),u(e,d)});var U=j(le,2),ue=e=>{u(e,Ur())};M(U,e=>{n.expanded&&n.channels.length===0&&e(ue)}),w(oe);var de=j(oe,2),fe=F(de,!0);w(de),w(z),y(()=>{ne=C(z,1,`nav-section`,null,ne,{collapsed:!n.expanded}),R(ae,`aria-expanded`,n.expanded),R(oe,`hidden`,!n.expanded&&g(v).length===0),c(fe,g(_))}),t(`click`,ae,function(...e){n.onToggle?.apply(this,e)}),t(`click`,H,function(...e){n.onCreateChannel?.apply(this,e)}),u(e,z),ee()}U([`click`,`focusout`,`keydown`]);var Kr=a(` `),qr=a(``),Jr=a(``),$=a(`
          `),Yr=a(``),Xr=a(`
          `),Zr=a(`
          `);function Qr(e,n){k(n,!0);let r=E(``),i=D(()=>n.expanded?n.conversations:n.conversations.filter(e=>e.id===n.selectedDirectID||(e.unread_count||0)>0));function a(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}function o(e){V(r,g(r)===e?``:e,!0)}function s(){V(r,``)}var d=Zr();let f;var p=F(d),m=F(p),h=j(m,2);w(p);var _=j(p,2),v=F(_);l(v,17,()=>g(i),e=>e.id,(e,i)=>{let l=D(()=>Ye(g(i),n.currentUserID)),d=D(()=>g(i).unread_count||0),f=D(()=>g(i).id===n.selectedDirectID);var p=$();let m;var h=F(p);let _;var v=F(h);{let e=D(()=>g(l)?.id||g(i).id),t=D(()=>g(l)?.display_name),n=D(()=>G(g(l))?void 0:g(l)?.avatar_url);Ie(v,{class:`dm-avatar`,get id(){return g(e)},get name(){return g(t)},get src(){return g(n)},size:22})}var b=j(v,2),x=F(b,!0);w(b);var S=j(b,2),T=e=>{var t=Kr(),n=F(t,!0);w(t),y(()=>{R(t,`aria-label`,`${g(d)} unread`),c(n,g(d)>99?`99+`:g(d))}),u(e,t)},E=e=>{u(e,qr())};M(S,e=>{g(d)>0&&!g(f)?e(T):e(E,-1)}),w(h);var O=j(h,2),k=j(O,2),A=e=>{var r=Jr(),a=F(r);w(r),t(`click`,a,e=>{e.preventDefault(),e.stopPropagation(),s(),n.onHideDirect(g(i).id)}),u(e,r)};M(k,e=>{g(r)===g(i).id&&e(A)}),w(p),y((e,t,n)=>{m=C(p,1,`dm-row`,null,m,{active:g(f)}),R(h,`href`,e),_=C(h,1,`nav-item dm`,null,_,{active:g(f),"has-unread":g(d)>0&&!g(f)}),c(x,t),R(O,`aria-label`,n),R(O,`aria-expanded`,g(r)===g(i).id)},[()=>n.hrefForDirect(g(i).id),()=>De(g(i),n.currentUserID),()=>`Direct message actions for ${De(g(i),n.currentUserID)}`]),t(`click`,h,e=>{a(e)&&(e.preventDefault(),n.onSelectDirect(g(i).id))}),t(`click`,O,e=>{e.preventDefault(),e.stopPropagation(),o(g(i).id)}),t(`keydown`,O,e=>{e.key===`Escape`&&s()}),u(e,p)});var b=j(v,2),x=e=>{u(e,Yr())};M(b,e=>{n.expanded&&n.conversations.length===0&&e(x)});var S=j(b,2),T=e=>{var r=Xr(),i=F(r),a=F(i);w(i);var o=j(i,2);w(r),y(()=>c(a,`Closed ${n.hiddenDirectTitle??``}`)),t(`click`,o,function(...e){n.onUndoHideDirect?.apply(this,e)}),u(e,r)};M(S,e=>{n.expanded&&n.hiddenDirectTitle&&e(T)}),w(_),w(d),y(()=>{f=C(d,1,`nav-section`,null,f,{collapsed:!n.expanded}),R(m,`aria-expanded`,n.expanded),R(_,`hidden`,!n.expanded&&g(i).length===0)}),t(`click`,m,function(...e){n.onToggle?.apply(this,e)}),t(`click`,h,function(...e){n.onCreateDirect?.apply(this,e)}),u(e,d),ee()}U([`click`,`keydown`]);var $r=a(``),ei=a(`Connecting…`),ti=a(`
          `),ni=a(` `),ri=a(``),ii=a(``),ai=a(``);function oi(e,n){k(n,!0);let r=x(n,`showHeader`,3,!0),i=`clickclack:sidebar-sections:v1:`,a={channels:!0,directMessages:!0,people:!0},o=E(S({...a}));function s(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.channels==`boolean`&&typeof t.directMessages==`boolean`&&typeof t.people==`boolean`}function f(e){if(!e)return{...a};try{let t=window.localStorage.getItem(`${i}${e}`);if(!t)return{...a};let n=JSON.parse(t);return s(n)?n:{...a}}catch{return{...a}}}function p(e){if(V(o,{...g(o),[e]:!g(o)[e]},!0),n.workspaceID)try{window.localStorage.setItem(`${i}${n.workspaceID}`,JSON.stringify(g(o)))}catch{}}d(()=>{V(o,f(n.workspaceID),!0)});let m=1e6,_=E(S([]));function v(e,t){return`clickclack:sidebar-channel-order:v1:${t}:${e}`}function b(e){if(!e||e.length>m)return[];try{let t=JSON.parse(e);return Array.isArray(t)&&t.length<=1e4&&t.every(e=>typeof e==`string`&&e.length<=128)?[...new Set(t)]:[]}catch{return[]}}function T(e,t){if(!e||!t)return[];try{return b(window.localStorage.getItem(v(e,t)))}catch{return[]}}function O(e){if(V(_,e,!0),!(!n.workspaceID||!n.currentUser?.id))try{let t=v(n.workspaceID,n.currentUser.id),r=JSON.stringify(e);if(r.length>m){window.localStorage.removeItem(t);return}window.localStorage.setItem(t,r)}catch{}}function A(e){!n.workspaceID||!n.currentUser?.id||e.key===v(n.workspaceID,n.currentUser.id)&&V(_,b(e.newValue),!0)}let N=D(()=>{let e=new Map(n.channels.map(e=>[e.id,e]));return[...g(_).flatMap(t=>{let n=e.get(t);return n?(e.delete(t),[n]):[]}),...e.values()]});d(()=>{V(_,T(n.workspaceID,n.currentUser?.id||``),!0)});function te(e){return e.button===0&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey}var P=ai();h(`storage`,ie,A);var I=F(P),L=e=>{var r=ti(),i=F(r),a=F(i),o=e=>{var t=$r();y(e=>R(t,`src`,e),[()=>pe(n.workspaceIconURL)]),u(e,t)};M(a,e=>{n.workspaceIconURL&&e(o)});var s=j(a,2),l=F(s),d=F(l),f=F(d,!0);w(d),le(2),w(l);var p=j(l,2),m=e=>{u(e,ei())};M(p,e=>{n.connected||e(m)}),w(s),w(i);var h=j(i,2),g=F(h),_=F(g),v=F(_);w(_),w(g),w(h),w(r),y(()=>{c(f,n.workspaceName||`Pick a workspace`),R(g,`aria-label`,n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(g,`title`,n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(v,`d`,n.sidebarCollapsed?`m9 6 6 6-6 6`:`m15 6-6 6 6 6`)}),t(`click`,i,function(...e){n.onOpenWorkspaceSettings?.apply(this,e)}),t(`click`,g,function(...e){n.onToggleCollapse?.apply(this,e)}),u(e,r)};M(I,e=>{r()&&e(L)});var z=j(I,2),ne=F(z);Gr(ne,{get expanded(){return g(o).channels},get channels(){return g(N)},get selectedChannelID(){return n.selectedChannelID},get selectedDirectID(){return n.selectedDirectID},get hrefForChannel(){return n.hrefForChannel},get onSelectChannel(){return n.onSelectChannel},get onCreateChannel(){return n.onCreateChannel},onToggle:()=>p(`channels`),onReorder:O});var B=j(ne,2);{let e=D(()=>n.currentUser?.id);Qr(B,{get expanded(){return g(o).directMessages},get conversations(){return n.directConversations},get currentUserID(){return g(e)},get selectedDirectID(){return n.selectedDirectID},get hrefForDirect(){return n.hrefForDirect},get onSelectDirect(){return n.onSelectDirect},get onCreateDirect(){return n.onCreateDirect},get onHideDirect(){return n.onHideDirect},get hiddenDirectTitle(){return n.hiddenDirectTitle},get onUndoHideDirect(){return n.onUndoHideDirect},onToggle:()=>p(`directMessages`)})}var re=j(B,2);let ae;var H=F(re),oe=F(H);w(H);var se=j(H,2),ce=F(se);l(ce,17,()=>n.recentPeople,e=>e.id,(e,r)=>{let i=D(()=>Se(n.directConversations,g(r).id));var a=ni();let o;var s=F(a);Ie(s,{class:`dm-avatar`,get id(){return g(r).id},get name(){return g(r).display_name},get src(){return g(r).avatar_url},size:22});var l=j(s,2),d=F(l,!0);w(l),le(2),w(a),y(e=>{R(a,`href`,e),o=C(a,1,`nav-item dm`,null,o,{active:g(i)?.id===n.selectedDirectID||n.selectedProfile?.id===g(r).id}),c(d,g(r).display_name)},[()=>g(i)?n.hrefForDirect(g(i).id):`#`]),t(`click`,a,e=>{if(g(i)){if(!te(e))return;e.preventDefault(),n.onSelectDirect(g(i).id)}else e.preventDefault(),n.onOpenProfile(g(r))}),u(e,a)});var U=j(ce,2),ue=e=>{u(e,ri())};M(U,e=>{n.recentPeople.length===0&&e(ue)}),w(se),w(re),w(z);var de=j(z,2),fe=e=>{var r=ii(),i=F(r);Ie(i,{class:`dm-avatar`,get id(){return n.currentUser.id},get name(){return n.currentUser.display_name},get src(){return n.currentUser.avatar_url},size:28,loading:`eager`,fetchPriority:`auto`});var a=j(i,2),o=F(a),s=F(o,!0);w(o);var l=j(o,2),d=F(l,!0);w(l),w(a),le(2),w(r),y((e,t)=>{R(r,`aria-label`,e),c(s,n.currentUser.display_name),c(d,t)},[()=>`Account settings for ${n.currentUser.display_name} ${Ce(n.currentUser.handle)}`,()=>n.currentUser.handle?Ce(n.currentUser.handle):n.connected?`Active`:`Reconnecting…`]),t(`click`,r,function(...e){n.onOpenSettings?.apply(this,e)}),t(`contextmenu`,r,e=>{e.preventDefault(),n.onOpenSettings()}),u(e,r)};M(de,e=>{n.currentUser&&e(fe)}),w(P),y(()=>{ae=C(re,1,`nav-section`,null,ae,{collapsed:!g(o).people}),R(oe,`aria-expanded`,g(o).people),R(se,`hidden`,!g(o).people)}),t(`click`,oe,()=>p(`people`)),u(e,P),ee()}U([`click`,`contextmenu`]);var si=a(` `),ci=a(` `),li=a(``),ui=a(``),di=a(`
          User kind
          `),fi=a(`

          `),pi=a(`

          Blocked.

          `),mi=a(``),hi=a(``),gi=a(``),_i=a(`
          Moderation
          `),vi=a(`

          Profile

          Active
          Contact information
          Handle
          User ID
          About

          `,1);function yi(e,n){k(n,!0);let r=D(()=>n.profile.kind===`bot`?n.profile.owner_user_id?`Bot of ${n.profile.owner_user_id}`:`Service bot`:``),i=D(()=>n.moderation?.role||`member`),a=D(()=>!!n.moderation&&g(i)!==`owner`&&(n.currentUserRole===`owner`||n.currentUserRole===`moderator`&&(g(i)===`member`||g(i)===`guest`))),o=D(()=>n.currentUser?.id!==n.profile.id&&g(a)),s=D(()=>!!n.moderation?.blocked_at),l=D(()=>g(i));var d=vi(),f=B(d),p=F(f),m=j(F(p),2),h=F(m,!0);w(m),w(p);var _=j(p,2);w(f);var v=j(f,2),b=F(v);Ie(F(b),{class:`profile-avatar`,get id(){return n.profile.id},get name(){return n.profile.display_name},get src(){return n.profile.avatar_url},size:240,loading:`eager`,fetchPriority:`auto`}),w(b);var x=j(b,2),S=F(x),C=F(S),T=F(C),E=F(T,!0);w(T);var O=j(T,2),A=e=>{var t=si(),n=F(t,!0);w(t),y(()=>c(n,g(r))),u(e,t)};M(O,e=>{g(r)&&e(A)});var N=j(O,2),te=e=>{var t=ci(),r=F(t,!0);w(t),y(e=>c(r,e),[()=>Ce(n.profile.handle)]),u(e,t)};M(N,e=>{n.profile.handle&&e(te)}),w(C);var P=j(C,2),I=e=>{var r=li();t(`click`,r,function(...e){n.onEdit?.apply(this,e)}),u(e,r)};M(P,e=>{n.currentUser?.id===n.profile.id&&e(I)}),w(S);var L=j(S,4),R=F(L),z=e=>{var r=ui();t(`click`,r,()=>n.onMessage(n.profile.id)),u(e,r)};M(R,e=>{n.currentUser?.id!==n.profile.id&&e(z)});var ne=j(R,2);w(L);var re=j(L,2),V=F(re),ie=j(F(V),2),ae=e=>{var r=li();t(`click`,r,function(...e){n.onEdit?.apply(this,e)}),u(e,r)};M(ie,e=>{n.currentUser?.id===n.profile.id&&e(ae)}),w(V);var H=j(V,2),oe=j(F(H),2),se=j(F(oe),2),le=F(se,!0);w(se),w(oe),w(H);var U=j(H,2),ue=j(F(U),2),de=j(F(ue),2),fe=F(de,!0);w(de),w(ue),w(U);var pe=j(U,2),W=e=>{var t=di(),n=j(F(t),2),i=j(F(n),2),a=F(i,!0);w(i),w(n),w(t),y(()=>c(a,g(r))),u(e,t)};M(pe,e=>{n.profile.kind===`bot`&&e(W)}),w(re);var me=j(re,2),he=j(F(me),2),ge=F(he);w(he),w(me);var _e=j(me,2),ve=e=>{var r=_i(),i=F(r),a=j(F(i),2),o=F(a,!0);w(a),w(i);var d=j(i,2),f=e=>{var t=fi(),r=F(t);w(t),y(()=>c(r,`${n.moderation.posts_remaining??``} of ${n.moderation.post_limit??``} waiting-room posts left today.`)),u(e,t)};M(d,e=>{n.moderation.role===`guest`&&n.moderation.post_limit>0&&e(f)});var p=j(d,2),m=e=>{var t=fi(),r=F(t);w(t),y(e=>c(r,`Timed out until ${e??``}.`),[()=>new Date(n.moderation.timeout_until).toLocaleString()]),u(e,t)};M(p,e=>{n.moderation.timeout_until&&e(m)});var h=j(p,2),_=e=>{u(e,pi())};M(h,e=>{n.moderation.blocked_at&&e(_)});var v=j(h,2),b=F(v),x=e=>{var r=mi();t(`click`,r,()=>n.onApprove(n.profile.id)),u(e,r)};M(b,e=>{n.moderation.role===`guest`&&e(x)});var S=j(b,2),C=j(S,2),T=e=>{var r=hi();t(`click`,r,()=>n.onUnblock(n.profile.id)),u(e,r)},E=e=>{var r=gi();t(`click`,r,()=>n.onBlock(n.profile.id)),u(e,r)};M(C,e=>{g(s)?e(T):e(E,-1)}),w(v),w(r),y(()=>c(o,g(l))),t(`click`,S,()=>n.onTimeout(n.profile.id)),u(e,r)};M(_e,e=>{g(o)&&n.moderation&&e(ve)}),w(x),w(v),y((e,t)=>{c(h,n.profile.display_name),ce(b,`--hue: ${e??``}deg`),c(E,n.profile.display_name),c(le,t),c(fe,n.profile.id),c(ge,`Member of ${(n.workspaceName||`this workspace`)??``}.`)},[()=>Xe(n.profile.id),()=>n.profile.handle?Ce(n.profile.handle):`No handle set`]),t(`click`,_,function(...e){n.onClose?.apply(this,e)}),t(`click`,ne,function(...e){n.onSetStatus?.apply(this,e)}),u(e,d),ee()}U([`click`]);var bi=a(` `,1),xi=a(`
          `),Si=a(`
          We couldn’t search messages

          `),Ci=a(`
          No messages found

          Try another word or phrase.

          `),wi=a(`deleted bot`),Ti=a(` `),Ei=a(` `),Di=a(` `),Oi=a(` Reply in thread`),ki=a(` `),Ai=a(`
        • `),ji=a(``),Mi=a(``),Ni=a(``),Pi=a(`
            `,1),Fi=a(``);function Ii(e,n){k(n,!0);let r=x(n,`covered`,3,!1),a=x(n,`inert`,3,!1),o=new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}),s=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`}),d=new Intl.DateTimeFormat(void 0,{month:`short`,day:`numeric`,year:`numeric`});function p(e,t){let n=Array.from(e),r=[],i=0;for(let e of t){let t=Math.max(i,Math.min(n.length,e.start)),a=Math.max(t,Math.min(n.length,e.end));t>i&&r.push({text:n.slice(i,t).join(``),highlighted:!1}),a>t&&r.push({text:n.slice(t,a).join(``),highlighted:!0}),i=a}return i{u(e,f(`Searching messages…`))},L=e=>{var t=bi(),r=B(t),i=j(r),a=e=>{var t=f();y(()=>c(t,`in ${n.session.scope.label??``}`)),u(e,t)};M(i,e=>{n.session.scope.label&&e(a)}),y(()=>c(r,`${n.session.results.length??``}${n.session.nextCursor?`+`:``} + ${n.session.results.length===1&&!n.session.nextCursor?`result`:`results`}`)),u(e,t)},z=e=>{u(e,f(`Search unavailable`))};M(P,e=>{n.session.state===`loading`?e(I):n.session.state===`ready`?e(L,1):n.session.state===`error`&&e(z,2)}),w(te);var ne=j(te,2),re=F(ne),V=e=>{u(e,xi())},ie=e=>{var t=Si(),r=j(F(t),4),i=F(r,!0);w(r),w(t),y(()=>c(i,n.session.error)),u(e,t)},ae=e=>{u(e,Ci())},H=e=>{var r=Pi(),a=B(r);l(a,21,()=>n.session.results,e=>e.id,(e,r)=>{let a=D(()=>n.contextFor(g(r)));var o=Ai(),s=F(o);let d;var h=F(s);{let e=D(()=>G(g(r).author)?void 0:g(r).author.avatar_url);Ie(h,{class:`dm-avatar`,get id(){return g(r).author.id},get name(){return g(r).author.display_name},get src(){return g(e)},size:30})}var _=j(h,2),v=F(_),b=F(v),x=F(b,!0);w(b);var S=j(b,2),T=e=>{u(e,wi())},E=D(()=>G(g(r).author)),O=e=>{var t=Ti(),n=F(t,!0);w(t),y(e=>c(n,e),[()=>Ce(Y(g(r).author))]),u(e,t)},k=D(()=>Y(g(r).author));M(S,e=>{g(E)?e(T):g(k)&&e(O,1)});var A=j(S,2),ee=F(A,!0);w(A),w(v);var te=j(v,2);l(te,21,()=>p(g(r).snippet,g(r).highlights),N,(e,t)=>{var n=i(),r=B(n),a=e=>{var n=Ei(),r=F(n,!0);w(n),y(()=>c(r,g(t).text)),u(e,n)},o=e=>{var n=f();y(()=>c(n,g(t).text)),u(e,n)};M(r,e=>{g(t).highlighted?e(a):e(o,-1)}),u(e,n)}),w(te);var P=j(te,2),I=F(P),L=e=>{var t=Di(),n=F(t,!0);w(t),y(()=>c(n,g(a))),u(e,t)};M(I,e=>{g(a)&&e(L)});var z=j(I,2),ne=e=>{u(e,Oi())},re=e=>{var t=ki(),n=j(F(t));w(t),y(()=>c(n,` ${g(r).reply_count??``} ${g(r).reply_count===1?`reply`:`replies`}`)),u(e,t)};M(z,e=>{g(r).parent_message_id?e(ne):g(r).reply_count>0&&e(re,1)}),w(P),w(_),w(s),w(o),y(e=>{d=C(s,1,`search-result`,null,d,{"is-active":n.session.activeResultID===g(r).id}),R(s,`data-result-id`,g(r).id),c(x,g(r).author.display_name||`Local User`),R(A,`datetime`,g(r).created_at),c(ee,e)},[()=>m(g(r).created_at)]),t(`click`,s,()=>n.onOpenResult(g(r))),u(e,o)}),w(a);var o=j(a,2),s=e=>{var r=ji(),i=F(r),a=F(i,!0);w(i);var o=j(i,2);w(r),y(()=>c(a,n.session.moreError)),t(`click`,o,function(...e){n.onLoadMore?.apply(this,e)}),u(e,r)},d=e=>{var r=Mi(),i=F(r,!0);w(r),y(()=>{r.disabled=n.session.loadingMore,c(i,n.session.loadingMore?`Loading more…`:`Load more results`)}),t(`click`,r,function(...e){n.onLoadMore?.apply(this,e)}),u(e,r)},h=e=>{u(e,Ni())};M(o,e=>{n.session.moreError?e(s):n.session.nextCursor?e(d,1):e(h,-1)}),u(e,r)};M(re,e=>{n.session.state===`loading`?e(V):n.session.state===`error`?e(ie,1):n.session.results.length===0?e(ae,2):e(H,-1)}),w(ne),w(h),y(()=>{_=C(h,1,`search-results`,null,_,{covered:r()}),h.inert=a(),R(h,`aria-hidden`,r()?`true`:void 0),c(T,`Search${n.session.scope.label?` in ${n.session.scope.label}`:``}`),c(O,`Results for “${n.session.query??``}”`)}),t(`click`,A,function(...e){n.onClose?.apply(this,e)}),u(e,h),ee()}U([`click`]);var Li=`clickclack:browser-notifications-enabled:v1:`;function Ri(e){return`${Li}${e}`}function zi(e){if(!e)return!1;try{return window.localStorage.getItem(Ri(e))===`enabled`}catch{return!1}}function Bi(e,t){if(!e)return!1;try{return t?window.localStorage.setItem(Ri(e),`enabled`):window.localStorage.removeItem(Ri(e)),!0}catch{return!1}}var Vi=a(`

            Browser notifications are not supported on this device.

            `),Hi=a(`

            Browser notifications are blocked by this browser.

            `),Ui=a(`

            `),Wi=a(`

            Show alerts when ClickClack is in the background.

            `);function Gi(e,n){k(n,!0);let r=x(n,`isDesktop`,3,!1),i=E(!1),a=E(!1),o=E(`default`),s=E(``),l=E(!1);d(()=>{f(n.user.id,r())});function f(e,t){if(t){V(i,!0),V(o,`granted`),V(a,zi(e),!0),n.onChanged?.(g(a));return}V(i,typeof Notification<`u`),V(o,g(i)?Notification.permission:`unsupported`,!0);let r=zi(e);V(a,g(o)===`granted`&&r,!0),r&&g(o)!==`granted`&&Bi(e,!1),n.onChanged?.(g(a))}async function p(e){if(V(s,``),V(l,!1),!e){Bi(n.user.id,!1),V(a,!1),n.onChanged?.(!1),V(s,r()?`Desktop notifications disabled`:`Browser notifications disabled`,!0);return}if(r()){V(a,Bi(n.user.id,!0),!0),n.onChanged?.(g(a)),V(s,g(a)?`Desktop notifications enabled`:`Desktop notification preference could not be saved`,!0),V(l,!g(a));return}if(typeof Notification>`u`){V(i,!1),V(o,`unsupported`),V(a,!1),n.onChanged?.(!1),V(s,`Browser notifications are not supported`),V(l,!0);return}if(V(o,Notification.permission==="default"?await Notification.requestPermission():Notification.permission,!0),V(i,!0),g(o)===`granted`){V(a,Bi(n.user.id,!0),!0),n.onChanged?.(g(a)),V(s,g(a)?`Browser notifications enabled`:`Browser notification preference could not be saved`,!0),V(l,!g(a));return}Bi(n.user.id,!1),V(a,!1),n.onChanged?.(!1),V(s,g(o)===`denied`?`Browser notifications are blocked by this browser`:`Browser notifications were not enabled`,!0),V(l,!0)}var m=Wi(),h=F(m),_=F(h),v=F(_,!0);w(_);var b=j(_,4),S=e=>{u(e,Vi())},T=e=>{u(e,Hi())};M(b,e=>{!r()&&!g(i)?e(S):!r()&&g(o)===`denied`&&e(T,1)});var D=j(b,2),A=e=>{var t=Ui();let n;var r=F(t,!0);w(t),y(()=>{n=C(t,1,`settings-row2__hint`,null,n,{"is-error":g(l)}),c(r,g(s))}),u(e,t)};M(D,e=>{g(s)&&e(A)}),w(h);var N=j(h,2),P=F(N);O(P),w(N),w(m),y(()=>{c(v,r()?`Desktop notifications`:`Browser notifications`),R(P,`aria-label`,r()?`Desktop notifications`:`Browser notifications`),P.disabled=!g(i)||g(o)===`denied`,te(P,g(a))}),t(`change`,P,e=>void p(e.currentTarget.checked)),u(e,m),ee()}U([`change`]);var Ki=a(``),qi=a(`

            `),Ji=a(``),Yi=a(`
            Preview

            Shown in messages, mentions, and your profile card.

            Used in mentions and the quick switcher. Must be unique.

            Paste a public image URL. Your initials show when empty.

            Conversation display

            Keep agent reasoning summaries out of the message timeline.

            Hide tool execution details while keeping ordinary messages visible.

            Choose which side of the timeline shows your messages.

            Choose which side of the timeline shows messages from other people and agents.

            Notifications

            `);function Xi(e,n){k(n,!0);let r=x(n,`isDesktop`,3,!1),i=E(null),a=D(()=>g(i)??n.user),o=E(``),s=E(``),l=E(``),f=E(``),p=E(!1),m=E(!1),_=D(()=>g(o).trim()||g(a).display_name||`Your name`),v=D(()=>g(s).trim().replace(/^@+/,``)||g(a).handle||``);d(()=>{V(o,g(a).display_name,!0),V(s,g(a).handle??``,!0),V(l,g(a).avatar_url,!0)});function S(){let e=g(s).trim().replace(/^@+/,``);return e?`@${e}`:``}async function T(){if(!g(m)){V(m,!0),V(f,``),V(p,!1);try{let e=await W(`/api/me`,{method:`PATCH`,body:JSON.stringify({display_name:g(o),handle:S(),avatar_url:g(l),notification_settings:g(a).notification_settings})});V(i,e.user,!0),n.onUserUpdated?.(e.user),V(f,`Saved`),n.onSaved?.()}catch(e){V(f,e instanceof Error?e.message:`Could not save profile`,!0),V(p,!0)}finally{V(m,!1)}}}function A(){V(l,``)}var N=Yi(),P=F(N),I=F(P);Ie(I,{get id(){return g(a).id},get name(){return g(_)},get src(){return g(l)},size:52,loading:`eager`,fetchPriority:`auto`});var L=j(I,2),R=F(L),z=F(R,!0);w(R);var ne=j(R,2),B=F(ne,!0);w(ne),w(L),le(2),w(P);var re=j(P,2),ie=F(re),H=j(F(ie),2),se=F(H);O(se),w(H),w(ie);var ce=j(ie,2),U=j(F(ce),2),ue=F(U),de=j(F(ue),2);O(de),w(ue),w(U),w(ce);var fe=j(ce,2),pe=j(F(fe),2),me=F(pe);O(me);var he=j(me,2),ge=e=>{var n=Ki();t(`click`,n,A),u(e,n)};M(he,e=>{g(l)&&e(ge)}),w(pe),w(fe);var _e=j(fe,4),ve=j(F(_e),2),ye=F(ve);O(ye),w(ve),w(_e);var be=j(_e,2),xe=j(F(be),2),Se=F(xe);O(Se),w(xe),w(be);var G=j(be,2),Ce=j(F(G),2),we=F(Ce),K=F(we);K.value=K.__value=`left`;var q=j(K);q.value=q.__value=`right`,w(we);var J;b(we),w(Ce),w(G);var Te=j(G,2),Y=j(F(Te),2),X=F(Y),Z=F(X);Z.value=Z.__value=`left`;var Ee=j(Z);Ee.value=Ee.__value=`right`,w(X);var De;b(X),w(Y),w(Te),Gi(j(Te,4),{get user(){return g(a)},get isDesktop(){return r()},get onChanged(){return n.onBrowserNotificationsChanged}}),w(re);var Q=j(re,2),Oe=F(Q),ke=e=>{var t=qi();let n;var r=F(t,!0);w(t),y(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(p)}),c(r,g(f))}),u(e,t)},Ae=e=>{u(e,Ji())};M(Oe,e=>{g(f)?e(ke):e(Ae,-1)});var je=j(Oe,2),Me=F(je,!0);w(je),w(Q),w(N),y(()=>{c(z,g(_)),c(B,g(v)?`@${g(v)}`:`No handle set`),te(ye,n.hideCommentary),te(Se,n.hideToolCalls),J!==(J=n.userAlign)&&(we.value=(we.__value=n.userAlign)??``,oe(we,n.userAlign)),De!==(De=n.otherAlign)&&(X.value=(X.__value=n.otherAlign)??``,oe(X,n.otherAlign)),je.disabled=g(m),c(Me,g(m)?`Saving...`:`Save profile`)}),h(`submit`,N,e=>{e.preventDefault(),T()}),ae(se,()=>g(o),e=>V(o,e)),ae(de,()=>g(s),e=>V(s,e)),ae(me,()=>g(l),e=>V(l,e)),t(`change`,ye,e=>n.onHideCommentary(e.currentTarget.checked)),t(`change`,Se,e=>n.onHideToolCalls(e.currentTarget.checked)),t(`change`,we,e=>n.onUserAlign(e.currentTarget.value===`right`?`right`:`left`)),t(`change`,X,e=>n.onOtherAlign(e.currentTarget.value===`right`?`right`:`left`)),u(e,N),ee()}U([`click`,`change`]);var Zi=a(`

            `),Qi=a(``),$i=a(`

            Desktop

            Mobile push

            Send push notifications to your phone via Pushover.

            Find this in your Pushover dashboard under "Your User Key".

            `);function ea(e,t){k(t,!0);let n=x(t,`isDesktop`,3,!1),r=E(null),i=D(()=>g(r)??t.user),a=E(!1),o=E(``),s=E(``),l=E(!1),f=E(!1);d(()=>{V(a,g(i).notification_settings?.pushover_enabled??!1,!0),V(o,g(i).notification_settings?.pushover_user_key??``,!0)});async function p(){if(!g(f)){V(f,!0),V(s,``),V(l,!1);try{let e=await W(`/api/me`,{method:`PATCH`,body:JSON.stringify({display_name:g(i).display_name,handle:g(i).handle?`@${g(i).handle}`:``,avatar_url:g(i).avatar_url,notification_settings:{pushover_enabled:g(a),pushover_user_key:g(o)}})});V(r,e.user,!0),t.onUserUpdated?.(e.user),V(s,`Saved`)}catch(e){V(s,e instanceof Error?e.message:`Could not save notifications`,!0),V(l,!0)}finally{V(f,!1)}}}var m=$i(),_=F(m),v=j(F(_),2);Gi(v,{get user(){return g(i)},get isDesktop(){return n()},get onChanged(){return t.onBrowserNotificationsChanged}});var b=j(v,4),S=j(F(b),2),A=F(S);O(A),w(S),w(b);var N=j(b,2),te=j(F(N),2),P=F(te);O(P),w(te),w(N),w(_);var I=j(_,2),L=F(I),R=e=>{var t=Zi();let n;var r=F(t,!0);w(t),y(()=>{n=C(t,1,`settings-status`,null,n,{"is-error":g(l)}),c(r,g(s))}),u(e,t)},z=e=>{u(e,Qi())};M(L,e=>{g(s)?e(R):e(z,-1)});var ne=j(L,2),B=F(ne,!0);w(ne),w(I),w(m),y(()=>{ne.disabled=g(f),c(B,g(f)?`Saving...`:`Save notifications`)}),h(`submit`,m,e=>{e.preventDefault(),p()}),T(A,()=>g(a),e=>V(a,e)),ae(P,()=>g(o),e=>V(o,e)),u(e,m),ee()}var ta=a(`

            Loading…

            `),na=a(`

            `),ra=a(`
            You don't own any bots yet. Open a workspace's Bots & agents page to mint one.
            `),ia=a(``),aa=a(`
          • `),oa=a(`

              `),sa=a(`
              `),ca=a(`

              Account

              My bots

              Bots you own across your workspaces. Tokens live with the workspace where the bot was created.

              `,1);function la(e,n){k(n,!0);let r=E(S([])),i=E(`loading`),a=E(``);ne(()=>{o()});async function o(){V(i,`loading`);try{V(r,await et(),!0),V(i,`ready`)}catch(e){V(i,`error`),V(a,tt(e),!0)}}function s(e){n.onClose(),ue(he(e.workspace.route_id||e.workspace.id,`bots`))}function d(e){return e.startsWith(`@`)?e:`@${e}`}function p(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.slice(0,2).toUpperCase()}let m=D(()=>{let e=new Map;for(let t of g(r)){let n=t.workspace.id,r=e.get(n);r?r.entries.push(t):e.set(n,{workspace:t.workspace,entries:[t]})}return[...e.values()].sort((e,t)=>e.workspace.name.localeCompare(t.workspace.name))});var h=ca(),_=j(B(h),2),v=e=>{u(e,ta())},b=e=>{var t=na(),n=F(t,!0);w(t),y(()=>c(n,g(a))),u(e,t)},x=e=>{u(e,ra())},C=e=>{var n=sa();l(n,21,()=>g(m),e=>e.workspace.id,(e,n)=>{var r=oa(),i=F(r),a=F(i),o=F(a,!0);w(a);var m=j(a,2);w(i);var h=j(i,2);l(h,21,()=>g(n).entries,e=>e.bot.id,(e,n)=>{var r=aa(),i=F(r),a=F(i),o=e=>{var t=ia();y(()=>R(t,`src`,g(n).bot.avatar_url)),u(e,t)},l=e=>{var t=f();y(e=>c(t,e),[()=>p(g(n).bot.display_name||g(n).bot.handle||`?`)]),u(e,t)};M(a,e=>{g(n).bot.avatar_url?e(o):e(l,-1)}),w(i);var m=j(i,2),h=F(m),_=F(h,!0);w(h);var v=j(h,2),b=F(v),x=F(b,!0);w(b);var S=j(b,4),C=F(S);w(S),w(v),w(m);var T=j(m,2);w(r),y(e=>{c(_,g(n).bot.display_name||g(n).bot.handle),c(x,e),c(C,`${g(n).active_token_count??``} + active ${g(n).active_token_count===1?`token`:`tokens`}`)},[()=>d(g(n).bot.handle)]),t(`click`,T,()=>s(g(n))),u(e,r)}),w(h),w(r),y(()=>c(o,g(n).workspace.name)),t(`click`,m,()=>s(g(n).entries[0])),u(e,r)}),w(n),u(e,n)};M(_,e=>{g(i)===`loading`?e(v):g(i)===`error`?e(b,1):g(r).length===0?e(x,2):e(C,-1)}),u(e,h),ee()}U([`click`]);var ua=s(``),da=s(``),fa=s(``),pa=a(``),ma=a(``),ha=a(``),ga=a(`

              Account

              Appearance

              Pick a color mode, board, and message layout. Changes apply instantly, everywhere in the + app, and stay on this device.

              Color mode

              Board

              Every board comes tuned for light and dark; the swatches preview whichever mode is active.

              Message layout

              `,1);function _a(e,n){k(n,!0);let r=E(S(q())),i=E(S(K())),a=E(S(Z()));function o(e){V(r,e,!0),xe(e)}function s(e){V(i,e,!0),Qe(e)}function d(e){V(a,e,!0),Q(e)}function f(e,t,n,r){let i;switch(e.key){case`ArrowRight`:case`ArrowDown`:i=(n+1)%t;break;case`ArrowLeft`:case`ArrowUp`:i=(n-1+t)%t;break;case`Home`:i=0;break;case`End`:i=t-1;break;default:return}e.preventDefault(),r(i),(e.currentTarget.parentElement?.querySelectorAll(`[role="radio"]`))?.item(i).focus()}var p=ga(),m=j(B(p),2),h=j(F(m),2);l(h,23,()=>Te,e=>e.id,(e,n,i)=>{var a=pa();let s;var l=F(a),d=F(l),p=e=>{u(e,ua())},m=e=>{u(e,da())},h=e=>{u(e,fa())};M(d,e=>{g(n).id===`light`?e(p):g(n).id===`dark`?e(m,1):e(h,-1)}),w(l);var _=j(l);w(a),y(()=>{s=C(a,1,`appearance-mode`,null,s,{"is-active":g(r)===g(n).id}),R(a,`aria-checked`,g(r)===g(n).id),R(a,`tabindex`,g(r)===g(n).id?0:-1),c(_,` ${g(n).label??``}`)}),t(`click`,a,()=>o(g(n).id)),t(`keydown`,a,e=>f(e,Te.length,g(i),e=>o(Te[e].id))),u(e,a)}),w(h);var _=j(h,4);l(_,23,()=>J,e=>e.id,(e,n,r)=>{var a=ma();let o;var l=j(F(a),2),d=F(l),p=F(d,!0);w(d);var m=j(d,2),h=F(m,!0);w(m),w(l),w(a),y(()=>{o=C(a,1,`board-swatch`,null,o,{"is-active":g(i)===g(n).id}),R(a,`aria-checked`,g(i)===g(n).id),R(a,`tabindex`,g(i)===g(n).id?0:-1),R(a,`data-board`,g(n).id),c(p,g(n).label),c(h,g(n).blurb)}),t(`click`,a,()=>s(g(n).id)),t(`keydown`,a,e=>f(e,J.length,g(r),e=>s(J[e].id))),u(e,a)}),w(_);var v=j(_,6);l(v,23,()=>X,e=>e.id,(e,n,r)=>{var i=ha();let o;var s=F(i),l=j(s,2),p=F(l),m=F(p,!0);w(p);var h=j(p,2),_=F(h,!0);w(h),w(l),w(i),y(()=>{o=C(i,1,`message-layout-option`,null,o,{"is-active":g(a)===g(n).id}),R(i,`aria-checked`,g(a)===g(n).id),R(i,`tabindex`,g(a)===g(n).id?0:-1),R(s,`data-layout`,g(n).id),c(m,g(n).label),c(_,g(n).blurb)}),t(`click`,i,()=>d(g(n).id)),t(`keydown`,i,e=>f(e,X.length,g(r),e=>d(X[e].id))),u(e,i)}),w(v),w(m),u(e,p),ee()}U([`click`,`keydown`]);var va=a(` `,1),ya=a(` `,1),ba=a(` `,1),xa=a(` `,1),Sa=a(`
            • `),Ca=a(`
            • `),wa=a(`

                `),Ta=a(`

                Loading...

                `),Ea=a(`

                `),Da=a(`

                Account

                Profile settings

                How you appear across ClickClack.

                `,1),Oa=a(`

                Account

                Notifications

                Decide when and how ClickClack should reach you.

                `,1),ka=a(``);function Aa(e,n){k(n,!0);let r=x(n,`workspaces`,19,()=>[]),a=x(n,`initialSection`,3,_e),o=x(n,`isDesktop`,3,!1),s=E(S(_e)),f=E(null),p=D(()=>g(f)?.id===n.user.id?g(f):n.user),m=E(`ready`),_=E(``);d(()=>{V(s,a(),!0)}),ne(()=>{v()});async function v(){V(m,`loading`);try{let e=await W(`/api/me`);V(f,e.user,!0),n.onUserUpdated?.(e.user),V(m,`ready`)}catch(e){if(e instanceof me&&(e.status===401||e.status===403)){V(m,`error`),V(_,`Sign in to manage your account`);return}V(m,`error`),V(_,e instanceof Error?e.message:`Could not load your account`,!0)}}function b(e){V(f,e,!0),n.onUserUpdated?.(e)}function T(e){e.target===e.currentTarget&&n.onClose()}function O(e){if(e.key!==`Escape`)return;let t=e.target;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable)||(e.preventDefault(),n.onClose())}function A(e,t){n.onClose(),ue(he(e.route_id||e.id,t))}var N=ka();h(`keydown`,ie,O);var te=F(N),P=F(te),I=j(P,2),L=F(I),z=j(F(L),2);l(z,21,()=>ve,e=>e.id,(e,n)=>{var r=Sa(),i=F(r);let a;var o=F(i),l=e=>{var t=va(),r=B(t);Ie(r,{class:`settings-modal__rail-avatar`,get id(){return g(p).id},get name(){return g(p).display_name},get src(){return g(p).avatar_url},size:18});var i=j(r,2),a=F(i,!0);w(i),y(()=>c(a,g(p).display_name||g(n).label)),u(e,t)},d=e=>{var t=ya(),r=j(B(t),2),i=F(r,!0);w(r),y(()=>c(i,g(n).label)),u(e,t)},f=e=>{var t=ba(),r=j(B(t),2),i=F(r,!0);w(r),y(()=>c(i,g(n).label)),u(e,t)},m=e=>{var t=xa(),r=j(B(t),2),i=F(r,!0);w(r),y(()=>c(i,g(n).label)),u(e,t)};M(o,e=>{g(n).id===`profile`?e(l):g(n).id===`appearance`?e(d,1):g(n).id===`notifications`?e(f,2):g(n).id===`bots`&&e(m,3)}),w(i),w(r),y(()=>{a=C(i,1,`settings-modal__rail-item`,null,a,{"is-active":g(s)===g(n).id}),R(i,`aria-current`,g(s)===g(n).id?`page`:void 0)}),t(`click`,i,()=>V(s,g(n).id,!0)),u(e,r)}),w(z),w(L),l(j(L,2),17,r,e=>e.id,(e,n)=>{var r=wa(),a=F(r),o=F(a);w(a);var s=j(a,2);l(s,21,()=>ge,e=>e.id,(e,r)=>{var a=i(),o=B(a),s=e=>{var i=Ca(),a=F(i),o=j(F(a),2),s=F(o,!0);w(o),w(a),w(i),y(()=>c(s,g(r).label)),t(`click`,a,()=>A(g(n),g(r).slug)),u(e,i)},l=D(()=>!g(r).managersOnly||ye(g(n).role));M(o,e=>{g(l)&&e(s)}),u(e,a)}),w(s),w(r),y(()=>{R(a,`title`,g(n).name),c(o,`Workspace · ${g(n).name??``}`)}),u(e,r)}),w(I);var re=j(I,2),ae=F(re),H=e=>{u(e,Ta())},oe=e=>{var t=Ea(),n=F(t,!0);w(t),y(()=>c(n,g(_))),u(e,t)},se=e=>{var t=Da();Xi(j(B(t),2),{get user(){return g(p)},get hideCommentary(){return n.hideCommentary},get hideToolCalls(){return n.hideToolCalls},get userAlign(){return n.userAlign},get otherAlign(){return n.otherAlign},get isDesktop(){return o()},onUserUpdated:b,get onSaved(){return n.onClose},get onHideCommentary(){return n.onHideCommentary},get onHideToolCalls(){return n.onHideToolCalls},get onUserAlign(){return n.onUserAlign},get onOtherAlign(){return n.onOtherAlign},get onBrowserNotificationsChanged(){return n.onBrowserNotificationsChanged}}),u(e,t)},ce=e=>{_a(e,{})},le=e=>{var t=Oa();ea(j(B(t),2),{get user(){return g(p)},get isDesktop(){return o()},onUserUpdated:b,get onBrowserNotificationsChanged(){return n.onBrowserNotificationsChanged}}),u(e,t)},U=e=>{la(e,{get onClose(){return n.onClose}})};M(ae,e=>{g(m)===`loading`?e(H):g(m)===`error`?e(oe,1):g(s)===`profile`?e(se,2):g(s)===`appearance`?e(ce,3):g(s)===`notifications`?e(le,4):g(s)===`bots`&&e(U,5)}),w(re),w(te),w(N),t(`click`,N,T),t(`click`,P,function(...e){n.onClose?.apply(this,e)}),u(e,N),ee()}U([`click`]);var ja=a(`
                No thread open Hover any message and tap the bubble to keep side conversations tidy.
                `);function Ma(e){u(e,ja())}var Na=a(`

                `,1),Pa=a(``),Fa=a(`Connecting…`),Ia=a(`
                `);function La(e,n){k(n,!0);var r=Ia(),i=F(r),a=F(i),o=F(a),s=F(o),l=j(F(s),2);w(s),w(o);var d=j(o,2),f=F(d,!0);w(d);var p=j(d,2),m=e=>{var t=Na(),r=j(B(t),2),i=F(r,!0);w(r),y(()=>{R(r,`title`,n.channelTitle),c(i,n.channelTitle)}),u(e,t)};M(p,e=>{n.channelTitle&&e(m)}),w(a);var g=j(a,2),_=j(F(g),2);O(_);var v=j(_,2),b=e=>{var r=Pa();t(`click`,r,function(...e){n.onResetSearch?.apply(this,e)}),u(e,r)};M(v,e=>{n.searchQuery&&e(b)}),le(2),w(g);var x=j(g,2),S=e=>{u(e,Fa())};M(x,e=>{n.connected||e(S)}),w(i),w(r),y(()=>{R(r,`data-platform`,n.platform),R(o,`aria-label`,n.mobileNavigation?n.mobileNavOpen?`Close navigation`:`Open navigation`:n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(o,`title`,n.mobileNavigation?n.mobileNavOpen?`Close navigation`:`Open navigation`:n.sidebarCollapsed?`Expand sidebar`:`Collapse sidebar`),R(l,`d`,n.mobileNavigation?n.mobileNavOpen?`m15 9-3 3 3 3`:`m9 9 3 3-3 3`:n.sidebarCollapsed?`m13 9 3 3-3 3`:`m16 9-3 3 3 3`),c(f,n.workspaceName||`ClickClack`),A(_,n.searchQuery)}),t(`click`,o,function(...e){n.onToggleSidebar?.apply(this,e)}),t(`click`,d,function(...e){n.onOpenWorkspaceSettings?.apply(this,e)}),h(`submit`,g,e=>{e.preventDefault(),n.onSearch()}),t(`input`,_,e=>n.onSearchQuery(e.currentTarget.value)),u(e,r),ee()}U([`click`,`input`]);var Ra=a(`

                `),za=a(`

                `),Ba=a(`

                ClickClack

                `),Va=a(``),Ha=a(`

                `);function Ua(e,n){k(n,!0);var r=Ha(),i=F(r),a=F(i),o=e=>{var t=Ra(),r=F(t,!0);w(t),y(e=>c(r,e),[()=>`@${De(n.selectedDirect,n.currentUserID)}`]),u(e,t)},s=e=>{var t=za(),r=F(t,!0);w(t),y(()=>c(r,`#${n.selectedChannel.name}`)),u(e,t)},l=e=>{u(e,Ba())};M(a,e=>{n.selectedDirect?e(o):n.selectedChannel?e(s,1):e(l,-1)});var d=j(a,4),f=F(d,!0);w(d),w(i);var p=j(i,2),m=j(F(p),2);O(m);var g=j(m,2),_=e=>{var r=Va();t(`click`,r,function(...e){n.onResetSearch?.apply(this,e)}),u(e,r)};M(g,e=>{n.searchQuery&&e(_)}),le(2),w(p);var v=j(p,2),b=F(v);let x;var S=j(b,2);w(v),w(r),y(()=>{c(f,n.workspaceName||`no workspace`),A(m,n.searchQuery),R(b,`title`,n.threadOpen?`Close thread`:`Open a message thread`),R(b,`aria-label`,n.threadOpen?`Close thread`:`Open a message thread`),x=C(b,1,``,null,x,{active:n.sidePanelOpen})}),h(`submit`,p,e=>{e.preventDefault(),n.onSearch()}),t(`input`,m,e=>n.onSearchQuery(e.currentTarget.value)),t(`click`,b,function(...e){n.onToggleThread?.apply(this,e)}),t(`click`,S,function(...e){n.onPinnedItems?.apply(this,e)}),u(e,r),ee()}U([`input`,`click`]);async function Wa(e){return(await W(`/api/workspaces/${e}/bot-commands`)).bot_commands??[]}function Ga(e){let t=e.trim().toLowerCase();return t?t.startsWith(`/`)?t:`/${t}`:``}function Ka(e){let t=/^(\/\S+)\s*([\s\S]*)$/.exec(e);return t?{command:Ga(t[1]),text:t[2].trim()}:null}function qa(e,t){return e.find(e=>!e.revoked_at&&Ga(e.command)===t)}async function Ja(e,t,n){let r=new URLSearchParams;r.set(`command`,t),r.set(`text`,n);let i=await fetch(fe(`/api/hooks/slash/${e}`),{method:`POST`,credentials:`include`,headers:{Accept:`application/json`,"Content-Type":`application/x-www-form-urlencoded`,"X-ClickClack-CSRF":`1`},body:r.toString()}),a=await i.text();if(!i.ok)throw new me(i.status,a);let o=a?JSON.parse(a):{};return{response_type:o.response_type||`in_channel`,text:(o.text||``).trim()}}var Ya=e({default:()=>ao}),Xa=a(``),Za=a(``),Qa=a(`
                cc
                ClickClack OpenClaw workspace chat

                Welcome.

                Sign in with GitHub to join the guest room.

                `,1),$a=a(``),eo=a(``),to=a(`
                `),no=a(``),ro=a(``),io=a(`
                `,1);function ao(e,r){k(r,!1);let a=L(),s=L(),l=L(),d=L(),p=L(),b=L(),S=L(),T=L(),E=L(),D=L(),O=L(),A=L(),N=L(),te=L(),ae=L(),oe=L(),se=L(),ce=L(),le=L(),U=L(),de=`clickclack:hide-commentary:v1`,ge=`clickclack:hide-tool-calls:v1`,_e=`clickclack:user-align:v1`,ve=`clickclack:other-align:v1`,ye=Date.now(),be=nt?.integratedTitleBar===!0,xe=x(r,`routeWorkspaceID`,8,``),Se=x(r,`routeTargetID`,8,``),G=L(null),Ce=L([]),K=L([]),q=L([]),J=L([]),Te=L([]),Y=L(``),X=L(``),Z=L(``),Q=L(null),Oe=L(null),je=L(null),Me=L([]),Ne=L([]),Pe=L([]),Fe=L(null),Ie=L([]),Re=L(null),ze=L(null),Be=L(``),Ve=L(null),He=null,We=L(null),Ge=L(null),qe=new Set,Je=L(``),Ye=L(``),Xe=L(``),Ze=L(``),Qe=L(``),$e=L(``),et=L(null),tt=L(!1),it=0,at=0,st=L(null),lt=L(!1),ut=L(!1),dt=L(`profile`),ft=L(!1),pt=L(!1),mt=L(``),ht=L(!1),gt=L(!1),_t=L(!1),vt=L(`left`),yt=L(`left`),bt=L(`loading`),St=L(!1),Ct=L(``),wt=L(!1),Et=null,Dt=Promise.resolve(),Ot=L(null),kt=new Map,At=L(new Map),Mt=new Set,Nt=L(`idle`),Pt=`idle`,Ft=!1,It=!1,Lt=L(!1),zt=L(!1),Vt=L(!1),Ht=L(!1),Ut=new Map,Wt=0,Gt=L(``),Kt=L(void 0),qt=L(``),Jt=L(!0),Yt=L(!1),Xt=L(!1),Zt=L(!1),Qt=L(!1),$t=L(null),en=L(null),tn=L(null),nn=L(null),rn=L(`message`),an=L([]),on,sn=L([]),cn,ln=L(Date.now()),un,dn=L(``),fn=0,pn=0,mn=0,hn=0,gn=0,_n=0,vn=0,yn=L(null),bn,xn=L(new Set),Cn=L(null),wn=L(``);ne(()=>{we(),Dn(),un=window.setInterval(()=>{V(ln,Date.now())},3e4),Ln(),Nn();let e=window.matchMedia(`(max-width: 820px)`),t=()=>{V(Zt,!1),V(Qt,e.matches)};t();let n=nt?.onNavigate(e=>{ue(e,{keepFocus:!0,noScroll:!0})}),r=nt?.onQuickCompose(()=>Tn());return e.addEventListener(`change`,t),()=>{e.removeEventListener(`change`,t),n?.(),r?.()}});function Tn(){o().then(()=>{(g(rn)===`thread`?g(nn):g(tn))?.focus()})}async function En(e){if(nt){e.preventDefault(),V(Ct,`Opening GitHub in your browser…`);try{await nt.signInWithGitHub(),V(Ct,`Finish signing in in your browser. ClickClack will complete here automatically.`)}catch{V(Ct,`Could not open your browser. Try again.`)}}}function Dn(){try{let e=window.localStorage.getItem(`clickclack:show-agent-activity:v1`)===`0`;V(gt,window.localStorage.getItem(de)===`1`||e),V(_t,window.localStorage.getItem(ge)===`1`||e),V(vt,window.localStorage.getItem(_e)===`right`?`right`:`left`),V(yt,window.localStorage.getItem(ve)===`right`?`right`:`left`)}catch{V(gt,!1),V(_t,!1),V(vt,`left`),V(yt,`left`)}On()}function On(){try{document.documentElement.setAttribute(`data-user-align`,g(vt)),document.documentElement.setAttribute(`data-other-align`,g(yt))}catch{}}function kn(e){V(vt,e),On();try{window.localStorage.setItem(_e,e)}catch{}}function An(e){V(yt,e),On();try{window.localStorage.setItem(ve,e)}catch{}}function jn(e){V(gt,e);try{window.localStorage.setItem(de,e?`1`:`0`)}catch{}}function Mn(e){V(_t,e);try{window.localStorage.setItem(ge,e?`1`:`0`)}catch{}}P(()=>{Et?.close(),Et=null,V(wt,!1),Bt(),on&&window.clearInterval(on),cn&&window.clearInterval(cn),un&&window.clearInterval(un),bn&&clearTimeout(bn),Ha(!1,null)});async function Nn(){try{let e=await W(`/api/me`);if(V(G,e.user),Ln(),await Vn(),g(Ce).length===0){V(bt,`create a workspace`);return}await tr(xe(),Se()),V(bt,`ready`)}catch(e){if(e instanceof me&&(e.status===401||e.status===403)){V(St,!0),V(bt,`auth`);return}V(bt,e instanceof Error?e.message:`Could not load ClickClack`)}}function Pn(){g(G)&&(V(dt,`profile`),V(ut,!0))}function Fn(){let e=g(a)?.route_id||g(Y)||xe();e&&ue(he(e))}function In(e){V(G,e),Ci(g(J).map(t=>t.author?.id===e.id?{...t,author:e}:t)),V(Te,g(Te).map(t=>t.author?.id===e.id?{...t,author:e}:t)),g(Q)?.author?.id===e.id&&V(Q,{...g(Q),author:e})}function Ln(){if(nt){V(ht,zn());return}let e=zn();V(ht,typeof Notification<`u`&&Notification.permission===`granted`&&e),e&&!g(ht)&&Bn(!1)}function Rn(){return g(G)?.id?`clickclack:browser-notifications-enabled:v1:${g(G).id}`:``}function zn(){let e=Rn();if(!e)return!1;try{return window.localStorage.getItem(e)===`enabled`}catch{return!1}}function Bn(e){let t=Rn();if(!t)return!1;try{return e?window.localStorage.setItem(t,`enabled`):window.localStorage.removeItem(t),!0}catch{return!1}}async function Vn(){let e=await W(`/api/workspaces`);V(Ce,e.workspaces)}function Hn(e=``,t=``){return`${e||``}/${t||``}`}function Un(e=g(Y),t=``){let n=Gn(e);if(!n)return`/app`;let r=`/app/${encodeURIComponent(n)}`,i=Kn(t);return i?`${r}/${encodeURIComponent(i)}`:r}function Wn(e){let t=g(K).find(t=>t.id===e)?.route_id||g(q).find(t=>t.id===e)?.route_id;return t?Un(g(Y),t):!g(Y)||!e?`/app`:`/app/${encodeURIComponent(g(Y))}/${encodeURIComponent(e)}`}function Gn(e=g(Y)){return e?g(Ce).find(t=>t.id===e||t.route_id===e)?.route_id||e:``}function Kn(e=``){return e?g(K).find(t=>t.id===e||t.route_id===e)?.route_id||g(q).find(t=>t.id===e||t.route_id===e)?.route_id||g(Q)?.id===e&&g(Q).route_id||g(J).find(t=>t.id===e)?.route_id||e:``}async function qn(e=g(Y),t=``,n=!1){let r=Un(e,t);window.location.pathname!==r&&await ue(r,{replaceState:n,noScroll:!0,keepFocus:!0})}function Jn(){g(tt)&&ia(),V(Q,null),V(Oe,null),V(je,null),V(rn,`message`),V(Te,[]),V(Zt,!1)}function Yn(e=g(Y)){return $n(e)||g(K).find(e=>e.name.toLowerCase()===`guest`)?.id||g(K)[0]?.id||g(q)[0]?.id||``}function Xn(e=g(Y)){return g(Ce).find(t=>t.id===e||t.route_id===e)}function Zn(e=g(Y)){let t=Xn(e),n=t?.route_id||t?.id||e;return n?`clickclack:last-channel:v1:${n}`:``}function Qn(e){try{let t=JSON.parse(e);return{id:typeof t.id==`string`?t.id:``,routeID:typeof t.routeID==`string`?t.routeID:``}}catch{return{id:e}}}function $n(e=g(Y)){let t=Zn(e);if(!t)return``;let n;try{let e=window.localStorage.getItem(t);if(!e)return``;n=Qn(e)}catch{return``}let r=g(K).find(e=>e.id===n.id||e.route_id===n.routeID);if(r)return r.id;try{window.localStorage.removeItem(t)}catch{}return``}function er(e,t){if(!e||!t)return;let n=g(K).find(e=>e.id===t);if(!n)return;let r=Zn(e);if(r)try{window.localStorage.setItem(r,JSON.stringify({id:n.id,routeID:n.route_id}))}catch{}}async function tr(e=``,t=``){let n=++fn,r=Hn(e,t),i=t.trim()?await rr(e,t):null;if(n!==fn)return;let a=i?g(Ce).find(e=>e.id===i.workspace_id):g(Ce).find(t=>t.id===e||t.route_id===e)||g(Ce)[0];if(!a){Ar(``,kr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`),V(dn,r);return}let o=i?Hn(i.workspace_route_id,i.target_route_id):Hn(a.route_id,``),s=g(Y)!==a.id;if(s&&(xi(),V(Y,a.id),hn+=1,gn+=1,V(Ne,[]),V(Pe,[]),V(X,``),V(Z,``),V(Q,null),V(Oe,null),V(je,null),V(rn,`message`),V(Te,[]),ia(),zr(),V(Jt,!0),ba()),(s||g(K).length===0)&&await sr(!1,!1),n!==fn||((s||g(q).length===0)&&await da(),s&&await Promise.all([cr(),lr(a.id),ur(a.id)]),n!==fn))return;if(i){let e=await nr(i,n);if(n!==fn)return;if(!e){Jn(),await qn(a.id,Yn(),!0);return}}if(i?.canonical_path&&window.location.pathname!==i.canonical_path&&(V(dn,o),await ue(i.canonical_path,{replaceState:!0,noScroll:!0,keepFocus:!0}),n!==fn))return;if(i?.target_type===`channel`&&g(K).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(X)===e&&!g(Z)&&g(Gt)===e;if(V(X,e),V(Z,``),er(a.id,e),Jn(),t){V(dn,o),Fr(e);return}if(await xr(),n!==fn)return;V(dn,o);return}if(i?.target_type===`direct`&&g(q).some(e=>e.id===i.target_id)){let e=i.target_id,t=!s&&g(Z)===e&&!g(X)&&g(Gt)===e;if(V(Z,e),V(X,``),Jn(),t){V(dn,o),Fr(e);return}if(await xr(),n!==fn)return;V(dn,o);return}if(i?.target_type===`thread`){let e=await ir(i);if(n!==fn)return;if(e){V(dn,o);return}}let c=Yn();if(Jn(),!c){V(X,``),V(Z,``),await xr(),V(dn,r),(e!==a.route_id||t)&&await qn(a.id,``,!0);return}await qn(a.id,c,!0)}async function nr(e,t){return e.target_type===`channel`?(g(K).some(t=>t.id===e.target_id)||await sr(!1,!1,!1),t===fn&&g(K).some(t=>t.id===e.target_id)):e.target_type===`direct`?(g(q).some(t=>t.id===e.target_id)||(await da(),g(q).some(t=>t.id===e.target_id)||fa((await W(`/api/dms/${e.target_id}`)).conversation)),t===fn&&g(q).some(t=>t.id===e.target_id)):e.parent_type===`channel`&&e.parent_id?(g(K).some(t=>t.id===e.parent_id)||await sr(!1,!1,!1),t===fn&&g(K).some(t=>t.id===e.parent_id)):e.parent_type===`direct`&&e.parent_id?(g(q).some(t=>t.id===e.parent_id)||(await da(),g(q).some(t=>t.id===e.parent_id)||fa((await W(`/api/dms/${e.parent_id}`)).conversation)),t===fn&&g(q).some(t=>t.id===e.parent_id)):!0}async function rr(e,t){try{return(await W(`/api/routes/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)).route}catch(e){if(e instanceof me&&(e.status===403||e.status===404))return null;throw e}}async function ir(e){if(e.workspace_id!==g(Y))return!1;let t=e.parent_type===`channel`&&e.parent_id||``,n=e.parent_type===`direct`&&e.parent_id||``;if(t){if(!g(K).some(e=>e.id===t))return!1;V(X,t),V(Z,``),er(e.workspace_id,t)}else if(n){if(!g(q).some(e=>e.id===n))return!1;V(Z,n),V(X,``)}else return!1;let r=g(Q)?.id===e.target_id&&g(Gt)===$();return V(je,null),V(rn,`thread`),V(Zt,!1),await Ui(e.target_id),!r&&g(Q)&&await ca(g(Q)),!0}async function ar(){if(!g(Xe).trim())return;let e=await W(`/api/workspaces`,{method:`POST`,body:JSON.stringify({name:g(Xe)})});V(Xe,``),V(Yt,!1),V(Ce,[...g(Ce),e.workspace]),V(Zt,!1),await tr(e.workspace.route_id||e.workspace.id,``),await qn(e.workspace.id),V(bt,`ready`)}async function or(e){V(Zt,!1),await qn(e)}async function sr(e=!0,t=!0,n=!0){if(!g(Y))return;let r=await W(`/api/workspaces/${g(Y)}/channels`);V(K,r.channels),t?V(X,g(K).find(e=>e.id===g(X))?.id||g(K)[0]?.id||``):g(X)&&!g(K).some(e=>e.id===g(X))&&V(X,``),n&&(g(tt)&&ia(),V(Q,null),V(je,null),V(rn,`message`),V(Te,[])),e&&await xr()}async function cr(e=g(Y)){let t=++mn;if(!e||e!==g(Y)||g(s)!==`owner`&&g(s)!==`moderator`){t===mn&&V(Me,[]);return}try{let n=await W(`/api/workspaces/${e}/moderation/members`);if(t!==mn||e!==g(Y))return;V(Me,n.members)}catch{t===mn&&e===g(Y)&&V(Me,[])}}async function lr(e=g(Y)){let t=++hn;if(!e){V(Ne,[]);return}try{let n=await W(`/api/workspaces/${e}/slash-commands`);if(t!==hn||e!==g(Y))return;V(Ne,n.slash_commands)}catch{t===hn&&e===g(Y)&&V(Ne,[])}}async function ur(e=g(Y)){let t=++gn;if(!e){V(Pe,[]);return}try{let n=await Wa(e);if(t!==gn||e!==g(Y))return;V(Pe,n)}catch{t===gn&&e===g(Y)&&V(Pe,[])}}function fr(e){vn+=1,V(Fe,null)}function pr(e,t,n,r){let i=new Map;for(let e of n)e.user.id&&!e.user.deleted_at&&i.set(e.user.id,e.user);for(let e of r?.members||[])e.id&&!e.deleted_at&&i.set(e.id,e);for(let e of t)e.id&&!e.deleted_at&&i.set(e.id,e);return e?.id&&i.set(e.id,e),[...i.values()].slice(0,24)}async function gr(e,t){if(!g(Y))return;let n=await W(`/api/workspaces/${g(Y)}/moderation/members/${e}`,{method:`PATCH`,body:JSON.stringify(t)});V(Me,[...g(Me).filter(t=>t.user.id!==e),n.member]),await sr(!1,!1,!1),V(bt,`ready`)}async function yr(){if(!g(Y)||!g(Ze).trim())return;let e=await W(`/api/workspaces/${g(Y)}/channels`,{method:`POST`,body:JSON.stringify({name:g(Ze),kind:`public`})});V(Ze,``),V(K,[...g(K),e.channel]),V(ft,!1),await qn(g(Y),e.channel.id)}async function br(e){V(Zt,!1),er(g(Y),e);let t=Un(g(Y),e);e===g(X)&&!g(Z)&&window.location.pathname===t||await qn(g(Y),e)}async function xr(){xi();let e=$(),t=e!==g(Gt);zr(),t&&V(Jt,!0);try{if(!g(Z)&&!g(X)){Ar(``,kr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}let t=await W(Or(Tr()));if($()!==e)return;Ar(e,kr(t),`replace`)}finally{$()===e&&V(Jt,!1)}}async function Cr(){let e=$();if(e){zr(),V(Jt,!0),kt.set(e,{atBottom:!0});try{let t=await W(Or(`limit=100`));if($()!==e)return;Ar(e,kr(t),`replace`)}finally{$()===e&&V(Jt,!1)}}}function Tr(){let e=Er(),t=e.unread_count||0,n=e.last_read_seq||0;return t>0?`around_seq=${encodeURIComponent(String(n+1))}&limit=100`:`limit=100`}function Er(){return g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{}}function Or(e){let t=g(Z)?`/api/dms/${g(Z)}/messages`:`/api/channels/${g(X)}/messages`;return e?`${t}?${e}`:t}function kr(e){return{messages:e.messages,oldest_seq:e.oldest_seq,newest_seq:e.newest_seq,has_older:e.has_older,has_newer:e.has_newer}}function Ar(e,t,n){let r=Hr(e,t.messages,n),i=r[0]?.channel_seq||0,a=r[r.length-1]?.channel_seq||0,o=i>(t.messages[0]?.channel_seq||i),s=a<(t.messages[t.messages.length-1]?.channel_seq||a),c={messages:r,oldest_seq:i,newest_seq:a,has_older:t.has_older||o,has_newer:t.has_newer||s};Mr(e,c),Fr(e,c),Si(e,r)}function Mr(e,t){e&&(g(At).delete(e),g(At).set(e,t),Nr(e),Pr(e),V(At,new Map(g(At))))}function Nr(e){let t=g(At).size+1;for(;g(At).size>8&&t>0;){t--;let n=g(At).keys().next().value;if(!n)return;if(n===e){let e=g(At).get(n);g(At).delete(n),e&&g(At).set(n,e);continue}g(At).delete(n)}}function Pr(e){let t=kt.size+1;for(;kt.size>16&&t>0;){t--;let n=kt.keys().next().value;if(!n)return;if(n===e){let e=kt.get(n);kt.delete(n),e&&kt.set(n,e);continue}kt.delete(n)}}function Fr(e,t=g(At).get(e)){e===$()&&(V(Lt,t?.has_older||!1),V(zt,t?.has_newer||!1))}function Ir(e){let t=g(At).get(e);!e||!t||(Mr(e,{...t,has_newer:!0}),Fr(e))}function Rr(e,t){e===`older`?(V(Nt,t),V(Vt,t===`loading`)):(Pt=t,V(Ht,t===`loading`))}function zr(){Mt=new Set,V(Nt,`idle`),Pt=`idle`,Ft=!1,It=!1,V(Vt,!1),V(Ht,!1)}function Br(e,t){let n=new Map;for(let r of[...e,...t])n.set(r.id,r);return[...n.values()].sort((e,t)=>(e.channel_seq||0)-(t.channel_seq||0))}function Vr(e){let t=new Set,n=ai(e);if(n>=0){let r=si(e,g(J),n);r&&t.add(r.id)}let r=kt.get(e)?.anchorMessageID;r&&t.add(r),g(Q)&&Ti(g(Q),e)&&t.add(g(Q).id),g($t)&&Ti(g($t),e)&&t.add(g($t).id);for(let n of g(J))(n.status===`pending`||n.status===`failed`)&&Ti(n,e)&&t.add(n.id);return t}function Hr(e,t,n){return ct(t,n,Vr(e))}function Ur(){if(g(Nt)!==`idle`){Ft=!0;return}Gr()}function Wr(e=!1){if(Pt!==`idle`){e&&(It=!0);return}Kr()}async function Gr(){let e=$(),t=g(At).get(e),n=`${e}:older`;if(g(Nt)!==`idle`){Ft=!0;return}if(!e||!t?.has_older||t.oldest_seq<=0||Mt.has(n))return;Mt.add(n),Ft=!1,Rr(`older`,`loading`),xi();let r=!1;try{let n=await W(Or(`before_seq=${encodeURIComponent(String(t.oldest_seq))}&limit=50`));if($()!==e)return;Ar(e,{messages:Br(n.messages,g(J)),oldest_seq:n.oldest_seq||t.oldest_seq,newest_seq:t.newest_seq,has_older:n.has_older,has_newer:t.has_newer},`prepend`),r=!0,Rr(`older`,`settling`)}catch(t){$()===e&&V(bt,t instanceof Error?t.message:`Could not load older messages`)}finally{Mt.delete(n),$()===e&&!r&&Rr(`older`,`idle`)}}async function Kr(){let e=$(),t=g(At).get(e),n=`${e}:newer`;if(Pt!==`idle`){It=!0;return}if(!e||Mt.has(n))return;if(!t||t.newest_seq<=0){await xr();return}Mt.add(n),It=!1,Rr(`newer`,`loading`);let r=!1;try{let n=await W(Or(`after_seq=${encodeURIComponent(String(t.newest_seq))}&limit=50`));if($()!==e)return;if(n.messages.length===0){Ar(e,{...t,has_newer:n.has_newer},`append`),r=!0,Rr(`newer`,`settling`);return}Ar(e,{messages:Br(g(J),n.messages),oldest_seq:t.oldest_seq,newest_seq:n.newest_seq||t.newest_seq,has_older:t.has_older,has_newer:n.has_newer},`append`),r=!0,Rr(`newer`,`settling`)}catch(t){$()===e&&V(bt,t instanceof Error?t.message:`Could not load newer messages`)}finally{Mt.delete(n),$()===e&&!r&&Rr(`newer`,`idle`)}}function qr(){let e=g(Y),t=$();if(!e||!t)return Promise.resolve();let n=Dt.catch(()=>void 0).then(async()=>{if(g(Y)!==e||$()!==t)return;let n=g(At).get(t);if(!n||n.newest_seq<=0){await xr();return}let r=await W(Or(`after_seq=${encodeURIComponent(String(n.newest_seq))}&limit=50`));if(g(Y)!==e||$()!==t)return;let i=g(At).get(t);if(!i)return;let a=r.newest_seq||n.newest_seq,o=a>i.newest_seq?r.has_newer:an&&(n=r.channel_seq));return n}function Xr(e,t=g(J)){let n=0;for(let r of t)r.direct_conversation_id===e&&typeof r.channel_seq==`number`&&r.channel_seq>n&&(n=r.channel_seq);return n}function Zr(e,t){return e&&t.unread_count||0}async function Qr(e,t){let n=g(K).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){V(K,g(K).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/channels/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}async function $r(e,t){let n=g(q).find(t=>t.id===e);if(n&&!(t<=0||t<=(n.last_read_seq||0))){V(q,g(q).map(n=>n.id===e?(()=>{let e=Math.max(n.last_seq||0,t);return{...n,last_seq:e,unread_count:t>=e?0:n.unread_count||0,last_read_seq:t}})():n));try{await W(`/api/dms/${e}/read`,{method:`POST`,body:JSON.stringify({seq:t})})}catch{}}}function ei(e){let t=g(At).get(e)?.newest_seq||0,n=g(K).find(t=>t.id===e);if(n)return Math.max(n.last_seq||0,(n.last_read_seq||0)+(n.unread_count||0),Yr(e),t);let r=g(q).find(t=>t.id===e);return r?Math.max(r.last_seq||0,(r.last_read_seq||0)+(r.unread_count||0),Xr(e),t):0}function ti(e){let t=g(At).get(e);return!t||t.has_newer?0:g(K).find(t=>t.id===e)?Yr(e):g(q).find(t=>t.id===e)?Xr(e):0}function ni(e={}){if(!e.all&&Date.now()=0&&!_i(t,e))return}let n=e.all?Math.max(e.seq||0,ei(t)):e.seq||ti(t);if(!(n<=0)){if(g(q).some(e=>e.id===t)){$r(t,n),e.all&&ri(t,n);return}g(K).some(e=>e.id===t)&&(Qr(t,n),e.all&&ri(t,n))}}function ri(e,t){Ut.delete(e),Ut=new Map(Ut),V(K,g(K).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n)),V(q,g(q).map(n=>n.id===e?{...n,last_seq:Math.max(n.last_seq||0,t),last_read_seq:Math.max(n.last_read_seq||0,t),unread_count:0}:n))}function ii(e){let t=g(K).find(t=>t.id===e);return t?t.last_read_seq||0:g(q).find(t=>t.id===e)?.last_read_seq||0}function ai(e){let t=g(K).find(t=>t.id===e);if(t)return Zr(e,t)>0?t.last_read_seq||0:-1;let n=g(q).find(t=>t.id===e);return n&&Zr(e,n)>0?n.last_read_seq||0:-1}function si(e,t,n){for(let r of t){if(!Ti(r,e)||r.parent_message_id||r.author?.id===g(G)?.id||r.author_id===g(G)?.id)continue;let t=r.channel_seq;if(typeof t==`number`&&t>n)return r}return null}function ci(e,t){if(!e)return;let n=gi(e);if(Zr(e,n)<=0){Ut.delete(e),Ut=new Map(Ut);return}let r=n.last_read_seq||0,i=Ut.get(e);if(i?.boundarySeq===r&&i.since||!_i(e,r))return;let a=si(e,t,r);a&&(Ut=new Map(Ut).set(e,{boundarySeq:r,since:bi(a.created_at)}))}function li(e,t,n){if(!e||!n)return;let r=Ut.get(e);r?.boundarySeq===t&&r.since||(Ut=new Map(Ut).set(e,{boundarySeq:t,since:bi(n)}))}function ui(e){let t=e.payload,n=t.channel_seq??e.seq??t.seq;return typeof n==`number`?n:Number(n)||0}function di(e){let t=e.payload;return{channelID:e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),dmID:typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``}}function fi(e,t){if(e.type!==`message.created`)return;let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`||!g(ht)||document.visibilityState===`visible`&&t)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===g(G)?.id)return;let{channelID:a,dmID:o}=di(e),s=g(K).find(e=>e.id===a),c=ja(i)?.display_name||`ClickClack`,l=s?`#${s.name}`:`Direct message`,u=typeof n.body==`string`?n.body:`New message`,d=typeof n.message_id==`string`?n.message_id:`${a||o}:${e.seq||Date.now()}`;if(nt){nt.notify({body:pi(u),route:Wn(a||o),tag:`clickclack:${d}`,title:`${c} in ${l}`});return}if(!(typeof Notification>`u`||Notification.permission!==`granted`))try{let e=new Notification(`${c} in ${l}`,{body:pi(u),tag:`clickclack:${d}`,icon:`/favicon.svg`});e.onclick=()=>{window.focus(),e.close(),a?br(a):o&&ma(o)}}catch{}}function pi(e){let t=e.replace(/!\[[^\]]*]\([^)]+\)/g,`[image]`).replace(/\[[^\]]+]\(([^)]+)\)/g,`$1`).replace(/[`*_>#|]/g,``).replace(/\s+/g,` `).trim();return t?t.length>180?`${t.slice(0,177)}...`:t:`New message`}function mi(e){if(e.type!==`message.created`)return!1;let t=ui(e);if(t<=0)return!1;let{channelID:n,dmID:r}=di(e);return n?t<=(g(K).find(e=>e.id===n)?.last_seq||0):r?t<=(g(q).find(e=>e.id===r)?.last_seq||0):!1}async function hi(e){let t=e.payload,n=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;return!n||g(q).some(e=>e.id===n)?!1:(await da(),g(q).some(e=>e.id===n))}function gi(e){return g(K).find(t=>t.id===e)||g(q).find(t=>t.id===e)||{}}function _i(e,t,n=g(At)){if(!e||t<0)return!1;let r=n.get(e);if(!r||r.messages.length===0)return!1;let i=t+1;return r.oldest_seq<=i&&r.newest_seq>=i}function vi(e,t,n=g(At)){let r=Ut.get(e);if(r?.boundarySeq===t)return r.since;if(!_i(e,t,n))return``;let i=si(e,g(J),t);return i?bi(i.created_at):``}function bi(e){let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(void 0,{hour:`numeric`,minute:`2-digit`}).format(t)}function xi(){if(!g(Gt)||!g(Ot))return;let e=g(Ot).captureState();e&&kt.set(g(Gt),e)}function Si(e,t){let n=e!==g(Gt);V(Kt,kt.get(e));let r=g(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&Ti(t,e)),i=new Map(r.map(e=>[e.id,e])),a=new Map(r.filter(e=>e.nonce).map(e=>[e.nonce,e])),o=t.map(e=>{let t=i.get(e.id)||(e.nonce?a.get(e.nonce):void 0);return t?e.nonce&&Ai.has(e.nonce)?{...e,nonce:t.nonce,status:t.status,attachments:t.attachments?.length?t.attachments:e.attachments}:{...e,nonce:t.nonce,attachments:t.attachments?.length?t.attachments:e.attachments}:e}),s=new Set(o.map(e=>e.id)),c=new Set(o.map(e=>e.nonce).filter(Boolean)),l=g(J).filter(t=>(t.status===`pending`||t.status===`failed`)&&t.id.startsWith(`tmp_`)&&!s.has(t.id)&&!(t.nonce&&c.has(t.nonce))&&Ti(t,e));V(J,l.length>0?[...o,...l]:o),V(Gt,e),ci(e,g(J)),n&&(V(an,[]),V(sn,[]),Bt())}function Ci(e,t=`append`){let n=$(),r=n?g(At).get(n):void 0;if(!n||!r){V(J,e);return}let i=e.filter(e=>Ti(e,n)),a=Hr(n,i,t),o=a.filter(e=>(e.channel_seq||0)>0),s=o[0]?.channel_seq||r.oldest_seq,c=o[o.length-1]?.channel_seq||r.newest_seq,l=wi(a[0])>wi(i[0]),u=wi(a[a.length-1])0)&&await Cr(),await Ei(),ni({all:!0}),await Ei()}catch(e){V(bt,e instanceof Error?e.message:`Could not jump to latest messages`)}}let Ai=new Map;function ji(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function Mi(e,t,n=`tmp_${e}`){let r=new Date().toISOString();return{id:n,workspace_id:t.workspaceID,channel_id:t.channelID,direct_conversation_id:t.directConversationID,author_id:g(G)?.id||``,thread_root_id:n,body:t.body,body_format:`markdown`,created_at:r,author:g(G)||void 0,attachments:t.upload?[t.upload]:[],quoted_message_id:t.quotedMessageID,nonce:e,status:`pending`}}async function Ni(){let e=g(Je).trim();if(!e)return;if(g(b)&&!g(S)){V(bt,`This conversation has no active recipient`);return}if(!g(X)&&!g(Z)){V(bt,`pick or create a channel`);return}Bt(),V(Fe,null);let t=++vn,n=$(),r=g(Z)?`dm`:`channel`,i=g($t)&&g(en)===r?g($t):null;if(g(X)&&!g(Z)&&!g(st)&&!i){let r=Ka(e),i=r?qa(g(Ne),r.command):void 0;if(r&&i){V(Je,``),await Pi(g(X),r.command,r.text,e,n,t);return}}let a={body:e,quotedMessageID:i?.id,upload:g(st)||void 0,workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0,viewKey:$()};V(Je,``),i&&Xi(),V(st,null),await Li(a)}async function Pi(e,t,n,r,i,a){try{let r=await Ja(e,t,n);if(a!==vn||$()!==i)return;r.text&&r.response_type!==`in_channel`&&V(Fe,{kind:`ephemeral`,text:r.text})}catch(e){if(console.warn(`slash dispatch failed`,e),a!==vn||$()!==i)return;V(Fe,{kind:`error`,text:e instanceof me&&e.message?Fi(e):`${t} failed`}),g(Je).trim()||V(Je,r)}}function Fi(e){try{let t=JSON.parse(e.message);if(t&&typeof t.error==`string`&&t.error)return t.error}catch{}return e.message}async function Li(e,t,n){let r=t??ji(),i=`tmp_${r}`,a=n??i,o=!t&&$()===e.viewKey,s=o&&g(zt);Ai.set(r,e);let c=Mi(r,e,a);t?Ci(g(J).map(e=>e.id===a?c:e)):$()===e.viewKey&&(Ci([...g(J),c]),Oi());let l=e.directConversationID?`/api/dms/${e.directConversationID}/messages`:`/api/channels/${e.channelID}/messages`,u={body:e.body,nonce:r};e.quotedMessageID&&(u.quoted_message_id=e.quotedMessageID);try{let t=(await W(l,{method:`POST`,body:JSON.stringify(u)})).message;if(e.upload)try{await W(`/api/messages/${t.id}/attachments`,{method:`POST`,body:JSON.stringify({upload_id:e.upload.id})}),t={...t,attachments:[...t.attachments||[],e.upload]}}catch(n){console.warn(`attachment failed`,n);let i={...t,nonce:r,status:`failed`,attachments:e.upload?[...t.attachments||[],e.upload]:t.attachments};Ci(g(J).map(e=>e.id===a?i:e));return}Ai.delete(r),g(J).findIndex(e=>e.id===a)>=0?Ci(g(J).map(e=>e.id===a?t:e)):g(J).some(e=>e.id===t.id)?Ci(g(J).map(e=>e.id===t.id?t:e)):Ti(t,$())&&!g(J).some(e=>e.id===t.id)&&Ci([...g(J),t]),$()===e.viewKey&&o&&(s&&await Cr(),await Oi(),ni({all:!0,seq:t.channel_seq||0}))}catch(e){console.warn(`send failed`,e),Ci(g(J).map(e=>e.id===a?{...e,status:`failed`}:e))}}function Ri(e){if(!e.nonce)return;let t=Ai.get(e.nonce);if(!t){zi(e);return}Li({...t,viewKey:t.viewKey},e.nonce,e.id)}function zi(e){e.nonce&&Ai.delete(e.nonce),Ci(g(J).filter(t=>t.id!==e.id))}function Bi(e){!e.id||e.deleted_at||g(xn).has(e.id)||(V(Cn,e),V(wn,``))}async function Vi(){let e=g(Cn);if(!(!e||g(xn).has(e.id))){V(xn,new Set([...g(xn),e.id])),V(wn,``);try{let t=(await W(`/api/messages/${e.id}`,{method:`DELETE`})).message;Ci(g(J).map(e=>e.id===t.id?{...e,...t}:e)),V(Te,g(Te).map(e=>e.id===t.id?{...e,...t}:e)),g(Q)?.id===t.id&&V(Q,{...g(Q),...t}),g($t)?.id===t.id&&Xi(),V(bt,``),V(Cn,null)}catch(e){V(wn,e instanceof Error?e.message:`Could not delete message`)}finally{let t=new Set(g(xn));t.delete(e.id),V(xn,t)}}}async function Hi(e){ia(),await Ui(e.id,e),g(Y)&&g(Q)?.route_id&&window.location.pathname!==Un(g(Y),g(Q).id)&&await qn(g(Y),g(Q).id)}async function Ui(e,t,n=()=>!0){V(ze,null),V(Be,``),V(je,null),t&&(V(Q,t),V(rn,`thread`));let r=await W(`/api/messages/${e}/thread`);if(!n())return!1;let i={...r.root,thread_state:r.thread_state};return V(Q,i),V(rn,`thread`),Ci(g(J).map(e=>e.id===i.id?i:e)),V(Te,r.replies),V(Oe,r.thread_state),!0}async function Wi(e){let t=await W(`/api/messages/${e}/thread`),n={...t.root,thread_state:t.thread_state};Ci(g(J).map(e=>e.id===n.id?n:e))}function Gi(e,t){let n=g(J).find(t=>t.id===e);if(!n)return!1;let r=new Date(t.created_at).getTime();if(Number.isFinite(r)&&ra}async function Ki(){let e=g(Ye).trim();if(!e||!g(Q))return;if(g(b)&&!g(S)){V(bt,`This direct message has no active recipient`);return}let t=g($t)&&g(en)===`thread`?g($t):null;V(Ye,``);let n={body:e,nonce:ji()};t&&(n.quoted_message_id=t.id);let r=await W(`/api/messages/${g(Q).id}/thread/replies`,{method:`POST`,body:JSON.stringify(n)});t&&Xi(),g(Te).some(e=>e.id===r.message.id)||V(Te,[...g(Te),r.message]),V(Oe,r.thread_state)}function qi(e,t){V($t,e),V(en,t),V(rn,t===`thread`?`thread`:`message`)}function Ji(){return g(Cn)!==null||g(Re)!==null||g(ut)||g(ft)||g(pt)}function Yi(){return g(rn)===`thread`&&g(Q)&&g(nn)?g(nn):g(tn)}function Xi(){V($t,null),V(en,null)}async function Zi(e){let t=e.quoted_message_id;if(!t)return;if(g(Ot)?.scrollToMessage(t)??!1){await ea(t);return}let n=await W(`/api/messages/${t}`);Ti(n.message,$())&&await ca(n.message)}async function Qi(){Wt=Date.now()+1200,!(g(N)&&g(Ot)?.scrollToDivider(!1))&&await $i()}async function $i(){let e=$();if(!e)return;Wt=Date.now()+1200;let t=ii(e),n=Ut.get(e),r=(n?.boundarySeq===t?n.boundarySeq:t)+1;r<=0||(await la(r),await o(),g(Ot)?.scrollToDivider(!1))}async function ea(e){await o();let t=document.querySelector(`[data-message-id="${CSS.escape(e)}"]`);t&&(t.classList.add(`highlight`),window.setTimeout(()=>t.classList.remove(`highlight`),1500))}async function ta(){if(!g(Y)||!g($e).trim()){ia();return}let e=g($e).trim();g(ze)&&Va(),(g(Q)||g(je))&&co();let t=++at,n=g(Z)&&g(b)?{workspaceID:g(Y),channelID:``,directConversationID:g(Z),label:`@${De(g(b),g(G)?.id)}`}:g(X)&&g(p)?{workspaceID:g(Y),channelID:g(X),directConversationID:``,label:`#${g(p).name}`}:{workspaceID:g(Y),channelID:``,directConversationID:``,label:``};V(tt,!1),it=0;let r={query:e,scope:n,results:[],nextCursor:null,state:`loading`,error:``,loadingMore:!1,moreError:``,activeResultID:``};V(et,r);try{let e=await W(`/api/search?${na(r).toString()}`);if(t!==at)return;V(et,{...r,results:e.results,nextCursor:e.next_cursor,state:`ready`})}catch(e){if(t!==at)return;V(et,{...r,state:`error`,error:e instanceof me?e.message:`Search is unavailable right now.`})}}function na(e,t=``){let n=new URLSearchParams({workspace_id:e.scope.workspaceID,q:e.query});return e.scope.directConversationID?n.set(`direct_conversation_id`,e.scope.directConversationID):e.scope.channelID&&n.set(`channel_id`,e.scope.channelID),t&&n.set(`cursor`,t),n}async function ra(){let e=g(et);if(!e||e.state!==`ready`||!e.nextCursor||e.loadingMore)return;let t=at;V(et,{...e,loadingMore:!0,moreError:``});try{let n=await W(`/api/search?${na(e,e.nextCursor).toString()}`);if(t!==at||!g(et))return;let r=new Set(g(et).results.map(e=>e.id));V(et,{...g(et),results:[...g(et).results,...n.results.filter(e=>!r.has(e.id))],nextCursor:n.next_cursor,loadingMore:!1})}catch(e){if(t!==at||!g(et))return;V(et,{...g(et),loadingMore:!1,moreError:e instanceof me?e.message:`Couldn’t load more results.`})}}function ia(){at+=1,V($e,``),V(et,null),V(tt,!1),it=0}function aa(e){if(e.channel_name)return`#${e.channel_name}`;if(e.direct_conversation_id){let t=g(q).find(t=>t.id===e.direct_conversation_id);return t?`@${De(t,g(G)?.id)}`:`Direct message`}return``}async function oa(e){let t=g(et),n=e.channel_id||e.direct_conversation_id||``;if(!(!t||!g(Y)||!n)&&(V(et,{...t,activeResultID:e.id}),$()!==n&&(await qn(g(Y),n),await tr(g(Y),n)),$()===n)){if(e.parent_message_id){it=document.querySelector(`.search-results-scroll`)?.scrollTop??0;let t=at;V(tt,!0);try{if(!await Ui(e.thread_root_id,void 0,()=>t===at&&g(tt)&&g(et)?.activeResultID===e.id))return}catch(e){throw V(tt,!1),await o(),e}g(Q)?.route_id&&await qn(g(Y),g(Q).id),await o(),document.querySelector(`.thread [data-message-id="${CSS.escape(e.id)}"]`)?.scrollIntoView({block:`center`}),document.querySelector(`.thread .thread-back`)?.focus(),await ea(e.id);return}if(e.channel_seq&&e.channel_seq>0){await la(e.channel_seq,e.id);return}await xr()}}async function sa(){if(!g(et)||!g(tt))return;let e=$();g(en)===`thread`&&Xi(),V(Q,null),V(je,null),V(rn,`message`),V(Te,[]),V(tt,!1),g(Y)&&e&&await qn(g(Y),e),await o();let t=document.querySelector(`.search-results-scroll`);t&&(t.scrollTop=it),(g(et).activeResultID?document.querySelector(`.search-result[data-result-id="${CSS.escape(g(et).activeResultID)}"]`):null)?.focus({preventScroll:!0})}async function ca(e){let t=e.channel_seq||0;if(t<=0){await xr();return}await la(t,e.id)}async function la(e,t=``){let n=$();if(!n)return;t&&kt.set(n,{atBottom:!1,anchorMessageID:t,anchorPixelOffset:0});let r=n!==g(Gt);zr(),r&&V(Jt,!0);try{let r=await W(Or(`around_seq=${encodeURIComponent(String(e))}&limit=100`));if($()!==n)return;Ar(n,kr(r),`around`),await o(),t&&(g(Ot)?.scrollToMessage(t),await ea(t))}finally{$()===n&&V(Jt,!1)}}async function ua(e){let t=e.currentTarget,n=t.files?.[0];if(!n||!g(Y))return;let r=await rt(n),i=new FormData;i.set(`workspace_id`,g(Y)),i.set(`file`,n),r.width>0&&i.set(`width`,String(r.width)),r.height>0&&i.set(`height`,String(r.height)),r.durationMS>0&&i.set(`duration_ms`,String(r.durationMS));let a=await W(`/api/uploads`,{method:`POST`,body:i});V(st,a.upload),t.value=``}async function da(e=g(Y)){let t=++pn;if(!e){V(q,[]);return}let n=await W(`/api/dms?workspace_id=${e}`);t!==pn||e!==g(Y)||V(q,n.conversations)}function fa(e){V(q,g(q).some(t=>t.id===e.id)?g(q).map(t=>t.id===e.id?e:t):[...g(q),e])}async function pa(e){let t=e.trim();t&&(await ha(t),V(Qe,``),V(pt,!1))}async function ma(e){V(Zt,!1);let t=Un(g(Y),e);e===g(Z)&&!g(X)&&window.location.pathname===t||await qn(g(Y),e)}async function ha(e){let t=e.trim();if(!g(Y)||!t)return;let n=g(q).find(e=>e.members.some(e=>e.id===t));if(n){V(Zt,!1),await qn(g(Y),n.id);return}let r=await W(`/api/dms`,{method:`POST`,body:JSON.stringify({workspace_id:g(Y),member_ids:[t]})});fa(r.conversation),V(Zt,!1),await qn(g(Y),r.conversation.id)}function ga(){bn&&clearTimeout(bn),bn=void 0,V(yn,null)}function _a(e,t){ga(),V(yn,{conversation:e,restoreRoute:t,title:De(e,g(G)?.id)}),bn=setTimeout(()=>{V(yn,null),bn=void 0},8e3)}async function va(){let e=g(yn);if(e){ga();try{let t=await W(`/api/dms/${e.conversation.id}/open`,{method:`POST`});fa(t.conversation),e.restoreRoute&&await qn(e.conversation.workspace_id,t.conversation.id),V(bt,`direct message restored`)}catch(e){V(bt,e instanceof Error?e.message:`Could not restore direct message`)}}}async function ya(e){if(!e)return;let t=g(q).find(t=>t.id===e),n=g(Z)===e;if(await W(`/api/dms/${e}`,{method:`DELETE`}),V(q,g(q).filter(t=>t.id!==e)),t&&_a(t,n),n){Jn();let e=g(K)[0]?.id||``;V(Z,``),V(X,e),e&&er(g(Y),e),await qn(g(Y),e),await xr()}}function ba(){if(_n+=1,Et?.close(),Et=null,V(wt,!1),!g(Y))return;let e=g(Y);Et=Ae({workspaceID:e,onEvent:e=>{Sa(e).catch(e=>{V(bt,e instanceof Error?e.message:`Could not process realtime event`)})},onStatusChange:t=>{V(wt,t),t&&xa(e).catch(t=>{e===g(Y)&&g(bt)===`ready`&&V(bt,t instanceof Error?t.message:`Could not refresh after reconnect`)})}})}async function xa(e){let t=++_n;if(!e||e!==g(Y))return;let n=g(Q)?.id||``,r=g(je)?.kind===`bot`?g(je).id:``;if(V(an,[]),V(sn,[]),await Promise.all([da(e),cr(e),lr(e),ur(e)]),!(t!==_n||e!==g(Y))&&(await xr(),!(t!==_n||e!==g(Y))&&(n&&g(Q)?.id===n&&await Ui(n,g(Q)),r&&g(je)?.id===r))){let e=ja(r);V(je,e&&!e.deleted_at?e:null)}}async function Sa(e){if(e.type===`typing.started`||e.type===`typing.stopped`){Da(e);return}if(e.type===`agent.progress`){Oa(e);return}if(e.type===`channel.read`||e.type===`dm.read`){Ta(e);return}if(e.type===`bot_command.updated`){e.workspace_id===g(Y)&&await ur(e.workspace_id);return}if(e.type===`bot.deleted`){e.workspace_id===g(Y)&&await Ca(e);return}if(e.type===`bot.membership_removed`){e.workspace_id===g(Y)&&await wa(e);return}if((e.type===`channel.created`||e.type===`channel.updated`)&&e.workspace_id===g(Y)){await sr(!1,!1,!1);return}if(e.type===`member.moderation_updated`&&e.workspace_id===g(Y)){let t=g(Z),n=e.payload.user_id===g(G)?.id;if(await Vn(),await cr(),await sr(!1,n,n),n){if(await da(),t&&(g(q).some(e=>e.id===t)?(V(Z,t),V(X,``)):V(Z,``)),!g(X)&&!g(Z)){Ar(``,kr({messages:[],oldest_seq:0,newest_seq:0,has_older:!1,has_newer:!1}),`replace`);return}await xr()}return}if(mi(e))return;let t=e.channel_id===g(X)||e.payload.direct_conversation_id===g(Z);if(fi(e,t),e.type===`message.created`&&!t&&(await hi(e)||Ea(e)),t&&(e.type===`message.created`||e.type===`message.updated`||e.type===`message.deleted`)){let t=e.payload.nonce;if(e.type===`message.created`&&t&&Ai.has(t))return;let n=Di();e.type===`message.created`&&!n?(Wt=Date.now()+1200,Ir($())):e.type===`message.created`?await qr():await xr(),e.type===`message.created`&&Ea(e,n),e.type===`message.created`&&n&&(await Ei(),ni({all:!0,seq:ui(e)}))}let n=e.payload.root_message_id||e.payload.message_id;n&&e.type===`thread.state_updated`&&Gi(n,e)?g(Q)?.id===n?await Ui(n,g(Q)):await Wi(n):e.type!==`thread.reply_created`&&g(Q)&&n===g(Q).id&&await Ui(g(Q).id,g(Q))}async function Ca(e){let t=e.payload.bot_user_id||``;if(!t)return;let n=e.payload.deleted_at||e.created_at,r=e.payload.former_handle||``,i=e=>e.id===t?{...e,handle:``,former_handle:r,deleted_at:n}:e;V(q,g(q).map(e=>({...e,members:e.members.map(i)}))),V(Me,g(Me).filter(e=>e.user.id!==t)),V(Ne,g(Ne).filter(e=>e.bot_user_id!==t)),V(Pe,g(Pe).filter(e=>e.bot.id!==t)),V(an,g(an).filter(e=>e.userID!==t)),g(et)&&V(et,{...g(et),results:g(et).results.map(e=>({...e,author:i(e.author)}))}),g(je)?.id===t&&V(je,null);let a=g(Q)?.id||``;await Promise.all([da(),cr(),lr(),ur()]),await xr(),a&&await Ui(a)}async function wa(e){let t=e.payload.bot_user_id||``;t&&(V(Me,g(Me).filter(e=>e.user.id!==t)),V(Ne,g(Ne).filter(e=>e.bot_user_id!==t)),V(Pe,g(Pe).filter(e=>e.bot.id!==t)),g(je)?.id===t&&V(je,null),await Promise.all([da(e.workspace_id),cr(e.workspace_id),lr(e.workspace_id),ur(e.workspace_id)]))}function Ta(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n!==g(G)?.id)return;let r=e.seq??t.last_read_seq??t.seq,i=typeof r==`number`?r:Number(r)||0;if(e.type===`channel.read`){let n=typeof t.channel_id==`string`?t.channel_id:e.channel_id||``;if(!n)return;V(K,g(K).map(e=>{if(e.id!==n)return e;let t=Math.max(e.last_read_seq||0,i);return{...e,last_read_seq:t,unread_count:t>=(e.last_seq||0)?0:e.unread_count||0}}))}else{let e=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!e)return;V(q,g(q).map(t=>{if(t.id!==e)return t;let n=Math.max(t.last_read_seq||0,i);return{...t,last_read_seq:n,unread_count:n>=(t.last_seq||0)?0:t.unread_count||0}}))}}function Ea(e,t){let n=e.payload,r=typeof n.kind==`string`?n.kind:``;if(r===`agent_commentary`||r===`agent_tool`)return;let i=typeof n.author_id==`string`?n.author_id:``;if(i&&i===g(G)?.id||n.parent_message_id)return;let a=ui(e),{channelID:o,dmID:s}=di(e);if(o){let n=o===g(X)&&!g(Z),r=n?t??Di():!1,i=g(K).find(e=>e.id===o),s=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&li(o,i?.last_read_seq||0,e.created_at),V(K,g(K).map(e=>{if(e.id!==o)return e;let t=Math.max(e.last_seq||0,s),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,s-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}else if(s){let n=s===g(Z),r=n?t??Di():!1,i=g(q).find(e=>e.id===s),o=a>0?a:(i?.last_seq||0)+1;n&&!r&&(i?.unread_count||0)===0&&li(s,i?.last_read_seq||0,e.created_at),V(q,g(q).map(e=>{if(e.id!==s)return e;let t=Math.max(e.last_seq||0,o),i=n&&!r&&(e.unread_count||0)===0?Math.max(e.last_read_seq||0,o-1):e.last_read_seq||0,a=r?0:(e.unread_count||0)+1;return{...e,last_seq:t,last_read_seq:i,unread_count:a}}))}}function Da(e){let t=e.payload,n=typeof t.user_id==`string`?t.user_id:``;if(!n||n===g(G)?.id)return;let r=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),i=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(X)&&r===g(X)||g(Z)&&i===g(Z)))return;if(e.type===`typing.stopped`){V(an,g(an).filter(e=>e.userID!==n));return}let a=ja(n),o=g(an).filter(e=>e.userID!==n);o.push({userID:n,user:a,expiresAt:Date.now()+hr}),V(an,o),Na()}function Oa(e){let t=e.payload,n=e.channel_id||(typeof t.channel_id==`string`?t.channel_id:``),r=typeof t.direct_conversation_id==`string`?t.direct_conversation_id:``;if(!(g(X)&&n===g(X)||g(Z)&&r===g(Z)))return;let i=typeof t.turn_id==`string`?t.turn_id:``,a=typeof t.op==`string`?t.op:``;if(!i||!a)return;if(a===`clear`){V(sn,g(sn).filter(e=>e.turnId!==i));return}let o=t.line,s=o&&typeof o.id==`string`?o.id:``;if(!s)return;let c=o&&typeof o.text==`string`?o.text:``,l=o&&typeof o.title==`string`?o.title:``,u=c||l,d=o&&typeof o.tool_name==`string`?o.tool_name:typeof o?.toolName==`string`?o.toolName:void 0,f=o&&typeof o.status==`string`?o.status:void 0,p=o&&typeof o.kind==`string`?o.kind:void 0,m=g(sn).find(e=>e.turnId===i),h=m?.lines.find(e=>e.id===s),_={id:s,kind:p??h?.kind??`lifecycle`,text:u||h?.text||``,toolName:d??h?.toolName,status:f??h?.status,finalized:a===`finalize`||(h?.finalized??!1)};if(!h&&!_.text&&!_.toolName)return;let v=typeof t.user_id==`string`?t.user_id:``,y=Date.now()+vr;if(!m)V(sn,[...g(sn),{turnId:i,userId:v,lines:[_],expiresAt:y}]);else{let e=m.lines.some(e=>e.id===s)?m.lines.map(e=>e.id===s?_:e):[...m.lines,_];V(sn,g(sn).map(t=>t.turnId===i?{...t,lines:e,expiresAt:y}:t))}ka()}function ka(){cn||=window.setInterval(()=>{let e=Date.now(),t=g(sn).filter(t=>t.expiresAt>e);t.length!==g(sn).length&&V(sn,t),t.length===0&&cn&&(window.clearInterval(cn),cn=void 0)},1e3)}function ja(e){if(g(G)?.id===e)return g(G);let t=g(J).find(t=>t.author?.id===e)?.author;if(t)return t;let n=g(Te).find(t=>t.author?.id===e)?.author;if(n)return n;if(g(Q)?.author?.id===e)return g(Q).author;let r=g(Me).find(t=>t.user.id===e)?.user;if(r)return r;for(let t of g(q)){let n=t.members.find(t=>t.id===e);if(n)return n}}function Na(){on||=window.setInterval(()=>{let e=Date.now(),t=g(an).filter(t=>t.expiresAt>e);t.length!==g(an).length&&V(an,t),t.length===0&&on&&(window.clearInterval(on),on=void 0)},1e3)}function Pa(){g(Y)&&(!g(X)&&!g(Z)||Rt({workspaceID:g(Y),channelID:g(X)||void 0,directConversationID:g(Z)||void 0}))}function Fa(e){!e||e.deleted_at||(ia(),V(ze,null),V(Be,``),V(Q,null),V(je,e),(g(s)===`owner`||g(s)===`moderator`)&&!g(Me).some(t=>t.user.id===e.id)&&cr())}function Ia(e){if(e.key===`Escape`&&g($t)&&g(en)!==`thread`){e.preventDefault(),Xi();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ni())}function Ra(e){if(e.key===`Escape`&&g($t)&&g(en)===`thread`){e.preventDefault(),Xi();return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ki())}function za(e,t){V(Re,{url:e,title:t})}function Ba(e){V(Ve,document.activeElement instanceof HTMLElement?document.activeElement:null),He=g(Q)?document.querySelector(`.thread-scroll`)?.scrollTop??null:null,V(Be,g(qt)),V(ze,e),o().then(()=>{document.querySelector(`.artifact-viewer__actions > button:last-child`)?.focus()})}function Va(){let e=g(Ve),t=g(ze)?.id||``;V(ze,null),V(Be,``),V(Ve,null),o().then(()=>{if(He!==null){let e=document.querySelector(`.thread-scroll`);e&&(e.scrollTop=He)}if(He=null,e?.isConnected){e.focus({preventScroll:!0});return}(g(Q)?document.querySelector(`.thread`):document)?.querySelector(`[data-artifact-upload-id="${CSS.escape(t)}"]`)?.focus({preventScroll:!0})})}function Ha(e,t){for(let e of qe)e.inert=!1;if(qe.clear(),!(!e||!g(Ge)||!t))for(let e of g(Ge).children)!(e instanceof HTMLElement)||e===t||e.inert||(e.inert=!0,qe.add(e))}function Ga(e){if(!g(ze)||!g(Qt)||e.key!==`Tab`||!g(We))return;let t=Array.from(g(We).querySelectorAll(`a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.inert&&e.getClientRects().length>0);if(t.length===0){e.preventDefault(),g(We).focus();return}let n=t[0],r=t[t.length-1];e.shiftKey&&(document.activeElement===n||!g(We).contains(document.activeElement))?(e.preventDefault(),r.focus()):!e.shiftKey&&(document.activeElement===r||!g(We).contains(document.activeElement))&&(e.preventDefault(),n.focus())}function Ya(e){let t=e.target;t instanceof HTMLImageElement&&t.closest(`.markdown`)&&(e.preventDefault(),za(Le(t),t.alt||`Image`))}function ao(e){let t=g(Je)&&!g(Je).endsWith(` +`)?` +`:``;V(Je,`${g(Je)}${t}${e}`)}function oo(e,t=e){ao(`${e}${e==="```"?` +code +`:`text`}${t}`)}function so(e,t){ao(`![${t}](${e})`),V(lt,!1),V(mt,``)}function co(){if(g(ze)){Va();return}let e=g(Q)!==null,t=g(tt),n=$();g(en)===`thread`&&Xi(),V(Q,null),V(je,null),V(rn,`message`),V(Te,[]),t&&ia(),(e||t)&&g(Y)&&n&&qn(g(Y),n)}function lo(){g(se)?co():V(bt,`pick a message to open its thread`)}function uo(e){if(Ga(e),!e.defaultPrevented){if(e.key===`Escape`){if(e.target instanceof Element&&e.target.closest(`[data-handles-escape]`))return;if(Ji())fo();else if(g(Zt)){e.preventDefault(),po();return}else if(g(ze)){e.preventDefault(),co();return}else if(g(tt)){e.preventDefault(),co();return}else if(g(ce)){e.preventDefault(),ia();return}else if(g($t)){e.preventDefault(),Xi();return}else{e.preventDefault(),ki();return}}if(g(Zt)&&e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey&&!e.isComposing){let t=document.activeElement;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement)&&!(t instanceof HTMLSelectElement)&&!(t instanceof HTMLElement&&t.isContentEditable)){e.preventDefault();return}}jt(e,{authRequired:g(St),isModalOpen:()=>Ji()||g(Zt),messageInput:g(tn),replyInput:g(nn),target:Yi})}}function fo(){g(Cn)&&g(xn).has(g(Cn).id)||(V(Cn,null),V(wn,``),V(Re,null),V(ut,!1),V(ft,!1),V(pt,!1))}function po(){V(Zt,!1)}function mo(){if(g(Qt)){V(Zt,!g(Zt));return}V(Xt,!g(Xt))}v(()=>(g(Ce),g(Y)),()=>{V(a,g(Ce).find(e=>e.id===g(Y)))}),v(()=>g(a),()=>{V(s,g(a)?.role||``)}),v(()=>g(s),()=>{V(l,g(s)===`owner`)}),v(()=>(g(je),g(Me)),()=>{V(d,g(je)?g(Me).find(e=>e.user.id===g(je)?.id):void 0)}),v(()=>(g(K),g(X)),()=>{V(p,g(K).find(e=>e.id===g(X)))}),v(()=>(g(q),g(Z)),()=>{V(b,g(q).find(e=>e.id===g(Z)))}),v(()=>g(b),()=>{V(S,g(b)?.can_send??!0)}),v(()=>(g(Z),g(X)),()=>{V(qt,g(Z)||g(X)||``)}),v(()=>g(qt),()=>{fr(g(qt))}),v(()=>(g(X),g(Pe),g(b)),()=>{V(T,g(X)?g(Pe):g(b)?g(Pe).filter(e=>g(b)?.members?.some(t=>t.id===e.bot.id)):[])}),v(()=>(g(Z),g(q),g(X),g(K)),()=>{V(E,g(Z)?g(q).find(e=>e.id===g(Z))||{}:g(X)&&g(K).find(e=>e.id===g(X))||{})}),v(()=>(g(qt),g(E)),()=>{V(D,Zr(g(qt),g(E)))}),v(()=>(g(bt),g(K),g(q)),()=>{V(O,g(bt)===`ready`?g(K).reduce((e,t)=>e+(t.unread_count||0),0)+g(q).reduce((e,t)=>e+(t.unread_count||0),0):0)}),v(()=>g(O),()=>{nt?.setUnreadCount(g(O))}),v(()=>g(dn),()=>{nt&&g(dn)&&typeof window<`u`&&nt.setActiveRoute(`${window.location.pathname}${window.location.search}${window.location.hash}`)}),v(()=>(g(D),g(E)),()=>{V(A,g(D)>0&&g(E).last_read_seq||0)}),v(()=>(g(D),g(qt),g(A),g(At)),()=>{V(N,g(D)>0&&_i(g(qt),g(A),g(At)))}),v(()=>(g(D),g(qt),g(A),g(At)),()=>{V(te,g(D)>0?vi(g(qt),g(A),g(At)):``)}),v(()=>(g(J),g(gt),g(_t),g(ln)),()=>{V(ae,xt(g(J),{hideCommentary:g(gt),hideToolCalls:g(_t)},g(ln)))}),v(()=>g(sn),()=>{V(oe,g(sn).some(e=>e.lines.some(e=>!e.finalized)))}),v(()=>(g(ze),g(Be),g(qt)),()=>{g(ze)&&g(Be)&&g(Be)!==g(qt)&&(V(ze,null),V(Be,``),V(Ve,null))}),v(()=>(g(Q),g(je),g(ze)),()=>{V(se,g(Q)!==null||g(je)!==null||g(ze)!==null)}),v(()=>(g(et),g(tt)),()=>{V(ce,g(et)!==null&&!g(tt))}),v(()=>(g(Qt),g(ze),g(We)),()=>{Ha(g(Qt)&&g(ze)!==null,g(We))}),v(()=>(g(J),g(q),g(G)),()=>{V(le,Ee(g(J),g(q),g(G)?.id||``))}),v(()=>(g(G),g(le),g(Me),g(b)),()=>{V(Ie,pr(g(G),g(le),g(Me),g(b)))}),v(()=>(g(en),g($t),g(J)),()=>{g(en)===`channel`&&g($t)&&!g(J).some(e=>e.id===g($t)?.id)&&Xi()}),v(()=>(g(en),g($t),g(J)),()=>{g(en)===`dm`&&g($t)&&!g(J).some(e=>e.id===g($t)?.id)&&Xi()}),v(()=>(g(en),g($t),g(Q),g(Te)),()=>{g(en)===`thread`&&g($t)&&g(Q)&&g($t).id!==g(Q).id&&!g(Te).some(e=>e.id===g($t)?.id)&&Xi()}),v(()=>(g(bt),g(G),m(xe()),m(Se()),g(dn)),()=>{g(bt)===`ready`&&g(G)&&Hn(xe(),Se())!==g(dn)&&tr(xe(),Se())}),v(()=>(g(lt),g(mt)),()=>{V(U,g(lt)?ot.filter(e=>{let t=g(mt).trim().toLowerCase();return!t||e.title.toLowerCase().includes(t)||e.tags.some(e=>e.includes(t))}):[])}),_(),I();var ho=i();n(`1oa2eo8`,e=>{u(e,Xa())}),h(`keydown`,ie,uo,!0),h(`pointerdown`,ie,function(...e){Tt?.apply(this,e)},!0);var go=B(ho),_o=e=>{var n=Qa(),r=B(n),i=e=>{var t=Za();y(()=>R(t,`data-platform`,(m(nt),z(()=>nt.platform)))),u(e,t)};M(r,e=>{be&&nt&&e(i)});var a=j(r,2),o=F(a),s=j(F(o),4),l=j(s,2),d=F(l,!0);w(l),w(o),w(a),y(e=>{R(s,`href`,e),c(d,g(Ct)||`Any GitHub account can join.`)},[()=>(m(fe),z(()=>fe(`/api/auth/github/start`)))]),t(`click`,s,En),u(e,n)},vo=e=>{var n=io(),r=B(n);let i;var o=F(r),h=e=>{{let t=H(()=>(g(b),m(De),g(G),g(p),z(()=>g(b)?`@${De(g(b),g(G)?.id)}`:g(p)?`#${g(p).name}`:void 0))),n=H(()=>(g(a),z(()=>g(a)?.name)));La(e,{get channelTitle(){return g(t)},get connected(){return g(wt)},get platform(){return m(nt),z(()=>nt.platform)},get searchQuery(){return g($e)},get sidebarCollapsed(){return g(Xt)},get mobileNavOpen(){return g(Zt)},get mobileNavigation(){return g(Qt)},get workspaceName(){return g(n)},onOpenWorkspaceSettings:Fn,onResetSearch:ia,onSearch:()=>void ta(),onSearchQuery:e=>V($e,e),onToggleSidebar:mo})}};M(o,e=>{be&&nt&&e(h)});var _=j(o,2),v=F(_),x=e=>{u(e,f(`×`))},E=e=>{u(e,$a())};M(v,e=>{g(Zt)?e(x):e(E,-1)}),w(_);var O=j(_,2),k=e=>{var n=eo();t(`click`,n,po),u(e,n)};M(O,e=>{g(Zt)&&e(k)});var ee=j(O,2);{let e=H(()=>be?`/app`:`/`);Lr(ee,{get workspaces(){return g(Ce)},get homeHref(){return g(e)},get selectedWorkspaceID(){return g(Y)},get workspaceName(){return g(Xe)},get showWorkspaceCreate(){return g(Yt)},hrefForWorkspace:e=>Un(e),onSelectWorkspace:e=>void or(e),onToggleWorkspaceCreate:()=>V(Yt,!g(Yt)),onWorkspaceName:e=>V(Xe,e),onCreateWorkspace:()=>void ar()})}var P=j(ee,2);{let e=H(()=>(g(a),z(()=>g(a)?.name))),t=H(()=>(g(a),m(pe),z(()=>g(a)?.icon_url?pe(g(a).icon_url):``))),n=H(()=>!be),r=H(()=>(g(yn),z(()=>g(yn)?.title)));oi(P,{get workspaceID(){return g(Y)},get workspaceName(){return g(e)},get workspaceIconURL(){return g(t)},get connected(){return g(wt)},get sidebarCollapsed(){return g(Xt)},get showHeader(){return g(n)},get channels(){return g(K)},get directConversations(){return g(q)},get recentPeople(){return g(le)},get currentUser(){return g(G)},get selectedChannelID(){return g(X)},get selectedDirectID(){return g(Z)},get selectedProfile(){return g(je)},onToggleCollapse:mo,hrefForChannel:e=>Un(g(Y),e),hrefForDirect:e=>Un(g(Y),e),onSelectChannel:e=>void br(e),onCreateChannel:()=>V(ft,!0),onSelectDirect:e=>void ma(e),onCreateDirect:()=>V(pt,!0),onHideDirect:e=>void ya(e),get hiddenDirectTitle(){return g(r)},onUndoHideDirect:()=>void va(),onOpenProfile:Fa,onOpenSettings:Pn,onOpenWorkspaceSettings:Fn})}var I=j(P,2),L=F(I),ne=e=>{{let t=H(()=>(g(a),z(()=>g(a)?.name))),n=H(()=>(g(G),z(()=>g(G)?.id))),r=H(()=>g(Q)!==null);Ua(e,{get selectedDirect(){return g(b)},get selectedChannel(){return g(p)},get workspaceName(){return g(t)},get currentUserID(){return g(n)},get searchQuery(){return g($e)},get sidePanelOpen(){return g(se)},get threadOpen(){return g(r)},onSearchQuery:e=>V($e,e),onSearch:()=>void ta(),onResetSearch:ia,onToggleThread:lo,onPinnedItems:()=>V(bt,`no pinned items`)})}};M(L,e=>{be||e(ne)});var ie=j(L,2);{let e=H(()=>g(Nt)!==`idle`),t=H(()=>(g(Q),z(()=>g(Q)?.id))),n=H(()=>(g(G),z(()=>g(G)?.id))),r=H(()=>g(l)&&!g(Z));dr(ie,{get messages(){return g(ae)},get selectedDirect(){return g(b)},get selectedChannel(){return g(p)},get restoreState(){return g(Kt)},get viewKey(){return g(Gt)},get loading(){return g(Jt)},get unreadCount(){return g(D)},get unreadBoundarySeq(){return g(A)},get unreadBoundaryLoaded(){return g(N)},get unreadSince(){return g(te)},get hasOlder(){return g(Lt)},get hasNewer(){return g(zt)},get loadingOlder(){return g(Vt)},get loadingNewer(){return g(Ht)},get prepending(){return g(e)},get selectedThreadID(){return g(t)},get currentUserID(){return g(n)},get canDeleteAnyMessage(){return g(r)},get deletingMessageIDs(){return g(xn)},onListRef:e=>V(Ot,e),onActivateMessageComposer:()=>V(rn,`message`),onInlineImagePointerUp:Ya,onOpenProfile:Fa,onReply:qi,onOpenThread:Hi,onJumpToQuote:e=>void Zi(e),onOpenImage:za,onOpenArtifact:Ba,onLoadOlder:Ur,onLoadNewer:e=>Wr(e===`wheel`),onJumpToUnread:()=>void Qi(),onHistorySettled:Jr,onReachedBottom:ni,onMarkRead:e=>{ni({all:!0,seq:e})},onRetry:Ri,onDiscard:zi,onDeleteMessage:Bi})}var ue=j(ie,2);Sr(ue,{get turns(){return g(sn)}});var de=j(ue,2);{let e=H(()=>(g(G),z(()=>g(G)?.id)));_r(de,{get entries(){return g(an)},get currentUserID(){return g(e)}})}var fe=j(de,2),W=F(fe);wr(W,{get active(){return g(oe)}});var me=j(W,2),he=e=>{var n=to();let r;var i=F(n),a=F(i,!0);w(i);var o=j(i,2),s=F(o,!0);w(o);var l=j(o,2);w(n),y(()=>{r=C(n,1,`composer-notice`,null,r,{"composer-notice--error":g(Fe).kind===`error`}),c(a,(g(Fe),z(()=>g(Fe).kind===`ephemeral`?`Only visible to you`:`Command failed`))),c(s,(g(Fe),z(()=>g(Fe).text)))}),t(`click`,l,()=>V(Fe,null)),u(e,n)};M(me,e=>{g(Fe)&&e(he)});var ge=j(me,2);{let e=H(()=>(g(b),g(S),m(De),g(G),g(p),z(()=>g(b)&&!g(S)?`No active recipient`:g(b)?`Message ${De(g(b),g(G)?.id)}`:g(p)?`Message #${g(p).name}`:`Pick a channel to start`))),t=H(()=>!!g(b)&&!g(S)),n=H(()=>g($t)&&g(en)===(g(Z)?`dm`:`channel`)?g($t):null),r=H(()=>g(X)?g(Ne):[]);Ue(ge,{get value(){return g(Je)},get placeholder(){return g(e)},ariaLabel:`Message body`,submitLabel:`Send`,get disabled(){return g(t)},get pendingUpload(){return g(st)},get replyTarget(){return g(n)},showUpload:!0,showToolbar:!0,get showGifPicker(){return g(lt)},get gifQuery(){return g(mt)},get filteredGifs(){return g(U)},get slashCommands(){return g(r)},get botCommands(){return g(T)},get mentionPeople(){return g(Ie)},onValue:e=>{let t=g(Je);V(Je,e),e.trim()&&e!==t?Pa():e.trim()||Bt()},onSubmit:()=>void Ni(),onKeydown:Ia,onFocus:()=>V(rn,`message`),onInputRef:e=>V(tn,e),onUploadFile:ua,onRemoveUpload:()=>V(st,null),onClearReply:Xi,onApplyMarkdownWrap:oo,onAppendToComposer:ao,onToggleGif:()=>V(lt,!g(lt)),onGifQuery:e=>V(mt,e),onPickGif:so})}w(fe),w(I);var _e=j(I,2),ve=e=>{var t=no();Sn(F(t),{get upload(){return g(ze)},onClose:Va}),w(t),re(t,e=>V(We,e),()=>g(We)),y(()=>{t.inert=g(Zt),R(t,`role`,g(Qt)?`dialog`:`complementary`),R(t,`aria-modal`,g(Qt)?`true`:void 0)}),u(e,t)};M(_e,e=>{g(ze)&&e(ve)});var ye=j(_e,2),xe=e=>{{let t=H(()=>g(ze)!==null),n=H(()=>g(Zt)||g(ze)!==null);Ii(e,{get session(){return g(et)},get covered(){return g(t)},get inert(){return g(n)},contextFor:aa,onClose:ia,onOpenResult:e=>void oa(e),onLoadMore:()=>void ra()})}},Se=e=>{var t=ro();let n;var r=F(t),i=e=>{{let t=H(()=>g($t)&&g(en)===`thread`?g($t):null),n=H(()=>(g(b),g(S),z(()=>!!(g(b)&&!g(S))))),r=H(()=>g(tt)&&g(et)?()=>void sa():void 0),i=H(()=>(g(G),z(()=>g(G)?.id))),a=H(()=>g(l)&&!g(Z));Ke(e,{get root(){return g(Q)},get replies(){return g(Te)},get threadState(){return g(Oe)},get replyBody(){return g(Ye)},get replyTarget(){return g(t)},get mentionPeople(){return g(Ie)},get replyDisabled(){return g(n)},onClose:co,get onBack(){return g(r)},onReplyBody:e=>V(Ye,e),onSubmitReply:()=>void Ki(),onReplyKeydown:Ra,onReplyFocus:()=>V(rn,`thread`),onReplyInputRef:e=>V(nn,e),get currentUserID(){return g(i)},onSetReplyTarget:qi,onClearReply:Xi,get canDeleteAnyMessage(){return g(a)},get deletingMessageIDs(){return g(xn)},onDeleteMessage:Bi,onActivateThreadComposer:()=>V(rn,`thread`),onInlineImagePointerUp:Ya,onJumpToQuote:e=>void Zi(e),onOpenImage:za,onOpenArtifact:Ba})}},o=e=>{{let t=H(()=>(g(a),z(()=>g(a)?.name)));yi(e,{get profile(){return g(je)},get currentUser(){return g(G)},get workspaceName(){return g(t)},get currentUserRole(){return g(s)},get moderation(){return g(d)},onClose:co,onEdit:Pn,onMessage:e=>void ha(e),onApprove:e=>void gr(e,{role:`member`,clear_timeout:!0,blocked:!1}),onTimeout:e=>void gr(e,{timeout_minutes:60}),onBlock:e=>void gr(e,{blocked:!0}),onUnblock:e=>void gr(e,{blocked:!1,clear_timeout:!0}),onSetStatus:()=>V(bt,`status messages are coming soon`)})}},c=e=>{Ma(e,{})};M(r,e=>{g(Q)?e(i):g(je)?e(o,1):e(c,-1)}),w(t),y(()=>{n=C(t,1,`thread`,null,n,{open:g(se),covered:g(ze)!==null}),t.inert=g(Zt)||g(ze)!==null,R(t,`aria-hidden`,g(ze)?`true`:void 0),R(t,`aria-label`,g(je)?`Profile pane`:`Thread pane`)}),u(e,t)};M(ye,e=>{g(ce)&&g(et)?e(xe):e(Se,-1)}),w(r),re(r,e=>V(Ge,e),()=>g(Ge));var we=j(r,2),J=e=>{{let t=H(()=>nt!=null);Aa(e,{get user(){return g(G)},get workspaces(){return g(Ce)},get initialSection(){return g(dt)},get hideCommentary(){return g(gt)},get hideToolCalls(){return g(_t)},get userAlign(){return g(vt)},get otherAlign(){return g(yt)},get isDesktop(){return g(t)},onUserUpdated:In,onHideCommentary:jn,onHideToolCalls:Mn,onUserAlign:kn,onOtherAlign:An,onBrowserNotificationsChanged:e=>V(ht,e),onClose:fo})}};M(we,e=>{g(ut)&&g(G)&&e(J)});var Ee=j(we,2),Ae=e=>{Dr(e,{get channelName(){return g(Ze)},status:``,onChannelName:e=>V(Ze,e),onClose:fo,onCreate:()=>void yr()})};M(Ee,e=>{g(ft)&&e(Ae)});var Me=j(Ee,2),Pe=e=>{{let t=H(()=>(g(G),z(()=>g(G)?.id)));jr(e,{get people(){return g(le)},get currentUserID(){return g(t)},get memberID(){return g(Qe)},onMemberID:e=>V(Qe,e),onClose:fo,onStart:e=>void pa(e)})}};M(Me,e=>{g(pt)&&e(Pe)});var Le=j(Me,2),Be=e=>{{let t=H(()=>(g(xn),g(Cn),z(()=>g(xn).has(g(Cn).id))));mr(e,{get message(){return g(Cn)},get deleting(){return g(t)},get error(){return g(wn)},onClose:fo,onConfirm:()=>void Vi()})}};M(Le,e=>{g(Cn)&&e(Be)});var Ve=j(Le,2),He=e=>{ke(e,{get url(){return g(Re),z(()=>g(Re).url)},get title(){return g(Re),z(()=>g(Re).title)},onClose:fo})};M(Ve,e=>{g(Re)&&e(He)}),y(()=>{i=C(r,1,`shell`,null,i,{"desktop-shell":be,"nav-open":g(Zt),"sidebar-collapsed":g(Xt),"thread-open":g(se)&&!g(ce),"search-open":g(ce),"artifact-open":g(ze)!==null}),R(r,`data-connected`,g(wt)),R(r,`data-app-ready`,g(wt)&&g(bt)===`ready`),R(_,`aria-expanded`,g(Zt)),I.inert=g(Zt)}),t(`click`,_,()=>V(Zt,!g(Zt))),u(e,n)};M(go,e=>{g(St)?e(_o):e(vo,-1)}),u(e,ho),ee()}U([`click`]);export{Ya as n,ao as t}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/entry/app.CPds4rfU.js b/apps/api/internal/webassets/dist/_app/immutable/entry/app.Bsb6xClM.js similarity index 51% rename from apps/api/internal/webassets/dist/_app/immutable/entry/app.CPds4rfU.js rename to apps/api/internal/webassets/dist/_app/immutable/entry/app.Bsb6xClM.js index af882be0..5ee15aed 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/entry/app.CPds4rfU.js +++ b/apps/api/internal/webassets/dist/_app/immutable/entry/app.Bsb6xClM.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.LF7MykI2.js","../chunks/DK3Fl9T5.js","../chunks/CX2IBWVU.js","../chunks/xihTtKlq.js","../assets/0.zhCwU1YX.css","../nodes/1.xA0gzmtV.js","../chunks/D3cFyIXr.js","../chunks/Ct85fhNP.js","../chunks/BuFlayix.js","../nodes/2.DUtQfIwk.js","../chunks/CRJVHtae.js","../chunks/H8kj0_R5.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.Cc2txCCJ.js","../chunks/HclGiUj8.js","../chunks/BMVuLp4J.js","../nodes/4.Dko9an8f.js","../chunks/2PbeDRak.js","../chunks/BBHxP-zi.js","../chunks/DfVq8Tl1.js","../assets/ChatApp.nfECkybw.css","../nodes/5.CQmOzmw-.js","../nodes/6.B4FM4ibZ.js","../nodes/7.Djqv-MIF.js","../chunks/Cd59ytED.js","../nodes/8.BIuvC-pW.js","../chunks/Cj1BxjFB.js","../nodes/9.BrH5GQFY.js","../nodes/10.DSRK_DQV.js","../nodes/11.D8J-Bmsg.js"])))=>i.map(i=>d[i]); -import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,Z as u,a as d,bt as f,ct as p,dt as m,gt as h,ht as g,i as _,it as v,j as y,nt as b,r as x,rt as S,s as C,st as w}from"../chunks/CX2IBWVU.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(`
                `),O=n(` `,1);function k(n,_){h(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);e(()=>_.stores.page.set(_.page)),o(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=p(!1),M=p(!1),N=p(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(w(M,!0),r().then(()=>{w(N,document.title||`untitled page`,!0)}))});return w(j,!0),e});let P=m(()=>_.constructors[2]);var F=O(),I=S(F),L=e=>{let n=m(()=>_.constructors[0]);var r=t();c(S(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=S(r),o=e=>{let n=m(()=>_.constructors[1]);var r=t();c(S(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();c(S(r),()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=m(()=>_.constructors[1]);var r=t();c(S(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=m(()=>_.constructors[0]);var r=t();c(S(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=v(I,2),B=e=>{var t=D(),n=b(t),r=e=>{var t=s();u(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),f(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.LF7MykI2.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>T(()=>import(`../nodes/1.xA0gzmtV.js`),__vite__mapDeps([5,2,1,3,6,7,8]),import.meta.url),()=>T(()=>import(`../nodes/2.DUtQfIwk.js`),__vite__mapDeps([9,1,2,7,8,3,6,10,11,12,13]),import.meta.url),()=>T(()=>import(`../nodes/3.Cc2txCCJ.js`),__vite__mapDeps([14,1,2,15,3,16]),import.meta.url),()=>T(()=>import(`../nodes/4.Dko9an8f.js`),__vite__mapDeps([17,2,1,3,16,18,7,8,15,10,11,12,13,19,20,21]),import.meta.url),()=>T(()=>import(`../nodes/5.CQmOzmw-.js`),__vite__mapDeps([22,2,1,3,18,7,8,15,10,11,12,13,16,19,20,21]),import.meta.url),()=>T(()=>import(`../nodes/6.B4FM4ibZ.js`),__vite__mapDeps([23,1,8,12]),import.meta.url),()=>T(()=>import(`../nodes/7.Djqv-MIF.js`),__vite__mapDeps([24,1,2,3,10,13,20,25]),import.meta.url),()=>T(()=>import(`../nodes/8.BIuvC-pW.js`),__vite__mapDeps([26,1,2,3,10,13,19,20,25,27]),import.meta.url),()=>T(()=>import(`../nodes/9.BrH5GQFY.js`),__vite__mapDeps([28,1,2,3,19,27,10]),import.meta.url),()=>T(()=>import(`../nodes/10.DSRK_DQV.js`),__vite__mapDeps([29,1,2,7,8,3,10,11,13,27]),import.meta.url),()=>T(()=>import(`../nodes/11.D8J-Bmsg.js`),__vite__mapDeps([30,2,1,3,18,7,8,15,10,11,12,13,16,19,20,21]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B_nJVpRW.js","../chunks/DK3Fl9T5.js","../chunks/CX2IBWVU.js","../chunks/xihTtKlq.js","../assets/0.B4KZu4e-.css","../nodes/1.xA0gzmtV.js","../chunks/D3cFyIXr.js","../chunks/Ct85fhNP.js","../chunks/BuFlayix.js","../nodes/2.DUtQfIwk.js","../chunks/CRJVHtae.js","../chunks/H8kj0_R5.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../nodes/3.Byc2fJWl.js","../chunks/HclGiUj8.js","../chunks/BMVuLp4J.js","../nodes/4.D4FrkrQj.js","../chunks/DRy8p13A.js","../chunks/DDgJhXUi.js","../chunks/BBHxP-zi.js","../chunks/DfVq8Tl1.js","../assets/ChatApp.nfECkybw.css","../nodes/5.JSWzES8F.js","../nodes/6.B4FM4ibZ.js","../nodes/7.Djqv-MIF.js","../chunks/Cd59ytED.js","../nodes/8.BIuvC-pW.js","../chunks/Cj1BxjFB.js","../nodes/9.BrH5GQFY.js","../nodes/10.DSRK_DQV.js","../nodes/11.Bpf1JA7W.js","../nodes/12.BuatSkE5.js","../assets/12.CkeTUuaJ.css"])))=>i.map(i=>d[i]); +import{$ as e,F as t,I as n,K as r,N as i,P as a,Q as o,R as s,T as c,W as l,Z as u,a as d,bt as f,ct as p,dt as m,gt as h,ht as g,i as _,it as v,j as y,nt as b,r as x,rt as S,s as C,st as w}from"../chunks/CX2IBWVU.js";import{t as T}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";var E={},D=n(`
                `),O=n(` `,1);function k(n,_){h(_,!0);let T=d(_,`components`,23,()=>[]),E=d(_,`data_0`,3,null),k=d(_,`data_1`,3,null),A=d(_,`data_2`,3,null);e(()=>_.stores.page.set(_.page)),o(()=>{_.stores,_.page,_.constructors,T(),_.form,E(),k(),A(),_.stores.page.notify()});let j=p(!1),M=p(!1),N=p(null);x(()=>{let e=_.stores.page.subscribe(()=>{l(j)&&(w(M,!0),r().then(()=>{w(N,document.title||`untitled page`,!0)}))});return w(j,!0),e});let P=m(()=>_.constructors[2]);var F=O(),I=S(F),L=e=>{let n=m(()=>_.constructors[0]);var r=t();c(S(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t(),i=S(r),o=e=>{let n=m(()=>_.constructors[1]);var r=t();c(S(r),()=>l(n),(e,n)=>{C(n(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params},children:(e,n)=>{var r=t();c(S(r),()=>l(P),(e,t)=>{C(t(e,{get data(){return A()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[2]=e,()=>T()?.[2])}),a(e,r)},$$slots:{default:!0}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)},s=e=>{let n=m(()=>_.constructors[1]);var r=t();c(S(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return k()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),a(e,r)};y(i,e=>{_.constructors[2]?e(o):e(s,-1)}),a(e,r)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)},R=e=>{let n=m(()=>_.constructors[0]);var r=t();c(S(r),()=>l(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return _.form},get params(){return _.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),a(e,r)};y(I,e=>{_.constructors[1]?e(L):e(R,-1)});var z=v(I,2),B=e=>{var t=D(),n=b(t),r=e=>{var t=s();u(()=>i(t,l(N))),a(e,t)};y(n,e=>{l(M)&&e(r)}),f(t),a(e,t)};y(z,e=>{l(j)&&e(B)}),a(n,F),g()}var A=_(k),j=[()=>T(()=>import(`../nodes/0.B_nJVpRW.js`),__vite__mapDeps([0,1,2,3,4]),import.meta.url),()=>T(()=>import(`../nodes/1.xA0gzmtV.js`),__vite__mapDeps([5,2,1,3,6,7,8]),import.meta.url),()=>T(()=>import(`../nodes/2.DUtQfIwk.js`),__vite__mapDeps([9,1,2,7,8,3,6,10,11,12,13]),import.meta.url),()=>T(()=>import(`../nodes/3.Byc2fJWl.js`),__vite__mapDeps([14,1,2,15,3,16]),import.meta.url),()=>T(()=>import(`../nodes/4.D4FrkrQj.js`),__vite__mapDeps([17,2,1,3,16,18,7,8,15,10,11,12,13,19,20,21,22]),import.meta.url),()=>T(()=>import(`../nodes/5.JSWzES8F.js`),__vite__mapDeps([23,2,1,3,18,7,8,15,10,11,12,13,16,19,20,21,22]),import.meta.url),()=>T(()=>import(`../nodes/6.B4FM4ibZ.js`),__vite__mapDeps([24,1,8,12]),import.meta.url),()=>T(()=>import(`../nodes/7.Djqv-MIF.js`),__vite__mapDeps([25,1,2,3,10,13,21,26]),import.meta.url),()=>T(()=>import(`../nodes/8.BIuvC-pW.js`),__vite__mapDeps([27,1,2,3,10,13,20,21,26,28]),import.meta.url),()=>T(()=>import(`../nodes/9.BrH5GQFY.js`),__vite__mapDeps([29,1,2,3,20,28,10]),import.meta.url),()=>T(()=>import(`../nodes/10.DSRK_DQV.js`),__vite__mapDeps([30,1,2,7,8,3,10,11,13,28]),import.meta.url),()=>T(()=>import(`../nodes/11.Bpf1JA7W.js`),__vite__mapDeps([31,2,1,3,18,7,8,15,10,11,12,13,16,19,20,21,22]),import.meta.url),()=>T(()=>import(`../nodes/12.BuatSkE5.js`),__vite__mapDeps([32,1,2,3,10,19,33]),import.meta.url)],M=[],N={"/":[3],"/app":[4],"/app/[workspaceID]":[5],"/app/[workspaceID]/(settings)/settings":[6,[2]],"/app/[workspaceID]/(settings)/settings/bots":[7,[2]],"/app/[workspaceID]/(settings)/settings/integrations":[8,[2]],"/app/[workspaceID]/(settings)/settings/members":[9,[2]],"/app/[workspaceID]/(settings)/settings/overview":[10,[2]],"/app/[workspaceID]/[targetID]":[11],"/embed/thread/[workspaceID]/[messageID]":[12]},P={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},F=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.decode])),I=Object.fromEntries(Object.entries(P.transport).map(([e,t])=>[e,t.encode])),L=!1,R=(e,t)=>F[e](t),z=()=>T(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{R as decode,F as decoders,N as dictionary,I as encoders,z as get_error_template,L as hash,P as hooks,E as matchers,j as nodes,A as root,M as server_loads}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/0.LF7MykI2.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/0.B_nJVpRW.js similarity index 100% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/0.LF7MykI2.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/0.B_nJVpRW.js diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.D8J-Bmsg.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.Bpf1JA7W.js similarity index 77% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/11.D8J-Bmsg.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/11.Bpf1JA7W.js index 0afd48da..7bd0ea1e 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/11.D8J-Bmsg.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/11.Bpf1JA7W.js @@ -1 +1 @@ -import{gt as e,ht as t}from"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/2PbeDRak.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component}; \ No newline at end of file +import{gt as e,ht as t}from"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DRy8p13A.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID},get routeTargetID(){return i.params.targetID}}),t()}export{r as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/12.BuatSkE5.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.BuatSkE5.js new file mode 100644 index 00000000..91d6d624 --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/12.BuatSkE5.js @@ -0,0 +1 @@ +import{t as e}from"../chunks/DK3Fl9T5.js";import{A as t,B as n,C as r,F as i,I as a,J as o,K as s,N as c,P as l,W as u,Z as d,at as ee,bt as f,ct as p,dt as m,et as h,gt as g,ht as _,it as v,j as y,n as te,nt as b,r as ne,rt as x,st as S,z as C}from"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import{i as re,n as w,t as T}from"../chunks/CRJVHtae.js";import{F as ie,T as ae,a as oe,b as se,j as ce,t as le}from"../chunks/DDgJhXUi.js";var E=e({prerender:()=>!1,ssr:()=>!1}),ue=a(``),de=a(`

                `),fe=a(`
                `),pe=a(`

                Sign in to ClickClack

                Open ClickClack in a new tab, sign in, then return here. This panel will reconnect automatically.

                Open ClickClack
                `),me=a(`
                `),he=a(`
                `),ge=a(`
                `),_e=a(`
                `),ve=a(` `,1);function D(e,t){g(t,!0);let i=p(`loading`),a=p(``),C=p(null),E=p(null),D=p(null),O=p(ee([])),k=p(null),A=p(null),j=p(`Thread`),M=p(``),N=p(null),P=p(null),F=p(``),I=p(!1),L=p(null),R=null,z=0,B=!1,V=!1,H=!1,U=null,W=m(()=>u(I)||!!(u(A)&&!u(A).can_send)),ye=m(()=>{let e=new Map;for(let t of u(A)?.members??[])t.id&&!t.deleted_at&&e.set(t.id,t);for(let t of u(D)?[u(D),...u(O)]:u(O))t.author?.id&&!t.author.deleted_at&&e.set(t.author.id,t.author);return u(C)?.id&&e.set(u(C).id,u(C)),[...e.values()].slice(0,24)});function G(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID().replace(/-/g,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function K(e,t){if(!(e instanceof Error))return t;try{return JSON.parse(e.message).error||t}catch{return e.message||t}}function be(){R?.close(),R=null,S(E,null),S(D,null),S(O,[],!0),S(k,null),S(A,null),S(N,null)}function q(e){if(be(),e instanceof T){if(e.status===401){S(i,`auth`);return}if(e.status===403){S(i,`forbidden`);return}if(e.status===404){S(i,`not-found`);return}}S(a,K(e,`Could not load this thread.`),!0),S(i,`error`)}async function xe(e,t){if(e.parent_type===`direct`){let n=(await w(`/api/dms?workspace_id=${encodeURIComponent(e.workspace_id)}`)).conversations.find(t=>t.id===e.parent_id);n||=(await w(`/api/dms/${encodeURIComponent(e.parent_id)}`)).conversation,S(A,n,!0),S(j,ae(n,t.id)||`Direct message`,!0);return}let n=(await w(`/api/workspaces/${encodeURIComponent(e.workspace_id)}/channels`)).channels.find(t=>t.id===e.parent_id);if(!n)throw new T(404,`Thread channel not found`);S(A,null),S(j,`#${n.name}`)}async function J(){if(B)return;B=!0;let e=++z;u(i)!==`auth`&&S(i,`loading`),S(a,``);try{let n=await w(`/api/me`),r=await w(`/api/routes/${encodeURIComponent(t.workspaceRouteID)}/${encodeURIComponent(t.messageRouteID)}`);if(r.route.target_type!==`thread`)throw new T(404,`Thread route not found`);let[a]=await Promise.all([w(`/api/messages/${encodeURIComponent(r.route.target_id)}/thread`),xe(r.route,n.user)]);if(e!==z)return;S(C,n.user,!0),S(E,r.route,!0),S(D,{...a.root,thread_state:a.thread_state},!0),S(O,a.replies,!0),S(k,a.thread_state,!0),S(i,`ready`),Te(r.route.workspace_id)}catch(t){e===z&&q(t)}finally{e===z&&(B=!1)}}async function Se(){if(!u(D)||u(i)!==`ready`)return;let e=u(D).id;try{let t=await w(`/api/messages/${encodeURIComponent(e)}/thread`);if(!u(D)||u(D).id!==e||u(i)!==`ready`)return;S(D,{...t.root,thread_state:t.thread_state},!0),S(O,t.replies,!0),S(k,t.thread_state,!0),u(N)&&u(N).id!==u(D).id&&!u(O).some(e=>e.id===u(N)?.id)&&S(N,null)}catch(e){e instanceof T&&[401,403,404].includes(e.status)?q(e):S(F,K(e,`Could not refresh the thread.`),!0)}}function Y(){if(V){H=!0;return}V=!0,queueMicrotask(()=>{Se().finally(()=>{V=!1,H&&(H=!1,Y())})})}function Ce(e){if(!u(D))return!1;if(e.payload.root_message_id)return e.payload.root_message_id===u(D).id;let t=e.payload.message_id;return t===u(D).id||u(O).some(e=>e.id===t)}function we(e){Ce(e)&&(e.type===`thread.reply_created`||e.type===`message.updated`||e.type===`message.deleted`)&&Y()}function Te(e){R?.close(),R=se({workspaceID:e,onEvent:we,onStatusChange:e=>{e&&Y()}})}async function X(){let e=u(M).trim();if(!e||!u(D)||u(W))return;let t=u(D).id,n=u(N)?.id,r=U?.body===e&&U.quotedMessageID===n?U:{body:e,nonce:G(),quotedMessageID:n};U=null,S(F,``),S(I,!0);let i={body:e,nonce:r.nonce};n&&(i.quoted_message_id=n);try{let r=await w(`/api/messages/${encodeURIComponent(t)}/thread/replies`,{method:`POST`,body:JSON.stringify(i)});if(!u(D)||u(D).id!==t)return;u(O).some(e=>e.id===r.message.id)||S(O,[...u(O),r.message],!0),S(k,r.thread_state,!0),u(M).trim()===e&&S(M,``),n&&u(N)?.id===n&&S(N,null)}catch(e){if(e instanceof T&&e.status===401){q(e);return}U=r,S(F,K(e,`Could not post the reply.`),!0)}finally{S(I,!1)}}function Ee(e){if(e.key===`Escape`&&u(N)){e.preventDefault(),S(N,null);return}e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),X())}function De(e){u(I)||(S(N,e,!0),s().then(()=>u(P)?.focus()))}function Oe(){u(I)||S(N,null)}function ke(e){e.quoted_message_id&&document.querySelector(`[data-message-id="${CSS.escape(e.quoted_message_id)}"]`)?.scrollIntoView({behavior:`smooth`,block:`center`})}function Ae(e){let t=ce(e);t&&S(L,{url:t,title:`Message image`},!0)}function je(e){let t=window.open(re(`/api/uploads/${e.id}`),`_blank`,`noopener,noreferrer`);t&&(t.opener=null)}function Z(){u(i)===`auth`&&document.visibilityState===`visible`&&J()}ne(()=>{ie(),J(),window.addEventListener(`focus`,Z),document.addEventListener(`visibilitychange`,Z)}),te(()=>{z+=1,R?.close(),window.removeEventListener(`focus`,Z),document.removeEventListener(`visibilitychange`,Z)});var Q=ve();r(`b3w79y`,e=>{var t=ue();o(()=>{h.title=`ClickClack thread`}),l(e,t)});var $=x(Q),Me=e=>{var t=fe(),n=b(t),r=b(n);{let e=m(()=>`Thread · ${u(k)?.reply_count??u(O).length} ${(u(k)?.reply_count??u(O).length)===1?`reply`:`replies`}`),t=m(()=>u(C)?.id);le(r,{get root(){return u(D)},get replies(){return u(O)},get threadState(){return u(k)},get replyBody(){return u(M)},get replyTarget(){return u(N)},get mentionPeople(){return u(ye)},get replyDisabled(){return u(W)},get headerLabel(){return u(j)},get headerDetail(){return u(e)},get openHref(){return u(E).canonical_path},get currentUserID(){return u(t)},onReplyBody:e=>S(M,e,!0),onSubmitReply:()=>void X(),onReplyKeydown:Ee,onReplyFocus:()=>S(F,``),onReplyInputRef:e=>S(P,e,!0),onSetReplyTarget:e=>De(e),onClearReply:Oe,onActivateThreadComposer:()=>{},onInlineImagePointerUp:Ae,onJumpToQuote:ke,onOpenImage:(e,t)=>S(L,{url:e,title:t},!0),onOpenArtifact:je})}f(n);var i=v(n,2),a=e=>{var t=de(),n=b(t,!0);f(t),d(()=>c(n,u(F))),l(e,t)};y(i,e=>{u(F)&&e(a)}),f(t),l(e,t)},Ne=e=>{l(e,pe())},Pe=e=>{l(e,me())},Fe=e=>{l(e,he())},Ie=e=>{var t=ge(),r=b(t),i=v(b(r),2),o=b(i,!0);f(i);var s=v(i,2);f(r),f(t),d(()=>c(o,u(a))),n(`click`,s,()=>void J()),l(e,t)},Le=e=>{l(e,_e())};y($,e=>{u(i)===`ready`&&u(D)&&u(E)?e(Me):u(i)===`auth`?e(Ne,1):u(i)===`forbidden`?e(Pe,2):u(i)===`not-found`?e(Fe,3):u(i)===`error`?e(Ie,4):e(Le,-1)});var Re=v($,2),ze=e=>{oe(e,{get url(){return u(L).url},get title(){return u(L).title},onClose:()=>S(L,null)})};y(Re,e=>{u(L)&&e(ze)}),l(e,Q),_()}C([`click`]);function O(e,n){g(n,!0);var r=i();t(x(r),()=>`${n.params.workspaceID}:${n.params.messageID}`,e=>{D(e,{get workspaceRouteID(){return n.params.workspaceID},get messageRouteID(){return n.params.messageID}})}),l(e,r),_()}export{O as component,E as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Byc2fJWl.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Byc2fJWl.js new file mode 100644 index 00000000..f16333fa --- /dev/null +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Byc2fJWl.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/DRy8p13A.js","../chunks/DK3Fl9T5.js","../chunks/CX2IBWVU.js","../chunks/Ct85fhNP.js","../chunks/BuFlayix.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/CRJVHtae.js","../chunks/H8kj0_R5.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/BMVuLp4J.js","../chunks/DDgJhXUi.js","../chunks/BBHxP-zi.js","../chunks/DfVq8Tl1.js","../assets/ChatApp.nfECkybw.css","../chunks/CQa5RJLU.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]); +import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,rt as a,ut as o}from"../chunks/CX2IBWVU.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/BMVuLp4J.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/DRy8p13A.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url):s(()=>import(`../chunks/CQa5RJLU.js`),__vite__mapDeps([16,2,1,6,11,17]),import.meta.url);var l=t();n(a(l),()=>c,null,(e,t)=>{i(o(()=>i(t).default))(e,{})}),r(e,l)}export{l as component,c as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cc2txCCJ.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cc2txCCJ.js deleted file mode 100644 index dd3a2fc5..00000000 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/3.Cc2txCCJ.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/2PbeDRak.js","../chunks/DK3Fl9T5.js","../chunks/CX2IBWVU.js","../chunks/Ct85fhNP.js","../chunks/BuFlayix.js","../chunks/HclGiUj8.js","../chunks/xihTtKlq.js","../chunks/CRJVHtae.js","../chunks/H8kj0_R5.js","../chunks/Qo16U5GS.js","../chunks/OQjxVT6U.js","../chunks/BMVuLp4J.js","../chunks/BBHxP-zi.js","../chunks/DfVq8Tl1.js","../assets/ChatApp.nfECkybw.css","../chunks/CQa5RJLU.js","../assets/ProductSite.4q0lYJor.css"])))=>i.map(i=>d[i]); -import{t as e}from"../chunks/DK3Fl9T5.js";import{F as t,M as n,P as r,W as i,rt as a,ut as o}from"../chunks/CX2IBWVU.js";import{t as s}from"../chunks/HclGiUj8.js";import"../chunks/xihTtKlq.js";import"../chunks/BMVuLp4J.js";var c=e({prerender:()=>!0});function l(e){let c=window.location.hostname.startsWith(`app.`)?s(()=>import(`../chunks/2PbeDRak.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url):s(()=>import(`../chunks/CQa5RJLU.js`),__vite__mapDeps([15,2,1,6,11,16]),import.meta.url);var l=t();n(a(l),()=>c,null,(e,t)=>{i(o(()=>i(t).default))(e,{})}),r(e,l)}export{l as component,c as universal}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.Dko9an8f.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.D4FrkrQj.js similarity index 63% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/4.Dko9an8f.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/4.D4FrkrQj.js index e27fcef8..c9ff1873 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/4.Dko9an8f.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/4.D4FrkrQj.js @@ -1 +1 @@ -import"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import"../chunks/BMVuLp4J.js";import{t as e}from"../chunks/2PbeDRak.js";function t(t){e(t,{})}export{t as component}; \ No newline at end of file +import"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import"../chunks/BMVuLp4J.js";import{t as e}from"../chunks/DRy8p13A.js";function t(t){e(t,{})}export{t as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.CQmOzmw-.js b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.JSWzES8F.js similarity index 72% rename from apps/api/internal/webassets/dist/_app/immutable/nodes/5.CQmOzmw-.js rename to apps/api/internal/webassets/dist/_app/immutable/nodes/5.JSWzES8F.js index 5c19c4d4..1081f298 100644 --- a/apps/api/internal/webassets/dist/_app/immutable/nodes/5.CQmOzmw-.js +++ b/apps/api/internal/webassets/dist/_app/immutable/nodes/5.JSWzES8F.js @@ -1 +1 @@ -import{gt as e,ht as t}from"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/2PbeDRak.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component}; \ No newline at end of file +import{gt as e,ht as t}from"../chunks/CX2IBWVU.js";import"../chunks/xihTtKlq.js";import{t as n}from"../chunks/DRy8p13A.js";function r(r,i){e(i,!0),n(r,{get routeWorkspaceID(){return i.params.workspaceID}}),t()}export{r as component}; \ No newline at end of file diff --git a/apps/api/internal/webassets/dist/index.html b/apps/api/internal/webassets/dist/index.html index f23e9b97..d357ecc1 100644 --- a/apps/api/internal/webassets/dist/index.html +++ b/apps/api/internal/webassets/dist/index.html @@ -30,14 +30,14 @@ - + - - + + - + @@ -52,7 +52,7 @@ Promise.all([ import("./_app/immutable/entry/start.DpGC7Oln.js"), - import("./_app/immutable/entry/app.CPds4rfU.js") + import("./_app/immutable/entry/app.Bsb6xClM.js") ]).then(([kit, app]) => { kit.start(app, element); }); From 0f28673891a748d6e5345d1cafa5918998be25bd Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Jul 2026 22:53:45 -0700 Subject: [PATCH 4/4] chore: record embed framing and realtime-refresh invariants inline --- apps/api/internal/httpapi/server.go | 3 +++ apps/web/src/components/embed/EmbedThreadView.svelte | 3 +++ 2 files changed, 6 insertions(+) diff --git a/apps/api/internal/httpapi/server.go b/apps/api/internal/httpapi/server.go index 4c922f6b..b55991d4 100644 --- a/apps/api/internal/httpapi/server.go +++ b/apps/api/internal/httpapi/server.go @@ -1460,6 +1460,9 @@ func (s *Server) serveSPA(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Header().Set("Cache-Control", "no-store") if strings.HasPrefix(r.URL.Path, "/embed/") { + // frame-ancestors is deliberately independent of cookie SameSite policy: + // allowing a cross-site ancestor never loosens cookies, so such embeds can + // render signed-out. Documented in docs/features/embedding.md. ancestors := append([]string{"'self'"}, s.embedFrameAncestors...) w.Header().Set("Content-Security-Policy", "frame-ancestors "+strings.Join(ancestors, " ")) } diff --git a/apps/web/src/components/embed/EmbedThreadView.svelte b/apps/web/src/components/embed/EmbedThreadView.svelte index 5ad64a8c..b8fbda2f 100644 --- a/apps/web/src/components/embed/EmbedThreadView.svelte +++ b/apps/web/src/components/embed/EmbedThreadView.svelte @@ -231,6 +231,9 @@ return messageID === root.id || replies.some((reply) => reply.id === messageID); } + // Exactly the event types that change what ThreadPanel renders: replies, + // bodies, deletions. Reactions and thread-state chips are not rendered in + // this panel, and reconnects already trigger a full refresh in connectSocket. function handleRealtimeEvent(event: RealtimeEvent) { if ( eventBelongsToThread(event) &&