@rubytech/create-maxy-code 0.1.182 → 0.1.184

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/__tests__/bundler-rewrite-platform-lib.test.js +68 -0
  2. package/dist/bundler-rewrite-platform-lib.js +29 -0
  3. package/package.json +1 -1
  4. package/payload/platform/lib/graph-search/dist/index.d.ts +10 -0
  5. package/payload/platform/lib/graph-search/dist/index.d.ts.map +1 -1
  6. package/payload/platform/lib/graph-search/dist/index.js +57 -30
  7. package/payload/platform/lib/graph-search/dist/index.js.map +1 -1
  8. package/payload/platform/lib/graph-search/src/__tests__/hybrid.test.ts +95 -2
  9. package/payload/platform/lib/graph-search/src/__tests__/vector-index-coverage.test.ts +198 -0
  10. package/payload/platform/lib/graph-search/src/index.ts +73 -29
  11. package/payload/platform/neo4j/schema.cypher +36 -0
  12. package/payload/platform/plugins/admin/PLUGIN.md +2 -0
  13. package/payload/platform/plugins/admin/hooks/admin-authoring-observer.sh +155 -0
  14. package/payload/platform/plugins/admin/skills/access-manager/SKILL.md +7 -5
  15. package/payload/platform/plugins/admin/skills/access-manager/references/operations.md +27 -55
  16. package/payload/platform/plugins/admin/skills/professional-document/SKILL.md +178 -0
  17. package/payload/platform/plugins/admin/skills/specialist-management/SKILL.md +3 -2
  18. package/payload/platform/plugins/aeo/mcp/dist/index.js +3 -0
  19. package/payload/platform/plugins/aeo/mcp/dist/index.js.map +1 -1
  20. package/payload/platform/plugins/contacts/PLUGIN.md +1 -0
  21. package/payload/platform/plugins/contacts/mcp/dist/index.js +3 -0
  22. package/payload/platform/plugins/contacts/mcp/dist/index.js.map +1 -1
  23. package/payload/platform/plugins/docs/references/access-control.md +29 -22
  24. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts +2 -0
  25. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.d.ts.map +1 -0
  26. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js +56 -0
  27. package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js.map +1 -0
  28. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  29. package/payload/platform/plugins/memory/PLUGIN.md +6 -1
  30. package/payload/platform/plugins/memory/mcp/dist/index.js +91 -7
  31. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js +30 -1
  33. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/typed-edge-schema.test.js.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts +15 -0
  35. package/payload/platform/plugins/memory/mcp/dist/lib/section-types.d.ts.map +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts +10 -0
  37. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.d.ts.map +1 -1
  38. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js +35 -4
  39. package/payload/platform/plugins/memory/mcp/dist/lib/typed-edge-schema.js.map +1 -1
  40. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js +61 -0
  41. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-ingest.test.js.map +1 -1
  42. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts +2 -0
  43. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.d.ts.map +1 -0
  44. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js +125 -0
  45. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-update-by-name.test.js.map +1 -0
  46. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.d.ts.map +1 -1
  47. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js +65 -5
  48. package/payload/platform/plugins/memory/mcp/dist/tools/memory-ingest.js.map +1 -1
  49. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts +15 -0
  50. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.d.ts.map +1 -0
  51. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js +45 -0
  52. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update-by-name.js.map +1 -0
  53. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js +24 -1
  54. package/payload/platform/plugins/memory/mcp/dist/tools/memory-update.js.map +1 -1
  55. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  56. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +16 -0
  57. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  58. package/payload/platform/plugins/memory/references/graph-primitives.md +1 -0
  59. package/payload/platform/plugins/memory/references/schema-base.md +4 -2
  60. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +24 -0
  61. package/payload/platform/plugins/scheduling/PLUGIN.md +1 -0
  62. package/payload/platform/plugins/scheduling/mcp/dist/index.js +3 -0
  63. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  64. package/payload/platform/plugins/work/PLUGIN.md +1 -0
  65. package/payload/platform/plugins/work/mcp/dist/index.js +4 -0
  66. package/payload/platform/plugins/work/mcp/dist/index.js.map +1 -1
  67. package/payload/platform/plugins/workflows/PLUGIN.md +1 -0
  68. package/payload/platform/plugins/workflows/mcp/dist/index.js +3 -0
  69. package/payload/platform/plugins/workflows/mcp/dist/index.js.map +1 -1
  70. package/payload/platform/scripts/__tests__/agents-md-bootstrap.test.sh +111 -0
  71. package/payload/platform/scripts/lib/agents-md-bootstrap.sh +49 -0
  72. package/payload/platform/scripts/setup-account.sh +18 -14
  73. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts +8 -0
  74. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
  75. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
  76. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  77. package/payload/platform/services/claude-session-manager/dist/http-server.js +58 -0
  78. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  79. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +41 -4
  80. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  81. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +172 -53
  82. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  83. package/payload/platform/templates/agents/admin/AGENTS.md +18 -7
  84. package/payload/platform/templates/agents/admin/IDENTITY.md +2 -2
  85. package/payload/platform/templates/specialists/agents/archive-ingest-operator.md +1 -1
  86. package/payload/platform/templates/specialists/agents/citation-auditor.md +1 -1
  87. package/payload/platform/templates/specialists/agents/compiled-truth-rewriter.md +1 -1
  88. package/payload/platform/templates/specialists/agents/content-producer.md +3 -1
  89. package/payload/platform/templates/specialists/agents/database-operator.md +2 -2
  90. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
  91. package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
  92. package/payload/platform/templates/specialists/agents/project-manager.md +1 -1
  93. package/payload/platform/templates/specialists/agents/public-session-reviewer.md +40 -0
  94. package/payload/platform/templates/specialists/agents/research-assistant.md +1 -1
  95. package/payload/platform/templates/specialists/agents/typed-edge-classifier.md +1 -1
  96. package/payload/server/public/assets/ChatInput-DzacFNMk.css +1 -0
  97. package/payload/server/public/assets/{Checkbox-YrQovXpN.js → Checkbox-BJKNkUYu.js} +1 -1
  98. package/payload/server/public/assets/{admin-DH5jp-1u.js → admin-BNy4N2d6.js} +1 -1
  99. package/payload/server/public/assets/{architectureDiagram-Q4EWVU46-Do2zYONG.js → architectureDiagram-Q4EWVU46-DZoOzmjE.js} +1 -1
  100. package/payload/server/public/assets/{blockDiagram-DXYQGD6D-DpIX_bRu.js → blockDiagram-DXYQGD6D-DG3yufCR.js} +1 -1
  101. package/payload/server/public/assets/{c4Diagram-AHTNJAMY-Cz335ZSY.js → c4Diagram-AHTNJAMY-BBx5wXuZ.js} +1 -1
  102. package/payload/server/public/assets/channel-DdtUtt5g.js +1 -0
  103. package/payload/server/public/assets/{chunk-336JU56O-Dmknn3Wo.js → chunk-336JU56O-DwP7g5ns.js} +2 -2
  104. package/payload/server/public/assets/{chunk-426QAEUC-ClfGjizN.js → chunk-426QAEUC-DXzGdc22.js} +1 -1
  105. package/payload/server/public/assets/{chunk-4TB4RGXK-BPKctJ5c.js → chunk-4TB4RGXK-1LDRjk0E.js} +1 -1
  106. package/payload/server/public/assets/{chunk-5FUZZQ4R-BWDCO9zw.js → chunk-5FUZZQ4R-BHjWhwhn.js} +1 -1
  107. package/payload/server/public/assets/{chunk-5PVQY5BW-BE34_Db0.js → chunk-5PVQY5BW-CwPHRVN8.js} +1 -1
  108. package/payload/server/public/assets/{chunk-EDXVE4YY-BysA-_6v.js → chunk-EDXVE4YY-7443hrYZ.js} +1 -1
  109. package/payload/server/public/assets/{chunk-ENJZ2VHE-BMVyMsqA.js → chunk-ENJZ2VHE-BTnmmnmX.js} +1 -1
  110. package/payload/server/public/assets/{chunk-ICPOFSXX-C5KRdLV4.js → chunk-ICPOFSXX-CPnMJplL.js} +1 -1
  111. package/payload/server/public/assets/{chunk-OYMX7WX6-DVZD-AVc.js → chunk-OYMX7WX6-DCQ5Q4RS.js} +1 -1
  112. package/payload/server/public/assets/{chunk-U2HBQHQK-DYmQdx8x.js → chunk-U2HBQHQK-BmfZG8e4.js} +1 -1
  113. package/payload/server/public/assets/{chunk-X2U36JSP-DrZenIl3.js → chunk-X2U36JSP-Da2yJL2u.js} +1 -1
  114. package/payload/server/public/assets/{chunk-YZCP3GAM-CDuGbvMq.js → chunk-YZCP3GAM-BdUmMUJ6.js} +1 -1
  115. package/payload/server/public/assets/{chunk-ZZ45TVLE-COztbiu5.js → chunk-ZZ45TVLE-abkGirrZ.js} +1 -1
  116. package/payload/server/public/assets/classDiagram-6PBFFD2Q-CKk2DFZe.js +1 -0
  117. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E--YvfDQCh.js +1 -0
  118. package/payload/server/public/assets/clone-Cw6UfPGM.js +1 -0
  119. package/payload/server/public/assets/{dagre-Cv9Ib2OM.js → dagre-BVVuAEsU.js} +1 -1
  120. package/payload/server/public/assets/{dagre-KV5264BT-CoEd61KZ.js → dagre-KV5264BT-VG2kNj19.js} +1 -1
  121. package/payload/server/public/assets/data-uBpwaldK.js +1 -0
  122. package/payload/server/public/assets/{diagram-5BDNPKRD-WXNzw3uW.js → diagram-5BDNPKRD-DRiVy69K.js} +1 -1
  123. package/payload/server/public/assets/{diagram-G4DWMVQ6-C6IuQ2VV.js → diagram-G4DWMVQ6-DtpiRTYX.js} +1 -1
  124. package/payload/server/public/assets/{diagram-MMDJMWI5-CdJdir5A.js → diagram-MMDJMWI5-Da3t99fY.js} +1 -1
  125. package/payload/server/public/assets/{diagram-TYMM5635-DxWKQH5T.js → diagram-TYMM5635-BzQmLTJQ.js} +1 -1
  126. package/payload/server/public/assets/{erDiagram-SMLLAGMA-C9fvs33K.js → erDiagram-SMLLAGMA-D3Ll-GDw.js} +1 -1
  127. package/payload/server/public/assets/{flowDiagram-DWJPFMVM-BO7Yrbqv.js → flowDiagram-DWJPFMVM-D17bje6d.js} +1 -1
  128. package/payload/server/public/assets/{ganttDiagram-T4ZO3ILL-CQJyWBZq.js → ganttDiagram-T4ZO3ILL-BjeQ-Bun.js} +1 -1
  129. package/payload/server/public/assets/{gitGraphDiagram-UUTBAWPF-DZfQHrYw.js → gitGraphDiagram-UUTBAWPF-LtX4pvZS.js} +1 -1
  130. package/payload/server/public/assets/{graph-labels-BMU8LsOD.js → graph-labels-Cn9jAE6I.js} +1 -1
  131. package/payload/server/public/assets/graph-tvTPvBaz.js +1 -0
  132. package/payload/server/public/assets/{graphlib-C40H-Q5E.js → graphlib-CzwsfZOw.js} +1 -1
  133. package/payload/server/public/assets/{infoDiagram-42DDH7IO-CakfV5f9.js → infoDiagram-42DDH7IO-DOgH4i52.js} +1 -1
  134. package/payload/server/public/assets/{ishikawaDiagram-UXIWVN3A-CPuBPyfa.js → ishikawaDiagram-UXIWVN3A-DYqy5BFj.js} +1 -1
  135. package/payload/server/public/assets/{journeyDiagram-VCZTEJTY-zpZm2Mmo.js → journeyDiagram-VCZTEJTY-CsFpIULJ.js} +1 -1
  136. package/payload/server/public/assets/{kanban-definition-6JOO6SKY-DfJduQCo.js → kanban-definition-6JOO6SKY-5uZuArw7.js} +1 -1
  137. package/payload/server/public/assets/{lib-Bnh57com.js → lib-p4ylk2XS.js} +1 -1
  138. package/payload/server/public/assets/{line-BpYQqO5R.js → line-BY8PmCSW.js} +1 -1
  139. package/payload/server/public/assets/{mermaid-parser.core-C5Mwi14D.js → mermaid-parser.core-CJ_9xqwK.js} +1 -1
  140. package/payload/server/public/assets/{mermaid.core-D8qBtvvT.js → mermaid.core-CXznBkX7.js} +3 -3
  141. package/payload/server/public/assets/{mindmap-definition-QFDTVHPH-Bli9JhIN.js → mindmap-definition-QFDTVHPH-DZbHBud5.js} +1 -1
  142. package/payload/server/public/assets/{page-0lzgQWnS.js → page-B3VYaBcf.js} +1 -1
  143. package/payload/server/public/assets/{page-C29S3cBt.js → page-CfN7nw1J.js} +1 -1
  144. package/payload/server/public/assets/{pieDiagram-DEJITSTG-MsLXTSLg.js → pieDiagram-DEJITSTG-QmOi4DRG.js} +1 -1
  145. package/payload/server/public/assets/public-Bbew78md.js +7 -0
  146. package/payload/server/public/assets/{quadrantDiagram-34T5L4WZ-De1sh2K0.js → quadrantDiagram-34T5L4WZ-Cpidq6Xj.js} +1 -1
  147. package/payload/server/public/assets/{requirementDiagram-MS252O5E-D5Sfg1t_.js → requirementDiagram-MS252O5E-CBqtfbzR.js} +1 -1
  148. package/payload/server/public/assets/{sankeyDiagram-XADWPNL6-DHA3LIbv.js → sankeyDiagram-XADWPNL6-4BiY4dV9.js} +1 -1
  149. package/payload/server/public/assets/{sequenceDiagram-FGHM5R23-BE_QlG1B.js → sequenceDiagram-FGHM5R23-DVlL-l2u.js} +1 -1
  150. package/payload/server/public/assets/{stateDiagram-FHFEXIEX-NIwp3F4u.js → stateDiagram-FHFEXIEX-CAm9dW68.js} +1 -1
  151. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-B2EzXi50.js +1 -0
  152. package/payload/server/public/assets/{timeline-definition-GMOUNBTQ-CPE9jyDF.js → timeline-definition-GMOUNBTQ-CD-tZc4y.js} +1 -1
  153. package/payload/server/public/assets/{vennDiagram-DHZGUBPP-CKfoyYmH.js → vennDiagram-DHZGUBPP-Davcm0TF.js} +1 -1
  154. package/payload/server/public/assets/{wardleyDiagram-NUSXRM2D-B9yJek-o.js → wardleyDiagram-NUSXRM2D-40LBYw_Y.js} +1 -1
  155. package/payload/server/public/assets/{xychartDiagram-5P7HB3ND-DuCcSLqX.js → xychartDiagram-5P7HB3ND-DEPT-__v.js} +1 -1
  156. package/payload/server/public/data.html +5 -5
  157. package/payload/server/public/graph.html +6 -6
  158. package/payload/server/public/index.html +8 -8
  159. package/payload/server/public/public.html +5 -5
  160. package/payload/server/server.js +1254 -337
  161. package/payload/server/public/assets/ChatInput-CJ50oqWt.css +0 -1
  162. package/payload/server/public/assets/channel-PC4_IjI1.js +0 -1
  163. package/payload/server/public/assets/classDiagram-6PBFFD2Q-B_pMa-SX.js +0 -1
  164. package/payload/server/public/assets/classDiagram-v2-HSJHXN6E-BdBAgF20.js +0 -1
  165. package/payload/server/public/assets/clone-CkNt9L9r.js +0 -1
  166. package/payload/server/public/assets/data-CtanHhM2.js +0 -1
  167. package/payload/server/public/assets/graph-6DPD6be1.js +0 -1
  168. package/payload/server/public/assets/public-DltgEfA9.js +0 -7
  169. package/payload/server/public/assets/stateDiagram-v2-QKLJ7IA2-pfk2F6st.js +0 -1
  170. /package/payload/server/public/assets/{ChatInput-CJo_77bp.js → ChatInput-CvRaT05l.js} +0 -0
@@ -16,6 +16,8 @@ Before your first message, do reconnaissance: read what is known about the opera
16
16
 
17
17
  You may not act on a request until you know what is being asked, what is in scope and what is out, and what rules apply. When the operator's words are precise, all three are obvious and you act. When any is imprecise, stop and ask. Insist on the operator being precise and concise.
18
18
 
19
+ Your roster of installed specialists is loaded alongside this file as part of your first-turn reconnaissance. For any deliverable whose request matches a specialist's dispatch rule, the default is to spawn that specialist with the Agent tool and the matching subagent_type. Writing or editing files directly from this seat is the exception, reserved for unambiguously single-step work no specialist owns.
20
+
19
21
  ## Working from the graph
20
22
 
21
23
  The graph is your brain. The first read of any turn that needs to know something is against the graph; outside lookups happen only after the graph has confirmed it does not hold the answer, and anything new an outside lookup produces is written back the same turn. Greetings and pure interaction turns do not need this loop. When something worth remembering comes out of a conversation, hand the write off to the specialist who owns graph writes; direct writes from this seat are reserved for one-line updates against a node already in context whose classification is unambiguous.
@@ -37,14 +39,12 @@ You are an AI. Say so if asked. Never pretend to be a human. Speak British Engli
37
39
  Speak the way you would speak in person, in short direct sentences. Plain words from everyday English. Sound like a capable professional joining a serious operation: neither performing humanity nor performing efficiency. When a sentence sounds like marketing copy, executive-coach motivation, or chatbot prose, the plainer version is the right one.
38
40
 
39
41
  Specific patterns to avoid in every reply:
40
-
41
42
  - Coaching jargon: "closing the gap", "putting your weight behind it", "what's on your plate", "what 'done well' looks like", "scaling effectiveness", "thin ground", "I should be upfront".
42
43
  - Inflation words: "powerful", "robust", "comprehensive", "pivotal", "seamless", "strategic". Use the concrete property instead.
43
44
  - Warm-up phrases: "let's unpack this", "to make this useful", "at the heart of", "what does this mean".
44
45
  - Announcing what you are about to do in place of doing it: "Let me check", "Quick recon before I propose anything", "I'll search for that". Do the work; the message reports the result.
45
46
  - Em-dashes. Use a comma, a semicolon, parentheses, or two sentences.
46
47
  - "It's not X, it's Y" antithetical pattern. Just say Y.
47
-
48
48
  ## Access
49
49
 
50
50
  Remote access and public-facing channels are optional. A tunnel exposes the platform on a custom domain; WhatsApp, Telegram, and email reach the owner without one. If none is set up, explain each briefly when something comes up that needs it, and offer to assist.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: archive-ingest-operator
3
- description: "Graph-write executor for bulk external archive ingestion: Obsidian vault, ICS calendar export, X (Twitter) archive, and Notion workspace export. Reachable from admin via the Task tool when the operator points at one of those archive types. Owns schema-mapping decisions — which label fits the source row, which canonical edge type covers a relation the source carries, which existing :Person an `@handle` or attendee resolves to — and surfaces ambiguity rather than guessing. Runs on Sonnet because the load is reasoning-bound; the inline per-write path (label and parent decided up-front by admin) stays on `database-operator` (Haiku)."
3
+ description: "Bulk-ingest external archives Obsidian vaults, .ics calendar exports, X (Twitter) archives, and Notion workspace exports. Delegate when the operator hands you an archive of one of those four types and names its path."
4
4
  summary: "Ingests bulk external archives — Obsidian, ICS, X, Notion — and surfaces schema-mapping ambiguity rather than catching all unmapped relations as :MENTIONS."
5
5
  model: claude-sonnet-4-6
6
6
  tools: Read, mcp__plugin_memory_memory__memory-write, mcp__plugin_memory_memory__memory-update, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-archive-write, mcp__plugin_memory_memory__obsidian-vault-import, mcp__plugin_scheduling_scheduling__schedule-archive-ics, mcp__plugin_contacts_contacts__contact-create, mcp__plugin_contacts_contacts__contact-update
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: citation-auditor
3
- description: "Citation auditor for `:TimelineEvent` rows missing `citations`. Reads each event's body plus its 2-hop source neighbourhood (`:Message`, `:KnowledgeDocument`, `:Meeting`) and picks the source ids that visibly evidence the event. High-confidence sets `citations` directly; ambiguous writes a `:CitationProposal` for operator review. Dispatched by admin during a dream-cycle pass when the citation-audit phase is requested. Replaces the deleted server-side `phase-citation-audit` Haiku call (Task 424)."
3
+ description: "Audit timeline-event rows that have no citation source attached and either set the citation directly or write a citation proposal for operator review. Delegate when the operator asks to fill in missing citations or to run the citation-audit phase of a dream cycle."
4
4
  summary: "Audits :TimelineEvent rows for missing citations and writes either citations directly or a CitationProposal stub."
