From 37a1a3cdfeedf9d0f18587d3c3a6a4f841dd55a1 Mon Sep 17 00:00:00 2001 From: Zenith Runeblade Date: Thu, 12 Nov 2026 02:59:16 +0100 Subject: [PATCH] Reorder Altar navigation around Bridge and Atlas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Give Bridge a top-level entry and keep saved Séances accessible from its workspace. Keep Canvas authoring accessible from Atlas. Place Loom, Nexus, Orb and Applications after Atlas. Document the shared Atlas memory map, séance subgraphs, and Loom workflow expansion, Context policy, and Evaluation as design targets. Keep the shipped capabilities explicit in State of Work. Verified locally with frontend-check (1,107 tests), a reproducible frontend build, and a clean Zensical build. The local OCI State of Work check could not start because the host lacks a delegated memory cgroup. Refs #132 --- .../web/src/lib/components/AltarShell.svelte | 68 +++++---- .../web/src/lib/components/AltarShell.test.ts | 23 +-- .../web/src/lib/components/BridgeDock.svelte | 11 +- .../components/BridgeShellNavigation.test.ts | 5 +- docs/adr/15-frontend.md | 135 ++++++++++-------- docs/compositions/canvas/index.md | 15 +- docs/divination/.nav.yml | 8 +- docs/divination/altar/atlas.md | 25 +++- docs/divination/altar/bridge.md | 26 ++-- docs/divination/altar/index.md | 44 +++--- docs/divination/altar/loom.md | 8 ++ docs/divination/altar/orb.md | 4 + docs/divination/altar/seances.md | 32 +++-- docs/state-of-the-work.md | 57 ++++---- .../assets/{0.DK_BpHVu.css => 0.BIhWPaTl.css} | 2 +- .../{app.C82VrRSX.js => app.CvzJPcjZ.js} | 4 +- .../public/_app/immutable/nodes/0.BbJ7sRr5.js | 4 + .../public/_app/immutable/nodes/0.z1MQBbBy.js | 4 - src/lychd/public/index.html | 8 +- 19 files changed, 295 insertions(+), 188 deletions(-) rename src/lychd/public/_app/immutable/assets/{0.DK_BpHVu.css => 0.BIhWPaTl.css} (53%) rename src/lychd/public/_app/immutable/entry/{app.C82VrRSX.js => app.CvzJPcjZ.js} (95%) create mode 100644 src/lychd/public/_app/immutable/nodes/0.BbJ7sRr5.js delete mode 100644 src/lychd/public/_app/immutable/nodes/0.z1MQBbBy.js diff --git a/clients/web/src/lib/components/AltarShell.svelte b/clients/web/src/lib/components/AltarShell.svelte index 1a72afe6..52377399 100644 --- a/clients/web/src/lib/components/AltarShell.svelte +++ b/clients/web/src/lib/components/AltarShell.svelte @@ -208,11 +208,21 @@ } const instruments = [ - { slug: "seances", label: "Séances" }, { slug: "atlas", label: "Atlas" }, - { slug: "canvas", label: "Canvas" }, { slug: "orb", label: "Orb" }, - { slug: "loom", label: "Loom" }, { slug: "nexus", label: "Nexus" } + { slug: "bridge", label: "Bridge", related: "/seances" }, + { slug: "atlas", label: "Atlas", related: "/canvas" }, + { slug: "loom", label: "Loom" }, + { slug: "nexus", label: "Nexus" }, + { slug: "orb", label: "Orb" } ] as const; + function instrumentCurrent(instrument: typeof instruments[number], href: string) { + const pathname = page.url.pathname; + if (pathname === href || pathname === `${href}/`) return "page"; + const roots = [resolve(`/${instrument.slug}`)]; + if ("related" in instrument) roots.push(resolve(instrument.related)); + return roots.some(root => pathname === root || pathname.startsWith(`${root}/`)) ? "location" : undefined; + } + function attention(_event: Event) { // Instrument events are invalidation hints; only the shell status endpoint // owns the cross-session count. @@ -326,22 +336,19 @@ -
- Applications - -
-
{#if available}
+ {:else}

Bridge

Viewing: {viewing}
@@ -174,7 +177,7 @@ .dock-shell.dock-collapsed { flex-basis: 0; width: 0; } .dock-shell.dock-focused { flex: 1 1 0; width: 100%; order: 0; overflow: hidden; } .dock-focused .dock-frame { border: 0; } - .focus-heading { padding: .35rem 1rem; border-bottom: 1px solid var(--color-engraving); } + .focus-heading { display: flex; flex-wrap: wrap; gap: .25rem 1rem; padding: .35rem 1rem; border-bottom: 1px solid var(--color-engraving); } .focus-heading a, .dock-actions a { display: inline-flex; align-items: center; min-height: 2rem; font-size: var(--text-xs); color: var(--color-parchment); } a:focus-visible { outline: 2px solid var(--color-rune); outline-offset: 2px; } .dock-frame { position: relative; display: flex; width: 100%; min-width: 0; min-height: 0; background: var(--color-obsidian); border-left: 1px solid var(--color-engraving); } diff --git a/clients/web/src/lib/components/BridgeShellNavigation.test.ts b/clients/web/src/lib/components/BridgeShellNavigation.test.ts index 4dacaf33..1cdeb4eb 100644 --- a/clients/web/src/lib/components/BridgeShellNavigation.test.ts +++ b/clients/web/src/lib/components/BridgeShellNavigation.test.ts @@ -195,6 +195,7 @@ describe("shell-lifetime Bridge conversation", () => { expect(screen.getByRole("link", { name: "Return to Orb event →" }).getAttribute("href")) .toBe("/orb/missing-run?event=event-b"); await visit("/orb/run-b?event=event-b"); + expect(screen.getByRole("link", { name: "Bridge" }).getAttribute("href")).toBe("/bridge/session-b"); await fireEvent.click(screen.getByRole("button", { name: "Collapse Bridge" })); await fireEvent.click(screen.getByRole("button", { name: "Expand Bridge" })); expect(screen.queryByText(/requested consent is unavailable/)).toBeNull(); @@ -333,13 +334,15 @@ it("opens the actual default séance and preserves active A while inspecting B", const composer = await screen.findByLabelText("Message"); await fireEvent.input(composer, { target: { value: "Keep A draft" } }); expect(screen.getByRole("link", { name: "Open Séance" }).getAttribute("href")).toBe("/seances/session-a"); - expect(screen.getByRole("link", { name: "Séances" }).getAttribute("href")).toBe("/seances"); + expect(screen.getByRole("link", { name: "Bridge" }).getAttribute("href")).toBe("/bridge"); await visit("/seances/session-b"); expect(screen.getByLabelText("Message")).toBe(composer); expect((composer as HTMLTextAreaElement).value).toBe("Keep A draft"); expect(screen.getByRole("link", { name: "Open Séance" }).getAttribute("href")).toBe("/seances/session-a"); expect(getBridgeSnapshot).toHaveBeenCalledExactlyOnceWith(undefined); expect(sendBridgeMessage).not.toHaveBeenCalled(); + await visit("/bridge"); + expect(screen.getByRole("link", { name: "Browse séances" }).getAttribute("href")).toBe("/seances"); shell.unmount(); }); diff --git a/docs/adr/15-frontend.md b/docs/adr/15-frontend.md index b07d0582..9448a3ea 100644 --- a/docs/adr/15-frontend.md +++ b/docs/adr/15-frontend.md @@ -22,12 +22,12 @@ icon: material/language-html5 remote functions, or JavaScript production server. - A snapshot plus event cursor must reconstruct browser state. Connection, animation, and canvas layout never prove execution. -- Séances, Canvas, Atlas, Orb, Nexus, and Loom are work routes; Bridge is one shell-owned conversation - surface beside work. Existing full-focus Bridge URLs retain exact session, - Run, consent and focused-application navigation. Generated UI is closed descriptors, never model- - or extension-supplied HTML, JavaScript, Svelte, or imports. -- Circle is the Invocation-shaped focus within Bridge, not a separate instrument or a claim - that the current run strip already composes every owning projection. +- The masthead orders Bridge, Atlas, Loom, Nexus, Orb, and Applications. Bridge opens the full + conversation workspace and leads to Séances. Atlas leads to Canvas authoring. Existing URLs + preserve exact session, Run, consent, Project, and focused-application navigation. +- Generated UI uses closed descriptors. Model and extension content cannot supply HTML, + JavaScript, Svelte, or imports. +- Circle focuses one admitted Invocation within Bridge. Its current form is the per-turn Run strip. - Native CSS includes keyboard access, visible focus, non-colour cues, reduced motion, named regions, and visible unknown/error states. - The Altar ships one canonical built-in appearance, **LychD Dark**. Its semantic colour boundary @@ -69,27 +69,25 @@ owns delivery. | Instrument | Browser contract | Current limit | | --- | --- | --- | -| Canvas | Project creation and visual board authorship; Atlas catalogues Projects and their retained records | One primary board per Project; shared Bridge dictation is separately configured; no native model transport, autonomous continuation or automatic coverage. | -| Bridge | Session selection, single-active-Run text admission, reconstruction, semantic stream, consent, closed fragments, and bounded Creation investigation intake/report focus | Partial: text admission and separately configured finite dictation; live reconstruction and tokens are process-local. | -| Séances | Metadata catalogue, exact retained-conversation inspection, source-linked working material, and explicit continuation in Bridge | Retained reads are snapshots; working material is document-local and does not admit Archive memory or create a second live conversation. | -| Orb | Paged Run catalogue, parallel graph field, and bounded selected-Run evidence feeds with gaps, capture labels, and links | Partial: no complete trace store, nested subworkflow identity, or annotation. | -| Nexus | Timestamped capability observations, non-binding plan preview, typed request, and ticket stream | Partial: observations and tickets are process-local and not restart-complete. | -| Loom | Immutable Scroll/Pattern-revision graph and station/permission outline | Partial: fixed registry reader without independent Spell identities, editing, teaching, or publication. | +| Bridge | One mounted conversation with session selection, single-active-Run text admission, reconstruction, semantic stream, consent, closed fragments, and focused investigations and public notes. Séances adds retained inspection and explicit continuation. | Finite dictation requires configuration. Live reconstruction and tokens are process-local. Retained reads use snapshots, and selections last for the open browser document. | +| Atlas | Retained knowledge and provenance, with Canvas as the visual authoring surface | Project catalogue and retained records with one primary board per Project. The shared memory map is a design target. | +| Loom | Exact Scroll and Pattern revision, with its declared workflow, Context policy and Evaluation | The fixed registry reader shows supplied stations and permissions. Nested expansion and full Context policy and Evaluation views are design targets. | +| Nexus | Timestamped capability observations, nonbinding plan preview, typed request, and ticket stream | Observations and tickets are process-local and lack complete restart recovery. | +| Orb | Paged Run catalogue, parallel graph field, and bounded selected-Run evidence feeds | Capture labels and gaps remain visible. Complete traces, nested subworkflow identity, and annotation are future work. | +| Applications | Bounded disclosure for other admitted applications | Each application keeps its existing admission and operation contracts. | The shell owns navigation, source identity, pending-consent count, transient notices, and the -persistent Bridge presentation. Each other instrument owns its route-local presentation. +mounted Bridge conversation. Each instrument owns its route-local presentation. `/scrying`, `/reliquary`, `/bindings`, and ambiguous unversioned Loom detail are deliberately absent from the route contract. Scrying names Orb's act. Artifact references and configuration observations let the browser show context without acquiring custody or configuration authority. -The browser shell retains drafts by exact session and the last explicit Bridge session path -for its own lifetime. The global Bridge control opens that session without a Run hint. -The global Orb link opens the parallel Run field at `/orb`. Until an explicit Bridge session -path is selected, its global link stays at `/bridge`; -the server's default session does not establish browser navigation memory. This is recoverable -navigation state, not a durable dossier or execution truth. Cross-instrument links preserve an -explicit Run and selected event where supported; Orb's contextual Bridge return focuses that -Run's turn. A selected historical consent event may also carry a bounded Consent reference to +The browser shell retains drafts by exact session and the last explicitly selected Bridge session +for the open browser document. The masthead Bridge link opens that session without a Run hint. +Until an explicit session is selected, it opens `/bridge`. The server-supplied default session +leaves that destination at `/bridge`. The masthead Orb link opens the parallel Run field at +`/orb`. Cross-instrument links preserve an explicit Run and selected event where supported. +Orb's contextual Bridge return focuses that Run's turn. A selected historical consent event may also carry a bounded Consent reference to that exact session and Run. Orb retains only the syntactic historical reference, without resolving current status, review, or decision authority. Bridge resolves the exact Consent and requested Run against its currently authorized session snapshot; a missing, settled, foreign, or unbound request @@ -295,38 +293,37 @@ retains that boundary. ### Reading hierarchy and visual direction -#### The shared workbench and Bridge dock - -The top masthead starts with Séances as the conversation-workspace entry, immediately before Atlas, -then Canvas, Orb, Loom and Nexus, all with icons and visible labels. Canvas and Atlas remain peer -work destinations. Canvas uses a board icon; Atlas retains its map icon and catalogues Canvas Projects. -Applications is a bounded disclosure for other admitted applications; hover, click and keyboard -focus can open it, Escape dismisses it, and moving into the menu keeps it reachable. Bridge is -an always-available conversation dock. Its named edge control opens or collapses the panel; -**Open Séance** opens the exact currently supplied conversation in `/seances/{session_id}`. -The control cannot infer that identity from an unresolved default-session route. `/seances` -opens a metadata-only catalogue; `/seances/{session_id}` inspects that exact retained conversation. -Existing `/bridge` full-focus links remain -exact focus destinations; session, Run, consent, Project, investigation and public-note intent -must survive the composition change. - -The bare root opens Orb. A fresh wide workbench starts with Bridge open on the left; saved dock -preferences remain in force. A fresh narrow workbench keeps the graph visible and opens Bridge -from its edge chevron. Explicit Bridge focus destinations still open the conversation. + + +#### The shared workbench + +The masthead presents Bridge, Atlas, Loom, Nexus, Orb, and Applications in that order, with visible +labels and icons. Hover, click, or keyboard focus opens Applications. Escape dismisses it, and +moving into the menu keeps it reachable. The bare root opens Orb. + +Bridge opens the full conversation workspace at the last explicitly selected session in the +browser document. **Browse séances** opens the metadata catalogue at `/seances`. The dock's +**Open Séance** opens the exact supplied session at `/seances/{session_id}`. Until the session +identity resolves, the dock offers the catalogue. Inspecting a séance preserves the live +selection and draft. **Continue in Bridge** explicitly selects the inspected session. Direct +Bridge URLs preserve session, Run, consent, Project, investigation, and public-note focus. + +Atlas opens the Project catalogue at `/atlas`. **Open Canvas →** and **New canvas** use the +existing Canvas routes. The masthead marks Bridge as the current location on Séances routes +and Atlas as the current location on Canvas routes. + +The named edge control opens or collapses Bridge beside the work. A fresh wide workbench opens +Bridge on the left. A narrow workbench opens it as a modal sheet from the edge control. One +mounted conversation retains its composer and subscriptions across navigation. Full-route Bridge +suppresses dock controls while preserving saved side, width, and open state. Leaving for a wide +work view reveals the same conversation beside the work. Investigation and public-note focus +keep their separate composition. A compact dark-wood altar mark with two separate legs, purple cloth and small front-mounted candles opens About; a permanent product wordmark is unnecessary in the masthead. About retains the LychD identity, version, source and licence provenance. The fixed natural-colour mark is decorative identity, never a connection or activity indicator. -The dock's persistent named edge control opens or collapses it. The Séances destination does not -select a conversation for the live Bridge. One mounted Bridge retains its composer and subscriptions -across work navigation. Legacy full focus suppresses -the dock modal, resizing and collapse controls without overwriting saved side, width or open state. -Leaving full focus for a wide work view reveals that conversation as its sidebar without replacing -the saved open preference. Narrow work views retain the edge control and modal-sheet behavior. -Public-note and investigation destinations remain separate work views beside the dock. - #### Séance inspection and working material Séances reads the existing Session account; it owns no second transcript or conversation store. @@ -337,7 +334,7 @@ refused, failed, and stale reads remain distinct; an unavailable identity never conversation. Navigation and refresh fence late responses. Inspecting séance B leaves live Bridge A and its draft, pending offering, consent, and subscriptions -unchanged. **Continue in Bridge** explicitly selects B in that same Bridge and opens its panel. +unchanged. **Continue in Bridge** selects B in the existing dock and opens its composer. Creating a séance is an explicit operation; browsing the catalogue creates none. Compatibility Bridge session, Run, consent, Project, public-note, and investigation links keep their existing focus and recovery semantics. @@ -464,9 +461,9 @@ identity, or persuasive copy cannot supply those contracts. ### Canvas portable board authoring [Canvas](../compositions/canvas/index.md) is the Composition for visual board authorship and -reviewed transformations. `/canvas` is the primary creator workspace; `/atlas` is its Project -catalogue. Opening a new Canvas explicitly creates a draft Project and blank primary board, -without requiring a name or an existing undertaking. `/canvas/{project_id}` opens that exact +reviewed transformations. Atlas opens the Project catalogue at `/atlas` and gives access to the +board workspace at `/canvas`. **New canvas** explicitly creates a draft Project and blank primary +board without requiring a name or an existing undertaking. `/canvas/{project_id}` opens that exact Project; `/atlas/{project_id}` retains the directly addressable project record and existing activity-link intent. Projects without a board can acquire one without recreating their records. This initial workspace supports one primary board per Project. @@ -537,8 +534,9 @@ remain evidence-backed claims in State of Work, independently of command/UI sche ### Atlas and continuity across Invocations -Atlas is the catalogue of Canvas Projects. Their retained record maps Concerns: what needs attention, how it decomposes, where it is addressed, and what -supports a judgment. A Concern can begin with an idea or question before any Project exists. +The initial Atlas surface is the catalogue and retained record of Canvas Projects. A Project maps +Concerns, how each decomposes, where it is addressed, and what supports a judgment. A Concern can +begin with an idea or question before any Project exists. The independent Concern contract is [Designed](#independent-concerns-decomposition-and-addressing). The initial server-owned Project aggregate holds a brief, concerns, attributed assessments and decisions, a proposed next action, and explicit @@ -590,6 +588,24 @@ does not establish whether that earlier write committed. automatic concern coverage, autonomous continuation, graph clustering, and implicit shared Context remain outside this initial contract. +#### Shared memory map + +The future Atlas opens on retained knowledge and its provenance. A shared ontology lets each +instrument refer to the same authorized identities and explicitly typed relationships. Bridge can +project a séance as a scoped subgraph whose evidence points to exact turns. Projects and maps +linking requirements, use cases, exact ADR revisions, and acceptance evidence are further slices. +A citation preserves its source and basis across those views. + +Canvas authors boards within Atlas. A board may display a typed relationship or offer a +separately admitted action to author one. A relationship requires explicit attribution and +source references. Layout and ink remain board content. + +[Archive](27-memory.md) owns admission, lifecycle, and Recall. [Context](21-context.md) owns +selection and assembly for an Invocation. Opening a map or following a citation supplies +navigation only. Cross-instrument links use identities and evidence supplied by their owners. +Loom projects the declared score. Nexus projects capability readiness and physical transitions. +Orb projects observed evidence scoped to actual Runs, with its capture limits visible. + ### Independent Concerns, decomposition, and addressing A Concern has its own stable identity, authorization owner, revisioned statement, and optional @@ -991,6 +1007,12 @@ reconnect, delete, rejection, and resync preserve the authoritative semantic twi #### Loom workload and editing gate +Loom's future workflow projection expands nested declared subgraphs so every declared agent can +be inspected. The reader may open one group or expand the whole declared graph. Context policy +and [Evaluation](34-evaluation.md) attach to the exact Pattern revision. Archive governs record +eligibility, and Context governs assembly for each Invocation. Execution evidence remains +attached to its actual Run and opens in Orb. + Loom’s designed editing workload is a workflow score. The registered Bridge and delegated-rite Scrolls place five and three stations over six and three permitted edges, respectively; the latter includes the [delegate's durable re-entry loop](28-workflow.md#pattern-identity). Admitted Suite @@ -1132,9 +1154,10 @@ owns the exact material boundary. ### Build boundary, security, and reopening Development runs Vite on `127.0.0.1:5173`, proxying `/api` and `/schema` to the loopback Vessel. -Production serves static Séances, Canvas, Atlas, Bridge, Orb, Nexus, and Loom shells; unknown APIs and retired paths stay -404. Every operation that raises a runtime not-found across those verticals declares the shared JSON -`FrameworkError` contract. `npm ci`, OpenAPI and notice generation, compilation, and Python build share a release source. +Production serves static Bridge, Séances, Atlas, Canvas, Loom, Nexus, and Orb shells. Unknown APIs +and retired paths stay 404. Operations that raise a runtime not-found across those verticals +declare the shared JSON `FrameworkError` contract. `npm ci`, OpenAPI and notice generation, +compilation, and Python build share a release source. Audit verifies source identity, compiled `index.html`, and archive notices—not a real browser or running image. Only `src/lychd/public/_app` is broadly mounted; `/altar-lightning.svg`, `/favicon.svg`, `/altar-mark.svg` and `/THIRD_PARTY_NOTICES.txt` have narrow typed Litestar handlers. diff --git a/docs/compositions/canvas/index.md b/docs/compositions/canvas/index.md index 1c66f1b3..87a5604f 100644 --- a/docs/compositions/canvas/index.md +++ b/docs/compositions/canvas/index.md @@ -10,12 +10,15 @@ marks, select the part worth improving, and judge a proposed change before it re **Canvas** owns that visual board and its revision history. Its accepted Composition identity is **`canvas.board`, revision `1`**. -The **project workspace** at `/canvas` starts with LychD's own Canvas and its curated static -architecture map. **Atlas** is the project catalogue. LychD remains separately pinned above the -loaded user collection, including after filters or pagination. The diagram describes selected -canonical relationships; it supplies no live status or proof that an illustrated capability runs. - -**New Canvas** immediately creates a draft project and its blank primary board. Draw without +Open **Canvas** from the [Atlas](../../divination/altar/atlas.md#put-an-undertaking-on-the-map) +project catalogue or go directly to `/canvas`. The board workspace starts with LychD's own Canvas +and its curated static architecture map. LychD remains separately pinned above the loaded user +collection, including after filters or pagination. The diagram describes selected canonical +relationships. Inspect execution in Orb. In the future +[Atlas map](../../divination/altar/atlas.md#the-shared-memory-map), layout and ink remain board +content until an explicit action asserts a typed relationship. + +**New canvas** immediately creates a draft project and its blank primary board. Draw without first naming or categorizing the idea. Keep it, rename it through its project record, or discard an eligible draft. One primary board belongs to each project in this profile. Existing projects retain their identities, judgments, decisions and references when a board is added. diff --git a/docs/divination/.nav.yml b/docs/divination/.nav.yml index f470e624..b0ae7c96 100644 --- a/docs/divination/.nav.yml +++ b/docs/divination/.nav.yml @@ -9,14 +9,14 @@ nav: - transmutation/distillation.md - Altar: - altar/index.md - - altar/atlas.md - - Owned Technology Map: altar/technology-map.md - altar/bridge.md - altar/seances.md - altar/circle.md - - altar/orb.md - - altar/nexus.md + - altar/atlas.md + - Owned Technology Map: altar/technology-map.md - altar/loom.md + - altar/nexus.md + - altar/orb.md - Transcendence: - transcendence/index.md - transcendence/incantation.md diff --git a/docs/divination/altar/atlas.md b/docs/divination/altar/atlas.md index 3b728ce3..44d8f93a 100644 --- a/docs/divination/altar/atlas.md +++ b/docs/divination/altar/atlas.md @@ -5,7 +5,7 @@ icon: material/map-outline # :material-map-outline: Atlas -**Atlas is the catalogue of Canvas projects.** Its pinned first entry is LychD's own Canvas, +**Atlas opens the catalogue of Canvas projects.** Its pinned first entry is LychD's own Canvas, with a curated static project map. Search, filters and pagination apply to the loaded user collection while that entry remains available. Open a project to draw on its Canvas, or open its **Project record** directly to inspect its brief, concerns, decisions and related activity. @@ -30,8 +30,9 @@ distinguish understanding from the ability to modify, replace, or recover a comp ## Put an undertaking on the map -Open **Canvas** in the [Altar](index.md#bring-one-intent) navigation, then **Atlas** for the catalogue. -**New Canvas** creates a draft project with a blank board immediately; a name and brief can follow. +Open **Atlas** in the [Altar](index.md#bring-one-intent) masthead. **Open Canvas →** enters the board +workspace. **New canvas** creates a draft project with a blank board immediately. A name and brief +can follow. Keep the project when it is worth retaining in your working collection, or discard an eligible draft to remove it from the catalogue. Discard retains a recoverable account, and cannot remove LychD, a kept project, or existing planning records. In the Project record, describe the @@ -160,6 +161,24 @@ server contract; hiding rows cannot create that support. This composition and it are targets under [Frontend](../../adr/15-frontend.md#reading-hierarchy-and-visual-direction), not additional delivered controls. +## The shared memory map + +In the future design, Atlas opens on retained knowledge and its sources. Recall could show a +retained decision and its nearby relationships, including an earlier decision it superseded. +A Project is one slice of that map. A finding can appear in several slices through the same source +reference. A map of requirements, use cases, exact ADR revisions, and acceptance evidence could +show where a claim came from, what addresses it, and which judgments remain open. A +[séance map](seances.md#map-a-seance) uses the same identities inside Bridge, within that séance's +scope and access. + +Canvas is the authoring surface inside Atlas. A reader can sketch an idea before asserting a +relationship. A typed relation needs a deliberate, attributable action and exact source references. +A reader could review a finding from a séance, retain it with its source, then explicitly attach a +later Recall result to a conversation. [Archive](../../adr/27-memory.md#recall) governs admission, +correction, and Recall. [Context](../../adr/21-context.md#explicit-archive-projection) governs what +enters an Invocation. Today's Atlas provides project records and board access. The shared map +and generalized memory curation remain future work. + ## Concerns before a Project Begin with “Can someone trust this answer?” even if the surrounding idea has no name. Break that diff --git a/docs/divination/altar/bridge.md b/docs/divination/altar/bridge.md index 2b4b80ab..a29dad15 100644 --- a/docs/divination/altar/bridge.md +++ b/docs/divination/altar/bridge.md @@ -5,9 +5,9 @@ icon: material/bridge # :material-bridge: Bridge -Use Bridge to offer an Intent and stay with the answer as you inspect other Altar instruments or -applications. Its session, or séance, holds the continuing conversation. Each admitted turn opens -its own [Circle](circle.md), whose Run lets you follow that one request through to its result. +Use Bridge to offer an Intent and follow the answer. Its session, or séance, holds the continuing +conversation. Each admitted turn opens its own [Circle](circle.md), whose Run lets you follow +that one request through to its result. Bridge is ordinarily where you return to **[Primus](../../lexicon/inner-tongue.md#primus)**, the Lich's first and continuing main personal identity. The optional @@ -17,13 +17,16 @@ proposal in conversation. **Save names** applies the reviewed choice to later ad closing the ceremony leaves conversation available. Further Agents and Personas can contribute to the work while this central relation continues. -Choose [**Séances**](seances.md) in the top navigation for the conversation catalogue and retained -reading workspace. The dock's **Open Séance** link opens its actual supplied conversation there. -Inspection leaves the live Bridge selection unchanged until **Continue in Bridge** is chosen. -Existing full-focus `/bridge` links retain **Pinned** and **Recent conversations** beside the -live thread. Pins stay in this browser and store only session identities; an older unloaded pin -shows its identity until its metadata is supplied. Use **Load more conversations** for older -archive pages. The order follows creation time, not last activity. +Choose **Bridge** in the masthead to open the full conversation workspace. The link returns to +the last explicitly selected conversation in this browser document. **Pinned** and **Recent +conversations** stay beside the live thread. Pins store only session identities in this browser. +An older unloaded pin shows its identity until its metadata is supplied. **Load more conversations** +reads older pages in creation order. + +Choose [**Browse séances**](seances.md) in the full workspace toolbar for the catalogue and +retained reading workspace. The dock's **Open Séance** opens the actual supplied conversation +there. Inspection preserves the live Bridge selection until you choose **Continue in Bridge**. +**Back to workspace** returns to the work you were viewing. Open the side panel with the named **Bridge** control at the work area's edge. New layouts start on the left; a saved side is preserved. Resize its divider, choose the left or right side, @@ -648,7 +651,8 @@ selection stays accessible while secondary metadata unfolds on demand. Judge the composition by what survives a detour: returning from Orb should recover the originating Run while preserving the later draft and the reader's place. Project origin, saved membership, and material in model Context must remain distinguishable. Circle's links should carry the reader -to the owning view; its fuller workspace remains a separate design. +to the owning view. The future [séance map](seances.md#map-a-seance) would show scoped relationships +with source provenance. A fuller Circle would gather the lenses for one admitted Invocation. Acceptance case: lose an offering's admission response, write a later draft, inspect another instrument, and attend to consent in a different session. Return to the original session with diff --git a/docs/divination/altar/index.md b/docs/divination/altar/index.md index adce93ff..4edbb749 100644 --- a/docs/divination/altar/index.md +++ b/docs/divination/altar/index.md @@ -27,9 +27,10 @@ http://127.0.0.1:7134/ Before entering, retrieve the dedicated local credential in a private terminal with `lychd access` and answer the browser's authentication dialog as described in [The Awakening](../../summoning.md#the-awakening). Keep the password out of URLs and command lines. -The root then opens **Orb**, with **Bridge** open on the left in a fresh wide layout. On a narrow -window, use the edge chevron to open Bridge; saved panel preferences remain in use. -On a fresh Phylactery, choose **New Séance** in Bridge and offer a bounded Intent. +The root opens **Orb**, with the Bridge dock on the left in a fresh wide layout. On a narrow +window, the edge chevron opens the dock. Saved dock preferences remain in use. +Choose **Bridge** in the masthead to open the full conversation workspace. On a fresh Phylactery, +choose **New Séance** in Bridge and offer a bounded Intent. Answer an inline consent card only when the Run asks for judgment. Keep the listener on literal loopback, with no ad hoc proxy, tunnel, or forwarding. The separate @@ -52,23 +53,18 @@ identity. Keep that identity in view when changing instruments. | What you need to establish | Instrument | | --- | --- | -| What can we draw, develop, organize and return to across conversations? | [Canvas](../../compositions/canvas/index.md), with [Atlas](./atlas.md) as its project catalogue | | What was offered, what judgment is pending, and what settled? | [Bridge](./bridge.md) | -| What did this conversation contain, and which words should we carry into later work? | [Séances](./seances.md) | -| Which Runs are before us, what evidence is arriving, and where does capture run out? | [Orb](./orb.md) | +| What did this conversation contain, and which words should we carry into later work? | [Séances](./seances.md) within Bridge | +| What can we draw, develop, organize and return to across conversations? | [Atlas](./atlas.md), including [Canvas](../../compositions/canvas/index.md) authoring | | Which stations and paths does this exact Scroll permit? | [Loom](./loom.md) | | What was observed about readiness or a physical transition? | [Nexus](./nexus.md) | +| Which Runs are before us, what evidence is arriving, and where does capture run out? | [Orb](./orb.md) | -Canvas and Atlas are equal top-level destinations: the creative board and its project catalogue. -Séances is the first navigation entry, immediately to the left of Atlas; Canvas, Orb, Loom and -Nexus follow. LychD's own Canvas is pinned first -and opens by default in Canvas. Séances opens a catalogue and exact retained-conversation workspace. -Bridge remains the live conversation panel beside the selected work, opened by its named edge -control. **Open Séance** opens the panel's actual conversation for inspection; **Continue in Bridge** -explicitly selects an inspected conversation for live exchange. Icons accompany the visible -navigation names. Existing full-focus Bridge links remain supported. -Hover, click or keyboard opens the menu. **Applications** opens the other admitted -applications, including Scavenger market. +The masthead orders **Bridge**, **Atlas**, **Loom**, **Nexus**, **Orb**, and **Applications**. +Bridge opens the full conversation workspace, with **Browse séances** for retained inspection. +Atlas opens the project catalogue, with **New canvas** and **Open Canvas →**. LychD's own Canvas +stays pinned first. **Applications** opens other admitted applications, including Scavenger market. +Hover, click, or keyboard focus opens the menu. Atlas gives a larger undertaking continuity across conversations and Runs, and can begin before either exists. Inside Bridge, a Circle gathers one Invocation. Its current form is a compact @@ -90,6 +86,13 @@ Nexus inspection changes no lifecycle state. **Preview** is nonbinding; **Reques performs a real maximum-priority mutation. Read the [Nexus guide](./nexus.md) before making that request. +## Return to Bridge + +Choose **Bridge** in the masthead to return to the last explicitly selected conversation in this +browser document. **Browse séances** opens the catalogue. The dock's **Open Séance** opens the +current conversation for inspection, and **Continue in Bridge** explicitly selects an inspected +conversation for live exchange. + ## Keep Bridge beside the work Use the named **Bridge** control at the work area's edge to open or collapse the panel. New layouts start @@ -120,9 +123,12 @@ contracts belong to the Frontend Covenant; interface choices preserve retained s The graphite frame leaves black spatial surfaces to the work. Neutral primary actions, a quiet purple instrument identity, cyan manipulation controls, and green observed activity have distinct -roles. Bridge keeps a compact composer beside the work; Atlas reads as a catalogue, Canvas as a -drawing board, Séances as a retained-conversation workspace, Orb as an evidence field, Loom as -a declared score, and Nexus as an inspection board. +roles. Bridge gives the conversation room on its route and offers a compact composer beside +other work. Séances gives retained conversations room for reading. Atlas opens the project +catalogue and Canvas drawing boards. Loom reads as a declared score, Nexus as a readiness +inspection board, and Orb as an evidence field. The future +[Atlas memory map](atlas.md#the-shared-memory-map) describes how the instruments can refer to the +same retained knowledge. Canvas's **Selection tools** unfold when ink or nodes are selected, or can be opened directly. Identity and history unfold as needed, while uncertainty, consent, capture limits, and physical consequences stay beside the choices they qualify. diff --git a/docs/divination/altar/loom.md b/docs/divination/altar/loom.md index 62fde7c1..93f87027 100644 --- a/docs/divination/altar/loom.md +++ b/docs/divination/altar/loom.md @@ -112,6 +112,14 @@ be legible before the reader opens digest or source detail. The computed graph h and station inspector beside or below it as space permits. That outline must answer the same question without pan or zoom gestures. +The future workflow map expands nested declared subgraphs until each agent can be inspected. +Open one group to work within it, or expand the complete declared graph. Context policy and +[Evaluation](../../adr/34-evaluation.md#evaluating-a-workflow-change) follow the exact revision. +For example, a policy could request a retained rollout decision with its source. +[Archive](../../adr/27-memory.md) governs eligibility, and +[Context](../../adr/21-context.md#explicit-archive-projection) governs assembly for the Invocation. +The current Score reads supplied stations and permissions. + Judge every mark against the manifest. Both views share declared nodes and permission endpoints; station detail exposes incoming and outgoing permissions. Placement cannot supply a conditional edge label, station effect, independent Spell identity, or execution colour. Handles must not diff --git a/docs/divination/altar/orb.md b/docs/divination/altar/orb.md index beabd3da..45508b46 100644 --- a/docs/divination/altar/orb.md +++ b/docs/divination/altar/orb.md @@ -266,6 +266,10 @@ subjects and gaps stay visible; job events keep their own sequence unless the se a Run correlation. Fold counts describe loaded membership. Deeper expansion needs supplied identities under the [folding contract](../../adr/15-frontend.md#folding-not-scale). +A future [cross-instrument map](atlas.md#the-shared-memory-map) may lead to Orb with an explicit +Run scope. Orb follows the observed account and its capture limits. Loom retains the declared +workflow, and Nexus retains readiness and physical transitions. + Acceptance case: open an event beyond the first page, distinguish not-yet-loaded evidence from an unretained interval or failed read, inspect the exact score or correlated physical transition, and return to the same selected event using only the keyboard. A narrow display should start diff --git a/docs/divination/altar/seances.md b/docs/divination/altar/seances.md index d0a8ada6..fc024485 100644 --- a/docs/divination/altar/seances.md +++ b/docs/divination/altar/seances.md @@ -5,15 +5,15 @@ icon: material/book-open-page-variant # :material-book-open-page-variant: Séances -Open **Séances** to return to a conversation and work with what it contains. **Bridge** keeps -the live exchange beside your work; a séance's workspace gives its retained words room for -reading, selecting, and preparing a later use. +Open **Séances** within Bridge to return to a conversation and work with what it contains. +A séance's retained workspace gives its words room for reading, selecting, and preparing a +later use. ## Find and inspect a conversation -Choose **Séances** in the top navigation, or open `/seances`. The catalogue reads conversation -metadata without loading another conversation's transcript. Its title filter searches loaded -entries; load further pages to reach older entries. Pinned identities remain browser-local +Choose **Browse séances** in the full Bridge workspace, or open `/seances`. The catalogue reads +conversation metadata without loading another conversation's transcript. Its title filter searches +loaded entries. Load further pages to reach older entries. Pinned identities remain browser-local presentation preferences, not copies of the conversations. Choose one entry to open `/seances/{session_id}`. The workspace reads that exact retained @@ -23,7 +23,7 @@ Follow a supplied Run link into [Orb](orb.md) for execution evidence. The words not themselves establish which effects occurred. Inspecting séance B leaves the live Bridge on A. **Continue in Bridge** deliberately selects -the inspected conversation and opens the existing Bridge panel. It sends no message. Drafts +the inspected conversation and opens the Bridge dock beside the séance. It sends no message. Drafts and unresolved offerings keep their ordinary [Bridge recovery boundary](bridge.md#follow-a-turn-to-settlement). Creating a new séance is also explicit; opening the catalogue creates none. @@ -51,11 +51,21 @@ its current explicit public-note profile does not admit arbitrary private conver ## Keep the encounter's identities One séance can contain many Invocations. **Circle** remains the detail of one such act in -[Bridge](bridge.md); it has no separate top-level navigation entry. Atlas owns continuing -project concerns and decisions, Loom the exact reusable score, and Orb the retained execution -account. The Séances workspace relates selected words to those owners without replacing them. +[Bridge](bridge.md). Atlas holds continuing project concerns and decisions, Loom the exact +reusable score, and Orb the retained execution account. The Séances workspace relates selected +words to those owners. Existing `/bridge` session, Run, consent, investigation, and public-note links remain supported. -The panel's **Open Séance** opens its actual supplied conversation without resetting the draft, +The Bridge dock's **Open Séance** opens its actual supplied conversation without resetting the draft, retry identity, consent, or subscriptions. Navigation alone never attaches the conversation or working material to a model request. + +## Map a séance + +In the future design, Bridge would show each séance as a scoped map in the +[shared Atlas ontology](atlas.md#the-shared-memory-map). Proposed concepts and links can follow +the conversation and point back to exact turns. The map can open beside the chat or fill the work +area. The séance list and conversation can fold independently while the selected conversation and +draft stay in place. **Open in Atlas** would widen the view around those same identities. A Circle +would focus one Invocation within that scope. The retained transcript and document-local +working-material collection are the current tools. diff --git a/docs/state-of-the-work.md b/docs/state-of-the-work.md index 76355952..1d0b8dcd 100644 --- a/docs/state-of-the-work.md +++ b/docs/state-of-the-work.md @@ -1233,26 +1233,23 @@ cloth-purple navigation accents. Shared controls, instrument typography and grap that palette; fixed brand artwork remains separately attributed. There is no complete contrast matrix or bright/dim production-browser receipt; ADR 15's bounded operator-palette contract is design law, not delivered configurability. -### Shared workbench and persistent Bridge {#altar-workbench} +### Altar workbench and Bridge {#altar-workbench} **State:** Partial -**Proved now:** The shared masthead provides independent Séances, Canvas, Atlas, Orb, Loom and -Nexus icon-and-label destinations, with a board icon for Canvas and map icon for Atlas, plus an -Applications menu reachable by hover, click, or keyboard. A persistent named work-area edge control -opens or collapses Bridge; new layouts start on the left while valid saved sides remain. One -ordinary conversation stays mounted across work navigation and collapse, retaining exact-session -drafts, unresolved offering identity, and live subscriptions. Explicit Bridge URLs still select -session, Project, Run, and consent focus. Investigation and public-note applications keep their -separate composition. Ordinary `/bridge` and exact-session URLs open full focus: the same -mounted conversation fills the work area, with one accessible main and no dock modal or resize -controls. Full focus leaves saved dock preferences intact. The rail separates browser-local pinned -identities from recent server-supplied sessions. Séances is the first masthead entry, immediately -before Atlas. The panel's **Open Séance** uses its actual server-supplied conversation identity; -an unresolved default instead offers the catalogue. Leaving legacy full chat for a wide work view reveals the same mounted conversation as a -sidebar without replacing saved openness; narrow work views retain their edge/modal treatment. -Off-page pins need no speculative thread reads. -Pins retain IDs only, at most 32, and carry no session or admission authority. +**Proved now:** The masthead orders Bridge, Atlas, Loom, Nexus, Orb, and Applications. Bridge opens +the full conversation workspace at the last explicitly selected session in the open browser +document. **Browse séances** opens the catalogue from that workspace. The dock's **Open Séance** +opens the exact server-supplied session. An unresolved default offers the catalogue. Atlas +retains **Open Canvas →** and **New canvas**. The masthead marks Bridge on Séances routes and +Atlas on Canvas routes. Existing direct URLs remain available, and the root opens Orb. + +The shell keeps one conversation mounted across navigation, retaining exact-session drafts, +unresolved offerings, and live subscriptions. Full-route Bridge fills the work area with one +accessible main. Leaving it for a wide work view reveals the same conversation beside the work. +Saved dock side, width, and open preferences survive full focus. The rail distinguishes +browser-local pins from recent server-supplied sessions. Off-page pins need no speculative +thread reads. Pins retain at most 32 session IDs as presentation preferences. `/seances` pages conversation metadata with a filter explicitly scoped to loaded entries; `/seances/{session_id}` reads one exact retained transcript. This inspection does not select the @@ -1278,12 +1275,13 @@ without destroying the conversation. Source-development Canvas opens that shell makes no protected Bridge/status requests until an explicit connection. Production authentication remains intact. -**Boundary — Not yet:** The dock supplies no new model context or attachment admission, -global conversation merge, cross-instance history, durable browser draft storage or execution -authority. Séances supplies no automatic analysis, durable working-material store, private -conversation-to-Archive intake, or Persona authoring. Viewing a page is not transmitting it to a model. Browser and component checks do not -qualify every device, bright/dim environment, forced-colour combination or the renderer's separate -cross-engine heap gate. Existing server-held recovery, current-access and consent limits remain. +**Boundary — Not yet:** The shared Atlas ontology, provenance-bearing séance map, and generalized +memory curation remain design work. The dock supplies no new model context or attachment +admission, global conversation merge, cross-instance history, durable browser draft storage or +execution authority. Séances supplies no automatic analysis, durable working-material store, +private conversation-to-Archive intake, or Persona authoring. Viewing a page is not transmitting +it to a model. Browser and component checks do not qualify every device, bright/dim environment, +forced-colour combination or the renderer's separate cross-engine heap gate. Existing server-held recovery, current-access and consent limits remain. **Evidence** @@ -1291,14 +1289,14 @@ cross-engine heap gate. Existing server-held recovery, current-access and consen - **Source:** [Séances workspace](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/SeancesWorkspace.svelte), [source material](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/seances/material.ts), and [document-local collection](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/seances/workspace.svelte.ts) - **Verification:** [Séances reads and working material](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/SeancesWorkspace.test.ts), [source export](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/seances/material.test.ts), and [Bridge selection and continuation](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/BridgeShellNavigation.test.ts) - **Verification:** [Server shell fallbacks](https://github.com/hexanomicon/lychd/blob/main/tests/web/test_pages.py), [shell admission/status tests](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/AltarShell.test.ts), [mounted conversation/navigation tests](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/BridgeShellNavigation.test.ts), [dock interaction tests](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/components/BridgeDock.test.ts), [layout preference tests](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/lib/navigation/dock.test.ts), and [offline source profile](https://github.com/hexanomicon/lychd/blob/main/clients/web/src/routes/canvas/layout.test.ts) -- **Law:** [Shared workbench and Bridge dock](./adr/15-frontend.md#the-shared-workbench-and-bridge-dock) -- **Topic:** [Altar](./divination/altar/index.md#keep-bridge-beside-the-work) +- **Law:** [Shared workbench](./adr/15-frontend.md#the-shared-workbench) +- **Topic:** [Altar](./divination/altar/index.md#return-to-bridge) ### Canvas board authoring {#canvas-board-authoring} **State:** Partial -**Proved now:** Canvas is the primary creator entry; Atlas catalogues its Projects. `/canvas` +**Proved now:** Atlas catalogues Projects and gives access to Canvas authoring. `/canvas` bootstraps and opens the owner's pinned LychD Project with a curated static architecture board; `/canvas/{project_id}` opens an exact Project. New Canvas atomically creates a draft and its primary board without a naming form. This profile supports one primary board per Project. @@ -1569,8 +1567,11 @@ and native exact-revision execution lookup are unchanged. **Boundary — Not yet:** Loom is a view over exact admitted inspection records, not a Spellweaver editor, mutation surface, independent Spell identity or catalogue, compatibility or teaching surface, drafting -canvas, inert unresolved-Spell projection, or Suite executor. The shared renderer's cross-engine -forced-collection qualification and complete production-browser acceptance remain unproved. +canvas, inert unresolved-Spell projection, or Suite executor. The future +[workflow projection](./adr/15-frontend.md#loom-workload-and-editing-gate) covers nested declared +subgraphs and Context policy and Evaluation views for the exact revision. The shared renderer's +cross-engine forced-collection qualification and complete production-browser acceptance remain +unproved. The [trusted source-browser profile](#current-evidence-envelope) covers only its keyboard link to the exact `bridge_chat@2` score and return to the same Run. It does not discharge renderer diff --git a/src/lychd/public/_app/immutable/assets/0.DK_BpHVu.css b/src/lychd/public/_app/immutable/assets/0.BIhWPaTl.css similarity index 53% rename from src/lychd/public/_app/immutable/assets/0.DK_BpHVu.css rename to src/lychd/public/_app/immutable/assets/0.BIhWPaTl.css index 9fdfacfd..ba48dd38 100644 --- a/src/lychd/public/_app/immutable/assets/0.DK_BpHVu.css +++ b/src/lychd/public/_app/immutable/assets/0.BIhWPaTl.css @@ -1 +1 @@ -@layer reset{*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;min-height:100%}body,h1,h2,h3,h4,p,pre,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}button,input,textarea,select{font:inherit;color:inherit;margin:0}button{text-transform:none}img,picture,video,canvas,svg{max-width:100%;display:block}}@layer base{body{background:var(--color-void);color:var(--color-parchment);font:var(--text-base)/1.55 var(--font-body);background-attachment:fixed;flex-direction:column;min-height:100vh;display:flex}a,a:visited{color:var(--color-rune);text-underline-offset:.2em}button:not([class]){border:1px solid var(--color-control-border);border-radius:var(--radius-rune);background:var(--color-obsidian-2);min-height:2.5rem;color:var(--color-bone);font-size:var(--text-sm);cursor:pointer;align-self:start;padding:.45rem .75rem}button:not([class]):hover{border-color:var(--color-rune)}button:not([class]):disabled{opacity:.5;cursor:default}select,input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea{background:var(--color-obsidian-2);color:var(--color-bone);accent-color:var(--color-rune)}::selection{background:color-mix(in srgb, var(--color-rune) 40%, transparent);color:var(--color-bone)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--color-engraving);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--color-rune-dim)}:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px;box-shadow:var(--shadow-glow-rune)}}@layer components{.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;border:1px solid var(--color-rune);border-radius:var(--radius-rune);background:var(--color-void);color:var(--color-bone);padding:.6rem .9rem;position:fixed;top:.5rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.eyebrow,.instrument-kicker{color:var(--color-ash);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;display:block}.instrument-title{font-size:var(--text-xl)}.instrument-header{justify-content:space-between;align-items:flex-start;gap:1rem;padding:.35rem .2rem .5rem;display:flex}.instrument-header h1{font-size:var(--text-3xl);margin-top:.2rem}.instrument-header p{max-width:48rem;color:var(--color-ash)}.instrument-header time{color:var(--color-frost);font:var(--text-xs)/1.4 var(--font-glyph)}.inspector-copy{color:var(--color-ash);font-size:var(--text-sm);padding:.85rem 1rem}.inspector-link,.settled-evidence{color:var(--color-rune);font-size:var(--text-xs);text-decoration:none;display:inline-block}.inspector-link{margin:0 1rem 1rem}.settled-evidence{margin-top:.35rem}.text-action{color:var(--color-rune);cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;border-bottom:1px dotted;margin-left:auto}.run-sigil{border-left:2px solid var(--color-rune);background:color-mix(in srgb, var(--color-rune) 5%, transparent);color:var(--color-ash);font:var(--text-xs)/1.4 var(--font-glyph);flex-wrap:wrap;align-items:center;gap:.5rem .8rem;margin-top:.45rem;padding:.45rem .7rem;display:flex}.run-sigil__id{color:var(--color-bone)}.run-sigil a{color:var(--color-rune);text-decoration:none}.run-stop{border:1px solid var(--color-engraving);width:1.6rem;height:1.6rem;color:var(--color-ember);cursor:pointer;background:0 0;border-radius:3px;place-items:center;margin-left:auto;display:inline-grid}.run-stop:disabled{opacity:.45;cursor:wait}.body-crossing{border:1px solid color-mix(in srgb, var(--color-frost) 40%, var(--color-engraving));border-radius:var(--radius-block);background:color-mix(in srgb, var(--color-frost) 6%, var(--color-obsidian));color:var(--color-frost);font-size:var(--text-xs);grid-template-columns:auto 1fr;align-items:center;gap:.65rem;margin-top:.45rem;padding:.65rem .75rem;display:grid}.body-crossing__title{font-family:var(--font-body);font-variant:normal;letter-spacing:normal}.delegate-mark{width:1.1em;color:var(--color-rune);font-family:var(--font-glyph);filter:none;place-items:center;display:inline-grid}.delegate-crossing{border-color:color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));background:var(--color-obsidian);border-left-width:3px}.delegate-crossing[data-state=running]{color:var(--color-lich)}.delegate-crossing[data-state=failed],.delegate-crossing[data-state=cancelled],.delegate-crossing[data-state=timed_out],.delegate-crossing[data-state=lost]{color:var(--color-ember)}.loom-rail nav{flex-direction:column;gap:.35rem;display:flex}.pattern[aria-current=page]{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));box-shadow:inset 2px 0 var(--color-rune)}.loom-canvas{grid-template-columns:minmax(0,1fr) minmax(18rem,23rem);align-content:start;gap:.85rem;display:grid}.pattern-identity{grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.65rem .2rem .4rem;display:flex}.pattern-identity h2{color:var(--color-bone);font:600 var(--text-3xl)/1.2 var(--font-body);margin-top:.2rem}.pattern-identity p{max-width:46rem;color:var(--color-ash)}.pattern-identity .pattern-entry{color:var(--color-parchment);font-size:var(--text-sm);margin-top:.65rem}.pattern-entry code{color:var(--color-frost);margin-left:.4rem}.identity-seal{border:1px solid color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));border-radius:var(--radius-block);min-width:max-content;color:var(--color-rune);font:var(--text-xs)/1.5 var(--font-glyph);padding:.65rem .8rem}.identity-seal strong,.identity-seal span{display:block}.identity-seal span{color:var(--color-ash);text-transform:uppercase}.pattern-score{align-self:start;min-width:0}.score-count{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.station-list{padding:.35rem 0}.station{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);grid-template-columns:2.4rem minmax(9rem,1fr) auto minmax(8rem,.8fr);align-items:center;gap:.7rem;padding:.8rem 1rem;display:grid}.station:last-child{border-bottom:0}.station[data-kind=gate]{background:color-mix(in srgb, var(--color-frost) 4%, transparent)}.station[data-kind=delegate]{background:var(--color-obsidian-2);box-shadow:inset 2px 0 var(--color-rune)}.station__index{color:var(--color-rune);font:var(--text-xs)/1 var(--font-glyph)}.station__body strong,.station__body code{display:block}.station__body strong{color:var(--color-bone);font-weight:500}.station__body code{color:var(--color-ash);font-size:var(--text-xs);margin-top:.15rem}.declaration-kind{border:1px solid var(--color-engraving);color:var(--color-ash);font:var(--text-xs)/1.4 var(--font-glyph);border-radius:999px;padding:.15rem .55rem}.declaration-kind[data-kind=gate]{border-color:color-mix(in srgb, var(--color-frost) 35%, var(--color-engraving));color:var(--color-frost)}.declaration-kind[data-kind=delegate]{border-color:color-mix(in srgb, var(--color-rune) 48%, var(--color-engraving));color:var(--color-rune);border-style:double}.declaration-kind[data-kind=terminal]{border-color:color-mix(in srgb, var(--color-rune) 35%, var(--color-engraving));color:var(--color-rune)}.permission-list{color:var(--color-ash);font:var(--text-xs)/1.5 var(--font-glyph)}.permission-list span{color:var(--color-rune)}.loom-meta{flex-flow:column;align-self:start;gap:.85rem;display:flex}.pattern-details summary{color:var(--color-rune);cursor:pointer;font-size:var(--text-sm);padding:.85rem 1rem}.pattern-details[open] summary{border-bottom:1px solid var(--color-engraving)}.digest{word-break:break-all}.orb-empty{text-align:center;max-width:34rem;margin:auto;padding:4rem 1.5rem}.orb-empty .glyph-big{color:var(--color-rune-dim);font-size:var(--text-3xl);display:block}.orb-empty h1{font-size:var(--text-3xl);margin:.5rem 0}.orb-empty p{color:var(--color-ash);margin-bottom:1.2rem}.orb-main{flex-direction:column;flex:1;gap:.8rem;min-width:0;display:flex}.orb-inspector{flex-direction:column;flex:none;gap:.8rem;width:clamp(18rem,25vw,23rem);display:flex}.run-identity{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.run-identity h1{color:var(--color-bone);font:400 var(--text-xl)/1.25 var(--font-glyph);overflow-wrap:anywhere;margin-top:.2rem}.run-outcome .run-status{font-size:var(--text-base);padding:.3rem .7rem}.selected-evidence-summary{color:var(--color-bone);overflow-wrap:anywhere;padding:.85rem 1rem 0;line-height:1.55}.selected-evidence{background:var(--color-tertiary);border-color:var(--color-tertiary-edge)}.run-outcome{color:var(--color-ash);font-size:var(--text-xs);flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.context-links{gap:.8rem;margin-top:.45rem;display:flex}.context-links a{color:var(--color-rune);font-size:var(--text-xs);text-decoration:none}.context-links span{color:var(--color-ash);font-size:var(--text-xs)}.context-links .context-unavailable{max-width:34rem}.coverage-strip{border:1px solid var(--color-engraving);border-radius:var(--radius-block);background:var(--color-engraving);grid-template-columns:repeat(4,minmax(7rem,1fr)) auto;gap:1px;display:grid;overflow:hidden}.coverage-strip>div,.coverage-strip>button{background:var(--color-obsidian);padding:.55rem .7rem}.coverage-strip span,.coverage-strip strong{display:block}.coverage-strip span{color:var(--color-ash);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em}.coverage-strip strong{color:var(--color-bone);font:400 var(--text-xs)/1.5 var(--font-glyph)}.coverage-strip .text-action{border:0;margin:0}.delegated-jobs .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.delegated-job-list{background:var(--color-engraving);gap:1px;display:grid}.delegated-job{background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-rune);padding:.85rem 1rem}.delegated-job.current{background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian))}.delegated-job>header,.delegated-runtime>header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.delegated-job__title,.delegated-runtime__title{color:var(--color-bone);font:400 var(--text-sm)/1.4 var(--font-glyph)}.delegated-job .kv{grid-template-columns:5rem 1fr;padding-inline:0}.delegated-event-list{color:var(--color-ash);font:var(--text-2xs)/1.4 var(--font-glyph);flex-wrap:wrap;gap:.35rem;display:flex}.delegated-event-list li{border:1px solid var(--color-engraving);border-radius:var(--radius-glyph);gap:.35rem;padding:.25rem .4rem;display:flex}.delegated-event-list strong{color:var(--color-parchment);font-weight:500}.evidence-panel{min-height:0;overflow:hidden}.evidence-panel .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.evidence-list{max-height:calc(100vh - 18rem);overflow-y:auto}.evidence-row,.evidence-gap{border:0;border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);width:100%;color:var(--color-parchment);text-align:left;background:0 0;grid-template-columns:4rem 6rem minmax(12rem,1fr) auto;align-items:center;gap:.7rem;padding:.7rem .9rem;display:grid}.evidence-row{cursor:pointer}.evidence-row:hover,.evidence-row.current{background:color-mix(in srgb, var(--color-rune) 7%, var(--color-obsidian))}.evidence-row.current{box-shadow:inset 2px 0 var(--color-rune)}.evidence-seq,.evidence-kind{color:var(--color-ash);font:var(--text-xs)/1 var(--font-glyph)}.evidence-row.current .evidence-kind{color:var(--color-rune)}.evidence-kind[data-phase=running],.evidence-kind[data-phase=entered]{color:var(--color-lich)}.evidence-kind[data-phase=awaiting_hardware],.evidence-kind[data-phase=awaiting_consent],.evidence-kind[data-phase=waiting],.evidence-kind[data-kind=transition],.evidence-kind[data-kind=consent]{color:var(--color-frost)}.evidence-kind[data-phase=failed],.evidence-kind[data-phase=cancelled]{color:var(--color-ember)}.evidence-summary{color:var(--color-parchment);font-size:var(--text-sm)}.evidence-row time{color:var(--color-ash);font-size:var(--text-xs)}.evidence-gap{border:1px dashed var(--color-engraving);color:var(--color-ash);background:color-mix(in srgb, var(--color-ash) 3%, transparent)}.evidence-gap strong{color:var(--color-ash);font-size:var(--text-lg)}.evidence-more{border-top:1px solid var(--color-engraving);text-align:center;padding:.8rem}.evidence-failure{border:1px solid color-mix(in srgb, var(--color-ember) 42%, var(--color-engraving));border-radius:var(--radius-block);color:var(--color-ember);background:color-mix(in srgb, var(--color-ember) 5%, var(--color-obsidian));font-size:var(--text-xs);padding:.7rem .85rem}.limits-list{color:var(--color-ash);font-size:var(--text-xs);padding:.75rem 1rem .9rem 2rem;list-style:square}.instrument-deck--nexus{align-items:flex-start}.nexus-side{flex-direction:column;flex:none;gap:.8rem;width:clamp(19rem,27vw,24rem);display:flex;position:sticky;top:4.15rem}.read-only{color:var(--color-ash);font-size:var(--text-xs)}.probe-time{color:var(--color-ash);font:var(--text-2xs)/1.4 var(--font-glyph)}.sheet-dismiss{color:var(--color-rune);cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;margin-left:auto;display:inline-block}.containment{border:1px solid color-mix(in srgb, var(--color-ember) 45%, var(--color-engraving));border-radius:var(--radius-block);color:var(--color-ember);background:color-mix(in srgb, var(--color-ember) 6%, var(--color-obsidian));padding:.75rem .9rem}.delegated-runtime-pools .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.delegated-runtime-grid{background:var(--color-engraving);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1px;display:grid}.delegated-runtime{background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-rune);padding:.9rem 1rem}.delegated-runtime[data-state=declared-only]{box-shadow:inset 2px 0 var(--color-ash)}.delegated-runtime .kv{grid-template-columns:6.5rem 1fr;padding-inline:0}.transition-ledger .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.transition-ledger a{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);color:var(--color-parchment);font-size:var(--text-xs);grid-template-columns:4.5rem minmax(10rem,1fr) 9rem 7rem;gap:.7rem;padding:.65rem .9rem;text-decoration:none;display:grid}.transition-ledger a.current{background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian));box-shadow:inset 2px 0 var(--color-rune)}.transition-ledger code{color:var(--color-bone)}.transition-source{color:var(--color-rune);text-transform:uppercase}.transition-inspector .kv{grid-template-columns:6rem 1fr}.swap-ticket{flex-wrap:wrap}.swap-ticket code{color:var(--color-bone)}.rune-head{font-family:var(--font-body);font-variant:normal;letter-spacing:normal;color:var(--color-bone);font-weight:600}.glyph{font-family:var(--font-glyph);font-size:var(--text-xs)}.topbar{background:var(--color-obsidian);border-bottom:1px solid var(--color-engraving);height:52px;box-shadow:none;z-index:10;align-items:center;gap:28px;padding:0 22px;display:flex;position:sticky;top:0}.brand{flex-shrink:0;align-items:center;gap:10px;display:flex}.brand .mark{flex-shrink:0;width:2.75rem;height:2.75rem;display:block}.brand-wordmark{flex-direction:column;gap:2px;display:flex}.brand .name{font-size:var(--text-lg);letter-spacing:.17em;line-height:1}.brand .sub{color:var(--color-parchment);font-size:var(--text-2xs);letter-spacing:.16em;text-transform:uppercase;line-height:1.2}.altar-about{flex-shrink:0;position:relative}.altar-about>summary{border-radius:var(--radius-rune);cursor:pointer;min-height:2.75rem;list-style:none}.altar-about>summary::-webkit-details-marker{display:none}.about-caret{color:var(--color-ash);font:var(--text-xs)/1 var(--font-body);margin-inline-start:.15rem;display:inline-block}.altar-about[open] .about-caret{transform:rotate(180deg)}.altar-about>summary:hover .name,.altar-about[open] .name{color:var(--color-rune)}.altar-about__panel{z-index:1;border:1px solid var(--color-tertiary-edge);border-radius:var(--radius-panel);background:var(--color-tertiary);width:min(18rem,100vw - 1.5rem);max-height:calc(100dvh - 6rem);box-shadow:0 .75rem 2rem color-mix(in srgb, var(--color-void) 80%, transparent);padding:1rem;position:absolute;inset-block-start:calc(100% + .35rem);inset-inline-start:0;overflow:auto}.altar-about__panel h2{color:var(--color-bone);font:400 var(--text-lg)/1.4 var(--font-rune);margin:0}.altar-about__version{color:var(--color-parchment);font:var(--text-xs)/1.5 var(--font-glyph);overflow-wrap:anywhere;margin:.35rem 0 .65rem}.altar-about__links{flex-direction:column;gap:.125rem;display:flex}.altar-about__links a{min-height:2.75rem;color:var(--color-rune);font-size:var(--text-sm);text-underline-offset:.2em;overflow-wrap:anywhere;align-items:center;padding-block:.375rem;line-height:1.5;text-decoration:underline;display:flex}nav.instruments{gap:2px;height:100%;display:flex}nav.instruments a{color:var(--color-ash);font-size:var(--text-sm);letter-spacing:.09em;text-transform:uppercase;transition:color var(--duration-drift), border-color var(--duration-drift);cursor:pointer;border-bottom:1px solid #0000;align-items:center;padding:0 16px;text-decoration:none;display:flex;position:relative}nav.instruments a:hover{color:var(--color-bone)}nav.instruments a[aria-current=page]{color:var(--color-bone);border-bottom-color:var(--color-accent)}nav.instruments a .dot{color:var(--color-engraving);font-size:8px;position:absolute;top:10px;right:6px}.topbar .spacer{flex:1}.sigil{border:1px solid var(--color-engraving);color:var(--color-ash);font-size:var(--text-xs);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:5px 13px;text-decoration:none;display:inline-flex}.sigil[data-state=lit]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 40%, transparent);box-shadow:var(--shadow-glow-frost);animation:var(--animate-sigil-pulse)}.sigil-identity{color:var(--color-ash);font-size:var(--text-xs);align-items:center;gap:7px;display:inline-flex}.sigil-identity b{color:var(--color-bone);letter-spacing:.06em;font-weight:500}.panel{background:var(--color-obsidian);border-radius:var(--radius-panel);box-shadow:none;border:1px solid #0000}.panel-head{border-bottom:1px solid var(--color-engraving);font-size:var(--text-sm);align-items:center;gap:10px;padding:11px 16px;display:flex}.panel-head .rune-head{font-size:var(--text-base)}.frosted{background:var(--color-obsidian);border:1px solid var(--color-engraving);border-radius:var(--radius-panel)}.divider{color:var(--color-engraving);align-items:center;gap:10px;margin:14px 0;font-size:9px;display:flex}.divider:before,.divider:after{content:"";background:var(--color-engraving);flex:1;height:1px}.chip{font-size:var(--text-xs);letter-spacing:.05em;border:1px solid var(--color-engraving);color:var(--color-ash);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;display:inline-flex}.chip:before{content:"●";font-size:7px}.chip--bare{border:none;gap:6px;padding:0}.chip[data-state=active]{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 40%, transparent)}.chip[data-state=warm]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 38%, transparent)}.chip[data-state=awaited]{color:var(--color-ash);border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));border-style:dashed}.chip[data-state=warming]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 45%, transparent);animation:var(--animate-think-pulse)}.chip[data-state=cold]{color:var(--color-ash)}.chip[data-state=fault]{color:var(--color-ember);border-color:color-mix(in srgb, var(--color-ember) 40%, transparent)}.chip[data-state=queued]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 30%, transparent)}.chip[data-state=queued]:before{animation:var(--animate-sigil-pulse)}.chip[data-state=streaming],.chip[data-state=running]{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 45%, transparent);animation:var(--animate-think-pulse)}.chip[data-state=consent],.chip[data-state=awaiting_hardware],.chip[data-state=awaiting_consent],.chip[data-state=awaiting_delegate],.chip[data-state=awaiting_peer],.chip[data-state=admitted],.chip[data-state=preparing]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 38%, transparent)}.chip[data-state=done],.chip[data-state=succeeded]{color:var(--color-lich);border-color:#0000}.chip[data-state=failed],.chip[data-state=cancelled],.chip[data-state=timed_out],.chip[data-state=lost]{color:var(--color-ember);border-color:color-mix(in srgb, var(--color-ember) 35%, transparent)}.rune-btn{font:var(--text-sm)/1 var(--font-body);letter-spacing:normal;border-radius:var(--radius-rune);border:1px solid var(--color-control-border);background:var(--color-obsidian-2);min-height:2.75rem;color:var(--color-bone);cursor:pointer;transition:background-color var(--duration-whisper), border-color var(--duration-whisper);padding:8px 16px}.rune-btn:hover{border-color:var(--color-rune);background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian-2))}.rune-btn:disabled{opacity:.4;cursor:default;box-shadow:none}.rune-btn--frost{border-color:var(--color-bone);background:var(--color-bone);color:var(--color-void);font-weight:600}.rune-btn--frost:hover{background:#fff;border-color:#fff}.rune-btn--ash{border-color:var(--color-control-border);color:var(--color-ash);background:0 0}.rune-btn--ash:hover{color:var(--color-bone);border-color:var(--color-rune);box-shadow:none}kbd.key{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-frost);background:color-mix(in srgb, var(--color-frost) 6%, transparent);border:1px solid color-mix(in srgb, var(--color-frost) 20%, var(--color-engraving));border-radius:var(--radius-glyph);padding:1px 6px}#altar-main{isolation:isolate;background:var(--color-void);flex:1;min-height:0;display:flex;position:relative;overflow:hidden}#altar-main>*{z-index:1;position:relative}.instrument-deck{flex:1;gap:14px;min-width:0;padding:14px 16px;display:flex}.bridge-rail{flex-direction:column;flex-shrink:0;gap:8px;width:232px;display:flex}.bridge-rail .new-seance{text-align:left;width:100%}.seance{border-radius:var(--radius-block);color:var(--color-ash);cursor:pointer;transition:background var(--duration-whisper);border:1px solid #0000;padding:10px 13px;text-decoration:none;display:block}.seance:hover{background:var(--color-obsidian)}.seance.current{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));color:var(--color-bone)}.seance .t{font-size:var(--text-sm);margin-bottom:2px;display:block}.seance .m{font-size:var(--text-xs);color:var(--color-ash);display:block}.seance.current .t{color:var(--color-bone)}.rail-empty{color:var(--color-ash);padding:8px 4px}.bridge-thread{flex-direction:column;flex:1;min-width:0;display:flex}.thread-scroll{flex-direction:column;flex:1;gap:14px;padding:4px 6px 14px 2px;display:flex;overflow-y:auto}.turn{max-width:720px}.turn--user{align-self:flex-end}.turn--user .turn__body{background:var(--color-grimoire);border:1px solid color-mix(in srgb, var(--color-tertiary-edge) 40%, var(--color-engraving));border-radius:var(--radius-turn) var(--radius-turn) 3px var(--radius-turn);color:var(--color-bone);padding:11px 15px}.turn--agent{align-self:flex-start;width:100%}.turn__meta{font-size:var(--text-xs);color:var(--color-ash);align-items:center;gap:10px;margin-bottom:6px;display:flex}.turn__meta .who{font-family:var(--font-body);letter-spacing:normal;color:color-mix(in srgb, var(--color-rune) 70%, var(--color-bone));font-weight:600;font-size:var(--text-sm)}.turn--agent .turn__body{background:var(--color-obsidian);border:1px solid var(--color-engraving);border-radius:3px var(--radius-turn) var(--radius-turn) var(--radius-turn);color:var(--color-parchment);transition:border-color var(--duration-rise) var(--ease-settle);padding:13px 17px}.turn__body p+p{margin-top:9px}.turn__body code{font-family:var(--font-glyph);font-size:var(--text-sm);color:var(--color-frost)}.turn__extras:empty{display:none}.turn--agent[data-state=streaming] .turn__body{border-color:color-mix(in srgb, var(--color-lich) 52%, var(--color-engraving));background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-lich)}.turn--agent[data-state=done] .turn__body{border-color:var(--color-engraving)}.turn--agent[data-state=stale] .turn__body{border-style:dashed;border-color:var(--color-ash);box-shadow:none}.turn--agent[data-state=failed] .turn__meta .who{color:var(--color-ember)}.turn--agent[data-state=failed] .turn__body{border-color:color-mix(in srgb, var(--color-ember) 30%, var(--color-engraving))}.turn--agent[data-state=cancelled] .turn__body{border-style:dashed;border-color:color-mix(in srgb, var(--color-ash) 45%, var(--color-engraving))}.turn__fault{border-top:1px solid color-mix(in srgb, var(--color-ember) 30%, transparent);font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-ember);margin-top:9px;padding-top:8px}.turn__fault:before{content:"✕ "}.caret,.turn--agent[data-state=streaming] .turn__body:after{vertical-align:text-bottom;background:var(--color-lich);width:8px;height:15px;box-shadow:none;animation:var(--animate-caret-blink);display:inline-block}.turn--agent[data-state=streaming] .turn__body:after{content:"";margin-left:2px}.status{font-size:var(--text-xs);letter-spacing:.05em;color:var(--color-ash);align-items:center;gap:6px;display:inline-flex}.genui{border:1px solid var(--color-engraving);border-left:2px solid var(--color-rune-dim);border-radius:var(--radius-block);background:var(--color-obsidian-2);animation:genui-rise var(--duration-rise) var(--ease-settle) both;margin-top:11px;overflow:hidden}@keyframes genui-rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.genui-head{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ash);border-bottom:1px solid var(--color-engraving);justify-content:space-between;align-items:center;padding:8px 13px;display:flex}.genui-body{color:var(--color-parchment);font-size:var(--text-sm);padding:11px 16px}.genui-body.checklist{padding:10px 16px 12px 30px}.genui-body.checklist li{padding:3px 0}.genui table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.genui th{text-align:left;color:var(--color-ash);font-weight:500;font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;border-bottom:1px solid var(--color-engraving);padding:7px 13px}.genui td{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 55%, transparent);padding:7px 13px}.genui tr:last-child td{border-bottom:none}.consent-card{border:1px solid color-mix(in srgb, var(--color-frost) 35%, var(--color-engraving));border-radius:var(--radius-panel);background:var(--color-obsidian);box-shadow:var(--shadow-glow-frost);margin-top:11px;overflow:hidden}.consent-card .head{border-bottom:1px solid color-mix(in srgb, var(--color-frost) 18%, var(--color-engraving));color:var(--color-frost);font-size:var(--text-sm);align-items:center;gap:9px;padding:11px 16px;display:flex}.consent-card .head .rune-head{color:var(--color-frost);font-size:var(--text-base)}.consent-card .vision{color:var(--color-parchment);font-size:var(--text-sm);padding:12px 16px 4px}.consent-card .vision em{color:var(--color-bone);font-style:normal}.consent-card dl,.consent-card .args{font-size:var(--text-sm);grid-template-columns:fit-content(35%) minmax(0,1fr);gap:4px 16px;padding:10px 16px;display:grid}.consent-card dt{color:var(--color-ash)}.consent-card dd{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-bone)}.consent-card .args>*{overflow-wrap:anywhere;min-width:0}.consent-card .verdicts{flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px 14px;display:flex}.consent-card .verdicts .note{font-size:var(--text-xs);color:var(--color-ash);margin-left:auto}.consent-card[data-state=consented]{border-color:color-mix(in srgb, var(--color-lich) 35%, var(--color-engraving));box-shadow:var(--shadow-glow-lich)}.consent-card[data-state=consented] .head,.consent-card[data-state=consented] .head .rune-head{color:var(--color-lich)}.consent-card[data-state=refused]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving));background:var(--color-obsidian);box-shadow:none}.consent-card[data-state=refused] .head,.consent-card[data-state=refused] .head .rune-head{color:var(--color-ember)}.composer{border:1px solid var(--color-control-border);border-radius:var(--radius-panel);background:var(--color-obsidian);transition:border-color var(--duration-drift), box-shadow var(--duration-drift);align-items:flex-end;gap:10px;margin-top:12px;padding:10px 12px;display:flex}.composer:focus-within{border-color:var(--color-rune)}.composer textarea{resize:none;color:var(--color-bone);font:var(--text-base)/1.5 var(--font-body);background:0 0;border:none;outline:none;flex:1;min-height:40px}.composer textarea::placeholder{color:var(--color-ash)}.thinking-rune{color:var(--color-lich)}[aria-busy=true] .thinking-rune{color:var(--color-lich);animation:var(--animate-think-pulse)}.bridge-inspector{flex-direction:column;flex-shrink:0;gap:12px;width:296px;display:flex;overflow-y:auto}.kv{font-size:var(--text-sm);grid-template-columns:92px 1fr;gap:6px 10px;padding:12px 16px;display:grid}.kv dt{color:var(--color-ash)}.kv dd{color:var(--color-bone);overflow-wrap:anywhere}.kv dd.glyph{color:var(--color-frost)}.floor{flex-direction:column;gap:6px;padding:8px 10px 12px;display:flex}.block{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);background:var(--color-obsidian-2);font-size:var(--text-xs);align-items:center;gap:9px;padding:7px 10px;display:flex}.block[data-state=stub]{opacity:.5;border-style:dashed}.block .layer{font-family:var(--font-glyph);font-size:var(--text-2xs);color:var(--color-rune);border:1px solid color-mix(in srgb, var(--color-rune) 35%, transparent);border-radius:var(--radius-glyph);flex-shrink:0;place-items:center;width:22px;height:18px;display:grid}.block.volatile .layer{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 35%, transparent)}.block .k{color:var(--color-parchment);font-family:var(--font-glyph);font-size:var(--text-2xs);flex:1}.block .h{color:var(--color-ash);font-family:var(--font-glyph);font-size:var(--text-2xs)}.floor-digest{border-top:1px solid var(--color-engraving);font-size:var(--text-2xs);color:var(--color-ash);justify-content:space-between;margin:4px 6px 0;padding:8px 10px;display:flex}.floor-digest b{color:var(--color-frost);font-family:var(--font-glyph);font-weight:400}.nexus-main{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.nexus-strip{font-size:var(--text-sm);color:var(--color-ash);align-items:center;gap:22px;padding:10px 16px;display:flex}.nexus-strip .stat b{color:var(--color-bone);margin-left:6px;font-weight:500}.nexus-strip .stat b.ok{color:var(--color-frost)}.nexus-strip .stat b.live{color:var(--color-lich)}.nexus-hint{color:var(--color-ash);font-size:var(--text-sm);padding:14px 16px}.nexus-empty{color:var(--color-ash);font-size:var(--text-sm);padding:24px 16px}.coven-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;display:grid}.coven-card{flex-direction:column;display:flex}.coven-card .panel-head{justify-content:space-between}.coven-card[data-state=active]{border-color:color-mix(in srgb, var(--color-lich) 48%, var(--color-engraving));background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-lich)}.coven-card[data-state=warm]{border-color:color-mix(in srgb, var(--color-frost) 28%, var(--color-engraving))}.coven-card[data-state=warming]{border-color:color-mix(in srgb, var(--color-frost) 45%, var(--color-engraving))}.coven-card[data-state=awaited]{border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));border-style:dashed}.coven-card[data-state=cold]{border-color:var(--color-engraving)}.coven-card[data-state=fault]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving))}.coven-card .kind{font-size:var(--text-2xs);color:var(--color-ash);letter-spacing:.1em;text-transform:uppercase}.coven-card .chip-slot{margin-left:auto}.cap{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 60%, transparent);font-size:var(--text-sm);align-items:center;gap:10px;padding:9px 14px;display:flex}.cap:last-of-type{border-bottom:none}.cap .key{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-parchment);overflow-wrap:anywhere;flex:1}.cap .preview-trigger{font-size:var(--text-xs);color:var(--color-ash);cursor:pointer;border:none;border-bottom:1px dotted var(--color-ash);background:0 0;padding:0}.cap .preview-trigger:hover{color:var(--color-rune);border-color:var(--color-rune)}.cap .preview-trigger:disabled{opacity:.4;cursor:default;border:none}.coven-foot{font-size:var(--text-xs);color:var(--color-ash);justify-content:space-between;padding:8px 14px 10px;display:flex}.nexus-plan{flex-shrink:0;align-self:flex-start;width:330px;position:sticky;top:66px}.plan-verdict{border-radius:var(--radius-block);border:1px solid color-mix(in srgb, var(--color-heat) 44%, var(--color-engraving));background:var(--color-obsidian-2);color:var(--color-heat);font-size:var(--text-sm);letter-spacing:.06em;align-items:center;gap:10px;margin:12px 16px 4px;padding:9px 13px;display:flex}.plan-verdict[data-state=clean]{border-color:color-mix(in srgb, var(--color-frost) 30%, var(--color-engraving));background:color-mix(in srgb, var(--color-frost) 6%, var(--color-obsidian-2));color:var(--color-frost)}.plan-list{font-size:var(--text-sm);padding:10px 16px 2px}.plan-list .row{justify-content:space-between;padding:5px 0;display:flex}.plan-list .row .l{color:var(--color-ash)}.plan-list .row .v{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-bone)}.plan-list .row .v.evict{color:var(--color-ember)}.plan-list .row .v.launch{color:var(--color-heat)}.plan-act{flex-direction:column;gap:8px;padding:12px 16px 15px;display:flex}.plan-act .warn{font-size:var(--text-xs);color:var(--color-ash)}.swap-ticket{border-radius:var(--radius-block);border:1px solid color-mix(in srgb, var(--color-heat) 38%, var(--color-engraving));background:var(--color-obsidian-2);color:var(--color-heat);font-size:var(--text-sm);letter-spacing:.05em;align-items:center;gap:10px;margin:12px 16px;padding:11px 14px;display:flex}.swap-ticket[data-state=warming]:before{content:"❄";animation:var(--animate-think-pulse)}.swap-ticket[data-state=settled]{border-color:color-mix(in srgb, var(--color-lich) 30%, var(--color-engraving));background:color-mix(in srgb, var(--color-lich) 6%, var(--color-obsidian-2));color:var(--color-lich);box-shadow:var(--shadow-glow-lich)}.swap-ticket[data-state=settled]:before{content:"✦"}.swap-ticket[data-state=failed]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving));background:color-mix(in srgb, var(--color-ember) 6%, var(--color-obsidian-2));color:var(--color-ember);box-shadow:none}.swap-ticket[data-state=failed]:before{content:"✕"}.swap-ticket[data-state=stale]{border-style:dashed;border-color:var(--color-ash);background:var(--color-obsidian-2);color:var(--color-ash);box-shadow:none}.swap-ticket[data-state=stale]:before{content:"?"}.loom-rail{flex-direction:column;flex-shrink:0;gap:8px;width:232px;display:flex}.pattern{border-radius:var(--radius-block);color:var(--color-ash);cursor:pointer;border:1px solid #0000;padding:10px 13px;text-decoration:none;display:block}.pattern:hover{background:var(--color-obsidian)}.pattern.current{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-rune) 30%, var(--color-engraving))}.pattern .t{font-size:var(--text-sm);color:var(--color-bone);margin-bottom:2px;display:block}.pattern .m{font-size:var(--text-xs);display:block}.pattern[data-state=unbuilt]{opacity:.45}.loom-canvas{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.graph-stage{padding:26px 18px;overflow-x:auto}.loom-meta{flex-wrap:wrap;gap:12px;display:flex}.loom-meta .panel{flex:1;min-width:260px}.loom-desc{color:var(--color-parchment);font-size:var(--text-sm);padding:12px 16px}.shell-placeholder{text-align:center;color:var(--color-ash);max-width:420px;margin:auto;padding:40px 20px}.shell-placeholder .glyph-big{font-size:var(--text-3xl);color:var(--color-engraving);margin-bottom:14px;display:block}.shell-placeholder .rune-head{font-size:var(--text-xl);margin-bottom:8px;display:block}.shell-placeholder h1{color:var(--color-bone);font-size:var(--text-3xl);margin-bottom:.7rem}.shell-placeholder p{line-height:1.65}.shell-placeholder nav{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.25rem;display:flex}.shell-placeholder nav a{border:1px solid var(--color-control-border);border-radius:var(--radius-rune);background:var(--color-tertiary);justify-content:center;align-items:center;min-height:2.75rem;padding:.5rem .85rem;text-decoration:none;display:inline-flex}.shell-placeholder nav a:hover{border-color:var(--color-rune)}.mist{background:var(--color-obsidian-2);border-radius:var(--radius-block);animation:var(--animate-think-pulse);min-height:14px}.omen-stack{z-index:40;flex-direction:column;gap:8px;max-width:320px;display:flex;position:fixed;bottom:18px;right:18px}.omen{border-radius:var(--radius-block);border-left:2px solid var(--color-frost);background:var(--color-obsidian);color:var(--color-parchment);font-size:var(--text-sm);animation:omen-rise var(--duration-rise) var(--ease-settle) both;align-items:flex-start;gap:10px;padding:10px 13px;display:flex}.omen[data-state=fault]{border-left-color:var(--color-ember);background:var(--color-obsidian);color:var(--color-bone);box-shadow:none}.omen .dismiss{color:var(--color-ash);cursor:pointer;background:0 0;border:none;margin-left:auto}@keyframes omen-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.vessel-bar{border-top:1px solid var(--color-engraving);background:var(--color-obsidian);height:34px;font-size:var(--text-xs);color:var(--color-ash);align-items:center;gap:24px;padding:0 20px;display:flex}.vessel-bar .item b{font-weight:400;font-family:var(--font-glyph);font-size:var(--text-2xs);margin-left:6px}.vessel-bar .risen{color:var(--color-frost)}.vessel-bar .live-run{color:var(--color-lich)}.vessel-bar .spacer{flex:1}@media (prefers-reduced-motion:reduce){.sigil[data-state=lit],.chip[data-state=queued]:before,.chip[data-state=streaming],.chip[data-state=warming],.swap-ticket[data-state=warming]:before,.caret,.turn--agent[data-state=streaming] .turn__body:after,.mist,.genui,.omen{animation:none!important}*{transition-duration:0s!important}}.loom-canvas{grid-template-columns:minmax(0,1fr) minmax(18rem,23rem);align-content:start;display:grid}.loom-meta{flex-flow:column;display:flex}.loom-meta .panel{min-width:0}.nexus-plan{width:auto;position:static}}:root{--color-void:#000;--color-obsidian:#0d0f12;--color-obsidian-2:#171a1f;--color-engraving:#24272e;--color-primary:#9edbe8;--color-primary-deep:#70bed0;--color-secondary:#38df91;--color-secondary-deep:#14b86c;--color-accent:#b8a1d0;--color-tertiary:var(--color-obsidian);--color-tertiary-edge:var(--color-engraving);--color-control-border:#4c5663;--color-heat:#f0b379;--color-heat-deep:#82512f;--color-grimoire:var(--color-obsidian-2);--color-rune:var(--color-primary);--color-rune-dim:#6095a6;--color-lich:var(--color-secondary);--color-lich-deep:var(--color-secondary-deep);--color-frost:#b7efff;--color-frost-deep:var(--color-primary-deep);--color-ash:#a0a5b1;--color-ember:#ff8f9e;--color-bone:#f2f3f5;--color-parchment:#ced1d8;--font-rune:Georgia, "Times New Roman", serif;--font-body:system-ui, -apple-system, "Segoe UI", sans-serif;--font-glyph:ui-monospace, "Cascadia Mono", "SF Mono", Menlo, monospace;--text-2xs:.75rem;--text-2xs--line-height:1.4;--text-xs:.8125rem;--text-xs--line-height:1.45;--text-sm:.875rem;--text-sm--line-height:1.5;--text-base:.9375rem;--text-base--line-height:1.55;--text-lg:1.125rem;--text-lg--line-height:1.4;--text-xl:1.375rem;--text-xl--line-height:1.35;--text-3xl:1.75rem;--text-3xl--line-height:1.2;--radius-glyph:5px;--radius-rune:7px;--radius-block:8px;--radius-panel:10px;--radius-turn:10px;--shadow-glow-rune:none;--shadow-glow-lich:none;--shadow-glow-frost:none;--ease-settle:cubic-bezier(.4, 0, .2, 1);--duration-whisper:.15s;--duration-drift:.2s;--duration-rise:.3s;--animate-sigil-pulse:sigil-pulse 2.6s ease-in-out infinite;--animate-think-pulse:think-pulse 2.4s ease-in-out infinite;--animate-caret-blink:caret-blink 1.05s steps(1) infinite;--animate-mist:mist-sweep 1.8s ease-in-out infinite}@keyframes sigil-pulse{0%,to{opacity:1}50%{opacity:.72}}@keyframes think-pulse{0%,to{opacity:1}50%{opacity:.78}}@keyframes caret-blink{50%{opacity:0}}@keyframes mist-sweep{0%{background-position:-200% 0}to{background-position:200% 0}}@media (width<=68rem){.instrument-deck--bridge{grid-template-columns:13rem minmax(0,1fr);display:grid}.instrument-deck--bridge.instrument-deck--welcome{grid-template-columns:minmax(0,1fr)}.bridge-inspector{grid-column:1/-1;grid-template-columns:repeat(2,1fr);width:auto;display:grid}.instrument-deck--orb,.instrument-deck--nexus{flex-direction:column}.orb-inspector,.nexus-side{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid;position:static}.loom-canvas{grid-template-columns:1fr}.pattern-identity,.pattern-score,.loom-meta{grid-column:1}.loom-meta{display:block}}@media (width<=48rem){.topbar{flex-wrap:wrap;gap:.5rem 1rem;height:auto;min-height:3.25rem;padding:.55rem .75rem}.sigil-identity{display:none}nav.instruments{order:3;width:100%;overflow-x:auto}nav.instruments a{min-height:2.5rem;padding:0 clamp(.375rem,2vw,.75rem)}.instrument-deck,.instrument-deck--bridge{flex-direction:column;padding:.75rem;display:flex}.bridge-rail,.loom-rail{width:100%}.bridge-rail,.loom-rail nav{flex-direction:row;overflow-x:auto}.bridge-rail .divider{display:none}.bridge-rail .new-seance{flex:none;width:auto}.seance,.pattern{min-width:10rem}.bridge-inspector,.orb-inspector,.nexus-side,.loom-meta{flex-direction:column;display:flex}.body-crossing,.station,.evidence-row,.evidence-gap,.transition-ledger a{grid-template-columns:1fr}.pattern-identity,.run-identity,.instrument-header{flex-direction:column}.identity-seal{width:100%;min-width:0}.coverage-strip{grid-template-columns:repeat(2,1fr)}.evidence-list{max-height:none}.run-outcome{align-items:flex-start}.sheet-dismiss{display:inline-block}.selected-evidence,.nexus-plan[data-open=true],.transition-inspector[data-open=true]{z-index:40;border-color:color-mix(in srgb, var(--color-rune) 55%, var(--color-engraving));max-height:min(60vh,32rem);box-shadow:0 -.75rem 2rem color-mix(in srgb, var(--color-void) 75%, transparent);position:fixed;bottom:.75rem;left:.75rem;right:.75rem;overflow-y:auto}}@media (forced-colors:active){:focus-visible{box-shadow:none;outline:2px solid highlight}.panel,.altar-about__panel,.run-sigil,.body-crossing,.coverage-strip,.evidence-gap{border-color:canvastext}}.dock-shell.svelte-1usyivu{z-index:20;order:1;flex:0 0 min(var(--dock-width), 60vw);width:min(var(--dock-width), 60vw);min-width:0;min-height:0;display:flex;position:relative}.dock-shell.dock-left.svelte-1usyivu{order:-1}.dock-shell.dock-collapsed.svelte-1usyivu{flex-basis:0;width:0}.dock-shell.dock-focused.svelte-1usyivu{flex:1 1 0;order:0;width:100%;overflow:hidden}.dock-focused.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){border:0}.focus-heading.svelte-1usyivu{border-bottom:1px solid var(--color-engraving);padding:.35rem 1rem}.focus-heading.svelte-1usyivu a:where(.svelte-1usyivu),.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu){min-height:2rem;font-size:var(--text-xs);color:var(--color-parchment);align-items:center;display:inline-flex}a.svelte-1usyivu:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.dock-frame.svelte-1usyivu{background:var(--color-obsidian);border-left:1px solid var(--color-engraving);width:100%;min-width:0;min-height:0;display:flex;position:relative}.dock-frame[hidden].svelte-1usyivu{display:none}.dock-left.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){border-left:0;border-right:1px solid var(--color-engraving)}.bridge-dock.svelte-1usyivu{flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.dock-heading.svelte-1usyivu{background:var(--color-obsidian);border-bottom:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem;min-height:3.5rem;padding:.6rem 1rem .35rem;display:flex}.dock-heading.svelte-1usyivu h2:where(.svelte-1usyivu){font:600 var(--text-lg)/1.4 var(--font-body);letter-spacing:-.025em;color:var(--color-bone)}.dock-location.svelte-1usyivu{flex-wrap:wrap;align-items:baseline;gap:.35rem .6rem;min-width:0;display:flex}.dock-view.svelte-1usyivu{font-size:var(--text-xs);color:var(--color-ash);overflow-wrap:anywhere}.dock-actions.svelte-1usyivu button:where(.svelte-1usyivu),.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu){border-radius:var(--radius-rune);background:0 0;border:0;place-items:center;min-width:2rem;min-height:2rem;font-size:1.15rem;text-decoration:none;display:grid}.dock-actions.svelte-1usyivu button:where(.svelte-1usyivu):hover,.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu):hover{background:var(--color-obsidian-2)}.dock-actions.svelte-1usyivu{gap:.125rem;display:flex}.dock-context.svelte-1usyivu{border-bottom:1px solid var(--color-engraving);color:var(--color-ash);font-size:var(--text-2xs);margin:0;padding:.15rem 1rem .65rem;line-height:1.5}button.svelte-1usyivu{border:1px solid var(--color-engraving);border-radius:var(--radius-glyph);background:var(--color-obsidian);min-height:2.5rem;color:var(--color-bone);font:inherit;font-size:var(--text-xs);cursor:pointer;padding:.4rem .65rem}button.svelte-1usyivu:hover{border-color:var(--color-rune)}button.svelte-1usyivu:focus-visible,.dock-resizer.svelte-1usyivu:focus-visible{outline:2px solid var(--color-rune);outline-offset:-2px}.dock-toggle.svelte-1usyivu{inset-block-start:calc(50% - 1.375rem);z-index:3;border-radius:var(--radius-glyph) 0 0 var(--radius-glyph);width:2rem;min-height:2.75rem;font:600 var(--text-sm)/1 var(--font-body);place-items:center;padding:.25rem;display:grid;position:absolute;right:100%}.dock-toggle.svelte-1usyivu:has(.edge-label:where(.svelte-1usyivu)){gap:.35rem;width:2rem;padding-block:.5rem}.edge-label.svelte-1usyivu{writing-mode:vertical-rl;font-size:var(--text-xs)}.dock-left.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){border-radius:0 var(--radius-glyph) var(--radius-glyph) 0;left:100%;right:auto}.dock-conversation.svelte-1usyivu{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.dock-conversation[hidden].svelte-1usyivu{display:none}.dock-offline.svelte-1usyivu{color:var(--color-parchment);padding:1.5rem}.dock-offline.svelte-1usyivu h3:where(.svelte-1usyivu){color:var(--color-bone);margin-bottom:.75rem}.dock-offline.svelte-1usyivu p:where(.svelte-1usyivu){margin-bottom:1rem;line-height:1.7}.dock-resizer.svelte-1usyivu{inset-block:0;z-index:2;cursor:col-resize;touch-action:none;place-items:center;width:10px;display:grid;position:absolute;left:-5px}.dock-left.svelte-1usyivu .dock-resizer:where(.svelte-1usyivu){left:auto;right:-5px}.dock-resizer.svelte-1usyivu span:where(.svelte-1usyivu){visibility:hidden}.dock-resizer.svelte-1usyivu:hover,.dock-resizer.svelte-1usyivu:focus-visible{background:color-mix(in srgb, var(--color-rune) 25%, transparent)}.dock-shell.dock-modal.svelte-1usyivu{z-index:30;width:auto;position:absolute;inset:0}.dock-modal.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){background:0 0;border:0;justify-content:flex-end}.dock-modal.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){inset-block-start:.75rem}.dock-modal.dock-collapsed.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){inset-block-start:calc(50% - 1.375rem)}.dock-shell.dock-modal.dock-collapsed.svelte-1usyivu{width:0;left:auto}.dock-shell.dock-modal.dock-left.dock-collapsed.svelte-1usyivu{left:0;right:auto}.dock-modal.dock-left.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){justify-content:flex-start}.dock-modal.svelte-1usyivu:not(.dock-collapsed) .dock-toggle:where(.svelte-1usyivu){right:calc(min(var(--dock-width), 100%) - 2rem)}.dock-modal.dock-left.svelte-1usyivu:not(.dock-collapsed) .dock-toggle:where(.svelte-1usyivu){right:auto;left:calc(min(var(--dock-width), 100%) - 2rem)}.dock-modal.svelte-1usyivu:not(.dock-left) .dock-heading:where(.svelte-1usyivu){padding-left:2.5rem}.dock-modal.dock-left.svelte-1usyivu .dock-heading:where(.svelte-1usyivu){padding-right:2.5rem}.dock-modal.svelte-1usyivu .bridge-dock:where(.svelte-1usyivu){z-index:1;width:min(var(--dock-width), 100%);background:var(--color-obsidian);border:1px solid var(--color-engraving);position:relative}.dock-backdrop.svelte-1usyivu{background:color-mix(in srgb, var(--color-void) 75%, transparent);border:0;border-radius:0;padding:0;position:absolute;inset:0}.circle-run.svelte-bd5msh{border-block:1px solid var(--color-engraving);min-width:0;color:var(--color-parchment);font:.875rem/1.5 var(--font-body);margin:.3rem 0 .75rem}.circle-overview.svelte-bd5msh{flex-wrap:wrap;align-items:center;gap:.15rem .8rem;padding:.35rem 0;display:flex}.circle-toggle.svelte-bd5msh{min-height:2.75rem;color:var(--color-bone);font:inherit;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:.5rem;padding:.25rem .15rem;display:inline-flex}.circle-mark.svelte-bd5msh{border:1px solid;border-radius:50%;width:.8rem;height:.8rem}.circle-chevron.svelte-bd5msh{color:var(--color-parchment);margin-left:.2rem}.circle-status.svelte-bd5msh{overflow-wrap:anywhere;flex-wrap:wrap;flex:9rem;align-items:baseline;gap:.1rem .75rem;min-width:0;display:flex}.circle-status.svelte-bd5msh>span:where(.svelte-bd5msh):first-child{color:var(--color-bone)}.circle-status[data-active=true].svelte-bd5msh>span:where(.svelte-bd5msh):first-child:before{content:"";background:var(--color-lich);border-radius:50%;width:.35rem;height:.35rem;margin:0 .4rem .1rem 0;display:inline-block}.circle-status[data-status=failed].svelte-bd5msh>span:where(.svelte-bd5msh):first-child{color:var(--color-ember)}.circle-actions.svelte-bd5msh{flex-wrap:wrap;align-items:center;gap:.3rem 1rem;margin-left:auto;display:flex}.circle-run.svelte-bd5msh a:where(.svelte-bd5msh){min-height:2.75rem;color:var(--color-rune);text-underline-offset:.2em;align-items:center;gap:.3rem;text-decoration:underline;display:inline-flex}.circle-cancel.svelte-bd5msh{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);min-height:2.75rem;color:var(--color-bone);font:inherit;cursor:pointer;background:0 0;padding:.35rem .75rem}.circle-cancel.svelte-bd5msh:hover:not(:disabled){border-color:var(--color-ember)}.circle-cancel.svelte-bd5msh:disabled{cursor:wait;color:var(--color-parchment)}.circle-identity.svelte-bd5msh{border-top:1px solid var(--color-engraving);padding:.8rem 0}dl.svelte-bd5msh{grid-template-columns:minmax(6.5rem,auto) minmax(0,1fr);gap:.55rem 1.25rem;margin:0;display:grid}dt.svelte-bd5msh{color:var(--color-parchment)}dd.svelte-bd5msh{min-width:0;color:var(--color-bone);overflow-wrap:anywhere;margin:0}code.svelte-bd5msh{color:inherit;font:.875rem/1.5 var(--font-glyph);white-space:normal}.circle-score.svelte-bd5msh{margin-top:.45rem}.circle-unavailable.svelte-bd5msh{color:var(--color-parchment)}p.circle-unavailable.svelte-bd5msh{margin:.65rem 0 0}button.svelte-bd5msh:focus-visible,a.svelte-bd5msh:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}@media (width<=40rem){.circle-status.svelte-bd5msh{flex-basis:8rem}.circle-actions.svelte-bd5msh{flex-basis:100%;justify-content:space-between;margin-left:0}dl.svelte-bd5msh{grid-template-columns:minmax(0,1fr);gap:.2rem}dd.svelte-bd5msh+dt:where(.svelte-bd5msh){margin-top:.65rem}}.altar-welcome.svelte-18m3jog{border:1px solid var(--color-engraving);border-radius:var(--radius-panel);background:var(--color-obsidian);width:100%;max-width:58rem;margin:auto;container-type:inline-size}.altar-welcome__body.svelte-18m3jog{border-radius:inherit;display:grid;overflow:hidden}.altar-welcome__copy.svelte-18m3jog{align-self:center;min-width:0;padding:1.5rem}.altar-welcome__eyebrow.svelte-18m3jog{color:var(--color-rune);font:var(--text-2xs)/1.5 var(--font-glyph);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .75rem}h2.svelte-18m3jog{max-width:15ch;color:var(--color-bone);font:400 1.875rem/1.12 var(--font-rune);letter-spacing:-.02em;text-wrap:balance;margin:0}.altar-welcome__intro.svelte-18m3jog{max-width:35ch;color:var(--color-parchment);font-size:var(--text-sm);margin:.8rem 0 1.125rem;line-height:1.6}.altar-welcome__begin.svelte-18m3jog{border-color:color-mix(in srgb, var(--color-rune) 60%, var(--color-engraving));min-height:2.75rem;color:var(--color-frost);letter-spacing:.035em;justify-content:center;align-items:center;gap:.7rem;padding:.7rem 1.1rem;line-height:1.4;display:inline-flex}.altar-welcome__begin.svelte-18m3jog:disabled{opacity:.65}.altar-welcome__continuity.svelte-18m3jog{border-top:1px solid var(--color-engraving);font-size:var(--text-xs);margin-top:1.25rem;padding-top:.75rem}.altar-welcome__continuity.svelte-18m3jog p:where(.svelte-18m3jog){color:var(--color-parchment);margin:0 0 .25rem;line-height:1.5}.altar-welcome__continuity.svelte-18m3jog a:where(.svelte-18m3jog){min-height:2.25rem;color:var(--color-rune);text-underline-offset:.25em;align-items:center;gap:.45rem;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}.altar-welcome__art.svelte-18m3jog{border-top:1px solid var(--color-engraving);background:var(--color-void);height:60cqw;overflow:hidden}.altar-welcome__art.svelte-18m3jog img:where(.svelte-18m3jog){object-fit:cover;object-position:40% center;width:100%;height:100%}@container (width>=36rem){.altar-welcome__body.svelte-18m3jog{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)}.altar-welcome__copy.svelte-18m3jog{padding:1.5rem}h2.svelte-18m3jog{font-size:2.125rem}.altar-welcome__art.svelte-18m3jog{border-top:0;border-left:1px solid var(--color-engraving);height:auto;min-height:22rem}.altar-welcome__art.svelte-18m3jog img:where(.svelte-18m3jog){object-position:38% center}}@media (forced-colors:active){.altar-welcome.svelte-18m3jog,.altar-welcome__begin.svelte-18m3jog,.altar-welcome__continuity.svelte-18m3jog,.altar-welcome__art.svelte-18m3jog{border-color:canvastext}}.naming.svelte-1hrz4g{border:1px solid var(--color-engraving);border-radius:var(--radius-panel);background:var(--color-obsidian);max-height:65dvh;color:var(--color-parchment);font-size:var(--text-sm);margin:.75rem;padding:1.1rem;overflow:auto}header.svelte-1hrz4g{justify-content:space-between;align-items:start;gap:1rem;display:flex}.eyebrow.svelte-1hrz4g{color:var(--color-rune);font-size:var(--text-xs);margin:0 0 .3rem}h2.svelte-1hrz4g,h3.svelte-1hrz4g{color:var(--color-bone);margin:0}p.svelte-1hrz4g{line-height:1.55}fieldset.svelte-1hrz4g{border:0;gap:.6rem;min-width:0;margin:1rem 0;padding:0;display:grid}label.svelte-1hrz4g{color:var(--color-bone);margin-top:.6rem}.method.svelte-1hrz4g,.hint.svelte-1hrz4g{color:var(--color-ash);font-size:var(--text-xs)}input.svelte-1hrz4g,select.svelte-1hrz4g,textarea.svelte-1hrz4g{box-sizing:border-box;width:100%;color:var(--color-bone);background:var(--color-void);border:1px solid var(--color-engraving);border-radius:var(--radius-rune);font:inherit;padding:.65rem}textarea.svelte-1hrz4g{resize:vertical}.rune-btn.svelte-1hrz4g{white-space:normal;justify-self:start;min-height:2.75rem;padding:.6rem .8rem}.actions.svelte-1hrz4g,.suggestions.svelte-1hrz4g{flex-wrap:wrap;gap:.5rem;display:flex}.assistance.svelte-1hrz4g,.review.svelte-1hrz4g{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);padding:.8rem}summary.svelte-1hrz4g{cursor:pointer;min-height:2rem;color:var(--color-bone)}.fault.svelte-1hrz4g{color:var(--color-bone);border-inline-start:3px solid var(--color-rune);padding-inline-start:.7rem}.svelte-1hrz4g:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}button.svelte-1hrz4g:disabled{opacity:.65}.voice-input.svelte-1bk1ujp{min-width:0;color:var(--color-parchment);font:var(--text-sm)/1.5 var(--font-body);margin:0}.voice-toolbar.svelte-1bk1ujp{min-width:0;min-height:2.75rem;flex-wrap:wrap;align-items:flex-start;gap:.15rem .5rem;padding-inline-end:var(--voice-action-reserve,0px);display:flex}.voice-row.svelte-1bk1ujp{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;min-width:0;display:flex}.voice-settings.svelte-1bk1ujp{flex:auto;min-width:0}.voice-settings[open].svelte-1bk1ujp{flex-basis:100%}.voice-mic-label.svelte-1bk1ujp{display:var(--voice-label-display,inline)}.voice-status-row.svelte-1bk1ujp{flex-wrap:wrap;align-items:center;gap:.15rem .5rem;min-width:0;margin-top:.2rem;display:flex}.voice-status.svelte-1bk1ujp{min-width:0;color:var(--color-ash);flex:7rem;margin:0}.voice-status-row.svelte-1bk1ujp button:where(.svelte-1bk1ujp){font-size:var(--text-xs);flex:none}p.svelte-1bk1ujp{overflow-wrap:anywhere;margin:.4rem 0 0;line-height:1.6}button.svelte-1bk1ujp,select.svelte-1bk1ujp{min-height:2.75rem;color:var(--color-bone);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);background:var(--color-obsidian);font:inherit;padding:.4rem .65rem}button.svelte-1bk1ujp{cursor:pointer}button.svelte-1bk1ujp:hover:not(:disabled){border-color:var(--color-rune);background:var(--color-obsidian-2)}button.svelte-1bk1ujp:disabled{opacity:.55;cursor:default}.mic.svelte-1bk1ujp{background:0 0;border-color:#0000;justify-content:center;align-items:center;gap:.5rem;min-width:2.75rem;padding-inline:.35rem;display:inline-flex}.mic.svelte-1bk1ujp svg:where(.svelte-1bk1ujp){flex:none}summary.svelte-1bk1ujp{cursor:pointer;min-height:2.75rem;color:var(--color-parchment);align-content:center;padding-block:.4rem}.voice-options.svelte-1bk1ujp{box-sizing:border-box;width:calc(100% + var(--voice-action-reserve,0px));overscroll-behavior:contain;scrollbar-gutter:stable;border-top:1px solid var(--color-engraving);gap:.5rem;min-width:0;max-height:min(22rem,42dvh);margin-top:.35rem;padding:.75rem 0 .25rem;display:grid;overflow:auto}label.svelte-1bk1ujp{line-height:1.5;display:block}.check.svelte-1bk1ujp{align-items:flex-start;gap:.6rem;min-height:2.75rem;padding-block:.5rem;display:flex}.check.svelte-1bk1ujp input:where(.svelte-1bk1ujp){flex:none;margin-top:.15rem}textarea.svelte-1bk1ujp{resize:vertical;width:100%;min-height:3rem;max-height:12rem;color:var(--color-bone);background:var(--color-obsidian-2);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);font:inherit;padding:.6rem;line-height:1.6;display:block}select.svelte-1bk1ujp{background:var(--color-obsidian-2);width:100%}.countdown.svelte-1bk1ujp{border-left:2px solid var(--color-rune);margin-top:.5rem;padding-left:.65rem}.countdown.svelte-1bk1ujp p:where(.svelte-1bk1ujp){color:var(--color-bone);margin:0}button.svelte-1bk1ujp:focus-visible,select.svelte-1bk1ujp:focus-visible,input.svelte-1bk1ujp:focus-visible,textarea.svelte-1bk1ujp:focus-visible,summary.svelte-1bk1ujp:focus-visible,.voice-options.svelte-1bk1ujp:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.dictation-feedback.svelte-bhmuum{min-width:0;font:var(--text-sm)/1.6 var(--font-body);color:var(--color-parchment)}details.svelte-bhmuum{border-top:1px solid var(--color-engraving);min-width:0}summary.svelte-bhmuum{min-height:2.75rem;color:var(--color-bone);cursor:pointer;overflow-wrap:anywhere;align-content:center;padding-block:.45rem}p.svelte-bhmuum{overflow-wrap:anywhere;margin:.6rem 0;line-height:1.6}label.svelte-bhmuum{color:var(--color-parchment);margin-block:.5rem .35rem;display:block}fieldset.svelte-bhmuum{border:0;border-radius:0;min-width:0;margin:.75rem 0;padding:0}legend.svelte-bhmuum{color:var(--color-bone);margin-bottom:.25rem;padding:0;font-weight:600}input.svelte-bhmuum:not([type=checkbox]),textarea.svelte-bhmuum{box-sizing:border-box;width:100%;min-width:0;min-height:2.75rem;font:inherit;color:var(--color-bone);background:var(--color-obsidian-2);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);padding:.6rem;display:block}textarea.svelte-bhmuum{resize:vertical;max-height:12rem}.check.svelte-bhmuum{align-items:flex-start;gap:.6rem;min-height:2.75rem;padding-block:.4rem;display:flex}.check.svelte-bhmuum input:where(.svelte-bhmuum){flex:none;margin-top:.3rem}button.svelte-bhmuum{max-width:100%;min-height:2.75rem;font:inherit;overflow-wrap:anywhere;color:var(--color-bone);background:var(--color-obsidian);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);cursor:pointer;margin:.25rem .35rem .25rem 0;padding:.45rem .7rem}button.svelte-bhmuum:hover:not(:disabled){border-color:var(--color-rune);background:var(--color-obsidian-2)}button[type=submit].svelte-bhmuum{background:var(--color-bone);border-color:var(--color-bone);color:var(--color-void)}button[type=submit].svelte-bhmuum:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}button.svelte-bhmuum:disabled{opacity:.55;cursor:default}.bounded.svelte-bhmuum{overflow-wrap:anywhere;scrollbar-gutter:stable;max-height:20rem;padding:.25rem .35rem .25rem 1.3rem;overflow-y:auto}.records.svelte-bhmuum{padding-left:0;list-style:none}.records.svelte-bhmuum>li:where(.svelte-bhmuum){border-bottom:1px solid var(--color-engraving);padding-block:.85rem}dl.svelte-bhmuum{margin:.6rem 0}dt.svelte-bhmuum{color:var(--color-bone);font-weight:600}dd.svelte-bhmuum{white-space:pre-wrap;overflow-wrap:anywhere;max-height:10rem;margin:.25rem 0 1rem;overflow-y:auto}span.svelte-bhmuum{white-space:pre-wrap}button.svelte-bhmuum:focus-visible,input.svelte-bhmuum:focus-visible,textarea.svelte-bhmuum:focus-visible,summary.svelte-bhmuum:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.instrument-deck--bridge.svelte-1xg67vw{background:var(--color-void);grid-template-columns:17rem minmax(0,1fr);gap:0;height:100%;min-height:0;padding:0;display:grid;overflow:hidden}.instrument-deck--welcome.svelte-1xg67vw{grid-template-columns:minmax(0,1fr)}.bridge-rail.svelte-1xg67vw{border-right:1px solid var(--color-engraving);background:var(--color-obsidian);width:auto;min-width:0;padding:1.25rem .85rem;overflow-y:auto}.conversation-list.svelte-1xg67vw{width:100%}.conversation-list.svelte-1xg67vw>summary:where(.svelte-1xg67vw){min-height:2.75rem;color:var(--color-bone);font:600 var(--text-sm)/1.5 var(--font-body);cursor:pointer;margin-bottom:.65rem}.conversation-list.svelte-1xg67vw nav:where(.svelte-1xg67vw){flex-direction:column;gap:.15rem;margin-top:1rem;display:flex}.archive-label.svelte-1xg67vw{font:600 var(--text-xs)/1.4 var(--font-body);color:var(--color-parchment);margin:1.25rem .5rem .35rem}.archive-order.svelte-1xg67vw,.rail-empty.svelte-1xg67vw{color:var(--color-ash);font-size:var(--text-xs);line-height:1.6}.archive-order.svelte-1xg67vw{margin:0 .5rem .5rem}.conversation-row.svelte-1xg67vw{grid-template-columns:minmax(0,1fr) 2.75rem;align-items:center;gap:.15rem;display:grid}.pin-conversation.svelte-1xg67vw{border-radius:var(--radius-glyph);min-height:2.75rem;color:var(--color-ash);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.pin-conversation.svelte-1xg67vw:hover{color:var(--color-bone);background:var(--color-obsidian-2)}.pin-conversation[aria-pressed=true].svelte-1xg67vw{color:var(--color-accent)}.new-seance.svelte-1xg67vw{width:100%;min-height:2.75rem;box-shadow:none;background:var(--color-bone);border-color:var(--color-bone);color:var(--color-void)}.new-seance.svelte-1xg67vw:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}.seance.svelte-1xg67vw{border-radius:var(--radius-glyph);overflow-wrap:anywhere;border:0;border-left:2px solid #0000;min-width:0;min-height:2.75rem;padding:.7rem .65rem}.seance.svelte-1xg67vw:hover{background:var(--color-obsidian-2)}.seance.current.svelte-1xg67vw{border:0;border-left:2px solid var(--color-rune);background:var(--color-obsidian-2);box-shadow:none}.seance.svelte-1xg67vw .t:where(.svelte-1xg67vw){font-size:var(--text-sm);color:var(--color-bone);margin-bottom:.15rem;line-height:1.5}.seance.svelte-1xg67vw .m:where(.svelte-1xg67vw){font-family:var(--font-body)}.seance.svelte-1xg67vw .chip:where(.svelte-1xg67vw){color:var(--color-parchment);font-size:var(--text-xs);white-space:normal;background:0 0;border:0;border-radius:0;margin:.2rem .45rem .2rem 0;padding:0;display:inline}.bridge-thread.svelte-1xg67vw{min-height:0;overflow:hidden}.bridge-heading.svelte-1xg67vw{border-bottom:1px solid var(--color-engraving);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.25rem 1rem;padding:.8rem clamp(1rem,3vw,2rem) .35rem;display:grid}.bridge-heading.svelte-1xg67vw>div:where(.svelte-1xg67vw){min-width:0}.bridge-heading.svelte-1xg67vw h1:where(.svelte-1xg67vw){color:var(--color-ash);font:600 var(--text-xs)/1.5 var(--font-body);letter-spacing:.06em;text-transform:uppercase}.conversation-title.svelte-1xg67vw{color:var(--color-bone);font:600 clamp(1.125rem, 1.5vw, 1.4rem)/1.4 var(--font-body);overflow-wrap:anywhere;margin-top:.45rem}.conversation-attention.svelte-1xg67vw{font-size:var(--text-sm);color:var(--color-bone);margin-top:.25rem;line-height:1.5}.conversation-tools.svelte-1xg67vw{min-width:0;font-size:var(--text-sm)}.conversation-tools.svelte-1xg67vw>summary:where(.svelte-1xg67vw){min-width:2.75rem;min-height:2.75rem;color:var(--color-parchment);cursor:pointer;align-content:center}.conversation-tools[open].svelte-1xg67vw{grid-column:1/-1}.seance-details.svelte-1xg67vw{min-width:0;font-size:var(--text-sm)}.seance-details.svelte-1xg67vw summary:where(.svelte-1xg67vw){white-space:nowrap;cursor:pointer;align-content:center;min-height:2.75rem;display:list-item}.seance-details.svelte-1xg67vw .chip:where(.svelte-1xg67vw){white-space:normal;margin-left:.5rem}.seance-details.svelte-1xg67vw .kv:where(.svelte-1xg67vw){background:0 0;border:0;border-radius:0;width:100%;padding:.75rem 0;position:static}.bridge-tools.svelte-1xg67vw{overscroll-behavior:contain;border-top:1px solid var(--color-engraving);max-height:min(20rem,40dvh);font-size:var(--text-sm);flex-wrap:wrap;flex:none;align-items:flex-start;gap:0 1rem;padding:.25rem 0 0;display:flex;overflow-y:auto}.bridge-tools.svelte-1xg67vw>details:where(.svelte-1xg67vw){background:0 0;border:0;min-width:0;padding:0}.bridge-tools.svelte-1xg67vw>details[open]:where(.svelte-1xg67vw){flex-basis:100%}.bridge-tools.svelte-1xg67vw summary:where(.svelte-1xg67vw){cursor:pointer;min-height:2.75rem;color:var(--color-parchment);align-content:center}.thread-scroll.svelte-1xg67vw{scrollbar-gutter:stable;gap:1.75rem;min-height:4rem;padding:1.5rem max(1rem,50% - 24rem)}.thread-scroll.svelte-1xg67vw:focus-visible{outline:1px solid var(--color-rune);outline-offset:-3px}.turn.svelte-1xg67vw{overflow-wrap:anywhere;max-width:100%}.turn--user.svelte-1xg67vw{max-width:min(42rem,92%)}.turn--user.svelte-1xg67vw .turn__meta:where(.svelte-1xg67vw){justify-content:flex-end}.turn__body.svelte-1xg67vw{white-space:pre-wrap;box-shadow:none;font-size:1rem;line-height:1.75}.turn--user.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){background:var(--color-obsidian-2);border:1px solid var(--color-engraving);border-radius:var(--radius-panel);padding:.85rem 1rem}.turn--agent.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){color:var(--color-bone);background:0 0;border:0;border-radius:0;padding:.25rem 0}.turn--agent[data-state=stale].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-control-border);padding-left:.85rem}.turn--agent[data-state=failed].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-ember);padding-left:.85rem}.turn--agent[data-state=cancelled].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-ash);padding-left:.85rem}.turn__meta.svelte-1xg67vw{flex-wrap:wrap;gap:.4rem .75rem}.turn__meta.svelte-1xg67vw .who:where(.svelte-1xg67vw){color:var(--color-parchment);font:600 var(--text-sm)/1.5 var(--font-body);font-variant:normal;letter-spacing:0}.conversation-empty.svelte-1xg67vw{text-align:center;margin:auto;padding:3rem 1rem}.conversation-empty.svelte-1xg67vw>span:where(.svelte-1xg67vw){color:var(--color-accent);font-size:1.6rem}.conversation-empty.svelte-1xg67vw h2:where(.svelte-1xg67vw){font:500 1.65rem/1.3 var(--font-body);color:var(--color-bone);margin:1rem 0 .7rem}.conversation-empty.svelte-1xg67vw p:where(.svelte-1xg67vw),.bridge-loading.svelte-1xg67vw{color:var(--color-parchment)}.retry-conversation.svelte-1xg67vw{align-self:flex-start;min-height:2.75rem}.latest-turn.svelte-1xg67vw{justify-content:center;padding:.25rem 1rem .5rem;display:flex}.latest-turn.svelte-1xg67vw button:where(.svelte-1xg67vw){border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);min-height:2.75rem;color:var(--color-rune);background:var(--color-obsidian);cursor:pointer;padding:.4rem 1rem}.composer-area.svelte-1xg67vw{overscroll-behavior:contain;border-top:1px solid var(--color-engraving);flex:0 auto;min-height:0;max-height:min(36rem,65dvh);padding:.8rem clamp(1rem,3vw,2rem) 1rem;overflow-y:auto}.composer-area.svelte-1xg67vw:focus-visible{outline:2px solid var(--color-rune);outline-offset:-2px}.composer-shell.svelte-1xg67vw{border:1px solid var(--color-control-border);border-radius:var(--radius-panel);background:var(--color-obsidian);max-width:52rem;margin-inline:auto;padding:.65rem .85rem .75rem}.composer-shell.svelte-1xg67vw:focus-within{border-color:var(--color-rune)}.composer-destination.svelte-1xg67vw{min-width:0;font-size:var(--text-sm);align-items:center;gap:.75rem;margin-bottom:.55rem;display:flex}.composer-destination.svelte-1xg67vw label:where(.svelte-1xg67vw){color:var(--color-parchment);flex:none}#bridge-destination.svelte-1xg67vw{width:auto;min-width:0;max-width:28rem;min-height:2.75rem;color:var(--color-bone);font:inherit;background:0 0;border:0;border-radius:0;flex:auto;margin:0;padding:.4rem .25rem}.command-help.svelte-1xg67vw,.command-result.svelte-1xg67vw{font-size:var(--text-sm);overflow-wrap:anywhere;line-height:1.6}.command-help.svelte-1xg67vw{border-bottom:1px solid var(--color-engraving);margin:0 0 .75rem;padding:0 0 .75rem}.command-help.svelte-1xg67vw p:where(.svelte-1xg67vw)+p:where(.svelte-1xg67vw){margin-top:.35rem}.command-help.svelte-1xg67vw summary:where(.svelte-1xg67vw){cursor:pointer;align-content:center;min-height:2.75rem}.command-help.svelte-1xg67vw ul:where(.svelte-1xg67vw){padding-left:1.4rem}.command-help.svelte-1xg67vw code:where(.svelte-1xg67vw){white-space:pre-wrap;overflow-wrap:anywhere}.command-result.svelte-1xg67vw{color:var(--color-parchment);margin:.65rem 0 0}.composer-label.svelte-1xg67vw{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.composer-instructions.svelte-1xg67vw{color:var(--color-parchment);font-size:var(--text-sm);white-space:pre-wrap;overflow-wrap:anywhere;margin:.25rem 0 .75rem;line-height:1.6}.composer.svelte-1xg67vw{box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0;display:flex}.composer.svelte-1xg67vw:focus-within{box-shadow:none;border:0}.composer.svelte-1xg67vw textarea:where(.svelte-1xg67vw){resize:vertical;background:0 0;width:100%;min-width:0;min-height:3rem;max-height:16rem;padding:0;font-size:1rem;line-height:1.5;display:block}.composer-actions.svelte-1xg67vw{--voice-action-reserve:6rem;border-top:1px solid var(--color-engraving);padding-top:.35rem;position:relative}.composer-actions--work.svelte-1xg67vw{--voice-action-reserve:9rem}.composer-voice.svelte-1xg67vw{min-width:0}.composer-send.svelte-1xg67vw{border-color:var(--color-bone);background:var(--color-bone);min-width:5rem;min-height:2.75rem;color:var(--color-void);box-shadow:none;margin:0;padding:.5rem 1rem;position:absolute;inset-block-start:.35rem;inset-inline-end:0}.composer-send.svelte-1xg67vw:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}.composer-send.svelte-1xg67vw:disabled{opacity:.5}.composer-footer.svelte-1xg67vw{max-width:52rem;color:var(--color-ash);font-size:var(--text-xs);flex-wrap:wrap;justify-content:space-between;gap:.3rem 1.5rem;margin:.35rem auto 0;line-height:1.6;display:flex}.composer-footer.svelte-1xg67vw p:where(.svelte-1xg67vw){max-width:38rem}.offering-recovery.svelte-1xg67vw{border:0;border-left:2px solid var(--color-rune);background:var(--color-obsidian);overscroll-behavior:contain;border-radius:0;flex:0 auto;min-height:4rem;max-height:min(22rem,45dvh);margin:.75rem 1rem;padding:.8rem 1rem;overflow-y:auto}.offering-recovery.svelte-1xg67vw p:where(.svelte-1xg67vw){color:var(--color-parchment);margin:.5rem 0;line-height:1.6}.offering-recovery.svelte-1xg67vw .offering-recovery__text:where(.svelte-1xg67vw){color:var(--color-bone);white-space:pre-wrap;overflow-wrap:anywhere;max-height:12rem;overflow:auto}.offering-recovery.svelte-1xg67vw .rune-btn:where(.svelte-1xg67vw){min-height:2.75rem;margin:.25rem .35rem .25rem 0}.atlas-links.svelte-1xg67vw{color:var(--color-parchment);font-size:var(--text-sm);flex-wrap:wrap;align-items:center;gap:.35rem 1rem;padding:.5rem clamp(1rem,3vw,2rem);display:flex}.atlas-links.svelte-1xg67vw a:where(.svelte-1xg67vw){color:var(--color-rune);align-items:center;min-height:2.75rem;display:inline-flex}.public-sources.svelte-1xg67vw .atlas-links:where(.svelte-1xg67vw){padding:0 0 .35rem}.turn.svelte-1xg67vw:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}.bridge-embedded.svelte-1xg67vw{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100%;overflow:hidden}.bridge-embedded.instrument-deck--welcome.svelte-1xg67vw{grid-template-rows:minmax(0,1fr)}.bridge-embedded.svelte-1xg67vw .bridge-rail:where(.svelte-1xg67vw){background:0 0;border:0;max-height:min(18rem,35dvh);padding:0 .95rem;overflow:auto}.bridge-embedded.svelte-1xg67vw .conversation-list:where(.svelte-1xg67vw)>summary:where(.svelte-1xg67vw){margin:0;font-weight:500}.bridge-embedded.svelte-1xg67vw .conversation-list:where(.svelte-1xg67vw) nav:where(.svelte-1xg67vw){margin-top:.25rem;padding-bottom:.75rem}.bridge-embedded.svelte-1xg67vw .bridge-heading:where(.svelte-1xg67vw){gap:.15rem .5rem;padding:.2rem .95rem}.bridge-embedded.svelte-1xg67vw .bridge-heading:where(.svelte-1xg67vw) h1:where(.svelte-1xg67vw){display:none}.bridge-embedded.svelte-1xg67vw .conversation-title:where(.svelte-1xg67vw){font:600 var(--text-base)/1.5 var(--font-body);margin:0}.bridge-embedded.svelte-1xg67vw .seance-details:where(.svelte-1xg67vw){font-size:var(--text-xs)}.bridge-embedded.svelte-1xg67vw .seance-details[open]:where(.svelte-1xg67vw){width:100%}.bridge-embedded.svelte-1xg67vw .seance-details:where(.svelte-1xg67vw) .kv:where(.svelte-1xg67vw){width:100%;position:static}.bridge-embedded.svelte-1xg67vw .bridge-tools:where(.svelte-1xg67vw){font-size:var(--text-xs);gap:0 1rem;padding:.25rem 0 0}.bridge-embedded.svelte-1xg67vw .atlas-links:where(.svelte-1xg67vw){gap:.25rem .75rem;padding:.25rem .95rem}.bridge-embedded.svelte-1xg67vw .public-sources:where(.svelte-1xg67vw) .atlas-links:where(.svelte-1xg67vw){padding-inline:0}.bridge-embedded.svelte-1xg67vw .thread-scroll:where(.svelte-1xg67vw){flex:1;gap:1.5rem;min-height:4rem;padding:1rem .95rem}.bridge-embedded.svelte-1xg67vw .composer-area:where(.svelte-1xg67vw){padding:.4rem .65rem .45rem}.bridge-embedded.svelte-1xg67vw .composer-shell:where(.svelte-1xg67vw){padding:.3rem .6rem .4rem}.bridge-embedded.svelte-1xg67vw .composer:where(.svelte-1xg67vw) textarea:where(.svelte-1xg67vw){min-height:3rem}.bridge-embedded.svelte-1xg67vw .composer-destination:where(.svelte-1xg67vw){gap:.5rem;margin-bottom:.1rem}.bridge-embedded.svelte-1xg67vw .composer-voice:where(.svelte-1xg67vw){--voice-label-display:none}.bridge-embedded.svelte-1xg67vw .composer-send:where(.svelte-1xg67vw){min-width:4.5rem;padding-inline:.75rem}.bridge-embedded.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){font-size:var(--text-base);line-height:1.7}@media (width<=48rem){.instrument-deck--bridge.svelte-1xg67vw{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.bridge-rail.svelte-1xg67vw{border-right:0;border-bottom:1px solid var(--color-engraving);max-height:35dvh;padding:0 .95rem;display:block;overflow:auto}.conversation-list.svelte-1xg67vw>summary:where(.svelte-1xg67vw){margin:0}.conversation-list.svelte-1xg67vw nav:where(.svelte-1xg67vw){max-height:12rem;margin-top:.5rem;padding-bottom:.75rem;overflow-y:auto}.bridge-heading.svelte-1xg67vw{gap:.25rem .5rem;padding:.25rem .95rem}.conversation-title.svelte-1xg67vw{font-size:var(--text-base);margin-top:.25rem}.seance-details.svelte-1xg67vw{font-size:var(--text-xs)}.seance-details.svelte-1xg67vw summary:where(.svelte-1xg67vw){white-space:normal}.seance-details.svelte-1xg67vw .kv:where(.svelte-1xg67vw){grid-template-columns:minmax(0,.7fr) minmax(0,1fr);width:100%;position:static}.bridge-tools.svelte-1xg67vw{font-size:var(--text-xs);padding-inline:0}.thread-scroll.svelte-1xg67vw{padding:1rem .95rem}.composer-area.svelte-1xg67vw{padding:.4rem .65rem .45rem}.composer-shell.svelte-1xg67vw{padding:.3rem .6rem .4rem}.composer.svelte-1xg67vw textarea:where(.svelte-1xg67vw){min-height:3rem}.composer-destination.svelte-1xg67vw{gap:.5rem;margin-bottom:.1rem}.composer-voice.svelte-1xg67vw{--voice-label-display:none}.composer-send.svelte-1xg67vw{min-width:4.5rem;padding-inline:.75rem}.composer-footer.svelte-1xg67vw{gap:.2rem .5rem}.turn--user.svelte-1xg67vw{max-width:95%}}.topbar.svelte-8jjqr2{background:var(--color-obsidian);border:0;border-bottom:1px solid var(--color-engraving);height:auto;min-height:4rem;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;z-index:40;border-image:;flex-wrap:wrap;flex:none;gap:.75rem;padding:.5rem 1.25rem;position:relative}.brand.svelte-8jjqr2{justify-content:center;width:3rem;min-height:3rem;padding:.125rem}.brand.svelte-8jjqr2:hover{background:var(--color-tertiary)}.altar-product.svelte-8jjqr2{color:var(--color-parchment);font-size:var(--text-sm);margin-top:.35rem}nav.instruments.svelte-8jjqr2{align-self:center;gap:.25rem;height:auto;margin-left:.5rem}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2){letter-spacing:0;text-transform:none;color:var(--color-ash);border-radius:var(--radius-rune);border:1px solid #0000;gap:.6rem;min-height:2.75rem;padding:.65rem .85rem}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2) svg,.application-menu.svelte-8jjqr2 svg{color:currentColor;flex:none}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2):hover{color:var(--color-bone);background:var(--color-obsidian-2)}nav.instruments.svelte-8jjqr2 a[aria-current=page]:where(.svelte-8jjqr2){color:var(--color-accent);text-shadow:none;border-color:color-mix(in srgb,var(--color-accent) 25%,var(--color-engraving));background:color-mix(in srgb,var(--color-accent) 10%,var(--color-obsidian))}.topbar.svelte-8jjqr2 .spacer:where(.svelte-8jjqr2){flex:1 1 0}.sigil.svelte-8jjqr2{border-radius:var(--radius-rune);box-shadow:none;border-color:#0000;padding:.55rem .7rem;animation:none}.sigil-identity.svelte-8jjqr2{display:none}.offline-status.svelte-8jjqr2{color:var(--color-ash);font-size:var(--text-xs)}.application-menu.svelte-8jjqr2{flex-shrink:0;align-self:center;position:relative}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2){border-radius:var(--radius-rune);min-height:2.75rem;color:var(--color-ash);cursor:pointer;font-size:var(--text-xs);align-items:center;gap:.5rem;padding:.5rem .65rem;list-style:none;display:flex}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2):hover{color:var(--color-bone);background:var(--color-obsidian-2)}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2)::-webkit-details-marker{display:none}.application-menu.svelte-8jjqr2 nav:where(.svelte-8jjqr2){z-index:50;background:var(--color-tertiary);border:1px solid var(--color-tertiary-edge);border-radius:var(--radius-glyph);min-width:14rem;padding:.35rem;position:absolute;inset-block-start:100%;inset-inline-start:-.5rem}.application-menu.svelte-8jjqr2 a:where(.svelte-8jjqr2){min-height:2.75rem;font-size:var(--text-sm);color:var(--color-bone);align-items:center;gap:.75rem;padding:.65rem;text-decoration:none;display:flex}.application-menu.svelte-8jjqr2 a:where(.svelte-8jjqr2):hover,.application-menu.svelte-8jjqr2 a[aria-current=page]:where(.svelte-8jjqr2){background:color-mix(in srgb, var(--color-rune) 10%, var(--color-tertiary))}.altar-workbench.svelte-8jjqr2{background:var(--color-void);flex:none;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}#altar-main.svelte-8jjqr2{background:var(--color-void);flex:1 1 0;min-width:0;min-height:0;overflow:auto;container:work-area/inline-size}#altar-main.svelte-8jjqr2:before,#altar-main.svelte-8jjqr2:after,main[hidden].svelte-8jjqr2{display:none}.svelte-8jjqr2:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}@media (width<=75rem){.topbar.svelte-8jjqr2{gap:.65rem;padding-inline:.75rem}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2){gap:.4rem;padding-inline:.5rem}.offline-status.svelte-8jjqr2{display:none}}@media (width<=56rem){.topbar.svelte-8jjqr2{grid-template-columns:3rem minmax(0,1fr) auto;gap:.25rem .5rem;padding:.25rem .5rem .5rem;display:grid}.altar-about.svelte-8jjqr2{grid-area:1/1}nav.instruments.svelte-8jjqr2{grid-area:2/1/auto/-1;justify-content:center;width:100%;margin:0}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2){flex:1;justify-content:center;min-height:2.75rem}.topbar.svelte-8jjqr2 .spacer:where(.svelte-8jjqr2){display:none}.application-menu.svelte-8jjqr2{grid-area:1/2;margin:0}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2){min-height:2.75rem;font-size:var(--text-xs);gap:.4rem}.application-menu.svelte-8jjqr2 nav:where(.svelte-8jjqr2){inset-inline:0 auto}.sigil.svelte-8jjqr2{max-width:100%;font-size:var(--text-xs);white-space:normal;grid-area:1/3;margin:0;line-height:1.3}}@media (width<=36rem){nav.instruments.svelte-8jjqr2{gap:0}nav.instruments.svelte-8jjqr2 a:where(.svelte-8jjqr2){font-size:var(--text-xs);flex-direction:column;gap:.2rem;padding:.4rem .2rem}} +@layer reset{*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;min-height:100%}body,h1,h2,h3,h4,p,pre,dl,dd,ol,ul{margin:0}ol,ul{padding:0;list-style:none}button,input,textarea,select{font:inherit;color:inherit;margin:0}button{text-transform:none}img,picture,video,canvas,svg{max-width:100%;display:block}}@layer base{body{background:var(--color-void);color:var(--color-parchment);font:var(--text-base)/1.55 var(--font-body);background-attachment:fixed;flex-direction:column;min-height:100vh;display:flex}a,a:visited{color:var(--color-rune);text-underline-offset:.2em}button:not([class]){border:1px solid var(--color-control-border);border-radius:var(--radius-rune);background:var(--color-obsidian-2);min-height:2.5rem;color:var(--color-bone);font-size:var(--text-sm);cursor:pointer;align-self:start;padding:.45rem .75rem}button:not([class]):hover{border-color:var(--color-rune)}button:not([class]):disabled{opacity:.5;cursor:default}select,input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea{background:var(--color-obsidian-2);color:var(--color-bone);accent-color:var(--color-rune)}::selection{background:color-mix(in srgb, var(--color-rune) 40%, transparent);color:var(--color-bone)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--color-engraving);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--color-rune-dim)}:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px;box-shadow:var(--shadow-glow-rune)}}@layer components{.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;border:1px solid var(--color-rune);border-radius:var(--radius-rune);background:var(--color-void);color:var(--color-bone);padding:.6rem .9rem;position:fixed;top:.5rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.eyebrow,.instrument-kicker{color:var(--color-ash);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;display:block}.instrument-title{font-size:var(--text-xl)}.instrument-header{justify-content:space-between;align-items:flex-start;gap:1rem;padding:.35rem .2rem .5rem;display:flex}.instrument-header h1{font-size:var(--text-3xl);margin-top:.2rem}.instrument-header p{max-width:48rem;color:var(--color-ash)}.instrument-header time{color:var(--color-frost);font:var(--text-xs)/1.4 var(--font-glyph)}.inspector-copy{color:var(--color-ash);font-size:var(--text-sm);padding:.85rem 1rem}.inspector-link,.settled-evidence{color:var(--color-rune);font-size:var(--text-xs);text-decoration:none;display:inline-block}.inspector-link{margin:0 1rem 1rem}.settled-evidence{margin-top:.35rem}.text-action{color:var(--color-rune);cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;border-bottom:1px dotted;margin-left:auto}.run-sigil{border-left:2px solid var(--color-rune);background:color-mix(in srgb, var(--color-rune) 5%, transparent);color:var(--color-ash);font:var(--text-xs)/1.4 var(--font-glyph);flex-wrap:wrap;align-items:center;gap:.5rem .8rem;margin-top:.45rem;padding:.45rem .7rem;display:flex}.run-sigil__id{color:var(--color-bone)}.run-sigil a{color:var(--color-rune);text-decoration:none}.run-stop{border:1px solid var(--color-engraving);width:1.6rem;height:1.6rem;color:var(--color-ember);cursor:pointer;background:0 0;border-radius:3px;place-items:center;margin-left:auto;display:inline-grid}.run-stop:disabled{opacity:.45;cursor:wait}.body-crossing{border:1px solid color-mix(in srgb, var(--color-frost) 40%, var(--color-engraving));border-radius:var(--radius-block);background:color-mix(in srgb, var(--color-frost) 6%, var(--color-obsidian));color:var(--color-frost);font-size:var(--text-xs);grid-template-columns:auto 1fr;align-items:center;gap:.65rem;margin-top:.45rem;padding:.65rem .75rem;display:grid}.body-crossing__title{font-family:var(--font-body);font-variant:normal;letter-spacing:normal}.delegate-mark{width:1.1em;color:var(--color-rune);font-family:var(--font-glyph);filter:none;place-items:center;display:inline-grid}.delegate-crossing{border-color:color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));background:var(--color-obsidian);border-left-width:3px}.delegate-crossing[data-state=running]{color:var(--color-lich)}.delegate-crossing[data-state=failed],.delegate-crossing[data-state=cancelled],.delegate-crossing[data-state=timed_out],.delegate-crossing[data-state=lost]{color:var(--color-ember)}.loom-rail nav{flex-direction:column;gap:.35rem;display:flex}.pattern[aria-current=page]{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));box-shadow:inset 2px 0 var(--color-rune)}.loom-canvas{grid-template-columns:minmax(0,1fr) minmax(18rem,23rem);align-content:start;gap:.85rem;display:grid}.pattern-identity{grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.65rem .2rem .4rem;display:flex}.pattern-identity h2{color:var(--color-bone);font:600 var(--text-3xl)/1.2 var(--font-body);margin-top:.2rem}.pattern-identity p{max-width:46rem;color:var(--color-ash)}.pattern-identity .pattern-entry{color:var(--color-parchment);font-size:var(--text-sm);margin-top:.65rem}.pattern-entry code{color:var(--color-frost);margin-left:.4rem}.identity-seal{border:1px solid color-mix(in srgb, var(--color-rune) 45%, var(--color-engraving));border-radius:var(--radius-block);min-width:max-content;color:var(--color-rune);font:var(--text-xs)/1.5 var(--font-glyph);padding:.65rem .8rem}.identity-seal strong,.identity-seal span{display:block}.identity-seal span{color:var(--color-ash);text-transform:uppercase}.pattern-score{align-self:start;min-width:0}.score-count{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.station-list{padding:.35rem 0}.station{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);grid-template-columns:2.4rem minmax(9rem,1fr) auto minmax(8rem,.8fr);align-items:center;gap:.7rem;padding:.8rem 1rem;display:grid}.station:last-child{border-bottom:0}.station[data-kind=gate]{background:color-mix(in srgb, var(--color-frost) 4%, transparent)}.station[data-kind=delegate]{background:var(--color-obsidian-2);box-shadow:inset 2px 0 var(--color-rune)}.station__index{color:var(--color-rune);font:var(--text-xs)/1 var(--font-glyph)}.station__body strong,.station__body code{display:block}.station__body strong{color:var(--color-bone);font-weight:500}.station__body code{color:var(--color-ash);font-size:var(--text-xs);margin-top:.15rem}.declaration-kind{border:1px solid var(--color-engraving);color:var(--color-ash);font:var(--text-xs)/1.4 var(--font-glyph);border-radius:999px;padding:.15rem .55rem}.declaration-kind[data-kind=gate]{border-color:color-mix(in srgb, var(--color-frost) 35%, var(--color-engraving));color:var(--color-frost)}.declaration-kind[data-kind=delegate]{border-color:color-mix(in srgb, var(--color-rune) 48%, var(--color-engraving));color:var(--color-rune);border-style:double}.declaration-kind[data-kind=terminal]{border-color:color-mix(in srgb, var(--color-rune) 35%, var(--color-engraving));color:var(--color-rune)}.permission-list{color:var(--color-ash);font:var(--text-xs)/1.5 var(--font-glyph)}.permission-list span{color:var(--color-rune)}.loom-meta{flex-flow:column;align-self:start;gap:.85rem;display:flex}.pattern-details summary{color:var(--color-rune);cursor:pointer;font-size:var(--text-sm);padding:.85rem 1rem}.pattern-details[open] summary{border-bottom:1px solid var(--color-engraving)}.digest{word-break:break-all}.orb-empty{text-align:center;max-width:34rem;margin:auto;padding:4rem 1.5rem}.orb-empty .glyph-big{color:var(--color-rune-dim);font-size:var(--text-3xl);display:block}.orb-empty h1{font-size:var(--text-3xl);margin:.5rem 0}.orb-empty p{color:var(--color-ash);margin-bottom:1.2rem}.orb-main{flex-direction:column;flex:1;gap:.8rem;min-width:0;display:flex}.orb-inspector{flex-direction:column;flex:none;gap:.8rem;width:clamp(18rem,25vw,23rem);display:flex}.run-identity{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.run-identity h1{color:var(--color-bone);font:400 var(--text-xl)/1.25 var(--font-glyph);overflow-wrap:anywhere;margin-top:.2rem}.run-outcome .run-status{font-size:var(--text-base);padding:.3rem .7rem}.selected-evidence-summary{color:var(--color-bone);overflow-wrap:anywhere;padding:.85rem 1rem 0;line-height:1.55}.selected-evidence{background:var(--color-tertiary);border-color:var(--color-tertiary-edge)}.run-outcome{color:var(--color-ash);font-size:var(--text-xs);flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.context-links{gap:.8rem;margin-top:.45rem;display:flex}.context-links a{color:var(--color-rune);font-size:var(--text-xs);text-decoration:none}.context-links span{color:var(--color-ash);font-size:var(--text-xs)}.context-links .context-unavailable{max-width:34rem}.coverage-strip{border:1px solid var(--color-engraving);border-radius:var(--radius-block);background:var(--color-engraving);grid-template-columns:repeat(4,minmax(7rem,1fr)) auto;gap:1px;display:grid;overflow:hidden}.coverage-strip>div,.coverage-strip>button{background:var(--color-obsidian);padding:.55rem .7rem}.coverage-strip span,.coverage-strip strong{display:block}.coverage-strip span{color:var(--color-ash);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em}.coverage-strip strong{color:var(--color-bone);font:400 var(--text-xs)/1.5 var(--font-glyph)}.coverage-strip .text-action{border:0;margin:0}.delegated-jobs .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.delegated-job-list{background:var(--color-engraving);gap:1px;display:grid}.delegated-job{background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-rune);padding:.85rem 1rem}.delegated-job.current{background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian))}.delegated-job>header,.delegated-runtime>header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.delegated-job__title,.delegated-runtime__title{color:var(--color-bone);font:400 var(--text-sm)/1.4 var(--font-glyph)}.delegated-job .kv{grid-template-columns:5rem 1fr;padding-inline:0}.delegated-event-list{color:var(--color-ash);font:var(--text-2xs)/1.4 var(--font-glyph);flex-wrap:wrap;gap:.35rem;display:flex}.delegated-event-list li{border:1px solid var(--color-engraving);border-radius:var(--radius-glyph);gap:.35rem;padding:.25rem .4rem;display:flex}.delegated-event-list strong{color:var(--color-parchment);font-weight:500}.evidence-panel{min-height:0;overflow:hidden}.evidence-panel .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.evidence-list{max-height:calc(100vh - 18rem);overflow-y:auto}.evidence-row,.evidence-gap{border:0;border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);width:100%;color:var(--color-parchment);text-align:left;background:0 0;grid-template-columns:4rem 6rem minmax(12rem,1fr) auto;align-items:center;gap:.7rem;padding:.7rem .9rem;display:grid}.evidence-row{cursor:pointer}.evidence-row:hover,.evidence-row.current{background:color-mix(in srgb, var(--color-rune) 7%, var(--color-obsidian))}.evidence-row.current{box-shadow:inset 2px 0 var(--color-rune)}.evidence-seq,.evidence-kind{color:var(--color-ash);font:var(--text-xs)/1 var(--font-glyph)}.evidence-row.current .evidence-kind{color:var(--color-rune)}.evidence-kind[data-phase=running],.evidence-kind[data-phase=entered]{color:var(--color-lich)}.evidence-kind[data-phase=awaiting_hardware],.evidence-kind[data-phase=awaiting_consent],.evidence-kind[data-phase=waiting],.evidence-kind[data-kind=transition],.evidence-kind[data-kind=consent]{color:var(--color-frost)}.evidence-kind[data-phase=failed],.evidence-kind[data-phase=cancelled]{color:var(--color-ember)}.evidence-summary{color:var(--color-parchment);font-size:var(--text-sm)}.evidence-row time{color:var(--color-ash);font-size:var(--text-xs)}.evidence-gap{border:1px dashed var(--color-engraving);color:var(--color-ash);background:color-mix(in srgb, var(--color-ash) 3%, transparent)}.evidence-gap strong{color:var(--color-ash);font-size:var(--text-lg)}.evidence-more{border-top:1px solid var(--color-engraving);text-align:center;padding:.8rem}.evidence-failure{border:1px solid color-mix(in srgb, var(--color-ember) 42%, var(--color-engraving));border-radius:var(--radius-block);color:var(--color-ember);background:color-mix(in srgb, var(--color-ember) 5%, var(--color-obsidian));font-size:var(--text-xs);padding:.7rem .85rem}.limits-list{color:var(--color-ash);font-size:var(--text-xs);padding:.75rem 1rem .9rem 2rem;list-style:square}.instrument-deck--nexus{align-items:flex-start}.nexus-side{flex-direction:column;flex:none;gap:.8rem;width:clamp(19rem,27vw,24rem);display:flex;position:sticky;top:4.15rem}.read-only{color:var(--color-ash);font-size:var(--text-xs)}.probe-time{color:var(--color-ash);font:var(--text-2xs)/1.4 var(--font-glyph)}.sheet-dismiss{color:var(--color-rune);cursor:pointer;font-size:var(--text-xs);background:0 0;border:0;margin-left:auto;display:inline-block}.containment{border:1px solid color-mix(in srgb, var(--color-ember) 45%, var(--color-engraving));border-radius:var(--radius-block);color:var(--color-ember);background:color-mix(in srgb, var(--color-ember) 6%, var(--color-obsidian));padding:.75rem .9rem}.delegated-runtime-pools .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.delegated-runtime-grid{background:var(--color-engraving);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1px;display:grid}.delegated-runtime{background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-rune);padding:.9rem 1rem}.delegated-runtime[data-state=declared-only]{box-shadow:inset 2px 0 var(--color-ash)}.delegated-runtime .kv{grid-template-columns:6.5rem 1fr;padding-inline:0}.transition-ledger .panel-head>span{color:var(--color-ash);font-size:var(--text-xs);margin-left:auto}.transition-ledger a{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 65%, transparent);color:var(--color-parchment);font-size:var(--text-xs);grid-template-columns:4.5rem minmax(10rem,1fr) 9rem 7rem;gap:.7rem;padding:.65rem .9rem;text-decoration:none;display:grid}.transition-ledger a.current{background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian));box-shadow:inset 2px 0 var(--color-rune)}.transition-ledger code{color:var(--color-bone)}.transition-source{color:var(--color-rune);text-transform:uppercase}.transition-inspector .kv{grid-template-columns:6rem 1fr}.swap-ticket{flex-wrap:wrap}.swap-ticket code{color:var(--color-bone)}.rune-head{font-family:var(--font-body);font-variant:normal;letter-spacing:normal;color:var(--color-bone);font-weight:600}.glyph{font-family:var(--font-glyph);font-size:var(--text-xs)}.topbar{background:var(--color-obsidian);border-bottom:1px solid var(--color-engraving);height:52px;box-shadow:none;z-index:10;align-items:center;gap:28px;padding:0 22px;display:flex;position:sticky;top:0}.brand{flex-shrink:0;align-items:center;gap:10px;display:flex}.brand .mark{flex-shrink:0;width:2.75rem;height:2.75rem;display:block}.brand-wordmark{flex-direction:column;gap:2px;display:flex}.brand .name{font-size:var(--text-lg);letter-spacing:.17em;line-height:1}.brand .sub{color:var(--color-parchment);font-size:var(--text-2xs);letter-spacing:.16em;text-transform:uppercase;line-height:1.2}.altar-about{flex-shrink:0;position:relative}.altar-about>summary{border-radius:var(--radius-rune);cursor:pointer;min-height:2.75rem;list-style:none}.altar-about>summary::-webkit-details-marker{display:none}.about-caret{color:var(--color-ash);font:var(--text-xs)/1 var(--font-body);margin-inline-start:.15rem;display:inline-block}.altar-about[open] .about-caret{transform:rotate(180deg)}.altar-about>summary:hover .name,.altar-about[open] .name{color:var(--color-rune)}.altar-about__panel{z-index:1;border:1px solid var(--color-tertiary-edge);border-radius:var(--radius-panel);background:var(--color-tertiary);width:min(18rem,100vw - 1.5rem);max-height:calc(100dvh - 6rem);box-shadow:0 .75rem 2rem color-mix(in srgb, var(--color-void) 80%, transparent);padding:1rem;position:absolute;inset-block-start:calc(100% + .35rem);inset-inline-start:0;overflow:auto}.altar-about__panel h2{color:var(--color-bone);font:400 var(--text-lg)/1.4 var(--font-rune);margin:0}.altar-about__version{color:var(--color-parchment);font:var(--text-xs)/1.5 var(--font-glyph);overflow-wrap:anywhere;margin:.35rem 0 .65rem}.altar-about__links{flex-direction:column;gap:.125rem;display:flex}.altar-about__links a{min-height:2.75rem;color:var(--color-rune);font-size:var(--text-sm);text-underline-offset:.2em;overflow-wrap:anywhere;align-items:center;padding-block:.375rem;line-height:1.5;text-decoration:underline;display:flex}nav.instruments{gap:2px;height:100%;display:flex}nav.instruments a{color:var(--color-ash);font-size:var(--text-sm);letter-spacing:.09em;text-transform:uppercase;transition:color var(--duration-drift), border-color var(--duration-drift);cursor:pointer;border-bottom:1px solid #0000;align-items:center;padding:0 16px;text-decoration:none;display:flex;position:relative}nav.instruments a:hover{color:var(--color-bone)}nav.instruments a[aria-current=page]{color:var(--color-bone);border-bottom-color:var(--color-accent)}nav.instruments a .dot{color:var(--color-engraving);font-size:8px;position:absolute;top:10px;right:6px}.topbar .spacer{flex:1}.sigil{border:1px solid var(--color-engraving);color:var(--color-ash);font-size:var(--text-xs);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:5px 13px;text-decoration:none;display:inline-flex}.sigil[data-state=lit]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 40%, transparent);box-shadow:var(--shadow-glow-frost);animation:var(--animate-sigil-pulse)}.sigil-identity{color:var(--color-ash);font-size:var(--text-xs);align-items:center;gap:7px;display:inline-flex}.sigil-identity b{color:var(--color-bone);letter-spacing:.06em;font-weight:500}.panel{background:var(--color-obsidian);border-radius:var(--radius-panel);box-shadow:none;border:1px solid #0000}.panel-head{border-bottom:1px solid var(--color-engraving);font-size:var(--text-sm);align-items:center;gap:10px;padding:11px 16px;display:flex}.panel-head .rune-head{font-size:var(--text-base)}.frosted{background:var(--color-obsidian);border:1px solid var(--color-engraving);border-radius:var(--radius-panel)}.divider{color:var(--color-engraving);align-items:center;gap:10px;margin:14px 0;font-size:9px;display:flex}.divider:before,.divider:after{content:"";background:var(--color-engraving);flex:1;height:1px}.chip{font-size:var(--text-xs);letter-spacing:.05em;border:1px solid var(--color-engraving);color:var(--color-ash);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 9px;display:inline-flex}.chip:before{content:"●";font-size:7px}.chip--bare{border:none;gap:6px;padding:0}.chip[data-state=active]{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 40%, transparent)}.chip[data-state=warm]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 38%, transparent)}.chip[data-state=awaited]{color:var(--color-ash);border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));border-style:dashed}.chip[data-state=warming]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 45%, transparent);animation:var(--animate-think-pulse)}.chip[data-state=cold]{color:var(--color-ash)}.chip[data-state=fault]{color:var(--color-ember);border-color:color-mix(in srgb, var(--color-ember) 40%, transparent)}.chip[data-state=queued]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 30%, transparent)}.chip[data-state=queued]:before{animation:var(--animate-sigil-pulse)}.chip[data-state=streaming],.chip[data-state=running]{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 45%, transparent);animation:var(--animate-think-pulse)}.chip[data-state=consent],.chip[data-state=awaiting_hardware],.chip[data-state=awaiting_consent],.chip[data-state=awaiting_delegate],.chip[data-state=awaiting_peer],.chip[data-state=admitted],.chip[data-state=preparing]{color:var(--color-frost);border-color:color-mix(in srgb, var(--color-frost) 38%, transparent)}.chip[data-state=done],.chip[data-state=succeeded]{color:var(--color-lich);border-color:#0000}.chip[data-state=failed],.chip[data-state=cancelled],.chip[data-state=timed_out],.chip[data-state=lost]{color:var(--color-ember);border-color:color-mix(in srgb, var(--color-ember) 35%, transparent)}.rune-btn{font:var(--text-sm)/1 var(--font-body);letter-spacing:normal;border-radius:var(--radius-rune);border:1px solid var(--color-control-border);background:var(--color-obsidian-2);min-height:2.75rem;color:var(--color-bone);cursor:pointer;transition:background-color var(--duration-whisper), border-color var(--duration-whisper);padding:8px 16px}.rune-btn:hover{border-color:var(--color-rune);background:color-mix(in srgb, var(--color-rune) 8%, var(--color-obsidian-2))}.rune-btn:disabled{opacity:.4;cursor:default;box-shadow:none}.rune-btn--frost{border-color:var(--color-bone);background:var(--color-bone);color:var(--color-void);font-weight:600}.rune-btn--frost:hover{background:#fff;border-color:#fff}.rune-btn--ash{border-color:var(--color-control-border);color:var(--color-ash);background:0 0}.rune-btn--ash:hover{color:var(--color-bone);border-color:var(--color-rune);box-shadow:none}kbd.key{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-frost);background:color-mix(in srgb, var(--color-frost) 6%, transparent);border:1px solid color-mix(in srgb, var(--color-frost) 20%, var(--color-engraving));border-radius:var(--radius-glyph);padding:1px 6px}#altar-main{isolation:isolate;background:var(--color-void);flex:1;min-height:0;display:flex;position:relative;overflow:hidden}#altar-main>*{z-index:1;position:relative}.instrument-deck{flex:1;gap:14px;min-width:0;padding:14px 16px;display:flex}.bridge-rail{flex-direction:column;flex-shrink:0;gap:8px;width:232px;display:flex}.bridge-rail .new-seance{text-align:left;width:100%}.seance{border-radius:var(--radius-block);color:var(--color-ash);cursor:pointer;transition:background var(--duration-whisper);border:1px solid #0000;padding:10px 13px;text-decoration:none;display:block}.seance:hover{background:var(--color-obsidian)}.seance.current{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));color:var(--color-bone)}.seance .t{font-size:var(--text-sm);margin-bottom:2px;display:block}.seance .m{font-size:var(--text-xs);color:var(--color-ash);display:block}.seance.current .t{color:var(--color-bone)}.rail-empty{color:var(--color-ash);padding:8px 4px}.bridge-thread{flex-direction:column;flex:1;min-width:0;display:flex}.thread-scroll{flex-direction:column;flex:1;gap:14px;padding:4px 6px 14px 2px;display:flex;overflow-y:auto}.turn{max-width:720px}.turn--user{align-self:flex-end}.turn--user .turn__body{background:var(--color-grimoire);border:1px solid color-mix(in srgb, var(--color-tertiary-edge) 40%, var(--color-engraving));border-radius:var(--radius-turn) var(--radius-turn) 3px var(--radius-turn);color:var(--color-bone);padding:11px 15px}.turn--agent{align-self:flex-start;width:100%}.turn__meta{font-size:var(--text-xs);color:var(--color-ash);align-items:center;gap:10px;margin-bottom:6px;display:flex}.turn__meta .who{font-family:var(--font-body);letter-spacing:normal;color:color-mix(in srgb, var(--color-rune) 70%, var(--color-bone));font-weight:600;font-size:var(--text-sm)}.turn--agent .turn__body{background:var(--color-obsidian);border:1px solid var(--color-engraving);border-radius:3px var(--radius-turn) var(--radius-turn) var(--radius-turn);color:var(--color-parchment);transition:border-color var(--duration-rise) var(--ease-settle);padding:13px 17px}.turn__body p+p{margin-top:9px}.turn__body code{font-family:var(--font-glyph);font-size:var(--text-sm);color:var(--color-frost)}.turn__extras:empty{display:none}.turn--agent[data-state=streaming] .turn__body{border-color:color-mix(in srgb, var(--color-lich) 52%, var(--color-engraving));background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-lich)}.turn--agent[data-state=done] .turn__body{border-color:var(--color-engraving)}.turn--agent[data-state=stale] .turn__body{border-style:dashed;border-color:var(--color-ash);box-shadow:none}.turn--agent[data-state=failed] .turn__meta .who{color:var(--color-ember)}.turn--agent[data-state=failed] .turn__body{border-color:color-mix(in srgb, var(--color-ember) 30%, var(--color-engraving))}.turn--agent[data-state=cancelled] .turn__body{border-style:dashed;border-color:color-mix(in srgb, var(--color-ash) 45%, var(--color-engraving))}.turn__fault{border-top:1px solid color-mix(in srgb, var(--color-ember) 30%, transparent);font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-ember);margin-top:9px;padding-top:8px}.turn__fault:before{content:"✕ "}.caret,.turn--agent[data-state=streaming] .turn__body:after{vertical-align:text-bottom;background:var(--color-lich);width:8px;height:15px;box-shadow:none;animation:var(--animate-caret-blink);display:inline-block}.turn--agent[data-state=streaming] .turn__body:after{content:"";margin-left:2px}.status{font-size:var(--text-xs);letter-spacing:.05em;color:var(--color-ash);align-items:center;gap:6px;display:inline-flex}.genui{border:1px solid var(--color-engraving);border-left:2px solid var(--color-rune-dim);border-radius:var(--radius-block);background:var(--color-obsidian-2);animation:genui-rise var(--duration-rise) var(--ease-settle) both;margin-top:11px;overflow:hidden}@keyframes genui-rise{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.genui-head{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ash);border-bottom:1px solid var(--color-engraving);justify-content:space-between;align-items:center;padding:8px 13px;display:flex}.genui-body{color:var(--color-parchment);font-size:var(--text-sm);padding:11px 16px}.genui-body.checklist{padding:10px 16px 12px 30px}.genui-body.checklist li{padding:3px 0}.genui table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.genui th{text-align:left;color:var(--color-ash);font-weight:500;font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;border-bottom:1px solid var(--color-engraving);padding:7px 13px}.genui td{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 55%, transparent);padding:7px 13px}.genui tr:last-child td{border-bottom:none}.consent-card{border:1px solid color-mix(in srgb, var(--color-frost) 35%, var(--color-engraving));border-radius:var(--radius-panel);background:var(--color-obsidian);box-shadow:var(--shadow-glow-frost);margin-top:11px;overflow:hidden}.consent-card .head{border-bottom:1px solid color-mix(in srgb, var(--color-frost) 18%, var(--color-engraving));color:var(--color-frost);font-size:var(--text-sm);align-items:center;gap:9px;padding:11px 16px;display:flex}.consent-card .head .rune-head{color:var(--color-frost);font-size:var(--text-base)}.consent-card .vision{color:var(--color-parchment);font-size:var(--text-sm);padding:12px 16px 4px}.consent-card .vision em{color:var(--color-bone);font-style:normal}.consent-card dl,.consent-card .args{font-size:var(--text-sm);grid-template-columns:fit-content(35%) minmax(0,1fr);gap:4px 16px;padding:10px 16px;display:grid}.consent-card dt{color:var(--color-ash)}.consent-card dd{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-bone)}.consent-card .args>*{overflow-wrap:anywhere;min-width:0}.consent-card .verdicts{flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px 14px;display:flex}.consent-card .verdicts .note{font-size:var(--text-xs);color:var(--color-ash);margin-left:auto}.consent-card[data-state=consented]{border-color:color-mix(in srgb, var(--color-lich) 35%, var(--color-engraving));box-shadow:var(--shadow-glow-lich)}.consent-card[data-state=consented] .head,.consent-card[data-state=consented] .head .rune-head{color:var(--color-lich)}.consent-card[data-state=refused]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving));background:var(--color-obsidian);box-shadow:none}.consent-card[data-state=refused] .head,.consent-card[data-state=refused] .head .rune-head{color:var(--color-ember)}.composer{border:1px solid var(--color-control-border);border-radius:var(--radius-panel);background:var(--color-obsidian);transition:border-color var(--duration-drift), box-shadow var(--duration-drift);align-items:flex-end;gap:10px;margin-top:12px;padding:10px 12px;display:flex}.composer:focus-within{border-color:var(--color-rune)}.composer textarea{resize:none;color:var(--color-bone);font:var(--text-base)/1.5 var(--font-body);background:0 0;border:none;outline:none;flex:1;min-height:40px}.composer textarea::placeholder{color:var(--color-ash)}.thinking-rune{color:var(--color-lich)}[aria-busy=true] .thinking-rune{color:var(--color-lich);animation:var(--animate-think-pulse)}.bridge-inspector{flex-direction:column;flex-shrink:0;gap:12px;width:296px;display:flex;overflow-y:auto}.kv{font-size:var(--text-sm);grid-template-columns:92px 1fr;gap:6px 10px;padding:12px 16px;display:grid}.kv dt{color:var(--color-ash)}.kv dd{color:var(--color-bone);overflow-wrap:anywhere}.kv dd.glyph{color:var(--color-frost)}.floor{flex-direction:column;gap:6px;padding:8px 10px 12px;display:flex}.block{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);background:var(--color-obsidian-2);font-size:var(--text-xs);align-items:center;gap:9px;padding:7px 10px;display:flex}.block[data-state=stub]{opacity:.5;border-style:dashed}.block .layer{font-family:var(--font-glyph);font-size:var(--text-2xs);color:var(--color-rune);border:1px solid color-mix(in srgb, var(--color-rune) 35%, transparent);border-radius:var(--radius-glyph);flex-shrink:0;place-items:center;width:22px;height:18px;display:grid}.block.volatile .layer{color:var(--color-lich);border-color:color-mix(in srgb, var(--color-lich) 35%, transparent)}.block .k{color:var(--color-parchment);font-family:var(--font-glyph);font-size:var(--text-2xs);flex:1}.block .h{color:var(--color-ash);font-family:var(--font-glyph);font-size:var(--text-2xs)}.floor-digest{border-top:1px solid var(--color-engraving);font-size:var(--text-2xs);color:var(--color-ash);justify-content:space-between;margin:4px 6px 0;padding:8px 10px;display:flex}.floor-digest b{color:var(--color-frost);font-family:var(--font-glyph);font-weight:400}.nexus-main{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.nexus-strip{font-size:var(--text-sm);color:var(--color-ash);align-items:center;gap:22px;padding:10px 16px;display:flex}.nexus-strip .stat b{color:var(--color-bone);margin-left:6px;font-weight:500}.nexus-strip .stat b.ok{color:var(--color-frost)}.nexus-strip .stat b.live{color:var(--color-lich)}.nexus-hint{color:var(--color-ash);font-size:var(--text-sm);padding:14px 16px}.nexus-empty{color:var(--color-ash);font-size:var(--text-sm);padding:24px 16px}.coven-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;display:grid}.coven-card{flex-direction:column;display:flex}.coven-card .panel-head{justify-content:space-between}.coven-card[data-state=active]{border-color:color-mix(in srgb, var(--color-lich) 48%, var(--color-engraving));background:var(--color-obsidian);box-shadow:inset 2px 0 var(--color-lich)}.coven-card[data-state=warm]{border-color:color-mix(in srgb, var(--color-frost) 28%, var(--color-engraving))}.coven-card[data-state=warming]{border-color:color-mix(in srgb, var(--color-frost) 45%, var(--color-engraving))}.coven-card[data-state=awaited]{border-color:color-mix(in srgb, var(--color-frost) 26%, var(--color-engraving));border-style:dashed}.coven-card[data-state=cold]{border-color:var(--color-engraving)}.coven-card[data-state=fault]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving))}.coven-card .kind{font-size:var(--text-2xs);color:var(--color-ash);letter-spacing:.1em;text-transform:uppercase}.coven-card .chip-slot{margin-left:auto}.cap{border-bottom:1px solid color-mix(in srgb, var(--color-engraving) 60%, transparent);font-size:var(--text-sm);align-items:center;gap:10px;padding:9px 14px;display:flex}.cap:last-of-type{border-bottom:none}.cap .key{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-parchment);overflow-wrap:anywhere;flex:1}.cap .preview-trigger{font-size:var(--text-xs);color:var(--color-ash);cursor:pointer;border:none;border-bottom:1px dotted var(--color-ash);background:0 0;padding:0}.cap .preview-trigger:hover{color:var(--color-rune);border-color:var(--color-rune)}.cap .preview-trigger:disabled{opacity:.4;cursor:default;border:none}.coven-foot{font-size:var(--text-xs);color:var(--color-ash);justify-content:space-between;padding:8px 14px 10px;display:flex}.nexus-plan{flex-shrink:0;align-self:flex-start;width:330px;position:sticky;top:66px}.plan-verdict{border-radius:var(--radius-block);border:1px solid color-mix(in srgb, var(--color-heat) 44%, var(--color-engraving));background:var(--color-obsidian-2);color:var(--color-heat);font-size:var(--text-sm);letter-spacing:.06em;align-items:center;gap:10px;margin:12px 16px 4px;padding:9px 13px;display:flex}.plan-verdict[data-state=clean]{border-color:color-mix(in srgb, var(--color-frost) 30%, var(--color-engraving));background:color-mix(in srgb, var(--color-frost) 6%, var(--color-obsidian-2));color:var(--color-frost)}.plan-list{font-size:var(--text-sm);padding:10px 16px 2px}.plan-list .row{justify-content:space-between;padding:5px 0;display:flex}.plan-list .row .l{color:var(--color-ash)}.plan-list .row .v{font-family:var(--font-glyph);font-size:var(--text-xs);color:var(--color-bone)}.plan-list .row .v.evict{color:var(--color-ember)}.plan-list .row .v.launch{color:var(--color-heat)}.plan-act{flex-direction:column;gap:8px;padding:12px 16px 15px;display:flex}.plan-act .warn{font-size:var(--text-xs);color:var(--color-ash)}.swap-ticket{border-radius:var(--radius-block);border:1px solid color-mix(in srgb, var(--color-heat) 38%, var(--color-engraving));background:var(--color-obsidian-2);color:var(--color-heat);font-size:var(--text-sm);letter-spacing:.05em;align-items:center;gap:10px;margin:12px 16px;padding:11px 14px;display:flex}.swap-ticket[data-state=warming]:before{content:"❄";animation:var(--animate-think-pulse)}.swap-ticket[data-state=settled]{border-color:color-mix(in srgb, var(--color-lich) 30%, var(--color-engraving));background:color-mix(in srgb, var(--color-lich) 6%, var(--color-obsidian-2));color:var(--color-lich);box-shadow:var(--shadow-glow-lich)}.swap-ticket[data-state=settled]:before{content:"✦"}.swap-ticket[data-state=failed]{border-color:color-mix(in srgb, var(--color-ember) 35%, var(--color-engraving));background:color-mix(in srgb, var(--color-ember) 6%, var(--color-obsidian-2));color:var(--color-ember);box-shadow:none}.swap-ticket[data-state=failed]:before{content:"✕"}.swap-ticket[data-state=stale]{border-style:dashed;border-color:var(--color-ash);background:var(--color-obsidian-2);color:var(--color-ash);box-shadow:none}.swap-ticket[data-state=stale]:before{content:"?"}.loom-rail{flex-direction:column;flex-shrink:0;gap:8px;width:232px;display:flex}.pattern{border-radius:var(--radius-block);color:var(--color-ash);cursor:pointer;border:1px solid #0000;padding:10px 13px;text-decoration:none;display:block}.pattern:hover{background:var(--color-obsidian)}.pattern.current{background:var(--color-obsidian);border-color:color-mix(in srgb, var(--color-rune) 30%, var(--color-engraving))}.pattern .t{font-size:var(--text-sm);color:var(--color-bone);margin-bottom:2px;display:block}.pattern .m{font-size:var(--text-xs);display:block}.pattern[data-state=unbuilt]{opacity:.45}.loom-canvas{flex-direction:column;flex:1;gap:12px;min-width:0;display:flex}.graph-stage{padding:26px 18px;overflow-x:auto}.loom-meta{flex-wrap:wrap;gap:12px;display:flex}.loom-meta .panel{flex:1;min-width:260px}.loom-desc{color:var(--color-parchment);font-size:var(--text-sm);padding:12px 16px}.shell-placeholder{text-align:center;color:var(--color-ash);max-width:420px;margin:auto;padding:40px 20px}.shell-placeholder .glyph-big{font-size:var(--text-3xl);color:var(--color-engraving);margin-bottom:14px;display:block}.shell-placeholder .rune-head{font-size:var(--text-xl);margin-bottom:8px;display:block}.shell-placeholder h1{color:var(--color-bone);font-size:var(--text-3xl);margin-bottom:.7rem}.shell-placeholder p{line-height:1.65}.shell-placeholder nav{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.25rem;display:flex}.shell-placeholder nav a{border:1px solid var(--color-control-border);border-radius:var(--radius-rune);background:var(--color-tertiary);justify-content:center;align-items:center;min-height:2.75rem;padding:.5rem .85rem;text-decoration:none;display:inline-flex}.shell-placeholder nav a:hover{border-color:var(--color-rune)}.mist{background:var(--color-obsidian-2);border-radius:var(--radius-block);animation:var(--animate-think-pulse);min-height:14px}.omen-stack{z-index:40;flex-direction:column;gap:8px;max-width:320px;display:flex;position:fixed;bottom:18px;right:18px}.omen{border-radius:var(--radius-block);border-left:2px solid var(--color-frost);background:var(--color-obsidian);color:var(--color-parchment);font-size:var(--text-sm);animation:omen-rise var(--duration-rise) var(--ease-settle) both;align-items:flex-start;gap:10px;padding:10px 13px;display:flex}.omen[data-state=fault]{border-left-color:var(--color-ember);background:var(--color-obsidian);color:var(--color-bone);box-shadow:none}.omen .dismiss{color:var(--color-ash);cursor:pointer;background:0 0;border:none;margin-left:auto}@keyframes omen-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.vessel-bar{border-top:1px solid var(--color-engraving);background:var(--color-obsidian);height:34px;font-size:var(--text-xs);color:var(--color-ash);align-items:center;gap:24px;padding:0 20px;display:flex}.vessel-bar .item b{font-weight:400;font-family:var(--font-glyph);font-size:var(--text-2xs);margin-left:6px}.vessel-bar .risen{color:var(--color-frost)}.vessel-bar .live-run{color:var(--color-lich)}.vessel-bar .spacer{flex:1}@media (prefers-reduced-motion:reduce){.sigil[data-state=lit],.chip[data-state=queued]:before,.chip[data-state=streaming],.chip[data-state=warming],.swap-ticket[data-state=warming]:before,.caret,.turn--agent[data-state=streaming] .turn__body:after,.mist,.genui,.omen{animation:none!important}*{transition-duration:0s!important}}.loom-canvas{grid-template-columns:minmax(0,1fr) minmax(18rem,23rem);align-content:start;display:grid}.loom-meta{flex-flow:column;display:flex}.loom-meta .panel{min-width:0}.nexus-plan{width:auto;position:static}}:root{--color-void:#000;--color-obsidian:#0d0f12;--color-obsidian-2:#171a1f;--color-engraving:#24272e;--color-primary:#9edbe8;--color-primary-deep:#70bed0;--color-secondary:#38df91;--color-secondary-deep:#14b86c;--color-accent:#b8a1d0;--color-tertiary:var(--color-obsidian);--color-tertiary-edge:var(--color-engraving);--color-control-border:#4c5663;--color-heat:#f0b379;--color-heat-deep:#82512f;--color-grimoire:var(--color-obsidian-2);--color-rune:var(--color-primary);--color-rune-dim:#6095a6;--color-lich:var(--color-secondary);--color-lich-deep:var(--color-secondary-deep);--color-frost:#b7efff;--color-frost-deep:var(--color-primary-deep);--color-ash:#a0a5b1;--color-ember:#ff8f9e;--color-bone:#f2f3f5;--color-parchment:#ced1d8;--font-rune:Georgia, "Times New Roman", serif;--font-body:system-ui, -apple-system, "Segoe UI", sans-serif;--font-glyph:ui-monospace, "Cascadia Mono", "SF Mono", Menlo, monospace;--text-2xs:.75rem;--text-2xs--line-height:1.4;--text-xs:.8125rem;--text-xs--line-height:1.45;--text-sm:.875rem;--text-sm--line-height:1.5;--text-base:.9375rem;--text-base--line-height:1.55;--text-lg:1.125rem;--text-lg--line-height:1.4;--text-xl:1.375rem;--text-xl--line-height:1.35;--text-3xl:1.75rem;--text-3xl--line-height:1.2;--radius-glyph:5px;--radius-rune:7px;--radius-block:8px;--radius-panel:10px;--radius-turn:10px;--shadow-glow-rune:none;--shadow-glow-lich:none;--shadow-glow-frost:none;--ease-settle:cubic-bezier(.4, 0, .2, 1);--duration-whisper:.15s;--duration-drift:.2s;--duration-rise:.3s;--animate-sigil-pulse:sigil-pulse 2.6s ease-in-out infinite;--animate-think-pulse:think-pulse 2.4s ease-in-out infinite;--animate-caret-blink:caret-blink 1.05s steps(1) infinite;--animate-mist:mist-sweep 1.8s ease-in-out infinite}@keyframes sigil-pulse{0%,to{opacity:1}50%{opacity:.72}}@keyframes think-pulse{0%,to{opacity:1}50%{opacity:.78}}@keyframes caret-blink{50%{opacity:0}}@keyframes mist-sweep{0%{background-position:-200% 0}to{background-position:200% 0}}@media (width<=68rem){.instrument-deck--bridge{grid-template-columns:13rem minmax(0,1fr);display:grid}.instrument-deck--bridge.instrument-deck--welcome{grid-template-columns:minmax(0,1fr)}.bridge-inspector{grid-column:1/-1;grid-template-columns:repeat(2,1fr);width:auto;display:grid}.instrument-deck--orb,.instrument-deck--nexus{flex-direction:column}.orb-inspector,.nexus-side{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid;position:static}.loom-canvas{grid-template-columns:1fr}.pattern-identity,.pattern-score,.loom-meta{grid-column:1}.loom-meta{display:block}}@media (width<=48rem){.topbar{flex-wrap:wrap;gap:.5rem 1rem;height:auto;min-height:3.25rem;padding:.55rem .75rem}.sigil-identity{display:none}nav.instruments{order:3;width:100%;overflow-x:auto}nav.instruments a{min-height:2.5rem;padding:0 clamp(.375rem,2vw,.75rem)}.instrument-deck,.instrument-deck--bridge{flex-direction:column;padding:.75rem;display:flex}.bridge-rail,.loom-rail{width:100%}.bridge-rail,.loom-rail nav{flex-direction:row;overflow-x:auto}.bridge-rail .divider{display:none}.bridge-rail .new-seance{flex:none;width:auto}.seance,.pattern{min-width:10rem}.bridge-inspector,.orb-inspector,.nexus-side,.loom-meta{flex-direction:column;display:flex}.body-crossing,.station,.evidence-row,.evidence-gap,.transition-ledger a{grid-template-columns:1fr}.pattern-identity,.run-identity,.instrument-header{flex-direction:column}.identity-seal{width:100%;min-width:0}.coverage-strip{grid-template-columns:repeat(2,1fr)}.evidence-list{max-height:none}.run-outcome{align-items:flex-start}.sheet-dismiss{display:inline-block}.selected-evidence,.nexus-plan[data-open=true],.transition-inspector[data-open=true]{z-index:40;border-color:color-mix(in srgb, var(--color-rune) 55%, var(--color-engraving));max-height:min(60vh,32rem);box-shadow:0 -.75rem 2rem color-mix(in srgb, var(--color-void) 75%, transparent);position:fixed;bottom:.75rem;left:.75rem;right:.75rem;overflow-y:auto}}@media (forced-colors:active){:focus-visible{box-shadow:none;outline:2px solid highlight}.panel,.altar-about__panel,.run-sigil,.body-crossing,.coverage-strip,.evidence-gap{border-color:canvastext}}.dock-shell.svelte-1usyivu{z-index:20;order:1;flex:0 0 min(var(--dock-width), 60vw);width:min(var(--dock-width), 60vw);min-width:0;min-height:0;display:flex;position:relative}.dock-shell.dock-left.svelte-1usyivu{order:-1}.dock-shell.dock-collapsed.svelte-1usyivu{flex-basis:0;width:0}.dock-shell.dock-focused.svelte-1usyivu{flex:1 1 0;order:0;width:100%;overflow:hidden}.dock-focused.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){border:0}.focus-heading.svelte-1usyivu{border-bottom:1px solid var(--color-engraving);flex-wrap:wrap;gap:.25rem 1rem;padding:.35rem 1rem;display:flex}.focus-heading.svelte-1usyivu a:where(.svelte-1usyivu),.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu){min-height:2rem;font-size:var(--text-xs);color:var(--color-parchment);align-items:center;display:inline-flex}a.svelte-1usyivu:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.dock-frame.svelte-1usyivu{background:var(--color-obsidian);border-left:1px solid var(--color-engraving);width:100%;min-width:0;min-height:0;display:flex;position:relative}.dock-frame[hidden].svelte-1usyivu{display:none}.dock-left.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){border-left:0;border-right:1px solid var(--color-engraving)}.bridge-dock.svelte-1usyivu{flex-direction:column;width:100%;min-width:0;min-height:0;display:flex}.dock-heading.svelte-1usyivu{background:var(--color-obsidian);border-bottom:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem;min-height:3.5rem;padding:.6rem 1rem .35rem;display:flex}.dock-heading.svelte-1usyivu h2:where(.svelte-1usyivu){font:600 var(--text-lg)/1.4 var(--font-body);letter-spacing:-.025em;color:var(--color-bone)}.dock-location.svelte-1usyivu{flex-wrap:wrap;align-items:baseline;gap:.35rem .6rem;min-width:0;display:flex}.dock-view.svelte-1usyivu{font-size:var(--text-xs);color:var(--color-ash);overflow-wrap:anywhere}.dock-actions.svelte-1usyivu button:where(.svelte-1usyivu),.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu){border-radius:var(--radius-rune);background:0 0;border:0;place-items:center;min-width:2rem;min-height:2rem;font-size:1.15rem;text-decoration:none;display:grid}.dock-actions.svelte-1usyivu button:where(.svelte-1usyivu):hover,.dock-actions.svelte-1usyivu a:where(.svelte-1usyivu):hover{background:var(--color-obsidian-2)}.dock-actions.svelte-1usyivu{gap:.125rem;display:flex}.dock-context.svelte-1usyivu{border-bottom:1px solid var(--color-engraving);color:var(--color-ash);font-size:var(--text-2xs);margin:0;padding:.15rem 1rem .65rem;line-height:1.5}button.svelte-1usyivu{border:1px solid var(--color-engraving);border-radius:var(--radius-glyph);background:var(--color-obsidian);min-height:2.5rem;color:var(--color-bone);font:inherit;font-size:var(--text-xs);cursor:pointer;padding:.4rem .65rem}button.svelte-1usyivu:hover{border-color:var(--color-rune)}button.svelte-1usyivu:focus-visible,.dock-resizer.svelte-1usyivu:focus-visible{outline:2px solid var(--color-rune);outline-offset:-2px}.dock-toggle.svelte-1usyivu{inset-block-start:calc(50% - 1.375rem);z-index:3;border-radius:var(--radius-glyph) 0 0 var(--radius-glyph);width:2rem;min-height:2.75rem;font:600 var(--text-sm)/1 var(--font-body);place-items:center;padding:.25rem;display:grid;position:absolute;right:100%}.dock-toggle.svelte-1usyivu:has(.edge-label:where(.svelte-1usyivu)){gap:.35rem;width:2rem;padding-block:.5rem}.edge-label.svelte-1usyivu{writing-mode:vertical-rl;font-size:var(--text-xs)}.dock-left.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){border-radius:0 var(--radius-glyph) var(--radius-glyph) 0;left:100%;right:auto}.dock-conversation.svelte-1usyivu{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.dock-conversation[hidden].svelte-1usyivu{display:none}.dock-offline.svelte-1usyivu{color:var(--color-parchment);padding:1.5rem}.dock-offline.svelte-1usyivu h3:where(.svelte-1usyivu){color:var(--color-bone);margin-bottom:.75rem}.dock-offline.svelte-1usyivu p:where(.svelte-1usyivu){margin-bottom:1rem;line-height:1.7}.dock-resizer.svelte-1usyivu{inset-block:0;z-index:2;cursor:col-resize;touch-action:none;place-items:center;width:10px;display:grid;position:absolute;left:-5px}.dock-left.svelte-1usyivu .dock-resizer:where(.svelte-1usyivu){left:auto;right:-5px}.dock-resizer.svelte-1usyivu span:where(.svelte-1usyivu){visibility:hidden}.dock-resizer.svelte-1usyivu:hover,.dock-resizer.svelte-1usyivu:focus-visible{background:color-mix(in srgb, var(--color-rune) 25%, transparent)}.dock-shell.dock-modal.svelte-1usyivu{z-index:30;width:auto;position:absolute;inset:0}.dock-modal.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){background:0 0;border:0;justify-content:flex-end}.dock-modal.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){inset-block-start:.75rem}.dock-modal.dock-collapsed.svelte-1usyivu .dock-toggle:where(.svelte-1usyivu){inset-block-start:calc(50% - 1.375rem)}.dock-shell.dock-modal.dock-collapsed.svelte-1usyivu{width:0;left:auto}.dock-shell.dock-modal.dock-left.dock-collapsed.svelte-1usyivu{left:0;right:auto}.dock-modal.dock-left.svelte-1usyivu .dock-frame:where(.svelte-1usyivu){justify-content:flex-start}.dock-modal.svelte-1usyivu:not(.dock-collapsed) .dock-toggle:where(.svelte-1usyivu){right:calc(min(var(--dock-width), 100%) - 2rem)}.dock-modal.dock-left.svelte-1usyivu:not(.dock-collapsed) .dock-toggle:where(.svelte-1usyivu){right:auto;left:calc(min(var(--dock-width), 100%) - 2rem)}.dock-modal.svelte-1usyivu:not(.dock-left) .dock-heading:where(.svelte-1usyivu){padding-left:2.5rem}.dock-modal.dock-left.svelte-1usyivu .dock-heading:where(.svelte-1usyivu){padding-right:2.5rem}.dock-modal.svelte-1usyivu .bridge-dock:where(.svelte-1usyivu){z-index:1;width:min(var(--dock-width), 100%);background:var(--color-obsidian);border:1px solid var(--color-engraving);position:relative}.dock-backdrop.svelte-1usyivu{background:color-mix(in srgb, var(--color-void) 75%, transparent);border:0;border-radius:0;padding:0;position:absolute;inset:0}.circle-run.svelte-bd5msh{border-block:1px solid var(--color-engraving);min-width:0;color:var(--color-parchment);font:.875rem/1.5 var(--font-body);margin:.3rem 0 .75rem}.circle-overview.svelte-bd5msh{flex-wrap:wrap;align-items:center;gap:.15rem .8rem;padding:.35rem 0;display:flex}.circle-toggle.svelte-bd5msh{min-height:2.75rem;color:var(--color-bone);font:inherit;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:.5rem;padding:.25rem .15rem;display:inline-flex}.circle-mark.svelte-bd5msh{border:1px solid;border-radius:50%;width:.8rem;height:.8rem}.circle-chevron.svelte-bd5msh{color:var(--color-parchment);margin-left:.2rem}.circle-status.svelte-bd5msh{overflow-wrap:anywhere;flex-wrap:wrap;flex:9rem;align-items:baseline;gap:.1rem .75rem;min-width:0;display:flex}.circle-status.svelte-bd5msh>span:where(.svelte-bd5msh):first-child{color:var(--color-bone)}.circle-status[data-active=true].svelte-bd5msh>span:where(.svelte-bd5msh):first-child:before{content:"";background:var(--color-lich);border-radius:50%;width:.35rem;height:.35rem;margin:0 .4rem .1rem 0;display:inline-block}.circle-status[data-status=failed].svelte-bd5msh>span:where(.svelte-bd5msh):first-child{color:var(--color-ember)}.circle-actions.svelte-bd5msh{flex-wrap:wrap;align-items:center;gap:.3rem 1rem;margin-left:auto;display:flex}.circle-run.svelte-bd5msh a:where(.svelte-bd5msh){min-height:2.75rem;color:var(--color-rune);text-underline-offset:.2em;align-items:center;gap:.3rem;text-decoration:underline;display:inline-flex}.circle-cancel.svelte-bd5msh{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);min-height:2.75rem;color:var(--color-bone);font:inherit;cursor:pointer;background:0 0;padding:.35rem .75rem}.circle-cancel.svelte-bd5msh:hover:not(:disabled){border-color:var(--color-ember)}.circle-cancel.svelte-bd5msh:disabled{cursor:wait;color:var(--color-parchment)}.circle-identity.svelte-bd5msh{border-top:1px solid var(--color-engraving);padding:.8rem 0}dl.svelte-bd5msh{grid-template-columns:minmax(6.5rem,auto) minmax(0,1fr);gap:.55rem 1.25rem;margin:0;display:grid}dt.svelte-bd5msh{color:var(--color-parchment)}dd.svelte-bd5msh{min-width:0;color:var(--color-bone);overflow-wrap:anywhere;margin:0}code.svelte-bd5msh{color:inherit;font:.875rem/1.5 var(--font-glyph);white-space:normal}.circle-score.svelte-bd5msh{margin-top:.45rem}.circle-unavailable.svelte-bd5msh{color:var(--color-parchment)}p.circle-unavailable.svelte-bd5msh{margin:.65rem 0 0}button.svelte-bd5msh:focus-visible,a.svelte-bd5msh:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}@media (width<=40rem){.circle-status.svelte-bd5msh{flex-basis:8rem}.circle-actions.svelte-bd5msh{flex-basis:100%;justify-content:space-between;margin-left:0}dl.svelte-bd5msh{grid-template-columns:minmax(0,1fr);gap:.2rem}dd.svelte-bd5msh+dt:where(.svelte-bd5msh){margin-top:.65rem}}.altar-welcome.svelte-18m3jog{border:1px solid var(--color-engraving);border-radius:var(--radius-panel);background:var(--color-obsidian);width:100%;max-width:58rem;margin:auto;container-type:inline-size}.altar-welcome__body.svelte-18m3jog{border-radius:inherit;display:grid;overflow:hidden}.altar-welcome__copy.svelte-18m3jog{align-self:center;min-width:0;padding:1.5rem}.altar-welcome__eyebrow.svelte-18m3jog{color:var(--color-rune);font:var(--text-2xs)/1.5 var(--font-glyph);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .75rem}h2.svelte-18m3jog{max-width:15ch;color:var(--color-bone);font:400 1.875rem/1.12 var(--font-rune);letter-spacing:-.02em;text-wrap:balance;margin:0}.altar-welcome__intro.svelte-18m3jog{max-width:35ch;color:var(--color-parchment);font-size:var(--text-sm);margin:.8rem 0 1.125rem;line-height:1.6}.altar-welcome__begin.svelte-18m3jog{border-color:color-mix(in srgb, var(--color-rune) 60%, var(--color-engraving));min-height:2.75rem;color:var(--color-frost);letter-spacing:.035em;justify-content:center;align-items:center;gap:.7rem;padding:.7rem 1.1rem;line-height:1.4;display:inline-flex}.altar-welcome__begin.svelte-18m3jog:disabled{opacity:.65}.altar-welcome__continuity.svelte-18m3jog{border-top:1px solid var(--color-engraving);font-size:var(--text-xs);margin-top:1.25rem;padding-top:.75rem}.altar-welcome__continuity.svelte-18m3jog p:where(.svelte-18m3jog){color:var(--color-parchment);margin:0 0 .25rem;line-height:1.5}.altar-welcome__continuity.svelte-18m3jog a:where(.svelte-18m3jog){min-height:2.25rem;color:var(--color-rune);text-underline-offset:.25em;align-items:center;gap:.45rem;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}.altar-welcome__art.svelte-18m3jog{border-top:1px solid var(--color-engraving);background:var(--color-void);height:60cqw;overflow:hidden}.altar-welcome__art.svelte-18m3jog img:where(.svelte-18m3jog){object-fit:cover;object-position:40% center;width:100%;height:100%}@container (width>=36rem){.altar-welcome__body.svelte-18m3jog{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr)}.altar-welcome__copy.svelte-18m3jog{padding:1.5rem}h2.svelte-18m3jog{font-size:2.125rem}.altar-welcome__art.svelte-18m3jog{border-top:0;border-left:1px solid var(--color-engraving);height:auto;min-height:22rem}.altar-welcome__art.svelte-18m3jog img:where(.svelte-18m3jog){object-position:38% center}}@media (forced-colors:active){.altar-welcome.svelte-18m3jog,.altar-welcome__begin.svelte-18m3jog,.altar-welcome__continuity.svelte-18m3jog,.altar-welcome__art.svelte-18m3jog{border-color:canvastext}}.naming.svelte-1hrz4g{border:1px solid var(--color-engraving);border-radius:var(--radius-panel);background:var(--color-obsidian);max-height:65dvh;color:var(--color-parchment);font-size:var(--text-sm);margin:.75rem;padding:1.1rem;overflow:auto}header.svelte-1hrz4g{justify-content:space-between;align-items:start;gap:1rem;display:flex}.eyebrow.svelte-1hrz4g{color:var(--color-rune);font-size:var(--text-xs);margin:0 0 .3rem}h2.svelte-1hrz4g,h3.svelte-1hrz4g{color:var(--color-bone);margin:0}p.svelte-1hrz4g{line-height:1.55}fieldset.svelte-1hrz4g{border:0;gap:.6rem;min-width:0;margin:1rem 0;padding:0;display:grid}label.svelte-1hrz4g{color:var(--color-bone);margin-top:.6rem}.method.svelte-1hrz4g,.hint.svelte-1hrz4g{color:var(--color-ash);font-size:var(--text-xs)}input.svelte-1hrz4g,select.svelte-1hrz4g,textarea.svelte-1hrz4g{box-sizing:border-box;width:100%;color:var(--color-bone);background:var(--color-void);border:1px solid var(--color-engraving);border-radius:var(--radius-rune);font:inherit;padding:.65rem}textarea.svelte-1hrz4g{resize:vertical}.rune-btn.svelte-1hrz4g{white-space:normal;justify-self:start;min-height:2.75rem;padding:.6rem .8rem}.actions.svelte-1hrz4g,.suggestions.svelte-1hrz4g{flex-wrap:wrap;gap:.5rem;display:flex}.assistance.svelte-1hrz4g,.review.svelte-1hrz4g{border:1px solid var(--color-engraving);border-radius:var(--radius-rune);padding:.8rem}summary.svelte-1hrz4g{cursor:pointer;min-height:2rem;color:var(--color-bone)}.fault.svelte-1hrz4g{color:var(--color-bone);border-inline-start:3px solid var(--color-rune);padding-inline-start:.7rem}.svelte-1hrz4g:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}button.svelte-1hrz4g:disabled{opacity:.65}.voice-input.svelte-1bk1ujp{min-width:0;color:var(--color-parchment);font:var(--text-sm)/1.5 var(--font-body);margin:0}.voice-toolbar.svelte-1bk1ujp{min-width:0;min-height:2.75rem;flex-wrap:wrap;align-items:flex-start;gap:.15rem .5rem;padding-inline-end:var(--voice-action-reserve,0px);display:flex}.voice-row.svelte-1bk1ujp{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;min-width:0;display:flex}.voice-settings.svelte-1bk1ujp{flex:auto;min-width:0}.voice-settings[open].svelte-1bk1ujp{flex-basis:100%}.voice-mic-label.svelte-1bk1ujp{display:var(--voice-label-display,inline)}.voice-status-row.svelte-1bk1ujp{flex-wrap:wrap;align-items:center;gap:.15rem .5rem;min-width:0;margin-top:.2rem;display:flex}.voice-status.svelte-1bk1ujp{min-width:0;color:var(--color-ash);flex:7rem;margin:0}.voice-status-row.svelte-1bk1ujp button:where(.svelte-1bk1ujp){font-size:var(--text-xs);flex:none}p.svelte-1bk1ujp{overflow-wrap:anywhere;margin:.4rem 0 0;line-height:1.6}button.svelte-1bk1ujp,select.svelte-1bk1ujp{min-height:2.75rem;color:var(--color-bone);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);background:var(--color-obsidian);font:inherit;padding:.4rem .65rem}button.svelte-1bk1ujp{cursor:pointer}button.svelte-1bk1ujp:hover:not(:disabled){border-color:var(--color-rune);background:var(--color-obsidian-2)}button.svelte-1bk1ujp:disabled{opacity:.55;cursor:default}.mic.svelte-1bk1ujp{background:0 0;border-color:#0000;justify-content:center;align-items:center;gap:.5rem;min-width:2.75rem;padding-inline:.35rem;display:inline-flex}.mic.svelte-1bk1ujp svg:where(.svelte-1bk1ujp){flex:none}summary.svelte-1bk1ujp{cursor:pointer;min-height:2.75rem;color:var(--color-parchment);align-content:center;padding-block:.4rem}.voice-options.svelte-1bk1ujp{box-sizing:border-box;width:calc(100% + var(--voice-action-reserve,0px));overscroll-behavior:contain;scrollbar-gutter:stable;border-top:1px solid var(--color-engraving);gap:.5rem;min-width:0;max-height:min(22rem,42dvh);margin-top:.35rem;padding:.75rem 0 .25rem;display:grid;overflow:auto}label.svelte-1bk1ujp{line-height:1.5;display:block}.check.svelte-1bk1ujp{align-items:flex-start;gap:.6rem;min-height:2.75rem;padding-block:.5rem;display:flex}.check.svelte-1bk1ujp input:where(.svelte-1bk1ujp){flex:none;margin-top:.15rem}textarea.svelte-1bk1ujp{resize:vertical;width:100%;min-height:3rem;max-height:12rem;color:var(--color-bone);background:var(--color-obsidian-2);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);font:inherit;padding:.6rem;line-height:1.6;display:block}select.svelte-1bk1ujp{background:var(--color-obsidian-2);width:100%}.countdown.svelte-1bk1ujp{border-left:2px solid var(--color-rune);margin-top:.5rem;padding-left:.65rem}.countdown.svelte-1bk1ujp p:where(.svelte-1bk1ujp){color:var(--color-bone);margin:0}button.svelte-1bk1ujp:focus-visible,select.svelte-1bk1ujp:focus-visible,input.svelte-1bk1ujp:focus-visible,textarea.svelte-1bk1ujp:focus-visible,summary.svelte-1bk1ujp:focus-visible,.voice-options.svelte-1bk1ujp:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.dictation-feedback.svelte-bhmuum{min-width:0;font:var(--text-sm)/1.6 var(--font-body);color:var(--color-parchment)}details.svelte-bhmuum{border-top:1px solid var(--color-engraving);min-width:0}summary.svelte-bhmuum{min-height:2.75rem;color:var(--color-bone);cursor:pointer;overflow-wrap:anywhere;align-content:center;padding-block:.45rem}p.svelte-bhmuum{overflow-wrap:anywhere;margin:.6rem 0;line-height:1.6}label.svelte-bhmuum{color:var(--color-parchment);margin-block:.5rem .35rem;display:block}fieldset.svelte-bhmuum{border:0;border-radius:0;min-width:0;margin:.75rem 0;padding:0}legend.svelte-bhmuum{color:var(--color-bone);margin-bottom:.25rem;padding:0;font-weight:600}input.svelte-bhmuum:not([type=checkbox]),textarea.svelte-bhmuum{box-sizing:border-box;width:100%;min-width:0;min-height:2.75rem;font:inherit;color:var(--color-bone);background:var(--color-obsidian-2);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);padding:.6rem;display:block}textarea.svelte-bhmuum{resize:vertical;max-height:12rem}.check.svelte-bhmuum{align-items:flex-start;gap:.6rem;min-height:2.75rem;padding-block:.4rem;display:flex}.check.svelte-bhmuum input:where(.svelte-bhmuum){flex:none;margin-top:.3rem}button.svelte-bhmuum{max-width:100%;min-height:2.75rem;font:inherit;overflow-wrap:anywhere;color:var(--color-bone);background:var(--color-obsidian);border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);cursor:pointer;margin:.25rem .35rem .25rem 0;padding:.45rem .7rem}button.svelte-bhmuum:hover:not(:disabled){border-color:var(--color-rune);background:var(--color-obsidian-2)}button[type=submit].svelte-bhmuum{background:var(--color-bone);border-color:var(--color-bone);color:var(--color-void)}button[type=submit].svelte-bhmuum:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}button.svelte-bhmuum:disabled{opacity:.55;cursor:default}.bounded.svelte-bhmuum{overflow-wrap:anywhere;scrollbar-gutter:stable;max-height:20rem;padding:.25rem .35rem .25rem 1.3rem;overflow-y:auto}.records.svelte-bhmuum{padding-left:0;list-style:none}.records.svelte-bhmuum>li:where(.svelte-bhmuum){border-bottom:1px solid var(--color-engraving);padding-block:.85rem}dl.svelte-bhmuum{margin:.6rem 0}dt.svelte-bhmuum{color:var(--color-bone);font-weight:600}dd.svelte-bhmuum{white-space:pre-wrap;overflow-wrap:anywhere;max-height:10rem;margin:.25rem 0 1rem;overflow-y:auto}span.svelte-bhmuum{white-space:pre-wrap}button.svelte-bhmuum:focus-visible,input.svelte-bhmuum:focus-visible,textarea.svelte-bhmuum:focus-visible,summary.svelte-bhmuum:focus-visible{outline:2px solid var(--color-rune);outline-offset:2px}.instrument-deck--bridge.svelte-1xg67vw{background:var(--color-void);grid-template-columns:17rem minmax(0,1fr);gap:0;height:100%;min-height:0;padding:0;display:grid;overflow:hidden}.instrument-deck--welcome.svelte-1xg67vw{grid-template-columns:minmax(0,1fr)}.bridge-rail.svelte-1xg67vw{border-right:1px solid var(--color-engraving);background:var(--color-obsidian);width:auto;min-width:0;padding:1.25rem .85rem;overflow-y:auto}.conversation-list.svelte-1xg67vw{width:100%}.conversation-list.svelte-1xg67vw>summary:where(.svelte-1xg67vw){min-height:2.75rem;color:var(--color-bone);font:600 var(--text-sm)/1.5 var(--font-body);cursor:pointer;margin-bottom:.65rem}.conversation-list.svelte-1xg67vw nav:where(.svelte-1xg67vw){flex-direction:column;gap:.15rem;margin-top:1rem;display:flex}.archive-label.svelte-1xg67vw{font:600 var(--text-xs)/1.4 var(--font-body);color:var(--color-parchment);margin:1.25rem .5rem .35rem}.archive-order.svelte-1xg67vw,.rail-empty.svelte-1xg67vw{color:var(--color-ash);font-size:var(--text-xs);line-height:1.6}.archive-order.svelte-1xg67vw{margin:0 .5rem .5rem}.conversation-row.svelte-1xg67vw{grid-template-columns:minmax(0,1fr) 2.75rem;align-items:center;gap:.15rem;display:grid}.pin-conversation.svelte-1xg67vw{border-radius:var(--radius-glyph);min-height:2.75rem;color:var(--color-ash);cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.pin-conversation.svelte-1xg67vw:hover{color:var(--color-bone);background:var(--color-obsidian-2)}.pin-conversation[aria-pressed=true].svelte-1xg67vw{color:var(--color-accent)}.new-seance.svelte-1xg67vw{width:100%;min-height:2.75rem;box-shadow:none;background:var(--color-bone);border-color:var(--color-bone);color:var(--color-void)}.new-seance.svelte-1xg67vw:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}.seance.svelte-1xg67vw{border-radius:var(--radius-glyph);overflow-wrap:anywhere;border:0;border-left:2px solid #0000;min-width:0;min-height:2.75rem;padding:.7rem .65rem}.seance.svelte-1xg67vw:hover{background:var(--color-obsidian-2)}.seance.current.svelte-1xg67vw{border:0;border-left:2px solid var(--color-rune);background:var(--color-obsidian-2);box-shadow:none}.seance.svelte-1xg67vw .t:where(.svelte-1xg67vw){font-size:var(--text-sm);color:var(--color-bone);margin-bottom:.15rem;line-height:1.5}.seance.svelte-1xg67vw .m:where(.svelte-1xg67vw){font-family:var(--font-body)}.seance.svelte-1xg67vw .chip:where(.svelte-1xg67vw){color:var(--color-parchment);font-size:var(--text-xs);white-space:normal;background:0 0;border:0;border-radius:0;margin:.2rem .45rem .2rem 0;padding:0;display:inline}.bridge-thread.svelte-1xg67vw{min-height:0;overflow:hidden}.bridge-heading.svelte-1xg67vw{border-bottom:1px solid var(--color-engraving);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.25rem 1rem;padding:.8rem clamp(1rem,3vw,2rem) .35rem;display:grid}.bridge-heading.svelte-1xg67vw>div:where(.svelte-1xg67vw){min-width:0}.bridge-heading.svelte-1xg67vw h1:where(.svelte-1xg67vw){color:var(--color-ash);font:600 var(--text-xs)/1.5 var(--font-body);letter-spacing:.06em;text-transform:uppercase}.conversation-title.svelte-1xg67vw{color:var(--color-bone);font:600 clamp(1.125rem, 1.5vw, 1.4rem)/1.4 var(--font-body);overflow-wrap:anywhere;margin-top:.45rem}.conversation-attention.svelte-1xg67vw{font-size:var(--text-sm);color:var(--color-bone);margin-top:.25rem;line-height:1.5}.conversation-tools.svelte-1xg67vw{min-width:0;font-size:var(--text-sm)}.conversation-tools.svelte-1xg67vw>summary:where(.svelte-1xg67vw){min-width:2.75rem;min-height:2.75rem;color:var(--color-parchment);cursor:pointer;align-content:center}.conversation-tools[open].svelte-1xg67vw{grid-column:1/-1}.seance-details.svelte-1xg67vw{min-width:0;font-size:var(--text-sm)}.seance-details.svelte-1xg67vw summary:where(.svelte-1xg67vw){white-space:nowrap;cursor:pointer;align-content:center;min-height:2.75rem;display:list-item}.seance-details.svelte-1xg67vw .chip:where(.svelte-1xg67vw){white-space:normal;margin-left:.5rem}.seance-details.svelte-1xg67vw .kv:where(.svelte-1xg67vw){background:0 0;border:0;border-radius:0;width:100%;padding:.75rem 0;position:static}.bridge-tools.svelte-1xg67vw{overscroll-behavior:contain;border-top:1px solid var(--color-engraving);max-height:min(20rem,40dvh);font-size:var(--text-sm);flex-wrap:wrap;flex:none;align-items:flex-start;gap:0 1rem;padding:.25rem 0 0;display:flex;overflow-y:auto}.bridge-tools.svelte-1xg67vw>details:where(.svelte-1xg67vw){background:0 0;border:0;min-width:0;padding:0}.bridge-tools.svelte-1xg67vw>details[open]:where(.svelte-1xg67vw){flex-basis:100%}.bridge-tools.svelte-1xg67vw summary:where(.svelte-1xg67vw){cursor:pointer;min-height:2.75rem;color:var(--color-parchment);align-content:center}.thread-scroll.svelte-1xg67vw{scrollbar-gutter:stable;gap:1.75rem;min-height:4rem;padding:1.5rem max(1rem,50% - 24rem)}.thread-scroll.svelte-1xg67vw:focus-visible{outline:1px solid var(--color-rune);outline-offset:-3px}.turn.svelte-1xg67vw{overflow-wrap:anywhere;max-width:100%}.turn--user.svelte-1xg67vw{max-width:min(42rem,92%)}.turn--user.svelte-1xg67vw .turn__meta:where(.svelte-1xg67vw){justify-content:flex-end}.turn__body.svelte-1xg67vw{white-space:pre-wrap;box-shadow:none;font-size:1rem;line-height:1.75}.turn--user.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){background:var(--color-obsidian-2);border:1px solid var(--color-engraving);border-radius:var(--radius-panel);padding:.85rem 1rem}.turn--agent.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){color:var(--color-bone);background:0 0;border:0;border-radius:0;padding:.25rem 0}.turn--agent[data-state=stale].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-control-border);padding-left:.85rem}.turn--agent[data-state=failed].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-ember);padding-left:.85rem}.turn--agent[data-state=cancelled].svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){border-left:2px solid var(--color-ash);padding-left:.85rem}.turn__meta.svelte-1xg67vw{flex-wrap:wrap;gap:.4rem .75rem}.turn__meta.svelte-1xg67vw .who:where(.svelte-1xg67vw){color:var(--color-parchment);font:600 var(--text-sm)/1.5 var(--font-body);font-variant:normal;letter-spacing:0}.conversation-empty.svelte-1xg67vw{text-align:center;margin:auto;padding:3rem 1rem}.conversation-empty.svelte-1xg67vw>span:where(.svelte-1xg67vw){color:var(--color-accent);font-size:1.6rem}.conversation-empty.svelte-1xg67vw h2:where(.svelte-1xg67vw){font:500 1.65rem/1.3 var(--font-body);color:var(--color-bone);margin:1rem 0 .7rem}.conversation-empty.svelte-1xg67vw p:where(.svelte-1xg67vw),.bridge-loading.svelte-1xg67vw{color:var(--color-parchment)}.retry-conversation.svelte-1xg67vw{align-self:flex-start;min-height:2.75rem}.latest-turn.svelte-1xg67vw{justify-content:center;padding:.25rem 1rem .5rem;display:flex}.latest-turn.svelte-1xg67vw button:where(.svelte-1xg67vw){border:1px solid var(--color-control-border);border-radius:var(--radius-glyph);min-height:2.75rem;color:var(--color-rune);background:var(--color-obsidian);cursor:pointer;padding:.4rem 1rem}.composer-area.svelte-1xg67vw{overscroll-behavior:contain;border-top:1px solid var(--color-engraving);flex:0 auto;min-height:0;max-height:min(36rem,65dvh);padding:.8rem clamp(1rem,3vw,2rem) 1rem;overflow-y:auto}.composer-area.svelte-1xg67vw:focus-visible{outline:2px solid var(--color-rune);outline-offset:-2px}.composer-shell.svelte-1xg67vw{border:1px solid var(--color-control-border);border-radius:var(--radius-panel);background:var(--color-obsidian);max-width:52rem;margin-inline:auto;padding:.65rem .85rem .75rem}.composer-shell.svelte-1xg67vw:focus-within{border-color:var(--color-rune)}.composer-destination.svelte-1xg67vw{min-width:0;font-size:var(--text-sm);align-items:center;gap:.75rem;margin-bottom:.55rem;display:flex}.composer-destination.svelte-1xg67vw label:where(.svelte-1xg67vw){color:var(--color-parchment);flex:none}#bridge-destination.svelte-1xg67vw{width:auto;min-width:0;max-width:28rem;min-height:2.75rem;color:var(--color-bone);font:inherit;background:0 0;border:0;border-radius:0;flex:auto;margin:0;padding:.4rem .25rem}.command-help.svelte-1xg67vw,.command-result.svelte-1xg67vw{font-size:var(--text-sm);overflow-wrap:anywhere;line-height:1.6}.command-help.svelte-1xg67vw{border-bottom:1px solid var(--color-engraving);margin:0 0 .75rem;padding:0 0 .75rem}.command-help.svelte-1xg67vw p:where(.svelte-1xg67vw)+p:where(.svelte-1xg67vw){margin-top:.35rem}.command-help.svelte-1xg67vw summary:where(.svelte-1xg67vw){cursor:pointer;align-content:center;min-height:2.75rem}.command-help.svelte-1xg67vw ul:where(.svelte-1xg67vw){padding-left:1.4rem}.command-help.svelte-1xg67vw code:where(.svelte-1xg67vw){white-space:pre-wrap;overflow-wrap:anywhere}.command-result.svelte-1xg67vw{color:var(--color-parchment);margin:.65rem 0 0}.composer-label.svelte-1xg67vw{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.composer-instructions.svelte-1xg67vw{color:var(--color-parchment);font-size:var(--text-sm);white-space:pre-wrap;overflow-wrap:anywhere;margin:.25rem 0 .75rem;line-height:1.6}.composer.svelte-1xg67vw{box-shadow:none;background:0 0;border:0;border-radius:0;margin:0;padding:0;display:flex}.composer.svelte-1xg67vw:focus-within{box-shadow:none;border:0}.composer.svelte-1xg67vw textarea:where(.svelte-1xg67vw){resize:vertical;background:0 0;width:100%;min-width:0;min-height:3rem;max-height:16rem;padding:0;font-size:1rem;line-height:1.5;display:block}.composer-actions.svelte-1xg67vw{--voice-action-reserve:6rem;border-top:1px solid var(--color-engraving);padding-top:.35rem;position:relative}.composer-actions--work.svelte-1xg67vw{--voice-action-reserve:9rem}.composer-voice.svelte-1xg67vw{min-width:0}.composer-send.svelte-1xg67vw{border-color:var(--color-bone);background:var(--color-bone);min-width:5rem;min-height:2.75rem;color:var(--color-void);box-shadow:none;margin:0;padding:.5rem 1rem;position:absolute;inset-block-start:.35rem;inset-inline-end:0}.composer-send.svelte-1xg67vw:hover:not(:disabled){background:var(--color-parchment);border-color:var(--color-parchment);color:var(--color-void)}.composer-send.svelte-1xg67vw:disabled{opacity:.5}.composer-footer.svelte-1xg67vw{max-width:52rem;color:var(--color-ash);font-size:var(--text-xs);flex-wrap:wrap;justify-content:space-between;gap:.3rem 1.5rem;margin:.35rem auto 0;line-height:1.6;display:flex}.composer-footer.svelte-1xg67vw p:where(.svelte-1xg67vw){max-width:38rem}.offering-recovery.svelte-1xg67vw{border:0;border-left:2px solid var(--color-rune);background:var(--color-obsidian);overscroll-behavior:contain;border-radius:0;flex:0 auto;min-height:4rem;max-height:min(22rem,45dvh);margin:.75rem 1rem;padding:.8rem 1rem;overflow-y:auto}.offering-recovery.svelte-1xg67vw p:where(.svelte-1xg67vw){color:var(--color-parchment);margin:.5rem 0;line-height:1.6}.offering-recovery.svelte-1xg67vw .offering-recovery__text:where(.svelte-1xg67vw){color:var(--color-bone);white-space:pre-wrap;overflow-wrap:anywhere;max-height:12rem;overflow:auto}.offering-recovery.svelte-1xg67vw .rune-btn:where(.svelte-1xg67vw){min-height:2.75rem;margin:.25rem .35rem .25rem 0}.atlas-links.svelte-1xg67vw{color:var(--color-parchment);font-size:var(--text-sm);flex-wrap:wrap;align-items:center;gap:.35rem 1rem;padding:.5rem clamp(1rem,3vw,2rem);display:flex}.atlas-links.svelte-1xg67vw a:where(.svelte-1xg67vw){color:var(--color-rune);align-items:center;min-height:2.75rem;display:inline-flex}.public-sources.svelte-1xg67vw .atlas-links:where(.svelte-1xg67vw){padding:0 0 .35rem}.turn.svelte-1xg67vw:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}.bridge-embedded.svelte-1xg67vw{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100%;overflow:hidden}.bridge-embedded.instrument-deck--welcome.svelte-1xg67vw{grid-template-rows:minmax(0,1fr)}.bridge-embedded.svelte-1xg67vw .bridge-rail:where(.svelte-1xg67vw){background:0 0;border:0;max-height:min(18rem,35dvh);padding:0 .95rem;overflow:auto}.bridge-embedded.svelte-1xg67vw .conversation-list:where(.svelte-1xg67vw)>summary:where(.svelte-1xg67vw){margin:0;font-weight:500}.bridge-embedded.svelte-1xg67vw .conversation-list:where(.svelte-1xg67vw) nav:where(.svelte-1xg67vw){margin-top:.25rem;padding-bottom:.75rem}.bridge-embedded.svelte-1xg67vw .bridge-heading:where(.svelte-1xg67vw){gap:.15rem .5rem;padding:.2rem .95rem}.bridge-embedded.svelte-1xg67vw .bridge-heading:where(.svelte-1xg67vw) h1:where(.svelte-1xg67vw){display:none}.bridge-embedded.svelte-1xg67vw .conversation-title:where(.svelte-1xg67vw){font:600 var(--text-base)/1.5 var(--font-body);margin:0}.bridge-embedded.svelte-1xg67vw .seance-details:where(.svelte-1xg67vw){font-size:var(--text-xs)}.bridge-embedded.svelte-1xg67vw .seance-details[open]:where(.svelte-1xg67vw){width:100%}.bridge-embedded.svelte-1xg67vw .seance-details:where(.svelte-1xg67vw) .kv:where(.svelte-1xg67vw){width:100%;position:static}.bridge-embedded.svelte-1xg67vw .bridge-tools:where(.svelte-1xg67vw){font-size:var(--text-xs);gap:0 1rem;padding:.25rem 0 0}.bridge-embedded.svelte-1xg67vw .atlas-links:where(.svelte-1xg67vw){gap:.25rem .75rem;padding:.25rem .95rem}.bridge-embedded.svelte-1xg67vw .public-sources:where(.svelte-1xg67vw) .atlas-links:where(.svelte-1xg67vw){padding-inline:0}.bridge-embedded.svelte-1xg67vw .thread-scroll:where(.svelte-1xg67vw){flex:1;gap:1.5rem;min-height:4rem;padding:1rem .95rem}.bridge-embedded.svelte-1xg67vw .composer-area:where(.svelte-1xg67vw){padding:.4rem .65rem .45rem}.bridge-embedded.svelte-1xg67vw .composer-shell:where(.svelte-1xg67vw){padding:.3rem .6rem .4rem}.bridge-embedded.svelte-1xg67vw .composer:where(.svelte-1xg67vw) textarea:where(.svelte-1xg67vw){min-height:3rem}.bridge-embedded.svelte-1xg67vw .composer-destination:where(.svelte-1xg67vw){gap:.5rem;margin-bottom:.1rem}.bridge-embedded.svelte-1xg67vw .composer-voice:where(.svelte-1xg67vw){--voice-label-display:none}.bridge-embedded.svelte-1xg67vw .composer-send:where(.svelte-1xg67vw){min-width:4.5rem;padding-inline:.75rem}.bridge-embedded.svelte-1xg67vw .turn__body:where(.svelte-1xg67vw){font-size:var(--text-base);line-height:1.7}@media (width<=48rem){.instrument-deck--bridge.svelte-1xg67vw{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.bridge-rail.svelte-1xg67vw{border-right:0;border-bottom:1px solid var(--color-engraving);max-height:35dvh;padding:0 .95rem;display:block;overflow:auto}.conversation-list.svelte-1xg67vw>summary:where(.svelte-1xg67vw){margin:0}.conversation-list.svelte-1xg67vw nav:where(.svelte-1xg67vw){max-height:12rem;margin-top:.5rem;padding-bottom:.75rem;overflow-y:auto}.bridge-heading.svelte-1xg67vw{gap:.25rem .5rem;padding:.25rem .95rem}.conversation-title.svelte-1xg67vw{font-size:var(--text-base);margin-top:.25rem}.seance-details.svelte-1xg67vw{font-size:var(--text-xs)}.seance-details.svelte-1xg67vw summary:where(.svelte-1xg67vw){white-space:normal}.seance-details.svelte-1xg67vw .kv:where(.svelte-1xg67vw){grid-template-columns:minmax(0,.7fr) minmax(0,1fr);width:100%;position:static}.bridge-tools.svelte-1xg67vw{font-size:var(--text-xs);padding-inline:0}.thread-scroll.svelte-1xg67vw{padding:1rem .95rem}.composer-area.svelte-1xg67vw{padding:.4rem .65rem .45rem}.composer-shell.svelte-1xg67vw{padding:.3rem .6rem .4rem}.composer.svelte-1xg67vw textarea:where(.svelte-1xg67vw){min-height:3rem}.composer-destination.svelte-1xg67vw{gap:.5rem;margin-bottom:.1rem}.composer-voice.svelte-1xg67vw{--voice-label-display:none}.composer-send.svelte-1xg67vw{min-width:4.5rem;padding-inline:.75rem}.composer-footer.svelte-1xg67vw{gap:.2rem .5rem}.turn--user.svelte-1xg67vw{max-width:95%}}.topbar.svelte-8jjqr2{background:var(--color-obsidian);border:0;border-bottom:1px solid var(--color-engraving);height:auto;min-height:4rem;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;z-index:40;border-image:;flex-wrap:wrap;flex:none;gap:.75rem;padding:.5rem 1.25rem;position:relative}.brand.svelte-8jjqr2{justify-content:center;width:3rem;min-height:3rem;padding:.125rem}.brand.svelte-8jjqr2:hover{background:var(--color-tertiary)}.altar-product.svelte-8jjqr2{color:var(--color-parchment);font-size:var(--text-sm);margin-top:.35rem}nav.instruments.svelte-8jjqr2{flex-wrap:wrap;align-self:center;gap:.25rem;height:auto;margin-left:.5rem;overflow:visible}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2){letter-spacing:0;text-transform:none;color:var(--color-ash);border-radius:var(--radius-rune);border:1px solid #0000;gap:.6rem;min-height:2.75rem;padding:.65rem .85rem}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2) svg,.application-menu.svelte-8jjqr2 svg{color:currentColor;flex:none}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2):hover{color:var(--color-bone);background:var(--color-obsidian-2)}nav.instruments.svelte-8jjqr2>a[aria-current]:where(.svelte-8jjqr2){color:var(--color-accent);text-shadow:none;border-color:color-mix(in srgb,var(--color-accent) 25%,var(--color-engraving));background:color-mix(in srgb,var(--color-accent) 10%,var(--color-obsidian))}.topbar.svelte-8jjqr2 .spacer:where(.svelte-8jjqr2){flex:1 1 0}.sigil.svelte-8jjqr2{border-radius:var(--radius-rune);box-shadow:none;border-color:#0000;padding:.55rem .7rem;animation:none}.sigil-identity.svelte-8jjqr2{display:none}.offline-status.svelte-8jjqr2{color:var(--color-ash);font-size:var(--text-xs)}.application-menu.svelte-8jjqr2{flex-shrink:0;align-self:center;position:relative}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2){border-radius:var(--radius-rune);min-height:2.75rem;color:var(--color-ash);cursor:pointer;font-size:var(--text-xs);align-items:center;gap:.5rem;padding:.5rem .65rem;list-style:none;display:flex}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2):hover{color:var(--color-bone);background:var(--color-obsidian-2)}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2)::-webkit-details-marker{display:none}.application-menu.svelte-8jjqr2 nav:where(.svelte-8jjqr2){z-index:50;background:var(--color-tertiary);border:1px solid var(--color-tertiary-edge);border-radius:var(--radius-glyph);min-width:14rem;padding:.35rem;position:absolute;inset-block-start:100%;inset-inline-start:-.5rem}.application-menu.svelte-8jjqr2 a:where(.svelte-8jjqr2){min-height:2.75rem;font-size:var(--text-sm);letter-spacing:0;text-transform:none;color:var(--color-bone);align-items:center;gap:.75rem;padding:.65rem;text-decoration:none;display:flex}.application-menu.svelte-8jjqr2 a:where(.svelte-8jjqr2):hover,.application-menu.svelte-8jjqr2 a[aria-current=page]:where(.svelte-8jjqr2){background:color-mix(in srgb, var(--color-rune) 10%, var(--color-tertiary))}.altar-workbench.svelte-8jjqr2{background:var(--color-void);flex:none;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}#altar-main.svelte-8jjqr2{background:var(--color-void);flex:1 1 0;min-width:0;min-height:0;overflow:auto;container:work-area/inline-size}#altar-main.svelte-8jjqr2:before,#altar-main.svelte-8jjqr2:after,main[hidden].svelte-8jjqr2{display:none}.svelte-8jjqr2:focus-visible{outline:2px solid var(--color-rune);outline-offset:3px}@media (width<=75rem){.topbar.svelte-8jjqr2{gap:.65rem;padding-inline:.75rem}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2){gap:.4rem;padding-inline:.5rem}.offline-status.svelte-8jjqr2{display:none}}@media (width<=56rem){.topbar.svelte-8jjqr2{flex-wrap:wrap;gap:.25rem .5rem;padding:.25rem .5rem .5rem;display:flex}.altar-about.svelte-8jjqr2{order:0}.sigil.svelte-8jjqr2{max-width:9rem;font-size:var(--text-xs);white-space:normal;margin:0 0 0 auto;line-height:1.3}.topbar.svelte-8jjqr2 .spacer:where(.svelte-8jjqr2){display:none}nav.instruments.svelte-8jjqr2{flex:1 0 100%;order:4;justify-content:center;margin:0}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2),.application-menu.svelte-8jjqr2{flex:1}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2),.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2){justify-content:center}.application-menu.svelte-8jjqr2 nav:where(.svelte-8jjqr2){inset-inline:auto 0}}@media (width<=36rem){nav.instruments.svelte-8jjqr2{gap:0}nav.instruments.svelte-8jjqr2>a:where(.svelte-8jjqr2),.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2){font-size:var(--text-xs);flex-direction:column;gap:.2rem;padding:.4rem .2rem}.application-menu.svelte-8jjqr2>summary:where(.svelte-8jjqr2)>span[aria-hidden]:where(.svelte-8jjqr2){display:none}} diff --git a/src/lychd/public/_app/immutable/entry/app.C82VrRSX.js b/src/lychd/public/_app/immutable/entry/app.CvzJPcjZ.js similarity index 95% rename from src/lychd/public/_app/immutable/entry/app.C82VrRSX.js rename to src/lychd/public/_app/immutable/entry/app.CvzJPcjZ.js index 5f2ea01e..bbd09ccc 100644 --- a/src/lychd/public/_app/immutable/entry/app.C82VrRSX.js +++ b/src/lychd/public/_app/immutable/entry/app.CvzJPcjZ.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.z1MQBbBy.js","../chunks/BVeF9d6R.js","../chunks/Dl--Q2n6.js","./payload.DSmR2FwN.js","../chunks/BfPB4xQI.js","../chunks/DPaxGaK1.js","../chunks/dF6cm78S.js","../chunks/CSPzMgon.js","../chunks/BKjpEiX0.js","../chunks/Dl-f54hP.js","../chunks/DzrQkemW.js","../chunks/GhqezXWZ.js","../chunks/CSsUtL4f.js","../chunks/D5zJvDEN.js","../chunks/gRE95TiB.js","../assets/ConsentCard.DmI3pRx9.css","../chunks/D-ajtUB9.js","../chunks/2s_sFVk3.js","../chunks/CY__nf9B.js","../assets/presentation.BwVcr1Hm.css","../chunks/DREvf0So.js","../chunks/_X6R9H5H.js","../assets/0.DK_BpHVu.css","../nodes/1.BOgbBNfU.js","../nodes/2.BcalWTIe.js","../chunks/DSHrWEI0.js","../nodes/3.DzXg6V69.js","../chunks/BaqZouxI.js","../assets/AtlasView.DzfE_mIK.css","../nodes/4.DJEBLRNX.js","../nodes/5.C5La8t2_.js","../assets/5.vXWeQPOt.css","../nodes/6.J9abSANL.js","../nodes/7.Dx3r85BU.js","../chunks/DZioNx3Q.js","../chunks/BDVX0gvA.js","../assets/CanvasView.DFfHZ0OJ.css","../assets/CanvasWorkspace.DfXTvOAv.css","../nodes/8.CaqlTvZN.js","../nodes/9.B6tn2Gvv.js","../nodes/10.C7dUsl7C.js","../chunks/CP05gEzd.js","../chunks/Ti2jMZbH.js","../assets/GraphCanvas.DjIUYOH8.css","../assets/LoomView.CQXjLEBJ.css","../nodes/11.DfH-xv8G.js","../nodes/12.BDdw0x4o.js","../assets/12.D-7XEci-.css","../nodes/13.CBFYqpCv.js","../chunks/14dsPkLZ.js","../assets/AnimatorRail.Bpx-5a64.css","../assets/13.DaCyDcrd.css","../nodes/14.B0GGT2EC.js","../assets/14.BzSKf9EA.css","../nodes/15.B9xo_uUQ.js","../assets/15.BnZEO_Vm.css","../nodes/16.B1nG_H1f.js","../chunks/ByRm9Xz1.js","../assets/SeancesWorkspace.3bhlI6mD.css","../nodes/17.BCV1FDv8.js"])))=>i.map(i=>d[i]); -import{t as e}from"../chunks/DclECHGd.js";var t={},n=[()=>e(()=>import(`../nodes/0.z1MQBbBy.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]),import.meta.url),()=>e(()=>import(`../nodes/1.BOgbBNfU.js`),__vite__mapDeps([23,1,4,2,3,5]),import.meta.url),()=>e(()=>import(`../nodes/2.BcalWTIe.js`),__vite__mapDeps([24,1,2,3,25,6,4,9]),import.meta.url),()=>e(()=>import(`../nodes/3.DzXg6V69.js`),__vite__mapDeps([26,1,4,2,3,25,5,27,6,18,12,13,28]),import.meta.url),()=>e(()=>import(`../nodes/4.DJEBLRNX.js`),__vite__mapDeps([29,1,4,2,3,25,5,27,6,18,12,13,28]),import.meta.url),()=>e(()=>import(`../nodes/5.C5La8t2_.js`),__vite__mapDeps([30,1,4,2,3,6,5,12,13,11,31]),import.meta.url),()=>e(()=>import(`../nodes/6.J9abSANL.js`),__vite__mapDeps([32,1,25]),import.meta.url),()=>e(()=>import(`../nodes/7.Dx3r85BU.js`),__vite__mapDeps([33,1,4,2,3,25,5,34,6,10,9,12,13,35,7,21,36,37]),import.meta.url),()=>e(()=>import(`../nodes/8.CaqlTvZN.js`),__vite__mapDeps([38,1,4,2,3,25,5,34,6,10,9,12,13,35,7,21,36,37]),import.meta.url),()=>e(()=>import(`../nodes/9.B6tn2Gvv.js`),__vite__mapDeps([39,1,25,35,6,3,2,4,7,13,21,36]),import.meta.url),()=>e(()=>import(`../nodes/10.C7dUsl7C.js`),__vite__mapDeps([40,1,25,41,4,2,3,6,5,10,9,11,7,8,42,43,12,13,16,44]),import.meta.url),()=>e(()=>import(`../nodes/11.DfH-xv8G.js`),__vite__mapDeps([45,1,4,2,3,25,5,41,6,10,9,11,7,8,42,43,12,13,16,44]),import.meta.url),()=>e(()=>import(`../nodes/12.BDdw0x4o.js`),__vite__mapDeps([46,1,4,2,3,25,6,10,9,5,12,13,16,47]),import.meta.url),()=>e(()=>import(`../nodes/13.CBFYqpCv.js`),__vite__mapDeps([48,1,25,10,2,3,9,12,13,49,42,8,43,50,7,51]),import.meta.url),()=>e(()=>import(`../nodes/14.B0GGT2EC.js`),__vite__mapDeps([52,1,4,2,3,25,5,6,10,9,12,13,17,18,19,16,42,8,43,49,50,11,53]),import.meta.url),()=>e(()=>import(`../nodes/15.B9xo_uUQ.js`),__vite__mapDeps([54,1,4,2,3,5,6,8,12,13,14,15,55]),import.meta.url),()=>e(()=>import(`../nodes/16.B1nG_H1f.js`),__vite__mapDeps([56,1,25,57,2,3,6,4,9,12,13,11,20,8,58]),import.meta.url),()=>e(()=>import(`../nodes/17.BCV1FDv8.js`),__vite__mapDeps([59,1,4,2,3,25,5,57,6,9,12,13,11,20,8,58]),import.meta.url)],r=[],i={"/":[2],"/atlas":[3],"/atlas/[project_id]":[4],"/bridge":[5],"/bridge/[session_id]":[6],"/canvas":[7],"/canvas/local":[9],"/canvas/[project_id]":[8],"/loom":[10],"/loom/[pattern_id]/[revision]":[11],"/nexus":[12],"/orb":[13],"/orb/[run_id]":[14],"/scavenger":[15],"/seances":[16],"/seances/[session_id]":[17]},a={handleError:(({kind:e,error:t})=>{e===`unknown`&&console.error(t)}),reroute:(()=>{}),transport:{}},o=Object.fromEntries(Object.entries(a.transport).map(([e,t])=>[e,t.decode])),s=Object.fromEntries(Object.entries(a.transport).map(([e,t])=>[e,t.encode])),c=!1,l=(e,t)=>o[e](t),u=()=>e(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{l as decode,o as decoders,i as dictionary,s as encoders,u as get_error_template,c as hash,a as hooks,t as matchers,n as nodes,r as server_loads}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BbJ7sRr5.js","../chunks/BVeF9d6R.js","../chunks/Dl--Q2n6.js","./payload.DSmR2FwN.js","../chunks/BfPB4xQI.js","../chunks/DPaxGaK1.js","../chunks/dF6cm78S.js","../chunks/CSPzMgon.js","../chunks/BKjpEiX0.js","../chunks/Dl-f54hP.js","../chunks/DzrQkemW.js","../chunks/GhqezXWZ.js","../chunks/CSsUtL4f.js","../chunks/D5zJvDEN.js","../chunks/gRE95TiB.js","../assets/ConsentCard.DmI3pRx9.css","../chunks/D-ajtUB9.js","../chunks/2s_sFVk3.js","../chunks/CY__nf9B.js","../assets/presentation.BwVcr1Hm.css","../chunks/DREvf0So.js","../chunks/_X6R9H5H.js","../assets/0.BIhWPaTl.css","../nodes/1.BOgbBNfU.js","../nodes/2.BcalWTIe.js","../chunks/DSHrWEI0.js","../nodes/3.DzXg6V69.js","../chunks/BaqZouxI.js","../assets/AtlasView.DzfE_mIK.css","../nodes/4.DJEBLRNX.js","../nodes/5.C5La8t2_.js","../assets/5.vXWeQPOt.css","../nodes/6.J9abSANL.js","../nodes/7.Dx3r85BU.js","../chunks/DZioNx3Q.js","../chunks/BDVX0gvA.js","../assets/CanvasView.DFfHZ0OJ.css","../assets/CanvasWorkspace.DfXTvOAv.css","../nodes/8.CaqlTvZN.js","../nodes/9.B6tn2Gvv.js","../nodes/10.C7dUsl7C.js","../chunks/CP05gEzd.js","../chunks/Ti2jMZbH.js","../assets/GraphCanvas.DjIUYOH8.css","../assets/LoomView.CQXjLEBJ.css","../nodes/11.DfH-xv8G.js","../nodes/12.BDdw0x4o.js","../assets/12.D-7XEci-.css","../nodes/13.CBFYqpCv.js","../chunks/14dsPkLZ.js","../assets/AnimatorRail.Bpx-5a64.css","../assets/13.DaCyDcrd.css","../nodes/14.B0GGT2EC.js","../assets/14.BzSKf9EA.css","../nodes/15.B9xo_uUQ.js","../assets/15.BnZEO_Vm.css","../nodes/16.B1nG_H1f.js","../chunks/ByRm9Xz1.js","../assets/SeancesWorkspace.3bhlI6mD.css","../nodes/17.BCV1FDv8.js"])))=>i.map(i=>d[i]); +import{t as e}from"../chunks/DclECHGd.js";var t={},n=[()=>e(()=>import(`../nodes/0.BbJ7sRr5.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22]),import.meta.url),()=>e(()=>import(`../nodes/1.BOgbBNfU.js`),__vite__mapDeps([23,1,4,2,3,5]),import.meta.url),()=>e(()=>import(`../nodes/2.BcalWTIe.js`),__vite__mapDeps([24,1,2,3,25,6,4,9]),import.meta.url),()=>e(()=>import(`../nodes/3.DzXg6V69.js`),__vite__mapDeps([26,1,4,2,3,25,5,27,6,18,12,13,28]),import.meta.url),()=>e(()=>import(`../nodes/4.DJEBLRNX.js`),__vite__mapDeps([29,1,4,2,3,25,5,27,6,18,12,13,28]),import.meta.url),()=>e(()=>import(`../nodes/5.C5La8t2_.js`),__vite__mapDeps([30,1,4,2,3,6,5,12,13,11,31]),import.meta.url),()=>e(()=>import(`../nodes/6.J9abSANL.js`),__vite__mapDeps([32,1,25]),import.meta.url),()=>e(()=>import(`../nodes/7.Dx3r85BU.js`),__vite__mapDeps([33,1,4,2,3,25,5,34,6,10,9,12,13,35,7,21,36,37]),import.meta.url),()=>e(()=>import(`../nodes/8.CaqlTvZN.js`),__vite__mapDeps([38,1,4,2,3,25,5,34,6,10,9,12,13,35,7,21,36,37]),import.meta.url),()=>e(()=>import(`../nodes/9.B6tn2Gvv.js`),__vite__mapDeps([39,1,25,35,6,3,2,4,7,13,21,36]),import.meta.url),()=>e(()=>import(`../nodes/10.C7dUsl7C.js`),__vite__mapDeps([40,1,25,41,4,2,3,6,5,10,9,11,7,8,42,43,12,13,16,44]),import.meta.url),()=>e(()=>import(`../nodes/11.DfH-xv8G.js`),__vite__mapDeps([45,1,4,2,3,25,5,41,6,10,9,11,7,8,42,43,12,13,16,44]),import.meta.url),()=>e(()=>import(`../nodes/12.BDdw0x4o.js`),__vite__mapDeps([46,1,4,2,3,25,6,10,9,5,12,13,16,47]),import.meta.url),()=>e(()=>import(`../nodes/13.CBFYqpCv.js`),__vite__mapDeps([48,1,25,10,2,3,9,12,13,49,42,8,43,50,7,51]),import.meta.url),()=>e(()=>import(`../nodes/14.B0GGT2EC.js`),__vite__mapDeps([52,1,4,2,3,25,5,6,10,9,12,13,17,18,19,16,42,8,43,49,50,11,53]),import.meta.url),()=>e(()=>import(`../nodes/15.B9xo_uUQ.js`),__vite__mapDeps([54,1,4,2,3,5,6,8,12,13,14,15,55]),import.meta.url),()=>e(()=>import(`../nodes/16.B1nG_H1f.js`),__vite__mapDeps([56,1,25,57,2,3,6,4,9,12,13,11,20,8,58]),import.meta.url),()=>e(()=>import(`../nodes/17.BCV1FDv8.js`),__vite__mapDeps([59,1,4,2,3,25,5,57,6,9,12,13,11,20,8,58]),import.meta.url)],r=[],i={"/":[2],"/atlas":[3],"/atlas/[project_id]":[4],"/bridge":[5],"/bridge/[session_id]":[6],"/canvas":[7],"/canvas/local":[9],"/canvas/[project_id]":[8],"/loom":[10],"/loom/[pattern_id]/[revision]":[11],"/nexus":[12],"/orb":[13],"/orb/[run_id]":[14],"/scavenger":[15],"/seances":[16],"/seances/[session_id]":[17]},a={handleError:(({kind:e,error:t})=>{e===`unknown`&&console.error(t)}),reroute:(()=>{}),transport:{}},o=Object.fromEntries(Object.entries(a.transport).map(([e,t])=>[e,t.decode])),s=Object.fromEntries(Object.entries(a.transport).map(([e,t])=>[e,t.encode])),c=!1,l=(e,t)=>o[e](t),u=()=>e(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{l as decode,o as decoders,i as dictionary,s as encoders,u as get_error_template,c as hash,a as hooks,t as matchers,n as nodes,r as server_loads}; \ No newline at end of file diff --git a/src/lychd/public/_app/immutable/nodes/0.BbJ7sRr5.js b/src/lychd/public/_app/immutable/nodes/0.BbJ7sRr5.js new file mode 100644 index 00000000..fd39cee8 --- /dev/null +++ b/src/lychd/public/_app/immutable/nodes/0.BbJ7sRr5.js @@ -0,0 +1,4 @@ +import{A as e,C as t,Ct as n,D as r,Dt as i,F as a,Ft as o,H as s,I as c,J as l,K as u,M as d,Mt as f,N as p,Ot as m,P as h,Pt as ee,Q as g,Rt as _,S as v,St as y,T as b,Tt as x,U as te,W as S,X as ne,Y as C,_ as w,_t as T,a as E,b as D,bt as O,ct as k,d as re,dt as A,et as j,ft as M,g as N,h as P,ht as ie,it as ae,k as oe,kt as F,l as se,lt as ce,mt as I,o as L,ot as R,pt as z,r as le,s as B,st as ue,t as de,tt as fe,ut as pe,v as me,w as he,x as V,y as ge,yt as H,z as U}from"../chunks/BVeF9d6R.js";import{n as W,t as G}from"../chunks/Dl--Q2n6.js";import{t as K}from"../chunks/BfPB4xQI.js";import"../chunks/DPaxGaK1.js";import{i as _e,n as q,r as ve,t as ye}from"../chunks/dF6cm78S.js";import{n as be,t as xe}from"../chunks/CSPzMgon.js";import{n as Se,r as Ce}from"../chunks/BKjpEiX0.js";import"../chunks/Dl-f54hP.js";import{t as J}from"../chunks/DzrQkemW.js";import{a as we,c as Y,i as X,l as Z,o as Te,t as Ee}from"../chunks/GhqezXWZ.js";import{A as De,D as Oe,F as ke,H as Ae,I as je,J as Me,O as Ne,X as Pe,Y 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,q as We,rt as Ge,st as Ke,t as qe,ut as Je,w as Ye,y as Xe}from"../chunks/CSsUtL4f.js";import{t as Ze}from"../chunks/gRE95TiB.js";import{t as Qe}from"../chunks/D-ajtUB9.js";import{n as $e,t as et}from"../chunks/2s_sFVk3.js";import{t as tt}from"../chunks/CY__nf9B.js";import{d as nt,i as rt,l as it,s as at,t as ot,u as st}from"../chunks/DREvf0So.js";import{t as ct}from"../chunks/_X6R9H5H.js";var lt=Object.defineProperty,ut=((e,t)=>{let n={};for(var r in e)lt(n,r,{get:e[r],enumerable:!0});return t||lt(n,Symbol.toStringTag,{value:`Module`}),n})({prerender:()=>!1,ssr:()=>!1}),dt=Symbol(`Bridge workspace`);function ft(){let e=new Se,t=new Se,n=new Se,r=new Se,i=new Se,a=new Se;return{drafts:e,draftRevisions:t,pending:n,settlements:i,consentDecisions:a,refused:r,setDraft(n,r){(e.get(n)??``)!==r&&(t.set(n,(t.get(n)??0)+1),r?e.set(n,r):e.delete(n))},get needsUnloadWarning(){return e.size>0||n.size>0||r.size>0||[...a.values()].some(e=>!e.settled)}}}var pt=`lychd.bridge-dock.layout.v1`,Q={width:360,side:`left`,open:!0};function mt(e){return Math.round(Math.min(720,Math.max(320,e)))}function ht(e){try{let t=JSON.parse(e??`null`);if(typeof t!=`object`||!t)return{...Q};let n=t;return{width:typeof n.width==`number`&&Number.isFinite(n.width)?mt(n.width):Q.width,side:n.side===`left`||n.side===`right`?n.side:Q.side,open:typeof n.open==`boolean`?n.open:Q.open}}catch{return{...Q}}}var $=S(`Bridge`),gt=S(``),_t=S(``),vt=S(``),yt=S(`

Bridge

Viewing:

Page content is not attached to messages.

`,1),bt=S(`

Bridge is offline

This development workbench has not connected to LychD. Conversations and consent status are unavailable.

`),xt=S(``),St=S(`
`);function Ct(e,n){m(n,!0);let r=de(n,`open`,15,!0),l=de(n,`narrow`,15,!1),u=de(n,`forceOpen`,3,!1),d=de(n,`focused`,3,!1),f=de(n,`focusHref`,3,`/seances`),h=de(n,`focusLabel`,3,`Open Séance`),_=de(n,`browseHref`,3,`/seances`),x=de(n,`workHref`,3,`/orb`),te=de(n,`available`,3,!0),S=de(n,`viewing`,3,`Altar`),w=H(ie(Q.width)),D=H(ie(Q.side)),O=H(ie(Q.open)),k=H(1280),re=y(()=>Math.max(320,Math.min(720,Math.floor(g(k)*.6)))),P=y(()=>Math.min(g(w),g(re))),ae=y(()=>l()&&r()&&!d()),oe=y(()=>r()||d()),F;function se(e){return F=e,()=>{F===e&&(F=void 0)}}let ce=H(!1),L=null,le=!1,B=null;function fe(e){r()&&!e&&!d()&&n.onsuspend?.(),r(e)}a(()=>{let e=window.matchMedia?.(`(max-width: 56rem)`);l(e?.matches??!1);let t=null;try{t=localStorage.getItem(pt);let e=ht(t);T(w,e.width,!0),T(D,e.side,!0),T(O,t===null&&l()?!1:e.open,!0),u()||fe(t===null&&l()?!1:e.open)}catch{l()&&(T(O,!1),u()||fe(!1))}let n=e=>{l(e.matches)};return e?.addEventListener?.(`change`,n),T(ce,!0),()=>e?.removeEventListener?.(`change`,n)}),ue(()=>{if(g(ce))try{localStorage.setItem(pt,JSON.stringify({width:g(w),side:g(D),open:g(O)}))}catch{}}),ue(()=>{let e=F;g(ae)&&!le&&e?(L=document.activeElement instanceof HTMLElement&&document.activeElement!==document.body?document.activeElement:document.getElementById(`bridge-toggle`),j().then(()=>{l()&&r()&&!d()&&!e.contains(document.activeElement)&&e.querySelector(`[data-dock-close]`)?.focus()})):!g(ae)&&le&&(!d()&&L?.isConnected&&L.focus({preventScroll:!0}),L=null),le=g(ae)});function me(e){if(g(ae)&&F){if(e.key===`Escape`&&!e.defaultPrevented)e.preventDefault(),ge();else if(e.key===`Tab`){let t=[...F.querySelectorAll(`a[href], button:not(:disabled), textarea:not(:disabled), input:not(:disabled), select:not(:disabled), summary, [tabindex='0']`)].filter(e=>e.tabIndex>=0&&!e.closest(`[hidden], [inert]`)&&e.getClientRects().length>0),n=t[0],r=t.at(-1);n?e.shiftKey&&(document.activeElement===n||!F.contains(document.activeElement))?(e.preventDefault(),r?.focus()):e.shiftKey||document.activeElement!==r&&F.contains(document.activeElement)||(e.preventDefault(),n.focus()):(e.preventDefault(),F.focus())}}}function V(){r()?ge():(T(O,!0),n.onexpand?n.onexpand():r(!0))}function ge(){T(O,!1),fe(!1),j().then(()=>document.getElementById(`bridge-toggle`)?.focus({preventScroll:!0}))}function W(e){e.button!==0||l()||(B={x:e.clientX,width:g(P),pointer:e.pointerId},e.currentTarget.setPointerCapture?.(e.pointerId),e.preventDefault())}function G(e){B&&e.pointerId===B.pointer&&T(w,Math.min(g(re),mt(B.width+(e.clientX-B.x)*(g(D)===`left`?1:-1))),!0)}function K(e){B?.pointer===e.pointerId&&(B=null)}function _e(e){if(e.key===`Home`)T(w,320,!0);else if(e.key===`End`)T(w,g(re),!0);else if(e.key===`ArrowLeft`||e.key===`ArrowRight`)T(w,Math.min(g(re),mt(g(P)+(e.key===`ArrowRight`?24:-24)*(g(D)===`left`?1:-1))),!0);else return;e.preventDefault()}var q=St();ne(`keydown`,pe,me);let ve;var ye=A(q),be=e=>{var t=gt(),n=A(t),i=z(n,!0),a=I(n),c=e=>{var t=$();s(e,t)};p(a,e=>{r()||e(c)}),o(t),R(()=>{N(t,`aria-label`,r()?`Collapse Bridge`:`Expand Bridge`),N(t,`aria-expanded`,r()),N(t,`title`,r()?`Collapse Bridge`:`Expand Bridge`),U(i,g(D)===`left`===r()?`<<`:`>>`)}),C(`click`,t,V),s(e,t)};p(ye,e=>{d()||e(be)});var xe=I(ye,2),Se=A(xe),Ce=e=>{var t=_t();C(`click`,t,ge),s(e,t)};p(Se,e=>{g(ae)&&e(Ce)});var J=I(Se,2),we=A(J),Y=e=>{var t=vt(),n=A(t),r=I(n,2);o(t),R(()=>{N(n,`href`,x()),N(r,`href`,_())}),s(e,t)},X=e=>{var t=yt(),n=M(t),r=A(n),i=I(A(r)),a=I(A(i),1,!0);o(i),o(r);var c=I(r,2),l=A(c),u=I(A(l)),d=z(u,!0);o(l);var p=I(l,2);o(c),o(n),ee(2),R(()=>{U(a,S()),N(l,`href`,f()),N(l,`aria-label`,h()),N(l,`title`,h()),U(d,h()),N(p,`aria-label`,`Dock Bridge ${g(D)===`left`?`right`:`left`}`),N(p,`title`,`Dock Bridge ${g(D)===`left`?`right`:`left`}`)}),C(`click`,p,()=>{T(D,g(D)===`left`?`right`:`left`,!0)}),s(e,t)};p(we,e=>{d()?e(Y):e(X,-1)});var Z=I(we,2),Te=e=>{var t=bt(),r=I(A(t),4);o(t),C(`click`,r,function(...e){n.onconnect?.apply(this,e)}),s(e,t)};p(Z,e=>{te()||e(Te)});var Ee=I(Z,2),De=A(Ee);c(De,()=>n.children),o(Ee),o(J);var Oe=I(J,2),ke=e=>{var t=xt();R(()=>{N(t,`aria-valuemin`,320),N(t,`aria-valuemax`,g(re)),N(t,`aria-valuenow`,g(P))}),C(`pointerdown`,t,W),C(`pointermove`,t,G),C(`pointerup`,t,K),ne(`pointercancel`,t,K),ne(`lostpointercapture`,t,()=>{B=null}),C(`keydown`,t,_e),s(e,t)};p(Oe,e=>{!l()&&!d()&&e(ke)}),o(xe),o(q),b(q,()=>se),R(()=>{N(q,`id`,d()?`altar-main`:void 0),t(q,1,he([`dock-shell`,{"dock-left":g(D)===`left`,"dock-modal":l()&&!d(),"dock-collapsed":!g(oe),"dock-focused":d()}]),`svelte-1usyivu`),N(q,`role`,d()?`main`:g(ae)?`dialog`:void 0),N(q,`aria-label`,d()?`Bridge workspace`:void 0),N(q,`aria-modal`,g(ae)?!0:void 0),N(q,`aria-labelledby`,g(ae)?`bridge-dock-title`:void 0),ve=v(q,``,ve,{"--dock-width":`${g(P)}px`}),N(xe,`hidden`,!g(oe)),N(J,`role`,l()||d()?void 0:`complementary`),N(J,`aria-labelledby`,d()?void 0:`bridge-dock-title`),N(Ee,`hidden`,!te())}),E(`innerWidth`,e=>T(k,e,!0)),s(e,q),i()}l([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);function wt(e,t=0){return{sessionId:e.session_id,runId:e.run_id,cursor:e.cursor,authorityGeneration:t,content:e.content,runStatus:e.run_status,activity:e.activity,state:e.terminal?e.run_status===`cancelled`?`cancelled`:e.run_status.includes(`fail`)?`failed`:`done`:`streaming`,fragments:e.fragments.map(e=>({...e})),patternId:e.pattern_id,patternRevision:e.pattern_revision,loomPath:e.loom_path,orbPath:e.orb_path,evidenceCapture:e.evidence_capture,occurrenceId:e.occurrence_id??null,dispatchOccurrenceId:e.dispatch_occurrence_id??null,grantId:e.grant_id??null,capabilityKey:e.capability_key??null,transitionOccurrenceId:e.transition_occurrence_id??null,transitionRequestId:e.transition_request_id??null,transitionPhase:e.transition_phase??null,delegatedJobId:e.delegated_job_id??null,delegatedRuntime:e.delegated_runtime??null,delegatedProfile:e.delegated_profile??null,delegatedStatus:e.delegated_status??null}}function Tt(e,t,n){if(e.runId!==t.run_id)throw Error(`A run snapshot cannot replace a different live turn.`);if(e.sessionId!==t.session_id)throw Error(`A run snapshot cannot replace a turn from another session.`);return n!==void 0&&n!==e.authorityGeneration||t.cursore.role===`agent`&&e.run_id).map(e=>e.run_id)),i=[],a=t.filter(e=>{let t=e.sessionId===n.id&&r.has(e.runId);return t&&i.push(e.runId),!t});for(let t of e.active_runs)a.some(e=>e.runId===t.run_id)||a.push(wt(t));return{liveTurns:a,retiredRunIds:i}}var Dt=S(` `),Ot=S(`Look into the Orb `),kt=S(`Evidence link unavailable`),At=S(``),jt=S(`

The supplied projection belongs to another Run.

`),Mt=S(`
Pattern
Revision
`,1),Nt=S(`
Run status
Declared score
`,1),Pt=S(`
Delegated job
`,1),Ft=S(`View declared score `),It=S(`

Declared score link unavailable

`),Lt=S(`
Run
`);function Rt(e,t){let n=u();m(t,!0);let r=de(t,`cancelling`,3,!1),a=H(!1),c=y(()=>!!t.turn&&t.turn.runId!==t.runId),l=y(()=>g(c)?void 0:t.turn),d=y(()=>g(l)?.delegatedJobId?new URLSearchParams({job:g(l).delegatedJobId}).toString():``),f=y(()=>!g(c)&&(!g(l)||Z(g(l).orbPath,``)===Te(t.runId))?Te(t.runId,g(d)):null),h=y(()=>{if(!g(l)?.loomPath||!g(l).patternId||!g(l).patternRevision)return null;let e=X(g(l).loomPath,t.runId,g(d));return e===X(`/loom/${encodeURIComponent(g(l).patternId)}/${encodeURIComponent(g(l).patternRevision)}`,t.runId,g(d))?e:null}),ee=y(()=>!!t.oncancel&&!!g(l)&&![`done`,`failed`,`cancelled`].includes(g(l).state)),_=y(()=>g(l)?.runStatus===`running`&&g(l).state===`streaming`);function v(e){return e===`awaiting_hardware`?`awaiting animators`:e===`awaiting_delegate`?`delegated labor`:e.replaceAll(`_`,` `)}var b=Lt(),x=A(b),te=A(x),S=I(A(te),2),ne=z(S),w=I(S,2),E=z(w,!0);o(te);var D=I(te,2),O=A(D),k=z(O,!0),re=I(O,2),j=e=>{var t=Dt(),n=z(t,!0);R(e=>U(n,e),[()=>v(g(l).activity)]),s(e,t)};p(re,e=>{g(l)?.activity&&g(l).activity!==g(l).runStatus&&e(j)}),o(D);var P=I(D,2),ie=A(P),ae=e=>{var t=Ot();R(()=>N(t,`href`,g(f))),s(e,t)},oe=e=>{var t=kt();s(e,t)};p(ie,e=>{g(f)?e(ae):e(oe,-1)});var F=I(ie,2),se=e=>{var n=At(),i=z(n,!0);R(()=>{n.disabled=r(),N(n,`aria-busy`,r()),N(n,`aria-label`,`Cancel run ${t.runId}`),U(i,r()?`Cancelling…`:`Cancel Run`)}),C(`click`,n,function(...e){t.oncancel?.apply(this,e)}),s(e,n)};p(F,e=>{g(ee)&&e(se)}),o(P),o(x);var ce=I(x,2),L=e=>{var t=jt();s(e,t)};p(ce,e=>{g(c)&&e(L)});var le=I(ce,2),B=A(le),ue=I(A(B)),fe=A(ue),pe=z(fe,!0);o(ue);var me=I(ue,2),he=e=>{var t=Mt(),n=I(M(t)),r=z(n,!0),i=I(n,3),a=A(i),c=z(a,!0);o(i),R(()=>{U(r,g(l).patternId||`Not available`),U(c,g(l).patternRevision||`Not available`)}),s(e,t)},V=e=>{var t=Nt(),n=I(M(t)),r=z(n,!0),i=I(n,3),a=z(i,!0);R(()=>{U(r,g(c)?`Not available`:`Not retained in this reply`),U(a,g(c)?`Not available`:`Not retained in this reply`)}),s(e,t)};p(me,e=>{g(l)?e(he):e(V,-1)});var ge=I(me,2),W=e=>{var t=Pt(),n=I(M(t)),r=A(n),i=z(r,!0);o(n),R(()=>U(i,g(l).delegatedJobId)),s(e,t)};p(ge,e=>{g(l)?.delegatedJobId&&e(W)}),o(B);var G=I(B,2),K=e=>{var t=Ft();R(()=>N(t,`href`,g(h))),s(e,t)},_e=e=>{var t=It();s(e,t)};p(G,e=>{g(h)?e(K):g(l)&&e(_e,1)}),o(le),o(b),R(e=>{N(te,`aria-expanded`,g(a)),N(te,`aria-controls`,n),U(ne,`details for Run ${t.runId??``}`),U(E,g(a)?`⌃`:`⌄`),N(D,`data-active`,g(_)),N(D,`data-status`,g(l)?.runStatus),U(k,e),N(le,`id`,n),N(le,`hidden`,!g(a)),U(pe,t.runId)},[()=>g(c)?`Run details unavailable`:g(l)?v(g(l).runStatus):`Retained reply`]),C(`click`,te,()=>T(a,!g(a))),s(e,b),i()}l([`click`]);var zt=S(`
Unsupported projection
Retained inertly.
`),Bt=S(`
  • `),Vt=S(`
    descriptor · client-projected
      `),Ht=S(` `),Ut=S(`
      Capability census descriptor · client-projected
      Capability keyFamilyState
      `),Wt=S(`
      `),Gt=S(`
      Unknown projection
      The Vessel named no admitted component.
      `);function Kt(t,n){m(n,!0);let r=y(()=>typeof n.descriptor.kind==`string`?n.descriptor.kind:`genui.unknown`),a=y(()=>typeof n.descriptor.schema_version==`number`?n.descriptor.schema_version:null),c=y(()=>typeof n.descriptor.props==`object`&&n.descriptor.props!==null?n.descriptor.props:{}),l=y(()=>Array.isArray(g(c).steps)?g(c).steps.filter(e=>typeof e==`string`):[]),u=y(()=>Array.isArray(g(c).rows)?g(c).rows.filter(e=>typeof e==`object`&&!!e):[]);var d=te(),f=M(d),h=e=>{var t=zt(),n=A(t),i=I(A(n),2),c=z(i);o(n),ee(2),o(t),R(()=>{N(t,`data-fragment`,g(r)),N(t,`data-schema-version`,g(a)??`unknown`),U(c,`schema ${g(a)??`unknown`??``}`)}),s(e,t)},_=t=>{var n=Vt(),i=A(n),a=A(i),u=z(a,!0);ee(2),o(i);var d=I(i,2);oe(d,21,()=>g(l),e,(e,t)=>{var n=Bt(),r=z(n,!0);R(()=>U(r,g(t))),s(e,n)}),o(d),o(n),R(e=>{N(n,`data-fragment`,g(r)),U(u,e)},[()=>String(g(c).title??`Plan`)]),s(t,n)},v=t=>{var n=Ut(),i=I(A(n),2),a=I(A(i));oe(a,21,()=>g(u),e,(e,t)=>{var n=Ht(),r=A(n),i=z(r,!0),a=I(r),c=z(a,!0),l=I(a),u=A(l),d=z(u,!0);o(l),o(n),R((e,t,n,r)=>{U(i,e),U(c,t),N(u,`data-state`,n),U(d,r)},[()=>String(g(t).capability_key??``),()=>String(g(t).family??``),()=>String(g(t).state??`cold`),()=>String(g(t).state??`cold`)]),s(e,n)}),o(a),o(i),o(n),R(()=>N(n,`data-fragment`,g(r))),s(t,n)},b=e=>{var t=Wt(),n=A(t),i=A(n),a=z(i,!0),l=I(i,2),u=z(l,!0);o(n);var d=I(n,2),f=z(d,!0);o(t),R((e,n,i,o)=>{N(t,`data-fragment`,g(r)),U(a,e),N(l,`data-state`,n),U(u,i),U(f,o)},[()=>String(g(c).title??`Vision`),()=>String(g(c).severity??`info`),()=>String(g(c).severity??`info`),()=>String(g(c).body??``)]),s(e,t)},x=e=>{var t=Gt(),n=A(t),i=I(A(n)),a=z(i,!0);o(n),ee(2),o(t),R(()=>U(a,g(r))),s(e,t)};p(f,e=>{g(a)===1?g(r)===`genui.plan_checklist`?e(_,1):g(r)===`genui.capability_table`?e(v,2):g(r)===`genui.vision_summary`?e(b,3):e(x,-1):e(h)}),s(t,d),i()}var qt=new URL(`../assets/working-altar.DvY_NSg2.png`,import.meta.url).href,Jt=S(`

      Meet Primus. Begin a conversation, then choose your names together—or return to the naming ceremony whenever you feel ready.

      `,1),Yt=S(`

      LychD · The Altar

      Begin a séance.

      Open a conversation in Bridge with a question, a task, or an idea to explore.

      For a visual workspace and its projects

      Open Canvas
      `);function Xt(e,t){let n=u();m(t,!0);let r=de(t,`pending`,3,!1);var a=Yt(),c=A(a),l=A(c),d=I(A(l),2),f=I(d,4),h=I(A(f));o(f);var ee=I(f,2),g=e=>{var n=Jt(),r=I(M(n),2);C(`click`,r,function(...e){t.onnaming?.apply(this,e)}),s(e,n)};p(ee,e=>{t.onnaming&&e(g)});var _=I(ee,2),v=I(A(_),2);o(_),o(l);var y=I(l,2),b=z(y);o(c),o(a),R(e=>{N(a,`aria-labelledby`,n),N(d,`id`,n),f.disabled=r(),N(f,`aria-busy`,r()),U(h,` ${r()?`Opening séance…`:`New Séance`}`),N(v,`href`,e),N(b,`src`,qt)},[()=>W(`/canvas`)]),C(`click`,f,function(...e){t.onbegin?.apply(this,e)}),s(e,a),i()}l([`click`]);var Zt=S(`

      Reading saved names…

      `),Qt=S(`

      Currently: &

      `),$t=S(``),en=S(``),tn=S(`

      `),nn=S(`

      Opening the local dictionary…

      `),rn=S(``),an=S(`
      `),on=S(`

      Sending the naming request to Bridge…

      `),sn=S(`

      Review your names

      You:
      Companion:

      These forms of address will apply to future turns. You can change them later.

      `),cn=S(``),ln=S(`

      Saving names…

      `),un=S(`

      Magus & Primus

      Naming ceremony

      Begin with the true or chosen name you want to use. It need not be your legal name, and you need share nothing personal.

      Primus is your continuing main companion. You may invite a name in response to yours, give one yourself, or explore the local dictionary. Every path is equally welcome; there is no hurry.

      You can begin a conversation first and return when a model is answering. You can enter names or browse local suggestions before that.

      Choose forms of address

      Leave either field empty to keep the neutral form Magus or Primus. Suggestions only fill your draft; they do not save anything.

      Explore names together in Bridge

      This sends a normal message in your current conversation, or opens one if needed. Its usual history and Context apply. Review the reply yourself; no proposal is saved automatically.

      After choosing from the reply, enter it above and select “AI assisted” or “Companion’s proposal”. You can cancel a running reply with Bridge’s usual stop control.

      Reopen this ceremony from Bridge → Tools. Closing keeps your draft for this open Altar; refreshing discards unsaved choices.

      `);function dn(e,t){let r=u();m(t,!0);let c,l=H(null),d=H(``),f=H(``),_=H(`manual`),v=H(`manual`),x=H(!0),te=H(!1),S=H(!1),w=H(!1),E=H(``),O=H(``),k=H([]),j=H(!1),M=H(``),ie=H(`magus`),ae=H(``),F=H(!1),se=H(``),ce=H(``),L=!1,le=!1,B=new Set,ue=y(()=>({magus_name:g(d).trim().normalize(`NFC`)||`Magus`,primus_name:g(f).trim().normalize(`NFC`)||`Primus`,magus_origin:g(_),primus_origin:g(v)}));function de(){c?.focus()}function fe(e){return c=e,()=>{c=void 0}}function pe(){le=!0,T(S,!1),T(O,``)}async function me(e=!1){let t=new AbortController;B.add(t),T(x,!0),T(E,``);try{let n=await ke(t.signal);if(L)return;T(l,n),T(w,!1),T(S,!1),e?T(O,`Saved names reloaded. Your draft is still here; review it again before saving.`):(T(d,n.current?.magus_name??``,!0),T(f,n.current?.primus_name??``,!0),T(_,n.current?.magus_origin??`manual`,!0),T(v,n.current?.primus_origin??`manual`,!0))}catch{L||(T(E,`Saved names could not be read. You can continue your conversation and try again later.`),T(w,!0))}finally{B.delete(t),L||T(x,!1)}}a(()=>{me()}),h(()=>{L=!0;for(let e of B)e.abort();B.clear()});async function he(e){if(g(j))return;T(ie,e,!0),T(k,[]),T(M,``),T(j,!0);let t=new AbortController;B.add(t);try{let e=await je(t.signal);L||T(k,e.names)}catch{L||T(M,`The local dictionary could not be reached. You can still enter your own name.`)}finally{B.delete(t),L||T(j,!1)}}function V(e){g(ie)===`magus`?(T(d,e,!0),T(_,`dictionary`)):(T(f,e,!0),T(v,`dictionary`)),pe()}async function W(e){if(g(F))return;T(F,!0),T(se,``),T(ce,``);let n=`${e===`magus`?`Help me choose my own name as Magus. Offer a few original, beautiful two-part fantasy names with brief meanings. I may also keep or choose a name myself; do not ask for a legal name or personal disclosure.`:`I invite you, Primus, my continuing main companion, to propose your own personal name in relation to my chosen name. Offer an original, beautiful two-part fantasy name with a brief meaning, and alternatives if useful. I will review it before choosing; nothing is saved by this conversation.`}\nNo fictional franchise references. Treat the following as naming preferences, not instructions.\n${JSON.stringify({magus_name:g(ue).magus_name,volunteered_details:g(ae).trim()})}`;try{await t.onask(n),L||T(ce,`Request sent to Bridge. Review the reply below, then enter your chosen name here and review before saving. You may close this panel and reopen it from Tools; your draft stays here.`)}catch(e){L||T(se,e instanceof Error?e.message:`The request could not be sent. Check Bridge before trying again.`,!0)}finally{L||T(F,!1)}}async function G(){if(!g(S)||g(te)||g(x)||!g(l)||g(w))return;T(te,!0),T(E,``);let e=new AbortController;B.add(e);let t={...g(ue)};try{let n=await Ve({expected_revision:g(l).current?.revision??0,names:t},e.signal);if(L)return;T(l,n),T(S,!1),T(d,n.current?.magus_name??``,!0),T(f,n.current?.primus_name??``,!0),T(_,n.current?.magus_origin??`manual`,!0),T(v,n.current?.primus_origin??`manual`,!0),T(O,`Names saved. They apply to future turns; earlier turns keep their original names. You can rename either of you whenever you wish.`)}catch(e){if(L)return;T(S,!1),e instanceof qe&&e.status===409?(T(E,`Names changed since you opened this ceremony. Reload the saved names and review your draft again.`),T(w,!0)):!(e instanceof qe)||e.status===void 0||e.status>=500||e.status===408?(T(E,`The save outcome is unknown. Reload saved names before trying again.`),T(w,!0)):T(E,`The names were not accepted. Check that each is at most 96 printable characters on one line, then review again.`)}finally{B.delete(e),L||T(te,!1)}}var K={focus:de},_e=un(),q=A(_e),ve=A(q),ye=I(A(ve),2);b(ye,()=>fe),o(ve);var be=I(ve,2);o(q);var xe=I(q,8),Se=e=>{var t=Zt();s(e,t)};p(xe,e=>{g(x)&&e(Se)});var Ce=I(xe,2),J=e=>{var t=Qt(),n=I(A(t)),r=z(n,!0),i=I(n,2),a=z(i,!0),c=I(i,1,!0);o(t),R(()=>{U(r,g(l).current?.magus_name??`Magus`),U(a,g(l).current?.primus_name??`Primus`),U(c,g(l).current?``:` · no names saved yet`)}),s(e,t)};p(Ce,e=>{g(l)&&e(J)});var we=I(Ce,2),Y=e=>{var t=$t(),n=z(t,!0);R(()=>U(n,g(E))),s(e,t)};p(we,e=>{g(E)&&e(Y)});var X=I(we,2),Z=e=>{var t=en();R(()=>t.disabled=g(x)),C(`click`,t,()=>me(le||g(l)!==null)),s(e,t)};p(X,e=>{g(w)&&e(Z)});var Te=I(X,2),Ee=e=>{var t=tn(),n=z(t,!0);R(()=>U(n,g(O))),s(e,t)};p(Te,e=>{g(O)&&e(Ee)});var De=I(Te,2),Oe=A(De),Ae=I(A(Oe),2),Me=I(Ae,2);P(Me);var Ne=I(Me,2),Pe=I(Ne,2),Fe=A(Pe);Fe.value=Fe.__value=`manual`;var Ie=I(Fe);Ie.value=Ie.__value=`dictionary`;var Le=I(Ie);Le.value=Le.__value=`assisted`;var Re=I(Le);Re.value=Re.__value=`self_chosen`,o(Pe),D(Pe);var ze=I(Pe,2),Be=I(ze,2),He=I(Be,2);P(He);var Ue=I(He,2),We=I(Ue,2),Ge=A(We);Ge.value=Ge.__value=`manual`;var Ke=I(Ge);Ke.value=Ke.__value=`dictionary`;var Je=I(Ke);Je.value=Je.__value=`assisted`;var Ye=I(Je);Ye.value=Ye.__value=`self_chosen`,o(We),D(We);var Xe=I(We,2),Ze=I(Xe,4),Qe=e=>{var t=nn();s(e,t)};p(Ze,e=>{g(j)&&e(Qe)});var $e=I(Ze,2),et=e=>{var t=$t(),n=z(t,!0);R(()=>U(n,g(M))),s(e,t)};p($e,e=>{g(M)&&e(et)});var tt=I($e,2),nt=e=>{var t=an();oe(t,20,()=>g(k),e=>e,(e,t)=>{var n=rn(),r=z(n,!0);R(()=>U(r,t)),C(`click`,n,()=>V(t)),s(e,n)}),o(t),R(()=>N(t,`aria-label`,`Local suggestions for ${g(ie)===`magus`?`your name`:`companion name`}`)),s(e,t)};p(tt,e=>{g(k).length&&e(nt)});var rt=I(tt,2),it=I(A(rt),4),at=I(it,2);n(at);var ot=I(at,2),st=A(ot),ct=I(st,2);o(ot);var lt=I(ot,2),ut=e=>{var t=on();s(e,t)};p(lt,e=>{g(F)&&e(ut)});var dt=I(lt,2),ft=e=>{var t=$t(),n=z(t,!0);R(()=>U(n,g(se))),s(e,t)};p(dt,e=>{g(se)&&e(ft)});var pt=I(dt,2),Q=e=>{var t=tn(),n=z(t,!0);R(()=>U(n,g(ce))),s(e,t)};p(pt,e=>{g(ce)&&e(Q)}),ee(2),o(rt);var mt=I(rt,2),ht=e=>{var t=sn(),n=I(A(t),2),r=I(A(n)),i=z(r,!0),a=I(r,3),c=z(a,!0);o(n);var u=I(n,4);o(t),R(()=>{U(i,g(ue).magus_name),U(c,g(ue).primus_name),u.disabled=!g(l)||g(w)}),C(`click`,u,G),s(e,t)},$=e=>{var t=cn();R(()=>t.disabled=!g(l)||g(w)),s(e,t)};p(mt,e=>{g(S)?e(ht):e($,-1)}),o(Oe),o(De);var gt=I(De,2),_t=e=>{var t=ln();s(e,t)};p(gt,e=>{g(te)&&e(_t)});var vt=I(gt,2);return ee(2),o(_e),R(()=>{N(_e,`aria-labelledby`,`${r}-title`),N(ye,`id`,`${r}-title`),be.disabled=g(te),Oe.disabled=g(x)||g(te),N(Ae,`for`,`${r}-magus`),N(Me,`id`,`${r}-magus`),N(Ne,`for`,`${r}-magus-origin`),N(Pe,`id`,`${r}-magus-origin`),ze.disabled=g(j),N(Be,`for`,`${r}-primus`),N(He,`id`,`${r}-primus`),N(Ue,`for`,`${r}-primus-origin`),N(We,`id`,`${r}-primus-origin`),Xe.disabled=g(j),N(it,`for`,`${r}-details`),N(at,`id`,`${r}-details`),st.disabled=g(F),ct.disabled=g(F),vt.disabled=g(te)}),C(`click`,be,function(...e){t.onclose?.apply(this,e)}),ne(`submit`,De,e=>{e.preventDefault(),T(S,!0),T(O,``)}),C(`input`,Me,pe),re(Me,()=>g(d),e=>T(d,e)),C(`change`,Pe,pe),ge(Pe,()=>g(_),e=>T(_,e)),C(`click`,ze,()=>he(`magus`)),C(`input`,He,pe),re(He,()=>g(f),e=>T(f,e)),C(`change`,We,pe),ge(We,()=>g(v),e=>T(v,e)),C(`click`,Xe,()=>he(`primus`)),re(at,()=>g(ae),e=>T(ae,e)),C(`click`,st,()=>W(`magus`)),C(`click`,ct,()=>W(`primus`)),C(`click`,vt,function(...e){t.onclose?.apply(this,e)}),s(e,_e),i(K)}l([`click`,`input`,`change`]);var fn=16e3,pn=3e4,mn=48e4,hn=class{sampleRate;maxSourceFrames;sourceFrames=0;frames=0;pcm=new Int16Array(mn);weight=0;sum=0;constructor(e){if(!Number.isFinite(e)||e<8e3||e>192e3)throw Error(`Unsupported microphone sample rate.`);this.sampleRate=e,this.maxSourceFrames=Math.floor(e*pn/1e3)}append(e){if(e.length<1||e.length>2048||this.sourceFrames+e.length>this.maxSourceFrames)throw Error(`Microphone frame limit exceeded.`);for(let t of e)if(!Number.isFinite(t))throw Error(`Invalid microphone sample.`);for(let t of e){let e=fn,n=Math.max(-1,Math.min(1,t));for(;e>0;){let t=Math.min(e,this.sampleRate-this.weight);if(this.sum+=n*t,this.weight+=t,e-=t,this.weight>=this.sampleRate){if(this.frames>=48e4)throw Error(`Microphone frame limit exceeded.`);let e=Math.max(-1,Math.min(1,this.sum/this.sampleRate));this.pcm[this.frames++]=Math.round(e*(e<0?32768:32767)),this.sum=0,this.weight=0}}}this.sourceFrames+=e.length}encode(){return gn(this.pcm.subarray(0,this.frames))}clear(){this.pcm.fill(0),this.sourceFrames=this.frames=this.weight=this.sum=0}};function gn(e){if(e.length<1||e.length>48e4)throw Error(`No complete microphone audio, or audio exceeds the capture limit.`);let t=new ArrayBuffer(44+e.length*2),n=new DataView(t),r=(e,t)=>{for(let r=0;rglobalThis.navigator?.mediaDevices?.getUserMedia?navigator.mediaDevices.getUserMedia({audio:!0,video:!1}):Promise.reject(Error(`Microphone capture requires a supported secure browser.`)),createContext:()=>new AudioContext,createWorklet:e=>new AudioWorkletNode(e,`lychd-pcm-recorder`,{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],channelCountMode:`max`,channelInterpretation:`discrete`}),now:()=>performance.now(),setTimer:(e,t)=>globalThis.setTimeout(e,t),clearTimer:e=>globalThis.clearTimeout(e)}}function vn(e={}){let t=e.platform??_n(),n,r=!1,i={status:`idle`,elapsedMs:0,limitMs:pn},a=(t,n=i.elapsedMs,r)=>{i={status:t,elapsedMs:n,limitMs:pn,...r?{error:r}:{}};try{e.onstate?.({...i})}catch{}},o=e=>n===e&&!e.settled,s=e=>{for(let t of e.trackHandlers.splice(0))t();for(let t of e.stream?.getTracks()??[])try{t.stop()}catch{}e.stream=void 0;try{e.source?.disconnect()}catch{}e.source=void 0},c=e=>{for(let n of[e.timer,e.limitTimer,e.flushTimer])n!==void 0&&t.clearTimer(n);if(s(e),e.node){e.node.port.onmessage=null,e.node.port.onmessageerror=null,e.node.onprocessorerror=null;try{e.node.port.postMessage({type:`cancel`})}catch{}try{e.node.port.close()}catch{}try{e.node.disconnect()}catch{}e.node=void 0}if(e.context){let t=e.context;e.context=void 0;try{t.close().catch(()=>{})}catch{}}e.collector?.clear(),e.collector=void 0},l=(e,t,n,r)=>{o(e)&&(e.settled=!0,c(e),a(t,n?.durationMs??i.elapsedMs,r),e.resolve(n))},u=(e,t)=>l(e,`error`,null,t),d=t=>{if(o(t)&&!t.stopping){try{e.onlimit?.()}catch{}o(t)&&g()}},f=e=>Math.min(pn,Math.max(0,t.now()-(e.startedAt??t.now()))),p=e=>{o(e)&&!e.stopping&&(a(`recording`,f(e)),o(e)&&!e.stopping&&(e.timer=t.setTimer(()=>p(e),100)))},m=(t,n)=>{if(!o(t))return;if(typeof n!=`object`||!n||!t.collector){u(t,`Invalid microphone recorder message.`);return}let r=n;if(r.type===`chunk`&&r.samples instanceof Float32Array&&r.offset===t.collector.sourceFrames)try{t.collector.append(r.samples)}catch{u(t,`Invalid microphone audio or capture limit exceeded.`)}else if(r.type===`stopped`&&r.totalFrames===t.collector.sourceFrames&&(r.reason===`stop`||r.reason===`limit`)){if(r.reason===`stop`&&!t.stopping){u(t,`Unexpected microphone stop.`);return}if(r.reason===`limit`&&t.collector.sourceFrames!==t.collector.maxSourceFrames){u(t,`Invalid microphone limit message.`);return}if(r.reason===`limit`&&!t.stopping)try{e.onlimit?.()}catch{}try{let e=t.collector.frames,n=new Blob([t.collector.encode()],{type:`audio/wav`});l(t,`complete`,{blob:n,frames:e,durationMs:e/fn*1e3,sampleRate:fn,channels:1})}catch{u(t,`No complete microphone audio was captured.`)}}else u(t,`Invalid microphone recorder message.`)},h=async n=>{try{if(!o(n))return;let r=await t.getUserMedia();if(!o(n)){for(let e of r.getTracks())e.stop();return}if(n.stream=r,r.getAudioTracks().length===0)throw Error(`No microphone track.`);for(let e of r.getTracks()){if(e.readyState===`ended`)throw Error(`Microphone track already ended.`);let t=()=>u(n,`Microphone disconnected before capture completed.`);e.addEventListener(`ended`,t),n.trackHandlers.push(()=>e.removeEventListener(`ended`,t))}if(n.context=t.createContext(),n.collector=new hn(n.context.sampleRate),n.limitTimer=t.setTimer(()=>{n.startedAt===void 0?u(n,`Microphone setup timed out.`):d(n)},pn),await n.context.audioWorklet.addModule(e.workletUrl??new URL(new URL(`../assets/pcm-recorder.DjNpFJRo.js`,import.meta.url).href,``+import.meta.url).href),!o(n)||(n.node=t.createWorklet(n.context),n.node.port.onmessage=e=>m(n,e.data),n.node.port.onmessageerror=()=>u(n,`Microphone recorder message failed.`),n.node.onprocessorerror=()=>u(n,`Microphone recorder failed.`),n.source=n.context.createMediaStreamSource(r),n.node.connect(n.context.destination),await n.context.resume(),!o(n)))return;t.clearTimer(n.limitTimer),n.startedAt=t.now(),n.limitTimer=t.setTimer(()=>d(n),pn),n.source.connect(n.node),a(`recording`,0),p(n)}catch{u(n,`Microphone access or recorder setup failed. Check browser permission and device availability.`)}},ee=()=>{if(r)return Promise.resolve(null);if(n&&!n.settled)return n.result;let e,t=new Promise(t=>{e=t}),i={result:t,resolve:e,settled:!1,stopping:!1,trackHandlers:[]};return n=i,a(`requesting`,0),h(i),t};function g(){let e=n;if(!e)return Promise.resolve(null);if(!o(e)||e.stopping)return e.result;if(e.startedAt===void 0||!e.node)return l(e,`cancelled`,null),e.result;if(e.stopping=!0,a(`stopping`,f(e)),!o(e))return e.result;s(e),e.flushTimer=t.setTimer(()=>u(e,`Microphone recorder did not finish.`),1e3);try{e.node.port.postMessage({type:`stop`})}catch{u(e,`Microphone recorder did not finish.`)}return e.result}let _=()=>{n&&o(n)&&l(n,`cancelled`,null)};return{start:ee,stop:g,cancel:_,dispose:()=>{r=!0,_(),n=void 0},get state(){return{...i}}}}var yn={now:()=>Date.now(),setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function bn(e,t){return e.sessionId===t.sessionId&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch}function xn(e,t){return bn(e,t)&&e.draftRevision===t.draftRevision&&e.draftText===t.draftText}function Sn(e,t){return e+(e&&!/\s$/.test(e)?` `:``)+t}function Cn(e){let t=e.clock??yn,n=!0,r=null,i=null,a=!1,o=!1,s=!0,c=!1,l,u=0,d=Object.freeze({phase:`idle`,originalText:``,finalText:``,reason:``,deadline:null,autosend:!1,adopted:!1});function f(t){d=Object.freeze({...d,...t}),n&&e.onChange?.(d)}function p(){++u,l!==void 0&&t.clearTimeout(l),l=void 0}function m(e){s=!0,p(),f({deadline:null,reason:e,...d.phase===`countdown`?{phase:`review`}:{}})}function h(t){return t.draft.mode===`chat`||t.target!==null&&e.isTargetCurrent?.(t.target)===!0}function ee(e,t){return n&&r===e&&!o&&!!t.sessionId.trim()&&!t.busy&&!t.composing&&bn(e.draft,t)&&h(e)}function g(t){let a=r,c=e.read();if(!a||!i||!d.adopted||!ee(a,c)||t===`auto`&&!xn(i,c)||!c.draftText.trim()||t===`auto`&&(!d.autosend||s))return n&&m(`Send cancelled: the draft or context is no longer ready.`),!1;if(o=!0,p(),f({phase:`submitted`,deadline:null,reason:``}),!n||r!==a)return!1;try{Promise.resolve(e.submit(c,{attemptId:a.attemptId,source:t,target:a.target})).catch(()=>{n&&r===a&&f({reason:`Send outcome requires review in Bridge. No automatic retry.`})})}catch{n&&r===a&&f({reason:`Send outcome requires review in Bridge. No automatic retry.`})}return!0}function _(){let e=t.now()+2e3,r=++u,i=()=>{if(!n||r!==u)return;let a=e-t.now();a>0?l=t.setTimeout(i,a):g(`auto`)};l=t.setTimeout(i,2e3),f({phase:`countdown`,deadline:e,reason:`Sending in 2 seconds. Cancel to keep editing.`})}function v(t,n){if(!ee(t,n)||!d.finalText.trim())return!1;let r=Sn(n.draftText,d.finalText),a=null;c=!0;try{a=e.adopt(n,r)}catch{}finally{c=!1}let o=e.read();return!a||!ee(t,o)||!bn(n,a)||a.draftText!==r||a.draftRevision===n.draftRevision||!xn(a,o)?!1:(i=Object.freeze({...a}),f({adopted:!0,reason:``}),!0)}return{get view(){return d},beginCapture(t,c=null){if(!n)throw Error(`Dictation coordinator is destroyed`);p();let l=Object.freeze({...e.read()}),u=Object.freeze({attemptId:t,target:c,draft:l});return r=u,i=l,a=!1,o=!1,s=!d.autosend||l.busy||l.composing,f({phase:`capturing`,originalText:``,finalText:``,reason:``,deadline:null,adopted:!1}),u},receive(t,i){if(!n||r!==t||a||i.attempt_id!==t.attemptId)return!1;a=!0;let c=i.status===`transcribed`?i.original_text??``:``;if(f({phase:`review`,originalText:c,finalText:c,reason:i.status===`transcribed`?``:i.reason??i.status}),!n||r!==t)return!0;if(!c.trim())return m(i.status===`transcribed`?`No speech was transcribed.`:d.reason),!0;let l=e.read();return!xn(t.draft,l)||!v(t,l)?(m(`Draft or context changed. Transcript kept separately for review.`),!0):(!s&&d.autosend&&r===t&&!o&&_(),!0)},notifyChanged(){if(!n||!r||c||o)return;let t=e.read();i&&xn(i,t)&&ee(r,t)||m(`Automatic send cancelled by a draft or context change.`)},setAutosend(e){n&&(f({autosend:e}),e||m(`Automatic send is off.`))},setFinalText(e){return!n||!r||o?!1:d.adopted?(m(`Edit adopted text in the Bridge draft; send it manually.`),!1):(m(`Transcript edited. Insert and send manually.`),f({finalText:e}),!0)},insert(){return!n||!r||!a||o||d.adopted?!1:(m(`Inserted transcripts are sent manually.`),v(r,Object.freeze({...e.read()})))},sendManual(){return g(`manual`)},cancelAutosend(){n&&m(`Automatic send cancelled. Draft preserved.`)},cancel(){n&&(r=null,i=null,o=!0,s=!0,p(),f({phase:`cancelled`,deadline:null,reason:`Dictation cancelled. Draft preserved.`}))},destroy(){n=!1,r=null,i=null,o=!0,p()}}}function wn(e=Date.now(),t=e=>{globalThis.crypto.getRandomValues(e)}){if(!Number.isSafeInteger(e)||e<0||e>0xffffffffffff)throw RangeError(`Invalid UUIDv7 timestamp`);let n=new Uint8Array(16);t(n);let r=e;for(let e=5;e>=0;--e)n[e]=r%256,r=Math.floor(r/256);n[6]=n[6]&15|112,n[8]=n[8]&63|128;let i=Array.from(n,e=>e.toString(16).padStart(2,`0`)).join(``);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var Tn=S(``),En=S(``),Dn=S(``),On=S(`

      `),kn=S(`

      Edit the final text in the Bridge draft above.

      `),An=S(` `,1),jn=S(``),Mn=S(`

      `),Nn=S(``),Pn=S(`

      `),Fn=S(``),In=S(` `,1),Ln=S(` `,1),Rn=S(`
      Voice options

      Remembers the original transcript and sent draft privately. No automatic vocabulary changes or model training.

      `);function zn(e,t){let r=u();m(t,!0);let l=H(null),d=H(`Checking voice availability…`),f=H(!1),h=H(!1),v=H(!1),b=H(null),x=H(!1),S=H(``),E=H(``),O=H(``),k=H({status:`idle`,elapsedMs:0,limitMs:3e4}),re=H(!1),j=H(``),ae=H(!1),F=H(``),le=H(0),B=H(null),de=H(``),pe=H(``),he=H(ie(Date.now())),V=!0,W=0,G=0,K=null,_e=null,q=null,ve=null,ye=null,be=null,xe=null,Se=``,Ce=null,J=!1,we=()=>be??t.readSnapshot?.()??t.snapshot,Y=Cn({read:we,adopt:(e,n)=>{let r=t.onadopt(e,n);return r&&(xe=r,Se=e.draftText),r},isTargetCurrent:e=>t.isTargetCurrent?.(e)===!0,onChange:e=>{T(X,e),T(he,Date.now(),!0)},submit:(e,n)=>{ye=e;let r=g(ae),i=W,a=t.onsubmit(e,n);return r&&(T(F,`Saving private correction…`),Ge({attempt_id:n.attemptId,final_text:e.draftText.trim()}).then(()=>{V&&i===W&&(T(F,`Private correction saved. Vocabulary changes require separate approval.`),T(le,g(le)+1))}).catch(()=>{V&&i===W&&T(F,`Correction storage could not be confirmed. No learning is claimed.`)})),a}}),X=H(Y.view),Z=y(()=>[`requesting`,`recording`,`stopping`].includes(g(k).status)),Te=y(()=>g(l)?.status===`available`&&!!g(l).profile_digest&&!!g(O)&&g(l).languages?.includes(g(O))),Ee=y(()=>g(X).deadline===null?0:Math.max(0,Math.ceil((g(X).deadline-g(he))/1e3))),Oe=y(()=>g(re)?`Transcribing…`:g(k).status===`requesting`?`Waiting for microphone permission…`:g(k).status===`recording`?`Recording ${Math.floor(g(k).elapsedMs/1e3)} / 30 seconds`:g(k).status===`stopping`?`Finishing recording…`:g(B)&&g(X).adopted&&g(X).phase!==`submitted`?`Transcript added to draft. Review and send.`:g(d));async function ke(){let e=++G;T(f,!0),T(l,null),T(d,`Checking voice availability…`);try{let t=await De();if(!V||e!==G)return;T(l,t),T(O,t.languages?.includes(g(O))?g(O):t.languages?.[0]??``,!0),T(d,t.status===`available`&&t.profile_digest&&g(O)?`Local transcription configured; microphone and recognition quality unverified.`:`Voice unavailable: ${(t.reason??`no declared language`).replaceAll(`_`,` `)}.`,!0)}catch{V&&e===G&&T(d,`Voice availability could not be checked. Typed messages remain available.`)}finally{V&&e===G&&T(f,!1)}}function Ae(e=!1){let t=J?Ce:null;W+=1,K?.abort(),K=null,_e?.abort(),_e=null,T(x,!1),t?(T(b,t),T(S,`Local transcription wait cancelled. The server outcome may be unknown; check the attempt without resending audio.`)):e||(T(b,null),T(S,``),T(E,``)),q?.dispose(),q=null,T(re,!1),T(k,{status:`cancelled`,elapsedMs:0,limitMs:3e4}),Y.cancel(),T(B,null),Ce=null,J=!1}function je(){Ae(!0)}function Me(e,t){return e.sessionId===t.sessionId&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch}function Ne(e=we()){if(V){be=e;try{ve&&!Me(ve,e)?(Ae(!0),T(F,``),T(pe,``),ke()):ye&&(ye.draftRevision!==e.draftRevision||ye.draftText!==e.draftText)&&(Y.cancel(),T(B,null),ye=null),ve={...e},Y.notifyChanged()}finally{be=null}}}function Pe(){return Ne(),g(B)!==null&&g(X).adopted?(Y.sendManual(),!0):(Y.cancelAutosend(),!1)}function Fe(e){if(Y.cancelAutosend(),!g(B)||!e.trim())return!1;if(!g(X).adopted)return Y.setFinalText(e);let n=we();if(!xe||!Me(xe,n)||n.draftRevision!==xe.draftRevision||n.draftText!==xe.draftText||n.busy||n.composing||g(X).phase===`submitted`)return!1;let r=Se+(Se&&!/\s$/.test(Se)?` `:``)+e,i=t.onadopt(n,r);return i?(xe=i,Ne(i),!0):!1}async function Ie(){let e=g(b);if(!V||!e||g(x))return;let t=new AbortController;_e=t,T(x,!0),T(S,`Checking transcription outcome…`);try{let n=await Re(e.attemptId,t.signal);if(!V||t.signal.aborted||g(b)!==e)return;if(n.attempt_id!==e.attemptId)throw Error(`Mismatched attempt`);n.status===`unknown`?T(S,`Transcription outcome is still unknown. You can check again; audio will not be resent.`):n.status===`transcribed`?(T(j,``),Y.cancelAutosend(),Me(e.draft,we())&&Y.receive(e,n)?T(S,g(X).adopted?`Recovered transcript added to draft. Review and send manually.`:`Recovered transcript kept separately for review.`,!0):(T(E,n.original_text??``,!0),T(S,`Recovered transcript belongs to an earlier context. Review it separately; it has not changed this draft.`)),T(b,null)):(T(j,``),T(S,`Transcription ${n.status}: ${(n.reason??`unavailable`).replaceAll(`_`,` `)}. No transcript was adopted.`),T(b,null))}catch(n){if(!V||t.signal.aborted||g(b)!==e)return;n instanceof qe&&n.status===404&&T(j,``),T(S,n instanceof qe&&n.status===404?`This attempt is unavailable. It may have expired or been deleted; no transcript can be recovered.`:`Could not check this attempt. Its transcription outcome remains unknown.`,!0)}finally{_e===t&&(_e=null,T(x,!1))}}function Le(e,t){return e.size<46||e.size>960044||t.aborted?Promise.reject(Error(`Audio unavailable`)):new Promise((n,r)=>{let i=new FileReader,a=()=>t.removeEventListener(`abort`,o),o=()=>{i.abort(),a(),r(Error(`Cancelled`))};t.addEventListener(`abort`,o,{once:!0}),i.onerror=()=>{a(),r(Error(`Audio could not be encoded`))},i.onload=()=>{if(a(),t.aborted||typeof i.result!=`string`){r(Error(`Cancelled`));return}let e=i.result.indexOf(`,`);e<0?r(Error(`Invalid audio encoding`)):n(i.result.slice(e+1))},i.readAsDataURL(e)})}async function ze(){let e=we();if(!V||!g(Te)||g(Z)||g(re)||g(x)||e.busy||e.composing||!e.sessionId||e.mode===`work`&&(!t.target||t.isTargetCurrent?.(t.target)!==!0))return;T(j,``),T(F,``),ye=null,T(b,null),T(S,``),T(E,``);let n=++W,r=new AbortController;K=r;let i=Y.beginCapture(wn(),t.target);Ce=i,J=!1,T(B,i.attemptId,!0),T(de,g(O),!0),T(pe,e.mode===`work`?t.target?.label??`Work`:`Conversation`,!0);let a=vn({onstate:e=>{V&&n===W&&T(k,e)}});q=a;let o=!1;try{let e=await a.start();if(!V||n!==W||r.signal.aborted)return;if(!Me(i.draft,we())){Ae();return}if(!e){T(j,g(k).error??`Recording cancelled. Your draft is preserved.`,!0),Y.cancel(),T(B,null);return}T(re,!0);let t=await Le(e.blob,r.signal);if(!V||n!==W||r.signal.aborted)return;if(!Me(i.draft,we())){Ae();return}o=!0,J=!0;let s=await Je({attempt_id:i.attemptId,audio_base64:t,language:g(de)},r.signal);if(!V||n!==W||r.signal.aborted)return;s.status===`unknown`?(Y.cancelAutosend(),T(b,i),T(j,`Transcription outcome unknown. Check this attempt to recover its result; audio will not be resent.`)):Y.receive(i,s)}catch{V&&n===W&&!r.signal.aborted&&(o?(Y.cancelAutosend(),T(b,i)):(Y.cancel(),T(B,null)),T(j,`Transcription could not be confirmed. No automatic retry or send.`))}finally{a.dispose(),V&&n===W&&(q=null,K=null,T(re,!1),Ce=null,J=!1)}}ue(()=>{let e=t.snapshot;fe(()=>Ne(e))}),ue(()=>{if(g(X).deadline===null)return;let e=setInterval(()=>{T(he,Date.now(),!0)},100);return()=>clearInterval(e)}),a(()=>(ke(),()=>{V=!1,W+=1,G+=1,K?.abort(),_e?.abort(),q?.dispose(),Y.destroy()}));var Be={suspend:je,notifyChanged:Ne,handleSend:Pe},Ve=Rn();ne(`visibilitychange`,ce,()=>{document.visibilityState===`hidden`&&(g(Z)||g(re)?Ae():Y.cancelAutosend())});var He=A(Ve),Ue=A(He),We=A(Ue),Ke=I(We,2),Ye=e=>{var t=Tn();R(()=>t.disabled=g(k).status!==`recording`),C(`click`,t,()=>void q?.stop()),s(e,t)};p(Ke,e=>{g(Z)&&e(Ye)});var Xe=I(Ke,2),Ze=e=>{var t=En(),n=z(t,!0);R(()=>U(n,g(re)?`Cancel transcription`:`Cancel recording`)),C(`click`,t,()=>Ae()),s(e,t)};p(Xe,e=>{(g(Z)||g(re))&&e(Ze)}),o(Ue);var Qe=I(Ue,2),$e=I(A(Qe),2),et=A($e),tt=I(et,2);oe(tt,20,()=>g(l)?.languages??[],e=>e,(e,t)=>{var n=Dn(),r=z(n,!0),i={};R(()=>{U(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),s(e,n)}),o(tt),D(tt);var nt=I(tt,2),rt=A(nt);P(rt),ee(),o(nt);var it=I(nt,2),at=A(it);P(at),ee(),o(it);var ot=I(it,4),st=e=>{var t=On(),n=z(t);R(()=>U(n,`${g(pe)??``} · ${g(de)??``}`)),s(e,t)};p(ot,e=>{g(pe)&&g(B)&&e(st)});var ct=I(ot,2),lt=e=>{var t=An(),i=M(t),a=I(i,2);n(a);var o=I(a,2),c=e=>{var t=kn();s(e,t)};p(o,e=>{g(X).adopted&&e(c)}),R(()=>{N(i,`for`,`${r}-original`),N(a,`id`,`${r}-original`),me(a,g(X).originalText)}),s(e,t)};p(ct,e=>{g(X).originalText&&g(B)&&e(lt)});var ut=I(ct,2),dt=e=>{var n=te(),r=M(n);c(r,()=>t.feedback??_,()=>({attemptId:g(B),originalText:g(B)?g(X).originalText:``,finalText:g(B)?g(X).adopted?t.snapshot.draftText:g(X).finalText:``,language:g(de)||g(O),savedRevision:g(le),active:g(h),applySuggestion:Fe})),s(e,n)};p(ut,e=>{g(v)&&e(dt)}),o($e),o(Qe),o(He);var ft=I(He,2),pt=A(ft),Q=z(pt,!0),mt=I(pt,2),ht=e=>{var t=jn();C(`click`,t,()=>void ke()),s(e,t)};p(mt,e=>{!g(Te)&&!g(f)&&e(ht)}),o(ft);var $=I(ft,2),gt=e=>{var t=Mn(),n=A(t),r=z(n),i=I(n);o(t),R(()=>U(r,`Sending in ${g(Ee)??``} seconds`)),C(`click`,i,()=>Y.cancelAutosend()),s(e,t)};p($,e=>{g(X).deadline!==null&&e(gt)});var _t=I($,2),vt=e=>{var t=Nn(),n=z(t,!0);R(()=>U(n,g(j))),s(e,t)};p(_t,e=>{g(j)&&e(vt)});var yt=I(_t,2),bt=e=>{var t=Pn(),n=z(t,!0);R(e=>U(n,e),[()=>g(X).reason.replaceAll(`_`,` `)]),s(e,t)};p(yt,e=>{g(X).reason&&g(X).phase!==`capturing`&&g(X).phase!==`cancelled`&&g(X).deadline===null&&e(bt)});var xt=I(yt,2),St=e=>{var t=Pn(),n=z(t,!0);R(()=>U(n,g(F))),s(e,t)};p(xt,e=>{g(F)&&e(St)});var Ct=I(xt,2),wt=e=>{var t=Fn();R(()=>t.disabled=g(x)),C(`click`,t,()=>void Ie()),s(e,t)};p(Ct,e=>{g(b)&&e(wt)});var Tt=I(Ct,2),Et=e=>{var t=Pn(),n=z(t,!0);R(()=>U(n,g(S))),s(e,t)};p(Tt,e=>{g(S)&&e(Et)});var Dt=I(Tt,2),Ot=e=>{var t=In(),i=M(t),a=I(i,2);n(a),R(()=>{N(i,`for`,`${r}-recovered`),N(a,`id`,`${r}-recovered`),me(a,g(E))}),s(e,t)};p(Dt,e=>{g(E)&&e(Ot)});var kt=I(Dt,2),At=e=>{var i=Ln(),a=M(i),o=I(a,2);n(o);var c=I(o,2);R(()=>{N(a,`for`,`${r}-suggestion`),N(o,`id`,`${r}-suggestion`),me(o,g(X).finalText),c.disabled=t.snapshot.busy||t.snapshot.composing}),C(`input`,o,e=>Y.setFinalText(e.currentTarget.value)),C(`click`,c,()=>Y.insert()),s(e,i)};return p(kt,e=>{g(X).originalText&&g(B)&&!g(X).adopted&&e(At)}),o(Ve),R(()=>{N(We,`aria-describedby`,`${r}-status`),We.disabled=!g(Te)||g(Z)||g(re)||g(x)||t.snapshot.busy||t.snapshot.composing||t.snapshot.mode===`work`&&!t.target,N(et,`for`,`${r}-language`),N(tt,`id`,`${r}-language`),tt.disabled=g(Z)||g(re)||!g(l)?.languages?.length,w(rt,g(X).autosend),N(pt,`id`,`${r}-status`),U(Q,g(Oe))}),C(`click`,We,()=>void ze()),ne(`toggle`,Qe,e=>{e.currentTarget.open&&T(v,!0)}),ge(tt,()=>g(O),e=>T(O,e)),C(`change`,rt,e=>Y.setAutosend(e.currentTarget.checked)),se(at,()=>g(ae),e=>T(ae,e)),L(`open`,`toggle`,Qe,e=>T(h,e),()=>g(h)),s(e,Ve),i(Be)}l([`click`,`change`,`input`]);var Bn=S(`

      Record a transcript to check approved vocabulary.

      `),Vn=S(`

      Checking approved vocabulary…

      `),Hn=S(``),Un=S(`
    1. →
    2. `),Wn=S(`

        `,1),Gn=S(`

        No approved rules matched this transcript.

        `),Kn=S(` `,1),qn=S(`

        `),Jn=S(` `,1),Yn=S(`

        Loading voice history…

        `),Xn=S(``),Zn=S(`
        Original and final text
        Original transcript
        Final saved correction
        `),Qn=S(`

        Loading saved correction…

        `),$n=S(`

        `),er=S(`

        Checking retained outcome…

        `),tr=S(``),nr=S(`

        Read-only history. Select and copy text if needed; it is not inserted into the current draft or command target.

        `,1),rr=S(`

        Outcome remains unknown. This check does not restart transcription.

        `),ir=S(`

        No transcript is available for this retained outcome.

        `),ar=S(`

        `,1),or=S(`

        Deletion unconfirmed; refresh history.

        `),sr=S(`
      • Expires · Created

      • `),cr=S(`
      • No retained voice attempts.
      • `),lr=S(``),ur=S(`

          `,1),dr=S(`

          Retained attempts, including those without saved corrections. Inspect reads an existing outcome; it never restarts transcription. Deleting an attempt also removes any saved correction.

          `,1),fr=S(``),pr=S(` `,1),mr=S(`

          Loading approved vocabulary…

          `),hr=S(``),gr=S(`

          Removal unconfirmed; refresh vocabulary.

          `),_r=S(`
        • →

          Expires

        • `),vr=S(`
        • No approved vocabulary rules.
        • `),yr=S(`

          Showing up to 128 approved rules.

          `),br=S(`
            `,1),xr=S(`

            Approve exact phrases for one language. Corrections never create rules automatically. This does not train the model.

            Add a vocabulary rule

            Use the transcript’s exact language tag, for example en or en-us.

            `,1),Sr=S(`
            Vocabulary suggestion
            Voice history
            Approved vocabulary
            `);function Cr(e,t){let r=u();m(t,!0);let a=de(t,`active`,3,!0),c=!0,l=0,d=H(!0),f=H(!1),_=H(!1),v=H(!1),b=H(0),x=H(0),S=H(0),w=H(`idle`),E=H(`idle`),D=H(`idle`),O=H([]),k=H([]),j=H(25),ie=H(``),ae=H(``),F=H(!1),le=y(()=>new Map(g(O).map(e=>[e.attempt_id,e]))),pe=H(null),he=H(`idle`),V=H(null),ge=null,W=H([]),G=H(null),K=``,_e=H({}),q=H({}),ve=H(``),ye=H(``),be=H(``),xe,Se,Ce=H(null),J=y(()=>g(Ce)??t.language),we=H(``),Y=H(``),X=H(!1),Z=H(`idle`),Te=H(null),Ee=H(!1),De=0,Oe=new Set,ke=y(()=>JSON.stringify([g(v),g(d),a(),t.attemptId,t.originalText,t.language,g(S)]));h(()=>{c=!1,l+=1,ge?.abort();for(let e of Oe)e()});function Ae(){l+=1;for(let e of Oe)e();T(_e,Object.fromEntries(Object.keys(g(_e)).map(e=>[e,`unknown`]))),T(q,Object.fromEntries(Object.keys(g(q)).map(e=>[e,`unknown`]))),g(Z)===`saving`&&(T(Z,`unknown`),T(ye,`Approval outcome is unknown. Check approved vocabulary before another approval.`))}function je(){T(d,document.visibilityState!==`hidden`),g(d)||Ae()}function Ne(){g(Ce)===null&&T(Ce,g(J),!0)}function Pe(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function ze(){let e=new AbortController;return T(w,`loading`),T(ie,``),T(ae,``),T(O,[]),T(F,!0),Ve(),We(e.signal).then(t=>{c&&!e.signal.aborted&&g(d)&&a()&&(t.length>1e3?(T(ie,`Voice history exceeded the supported 1,000-attempt limit. Refresh history; no incomplete list is shown.`),T(w,`error`)):(T(k,t),T(_e,Object.fromEntries(Object.entries(g(_e)).filter(([,e])=>e===`busy`))),T(w,`ready`)))}).catch(()=>{c&&!e.signal.aborted&&g(d)&&a()&&(T(ie,`Could not load voice history.`),T(w,`error`))}),Me(e.signal).then(t=>{c&&!e.signal.aborted&&g(d)&&a()&&(T(F,!1),t.length<=1e3?T(O,t):T(ae,`Saved corrections exceeded the supported limit. Attempt inspection and deletion remain available. Refresh history to retry.`))}).catch(()=>{c&&!e.signal.aborted&&g(d)&&a()&&(T(F,!1),T(ae,`Saved corrections could not be loaded completely. Attempt inspection and deletion remain available. Refresh history to retry.`))}),()=>{e.abort(),Ve()}}function Ve(){ge?.abort(),ge=null,T(pe,null),T(V,null),T(he,`idle`)}async function He(e){if(!a()||!g(d)||!g(f)||g(_e)[e])return;Ve();let t=new AbortController;ge=t,T(pe,e,!0),T(he,`loading`);try{let n=await Re(e,t.signal);if(!c||!a()||!g(d)||!g(f)||t.signal.aborted||ge!==t)return;if(n.attempt_id!==e){T(he,`error`);return}T(V,n),T(he,`ready`)}catch{c&&a()&&g(d)&&g(f)&&!t.signal.aborted&&ge===t&&T(he,`error`)}}function Ge(){let e=new AbortController;return T(E,`loading`),Fe(e.signal).then(t=>{if(c&&!e.signal.aborted&&g(d)&&a()&&(T(W,t.slice(0,128)),T(q,Object.fromEntries(Object.entries(g(q)).filter(([,e])=>e===`busy`))),T(E,`ready`),g(Te)&&g(Z)===`unknown`)){let e=g(Te);g(W).find(t=>t.language===e.language.toLowerCase()&&t.heard===e.heard.normalize(`NFC`)&&t.replacement===e.replacement.normalize(`NFC`))?(T(Z,`idle`),T(Te,null),T(X,!1),T(ye,`Approval confirmed in retained vocabulary.`)):(T(Ee,!0),T(ye,`No matching retained rule was found. The previous approval remains unconfirmed; your form is preserved.`))}}).catch(()=>{c&&!e.signal.aborted&&g(d)&&a()&&T(E,`error`)}),()=>e.abort()}function Ke(e,n,r){let i=new AbortController,o=++De,s=t.finalText;return T(G,null),T(be,``),T(D,`loading`),Le({attempt_id:e},i.signal).then(l=>{c&&g(d)&&a()&&!i.signal.aborted&&o===De&&t.attemptId===e&&t.originalText===n&&t.language===r&&(l.attempt_id!==e||l.original_text!==n||l.language.toLowerCase()!==r.toLowerCase()?T(D,`error`):(K=s,T(G,l),T(D,`ready`)))}).catch(()=>{c&&g(d)&&a()&&!i.signal.aborted&&o===De&&T(D,`error`)}),()=>{i.abort(),De+=1}}ue(()=>{a()||fe(Ae)}),ue(()=>{if(t.savedRevision,g(b),g(f)&&g(d)&&a())return fe(ze)}),ue(()=>{if(g(x),g(_)&&g(d)&&a())return fe(Ge)}),ue(()=>(g(ke),fe(()=>{if(g(v)&&g(d)&&a()&&t.attemptId)return Ke(t.attemptId,t.originalText,t.language)})));async function qe(e,t,n){if(g(e===`correction`?_e:q)[t]||!g(d)||!a())return;let r=l,i=n,o=n.closest(`li`),s=document.activeElement===i||!!o?.contains(document.activeElement),u=!1,p=e=>{e.target instanceof Node&&e.target!==document.body&&!o?.contains(e.target)&&(u=!0)},m=e=>{e.target instanceof Node&&!o?.contains(e.target)&&(u=!0)},h=()=>{document.removeEventListener(`focusin`,p),document.removeEventListener(`pointerdown`,m,!0),Oe.delete(h)};document.addEventListener(`focusin`,p),document.addEventListener(`pointerdown`,m,!0),Oe.add(h),e===`correction`?T(_e,{...g(_e),[t]:`busy`}):T(q,{...g(q),[t]:`busy`});try{if(e===`correction`?await Ue(t):await Be(t),!c||!g(d)||!a()||r!==l)return;let n=document.activeElement;(n===i||o?.contains(n)||s&&!u&&n===document.body)&&(e===`correction`&&g(f)&&xe?.focus(),e===`rule`&&g(_)&&Se?.focus()),e===`correction`?(g(pe)===t&&Ve(),T(k,g(k).filter(e=>e.attempt_id!==t)),T(O,g(O).filter(e=>e.attempt_id!==t)),T(ve,`Retained attempt and any saved correction deleted.`),T(b,g(b)+1)):(T(W,g(W).filter(e=>e.id!==t)),T(ye,`Approved rule removed.`),T(x,g(x)+1)),T(G,null),T(D,`idle`),T(be,`Retained data changed. Refresh the suggestion before using it.`),De+=1}catch{if(!c||!g(d)||!a()||r!==l)return;e===`correction`?(T(_e,{...g(_e),[t]:`unknown`}),T(ve,`Deletion could not be confirmed. Refresh history before trying again.`)):(T(q,{...g(q),[t]:`unknown`}),T(ye,`Removal could not be confirmed. Refresh vocabulary before trying again.`))}finally{h()}}async function Je(e){if(e.preventDefault(),!g(d)||!a()||g(Z)!==`idle`||!g(X)||!g(we).trim()||!g(Y).trim()||!g(J).trim())return;Ne();let t={language:g(J).trim(),heard:g(we),replacement:g(Y),approved:!0};T(Te,t),T(Z,`saving`),T(Ee,!1);let n=l;try{if(await Ie(t),!c||!g(d)||!a()||n!==l)return;T(Te,null),T(Z,`idle`),T(X,!1),T(ye,`Vocabulary rule approved. Suggestions still require your review.`),T(x,g(x)+1),T(G,null),T(D,`idle`),T(be,`Vocabulary changed. Refresh the suggestion before using it.`),De+=1}catch{if(!c||!g(d)||!a()||n!==l)return;T(Z,`unknown`),T(ye,`Approval could not be confirmed. Check approved vocabulary before another approval.`)}}function Ye(){!g(d)||!a()||!g(G)||g(G).attempt_id!==t.attemptId||g(G).original_text!==t.originalText||t.finalText!==K||g(G).rules.some(e=>new Date(e.expires_at).getTime()<=Date.now())?T(be,`Suggestion not applied: the draft or attempt changed. Review the current draft.`):T(be,t.applySuggestion(g(G).suggested_text)?`Suggestion applied to the draft. Review it before sending.`:`Suggestion not applied: the draft or attempt changed. Review the current draft.`,!0)}var Xe=Sr();ne(`visibilitychange`,ce,je);var Ze=A(Xe),Qe=I(A(Ze),2),$e=e=>{var i=Jn(),a=M(i),c=e=>{var t=Bn();s(e,t)},l=e=>{var i=Kn(),a=M(i),c=e=>{var t=Vn();s(e,t)},l=e=>{var t=Hn();s(e,t)},u=e=>{var t=te(),i=M(t),a=e=>{var t=Wn(),i=M(t),a=I(i,2);n(a);var c=I(a,2),l=z(c),u=I(c,2);oe(u,21,()=>g(G).rules.slice(0,128),e=>e.id,(e,t)=>{var n=Un(),r=A(n),i=z(r,!0),a=I(r,2),c=z(a,!0);o(n),R(()=>{U(i,g(t).heard),U(c,g(t).replacement)}),s(e,n)}),o(u);var d=I(u,2);R(()=>{N(i,`for`,`${r}-suggestion`),N(a,`id`,`${r}-suggestion`),me(a,g(G).suggested_text),U(l,`Applied rules (${g(G).language??``})`)}),C(`click`,d,Ye),s(e,t)},c=e=>{var t=Gn();s(e,t)};p(i,e=>{g(G).applied_rule_ids.length?e(a):e(c,-1)}),s(e,t)};p(a,e=>{g(D)===`loading`?e(c):g(D)===`error`?e(l,1):g(G)&&g(G).attempt_id===t.attemptId&&e(u,2)});var d=I(a,2),f=z(d,!0);R(()=>{d.disabled=g(D)===`loading`,U(f,g(D)===`error`?`Retry suggestion`:`Refresh suggestion`)}),C(`click`,d,()=>T(S,g(S)+1)),s(e,i)};p(a,e=>{t.attemptId?e(l,-1):e(c)});var u=I(a,2),d=e=>{var t=qn(),n=z(t,!0);R(()=>U(n,g(be))),s(e,t)};p(u,e=>{g(be)&&e(d)}),s(e,i)};p(Qe,e=>{g(v)&&e($e)}),o(Ze);var et=I(Ze,2),tt=A(et);B(tt,e=>xe=e,()=>xe);var nt=I(tt,2),rt=e=>{var t=dr(),i=I(M(t),2),a=z(i,!0),c=I(i,2),l=e=>{var t=Yn();s(e,t)},u=e=>{var t=Xn(),n=z(t,!0);R(()=>U(n,g(ie))),s(e,t)},d=e=>{var t=ur(),i=M(t),a=e=>{var t=Xn(),n=z(t,!0);R(()=>U(n,g(ae))),s(e,t)};p(i,e=>{g(ae)&&e(a)});var c=I(i,2),l=z(c),u=I(c,2);oe(u,21,()=>g(k).slice(0,g(j)),e=>e.attempt_id,(e,t)=>{let i=y(()=>g(le).get(g(t).attempt_id));var a=sr(),c=A(a),l=z(c),u=I(c,2),d=I(A(u)),f=z(d,!0),m=I(d,2),h=z(m,!0);o(u);var _=I(u,2),v=A(_),b=I(v),x=z(b,!0);o(_);var S=I(_,2),ne=e=>{var t=Zn(),n=I(A(t)),r=I(A(n)),a=z(r,!0),c=I(r,2),l=z(c,!0);o(n),o(t),R(()=>{U(a,g(i).original_text),U(l,g(i).final_text)}),s(e,t)},w=e=>{var t=Qn();s(e,t)},T=e=>{var n=$n(),r=z(n,!0);R(()=>U(r,g(t).has_correction?`Saved correction is not available in this history read.`:`No saved correction.`)),s(e,n)};p(S,e=>{g(i)?e(ne):g(t).has_correction&&g(F)?e(w,1):e(T,-1)});var E=I(S,2),D=z(E,!0),O=I(E,2),k=e=>{var t=te(),i=M(t),a=e=>{var t=er();s(e,t)},o=e=>{var t=tr();s(e,t)},c=e=>{var t=ar(),i=M(t),a=z(i),o=I(i,2),c=e=>{var t=nr(),i=M(t),a=I(i,2);n(a),ee(2),R(()=>{N(i,`for`,`${r}-history-original`),N(a,`id`,`${r}-history-original`),me(a,g(V).original_text??``)}),s(e,t)},l=e=>{var t=rr();s(e,t)},u=e=>{var t=ir();s(e,t)};p(o,e=>{g(V).status===`transcribed`&&g(V).original_text!==null?e(c):g(V).status===`unknown`?e(l,1):e(u,-1)}),R(e=>U(a,`Retained outcome: ${e??``}.`),[()=>g(V).status.replaceAll(`_`,` `)]),s(e,t)};p(i,e=>{g(he)===`loading`?e(a):g(he)===`error`?e(o,1):g(V)&&e(c,2)}),s(e,t)};p(O,e=>{g(pe)===g(t).attempt_id&&e(k)});var re=I(O,2),j=z(re,!0),P=I(re,2),ie=e=>{var t=or();s(e,t)};p(P,e=>{g(_e)[g(t).attempt_id]===`unknown`&&e(ie)}),o(a),R((e,n,r,i)=>{U(l,`${g(t).language??``} · ${e??``}`),N(d,`datetime`,g(t).expires_at),U(f,n),N(m,`datetime`,g(t).created_at),U(h,r),U(v,`${g(t).audio_available?`Audio retained until`:`Audio no longer available; retention deadline`} `),N(b,`datetime`,g(t).audio_expires_at),U(x,i),E.disabled=!!g(_e)[g(t).attempt_id]||g(pe)===g(t).attempt_id&&g(he)===`loading`,N(E,`aria-label`,`Inspect retained attempt ${g(t).attempt_id}`),U(D,g(t).status===`unknown`?`Check outcome`:`Inspect attempt`),re.disabled=!!g(_e)[g(t).attempt_id],N(re,`aria-label`,`Delete retained attempt ${g(t).attempt_id}`),U(j,g(_e)[g(t).attempt_id]===`busy`?`Deleting…`:`Delete attempt`)},[()=>g(t).status.replaceAll(`_`,` `),()=>Pe(g(t).expires_at),()=>Pe(g(t).created_at),()=>Pe(g(t).audio_expires_at)]),C(`click`,E,()=>void He(g(t).attempt_id)),C(`click`,re,e=>void qe(`correction`,g(t).attempt_id,e.currentTarget)),s(e,a)},e=>{var t=cr();s(e,t)}),o(u);var d=I(u,2),f=e=>{var t=lr();C(`click`,t,()=>T(j,Math.min(g(j)+25,g(k).length,1e3),!0)),s(e,t)};p(d,e=>{g(j)U(l,`Showing ${e??``} of ${g(k).length??``} retained attempts.`),[()=>Math.min(g(j),g(k).length)]),s(e,t)};p(c,e=>{g(w)===`loading`?e(l):g(w)===`error`?e(u,1):g(w)===`ready`&&e(d,2)});var f=I(c,2),m=e=>{var t=qn(),n=z(t,!0);R(()=>U(n,g(ve))),s(e,t)};p(f,e=>{g(ve)&&e(m)}),R(()=>{i.disabled=g(w)===`loading`,U(a,g(w)===`error`?`Retry history`:`Refresh history`)}),C(`click`,i,()=>T(b,g(b)+1)),s(e,t)};p(nt,e=>{g(f)&&e(rt)}),o(et);var it=I(et,2),at=A(it);B(at,e=>Se=e,()=>Se);var ot=I(at,2),st=e=>{var t=xr(),n=I(M(t),2),i=A(n),a=I(A(i),2),c=I(a,2);P(c);var l=I(c,4),u=I(l,2);P(u);var d=I(u,2),f=I(d,2);P(f);var m=I(f,2),h=A(m);P(h),ee(),o(m);var _=I(m,2),v=z(_,!0);o(i),o(n);var y=I(n,2),b=e=>{var t=pr(),n=I(M(t),2),r=I(n,2),i=e=>{var t=fr();C(`click`,t,()=>{T(Te,null),T(Z,`idle`),T(Ee,!1),T(X,!1)}),s(e,t)};p(r,e=>{g(Ee)&&e(i)}),R(()=>n.disabled=g(E)===`loading`),C(`click`,n,()=>T(x,g(x)+1)),s(e,t)};p(y,e=>{g(Z)===`unknown`&&e(b)});var te=I(y,2),S=z(te,!0),w=I(te,2),D=e=>{var t=mr();s(e,t)},O=e=>{var t=hr();s(e,t)},k=e=>{var t=br(),n=M(t);oe(n,21,()=>g(W),e=>e.id,(e,t)=>{var n=_r(),r=A(n),i=A(r),a=I(i),c=z(a,!0),l=I(a,2),u=z(l,!0);o(r);var d=I(r,2),f=I(A(d)),m=z(f,!0);o(d);var h=I(d,2),ee=z(h,!0),_=I(h,2),v=e=>{var t=gr();s(e,t)};p(_,e=>{g(q)[g(t).id]===`unknown`&&e(v)}),o(n),R(e=>{U(i,`${g(t).language??``}: `),U(c,g(t).heard),U(u,g(t).replacement),N(f,`datetime`,g(t).expires_at),U(m,e),h.disabled=!!g(q)[g(t).id],N(h,`aria-label`,`Remove vocabulary rule ${g(t).heard} (${g(t).language})`),U(ee,g(q)[g(t).id]===`busy`?`Removing…`:`Remove rule`)},[()=>Pe(g(t).expires_at)]),C(`click`,h,e=>void qe(`rule`,g(t).id,e.currentTarget)),s(e,n)},e=>{var t=vr();s(e,t)}),o(n);var r=I(n,2),i=e=>{var t=yr();s(e,t)};p(r,e=>{g(W).length===128&&e(i)}),s(e,t)};p(w,e=>{g(E)===`loading`?e(D):g(E)===`error`?e(O,1):g(E)===`ready`&&e(k,2)});var j=I(w,2),ie=e=>{var t=qn(),n=z(t,!0);R(()=>U(n,g(ye))),s(e,t)};p(j,e=>{g(ye)&&e(ie)}),R(e=>{i.disabled=g(Z)!==`idle`,N(a,`for`,`${r}-language`),N(c,`id`,`${r}-language`),me(c,g(J)),N(l,`for`,`${r}-heard`),N(u,`id`,`${r}-heard`),N(d,`for`,`${r}-replacement`),N(f,`id`,`${r}-replacement`),_.disabled=e,U(v,g(Z)===`saving`?`Approving…`:`Approve rule`),te.disabled=g(E)===`loading`,U(S,g(E)===`error`?`Retry vocabulary`:`Refresh vocabulary`)},[()=>!g(X)||!g(we).trim()||!g(Y).trim()||!g(J).trim()]),ne(`submit`,n,Je),C(`input`,c,e=>T(Ce,e.currentTarget.value,!0)),C(`input`,u,Ne),re(u,()=>g(we),e=>T(we,e)),C(`input`,f,Ne),re(f,()=>g(Y),e=>T(Y,e)),C(`change`,h,Ne),se(h,()=>g(X),e=>T(X,e)),C(`click`,te,()=>T(x,g(x)+1)),s(e,t)};p(ot,e=>{g(_)&&e(st)}),o(it),o(Xe),R(()=>N(Xe,`hidden`,!a())),L(`open`,`toggle`,Ze,e=>T(v,e),()=>g(v)),L(`open`,`toggle`,et,e=>T(f,e),()=>g(f)),L(`open`,`toggle`,it,e=>T(_,e),()=>g(_)),s(e,Xe),i()}l([`click`,`input`,`change`]);var wr=S(` `),Tr=S(`Offering unresolved`),Er=S(`Refused offering`),Dr=S(`Draft`),Or=S(`Details not loaded`),kr=S(``),Ar=S(`

            No pinned conversations.

            `),jr=S(`

            Selected conversation

            `,1),Mr=S(`

            No séance yet — open one to speak.

            `),Nr=S(``),Pr=S(`

            `),Fr=S(`

            `),Ir=S(``),Lr=S(`

            `),Rr=S(`

            Bridge

            `,1),zr=S(`

            Bridge — conversations

            `),Br=S(`

            `),Vr=S(`
            Séance details
            identity
            title
            turns
            awaiting consent
            `),Hr=S(`
            Project links
            `),Ur=S(``),Wr=S(`

            The requested consent is unavailable in this conversation at this read.

            `),Gr=S(``),Kr=S(`

            The requested Run is not available in this conversation.

            `),qr=S(`
            `),Jr=S(` `,1),Yr=S(`

            Loading conversation…

            `,1),Xr=S(` `,1),Zr=S(`

            `),Qr=S(`

            `),$r=S(`
            ⬡ The Bridge awaits

            Open a séance to begin a local communion.

            `),ei=S(`

            What shall we explore?

            Offer a question, an idea, or a piece of work.

            `),ti=S(`
            `),ni=S(`
            `),ri=S(`

            This Run failed. The text shown here is not a completed answer.

            `),ii=S(` `),ai=S(`
            Capability transition
            `),oi=S(`
            Delegated labor
            `),si=S(`
            LychD
            `),ci=S(` `,1),li=S(`
            `),ui=S(`

            Your current draft is kept. Send or clear it before restoring this text.

            `),di=S(`
            Offering refused

            `),fi=S(`

            `),pi=S(`

            `),mi=S(`
          • `),hi=S(`
            Command examples
              `),gi=S(`

              Open Canvas, Loom or Orb to choose a work target.

              `),_i=S(`

              Canvas commands create a preview. Review and Apply on the board.

              `),vi=S(`

              `),yi=S(`

              Preparing command…

              `),bi=S(`

              `),xi=S(``),Si=S(`
              `,1),Ci=S(``);function wi(e,c){m(c,!0);let l=(e,n=_)=>{let r=y(()=>g(gt).get(n()));var i=kr(),a=A(i);let c;var l=A(a),u=z(l,!0),d=I(l,2),f=e=>{var t=wr(),n=z(t);R(()=>U(n,`${g(r).pending_count??``} awaiting consent`)),s(e,t)};p(d,e=>{g(r)?.pending_count&&e(f)});var m=I(d,2),h=e=>{var t=Tr();s(e,t)},ee=y(()=>P.pending.has(n())),v=e=>{var t=Er();s(e,t)},b=y(()=>P.refused.has(n())),x=e=>{var t=Dr();s(e,t)},te=y(()=>P.drafts.has(n()));p(m,e=>{g(ee)?e(h):g(b)?e(v,1):g(te)&&e(x,2)});var S=I(m,2),ne=e=>{var t=Or();s(e,t)};p(S,e=>{g(r)||e(ne)}),o(a);var w=I(a,2),T=A(w);ct(T,{name:`pin`,size:16}),o(w),o(i),R((e,i,o,s)=>{c=t(a,1,`seance svelte-1xg67vw`,null,c,{current:g($)?.id===n()}),N(a,`href`,e),N(a,`aria-current`,g($)?.id===n()?`page`:void 0),U(u,g(r)?.title??`Conversation · ${n()}`),N(w,`id`,`bridge-pin-${n()}`),N(w,`aria-label`,i),N(w,`aria-pressed`,o),N(w,`title`,s)},[()=>De(n()),()=>`${g(F).includes(n())?`Unpin`:`Pin`} conversation: ${g(r)?.title??n()}`,()=>g(F).includes(n()),()=>g(F).includes(n())?`Unpin conversation`:`Pin conversation`]),C(`click`,a,e=>ke(e,n())),C(`click`,w,()=>pe(n())),s(e,i)},u=de(c,`embedded`,3,!1),v=de(c,`visible`,3,!0),S=y(()=>c.search??K.url.search),w=y(()=>new URLSearchParams(g(S))),E=H(null),P=x(dt)??ft(),F=H([]),se=H(``),L=H(!1);a(()=>{try{T(F,st(localStorage.getItem(it)))}catch{}let e=window.matchMedia?.(`(max-width: 48rem)`);T(L,e?.matches??!1,!0);let t=e=>{T(L,e.matches,!0)};return e?.addEventListener?.(`change`,t),()=>e?.removeEventListener?.(`change`,t)});function pe(e){let t=nt(g(F),e);if(t===g(F)){T(se,`You can pin up to 32 conversations. Unpin one first.`);return}let n=document.activeElement?.id===`bridge-pin-${e}`;T(F,t),T(se,``);try{localStorage.setItem(it,JSON.stringify(t))}catch{T(se,`Pins are kept for this tab; browser storage is unavailable.`)}n&&j().then(()=>{Q||(document.getElementById(`bridge-pin-${e}`)??document.querySelector(`.new-seance`))?.focus({preventScroll:!0})})}let me=new Map(P.settlements),he=y(()=>{let e=g(w).get(`project`);return e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?e:null}),ge=y(()=>g(w).get(`attention`)===`pending`),W=y(()=>!c.sessionId&&(g(ge)||g(w).get(`choose`)===`conversation`||!!g(he))),G=H(null),ye=H(``),xe=y(()=>we(g(w).get(`run`))),Y=y(()=>g(w).has(`consent`)?we(g(w).get(`consent`)):void 0),X=y(()=>g(Y)!==void 0&&g(xe)?Te(g(xe),g(S)):null),Z;function Ee(e){g($)&&P.setDraft(g($).id,e),Gt()}function De(e){return`/bridge/${encodeURIComponent(e)}${g(he)?`?project=${encodeURIComponent(g(he))}`:``}`}function ke(e,t){!c.onNavigate||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),qt(),Promise.resolve(c.onNavigate(t,g(he)?`?project=${encodeURIComponent(g(he))}`:``)).catch(e=>mn(e instanceof Error?e.message:`Conversation navigation failed.`)))}let je=H(!0),Me=H(!1),Fe=H(``),Ie=H(``),Le,Re=0,Be=null,Ve=H(!1),Ue=H(``),We=H(0),Ge=0,Je=H(!0),Xe=H(null),rt=H(ie([])),at=null,ot=new Se,lt=new Se,ut=new Ce,pt=new Set,Q=!1,mt=new Set([`queued`,`running`,`awaiting_hardware`,`awaiting_consent`,`awaiting_delegate`,`awaiting_peer`,`cancelling`,`done`,`failed`,`cancelled`]);function ht(e){return e===`awaiting_hardware`?`awaiting animators`:e===`awaiting_delegate`?`delegated labor`:e.replaceAll(`_`,` `)}let $=y(()=>g(W)?null:g(E)?.session??null),gt=y(()=>new Map([...(g(E)?.sessions??[]).map(e=>[e.id,e]),...g($)?[[g($).id,g($)]]:[]])),_t=y(()=>g(F).filter(e=>!g(ge)||(g(gt).get(e)?.pending_count??0)>0)),vt=y(()=>(g(E)?.sessions??[]).filter(e=>!g(F).includes(e.id)&&(!g(ge)||(e.pending_count??0)>0))),yt=y(()=>g($)&&c.sessionId===g($).id&&g(xe)&&g(Y)&&((g($).turns??[]).some(e=>e.run_id===g(xe))||g(E)?.active_runs.some(e=>e.run_id===g(xe)&&e.session_id===g($).id))?g(E)?.pending_consents.find(e=>e.id===g(Y)&&e.run_id===g(xe)&&e.state===`pending_consent`):void 0),bt=y(()=>g($)?P.drafts.get(g($).id)??``:``),xt=y(()=>g($)?P.refused.get(g($).id)??[]:[]),St=y(()=>g($)?P.pending.get(g($).id):void 0),Ct=y(()=>!g(W)&&!g(je)&&!g(Fe)&&g(E)!==null&&!g($)&&g(E).sessions.length===0&&g(E).active_runs.length===0&&g(E).pending_consents.length===0),wt=y(()=>g(rt).filter(e=>e.sessionId===g($)?.id)),Dt=y(()=>g(wt).some(e=>![`done`,`failed`,`cancelled`].includes(e.runStatus))),Ot=y(()=>g($)&&g(xe)?`${g($).id}:${g(xe)}`:null),kt=y(()=>!!g(Ot)&&g(Xe)!==g(Ot)),At=y(()=>g(E)?.pending_consents.filter(e=>e.state===`pending_consent`).length??0),jt=x(be),Mt=H(null),Nt=H(null),Pt=H(!1),Ft=H(`chat`),It=H(!1),Lt=H(0),zt=H(0),Bt=H(void 0);function Vt(){g(Bt)?.suspend()}ue(()=>{v()||fe(Vt)});let Ht=y(()=>g(Mt)?`${g(Mt).instrument[0]?.toUpperCase()}${g(Mt).instrument.slice(1)} · ${g(Mt).label}`:`Work target unavailable`);function Ut(){let e=g($)?.id??``;return{sessionId:e,draftText:e?P.drafts.get(e)??``:``,draftRevision:e?P.draftRevisions.get(e)??0:0,mode:g(Ft),contextEpoch:g(Lt),targetEpoch:g(zt),composing:g(It),busy:Q||!(c.isVisible?.()??v())||!e||g(je)||g(W)||g(Me)||g(Dt)||!!P.pending.get(e)||g(Pt)||[...P.consentDecisions.values()].some(t=>t.sessionId===e&&t.sending)}}let Wt=y(Ut);function Gt(){g(Bt)?.notifyChanged(Ut())}function qt(){T(Lt,g(Lt)+1),T(Nt,null),Gt()}q(()=>qt()),a(()=>jt?.subscribe(e=>{T(Mt,e),T(zt,g(zt)+1),Gt()})),ue(()=>{let e=g(Wt);fe(()=>g(Bt)?.notifyChanged(e))});function Jt(e,t){return e.sessionId===t.sessionId&&e.draftText===t.draftText&&e.draftRevision===t.draftRevision&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch&&e.composing===t.composing}function Yt(e,t){let n=Ut();if(!Jt(e,n)||e.busy!==n.busy||n.busy||n.composing||!n.sessionId)return null;P.setDraft(n.sessionId,t);let r=Ut();return Gt(),r}function Zt(e){T(Ft,e.currentTarget.value===`work`?`work`:`chat`,!0),qt()}function Qt(e){T(It,e,!0),Gt()}async function $t(e,t){let n=Ut();if(!(n.busy||n.composing||!Jt(e,n))){if(!jt||!t||!jt.isCurrent(t))T(Nt,{status:`unavailable`,summary:`The work target changed or is unavailable. Select the current work target before sending.`});else{T(Pt,!0),T(Nt,null),Gt();try{let n=await jt.execute(e.draftText.trim(),t);if(Q||e.sessionId!==g($)?.id||e.contextEpoch!==g(Lt))return;T(Nt,n),(n.status===`preview`||n.status===`applied`)&&Jt(e,Ut())&&jt.isCurrent(t)&&P.setDraft(e.sessionId,``)}finally{T(Pt,!1),Q||Gt()}}}}let en=(e,t)=>{let n=Ut();if(!(!Jt(e,n)||e.busy!==n.busy||n.busy||n.composing))return e.mode===`work`?$t(e,t.target):On()};function tn(){if(g(Bt)?.handleSend())return;let e=Ut();e.busy||e.composing||!e.draftText.trim()||(e.mode===`work`?$t(e,jt?.capture()??null):On())}let nn=H(!1),rn=H(!1),an=H(void 0),on=null,sn;function cn(e){return sn=e,()=>{sn=void 0}}async function ln(){on=document.activeElement instanceof HTMLElement?document.activeElement:null,T(nn,!0),T(rn,!0),await j(),g(an)?.focus()}function un(){T(rn,!1),on?.isConnected?on.focus():sn?.focus()}async function fn(e){if(Q||g(je)||g(W)||g(Me))throw Error(`Open a conversation and let it finish loading, then try the naming request again.`);let t;if(!g($)){let e=Re;T(Me,!0);try{let n=await ze();if(Q||Re!==e)throw Error(`The conversation changed. No naming request was sent.`);if(t=n.session.id,await gn(t),Q||g(E)?.session?.id!==t)throw Error(`The new conversation could not be read. No naming request was sent.`)}finally{Q||T(Me,!1)}}let n=await On(!1,e);if(t&&!Q&&g($)?.id===t&&(c.onNavigate?await c.onNavigate(t,``):await ve(De(t),{reset:!1})),!n)throw Error(`The naming request was not confirmed. Check the conversation for an active reply or an unresolved offering before trying again.`)}function pn(e){return e.state===`done`||e.state===`failed`||e.state===`cancelled`}function mn(e,t=!0){window.dispatchEvent(new CustomEvent(`altar:omen`,{detail:{text:e,fault:t}}))}function hn(){g(je)||!g(Ie)||g(E)||Q||gn(c.sessionId,!0)}async function gn(e,t=!1){g(bn)!==null&&g(bn)!==e&&T(bn,null),qt();let n=++Re;Be?.abort(),Be=null,T(Ve,!1),T(Ue,``);let r=new Map(P.settlements),i=new Map(g(rt).map(e=>[e.runId,e.authorityGeneration])),a=e!==void 0&&at!==null&&at!==e;T(je,!0),Gt(),T(Fe,``),t||T(Ie,``),a&&(T(E,null),c.onSessionResolved?.(null),T(Xe,null),T(Je,!0));try{let a=await Ne(e),o=g(W)?{...a,session:null,active_runs:[],pending_consents:[]}:a;if(Q||n!==Re)return;let s=o.session?.id??null;if(s&&(P.settlements.get(s)??0)!==(r.get(s)??0)){await gn(e,t);return}at=s;for(let[e,t]of P.consentDecisions)t.sessionId===s&&!t.sending&&!o.pending_consents.some(t=>t.id===e&&t.state===`pending_consent`)&&P.consentDecisions.delete(e);let l=Et(o,f(g(rt))),u=new Set;for(let e of o.active_runs){let t=l.liveTurns.findIndex(t=>t.runId===e.run_id),n=l.liveTurns[t],r=i.get(e.run_id);if(n&&r!==void 0&&(e.terminal||!ot.has(e.run_id))){let i=Tt(n,e,r);l.liveTurns[t]=i,pn(i)?(ot.get(e.run_id)?.(),ot.delete(e.run_id),Cn(e.run_id)):e.terminal&&u.add(e.run_id)}}for(let e of l.retiredRunIds)ot.get(e)?.(),ot.delete(e),Cn(e);T(E,o,!0),c.onSessionResolved?.(o.session?.id??null),T(Ie,``),Ge++,T(rt,l.liveTurns,!0);for(let e of o.active_runs){let t=g(rt).find(t=>t.runId===e.run_id);t&&(u.has(e.run_id)?(ot.get(e.run_id)?.(),ot.delete(e.run_id),t.state=`stale`,t.activity=`projection stale`,t.authorityGeneration++,En(e.run_id,t.sessionId)):pn(t)||Tn(t,t.cursor))}window.dispatchEvent(new CustomEvent(`altar:attention`,{detail:o.pending_count}))}catch(e){n===Re&&(c.onSessionResolved?.(null),T(Fe,e instanceof Error?e.message:`The Bridge stayed dark.`,!0),g(E)||T(Ie,g(Fe),!0))}finally{n===Re&&(T(je,!1),Gt())}}async function _n(){let e=g(E)?.sessions_next_cursor;if(!e||g(je)||g(Ve)||Q)return;let t=Re,n=new AbortController;Be=n,T(Ve,!0),T(Ue,``);try{let r=await Oe(e,n.signal);if(Q||n.signal.aborted||t!==Re||!g(E))return;let i=new Set(g(E).sessions.map(e=>e.id)),a=r.sessions.filter(e=>!i.has(e.id)&&(i.add(e.id),!0));T(E,{...g(E),sessions:[...g(E).sessions,...a],sessions_next_cursor:r.next_cursor},!0)}catch{!Q&&!n.signal.aborted&&t===Re&&T(Ue,`Older conversations could not be loaded. Try again.`)}finally{Be===n&&(Be=null,T(Ve,!1))}}ue(()=>{let e=c.sessionId;g(W),fe(()=>void gn(e))}),ue(()=>{let e=g($)?.id,t=e?P.settlements.get(e)??0:0;e&&t!==(me.get(e)??0)&&(me.set(e,t),fe(()=>void gn(e)))}),ue(()=>{let e=g(he),t=new AbortController;return fe(()=>{T(G,null),T(ye,``),e&&Ye(e,t.signal).then(n=>{!t.signal.aborted&&n.id===e&&T(G,{id:e,title:n.title},!0)}).catch(()=>{t.signal.aborted||T(ye,`The originating Atlas project is unavailable.`)})}),()=>t.abort()}),ue(()=>{let e=g($)?.id,t=c.sessionId,n=g(xe),r=g(Y),i=g(yt)?.id,a=!g(je);g(We),Z&&Z.sessionId===t&&Z.run===n&&Z.consent===r||(Z={sessionId:t,run:n,consent:r,handled:!1},n||T(Je,!0));let o=Z;e&&n&&a&&!o.handled&&j().then(()=>{if(Q||g($)?.id!==e||c.sessionId!==t||g(xe)!==n||g(Y)!==r||g(je)||Z!==o||o.handled)return;o.handled=!0;let a=r===void 0?Le?.querySelector(`[data-run-id="${n}"]`):i&&g(yt)?.id===i?Le?.querySelector(`[data-consent-id="${i}"]`):null;a&&(T(Je,!1),a.focus({preventScroll:!0}),a.scrollIntoView?.({block:`center`}))})}),k(()=>{g(We);let e=Le;e&&g(Je)&&!g(kt)&&j().then(()=>{!Q&&e===Le&&g(Je)&&!g(kt)&&(e.scrollTop=e.scrollHeight)})});function vn(e){return Le=e,()=>{Le===e&&(Le=void 0)}}h(()=>{Q=!0,Re++,Be?.abort();for(let e of ot.values())e();ot.clear();for(let e of lt.values())window.clearTimeout(e);lt.clear()});async function yn(){if(!g(Me)){T(Me,!0),qt();try{let e=await ze();if(Q)return;c.onNavigate?(T(bn,e.session.id,!0),await c.onNavigate(e.session.id,g(he)?`?project=${encodeURIComponent(g(he))}`:``,!0)):await ve(De(e.session.id),{reset:!1,state:{bridgeComposerFocus:e.session.id}})}catch(e){Q||mn(e instanceof Error?e.message:`A séance could not be opened.`)}finally{Q||(T(Me,!1),Gt())}}}let bn=H(null);function xn(e){T(bn,e,!0)}function Sn(e){if(g($)?.id&&g(bn)===g($).id)e.focus(),T(bn,null);else if(g($)?.id&&K.state?.bridgeComposerFocus===g($).id){e.focus();let t={...K.state};delete t.bridgeComposerFocus,_e(``,t)}}function Cn(e){let t=lt.get(e);t!==void 0&&window.clearTimeout(t),lt.delete(e)}function wn(e,t){Cn(e);let n=c.sessionId,r=window.setTimeout(()=>{lt.delete(e),Q||c.sessionId===n&&g(E)?.session?.id===t&&gn(c.sessionId)},50);lt.set(e,r)}function Tn(e,t=e.cursor){if(Q||e.state!==`streaming`||ot.has(e.runId))return;let n=e.runId,r=e.sessionId,i=!1,a;a=Pe(n,e=>{if(Q)return;let t=g(rt).find(e=>e.runId===n);if(!t||e.seq<=t.cursor)return;t.cursor=e.seq,t.authorityGeneration++;let r=e.payload;if(e.kind===`token`)t.content+=String(r.text??``);else if(e.kind===`status`)t.activity=String(r.text??`running`),mt.has(t.activity)&&(t.runStatus=t.activity);else if(e.kind===`node`)t.occurrenceId=typeof r.occurrence_id==`string`&&r.occurrence_id?r.occurrence_id:t.occurrenceId,t.delegatedJobId=typeof r.delegated_job_id==`string`&&r.delegated_job_id?r.delegated_job_id:t.delegatedJobId,t.delegatedRuntime=typeof r.delegated_runtime==`string`&&r.delegated_runtime?r.delegated_runtime:t.delegatedRuntime;else if(e.kind===`dispatch`)t.capabilityKey=String(r.text??``),t.grantId=typeof r.grant_id==`string`?r.grant_id:null,t.dispatchOccurrenceId=typeof r.occurrence_id==`string`?r.occurrence_id:null,t.occurrenceId=typeof r.occurrence_id==`string`&&r.occurrence_id?r.occurrence_id:t.occurrenceId;else if(e.kind===`transition`)t.transitionRequestId=String(r.text??``),t.transitionOccurrenceId=typeof r.occurrence_id==`string`?r.occurrence_id:null,t.transitionPhase=typeof r.phase==`string`?r.phase:t.transitionPhase,t.capabilityKey=typeof r.capability_key==`string`?r.capability_key:t.capabilityKey;else if(e.kind===`fragment`)t.fragments.push(r);else if(e.kind===`consent`)g(E)?.session?.id===t.sessionId?gn(t.sessionId):window.dispatchEvent(new CustomEvent(`altar:attention`));else if(e.kind===`done`){let e=r.turn;typeof e==`object`&&e&&`content`in e&&(t.content=String(e.content)),t.runStatus=String(r.status??`done`),t.state=t.runStatus===`cancelled`?`cancelled`:t.runStatus.includes(`fail`)?`failed`:`done`,t.activity=t.runStatus,ot.delete(n),g(E)?.session?.id===t.sessionId&&wn(n,t.sessionId)}O(We),Gt()},e=>mn(e,!1),async()=>{if(Q)return{cursor:t,terminal:!0};mn(`The run stream lost history; refreshing its authoritative snapshot.`,!1);let e=g(rt).find(e=>e.runId===n)?.authorityGeneration,i=await Ae(n);if(Q)return{cursor:i.cursor,terminal:!0};let a=g(rt).findIndex(e=>e.runId===n),o=g(rt)[a],s=o;return o&&(s=Tt(f(o),i,e),g(rt)[a]=s,g(E)?.session?.id===r&&gn(r)),s&&pn(s)&&(ot.get(n)?.(),ot.delete(n),g(E)?.session?.id===r&&wn(n,r)),O(We),Gt(),{cursor:s?.cursor??i.cursor,terminal:s?pn(s):i.terminal}},{initialCursor:t,onHardClose:()=>{if(Q)return;i=!0,(a===void 0||ot.get(n)===a)&&ot.delete(n);let e=g(rt).find(e=>e.runId===n);e?.state===`streaming`&&(e.state=`stale`,e.activity=`projection stale`,e.authorityGeneration++,O(We),Gt()),En(n,r)}}),i||ot.set(n,a)}async function En(e,t){if(pt.has(e))return;pt.add(e);let n=g(rt).find(t=>t.runId===e)?.authorityGeneration;try{let r=await Ae(e);if(Q)return;if(r.session_id!==t)throw Error(`The authoritative run snapshot changed session identity.`);let i=g(rt).findIndex(t=>t.runId===e),a=g(rt)[i];if(!a)return;let o=Tt(f(a),r,n);g(rt)[i]=o,O(We),Gt(),pn(o)?g(E)?.session?.id===t&&wn(e,t):Tn(o,o.cursor)}catch{Q||mn(`The run projection remains stale; refresh the Bridge to retry.`,!0)}}function Dn(e,t){if(!g($)||t&&g(bt))return;let n=P.refused.get(g($).id)??[],r=n.find(t=>t.requestId===e);if(!r)return;t&&(P.setDraft(g($).id,r.text),Gt());let i=n.filter(t=>t.requestId!==e);i.length?P.refused.set(g($).id,i):P.refused.delete(g($).id)}async function On(e=!1,t){if(!g($)||g(W)||!e&&(g(je)||g(Dt)))return;let n=g($).id,r=P.pending.get(n);if(r?.sending||r&&!e||e&&!r)return;let i=r?.text??t??g(bt).trim();if(!i)return;let a=r?.requestId??crypto.randomUUID();P.pending.set(n,{text:i,requestId:a,uncertain:r?.uncertain??!1,sending:!0,error:``}),T(Fe,``),!e&&t===void 0&&P.setDraft(n,``),Gt();try{let e=await Ke(n,i,a);P.pending.delete(n);let t=(P.settlements.get(n)??0)+1;if(Q||me.set(n,t),P.settlements.set(n,t),Q)return;g(E)?.session?.id===n&&(g(E).session.turns??=[],g(E).session.turns.some(t=>t.role===e.turn.role&&t.content===e.turn.content&&t.created_at===e.turn.created_at)||g(E).session.turns.push(e.turn));let r=g(rt).find(t=>t.runId===e.run_id);return r||(r={sessionId:n,runId:e.run_id,cursor:-1,authorityGeneration:0,content:``,runStatus:`queued`,activity:`queued`,state:`streaming`,fragments:[],patternId:e.pattern_id,patternRevision:e.pattern_revision,loomPath:e.loom_path,orbPath:e.orb_path,evidenceCapture:e.evidence_capture,occurrenceId:null,dispatchOccurrenceId:null,grantId:null,capabilityKey:null,transitionOccurrenceId:null,transitionRequestId:null,transitionPhase:null,delegatedJobId:null,delegatedRuntime:null,delegatedProfile:null,delegatedStatus:null},g(rt).push(r)),O(We),Gt(),Tn(r),!0}catch(e){let t=r?.uncertain||!(e instanceof qe)||e.status===void 0||e.status>=500||e.status===408,o=e instanceof Error?e.message:`The offering was refused.`;t?P.pending.set(n,{text:i,requestId:a,uncertain:!0,sending:!1,error:o}):(P.pending.delete(n),P.drafts.has(n)?P.refused.set(n,[...P.refused.get(n)??[],{requestId:a,text:i,error:o}]):P.setDraft(n,i),!Q&&g(E)?.session?.id===n&&T(Fe,o,!0))}finally{Q||Gt()}}function kn(e,t){let n=g(rt).findIndex(t=>t.runId===e),r=g(rt)[n];if(!r||t.session_id!==r.sessionId)throw Error(`The authoritative run snapshot changed identity.`);let i=Tt(f(r),t);return g(rt)[n]=i,pn(i)&&(ot.get(e)?.(),ot.delete(e),Cn(e)),O(We),Gt(),i}async function An(e){if(!(e.state===`done`||e.state===`failed`||e.state===`cancelled`||ut.has(e.runId))){ut.add(e.runId);try{let t=await He(e.runId);if(Q)return;pn(kn(e.runId,t))&&await Pn(e.sessionId)}catch(t){if(Q)return;try{let n=await Ae(e.runId);if(Q)return;if(pn(kn(e.runId,n))&&await Pn(e.sessionId),!n.terminal)throw t}catch(e){mn(e instanceof Error?e.message:`The cancellation outcome is unknown.`)}}finally{Q||ut.delete(e.runId)}}}function jn(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),tn())}function Mn(){return Ge}function Nn(e,t,n){let r=P.consentDecisions.get(e.id)?.sessionId;if(r){let e=(P.settlements.get(r)??0)+1;Q||me.set(r,e),P.settlements.set(r,e)}if(Q||!g(E)||g(E).session?.id!==r){window.dispatchEvent(new CustomEvent(`altar:attention`));return}if(n!==Ge){Fn();return}Ge++;let i=g(E).pending_consents.findIndex(t=>t.id===e.id);i>=0&&(g(E).pending_consents[i]=e),g(E).pending_count=t;let a=g(E).pending_consents.filter(e=>e.state===`pending_consent`).length;if(g(E).session){g(E).session.pending_count=a;let e=g(E).sessions.find(e=>e.id===g(E)?.session?.id);e&&(e.pending_count=a)}P.consentDecisions.delete(e.id),window.dispatchEvent(new CustomEvent(`altar:attention`,{detail:t}))}async function Pn(e){if(!Q){if(g(E)?.session?.id===e){Ge++,g(E).pending_consents=[],g(E).session&&(g(E).session.pending_count=0);let t=g(E).sessions.find(t=>t.id===e);t&&(t.pending_count=0),window.dispatchEvent(new CustomEvent(`altar:attention`)),await gn(e)}else window.dispatchEvent(new CustomEvent(`altar:attention`))}}function Fn(){!Q&&g($)&&gn(g($).id)}function In(){Le&&T(Je,Le.scrollHeight-Le.scrollTop-Le.clientHeight<72)}function Ln(){if(!Le)return;T(Xe,g(Ot),!0),T(Je,!0);let e=Le.querySelectorAll(`article.turn`);(e.item(e.length-1)??Le).focus({preventScroll:!0}),Le.scrollTop=Le.scrollHeight}var Rn={suspendVoice:Vt,focusSessionComposer:xn},Bn=Ci();r(`1xg67vw`,e=>{var t=te(),n=M(t),r=e=>{ae(()=>{ce.title=`Bridge — LychD`})};p(n,e=>{u()||e(r)}),s(e,t)});let Vn;var Hn=A(Bn),Un=e=>{var t=Ir(),n=A(t),r=I(A(n),2),i=z(r),a=I(r,2),c=I(A(a),2);oe(c,16,()=>g(_t),e=>e,(e,t)=>{l(e,()=>t)},e=>{var t=Ar();s(e,t)});var d=I(c,2),f=e=>{var t=jr(),n=I(M(t),2);l(n,()=>g($).id),s(e,t)},m=y(()=>g($)&&!g(F).includes(g($).id)&&!g(E)?.sessions.some(e=>e.id===g($).id));p(d,e=>{g(m)&&e(f)});var h=I(d,6),ee=e=>{var t=te(),n=M(t);oe(n,17,()=>g(vt),e=>e.id,(e,t)=>{l(e,()=>g(t).id)}),s(e,t)},_=e=>{var t=Mr();s(e,t)};p(h,e=>{g(E)?.sessions.length?e(ee):!g(je)&&!g(Fe)&&e(_,1)});var v=I(h,2),b=e=>{var t=Nr(),n=z(t,!0);R(()=>{t.disabled=g(je)||g(Ve),N(t,`aria-busy`,g(Ve)),U(n,g(Ve)?`Loading conversations…`:`Load more conversations`)}),C(`click`,t,_n),s(e,t)};p(v,e=>{g(E)?.sessions_next_cursor&&e(b)});var x=I(v,2),S=e=>{var t=Pr(),n=z(t,!0);R(()=>U(n,g(Ue))),s(e,t)};p(x,e=>{g(Ue)&&e(S)});var ne=I(x,2),w=e=>{var t=Fr(),n=z(t,!0);R(()=>U(n,g(se))),s(e,t)};p(ne,e=>{g(se)&&e(w)}),o(a),o(n),o(t),R(()=>{n.open=!u()&&!g(L),r.disabled=g(Me),N(r,`aria-busy`,g(Me)),U(i,`✦  ${g(Me)?`Opening…`:`New Séance`}`)}),C(`click`,r,yn),s(e,t)};p(Hn,e=>{(!g(Ct)||g(F).length>0)&&e(Un)});var Wn=I(Hn,2),Gn=A(Wn),Kn=A(Gn),qn=A(Kn),Jn=e=>{var t=Rr(),n=I(M(t),2),r=e=>{var t=Lr(),n=z(t,!0);R(()=>U(n,g($).title)),s(e,t)};p(n,e=>{g($)&&e(r)}),s(e,t)},Yn=e=>{var t=zr();s(e,t)};p(qn,e=>{g(Ct)?e(Yn,-1):e(Jn)});var Xn=I(qn,2),Zn=e=>{var t=Br(),n=z(t);R(()=>U(n,`${g(At)??``} awaiting consent`)),s(e,t)};p(Xn,e=>{g($)&&g(At)&&e(Zn)}),o(Kn);var Qn=I(Kn,2),$n=A(Qn);b($n,()=>cn);var er=I($n,2),tr=A(er),nr=I(tr,2),rr=e=>{var t=Vr(),n=A(t),r=I(A(n)),i=e=>{var t=wr(),n=z(t);R(()=>U(n,`${g(At)??``} awaiting consent`)),s(e,t)};p(r,e=>{g(At)&&e(i)}),o(n);var a=I(n,2),c=I(A(a)),l=z(c,!0),u=I(c,3),d=z(u,!0),f=I(u,3),m=z(f,!0),h=I(f,3),ee=z(h,!0);o(a),o(t),R(()=>{U(l,g($).id),U(d,g($).title),U(m,(g($).turns?.length??0)+g(wt).length),U(ee,g(At))}),s(e,t)};p(nr,e=>{g($)&&e(rr)});var ir=I(nr,4),ar=e=>{var t=Hr(),n=I(A(t),2);$e(n,{kind:`session`,get targetId(){return g($).id},get suggestedProject(){return g(G)}}),o(t),s(e,t)};p(ir,e=>{g($)&&e(ar)}),o(er),o(Qn),o(Gn);var or=I(Gn,2),sr=e=>{var t=Ur(),n=A(t),r=z(n);ee(2),o(t),R(e=>{N(n,`href`,e),U(r,`← ${g(G).title??``}`)},[()=>tt(g(G).id)]),s(e,t)},cr=e=>{var t=Pr(),n=z(t,!0);R(()=>U(n,g(ye))),s(e,t)};p(or,e=>{g(G)?e(sr):g(ye)&&e(cr,1)});var lr=I(or,2),ur=e=>{var t=Wr();s(e,t)};p(lr,e=>{g(Y)!==void 0&&!g(je)&&!g(yt)&&e(ur)});var dr=I(lr,2),fr=e=>{var t=Gr(),n=z(t);R(e=>N(n,`href`,e),[()=>J(g(X))]),s(e,t)};p(dr,e=>{g(X)&&e(fr)});var pr=I(dr,2),mr=e=>{var t=Kr();s(e,t)},hr=y(()=>g(xe)&&!g(je)&&g($)&&!(g($).turns??[]).some(e=>e.role===`agent`&&e.run_id===g(xe))&&!g(wt).some(e=>e.runId===g(xe)));p(pr,e=>{g(hr)&&e(mr)});var gr=I(pr,2),_r=e=>{var t=qr(),n=A(t);B(dn(n,{onclose:un,onask:fn}),e=>T(an,e,!0),()=>g(an)),o(t),R(()=>N(t,`hidden`,!g(rn))),s(e,t)};p(gr,e=>{g(nn)&&e(_r)});var vr=I(gr,2),yr=A(vr),br=e=>{var t=Jr(),n=M(t),r=z(n,!0),i=I(n,2),a=z(i,!0);R(()=>{U(r,g(Ie)),i.disabled=g(je),N(i,`aria-busy`,g(je)),U(a,g(je)?`Reading…`:`Retry read`)}),C(`click`,i,hn),s(e,t)},xr=e=>{var t=Yr();ee(3),s(e,t)},Sr=e=>{var t=Xr(),n=M(t),r=z(n,!0),i=I(n,2);R(()=>U(r,g(Fe))),C(`click`,i,()=>void gn(c.sessionId)),s(e,t)},wi=e=>{var t=Qr(),n=A(t),r=z(n,!0),i=I(n,2),a=z(i,!0),c=I(i,2),l=e=>{var t=Zr(),n=z(t,!0);R(()=>U(n,g(E)?.pending_count?g(E).sessions_next_cursor?`Load more conversations to find older pending requests.`:`Pending requests have no available Bridge conversation.`:`No conversation is awaiting consent.`)),s(e,t)},u=y(()=>g(ge)&&!g(E)?.sessions.some(e=>(e.pending_count??0)>0));p(c,e=>{g(u)&&e(l)}),o(t),R(()=>{U(r,g(ge)?`Conversations awaiting consent`:`Choose a conversation`),U(a,g(ge)?`Select a marked conversation to review its pending requests.`:`Select a conversation from the list or open a new séance.`)}),s(e,t)},Ti=e=>{Xt(e,{onbegin:yn,onnaming:ln,get pending(){return g(Me)}})},Ei=e=>{var t=$r();s(e,t)},Di=e=>{var n=ci(),r=M(n),i=e=>{var t=ei();s(e,t)};p(r,e=>{g($).turns?.length||g(wt).length||g(E)?.pending_consents.length||e(i)});var a=I(r,2);oe(a,17,()=>g($).turns??[],e=>e.run_id?JSON.stringify([g($).id,e.role,e.run_id]):e,(e,n)=>{var r=ni();let i;var a=A(r),c=A(a),l=z(c,!0);o(a);var u=I(a,2),d=e=>{Rt(e,{get runId(){return g(n).run_id}})};p(u,e=>{g(n).role===`agent`&&g(n).run_id&&e(d)});var f=I(u,2),m=z(f,!0),h=I(f,2),ee=e=>{var t=ti();oe(t,20,()=>g(n).fragments??[],e=>e,(e,t)=>{Kt(e,{get descriptor(){return t}})}),o(t),s(e,t)};p(h,e=>{g(n).role===`agent`&&(g(n).fragments?.length??0)>0&&e(ee)}),o(r),R(()=>{i=t(r,1,`turn svelte-1xg67vw`,null,i,{"turn--user":g(n).role===`user`,"turn--agent":g(n).role===`agent`}),N(r,`data-run-id`,g(n).role===`agent`?g(n).run_id:void 0),N(r,`data-state`,g(n).state===`failed`?`failed`:`done`),U(l,g(n).role===`agent`?`LychD`:`You`),U(m,g(n).content)}),s(e,r)});var c=I(a,2);oe(c,17,()=>g(wt),e=>e.runId,(e,t)=>{var n=si(),r=I(A(n),2);{let e=y(()=>ut.has(g(t).runId));Rt(r,{get runId(){return g(t).runId},get turn(){return g(t)},get cancelling(){return g(e)},oncancel:()=>void An(g(t))})}var i=I(r,2),a=z(i,!0),c=I(i,2),l=e=>{var t=ri();s(e,t)};p(c,e=>{g(t).runStatus===`failed`&&g(t).content&&e(l)});var u=I(c,2),d=e=>{var n=ai(),r=I(A(n),2),i=z(r),a=I(r,2),c=e=>{var n=ii(),r=z(n);R(e=>{N(n,`title`,g(t).transitionOccurrenceId),U(r,`transition occurrence ${e??``}`)},[()=>g(t).transitionOccurrenceId.slice(0,12)]),s(e,n)};p(a,e=>{g(t).transitionOccurrenceId&&e(c)}),o(n),R(e=>U(i,`${g(t).capabilityKey??`capability`??``} · + ${e??``}`),[()=>ht(g(t).transitionPhase??g(t).runStatus)]),s(e,n)};p(u,e=>{(g(t).runStatus===`awaiting_hardware`||g(t).transitionRequestId)&&e(d)});var f=I(u,2),m=e=>{var n=oi(),r=A(n),i=A(r);Qe(i,{}),ee(),o(r);var a=I(r,2),c=z(a),l=I(a,2),u=z(l);o(n),R((e,r)=>{N(n,`data-state`,g(t).delegatedStatus??g(t).runStatus),U(c,`${g(t).delegatedRuntime??`runtime`??``} · + ${g(t).delegatedProfile??`contained profile`??``}`),U(u,`${e??``} + · ${r??``}`)},[()=>g(t).delegatedJobId?`AgentJob ${g(t).delegatedJobId.slice(0,12)}`:`AgentJob pending`,()=>et(g(t).delegatedStatus??g(t).runStatus)]),s(e,n)};p(f,e=>{(g(t).runStatus===`awaiting_delegate`||g(t).delegatedJobId)&&e(m)});var h=I(f,2);oe(h,20,()=>g(t).fragments,e=>e,(e,t)=>{Kt(e,{get descriptor(){return t}})}),o(h),o(n),R(e=>{N(n,`data-state`,g(t).state),N(n,`data-run-id`,g(t).runId),U(a,e)},[()=>g(t).content||(pn(g(t))?`No reply text was retained for this Run.`:``)]),s(e,n)});var l=I(c,2);oe(l,17,()=>g(E)?.pending_consents??[],e=>e.id,(e,t)=>{Ze(e,{get consent(){return g(t)},get sessionId(){return g($).id},get decisions(){return P.consentDecisions},onauthority:Mn,ondecided:Nn,onrefresh:Fn})}),s(e,n)};p(yr,e=>{g(Ie)&&!g(E)?e(br):g(je)&&!g($)?e(xr,1):g(Fe)&&!g($)?e(Sr,2):g(W)?e(wi,3):g(Ct)?e(Ti,4):g($)?e(Di,-1):e(Ei,5)}),o(vr),b(vr,()=>vn);var Oi=I(vr,2),ki=e=>{var t=li(),n=z(t);C(`click`,n,Ln),s(e,t)};p(Oi,e=>{g($)&&(!g(Je)||g(kt))&&e(ki)});var Ai=I(Oi,2),ji=e=>{var r=Si(),i=M(r);oe(i,17,()=>g(xt),e=>e.requestId,(e,t)=>{var n=di(),r=I(A(n),2),i=z(r,!0),a=I(r,2),c=z(a,!0),l=I(a,2),u=I(l,2),d=I(u,2),f=e=>{var t=ui();s(e,t)};p(d,e=>{g(bt)&&e(f)}),o(n),R(()=>{U(i,g(t).text),U(c,g(t).error),l.disabled=!!g(bt)}),C(`click`,l,()=>Dn(g(t).requestId,!0)),C(`click`,u,()=>Dn(g(t).requestId,!1)),s(e,n)});var a=I(i,2),c=e=>{var t=pi(),n=A(t),r=z(n,!0),i=I(n,2),a=z(i,!0),c=I(i,2),l=e=>{var t=fi(),n=z(t,!0);R(()=>U(n,g(St).error)),s(e,t)};p(c,e=>{g(St).error&&e(l)});var u=I(c,2),d=z(u,!0),f=I(u,2);o(t),R(()=>{U(r,g(St).sending?`Sending offering…`:`Offering outcome unknown`),U(a,g(St).text),U(d,g(St).sending?`You can continue browsing while this request settles.`:`Retry the original offering to recover its result before sending a new one.`),f.disabled=g(St).sending}),C(`click`,f,()=>void On(!0)),s(e,t)};p(a,e=>{g(St)&&e(c)});var l=I(a,2),u=A(l),f=A(u),m=I(A(f),2),h=A(m);h.value=h.__value=`chat`;var v=I(h),y=z(v,!0);v.value=v.__value=`work`,o(m);var x;D(m),o(f);var te=I(f,2),S=e=>{var t=_i(),n=A(t),r=z(n),i=I(n,2),a=e=>{var t=hi(),n=I(A(t),2);oe(n,20,()=>g(Mt).commands,e=>e,(e,t)=>{var n=mi(),r=A(n),i=z(r,!0);o(n),R(()=>U(i,t)),s(e,n)}),o(n),o(t),s(e,t)},c=e=>{var t=gi();s(e,t)};p(i,e=>{g(Mt)?e(a):e(c,-1)}),ee(2),o(t),R(()=>U(r,`English commands · ${g(Ht)??``}`)),s(e,t)};p(te,e=>{g(Ft)===`work`&&e(S)});var w=I(te,4),O=e=>{var t=vi(),n=z(t,!0);R(()=>U(n,g(E).composer.guidance)),s(e,t)};p(w,e=>{g(E)?.composer?.guidance&&e(O)});var k=I(w,2),j=A(k);n(j),b(j,()=>Sn),o(k);var P=I(k,2);let ie;var ae=A(P),F=A(ae);d(F,()=>g($).id,e=>{B(zn(e,{get snapshot(){return g(Wt)},get target(){return g(Mt)},readSnapshot:Ut,onadopt:Yt,onsubmit:en,isTargetCurrent:e=>jt?.isCurrent(e)===!0,feedback:(e,t=_)=>{Cr(e,le(t))},$$slots:{feedback:!0}}),e=>T(Bt,e,!0),()=>g(Bt))}),o(ae);var se=I(ae,2),ce=z(se,!0);o(P),o(u);var L=I(u,2),ue=e=>{var t=yi();s(e,t)};p(L,e=>{g(Pt)&&e(ue)});var de=I(L,2),fe=e=>{var t=bi(),n=z(t);R(()=>U(n,`${g(Nt).status??``}: ${g(Nt).summary??``}`)),s(e,t)};p(de,e=>{g(Nt)&&e(fe)});var pe=I(de,2),me=A(pe),he=z(me),ge=I(me,2);let H;var W=z(ge,!0);o(pe);var G=I(pe,2),K=e=>{var t=xi(),n=z(t,!0);R(()=>U(n,g(Fe))),s(e,t)};p(G,e=>{g(Fe)&&e(K)}),o(l),R(e=>{U(y,g(Ht)),x!==(x=g(Ft))&&(m.value=(m.__value=x)??``,V(m,x)),N(j,`aria-describedby`,g(E)?.composer?.guidance?`composer-instructions composer-guidance composer-shortcuts`:`composer-guidance composer-shortcuts`),ie=t(P,1,`composer-actions svelte-1xg67vw`,null,ie,{"composer-actions--work":g(Ft)===`work`}),se.disabled=e,U(ce,g(Ft)===`work`?`Send command`:`Offer`),U(he,`Enter to ${g(Ft)===`work`?`send command`:`offer`} · Shift + Enter for a new line`),H=t(ge,1,`svelte-1xg67vw`,null,H,{"visually-hidden":!g(je)&&!g(St)&&!g(Dt)}),U(W,g(je)?`Refreshing this conversation before another offering.`:g(St)?`Resolve the original offering first. This later draft is kept and is not queued.`:g(Dt)?`Wait for this Run to settle before offering again. You can keep writing; this draft is not queued.`:`Draft stays in this open tab.`)},[()=>g(Wt).busy||g(It)||!g(bt).trim()]),C(`change`,m,Zt),C(`keydown`,j,jn),ne(`compositionstart`,j,()=>Qt(!0)),ne(`compositionend`,j,()=>Qt(!1)),re(j,()=>g(bt),Ee),C(`click`,se,tn),s(e,r)};return p(Ai,e=>{g($)&&e(ji)}),o(Wn),o(Bn),R(()=>Vn=t(Bn,1,`instrument-deck instrument-deck--bridge svelte-1xg67vw`,null,Vn,{"instrument-deck--welcome":g(Ct)&&g(F).length===0,"bridge-embedded":u()})),C(`click`,tr,ln),ne(`scroll`,vr,In),s(e,Bn),i(Rn)}l([`click`,`change`,`keydown`]);var Ti=S(` `),Ei=S(` `),Di=S(`Offline · consent unavailable`),Oi=S(`
              `),ki=S(`

              About the Altar

              LychD · The Altar

              Local Sigil · Magus
              `,1);function Ai(e,t){m(t,!0);let n=de(t,`offline`,3,!1),r=H(!1),l=y(()=>!n()||g(r)),u=H(!0),d=H(!1),f=y(()=>!!Y(K.url.pathname,J(`/bridge`))||(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`)&&!K.url.searchParams.has(`notes`)&&!K.url.searchParams.has(`investigation`)),h=y(()=>g(d)&&g(u)&&!g(f)),_=H(null),x=H(void 0);function S(){g(x)?.suspendVoice()}function w(){return g(l)&&(g(u)||g(f))&&(typeof document>`u`||document.visibilityState!==`hidden`)}let E=H(ie(fe(()=>g(f)?`/orb`:`${K.url.pathname}${K.url.search}`))),D=y(()=>{let e=K.url.pathname;return e.startsWith(`/bridge`)?K.url.searchParams.has(`notes`)?`Public notes`:K.url.searchParams.has(`investigation`)?`Public source investigation`:`Conversation workspace`:{seances:`Séances`,atlas:`Atlas`,orb:`Orb`,loom:`Loom`,nexus:`Nexus`,canvas:`Canvas`,scavenger:`Scavenger market`}[e.split(`/`)[1]??``]??`Altar`}),O=H(56);function k(e){let t=()=>{T(O,Math.ceil(e.getBoundingClientRect().height)||56,!0)};if(t(),typeof ResizeObserver>`u`)return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t);let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()}let re=fe(()=>Y(K.url.pathname,J(`/bridge`))),P=H(ie(re?decodeURIComponent(re.slice(8)):void 0)),ae=H(ie(fe(()=>{let e=K.url.searchParams;return re||(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`)&&!e.has(`notes`)&&!e.has(`investigation`)?K.url.search:``}))),se=H(null),L=H(ie([])),le=ie({bridgePath:re??`/bridge`});F(Ee,le);let ue=rt(ot(async e=>{we(e)===e&&(S(),g(x)?.focusSessionComposer(e),le.bridgePath=`/bridge/${encodeURIComponent(e)}`,T(P,e,!0),T(ae,``),T(u,!0))}));function me(e){ue.needsUnloadWarning&&(e.preventDefault(),e.returnValue=``)}let he=new Map,V=0,ge=!1;q(({from:e})=>{S(),ge=g(f),g(f)||T(E,`${K.url.pathname}${K.url.search}`);let t=document.getElementById(`altar-main`);e&&t&&(he.delete(e.url.href),he.set(e.url.href,{top:t.scrollTop,left:t.scrollLeft}),he.size>64&&he.delete(he.keys().next().value))}),ye(({type:e,to:t})=>{let n=++V;if(t&&!t.url.hash&&(e===`link`||e===`popstate`)){let r=e===`popstate`?he.get(t.url.href):void 0;j().then(()=>{let e=document.getElementById(`altar-main`);e&&n===V&&(e.scrollTop=r?.top??0,e.scrollLeft=r?.left??0)})}let r=K.url.pathname,i=K.url.search,a=Y(r,J(`/bridge`)),o=r===J(`/bridge`)||r===`${J(`/bridge`)}/`,s=new URLSearchParams(i),c=o&&!s.has(`notes`)&&!s.has(`investigation`);ge&&!g(f)&&(g(d)||T(u,!0),j().then(()=>{n===V&&document.getElementById(`altar-main`)?.focus({preventScroll:!0})})),a?(le.bridgePath=a,T(P,decodeURIComponent(a.slice(8)),!0),T(ae,i,!0)):c?(T(P,void 0),T(ae,i,!0)):e!==`enter`&&g(d)&&g(u)&&(S(),T(u,!1),j().then(()=>document.getElementById(`altar-main`)?.focus({preventScroll:!0})))});async function W(e,t){let n=`/bridge/${encodeURIComponent(e)}`,r=K.url.searchParams;(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`||Y(K.url.pathname,J(`/bridge`)))&&!r.has(`notes`)&&!r.has(`investigation`)?await ve(J(`${n}${t}`),{reset:!1}):(le.bridgePath=n,T(P,e,!0),T(ae,t,!0))}function _e(){if(g(u)){g(f)||S(),T(u,!1);return}let e=le.bridgePath;T(P,e===`/bridge`?void 0:decodeURIComponent(e.slice(8)),!0),T(ae,``),T(u,!0)}function be(){T(r,!0),Ie()}let xe=0,Se=0,Ce=!1,X=!1,Z,Te=``,De=!1;function Oe(e){let t=!1,n=e.classList.contains(`application-menu`);function r(n){e.open&&!n.composedPath().includes(e)&&(e.open=!1,t=!1)}function i(n){n.key===`Escape`&&!n.defaultPrevented&&e.open&&(e.open=!1,t=!1,e.querySelector(`summary`)?.focus(),n.preventDefault())}function a(){n&&(e.open=!0)}function o(){n&&!t&&!e.contains(document.activeElement)&&(e.open=!1)}function s(t){n&&!(t.relatedTarget instanceof Node&&e.contains(t.relatedTarget))&&(e.open=!0)}function c(r){n&&!(r.relatedTarget instanceof Node&&e.contains(r.relatedTarget))&&(e.open=!1,t=!1)}function l(r){n&&r.target instanceof Element&&r.target.closest(`summary`)&&(r.preventDefault(),t=!t,e.open=t)}return e.addEventListener(`pointerenter`,a),e.addEventListener(`pointerleave`,o),e.addEventListener(`focusin`,s),e.addEventListener(`focusout`,c),e.addEventListener(`click`,l),window.addEventListener(`click`,r),window.addEventListener(`keydown`,i),()=>{e.removeEventListener(`click`,l),e.removeEventListener(`pointerenter`,a),e.removeEventListener(`pointerleave`,o),e.removeEventListener(`focusin`,s),e.removeEventListener(`focusout`,c),window.removeEventListener(`click`,r),window.removeEventListener(`keydown`,i)}}let ke=[{slug:`bridge`,label:`Bridge`,related:`/seances`},{slug:`atlas`,label:`Atlas`,related:`/canvas`},{slug:`loom`,label:`Loom`},{slug:`nexus`,label:`Nexus`},{slug:`orb`,label:`Orb`}];function Ae(e,t){let n=K.url.pathname;if(n===t||n===`${t}/`)return`page`;let r=[J(`/${e.slug}`)];return`related`in e&&r.push(J(e.related)),r.some(e=>n===e||n.startsWith(`${e}/`))?`location`:void 0}function je(e){Ie()}function Me(e){let t=e.detail;Ne(t.text,t.fault??!0)}function Ne(e,t=!0){let n=++xe;g(L).push({id:n,text:e,fault:t}),t||window.setTimeout(()=>Pe(n),6e3)}function Pe(e){T(L,g(L).filter(t=>t.id!==e),!0)}function Fe(){Z!==void 0&&window.clearTimeout(Z),Z=void 0}function Ie(){if(!De||!g(l)||document.visibilityState!==`visible`)return;Fe(),T(se,null);let e=++Se;Ce?X=!0:(Ce=!0,Le(e))}async function Le(e){try{let t=(await Xe()).pending_consents;De&&e===Se&&(T(se,t,!0),Te=``)}catch(t){if(!De||e!==Se)return;T(se,null);let n=t instanceof Error?t.message:`The Altar cannot be reached.`;n!==Te&&Ne(n),Te=n}finally{Ce=!1,De&&g(l)&&document.visibilityState===`visible`&&(X?(X=!1,Ie()):Z=window.setTimeout(Ie,5e3))}}function Re(){document.visibilityState===`visible`?Ie():(S(),Se++,X=!1,T(se,null),Fe())}a(()=>(De=!0,Ie(),window.addEventListener(`altar:attention`,je),window.addEventListener(`altar:omen`,Me),()=>{De=!1,Se++,X=!1,Fe(),window.removeEventListener(`altar:attention`,je),window.removeEventListener(`altar:omen`,Me)}));var ze=ki();ne(`focus`,pe,Ie),ne(`beforeunload`,pe,me),ne(`visibilitychange`,ce,Re);var Be=I(M(ze),2),Ve=A(Be),He=A(Ve),Ue=z(He),We=I(He,2),Ge=I(A(We),4);N(Ge,`title`,`source`),Ge.textContent=`Altar ${`source`.slice(0,12)??``}`;var Ke=I(Ge,2),qe=A(Ke);N(qe,`href`,`https://github.com/hexanomicon/lychd/tree/main/clients/web`),qe.textContent=`Project source · MPL-2.0`,o(Ke),o(We),o(Ve),b(Ve,()=>Oe);var Je=I(Ve,2),Ye=A(Je);oe(Ye,17,()=>ke,e=>e.slug,(e,t)=>{let n=y(()=>J(g(t).slug===`bridge`?le.bridgePath:`/${g(t).slug}`));var r=Ti(),i=A(r);ct(i,{get name(){return g(t).slug}});var a=I(i),c=z(a,!0);o(r),R(e=>{N(r,`href`,g(n)),N(r,`aria-current`,e),U(c,g(t).label)},[()=>Ae(g(t),g(n))]),s(e,r)});var Ze=I(Ye,2),Qe=A(Ze),$e=A(Qe);ct($e,{name:`applications`}),ee(2),o(Qe);var et=I(Qe,2),tt=A(et),nt=A(tt);ct(nt,{name:`scavenger`}),ee(),o(tt),o(et),o(Ze),b(Ze,()=>Oe),o(Je);var it=I(Je,4),st=e=>{var t=Ei(),n=z(t);R(e=>{N(t,`data-state`,g(se)===null?`unknown`:g(se)>0?`lit`:`dormant`),N(t,`href`,e),U(n,`⬡ ${g(se)===null?`Consent status unknown`:g(se)>0?`${g(se)} awaiting`:`Consent clear`}`)},[()=>J(`/bridge?attention=pending`)]),s(e,t)},lt=e=>{var t=Di();s(e,t)};p(it,e=>{g(l)?e(st):e(lt,-1)}),ee(2),o(Be),b(Be,()=>k);var ut=I(Be,2);let dt;var ft=A(ut),pt=A(ft);c(pt,()=>t.children),o(ft);var Q=I(ft,2);{let e=y(()=>J(g(_)?at(g(_)):`/seances`)),t=y(()=>g(_)?`Open Séance`:`Browse séances`),n=y(()=>J(`/seances`));Ct(Q,{get focused(){return g(f)},get focusHref(){return g(e)},get focusLabel(){return g(t)},get browseHref(){return g(n)},get workHref(){return g(E)},get available(){return g(l)},get viewing(){return g(D)},onconnect:be,onexpand:_e,onsuspend:S,get open(){return g(u)},set open(e){T(u,e,!0)},get narrow(){return g(d)},set narrow(e){T(d,e,!0)},children:(e,t)=>{var n=te(),r=M(n),i=e=>{{let t=y(()=>g(u)||g(f)),n=y(()=>!g(f));B(wi(e,{get visible(){return g(t)},isVisible:w,get embedded(){return g(n)},get sessionId(){return g(P)},get search(){return g(ae)},onNavigate:W,onSessionResolved:e=>{T(_,e,!0)}}),e=>T(x,e,!0),()=>g(x))}};p(r,e=>{g(l)&&e(i)}),s(e,n)},$$slots:{default:!0}})}o(ut);var mt=I(ut,2);oe(mt,21,()=>g(L),e=>e.id,(e,t)=>{var n=Oi(),r=A(n),i=z(r,!0),a=I(r,2);o(n),R(()=>{N(n,`data-state`,g(t).fault?`fault`:`info`),U(i,g(t).text)}),C(`click`,a,()=>Pe(g(t).id)),s(e,n)}),o(mt),R((e,t,n)=>{Be.inert=g(h),N(Ue,`src`,e),N(tt,`href`,t),N(tt,`aria-current`,n),dt=v(ut,``,dt,{height:`calc(100dvh - ${g(O)}px)`}),N(ft,`id`,g(f)?void 0:`altar-main`),N(ft,`hidden`,g(f)),ft.inert=g(h)},[()=>G(`altar-mark.svg`),()=>J(`/scavenger`),()=>K.url.pathname===J(`/scavenger`)?`page`:void 0]),s(e,ze),i()}l([`click`]);function ji(e,t){m(t,!0);let n=fe(()=>!1),r=F(dt,ft()),a=F(be,xe());q(()=>a.invalidate());function o(e){r.needsUnloadWarning&&(e.preventDefault(),e.returnValue=``)}ne(`beforeunload`,pe,o),Ai(e,{get offline(){return n},children:(e,n)=>{var r=te(),i=M(r);c(i,()=>t.children),s(e,r)},$$slots:{default:!0}}),i()}export{ji as component,ut as universal}; \ No newline at end of file diff --git a/src/lychd/public/_app/immutable/nodes/0.z1MQBbBy.js b/src/lychd/public/_app/immutable/nodes/0.z1MQBbBy.js deleted file mode 100644 index f0062b52..00000000 --- a/src/lychd/public/_app/immutable/nodes/0.z1MQBbBy.js +++ /dev/null @@ -1,4 +0,0 @@ -import{A as e,C as t,Ct as n,D as r,Dt as i,F as a,Ft as o,H as s,I as c,J as l,K as u,M as d,Mt as f,N as p,Ot as m,P as h,Pt as g,Q as _,Rt as v,S as y,St as b,T as x,Tt as S,U as ee,W as C,X as te,Y as w,_ as T,_t as E,a as D,b as ne,bt as O,ct as k,d as re,dt as A,et as j,ft as M,g as N,h as P,ht as ie,it as ae,k as oe,kt as F,l as se,lt as ce,mt as I,o as le,ot as L,pt as R,r as ue,s as z,st as de,t as fe,tt as pe,ut as me,v as he,w as B,x as V,y as ge,yt as H,z as U}from"../chunks/BVeF9d6R.js";import{n as W,t as G}from"../chunks/Dl--Q2n6.js";import{t as K}from"../chunks/BfPB4xQI.js";import"../chunks/DPaxGaK1.js";import{i as q,n as _e,r as ve,t as ye}from"../chunks/dF6cm78S.js";import{n as be,t as xe}from"../chunks/CSPzMgon.js";import{n as Se,r as Ce}from"../chunks/BKjpEiX0.js";import"../chunks/Dl-f54hP.js";import{t as J}from"../chunks/DzrQkemW.js";import{a as we,c as Y,i as X,l as Z,o as Te,t as Ee}from"../chunks/GhqezXWZ.js";import{A as De,D as Oe,F as ke,H as Ae,I as je,J as Me,O as Ne,X as Pe,Y 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,q as We,rt as Ge,st as Ke,t as qe,ut as Je,w as Ye,y as Xe}from"../chunks/CSsUtL4f.js";import{t as Ze}from"../chunks/gRE95TiB.js";import{t as Qe}from"../chunks/D-ajtUB9.js";import{n as $e,t as et}from"../chunks/2s_sFVk3.js";import{t as tt}from"../chunks/CY__nf9B.js";import{d as nt,i as rt,l as it,s as at,t as ot,u as st}from"../chunks/DREvf0So.js";import{t as ct}from"../chunks/_X6R9H5H.js";var lt=Object.defineProperty,ut=((e,t)=>{let n={};for(var r in e)lt(n,r,{get:e[r],enumerable:!0});return t||lt(n,Symbol.toStringTag,{value:`Module`}),n})({prerender:()=>!1,ssr:()=>!1}),dt=Symbol(`Bridge workspace`);function ft(){let e=new Se,t=new Se,n=new Se,r=new Se,i=new Se,a=new Se;return{drafts:e,draftRevisions:t,pending:n,settlements:i,consentDecisions:a,refused:r,setDraft(n,r){(e.get(n)??``)!==r&&(t.set(n,(t.get(n)??0)+1),r?e.set(n,r):e.delete(n))},get needsUnloadWarning(){return e.size>0||n.size>0||r.size>0||[...a.values()].some(e=>!e.settled)}}}var pt=`lychd.bridge-dock.layout.v1`,Q={width:360,side:`left`,open:!0};function mt(e){return Math.round(Math.min(720,Math.max(320,e)))}function ht(e){try{let t=JSON.parse(e??`null`);if(typeof t!=`object`||!t)return{...Q};let n=t;return{width:typeof n.width==`number`&&Number.isFinite(n.width)?mt(n.width):Q.width,side:n.side===`left`||n.side===`right`?n.side:Q.side,open:typeof n.open==`boolean`?n.open:Q.open}}catch{return{...Q}}}var $=C(`Bridge`),gt=C(``),_t=C(``),vt=C(``),yt=C(`

              Bridge

              Viewing:

              Page content is not attached to messages.

              `,1),bt=C(`

              Bridge is offline

              This development workbench has not connected to LychD. Conversations and consent status are unavailable.

              `),xt=C(``),St=C(`
              `);function Ct(e,n){m(n,!0);let r=fe(n,`open`,15,!0),l=fe(n,`narrow`,15,!1),u=fe(n,`forceOpen`,3,!1),d=fe(n,`focused`,3,!1),f=fe(n,`focusHref`,3,`/seances`),h=fe(n,`focusLabel`,3,`Open Séance`),v=fe(n,`workHref`,3,`/orb`),S=fe(n,`available`,3,!0),ee=fe(n,`viewing`,3,`Altar`),C=H(ie(Q.width)),T=H(ie(Q.side)),ne=H(ie(Q.open)),O=H(1280),k=b(()=>Math.max(320,Math.min(720,Math.floor(_(O)*.6)))),re=b(()=>Math.min(_(C),_(k))),P=b(()=>l()&&r()&&!d()),ae=b(()=>r()||d()),oe;function F(e){return oe=e,()=>{oe===e&&(oe=void 0)}}let se=H(!1),ce=null,le=!1,ue=null;function z(e){r()&&!e&&!d()&&n.onsuspend?.(),r(e)}a(()=>{let e=window.matchMedia?.(`(max-width: 56rem)`);l(e?.matches??!1);let t=null;try{t=localStorage.getItem(pt);let e=ht(t);E(C,e.width,!0),E(T,e.side,!0),E(ne,t===null&&l()?!1:e.open,!0),u()||z(t===null&&l()?!1:e.open)}catch{l()&&(E(ne,!1),u()||z(!1))}let n=e=>{l(e.matches)};return e?.addEventListener?.(`change`,n),E(se,!0),()=>e?.removeEventListener?.(`change`,n)}),de(()=>{if(_(se))try{localStorage.setItem(pt,JSON.stringify({width:_(C),side:_(T),open:_(ne)}))}catch{}}),de(()=>{let e=oe;_(P)&&!le&&e?(ce=document.activeElement instanceof HTMLElement&&document.activeElement!==document.body?document.activeElement:document.getElementById(`bridge-toggle`),j().then(()=>{l()&&r()&&!d()&&!e.contains(document.activeElement)&&e.querySelector(`[data-dock-close]`)?.focus()})):!_(P)&&le&&(!d()&&ce?.isConnected&&ce.focus({preventScroll:!0}),ce=null),le=_(P)});function pe(e){if(_(P)&&oe){if(e.key===`Escape`&&!e.defaultPrevented)e.preventDefault(),V();else if(e.key===`Tab`){let t=[...oe.querySelectorAll(`a[href], button:not(:disabled), textarea:not(:disabled), input:not(:disabled), select:not(:disabled), summary, [tabindex='0']`)].filter(e=>e.tabIndex>=0&&!e.closest(`[hidden], [inert]`)&&e.getClientRects().length>0),n=t[0],r=t.at(-1);n?e.shiftKey&&(document.activeElement===n||!oe.contains(document.activeElement))?(e.preventDefault(),r?.focus()):e.shiftKey||document.activeElement!==r&&oe.contains(document.activeElement)||(e.preventDefault(),n.focus()):(e.preventDefault(),oe.focus())}}}function he(){r()?V():(E(ne,!0),n.onexpand?n.onexpand():r(!0))}function V(){E(ne,!1),z(!1),j().then(()=>document.getElementById(`bridge-toggle`)?.focus({preventScroll:!0}))}function ge(e){e.button!==0||l()||(ue={x:e.clientX,width:_(re),pointer:e.pointerId},e.currentTarget.setPointerCapture?.(e.pointerId),e.preventDefault())}function W(e){ue&&e.pointerId===ue.pointer&&E(C,Math.min(_(k),mt(ue.width+(e.clientX-ue.x)*(_(T)===`left`?1:-1))),!0)}function G(e){ue?.pointer===e.pointerId&&(ue=null)}function K(e){if(e.key===`Home`)E(C,320,!0);else if(e.key===`End`)E(C,_(k),!0);else if(e.key===`ArrowLeft`||e.key===`ArrowRight`)E(C,Math.min(_(k),mt(_(re)+(e.key===`ArrowRight`?24:-24)*(_(T)===`left`?1:-1))),!0);else return;e.preventDefault()}var q=St();te(`keydown`,me,pe);let _e;var ve=A(q),ye=e=>{var t=gt(),n=A(t),i=R(n,!0),a=I(n),c=e=>{var t=$();s(e,t)};p(a,e=>{r()||e(c)}),o(t),L(()=>{N(t,`aria-label`,r()?`Collapse Bridge`:`Expand Bridge`),N(t,`aria-expanded`,r()),N(t,`title`,r()?`Collapse Bridge`:`Expand Bridge`),U(i,_(T)===`left`===r()?`<<`:`>>`)}),w(`click`,t,he),s(e,t)};p(ve,e=>{d()||e(ye)});var be=I(ve,2),xe=A(be),Se=e=>{var t=_t();w(`click`,t,V),s(e,t)};p(xe,e=>{_(P)&&e(Se)});var Ce=I(xe,2),J=A(Ce),we=e=>{var t=vt(),n=R(t);L(()=>N(n,`href`,v())),s(e,t)},Y=e=>{var t=yt(),n=M(t),r=A(n),i=I(A(r)),a=I(A(i),1,!0);o(i),o(r);var c=I(r,2),l=A(c),u=I(A(l)),d=R(u,!0);o(l);var p=I(l,2);o(c),o(n),g(2),L(()=>{U(a,ee()),N(l,`href`,f()),N(l,`aria-label`,h()),N(l,`title`,h()),U(d,h()),N(p,`aria-label`,`Dock Bridge ${_(T)===`left`?`right`:`left`}`),N(p,`title`,`Dock Bridge ${_(T)===`left`?`right`:`left`}`)}),w(`click`,p,()=>{E(T,_(T)===`left`?`right`:`left`,!0)}),s(e,t)};p(J,e=>{d()?e(we):e(Y,-1)});var X=I(J,2),Z=e=>{var t=bt(),r=I(A(t),4);o(t),w(`click`,r,function(...e){n.onconnect?.apply(this,e)}),s(e,t)};p(X,e=>{S()||e(Z)});var Te=I(X,2),Ee=A(Te);c(Ee,()=>n.children),o(Te),o(Ce);var De=I(Ce,2),Oe=e=>{var t=xt();L(()=>{N(t,`aria-valuemin`,320),N(t,`aria-valuemax`,_(k)),N(t,`aria-valuenow`,_(re))}),w(`pointerdown`,t,ge),w(`pointermove`,t,W),w(`pointerup`,t,G),te(`pointercancel`,t,G),te(`lostpointercapture`,t,()=>{ue=null}),w(`keydown`,t,K),s(e,t)};p(De,e=>{!l()&&!d()&&e(Oe)}),o(be),o(q),x(q,()=>F),L(()=>{N(q,`id`,d()?`altar-main`:void 0),t(q,1,B([`dock-shell`,{"dock-left":_(T)===`left`,"dock-modal":l()&&!d(),"dock-collapsed":!_(ae),"dock-focused":d()}]),`svelte-1usyivu`),N(q,`role`,d()?`main`:_(P)?`dialog`:void 0),N(q,`aria-label`,d()?`Bridge workspace`:void 0),N(q,`aria-modal`,_(P)?!0:void 0),N(q,`aria-labelledby`,_(P)?`bridge-dock-title`:void 0),_e=y(q,``,_e,{"--dock-width":`${_(re)}px`}),N(be,`hidden`,!_(ae)),N(Ce,`role`,l()||d()?void 0:`complementary`),N(Ce,`aria-labelledby`,d()?void 0:`bridge-dock-title`),N(Te,`hidden`,!S())}),D(`innerWidth`,e=>E(O,e,!0)),s(e,q),i()}l([`click`,`pointerdown`,`pointermove`,`pointerup`,`keydown`]);function wt(e,t=0){return{sessionId:e.session_id,runId:e.run_id,cursor:e.cursor,authorityGeneration:t,content:e.content,runStatus:e.run_status,activity:e.activity,state:e.terminal?e.run_status===`cancelled`?`cancelled`:e.run_status.includes(`fail`)?`failed`:`done`:`streaming`,fragments:e.fragments.map(e=>({...e})),patternId:e.pattern_id,patternRevision:e.pattern_revision,loomPath:e.loom_path,orbPath:e.orb_path,evidenceCapture:e.evidence_capture,occurrenceId:e.occurrence_id??null,dispatchOccurrenceId:e.dispatch_occurrence_id??null,grantId:e.grant_id??null,capabilityKey:e.capability_key??null,transitionOccurrenceId:e.transition_occurrence_id??null,transitionRequestId:e.transition_request_id??null,transitionPhase:e.transition_phase??null,delegatedJobId:e.delegated_job_id??null,delegatedRuntime:e.delegated_runtime??null,delegatedProfile:e.delegated_profile??null,delegatedStatus:e.delegated_status??null}}function Tt(e,t,n){if(e.runId!==t.run_id)throw Error(`A run snapshot cannot replace a different live turn.`);if(e.sessionId!==t.session_id)throw Error(`A run snapshot cannot replace a turn from another session.`);return n!==void 0&&n!==e.authorityGeneration||t.cursore.role===`agent`&&e.run_id).map(e=>e.run_id)),i=[],a=t.filter(e=>{let t=e.sessionId===n.id&&r.has(e.runId);return t&&i.push(e.runId),!t});for(let t of e.active_runs)a.some(e=>e.runId===t.run_id)||a.push(wt(t));return{liveTurns:a,retiredRunIds:i}}var Dt=C(` `),Ot=C(`Look into the Orb `),kt=C(`Evidence link unavailable`),At=C(``),jt=C(`

              The supplied projection belongs to another Run.

              `),Mt=C(`
              Pattern
              Revision
              `,1),Nt=C(`
              Run status
              Declared score
              `,1),Pt=C(`
              Delegated job
              `,1),Ft=C(`View declared score `),It=C(`

              Declared score link unavailable

              `),Lt=C(`
              Run
              `);function Rt(e,t){let n=u();m(t,!0);let r=fe(t,`cancelling`,3,!1),a=H(!1),c=b(()=>!!t.turn&&t.turn.runId!==t.runId),l=b(()=>_(c)?void 0:t.turn),d=b(()=>_(l)?.delegatedJobId?new URLSearchParams({job:_(l).delegatedJobId}).toString():``),f=b(()=>!_(c)&&(!_(l)||Z(_(l).orbPath,``)===Te(t.runId))?Te(t.runId,_(d)):null),h=b(()=>{if(!_(l)?.loomPath||!_(l).patternId||!_(l).patternRevision)return null;let e=X(_(l).loomPath,t.runId,_(d));return e===X(`/loom/${encodeURIComponent(_(l).patternId)}/${encodeURIComponent(_(l).patternRevision)}`,t.runId,_(d))?e:null}),g=b(()=>!!t.oncancel&&!!_(l)&&![`done`,`failed`,`cancelled`].includes(_(l).state)),v=b(()=>_(l)?.runStatus===`running`&&_(l).state===`streaming`);function y(e){return e===`awaiting_hardware`?`awaiting animators`:e===`awaiting_delegate`?`delegated labor`:e.replaceAll(`_`,` `)}var x=Lt(),S=A(x),ee=A(S),C=I(A(ee),2),te=R(C),T=I(C,2),D=R(T,!0);o(ee);var ne=I(ee,2),O=A(ne),k=R(O,!0),re=I(O,2),j=e=>{var t=Dt(),n=R(t,!0);L(e=>U(n,e),[()=>y(_(l).activity)]),s(e,t)};p(re,e=>{_(l)?.activity&&_(l).activity!==_(l).runStatus&&e(j)}),o(ne);var P=I(ne,2),ie=A(P),ae=e=>{var t=Ot();L(()=>N(t,`href`,_(f))),s(e,t)},oe=e=>{var t=kt();s(e,t)};p(ie,e=>{_(f)?e(ae):e(oe,-1)});var F=I(ie,2),se=e=>{var n=At(),i=R(n,!0);L(()=>{n.disabled=r(),N(n,`aria-busy`,r()),N(n,`aria-label`,`Cancel run ${t.runId}`),U(i,r()?`Cancelling…`:`Cancel Run`)}),w(`click`,n,function(...e){t.oncancel?.apply(this,e)}),s(e,n)};p(F,e=>{_(g)&&e(se)}),o(P),o(S);var ce=I(S,2),le=e=>{var t=jt();s(e,t)};p(ce,e=>{_(c)&&e(le)});var ue=I(ce,2),z=A(ue),de=I(A(z)),pe=A(de),me=R(pe,!0);o(de);var he=I(de,2),B=e=>{var t=Mt(),n=I(M(t)),r=R(n,!0),i=I(n,3),a=A(i),c=R(a,!0);o(i),L(()=>{U(r,_(l).patternId||`Not available`),U(c,_(l).patternRevision||`Not available`)}),s(e,t)},V=e=>{var t=Nt(),n=I(M(t)),r=R(n,!0),i=I(n,3),a=R(i,!0);L(()=>{U(r,_(c)?`Not available`:`Not retained in this reply`),U(a,_(c)?`Not available`:`Not retained in this reply`)}),s(e,t)};p(he,e=>{_(l)?e(B):e(V,-1)});var ge=I(he,2),W=e=>{var t=Pt(),n=I(M(t)),r=A(n),i=R(r,!0);o(n),L(()=>U(i,_(l).delegatedJobId)),s(e,t)};p(ge,e=>{_(l)?.delegatedJobId&&e(W)}),o(z);var G=I(z,2),K=e=>{var t=Ft();L(()=>N(t,`href`,_(h))),s(e,t)},q=e=>{var t=It();s(e,t)};p(G,e=>{_(h)?e(K):_(l)&&e(q,1)}),o(ue),o(x),L(e=>{N(ee,`aria-expanded`,_(a)),N(ee,`aria-controls`,n),U(te,`details for Run ${t.runId??``}`),U(D,_(a)?`⌃`:`⌄`),N(ne,`data-active`,_(v)),N(ne,`data-status`,_(l)?.runStatus),U(k,e),N(ue,`id`,n),N(ue,`hidden`,!_(a)),U(me,t.runId)},[()=>_(c)?`Run details unavailable`:_(l)?y(_(l).runStatus):`Retained reply`]),w(`click`,ee,()=>E(a,!_(a))),s(e,x),i()}l([`click`]);var zt=C(`
              Unsupported projection
              Retained inertly.
              `),Bt=C(`
            • `),Vt=C(`
              descriptor · client-projected
                `),Ht=C(` `),Ut=C(`
                Capability census descriptor · client-projected
                Capability keyFamilyState
                `),Wt=C(`
                `),Gt=C(`
                Unknown projection
                The Vessel named no admitted component.
                `);function Kt(t,n){m(n,!0);let r=b(()=>typeof n.descriptor.kind==`string`?n.descriptor.kind:`genui.unknown`),a=b(()=>typeof n.descriptor.schema_version==`number`?n.descriptor.schema_version:null),c=b(()=>typeof n.descriptor.props==`object`&&n.descriptor.props!==null?n.descriptor.props:{}),l=b(()=>Array.isArray(_(c).steps)?_(c).steps.filter(e=>typeof e==`string`):[]),u=b(()=>Array.isArray(_(c).rows)?_(c).rows.filter(e=>typeof e==`object`&&!!e):[]);var d=ee(),f=M(d),h=e=>{var t=zt(),n=A(t),i=I(A(n),2),c=R(i);o(n),g(2),o(t),L(()=>{N(t,`data-fragment`,_(r)),N(t,`data-schema-version`,_(a)??`unknown`),U(c,`schema ${_(a)??`unknown`??``}`)}),s(e,t)},v=t=>{var n=Vt(),i=A(n),a=A(i),u=R(a,!0);g(2),o(i);var d=I(i,2);oe(d,21,()=>_(l),e,(e,t)=>{var n=Bt(),r=R(n,!0);L(()=>U(r,_(t))),s(e,n)}),o(d),o(n),L(e=>{N(n,`data-fragment`,_(r)),U(u,e)},[()=>String(_(c).title??`Plan`)]),s(t,n)},y=t=>{var n=Ut(),i=I(A(n),2),a=I(A(i));oe(a,21,()=>_(u),e,(e,t)=>{var n=Ht(),r=A(n),i=R(r,!0),a=I(r),c=R(a,!0),l=I(a),u=A(l),d=R(u,!0);o(l),o(n),L((e,t,n,r)=>{U(i,e),U(c,t),N(u,`data-state`,n),U(d,r)},[()=>String(_(t).capability_key??``),()=>String(_(t).family??``),()=>String(_(t).state??`cold`),()=>String(_(t).state??`cold`)]),s(e,n)}),o(a),o(i),o(n),L(()=>N(n,`data-fragment`,_(r))),s(t,n)},x=e=>{var t=Wt(),n=A(t),i=A(n),a=R(i,!0),l=I(i,2),u=R(l,!0);o(n);var d=I(n,2),f=R(d,!0);o(t),L((e,n,i,o)=>{N(t,`data-fragment`,_(r)),U(a,e),N(l,`data-state`,n),U(u,i),U(f,o)},[()=>String(_(c).title??`Vision`),()=>String(_(c).severity??`info`),()=>String(_(c).severity??`info`),()=>String(_(c).body??``)]),s(e,t)},S=e=>{var t=Gt(),n=A(t),i=I(A(n)),a=R(i,!0);o(n),g(2),o(t),L(()=>U(a,_(r))),s(e,t)};p(f,e=>{_(a)===1?_(r)===`genui.plan_checklist`?e(v,1):_(r)===`genui.capability_table`?e(y,2):_(r)===`genui.vision_summary`?e(x,3):e(S,-1):e(h)}),s(t,d),i()}var qt=new URL(`../assets/working-altar.DvY_NSg2.png`,import.meta.url).href,Jt=C(`

                Meet Primus. Begin a conversation, then choose your names together—or return to the naming ceremony whenever you feel ready.

                `,1),Yt=C(`

                LychD · The Altar

                Begin a séance.

                Open a conversation in Bridge with a question, a task, or an idea to explore.

                For a visual workspace and its projects

                Open Canvas
                `);function Xt(e,t){let n=u();m(t,!0);let r=fe(t,`pending`,3,!1);var a=Yt(),c=A(a),l=A(c),d=I(A(l),2),f=I(d,4),h=I(A(f));o(f);var g=I(f,2),_=e=>{var n=Jt(),r=I(M(n),2);w(`click`,r,function(...e){t.onnaming?.apply(this,e)}),s(e,n)};p(g,e=>{t.onnaming&&e(_)});var v=I(g,2),y=I(A(v),2);o(v),o(l);var b=I(l,2),x=R(b);o(c),o(a),L(e=>{N(a,`aria-labelledby`,n),N(d,`id`,n),f.disabled=r(),N(f,`aria-busy`,r()),U(h,` ${r()?`Opening séance…`:`New Séance`}`),N(y,`href`,e),N(x,`src`,qt)},[()=>W(`/canvas`)]),w(`click`,f,function(...e){t.onbegin?.apply(this,e)}),s(e,a),i()}l([`click`]);var Zt=C(`

                Reading saved names…

                `),Qt=C(`

                Currently: &

                `),$t=C(``),en=C(``),tn=C(`

                `),nn=C(`

                Opening the local dictionary…

                `),rn=C(``),an=C(`
                `),on=C(`

                Sending the naming request to Bridge…

                `),sn=C(`

                Review your names

                You:
                Companion:

                These forms of address will apply to future turns. You can change them later.

                `),cn=C(``),ln=C(`

                Saving names…

                `),un=C(`

                Magus & Primus

                Naming ceremony

                Begin with the true or chosen name you want to use. It need not be your legal name, and you need share nothing personal.

                Primus is your continuing main companion. You may invite a name in response to yours, give one yourself, or explore the local dictionary. Every path is equally welcome; there is no hurry.

                You can begin a conversation first and return when a model is answering. You can enter names or browse local suggestions before that.

                Choose forms of address

                Leave either field empty to keep the neutral form Magus or Primus. Suggestions only fill your draft; they do not save anything.

                Explore names together in Bridge

                This sends a normal message in your current conversation, or opens one if needed. Its usual history and Context apply. Review the reply yourself; no proposal is saved automatically.

                After choosing from the reply, enter it above and select “AI assisted” or “Companion’s proposal”. You can cancel a running reply with Bridge’s usual stop control.

                Reopen this ceremony from Bridge → Tools. Closing keeps your draft for this open Altar; refreshing discards unsaved choices.

                `);function dn(e,t){let r=u();m(t,!0);let c,l=H(null),d=H(``),f=H(``),v=H(`manual`),y=H(`manual`),S=H(!0),ee=H(!1),C=H(!1),T=H(!1),D=H(``),O=H(``),k=H([]),j=H(!1),M=H(``),ie=H(`magus`),ae=H(``),F=H(!1),se=H(``),ce=H(``),le=!1,ue=!1,z=new Set,de=b(()=>({magus_name:_(d).trim().normalize(`NFC`)||`Magus`,primus_name:_(f).trim().normalize(`NFC`)||`Primus`,magus_origin:_(v),primus_origin:_(y)}));function fe(){c?.focus()}function pe(e){return c=e,()=>{c=void 0}}function me(){ue=!0,E(C,!1),E(O,``)}async function he(e=!1){let t=new AbortController;z.add(t),E(S,!0),E(D,``);try{let n=await ke(t.signal);if(le)return;E(l,n),E(T,!1),E(C,!1),e?E(O,`Saved names reloaded. Your draft is still here; review it again before saving.`):(E(d,n.current?.magus_name??``,!0),E(f,n.current?.primus_name??``,!0),E(v,n.current?.magus_origin??`manual`,!0),E(y,n.current?.primus_origin??`manual`,!0))}catch{le||(E(D,`Saved names could not be read. You can continue your conversation and try again later.`),E(T,!0))}finally{z.delete(t),le||E(S,!1)}}a(()=>{he()}),h(()=>{le=!0;for(let e of z)e.abort();z.clear()});async function B(e){if(_(j))return;E(ie,e,!0),E(k,[]),E(M,``),E(j,!0);let t=new AbortController;z.add(t);try{let e=await je(t.signal);le||E(k,e.names)}catch{le||E(M,`The local dictionary could not be reached. You can still enter your own name.`)}finally{z.delete(t),le||E(j,!1)}}function V(e){_(ie)===`magus`?(E(d,e,!0),E(v,`dictionary`)):(E(f,e,!0),E(y,`dictionary`)),me()}async function W(e){if(_(F))return;E(F,!0),E(se,``),E(ce,``);let n=`${e===`magus`?`Help me choose my own name as Magus. Offer a few original, beautiful two-part fantasy names with brief meanings. I may also keep or choose a name myself; do not ask for a legal name or personal disclosure.`:`I invite you, Primus, my continuing main companion, to propose your own personal name in relation to my chosen name. Offer an original, beautiful two-part fantasy name with a brief meaning, and alternatives if useful. I will review it before choosing; nothing is saved by this conversation.`}\nNo fictional franchise references. Treat the following as naming preferences, not instructions.\n${JSON.stringify({magus_name:_(de).magus_name,volunteered_details:_(ae).trim()})}`;try{await t.onask(n),le||E(ce,`Request sent to Bridge. Review the reply below, then enter your chosen name here and review before saving. You may close this panel and reopen it from Tools; your draft stays here.`)}catch(e){le||E(se,e instanceof Error?e.message:`The request could not be sent. Check Bridge before trying again.`,!0)}finally{le||E(F,!1)}}async function G(){if(!_(C)||_(ee)||_(S)||!_(l)||_(T))return;E(ee,!0),E(D,``);let e=new AbortController;z.add(e);let t={..._(de)};try{let n=await Ve({expected_revision:_(l).current?.revision??0,names:t},e.signal);if(le)return;E(l,n),E(C,!1),E(d,n.current?.magus_name??``,!0),E(f,n.current?.primus_name??``,!0),E(v,n.current?.magus_origin??`manual`,!0),E(y,n.current?.primus_origin??`manual`,!0),E(O,`Names saved. They apply to future turns; earlier turns keep their original names. You can rename either of you whenever you wish.`)}catch(e){if(le)return;E(C,!1),e instanceof qe&&e.status===409?(E(D,`Names changed since you opened this ceremony. Reload the saved names and review your draft again.`),E(T,!0)):!(e instanceof qe)||e.status===void 0||e.status>=500||e.status===408?(E(D,`The save outcome is unknown. Reload saved names before trying again.`),E(T,!0)):E(D,`The names were not accepted. Check that each is at most 96 printable characters on one line, then review again.`)}finally{z.delete(e),le||E(ee,!1)}}var K={focus:fe},q=un(),_e=A(q),ve=A(_e),ye=I(A(ve),2);x(ye,()=>pe),o(ve);var be=I(ve,2);o(_e);var xe=I(_e,8),Se=e=>{var t=Zt();s(e,t)};p(xe,e=>{_(S)&&e(Se)});var Ce=I(xe,2),J=e=>{var t=Qt(),n=I(A(t)),r=R(n,!0),i=I(n,2),a=R(i,!0),c=I(i,1,!0);o(t),L(()=>{U(r,_(l).current?.magus_name??`Magus`),U(a,_(l).current?.primus_name??`Primus`),U(c,_(l).current?``:` · no names saved yet`)}),s(e,t)};p(Ce,e=>{_(l)&&e(J)});var we=I(Ce,2),Y=e=>{var t=$t(),n=R(t,!0);L(()=>U(n,_(D))),s(e,t)};p(we,e=>{_(D)&&e(Y)});var X=I(we,2),Z=e=>{var t=en();L(()=>t.disabled=_(S)),w(`click`,t,()=>he(ue||_(l)!==null)),s(e,t)};p(X,e=>{_(T)&&e(Z)});var Te=I(X,2),Ee=e=>{var t=tn(),n=R(t,!0);L(()=>U(n,_(O))),s(e,t)};p(Te,e=>{_(O)&&e(Ee)});var De=I(Te,2),Oe=A(De),Ae=I(A(Oe),2),Me=I(Ae,2);P(Me);var Ne=I(Me,2),Pe=I(Ne,2),Fe=A(Pe);Fe.value=Fe.__value=`manual`;var Ie=I(Fe);Ie.value=Ie.__value=`dictionary`;var Le=I(Ie);Le.value=Le.__value=`assisted`;var Re=I(Le);Re.value=Re.__value=`self_chosen`,o(Pe),ne(Pe);var ze=I(Pe,2),Be=I(ze,2),He=I(Be,2);P(He);var Ue=I(He,2),We=I(Ue,2),Ge=A(We);Ge.value=Ge.__value=`manual`;var Ke=I(Ge);Ke.value=Ke.__value=`dictionary`;var Je=I(Ke);Je.value=Je.__value=`assisted`;var Ye=I(Je);Ye.value=Ye.__value=`self_chosen`,o(We),ne(We);var Xe=I(We,2),Ze=I(Xe,4),Qe=e=>{var t=nn();s(e,t)};p(Ze,e=>{_(j)&&e(Qe)});var $e=I(Ze,2),et=e=>{var t=$t(),n=R(t,!0);L(()=>U(n,_(M))),s(e,t)};p($e,e=>{_(M)&&e(et)});var tt=I($e,2),nt=e=>{var t=an();oe(t,20,()=>_(k),e=>e,(e,t)=>{var n=rn(),r=R(n,!0);L(()=>U(r,t)),w(`click`,n,()=>V(t)),s(e,n)}),o(t),L(()=>N(t,`aria-label`,`Local suggestions for ${_(ie)===`magus`?`your name`:`companion name`}`)),s(e,t)};p(tt,e=>{_(k).length&&e(nt)});var rt=I(tt,2),it=I(A(rt),4),at=I(it,2);n(at);var ot=I(at,2),st=A(ot),ct=I(st,2);o(ot);var lt=I(ot,2),ut=e=>{var t=on();s(e,t)};p(lt,e=>{_(F)&&e(ut)});var dt=I(lt,2),ft=e=>{var t=$t(),n=R(t,!0);L(()=>U(n,_(se))),s(e,t)};p(dt,e=>{_(se)&&e(ft)});var pt=I(dt,2),Q=e=>{var t=tn(),n=R(t,!0);L(()=>U(n,_(ce))),s(e,t)};p(pt,e=>{_(ce)&&e(Q)}),g(2),o(rt);var mt=I(rt,2),ht=e=>{var t=sn(),n=I(A(t),2),r=I(A(n)),i=R(r,!0),a=I(r,3),c=R(a,!0);o(n);var u=I(n,4);o(t),L(()=>{U(i,_(de).magus_name),U(c,_(de).primus_name),u.disabled=!_(l)||_(T)}),w(`click`,u,G),s(e,t)},$=e=>{var t=cn();L(()=>t.disabled=!_(l)||_(T)),s(e,t)};p(mt,e=>{_(C)?e(ht):e($,-1)}),o(Oe),o(De);var gt=I(De,2),_t=e=>{var t=ln();s(e,t)};p(gt,e=>{_(ee)&&e(_t)});var vt=I(gt,2);return g(2),o(q),L(()=>{N(q,`aria-labelledby`,`${r}-title`),N(ye,`id`,`${r}-title`),be.disabled=_(ee),Oe.disabled=_(S)||_(ee),N(Ae,`for`,`${r}-magus`),N(Me,`id`,`${r}-magus`),N(Ne,`for`,`${r}-magus-origin`),N(Pe,`id`,`${r}-magus-origin`),ze.disabled=_(j),N(Be,`for`,`${r}-primus`),N(He,`id`,`${r}-primus`),N(Ue,`for`,`${r}-primus-origin`),N(We,`id`,`${r}-primus-origin`),Xe.disabled=_(j),N(it,`for`,`${r}-details`),N(at,`id`,`${r}-details`),st.disabled=_(F),ct.disabled=_(F),vt.disabled=_(ee)}),w(`click`,be,function(...e){t.onclose?.apply(this,e)}),te(`submit`,De,e=>{e.preventDefault(),E(C,!0),E(O,``)}),w(`input`,Me,me),re(Me,()=>_(d),e=>E(d,e)),w(`change`,Pe,me),ge(Pe,()=>_(v),e=>E(v,e)),w(`click`,ze,()=>B(`magus`)),w(`input`,He,me),re(He,()=>_(f),e=>E(f,e)),w(`change`,We,me),ge(We,()=>_(y),e=>E(y,e)),w(`click`,Xe,()=>B(`primus`)),re(at,()=>_(ae),e=>E(ae,e)),w(`click`,st,()=>W(`magus`)),w(`click`,ct,()=>W(`primus`)),w(`click`,vt,function(...e){t.onclose?.apply(this,e)}),s(e,q),i(K)}l([`click`,`input`,`change`]);var fn=16e3,pn=3e4,mn=48e4,hn=class{sampleRate;maxSourceFrames;sourceFrames=0;frames=0;pcm=new Int16Array(mn);weight=0;sum=0;constructor(e){if(!Number.isFinite(e)||e<8e3||e>192e3)throw Error(`Unsupported microphone sample rate.`);this.sampleRate=e,this.maxSourceFrames=Math.floor(e*pn/1e3)}append(e){if(e.length<1||e.length>2048||this.sourceFrames+e.length>this.maxSourceFrames)throw Error(`Microphone frame limit exceeded.`);for(let t of e)if(!Number.isFinite(t))throw Error(`Invalid microphone sample.`);for(let t of e){let e=fn,n=Math.max(-1,Math.min(1,t));for(;e>0;){let t=Math.min(e,this.sampleRate-this.weight);if(this.sum+=n*t,this.weight+=t,e-=t,this.weight>=this.sampleRate){if(this.frames>=48e4)throw Error(`Microphone frame limit exceeded.`);let e=Math.max(-1,Math.min(1,this.sum/this.sampleRate));this.pcm[this.frames++]=Math.round(e*(e<0?32768:32767)),this.sum=0,this.weight=0}}}this.sourceFrames+=e.length}encode(){return gn(this.pcm.subarray(0,this.frames))}clear(){this.pcm.fill(0),this.sourceFrames=this.frames=this.weight=this.sum=0}};function gn(e){if(e.length<1||e.length>48e4)throw Error(`No complete microphone audio, or audio exceeds the capture limit.`);let t=new ArrayBuffer(44+e.length*2),n=new DataView(t),r=(e,t)=>{for(let r=0;rglobalThis.navigator?.mediaDevices?.getUserMedia?navigator.mediaDevices.getUserMedia({audio:!0,video:!1}):Promise.reject(Error(`Microphone capture requires a supported secure browser.`)),createContext:()=>new AudioContext,createWorklet:e=>new AudioWorkletNode(e,`lychd-pcm-recorder`,{numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],channelCountMode:`max`,channelInterpretation:`discrete`}),now:()=>performance.now(),setTimer:(e,t)=>globalThis.setTimeout(e,t),clearTimer:e=>globalThis.clearTimeout(e)}}function vn(e={}){let t=e.platform??_n(),n,r=!1,i={status:`idle`,elapsedMs:0,limitMs:pn},a=(t,n=i.elapsedMs,r)=>{i={status:t,elapsedMs:n,limitMs:pn,...r?{error:r}:{}};try{e.onstate?.({...i})}catch{}},o=e=>n===e&&!e.settled,s=e=>{for(let t of e.trackHandlers.splice(0))t();for(let t of e.stream?.getTracks()??[])try{t.stop()}catch{}e.stream=void 0;try{e.source?.disconnect()}catch{}e.source=void 0},c=e=>{for(let n of[e.timer,e.limitTimer,e.flushTimer])n!==void 0&&t.clearTimer(n);if(s(e),e.node){e.node.port.onmessage=null,e.node.port.onmessageerror=null,e.node.onprocessorerror=null;try{e.node.port.postMessage({type:`cancel`})}catch{}try{e.node.port.close()}catch{}try{e.node.disconnect()}catch{}e.node=void 0}if(e.context){let t=e.context;e.context=void 0;try{t.close().catch(()=>{})}catch{}}e.collector?.clear(),e.collector=void 0},l=(e,t,n,r)=>{o(e)&&(e.settled=!0,c(e),a(t,n?.durationMs??i.elapsedMs,r),e.resolve(n))},u=(e,t)=>l(e,`error`,null,t),d=t=>{if(o(t)&&!t.stopping){try{e.onlimit?.()}catch{}o(t)&&_()}},f=e=>Math.min(pn,Math.max(0,t.now()-(e.startedAt??t.now()))),p=e=>{o(e)&&!e.stopping&&(a(`recording`,f(e)),o(e)&&!e.stopping&&(e.timer=t.setTimer(()=>p(e),100)))},m=(t,n)=>{if(!o(t))return;if(typeof n!=`object`||!n||!t.collector){u(t,`Invalid microphone recorder message.`);return}let r=n;if(r.type===`chunk`&&r.samples instanceof Float32Array&&r.offset===t.collector.sourceFrames)try{t.collector.append(r.samples)}catch{u(t,`Invalid microphone audio or capture limit exceeded.`)}else if(r.type===`stopped`&&r.totalFrames===t.collector.sourceFrames&&(r.reason===`stop`||r.reason===`limit`)){if(r.reason===`stop`&&!t.stopping){u(t,`Unexpected microphone stop.`);return}if(r.reason===`limit`&&t.collector.sourceFrames!==t.collector.maxSourceFrames){u(t,`Invalid microphone limit message.`);return}if(r.reason===`limit`&&!t.stopping)try{e.onlimit?.()}catch{}try{let e=t.collector.frames,n=new Blob([t.collector.encode()],{type:`audio/wav`});l(t,`complete`,{blob:n,frames:e,durationMs:e/fn*1e3,sampleRate:fn,channels:1})}catch{u(t,`No complete microphone audio was captured.`)}}else u(t,`Invalid microphone recorder message.`)},h=async n=>{try{if(!o(n))return;let r=await t.getUserMedia();if(!o(n)){for(let e of r.getTracks())e.stop();return}if(n.stream=r,r.getAudioTracks().length===0)throw Error(`No microphone track.`);for(let e of r.getTracks()){if(e.readyState===`ended`)throw Error(`Microphone track already ended.`);let t=()=>u(n,`Microphone disconnected before capture completed.`);e.addEventListener(`ended`,t),n.trackHandlers.push(()=>e.removeEventListener(`ended`,t))}if(n.context=t.createContext(),n.collector=new hn(n.context.sampleRate),n.limitTimer=t.setTimer(()=>{n.startedAt===void 0?u(n,`Microphone setup timed out.`):d(n)},pn),await n.context.audioWorklet.addModule(e.workletUrl??new URL(new URL(`../assets/pcm-recorder.DjNpFJRo.js`,import.meta.url).href,``+import.meta.url).href),!o(n)||(n.node=t.createWorklet(n.context),n.node.port.onmessage=e=>m(n,e.data),n.node.port.onmessageerror=()=>u(n,`Microphone recorder message failed.`),n.node.onprocessorerror=()=>u(n,`Microphone recorder failed.`),n.source=n.context.createMediaStreamSource(r),n.node.connect(n.context.destination),await n.context.resume(),!o(n)))return;t.clearTimer(n.limitTimer),n.startedAt=t.now(),n.limitTimer=t.setTimer(()=>d(n),pn),n.source.connect(n.node),a(`recording`,0),p(n)}catch{u(n,`Microphone access or recorder setup failed. Check browser permission and device availability.`)}},g=()=>{if(r)return Promise.resolve(null);if(n&&!n.settled)return n.result;let e,t=new Promise(t=>{e=t}),i={result:t,resolve:e,settled:!1,stopping:!1,trackHandlers:[]};return n=i,a(`requesting`,0),h(i),t};function _(){let e=n;if(!e)return Promise.resolve(null);if(!o(e)||e.stopping)return e.result;if(e.startedAt===void 0||!e.node)return l(e,`cancelled`,null),e.result;if(e.stopping=!0,a(`stopping`,f(e)),!o(e))return e.result;s(e),e.flushTimer=t.setTimer(()=>u(e,`Microphone recorder did not finish.`),1e3);try{e.node.port.postMessage({type:`stop`})}catch{u(e,`Microphone recorder did not finish.`)}return e.result}let v=()=>{n&&o(n)&&l(n,`cancelled`,null)};return{start:g,stop:_,cancel:v,dispose:()=>{r=!0,v(),n=void 0},get state(){return{...i}}}}var yn={now:()=>Date.now(),setTimeout:(e,t)=>globalThis.setTimeout(e,t),clearTimeout:e=>globalThis.clearTimeout(e)};function bn(e,t){return e.sessionId===t.sessionId&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch}function xn(e,t){return bn(e,t)&&e.draftRevision===t.draftRevision&&e.draftText===t.draftText}function Sn(e,t){return e+(e&&!/\s$/.test(e)?` `:``)+t}function Cn(e){let t=e.clock??yn,n=!0,r=null,i=null,a=!1,o=!1,s=!0,c=!1,l,u=0,d=Object.freeze({phase:`idle`,originalText:``,finalText:``,reason:``,deadline:null,autosend:!1,adopted:!1});function f(t){d=Object.freeze({...d,...t}),n&&e.onChange?.(d)}function p(){++u,l!==void 0&&t.clearTimeout(l),l=void 0}function m(e){s=!0,p(),f({deadline:null,reason:e,...d.phase===`countdown`?{phase:`review`}:{}})}function h(t){return t.draft.mode===`chat`||t.target!==null&&e.isTargetCurrent?.(t.target)===!0}function g(e,t){return n&&r===e&&!o&&!!t.sessionId.trim()&&!t.busy&&!t.composing&&bn(e.draft,t)&&h(e)}function _(t){let a=r,c=e.read();if(!a||!i||!d.adopted||!g(a,c)||t===`auto`&&!xn(i,c)||!c.draftText.trim()||t===`auto`&&(!d.autosend||s))return n&&m(`Send cancelled: the draft or context is no longer ready.`),!1;if(o=!0,p(),f({phase:`submitted`,deadline:null,reason:``}),!n||r!==a)return!1;try{Promise.resolve(e.submit(c,{attemptId:a.attemptId,source:t,target:a.target})).catch(()=>{n&&r===a&&f({reason:`Send outcome requires review in Bridge. No automatic retry.`})})}catch{n&&r===a&&f({reason:`Send outcome requires review in Bridge. No automatic retry.`})}return!0}function v(){let e=t.now()+2e3,r=++u,i=()=>{if(!n||r!==u)return;let a=e-t.now();a>0?l=t.setTimeout(i,a):_(`auto`)};l=t.setTimeout(i,2e3),f({phase:`countdown`,deadline:e,reason:`Sending in 2 seconds. Cancel to keep editing.`})}function y(t,n){if(!g(t,n)||!d.finalText.trim())return!1;let r=Sn(n.draftText,d.finalText),a=null;c=!0;try{a=e.adopt(n,r)}catch{}finally{c=!1}let o=e.read();return!a||!g(t,o)||!bn(n,a)||a.draftText!==r||a.draftRevision===n.draftRevision||!xn(a,o)?!1:(i=Object.freeze({...a}),f({adopted:!0,reason:``}),!0)}return{get view(){return d},beginCapture(t,c=null){if(!n)throw Error(`Dictation coordinator is destroyed`);p();let l=Object.freeze({...e.read()}),u=Object.freeze({attemptId:t,target:c,draft:l});return r=u,i=l,a=!1,o=!1,s=!d.autosend||l.busy||l.composing,f({phase:`capturing`,originalText:``,finalText:``,reason:``,deadline:null,adopted:!1}),u},receive(t,i){if(!n||r!==t||a||i.attempt_id!==t.attemptId)return!1;a=!0;let c=i.status===`transcribed`?i.original_text??``:``;if(f({phase:`review`,originalText:c,finalText:c,reason:i.status===`transcribed`?``:i.reason??i.status}),!n||r!==t)return!0;if(!c.trim())return m(i.status===`transcribed`?`No speech was transcribed.`:d.reason),!0;let l=e.read();return!xn(t.draft,l)||!y(t,l)?(m(`Draft or context changed. Transcript kept separately for review.`),!0):(!s&&d.autosend&&r===t&&!o&&v(),!0)},notifyChanged(){if(!n||!r||c||o)return;let t=e.read();i&&xn(i,t)&&g(r,t)||m(`Automatic send cancelled by a draft or context change.`)},setAutosend(e){n&&(f({autosend:e}),e||m(`Automatic send is off.`))},setFinalText(e){return!n||!r||o?!1:d.adopted?(m(`Edit adopted text in the Bridge draft; send it manually.`),!1):(m(`Transcript edited. Insert and send manually.`),f({finalText:e}),!0)},insert(){return!n||!r||!a||o||d.adopted?!1:(m(`Inserted transcripts are sent manually.`),y(r,Object.freeze({...e.read()})))},sendManual(){return _(`manual`)},cancelAutosend(){n&&m(`Automatic send cancelled. Draft preserved.`)},cancel(){n&&(r=null,i=null,o=!0,s=!0,p(),f({phase:`cancelled`,deadline:null,reason:`Dictation cancelled. Draft preserved.`}))},destroy(){n=!1,r=null,i=null,o=!0,p()}}}function wn(e=Date.now(),t=e=>{globalThis.crypto.getRandomValues(e)}){if(!Number.isSafeInteger(e)||e<0||e>0xffffffffffff)throw RangeError(`Invalid UUIDv7 timestamp`);let n=new Uint8Array(16);t(n);let r=e;for(let e=5;e>=0;--e)n[e]=r%256,r=Math.floor(r/256);n[6]=n[6]&15|112,n[8]=n[8]&63|128;let i=Array.from(n,e=>e.toString(16).padStart(2,`0`)).join(``);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}var Tn=C(``),En=C(``),Dn=C(``),On=C(`

                `),kn=C(`

                Edit the final text in the Bridge draft above.

                `),An=C(` `,1),jn=C(``),Mn=C(`

                `),Nn=C(``),Pn=C(`

                `),Fn=C(``),In=C(` `,1),Ln=C(` `,1),Rn=C(`
                Voice options

                Remembers the original transcript and sent draft privately. No automatic vocabulary changes or model training.

                `);function zn(e,t){let r=u();m(t,!0);let l=H(null),d=H(`Checking voice availability…`),f=H(!1),h=H(!1),y=H(!1),x=H(null),S=H(!1),C=H(``),D=H(``),O=H(``),k=H({status:`idle`,elapsedMs:0,limitMs:3e4}),re=H(!1),j=H(``),ae=H(!1),F=H(``),ue=H(0),z=H(null),fe=H(``),me=H(``),B=H(ie(Date.now())),V=!0,W=0,G=0,K=null,q=null,_e=null,ve=null,ye=null,be=null,xe=null,Se=``,Ce=null,J=!1,we=()=>be??t.readSnapshot?.()??t.snapshot,Y=Cn({read:we,adopt:(e,n)=>{let r=t.onadopt(e,n);return r&&(xe=r,Se=e.draftText),r},isTargetCurrent:e=>t.isTargetCurrent?.(e)===!0,onChange:e=>{E(X,e),E(B,Date.now(),!0)},submit:(e,n)=>{ye=e;let r=_(ae),i=W,a=t.onsubmit(e,n);return r&&(E(F,`Saving private correction…`),Ge({attempt_id:n.attemptId,final_text:e.draftText.trim()}).then(()=>{V&&i===W&&(E(F,`Private correction saved. Vocabulary changes require separate approval.`),E(ue,_(ue)+1))}).catch(()=>{V&&i===W&&E(F,`Correction storage could not be confirmed. No learning is claimed.`)})),a}}),X=H(Y.view),Z=b(()=>[`requesting`,`recording`,`stopping`].includes(_(k).status)),Te=b(()=>_(l)?.status===`available`&&!!_(l).profile_digest&&!!_(O)&&_(l).languages?.includes(_(O))),Ee=b(()=>_(X).deadline===null?0:Math.max(0,Math.ceil((_(X).deadline-_(B))/1e3))),Oe=b(()=>_(re)?`Transcribing…`:_(k).status===`requesting`?`Waiting for microphone permission…`:_(k).status===`recording`?`Recording ${Math.floor(_(k).elapsedMs/1e3)} / 30 seconds`:_(k).status===`stopping`?`Finishing recording…`:_(z)&&_(X).adopted&&_(X).phase!==`submitted`?`Transcript added to draft. Review and send.`:_(d));async function ke(){let e=++G;E(f,!0),E(l,null),E(d,`Checking voice availability…`);try{let t=await De();if(!V||e!==G)return;E(l,t),E(O,t.languages?.includes(_(O))?_(O):t.languages?.[0]??``,!0),E(d,t.status===`available`&&t.profile_digest&&_(O)?`Local transcription configured; microphone and recognition quality unverified.`:`Voice unavailable: ${(t.reason??`no declared language`).replaceAll(`_`,` `)}.`,!0)}catch{V&&e===G&&E(d,`Voice availability could not be checked. Typed messages remain available.`)}finally{V&&e===G&&E(f,!1)}}function Ae(e=!1){let t=J?Ce:null;W+=1,K?.abort(),K=null,q?.abort(),q=null,E(S,!1),t?(E(x,t),E(C,`Local transcription wait cancelled. The server outcome may be unknown; check the attempt without resending audio.`)):e||(E(x,null),E(C,``),E(D,``)),_e?.dispose(),_e=null,E(re,!1),E(k,{status:`cancelled`,elapsedMs:0,limitMs:3e4}),Y.cancel(),E(z,null),Ce=null,J=!1}function je(){Ae(!0)}function Me(e,t){return e.sessionId===t.sessionId&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch}function Ne(e=we()){if(V){be=e;try{ve&&!Me(ve,e)?(Ae(!0),E(F,``),E(me,``),ke()):ye&&(ye.draftRevision!==e.draftRevision||ye.draftText!==e.draftText)&&(Y.cancel(),E(z,null),ye=null),ve={...e},Y.notifyChanged()}finally{be=null}}}function Pe(){return Ne(),_(z)!==null&&_(X).adopted?(Y.sendManual(),!0):(Y.cancelAutosend(),!1)}function Fe(e){if(Y.cancelAutosend(),!_(z)||!e.trim())return!1;if(!_(X).adopted)return Y.setFinalText(e);let n=we();if(!xe||!Me(xe,n)||n.draftRevision!==xe.draftRevision||n.draftText!==xe.draftText||n.busy||n.composing||_(X).phase===`submitted`)return!1;let r=Se+(Se&&!/\s$/.test(Se)?` `:``)+e,i=t.onadopt(n,r);return i?(xe=i,Ne(i),!0):!1}async function Ie(){let e=_(x);if(!V||!e||_(S))return;let t=new AbortController;q=t,E(S,!0),E(C,`Checking transcription outcome…`);try{let n=await Re(e.attemptId,t.signal);if(!V||t.signal.aborted||_(x)!==e)return;if(n.attempt_id!==e.attemptId)throw Error(`Mismatched attempt`);n.status===`unknown`?E(C,`Transcription outcome is still unknown. You can check again; audio will not be resent.`):n.status===`transcribed`?(E(j,``),Y.cancelAutosend(),Me(e.draft,we())&&Y.receive(e,n)?E(C,_(X).adopted?`Recovered transcript added to draft. Review and send manually.`:`Recovered transcript kept separately for review.`,!0):(E(D,n.original_text??``,!0),E(C,`Recovered transcript belongs to an earlier context. Review it separately; it has not changed this draft.`)),E(x,null)):(E(j,``),E(C,`Transcription ${n.status}: ${(n.reason??`unavailable`).replaceAll(`_`,` `)}. No transcript was adopted.`),E(x,null))}catch(n){if(!V||t.signal.aborted||_(x)!==e)return;n instanceof qe&&n.status===404&&E(j,``),E(C,n instanceof qe&&n.status===404?`This attempt is unavailable. It may have expired or been deleted; no transcript can be recovered.`:`Could not check this attempt. Its transcription outcome remains unknown.`,!0)}finally{q===t&&(q=null,E(S,!1))}}function Le(e,t){return e.size<46||e.size>960044||t.aborted?Promise.reject(Error(`Audio unavailable`)):new Promise((n,r)=>{let i=new FileReader,a=()=>t.removeEventListener(`abort`,o),o=()=>{i.abort(),a(),r(Error(`Cancelled`))};t.addEventListener(`abort`,o,{once:!0}),i.onerror=()=>{a(),r(Error(`Audio could not be encoded`))},i.onload=()=>{if(a(),t.aborted||typeof i.result!=`string`){r(Error(`Cancelled`));return}let e=i.result.indexOf(`,`);e<0?r(Error(`Invalid audio encoding`)):n(i.result.slice(e+1))},i.readAsDataURL(e)})}async function ze(){let e=we();if(!V||!_(Te)||_(Z)||_(re)||_(S)||e.busy||e.composing||!e.sessionId||e.mode===`work`&&(!t.target||t.isTargetCurrent?.(t.target)!==!0))return;E(j,``),E(F,``),ye=null,E(x,null),E(C,``),E(D,``);let n=++W,r=new AbortController;K=r;let i=Y.beginCapture(wn(),t.target);Ce=i,J=!1,E(z,i.attemptId,!0),E(fe,_(O),!0),E(me,e.mode===`work`?t.target?.label??`Work`:`Conversation`,!0);let a=vn({onstate:e=>{V&&n===W&&E(k,e)}});_e=a;let o=!1;try{let e=await a.start();if(!V||n!==W||r.signal.aborted)return;if(!Me(i.draft,we())){Ae();return}if(!e){E(j,_(k).error??`Recording cancelled. Your draft is preserved.`,!0),Y.cancel(),E(z,null);return}E(re,!0);let t=await Le(e.blob,r.signal);if(!V||n!==W||r.signal.aborted)return;if(!Me(i.draft,we())){Ae();return}o=!0,J=!0;let s=await Je({attempt_id:i.attemptId,audio_base64:t,language:_(fe)},r.signal);if(!V||n!==W||r.signal.aborted)return;s.status===`unknown`?(Y.cancelAutosend(),E(x,i),E(j,`Transcription outcome unknown. Check this attempt to recover its result; audio will not be resent.`)):Y.receive(i,s)}catch{V&&n===W&&!r.signal.aborted&&(o?(Y.cancelAutosend(),E(x,i)):(Y.cancel(),E(z,null)),E(j,`Transcription could not be confirmed. No automatic retry or send.`))}finally{a.dispose(),V&&n===W&&(_e=null,K=null,E(re,!1),Ce=null,J=!1)}}de(()=>{let e=t.snapshot;pe(()=>Ne(e))}),de(()=>{if(_(X).deadline===null)return;let e=setInterval(()=>{E(B,Date.now(),!0)},100);return()=>clearInterval(e)}),a(()=>(ke(),()=>{V=!1,W+=1,G+=1,K?.abort(),q?.abort(),_e?.dispose(),Y.destroy()}));var Be={suspend:je,notifyChanged:Ne,handleSend:Pe},Ve=Rn();te(`visibilitychange`,ce,()=>{document.visibilityState===`hidden`&&(_(Z)||_(re)?Ae():Y.cancelAutosend())});var He=A(Ve),Ue=A(He),We=A(Ue),Ke=I(We,2),Ye=e=>{var t=Tn();L(()=>t.disabled=_(k).status!==`recording`),w(`click`,t,()=>void _e?.stop()),s(e,t)};p(Ke,e=>{_(Z)&&e(Ye)});var Xe=I(Ke,2),Ze=e=>{var t=En(),n=R(t,!0);L(()=>U(n,_(re)?`Cancel transcription`:`Cancel recording`)),w(`click`,t,()=>Ae()),s(e,t)};p(Xe,e=>{(_(Z)||_(re))&&e(Ze)}),o(Ue);var Qe=I(Ue,2),$e=I(A(Qe),2),et=A($e),tt=I(et,2);oe(tt,20,()=>_(l)?.languages??[],e=>e,(e,t)=>{var n=Dn(),r=R(n,!0),i={};L(()=>{U(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),s(e,n)}),o(tt),ne(tt);var nt=I(tt,2),rt=A(nt);P(rt),g(),o(nt);var it=I(nt,2),at=A(it);P(at),g(),o(it);var ot=I(it,4),st=e=>{var t=On(),n=R(t);L(()=>U(n,`${_(me)??``} · ${_(fe)??``}`)),s(e,t)};p(ot,e=>{_(me)&&_(z)&&e(st)});var ct=I(ot,2),lt=e=>{var t=An(),i=M(t),a=I(i,2);n(a);var o=I(a,2),c=e=>{var t=kn();s(e,t)};p(o,e=>{_(X).adopted&&e(c)}),L(()=>{N(i,`for`,`${r}-original`),N(a,`id`,`${r}-original`),he(a,_(X).originalText)}),s(e,t)};p(ct,e=>{_(X).originalText&&_(z)&&e(lt)});var ut=I(ct,2),dt=e=>{var n=ee(),r=M(n);c(r,()=>t.feedback??v,()=>({attemptId:_(z),originalText:_(z)?_(X).originalText:``,finalText:_(z)?_(X).adopted?t.snapshot.draftText:_(X).finalText:``,language:_(fe)||_(O),savedRevision:_(ue),active:_(h),applySuggestion:Fe})),s(e,n)};p(ut,e=>{_(y)&&e(dt)}),o($e),o(Qe),o(He);var ft=I(He,2),pt=A(ft),Q=R(pt,!0),mt=I(pt,2),ht=e=>{var t=jn();w(`click`,t,()=>void ke()),s(e,t)};p(mt,e=>{!_(Te)&&!_(f)&&e(ht)}),o(ft);var $=I(ft,2),gt=e=>{var t=Mn(),n=A(t),r=R(n),i=I(n);o(t),L(()=>U(r,`Sending in ${_(Ee)??``} seconds`)),w(`click`,i,()=>Y.cancelAutosend()),s(e,t)};p($,e=>{_(X).deadline!==null&&e(gt)});var _t=I($,2),vt=e=>{var t=Nn(),n=R(t,!0);L(()=>U(n,_(j))),s(e,t)};p(_t,e=>{_(j)&&e(vt)});var yt=I(_t,2),bt=e=>{var t=Pn(),n=R(t,!0);L(e=>U(n,e),[()=>_(X).reason.replaceAll(`_`,` `)]),s(e,t)};p(yt,e=>{_(X).reason&&_(X).phase!==`capturing`&&_(X).phase!==`cancelled`&&_(X).deadline===null&&e(bt)});var xt=I(yt,2),St=e=>{var t=Pn(),n=R(t,!0);L(()=>U(n,_(F))),s(e,t)};p(xt,e=>{_(F)&&e(St)});var Ct=I(xt,2),wt=e=>{var t=Fn();L(()=>t.disabled=_(S)),w(`click`,t,()=>void Ie()),s(e,t)};p(Ct,e=>{_(x)&&e(wt)});var Tt=I(Ct,2),Et=e=>{var t=Pn(),n=R(t,!0);L(()=>U(n,_(C))),s(e,t)};p(Tt,e=>{_(C)&&e(Et)});var Dt=I(Tt,2),Ot=e=>{var t=In(),i=M(t),a=I(i,2);n(a),L(()=>{N(i,`for`,`${r}-recovered`),N(a,`id`,`${r}-recovered`),he(a,_(D))}),s(e,t)};p(Dt,e=>{_(D)&&e(Ot)});var kt=I(Dt,2),At=e=>{var i=Ln(),a=M(i),o=I(a,2);n(o);var c=I(o,2);L(()=>{N(a,`for`,`${r}-suggestion`),N(o,`id`,`${r}-suggestion`),he(o,_(X).finalText),c.disabled=t.snapshot.busy||t.snapshot.composing}),w(`input`,o,e=>Y.setFinalText(e.currentTarget.value)),w(`click`,c,()=>Y.insert()),s(e,i)};return p(kt,e=>{_(X).originalText&&_(z)&&!_(X).adopted&&e(At)}),o(Ve),L(()=>{N(We,`aria-describedby`,`${r}-status`),We.disabled=!_(Te)||_(Z)||_(re)||_(S)||t.snapshot.busy||t.snapshot.composing||t.snapshot.mode===`work`&&!t.target,N(et,`for`,`${r}-language`),N(tt,`id`,`${r}-language`),tt.disabled=_(Z)||_(re)||!_(l)?.languages?.length,T(rt,_(X).autosend),N(pt,`id`,`${r}-status`),U(Q,_(Oe))}),w(`click`,We,()=>void ze()),te(`toggle`,Qe,e=>{e.currentTarget.open&&E(y,!0)}),ge(tt,()=>_(O),e=>E(O,e)),w(`change`,rt,e=>Y.setAutosend(e.currentTarget.checked)),se(at,()=>_(ae),e=>E(ae,e)),le(`open`,`toggle`,Qe,e=>E(h,e),()=>_(h)),s(e,Ve),i(Be)}l([`click`,`change`,`input`]);var Bn=C(`

                Record a transcript to check approved vocabulary.

                `),Vn=C(`

                Checking approved vocabulary…

                `),Hn=C(``),Un=C(`
              1. →
              2. `),Wn=C(`

                  `,1),Gn=C(`

                  No approved rules matched this transcript.

                  `),Kn=C(` `,1),qn=C(`

                  `),Jn=C(` `,1),Yn=C(`

                  Loading voice history…

                  `),Xn=C(``),Zn=C(`
                  Original and final text
                  Original transcript
                  Final saved correction
                  `),Qn=C(`

                  Loading saved correction…

                  `),$n=C(`

                  `),er=C(`

                  Checking retained outcome…

                  `),tr=C(``),nr=C(`

                  Read-only history. Select and copy text if needed; it is not inserted into the current draft or command target.

                  `,1),rr=C(`

                  Outcome remains unknown. This check does not restart transcription.

                  `),ir=C(`

                  No transcript is available for this retained outcome.

                  `),ar=C(`

                  `,1),or=C(`

                  Deletion unconfirmed; refresh history.

                  `),sr=C(`
                • Expires · Created

                • `),cr=C(`
                • No retained voice attempts.
                • `),lr=C(``),ur=C(`

                    `,1),dr=C(`

                    Retained attempts, including those without saved corrections. Inspect reads an existing outcome; it never restarts transcription. Deleting an attempt also removes any saved correction.

                    `,1),fr=C(``),pr=C(` `,1),mr=C(`

                    Loading approved vocabulary…

                    `),hr=C(``),gr=C(`

                    Removal unconfirmed; refresh vocabulary.

                    `),_r=C(`
                  • →

                    Expires

                  • `),vr=C(`
                  • No approved vocabulary rules.
                  • `),yr=C(`

                    Showing up to 128 approved rules.

                    `),br=C(`
                      `,1),xr=C(`

                      Approve exact phrases for one language. Corrections never create rules automatically. This does not train the model.

                      Add a vocabulary rule

                      Use the transcript’s exact language tag, for example en or en-us.

                      `,1),Sr=C(`
                      Vocabulary suggestion
                      Voice history
                      Approved vocabulary
                      `);function Cr(e,t){let r=u();m(t,!0);let a=fe(t,`active`,3,!0),c=!0,l=0,d=H(!0),f=H(!1),v=H(!1),y=H(!1),x=H(0),S=H(0),C=H(0),T=H(`idle`),D=H(`idle`),ne=H(`idle`),O=H([]),k=H([]),j=H(25),ie=H(``),ae=H(``),F=H(!1),ue=b(()=>new Map(_(O).map(e=>[e.attempt_id,e]))),me=H(null),B=H(`idle`),V=H(null),ge=null,W=H([]),G=H(null),K=``,q=H({}),_e=H({}),ve=H(``),ye=H(``),be=H(``),xe,Se,Ce=H(null),J=b(()=>_(Ce)??t.language),we=H(``),Y=H(``),X=H(!1),Z=H(`idle`),Te=H(null),Ee=H(!1),De=0,Oe=new Set,ke=b(()=>JSON.stringify([_(y),_(d),a(),t.attemptId,t.originalText,t.language,_(C)]));h(()=>{c=!1,l+=1,ge?.abort();for(let e of Oe)e()});function Ae(){l+=1;for(let e of Oe)e();E(q,Object.fromEntries(Object.keys(_(q)).map(e=>[e,`unknown`]))),E(_e,Object.fromEntries(Object.keys(_(_e)).map(e=>[e,`unknown`]))),_(Z)===`saving`&&(E(Z,`unknown`),E(ye,`Approval outcome is unknown. Check approved vocabulary before another approval.`))}function je(){E(d,document.visibilityState!==`hidden`),_(d)||Ae()}function Ne(){_(Ce)===null&&E(Ce,_(J),!0)}function Pe(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function ze(){let e=new AbortController;return E(T,`loading`),E(ie,``),E(ae,``),E(O,[]),E(F,!0),Ve(),We(e.signal).then(t=>{c&&!e.signal.aborted&&_(d)&&a()&&(t.length>1e3?(E(ie,`Voice history exceeded the supported 1,000-attempt limit. Refresh history; no incomplete list is shown.`),E(T,`error`)):(E(k,t),E(q,Object.fromEntries(Object.entries(_(q)).filter(([,e])=>e===`busy`))),E(T,`ready`)))}).catch(()=>{c&&!e.signal.aborted&&_(d)&&a()&&(E(ie,`Could not load voice history.`),E(T,`error`))}),Me(e.signal).then(t=>{c&&!e.signal.aborted&&_(d)&&a()&&(E(F,!1),t.length<=1e3?E(O,t):E(ae,`Saved corrections exceeded the supported limit. Attempt inspection and deletion remain available. Refresh history to retry.`))}).catch(()=>{c&&!e.signal.aborted&&_(d)&&a()&&(E(F,!1),E(ae,`Saved corrections could not be loaded completely. Attempt inspection and deletion remain available. Refresh history to retry.`))}),()=>{e.abort(),Ve()}}function Ve(){ge?.abort(),ge=null,E(me,null),E(V,null),E(B,`idle`)}async function He(e){if(!a()||!_(d)||!_(f)||_(q)[e])return;Ve();let t=new AbortController;ge=t,E(me,e,!0),E(B,`loading`);try{let n=await Re(e,t.signal);if(!c||!a()||!_(d)||!_(f)||t.signal.aborted||ge!==t)return;if(n.attempt_id!==e){E(B,`error`);return}E(V,n),E(B,`ready`)}catch{c&&a()&&_(d)&&_(f)&&!t.signal.aborted&&ge===t&&E(B,`error`)}}function Ge(){let e=new AbortController;return E(D,`loading`),Fe(e.signal).then(t=>{if(c&&!e.signal.aborted&&_(d)&&a()&&(E(W,t.slice(0,128)),E(_e,Object.fromEntries(Object.entries(_(_e)).filter(([,e])=>e===`busy`))),E(D,`ready`),_(Te)&&_(Z)===`unknown`)){let e=_(Te);_(W).find(t=>t.language===e.language.toLowerCase()&&t.heard===e.heard.normalize(`NFC`)&&t.replacement===e.replacement.normalize(`NFC`))?(E(Z,`idle`),E(Te,null),E(X,!1),E(ye,`Approval confirmed in retained vocabulary.`)):(E(Ee,!0),E(ye,`No matching retained rule was found. The previous approval remains unconfirmed; your form is preserved.`))}}).catch(()=>{c&&!e.signal.aborted&&_(d)&&a()&&E(D,`error`)}),()=>e.abort()}function Ke(e,n,r){let i=new AbortController,o=++De,s=t.finalText;return E(G,null),E(be,``),E(ne,`loading`),Le({attempt_id:e},i.signal).then(l=>{c&&_(d)&&a()&&!i.signal.aborted&&o===De&&t.attemptId===e&&t.originalText===n&&t.language===r&&(l.attempt_id!==e||l.original_text!==n||l.language.toLowerCase()!==r.toLowerCase()?E(ne,`error`):(K=s,E(G,l),E(ne,`ready`)))}).catch(()=>{c&&_(d)&&a()&&!i.signal.aborted&&o===De&&E(ne,`error`)}),()=>{i.abort(),De+=1}}de(()=>{a()||pe(Ae)}),de(()=>{if(t.savedRevision,_(x),_(f)&&_(d)&&a())return pe(ze)}),de(()=>{if(_(S),_(v)&&_(d)&&a())return pe(Ge)}),de(()=>(_(ke),pe(()=>{if(_(y)&&_(d)&&a()&&t.attemptId)return Ke(t.attemptId,t.originalText,t.language)})));async function qe(e,t,n){if(_(e===`correction`?q:_e)[t]||!_(d)||!a())return;let r=l,i=n,o=n.closest(`li`),s=document.activeElement===i||!!o?.contains(document.activeElement),u=!1,p=e=>{e.target instanceof Node&&e.target!==document.body&&!o?.contains(e.target)&&(u=!0)},m=e=>{e.target instanceof Node&&!o?.contains(e.target)&&(u=!0)},h=()=>{document.removeEventListener(`focusin`,p),document.removeEventListener(`pointerdown`,m,!0),Oe.delete(h)};document.addEventListener(`focusin`,p),document.addEventListener(`pointerdown`,m,!0),Oe.add(h),e===`correction`?E(q,{..._(q),[t]:`busy`}):E(_e,{..._(_e),[t]:`busy`});try{if(e===`correction`?await Ue(t):await Be(t),!c||!_(d)||!a()||r!==l)return;let n=document.activeElement;(n===i||o?.contains(n)||s&&!u&&n===document.body)&&(e===`correction`&&_(f)&&xe?.focus(),e===`rule`&&_(v)&&Se?.focus()),e===`correction`?(_(me)===t&&Ve(),E(k,_(k).filter(e=>e.attempt_id!==t)),E(O,_(O).filter(e=>e.attempt_id!==t)),E(ve,`Retained attempt and any saved correction deleted.`),E(x,_(x)+1)):(E(W,_(W).filter(e=>e.id!==t)),E(ye,`Approved rule removed.`),E(S,_(S)+1)),E(G,null),E(ne,`idle`),E(be,`Retained data changed. Refresh the suggestion before using it.`),De+=1}catch{if(!c||!_(d)||!a()||r!==l)return;e===`correction`?(E(q,{..._(q),[t]:`unknown`}),E(ve,`Deletion could not be confirmed. Refresh history before trying again.`)):(E(_e,{..._(_e),[t]:`unknown`}),E(ye,`Removal could not be confirmed. Refresh vocabulary before trying again.`))}finally{h()}}async function Je(e){if(e.preventDefault(),!_(d)||!a()||_(Z)!==`idle`||!_(X)||!_(we).trim()||!_(Y).trim()||!_(J).trim())return;Ne();let t={language:_(J).trim(),heard:_(we),replacement:_(Y),approved:!0};E(Te,t),E(Z,`saving`),E(Ee,!1);let n=l;try{if(await Ie(t),!c||!_(d)||!a()||n!==l)return;E(Te,null),E(Z,`idle`),E(X,!1),E(ye,`Vocabulary rule approved. Suggestions still require your review.`),E(S,_(S)+1),E(G,null),E(ne,`idle`),E(be,`Vocabulary changed. Refresh the suggestion before using it.`),De+=1}catch{if(!c||!_(d)||!a()||n!==l)return;E(Z,`unknown`),E(ye,`Approval could not be confirmed. Check approved vocabulary before another approval.`)}}function Ye(){!_(d)||!a()||!_(G)||_(G).attempt_id!==t.attemptId||_(G).original_text!==t.originalText||t.finalText!==K||_(G).rules.some(e=>new Date(e.expires_at).getTime()<=Date.now())?E(be,`Suggestion not applied: the draft or attempt changed. Review the current draft.`):E(be,t.applySuggestion(_(G).suggested_text)?`Suggestion applied to the draft. Review it before sending.`:`Suggestion not applied: the draft or attempt changed. Review the current draft.`,!0)}var Xe=Sr();te(`visibilitychange`,ce,je);var Ze=A(Xe),Qe=I(A(Ze),2),$e=e=>{var i=Jn(),a=M(i),c=e=>{var t=Bn();s(e,t)},l=e=>{var i=Kn(),a=M(i),c=e=>{var t=Vn();s(e,t)},l=e=>{var t=Hn();s(e,t)},u=e=>{var t=ee(),i=M(t),a=e=>{var t=Wn(),i=M(t),a=I(i,2);n(a);var c=I(a,2),l=R(c),u=I(c,2);oe(u,21,()=>_(G).rules.slice(0,128),e=>e.id,(e,t)=>{var n=Un(),r=A(n),i=R(r,!0),a=I(r,2),c=R(a,!0);o(n),L(()=>{U(i,_(t).heard),U(c,_(t).replacement)}),s(e,n)}),o(u);var d=I(u,2);L(()=>{N(i,`for`,`${r}-suggestion`),N(a,`id`,`${r}-suggestion`),he(a,_(G).suggested_text),U(l,`Applied rules (${_(G).language??``})`)}),w(`click`,d,Ye),s(e,t)},c=e=>{var t=Gn();s(e,t)};p(i,e=>{_(G).applied_rule_ids.length?e(a):e(c,-1)}),s(e,t)};p(a,e=>{_(ne)===`loading`?e(c):_(ne)===`error`?e(l,1):_(G)&&_(G).attempt_id===t.attemptId&&e(u,2)});var d=I(a,2),f=R(d,!0);L(()=>{d.disabled=_(ne)===`loading`,U(f,_(ne)===`error`?`Retry suggestion`:`Refresh suggestion`)}),w(`click`,d,()=>E(C,_(C)+1)),s(e,i)};p(a,e=>{t.attemptId?e(l,-1):e(c)});var u=I(a,2),d=e=>{var t=qn(),n=R(t,!0);L(()=>U(n,_(be))),s(e,t)};p(u,e=>{_(be)&&e(d)}),s(e,i)};p(Qe,e=>{_(y)&&e($e)}),o(Ze);var et=I(Ze,2),tt=A(et);z(tt,e=>xe=e,()=>xe);var nt=I(tt,2),rt=e=>{var t=dr(),i=I(M(t),2),a=R(i,!0),c=I(i,2),l=e=>{var t=Yn();s(e,t)},u=e=>{var t=Xn(),n=R(t,!0);L(()=>U(n,_(ie))),s(e,t)},d=e=>{var t=ur(),i=M(t),a=e=>{var t=Xn(),n=R(t,!0);L(()=>U(n,_(ae))),s(e,t)};p(i,e=>{_(ae)&&e(a)});var c=I(i,2),l=R(c),u=I(c,2);oe(u,21,()=>_(k).slice(0,_(j)),e=>e.attempt_id,(e,t)=>{let i=b(()=>_(ue).get(_(t).attempt_id));var a=sr(),c=A(a),l=R(c),u=I(c,2),d=I(A(u)),f=R(d,!0),m=I(d,2),h=R(m,!0);o(u);var v=I(u,2),y=A(v),x=I(y),S=R(x,!0);o(v);var C=I(v,2),te=e=>{var t=Zn(),n=I(A(t)),r=I(A(n)),a=R(r,!0),c=I(r,2),l=R(c,!0);o(n),o(t),L(()=>{U(a,_(i).original_text),U(l,_(i).final_text)}),s(e,t)},T=e=>{var t=Qn();s(e,t)},E=e=>{var n=$n(),r=R(n,!0);L(()=>U(r,_(t).has_correction?`Saved correction is not available in this history read.`:`No saved correction.`)),s(e,n)};p(C,e=>{_(i)?e(te):_(t).has_correction&&_(F)?e(T,1):e(E,-1)});var D=I(C,2),ne=R(D,!0),O=I(D,2),k=e=>{var t=ee(),i=M(t),a=e=>{var t=er();s(e,t)},o=e=>{var t=tr();s(e,t)},c=e=>{var t=ar(),i=M(t),a=R(i),o=I(i,2),c=e=>{var t=nr(),i=M(t),a=I(i,2);n(a),g(2),L(()=>{N(i,`for`,`${r}-history-original`),N(a,`id`,`${r}-history-original`),he(a,_(V).original_text??``)}),s(e,t)},l=e=>{var t=rr();s(e,t)},u=e=>{var t=ir();s(e,t)};p(o,e=>{_(V).status===`transcribed`&&_(V).original_text!==null?e(c):_(V).status===`unknown`?e(l,1):e(u,-1)}),L(e=>U(a,`Retained outcome: ${e??``}.`),[()=>_(V).status.replaceAll(`_`,` `)]),s(e,t)};p(i,e=>{_(B)===`loading`?e(a):_(B)===`error`?e(o,1):_(V)&&e(c,2)}),s(e,t)};p(O,e=>{_(me)===_(t).attempt_id&&e(k)});var re=I(O,2),j=R(re,!0),P=I(re,2),ie=e=>{var t=or();s(e,t)};p(P,e=>{_(q)[_(t).attempt_id]===`unknown`&&e(ie)}),o(a),L((e,n,r,i)=>{U(l,`${_(t).language??``} · ${e??``}`),N(d,`datetime`,_(t).expires_at),U(f,n),N(m,`datetime`,_(t).created_at),U(h,r),U(y,`${_(t).audio_available?`Audio retained until`:`Audio no longer available; retention deadline`} `),N(x,`datetime`,_(t).audio_expires_at),U(S,i),D.disabled=!!_(q)[_(t).attempt_id]||_(me)===_(t).attempt_id&&_(B)===`loading`,N(D,`aria-label`,`Inspect retained attempt ${_(t).attempt_id}`),U(ne,_(t).status===`unknown`?`Check outcome`:`Inspect attempt`),re.disabled=!!_(q)[_(t).attempt_id],N(re,`aria-label`,`Delete retained attempt ${_(t).attempt_id}`),U(j,_(q)[_(t).attempt_id]===`busy`?`Deleting…`:`Delete attempt`)},[()=>_(t).status.replaceAll(`_`,` `),()=>Pe(_(t).expires_at),()=>Pe(_(t).created_at),()=>Pe(_(t).audio_expires_at)]),w(`click`,D,()=>void He(_(t).attempt_id)),w(`click`,re,e=>void qe(`correction`,_(t).attempt_id,e.currentTarget)),s(e,a)},e=>{var t=cr();s(e,t)}),o(u);var d=I(u,2),f=e=>{var t=lr();w(`click`,t,()=>E(j,Math.min(_(j)+25,_(k).length,1e3),!0)),s(e,t)};p(d,e=>{_(j)<_(k).length&&e(f)}),L(e=>U(l,`Showing ${e??``} of ${_(k).length??``} retained attempts.`),[()=>Math.min(_(j),_(k).length)]),s(e,t)};p(c,e=>{_(T)===`loading`?e(l):_(T)===`error`?e(u,1):_(T)===`ready`&&e(d,2)});var f=I(c,2),m=e=>{var t=qn(),n=R(t,!0);L(()=>U(n,_(ve))),s(e,t)};p(f,e=>{_(ve)&&e(m)}),L(()=>{i.disabled=_(T)===`loading`,U(a,_(T)===`error`?`Retry history`:`Refresh history`)}),w(`click`,i,()=>E(x,_(x)+1)),s(e,t)};p(nt,e=>{_(f)&&e(rt)}),o(et);var it=I(et,2),at=A(it);z(at,e=>Se=e,()=>Se);var ot=I(at,2),st=e=>{var t=xr(),n=I(M(t),2),i=A(n),a=I(A(i),2),c=I(a,2);P(c);var l=I(c,4),u=I(l,2);P(u);var d=I(u,2),f=I(d,2);P(f);var m=I(f,2),h=A(m);P(h),g(),o(m);var v=I(m,2),y=R(v,!0);o(i),o(n);var b=I(n,2),x=e=>{var t=pr(),n=I(M(t),2),r=I(n,2),i=e=>{var t=fr();w(`click`,t,()=>{E(Te,null),E(Z,`idle`),E(Ee,!1),E(X,!1)}),s(e,t)};p(r,e=>{_(Ee)&&e(i)}),L(()=>n.disabled=_(D)===`loading`),w(`click`,n,()=>E(S,_(S)+1)),s(e,t)};p(b,e=>{_(Z)===`unknown`&&e(x)});var ee=I(b,2),C=R(ee,!0),T=I(ee,2),ne=e=>{var t=mr();s(e,t)},O=e=>{var t=hr();s(e,t)},k=e=>{var t=br(),n=M(t);oe(n,21,()=>_(W),e=>e.id,(e,t)=>{var n=_r(),r=A(n),i=A(r),a=I(i),c=R(a,!0),l=I(a,2),u=R(l,!0);o(r);var d=I(r,2),f=I(A(d)),m=R(f,!0);o(d);var h=I(d,2),g=R(h,!0),v=I(h,2),y=e=>{var t=gr();s(e,t)};p(v,e=>{_(_e)[_(t).id]===`unknown`&&e(y)}),o(n),L(e=>{U(i,`${_(t).language??``}: `),U(c,_(t).heard),U(u,_(t).replacement),N(f,`datetime`,_(t).expires_at),U(m,e),h.disabled=!!_(_e)[_(t).id],N(h,`aria-label`,`Remove vocabulary rule ${_(t).heard} (${_(t).language})`),U(g,_(_e)[_(t).id]===`busy`?`Removing…`:`Remove rule`)},[()=>Pe(_(t).expires_at)]),w(`click`,h,e=>void qe(`rule`,_(t).id,e.currentTarget)),s(e,n)},e=>{var t=vr();s(e,t)}),o(n);var r=I(n,2),i=e=>{var t=yr();s(e,t)};p(r,e=>{_(W).length===128&&e(i)}),s(e,t)};p(T,e=>{_(D)===`loading`?e(ne):_(D)===`error`?e(O,1):_(D)===`ready`&&e(k,2)});var j=I(T,2),ie=e=>{var t=qn(),n=R(t,!0);L(()=>U(n,_(ye))),s(e,t)};p(j,e=>{_(ye)&&e(ie)}),L(e=>{i.disabled=_(Z)!==`idle`,N(a,`for`,`${r}-language`),N(c,`id`,`${r}-language`),he(c,_(J)),N(l,`for`,`${r}-heard`),N(u,`id`,`${r}-heard`),N(d,`for`,`${r}-replacement`),N(f,`id`,`${r}-replacement`),v.disabled=e,U(y,_(Z)===`saving`?`Approving…`:`Approve rule`),ee.disabled=_(D)===`loading`,U(C,_(D)===`error`?`Retry vocabulary`:`Refresh vocabulary`)},[()=>!_(X)||!_(we).trim()||!_(Y).trim()||!_(J).trim()]),te(`submit`,n,Je),w(`input`,c,e=>E(Ce,e.currentTarget.value,!0)),w(`input`,u,Ne),re(u,()=>_(we),e=>E(we,e)),w(`input`,f,Ne),re(f,()=>_(Y),e=>E(Y,e)),w(`change`,h,Ne),se(h,()=>_(X),e=>E(X,e)),w(`click`,ee,()=>E(S,_(S)+1)),s(e,t)};p(ot,e=>{_(v)&&e(st)}),o(it),o(Xe),L(()=>N(Xe,`hidden`,!a())),le(`open`,`toggle`,Ze,e=>E(y,e),()=>_(y)),le(`open`,`toggle`,et,e=>E(f,e),()=>_(f)),le(`open`,`toggle`,it,e=>E(v,e),()=>_(v)),s(e,Xe),i()}l([`click`,`input`,`change`]);var wr=C(` `),Tr=C(`Offering unresolved`),Er=C(`Refused offering`),Dr=C(`Draft`),Or=C(`Details not loaded`),kr=C(``),Ar=C(`

                      No pinned conversations.

                      `),jr=C(`

                      Selected conversation

                      `,1),Mr=C(`

                      No séance yet — open one to speak.

                      `),Nr=C(``),Pr=C(`

                      `),Fr=C(`

                      `),Ir=C(``),Lr=C(`

                      `),Rr=C(`

                      Bridge

                      `,1),zr=C(`

                      Bridge — conversations

                      `),Br=C(`

                      `),Vr=C(`
                      Séance details
                      identity
                      title
                      turns
                      awaiting consent
                      `),Hr=C(`
                      Project links
                      `),Ur=C(``),Wr=C(`

                      The requested consent is unavailable in this conversation at this read.

                      `),Gr=C(``),Kr=C(`

                      The requested Run is not available in this conversation.

                      `),qr=C(`
                      `),Jr=C(` `,1),Yr=C(`

                      Loading conversation…

                      `,1),Xr=C(` `,1),Zr=C(`

                      `),Qr=C(`

                      `),$r=C(`
                      ⬡ The Bridge awaits

                      Open a séance to begin a local communion.

                      `),ei=C(`

                      What shall we explore?

                      Offer a question, an idea, or a piece of work.

                      `),ti=C(`
                      `),ni=C(`
                      `),ri=C(`

                      This Run failed. The text shown here is not a completed answer.

                      `),ii=C(` `),ai=C(`
                      Capability transition
                      `),oi=C(`
                      Delegated labor
                      `),si=C(`
                      LychD
                      `),ci=C(` `,1),li=C(`
                      `),ui=C(`

                      Your current draft is kept. Send or clear it before restoring this text.

                      `),di=C(`
                      Offering refused

                      `),fi=C(`

                      `),pi=C(`

                      `),mi=C(`
                    • `),hi=C(`
                      Command examples
                        `),gi=C(`

                        Open Canvas, Loom or Orb to choose a work target.

                        `),_i=C(`

                        Canvas commands create a preview. Review and Apply on the board.

                        `),vi=C(`

                        `),yi=C(`

                        Preparing command…

                        `),bi=C(`

                        `),xi=C(``),Si=C(`
                        `,1),Ci=C(``);function wi(e,c){m(c,!0);let l=(e,n=v)=>{let r=b(()=>_(gt).get(n()));var i=kr(),a=A(i);let c;var l=A(a),u=R(l,!0),d=I(l,2),f=e=>{var t=wr(),n=R(t);L(()=>U(n,`${_(r).pending_count??``} awaiting consent`)),s(e,t)};p(d,e=>{_(r)?.pending_count&&e(f)});var m=I(d,2),h=e=>{var t=Tr();s(e,t)},g=b(()=>P.pending.has(n())),y=e=>{var t=Er();s(e,t)},x=b(()=>P.refused.has(n())),S=e=>{var t=Dr();s(e,t)},ee=b(()=>P.drafts.has(n()));p(m,e=>{_(g)?e(h):_(x)?e(y,1):_(ee)&&e(S,2)});var C=I(m,2),te=e=>{var t=Or();s(e,t)};p(C,e=>{_(r)||e(te)}),o(a);var T=I(a,2),E=A(T);ct(E,{name:`pin`,size:16}),o(T),o(i),L((e,i,o,s)=>{c=t(a,1,`seance svelte-1xg67vw`,null,c,{current:_($)?.id===n()}),N(a,`href`,e),N(a,`aria-current`,_($)?.id===n()?`page`:void 0),U(u,_(r)?.title??`Conversation · ${n()}`),N(T,`id`,`bridge-pin-${n()}`),N(T,`aria-label`,i),N(T,`aria-pressed`,o),N(T,`title`,s)},[()=>De(n()),()=>`${_(F).includes(n())?`Unpin`:`Pin`} conversation: ${_(r)?.title??n()}`,()=>_(F).includes(n()),()=>_(F).includes(n())?`Unpin conversation`:`Pin conversation`]),w(`click`,a,e=>ke(e,n())),w(`click`,T,()=>me(n())),s(e,i)},u=fe(c,`embedded`,3,!1),y=fe(c,`visible`,3,!0),C=b(()=>c.search??K.url.search),T=b(()=>new URLSearchParams(_(C))),D=H(null),P=S(dt)??ft(),F=H([]),se=H(``),le=H(!1);a(()=>{try{E(F,st(localStorage.getItem(it)))}catch{}let e=window.matchMedia?.(`(max-width: 48rem)`);E(le,e?.matches??!1,!0);let t=e=>{E(le,e.matches,!0)};return e?.addEventListener?.(`change`,t),()=>e?.removeEventListener?.(`change`,t)});function me(e){let t=nt(_(F),e);if(t===_(F)){E(se,`You can pin up to 32 conversations. Unpin one first.`);return}let n=document.activeElement?.id===`bridge-pin-${e}`;E(F,t),E(se,``);try{localStorage.setItem(it,JSON.stringify(t))}catch{E(se,`Pins are kept for this tab; browser storage is unavailable.`)}n&&j().then(()=>{Q||(document.getElementById(`bridge-pin-${e}`)??document.querySelector(`.new-seance`))?.focus({preventScroll:!0})})}let he=new Map(P.settlements),B=b(()=>{let e=_(T).get(`project`);return e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?e:null}),ge=b(()=>_(T).get(`attention`)===`pending`),W=b(()=>!c.sessionId&&(_(ge)||_(T).get(`choose`)===`conversation`||!!_(B))),G=H(null),ye=H(``),xe=b(()=>we(_(T).get(`run`))),Y=b(()=>_(T).has(`consent`)?we(_(T).get(`consent`)):void 0),X=b(()=>_(Y)!==void 0&&_(xe)?Te(_(xe),_(C)):null),Z;function Ee(e){_($)&&P.setDraft(_($).id,e),Gt()}function De(e){return`/bridge/${encodeURIComponent(e)}${_(B)?`?project=${encodeURIComponent(_(B))}`:``}`}function ke(e,t){!c.onNavigate||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||(e.preventDefault(),qt(),Promise.resolve(c.onNavigate(t,_(B)?`?project=${encodeURIComponent(_(B))}`:``)).catch(e=>mn(e instanceof Error?e.message:`Conversation navigation failed.`)))}let je=H(!0),Me=H(!1),Fe=H(``),Ie=H(``),Le,Re=0,Be=null,Ve=H(!1),Ue=H(``),We=H(0),Ge=0,Je=H(!0),Xe=H(null),rt=H(ie([])),at=null,ot=new Se,lt=new Se,ut=new Ce,pt=new Set,Q=!1,mt=new Set([`queued`,`running`,`awaiting_hardware`,`awaiting_consent`,`awaiting_delegate`,`awaiting_peer`,`cancelling`,`done`,`failed`,`cancelled`]);function ht(e){return e===`awaiting_hardware`?`awaiting animators`:e===`awaiting_delegate`?`delegated labor`:e.replaceAll(`_`,` `)}let $=b(()=>_(W)?null:_(D)?.session??null),gt=b(()=>new Map([...(_(D)?.sessions??[]).map(e=>[e.id,e]),..._($)?[[_($).id,_($)]]:[]])),_t=b(()=>_(F).filter(e=>!_(ge)||(_(gt).get(e)?.pending_count??0)>0)),vt=b(()=>(_(D)?.sessions??[]).filter(e=>!_(F).includes(e.id)&&(!_(ge)||(e.pending_count??0)>0))),yt=b(()=>_($)&&c.sessionId===_($).id&&_(xe)&&_(Y)&&((_($).turns??[]).some(e=>e.run_id===_(xe))||_(D)?.active_runs.some(e=>e.run_id===_(xe)&&e.session_id===_($).id))?_(D)?.pending_consents.find(e=>e.id===_(Y)&&e.run_id===_(xe)&&e.state===`pending_consent`):void 0),bt=b(()=>_($)?P.drafts.get(_($).id)??``:``),xt=b(()=>_($)?P.refused.get(_($).id)??[]:[]),St=b(()=>_($)?P.pending.get(_($).id):void 0),Ct=b(()=>!_(W)&&!_(je)&&!_(Fe)&&_(D)!==null&&!_($)&&_(D).sessions.length===0&&_(D).active_runs.length===0&&_(D).pending_consents.length===0),wt=b(()=>_(rt).filter(e=>e.sessionId===_($)?.id)),Dt=b(()=>_(wt).some(e=>![`done`,`failed`,`cancelled`].includes(e.runStatus))),Ot=b(()=>_($)&&_(xe)?`${_($).id}:${_(xe)}`:null),kt=b(()=>!!_(Ot)&&_(Xe)!==_(Ot)),At=b(()=>_(D)?.pending_consents.filter(e=>e.state===`pending_consent`).length??0),jt=S(be),Mt=H(null),Nt=H(null),Pt=H(!1),Ft=H(`chat`),It=H(!1),Lt=H(0),zt=H(0),Bt=H(void 0);function Vt(){_(Bt)?.suspend()}de(()=>{y()||pe(Vt)});let Ht=b(()=>_(Mt)?`${_(Mt).instrument[0]?.toUpperCase()}${_(Mt).instrument.slice(1)} · ${_(Mt).label}`:`Work target unavailable`);function Ut(){let e=_($)?.id??``;return{sessionId:e,draftText:e?P.drafts.get(e)??``:``,draftRevision:e?P.draftRevisions.get(e)??0:0,mode:_(Ft),contextEpoch:_(Lt),targetEpoch:_(zt),composing:_(It),busy:Q||!(c.isVisible?.()??y())||!e||_(je)||_(W)||_(Me)||_(Dt)||!!P.pending.get(e)||_(Pt)||[...P.consentDecisions.values()].some(t=>t.sessionId===e&&t.sending)}}let Wt=b(Ut);function Gt(){_(Bt)?.notifyChanged(Ut())}function qt(){E(Lt,_(Lt)+1),E(Nt,null),Gt()}_e(()=>qt()),a(()=>jt?.subscribe(e=>{E(Mt,e),E(zt,_(zt)+1),Gt()})),de(()=>{let e=_(Wt);pe(()=>_(Bt)?.notifyChanged(e))});function Jt(e,t){return e.sessionId===t.sessionId&&e.draftText===t.draftText&&e.draftRevision===t.draftRevision&&e.mode===t.mode&&e.contextEpoch===t.contextEpoch&&e.targetEpoch===t.targetEpoch&&e.composing===t.composing}function Yt(e,t){let n=Ut();if(!Jt(e,n)||e.busy!==n.busy||n.busy||n.composing||!n.sessionId)return null;P.setDraft(n.sessionId,t);let r=Ut();return Gt(),r}function Zt(e){E(Ft,e.currentTarget.value===`work`?`work`:`chat`,!0),qt()}function Qt(e){E(It,e,!0),Gt()}async function $t(e,t){let n=Ut();if(!(n.busy||n.composing||!Jt(e,n))){if(!jt||!t||!jt.isCurrent(t))E(Nt,{status:`unavailable`,summary:`The work target changed or is unavailable. Select the current work target before sending.`});else{E(Pt,!0),E(Nt,null),Gt();try{let n=await jt.execute(e.draftText.trim(),t);if(Q||e.sessionId!==_($)?.id||e.contextEpoch!==_(Lt))return;E(Nt,n),(n.status===`preview`||n.status===`applied`)&&Jt(e,Ut())&&jt.isCurrent(t)&&P.setDraft(e.sessionId,``)}finally{E(Pt,!1),Q||Gt()}}}}let en=(e,t)=>{let n=Ut();if(!(!Jt(e,n)||e.busy!==n.busy||n.busy||n.composing))return e.mode===`work`?$t(e,t.target):On()};function tn(){if(_(Bt)?.handleSend())return;let e=Ut();e.busy||e.composing||!e.draftText.trim()||(e.mode===`work`?$t(e,jt?.capture()??null):On())}let nn=H(!1),rn=H(!1),an=H(void 0),on=null,sn;function cn(e){return sn=e,()=>{sn=void 0}}async function ln(){on=document.activeElement instanceof HTMLElement?document.activeElement:null,E(nn,!0),E(rn,!0),await j(),_(an)?.focus()}function un(){E(rn,!1),on?.isConnected?on.focus():sn?.focus()}async function fn(e){if(Q||_(je)||_(W)||_(Me))throw Error(`Open a conversation and let it finish loading, then try the naming request again.`);let t;if(!_($)){let e=Re;E(Me,!0);try{let n=await ze();if(Q||Re!==e)throw Error(`The conversation changed. No naming request was sent.`);if(t=n.session.id,await gn(t),Q||_(D)?.session?.id!==t)throw Error(`The new conversation could not be read. No naming request was sent.`)}finally{Q||E(Me,!1)}}let n=await On(!1,e);if(t&&!Q&&_($)?.id===t&&(c.onNavigate?await c.onNavigate(t,``):await ve(De(t),{reset:!1})),!n)throw Error(`The naming request was not confirmed. Check the conversation for an active reply or an unresolved offering before trying again.`)}function pn(e){return e.state===`done`||e.state===`failed`||e.state===`cancelled`}function mn(e,t=!0){window.dispatchEvent(new CustomEvent(`altar:omen`,{detail:{text:e,fault:t}}))}function hn(){_(je)||!_(Ie)||_(D)||Q||gn(c.sessionId,!0)}async function gn(e,t=!1){_(bn)!==null&&_(bn)!==e&&E(bn,null),qt();let n=++Re;Be?.abort(),Be=null,E(Ve,!1),E(Ue,``);let r=new Map(P.settlements),i=new Map(_(rt).map(e=>[e.runId,e.authorityGeneration])),a=e!==void 0&&at!==null&&at!==e;E(je,!0),Gt(),E(Fe,``),t||E(Ie,``),a&&(E(D,null),c.onSessionResolved?.(null),E(Xe,null),E(Je,!0));try{let a=await Ne(e),o=_(W)?{...a,session:null,active_runs:[],pending_consents:[]}:a;if(Q||n!==Re)return;let s=o.session?.id??null;if(s&&(P.settlements.get(s)??0)!==(r.get(s)??0)){await gn(e,t);return}at=s;for(let[e,t]of P.consentDecisions)t.sessionId===s&&!t.sending&&!o.pending_consents.some(t=>t.id===e&&t.state===`pending_consent`)&&P.consentDecisions.delete(e);let l=Et(o,f(_(rt))),u=new Set;for(let e of o.active_runs){let t=l.liveTurns.findIndex(t=>t.runId===e.run_id),n=l.liveTurns[t],r=i.get(e.run_id);if(n&&r!==void 0&&(e.terminal||!ot.has(e.run_id))){let i=Tt(n,e,r);l.liveTurns[t]=i,pn(i)?(ot.get(e.run_id)?.(),ot.delete(e.run_id),Cn(e.run_id)):e.terminal&&u.add(e.run_id)}}for(let e of l.retiredRunIds)ot.get(e)?.(),ot.delete(e),Cn(e);E(D,o,!0),c.onSessionResolved?.(o.session?.id??null),E(Ie,``),Ge++,E(rt,l.liveTurns,!0);for(let e of o.active_runs){let t=_(rt).find(t=>t.runId===e.run_id);t&&(u.has(e.run_id)?(ot.get(e.run_id)?.(),ot.delete(e.run_id),t.state=`stale`,t.activity=`projection stale`,t.authorityGeneration++,En(e.run_id,t.sessionId)):pn(t)||Tn(t,t.cursor))}window.dispatchEvent(new CustomEvent(`altar:attention`,{detail:o.pending_count}))}catch(e){n===Re&&(c.onSessionResolved?.(null),E(Fe,e instanceof Error?e.message:`The Bridge stayed dark.`,!0),_(D)||E(Ie,_(Fe),!0))}finally{n===Re&&(E(je,!1),Gt())}}async function _n(){let e=_(D)?.sessions_next_cursor;if(!e||_(je)||_(Ve)||Q)return;let t=Re,n=new AbortController;Be=n,E(Ve,!0),E(Ue,``);try{let r=await Oe(e,n.signal);if(Q||n.signal.aborted||t!==Re||!_(D))return;let i=new Set(_(D).sessions.map(e=>e.id)),a=r.sessions.filter(e=>!i.has(e.id)&&(i.add(e.id),!0));E(D,{..._(D),sessions:[..._(D).sessions,...a],sessions_next_cursor:r.next_cursor},!0)}catch{!Q&&!n.signal.aborted&&t===Re&&E(Ue,`Older conversations could not be loaded. Try again.`)}finally{Be===n&&(Be=null,E(Ve,!1))}}de(()=>{let e=c.sessionId;_(W),pe(()=>void gn(e))}),de(()=>{let e=_($)?.id,t=e?P.settlements.get(e)??0:0;e&&t!==(he.get(e)??0)&&(he.set(e,t),pe(()=>void gn(e)))}),de(()=>{let e=_(B),t=new AbortController;return pe(()=>{E(G,null),E(ye,``),e&&Ye(e,t.signal).then(n=>{!t.signal.aborted&&n.id===e&&E(G,{id:e,title:n.title},!0)}).catch(()=>{t.signal.aborted||E(ye,`The originating Atlas project is unavailable.`)})}),()=>t.abort()}),de(()=>{let e=_($)?.id,t=c.sessionId,n=_(xe),r=_(Y),i=_(yt)?.id,a=!_(je);_(We),Z&&Z.sessionId===t&&Z.run===n&&Z.consent===r||(Z={sessionId:t,run:n,consent:r,handled:!1},n||E(Je,!0));let o=Z;e&&n&&a&&!o.handled&&j().then(()=>{if(Q||_($)?.id!==e||c.sessionId!==t||_(xe)!==n||_(Y)!==r||_(je)||Z!==o||o.handled)return;o.handled=!0;let a=r===void 0?Le?.querySelector(`[data-run-id="${n}"]`):i&&_(yt)?.id===i?Le?.querySelector(`[data-consent-id="${i}"]`):null;a&&(E(Je,!1),a.focus({preventScroll:!0}),a.scrollIntoView?.({block:`center`}))})}),k(()=>{_(We);let e=Le;e&&_(Je)&&!_(kt)&&j().then(()=>{!Q&&e===Le&&_(Je)&&!_(kt)&&(e.scrollTop=e.scrollHeight)})});function vn(e){return Le=e,()=>{Le===e&&(Le=void 0)}}h(()=>{Q=!0,Re++,Be?.abort();for(let e of ot.values())e();ot.clear();for(let e of lt.values())window.clearTimeout(e);lt.clear()});async function yn(){if(!_(Me)){E(Me,!0),qt();try{let e=await ze();if(Q)return;c.onNavigate?(E(bn,e.session.id,!0),await c.onNavigate(e.session.id,_(B)?`?project=${encodeURIComponent(_(B))}`:``,!0)):await ve(De(e.session.id),{reset:!1,state:{bridgeComposerFocus:e.session.id}})}catch(e){Q||mn(e instanceof Error?e.message:`A séance could not be opened.`)}finally{Q||(E(Me,!1),Gt())}}}let bn=H(null);function xn(e){E(bn,e,!0)}function Sn(e){if(_($)?.id&&_(bn)===_($).id)e.focus(),E(bn,null);else if(_($)?.id&&K.state?.bridgeComposerFocus===_($).id){e.focus();let t={...K.state};delete t.bridgeComposerFocus,q(``,t)}}function Cn(e){let t=lt.get(e);t!==void 0&&window.clearTimeout(t),lt.delete(e)}function wn(e,t){Cn(e);let n=c.sessionId,r=window.setTimeout(()=>{lt.delete(e),Q||c.sessionId===n&&_(D)?.session?.id===t&&gn(c.sessionId)},50);lt.set(e,r)}function Tn(e,t=e.cursor){if(Q||e.state!==`streaming`||ot.has(e.runId))return;let n=e.runId,r=e.sessionId,i=!1,a;a=Pe(n,e=>{if(Q)return;let t=_(rt).find(e=>e.runId===n);if(!t||e.seq<=t.cursor)return;t.cursor=e.seq,t.authorityGeneration++;let r=e.payload;if(e.kind===`token`)t.content+=String(r.text??``);else if(e.kind===`status`)t.activity=String(r.text??`running`),mt.has(t.activity)&&(t.runStatus=t.activity);else if(e.kind===`node`)t.occurrenceId=typeof r.occurrence_id==`string`&&r.occurrence_id?r.occurrence_id:t.occurrenceId,t.delegatedJobId=typeof r.delegated_job_id==`string`&&r.delegated_job_id?r.delegated_job_id:t.delegatedJobId,t.delegatedRuntime=typeof r.delegated_runtime==`string`&&r.delegated_runtime?r.delegated_runtime:t.delegatedRuntime;else if(e.kind===`dispatch`)t.capabilityKey=String(r.text??``),t.grantId=typeof r.grant_id==`string`?r.grant_id:null,t.dispatchOccurrenceId=typeof r.occurrence_id==`string`?r.occurrence_id:null,t.occurrenceId=typeof r.occurrence_id==`string`&&r.occurrence_id?r.occurrence_id:t.occurrenceId;else if(e.kind===`transition`)t.transitionRequestId=String(r.text??``),t.transitionOccurrenceId=typeof r.occurrence_id==`string`?r.occurrence_id:null,t.transitionPhase=typeof r.phase==`string`?r.phase:t.transitionPhase,t.capabilityKey=typeof r.capability_key==`string`?r.capability_key:t.capabilityKey;else if(e.kind===`fragment`)t.fragments.push(r);else if(e.kind===`consent`)_(D)?.session?.id===t.sessionId?gn(t.sessionId):window.dispatchEvent(new CustomEvent(`altar:attention`));else if(e.kind===`done`){let e=r.turn;typeof e==`object`&&e&&`content`in e&&(t.content=String(e.content)),t.runStatus=String(r.status??`done`),t.state=t.runStatus===`cancelled`?`cancelled`:t.runStatus.includes(`fail`)?`failed`:`done`,t.activity=t.runStatus,ot.delete(n),_(D)?.session?.id===t.sessionId&&wn(n,t.sessionId)}O(We),Gt()},e=>mn(e,!1),async()=>{if(Q)return{cursor:t,terminal:!0};mn(`The run stream lost history; refreshing its authoritative snapshot.`,!1);let e=_(rt).find(e=>e.runId===n)?.authorityGeneration,i=await Ae(n);if(Q)return{cursor:i.cursor,terminal:!0};let a=_(rt).findIndex(e=>e.runId===n),o=_(rt)[a],s=o;return o&&(s=Tt(f(o),i,e),_(rt)[a]=s,_(D)?.session?.id===r&&gn(r)),s&&pn(s)&&(ot.get(n)?.(),ot.delete(n),_(D)?.session?.id===r&&wn(n,r)),O(We),Gt(),{cursor:s?.cursor??i.cursor,terminal:s?pn(s):i.terminal}},{initialCursor:t,onHardClose:()=>{if(Q)return;i=!0,(a===void 0||ot.get(n)===a)&&ot.delete(n);let e=_(rt).find(e=>e.runId===n);e?.state===`streaming`&&(e.state=`stale`,e.activity=`projection stale`,e.authorityGeneration++,O(We),Gt()),En(n,r)}}),i||ot.set(n,a)}async function En(e,t){if(pt.has(e))return;pt.add(e);let n=_(rt).find(t=>t.runId===e)?.authorityGeneration;try{let r=await Ae(e);if(Q)return;if(r.session_id!==t)throw Error(`The authoritative run snapshot changed session identity.`);let i=_(rt).findIndex(t=>t.runId===e),a=_(rt)[i];if(!a)return;let o=Tt(f(a),r,n);_(rt)[i]=o,O(We),Gt(),pn(o)?_(D)?.session?.id===t&&wn(e,t):Tn(o,o.cursor)}catch{Q||mn(`The run projection remains stale; refresh the Bridge to retry.`,!0)}}function Dn(e,t){if(!_($)||t&&_(bt))return;let n=P.refused.get(_($).id)??[],r=n.find(t=>t.requestId===e);if(!r)return;t&&(P.setDraft(_($).id,r.text),Gt());let i=n.filter(t=>t.requestId!==e);i.length?P.refused.set(_($).id,i):P.refused.delete(_($).id)}async function On(e=!1,t){if(!_($)||_(W)||!e&&(_(je)||_(Dt)))return;let n=_($).id,r=P.pending.get(n);if(r?.sending||r&&!e||e&&!r)return;let i=r?.text??t??_(bt).trim();if(!i)return;let a=r?.requestId??crypto.randomUUID();P.pending.set(n,{text:i,requestId:a,uncertain:r?.uncertain??!1,sending:!0,error:``}),E(Fe,``),!e&&t===void 0&&P.setDraft(n,``),Gt();try{let e=await Ke(n,i,a);P.pending.delete(n);let t=(P.settlements.get(n)??0)+1;if(Q||he.set(n,t),P.settlements.set(n,t),Q)return;_(D)?.session?.id===n&&(_(D).session.turns??=[],_(D).session.turns.some(t=>t.role===e.turn.role&&t.content===e.turn.content&&t.created_at===e.turn.created_at)||_(D).session.turns.push(e.turn));let r=_(rt).find(t=>t.runId===e.run_id);return r||(r={sessionId:n,runId:e.run_id,cursor:-1,authorityGeneration:0,content:``,runStatus:`queued`,activity:`queued`,state:`streaming`,fragments:[],patternId:e.pattern_id,patternRevision:e.pattern_revision,loomPath:e.loom_path,orbPath:e.orb_path,evidenceCapture:e.evidence_capture,occurrenceId:null,dispatchOccurrenceId:null,grantId:null,capabilityKey:null,transitionOccurrenceId:null,transitionRequestId:null,transitionPhase:null,delegatedJobId:null,delegatedRuntime:null,delegatedProfile:null,delegatedStatus:null},_(rt).push(r)),O(We),Gt(),Tn(r),!0}catch(e){let t=r?.uncertain||!(e instanceof qe)||e.status===void 0||e.status>=500||e.status===408,o=e instanceof Error?e.message:`The offering was refused.`;t?P.pending.set(n,{text:i,requestId:a,uncertain:!0,sending:!1,error:o}):(P.pending.delete(n),P.drafts.has(n)?P.refused.set(n,[...P.refused.get(n)??[],{requestId:a,text:i,error:o}]):P.setDraft(n,i),!Q&&_(D)?.session?.id===n&&E(Fe,o,!0))}finally{Q||Gt()}}function kn(e,t){let n=_(rt).findIndex(t=>t.runId===e),r=_(rt)[n];if(!r||t.session_id!==r.sessionId)throw Error(`The authoritative run snapshot changed identity.`);let i=Tt(f(r),t);return _(rt)[n]=i,pn(i)&&(ot.get(e)?.(),ot.delete(e),Cn(e)),O(We),Gt(),i}async function An(e){if(!(e.state===`done`||e.state===`failed`||e.state===`cancelled`||ut.has(e.runId))){ut.add(e.runId);try{let t=await He(e.runId);if(Q)return;pn(kn(e.runId,t))&&await Pn(e.sessionId)}catch(t){if(Q)return;try{let n=await Ae(e.runId);if(Q)return;if(pn(kn(e.runId,n))&&await Pn(e.sessionId),!n.terminal)throw t}catch(e){mn(e instanceof Error?e.message:`The cancellation outcome is unknown.`)}}finally{Q||ut.delete(e.runId)}}}function jn(e){e.key===`Enter`&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),tn())}function Mn(){return Ge}function Nn(e,t,n){let r=P.consentDecisions.get(e.id)?.sessionId;if(r){let e=(P.settlements.get(r)??0)+1;Q||he.set(r,e),P.settlements.set(r,e)}if(Q||!_(D)||_(D).session?.id!==r){window.dispatchEvent(new CustomEvent(`altar:attention`));return}if(n!==Ge){Fn();return}Ge++;let i=_(D).pending_consents.findIndex(t=>t.id===e.id);i>=0&&(_(D).pending_consents[i]=e),_(D).pending_count=t;let a=_(D).pending_consents.filter(e=>e.state===`pending_consent`).length;if(_(D).session){_(D).session.pending_count=a;let e=_(D).sessions.find(e=>e.id===_(D)?.session?.id);e&&(e.pending_count=a)}P.consentDecisions.delete(e.id),window.dispatchEvent(new CustomEvent(`altar:attention`,{detail:t}))}async function Pn(e){if(!Q){if(_(D)?.session?.id===e){Ge++,_(D).pending_consents=[],_(D).session&&(_(D).session.pending_count=0);let t=_(D).sessions.find(t=>t.id===e);t&&(t.pending_count=0),window.dispatchEvent(new CustomEvent(`altar:attention`)),await gn(e)}else window.dispatchEvent(new CustomEvent(`altar:attention`))}}function Fn(){!Q&&_($)&&gn(_($).id)}function In(){Le&&E(Je,Le.scrollHeight-Le.scrollTop-Le.clientHeight<72)}function Ln(){if(!Le)return;E(Xe,_(Ot),!0),E(Je,!0);let e=Le.querySelectorAll(`article.turn`);(e.item(e.length-1)??Le).focus({preventScroll:!0}),Le.scrollTop=Le.scrollHeight}var Rn={suspendVoice:Vt,focusSessionComposer:xn},Bn=Ci();r(`1xg67vw`,e=>{var t=ee(),n=M(t),r=e=>{ae(()=>{ce.title=`Bridge — LychD`})};p(n,e=>{u()||e(r)}),s(e,t)});let Vn;var Hn=A(Bn),Un=e=>{var t=Ir(),n=A(t),r=I(A(n),2),i=R(r),a=I(r,2),c=I(A(a),2);oe(c,16,()=>_(_t),e=>e,(e,t)=>{l(e,()=>t)},e=>{var t=Ar();s(e,t)});var d=I(c,2),f=e=>{var t=jr(),n=I(M(t),2);l(n,()=>_($).id),s(e,t)},m=b(()=>_($)&&!_(F).includes(_($).id)&&!_(D)?.sessions.some(e=>e.id===_($).id));p(d,e=>{_(m)&&e(f)});var h=I(d,6),g=e=>{var t=ee(),n=M(t);oe(n,17,()=>_(vt),e=>e.id,(e,t)=>{l(e,()=>_(t).id)}),s(e,t)},v=e=>{var t=Mr();s(e,t)};p(h,e=>{_(D)?.sessions.length?e(g):!_(je)&&!_(Fe)&&e(v,1)});var y=I(h,2),x=e=>{var t=Nr(),n=R(t,!0);L(()=>{t.disabled=_(je)||_(Ve),N(t,`aria-busy`,_(Ve)),U(n,_(Ve)?`Loading conversations…`:`Load more conversations`)}),w(`click`,t,_n),s(e,t)};p(y,e=>{_(D)?.sessions_next_cursor&&e(x)});var S=I(y,2),C=e=>{var t=Pr(),n=R(t,!0);L(()=>U(n,_(Ue))),s(e,t)};p(S,e=>{_(Ue)&&e(C)});var te=I(S,2),T=e=>{var t=Fr(),n=R(t,!0);L(()=>U(n,_(se))),s(e,t)};p(te,e=>{_(se)&&e(T)}),o(a),o(n),o(t),L(()=>{n.open=!u()&&!_(le),r.disabled=_(Me),N(r,`aria-busy`,_(Me)),U(i,`✦  ${_(Me)?`Opening…`:`New Séance`}`)}),w(`click`,r,yn),s(e,t)};p(Hn,e=>{(!_(Ct)||_(F).length>0)&&e(Un)});var Wn=I(Hn,2),Gn=A(Wn),Kn=A(Gn),qn=A(Kn),Jn=e=>{var t=Rr(),n=I(M(t),2),r=e=>{var t=Lr(),n=R(t,!0);L(()=>U(n,_($).title)),s(e,t)};p(n,e=>{_($)&&e(r)}),s(e,t)},Yn=e=>{var t=zr();s(e,t)};p(qn,e=>{_(Ct)?e(Yn,-1):e(Jn)});var Xn=I(qn,2),Zn=e=>{var t=Br(),n=R(t);L(()=>U(n,`${_(At)??``} awaiting consent`)),s(e,t)};p(Xn,e=>{_($)&&_(At)&&e(Zn)}),o(Kn);var Qn=I(Kn,2),$n=A(Qn);x($n,()=>cn);var er=I($n,2),tr=A(er),nr=I(tr,2),rr=e=>{var t=Vr(),n=A(t),r=I(A(n)),i=e=>{var t=wr(),n=R(t);L(()=>U(n,`${_(At)??``} awaiting consent`)),s(e,t)};p(r,e=>{_(At)&&e(i)}),o(n);var a=I(n,2),c=I(A(a)),l=R(c,!0),u=I(c,3),d=R(u,!0),f=I(u,3),m=R(f,!0),h=I(f,3),g=R(h,!0);o(a),o(t),L(()=>{U(l,_($).id),U(d,_($).title),U(m,(_($).turns?.length??0)+_(wt).length),U(g,_(At))}),s(e,t)};p(nr,e=>{_($)&&e(rr)});var ir=I(nr,4),ar=e=>{var t=Hr(),n=I(A(t),2);$e(n,{kind:`session`,get targetId(){return _($).id},get suggestedProject(){return _(G)}}),o(t),s(e,t)};p(ir,e=>{_($)&&e(ar)}),o(er),o(Qn),o(Gn);var or=I(Gn,2),sr=e=>{var t=Ur(),n=A(t),r=R(n);g(2),o(t),L(e=>{N(n,`href`,e),U(r,`← ${_(G).title??``}`)},[()=>tt(_(G).id)]),s(e,t)},cr=e=>{var t=Pr(),n=R(t,!0);L(()=>U(n,_(ye))),s(e,t)};p(or,e=>{_(G)?e(sr):_(ye)&&e(cr,1)});var lr=I(or,2),ur=e=>{var t=Wr();s(e,t)};p(lr,e=>{_(Y)!==void 0&&!_(je)&&!_(yt)&&e(ur)});var dr=I(lr,2),fr=e=>{var t=Gr(),n=R(t);L(e=>N(n,`href`,e),[()=>J(_(X))]),s(e,t)};p(dr,e=>{_(X)&&e(fr)});var pr=I(dr,2),mr=e=>{var t=Kr();s(e,t)},hr=b(()=>_(xe)&&!_(je)&&_($)&&!(_($).turns??[]).some(e=>e.role===`agent`&&e.run_id===_(xe))&&!_(wt).some(e=>e.runId===_(xe)));p(pr,e=>{_(hr)&&e(mr)});var gr=I(pr,2),_r=e=>{var t=qr(),n=A(t);z(dn(n,{onclose:un,onask:fn}),e=>E(an,e,!0),()=>_(an)),o(t),L(()=>N(t,`hidden`,!_(rn))),s(e,t)};p(gr,e=>{_(nn)&&e(_r)});var vr=I(gr,2),yr=A(vr),br=e=>{var t=Jr(),n=M(t),r=R(n,!0),i=I(n,2),a=R(i,!0);L(()=>{U(r,_(Ie)),i.disabled=_(je),N(i,`aria-busy`,_(je)),U(a,_(je)?`Reading…`:`Retry read`)}),w(`click`,i,hn),s(e,t)},xr=e=>{var t=Yr();g(3),s(e,t)},Sr=e=>{var t=Xr(),n=M(t),r=R(n,!0),i=I(n,2);L(()=>U(r,_(Fe))),w(`click`,i,()=>void gn(c.sessionId)),s(e,t)},wi=e=>{var t=Qr(),n=A(t),r=R(n,!0),i=I(n,2),a=R(i,!0),c=I(i,2),l=e=>{var t=Zr(),n=R(t,!0);L(()=>U(n,_(D)?.pending_count?_(D).sessions_next_cursor?`Load more conversations to find older pending requests.`:`Pending requests have no available Bridge conversation.`:`No conversation is awaiting consent.`)),s(e,t)},u=b(()=>_(ge)&&!_(D)?.sessions.some(e=>(e.pending_count??0)>0));p(c,e=>{_(u)&&e(l)}),o(t),L(()=>{U(r,_(ge)?`Conversations awaiting consent`:`Choose a conversation`),U(a,_(ge)?`Select a marked conversation to review its pending requests.`:`Select a conversation from the list or open a new séance.`)}),s(e,t)},Ti=e=>{Xt(e,{onbegin:yn,onnaming:ln,get pending(){return _(Me)}})},Ei=e=>{var t=$r();s(e,t)},Di=e=>{var n=ci(),r=M(n),i=e=>{var t=ei();s(e,t)};p(r,e=>{_($).turns?.length||_(wt).length||_(D)?.pending_consents.length||e(i)});var a=I(r,2);oe(a,17,()=>_($).turns??[],e=>e.run_id?JSON.stringify([_($).id,e.role,e.run_id]):e,(e,n)=>{var r=ni();let i;var a=A(r),c=A(a),l=R(c,!0);o(a);var u=I(a,2),d=e=>{Rt(e,{get runId(){return _(n).run_id}})};p(u,e=>{_(n).role===`agent`&&_(n).run_id&&e(d)});var f=I(u,2),m=R(f,!0),h=I(f,2),g=e=>{var t=ti();oe(t,20,()=>_(n).fragments??[],e=>e,(e,t)=>{Kt(e,{get descriptor(){return t}})}),o(t),s(e,t)};p(h,e=>{_(n).role===`agent`&&(_(n).fragments?.length??0)>0&&e(g)}),o(r),L(()=>{i=t(r,1,`turn svelte-1xg67vw`,null,i,{"turn--user":_(n).role===`user`,"turn--agent":_(n).role===`agent`}),N(r,`data-run-id`,_(n).role===`agent`?_(n).run_id:void 0),N(r,`data-state`,_(n).state===`failed`?`failed`:`done`),U(l,_(n).role===`agent`?`LychD`:`You`),U(m,_(n).content)}),s(e,r)});var c=I(a,2);oe(c,17,()=>_(wt),e=>e.runId,(e,t)=>{var n=si(),r=I(A(n),2);{let e=b(()=>ut.has(_(t).runId));Rt(r,{get runId(){return _(t).runId},get turn(){return _(t)},get cancelling(){return _(e)},oncancel:()=>void An(_(t))})}var i=I(r,2),a=R(i,!0),c=I(i,2),l=e=>{var t=ri();s(e,t)};p(c,e=>{_(t).runStatus===`failed`&&_(t).content&&e(l)});var u=I(c,2),d=e=>{var n=ai(),r=I(A(n),2),i=R(r),a=I(r,2),c=e=>{var n=ii(),r=R(n);L(e=>{N(n,`title`,_(t).transitionOccurrenceId),U(r,`transition occurrence ${e??``}`)},[()=>_(t).transitionOccurrenceId.slice(0,12)]),s(e,n)};p(a,e=>{_(t).transitionOccurrenceId&&e(c)}),o(n),L(e=>U(i,`${_(t).capabilityKey??`capability`??``} · - ${e??``}`),[()=>ht(_(t).transitionPhase??_(t).runStatus)]),s(e,n)};p(u,e=>{(_(t).runStatus===`awaiting_hardware`||_(t).transitionRequestId)&&e(d)});var f=I(u,2),m=e=>{var n=oi(),r=A(n),i=A(r);Qe(i,{}),g(),o(r);var a=I(r,2),c=R(a),l=I(a,2),u=R(l);o(n),L((e,r)=>{N(n,`data-state`,_(t).delegatedStatus??_(t).runStatus),U(c,`${_(t).delegatedRuntime??`runtime`??``} · - ${_(t).delegatedProfile??`contained profile`??``}`),U(u,`${e??``} - · ${r??``}`)},[()=>_(t).delegatedJobId?`AgentJob ${_(t).delegatedJobId.slice(0,12)}`:`AgentJob pending`,()=>et(_(t).delegatedStatus??_(t).runStatus)]),s(e,n)};p(f,e=>{(_(t).runStatus===`awaiting_delegate`||_(t).delegatedJobId)&&e(m)});var h=I(f,2);oe(h,20,()=>_(t).fragments,e=>e,(e,t)=>{Kt(e,{get descriptor(){return t}})}),o(h),o(n),L(e=>{N(n,`data-state`,_(t).state),N(n,`data-run-id`,_(t).runId),U(a,e)},[()=>_(t).content||(pn(_(t))?`No reply text was retained for this Run.`:``)]),s(e,n)});var l=I(c,2);oe(l,17,()=>_(D)?.pending_consents??[],e=>e.id,(e,t)=>{Ze(e,{get consent(){return _(t)},get sessionId(){return _($).id},get decisions(){return P.consentDecisions},onauthority:Mn,ondecided:Nn,onrefresh:Fn})}),s(e,n)};p(yr,e=>{_(Ie)&&!_(D)?e(br):_(je)&&!_($)?e(xr,1):_(Fe)&&!_($)?e(Sr,2):_(W)?e(wi,3):_(Ct)?e(Ti,4):_($)?e(Di,-1):e(Ei,5)}),o(vr),x(vr,()=>vn);var Oi=I(vr,2),ki=e=>{var t=li(),n=R(t);w(`click`,n,Ln),s(e,t)};p(Oi,e=>{_($)&&(!_(Je)||_(kt))&&e(ki)});var Ai=I(Oi,2),ji=e=>{var r=Si(),i=M(r);oe(i,17,()=>_(xt),e=>e.requestId,(e,t)=>{var n=di(),r=I(A(n),2),i=R(r,!0),a=I(r,2),c=R(a,!0),l=I(a,2),u=I(l,2),d=I(u,2),f=e=>{var t=ui();s(e,t)};p(d,e=>{_(bt)&&e(f)}),o(n),L(()=>{U(i,_(t).text),U(c,_(t).error),l.disabled=!!_(bt)}),w(`click`,l,()=>Dn(_(t).requestId,!0)),w(`click`,u,()=>Dn(_(t).requestId,!1)),s(e,n)});var a=I(i,2),c=e=>{var t=pi(),n=A(t),r=R(n,!0),i=I(n,2),a=R(i,!0),c=I(i,2),l=e=>{var t=fi(),n=R(t,!0);L(()=>U(n,_(St).error)),s(e,t)};p(c,e=>{_(St).error&&e(l)});var u=I(c,2),d=R(u,!0),f=I(u,2);o(t),L(()=>{U(r,_(St).sending?`Sending offering…`:`Offering outcome unknown`),U(a,_(St).text),U(d,_(St).sending?`You can continue browsing while this request settles.`:`Retry the original offering to recover its result before sending a new one.`),f.disabled=_(St).sending}),w(`click`,f,()=>void On(!0)),s(e,t)};p(a,e=>{_(St)&&e(c)});var l=I(a,2),u=A(l),f=A(u),m=I(A(f),2),h=A(m);h.value=h.__value=`chat`;var y=I(h),b=R(y,!0);y.value=y.__value=`work`,o(m);var S;ne(m),o(f);var ee=I(f,2),C=e=>{var t=_i(),n=A(t),r=R(n),i=I(n,2),a=e=>{var t=hi(),n=I(A(t),2);oe(n,20,()=>_(Mt).commands,e=>e,(e,t)=>{var n=mi(),r=A(n),i=R(r,!0);o(n),L(()=>U(i,t)),s(e,n)}),o(n),o(t),s(e,t)},c=e=>{var t=gi();s(e,t)};p(i,e=>{_(Mt)?e(a):e(c,-1)}),g(2),o(t),L(()=>U(r,`English commands · ${_(Ht)??``}`)),s(e,t)};p(ee,e=>{_(Ft)===`work`&&e(C)});var T=I(ee,4),O=e=>{var t=vi(),n=R(t,!0);L(()=>U(n,_(D).composer.guidance)),s(e,t)};p(T,e=>{_(D)?.composer?.guidance&&e(O)});var k=I(T,2),j=A(k);n(j),x(j,()=>Sn),o(k);var P=I(k,2);let ie;var ae=A(P),F=A(ae);d(F,()=>_($).id,e=>{z(zn(e,{get snapshot(){return _(Wt)},get target(){return _(Mt)},readSnapshot:Ut,onadopt:Yt,onsubmit:en,isTargetCurrent:e=>jt?.isCurrent(e)===!0,feedback:(e,t=v)=>{Cr(e,ue(t))},$$slots:{feedback:!0}}),e=>E(Bt,e,!0),()=>_(Bt))}),o(ae);var se=I(ae,2),ce=R(se,!0);o(P),o(u);var le=I(u,2),de=e=>{var t=yi();s(e,t)};p(le,e=>{_(Pt)&&e(de)});var fe=I(le,2),pe=e=>{var t=bi(),n=R(t);L(()=>U(n,`${_(Nt).status??``}: ${_(Nt).summary??``}`)),s(e,t)};p(fe,e=>{_(Nt)&&e(pe)});var me=I(fe,2),he=A(me),B=R(he),ge=I(he,2);let H;var W=R(ge,!0);o(me);var G=I(me,2),K=e=>{var t=xi(),n=R(t,!0);L(()=>U(n,_(Fe))),s(e,t)};p(G,e=>{_(Fe)&&e(K)}),o(l),L(e=>{U(b,_(Ht)),S!==(S=_(Ft))&&(m.value=(m.__value=S)??``,V(m,S)),N(j,`aria-describedby`,_(D)?.composer?.guidance?`composer-instructions composer-guidance composer-shortcuts`:`composer-guidance composer-shortcuts`),ie=t(P,1,`composer-actions svelte-1xg67vw`,null,ie,{"composer-actions--work":_(Ft)===`work`}),se.disabled=e,U(ce,_(Ft)===`work`?`Send command`:`Offer`),U(B,`Enter to ${_(Ft)===`work`?`send command`:`offer`} · Shift + Enter for a new line`),H=t(ge,1,`svelte-1xg67vw`,null,H,{"visually-hidden":!_(je)&&!_(St)&&!_(Dt)}),U(W,_(je)?`Refreshing this conversation before another offering.`:_(St)?`Resolve the original offering first. This later draft is kept and is not queued.`:_(Dt)?`Wait for this Run to settle before offering again. You can keep writing; this draft is not queued.`:`Draft stays in this open tab.`)},[()=>_(Wt).busy||_(It)||!_(bt).trim()]),w(`change`,m,Zt),w(`keydown`,j,jn),te(`compositionstart`,j,()=>Qt(!0)),te(`compositionend`,j,()=>Qt(!1)),re(j,()=>_(bt),Ee),w(`click`,se,tn),s(e,r)};return p(Ai,e=>{_($)&&e(ji)}),o(Wn),o(Bn),L(()=>Vn=t(Bn,1,`instrument-deck instrument-deck--bridge svelte-1xg67vw`,null,Vn,{"instrument-deck--welcome":_(Ct)&&_(F).length===0,"bridge-embedded":u()})),w(`click`,tr,ln),te(`scroll`,vr,In),s(e,Bn),i(Rn)}l([`click`,`change`,`keydown`]);var Ti=C(` `),Ei=C(` `),Di=C(`Offline · consent unavailable`),Oi=C(`
                        `),ki=C(`

                        About the Altar

                        LychD · The Altar

                        Applications
                        Local Sigil · Magus
                        `,1);function Ai(e,t){m(t,!0);let n=fe(t,`offline`,3,!1),r=H(!1),l=b(()=>!n()||_(r)),u=H(!0),d=H(!1),f=b(()=>!!Y(K.url.pathname,J(`/bridge`))||(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`)&&!K.url.searchParams.has(`notes`)&&!K.url.searchParams.has(`investigation`)),h=b(()=>_(d)&&_(u)&&!_(f)),v=H(null),S=H(void 0);function C(){_(S)?.suspendVoice()}function T(){return _(l)&&(_(u)||_(f))&&(typeof document>`u`||document.visibilityState!==`hidden`)}let D=H(ie(pe(()=>_(f)?`/orb`:`${K.url.pathname}${K.url.search}`))),ne=b(()=>{let e=K.url.pathname;return e.startsWith(`/bridge`)?K.url.searchParams.has(`notes`)?`Public notes`:K.url.searchParams.has(`investigation`)?`Public source investigation`:`Conversation workspace`:{seances:`Séances`,atlas:`Atlas`,orb:`Orb`,loom:`Loom`,nexus:`Nexus`,canvas:`Canvas`,scavenger:`Scavenger market`}[e.split(`/`)[1]??``]??`Altar`}),O=H(56);function k(e){let t=()=>{E(O,Math.ceil(e.getBoundingClientRect().height)||56,!0)};if(t(),typeof ResizeObserver>`u`)return window.addEventListener(`resize`,t),()=>window.removeEventListener(`resize`,t);let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()}let re=pe(()=>Y(K.url.pathname,J(`/bridge`))),P=H(ie(re?decodeURIComponent(re.slice(8)):void 0)),ae=H(ie(pe(()=>{let e=K.url.searchParams;return re||(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`)&&!e.has(`notes`)&&!e.has(`investigation`)?K.url.search:``}))),se=H(null),le=H(ie([])),ue=ie({bridgePath:re??`/bridge`});F(Ee,ue);let de=rt(ot(async e=>{we(e)===e&&(C(),_(S)?.focusSessionComposer(e),ue.bridgePath=`/bridge/${encodeURIComponent(e)}`,E(P,e,!0),E(ae,``),E(u,!0))}));function he(e){de.needsUnloadWarning&&(e.preventDefault(),e.returnValue=``)}let B=new Map,V=0,ge=!1;_e(({from:e})=>{C(),ge=_(f),_(f)||E(D,`${K.url.pathname}${K.url.search}`);let t=document.getElementById(`altar-main`);e&&t&&(B.delete(e.url.href),B.set(e.url.href,{top:t.scrollTop,left:t.scrollLeft}),B.size>64&&B.delete(B.keys().next().value))}),ye(({type:e,to:t})=>{let n=++V;if(t&&!t.url.hash&&(e===`link`||e===`popstate`)){let r=e===`popstate`?B.get(t.url.href):void 0;j().then(()=>{let e=document.getElementById(`altar-main`);e&&n===V&&(e.scrollTop=r?.top??0,e.scrollLeft=r?.left??0)})}let r=K.url.pathname,i=K.url.search,a=Y(r,J(`/bridge`)),o=r===J(`/bridge`)||r===`${J(`/bridge`)}/`,s=new URLSearchParams(i),c=o&&!s.has(`notes`)&&!s.has(`investigation`);ge&&!_(f)&&(_(d)||E(u,!0),j().then(()=>{n===V&&document.getElementById(`altar-main`)?.focus({preventScroll:!0})})),a?(ue.bridgePath=a,E(P,decodeURIComponent(a.slice(8)),!0),E(ae,i,!0)):c?(E(P,void 0),E(ae,i,!0)):e!==`enter`&&_(d)&&_(u)&&(C(),E(u,!1),j().then(()=>document.getElementById(`altar-main`)?.focus({preventScroll:!0})))});async function W(e,t){let n=`/bridge/${encodeURIComponent(e)}`,r=K.url.searchParams;(K.url.pathname===J(`/bridge`)||K.url.pathname===`${J(`/bridge`)}/`||Y(K.url.pathname,J(`/bridge`)))&&!r.has(`notes`)&&!r.has(`investigation`)?await ve(J(`${n}${t}`),{reset:!1}):(ue.bridgePath=n,E(P,e,!0),E(ae,t,!0))}function q(){if(_(u)){_(f)||C(),E(u,!1);return}let e=ue.bridgePath;E(P,e===`/bridge`?void 0:decodeURIComponent(e.slice(8)),!0),E(ae,``),E(u,!0)}function be(){E(r,!0),Fe()}let xe=0,Se=0,Ce=!1,X=!1,Z,Te=``,De=!1;function Oe(e){let t=!1,n=e.classList.contains(`application-menu`);function r(n){e.open&&!n.composedPath().includes(e)&&(e.open=!1,t=!1)}function i(n){n.key===`Escape`&&!n.defaultPrevented&&e.open&&(e.open=!1,t=!1,e.querySelector(`summary`)?.focus(),n.preventDefault())}function a(){n&&(e.open=!0)}function o(){n&&!t&&!e.contains(document.activeElement)&&(e.open=!1)}function s(t){n&&!(t.relatedTarget instanceof Node&&e.contains(t.relatedTarget))&&(e.open=!0)}function c(r){n&&!(r.relatedTarget instanceof Node&&e.contains(r.relatedTarget))&&(e.open=!1,t=!1)}function l(r){n&&r.target instanceof Element&&r.target.closest(`summary`)&&(r.preventDefault(),t=!t,e.open=t)}return e.addEventListener(`pointerenter`,a),e.addEventListener(`pointerleave`,o),e.addEventListener(`focusin`,s),e.addEventListener(`focusout`,c),e.addEventListener(`click`,l),window.addEventListener(`click`,r),window.addEventListener(`keydown`,i),()=>{e.removeEventListener(`click`,l),e.removeEventListener(`pointerenter`,a),e.removeEventListener(`pointerleave`,o),e.removeEventListener(`focusin`,s),e.removeEventListener(`focusout`,c),window.removeEventListener(`click`,r),window.removeEventListener(`keydown`,i)}}let ke=[{slug:`seances`,label:`Séances`},{slug:`atlas`,label:`Atlas`},{slug:`canvas`,label:`Canvas`},{slug:`orb`,label:`Orb`},{slug:`loom`,label:`Loom`},{slug:`nexus`,label:`Nexus`}];function Ae(e){Fe()}function je(e){let t=e.detail;Me(t.text,t.fault??!0)}function Me(e,t=!0){let n=++xe;_(le).push({id:n,text:e,fault:t}),t||window.setTimeout(()=>Ne(n),6e3)}function Ne(e){E(le,_(le).filter(t=>t.id!==e),!0)}function Pe(){Z!==void 0&&window.clearTimeout(Z),Z=void 0}function Fe(){if(!De||!_(l)||document.visibilityState!==`visible`)return;Pe(),E(se,null);let e=++Se;Ce?X=!0:(Ce=!0,Ie(e))}async function Ie(e){try{let t=(await Xe()).pending_consents;De&&e===Se&&(E(se,t,!0),Te=``)}catch(t){if(!De||e!==Se)return;E(se,null);let n=t instanceof Error?t.message:`The Altar cannot be reached.`;n!==Te&&Me(n),Te=n}finally{Ce=!1,De&&_(l)&&document.visibilityState===`visible`&&(X?(X=!1,Fe()):Z=window.setTimeout(Fe,5e3))}}function Le(){document.visibilityState===`visible`?Fe():(C(),Se++,X=!1,E(se,null),Pe())}a(()=>(De=!0,Fe(),window.addEventListener(`altar:attention`,Ae),window.addEventListener(`altar:omen`,je),()=>{De=!1,Se++,X=!1,Pe(),window.removeEventListener(`altar:attention`,Ae),window.removeEventListener(`altar:omen`,je)}));var Re=ki();te(`focus`,me,Fe),te(`beforeunload`,me,he),te(`visibilitychange`,ce,Le);var ze=I(M(Re),2),Be=A(ze),Ve=A(Be),He=R(Ve),Ue=I(Ve,2),We=I(A(Ue),4);N(We,`title`,`source`),We.textContent=`Altar ${`source`.slice(0,12)??``}`;var Ge=I(We,2),Ke=A(Ge);N(Ke,`href`,`https://github.com/hexanomicon/lychd/tree/main/clients/web`),Ke.textContent=`Project source · MPL-2.0`,o(Ge),o(Ue),o(Be),x(Be,()=>Oe);var qe=I(Be,2);oe(qe,21,()=>ke,e=>e.slug,(e,t)=>{var n=Ti(),r=A(n);ct(r,{get name(){return _(t).slug}});var i=I(r),a=R(i,!0);o(n),L((e,r)=>{N(n,`href`,e),N(n,`aria-current`,r),U(a,_(t).label)},[()=>J(`/${_(t).slug}`),()=>K.url.pathname.startsWith(`/${_(t).slug}`)?`page`:void 0]),s(e,n)}),o(qe);var Je=I(qe,2),Ye=A(Je),Ze=A(Ye);ct(Ze,{name:`applications`}),g(2),o(Ye);var Qe=I(Ye,2),$e=A(Qe),et=A($e);ct(et,{name:`scavenger`}),g(),o($e),o(Qe),o(Je),x(Je,()=>Oe);var tt=I(Je,4),nt=e=>{var t=Ei(),n=R(t);L(e=>{N(t,`data-state`,_(se)===null?`unknown`:_(se)>0?`lit`:`dormant`),N(t,`href`,e),U(n,`⬡ ${_(se)===null?`Consent status unknown`:_(se)>0?`${_(se)} awaiting`:`Consent clear`}`)},[()=>J(`/bridge?attention=pending`)]),s(e,t)},it=e=>{var t=Di();s(e,t)};p(tt,e=>{_(l)?e(nt):e(it,-1)}),g(2),o(ze),x(ze,()=>k);var st=I(ze,2);let lt;var ut=A(st),dt=A(ut);c(dt,()=>t.children),o(ut);var ft=I(ut,2);{let e=b(()=>J(_(v)?at(_(v)):`/seances`)),t=b(()=>_(v)?`Open Séance`:`Browse séances`);Ct(ft,{get focused(){return _(f)},get focusHref(){return _(e)},get focusLabel(){return _(t)},get workHref(){return _(D)},get available(){return _(l)},get viewing(){return _(ne)},onconnect:be,onexpand:q,onsuspend:C,get open(){return _(u)},set open(e){E(u,e,!0)},get narrow(){return _(d)},set narrow(e){E(d,e,!0)},children:(e,t)=>{var n=ee(),r=M(n),i=e=>{{let t=b(()=>_(u)||_(f)),n=b(()=>!_(f));z(wi(e,{get visible(){return _(t)},isVisible:T,get embedded(){return _(n)},get sessionId(){return _(P)},get search(){return _(ae)},onNavigate:W,onSessionResolved:e=>{E(v,e,!0)}}),e=>E(S,e,!0),()=>_(S))}};p(r,e=>{_(l)&&e(i)}),s(e,n)},$$slots:{default:!0}})}o(st);var pt=I(st,2);oe(pt,21,()=>_(le),e=>e.id,(e,t)=>{var n=Oi(),r=A(n),i=R(r,!0),a=I(r,2);o(n),L(()=>{N(n,`data-state`,_(t).fault?`fault`:`info`),U(i,_(t).text)}),w(`click`,a,()=>Ne(_(t).id)),s(e,n)}),o(pt),L((e,t)=>{ze.inert=_(h),N(He,`src`,e),N($e,`href`,t),N($e,`aria-current`,K.url.pathname===`/scavenger`?`page`:void 0),lt=y(st,``,lt,{height:`calc(100dvh - ${_(O)}px)`}),N(ut,`id`,_(f)?void 0:`altar-main`),N(ut,`hidden`,_(f)),ut.inert=_(h)},[()=>G(`altar-mark.svg`),()=>J(`/scavenger`)]),s(e,Re),i()}l([`click`]);function ji(e,t){m(t,!0);let n=pe(()=>!1),r=F(dt,ft()),a=F(be,xe());_e(()=>a.invalidate());function o(e){r.needsUnloadWarning&&(e.preventDefault(),e.returnValue=``)}te(`beforeunload`,me,o),Ai(e,{get offline(){return n},children:(e,n)=>{var r=ee(),i=M(r);c(i,()=>t.children),s(e,r)},$$slots:{default:!0}}),i()}export{ji as component,ut as universal}; \ No newline at end of file diff --git a/src/lychd/public/index.html b/src/lychd/public/index.html index 581d47d5..ed24c290 100644 --- a/src/lychd/public/index.html +++ b/src/lychd/public/index.html @@ -14,8 +14,8 @@ - - + + @@ -33,7 +33,7 @@ - +
                        @@ -48,7 +48,7 @@ import("/_app/immutable/entry/start.CFJt9JL5.js").then(async (kit) => { kit.init(__sveltekit_j5norc); - const app = await import("/_app/immutable/entry/app.C82VrRSX.js"); + const app = await import("/_app/immutable/entry/app.CvzJPcjZ.js"); kit.start(app, element); }); }