@rubytech/create-maxy-code 0.1.300 → 0.1.301

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 (92) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/PLUGIN.md +10 -10
  3. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +84 -84
  4. package/payload/platform/plugins/admin/skills/public-agent-manager/SKILL.md +4 -4
  5. package/payload/platform/plugins/aeo/PLUGIN.md +1 -1
  6. package/payload/platform/plugins/business-assistant/skills/e-sign/SKILL.md +4 -4
  7. package/payload/platform/plugins/cloudflare/references/manual-setup.md +14 -8
  8. package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +3 -0
  9. package/payload/platform/plugins/contacts/PLUGIN.md +1 -1
  10. package/payload/platform/plugins/docs/references/admin-identity-gate.md +6 -6
  11. package/payload/platform/plugins/docs/references/admin-session.md +15 -15
  12. package/payload/platform/plugins/docs/references/admin-ui.md +18 -18
  13. package/payload/platform/plugins/docs/references/aeo.md +1 -1
  14. package/payload/platform/plugins/docs/references/deployment.md +3 -3
  15. package/payload/platform/plugins/docs/references/internals.md +28 -28
  16. package/payload/platform/plugins/docs/references/platform.md +21 -21
  17. package/payload/platform/plugins/docs/references/plugins-guide.md +3 -3
  18. package/payload/platform/plugins/docs/references/troubleshooting.md +6 -6
  19. package/payload/platform/plugins/docs/references/visitor-graph.md +3 -3
  20. package/payload/platform/plugins/email/PLUGIN.md +2 -2
  21. package/payload/platform/plugins/email/references/email-reference.md +2 -2
  22. package/payload/platform/plugins/linkedin-import/skills/linkedin-import/SKILL.md +2 -2
  23. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  24. package/payload/platform/plugins/memory/PLUGIN.md +9 -9
  25. package/payload/platform/plugins/memory/references/graph-primitives.md +2 -2
  26. package/payload/platform/plugins/memory/references/schema-base.md +14 -14
  27. package/payload/platform/plugins/memory/references/transcript-formats/circleback.md +1 -1
  28. package/payload/platform/plugins/memory/references/transcript-formats/otter.md +1 -1
  29. package/payload/platform/plugins/memory/skills/conversation-archive/SKILL.md +6 -6
  30. package/payload/platform/plugins/memory/skills/conversation-archive-enrich/SKILL.md +1 -1
  31. package/payload/platform/plugins/memory/skills/conversation-archive-mcp/SKILL.md +8 -8
  32. package/payload/platform/plugins/memory/skills/document-ingest/SKILL.md +5 -5
  33. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +1 -1
  34. package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +1 -1
  35. package/payload/platform/plugins/slides/PROVENANCE.md +1 -1
  36. package/payload/platform/plugins/substack-import/skills/substack-import/SKILL.md +1 -1
  37. package/payload/platform/plugins/telegram/PLUGIN.md +1 -1
  38. package/payload/platform/plugins/url-get/PLUGIN.md +2 -2
  39. package/payload/platform/plugins/whatsapp/.claude-plugin/plugin.json +1 -1
  40. package/payload/platform/plugins/whatsapp/PLUGIN.md +5 -5
  41. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +5 -5
  42. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +1 -1
  43. package/payload/platform/plugins/workflows/PLUGIN.md +1 -1
  44. package/payload/platform/plugins/x-import/PLUGIN.md +2 -2
  45. package/payload/platform/plugins/x-import/skills/x-import/SKILL.md +1 -1
  46. package/payload/platform/scripts/__tests__/check-no-task-id-leaks.test.sh +125 -0
  47. package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +253 -0
  48. package/payload/platform/scripts/check-no-task-id-leaks.mjs +54 -6
  49. package/payload/platform/scripts/resume-tunnel.sh +89 -5
  50. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +14 -0
  51. package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
  52. package/payload/platform/services/whatsapp-channel/dist/notification.js +11 -0
  53. package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
  54. package/payload/platform/services/whatsapp-channel/dist/server.d.ts +4 -0
  55. package/payload/platform/services/whatsapp-channel/dist/server.d.ts.map +1 -1
  56. package/payload/platform/services/whatsapp-channel/dist/server.js +54 -3
  57. package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
  58. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts +18 -0
  59. package/payload/platform/services/whatsapp-channel/dist/turn-follow.d.ts.map +1 -0
  60. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js +137 -0
  61. package/payload/platform/services/whatsapp-channel/dist/turn-follow.js.map +1 -0
  62. package/payload/platform/templates/specialists/agents/database-operator.md +1 -1
  63. package/payload/platform/templates/specialists/agents/librarian.md +2 -2
  64. package/payload/server/public/assets/{AdminShell-BFdBxg4P.js → AdminShell-BJrxifYa.js} +1 -1
  65. package/payload/server/public/assets/{Checkbox-BZ1XbA1t.js → Checkbox-C7bBRzLP.js} +1 -1
  66. package/payload/server/public/assets/{Transcript-CaVix6W0.js → Transcript-bGy_Gx99.js} +1 -1
  67. package/payload/server/public/assets/admin-jYKA7jR5.js +1 -0
  68. package/payload/server/public/assets/{audio-attachment-mime-CFyc3gpD.js → audio-attachment-mime-DL5R1M2A.js} +1 -1
  69. package/payload/server/public/assets/{browser-ClnGUKp-.js → browser-7fyPCFWB.js} +1 -1
  70. package/payload/server/public/assets/{chat-ZTAhSoJV.js → chat-UF9ATDwe.js} +1 -1
  71. package/payload/server/public/assets/{data-DDjeQQ7e.js → data-CIJnkfgX.js} +1 -1
  72. package/payload/server/public/assets/{file-download-DBMW0BNz.js → file-download-gth6Gpmn.js} +1 -1
  73. package/payload/server/public/assets/{graph-CR74qec3.js → graph-DHnB3BHK.js} +1 -1
  74. package/payload/server/public/assets/{graph-labels-1Uz0ZBRd.js → graph-labels-huk-fKcY.js} +1 -1
  75. package/payload/server/public/assets/jsx-runtime-DZddXDvJ.css +1 -0
  76. package/payload/server/public/assets/operator-D3QAzlPs.js +1 -0
  77. package/payload/server/public/assets/page-86edaOS1.js +1 -0
  78. package/payload/server/public/assets/{public-W-HholkU.js → public-B4LqL6lA.js} +1 -1
  79. package/payload/server/public/assets/{useSelectionMode-geYq13zs.js → useSelectionMode-lrH0qwAR.js} +1 -1
  80. package/payload/server/public/browser.html +6 -6
  81. package/payload/server/public/chat.html +8 -8
  82. package/payload/server/public/data.html +5 -5
  83. package/payload/server/public/graph.html +8 -8
  84. package/payload/server/public/index.html +9 -9
  85. package/payload/server/public/operator.html +9 -9
  86. package/payload/server/public/public.html +6 -6
  87. package/payload/server/server.js +51 -6
  88. package/payload/server/public/assets/admin-BK7xIr3o.js +0 -1
  89. package/payload/server/public/assets/jsx-runtime-BqGVUT1h.css +0 -1
  90. package/payload/server/public/assets/operator-QP_z97s8.js +0 -1
  91. package/payload/server/public/assets/page-CLijftr1.js +0 -1
  92. /package/payload/server/public/assets/{jsx-runtime-D3JkFIbi.js → jsx-runtime-CMu8uN0-.js} +0 -0