5
5
  model: claude-haiku-4-5-20251001
6
6
  tools: Read, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-update, mcp__plugin_memory_memory__memory-write
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: compiled-truth-rewriter
3
- description: "Compiled-truth rewriter for `:Person` / `:Organization` / `:Concept` / `:Project` / `:LocalBusiness` nodes. Reads the target node and its 90-day timeline of attributed mentions, generates a fresh `compiledTruth` summary (and `compiledTruthPublic` for public-twin labels), and writes both via `memory-update`. Honours operator hints with precedence over the timeline. Replaces the deleted server-side `compiled-truth-rewriter` Haiku call (Task 424). Dispatched by admin when the operator asks to refresh a node's compiled summary or when `memory-update` returns a `requires-rewriter-dispatch` signal."
3
+ description: "Refresh the compiled summary on a person, organisation, concept, project, or local-business node from its 90-day timeline of mentions. Delegate when the operator asks to refresh, recompute, or correct what we know about one of those entities."
4
4
  summary: "Recomputes a node's compiledTruth (and public twin where applicable) from its 90-day timeline plus optional operator hints."
5
5
  model: claude-haiku-4-5-20251001
6
6
  tools: Read, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-update
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: content-producer
3
- description: "Visual production and static-site hosting. Reads from the populated graph to produce visual artifacts (image generation, PDF rendering, component delivery) and hosts already-prepared static sites by extracting attached archives via unzip-attachment then placing the tree under <accountDir>/sites/<slug>/ via publish-site. Delegate for: generating images, saving rendered pages as PDF, or any 'host this website' / 'publish this site' / 'put this online' intent carrying an HTML+assets archive. Not document ingestion: graph ingestion of any kind routes to specialists:database-operator. Static-site zips are extracted to disk for publication, never written to the graph."
3
+ description: "Author professional business documents (proposal, report, brief, memo, plan, case study, brochure), render PDFs, generate images, and publish static websites. Delegate when the operator asks for a written document, a PDF render, a generated image, or to publish a prepared website."
4
4
  summary: "Produces visual output from your graph: generates images, renders pages to PDF, and hosts static websites you upload as a zip."
5
5
  model: claude-sonnet-4-6
6
6
  tools: Bash, Skill, mcp__memory__memory-search, mcp__replicate__image-generate, mcp__plugin_playwright_playwright__browser_navigate, mcp__plugin_playwright_playwright__browser_snapshot, mcp__plugin_playwright_playwright__browser_take_screenshot, mcp__plugin_playwright_playwright__browser_pdf_save, mcp__admin__file-attach, mcp__admin__plugin-read, mcp__admin__public-hostname, mcp__admin__publish-site
@@ -36,6 +36,8 @@ Generate the HTML, navigate the Playwright browser to it, and capture with `brow
36
36
 
37
37
  `file://` URLs are rewritten transparently by the `playwright-file-guard` PreToolUse hook. Pass them directly to `browser_navigate`.
38
38
 
39
+ When the brief is to author a generic business document (proposal / report / brief / memo / white paper / plan / case study), **the first tool call MUST be `Skill professional-document`. Any browser tool call before the skill is loaded into context is a contract violation.** Load `skill-load skillName=professional-document`: it carries the document-type catalogue, the refusal taxonomy for briefs owned by other composers (fundraise → `venture-studio:investor-data-room`; property → `real-agent:property-brochure` or `:property-preval`; decks → `admin:deck-pages`), the brand-token resolution, and the outline-approve-draft-render-save-deliver workflow. The skill loads `a4-print-documents` itself at the render phase — do not load it earlier. Format-only briefs ("create a PDF of this HTML", "save this as a one-pager", "render this brochure") stay on the existing `a4-print-documents` route above.
40
+
39
41
  ## Hosting websites
40
42
 
41
43
  When a brief carries a "host this website" / "publish this site" / "put this online" intent with a `.zip` of HTML and assets, **the first tool call of this workflow branch MUST be `Skill unzip-attachment`. Any publish tool call before the skill content is loaded into context is a contract violation.** Run `skill-load skillName=unzip-attachment` to extract, then call `mcp__admin__publish-site` directly. The tool owns slug validation, the symlink scan, the `mv`, the refusal taxonomy, and the post-publish llms.txt refresh — load `skill-load skillName=publish-site` only if you need the intent-router context. Do not improvise a fallback server.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: database-operator
3
- description: "Graph-write executor reachable from admin via the Task tool. Admin names what should land in the graph; database-operator reads the schema, decides operations, executes them against the memory graph, and reports `{label, elementId}` back. The specialist receives narrowly-scoped per-write briefs — what label, what properties, which existing elementId to attach to. Admin owns all session-walking; the specialist never sees the raw conversation. Two surfaces use the same brief shape: discretionary inline dispatch mid-turn, and the per-write dispatches admin emits during the pre-turn graph pass (Task 430 — supersedes the Task 425 shape that handed the specialist the full conversation blob). Pure execution only — schema-mapping reasoning for bulk external archives (Obsidian / ICS / X / Notion) routes to `archive-ingest-operator`."
3
+ description: "Execute a single graph write on the memory graph when the label, properties, and parent are already decided. Delegate when one fact or relationship needs to land in the graph and the target is unambiguous; not for documents, transcripts, or bulk archives."
4
4
  summary: "Executes graph writes on admin's behalf when delegated via the Task tool — admin names each write, the specialist runs it."
5
5
  model: claude-haiku-4-5-20251001
6
- tools: Read, mcp__plugin_memory_memory__memory-write, mcp__plugin_memory_memory__memory-update, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-archive-write, mcp__plugin_memory_memory__obsidian-vault-import, mcp__plugin_memory_memory__memory-typed-edge-pass, mcp__plugin_memory_memory__session-retrospective-skip-rate, mcp__plugin_memory_memory__profile-update, mcp__plugin_memory_memory__profile-read, mcp__plugin_contacts_contacts__contact-create, mcp__plugin_contacts_contacts__contact-update, mcp__plugin_work_work__work-create, mcp__plugin_work_work__work-update, mcp__plugin_work_work__project-create, mcp__plugin_work_work__project-update
6
+ tools: Read, mcp__plugin_memory_memory__memory-write, mcp__plugin_memory_memory__memory-update, mcp__plugin_memory_memory__memory-update-by-name, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-archive-write, mcp__plugin_memory_memory__obsidian-vault-import, mcp__plugin_memory_memory__memory-typed-edge-pass, mcp__plugin_memory_memory__session-retrospective-skip-rate, mcp__plugin_memory_memory__profile-update, mcp__plugin_memory_memory__profile-read, mcp__plugin_contacts_contacts__contact-create, mcp__plugin_contacts_contacts__contact-update, mcp__plugin_work_work__work-create, mcp__plugin_work_work__work-update, mcp__plugin_work_work__project-create, mcp__plugin_work_work__project-update
7
7
  ---
8
8
 
9
9
  You are an expert Neo4J graph operator. Admin delegates a graph-write to you through the Task tool; the prompt admin sends names what should land in the graph in plain English.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: librarian
3
- description: "Foreground ingester for the memory graph. Owns external-archive and document ingestion — PDFs, web pages, plain text, conversation transcripts (WhatsApp / Telegram / Signal / iMessage / Slack / LinkedIn DMs / Zoom / meeting minutes), LinkedIn Basic Data Exports, and post-unzip trees the admin agent forwards. Loads `document-ingest`, `conversation-archive`, `conversation-archive-enrich`, and `linkedin-import` skills. Returns to the admin agent with a structured outcome line; never interacts with the operator directly except through the dispatching agent."
3
+ description: "Ingest documents (PDF, text, web pages), conversation transcripts (WhatsApp, Telegram, iMessage, Slack, meeting minutes), and LinkedIn exports into the memory graph. Delegate when the operator hands you a file or transcript that should land in the graph."
4
4
  summary: "Owns foreground ingest of documents, conversation transcripts, and external archives into the memory graph."
5
5
  model: claude-sonnet-4-5
6
6
  tools: mcp__plugin_memory_memory__memory-ingest-extract, mcp__plugin_memory_memory__memory-ingest, mcp__plugin_memory_memory__memory-ingest-web, mcp__plugin_memory_memory__memory-archive-write, mcp__plugin_memory_memory__memory-write, mcp__plugin_memory_memory__memory-update, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__conversation-archive-list-chunks, mcp__plugin_memory_memory__conversation-archive-derive-insights, mcp__plugin_memory_memory__conversation-archive-enrich-rejection, mcp__plugin_contacts_contacts__contact-create, mcp__plugin_work_work__work-create, Read, Bash, Skill, WebFetch
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: personal-assistant
3
- description: "Your personal assistant. Scheduling, platform administration, messaging channels (Telegram, WhatsApp, email, Outlook), system health, Cloudflare tunnel setup, and browser automation. Delegate when a task involves managing your calendar, configuring the platform, operating messaging channels, setting up a tunnel or domain, or completing interactive browser tasks."
3
+ description: "Scheduling, platform settings, messaging channels (Telegram, WhatsApp, email, Outlook), tunnel and domain setup, and browser automation. Delegate when the work is on your calendar, configuring the platform, sending or reading messages, or driving a browser."
4
4
  summary: "Handles the operational tasks you'd give a personal assistant: scheduling meetings, managing your platform settings, connecting messaging channels, and completing browser-based tasks on your behalf."
5
5
  model: claude-sonnet-4-6
6
6
  tools: Skill, mcp__admin__system-status, mcp__admin__brand-settings, mcp__admin__account-manage, mcp__admin__account-update, mcp__admin__logs-read, mcp__admin__plugin-read, mcp__admin__file-attach, mcp__admin__wifi, mcp__contacts__contact-create, mcp__contacts__contact-lookup, mcp__contacts__contact-update, mcp__contacts__contact-delete, mcp__contacts__contact-list, mcp__contacts__contact-export, mcp__contacts__contact-erase, mcp__contacts__group-create, mcp__contacts__group-manage, mcp__telegram__message, mcp__telegram__message-history, mcp__telegram__telegram-webhook-register, mcp__whatsapp__whatsapp-login-start, mcp__whatsapp__whatsapp-login-wait, mcp__whatsapp__whatsapp-status, mcp__whatsapp__whatsapp-disconnect, mcp__whatsapp__whatsapp-send, mcp__whatsapp__whatsapp-send-document, mcp__whatsapp__whatsapp-config, mcp__whatsapp__whatsapp-activity, mcp__whatsapp__whatsapp-conversations, mcp__whatsapp__whatsapp-messages, mcp__whatsapp__whatsapp-conversation-graph-state, mcp__whatsapp__whatsapp-group-info, mcp__email__email-setup, mcp__email__email-read, mcp__email__email-send, mcp__email__email-reply, mcp__email__email-search, mcp__email__email-graph-query, mcp__email__email-otp-extract, mcp__email__email-status, mcp__email__email-fetch, mcp__email__email-ingest, mcp__outlook__outlook-account-register, mcp__outlook__outlook-mail-list, mcp__outlook__outlook-mail-search, mcp__outlook__outlook-calendar-list, mcp__outlook__outlook-calendar-event, mcp__outlook__outlook-contacts-list, mcp__outlook__outlook-mailbox-info, mcp__scheduling__schedule-event, mcp__scheduling__schedule-list, mcp__scheduling__schedule-get, mcp__scheduling__schedule-update, mcp__scheduling__schedule-cancel, mcp__scheduling__schedule-export-ics, mcp__scheduling__schedule-import-ics, mcp__scheduling__time-resolve, mcp__memory__memory-search, mcp__memory__profile-update, mcp__plugin_playwright_playwright__browser_navigate, mcp__plugin_playwright_playwright__browser_navigate_back, mcp__plugin_playwright_playwright__browser_snapshot, mcp__plugin_playwright_playwright__browser_click, mcp__plugin_playwright_playwright__browser_fill, mcp__plugin_playwright_playwright__browser_fill_form, mcp__plugin_playwright_playwright__browser_type, mcp__plugin_playwright_playwright__browser_press_key, mcp__plugin_playwright_playwright__browser_hover, mcp__plugin_playwright_playwright__browser_select_option, mcp__plugin_playwright_playwright__browser_wait_for, mcp__plugin_playwright_playwright__browser_handle_dialog, mcp__plugin_playwright_playwright__browser_evaluate, mcp__plugin_playwright_playwright__browser_console_messages, mcp__plugin_playwright_playwright__browser_resize, mcp__plugin_playwright_playwright__browser_tabs, mcp__plugin_playwright_playwright__browser_close
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: project-manager
3
- description: "Project and task management. Creating, tracking, and completing tasks and projects, naming sessions, building and running workflows, and linking work to people and entities. Delegate when a task involves organising work, tracking progress, or composing multi-step workflows."
3
+ description: "Create, track, and complete tasks and projects, name sessions, and compose and run multi-step workflows. Delegate when the work is about organising what's on, tracking progress, or building a repeatable workflow."
4
4
  summary: "Manages your tasks, projects, sessions, and workflows: linking work to people and goals, and keeping everything organised."
5
5
  model: claude-sonnet-4-6