@@ -0,0 +1 @@
1
+ :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;--ink-900:#2a2d38;--ink-700:#4a4d58;--ink-400:#9ea0a8;--paper-100:#fff;--paper-200:#f6f5f2;--rule-100:#e4e3de;--measure:36rem;--container:84rem;--gutter:clamp(1.5rem, 4vw, 5rem)}.public-surface{--bg:var(--paper-200);--bg-chat:var(--paper-100);--surface:var(--paper-200);--surface-cool:var(--paper-200);--text:var(--ink-900);--text-secondary:var(--ink-700);--text-tertiary:var(--ink-400);--border:var(--rule-100);--border-strong:var(--rule-100);--sage:var(--ink-900);--sage-hover:var(--ink-700);--sage-deep:var(--ink-900);--sage-subtle:#2a2d380f;--sage-glow:#2a2d381f;--maxy-bubble:var(--paper-100);--visitor-bubble:var(--paper-200);--chat-measure:48rem;--font-display:"Newsreader", Georgia, serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, sans-serif;background:var(--paper-200);color:var(--ink-900)}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:calc(var(--chat-measure) + 2 * var(--gutter));padding:0 var(--gutter);margin:0 auto}.chat-content{min-height:0;max-width:var(--chat-measure);flex-direction:column;flex:1;width:100%;margin:0 auto;padding:0;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}.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)}.public-surface .message.visitor .bubble{border:1px solid var(--border)}.public-surface .message.maxy .bubble{background:0 0;border-radius:0;width:100%;max-width:none;padding:0}.public-surface .message.maxy .markdown-message{font-family:var(--font-display);font-size:18px;line-height:1.75}.public-surface .message.maxy .md-heading{font-family:var(--font-display)}.public-surface .message.maxy h1.md-heading{font-size:25px}.public-surface .message.maxy h2.md-heading{font-size:21px}.public-surface .message.maxy h3.md-heading{font-size:19px}.public-surface .message.maxy .md-list-item{font-size:18px;line-height:1.75}.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-item:focus-visible{background:var(--surface);color:var(--text);outline:none}.chat-menu-disconnect{color:var(--danger);justify-content:space-between}.chat-menu-disconnect svg{color:var(--danger)}.chat-menu-disconnect:hover{color:var(--danger-hover)}.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)}.webchat-composer-box.drag-over{outline:2px dashed var(--sage);outline-offset:6px}.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}.platform>.data-page{height:100%;min-height:0;overflow:hidden}.platform>.data-page>.data-main{flex:1;min-height:0}.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;width:100%;max-width:960px;margin:0 auto;display:flex}.data-body{flex-direction:column;flex:1;gap:24px;min-height:0;padding:24px;display:flex;overflow-y:auto}.data-panel{background:#ffffff80;padding:20px}.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-btn-label{white-space:nowrap}.data-toolbar{background:var(--chat-bg,#fff);border-bottom:1px solid #00000014;flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:14px 24px;display:flex}.data-toolbar .data-search-input{flex:1;min-width:120px}.data-toolbar .data-btn{flex:none}.data-toolbar .data-breadcrumbs{flex-basis:100%;order:1}.data-back-btn{padding:6px 8px}.data-page-full{height:100dvh;min-height:0;overflow:hidden}.data-page-full>.data-main{flex:1;min-height:0}.data-home-btn{flex:none;padding:6px 8px}.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-locate{color:inherit;opacity:.65;cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;margin-top:6px;padding:2px 0;font-size:12px;display:inline-flex}.data-result-locate:hover{opacity:1;text-decoration:underline}.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-result-updated{opacity:.8}.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:nowrap;flex:0 auto;align-items:center;gap:4px;min-width:0;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;flex:none}.data-crumb-wrap{align-items:center;gap:4px;min-width:0;display:inline-flex}.data-crumb-wrap .data-crumb{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.data-back-btn{flex:none}.data-crumb-ellipsis{flex:none;font-weight:600}.data-breadcrumbs .data-crumb-wrap{position:relative}.data-crumb-menu{z-index:10;background:var(--chat-bg,#fff);border:1px solid #0000001f;border-radius:8px;flex-direction:column;min-width:160px;max-width:320px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 6px 24px #0000001f}.data-crumb-menu-item{color:inherit;cursor:pointer;text-align:left;font:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:6px 10px;font-size:13px;overflow:hidden}.data-crumb-menu-item:hover{background:#0000000d}.data-entries{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.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}@media (width<=640px){.data-entry-btn{flex-wrap:wrap}.data-entry-name{flex:auto}.data-entry-download-icon{order:1}.data-entry-meta{white-space:normal;flex-basis:100%;order:2;padding-left:24px}}.data-search-inline-btn{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:4px;display:inline-flex}.data-search-inline-btn:hover:not(:disabled){opacity:1;background:#0000000d}.data-search-inline-btn:disabled{opacity:.4;cursor:not-allowed}.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}.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)}@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}}.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)}@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}.conv-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.conv-stack{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.conv-icon{color:var(--sage);flex-shrink:0}.conv-icon[data-kind=agent]{color:var(--copper)}.conv-live-dot{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:7px;height:7px}.conv-live-dot[data-live="1"]{background:var(--sage)}.conv-rc-icon{opacity:.7;color:var(--text-tertiary);flex-shrink:0}.conv:hover .conv-rc-icon{opacity:1;color:var(--text)}.conv:disabled{cursor:default}.conv:disabled:hover{color:var(--text-secondary);background:0 0}.conv-with-actions{align-items:flex-start;gap:4px;padding:0;display:flex}.conv-with-actions .conv-main-static{min-width:0;color:inherit;white-space:nowrap;cursor:default;flex:1;align-items:center;gap:8px;padding:6px 4px 6px 10px;display:flex;overflow:hidden}.conv-with-actions .conv-actions{flex-shrink:0;align-items:center;gap:2px;margin-right:6px;padding-top:3px;display:inline-flex}.conv-with-actions .conv-action{width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);opacity:.5;background:0 0;border:none;justify-content:center;align-items:center;transition:opacity .12s,background-color .12s,color .12s;display:inline-flex}.conv-with-actions:hover .conv-action,.conv-with-actions:focus-within .conv-action{opacity:1}.conv-with-actions .conv-action:hover{background:var(--hover);color:var(--text)}.conv-with-actions .conv-action:disabled{cursor:default;opacity:.3}.conv-with-actions .conv-action:disabled:hover{color:var(--text-tertiary);background:0 0}.conv-with-actions .conv-action.conv-action-danger:hover{background:var(--hover);color:var(--danger)}.conv-with-actions .conv-ephemeral{width:22px;height:22px;color:var(--text-tertiary);cursor:default;opacity:.35;justify-content:center;align-items:center;display:inline-flex}.side-account-id{color:var(--text-tertiary);-webkit-user-select:text;user-select:text;padding:4px 10px 6px;font-size:10px}.side-account-id code{font-family:var(--font-mono);word-break:break-all;font-size:10px}.artefact-filter-chips{gap:4px;padding:2px 10px 6px;display:flex}.artefact-filter-chip{border:1px solid var(--border-strong);border-radius:var(--radius-full);color:var(--text-tertiary);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;align-items:center;gap:5px;padding:3px 8px;font-size:10px;transition:color .12s,background-color .12s,border-color .12s;display:inline-flex}.artefact-filter-chip:hover:not(:disabled){color:var(--text);background:var(--hover)}.artefact-filter-chip.active{color:var(--text);border-color:var(--text);background:var(--bg-chat)}.artefact-filter-chip:disabled{opacity:.4;cursor:default}.artefact-filter-chip-count{opacity:.7;font-size:9.5px}.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-session-id{font-family:var(--font-mono);color:var(--text-tertiary);-webkit-user-select:text;user-select:text}.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}.conv-with-actions{border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;gap:0}.conv-with-actions:last-child{border-bottom:none}.conv-with-actions .conv-main-static{padding-bottom:2px}.conv-with-actions .conv-actions{margin-right:0;padding:0 0 6px 28px}.conv-with-actions .conv-action,.conv-with-actions .conv-ephemeral{opacity:1}.conv-with-actions .conv-action:disabled{opacity:.3}}.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=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}.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:220px;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}.chat-menu-claude-icon{flex-shrink:0;width:14px;height:14px}.admin-shell-root{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}@media (width<=640px){.admin-page .admin-header{padding:12px 16px}}.vnc-surface{flex-direction:column;flex:auto;min-height:0;display:flex}.vnc-surface__toolbar{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 12px;display:flex}.vnc-surface__btn{cursor:pointer;border:1px solid var(--border-strong);background:0 0;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:inline-flex}.vnc-surface__btn:disabled{opacity:.6;cursor:default}.vnc-surface__error{color:var(--danger);font-size:12px}.vnc-surface__iframe{border:0;flex:auto;width:100%;min-height:0}.vnc-surface__unavailable{color:var(--text-secondary);text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:12px;padding:48px 20px;display:flex}.wa-reader{height:100%;min-height:0;position:relative}.wa-reader-thread{background:#efeae2 url(/whatsapp-wallpaper.webp);height:100%;min-height:0;overflow-y:auto}.wa-jump{border:1px solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:50%;font-size:16px;line-height:1;position:absolute;bottom:16px;right:16px;box-shadow:0 2px 8px #0000002e}.wa-jump:hover{border-color:var(--text-tertiary)}.wa-clean-toggle{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:16px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:1;display:inline-flex;position:absolute;bottom:16px;right:16px;box-shadow:0 2px 8px #0000002e}.wa-clean-toggle:hover{border-color:var(--text-tertiary)}.wa-clean-label{font-weight:500}.wa-switch{background:var(--text-tertiary,#b0b0b0);border-radius:8px;flex-shrink:0;width:30px;height:16px;transition:background .12s;position:relative}.wa-switch-thumb{background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .12s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}.wa-clean-toggle.is-active .wa-switch{background:#25d366}.wa-clean-toggle.is-active .wa-switch-thumb{transform:translate(14px)}.wa-reader--clean-toggle .wa-jump{bottom:60px}.wa-thread-scroll{flex-direction:column;gap:12px;max-width:760px;margin:0 auto;padding:24px;display:flex}.wa-reader-placeholder{text-align:center;opacity:.6;padding:32px 16px;font-size:14px}.wa-reader-error{color:#b42318;padding:8px 12px;font-size:13px}.channel-icon{flex-shrink:0}.wa-turn{border-radius:12px;flex-direction:column;gap:4px;max-width:78%;padding:8px 12px;display:flex}.wa-who{opacity:.55;font-size:11px;font-weight:600}.wa-turn-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.wa-time{opacity:.4;font-variant-numeric:tabular-nums;font-size:11px}.wa-body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px}.wa-turn-in{background:#fff;align-self:flex-start;box-shadow:0 1px .5px #0b141a21}.wa-turn-typed{border:1px dashed #0003}.wa-turn-out{background:#d9fdd3;align-self:flex-end}.wa-turn-think{opacity:.7;background:#fff9;align-self:flex-end;font-style:italic}.wa-doc{word-break:break-word;margin:0;font-size:14px}.wa-turn-tool,.wa-turn-result,.wa-turn-directive{background:0 0;border:0;border-radius:0;align-self:stretch;max-width:100%;padding:2px 0}.wa-turn-result.is-error .wa-who{color:#c0392b}.wa-turn-directive{border-left:2px dashed #0000002e;padding-left:8px}.wa-tool-toggle{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:8px;padding:0;display:flex}.wa-tool-toggle .wa-time{margin-left:auto}.wa-chevron{opacity:.5;font-size:10px;line-height:1}.wa-code{white-space:pre-wrap;word-break:break-word;opacity:.85;margin:0;font-size:12px}.webchat-page{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.webchat-page .wa-reader{flex:1;min-height:0}.webchat-page .wa-reader-thread{background:0 0}.webchat-page .wa-turn-directive{background:#00000008}.chat-turn-op{background:#0000000f;border-radius:14px;align-self:flex-end;max-width:76%;padding:8px 12px}.chat-op-body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px}.chat-prose{align-self:stretch}.chat-prose-body{white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px}.chat-prose>.markdown-message{background:0 0;border-radius:0;max-width:none;padding:0;font-size:14px}.chat-doc{word-break:break-word;margin:0 0 4px;font-size:14px}.chat-toolrun{align-self:stretch}.chat-toolrun-toggle{width:100%;color:var(--text-tertiary);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:2px 0;font-size:12px;display:flex}.chat-toolrun-toggle:hover{color:var(--text-secondary)}.chat-toolrun-label{font-size:12px}.chat-toolrun-item{margin:4px 0 4px 16px}.chat-toolrun-name{opacity:.55;font-size:11px;font-weight:600}.webchat-greeting{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;min-height:0;padding:24px;display:flex;overflow-y:auto}.webchat-greeting-head{color:var(--text);text-align:center;margin:0;font-size:22px;font-weight:600}.webchat-greeting-section{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;max-width:480px;padding:12px 16px}.webchat-greeting-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);align-items:center;gap:6px;margin:0 0 8px;font-size:12px;font-weight:600;display:flex}.webchat-greeting-row{justify-content:space-between;align-items:baseline;gap:12px;padding:4px 0;font-size:14px;display:flex}.webchat-greeting-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.webchat-greeting-when,.webchat-greeting-status{color:var(--text-secondary);white-space:nowrap;flex-shrink:0;font-size:13px}.webchat-greeting-row-stacked{flex-direction:column;align-items:flex-start;gap:1px}.webchat-greeting-summary{color:var(--text-secondary);font-size:12.5px;line-height:1.35}.webchat-greeting-none,.webchat-greeting-more{color:var(--text-tertiary);margin:0;font-size:13px}.webchat-greeting-more{padding-top:4px}.webchat-composer{width:100%;max-width:760px;margin:auto auto 0;padding:12px 24px 16px}.webchat-composer-box{border:1px solid var(--border);background:var(--surface);border-radius:14px;flex-direction:column;gap:6px;padding:8px 10px;display:flex}.webchat-composer-box:focus-within{border-color:var(--text-tertiary)}.webchat-input-row{align-items:flex-end;gap:8px;display:flex}.webchat-input{resize:none;color:var(--text);font:inherit;background:0 0;border:none;flex:1;padding:4px 2px;font-size:14px;line-height:1.4}.webchat-input:focus{outline:none}.webchat-send{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--text);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.webchat-send:hover{border-color:var(--text-tertiary)}.webchat-send:disabled{opacity:.45;cursor:default}.webchat-conflict-hint{color:var(--text-tertiary);margin:6px 2px 0;font-size:12px}.webchat-controls{justify-content:space-between;align-items:center;gap:8px;min-height:24px;display:flex}.webchat-controls-left,.webchat-controls-right{align-items:center;gap:6px;display:flex}.webchat-chip{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px}.webchat-model{color:var(--text-tertiary);white-space:nowrap;font-size:11px}.webchat-picker{display:inline-flex;position:relative}.webchat-picker-trigger{color:var(--text-tertiary);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;max-width:180px;padding:2px 6px;font-size:11px;display:inline-flex}.webchat-picker-trigger:hover,.webchat-picker-trigger:focus-visible{border-color:var(--border);color:var(--text-secondary)}.webchat-picker-trigger:disabled{opacity:.45;cursor:default}.webchat-picker-panel{z-index:20;background:var(--surface,#fff);border:1px solid var(--border);border-radius:8px;flex-direction:column;min-width:180px;padding:4px;display:flex;position:absolute;bottom:calc(100% + 4px);right:0;box-shadow:0 6px 18px #0000001f}.webchat-picker-option{text-align:left;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:flex}.webchat-picker-option:hover{background:var(--hover,#0000000d)}.webchat-picker-check{opacity:0;flex:none}.webchat-picker-option[aria-checked=true] .webchat-picker-check{opacity:1}.webchat-effort{align-items:center;gap:6px;display:inline-flex}.webchat-effort-label{color:var(--text-tertiary);white-space:nowrap;font-size:11px}.webchat-effort-slider{cursor:pointer;width:72px;accent-color:var(--accent,#4f46e5)}.webchat-effort-slider:disabled{opacity:.45;cursor:default}.webchat-settings-error{color:var(--danger,#c0392b);white-space:nowrap;font-size:11px}.webchat-control{width:24px;height:24px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.webchat-control:disabled{opacity:.45;cursor:default}.webchat-busy{color:var(--text-secondary)}
@@ -0,0 +1 @@
1
+ import{i as e,t}from"./jsx-runtime-CMu8uN0-.js";import"./file-download-gth6Gpmn.js";import{t as n}from"./page-86edaOS1.js";import"./AdminShell-BJrxifYa.js";import"./useSelectionMode-lrH0qwAR.js";import"./Checkbox-C7bBRzLP.js";import"./Transcript-bGy_Gx99.js";var r=e(),i=t();function a(){return(0,i.jsx)(n,{variant:`operator`})}(0,r.createRoot)(document.getElementById(`root`)).render((0,i.jsx)(a,{}));
@@ -0,0 +1 @@
1
+ import{o as e}from"./chunk-Pqm5yXtL.js";import{a as t,t as n}from"./jsx-runtime-CMu8uN0-.js";import{n as r,s as i}from"./file-download-gth6Gpmn.js";import{n as a,t as o,u as s}from"./AdminShell-BJrxifYa.js";import{c,r as l,s as u}from"./useSelectionMode-lrH0qwAR.js";import{t as d}from"./Checkbox-C7bBRzLP.js";import{n as f}from"./Transcript-bGy_Gx99.js";new Set(`image/jpeg,image/png,image/gif,image/webp,application/pdf,text/plain,text/markdown,text/csv,text/html,text/calendar,application/zip,application/x-zip-compressed,audio/ogg,audio/opus,audio/mp4,audio/mpeg,audio/webm,audio/wav,.opus,.ogg,.m4a,.mp3,.wav,.webm`.split(`,`).filter(e=>!e.startsWith(`.`)));function p(e){switch(e){case`expanded`:return!0;case`collapsed`:return!1;default:return}}var m=`admin-landing-redirected`,h=`/graph`;function g(e){return e.variant===`operator`?!1:e.appState===`chat`&&!e.alreadyRedirected}var _=e(t(),1);function v(e=`admin`){let[t,n]=(0,_.useState)(`loading`),[r,i]=(0,_.useState)(``),[a,o]=(0,_.useState)(``),[c,l]=(0,_.useState)(``),[u,d]=(0,_.useState)(!1),[f,v]=(0,_.useState)(!1),[y,b]=(0,_.useState)(!1),[x,S]=(0,_.useState)(!1),[C,w]=(0,_.useState)(!1),[T,E]=(0,_.useState)(null),[D,O]=(0,_.useState)(null),[k,A]=(0,_.useState)(void 0),[j,M]=(0,_.useState)(null),[N,P]=(0,_.useState)(void 0),[F,I]=(0,_.useState)(null),[L,R]=(0,_.useState)(null),[z,B]=(0,_.useState)([]),[V,H]=(0,_.useState)(!1),[U,W]=(0,_.useState)(void 0),G=(0,_.useRef)(void 0),[K,q]=(0,_.useState)(!1);(0,_.useEffect)(()=>{typeof window>`u`||fetch(`/api/remote-auth/status`).then(e=>e.ok?e.json():null).then(e=>{e?.configured&&q(!0)}).catch(()=>{})},[]);let J=(0,_.useRef)(null),Y=(0,_.useRef)(null);(0,_.useEffect)(()=>{async function e(){let e=null;try{e=sessionStorage.getItem(`maxy-admin-session-key`)}catch{}if(!e)return!1;try{let t=await fetch(`/api/admin/session?session_key=${encodeURIComponent(e)}`);if(t.status===401){try{sessionStorage.removeItem(`maxy-admin-session-key`)}catch{}return!1}if(!t.ok)return!1;let r=await t.json();E(r.session_key),R(r.sessionId??null),A(r.businessName),M(r.role??null),P(r.userName===void 0?null:r.userName),I(r.avatar??null);let i=p(r.thinkingView);return G.current=i,W(i),n(`chat`),!0}catch(e){return console.error(`[admin] session restore failed:`,e),!1}}async function t(r=2){try{let i=await fetch(`/api/health`);if(!i.ok){if(r>0)return await new Promise(e=>setTimeout(e,1500)),t(r-1);console.error(`[admin] health check returned ${i.status} after retries`),n(`set-pin`);return}let a=await i.json();if(!a.pin_configured){n(`set-pin`);return}if(!a.claude_authenticated){n(`connect-claude`);return}if(await e())return;n(`enter-pin`)}catch(e){if(r>0)return await new Promise(e=>setTimeout(e,1500)),t(r-1);console.error(`[admin] health check failed:`,e),n(`set-pin`)}}t()},[]),(0,_.useEffect)(()=>{t===`chat`&&fetch(`/api/admin/claude-info`).then(e=>{if(e.ok)return e.json()}).then(e=>{e&&O(e)}).catch(()=>{})},[t]),(0,_.useEffect)(()=>{if(typeof window>`u`)return;let n=!1;try{n=sessionStorage.getItem(m)===`1`}catch{}if(g({appState:t,alreadyRedirected:n,variant:e})){try{sessionStorage.setItem(m,`1`)}catch{}console.info(`[admin-ui] landing-redirect target=${h}`),window.location.replace(h)}},[t,e]);let X=(0,_.useRef)(null);(0,_.useEffect)(()=>{if(t!==`chat`)return;let e=setInterval(async()=>{try{let e=await fetch(`/api/health`);if(e.ok){let t=await e.json();if(t.auth_status===`dead`||t.auth_status===`missing`){n(`connect-claude`);return}}}catch{}if(T)try{let e=await fetch(`/api/admin/session?session_key=${encodeURIComponent(T)}`);if(e.status!==401)return;let t=(await e.clone().json().catch(()=>null))?.code??`unknown-401`;console.warn(`[admin-auth] outcome=heartbeat-detected-expiry code=${t}`),X.current?.()}catch{}},300*1e3);return()=>clearInterval(e)},[t,T]),(0,_.useEffect)(()=>{t===`connect-claude`&&fetch(`/api/health`).then(e=>e.ok?e.json():null).then(e=>{e?.claude_authenticated&&n(`enter-pin`)}).catch(()=>{})},[t]);async function Z(e,t){v(!0);try{let r=await fetch(`/api/admin/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:e,...t?{accountId:t}:{}})});if(!r.ok){l((await r.json().catch(()=>({}))).error||`Invalid PIN`);return}let a=await r.json();if(a.accounts&&!a.session_key){console.log(`[admin] account picker shown: userId=${a.userId} accountCount=${a.accounts.length}`),B(a.accounts),n(`account-picker`);return}E(a.session_key),R(a.sessionId??null),A(a.businessName),M(a.role??null),P(a.userName===void 0?null:a.userName),I(a.avatar??null);let o=p(a.thinkingView);if(G.current=o,W(o),t)try{sessionStorage.setItem(`maxy-account-id`,t)}catch{}try{sessionStorage.setItem(`maxy-admin-session-key`,a.session_key)}catch{}i(``),n(`chat`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{v(!1),H(!1)}}let Q=(0,_.useCallback)(async e=>{if(e.preventDefault(),f)return;l(``);let t=a.trim();if(!t){l(`Please enter your name.`);return}if(r.length<4){l(`PIN must be at least 4 characters.`);return}let o=r;v(!0);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({pin:o,name:t})});if(!e.ok){let t=await e.json().catch(()=>({}));if(e.status===409){console.log(`[admin] PIN already configured — re-checking health`);try{let e=await fetch(`/api/health`);if(e.ok){let r=await e.json();r.pin_configured&&r.claude_authenticated?n(`enter-pin`):r.pin_configured?n(`connect-claude`):l(t.error||`Failed to set PIN.`)}else n(`enter-pin`)}catch{n(`enter-pin`)}return}l(t.error||`Failed to set PIN.`);return}let r=await fetch(`/api/health`);if((r.ok?await r.json():null)?.claude_authenticated){await Z(o);return}i(``),n(`connect-claude`)}catch(e){console.error(`[admin] connection error:`,e),l(`Could not connect.`)}finally{v(!1)}},[r,f,a]),ee=(0,_.useCallback)(async e=>{e.preventDefault(),l(``),await Z(r)},[r]),te=(0,_.useCallback)(async()=>{w(!0);try{if(!await s())return console.warn(`[admin-ui] claude-disconnect not verified — credentials may persist; staying put`),!1;E(null),M(null),P(void 0),I(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(`maxy-account-id`),sessionStorage.removeItem(m)}catch{}return n(`connect-claude`),!0}finally{w(!1)}},[]),$=(0,_.useCallback)(()=>{E(null),M(null),P(void 0),I(null);try{sessionStorage.removeItem(`maxy-admin-session-key`),sessionStorage.removeItem(`maxy-account-id`),sessionStorage.removeItem(m)}catch{}i(``),l(``),n(`enter-pin`)},[]);return(0,_.useEffect)(()=>{X.current=$},[$]),{appState:t,setAppState:n,pin:r,setPin:i,operatorName:a,setOperatorName:o,pinError:c,setPinError:l,showPin:u,setShowPin:d,pinLoading:f,authPolling:y,setAuthPolling:b,authLoading:x,setAuthLoading:S,disconnecting:C,cacheKey:T,setCacheKey:E,claudeInfo:D,setClaudeInfo:O,businessName:k,role:j,userName:N,userAvatar:F,sessionId:L,setSessionId:R,accounts:z,accountPickerLoading:V,expandAll:U,setExpandAll:W,expandAllDefaultRef:G,remoteAuthEnabled:K,pinInputRef:J,setPinFormRef:Y,handleSetPin:Q,handleLogin:ee,handleAccountSelect:(0,_.useCallback)(async e=>{H(!0),l(``),await Z(r,e)},[r]),handleDisconnect:te,handleLogout:$,handleChangePin:(0,_.useCallback)(async()=>{if(!r){l(`Enter your current PIN first.`);return}v(!0),l(``);try{let e=await fetch(`/api/onboarding/set-pin`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({currentPin:r})});if(!e.ok){l((await e.json().catch(()=>({error:`Incorrect PIN.`}))).error||`Incorrect PIN.`);return}i(``),l(``),n(`set-pin`)}catch(e){console.error(`[admin-auth] change pin failed:`,e),l(e instanceof Error?e.message:String(e))}finally{v(!1)}},[r])}}var y=n();function b({inputRef:e,value:t,onChange:n,onComplete:r,showPin:i,autoFocus:a}){let o=(0,_.useRef)([]);function s(e,r){r.key===`Backspace`?(r.preventDefault(),t[e]?n(t.slice(0,e)+t.slice(e+1)):e>0&&(n(t.slice(0,e-1)+t.slice(e)),o.current[e-1]?.focus())):r.key===`ArrowLeft`&&e>0?o.current[e-1]?.focus():r.key===`ArrowRight`&&e<5?o.current[e+1]?.focus():r.key===`Enter`&&(r.preventDefault(),r.currentTarget.form?.requestSubmit())}function c(e,i){let a=i.nativeEvent.data;if(!a||!/^\d$/.test(a))return;let s=t.split(``);for(s[e]=a;s.length<e;)s.push(``);let c=s.join(``).replace(/\D/g,``).slice(0,6);n(c),c.length===6?r?.(c):e<5&&o.current[e+1]?.focus()}function l(e){e.preventDefault();let t=e.clipboardData.getData(`text`).replace(/\D/g,``).slice(0,6);t&&(n(t),t.length===6?r?.(t):o.current[t.length]?.focus())}return(0,y.jsx)(`div`,{className:`pin-field`,children:Array.from({length:6}).map((n,r)=>(0,y.jsx)(`input`,{ref:t=>{o.current[r]=t,r===0&&e&&(e.current=t)},type:`text`,inputMode:`numeric`,className:`pin-box${t[r]?` pin-box-filled`:``}`,value:t[r]?i?t[r]:`•`:``,onKeyDown:e=>s(r,e),onInput:e=>c(r,e),onPaste:l,onFocus:e=>e.target.select(),autoFocus:a&&r===0,autoComplete:`off`,maxLength:1,"aria-label":`PIN digit ${r+1}`},r))})}function x(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:o,pinInputRef:s,setPinFormRef:f,onSubmit:p,operatorName:m,setOperatorName:h}=e;return(0,y.jsx)(`div`,{className:`connect-page`,children:(0,y.jsxs)(`div`,{className:`connect-content`,children:[(0,y.jsx)(`img`,{src:u,alt:l.productName,className:`connect-logo connect-logo--maxy`}),!l.logoContainsName&&(0,y.jsxs)(`h1`,{className:`connect-title`,children:[`Welcome to `,l.productName]}),(0,y.jsxs)(`p`,{className:`connect-subtitle`,children:[`Tell `,l.productName,` who you are, then choose a PIN.`]}),(0,y.jsxs)(`form`,{ref:f,onSubmit:p,className:`connect-pin-form`,children:[(0,y.jsxs)(`div`,{className:`pin-input-row`,children:[(0,y.jsx)(`input`,{type:`text`,className:`connect-name-input`,placeholder:`Your full name`,value:m,onChange:e=>h(e.target.value),autoComplete:`name`,autoFocus:!0,required:!0,"aria-label":`Your full name`}),(0,y.jsx)(`div`,{style:{width:38,flexShrink:0},"aria-hidden":`true`})]}),(0,y.jsxs)(`div`,{className:`pin-input-row`,children:[(0,y.jsx)(b,{inputRef:s,value:t,onChange:n,onComplete:()=>{},showPin:r}),(0,y.jsx)(c,{variant:`send`,type:`submit`,disabled:!t||!m.trim(),loading:a,"aria-label":`Set PIN`,children:(0,y.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,y.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,y.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,y.jsx)(d,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`})]}),o&&(0,y.jsx)(`p`,{className:`admin-pin-error`,children:o})]})})}function S(e){let{pin:t,setPin:n,showPin:r,setShowPin:i,pinLoading:a,pinError:o,pinInputRef:s,onSubmit:f,onChangePin:p,remoteAuthEnabled:m,onSignOutRemote:h}=e;return(0,y.jsxs)(`div`,{className:`connect-page`,children:[m&&h&&(0,y.jsx)(`button`,{type:`button`,className:`connect-signout`,onClick:h,children:`Sign out`}),(0,y.jsxs)(`div`,{className:`connect-content`,children:[(0,y.jsx)(`img`,{src:u,alt:l.productName,className:`connect-logo connect-logo--maxy`}),!l.logoContainsName&&(0,y.jsx)(`h1`,{className:`connect-title`,children:l.productName}),(0,y.jsxs)(`form`,{onSubmit:f,className:`connect-pin-form`,children:[(0,y.jsxs)(`div`,{className:`pin-input-row`,children:[(0,y.jsx)(b,{inputRef:s,value:t,onChange:n,onComplete:()=>{},showPin:r,autoFocus:!0}),(0,y.jsx)(c,{variant:`send`,type:`submit`,disabled:!t,loading:a,children:(0,y.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,y.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,y.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,y.jsxs)(`div`,{className:`pin-options`,children:[(0,y.jsx)(d,{checked:r,onChange:()=>i(e=>!e),label:`Show PIN`}),(0,y.jsx)(c,{type:`button`,variant:`ghost`,onClick:p,children:`Change PIN`})]})]}),o&&(0,y.jsx)(`p`,{className:`admin-pin-error`,children:o})]})]})}function C(e){let{accounts:t,loading:n,error:r,onSelect:a}=e;return(0,y.jsx)(`div`,{className:`connect-page`,children:(0,y.jsxs)(`div`,{className:`connect-content`,children:[(0,y.jsx)(`img`,{src:u,alt:l.productName,className:`connect-logo connect-logo--maxy`}),!l.logoContainsName&&(0,y.jsx)(`h1`,{className:`connect-title`,children:l.productName}),(0,y.jsx)(`p`,{className:`connect-subtitle`,children:`Select an account`}),(0,y.jsx)(`div`,{className:`account-picker-list`,children:t.map(e=>(0,y.jsxs)(`button`,{className:`account-picker-card`,onClick:()=>a(e.accountId),disabled:n,type:`button`,children:[(0,y.jsx)(`span`,{className:`account-picker-name`,children:e.businessName||e.accountId}),(0,y.jsx)(`span`,{className:`account-picker-role`,children:e.role}),n&&(0,y.jsx)(i,{className:`account-picker-spinner`,size:16})]},e.accountId))}),r&&(0,y.jsx)(`p`,{className:`admin-pin-error`,children:r})]})})}function w(e){let{authPolling:t,setAuthPolling:n,authLoading:r,setAuthLoading:i,pinError:a,setPinError:o,setAppState:s}=e,[d,f]=(0,_.useState)(!1),[p,m]=(0,_.useState)(!1);async function h(){m(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`launch-browser`})})).json();e.launched?f(!0):e.error&&o(e.error)}catch(e){console.error(`[admin] browser launch error:`,e),o(`Could not launch browser.`)}m(!1)}async function g(){i(!0),o(``);try{let e=await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`})).json();if(e.started){n(!0),f(!0),i(!1);for(let e=0;e<120;e++)if(await new Promise(e=>setTimeout(e,2e3)),(await(await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`wait`})})).json()).authenticated){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),s(`enter-pin`);return}o(`Timed out waiting for sign-in. Try again.`),n(!1)}else e.error&&o(e.error)}catch(e){console.error(`[admin] auth flow error:`,e),o(`Could not start auth flow.`)}i(!1)}async function v(){await fetch(`/api/onboarding/claude-auth`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:`stop`})}),n(!1),o(``)}return t||d?(0,y.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,height:`100dvh`,overflow:`auto`},children:[(0,y.jsxs)(`header`,{className:`chat-header`,style:{paddingBottom:`12px`,flexShrink:0,position:`relative`,maxWidth:`680px`,width:`100%`,margin:`0 auto`,padding:`24px 20px 12px`},children:[t?(0,y.jsx)(`button`,{onClick:v,style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Cancel`,children:`✕`}):(0,y.jsx)(`button`,{onClick:()=>f(!1),style:{position:`absolute`,top:`12px`,right:`12px`,background:`none`,border:`none`,color:`#999`,fontSize:`13px`,cursor:`pointer`,padding:`4px 8px`},"aria-label":`Close browser`,children:`✕`}),(0,y.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`chat-logo`}),(0,y.jsx)(`h1`,{className:`chat-tagline`,children:`Connect Claude`}),(0,y.jsx)(`p`,{className:`chat-intro`,children:t?`Sign in and authorize in the browser below.`:`Open your email or prepare your accounts, then sign in.`}),!t&&(0,y.jsx)(`div`,{style:{marginTop:`12px`},children:(0,y.jsx)(c,{variant:`primary`,onClick:g,disabled:r,children:r?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`})})]}),(0,y.jsx)(`div`,{style:{flex:1,display:`flex`,flexDirection:`column`,minHeight:0,gap:`10px`,padding:`0 0 16px`},children:(0,y.jsx)(`iframe`,{src:`/vnc-viewer.html`,style:{flex:1,width:`100%`,minHeight:0,border:`none`,background:`#111`,display:`block`},title:`Claude Sign-in`})}),a&&(0,y.jsx)(`p`,{className:`admin-pin-error`,style:{textAlign:`center`,padding:`0 20px 16px`},children:a})]}):(0,y.jsx)(`div`,{className:`connect-page`,children:(0,y.jsxs)(`div`,{className:`connect-content`,children:[(0,y.jsxs)(`div`,{className:`connect-logos`,children:[(0,y.jsx)(`div`,{className:`connect-logo-wrap`,children:(0,y.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`connect-logo`})}),(0,y.jsx)(`svg`,{className:`connect-arrow`,viewBox:`0 0 48 24`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,children:(0,y.jsx)(`path`,{d:`M0 12h44m0 0l-8-8m8 8l-8 8`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})}),(0,y.jsxs)(`div`,{className:`connect-logo-wrap`,children:[(0,y.jsx)(`img`,{src:u,alt:l.productName,className:`connect-logo connect-logo--maxy`}),!l.logoContainsName&&(0,y.jsx)(`span`,{className:`connect-logo-label`,children:l.productName})]})]}),(0,y.jsxs)(`h1`,{className:`connect-title`,children:[`Connect Claude to power `,l.productName]}),(0,y.jsx)(`p`,{className:`connect-subtitle`,children:`Sign in with your Anthropic account to get started.`}),(0,y.jsx)(c,{variant:`primary`,onClick:g,disabled:r,children:r?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`span`,{className:`spin`,style:{display:`inline-block`},children:`✱`}),` Connecting…`]}):`Sign in to Claude`}),(0,y.jsx)(`p`,{style:{marginTop:`6px`,fontSize:`11px`,color:`#999`,maxWidth:`300px`,textAlign:`center`,lineHeight:`1.4`},children:`First time? You may need to sign into your email and Anthropic account in the browser before connecting.`}),(0,y.jsx)(`button`,{onClick:h,disabled:p,style:{marginTop:`12px`,background:`none`,border:`none`,color:`var(--color-primary, #666)`,fontSize:`13px`,cursor:`pointer`,textDecoration:`underline`,textUnderlineOffset:`3px`},children:p?`Launching…`:`Open browser first`}),a&&(0,y.jsx)(`p`,{className:`admin-pin-error`,children:a})]})})}function T({onOpen:e}){return(0,y.jsx)(`footer`,{className:`admin-footer`,children:(0,y.jsxs)(`div`,{className:`powered-by`,role:`button`,tabIndex:0,onClick:e,onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e())},"aria-label":`Powered by Claude Code — show details`,children:[(0,y.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,y.jsx)(`span`,{children:`Powered by Claude Code`})]})})}function E({variant:e=`admin`}={}){let t=v(e),[n,i]=(0,_.useState)(!1);(0,_.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&i(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]);let s=(0,_.useCallback)(async()=>{let e=t.claudeInfo!=null;if(i(!0),e){console.info(`[admin-ui] claude-info-open cached=true ms=0`);return}let n=Date.now();try{let e=await fetch(`/api/admin/claude-info`);if(e.ok){let n=await e.json();t.setClaudeInfo(n)}console.info(`[admin-ui] claude-info-open cached=false ms=${Date.now()-n}`)}catch(e){console.error(`[admin-ui] claude-info-fetch-failed ms=${Date.now()-n} error="${e instanceof Error?e.message:String(e)}"`)}},[t]),c=(0,_.useCallback)(({code:e,path:n})=>{console.warn(`[admin-auth] outcome=chat-tab-logout-on-401 code=${e} path=${n}`),t.handleLogout()},[t]);return t.appState===`loading`?(0,y.jsx)(`div`,{className:`connect-page`}):t.appState===`set-pin`?(0,y.jsx)(x,{pin:t.pin,setPin:t.setPin,showPin:t.showPin,setShowPin:t.setShowPin,pinLoading:t.pinLoading,pinError:t.pinError,pinInputRef:t.pinInputRef,setPinFormRef:t.setPinFormRef,onSubmit:t.handleSetPin,operatorName:t.operatorName,setOperatorName:t.setOperatorName}):t.appState===`connect-claude`?(0,y.jsx)(w,{authPolling:t.authPolling,setAuthPolling:t.setAuthPolling,authLoading:t.authLoading,setAuthLoading:t.setAuthLoading,pinError:t.pinError,setPinError:t.setPinError,setAppState:t.setAppState}):t.appState===`enter-pin`?(0,y.jsx)(S,{pin:t.pin,setPin:t.setPin,showPin:t.showPin,setShowPin:t.setShowPin,pinLoading:t.pinLoading,pinError:t.pinError,pinInputRef:t.pinInputRef,onSubmit:t.handleLogin,onChangePin:t.handleChangePin,remoteAuthEnabled:t.remoteAuthEnabled,onSignOutRemote:()=>{console.info(`[admin-ui] remote-auth sign-out → /__remote-auth/logout`),window.location.href=`/__remote-auth/logout`}}):t.appState===`account-picker`?(0,y.jsx)(C,{accounts:t.accounts,loading:t.accountPickerLoading,error:t.pinError,onSelect:t.handleAccountSelect}):(0,y.jsx)(r,{cacheKey:t.cacheKey,onSessionExpired:c,surface:`chat`,children:(0,y.jsx)(o,{cacheKey:t.cacheKey,businessName:t.businessName,variant:e,sessionId:t.sessionId,onLogout:t.handleLogout,onDisconnect:t.handleDisconnect,disconnecting:t.disconnecting,userName:t.userName,userAvatar:t.userAvatar,role:t.role,footer:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(T,{onOpen:s}),(0,y.jsx)(a,{show:n,onClose:()=>i(!1),claudeInfo:t.claudeInfo,messages:[],sessionElapsed:0,sessionId:t.sessionId,cacheKey:t.cacheKey})]}),children:e=>(0,y.jsx)(y.Fragment,{children:e.selectedWhatsapp&&t.cacheKey?(0,y.jsx)(f,{sessionId:e.selectedWhatsapp.sessionId,projectDir:e.selectedWhatsapp.projectDir,sessionKey:t.cacheKey,cleanViewToggle:!0},e.selectedWhatsapp.sessionId):(0,y.jsx)(`main`,{})})})})}export{E as t};
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-Pqm5yXtL.js";import{a as t,i as n,r,t as i}from"./jsx-runtime-D3JkFIbi.js";import{a,c as o,d as s,f as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v}from"./audio-attachment-mime-CFyc3gpD.js";import{a as y,c as b,i as x,l as S,n as C,o as w,r as T,t as E}from"./useSelectionMode-geYq13zs.js";import{t as D}from"./Checkbox-BZ1XbA1t.js";var O=r(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),k=r(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),A=r(`square-check-big`,[[`path`,{d:`M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344`,key:`2acyp4`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),j=r(`square-plus`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),M=n(),N=e(t(),1);function P(){let[e,t]=(0,N.useState)(null),[n,r]=(0,N.useState)(null),[i,a]=(0,N.useState)(`loading`),[c,l]=(0,N.useState)(``),[d,f]=(0,N.useState)(null),[p,m]=(0,N.useState)(null),[h,g]=(0,N.useState)(!1),[_,y]=(0,N.useState)(null),b=(0,N.useMemo)(()=>o(),[]),x=(0,N.useMemo)(()=>u(),[]),[S,C]=(0,N.useState)(null),w=(0,N.useRef)(b||``),T=(0,N.useRef)(null),E=(0,N.useRef)(null),D=(0,N.useRef)(!1),O=(0,N.useRef)(null),[k,A]=(0,N.useState)(`request-link`),[j,M]=(0,N.useState)(null),P=(0,N.useRef)(null),F=(0,N.useRef)(null);(0,N.useEffect)(()=>{try{let e=sessionStorage.getItem(`maxy_session`);e&&(F.current=e)}catch{}},[]);let I=(0,N.useCallback)(e=>{T.current=e,t(e);try{sessionStorage.setItem(`maxy_session`,e)}catch{}a(`chat`)},[]),L=(0,N.useCallback)(()=>{T.current=null;try{sessionStorage.removeItem(`maxy_session`)}catch{}t(null),a(`auth-required`),A(`request-link`)},[]),R=(0,N.useCallback)(async e=>{A(`verifying`);try{let t=w.current,n=await fetch(`/api/access/verify-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,agentSlug:t})});if(window.history.replaceState({},``,window.location.pathname),n.ok){let e=await n.json().catch(()=>({}));return e?.displayName&&M({displayName:e.displayName,contactValue:``,expiresAt:null,status:`active`}),!0}return A(`verify-failed`),!1}catch{return A(`verify-failed`),!1}},[]),z=(0,N.useCallback)(async()=>{if(T.current)return T.current;if(E.current)return E.current;let e=(async()=>{try{let e=F.current,n=await fetch(`/api/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_id:v(),...b?{agent:b}:{},...x?{group_slug:x}:{},...e?{session_key:e}:{}})});if(!n.ok){let e=await n.json().catch(()=>({error:``}));return s&&console.error(`[session] POST /api/session failed: ${n.status} ${n.statusText}`,e),n.status===404?r(e.error||`Agent not found`):n.status===503&&r(e.error||`Service unavailable`),null}let i=await n.json();if(i.auth_required){i.agent_id&&(w.current=i.agent_id),l(i.displayName||``),i.agentImage&&f(i.agentImage),i.agentImageShape&&m(i.agentImageShape),i.showAgentName&&g(i.showAgentName),i.branding&&y(i.branding),a(`auth-required`);let e=new URLSearchParams(window.location.search).get(`token`);return e?await R(e)&&window.location.reload():A(`request-link`),null}T.current=i.session_key,t(i.session_key),i.displayName&&l(i.displayName),i.agentImage&&f(i.agentImage),i.agentImageShape&&m(i.agentImageShape),i.showAgentName&&g(i.showAgentName),i.branding&&y(i.branding),a(`chat`),i.resumed&&i.messages&&(D.current=!0,O.current=i.messages),i.group&&C({groupSlug:i.groupSlug,groupName:i.groupName,participants:i.participants??[]});try{sessionStorage.setItem(`maxy_session`,i.session_key)}catch{}return i.session_key}catch(e){return s&&console.error(`[session] fetch /api/session threw:`,e),r(`Unable to connect. Please check your connection and try again.`),null}finally{E.current=null}})();return E.current=e,e},[b,x,R]);return{sessionId:e,cacheKeyRef:T,sessionError:n,pageState:i,setPageState:a,agentDisplayName:c,agentImage:d,agentImageShape:p,showAgentName:h,agentSlug:b,branding:_,resolvedSlugRef:w,ensureSession:z,startNewSession:(0,N.useCallback)(async()=>{T.current=null,E.current=null,F.current=null,D.current=!1,O.current=null,t(null),r(null);try{sessionStorage.removeItem(`maxy_session`)}catch{}await z()},[z]),enterChat:I,enterGate:L,resumedRef:D,resumeMessagesRef:O,gateState:k,setGateState:A,grantInfo:j,setGrantInfo:M,gateCacheKeyRef:P,groupContext:S,groupSlug:x}}async function*F(e){let t=e.body?.getReader();if(!t)throw Error(`No response stream`);let n=new TextDecoder,r=``;try{for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a=r.split(`
1
+ import{o as e}from"./chunk-Pqm5yXtL.js";import{a as t,i as n,r,t as i}from"./jsx-runtime-CMu8uN0-.js";import{a,c as o,d as s,f as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v}from"./audio-attachment-mime-DL5R1M2A.js";import{a as y,c as b,i as x,l as S,n as C,o as w,r as T,t as E}from"./useSelectionMode-lrH0qwAR.js";import{t as D}from"./Checkbox-C7bBRzLP.js";var O=r(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),k=r(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),A=r(`square-check-big`,[[`path`,{d:`M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344`,key:`2acyp4`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),j=r(`square-plus`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),M=n(),N=e(t(),1);function P(){let[e,t]=(0,N.useState)(null),[n,r]=(0,N.useState)(null),[i,a]=(0,N.useState)(`loading`),[c,l]=(0,N.useState)(``),[d,f]=(0,N.useState)(null),[p,m]=(0,N.useState)(null),[h,g]=(0,N.useState)(!1),[_,y]=(0,N.useState)(null),b=(0,N.useMemo)(()=>o(),[]),x=(0,N.useMemo)(()=>u(),[]),[S,C]=(0,N.useState)(null),w=(0,N.useRef)(b||``),T=(0,N.useRef)(null),E=(0,N.useRef)(null),D=(0,N.useRef)(!1),O=(0,N.useRef)(null),[k,A]=(0,N.useState)(`request-link`),[j,M]=(0,N.useState)(null),P=(0,N.useRef)(null),F=(0,N.useRef)(null);(0,N.useEffect)(()=>{try{let e=sessionStorage.getItem(`maxy_session`);e&&(F.current=e)}catch{}},[]);let I=(0,N.useCallback)(e=>{T.current=e,t(e);try{sessionStorage.setItem(`maxy_session`,e)}catch{}a(`chat`)},[]),L=(0,N.useCallback)(()=>{T.current=null;try{sessionStorage.removeItem(`maxy_session`)}catch{}t(null),a(`auth-required`),A(`request-link`)},[]),R=(0,N.useCallback)(async e=>{A(`verifying`);try{let t=w.current,n=await fetch(`/api/access/verify-token`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:e,agentSlug:t})});if(window.history.replaceState({},``,window.location.pathname),n.ok){let e=await n.json().catch(()=>({}));return e?.displayName&&M({displayName:e.displayName,contactValue:``,expiresAt:null,status:`active`}),!0}return A(`verify-failed`),!1}catch{return A(`verify-failed`),!1}},[]),z=(0,N.useCallback)(async()=>{if(T.current)return T.current;if(E.current)return E.current;let e=(async()=>{try{let e=F.current,n=await fetch(`/api/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_id:v(),...b?{agent:b}:{},...x?{group_slug:x}:{},...e?{session_key:e}:{}})});if(!n.ok){let e=await n.json().catch(()=>({error:``}));return s&&console.error(`[session] POST /api/session failed: ${n.status} ${n.statusText}`,e),n.status===404?r(e.error||`Agent not found`):n.status===503&&r(e.error||`Service unavailable`),null}let i=await n.json();if(i.auth_required){i.agent_id&&(w.current=i.agent_id),l(i.displayName||``),i.agentImage&&f(i.agentImage),i.agentImageShape&&m(i.agentImageShape),i.showAgentName&&g(i.showAgentName),i.branding&&y(i.branding),a(`auth-required`);let e=new URLSearchParams(window.location.search).get(`token`);return e?await R(e)&&window.location.reload():A(`request-link`),null}T.current=i.session_key,t(i.session_key),i.displayName&&l(i.displayName),i.agentImage&&f(i.agentImage),i.agentImageShape&&m(i.agentImageShape),i.showAgentName&&g(i.showAgentName),i.branding&&y(i.branding),a(`chat`),i.resumed&&i.messages&&(D.current=!0,O.current=i.messages),i.group&&C({groupSlug:i.groupSlug,groupName:i.groupName,participants:i.participants??[]});try{sessionStorage.setItem(`maxy_session`,i.session_key)}catch{}return i.session_key}catch(e){return s&&console.error(`[session] fetch /api/session threw:`,e),r(`Unable to connect. Please check your connection and try again.`),null}finally{E.current=null}})();return E.current=e,e},[b,x,R]);return{sessionId:e,cacheKeyRef:T,sessionError:n,pageState:i,setPageState:a,agentDisplayName:c,agentImage:d,agentImageShape:p,showAgentName:h,agentSlug:b,branding:_,resolvedSlugRef:w,ensureSession:z,startNewSession:(0,N.useCallback)(async()=>{T.current=null,E.current=null,F.current=null,D.current=!1,O.current=null,t(null),r(null);try{sessionStorage.removeItem(`maxy_session`)}catch{}await z()},[z]),enterChat:I,enterGate:L,resumedRef:D,resumeMessagesRef:O,gateState:k,setGateState:A,grantInfo:j,setGrantInfo:M,gateCacheKeyRef:P,groupContext:S,groupSlug:x}}async function*F(e){let t=e.body?.getReader();if(!t)throw Error(`No response stream`);let n=new TextDecoder,r=``;try{for(;;){let{done:e,value:i}=await t.read();if(e)break;r+=n.decode(i,{stream:!0});let a=r.split(`
2
2
  `);r=a.pop();for(let e of a){if(!e.startsWith(`data: `))continue;let t=e.slice(6);if(t===`[DONE]`)continue;let n;try{n=JSON.parse(t)}catch{continue}yield n}}}finally{t.cancel()}}function I({cacheKeyRef:e,ensureSession:t,sessionError:n,pageState:r,inputRef:i,agentSlug:a}){let[o,c]=(0,N.useState)([]),[l,u]=(0,N.useState)(!1),d=(0,N.useRef)(!1),f=e=>{d.current=e,u(e)},p=(0,N.useCallback)(async(o,l)=>{let u=l?.hidden??!1,p=l?.files??[];if(!o&&p.length===0||d.current)return!1;f(!0);let m=p.map(e=>({filename:e.name,mimeType:e.type})),h={role:`visitor`,content:l?.displayContent??o,attachments:m.length>0?m:void 0,timestamp:Date.now(),hidden:u},g;c(e=>{let t=[...e,h,{role:`maxy`,content:``,timestamp:Date.now()}];return g=t.length-1,t});try{let n=await t();if(!n)throw Error(`session`);let r=e=>{if(p.length>0){let t=new FormData;t.append(`message`,o),t.append(`session_key`,e),a&&t.append(`agent`,a);for(let e of p)t.append(`attachments`,e);return{body:t,headers:{}}}return{body:JSON.stringify({message:o,session_key:e,...a?{agent:a}:{}}),headers:{"Content-Type":`application/json`}}},{body:i,headers:l}=r(n),u=await fetch(`/api/chat`,{method:`POST`,headers:l,body:i});if(u.status===401){e.current=null;try{sessionStorage.removeItem(`maxy_session`)}catch{}s&&console.warn(`[session-expired] stale key cleared, retrying with fresh session`);let n=await t();if(!n)throw Error(`session`);({body:i,headers:l}=r(n)),u=await fetch(`/api/chat`,{method:`POST`,headers:l,body:i})}if(!u.ok){let e=await u.json().catch(()=>({}));throw Error(e.error||`Something went wrong`)}let d=``,f=``,m=()=>{f&&(d+=f,f=``,c(e=>{let t=[...e];return t[g]={...t[g],content:d},t}))},h=setInterval(m,60);try{for await(let e of F(u)){if(e.error)throw Object.assign(Error(e.error),{fromSSE:!0});e.text&&(f+=e.text),e.type===`component`&&(m(),c(t=>{let n=[...t],r={...n[g]},i=[...r.components||[]];return i.push({name:e.name,data:e.data,submitted:!1}),n[g]={...r,components:i},n}))}}finally{clearInterval(h),m()}return!0}catch(e){if(s&&console.error(`[chat] sendMessage failed:`,e),r===`auth-required`)return!1;let t=e instanceof Error?e.message:String(e),i=e instanceof Error&&e.fromSSE;return c(e=>{let r=[...e];return r[g]={...r[g],content:i?t:t===`session`?n??`I'm having trouble connecting right now. Try refreshing the page.`:`Sorry, I hit a snag. Try again in a moment.`},r}),!1}finally{f(!1),r===`chat`&&i.current?.focus()}},[e,t,n,r,i,a]);return{messages:o,setMessages:c,isStreaming:l,sendMessage:p,handleComponentSubmit:(0,N.useCallback)((e,t,n)=>{c(n=>{let r=[...n],i={...r[e]},a=[...i.components||[]];return a[t]={...a[t],submitted:!0},r[e]={...i,components:a},r}),p(n,{hidden:!0})},[p])}}function L({cacheKeyRef:e,groupSlug:t,isStreaming:n,setMessages:r}){let i=(0,N.useRef)(new Date().toISOString()),a=(0,N.useRef)(!0);(0,N.useEffect)(()=>{let e=()=>{a.current=document.visibilityState===`visible`};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[]);let o=(0,N.useCallback)(async()=>{let n=e.current;if(!(!n||!t))try{let e=await fetch(`/api/group/messages?session_key=${encodeURIComponent(n)}&since=${encodeURIComponent(i.current)}`);if(!e.ok)return;let t=await e.json();if(!t.messages||t.messages.length===0)return;let a=t.messages[t.messages.length-1];a.timestamp&&(i.current=new Date(a.timestamp).toISOString()),r(e=>{let n=new Set(e.filter(e=>e.messageId).map(e=>e.messageId)),r=t.messages.filter(e=>!n.has(e.messageId)).map(e=>({role:e.role,content:e.content,timestamp:e.timestamp,senderName:e.senderName??void 0,senderVisitorId:e.senderVisitorId??void 0,messageId:e.messageId}));if(r.length===0)return e;let i=[...e,...r];return i.sort((e,t)=>e.timestamp-t.timestamp),i})}catch(e){console.error(`[group-poll] failed: ${e instanceof Error?e.message:String(e)}`)}},[e,t,r]);(0,N.useEffect)(()=>{if(!t)return;let e,r=!1;function i(){if(r)return;let t=a.current?3e3:3e4;e=setTimeout(async()=>{n||await o(),i()},t)}return i(),()=>{r=!0,clearTimeout(e)}},[t,n,o])}var R=i();function z({gateState:e,setGateState:t,grantInfo:n,resolvedSlugRef:r}){let[i,a]=(0,N.useState)(``),[o,s]=(0,N.useState)(!1),[c,l]=(0,N.useState)(null);async function u(e){e.preventDefault();let n=i.trim().toLowerCase();if(!n){l(`Enter the email you were invited on.`);return}s(!0),l(null);try{let e=await fetch(`/api/access/request-magic-link`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({contactValue:n,agentSlug:r.current})});if(e.status===429){l((await e.json().catch(()=>({})))?.error||`Too many requests. Try again later.`);return}t(`request-sent`)}catch{l(`Could not reach the server. Check your connection and try again.`)}finally{s(!1)}}return(0,R.jsxs)(`div`,{className:`access-gate`,children:[e===`verifying`&&(0,R.jsxs)(`div`,{className:`access-gate-message`,children:[(0,R.jsx)(`h2`,{children:`Verifying your link…`}),(0,R.jsx)(`p`,{children:`This takes a moment.`})]}),e===`verify-failed`&&(0,R.jsxs)(`div`,{className:`access-gate-message`,children:[(0,R.jsx)(`h2`,{children:`That link did not work`}),(0,R.jsx)(`p`,{children:`It may have expired, already been used, or been for a different agent. You can request a fresh one below.`}),(0,R.jsx)(b,{onClick:()=>{t(`request-link`),l(null)},children:`Request a new link`})]}),e===`request-link`&&(0,R.jsxs)(`form`,{className:`access-gate-form`,onSubmit:u,children:[(0,R.jsx)(`h2`,{children:n?.displayName?`Welcome back, ${n.displayName}`:`Sign in`}),(0,R.jsx)(`p`,{children:`Enter the email you were invited on and we will send you a fresh link.`}),(0,R.jsx)(`label`,{htmlFor:`access-email`,children:`Email`}),(0,R.jsx)(`input`,{id:`access-email`,type:`email`,inputMode:`email`,autoComplete:`email`,value:i,onChange:e=>a(e.target.value),disabled:o}),c&&(0,R.jsx)(`p`,{className:`access-gate-error`,children:c}),(0,R.jsx)(b,{type:`submit`,disabled:o||!i.trim(),children:o?`Sending…`:`Send me a link`})]}),e===`request-sent`&&(0,R.jsxs)(`div`,{className:`access-gate-message`,children:[(0,R.jsx)(`h2`,{children:`Check your email`}),(0,R.jsx)(`p`,{children:`If that address is on the invite list, a fresh link is on the way. It expires in 15 minutes.`}),(0,R.jsx)(b,{onClick:()=>{t(`request-link`),a(``),l(null)},children:`Try a different email`})]})]})}function B(e){let t=new Date(e),n=new Date,r=String(t.getHours()).padStart(2,`0`),i=String(t.getMinutes()).padStart(2,`0`),a=String(t.getSeconds()).padStart(2,`0`);return t.toDateString()===n.toDateString()?`${r}:${i}:${a}`:`${String(t.getDate()).padStart(2,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${t.getFullYear()} ${r}:${i}:${a}`}function ee({messages:e,isStreaming:t,sessionError:n,selectionMode:r,selectedItems:i,toggleSelectItem:a,remainingSuggestions:o,onSuggestionClick:s,isAtBottom:c,setIsAtBottom:u,isGroup:f,sessionId:p}){let[h,g]=(0,N.useState)(new Set),[_,v]=(0,N.useState)(new Set),y=(0,N.useRef)(null),x=(0,N.useRef)(null),C=(0,N.useRef)(null),w=(0,N.useRef)(!1),T=(0,N.useRef)(!1),E=(0,N.useRef)(!1),O=(0,N.useRef)(0),k=(0,N.useRef)(!1),A=(0,N.useRef)(new Map);k.current=t,(0,N.useEffect)(()=>{t&&!w.current&&c&&(T.current=!0)},[t,c]),(0,N.useEffect)(()=>{if(!T.current&&!c){w.current=t,E.current=!1;return}if(w.current&&!t&&C.current&&x.current){let e=C.current;if(e.offsetHeight>x.current.clientHeight){T.current=!1,E.current=!0,e.scrollIntoView({behavior:`smooth`,block:`start`}),w.current=t;return}}(c||T.current)&&!E.current&&y.current?.scrollIntoView({behavior:`smooth`}),w.current&&!t&&(T.current=!1),w.current=t},[e,c,t]),(0,N.useEffect)(()=>{let e=x.current;if(!e)return;let t=()=>{let t=e.scrollTop;k.current&&t<O.current&&(T.current=!1),O.current=t,u(e.scrollHeight-e.scrollTop-e.clientHeight<80)};return e.addEventListener(`scroll`,t,{passive:!0}),t(),()=>e.removeEventListener(`scroll`,t)},[u]),(0,N.useEffect)(()=>{function e(){v(e=>{let t=new Set;return A.current.forEach((n,r)=>{n.isConnected&&(h.has(r)?e.has(r)&&t.add(r):n.scrollHeight>n.clientHeight+2&&t.add(r))}),e.size===t.size&&[...e].every(e=>t.has(e))?e:t})}e();let t=new ResizeObserver(e);return A.current.forEach(e=>t.observe(e)),()=>t.disconnect()},[e.length,h]);let j=[...e].sort((e,t)=>e.timestamp-t.timestamp);(0,N.useEffect)(()=>{r&&console.log(`[selection] entered`,{sessionId:p??`unknown`,order:j.map(e=>({ts:e.timestamp,role:e.role,id:e.messageId}))})},[r]);let M=j.reduce((e,t,n)=>t.role===`maxy`&&!t.hidden?n:e,-1);return(0,R.jsxs)(`div`,{className:`chat-messages-wrap`,children:[r&&(0,R.jsx)(`div`,{className:`selection-overlay-band`}),(0,R.jsxs)(`div`,{className:`chat-messages`,ref:x,children:[n&&e.length===0&&(0,R.jsx)(`div`,{className:`session-error`,children:(0,R.jsx)(`p`,{children:n})}),j.map((e,n)=>{if(e.hidden)return null;let o=t&&n===j.length-1,s=`${e.timestamp}_${e.role}`,c=i.has(s);return(0,R.jsxs)(`div`,{ref:n===M?C:void 0,className:`message ${e.role}${c?` selected`:``}`,children:[r&&!o&&(0,R.jsx)(`div`,{className:`message-select-check`,children:(0,R.jsx)(D,{checked:c,onChange:()=>a(s)})}),(0,R.jsxs)(`div`,{className:`bubble`,children:[f&&e.role===`visitor`&&e.senderName&&(0,R.jsx)(`span`,{className:`bubble-sender`,children:e.senderName}),e.role===`visitor`&&e.content?(()=>{let t=h.has(n),r=_.has(n);return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`div`,{ref:e=>{e?A.current.set(n,e):A.current.delete(n)},className:t?`bubble-content`:`bubble-content clamped${r?` overflowing`:``}`,children:e.content}),r&&(0,R.jsx)(`div`,{className:`bubble-expand`,children:(0,R.jsx)(b,{variant:`icon`,className:t?`expanded`:``,onClick:()=>g(e=>{let t=new Set(e);return t.has(n)?t.delete(n):t.add(n),t}),"aria-label":t?`Collapse message`:`Expand message`,children:(0,R.jsx)(d,{size:14})})})]})})():e.content?(0,R.jsx)(l,{content:e.content,timestamp:B(e.timestamp)}):(0,R.jsxs)(`span`,{className:`typing-indicator`,children:[(0,R.jsx)(`span`,{className:`typing-dot`}),(0,R.jsx)(`span`,{className:`typing-dot`}),(0,R.jsx)(`span`,{className:`typing-dot`})]}),e.attachments&&e.attachments.length>0&&(0,R.jsx)(`div`,{className:`message-attachments`,children:e.attachments.map((e,t)=>(0,R.jsxs)(`span`,{className:`message-attachment-chip no-action`,children:[e.mimeType===`application/pdf`?(0,R.jsx)(S,{size:12}):e.mimeType.startsWith(`text/`)?(0,R.jsx)(m,{size:12}):null,(0,R.jsx)(`span`,{children:e.filename})]},t))}),e.role===`visitor`&&(0,R.jsx)(`span`,{className:`message-timestamp`,children:B(e.timestamp)})]})]},n)}),!t&&o.length>0&&(0,R.jsx)(`div`,{className:`chat-suggestions`,children:o.map(e=>(0,R.jsx)(b,{variant:`suggestion`,onClick:()=>s(e),children:e},e))}),(0,R.jsx)(`div`,{ref:y})]}),!c&&(0,R.jsx)(`button`,{className:`scroll-to-bottom`,onClick:()=>y.current?.scrollIntoView({behavior:`smooth`}),"aria-label":`Scroll to bottom`,children:(0,R.jsx)(d,{size:18})})]})}function te({selectedItems:e,messages:t,isStreaming:n,copySelected:r,selectAll:i,exitSelection:a,showCopyToast:o}){let[s,c]=(0,N.useState)(!1),l=(0,N.useRef)(null),u=(0,N.useRef)(!1);function d(e){let n=e.lastIndexOf(`_`),r=e.slice(0,n),i=e.slice(n+1),a=parseInt(r,10);return t.find(e=>e.timestamp===a&&e.role===i)?.content??``}function f(e,t){return parseInt(e.slice(0,e.lastIndexOf(`_`)),10)-parseInt(t.slice(0,t.lastIndexOf(`_`)),10)}function p(){let e=[...t].sort((e,t)=>e.timestamp-t.timestamp),n=[];for(let t of e){if(t.hidden||!t.content)continue;let e=t.role===`visitor`?`Visitor`:`Maxy`;n.push(`${e}:\n${t.content}`)}return n.join(`
3
3
 
4
4
  ---
@@ -1,4 +1,4 @@
1
- import{o as e}from"./chunk-Pqm5yXtL.js";import{a as t,r as n,t as r}from"./jsx-runtime-D3JkFIbi.js";var i=n(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),a=e(t(),1),o=r(),s={sm:14,md:16,lg:18},c={sm:30,md:38,lg:46};function l({variant:e=`primary`,size:t=`md`,icon:n,iconPosition:r=`leading`,loading:i=!1,fullWidth:a=!1,disabled:l=!1,type:u=`button`,onClick:d,"aria-label":f,style:p,className:m,children:h}){let g=[`btn`,`btn--${e}`,t===`md`?``:`btn--${t}`,a?`btn--full`:``,m].filter(Boolean).join(` `),_=s[t],v={...e===`send`?{width:c[t],height:c[t]}:{},...p},y=Object.keys(v).length>0;return(0,o.jsxs)(`button`,{type:u,className:g,disabled:i||l,onClick:d,"aria-label":f,style:y?v:void 0,children:[(0,o.jsxs)(`span`,{className:`btn__content`,style:{visibility:i?`hidden`:`visible`},children:[n&&r===`leading`&&(0,o.jsx)(n,{size:_}),h,n&&r===`trailing`&&(0,o.jsx)(n,{size:_})]}),i&&(0,o.jsx)(`span`,{className:`btn__spinner`,children:`✱`})]})}var u=typeof window<`u`&&window.__BRAND__||{productName:`Maxy`,hostname:`maxy`,marketingUrl:`https://getmaxy.com`,logo:`/brand/maxy-monochrome.png`,icon:`/brand/maxy-monochrome.png`,logoContainsName:!1},d=u.logo,f=u.icon,p=u.marketingUrl,m=u.marketingUrl.replace(/^https?:\/\//,``).replace(/\/$/,``);async function h(e){if(navigator.clipboard)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function g(){let[e,t]=(0,a.useState)(!1),[n,r]=(0,a.useState)(new Set),[i,o]=(0,a.useState)(!1),s=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{s.current!==null&&clearTimeout(s.current)},[]);let c=(0,a.useCallback)(()=>{t(!0),r(new Set)},[]),l=(0,a.useCallback)(()=>{t(!1),r(new Set)},[]),u=(0,a.useCallback)(e=>{r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),d=(0,a.useCallback)(e=>{e.length!==0&&r(t=>e.every(e=>t.has(e))?new Set:new Set(e))},[]),f=(0,a.useCallback)(()=>{s.current!==null&&(clearTimeout(s.current),s.current=null)},[]),p=(0,a.useCallback)(e=>({onPointerDown:()=>{s.current=setTimeout(()=>{t(!0),r(new Set([e])),s.current=null},500)},onPointerUp:f,onPointerLeave:f,onPointerCancel:f}),[f]),m=(0,a.useCallback)(e=>{o(e?`copied`:`failed`),setTimeout(()=>o(!1),1500)},[]);return{selectionMode:e,selectedItems:n,copyToast:i,longPressProps:p,enterSelection:c,exitSelection:l,toggleSelectItem:u,selectAll:d,copySelected:(0,a.useCallback)(async(e,t)=>{let r=[...n].sort(t).map(t=>e(t)).filter(Boolean);r.length>0&&m(await h(r.join(`
1
+ import{o as e}from"./chunk-Pqm5yXtL.js";import{a as t,r as n,t as r}from"./jsx-runtime-CMu8uN0-.js";var i=n(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),a=e(t(),1),o=r(),s={sm:14,md:16,lg:18},c={sm:30,md:38,lg:46};function l({variant:e=`primary`,size:t=`md`,icon:n,iconPosition:r=`leading`,loading:i=!1,fullWidth:a=!1,disabled:l=!1,type:u=`button`,onClick:d,"aria-label":f,style:p,className:m,children:h}){let g=[`btn`,`btn--${e}`,t===`md`?``:`btn--${t}`,a?`btn--full`:``,m].filter(Boolean).join(` `),_=s[t],v={...e===`send`?{width:c[t],height:c[t]}:{},...p},y=Object.keys(v).length>0;return(0,o.jsxs)(`button`,{type:u,className:g,disabled:i||l,onClick:d,"aria-label":f,style:y?v:void 0,children:[(0,o.jsxs)(`span`,{className:`btn__content`,style:{visibility:i?`hidden`:`visible`},children:[n&&r===`leading`&&(0,o.jsx)(n,{size:_}),h,n&&r===`trailing`&&(0,o.jsx)(n,{size:_})]}),i&&(0,o.jsx)(`span`,{className:`btn__spinner`,children:`✱`})]})}var u=typeof window<`u`&&window.__BRAND__||{productName:`Maxy`,hostname:`maxy`,marketingUrl:`https://getmaxy.com`,logo:`/brand/maxy-monochrome.png`,icon:`/brand/maxy-monochrome.png`,logoContainsName:!1},d=u.logo,f=u.icon,p=u.marketingUrl,m=u.marketingUrl.replace(/^https?:\/\//,``).replace(/\/$/,``);async function h(e){if(navigator.clipboard)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function g(){let[e,t]=(0,a.useState)(!1),[n,r]=(0,a.useState)(new Set),[i,o]=(0,a.useState)(!1),s=(0,a.useRef)(null);(0,a.useEffect)(()=>()=>{s.current!==null&&clearTimeout(s.current)},[]);let c=(0,a.useCallback)(()=>{t(!0),r(new Set)},[]),l=(0,a.useCallback)(()=>{t(!1),r(new Set)},[]),u=(0,a.useCallback)(e=>{r(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),d=(0,a.useCallback)(e=>{e.length!==0&&r(t=>e.every(e=>t.has(e))?new Set:new Set(e))},[]),f=(0,a.useCallback)(()=>{s.current!==null&&(clearTimeout(s.current),s.current=null)},[]),p=(0,a.useCallback)(e=>({onPointerDown:()=>{s.current=setTimeout(()=>{t(!0),r(new Set([e])),s.current=null},500)},onPointerUp:f,onPointerLeave:f,onPointerCancel:f}),[f]),m=(0,a.useCallback)(e=>{o(e?`copied`:`failed`),setTimeout(()=>o(!1),1500)},[]);return{selectionMode:e,selectedItems:n,copyToast:i,longPressProps:p,enterSelection:c,exitSelection:l,toggleSelectItem:u,selectAll:d,copySelected:(0,a.useCallback)(async(e,t)=>{let r=[...n].sort(t).map(t=>e(t)).filter(Boolean);r.length>0&&m(await h(r.join(`
2
2
 
3
3
  ---
4
4
 
@@ -5,13 +5,13 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Browser — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/browser-ClnGUKp-.js"></script>
8
+ <script type="module" crossorigin src="/assets/browser-7fyPCFWB.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-Pqm5yXtL.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-D3JkFIbi.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-geYq13zs.js">
12
- <link rel="modulepreload" crossorigin href="/assets/file-download-DBMW0BNz.js">
13
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-BFdBxg4P.js">
14
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-BqGVUT1h.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CMu8uN0-.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-lrH0qwAR.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/file-download-gth6Gpmn.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-BJrxifYa.js">
14
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DZddXDvJ.css">
15
15
  <link rel="stylesheet" crossorigin href="/assets/file-download-qc_xy7Az.css">
16
16
  </head>
17
17
  <body>
@@ -5,16 +5,16 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Chat — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/chat-ZTAhSoJV.js"></script>
8
+ <script type="module" crossorigin src="/assets/chat-UF9ATDwe.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-Pqm5yXtL.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-D3JkFIbi.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-geYq13zs.js">
12
- <link rel="modulepreload" crossorigin href="/assets/file-download-DBMW0BNz.js">
13
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-BFdBxg4P.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CMu8uN0-.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-lrH0qwAR.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/file-download-gth6Gpmn.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-BJrxifYa.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-CQ36nxok.js">
15
- <link rel="modulepreload" crossorigin href="/assets/audio-attachment-mime-CFyc3gpD.js">
16
- <link rel="modulepreload" crossorigin href="/assets/Transcript-CaVix6W0.js">
17
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-BqGVUT1h.css">
15
+ <link rel="modulepreload" crossorigin href="/assets/audio-attachment-mime-DL5R1M2A.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/Transcript-bGy_Gx99.js">
17
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DZddXDvJ.css">
18
18
  <link rel="stylesheet" crossorigin href="/assets/file-download-qc_xy7Az.css">
19
19
  </head>
20
20
  <body>
@@ -5,12 +5,12 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Data — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/data-DDjeQQ7e.js"></script>
8
+ <script type="module" crossorigin src="/assets/data-CIJnkfgX.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-Pqm5yXtL.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-D3JkFIbi.js">
11
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-1Uz0ZBRd.js">
12
- <link rel="modulepreload" crossorigin href="/assets/file-download-DBMW0BNz.js">
13
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-BqGVUT1h.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CMu8uN0-.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-huk-fKcY.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/file-download-gth6Gpmn.js">
13
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DZddXDvJ.css">
14
14
  <link rel="stylesheet" crossorigin href="/assets/file-download-qc_xy7Az.css">
15
15
  </head>
16
16
  <body>
@@ -5,15 +5,15 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Graph — Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/graph-CR74qec3.js"></script>
8
+ <script type="module" crossorigin src="/assets/graph-DHnB3BHK.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-Pqm5yXtL.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-D3JkFIbi.js">
11
- <link rel="modulepreload" crossorigin href="/assets/graph-labels-1Uz0ZBRd.js">
12
- <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-geYq13zs.js">
13
- <link rel="modulepreload" crossorigin href="/assets/file-download-DBMW0BNz.js">
14
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-BFdBxg4P.js">
15
- <link rel="modulepreload" crossorigin href="/assets/Checkbox-BZ1XbA1t.js">
16
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-BqGVUT1h.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CMu8uN0-.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/graph-labels-huk-fKcY.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-lrH0qwAR.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/file-download-gth6Gpmn.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-BJrxifYa.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/Checkbox-C7bBRzLP.js">
16
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DZddXDvJ.css">
17
17
  <link rel="stylesheet" crossorigin href="/assets/file-download-qc_xy7Az.css">
18
18
  </head>
19
19
  <body>
@@ -5,16 +5,16 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-BK7xIr3o.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-jYKA7jR5.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-Pqm5yXtL.js">
10
- <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-D3JkFIbi.js">
11
- <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-geYq13zs.js">
12
- <link rel="modulepreload" crossorigin href="/assets/file-download-DBMW0BNz.js">
13
- <link rel="modulepreload" crossorigin href="/assets/AdminShell-BFdBxg4P.js">
14
- <link rel="modulepreload" crossorigin href="/assets/Checkbox-BZ1XbA1t.js">
15
- <link rel="modulepreload" crossorigin href="/assets/Transcript-CaVix6W0.js">
16
- <link rel="modulepreload" crossorigin href="/assets/page-CLijftr1.js">
17
- <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-BqGVUT1h.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-CMu8uN0-.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/useSelectionMode-lrH0qwAR.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/file-download-gth6Gpmn.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/AdminShell-BJrxifYa.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/Checkbox-C7bBRzLP.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/Transcript-bGy_Gx99.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/page-86edaOS1.js">
17
+ <link rel="stylesheet" crossorigin href="/assets/jsx-runtime-DZddXDvJ.css">
18
18
  <link rel="stylesheet" crossorigin href="/assets/file-download-qc_xy7Az.css">
19
19
  <link rel="stylesheet" crossorigin href="/assets/page-CWMpccrR.css">
20
20
  <link rel="stylesheet" href="/brand-defaults.css">