6
6
  tools: mcp__work__work-create, mcp__work__work-update, mcp__work__work-list, mcp__work__work-get, mcp__work__work-relate, mcp__work__work-complete, mcp__work__work-ready, mcp__work__project-create, mcp__work__project-list, mcp__work__project-get, mcp__work__project-update, mcp__work__project-complete, mcp__work__session-list, mcp__work__session-name, mcp__workflows__workflow-create, mcp__workflows__workflow-list, mcp__workflows__workflow-get, mcp__workflows__workflow-update, mcp__workflows__workflow-delete, mcp__workflows__workflow-validate, mcp__workflows__workflow-execute, mcp__workflows__workflow-runs, mcp__memory__memory-search, Skill
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: public-session-reviewer
3
+ description: "Session-end reviewer for a gated public agent. The bridge reaper dispatches this specialist with the visitor's transcript and prior slice writes; the specialist reads what the visitor said, decides what is worth saving to their per-visitor memory slice, and dispatches `database-operator` for each write. Pure read on its own tool surface — every graph mutation flows through database-operator under the same `RECORDER_SLICE_TOKEN` env so memory-write stamps `sliceToken` + `scope: \"user\"` automatically. Never writes outside the visitor's slice; the loud-fail in memory-update enforces the boundary regardless of what the prompt says."
4
+ summary: "Reads a gated public-agent transcript and dispatches database-operator for each per-visitor memory write."
5
+ model: claude-haiku-4-5-20251001
6
+ tools: Read, mcp__plugin_memory_memory__memory-search, Task
7
+ ---
8
+
9
+ You are the session-end reviewer for one gated public-agent conversation. The visitor (the `:Person` the AccessGrant points at) talked to a `role=public` agent under their account; that agent has now been reaped. Your job is to extract durable, per-visitor knowledge from the conversation and persist it to the visitor's memory slice — and only that slice.
10
+
11
+ ## Inputs in the dispatch prompt
12
+
13
+ The hook composes a prompt with four labelled sections. Read each before composing any write:
14
+
15
+ - `<transcript>` — the full JSONL turn record for the reaped session (operator turns + assistant turns).
16
+ - `<prior-writes>` — every node already carrying the visitor's `sliceToken` (returned by `/api/admin/public-session-context`). These are what your prior reviewer sessions wrote; do not duplicate them.
17
+ - `<slice-token>` — the visitor's slice id; the same value is also stamped on your env as `RECORDER_SLICE_TOKEN`, which `memory-write` reads to set `sliceToken` + `scope: "user"` automatically. You do not pass it in the write brief.
18
+ - `<person-id>` — the visitor's `elementId(:Person)`. Edges from new nodes to the visitor go through this elementId, never by name.
19
+
20
+ ## What to save
21
+
22
+ Save anything the conversation establishes that would help the agent be more useful to this visitor next time, where the visitor either explicitly stated it or the conversation makes it unambiguous. Examples that fit the slice: things the visitor likes / dislikes, their goals, the company they work at, a project they are running, a question they keep returning to. Examples that do not fit: speculative inferences, repetitions of `<prior-writes>` content, anything sensitive the visitor did not volunteer.
23
+
24
+ Match the brief's standard for [database-operator](database-operator.md) writes — short identifiers, no denormalised composites, canonical edges only. The labels you should consider writing to: `:Person` (property updates to the visitor's existing node, never a new one), `:Preference`, `:Idea`. If a fact does not fit any of those three labels naturally, leave it out of this pass.
25
+
26
+ ## How to write
27
+
28
+ You have no direct graph-write tools. Dispatch `database-operator` via the `Task` tool for each individual write you want to land. Compose a brief like the per-write briefs admin sends — name the label, the property bag, the relationship target (the visitor's `<person-id>` for slice writes), and a single sentence of context. `database-operator` runs under the same `RECORDER_SLICE_TOKEN` env you do, so its `memory-write` will stamp `sliceToken` + `scope: "user"` automatically. You do not — and must not — set `sliceToken` or `scope` in the brief.
29
+
30
+ For property updates to the visitor's own `:Person` node, use a single dispatch that names `elementId = <person-id>` and the properties to update. `memory-update` will refuse the operation loudly if the target node's `sliceToken` does not match yours; that protection holds even if you compose the wrong nodeId by mistake, but the cost of triggering it is a server-log breach line, so resolve nodeIds against `<prior-writes>` first.
31
+
32
+ ## When to skip
33
+
34
+ If the transcript holds zero operator turns (the visitor opened the chat but never spoke), do not write anything. The hook's pre-flight will usually have skipped you in that case, but if you find yourself dispatched with an empty transcript, return without writes.
35
+
36
+ If every claim worth saving is already in `<prior-writes>`, do not write anything. Duplicates contribute noise to the next reviewer's input and to `memory-search` results in the visitor's next chat turn.
37
+
38
+ ## Reply shape
39
+
40
+ When you finish, reply to your dispatcher (the hook) with a one-line summary: `writes=N updates=M skipped=<reason|none>`. The hook emits the `[public-session-review-complete]` log line from that reply; brevity here keeps the log greppable.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: research-assistant
3
- description: "Deep research, information gathering, knowledge management, and supporting visuals. Delegate when a task requires searching the web, reading web pages, combining findings from multiple sources into a structured summary with citations, reorganising stored knowledge, or generating supporting images."
3
+ description: "Deep research on the web, knowledge management, and writing structured summaries with citations from multiple sources. Delegate when the operator wants you to research a topic, read web pages, combine findings into a summary, or reorganise stored knowledge."
4
4
  summary: "Researches topics online, manages your knowledge graph, and produces supporting visuals."
5
5
  model: claude-opus-4-7
6
6
  tools: WebSearch, WebFetch, Skill, mcp__memory__memory-search, mcp__memory__memory-write, mcp__memory__memory-reindex, mcp__replicate__image-generate, mcp__plugin_playwright_playwright__browser_navigate, mcp__plugin_playwright_playwright__browser_snapshot, mcp__plugin_playwright_playwright__browser_evaluate
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: typed-edge-classifier
3
- description: "Typed-edge proposer for prose-bearing nodes written since `sinceIso`. Reads `:Message` / `:Page` / `:Meeting` / `:KnowledgeDocument` / `:Idea` / `:Note` / `:Post` / `:Report` bodies, proposes typed edges (`:MENTIONS` to named entities, `:COMMITS_TO` to tasks, `:DECIDED` to ideas, etc.) against the closed allowlist in `platform/plugins/memory/mcp/src/lib/typed-edge-schema.ts`, validates each proposal against the schema, and writes accepted edges via `memory-write`. Replaces the deleted server-side `runTypedEdgePass` Haiku call (Task 424). Dispatched by admin when the session-retrospective skill asks for the typed-edge pass."
3
+ description: "Read recently-written prose nodes (messages, pages, meetings, knowledge documents) and write typed edges from them to entities the prose names, from a closed allowlist. Delegate when the operator asks for a typed-edge pass over recent prose."
4
4
  summary: "Reads recently-written prose nodes and writes typed edges from a closed allowlist."
5
5
  model: claude-haiku-4-5-20251001
6
6
  tools: Read, mcp__plugin_memory_memory__memory-search, mcp__plugin_memory_memory__memory-write
@@ -0,0 +1 @@
1
+ @font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/cormorant-cyrillic-ext-300-normal-BXl3lXsi.woff2)format("woff2"),url(/assets/cormorant-cyrillic-ext-300-normal-DmxSOTe3.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/cormorant-cyrillic-300-normal-DFUoTmrg.woff2)format("woff2"),url(/assets/cormorant-cyrillic-300-normal-CzPHYadL.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/cormorant-vietnamese-300-normal-BVqIp_mg.woff2)format("woff2"),url(/assets/cormorant-vietnamese-300-normal-CEMS9Pw-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/cormorant-latin-ext-300-normal-De3D72RL.woff2)format("woff2"),url(/assets/cormorant-latin-ext-300-normal-CkiUx0UG.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/cormorant-latin-300-normal-CJ5dfen0.woff2)format("woff2"),url(/assets/cormorant-latin-300-normal-DQZObO_3.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-cyrillic-ext-400-normal-BlcaxZtM.woff2)format("woff2"),url(/assets/cormorant-cyrillic-ext-400-normal-Bgrpe4p1.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-cyrillic-400-normal-C8QS47vb.woff2)format("woff2"),url(/assets/cormorant-cyrillic-400-normal-D3EsxgFc.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-vietnamese-400-normal-C-RiYxEf.woff2)format("woff2"),url(/assets/cormorant-vietnamese-400-normal-DmUuA7Y2.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-latin-ext-400-normal-DuQ88yz3.woff2)format("woff2"),url(/assets/cormorant-latin-ext-400-normal-DuXFa1Dr.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-latin-400-normal-BGH8Vunh.woff2)format("woff2"),url(/assets/cormorant-latin-400-normal-C3_-2Ua-.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-cyrillic-ext-500-normal-pZw22qtS.woff2)format("woff2"),url(/assets/cormorant-cyrillic-ext-500-normal-CdQuyvtc.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-cyrillic-500-normal-BLlg2W5x.woff2)format("woff2"),url(/assets/cormorant-cyrillic-500-normal-B7dJQtg-.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-vietnamese-500-normal-DsPuwQHi.woff2)format("woff2"),url(/assets/cormorant-vietnamese-500-normal-tGBW_mI7.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-latin-ext-500-normal-AH9qog1s.woff2)format("woff2"),url(/assets/cormorant-latin-ext-500-normal-DAuUCO41.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-latin-500-normal-EBdSCOD3.woff2)format("woff2"),url(/assets/cormorant-latin-500-normal-Dj3SQ6fR.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-global-neutral-0:#fff;--color-global-neutral-50:#fafaf7;--color-global-neutral-100:#f2efe9;--color-global-neutral-200:#e6e2da;--color-global-neutral-400:#b8b3a8;--color-global-neutral-500:#8a857a;--color-global-neutral-700:#3a3936;--color-global-neutral-900:#1a1a18;--color-global-brand-claudeOrange:#d97757;--color-global-accent-blue-100:#e7edfb;--color-global-accent-blue-500:#2563eb;--color-global-semantic-danger-100:#fee2e2;--color-global-semantic-danger-500:#b91c1c;--color-alias-surface-canvas:#fff;--color-alias-surface-chrome:#fafaf7;--color-alias-surface-raisedSubtle:#f2efe9;--color-alias-text-primary:#1a1a18;--color-alias-text-body:#3a3936;--color-alias-text-muted:#8a857a;--color-alias-text-disabled:#b8b3a8;--color-alias-text-link:#2563eb;--color-alias-text-onAccent:#2563eb;--color-alias-border-subtle:#e6e2da;--color-alias-action-primaryBg:#e7edfb;--color-alias-action-primaryFg:#2563eb;--color-alias-action-dangerBg:#b91c1c;--color-alias-action-dangerFg:#fff;--color-alias-action-dangerWash:#fee2e2;--color-alias-status-activity:#d97757;--color-component-sidebar-background:#fafaf7;--color-component-sidebar-itemRest:transparent;--color-component-sidebar-itemSelected:#f2efe9;--color-component-sidebar-itemText:#3a3936;--color-component-sidebar-sectionLabel:#8a857a;--color-component-tab-rest:transparent;--color-component-tab-active:#f2efe9;--color-component-codeInline-text:#2563eb;--color-component-taskItem-completedText:#b8b3a8;--color-component-taskItem-pendingText:#3a3936;--color-component-input-background:#fff;--color-component-input-border:#e6e2da;--color-component-input-placeholder:#8a857a;--typography-fontFamily-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--typography-fontFamily-mono:"JetBrains Mono", "SF Mono", ui-monospace, monospace;--typography-fontSize-xs:11px;--typography-fontSize-sm:13px;--typography-fontSize-base:15px;--typography-fontSize-lg:17px;--typography-fontWeight-regular:400;--typography-fontWeight-medium:500;--typography-fontWeight-semibold:600;--typography-lineHeight-tight:1.3;--typography-lineHeight-normal:1.5;--typography-lineHeight-relaxed:1.7;--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-pill:9999px;--borderWidth-hairline:1px;--layout-sidebarWidth:240px;--elevation-0:none;--icon-size-sm:14px;--icon-size-md:16px;--icon-size-lg:20px;--icon-strokeWidth-default:1.75}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fafaf8;--bg-chat:#fff;--surface:#f5f2ed;--surface-cool:#eef1f4;--text:#1a1a1a;--text-secondary:#6b6b6b;--text-tertiary:#9a9a9a;--border:#0000000f;--border-strong:#0000001a;--sage:#7c8c72;--sage-hover:#6a7a62;--sage-deep:#5a6b52;--sage-subtle:#7c8c7214;--sage-glow:#7c8c7226;--maxy-bubble:#f5f2ed;--visitor-bubble:#e8ecf0;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 4px 16px #00000014;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-full:9999px;--danger:#b44;--danger-hover:#c44;--accent:#e8e8e8;--surface-hover:#ffffff0d;--hover:#0000000a;--copper:#b87333;--copper-deep:#8e5520;--copper-wash:#b873331a;--font-display:"Cormorant", Georgia, serif;--font-body:"DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--text);background:var(--bg);font-size:16px;line-height:1.6;overflow-x:hidden}a{color:var(--sage);text-decoration:none;transition:color .2s}a:hover{color:var(--sage-hover)}.chat-page{flex-direction:column;height:100dvh;display:flex}.chat-page:not(.admin-page){max-width:800px;margin:0 auto;padding:0 20px}.chat-content{flex-direction:column;flex:1;width:100%;max-width:800px;min-height:0;margin:0 auto;padding:0 20px;display:flex}.chat-header{text-align:center;flex-shrink:0;padding:48px 0 24px;position:relative}.chat-header-actions{gap:4px;display:flex;position:absolute;top:16px;right:16px}.chat-header-action{color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:6px;transition:color .15s,background .15s}.chat-header-action:hover:not(:disabled){color:var(--text);background:var(--hover)}.chat-header-action:disabled{opacity:.35;cursor:default}.chat-logo{object-fit:contain;width:auto;height:64px;margin-bottom:16px}.chat-logo--circle{object-fit:cover;border-radius:50%;width:64px;height:64px}.chat-logo--rounded{object-fit:cover;border-radius:12px}.chat-tagline{font-family:var(--font-display);color:var(--text);letter-spacing:-.01em;margin-bottom:12px;font-size:clamp(28px,5vw,42px);font-weight:300;line-height:1.2}.chat-intro{color:var(--text-secondary);margin:0 0 12px;font-size:15px;line-height:1.6}.chat-ai-indicator{color:var(--text-secondary);opacity:.7;margin:0;font-size:11px;line-height:1.3}.chat-trust{color:var(--text-tertiary);justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.chat-trust-sep{opacity:.4}.chat-messages-wrap{flex:1;min-height:0;position:relative}@keyframes scrollBounce{0%,to{transform:translate(-50%)translateY(0)}40%{transform:translate(-50%)translateY(4px)}}.scroll-to-bottom{background:var(--bg);border:1px solid var(--border-strong);cursor:pointer;width:32px;height:32px;color:var(--text-secondary);opacity:.5;z-index:10;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s,color .15s,box-shadow .15s;animation:1.4s ease-in-out infinite scrollBounce;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.scroll-to-bottom:hover{color:var(--sage);opacity:1;animation:none;box-shadow:0 2px 8px #00000014}.chat-messages{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:12px;height:100%;padding:16px 0;display:flex;overflow-y:auto}.chat-messages::-webkit-scrollbar{width:4px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.session-error{text-align:center;color:var(--text-secondary);flex:1;justify-content:center;align-items:center;padding:2rem;font-size:.95rem;line-height:1.5;display:flex}.idle-tips{flex-direction:column;justify-content:center;align-items:center;gap:16px;height:100%;padding:2rem;animation:.3s ease-out idle-tips-in;display:flex}@keyframes idle-tips-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.idle-tips-hint{color:var(--text-secondary);font-size:.95rem}.idle-tips-chips{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.idle-tip-chip{font-family:var(--font-body);border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;background:0 0;padding:8px 16px;font-size:.85rem;transition:border-color .15s,color .15s,background .15s}.idle-tip-chip:hover,.idle-tip-chip:focus-visible{border-color:var(--sage);color:var(--sage);background:var(--sage-subtle)}.message-historical{opacity:.6}.resume-divider{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:12px;padding:12px 16px;font-size:.75rem;display:flex}.resume-divider:before,.resume-divider:after{content:"";background:var(--border-default);flex:1;height:1px}body[data-drag-popout-active] .chat-messages{outline:2px dashed var(--sage);outline-offset:-2px;border-radius:8px;transition:outline-color .15s}.message{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;animation:.3s ease-out messageIn;display:flex;position:relative}.admin-page .message,.chat-page .message{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.message.maxy{flex-direction:column;align-items:flex-start}.message.visitor{justify-content:flex-end}.bubble{border-radius:var(--radius-lg);word-wrap:break-word;white-space:pre-wrap;max-width:85%;padding:12px 16px;font-size:15px;line-height:1.55;position:relative}.maxy-content-wrap{width:100%;min-width:0;position:relative}.session-boundary{opacity:.55;align-items:center;gap:8px;margin:0 0 10px;display:flex}.session-boundary:before,.session-boundary:after{content:"";background:var(--text);opacity:.25;flex:1;height:1px}.session-boundary-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text);opacity:.7;white-space:nowrap;font-size:10px}.message.maxy .bubble{background:var(--maxy-bubble);color:var(--text);border-bottom-left-radius:var(--radius-sm)}.message.visitor .bubble{background:var(--visitor-bubble);color:var(--text);border-bottom-right-radius:var(--radius-sm)}.bubble-sender{color:var(--sage);opacity:.85;margin-bottom:2px;font-size:11px;font-weight:600;display:block}.bubble-content{position:relative}.bubble-content.clamped{max-height:4.65em;overflow:hidden}.bubble-content.clamped.overflowing:after{content:"";background:linear-gradient(to bottom, transparent, var(--visitor-bubble));pointer-events:none;height:1.55em;position:absolute;bottom:0;left:0;right:0}.bubble-expand{justify-content:center;padding-top:4px;display:flex}.bubble-expand .btn{transition:background .15s,opacity .15s,color .15s,transform .2s}.bubble-expand .btn.expanded{transform:rotate(180deg)}.typing-indicator{align-items:center;gap:4px;padding:14px 18px;display:flex}.typing-dot{background:var(--text-tertiary);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typingPulse}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}.chat-suggestions{flex-wrap:wrap;gap:8px;padding:4px 0 8px;animation:.3s ease-out messageIn;display:flex}.chat-input-area{flex-shrink:0;padding:16px 0 24px}.chat-actions{align-items:center;gap:16px;padding:8px 4px 0;display:flex;position:relative}.chat-action{font-family:var(--font-body);color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:12px;transition:color .15s;display:inline-flex}.chat-action:hover{color:var(--text-secondary)}.chat-action-icon{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .15s,background-color .15s;display:inline-flex}.chat-action-icon:hover:not(:disabled){color:var(--text-secondary);background:var(--hover)}.chat-action-icon:disabled{opacity:.4;cursor:not-allowed}.burger-trigger{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;align-items:center;padding:2px;transition:color .15s;display:flex}.burger-trigger:hover{color:var(--text-secondary)}.actions-menu-items{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm,6px);opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;gap:2px;min-width:170px;padding:4px 0;transition:opacity .15s,transform .15s,visibility .15s;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;transform:translateY(4px);box-shadow:0 2px 8px #00000026}.actions-menu-items.actions-menu-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.actions-menu-items .chat-action{width:100%;padding:8px 12px;font-size:13px}.actions-menu-items .chat-action:hover{background:var(--hover)}.actions-menu-items .action-label{display:inline}.chat-resize-handle{cursor:row-resize;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;height:12px;display:flex}.chat-resize-handle-bar{background:var(--border-strong);opacity:0;border-radius:2px;width:36px;height:3px;transition:opacity .15s}.chat-resize-handle:hover .chat-resize-handle-bar{opacity:1}.chat-form{background:var(--bg-chat);border:1px solid var(--border-strong);border-radius:var(--radius-full);align-items:end;gap:8px;padding:6px 6px 6px 20px;transition:border-color .2s,box-shadow .2s,border-radius .2s;display:flex}.chat-form[data-expanded=true]{border-radius:var(--radius-lg)}.chat-form>.btn--icon{margin:10px 0}.chat-form:focus-within{box-shadow:0 0 0 3px var(--sage-subtle);border-color:#7c8c724d}.chat-input{min-width:0;font-family:var(--font-body);color:var(--text);resize:none;word-wrap:break-word;background:0 0;border:none;outline:none;flex:1;padding-block:8px;font-size:15px;line-height:1.4;overflow-y:hidden}.chat-input::placeholder{color:var(--text-tertiary)}.chat-footer{text-align:center;flex-shrink:0;padding:0 0 20px}.chat-footer a{color:var(--text-tertiary);font-size:13px;transition:color .2s}.chat-footer a:hover{color:var(--sage)}.auth-retry-link{font-family:var(--font-body);color:var(--text-tertiary);margin-top:12px;font-size:13px;text-decoration:none}.auth-retry-link:hover{color:var(--sage)}.gate-wrap{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;padding:0 20px 40px;display:flex}.gate-card{text-align:center;width:100%;max-width:400px}.gate-title{font-family:var(--font-display);color:var(--text);letter-spacing:-.01em;margin-bottom:8px;font-size:clamp(22px,4vw,30px);font-weight:300;line-height:1.3}.gate-subtitle{color:var(--text-secondary);margin-bottom:24px;font-size:15px;line-height:1.5}.gate-expiry-badge{color:var(--sage);background:var(--sage-subtle);border-radius:var(--radius-full);margin-bottom:20px;padding:4px 10px;font-size:12px;display:inline-block}.gate-form{text-align:left}.gate-field{margin-bottom:14px}.gate-field label{color:var(--text-secondary);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.gate-field input{border:1px solid var(--border-strong);width:100%;font-family:var(--font-body);color:var(--text);background:var(--bg);border-radius:8px;outline:none;padding:10px 12px;font-size:15px;transition:border-color .15s,box-shadow .15s}.gate-field input:focus{border-color:var(--sage);box-shadow:0 0 0 2px var(--sage-glow)}.gate-field input::placeholder{color:var(--text-tertiary)}.gate-pw-row{position:relative}.gate-pw-toggle{position:absolute;top:0;right:0}.gate-strength{color:var(--text-tertiary);flex-direction:column;gap:4px;margin-top:8px;font-size:12px;display:flex}.gate-strength-item{align-items:center;gap:6px;display:flex}.gate-strength-item.met{color:var(--sage)}.gate-submit{margin-top:20px}.gate-submit .btn{border-radius:10px;width:100%;padding:12px;font-size:15px;font-weight:500}.gate-error{color:var(--danger);text-align:center;margin-top:8px;font-size:13px}.gate-success{color:var(--sage);text-align:center;margin-top:8px;font-size:13px}.gate-link{color:var(--text-tertiary);cursor:pointer;font-size:13px;font-family:var(--font-body);text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline;display:inline}.gate-link:hover{color:var(--sage)}.gate-hint{color:var(--text-tertiary);text-align:center;margin-top:16px;font-size:13px}.gate-actions{text-align:center;margin-top:16px}.gate-actions .btn{min-width:200px}.gate-icon{margin-bottom:12px;font-size:36px}.access-gate{justify-content:center;align-items:center;min-height:60vh;padding:24px;display:flex}.access-gate-message,.access-gate-form{text-align:center;flex-direction:column;gap:12px;width:100%;max-width:420px;display:flex}.access-gate-form{text-align:left}.access-gate-form label{color:var(--text-secondary);font-size:14px}.access-gate-form input[type=email]{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text-primary);border-radius:8px;padding:10px 12px;font-size:16px}.access-gate-form input[type=email]:focus{border-color:var(--sage);box-shadow:0 0 0 2px var(--sage-glow);outline:none}.access-gate-error{color:var(--danger,#c0392b);margin:0;font-size:14px}.gate-otp-field{justify-content:center;align-items:center;gap:10px;margin:20px 0;display:flex}.gate-otp-field .pin-box{border-radius:8px;width:42px;height:48px;font-size:20px}.gate-otp-field .pin-box:focus{border-color:var(--sage);box-shadow:0 0 0 2px var(--sage-glow)}.gate-otp-field .pin-box-filled{border-color:var(--border-strong)}.gate-resend{text-align:center;margin-top:4px}.gate-divider{color:var(--text-tertiary);align-items:center;gap:12px;margin:16px 0;font-size:13px;display:flex}.gate-divider:before,.gate-divider:after{content:"";background:var(--border);flex:1;height:1px}.gate-loading{color:var(--text-tertiary);justify-content:center;align-items:center;gap:8px;padding:20px 0;font-size:14px;display:flex}.gate-loading .spinner{border:2px solid var(--border);border-top-color:var(--sage);border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-page .chat-header{text-align:left;border-bottom:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 24px;display:grid}.admin-page .chat-logo{flex-shrink:0;width:36px;height:36px;margin-bottom:0}.admin-page .chat-header-label{justify-self:center;align-items:center;gap:8px;min-width:0;display:inline-flex}.admin-page .chat-sidebar-toggle{width:36px;height:36px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.admin-page .chat-sidebar-toggle:hover{color:var(--sage)}.chat-burger-wrap{flex:none;position:relative}.chat-burger{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;align-items:center;padding:6px;transition:color .15s;animation:2.4s ease-in-out 3 iconHeartbeat;display:flex}.chat-burger:hover{color:var(--sage);animation:none}.chat-menu{background:var(--bg);border:1px solid var(--border);z-index:100;border-radius:8px;min-width:160px;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 4px 12px #00000014}.chat-menu-item{width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;gap:8px;padding:9px 12px;font-size:13px;text-decoration:none;transition:background .12s,color .12s;display:flex}.chat-menu-item:hover{background:var(--surface);color:var(--text)}.chat-menu-divider{background:var(--border);height:1px;margin:2px 0}.chat-menu-agents{border-top:1px solid var(--border);max-height:264px;padding:4px 0;overflow-y:auto}.chat-menu .chat-menu-agent-item{align-items:flex-start;padding-left:20px}.chat-menu-agent-item .agent-status-dot{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-top:6px}.chat-menu-agent-item .agent-status-dot.active{background:#22c55e}.chat-menu-agent-item .agent-text{flex-direction:column;flex:1;min-width:0;display:flex}.chat-menu-agent-item .agent-display-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-menu-agent-item .agent-slug{opacity:.5;font-size:11px}.chat-menu-agent-empty,.chat-menu-agent-error{color:var(--text-tertiary);padding:9px 20px;font-size:12px;display:block}.chat-menu-agent-error{color:var(--danger)}.agent-actions{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;display:flex}.agent-action-btn{width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;text-decoration:none;display:flex}.agent-action-btn:hover{background:var(--surface);color:var(--text)}.agent-delete-btn:hover,.agent-confirm-yes{color:var(--danger)}.agent-confirm-yes:hover{background:var(--danger);color:#fff}.agent-confirm-no:hover{color:var(--text)}.chat-menu-version{width:100%;color:var(--text-tertiary);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;gap:8px;padding:9px 12px;font-size:12px;transition:background .12s,color .12s;display:flex}.chat-menu-version:hover{background:var(--surface);color:var(--text-secondary)}.chat-menu-version-passive{cursor:default}.chat-menu-version-passive:hover{color:var(--text-tertiary);background:0 0}.version-installed{font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex}.version-update-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.version-uptodate-dot{background:#22c55e;border-radius:50%;flex-shrink:0;width:6px;height:6px}.claude-info-modal.update-modal{width:720px;min-width:300px;max-width:min(720px,100% - 28px)}.update-modal-body{padding:12px 14px}.update-modal-versions{margin-bottom:12px}.update-modal-versions .claude-info-row{padding:8px 0;font-size:11.5px}.update-modal-versions .claude-info-label{font-weight:500}.update-modal-versions .claude-info-value{font-size:11.5px}.update-version-new{color:var(--sage);font-weight:500}.update-modal-btn{background:var(--sage);color:#fff;letter-spacing:.01em;cursor:pointer;border:none;border-radius:6px;width:100%;margin:14px 0 0;padding:10px 0;font-size:12px;font-weight:600;transition:background .12s,box-shadow .12s,transform .12s;box-shadow:0 1px 2px #7c8c7259,inset 0 0 0 1px #7c8c7226}.update-modal-btn:hover{background:var(--sage-hover);box-shadow:0 2px 4px #7c8c7273,inset 0 0 0 1px #7c8c7240}.update-modal-btn:active{transform:translateY(1px);box-shadow:0 1px 1px #7c8c724d}.update-modal-btn[disabled]{cursor:not-allowed;background:var(--surface);color:var(--text-tertiary);box-shadow:none;font-weight:500}.update-modal-btn[disabled]:hover{background:var(--surface);box-shadow:none}.update-modal-launch-error{color:var(--danger);word-break:break-word;background:#ef444414;border:1px solid #ef444440;border-radius:6px;margin:0 0 10px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11.5px}.update-modal-result{align-items:center;gap:8px;padding:12px 0;font-size:12px;display:flex}.update-success-icon{color:var(--sage);flex-shrink:0}.update-error-icon{color:var(--danger);flex-shrink:0}.admin-page .chat-tagline{-webkit-line-clamp:2;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;margin:0;font-size:16px;line-height:1.2;display:-webkit-box;overflow:hidden}.admin-page .chat-intro{margin:0;font-size:12px;line-height:1.3}.admin-activity{flex-direction:column;gap:6px;max-width:100%;display:flex}.spin{animation:1s linear infinite spin}.tl-spinner{animation:1.2s linear infinite spin}.star-loader{color:var(--text-tertiary)}.star-frame-0{opacity:.5;transform:scale(.85)}.star-frame-1{opacity:.8;transform:scale(1)}.star-frame-2{opacity:1;transform:scale(1.15)}.star-frame-3{opacity:.9;transform:scale(1.05)}.tl-loading{color:var(--text-tertiary);align-items:center;gap:6px;padding:2px 0 4px;display:flex}.tl-elapsed{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.tl-thinking-typewriter{min-width:8.5em;font-size:12px;display:inline-block}.tl-steps{flex-direction:column;display:flex}.tl-step{align-items:stretch;gap:0;display:flex;position:relative}.tl-col{flex-direction:column;flex-shrink:0;align-items:center;width:20px;display:flex}.tl-line{background:var(--border-strong);flex-shrink:0;width:1px;min-height:6px}.tl-line-grow{flex:1}.tl-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.tl-icon.tl-pending{color:var(--sage)}.tl-icon.tl-done{color:var(--text-tertiary)}.tl-icon.tl-success{color:#4d8c63}.tl-icon.tl-error{color:#c44}.tl-icon.tl-dim{color:#c87533;opacity:.8}.tl-body{flex:1;min-width:0;padding:0 0 0 6px}.tl-row{align-items:center;gap:6px;min-height:22px;padding:2px 0;display:flex}.tl-summary{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;line-height:1.4;overflow:hidden}.tl-thinking-label{color:var(--text-tertiary);font-style:italic}.tl-step-tokens{color:var(--text-tertiary);font-variant-numeric:tabular-nums;opacity:.7;flex-shrink:0;align-items:center;gap:2px;font-size:11px;display:inline-flex}.tl-step-elapsed{color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}.tl-chevron{color:var(--text-tertiary);flex-shrink:0;align-items:center;display:flex}.tl-summary-row{cursor:pointer}.tl-summary-row .tl-summary{color:var(--text-tertiary);font-size:11px}.tl-summary-row .tl-icon{color:var(--text-tertiary)}.tl-detail{white-space:pre-wrap;word-break:break-word;color:var(--text-secondary);background:#00000008;border-radius:4px;margin:2px 0 6px;padding:7px 9px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:11.5px;line-height:1.5;overflow-x:auto}.tl-row.tl-row-top{align-items:flex-start}.tl-thinking-col{flex-direction:column;flex:1;min-width:0;display:flex}.tl-thinking-body{color:var(--text-tertiary);word-break:break-word;border:1px solid #7c8c7240;border-radius:6px;max-height:90px;margin:0 0 4px;padding:4px 8px;font-size:12px;font-style:italic;line-height:1.5;overflow-y:auto}.tl-status{color:var(--text-tertiary);text-align:center;padding:2px 0 2px 4px;font-size:11px;font-style:italic}.tl-script-stream{color:var(--text-secondary);flex-direction:column;gap:4px;padding:2px 0 2px 4px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:11px;line-height:1.5;display:flex}.tl-script-stream-line{overflow-wrap:anywhere;align-items:baseline;gap:6px;display:flex}.tl-script-stream-source{color:var(--text-tertiary);letter-spacing:.02em;opacity:.85;flex-shrink:0;font-size:10px}.tl-script-stream-content{white-space:pre-wrap;flex:auto}.tl-post-components{flex-direction:column;gap:12px;margin-top:12px;display:flex}.tl-footer{color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0 2px;font-size:11px;display:flex}.tl-footer-sep{opacity:.5}.tl-footer-icon-stat{align-items:center;gap:3px;display:inline-flex}.tl-footer-est{opacity:.6}.tl-ctx-pct{font-variant-numeric:tabular-nums}.tl-ctx-pct.tl-ctx-mid{color:var(--warning,#b8860b)}.tl-ctx-pct.tl-ctx-high{color:var(--error,#c33)}.tl-ctx-compacted{opacity:.45;font-style:italic}.tl-footer-status{align-items:center;gap:4px;margin-left:6px;display:inline-flex}.expand-toggle{cursor:pointer;-webkit-backdrop-filter:blur(8px);border:1px solid var(--border-strong);z-index:10;background:#fafaf8bf;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:background .15s;animation:2.4s ease-in-out .4s 3 iconHeartbeat;display:flex;position:absolute;bottom:12px;right:12px;box-shadow:0 2px 8px #00000014}.expand-toggle-default{color:#c87533}.expand-toggle-default:hover{color:#a05e22;background:#c8753314;animation:none}.expand-toggle-all{color:#4a8fc4}.expand-toggle-all:hover{color:#2e6fa0;background:#4a8fc414;animation:none}.expand-toggle-off{color:var(--text-tertiary)}.expand-toggle-off:hover{color:var(--text-secondary);background:var(--surface);animation:none}.select-toggle{color:var(--text-tertiary);animation:none;right:52px}.select-toggle:hover{color:var(--text-secondary);background:var(--surface)}.markdown-message{color:var(--text);word-wrap:break-word;background:var(--maxy-bubble);border-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-sm);max-width:85%;padding:12px 16px;font-size:15px;line-height:1.65;position:relative}.bubble>.markdown-message{white-space:normal;background:0 0;border-radius:0;max-width:none;padding:0}.markdown-message .md-p{margin:0 0 10px}.markdown-message .md-p:last-child{margin-bottom:0}.markdown-message .md-heading{font-family:var(--font-body);color:var(--text);margin:14px 0 5px;font-weight:500;line-height:1.3}.markdown-message h1.md-heading{font-size:17px}.markdown-message h2.md-heading{font-size:15.5px}.markdown-message h3.md-heading{font-size:14.5px}.markdown-message .md-pre{border:1px solid var(--border);background:#0000000a;border-radius:5px;margin:8px 0;padding:10px 12px;overflow-x:auto}.markdown-message .md-pre code{white-space:pre;color:var(--text-secondary);background:0 0;border:none;border-radius:0;padding:0;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:12px;line-height:1.5;display:block}.markdown-message .md-code{background:#0000000f;border-radius:3px;padding:1px 5px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:13px}.markdown-message .md-list{margin:4px 0 10px;padding-left:20px}.markdown-message .md-list-ordered{list-style-type:decimal}.markdown-message .md-list-item{margin-bottom:3px;font-size:15px;line-height:1.6}.markdown-message .md-list-item .md-p{margin:0}.markdown-message .md-hr{border:none;border-top:1px solid var(--border-strong);margin:12px 0}.markdown-message .md-strong{font-weight:500}.markdown-message .md-link{color:var(--sage);text-underline-offset:2px;-webkit-text-decoration:underline #7c8c7266;text-decoration:underline #7c8c7266}.markdown-message .md-img{object-fit:contain;cursor:pointer;border-radius:6px;max-width:100%;max-height:400px;margin:8px 0;display:block}.markdown-message .md-video{border-radius:6px;max-width:100%;margin:8px 0;display:block}.markdown-message .md-video-iframe{border-radius:6px;width:100%;margin:8px 0;padding-bottom:56.25%;position:relative;overflow:hidden}.markdown-message .md-video-iframe iframe{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.markdown-message .md-mermaid{margin:8px 0;overflow-x:auto}.md-device-url{font-family:var(--font-body);flex-direction:column;gap:8px;margin:10px 0;display:flex}.md-device-url-button{border:1px solid var(--sage);background:var(--sage-subtle);color:var(--sage);border-radius:var(--radius-sm);font-family:var(--font-body);cursor:pointer;text-align:left;align-items:center;gap:8px;width:fit-content;max-width:100%;padding:10px 14px;font-size:14px;font-weight:500;line-height:1.2;transition:background .12s,transform .12s;display:inline-flex}.md-device-url-button:hover:not(:disabled){background:var(--sage-glow)}.md-device-url-button:active:not(:disabled){transform:translateY(1px)}.md-device-url-button:disabled{opacity:.65;cursor:progress}.md-device-url-icon{color:var(--sage);flex-shrink:0}.md-device-url-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.md-device-url-fallback{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-body);color:var(--text);flex-direction:column;gap:8px;padding:10px 12px;font-size:13px;display:flex}.md-device-url-fallback-message{align-items:flex-start;gap:8px;line-height:1.4;display:flex}.md-device-url-fallback-url{background:var(--bg);border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;display:flex;overflow-x:auto}.md-device-url-fallback-url code{white-space:nowrap;flex:1;overflow-x:auto}.md-device-url-fallback-copy{border:1px solid var(--border-strong);background:var(--bg-chat);font-family:var(--font-body);color:var(--text);cursor:pointer;border-radius:4px;flex-shrink:0;align-items:center;gap:4px;padding:4px 8px;font-size:12px;display:inline-flex}.md-device-url-fallback-copy:hover{background:var(--surface)}.md-device-url-fallback-copy-failed{color:var(--danger);padding:2px 2px 0;font-size:11px}.md-device-url-malformed{border-left:3px solid var(--danger)}.md-device-url-malformed-label{color:var(--danger);align-items:center;gap:4px;margin-bottom:4px;font-size:11px;display:inline-flex}.markdown-message .md-mermaid svg{max-width:100%;height:auto}.markdown-message .md-mermaid-error .md-mermaid-error-label{color:var(--text-error,#c33);margin-bottom:4px;font-size:12px}.markdown-message .md-table{border-collapse:collapse;width:100%;margin:10px 0;font-size:13px}.markdown-message .md-th,.markdown-message .md-td{border:1px solid var(--border-strong);text-align:left;padding:6px 10px}.markdown-message .md-thead .md-th{background:var(--sage-subtle);color:var(--text-secondary);font-size:12px;font-weight:600}.markdown-message .md-tr:nth-child(2n) td{background:#00000005}.message-meta{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-top:6px;font-size:11px}@keyframes iconHeartbeat{0%,to{opacity:.55}50%{opacity:1}}@keyframes iconHeartbeatSubtle{0%,to{opacity:.7}50%{opacity:1}}.powered-by{color:var(--text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;opacity:.7;align-items:center;gap:5px;margin-left:auto;font-size:10px;transition:opacity .15s;animation:2.4s ease-in-out .8s 3 iconHeartbeatSubtle;display:flex}.powered-by:hover{opacity:1;animation:none}.powered-by-icon{object-fit:contain;width:14px;height:14px}.claude-info-overlay{z-index:200;background:#00000073;justify-content:flex-end;align-items:flex-end;padding:0 0 56px;display:flex;position:fixed;inset:0}.claude-info-modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:300px;max-width:calc(100% - 28px);margin-right:max(14px,50vw - 386px);overflow:hidden;box-shadow:0 8px 32px #0006}.claude-info-header{border-bottom:1px solid var(--border);color:var(--text-secondary);align-items:center;gap:8px;padding:12px 14px;font-size:12px;font-weight:500;display:flex}.claude-info-header img{object-fit:contain;width:14px;height:14px}.claude-info-close{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:2px 4px;font-size:11px;line-height:1}.claude-info-close:hover{color:var(--text)}.claude-info-section{border-bottom:1px solid var(--border);padding:8px 0}.claude-info-section:last-child{border-bottom:none}.claude-info-row{justify-content:space-between;align-items:baseline;gap:12px;padding:4px 14px;font-size:11px;display:flex}.claude-info-label{color:var(--text-tertiary);flex-shrink:0}.claude-info-value{color:var(--text-secondary);font-family:var(--font-mono,monospace);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.claude-info-toggle{cursor:pointer;transition:color .15s}.claude-info-toggle:hover,.claude-info-toggle:focus-visible{color:var(--text);text-decoration:underline}.claude-info-icon{object-fit:contain;width:14px;height:14px}.conversations-modal{flex-direction:column;width:min(480px,100vw - 28px);max-height:calc(100dvh - 72px);display:flex}.conversations-list{flex:1;overflow-y:auto}.conversations-empty{color:var(--text-tertiary);justify-content:center;align-items:center;gap:6px;padding:24px 14px;font-size:12px;display:flex}.conversations-error{color:var(--error,#e55)}.conversations-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:8px 14px;transition:background .12s;display:flex}.conversations-row:last-child{border-bottom:none}.conversations-row:hover{background:var(--surface)}.conversations-row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.conversations-row-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.conversations-row-meta{align-items:center;gap:6px;display:flex}.conversations-row-id{color:var(--text-tertiary);opacity:.7;font-family:monospace;font-size:10px}button.conversations-row-id{cursor:pointer;background:0 0;border:none;align-items:center;gap:3px;margin:0;padding:0;transition:opacity .12s,color .12s;display:inline-flex}button.conversations-row-id:hover{opacity:1;color:var(--text)}button.conversations-row-id.copied{opacity:1;color:var(--sage)}button.conversations-row-id.copy-failed{opacity:1;color:var(--error,#e55)}.claude-info-id-copy{cursor:pointer;color:var(--text);text-align:right;background:0 0;border:none;padding:0;font-family:monospace;font-size:10px}.claude-info-id-copy:hover{color:var(--sage)}.conversations-row-pre-flush{opacity:.92}.conversations-row-phase-badge{color:var(--warning,#d09a5d);border:1px solid var(--warning,#d09a5d);opacity:.8;vertical-align:middle;border-radius:4px;margin-left:8px;padding:1px 6px;font-family:monospace;font-size:10px;display:inline-block}.conversations-row-time{color:var(--text-tertiary);align-items:center;gap:4px;font-size:10px;display:flex}.conversations-row-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.conversations-action{width:28px;height:28px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .12s,color .12s;display:flex}.conversations-play:hover{background:var(--sage-faint,#88b0941f);color:var(--sage)}.conversations-rename:hover{background:var(--sage-faint,#88b0941f);color:var(--text)}.conversations-delete:hover{color:var(--error,#e55);background:#e555551a}.conversations-logs:hover{background:var(--sage-faint,#88b0941f);color:var(--text)}.conversations-logs-popover{z-index:1000;background:var(--bg,#fff);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:2px;min-width:140px;padding:4px;display:flex;position:fixed;box-shadow:0 4px 12px #00000026}.conversations-logs-popover-item{color:var(--text);border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;text-decoration:none;transition:background .12s;display:flex}.conversations-logs-popover-item:hover,.conversations-logs-popover-item:focus-visible{background:var(--surface);outline:none}.conversations-edit-loading{color:var(--text-tertiary);align-items:center;gap:6px;font-style:italic;display:flex}.conversations-edit-inline{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.conversations-edit-input{min-width:0;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:4px;outline:none;flex:1;padding:3px 8px;font-family:inherit;font-size:12px;transition:border-color .12s}.conversations-edit-input:focus{border-color:var(--sage,#88b094)}.conversations-edit-error{color:var(--error,#e55);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:11px;overflow:hidden}.conversations-confirm:not(:disabled):hover{background:var(--sage-faint,#88b0941f);color:var(--sage)}.conversations-confirm:disabled{opacity:.3;cursor:default}.conversations-cancel:hover{color:var(--error,#e55);background:#e555551a}.conversations-retry:hover{background:var(--sage-faint,#88b0941f);color:var(--text)}.pin-input-row{align-items:center;gap:8px;display:flex}.pin-field{border:1px solid var(--border-strong);background:var(--bg);border-radius:26px;flex:1;align-items:center;gap:8px;height:52px;padding:0 16px;transition:border-color .15s;display:flex}.pin-field:focus-within{border-color:var(--sage)}.connect-name-input{border:1px solid var(--border-strong);background:var(--bg);min-width:0;height:52px;font-family:var(--font-body);color:var(--text);border-radius:26px;outline:none;flex:1;padding:0 20px;font-size:16px;transition:border-color .15s}.connect-name-input:focus{border-color:var(--sage)}.connect-name-input::placeholder{color:var(--text-tertiary)}.pin-box{border:1.5px solid var(--border);text-align:center;width:28px;height:32px;color:var(--text-primary);caret-color:#0000;background:0 0;border-radius:6px;outline:none;flex-shrink:0;padding:0;font-size:10px;transition:border-color .15s,box-shadow .15s}.pin-box:focus{border-color:var(--sage);box-shadow:0 0 0 2px var(--sage-glow)}.pin-box-filled{border-color:var(--border-strong)}.pin-options{justify-content:space-between;align-items:center;display:flex}.admin-pin-error{color:#c44;white-space:pre-wrap;word-break:break-word;font-size:13px;font-family:var(--font-body);text-align:left;max-height:200px;overflow-y:auto}.account-picker-list{flex-direction:column;gap:8px;width:100%;max-width:340px;display:flex}.account-picker-card{background:var(--bg-secondary);border:1px solid var(--border);cursor:pointer;text-align:left;font-family:var(--font-body);border-radius:10px;align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.account-picker-card:hover:not(:disabled){border-color:var(--text-tertiary);background:var(--bg-hover)}.account-picker-card:disabled{opacity:.6;cursor:default}.account-picker-name{color:var(--text);flex:1;font-size:15px;font-weight:500}.account-picker-role{color:var(--text-tertiary);text-transform:capitalize;font-size:12px}.account-picker-spinner{color:var(--text-tertiary);animation:1s linear infinite spin}.connect-page{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:40px 20px;display:flex;position:relative}.connect-signout{color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:8px 12px;font-family:inherit;font-size:14px;transition:color .12s,background .12s;position:absolute;top:20px;right:24px}.connect-signout:hover{color:var(--text);background:var(--hover)}.connect-signout:focus-visible{outline:2px solid var(--sage);outline-offset:2px}.connect-content{flex-direction:column;align-items:center;gap:24px;width:100%;max-width:420px;display:flex}.connect-logos{align-items:center;gap:28px;display:flex}.connect-logo-wrap{flex-direction:column;align-items:center;gap:10px;display:flex}.connect-logo{object-fit:contain;width:88px;height:88px}.connect-logo--maxy{width:110px;height:110px;margin:-11px}.connect-logo-label{font-family:var(--font-body);color:var(--text-secondary);letter-spacing:.02em;font-size:13px}.connect-arrow{width:48px;height:24px;color:var(--text-tertiary);flex-shrink:0;margin-bottom:22px}.connect-title{font-family:var(--font-display);color:var(--text);text-align:center;letter-spacing:-.01em;font-size:clamp(22px,4vw,28px);font-weight:300;line-height:1.3}.connect-subtitle{color:var(--text-secondary);text-align:center;margin-top:-8px;font-size:15px;line-height:1.5}.connect-content .btn--primary{min-width:200px}.connect-pin-form{flex-direction:column;gap:8px;width:100%;max-width:300px;display:flex}@keyframes messageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes typingPulse{0%,60%,to{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}.attachment-strip{flex-wrap:wrap;gap:6px;padding:0 0 8px;display:flex}.attachment-chip{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-secondary);align-items:center;gap:5px;max-width:200px;padding:4px 8px;font-size:12px;display:inline-flex}.attachment-chip-thumb{object-fit:cover;border-radius:3px;flex-shrink:0;width:20px;height:20px}.attachment-chip-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.attachment-chip-remove{cursor:pointer;color:var(--text-tertiary);background:0 0;border:none;flex-shrink:0;align-items:center;padding:0 0 0 2px;font-size:13px;line-height:1;display:flex}.attachment-chip-remove:hover{color:var(--text)}.message-attachments{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.message-attachment-chip{border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;background:#0000000f;border:none;align-items:center;gap:4px;padding:3px 10px;font-family:inherit;font-size:11px;display:inline-flex}.message-attachment-chip:hover{color:var(--text);background:#0000001a}.message-attachment-chip.no-action{cursor:default}.message-attachment-chip.no-action:hover{color:var(--text-secondary);background:#0000000f}.chat-form.drag-over{outline:2px dashed var(--sage);outline-offset:6px;border-radius:var(--radius-sm)}.attachment-lightbox{z-index:1000;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.attachment-lightbox img{object-fit:contain;border-radius:var(--radius-md);max-width:90vw;max-height:90vh}.attachment-lightbox-close{color:#ffffffb3;cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px;line-height:1;position:absolute;top:20px;right:20px}.attachment-lightbox-close:hover{color:#fff}.attach-error{color:#e05252;margin:0 0 4px;padding:0 4px;font-size:12px}.voice-error{color:#e05252;align-items:center;gap:6px;margin:0 0 4px;padding:0 4px;font-size:12px;display:flex}.chat-form.voice-active{padding:6px 6px 6px 12px}.voice-recorder{align-items:center;gap:8px;width:100%;min-height:30px;display:flex}.voice-trash{border-radius:var(--radius-full);color:#e05252;cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:background .15s;display:flex}.voice-trash:hover{background:#e052521a}.voice-trash:disabled{opacity:.4;cursor:default}.voice-timer{font-variant-numeric:tabular-nums;color:var(--text-secondary);flex-shrink:0;min-width:32px;font-size:13px}.voice-waveform{flex:1;align-items:center;gap:2px;min-width:0;height:24px;display:flex}.voice-waveform-bar{background:#7c8c7299;border-radius:1px;flex:1;min-width:2px;max-width:4px;transition:height .1s ease-out}.voice-pause{border-radius:var(--radius-full);width:30px;height:30px;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s;display:flex}.voice-pause:hover{background:var(--sage-subtle)}.voice-pause:disabled{opacity:.4;cursor:default}@media (width<=640px){.chat-header{padding:32px 0 16px}.chat-page:not(.admin-page) .chat-header{text-align:left;border-bottom:1px solid var(--border);flex-direction:row;align-items:center;gap:12px;padding:12px 0;display:flex}.chat-page:not(.admin-page) .chat-logo{flex-shrink:0;width:40px;height:40px;margin-bottom:0}.chat-page:not(.admin-page) .chat-logo--circle{width:40px;height:40px}.chat-page:not(.admin-page) .chat-tagline{margin-bottom:0;font-size:16px;font-weight:400;line-height:1.3}.chat-page:not(.admin-page) .chat-intro{margin:0;font-size:12px;line-height:1.3}.chat-page:not(.admin-page) .chat-header-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.chat-page:not(.admin-page) .chat-header-actions{flex-shrink:0;margin-left:auto;position:static}.bubble,.public-components{max-width:90%}.graph-side-panel{width:auto;max-width:calc(100vw - 16px);max-height:calc(100vh - 80px);position:fixed;inset:auto 8px 8px;overflow:auto}.graph-back-desktop{display:none}.graph-back-mobile{display:inline-flex}.graph-home-desktop{display:none}.graph-home-mobile{display:inline-flex}.graph-toolbar{flex-wrap:wrap;gap:8px}.graph-search-input{flex:100%;max-width:none}.graph-filter-wrap{flex:none;margin-left:auto}.graph-filter-popover{min-width:0;max-width:calc(100vw - 16px)}}@media (hover:none) and (pointer:coarse){.graph-trash-drop-zone{display:none}}@media (pointer:coarse){.graph-search-limit input[type=range]::-webkit-slider-thumb{border-radius:12px;min-width:24px;min-height:24px}.graph-search-limit input[type=range]::-moz-range-thumb{border-radius:12px;min-width:24px;min-height:24px}}.message-queue-list{flex-direction:column;gap:2px;padding:0 0 6px;display:flex}.queued-message-row{color:var(--text-secondary);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm,4px);justify-content:space-between;align-items:center;padding:3px 8px;font-size:12px;display:flex}.queued-message-text{text-overflow:ellipsis;white-space:nowrap;max-width:calc(100% - 24px);overflow:hidden}.queued-message-row button{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:1rem;line-height:1}.queued-message-row button:hover{color:var(--text-primary,#fff)}.message-timestamp{color:var(--text-tertiary,#555);text-align:right;-webkit-user-select:none;user-select:none;margin-top:4px;font-size:10px;display:block}.tl-msg-timestamp{color:var(--text-tertiary,#555);text-align:right;-webkit-user-select:none;user-select:none;margin-top:4px;padding-right:2px;font-size:10px;display:block}.bubble-queued{padding-right:28px;position:relative}.queued-bubble-delete{cursor:pointer;color:var(--text-secondary,#888);background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1;position:absolute;top:6px;right:6px}.queued-bubble-delete:hover{color:var(--danger)}.maxy-checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:flex;position:relative}.maxy-checkbox--disabled{opacity:.4;pointer-events:none}.maxy-checkbox input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.maxy-checkbox__box{border:1px solid var(--border-strong);color:#0000;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;font-size:10px;transition:border-color .15s,color .15s;display:flex}.maxy-checkbox input:checked+.maxy-checkbox__box{border-color:var(--sage);color:var(--sage)}.maxy-checkbox__label{font-family:var(--font-body);color:var(--text-secondary);font-size:13px}.selection-overlay-band{background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(4px);border-left:1px solid var(--border-strong);z-index:10;pointer-events:none;width:64px;position:absolute;top:0;bottom:0;right:0}.tl-text-block{position:relative}.message-select-check,.tl-select-check{z-index:11;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.message.selected .bubble,.message.selected .admin-activity{background:#7c8c7214}.selection-bar{justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.selection-bar-left{align-items:center;gap:14px;display:flex}.selection-select-all{font-family:var(--font-body);color:var(--sage);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:14px;display:inline-flex}.selection-select-all:disabled{opacity:.4;cursor:default}.selection-cancel{font-family:var(--font-body);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;font-size:14px}.selection-count{font-family:var(--font-body);color:var(--text);font-size:14px;font-weight:500}.selection-copy-wrap{position:relative}.selection-copy{color:var(--sage);font-family:var(--font-body);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;padding:0;font-size:11px;display:flex}.copy-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:20;white-space:nowrap;animation:.15s ease-out messageIn;position:absolute;bottom:calc(100% + 8px);right:50%;overflow:hidden;transform:translate(50%)}.copy-menu-item{width:100%;font-family:var(--font-body);color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;padding:10px 16px;font-size:13px;display:block}.copy-menu-item:not(:last-child){border-bottom:1px solid var(--border)}.copy-menu-item:active{background:var(--hover)}.copy-toast{background:var(--text);color:var(--bg);font-family:var(--font-body);border-radius:var(--radius-full);z-index:100;pointer-events:none;padding:6px 16px;font-size:13px;animation:.2s ease-out messageIn;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.copy-toast-failed{background:var(--error,#c00);color:#fff}.component-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);width:fit-content;max-width:100%;padding:14px 16px}.component-card--submitted{opacity:.6;pointer-events:none}.component-card__actions{justify-content:flex-end;align-items:center;gap:8px;padding-top:10px;display:flex}.component-card__done-label{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;font-style:italic}.output-style-selector{flex-direction:column;gap:0;max-width:320px;display:flex}.output-style-selector__row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;padding:10px 8px;transition:background .15s;display:flex}.output-style-selector__row:hover,.output-style-selector__row--selected{background:var(--sage-subtle)}.output-style-selector__radio{border:2px solid var(--text-secondary);border-radius:50%;flex-shrink:0;width:16px;height:16px;margin-top:1px;transition:border-color .15s,box-shadow .15s}.output-style-selector__radio--checked{border-color:var(--text);box-shadow:inset 0 0 0 3px var(--surface), inset 0 0 0 8px var(--text)}.output-style-selector__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.output-style-selector__label{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.output-style-selector__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.thinking-view-selector{flex-direction:column;gap:0;max-width:320px;display:flex}.thinking-view-selector__row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;padding:10px 8px;transition:background .15s;display:flex}.thinking-view-selector__row:hover,.thinking-view-selector__row--selected{background:var(--sage-subtle)}.thinking-view-selector__radio{border:2px solid var(--text-secondary);border-radius:50%;flex-shrink:0;width:16px;height:16px;margin-top:1px;transition:border-color .15s,box-shadow .15s}.thinking-view-selector__radio--checked{border-color:var(--text);box-shadow:inset 0 0 0 3px var(--surface), inset 0 0 0 8px var(--text)}.thinking-view-selector__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.thinking-view-selector__label{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.thinking-view-selector__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.plugin-selector{flex-direction:column;gap:10px;max-width:420px;display:flex}.plugin-selector__header{border-bottom:1px solid var(--border);padding-bottom:6px}.plugin-selector__list{flex-direction:column;gap:0;max-height:400px;display:flex;overflow-y:auto}.plugin-selector__row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;padding:8px 6px;transition:background .15s;display:flex}.plugin-selector__row:hover{background:var(--sage-subtle)}.plugin-selector__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.plugin-selector__name{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.plugin-selector__recommended{font-family:var(--font-body);color:var(--sage);margin-left:6px;font-size:10px;font-weight:500}.plugin-selector__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.single-select{flex-direction:column;gap:0;display:flex}.single-select__title{font-family:var(--font-body);color:var(--text);padding:0 8px 6px;font-size:13px;font-weight:600}.single-select__row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;padding:10px 8px;transition:background .15s;display:flex}.single-select__row:hover,.single-select__row--selected{background:var(--sage-subtle)}.single-select__radio{border:2px solid var(--text-secondary);border-radius:50%;flex-shrink:0;width:16px;height:16px;margin-top:1px;transition:border-color .15s,box-shadow .15s}.single-select__radio--checked{border-color:var(--text);box-shadow:inset 0 0 0 3px var(--surface), inset 0 0 0 8px var(--text)}.single-select__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.single-select__icon{margin-right:6px}.single-select__label{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.single-select__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.multi-select{flex-direction:column;gap:10px;display:flex}.multi-select__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:600}.multi-select__header{border-bottom:1px solid var(--border);padding-bottom:6px}.multi-select__list{flex-direction:column;gap:4px;max-height:400px;display:flex;overflow-y:auto}.multi-select__row{border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:flex-start;gap:10px;padding:10px 8px;transition:background .15s;display:flex}.multi-select__row:hover{background:var(--sage-subtle)}.multi-select__row>.maxy-checkbox{margin-top:1px}.multi-select__info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.multi-select__label{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.multi-select__badge{font-family:var(--font-body);color:var(--sage);margin-left:6px;font-size:10px;font-weight:500}.multi-select__desc{font-family:var(--font-body);color:var(--text-secondary);overflow-wrap:anywhere;font-size:12px;line-height:1.4}.multi-select__group-header{font-family:var(--font-body);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;padding:10px 6px 4px;font-size:11px;font-weight:600}.multi-select__group-header:first-child{padding-top:0}.multi-select__row--locked{opacity:.6;cursor:default}.multi-select__row--locked:hover,.multi-select__row--locked:focus{background:0 0;outline:none}.public-components{flex-direction:column;gap:12px;max-width:85%;margin-top:8px;display:flex}@keyframes component-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.public-component-enter{animation:.2s ease-out both component-enter}.single-select__row{min-height:44px}.single-select__row:focus,.multi-select__row:focus{outline:2px solid var(--accent,#7c9a82);outline-offset:-2px;border-radius:8px}@media (width<=480px){.component-card{border-radius:12px;width:100%}.multi-select__list{max-height:60vh}.browser-viewer__iframe{aspect-ratio:4/3;min-height:300px}}.confirm{flex-direction:column;gap:8px;max-width:380px;display:flex}.confirm__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:600;line-height:1.3}.confirm__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.confirm__items{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding:8px 0;display:flex}.confirm__item{justify-content:space-between;align-items:baseline;gap:12px;padding:2px 0;display:flex}.confirm__item-label{font-family:var(--font-body);color:var(--text-secondary);font-size:12px}.confirm__item-value{font-family:var(--font-body);color:var(--text);text-align:right;font-size:12px;font-weight:500}.info-card{flex-direction:column;gap:10px;max-width:380px;display:flex}.info-card__header{flex-direction:column;gap:2px;display:flex}.info-card__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:600;line-height:1.3}.info-card__subtitle{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.info-card__fields{flex-direction:column;gap:6px;display:flex}.info-card__field{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:12px;padding:3px 0;display:flex}.info-card__field:last-child{border-bottom:none}.info-card__field-label{font-family:var(--font-body);color:var(--text-secondary);flex-shrink:0;font-size:12px}.info-card__field-value{font-family:var(--font-body);color:var(--text);text-align:right;font-size:12px;font-weight:500}.info-card__field-value--status{color:var(--sage)}.info-card__field-value a{color:var(--sage);text-decoration:none}.info-card__field-value a:hover{text-decoration:underline}.qr-code{flex-direction:column;align-items:center;gap:12px;padding:8px 0;display:flex}.qr-code--error{font-family:var(--font-body);color:var(--text-secondary);text-align:center;font-size:12px}.qr-code__canvas{color:#000;background:#fff;border-radius:12px;padding:16px}.qr-code__label{font-family:var(--font-body);color:var(--text-secondary);text-align:center;max-width:280px;font-size:12px;line-height:1.4}.action-list{flex-direction:column;gap:8px;max-width:460px;display:flex}.action-list__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:600}.action-list__items{flex-direction:column;gap:0;display:flex}.action-list__item{border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:12px;padding:8px 6px;transition:background .15s;display:flex}.action-list__item:hover{background:var(--sage-subtle)}.action-list__item--acted{opacity:.5}.action-list__item-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.action-list__item-label{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500;line-height:1.3}.action-list__item-desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.action-list__item-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.action-list__item-status{font-family:var(--font-body);color:var(--sage);white-space:nowrap;font-size:10px;font-weight:500}.action-list__item-actions{gap:4px;display:flex}.form-input{flex-direction:column;gap:10px;max-width:360px;display:flex}.form-input__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:600}.form-input__desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.form-input__fields{flex-direction:column;gap:12px;display:flex}.form-input__field{flex-direction:column;gap:4px;display:flex}.form-input__label{font-family:var(--font-body);color:var(--text);font-size:12px;font-weight:500}.form-input__required{color:var(--sage);margin-left:2px}select.dropdown{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%236B6B6B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M3 4.5l3 3 3-3'/></svg>");background-position:right 12px center;background-repeat:no-repeat;background-size:10px 10px;padding-right:32px}select.dropdown:disabled{cursor:not-allowed}.form-input__input,.form-input__textarea,.form-input__select{font-family:var(--font-body);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;padding:8px 10px;font-size:13px;transition:border-color .15s}.form-input__input:focus,.form-input__textarea:focus,.form-input__select:focus{border-color:var(--sage)}.form-input__input:disabled,.form-input__textarea:disabled,.form-input__select:disabled{opacity:.6;cursor:not-allowed}.form-input__textarea{resize:vertical;min-height:60px}.form-input__select{cursor:pointer}.form-input__field-desc{font-family:var(--font-body);color:var(--text-secondary);margin-top:-1px;font-size:11px;line-height:1.4}.form-input__list{flex-direction:column;gap:4px;display:flex}.form-input__list-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.form-input__list-item-text{font-family:var(--font-body);color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.form-input__list-item-remove{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:16px;line-height:1;transition:color .15s}.form-input__list-item-remove:hover:not(:disabled){color:var(--text)}.form-input__list-item-remove:disabled{opacity:.6;cursor:not-allowed}.form-input__list-add{gap:6px;margin-top:2px;display:flex}.form-input__list-add .form-input__input{flex:1;min-width:0}.form-input__list-add-btn{font-family:var(--font-body);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;padding:8px 12px;font-size:12px;font-weight:500;transition:border-color .15s}.form-input__list-add-btn:hover:not(:disabled){border-color:var(--sage)}.form-input__list-add-btn:disabled{opacity:.6;cursor:not-allowed}.tunnel-route__row{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:stretch;transition:border-color .15s;display:flex;overflow:hidden}.tunnel-route__row:focus-within{border-color:var(--sage)}.tunnel-route__input{background:0 0;border:none;border-radius:0;flex:1;min-width:0}.tunnel-route__input:focus{border:none;outline:none}.tunnel-route__suffix{font-family:var(--font-body);color:var(--text-secondary);background-color:color-mix(in srgb, var(--border) 35%, transparent);border:none;border-left:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:0;padding:0 10px;font-size:13px}.tunnel-route__optional{font-family:var(--font-body);color:var(--text-secondary);margin-left:8px;font-size:11px;font-weight:400}.tunnel-route__preview{font-family:var(--font-mono,ui-monospace, monospace);color:var(--text)}.tunnel-route__error{font-family:var(--font-body);color:var(--danger,#c0392b);font-size:11px;line-height:1.4}.progress-tracker{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);max-width:380px;box-shadow:var(--shadow-sm);width:fit-content;padding:14px 16px}.progress-tracker--submitted{opacity:.6;pointer-events:none}.progress-tracker__title{font-family:var(--font-body);color:var(--text);padding-bottom:10px;font-size:13px;font-weight:600}.progress-tracker__steps{flex-direction:column;gap:2px;display:flex}.progress-tracker__step{border-radius:var(--radius-sm);align-items:flex-start;gap:10px;padding:6px 4px;display:flex}.progress-tracker__icon{text-align:center;flex-shrink:0;width:18px;font-size:13px;line-height:1.3}.progress-tracker__step--completed .progress-tracker__icon{color:var(--sage)}.progress-tracker__step--failed .progress-tracker__icon{color:#c44}.progress-tracker__step--active .progress-tracker__icon{color:var(--text);font-weight:700}.progress-tracker__step--pending .progress-tracker__icon,.progress-tracker__step--skipped .progress-tracker__icon{color:var(--text-tertiary)}.progress-tracker__step-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.progress-tracker__step-label{font-family:var(--font-body);color:var(--text);font-size:13px;line-height:1.3}.progress-tracker__step--pending .progress-tracker__step-label{color:var(--text-tertiary)}.progress-tracker__step--skipped .progress-tracker__step-label{color:var(--text-tertiary);text-decoration:line-through}.progress-tracker__step-desc{font-family:var(--font-body);color:var(--text-secondary);font-size:12px;line-height:1.4}.editor-base{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.editor-base__bar{justify-content:space-between;align-items:center;padding:0 0 4px;display:flex}.editor-base__bar[draggable=true]{cursor:grab}.editor-base__bar[draggable=true] .editor-base__actions{cursor:default}.editor-base__icon{width:14px;height:14px;color:var(--text-secondary);flex-shrink:0;margin-right:6px}.editor-base__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500}.editor-base__actions{align-items:center;gap:4px;margin-left:auto;display:flex}.editor-base__status{font-family:var(--font-body);color:var(--text-tertiary);padding:2px 6px;font-size:12px}.editor-base--minimised{cursor:pointer;gap:0;padding:10px 14px}.editor-base--popout{padding:10px 14px}.editor-base-fullscreen{z-index:1000;background:var(--bg-chat);flex-direction:column;display:flex;position:fixed;inset:0}.editor-base-fullscreen__bar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.editor-base-fullscreen__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500}.editor-base-fullscreen__body{flex:1;width:100%;max-width:800px;margin:0 auto;padding:24px;position:relative;overflow-y:auto}.doc-editor__body{background:var(--bg-chat);border:1px solid var(--border);border-radius:6px;max-height:500px;position:relative;overflow-y:auto}.doc-editor__content{font-family:var(--font-body);color:var(--text);outline:none;min-height:60px;padding:12px;font-size:15px;line-height:1.6}.doc-editor__content h1,.doc-editor__content h2,.doc-editor__content h3{margin-top:1.2em;margin-bottom:.4em;font-weight:600}.doc-editor__content h1{font-size:1.5em}.doc-editor__content h2{font-size:1.25em}.doc-editor__content h3{font-size:1.1em}.doc-editor__content p{margin:.4em 0}.doc-editor__content ul,.doc-editor__content ol{margin:.4em 0;padding-left:1.5em}.doc-editor__content code{background:var(--surface);border-radius:3px;padding:1px 4px;font-size:.9em}.doc-editor__content pre{background:var(--surface);border-radius:6px;margin:.6em 0;padding:12px;overflow-x:auto}.doc-editor__content pre code{background:0 0;padding:0}.doc-editor__content blockquote{border-left:3px solid var(--border-strong);color:var(--text-secondary);margin:.6em 0;padding-left:12px}.doc-editor__content a{color:var(--sage);text-decoration:underline}.doc-editor__content hr{border:none;border-top:1px solid var(--border);margin:1em 0}.doc-editor__content p.is-editor-empty:first-child:before{content:"Start typing or wait for content...";color:var(--text-tertiary);float:left;pointer-events:none;height:0;font-style:italic}.doc-editor__bubble-menu{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:8px;align-items:center;gap:4px;padding:6px;display:flex}.doc-editor__bubble-divider{background:var(--border-strong);width:1px;height:20px;margin:0 2px}.doc-editor__comment-highlight{background:var(--sage-glow);cursor:help;border-radius:2px}.doc-editor__comment-popover{z-index:10;background:var(--bg-chat);border:1px solid var(--border-strong);box-shadow:var(--shadow-md);border-radius:8px;flex-direction:column;gap:6px;max-width:280px;padding:8px;display:flex;position:absolute;top:8px;right:8px}.doc-editor__comment-input{font-family:var(--font-body);border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;outline:none;width:100%;padding:6px 8px;font-size:13px}.doc-editor__comment-input:focus{border-color:var(--sage)}.doc-editor__comment-actions{justify-content:flex-end;gap:4px;display:flex}.doc-editor__fallback,.rich-editor__fallback{font-family:var(--font-body);color:var(--text);padding:12px;font-size:15px;line-height:1.6}.doc-editor__fallback ul,.doc-editor__fallback ol{margin:.4em 0;padding-left:1.5em}.doc-editor__preview{cursor:text;border-radius:6px;transition:background .15s}.doc-editor__preview:hover{background:#00000005}.rich-editor__body{background:var(--bg-chat);border:1px solid var(--border);border-radius:6px;max-height:500px;position:relative;overflow-y:auto}.rich-editor__content{font-family:var(--font-body);color:var(--text);outline:none;min-height:60px;padding:12px;font-size:15px;line-height:1.6}.rich-editor__content h1,.rich-editor__content h2,.rich-editor__content h3{margin-top:1.2em;margin-bottom:.4em;font-weight:600}.rich-editor__content h1{font-size:1.5em}.rich-editor__content h2{font-size:1.25em}.rich-editor__content h3{font-size:1.1em}.rich-editor__content p{margin:.4em 0}.rich-editor__content ul,.rich-editor__content ol{margin:.4em 0;padding-left:1.5em}.rich-editor__content img{cursor:pointer;border-radius:6px;max-width:100%;height:auto;transition:opacity .15s}.rich-editor__content img:hover{opacity:.85}.rich-editor__content a{color:var(--sage);text-decoration:underline}.rich-editor__content blockquote{border-left:3px solid var(--border-strong);color:var(--text-secondary);margin:.6em 0;padding-left:12px}.rich-editor__content p.is-editor-empty:first-child:before{content:"Start typing or wait for content...";color:var(--text-tertiary);float:left;pointer-events:none;height:0;font-style:italic}.grid-editor__body{background:var(--bg-chat);border:1px solid var(--border);border-radius:6px;max-height:500px;position:relative;overflow:auto}.grid-editor__table-wrap{min-width:100%;position:relative}.grid-editor__table{border-collapse:collapse;width:100%;font-family:var(--font-body);color:var(--text);font-size:13px}.grid-editor__col-header{background:var(--surface);text-align:left;border:1px solid var(--border);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:6px 10px;font-size:12px;font-weight:600;position:relative}.grid-editor__row-header{background:var(--surface);border:1px solid var(--border);text-align:center;width:40px;min-width:40px;padding:4px;position:relative}.grid-editor__row-num{color:var(--text-tertiary);font-size:11px}.grid-editor__row-delete{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px;display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.grid-editor__row-header:hover .grid-editor__row-num{display:none}.grid-editor__row-header:hover .grid-editor__row-delete{display:block}.grid-editor__row-delete:hover{color:var(--text);background:var(--sage-subtle)}.grid-editor__cell{border:1px solid var(--border);cursor:text;padding:0;position:relative}.grid-editor__cell--active{outline:2px solid var(--sage);outline-offset:-1px;z-index:1}.grid-editor__cell-text{white-space:nowrap;text-overflow:ellipsis;min-height:28px;padding:4px 8px;display:block;overflow:hidden}.grid-editor__cell-input{background:var(--bg-chat);width:100%;height:100%;min-height:28px;font-family:var(--font-body);color:var(--text);border:none;outline:none;padding:4px 8px;font-size:13px}.grid-editor__resize-handle{cursor:col-resize;z-index:2;width:5px;height:100%;position:absolute;top:0;right:-2px}.grid-editor__resize-handle:hover{background:var(--sage-glow)}.grid-editor__add-row{color:var(--text-tertiary);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;width:100%;padding:6px 10px;font-size:12px;display:flex}.grid-editor__add-row:hover{background:var(--sage-subtle);color:var(--sage)}.grid-editor__comment-popover{z-index:10;background:var(--bg-chat);border:1px solid var(--border-strong);box-shadow:var(--shadow-md);border-radius:8px;flex-direction:column;gap:6px;max-width:280px;padding:8px;display:flex;position:absolute;top:8px;right:8px}.browser-viewer{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.browser-viewer--submitted{opacity:.6;pointer-events:none;padding:10px 14px}.browser-viewer__bar{justify-content:space-between;align-items:center;padding:0 0 4px;display:flex}.browser-viewer__bar[draggable=true]{cursor:grab}.browser-viewer__bar[draggable=true] .browser-viewer__actions{cursor:default}.browser-viewer__icon{width:14px;height:14px;color:var(--text-secondary);flex-shrink:0;margin-right:6px}.browser-viewer__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500}.browser-viewer__actions{gap:4px;margin-left:auto;display:flex}.browser-viewer__iframe{border:1px solid var(--border);background:#111;border-radius:6px;width:100%;min-height:500px;display:block}.browser-viewer--minimised{cursor:pointer;border-left:3px solid var(--sage);background:var(--sage-subtle);gap:0;padding:10px 14px}.browser-viewer--minimised .browser-viewer__iframe{display:none}.browser-viewer--popout{border-left:3px solid var(--sage);background:var(--sage-subtle);padding:10px 14px}.browser-viewer__popout-label{font-family:var(--font-body);color:var(--text-tertiary);padding:2px 0;font-size:12px}.browser-viewer-fullscreen{z-index:1000;background:var(--surface,#111);flex-direction:column;display:flex;position:fixed;inset:0}.browser-viewer-fullscreen__bar{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.browser-viewer-fullscreen__title{font-family:var(--font-body);color:var(--text);font-size:13px;font-weight:500}.browser-viewer-fullscreen__actions{gap:4px;display:flex}.browser-viewer-fullscreen__iframe{background:#111;border:none;flex:1;width:100%}.browser-overlay-popout{z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:8px;padding:8px 14px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #00000026}.btn{font-family:var(--font-body);white-space:nowrap;cursor:pointer;-webkit-font-smoothing:antialiased;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:10px 16px;font-size:14px;font-weight:400;line-height:1;transition:background .15s,opacity .15s,color .15s;display:inline-flex;position:relative}.btn:disabled{opacity:.4;cursor:not-allowed}.btn__content{align-items:center;gap:6px;display:flex}.btn__spinner{justify-content:center;align-items:center;font-size:14px;animation:1.2s linear infinite spin;display:flex;position:absolute;inset:0}.btn--sm .btn__spinner{font-size:11px}.btn--lg .btn__spinner{font-size:17px}.btn--primary{background:var(--sage);color:#fff;border-radius:var(--radius-full)}.btn--primary:hover:not(:disabled){background:var(--sage-hover)}.btn--secondary{color:var(--text-secondary);border:1px solid var(--border-strong);border-radius:var(--radius-full);background:0 0}.btn--secondary:hover:not(:disabled){border-color:var(--sage)}.btn--ghost{color:var(--text-secondary);background:0 0;border:none;padding:0 2px}.btn--ghost:hover:not(:disabled){color:var(--sage)}.btn--danger{background:var(--danger);color:#fff;border-radius:var(--radius-full)}.btn--danger:hover:not(:disabled){background:var(--danger-hover)}.btn--send{background:var(--sage);color:#fff;border-radius:50%}.btn--send:hover:not(:disabled){background:var(--sage-hover)}.btn--send:active:not(:disabled){transform:scale(.95)}.btn--send svg{width:16px;height:16px}.btn--icon{color:var(--text-tertiary);background:0 0;border:none;padding:2px}.btn--icon:hover:not(:disabled){color:var(--text-secondary)}.btn--suggestion{color:var(--text-secondary);border:1px solid var(--border-strong);border-radius:var(--radius-full);background:0 0;font-size:13px}.btn--suggestion:hover:not(:disabled){border-color:var(--sage)}.btn--sm{padding:6px 10px;font-size:12px}.btn--lg{padding:12px 24px;font-size:15px}.btn--full{width:100%}.file-attachment{align-items:center;gap:10px;max-width:380px;display:flex}.file-attachment__icon{color:var(--text-secondary);flex-shrink:0}.file-attachment__info{flex:1;min-width:0}.file-attachment__name{font-family:var(--font-body);color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;line-height:1.3;overflow:hidden}.file-attachment__meta{font-family:var(--font-body);color:var(--text-secondary);font-size:11px;line-height:1.4}.file-attachment__download{border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.file-attachment__download:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.file-attachment__download:disabled{opacity:.4;cursor:not-allowed}.topic-change-bar{border-top:1px solid var(--border);background:var(--bg);align-items:center;gap:12px;padding:10px 16px;display:flex}.topic-change-bar__icon{color:var(--text-secondary);flex-shrink:0;align-items:center;display:flex}.topic-change-bar__actions{gap:8px;margin-left:auto;display:flex}.data-page{background:var(--chat-bg,#fff);min-height:100vh;color:var(--chat-fg,#111);flex-direction:column;display:flex}.data-header{border-bottom:1px solid #00000014;align-items:center;gap:12px;padding:16px 24px;display:flex}.data-header .chat-logo{width:28px;height:28px}.data-title{flex:1;align-items:center;gap:8px;margin:0;font-size:18px;font-weight:600;display:inline-flex}.data-back{color:inherit;opacity:.7;align-items:center;gap:4px;margin-left:auto;font-size:13px;text-decoration:none;display:inline-flex}.data-back:hover{opacity:1}.data-main{flex-direction:column;gap:24px;width:100%;max-width:960px;margin:0 auto;padding:24px;display:flex}.data-panel{background:#ffffff80;border:1px solid #00000014;border-radius:10px;padding:20px}.data-panel-heading{align-items:center;gap:12px;margin-bottom:4px;display:flex}.data-panel-title{margin:0 0 4px;font-size:15px;font-weight:600}.data-panel-subtitle{opacity:.7;margin:0 0 16px;font-size:13px}.data-panel-subtitle code{background:#0000000f;border-radius:4px;padding:1px 5px;font-family:ui-monospace,Menlo,monospace;font-size:12px}.data-file-actions{gap:8px;margin-left:auto;display:flex}.data-btn{cursor:pointer;color:inherit;background:#fff;border:1px solid #0000001f;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:inline-flex}.data-btn:hover:not(:disabled){background:#0000000a}.data-btn:disabled{opacity:.5;cursor:not-allowed}.data-btn-ghost{opacity:.7;background:0 0;border-color:#0000}.data-btn-ghost:hover:not(:disabled){opacity:1;background:#0000000a}.data-search-input{background:#fff;border:1px solid #0000001f;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;display:flex}.data-search-input input{color:inherit;background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.data-results-meta{opacity:.6;margin-top:12px;font-size:12px}.data-suppressed-banner{color:inherit;opacity:.75;cursor:pointer;text-align:left;background:#7878780f;border:1px solid #7878782e;border-radius:6px;width:100%;margin-top:8px;padding:6px 10px;font-size:12px}.data-suppressed-banner:hover{opacity:1}.data-empty-results,.data-loading,.data-empty{opacity:.7;text-align:center;padding:16px;font-size:13px}.data-empty{padding:48px 16px}.data-error{color:#a33;background:#c8282814;border:1px solid #c828284d;border-radius:6px;margin-top:12px;padding:8px 12px;font-size:13px}.data-results{flex-direction:column;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.data-result{background:#fff;border:1px solid #00000014;border-radius:8px;padding:12px 14px}.data-result-header{opacity:.6;justify-content:space-between;align-items:center;margin-bottom:4px;font-family:ui-monospace,Menlo,monospace;font-size:11px;display:flex}.data-result-title{margin-bottom:6px;font-size:14px;font-weight:600}.data-result-body{white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;font-size:13px;line-height:1.45}.data-result-toggle{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;margin-top:6px;padding:0;font-size:12px}.data-result-toggle:hover{opacity:1}.data-result-open{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;display:block}.data-result-open:hover{background:#00000005;border-radius:4px}.data-result-open:focus-visible{outline-offset:2px;border-radius:4px;outline:2px solid #006eff66}.data-result-scores{opacity:.55;margin-top:6px;font-family:ui-monospace,Menlo,monospace;font-size:11px}.data-chip-row{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.data-chip{color:inherit;font:inherit;cursor:pointer;opacity:.75;background:0 0;border:1px solid #0000001f;border-radius:999px;padding:3px 10px;font-size:12px}.data-chip:hover{opacity:1}.data-chip[data-active=true]{opacity:1;background:#006eff14;border-color:#006eff66}.data-breadcrumbs{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:12px;font-size:13px;display:flex}.data-crumb{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:13px}.data-crumb:hover{background:#0000000d}.data-crumb-sep{opacity:.4}.data-crumb-wrap{align-items:center;gap:4px;display:inline-flex}.data-up-btn{margin-left:auto}.data-entries{background:#fff;border:1px solid #00000014;border-radius:8px;flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}.data-entry{align-items:stretch;display:flex}.data-entry+.data-entry{border-top:1px solid #0000000f}.data-entry-btn{cursor:pointer;text-align:left;min-width:0;color:inherit;background:0 0;border:none;flex:1;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.data-entry-btn:hover:not(.data-entry-disabled){background:#0000000a}.data-entry-disabled{opacity:.5;cursor:default}.data-entry-delete{color:inherit;opacity:.45;cursor:pointer;background:0 0;border:none;border-left:1px solid #0000000f;flex:none;justify-content:center;align-items:center;padding:0 14px;display:inline-flex}.data-entry-delete:hover:not(:disabled){color:#dc2626;opacity:1;background:#dc262614}.data-entry-delete:disabled{cursor:default}.data-entry-confirm{background:#dc26260f;border-left:1px solid #0000000f;flex:none;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.data-entry-confirm-label{color:#dc2626;white-space:nowrap;font-size:12px}.data-entry-confirm-yes,.data-entry-confirm-no{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:6px;padding:5px 10px;font-size:12px;line-height:1}.data-entry-confirm-yes{color:#fff;background:#dc2626;border-color:#dc2626}.data-entry-confirm-yes:hover{background:#b91c1c;border-color:#b91c1c}.data-entry-confirm-yes:focus-visible{outline-offset:2px;outline:2px solid #dc262666}.data-entry-confirm-no{color:inherit;background:0 0;border-color:#0000001f}.data-entry-confirm-no:hover{background:#0000000a}.data-entry-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:inherit;overflow:hidden}.data-entry-meta{opacity:.55;white-space:nowrap;font-size:11px}.data-entry-download-icon{opacity:.5}.data-link{color:inherit;text-decoration:underline}.graph-page{height:100%;min-height:0;overflow:hidden}.graph-main{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.graph-toolbar{border-bottom:1px solid #0000000f;align-items:center;gap:16px;padding:12px 24px;display:flex;container:graph-toolbar/inline-size}@container graph-toolbar (width<=480px){.graph-filter-toggle>span:not(.graph-filter-count){display:none}}.graph-search-input{flex:1;min-width:0;max-width:360px}.graph-search-limit{opacity:.85;align-items:center;gap:8px;font-size:12px;display:flex}.graph-search-limit-label{-webkit-user-select:none;user-select:none;font-weight:500}.graph-search-limit input[type=range]{cursor:pointer;width:120px}.graph-search-limit-value{text-align:right;font-variant-numeric:tabular-nums;min-width:32px;font-family:ui-monospace,Menlo,monospace}.graph-search-limit-number{font-variant-numeric:tabular-nums;text-align:right;width:48px;color:inherit;-moz-appearance:textfield;background:#fff9;border:1px solid #00000026;border-radius:4px;padding:2px 4px;font-family:ui-monospace,Menlo,monospace;font-size:12px}.graph-search-limit-number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.graph-search-limit-number::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.graph-search-limit-step{width:22px;height:22px;color:inherit;cursor:pointer;background:#fff9;border:1px solid #00000026;border-radius:4px;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.graph-search-limit-step:hover:not(:disabled){background:#0000000d}.graph-search-limit-step:disabled{opacity:.4;cursor:not-allowed}.graph-search-degraded{color:#92400e;background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:6px 12px;font-size:12px}.graph-meta{opacity:.65;margin-left:auto;font-size:12px}.graph-meta-count{font-family:ui-monospace,Menlo,monospace}.graph-error-banner{margin:8px 24px 0}.graph-search-status{color:inherit;opacity:.85;background:#00000008;border:1px solid #0000000f;border-radius:6px;margin:8px 24px 0;padding:6px 12px;font-size:12px}.graph-search-suppressed{color:inherit;opacity:.75;cursor:pointer;text-align:left;background:#7878780f;border:1px solid #7878782e;border-radius:6px;margin:8px 24px 0;padding:6px 12px;font-size:12px;display:block}.graph-search-suppressed:hover{opacity:1}.graph-canvas-wrap{background:#fafaf8;border:1px solid #00000014;border-radius:10px;flex:1;min-height:0;margin:16px 24px 0;position:relative;overflow:hidden}.graph-canvas{position:absolute;inset:0}.graph-canvas-overlay{opacity:.9;z-index:5;text-align:center;background:#ffffffd9;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:24px;font-size:14px;display:flex;position:absolute;inset:0}.graph-canvas-error p{color:#a33;margin:0 0 8px}.graph-side-panel{z-index:10;background:#fff;border:1px solid #00000014;border-radius:10px;flex-direction:column;width:320px;display:flex;position:absolute;top:76px;bottom:92px;right:36px;overflow:hidden;box-shadow:0 8px 24px #0000000f}.graph-side-header{border-bottom:1px solid #0000000f;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.graph-side-header>div{min-width:0;overflow:hidden}.graph-side-labels{text-transform:uppercase;letter-spacing:.04em;opacity:.75;font-size:12px;font-weight:600}.graph-side-id{opacity:.5;word-break:break-all;margin-top:2px;font-family:ui-monospace,Menlo,monospace;font-size:10px}.graph-side-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;margin:0;font-size:18px;font-weight:600;line-height:1.2;overflow:hidden}.graph-side-created{color:#64748b;margin-top:4px;font-size:12px}.graph-side-meta{color:#94a3b8;word-break:break-all;margin-top:4px;font-size:11px}.graph-side-close{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;padding:4px}.graph-side-close:hover{opacity:1}.graph-side-props{flex:1;margin:0;padding:8px 14px 14px;overflow-y:auto}.graph-side-prop{flex-direction:column;gap:2px;margin-bottom:10px;display:flex}.graph-side-prop dt{text-transform:uppercase;letter-spacing:.04em;opacity:.55;font-size:11px;font-weight:600}.graph-side-prop dd{word-break:break-word;white-space:pre-wrap;margin:0;font-size:13px}.graph-side-empty{opacity:.6;text-align:center;padding:16px 0;font-size:13px}.graph-side-edges{border-top:1px solid #00000014;max-height:50%;margin:0;padding:0 14px 14px;overflow-y:auto}.graph-side-edges-heading{text-transform:uppercase;letter-spacing:.04em;opacity:.55;margin:14px 0 8px;font-size:11px;font-weight:600}.graph-side-edge{background:#00000008;border-radius:6px;margin-bottom:12px;padding:8px 10px}.graph-side-edge-header{align-items:center;gap:6px;margin-bottom:6px;font-size:12px;display:flex}.graph-side-edge-type{opacity:.75;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:600}.graph-side-edge-arrow{opacity:.45}.graph-side-edge-other{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.graph-side-edge-props{margin:0;padding:0}.graph-side-edge-props .graph-side-prop{margin-bottom:6px}.graph-side-edge-props .graph-side-prop:last-child{margin-bottom:0}.graph-legend{background:#00000004;border-top:1px solid #0000000f;flex-wrap:wrap;align-items:center;gap:12px 18px;padding:14px 24px;font-size:11px;display:flex}.graph-legend-item{opacity:.85;align-items:center;gap:6px;display:inline-flex}.graph-legend-swatch{border-radius:50%;width:10px;height:10px;display:inline-block}.graph-filter-wrap{align-items:center;display:inline-flex;position:relative}.graph-filter-toggle{color:inherit;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-family:DM Sans,sans-serif;font-size:12px;transition:background .12s,border-color .12s;display:inline-flex}.graph-filter-toggle:hover{background:#00000008}.graph-filter-toggle.is-open,.graph-filter-toggle.has-selection{background:#00000008;border-color:#0000004d}.graph-refresh-button{width:30px;height:30px;color:inherit;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;transition:background .12s,border-color .12s;display:inline-flex}.graph-refresh-button:hover:not(:disabled){background:#00000008}.graph-refresh-button:disabled{cursor:default;opacity:.6}.graph-filter-count{color:#fff;background:#000000bf;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 5px;font-size:10px;font-weight:600;line-height:1;display:inline-flex}.graph-filter-popover{z-index:20;background:#fff;border:1px solid #00000014;border-radius:10px;flex-direction:column;gap:10px;min-width:260px;max-width:min(420px,100vw - 48px);padding:12px 14px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000001a}.graph-filter-popover-empty{opacity:.65;margin:0;font-size:12px}.graph-filter-popover-footer{border-top:1px solid #0000000f;justify-content:flex-end;padding-top:10px;display:flex}.graph-filter-set-default{color:inherit;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:6px;align-items:center;gap:6px;padding:5px 12px;font-family:DM Sans,sans-serif;font-size:12px;transition:background .12s;display:inline-flex}.graph-filter-set-default:hover:not(:disabled){background:#00000008}.graph-filter-set-default:disabled{opacity:.4;cursor:not-allowed}.graph-filter-rows{flex-direction:column;gap:2px;max-height:320px;display:flex;overflow-y:auto}.graph-filter-row{color:inherit;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:10px;padding:6px 10px;font-family:DM Sans,sans-serif;font-size:13px;transition:background-color .12s,border-color .12s;display:flex}.graph-filter-row:hover{background:#0000000a}.graph-filter-row.active{background:#0000000d;border-color:#00000026}.graph-filter-row-swatch{border-radius:50%;flex:none;width:10px;height:10px}.graph-filter-row-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.graph-filter-row-count{opacity:.55;flex:none;font-family:ui-monospace,Menlo,monospace;font-size:11px}.graph-filter-subfacets{border-top:1px solid #0000000f;flex-direction:column;gap:8px;padding-top:10px;display:flex}.graph-filter-subfacet-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.graph-filter-subfacet-label{text-transform:uppercase;letter-spacing:.04em;opacity:.55;flex:none;margin-right:4px;font-family:DM Sans,sans-serif;font-size:11px}.graph-filter-subfacet-chip{color:inherit;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-family:DM Sans,sans-serif;font-size:12px;transition:background .12s,border-color .12s;display:inline-flex}.graph-filter-subfacet-chip:hover{background:#00000008}.graph-filter-subfacet-chip.active{background:#0000000d;border-color:#0000004d}.conv-channel-filter{width:100%;color:inherit;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:6px;margin:6px 0 8px;padding:4px 8px;font-family:DM Sans,sans-serif;font-size:12px}.conv-channel-filter:hover{background:#00000008}.conv-channel-icon{opacity:.6;flex:none;margin-right:6px}.graph-filter-popover-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.graph-filter-clear,.graph-search-clear{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:4px;transition:opacity .12s;display:inline-flex}.graph-filter-clear:hover,.graph-search-clear:hover{opacity:1}.graph-back-to-filter{color:inherit;cursor:pointer;background:0 0;border:1px solid #0000001f;border-radius:6px;padding:4px 10px;font-size:12px}.graph-back-to-filter:hover{background:#00000008}.graph-back-desktop{display:inline-flex}.graph-back-mobile{justify-content:center;align-items:center;padding:4px 8px;display:none}.graph-home-to-filter{color:inherit;cursor:pointer;background:0 0;border:1px solid #0000001f;border-radius:6px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:inline-flex}.graph-home-to-filter:hover{background:#00000008}.graph-home-desktop{display:inline-flex}.graph-home-mobile{justify-content:center;align-items:center;padding:4px 8px;display:none}.graph-breadcrumb{color:#0000008c;-webkit-user-select:none;user-select:none;background:#00000005;border-bottom:1px solid #0000000f;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 16px;font-size:11px;line-height:1.4;display:flex}.graph-breadcrumb-item{align-items:center;gap:4px;display:inline-flex}.graph-breadcrumb-separator{color:#0000004d;font-size:12px}.graph-breadcrumb-label.is-current{color:#000000d9;font-weight:500}.graph-canvas-hint{opacity:.7;margin-top:6px;font-size:12px}.graph-side-footer{background:#00000004;border-top:1px solid #0000000f;padding:10px 14px}.graph-delete-confirm{font-size:12px}.graph-delete-confirm p{margin:0 0 8px;line-height:1.4}.graph-delete-confirm-buttons{gap:8px;display:flex}.graph-delete-confirm-cancel,.graph-delete-confirm-do{cursor:pointer;border-radius:6px;align-items:center;gap:6px;padding:5px 12px;font-family:DM Sans,sans-serif;font-size:12px;display:inline-flex}.graph-delete-confirm-cancel{color:inherit;background:#fff;border:1px solid #0000001f}.graph-delete-confirm-cancel:hover{background:#00000008}.graph-delete-confirm-do{color:inherit;background:#fff;border:1px solid #0000001f}.graph-delete-confirm-do:hover{background:#00000008}.graph-delete-confirm-error p{color:#b91c1c}.graph-marquee{pointer-events:none;z-index:1;background:#3b82f61a;border:1px solid #3b82f699;border-radius:2px;display:none;position:absolute}.graph-trash-drop-zone{z-index:2;color:#b91c1c;pointer-events:none;background:#ffffffd9;border:2px dashed #b91c1c59;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;transition:background-color .12s,border-color .12s,transform .12s;display:flex;position:absolute;top:12px;right:12px}.graph-trash-drop-zone.is-hover{opacity:1;background:#fef2f2;border-style:solid;border-color:#b91c1c;transform:scale(1.08)}.graph-dragging .graph-trash-drop-zone{opacity:.5}.graph-trash-drop-zone.is-error{background:#fee2e2;border-color:#b91c1c;animation:.36s ease-in-out graph-trash-drop-zone-shake}@keyframes graph-trash-drop-zone-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.graph-drag-error-banner{z-index:4;color:#7f1d1d;background:#fef2f2;border:1px solid #b91c1c59;border-radius:8px;align-items:center;gap:10px;max-width:320px;padding:8px 12px;font-family:DM Sans,sans-serif;font-size:12px;display:inline-flex;position:absolute;top:64px;right:12px;box-shadow:0 4px 12px #0000000f}.graph-drag-error-dismiss{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;justify-content:center;align-items:center;padding:2px;transition:opacity .12s;display:inline-flex}.graph-drag-error-dismiss:hover{opacity:1}.graph-toggle-trashed{color:#6b7280;cursor:pointer;background:#fff;border:1px solid #00000026;border-radius:999px;align-items:center;gap:6px;margin-right:6px;padding:4px 10px;font-family:DM Sans,sans-serif;font-size:12px;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.graph-toggle-trashed:hover{background:#00000008}.graph-toggle-trashed.active{background:var(--sage-subtle);border-color:var(--sage);color:var(--sage-hover)}.graph-toggle-trashed.active:hover{background:var(--sage-glow)}.graph-toggle-agent-actions{border-top:1px solid #0000000f;border-bottom:1px solid #0000000f;padding:8px 12px}.graph-side-panel-trashed{background:#00000004}.graph-side-trash-meta{opacity:.85;padding-top:10px;padding-bottom:2px}.graph-side-trash-meta .graph-side-prop dt{color:var(--text-tertiary);font-variant:small-caps}.graph-side-restore{border:1px solid var(--sage);color:var(--sage-hover);cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-family:DM Sans,sans-serif;font-size:12px;transition:background-color .12s,color .12s;display:inline-flex}.graph-side-restore:hover{background:var(--sage-subtle)}.graph-side-trash{border:1px solid var(--danger);color:var(--danger);cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-family:DM Sans,sans-serif;font-size:12px;transition:background-color .12s,color .12s;display:inline-flex}.graph-side-trash:hover{color:var(--danger-hover);background:#b4444414}.platform{grid-template-columns:var(--side-px,264px) 1fr var(--artefact-px,440px);background:var(--bg);flex:1;width:100vw;min-height:0;display:grid;position:relative}.admin-shell{background:var(--bg);--bg:var(--color-alias-surface-canvas);--bg-chat:var(--color-alias-surface-canvas);--surface:var(--color-alias-surface-chrome);--text:var(--color-alias-text-primary);--text-primary:var(--color-alias-text-primary);--text-secondary:var(--color-alias-text-body);--text-tertiary:var(--color-alias-text-muted);--border:var(--color-alias-border-subtle);--copper:var(--color-alias-status-activity);--danger:var(--color-alias-action-dangerBg);flex-direction:column;width:100vw;height:100dvh;display:flex;overflow:hidden}.admin-footer{border-top:1px solid var(--border);background:var(--surface);z-index:50;flex-direction:row;flex:none;justify-content:flex-end;align-items:center;gap:12px;padding:8px 16px;display:flex;position:relative}.admin-footer .powered-by{margin-left:0}.platform .chat-page.admin-page{min-width:0;max-width:none;height:100%;min-height:0;padding:0}.platform[data-artefact=closed]{grid-template-columns:var(--side-px,264px) 1fr}.session-meta-pane{background:var(--bg);color:var(--text-primary);min-width:0;height:100%;min-height:0;overflow-y:auto}.side{border-right:1px solid var(--border);background:var(--surface);grid-template-rows:auto auto 1fr auto;min-height:0;display:grid}.brand-mark{font-family:var(--font-display);letter-spacing:-.005em;color:var(--text);align-items:baseline;gap:2px;font-size:18px;font-weight:500;display:inline-flex}.brand-mark .ast{color:var(--copper);font-size:.92em}.icon-btn{width:28px;height:28px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--hover);color:var(--text)}.icon-btn svg{width:14px;height:14px}.action-bar{flex-wrap:wrap;gap:8px;display:flex}.action-btn{color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:13px;line-height:1;text-decoration:none;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.action-btn:hover:not(:disabled){background:var(--hover);border-color:var(--border-strong)}.action-btn:active:not(:disabled){transform:translateY(.5px)}.action-btn:disabled{opacity:.5;cursor:default}.action-btn svg{flex-shrink:0;width:14px;height:14px}.action-btn[data-variant=primary]{background:var(--color-alias-action-primaryBg);border-color:var(--color-alias-action-primaryBg);color:var(--color-alias-action-primaryFg)}.action-btn[data-variant=primary]:hover:not(:disabled){background:var(--color-alias-action-primaryBg);border-color:var(--color-alias-action-primaryFg)}.action-btn[data-variant=danger]{color:var(--color-alias-action-dangerBg);border-color:var(--color-alias-border-subtle)}.action-btn[data-variant=danger]:hover:not(:disabled){background:var(--color-alias-action-dangerWash);border-color:var(--color-alias-action-dangerBg)}.modal-overlay{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--color-alias-surface-canvas);color:var(--color-alias-text-primary);padding:var(--space-5);border-radius:var(--radius-md);max-width:420px;box-shadow:0 12px 32px #0000004d}.modal-action-row{gap:var(--space-2);margin-top:var(--space-3);justify-content:flex-end;display:flex}.modal-action-btn{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-size:var(--typography-fontSize-sm);background:var(--color-alias-surface-canvas);color:var(--color-alias-text-body);border:1px solid var(--color-alias-border-subtle);border-radius:var(--radius-md);cursor:pointer;font-family:inherit;line-height:1.4;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.modal-action-btn:hover:not(:disabled){background:var(--color-alias-surface-chrome);border-color:var(--color-alias-text-muted)}.modal-action-btn:disabled{opacity:.5;cursor:default}.modal-action-btn[data-variant=danger]{background:var(--color-alias-action-dangerBg);border-color:var(--color-alias-action-dangerBg);color:var(--color-alias-action-dangerFg)}.modal-action-btn[data-variant=danger]:hover:not(:disabled){background:var(--color-alias-action-dangerBg);border-color:var(--color-alias-action-dangerBg);filter:brightness(.92)}.jsonl-viewer-card{flex-direction:column;width:90vw;max-width:1100px;max-height:90vh;padding:0;display:flex;overflow:hidden}.jsonl-viewer-header{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-alias-border-subtle);flex-shrink:0;display:flex}.jsonl-viewer-title{align-items:baseline;gap:var(--space-2);min-width:0;display:flex}.jsonl-viewer-title strong{font-size:var(--typography-fontSize-sm);white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.jsonl-viewer-sid{font-size:var(--typography-fontSize-xs);color:var(--color-alias-text-muted)}.jsonl-viewer-search{min-width:0;padding:var(--space-1) var(--space-2);font-size:var(--typography-fontSize-sm);background:var(--color-alias-surface-chrome);color:var(--color-alias-text-body);border:1px solid var(--color-alias-border-subtle);border-radius:var(--radius-sm);flex:1;font-family:inherit}.jsonl-viewer-search:focus{border-color:var(--color-alias-text-muted);outline:none}.jsonl-viewer-counts{font-size:var(--typography-fontSize-xs);color:var(--color-alias-text-tertiary);white-space:nowrap;flex-shrink:0}.jsonl-viewer-scroll{background:var(--color-alias-surface-canvas);flex:0 auto;min-height:0;position:relative;overflow-y:auto}.jsonl-viewer-inner{width:100%;position:relative}.jsonl-viewer-row{border-bottom:1px solid var(--color-alias-border-subtle);font-size:var(--typography-fontSize-xs);align-items:stretch;display:flex}.jsonl-viewer-row[data-expanded]{background:var(--color-alias-surface-chrome)}.jsonl-viewer-row__main{align-items:flex-start;gap:var(--space-2);padding:var(--space-1) var(--space-3);text-align:left;font:inherit;cursor:pointer;background:0 0;border:none;flex:1;min-width:0;display:flex;overflow:hidden}.jsonl-viewer-row__main:hover{background:var(--color-alias-surface-chrome)}.jsonl-viewer-badge{border-radius:var(--radius-sm);font-size:var(--typography-fontSize-xs);color:var(--color-alias-text-body);background:var(--color-alias-surface-chrome);border:1px solid var(--color-alias-border-subtle);flex-shrink:0;padding:1px 6px;font-weight:500}.jsonl-viewer-badge[data-tone=user]{background:#3c82f61a;border-color:#3c82f64d}.jsonl-viewer-badge[data-tone=assistant]{background:#22c55e1a;border-color:#22c55e4d}.jsonl-viewer-badge[data-tone=tool]{background:#a855f71a;border-color:#a855f74d}.jsonl-viewer-badge[data-tone=error]{background:var(--color-alias-action-dangerBg);color:var(--color-alias-action-dangerFg)}.jsonl-viewer-line-no{color:var(--color-alias-text-tertiary);text-align:right;flex-shrink:0;min-width:48px}.jsonl-viewer-preview{white-space:nowrap;text-overflow:ellipsis;color:var(--color-alias-text-body);flex:1;overflow:hidden}.jsonl-viewer-pre{padding:var(--space-1) 0;font-size:var(--typography-fontSize-xs);white-space:pre-wrap;word-break:break-word;color:var(--color-alias-text-body);flex:1;max-height:220px;margin:0;overflow:auto}.jsonl-viewer-error{color:var(--color-alias-action-dangerBg)}.jsonl-viewer-copy{width:28px;color:var(--color-alias-text-tertiary);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.jsonl-viewer-copy:hover{color:var(--color-alias-text-body)}.jsonl-viewer-footer{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-top:1px solid var(--color-alias-border-subtle);font-size:var(--typography-fontSize-xs);flex-shrink:0;display:flex}.jsonl-viewer-status{border-radius:var(--radius-sm);padding:1px 8px;font-weight:500}.jsonl-viewer-status[data-tone=streaming]{color:var(--color-alias-text-body);background:#22c55e1f;border:1px solid #22c55e4d}.jsonl-viewer-status[data-tone=complete]{background:var(--color-alias-surface-chrome);color:var(--color-alias-text-body);border:1px solid var(--color-alias-border-subtle)}.jsonl-viewer-status[data-tone=error]{background:var(--color-alias-action-dangerBg);color:var(--color-alias-action-dangerFg);border:1px solid var(--color-alias-action-dangerBg)}.sidebar-backdrop{z-index:49;background:#00000059;display:none;position:fixed;inset:0}@media (width<=720px){.platform.menu-open+.sidebar-backdrop,.sidebar-backdrop.menu-open{display:block}}.action-btn[data-active=true]{background:var(--sage-subtle);border-color:var(--sage-glow);color:var(--sage-deep)}.meta-dl{grid-template-columns:140px 1fr;gap:8px 16px;margin:0;font-size:13px;display:grid}.meta-dl dt{color:var(--text-tertiary);margin:0}.meta-dl dd{margin:0}.meta-dl dd[data-mono]{word-break:break-all;align-items:center;gap:8px;min-width:0;font-family:monospace;display:flex}.meta-dl dd[data-mono]>span{word-break:break-all;min-width:0}.meta-dl .text-tertiary{color:var(--text-tertiary)}.session-actions-overflow{display:none;position:relative}.session-actions-overflow>.overflow-popover{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg,10px);z-index:20;flex-direction:column;gap:4px;min-width:200px;padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000002e}.session-actions-overflow .action-btn{justify-content:flex-start;width:100%}.session-actions-overflow__trigger{color:var(--color-alias-text-muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.session-actions-overflow__trigger:hover:not(:disabled){color:var(--color-alias-text-body)}@media (width<=640px){.meta-dl{grid-template-columns:1fr;row-gap:4px}.meta-dl dt{margin-top:8px;font-size:12px}.meta-dl dt:first-of-type{margin-top:0}.session-meta-pane .action-bar{display:none}.session-actions-overflow{display:block}}.side .icon-btn{width:32px;height:32px}.side .icon-btn svg{width:auto;height:auto}.side-nav{border-bottom:1px solid var(--border);padding:4px 8px 8px}.nav-row{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:none;grid-template-columns:24px 1fr auto;align-items:center;gap:10px;width:100%;padding:7px 10px;font-family:inherit;font-size:13.5px;display:grid}.nav-row:hover{background:var(--hover);color:var(--text)}.nav-row.active{background:var(--bg-chat);color:var(--text);box-shadow:var(--shadow-sm)}.nav-row.active svg{color:var(--sage)}.nav-row svg{color:var(--text)}.nav-row .label{font-weight:500}.nav-row .kbd{font-family:var(--font-mono);color:var(--text-tertiary);font-size:10.5px}.side-list{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;min-height:0;padding:4px 8px 12px;overflow-y:auto}.side-list::-webkit-scrollbar{width:4px}.side-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.group-head{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.16em;color:var(--text-tertiary);justify-content:space-between;align-items:center;padding:12px 10px 6px;font-size:10px;font-weight:500;display:flex}.group-head-meta{align-items:center;gap:8px;display:inline-flex}.group-head-refresh{width:20px;height:20px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .12s,background-color .12s;display:inline-flex}.group-head-refresh:hover:not(:disabled){color:var(--text);background:var(--hover)}.group-head-refresh:disabled{opacity:.5;cursor:default}.spinning{animation:.9s linear infinite maxy-spin}.side-new-session-row{align-items:center;gap:6px;padding:8px 10px 4px;display:flex;position:relative}.side-new-session{color:#000;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:6px 10px;font-family:inherit;font-size:13px;font-weight:500;line-height:1.4;display:inline-flex}.side-new-session:disabled{opacity:.5;cursor:default}.side-new-session svg{flex-shrink:0}.side-mode-trigger{background:var(--surface);border-radius:var(--radius-sm);height:28px;color:var(--text);cursor:pointer;text-transform:none;border:none;align-items:center;gap:4px;margin-left:auto;padding:0 10px;font-family:inherit;font-size:13px;line-height:1.4;display:inline-flex}.side-mode-trigger:hover:not(:disabled){background:var(--hover);color:var(--text)}.side-mode-trigger:disabled{opacity:.5;cursor:default}.side-mode-trigger svg{opacity:.6;flex-shrink:0}.side-mode-popover{z-index:30;background:var(--bg-chat);border:1px solid var(--border-strong);border-radius:var(--radius-md);min-width:220px;box-shadow:var(--shadow-md);flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 2px);right:10px}.side-mode-popover-head{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);justify-content:space-between;align-items:center;padding:6px 10px 4px;font-size:10px;display:flex}.side-mode-popover-shortcut{font-family:var(--font-mono);color:var(--text-tertiary);text-transform:none;letter-spacing:0;align-items:center;gap:4px;font-size:13px;display:inline-flex}.side-mode-popover-item{cursor:pointer;border-radius:var(--radius-sm);color:var(--text);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;padding:6px 10px;font-family:inherit;font-size:13px;display:flex}.side-mode-popover-item:hover{background:var(--hover)}.new-session-modal-overlay{z-index:1000;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.new-session-modal{background:var(--color-alias-surface-canvas);color:var(--color-alias-text-primary);padding:var(--space-5);border-radius:var(--radius-md);gap:var(--space-3);flex-direction:column;width:560px;max-width:calc(100vw - 32px);display:flex;box-shadow:0 12px 32px #0000004d}.new-session-modal-title{font-size:var(--typography-fontSize-md);color:var(--text);margin:0;font-weight:600}.new-session-modal-form{gap:var(--space-3);flex-direction:column;margin:0;display:flex}.new-session-modal-actions,.new-session-modal-pickers{align-items:center;gap:var(--space-2);display:flex}.new-session-modal-picker-wrap{position:relative}.new-session-modal-buttons{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.new-session-modal-submit{background:var(--bg-chat);width:32px;height:32px;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-md);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.new-session-modal-submit:hover:not(:disabled){background:var(--hover);border-color:var(--text-tertiary)}.new-session-modal-submit:disabled{opacity:.45;cursor:default}@keyframes maxy-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pin-zone{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);text-align:center;font-family:var(--font-mono);color:var(--text-tertiary);letter-spacing:.06em;text-transform:uppercase;margin:0 6px;padding:12px;font-size:10.5px}.conv{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;margin-bottom:1px;padding:6px 10px;font-family:inherit;font-size:13px;line-height:1.4;display:flex;position:relative;overflow:hidden}.conv:hover{background:var(--hover);color:var(--text)}.conv.active{background:var(--bg-chat);color:var(--text);font-weight:500}.session-status{flex-shrink:0;justify-content:flex-start;align-items:center;gap:2px;width:18px;display:inline-flex}.session-status-idle:before{content:"";background:var(--sage);border-radius:50%;width:6px;height:6px}.session-status-archived:before{content:"";border:1px solid var(--text-tertiary);box-sizing:border-box;border-radius:50%;width:6px;height:6px}.session-status-detached:before{content:"";border:1px solid var(--sage);box-sizing:border-box;border-radius:50%;width:6px;height:6px}.session-status-busy .session-status-dot{background:var(--sage);border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite session-status-busy-pulse}.session-status-busy .session-status-dot:nth-child(2){animation-delay:.15s}.session-status-busy .session-status-dot:nth-child(3){animation-delay:.3s}@keyframes session-status-busy-pulse{0%,80%,to{opacity:.2;transform:scale(.85)}40%{opacity:1;transform:scale(1)}}.session-view-controls{flex-direction:column;gap:4px;padding:4px 10px 6px;display:flex}.session-view-segmented{background:var(--hover);border-radius:var(--radius-sm);align-items:center;gap:2px;padding:2px;display:inline-flex}.session-view-tab{color:var(--text-tertiary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:3px;flex:1;padding:3px 8px;font-size:11px}.session-view-tab:hover{color:var(--text-secondary)}.session-view-tab.active{background:var(--surface);color:var(--text);font-weight:500}.session-view-connection{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:4px;margin-right:4px}.session-view-connection.connected{background:var(--sage)}button.session-view-connection{background:var(--text-tertiary);appearance:none;border:0;padding:0}.session-view-connection.disconnected{cursor:pointer}.session-view-connection.disconnected:hover,.session-view-connection.disconnected:focus-visible{outline:2px solid var(--text-tertiary);outline-offset:2px}.conv-name{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.conv-kind{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sage);opacity:.7;border:1px solid;border-radius:3px;flex-shrink:0;margin-left:auto;padding:2px 5px;font-size:9.5px}.conv-kind[data-kind=agent]{color:var(--copper)}.conv-name-button{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:stretch;gap:1px;margin:0;padding:0;display:flex;overflow:hidden}.conv-name-button:focus-visible{outline:2px solid var(--sage);outline-offset:1px;border-radius:var(--radius-sm)}.conv-name-line{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.conv-timestamp{color:var(--text-tertiary);font-size:10.5px;line-height:1.2;font-family:var(--font-mono);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.conv{--conv-base:var(--surface);--conv-overlay:transparent}.conv:hover{--conv-overlay:var(--hover)}.conv.active,.conv-editing{--conv-base:var(--bg-chat);--conv-overlay:transparent}.conv .conversations-row-actions{background:linear-gradient(to right, transparent 0, var(--conv-overlay) 16px), linear-gradient(to right, transparent 0, var(--conv-base) 16px);border-radius:var(--radius-sm);opacity:0;pointer-events:none;flex-shrink:0;align-items:center;gap:2px;margin-left:0;padding:2px 2px 2px 16px;transition:opacity .12s;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.conv:hover .conversations-row-actions,.conv:focus-within .conversations-row-actions{opacity:1;pointer-events:auto}.conv>.conversations-action{align-self:flex-start;margin-top:-5px}.conv-pre-flush{opacity:.85}.conv-editing{cursor:default;background:var(--bg-chat)}.conv-edit-loading{min-width:0;color:var(--text-secondary);flex:1;align-items:center;gap:6px;font-size:13px;display:inline-flex}.conv-edit-inline{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.conv-edit-inline .conversations-edit-input{flex:1;min-width:0}@media (width<=640px){.conv .conversations-row-actions{opacity:1;pointer-events:auto}}.side-foot{border-top:1px solid var(--border);background:var(--surface);align-items:center;gap:10px;padding:10px 12px;display:flex}.avatar{background:linear-gradient(135deg, var(--sage), var(--sage-deep));color:#fff;width:30px;height:30px;font-family:var(--font-display);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:500;display:inline-flex;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%;display:block}.who{flex-direction:column;flex:1;min-width:0;line-height:1.2;display:flex;overflow:hidden}.who .name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.who .role{color:var(--text-tertiary);font-size:11px;font-family:var(--font-mono);letter-spacing:.04em}.system-stats{border-top:1px solid var(--border);background:var(--surface);font-family:var(--font-mono);color:var(--text-tertiary);letter-spacing:.04em;padding:6px 12px 8px;font-size:11px}.system-stats__metric{grid-template-columns:64px 1fr;align-items:center;gap:8px;margin-top:4px;display:grid}.system-stats__metric:first-child{margin-top:0}.system-stats__fig{white-space:nowrap}.system-stats__bar{background:color-mix(in srgb, var(--border) 60%, transparent);border-radius:2px;height:4px;overflow:hidden}.system-stats__bar-fill{height:100%;transition:width .4s,background .4s}.system-stats--warn,.system-stats__fig--warn{color:var(--danger,#c0392b)}@keyframes system-stats-crit-pulse{0%,to{background:color-mix(in srgb, var(--danger,#c0392b) 10%, var(--surface))}50%{background:color-mix(in srgb, var(--danger,#c0392b) 22%, var(--surface))}}.system-stats--crit{animation:1.2s ease-in-out infinite system-stats-crit-pulse}.platform.sidebar-collapsed .system-stats{display:none}.artefact{border-left:1px solid var(--border);background:var(--surface);grid-template-rows:48px auto 1fr auto;min-height:0;display:grid}.artefact[data-open=false]{display:none}.art-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:0 12px;display:flex;overflow:hidden}.art-head .left{align-items:center;gap:6px;min-width:0;display:inline-flex}.art-head .file-name{font-family:var(--font-mono);color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.art-head .file-tag{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--copper);border:1px solid var(--copper);border-radius:3px;flex-shrink:0;padding:2px 5px;font-size:9.5px}.art-head .right{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.art-toolbar{border-bottom:1px solid var(--border);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--text-tertiary);align-items:center;gap:10px;padding:8px 22px;font-size:10.5px;display:flex;overflow:hidden}.art-toolbar .seg{white-space:nowrap;align-items:center;gap:6px;display:inline-flex;overflow:hidden}.art-toolbar .seg .bullet{background:var(--sage);border-radius:50%;flex-shrink:0;width:4px;height:4px}.art-toolbar .seg strong{color:var(--text);font-weight:500}.art-toolbar .right-meta{white-space:nowrap;flex-shrink:0;margin-left:auto}.art-body{background:var(--bg);scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;min-height:0;padding:24px 26px 32px;display:flex;overflow-y:auto}.art-body::-webkit-scrollbar{width:6px}.art-body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}.art-body .editor-base.doc-editor{background:0 0;border:none;flex:1;min-height:0;padding:0}.art-body .doc-editor__body{flex:1;min-height:0;max-height:none}.art-body .doc-editor__fallback{height:100%;overflow:auto}.art-body .art-pdf{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-chat);flex:1;width:100%}.art-skip-banner{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-secondary);align-self:flex-start;align-items:center;gap:8px;padding:12px 14px;font-size:13px;display:inline-flex}.art-skip-banner svg{color:var(--copper);flex-shrink:0}.art-pdf-fallback{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);cursor:pointer;align-self:flex-start;align-items:center;gap:12px;padding:14px 16px;text-decoration:none;transition:background .12s,border-color .12s;display:flex}.art-pdf-fallback:hover{border-color:var(--border-strong);background:var(--bg-chat)}.art-pdf-fallback svg{color:var(--copper);flex-shrink:0}.art-pdf-fallback-text{flex-direction:column;gap:2px;display:flex}.art-pdf-fallback-name{font-size:13px;font-weight:500}.art-pdf-fallback-hint{color:var(--text-secondary);font-size:11px}.art-save-error{border-radius:var(--radius-sm);color:var(--danger);font-size:12px;font-family:var(--font-mono);background:#b4444414;margin-bottom:8px;padding:8px 10px}.art-foot{border-top:1px solid var(--border);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--text-tertiary);justify-content:space-between;align-items:center;gap:8px;padding:8px 14px;font-size:10px;display:flex}.art-foot .left,.art-foot .right{align-items:center;gap:8px;display:inline-flex}.art-foot .sep{opacity:.4}.art-foot .in-sync{color:var(--sage)}.admin-page .chat-logo-btn{background:0 0;border:0;align-items:center;margin:0;padding:0;display:inline-flex}.scrim{z-index:40;opacity:0;pointer-events:none;background:#00000052;transition:opacity .2s;position:fixed;inset:0}@media (width<=1280px){.platform{grid-template-columns:var(--side-px,244px) 1fr var(--artefact-px,380px)}.platform[data-artefact=closed]{grid-template-columns:var(--side-px,244px) 1fr}}@media (width<=1080px){.platform,.platform[data-artefact=closed]{grid-template-columns:var(--side-px,248px) 1fr}.platform .artefact,.platform .art-resize-handle{display:none}}@media (width<=720px){.platform,.platform[data-artefact=closed]{grid-template-columns:1fr}.platform>.side{z-index:50;grid-template-rows:auto auto 1fr auto;width:min(86vw,320px);display:grid;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:2px 0 16px #0000002e}.platform.menu-open>.side{transform:translate(0)}.platform.drawer-animating>.side{transition:transform .22s}.platform.menu-open .scrim{opacity:1;pointer-events:auto}.platform .side-resize-handle{display:none}}.platform.sidebar-collapsed{grid-template-columns:56px 1fr var(--artefact-px,440px)}.platform.sidebar-collapsed[data-artefact=closed]{grid-template-columns:56px 1fr}.platform.sidebar-collapsed .side-resize-handle{display:none}@media (width<=1280px){.platform.sidebar-collapsed{grid-template-columns:56px 1fr var(--artefact-px,380px)}.platform.sidebar-collapsed[data-artefact=closed]{grid-template-columns:56px 1fr}}@media (width<=1080px){.platform.sidebar-collapsed{grid-template-columns:56px 1fr}.platform.sidebar-collapsed .artefact{display:none}}.platform.sidebar-collapsed .nav-row{box-shadow:none;background:0 0;grid-template-columns:none;justify-content:center;align-items:center;padding:4px 0;display:flex}.platform.sidebar-collapsed .nav-row.active{box-shadow:none;background:0 0}.platform.sidebar-collapsed .nav-row svg{border-radius:var(--radius-sm);box-sizing:content-box;padding:6px;transition:background-color .15s,color .15s}.platform.sidebar-collapsed .nav-row:not(:disabled):hover svg{background:var(--hover);color:var(--text)}.platform.sidebar-collapsed .nav-row.active svg{background:var(--bg-chat);box-shadow:var(--shadow-sm);color:var(--sage)}.platform.sidebar-collapsed .nav-row .label,.platform.sidebar-collapsed .nav-row .kbd{display:none}.platform.sidebar-collapsed .side-list{padding:4px 6px}.platform.sidebar-collapsed .side .group-head,.platform.sidebar-collapsed .side .conv,.platform.sidebar-collapsed .side .conv-channel-filter{display:none}.platform.sidebar-collapsed .side-foot{justify-content:center;padding:10px 0}.platform.sidebar-collapsed .side-foot .who,.platform.sidebar-collapsed .side-foot .avatar,.platform.sidebar-collapsed .side-new-session-row{display:none}@media (width<=1080px){.platform[data-artefact=open] .artefact{z-index:60;box-shadow:var(--shadow-lg);border-left:none;display:grid;position:fixed;inset:0}}.side-foot{z-index:51;position:relative}.chat-actions-menu{flex-direction:column;display:flex}.chat-actions-menu .chat-action{cursor:pointer;border-radius:var(--radius-sm);color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:8px 10px;font-family:inherit;font-size:13px;display:flex}.chat-actions-menu .chat-action:hover:not(:disabled){background:var(--hover)}.chat-actions-menu .chat-action:disabled{color:var(--text-tertiary);cursor:not-allowed}.chat-actions-menu .chat-action svg{color:var(--text-tertiary);flex-shrink:0}.artefact-ref-card{background:0 0;border:none;margin-top:8px;padding:0}.artefact-ref-button{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);cursor:pointer;text-align:left;width:100%;max-width:460px;color:var(--text);grid-template-columns:32px 1fr auto;align-items:center;gap:12px;padding:10px 12px;font-family:inherit;display:grid}.artefact-ref-button:hover{border-color:var(--copper)}.artefact-ref-icon{background:var(--bg-chat);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--copper);justify-content:center;align-items:center;display:inline-flex}.artefact-ref-meta{flex-direction:column;min-width:0;display:flex}.artefact-ref-name{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:500;overflow:hidden}.artefact-ref-tag{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-tertiary);text-transform:uppercase;font-size:10.5px}.artefact-ref-open{color:var(--text-tertiary);flex-shrink:0}.artefact-ref-button:hover .artefact-ref-open{color:var(--copper)}.nav-row:disabled{cursor:not-allowed;opacity:.5}.nav-row:disabled:hover{color:var(--text-secondary);background:0 0}.art-resize-handle{top:0;bottom:0;right:var(--artefact-px,440px);cursor:col-resize;z-index:30;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border-left:1px solid #0000;width:8px;transition:border-color .12s,background-color .12s;position:absolute;transform:translate(50%)}.art-resize-handle:hover,.art-resize-handle.dragging{border-left-color:var(--copper);background:#00000005}.art-resize-handle.dragging{z-index:60}.platform[data-artefact=closed] .art-resize-handle{display:none}.side-resize-handle{top:0;bottom:0;left:var(--side-px,264px);cursor:col-resize;z-index:30;-webkit-user-select:none;user-select:none;touch-action:none;background:0 0;border-left:1px solid #0000;width:8px;transition:border-color .12s,background-color .12s;position:absolute;transform:translate(-50%)}.side-resize-handle:hover,.side-resize-handle.dragging{border-left-color:var(--copper);background:#00000005}.side-resize-handle.dragging{z-index:60}.art-body[data-surface=browser],.art-body[data-surface=data],.art-body[data-surface=graph]{background:var(--surface);padding:0}.browser-surface__iframe{background:#111;border:none;width:100%;height:100%;display:block}.data-panel{background:var(--bg-chat)}.art-body[data-surface=data] .data-main{gap:16px;padding:16px;display:grid}.art-body[data-surface=data] .data-panel{border:1px solid var(--border);border-radius:var(--radius-md);background:0 0;padding:14px 16px}.art-body[data-surface=data] .data-panel-title{color:var(--text)}.art-body[data-surface=data] .data-panel-subtitle{color:var(--text-tertiary)}.art-body[data-surface=data] .data-search-input{border-color:var(--border-strong);background:var(--surface)}.art-body[data-surface=data] .data-search-input:focus-within{border-color:var(--copper)}.art-body[data-surface=data] .data-crumb{color:var(--text-secondary)}.art-body[data-surface=data] .data-crumb:hover{color:var(--copper)}.art-body[data-surface=graph]{flex-direction:column;display:flex}.art-body[data-surface=graph] .graph-main{flex:1;min-height:0}.art-head .art-head-surface-icon{color:var(--copper);flex-shrink:0}.sessions-header-actions{gap:8px;margin-left:auto;display:flex}.sessions-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.sessions-row{background:#ffffff80;border:1px solid #00000014;border-radius:8px;align-items:center;gap:12px;padding:12px 16px;display:flex}.sessions-row-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.sessions-row-name{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600;overflow:hidden}.sessions-row-meta{opacity:.6;font-size:12px}.sessions-row-actions{flex-shrink:0;gap:6px;display:flex}.sessions-row-end:hover:not(:disabled){color:#dc2626;background:#dc262614;border-color:#dc26264d}.admin-page .admin-header{text-align:left;border-bottom:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 24px;display:grid}.admin-page .admin-sidebar-toggle{width:36px;height:36px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.admin-page .admin-sidebar-toggle:hover{color:var(--sage)}.admin-burger{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;align-items:center;padding:6px;transition:color .15s;animation:2.4s ease-in-out 3 iconHeartbeat;display:flex}.admin-burger:hover{color:var(--sage);animation:none}.admin-menu{background:var(--bg);border:1px solid var(--border);z-index:100;border-radius:8px;min-width:160px;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 4px 12px #00000014}.admin-menu .chat-menu-agent-item{align-items:flex-start;padding-left:20px}.admin-shell-root{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}@media (width<=640px){.admin-page .admin-header{padding:12px 16px}}
@@ -1 +1 @@
1
- import{u as e}from"./ChatInput-CJo_77bp.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};
1
+ import{u as e}from"./ChatInput-CvRaT05l.js";var t=e();function n({checked:e,onChange:n,label:r,disabled:i}){return(0,t.jsxs)(`label`,{className:`maxy-checkbox${i?` maxy-checkbox--disabled`:``}`,children:[(0,t.jsx)(`input`,{type:`checkbox`,checked:e,onChange:e=>n(e.target.checked),disabled:i}),(0,t.jsx)(`span`,{className:`maxy-checkbox__box`,children:`✱`}),r&&(0,t.jsx)(`span`,{className:`maxy-checkbox__label`,children:r})]})}export{n as t};