@helpai/elements 0.14.2 → 0.16.0

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.
package/web-component.mjs CHANGED
@@ -35,7 +35,8 @@ var STRINGS_EN = {
35
35
  attachmentMimeRejected: "File type not supported",
36
36
  attachmentTooLarge: "File is too large",
37
37
  attachmentTooMany: "Attachment limit reached",
38
- chatClosed: "This conversation is closed",
38
+ conversationClosed: "This conversation is closed",
39
+ conversationLoading: "Loading conversation\u2026",
39
40
  close: "Close",
40
41
  collapse: "Collapse",
41
42
  collapseSidebar: "Collapse sidebar",
@@ -55,12 +56,10 @@ var STRINGS_EN = {
55
56
  history: "History",
56
57
  historyBack: "Back to chat",
57
58
  historyEmpty: "No previous conversations yet",
58
- historyLoading: "Loading your chats\u2026",
59
- historyNewChat: "New chat",
60
- historyTitle: "Chat history",
59
+ historyLoading: "Loading your conversations\u2026",
60
+ historyTitle: "Conversation history",
61
61
  language: "Language",
62
62
  launcherOpen: "Open chat",
63
- messagesLoading: "Loading conversation\u2026",
64
63
  micStart: "Start voice input",
65
64
  micStop: "Stop voice input",
66
65
  micUnsupported: "Voice input is not supported in this browser",
@@ -76,16 +75,20 @@ var STRINGS_EN = {
76
75
  startNewConversation: "Start a new conversation",
77
76
  stop: "Stop",
78
77
  theme: "Theme",
79
- themeAuto: "Auto (system)",
78
+ themeAuto: "Auto",
80
79
  themeDark: "Dark",
81
80
  themeLight: "Light",
81
+ textSize: "Text size",
82
+ textSizeSmall: "Small",
83
+ textSizeNormal: "Normal",
84
+ textSizeLarge: "Large",
82
85
  loading: "Loading\u2026",
83
86
  thinking: "Thinking\u2026",
84
87
  thoughts: "Thoughts",
85
88
  usedTool: "Used tool",
86
89
  // ── Messenger modules ──────────────────────────────────────────
87
90
  tabHome: "Home",
88
- tabMessages: "Messages",
91
+ tabConversations: "Conversations",
89
92
  tabHelp: "Help",
90
93
  tabNews: "News",
91
94
  modulesEmpty: "Nothing here yet",
@@ -109,6 +112,8 @@ var STRINGS_EN = {
109
112
  // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
110
113
  formSubmit: "Submit",
111
114
  formSkip: "Skip for now",
115
+ formSubmitted: "Form submitted",
116
+ formSkipped: "Form skipped",
112
117
  formRequired: "This field is required",
113
118
  formInvalidEmail: "Enter a valid email address",
114
119
  formInvalidTel: "Enter a valid phone number",
@@ -140,7 +145,8 @@ var STRINGS_FR = {
140
145
  attachmentMimeRejected: "Type de fichier non pris en charge",
141
146
  attachmentTooLarge: "Le fichier est trop volumineux",
142
147
  attachmentTooMany: "Limite de pi\xE8ces jointes atteinte",
143
- chatClosed: "Cette conversation est ferm\xE9e",
148
+ conversationClosed: "Cette conversation est ferm\xE9e",
149
+ conversationLoading: "Chargement de la conversation\u2026",
144
150
  close: "Fermer",
145
151
  collapse: "R\xE9duire",
146
152
  collapseSidebar: "R\xE9duire la barre lat\xE9rale",
@@ -161,11 +167,9 @@ var STRINGS_FR = {
161
167
  historyBack: "Retour au chat",
162
168
  historyEmpty: "Aucune conversation pour le moment",
163
169
  historyLoading: "Chargement de vos conversations\u2026",
164
- historyNewChat: "Nouvelle conversation",
165
170
  historyTitle: "Historique des conversations",
166
171
  language: "Langue",
167
172
  launcherOpen: "Ouvrir le chat",
168
- messagesLoading: "Chargement de la conversation\u2026",
169
173
  micStart: "D\xE9marrer la saisie vocale",
170
174
  micStop: "Arr\xEAter la saisie vocale",
171
175
  micUnsupported: "La saisie vocale n'est pas prise en charge par ce navigateur",
@@ -181,16 +185,20 @@ var STRINGS_FR = {
181
185
  startNewConversation: "D\xE9marrer une nouvelle conversation",
182
186
  stop: "Arr\xEAter",
183
187
  theme: "Th\xE8me",
184
- themeAuto: "Auto (syst\xE8me)",
188
+ themeAuto: "Auto",
185
189
  themeDark: "Sombre",
186
190
  themeLight: "Clair",
191
+ textSize: "Taille du texte",
192
+ textSizeSmall: "Petite",
193
+ textSizeNormal: "Normale",
194
+ textSizeLarge: "Grande",
187
195
  loading: "Chargement\u2026",
188
196
  thinking: "R\xE9flexion\u2026",
189
197
  thoughts: "R\xE9flexions",
190
198
  usedTool: "Outil utilis\xE9",
191
199
  // ── Messenger modules ──────────────────────────────────────────
192
200
  tabHome: "Accueil",
193
- tabMessages: "Messages",
201
+ tabConversations: "Conversations",
194
202
  tabHelp: "Aide",
195
203
  tabNews: "Actualit\xE9s",
196
204
  modulesEmpty: "Rien pour le moment",
@@ -214,6 +222,8 @@ var STRINGS_FR = {
214
222
  // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
215
223
  formSubmit: "Envoyer",
216
224
  formSkip: "Ignorer pour l'instant",
225
+ formSubmitted: "Formulaire envoy\xE9",
226
+ formSkipped: "Formulaire ignor\xE9",
217
227
  formRequired: "Ce champ est obligatoire",
218
228
  formInvalidEmail: "Saisissez une adresse e-mail valide",
219
229
  formInvalidTel: "Saisissez un num\xE9ro de t\xE9l\xE9phone valide",
@@ -457,12 +467,12 @@ var DEFAULT_LAUNCHER = {
457
467
  hidden: false
458
468
  };
459
469
  var DEFAULT_ACTIONS_BY_MODE = {
460
- floating: ["theme", "history", "close", "clear", "expand", "fullscreen", "popOut", "sound", "language"],
461
- inline: ["theme", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"],
462
- standalone: ["theme", "history", "clear", "sound", "language"],
463
- page: ["theme", "history", "clear", "sound", "language"],
464
- modal: ["theme", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"],
465
- drawer: ["theme", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"]
470
+ floating: ["theme", "textSize", "history", "close", "clear", "expand", "fullscreen", "popOut", "sound", "language"],
471
+ inline: ["theme", "textSize", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"],
472
+ standalone: ["theme", "textSize", "history", "clear", "sound", "language"],
473
+ page: ["theme", "textSize", "history", "clear", "sound", "language"],
474
+ modal: ["theme", "textSize", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"],
475
+ drawer: ["theme", "textSize", "history", "close", "clear", "fullscreen", "popOut", "sound", "language"]
466
476
  };
467
477
  var DEFAULT_SOUND = {
468
478
  enabled: true,
@@ -473,7 +483,7 @@ var DEFAULT_HAPTICS = {
473
483
  enabled: true,
474
484
  events: void 0
475
485
  };
476
- var DEFAULT_MODULES = [{ label: "tabMessages", layout: "chat" }];
486
+ var DEFAULT_MODULES = [{ label: "tabConversations", layout: "chat" }];
477
487
  var DEFAULT_HOME_MODULE = { showSearchBar: true };
478
488
 
479
489
  // src/core/config/resolve.ts
@@ -498,6 +508,8 @@ function resolveOptions(rawOpts) {
498
508
  pageContext: sanitizePageContext(opts.pageContext),
499
509
  position: presentation.position ?? "bottom-right",
500
510
  themeMode,
511
+ // Purely an end-user preference (the ⋯ menu cycler) — no config input.
512
+ textSize: "normal",
501
513
  themeOverrides,
502
514
  mode,
503
515
  iframe: presentation.iframe ?? false,
@@ -605,7 +617,7 @@ function resolveModules(overrides) {
605
617
  resolved.greetingText = m.greetingText;
606
618
  resolved.showGreeting = m.showGreeting ?? true;
607
619
  resolved.showSearchBar = m.showSearchBar ?? DEFAULT_HOME_MODULE.showSearchBar;
608
- resolved.showRecentMessages = m.showRecentMessages ?? true;
620
+ resolved.showRecentConversations = m.showRecentConversations ?? true;
609
621
  if (m.userAvatars && m.userAvatars.length > 0) resolved.userAvatars = m.userAvatars;
610
622
  if (m.status) resolved.status = m.status;
611
623
  resolved.contentBlockTitle = m.contentBlockTitle;
@@ -685,14 +697,17 @@ function resolveLauncher(overrides) {
685
697
  }
686
698
 
687
699
  // src/core/config/overrides.ts
688
- function applyOptionOverrides(options, activeLocale, activeThemeMode) {
689
- if (activeLocale === options.locale && activeThemeMode === options.themeMode) return options;
700
+ function applyOptionOverrides(options, activeLocale, activeThemeMode, activeTextSize) {
701
+ if (activeLocale === options.locale && activeThemeMode === options.themeMode && activeTextSize === options.textSize) {
702
+ return options;
703
+ }
690
704
  const next = { ...options };
691
705
  if (activeLocale !== options.locale) {
692
706
  next.locale = activeLocale;
693
707
  next.strings = resolveStrings(activeLocale, options.stringsOverride);
694
708
  }
695
709
  if (activeThemeMode !== options.themeMode) next.themeMode = activeThemeMode;
710
+ if (activeTextSize !== options.textSize) next.textSize = activeTextSize;
696
711
  return next;
697
712
  }
698
713
 
@@ -777,6 +792,7 @@ var ACTION_NAME_LITERALS = [
777
792
  "history",
778
793
  "language",
779
794
  "theme",
795
+ "textSize",
780
796
  "close"
781
797
  ];
782
798
  var boolAttr = (v) => v !== "false";
@@ -964,19 +980,19 @@ function bindHostCommands(host, handlers) {
964
980
  }
965
981
 
966
982
  // src/styles/tokens.css
967
- var tokens_default = ':host{--__P__-accent: __BRAND_ACCENT__;--__P__-accent-text: __BRAND_ACCENT_TEXT__;--__P__-radius: __BRAND_RADIUS__;--__P__-radius-sm: 8px;--__P__-radius-md: 10px;--__P__-radius-lg: 16px;--__P__-font: __BRAND_FONT__;--__P__-font-display: var(--__P__-font);--__P__-font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--__P__-bg: oklch(1 0 0);--__P__-bg-elevated: oklch(.9789 .0029 278.3);--__P__-surface: var(--__P__-bg-elevated);--__P__-muted: var(--__P__-fg-muted);--__P__-hover: oklch(.1686 .011 278.3 / .06);--__P__-fg: oklch(.1686 .011 278.3);--__P__-fg-muted: oklch(.4932 .0301 278.3);--__P__-border: oklch(.9312 .0084 278.3);--__P__-border-strong: oklch(.8757 .0131 278.3);--__P__-bubble-user: var(--__P__-accent);--__P__-bubble-user-text: var(--__P__-accent-text);--__P__-bubble-assistant: oklch(.9638 .0058 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-on-accent: var(--__P__-accent-text);--__P__-success: oklch(.6456 .1654 151.53);--__P__-warning: oklch(.7135 .1494 74.05);--__P__-danger: oklch(.5966 .1818 24.51);--__P__-danger-text: oklch(.5054 .1905 27.52);--__P__-danger-bg: oklch(.5966 .1818 24.51 / .1);--__P__-neutral: oklch(.7137 .0192 278.3);--__P__-focus: var(--__P__-accent);--__P__-shadow-panel: 0 8px 24px -8px rgba(13, 15, 20, .18), 0 24px 64px -24px rgba(13, 15, 20, .24);--__P__-shadow-card: 0 1px 2px rgba(13, 15, 20, .06), 0 4px 12px -6px rgba(13, 15, 20, .12);--__P__-backdrop: oklch(.1686 .011 278.3 / .55);--__P__-shadow-fab: 0 6px 16px -4px color-mix(in oklch, var(--__P__-accent) 45%, transparent), 0 12px 32px -12px rgba(13, 15, 20, .25);--__P__-z-fab: 2147483600;--__P__-z-panel: 2147483601;--__P__-panel-w: 380px;--__P__-panel-h: 600px;--__P__-fab-size: 56px;--__P__-space-1: 4px;--__P__-space-2: 8px;--__P__-space-3: 12px;--__P__-space-4: 16px;--__P__-space-5: 20px;--__P__-space-6: 24px;--__P__-space-8: 32px;--__P__-text-xs: 12px;--__P__-text-sm: 13px;--__P__-text-base: 15px;--__P__-text-md: 16px;--__P__-text-lg: 18px;--__P__-text-xl: 22px;--__P__-text-2xl: 30px;--__P__-ease: cubic-bezier(.2, .7, .2, 1);--__P__-ease-out: cubic-bezier(.2, .7, .2, 1);--__P__-ease-in: cubic-bezier(.4, 0, 1, 1);--__P__-ease-in-out: cubic-bezier(.65, 0, .35, 1);--__P__-dur-quick: .12s;--__P__-dur-base: .22s;--__P__-dur-slow: .32s;font-family:var(--__P__-font);color:var(--__P__-fg);color-scheme:light}:host([data-theme="dark"]){--__P__-bg: oklch(.1783 .0128 278.3);--__P__-bg-elevated: oklch(.2232 .0182 278.3);--__P__-fg: oklch(.9368 .01 278.3);--__P__-fg-muted: oklch(.7048 .0296 278.3);--__P__-border: oklch(.2752 .0266 278.3);--__P__-border-strong: oklch(.335 .0291 278.3);--__P__-hover: oklch(.9368 .01 278.3 / .08);--__P__-bubble-assistant: oklch(.2474 .0311 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-danger-text: oklch(.8077 .1035 19.57);--__P__-danger-bg: oklch(.5966 .1818 24.51 / .18);--__P__-shadow-panel: 0 8px 24px -8px rgba(0, 0, 0, .6), 0 24px 64px -24px rgba(0, 0, 0, .7);--__P__-shadow-card: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px -6px rgba(0, 0, 0, .5);--__P__-backdrop: rgba(0, 0, 0, .65);color-scheme:dark}@media(prefers-color-scheme:dark){:host([data-theme="auto"]){--__P__-bg: oklch(.1783 .0128 278.3);--__P__-bg-elevated: oklch(.2232 .0182 278.3);--__P__-fg: oklch(.9368 .01 278.3);--__P__-fg-muted: oklch(.7048 .0296 278.3);--__P__-border: oklch(.2752 .0266 278.3);--__P__-border-strong: oklch(.335 .0291 278.3);--__P__-hover: oklch(.9368 .01 278.3 / .08);--__P__-bubble-assistant: oklch(.2474 .0311 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-shadow-panel: 0 8px 24px -8px rgba(0, 0, 0, .6), 0 24px 64px -24px rgba(0, 0, 0, .7);color-scheme:dark}}@media(prefers-reduced-motion:reduce){:host{--__P__-dur-quick: 1ms;--__P__-dur-base: 1ms;--__P__-dur-slow: 1ms}}\n';
983
+ var tokens_default = ':host{--__P__-accent: __BRAND_ACCENT__;--__P__-accent-text: __BRAND_ACCENT_TEXT__;--__P__-radius: __BRAND_RADIUS__;--__P__-radius-sm: 8px;--__P__-radius-md: 10px;--__P__-radius-lg: 16px;--__P__-font: __BRAND_FONT__;--__P__-font-display: var(--__P__-font);--__P__-font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--__P__-bg: oklch(1 0 0);--__P__-bg-elevated: oklch(.9789 .0029 278.3);--__P__-surface: var(--__P__-bg-elevated);--__P__-muted: var(--__P__-fg-muted);--__P__-hover: oklch(.1686 .011 278.3 / .06);--__P__-fg: oklch(.1686 .011 278.3);--__P__-fg-muted: oklch(.4932 .0301 278.3);--__P__-border: oklch(.9312 .0084 278.3);--__P__-border-strong: oklch(.8757 .0131 278.3);--__P__-bubble-user: var(--__P__-accent);--__P__-bubble-user-text: var(--__P__-accent-text);--__P__-bubble-assistant: oklch(.9638 .0058 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-on-accent: var(--__P__-accent-text);--__P__-success: oklch(.6456 .1654 151.53);--__P__-warning: oklch(.7135 .1494 74.05);--__P__-danger: oklch(.5966 .1818 24.51);--__P__-danger-text: oklch(.5054 .1905 27.52);--__P__-danger-bg: oklch(.5966 .1818 24.51 / .1);--__P__-neutral: oklch(.7137 .0192 278.3);--__P__-focus: var(--__P__-accent);--__P__-shadow-panel: 0 8px 24px -8px rgba(13, 15, 20, .18), 0 24px 64px -24px rgba(13, 15, 20, .24);--__P__-shadow-card: 0 1px 2px rgba(13, 15, 20, .06), 0 4px 12px -6px rgba(13, 15, 20, .12);--__P__-backdrop: oklch(.1686 .011 278.3 / .55);--__P__-shadow-fab: 0 6px 16px -4px color-mix(in oklch, var(--__P__-accent) 45%, transparent), 0 12px 32px -12px rgba(13, 15, 20, .25);--__P__-z-fab: 2147483600;--__P__-z-panel: 2147483601;--__P__-panel-w: 380px;--__P__-panel-h: 600px;--__P__-fab-size: 56px;--__P__-space-1: 4px;--__P__-space-2: 8px;--__P__-space-3: 12px;--__P__-space-4: 16px;--__P__-space-5: 20px;--__P__-space-6: 24px;--__P__-space-8: 32px;--__P__-text-scale: 1;--__P__-text-xs: calc(12px * var(--__P__-text-scale));--__P__-text-sm: calc(13px * var(--__P__-text-scale));--__P__-text-base: calc(15px * var(--__P__-text-scale));--__P__-text-md: calc(16px * var(--__P__-text-scale));--__P__-text-lg: calc(18px * var(--__P__-text-scale));--__P__-text-xl: calc(22px * var(--__P__-text-scale));--__P__-text-2xl: calc(30px * var(--__P__-text-scale))}:host([data-text-size="small"]){--__P__-text-scale: .9}:host([data-text-size="large"]){--__P__-text-scale: 1.15}:host{--__P__-ease: cubic-bezier(.2, .7, .2, 1);--__P__-ease-out: cubic-bezier(.2, .7, .2, 1);--__P__-ease-in: cubic-bezier(.4, 0, 1, 1);--__P__-ease-in-out: cubic-bezier(.65, 0, .35, 1);--__P__-dur-quick: .12s;--__P__-dur-base: .22s;--__P__-dur-slow: .32s;font-family:var(--__P__-font);color:var(--__P__-fg);color-scheme:light}:host([data-theme="dark"]){--__P__-bg: oklch(.1783 .0128 278.3);--__P__-bg-elevated: oklch(.2232 .0182 278.3);--__P__-fg: oklch(.9368 .01 278.3);--__P__-fg-muted: oklch(.7048 .0296 278.3);--__P__-border: oklch(.2752 .0266 278.3);--__P__-border-strong: oklch(.335 .0291 278.3);--__P__-hover: oklch(.9368 .01 278.3 / .08);--__P__-bubble-assistant: oklch(.2474 .0311 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-danger-text: oklch(.8077 .1035 19.57);--__P__-danger-bg: oklch(.5966 .1818 24.51 / .18);--__P__-shadow-panel: 0 8px 24px -8px rgba(0, 0, 0, .6), 0 24px 64px -24px rgba(0, 0, 0, .7);--__P__-shadow-card: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px -6px rgba(0, 0, 0, .5);--__P__-backdrop: rgba(0, 0, 0, .65);color-scheme:dark}@media(prefers-color-scheme:dark){:host([data-theme="auto"]){--__P__-bg: oklch(.1783 .0128 278.3);--__P__-bg-elevated: oklch(.2232 .0182 278.3);--__P__-fg: oklch(.9368 .01 278.3);--__P__-fg-muted: oklch(.7048 .0296 278.3);--__P__-border: oklch(.2752 .0266 278.3);--__P__-border-strong: oklch(.335 .0291 278.3);--__P__-hover: oklch(.9368 .01 278.3 / .08);--__P__-bubble-assistant: oklch(.2474 .0311 278.3);--__P__-bubble-assistant-text: var(--__P__-fg);--__P__-shadow-panel: 0 8px 24px -8px rgba(0, 0, 0, .6), 0 24px 64px -24px rgba(0, 0, 0, .7);color-scheme:dark}}@media(prefers-reduced-motion:reduce){:host{--__P__-dur-quick: 1ms;--__P__-dur-base: 1ms;--__P__-dur-slow: 1ms}}\n';
968
984
 
969
985
  // src/styles/reset.css
970
986
  var reset_default = '*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0}button{font:inherit;color:inherit;background:none;cursor:pointer;-webkit-appearance:none;appearance:none;line-height:1}button:focus-visible,[tabindex]:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}textarea,input{font:inherit;color:inherit;background:none;border:0;outline:0;resize:none}a{color:var(--__P__-accent);text-decoration:underline;text-underline-offset:2px}img,svg{display:block;max-width:100%}ul,ol{list-style:none}.__P__-app{display:block;width:100%;height:100%;font-family:var(--__P__-font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv11","ss01","ss03"}.__P__-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n';
971
987
 
972
988
  // src/styles/panel.css
973
- var panel_default = '.__P__-anchor{right:16px;bottom:16px}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:14px}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:14px;background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:#ffffff26}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:14px;font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-left:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:14px;font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;right:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:14px;word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-bottom-right-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-bottom-left-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:11px;line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-left:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-left:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:12.5px;padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-left:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-radius:0 var(--__P__-radius-sm) var(--__P__-radius-sm) 0;color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:left}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-left:var(--__P__-space-3);border-left:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-tool-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2);margin-top:6px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs)}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:14px;line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:16px}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:14px;text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-2)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:12px 8px 6px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-item{all:unset;display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:var(--__P__-radius-md);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-title{font-size:14px;font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-preview{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-item[data-closed=true] .__P__-history-title:after{content:"\\2022";margin-left:var(--__P__-space-2);opacity:.5}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:11px;line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:11px;letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;right:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-help-card .__P__-list-row:hover{background:var(--__P__-hover)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:10px;font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:14px;font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:var(--__P__-text-2xl);font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:2px 0 0;font-family:var(--__P__-font-display);font-size:var(--__P__-text-2xl);font-weight:800;line-height:1.18;letter-spacing:-.01em;color:color-mix(in srgb,var(--__P__-on-accent) 88%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-left:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-left:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:left;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:14px}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:14px}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:left}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:14px}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:14px;color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:left;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-bg-elevated)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:left;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-tags{display:flex;gap:6px;flex-wrap:wrap}.__P__-news-tag{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);padding:2px 8px;border-radius:999px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:14px;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;right:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-field{display:flex;flex-direction:column;gap:4px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;box-sizing:border-box;padding:var(--__P__-space-2) var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:6px}.__P__-choice{display:flex;align-items:flex-start;gap:8px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:2px}.__P__-form-submit,.__P__-tool-approve{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled),.__P__-tool-approve:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip,.__P__-tool-reject{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled),.__P__-tool-reject:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-2);padding:var(--__P__-space-3) var(--__P__-space-4) var(--__P__-space-4);border-top:1px solid var(--__P__-border);flex:1 1 auto;min-height:0;overflow-y:auto}.__P__-list-wrap:has(+.__P__-form-gate){flex:0 1 auto;max-height:40%}.__P__-list-wrap:has(+.__P__-form-gate) .__P__-list:empty{padding:0}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-tool-ask-input,.__P__-tool-approval{display:flex;flex-direction:column;gap:var(--__P__-space-2);margin-top:6px;padding:var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-tool-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-badge{padding:2px 8px;border-radius:999px;background:var(--__P__-warning, #f59e0b);color:#1a1206;font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-title{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}.__P__-tool-question{margin:0;font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-tool-desc{margin:0;font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-tool-args{margin:0;padding:var(--__P__-space-2);max-height:160px;overflow:auto;border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-tool-stale-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-tool-decided{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-decided-label{padding:2px 8px;border-radius:999px;background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-decided-label[data-approved=true]{color:var(--__P__-success, #16a34a);border-color:var(--__P__-success, #16a34a)}.__P__-tool-decided-label[data-approved=false]{color:var(--__P__-danger);border-color:var(--__P__-danger)}.__P__-tool-decided-value{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}\n';
989
+ var panel_default = '.__P__-anchor{right:16px;bottom:16px}:host([data-position="bottom-left"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{right:auto;left:16px}:host([data-position="top-right"]) .__P__-anchor,:host([data-position="top-left"]) .__P__-anchor{bottom:auto;top:16px}.__P__-anchor{position:fixed;display:flex;flex-direction:column;align-items:flex-end;gap:var(--__P__-space-3);pointer-events:none}.__P__-anchor{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=sm]{--__P__-fab-size: 44px}.__P__-anchor[data-launcher-size=md]{--__P__-fab-size: 56px}.__P__-anchor[data-launcher-size=lg]{--__P__-fab-size: 68px}.__P__-anchor>*{pointer-events:auto}.__P__-fab[data-size=sm]{--__P__-fab-size: 44px;font-size:var(--__P__-text-sm)}.__P__-fab[data-size=md]{--__P__-fab-size: 56px;font-size:calc(14px * var(--__P__-text-scale))}.__P__-fab[data-size=lg]{--__P__-fab-size: 68px;font-size:var(--__P__-text-base)}.__P__-fab{display:inline-flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);color:var(--__P__-accent-text);background:var(--__P__-accent);box-shadow:var(--__P__-shadow-fab);font-weight:600;line-height:1;transform-origin:bottom right;animation:__P__-fab-in var(--__P__-dur-base) var(--__P__-ease) both;transition:transform var(--__P__-dur-base) var(--__P__-ease),opacity var(--__P__-dur-base) var(--__P__-ease),box-shadow var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab:hover{transform:translateY(-2px)}.__P__-fab:active{transform:translateY(0)}.__P__-fab:focus-visible{outline:2px solid var(--__P__-on-accent);outline-offset:3px}.__P__-fab svg{width:24px;height:24px;flex-shrink:0}@keyframes __P__-fab-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}.__P__-fab[data-leaving]{position:absolute;right:0;bottom:0;animation:__P__-fab-out var(--__P__-dur-quick) var(--__P__-ease) forwards;pointer-events:none}:host([data-position^="top-"]) .__P__-fab[data-leaving]{bottom:auto;top:0}:host([data-position$="-left"]) .__P__-fab[data-leaving]{right:auto;left:0}@keyframes __P__-fab-out{0%{opacity:1;transform:none}to{opacity:0;transform:scale(.85)}}.__P__-fab[data-variant=circle]{width:var(--__P__-fab-size);height:var(--__P__-fab-size);border-radius:999px}.__P__-fab[data-variant=circle] .__P__-fab-label{display:none}.__P__-fab[data-variant=pill]{height:var(--__P__-fab-size);padding:0 18px 0 16px;border-radius:999px}.__P__-fab[data-variant=bar]{height:var(--__P__-fab-size);padding:0 22px;border-radius:var(--__P__-radius)}.__P__-fab[data-variant=minimal]{height:var(--__P__-fab-size);padding:0 var(--__P__-space-4);border-radius:999px;background:transparent;color:var(--__P__-accent);box-shadow:none;border:1px solid currentColor}.__P__-fab[data-variant=minimal]:hover{background:color-mix(in srgb,var(--__P__-accent) 12%,transparent)}.__P__-callout{--__P__-callout-fab-h: var(--__P__-fab-size, 56px);--__P__-callout-gap: clamp(12px, calc(var(--__P__-callout-fab-h) * .25), 22px);--__P__-callout-nudge-direction: -1;position:absolute;display:inline-flex;align-items:center;gap:var(--__P__-space-2);padding:10px 14px;background:var(--__P__-fg);color:var(--__P__-bg);border-radius:999px;font-size:var(--__P__-text-sm);font-weight:600;line-height:1.2;box-shadow:0 10px 30px -8px #00000059;pointer-events:auto;animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease);z-index:1;max-width:240px;white-space:nowrap}.__P__-callout[data-position=left]{right:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%)}.__P__-callout[data-position=right]{left:calc(100% + var(--__P__-callout-gap));bottom:calc(var(--__P__-callout-fab-h) / 2);transform:translateY(50%);--__P__-callout-nudge-direction: 1}.__P__-callout[data-position=top]{bottom:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-position=bottom]{top:calc(100% + var(--__P__-callout-gap));right:0;max-width:min(280px,calc(100vw - 32px))}:host([data-position$="-left"]) .__P__-callout[data-position=top],:host([data-position$="-left"]) .__P__-callout[data-position=bottom]{right:auto;left:0}.__P__-callout[data-shape=bubble]{border-radius:var(--__P__-radius-md);white-space:normal;width:max-content;max-width:min(280px,calc(100vw - 32px))}.__P__-callout[data-shape=callout]{padding:12px 18px;font-size:calc(14px * var(--__P__-text-scale));background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-callout:after{content:"";position:absolute;width:12px;height:12px;background:inherit;border-radius:2px;transform:rotate(45deg)}.__P__-callout[data-position=left]:after{right:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=right]:after{left:-5px;top:50%;margin-top:-6px}.__P__-callout[data-position=top]:after{bottom:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-position=bottom]:after{top:-5px;right:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}:host([data-position$="-left"]) .__P__-callout[data-position=top]:after,:host([data-position$="-left"]) .__P__-callout[data-position=bottom]:after{right:auto;left:calc(var(--__P__-fab-size, 56px) / 2 - 6px)}.__P__-callout[data-animated]{animation:__P__-callout-in var(--__P__-dur-slow) var(--__P__-ease),__P__-callout-nudge 1.6s var(--__P__-ease-in-out) var(--__P__-dur-slow) infinite}@keyframes __P__-callout-in{0%{opacity:0}to{opacity:1}}@keyframes __P__-callout-nudge{0%,to{margin-left:0;margin-right:0}50%{margin-left:calc(6px * var(--__P__-callout-nudge-direction));margin-right:calc(-6px * var(--__P__-callout-nudge-direction))}}@media(prefers-reduced-motion:reduce){.__P__-callout[data-animated]{animation:__P__-callout-in 1ms var(--__P__-ease)}.__P__-icon-btn[data-recording=true],.__P__-typing span{animation:none}}.__P__-callout-close{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;color:inherit;opacity:.7;cursor:pointer}.__P__-callout-close:hover{opacity:1;background:#ffffff26}.__P__-callout-close svg{width:12px;height:12px}.__P__-panel{width:var(--__P__-panel-w);height:var(--__P__-panel-h);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);background:var(--__P__-bg);color:var(--__P__-fg);border-radius:var(--__P__-radius-lg);box-shadow:var(--__P__-shadow-panel);display:flex;flex-direction:column;overflow:hidden;transform-origin:bottom right;animation:__P__-panel-in var(--__P__-dur-slow) var(--__P__-ease);border:1px solid var(--__P__-border)}:host([data-mode="open"]) .__P__-panel{width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));min-width:var(--__P__-resize-min-w, auto);min-height:var(--__P__-resize-min-h, auto);max-width:var(--__P__-resize-max-w, calc(100vw - 32px) );max-height:var(--__P__-resize-max-h, calc(100dvh - 32px) )}@keyframes __P__-panel-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}:host([data-mode="expanded"]) .__P__-panel{width:var(--__P__-expanded-w, 640px);height:var(--__P__-expanded-h, 820px);max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}:host([data-mode="fullscreen"]){z-index:var(--__P__-z-panel)!important}:host([data-mode="fullscreen"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="fullscreen"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}:host([data-mode="fullscreen"]) .__P__-fab{display:none}:host([data-mode="inline"]) .__P__-anchor,:host([data-mode="standalone"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-height:0}:host([data-mode="inline"]) .__P__-panel,:host([data-mode="standalone"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;animation:none}:host([data-mode="inline"]) .__P__-fab,:host([data-mode="standalone"]) .__P__-fab{display:none}:host([data-mode="inline"]){min-height:320px}:host([data-mode="inline"]) .__P__-panel{border-radius:var(--__P__-radius)}:host([data-mode="standalone"]) .__P__-panel{border-radius:0;border:0;box-shadow:none}:host([data-mode="modal"]){position:fixed!important;inset:0!important;z-index:var(--__P__-z-panel)!important;display:block!important;width:100vw;height:100dvh;background:var(--__P__-modal-backdrop, var(--__P__-backdrop));animation:__P__-backdrop-in var(--__P__-dur-base) var(--__P__-ease) both;--__P__-panel-w: min(960px, 92vw);--__P__-panel-h: min(720px, 88dvh)}:host([data-mode="modal"]) .__P__-anchor{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--__P__-space-6);pointer-events:none}:host([data-mode="modal"]) .__P__-panel{pointer-events:auto;width:var(--__P__-widget-w, var(--__P__-panel-w));height:var(--__P__-widget-h, var(--__P__-panel-h));max-width:calc(100vw - 48px);max-height:calc(100dvh - 48px);min-width:0;min-height:0;border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-panel);animation:__P__-modal-in var(--__P__-dur-base) var(--__P__-ease);translate:var(--__P__-modal-dx, 0px) var(--__P__-modal-dy, 0px)}:host([data-mode="modal"]) .__P__-header,:host([data-mode="modal"]) .__P__-back-header,:host([data-mode="modal"]) .__P__-home-hero{cursor:grab;touch-action:none}:host([data-mode="modal"]) .__P__-panel[data-dragging]{cursor:grabbing;user-select:none}:host([data-mode="modal"]) .__P__-panel[data-dragging] *{cursor:grabbing}:host([data-mode="modal"]) .__P__-fab{display:none}@keyframes __P__-backdrop-in{0%{background:#0000}to{background:var(--__P__-modal-backdrop, var(--__P__-backdrop))}}@keyframes __P__-modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}:host([data-mode="drawer"]){--__P__-panel-w: min(440px, calc(100vw - 32px) );--__P__-panel-h: 100dvh}:host([data-mode="drawer"]) .__P__-anchor{position:fixed;--__P__-inset-x: var(--__P__-panel-inset, 12px);--__P__-inset-y: var(--__P__-panel-inset, 3dvh);top:var(--__P__-inset-y);bottom:auto;right:var(--__P__-inset-x);left:auto;width:min(var(--__P__-widget-w, var(--__P__-panel-w)),calc(100vw - var(--__P__-inset-x) * 2));height:min(var(--__P__-widget-h, var(--__P__-panel-h)),calc(100dvh - var(--__P__-inset-y) * 2));padding:0;display:block;pointer-events:auto}:host([data-mode="drawer"][data-position$="-left"]) .__P__-anchor{right:auto;left:var(--__P__-inset-x)}:host([data-mode="drawer"][data-position^="bottom-"]) .__P__-anchor{top:auto;bottom:var(--__P__-inset-y)}:host([data-mode="drawer"]) .__P__-panel{width:100%;height:100%;max-width:none;max-height:none;min-width:0;min-height:0;border-radius:var(--__P__-radius, 12px);border:1px solid var(--__P__-border);box-shadow:-8px 16px 32px -12px #00000038;animation:__P__-drawer-in var(--__P__-dur-base) var(--__P__-ease)}:host([data-mode="drawer"][data-position$="-left"]) .__P__-panel{box-shadow:8px 16px 32px -12px #00000038;animation:__P__-drawer-in-left var(--__P__-dur-base) var(--__P__-ease)}.__P__-fab[data-edge-tab]{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-2);position:fixed;top:50%;height:140px;width:auto;min-width:0;padding:10px 8px;writing-mode:vertical-rl;text-orientation:mixed;transform:translateY(-50%);transform-origin:center;animation:__P__-edge-tab-in var(--__P__-dur-base) var(--__P__-ease) both}.__P__-fab[data-edge-tab] svg{writing-mode:horizontal-tb}.__P__-fab[data-edge-tab]:hover{transform:translateY(-50%) scale(1.03)}.__P__-fab[data-edge-tab]:active{transform:translateY(-50%) scale(.97)}:host([data-position$="-right"]) .__P__-fab[data-edge-tab]{right:0;left:auto;border-radius:12px 0 0 12px;box-shadow:-6px 0 18px -8px #0000004d}:host([data-position$="-left"]) .__P__-fab[data-edge-tab]{left:0;right:auto;border-radius:0 12px 12px 0;box-shadow:6px 0 18px -8px #0000004d}.__P__-fab[data-edge-tab][data-leaving]{position:fixed;top:50%;bottom:auto;animation:__P__-edge-tab-out var(--__P__-dur-quick) var(--__P__-ease) forwards}@keyframes __P__-edge-tab-in{0%{opacity:0;transform:translateY(-50%) scale(.9)}to{opacity:1;transform:translateY(-50%) scale(1)}}@keyframes __P__-edge-tab-out{0%{opacity:1;transform:translateY(-50%) scale(1)}to{opacity:0;transform:translateY(-50%) scale(.85)}}@keyframes __P__-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes __P__-drawer-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){:host([data-mode="drawer"]) .__P__-panel,.__P__-fab[data-edge-tab]{animation:none}}.__P__-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);background:var(--__P__-bg)}.__P__-header h1{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;flex:1;letter-spacing:-.01em}.__P__-header-actions{margin-left:auto;display:flex;align-items:center;gap:var(--__P__-space-1);flex-shrink:0}.__P__-agent{flex:1;display:inline-flex;align-items:center;gap:10px;min-width:0}.__P__-agent-avatar{position:relative;width:32px;height:32px;border-radius:999px;background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--__P__-text-xs);overflow:hidden;flex-shrink:0}.__P__-agent-avatar img{width:100%;height:100%;object-fit:cover}.__P__-agent-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:10px;height:10px;border-radius:999px;border:2px solid var(--__P__-bg);background:var(--__P__-neutral)}.__P__-agent-avatar[data-status=online]:after{background:var(--__P__-success)}.__P__-agent-avatar[data-status=away]:after{background:var(--__P__-warning)}.__P__-agent-avatar[data-status=offline]:after{background:var(--__P__-neutral)}.__P__-agent-meta{display:flex;flex-direction:column;line-height:1.15;min-width:0}.__P__-agent-meta strong{font-size:calc(14px * var(--__P__-text-scale));font-weight:600;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-agent-meta span{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-suggestions{display:flex;flex-wrap:nowrap;gap:var(--__P__-space-2);padding:6px 14px 10px;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none;-ms-overflow-style:none;min-width:0}.__P__-suggestions::-webkit-scrollbar{display:none}.__P__-suggestions:before,.__P__-suggestions:after{content:"";flex:1 1 0;min-width:0}.__P__-suggestion{flex:0 0 auto;scroll-snap-align:center;padding:7px 14px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg);font-size:var(--__P__-text-sm);font-weight:500;white-space:nowrap;transition:background var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-suggestion:hover{border-color:var(--__P__-accent);color:var(--__P__-accent);transform:translateY(-1px)}.__P__-suggestion:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px;border-color:var(--__P__-accent)}.__P__-suggestion:active{transform:translateY(0)}.__P__-icon-btn{width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);transition:background var(--__P__-dur-quick) var(--__P__-ease),color var(--__P__-dur-quick) var(--__P__-ease)}.__P__-icon-btn:hover{background:var(--__P__-bg-elevated);color:var(--__P__-fg)}.__P__-icon-btn:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-icon-btn:active{background:var(--__P__-border)}.__P__-icon-btn:disabled{opacity:.45;cursor:not-allowed}.__P__-icon-btn:before{content:"";position:absolute;inset:-6px}.__P__-icon-btn{position:relative}.__P__-icon-btn svg{width:18px;height:18px}.__P__-icon-btn[data-recording=true]{color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);animation:__P__-pulse 1.2s var(--__P__-ease) infinite}@keyframes __P__-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--__P__-accent) 40%,transparent)}50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--__P__-accent) 0%,transparent)}}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;right:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);color:var(--__P__-fg);box-shadow:var(--__P__-shadow-panel);cursor:pointer;opacity:.85;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease);animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-jump:hover{opacity:1}.__P__-jump:active{transform:translateY(1px)}.__P__-jump svg{width:18px;height:18px}.__P__-list{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-4);padding-bottom:var(--__P__-space-8);display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-date-divider{position:sticky;top:var(--__P__-space-2);z-index:2;display:flex;justify-content:center;align-items:flex-start;height:0;margin:0;pointer-events:none}.__P__-date-pill{padding:3px 10px;border-radius:999px;font-size:calc(11px * var(--__P__-text-scale));font-weight:600;color:var(--__P__-fg-muted);background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);box-shadow:var(--__P__-shadow-card);opacity:0;pointer-events:none;transition:opacity var(--__P__-dur-base) var(--__P__-ease)}.__P__-list[data-scrolling=true] .__P__-date-pill{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.__P__-date-pill{transition:none}}.__P__-bubble-row{display:flex}.__P__-bubble-row[data-role=user]{justify-content:flex-end}.__P__-bubble-row[data-role=assistant]{justify-content:flex-start}.__P__-bubble{max-width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);line-height:1.6;font-size:calc(14px * var(--__P__-text-scale));word-wrap:break-word;overflow-wrap:anywhere;box-shadow:0 1px 2px #0000000a,0 1px 8px -4px #0000000f;animation:__P__-bubble-in var(--__P__-dur-base) var(--__P__-ease)}.__P__-bubble ::selection{background:color-mix(in srgb,var(--__P__-accent) 30%,transparent)}.__P__-bubble-row[data-role=user] .__P__-bubble ::selection{background:#fff6;color:var(--__P__-bubble-user-text)}@keyframes __P__-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-bubble-row[data-role=user] .__P__-bubble{background:var(--__P__-bubble-user);color:var(--__P__-bubble-user-text);border-bottom-right-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-bottom-left-radius:5px}.__P__-bubble-col{display:flex;flex-direction:column;max-width:85%;min-width:0}.__P__-bubble-row[data-role=user] .__P__-bubble-col{align-items:flex-end}.__P__-bubble-row[data-role=assistant] .__P__-bubble-col{align-items:flex-start}.__P__-bubble-time{margin-top:3px;padding:0 4px;font-size:calc(11px * var(--__P__-text-scale));line-height:1;color:var(--__P__-fg-muted);user-select:none}.__P__-md>*:first-child{margin-top:0}.__P__-md>*:last-child{margin-bottom:0}.__P__-md p{margin:10px 0}.__P__-md h1,.__P__-md h2,.__P__-md h3,.__P__-md h4,.__P__-md h5,.__P__-md h6{margin:18px 0 8px;line-height:1.3;letter-spacing:-.01em;font-weight:700}.__P__-md h1{font-size:1.4em}.__P__-md h2{font-size:1.22em}.__P__-md h3{font-size:1.08em}.__P__-md h4,.__P__-md h5,.__P__-md h6{font-size:1em}.__P__-md>h1:first-child,.__P__-md>h2:first-child,.__P__-md>h3:first-child,.__P__-md>h4:first-child,.__P__-md>h5:first-child,.__P__-md>h6:first-child{margin-top:0}.__P__-md ul,.__P__-md ol{padding-left:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-left:2px}.__P__-md li::marker{color:var(--__P__-fg-muted)}.__P__-md li>p{margin:6px 0}.__P__-md li>ul,.__P__-md li>ol{margin:6px 0}.__P__-md strong,.__P__-md b{font-weight:650;letter-spacing:-.005em}.__P__-md em,.__P__-md i{font-style:italic}.__P__-md code{font-family:var(--__P__-font-mono);font-size:.86em;padding:1px 6px;border-radius:5px;background:color-mix(in srgb,var(--__P__-accent) 10%,transparent);color:var(--__P__-fg);border:1px solid color-mix(in srgb,var(--__P__-accent) 16%,transparent)}.__P__-md pre{font-family:var(--__P__-font-mono);font-size:calc(12.5px * var(--__P__-text-scale));padding:12px 14px;border-radius:var(--__P__-radius-sm);background:#7f7f7f1f;overflow-x:auto;margin:var(--__P__-space-3) 0;line-height:1.5}.__P__-md pre code{padding:0;background:none}.__P__-md a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.__P__-md a:hover{text-decoration-thickness:2px}.__P__-md blockquote{margin:14px 0;padding:6px 14px;border-left:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-radius:0 var(--__P__-radius-sm) var(--__P__-radius-sm) 0;color:var(--__P__-fg-muted)}.__P__-md blockquote>:first-child{margin-top:0}.__P__-md blockquote>:last-child{margin-bottom:0}.__P__-md hr{border:0;height:1px;background:color-mix(in srgb,currentColor 18%,transparent);margin:var(--__P__-space-4) 0}.__P__-md table{border-collapse:collapse;margin:var(--__P__-space-3) 0;font-size:.95em;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.__P__-md th,.__P__-md td{padding:6px 10px;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent);text-align:left}.__P__-md th{font-weight:700;background:color-mix(in srgb,currentColor 6%,transparent)}.__P__-md h1+ul,.__P__-md h1+ol,.__P__-md h2+ul,.__P__-md h2+ol,.__P__-md h3+ul,.__P__-md h3+ol,.__P__-md h4+ul,.__P__-md h4+ol{margin-top:var(--__P__-space-1)}.__P__-loading{display:inline-flex;align-items:center;gap:var(--__P__-space-2);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-loading-spinner{width:14px;height:14px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:__P__-spin .8s linear infinite}@keyframes __P__-spin{to{transform:rotate(1turn)}}.__P__-typing{display:inline-flex;gap:var(--__P__-space-1);padding:var(--__P__-space-1) 0}.__P__-typing span{width:5px;height:5px;border-radius:999px;background:currentColor;opacity:.4;animation:__P__-blink 1.2s var(--__P__-ease) infinite}.__P__-typing span:nth-child(2){animation-delay:.2s}.__P__-typing span:nth-child(3){animation-delay:.4s}@keyframes __P__-blink{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}.__P__-reasoning{margin:var(--__P__-space-1) 0 var(--__P__-space-2);padding-left:var(--__P__-space-3);border-left:2px solid var(--__P__-border-strong)}.__P__-reasoning-summary{display:inline-flex;align-items:center;gap:var(--__P__-space-1);cursor:pointer;list-style:none;user-select:none;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.7;transition:transform var(--__P__-dur-quick) var(--__P__-ease)}.__P__-reasoning[open] .__P__-reasoning-summary:before{transform:rotate(45deg)}.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:__P__-reasoning-pulse 1.4s var(--__P__-ease) infinite}@keyframes __P__-reasoning-pulse{0%,to{opacity:.5}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.__P__-reasoning[data-active=true] .__P__-reasoning-label{animation:none}}.__P__-reasoning-body{margin-top:var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm)}.__P__-reasoning-body>:first-child{margin-top:0}.__P__-reasoning-body>:last-child{margin-bottom:0}.__P__-tool-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2);margin-top:6px;border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs)}.__P__-composer{border-top:1px solid var(--__P__-border);padding:10px 12px;background:var(--__P__-bg);display:flex;flex-direction:column;gap:var(--__P__-space-2)}.__P__-composer-row{display:flex;align-items:flex-end;gap:6px}.__P__-textarea{flex:1;height:40px;max-height:160px;padding:10px 12px;border-radius:var(--__P__-radius);background:var(--__P__-bg-elevated);border:1px solid transparent;font-size:calc(14px * var(--__P__-text-scale));line-height:1.4;transition:height var(--__P__-dur-quick) var(--__P__-ease),border-color var(--__P__-dur-quick) var(--__P__-ease),box-shadow var(--__P__-dur-quick) var(--__P__-ease)}.__P__-textarea:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:1px;border-color:var(--__P__-focus)}@media(pointer:coarse){.__P__-textarea,.__P__-home-search-input{font-size:calc(16px * var(--__P__-text-scale))}.__P__-textarea{height:44px}}.__P__-send{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;transition:opacity var(--__P__-dur-quick) var(--__P__-ease),transform var(--__P__-dur-quick) var(--__P__-ease),background var(--__P__-dur-quick) var(--__P__-ease)}.__P__-send[data-shape=circle]{border-radius:999px}.__P__-send[data-shape=square]{border-radius:var(--__P__-radius-sm)}.__P__-send[data-shape=pill]{width:auto;padding:0 18px;border-radius:999px}.__P__-send[data-variant=filled]{background:var(--__P__-accent);color:var(--__P__-accent-text)}.__P__-send[data-variant=outline]{background:transparent;color:var(--__P__-accent);border-color:var(--__P__-accent)}.__P__-send[data-variant=outline]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 10%,transparent)}.__P__-send[data-variant=ghost]{background:transparent;color:var(--__P__-accent)}.__P__-send[data-variant=ghost]:not(:disabled):hover{background:color-mix(in srgb,var(--__P__-accent) 8%,transparent)}.__P__-send:disabled{opacity:.4;cursor:not-allowed}.__P__-send:not(:disabled):hover{transform:translateY(-1px)}.__P__-send:not(:disabled):active{transform:translateY(0)}.__P__-send:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-send svg{width:18px;height:18px}.__P__-composer-actions{display:flex;gap:var(--__P__-space-1);flex-wrap:wrap}.__P__-attachments{display:flex;flex-wrap:wrap;gap:6px}.__P__-attachment-chip{display:inline-flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-1);border-radius:999px;background:var(--__P__-bg-elevated);border:1px solid var(--__P__-border);font-size:var(--__P__-text-xs);max-width:200px}.__P__-attachment-thumb{width:24px;height:24px;border-radius:999px;object-fit:cover;background:var(--__P__-border)}.__P__-attachment-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-attachment-remove{width:18px;height:18px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted)}.__P__-attachment-remove:hover{background:var(--__P__-border);color:var(--__P__-fg)}.__P__-dropzone{position:absolute;inset:8px;border:2px dashed var(--__P__-accent);border-radius:var(--__P__-radius);background:color-mix(in srgb,var(--__P__-accent) 8%,transparent);display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--__P__-accent);pointer-events:none;z-index:10;animation:__P__-fade-in var(--__P__-dur-quick) var(--__P__-ease)}@keyframes __P__-fade-in{0%{opacity:0}to{opacity:1}}.__P__-error{margin-top:var(--__P__-space-1);padding:8px 10px;border-radius:var(--__P__-radius-sm);background:var(--__P__-danger-bg);color:var(--__P__-danger-text);font-size:var(--__P__-text-sm);display:flex;align-items:center;gap:var(--__P__-space-2)}.__P__-error button{color:inherit;text-decoration:underline;font-size:var(--__P__-text-sm)}.__P__-history{flex:1;overflow-y:auto;padding:var(--__P__-space-2) var(--__P__-space-1) var(--__P__-space-3)}.__P__-history-footer{flex:none;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);border-top:1px solid var(--__P__-border);background:var(--__P__-surface)}.__P__-history-new{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--__P__-space-2);padding:var(--__P__-space-2) var(--__P__-space-3);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-on-accent);cursor:pointer;font-size:var(--__P__-text-sm);font-weight:600;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-history-new svg{width:16px;height:16px}.__P__-history-new:hover{filter:brightness(1.08)}.__P__-history-new:active{transform:translateY(1px)}.__P__-history-new:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-history-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 16px;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));text-align:center}.__P__-history-group{display:flex;flex-direction:column;padding:0 var(--__P__-space-2)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:12px 8px 6px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-item{all:unset;display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-radius:var(--__P__-radius-md);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item:hover{background:var(--__P__-bg-elevated)}.__P__-history-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-history-title{font-size:calc(14px * var(--__P__-text-scale));font-weight:500;color:var(--__P__-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-preview{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-item[data-closed=true] .__P__-history-title:after{content:"\\2022";margin-left:var(--__P__-space-2);opacity:.5}.__P__-list-loading{margin:auto;padding:var(--__P__-space-6) var(--__P__-space-4);color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);text-align:center}.__P__-readonly-banner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:14px 12px;margin:0 var(--__P__-space-3) var(--__P__-space-3);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);color:var(--__P__-fg-muted);text-align:center;font-size:var(--__P__-text-sm)}.__P__-readonly-label{line-height:1.4}.__P__-readonly-cta{appearance:none;border:0;cursor:pointer;padding:var(--__P__-space-2) var(--__P__-space-4);border-radius:999px;background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-readonly-cta:hover,.__P__-readonly-cta:focus-visible{filter:brightness(1.1)}.__P__-readonly-cta:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}.__P__-composer-footer{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 16px;margin:0 var(--__P__-space-3);border-top:1px solid var(--__P__-border);text-align:center;font-size:calc(11px * var(--__P__-text-scale));line-height:1.4;color:var(--__P__-fg-muted)}.__P__-disclaimer{max-width:320px;margin:0 auto;opacity:.9;letter-spacing:.01em}.__P__-poweredby{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;opacity:.7;transition:opacity var(--__P__-dur-base) var(--__P__-ease);font-size:calc(11px * var(--__P__-text-scale));letter-spacing:.02em}.__P__-poweredby:hover{opacity:1}.__P__-poweredby-logo{height:12px;width:auto;display:inline-block;vertical-align:middle}.__P__-poweredby-bar{flex:none;display:flex;align-items:center;justify-content:center;padding:6px 16px;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated)}.__P__-menu-wrap{position:relative;display:inline-flex}.__P__-menu{position:absolute;top:100%;right:0;margin-top:6px;min-width:200px;padding:6px;background:var(--__P__-bg);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);box-shadow:var(--__P__-shadow-panel);z-index:10;display:flex;flex-direction:column;gap:2px;animation:__P__-menu-in var(--__P__-dur-base) var(--__P__-ease)}@media(prefers-reduced-motion:reduce){.__P__-menu{animation:none}}@keyframes __P__-menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98);transform-origin:top right}to{opacity:1;transform:none}}.__P__-menu-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);border-radius:var(--__P__-radius-sm);cursor:pointer;user-select:none}.__P__-menu-item:hover{background:var(--__P__-bg-elevated)}.__P__-menu-item:focus-visible{background:var(--__P__-bg-elevated);outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-menu-item[disabled]{opacity:.45;cursor:not-allowed}.__P__-menu-icon{display:inline-flex;width:16px;height:16px;color:var(--__P__-fg-muted)}.__P__-menu-icon svg{width:16px;height:16px}.__P__-menu-label{flex:1}.__P__-menu-check{display:inline-flex;color:var(--__P__-accent)}.__P__-menu-check svg{width:14px;height:14px}.__P__-resize-grip{position:absolute;width:18px;height:18px;display:flex;align-items:center;justify-content:center;color:var(--__P__-fg-muted);opacity:.45;transition:opacity var(--__P__-dur-base) var(--__P__-ease);z-index:2;touch-action:none;user-select:none}.__P__-resize-grip:hover,.__P__-resize-grip:focus-visible{opacity:1}.__P__-resize-grip svg{width:10px;height:10px}.__P__-resize-grip--bottom-left{bottom:2px;left:2px;cursor:nesw-resize;transform:scaleX(-1)}.__P__-resize-grip--bottom-right{bottom:2px;right:2px;cursor:nwse-resize}.__P__-resize-grip--top-left{top:2px;left:2px;cursor:nwse-resize;transform:rotate(180deg)}.__P__-resize-grip--top-right{top:2px;right:2px;cursor:nesw-resize;transform:scaleY(-1)}:host(:not([data-mode="open"])) .__P__-resize-grip{display:none}.__P__-messenger{display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}.__P__-module-scroll{flex:1;min-height:0;overflow-y:auto;padding:var(--__P__-space-3);display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-home{container-type:inline-size;background:radial-gradient(125% 65% at 88% 0%,color-mix(in srgb,#fff 16%,transparent),transparent 55%),linear-gradient(180deg,var(--__P__-accent) 0%,var(--__P__-accent) 22%,color-mix(in srgb,var(--__P__-accent) 28%,var(--__P__-surface)) 44%,var(--__P__-surface) 70%);border-radius:var(--__P__-radius-lg) var(--__P__-radius-lg) 0 0}.__P__-home-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:transparent}.__P__-home-cards{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:4px 14px 16px}.__P__-module-pad{padding:var(--__P__-space-3) var(--__P__-space-3) 0}.__P__-module-empty{display:flex;flex-direction:column;align-items:center;gap:var(--__P__-space-3);padding:var(--__P__-space-8) var(--__P__-space-4);text-align:center;color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-module-retry{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border-strong);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);font-weight:600;cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-module-retry:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}.__P__-module-retry:active{background:var(--__P__-border)}.__P__-module-retry:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-help-list{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--__P__-space-3)}.__P__-help-group{display:flex;flex-direction:column}.__P__-help-section-title{position:sticky;top:0;z-index:1;margin:0;padding:var(--__P__-space-3) var(--__P__-space-5) var(--__P__-space-2);font-size:var(--__P__-text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--__P__-fg-muted);background:var(--__P__-bg)}.__P__-help-card{margin:0 var(--__P__-space-3) var(--__P__-space-3);background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden}.__P__-help-card .__P__-list-row{border-bottom:0;border-radius:0}.__P__-help-card .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-help-card .__P__-list-row:hover{background:var(--__P__-hover)}.__P__-module-cta{padding:var(--__P__-space-3);border-top:1px solid var(--__P__-border)}.__P__-tabbar{display:flex;border-top:1px solid var(--__P__-border);background:var(--__P__-bg-elevated);flex-shrink:0}.__P__-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--__P__-space-1);min-height:48px;padding:var(--__P__-space-2) var(--__P__-space-1);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;transition:color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-tab:hover{color:var(--__P__-fg)}.__P__-tab[aria-selected=true]{color:var(--__P__-accent)}.__P__-tab:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-tab:active{background:var(--__P__-hover)}.__P__-tab-icon{position:relative;display:inline-flex}.__P__-tab-icon svg{width:22px;height:22px}.__P__-tab-badge{position:absolute;top:-4px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--__P__-accent);color:var(--__P__-on-accent);font-size:calc(10px * var(--__P__-text-scale));font-weight:600;line-height:1}.__P__-home-hero{flex-shrink:0;padding:var(--__P__-space-5) var(--__P__-space-5) var(--__P__-space-3);color:var(--__P__-on-accent);--__P__-focus: var(--__P__-on-accent)}.__P__-home-hero-top{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-3);min-height:32px}.__P__-home-brand{font-size:clamp(calc(12px * var(--__P__-text-scale)),calc(3.2cqi * var(--__P__-text-scale)),calc(14px * var(--__P__-text-scale)));font-weight:600;letter-spacing:.01em;color:color-mix(in srgb,#fff 82%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.__P__-home-brand-spacer{flex:1}.__P__-home-hero-actions{display:flex;align-items:center;gap:var(--__P__-space-2);flex-shrink:0}.__P__-home-hero-actions .__P__-icon-btn{color:#fff}.__P__-home-greeting{margin:28px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;overflow-wrap:anywhere}.__P__-home-lead{margin:2px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(19px * var(--__P__-text-scale)),calc(5.5cqi * var(--__P__-text-scale)),var(--__P__-text-2xl));font-weight:800;line-height:1.18;letter-spacing:-.01em;color:color-mix(in srgb,var(--__P__-on-accent) 88%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-left:-10px;border:2px solid color-mix(in srgb,#fff 92%,transparent);box-shadow:0 1px 3px #0000002e;background:var(--__P__-surface);display:inline-flex;align-items:center;justify-content:center;font-size:var(--__P__-text-xs);font-weight:700;color:var(--__P__-fg)}.__P__-home-avatar:first-child{margin-left:0}.__P__-home-avatar img{width:100%;height:100%;object-fit:cover}.__P__-home-content{background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);box-shadow:var(--__P__-shadow-card);overflow:hidden}.__P__-home-content-title{padding:var(--__P__-space-4) var(--__P__-space-4) var(--__P__-space-3);font-size:var(--__P__-text-sm);font-weight:700}.__P__-home-content-list{display:flex;flex-direction:column;padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-home-content-list .__P__-list-row+.__P__-list-row{border-top:1px solid var(--__P__-border)}.__P__-home-card{display:block;width:100%;text-align:left;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);padding:var(--__P__-space-4);box-shadow:var(--__P__-shadow-card)}.__P__-home-card[data-interactive=true]{cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-home-card[data-interactive=true]:hover{background:var(--__P__-bg-elevated)}.__P__-home-card[data-interactive=true]:active{transform:translateY(1px)}.__P__-home-card[data-interactive=true]:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-recent-row{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-recent-avatar{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch,var(--__P__-accent) 14%,transparent);color:var(--__P__-accent)}.__P__-home-recent-avatar svg{width:20px;height:20px}.__P__-home-recent-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.__P__-home-recent-title{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-recent-preview{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.__P__-home-recent-at{color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);flex-shrink:0}.__P__-home-recent-dot{width:8px;height:8px;border-radius:999px;background:var(--__P__-accent);flex-shrink:0}.__P__-home-recent-row[data-unread=true] .__P__-home-recent-title{font-weight:700}.__P__-home-status{display:flex;align-items:center;gap:var(--__P__-space-3)}.__P__-home-status-icon svg{width:22px;height:22px;color:var(--__P__-success)}.__P__-home-status[data-level=degraded] .__P__-home-status-icon svg{color:var(--__P__-warning)}.__P__-home-status[data-level=down] .__P__-home-status-icon svg{color:var(--__P__-danger)}.__P__-home-status-text{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search{display:flex;align-items:center;gap:var(--__P__-space-2);width:100%;padding:var(--__P__-space-3) var(--__P__-space-4);border-radius:var(--__P__-radius);border:1px solid var(--__P__-border);background:var(--__P__-surface);text-align:left}.__P__-home-search[data-input=true]{background:var(--__P__-bg-elevated)}.__P__-home-search:hover{border-color:var(--__P__-border-strong)}.__P__-home-search:focus-visible,.__P__-home-search:focus-within{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-home-search-text{flex:1;color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale))}.__P__-home-search-input{flex:1;border:0;background:transparent;font-size:calc(14px * var(--__P__-text-scale));color:var(--__P__-fg);outline:none}.__P__-home-search-icon svg{width:18px;height:18px;color:var(--__P__-accent)}.__P__-list-row{display:flex;align-items:center;gap:var(--__P__-space-3);width:100%;min-height:44px;text-align:left;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-bg-elevated)}.__P__-list-row:active{background:var(--__P__-border)}.__P__-list-row:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__P__-list-row-body{display:flex;flex-direction:column;min-width:0;flex:1}.__P__-list-row-title{font-weight:600;font-size:var(--__P__-text-md);line-height:1.35}.__P__-list-row-sub{color:var(--__P__-fg-muted);font-size:var(--__P__-text-sm);margin-top:var(--__P__-space-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-list-row-chevron svg{width:18px;height:18px;color:var(--__P__-accent);flex-shrink:0}.__P__-back-header{display:flex;align-items:center;gap:var(--__P__-space-2);padding:10px 12px;border-bottom:1px solid var(--__P__-border);flex-shrink:0}.__P__-back-title{flex:1;text-align:center;font-size:var(--__P__-text-md);font-weight:700;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-back-spacer{width:32px;height:1px}.__P__-content{display:flex;flex-direction:column;gap:14px;width:100%;max-width:68ch;margin:0 auto}.__P__-content-hero{width:100%;border-radius:var(--__P__-radius)}.__P__-content-subtitle{color:var(--__P__-fg-muted);margin:0}.__P__-content-frame{flex:1;min-height:0;width:100%;border:0;background:#fff}.__P__-news-list{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-news-card{display:block;width:100%;text-align:left;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius);overflow:hidden;background:var(--__P__-surface)}.__P__-news-card{transition:background var(--__P__-dur-quick) var(--__P__-ease-out),transform var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-news-card:hover{background:var(--__P__-bg-elevated)}.__P__-news-card:active{transform:translateY(1px)}.__P__-news-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__P__-news-hero{width:100%;display:block}.__P__-news-body{display:flex;flex-direction:column;gap:6px;padding:14px 16px}.__P__-news-tags{display:flex;gap:6px;flex-wrap:wrap}.__P__-news-tag{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-accent);background:color-mix(in srgb,var(--__P__-accent) 12%,transparent);padding:2px 8px;border-radius:999px}.__P__-news-title{font-weight:700;font-size:var(--__P__-text-md)}.__P__-news-summary{color:var(--__P__-fg-muted);font-size:calc(14px * var(--__P__-text-scale));display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.__P__-modules-empty{display:flex;align-items:center;justify-content:center;position:relative}.__P__-modules-empty-close{position:absolute;top:12px;right:12px}.__P__-modules-empty-text{color:var(--__P__-fg-muted);font-size:var(--__P__-text-base)}.__P__-form{display:flex;flex-direction:column;gap:var(--__P__-space-3)}.__P__-field{display:flex;flex-direction:column;gap:4px}.__P__-field-label{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-field-req{color:var(--__P__-danger)}.__P__-field-input{width:100%;box-sizing:border-box;padding:var(--__P__-space-2) var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);color:var(--__P__-fg);font:inherit;font-size:var(--__P__-text-sm);resize:vertical;transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-field-input:focus-visible{outline:none;border-color:var(--__P__-accent)}.__P__-field[data-invalid=true] .__P__-field-input{border-color:var(--__P__-danger)}.__P__-field-hint{font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-field-error{font-size:var(--__P__-text-xs);color:var(--__P__-danger)}.__P__-field-choices{display:flex;flex-direction:column;gap:6px}.__P__-choice{display:flex;align-items:flex-start;gap:8px;font-size:var(--__P__-text-sm);color:var(--__P__-fg);cursor:pointer}.__P__-choice input{margin-top:2px;accent-color:var(--__P__-accent)}.__P__-form-actions{display:flex;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:2px}.__P__-form-submit,.__P__-tool-approve{padding:var(--__P__-space-2) var(--__P__-space-4);border:none;border-radius:var(--__P__-radius-md);background:var(--__P__-accent);color:var(--__P__-accent-text, #fff);font:inherit;font-weight:600;font-size:var(--__P__-text-sm);cursor:pointer;transition:filter var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-submit:hover:not(:disabled),.__P__-tool-approve:hover:not(:disabled){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip,.__P__-tool-reject{padding:var(--__P__-space-2) var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:transparent;color:var(--__P__-fg-muted);font:inherit;font-size:var(--__P__-text-sm);cursor:pointer;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}.__P__-form-skip:hover:not(:disabled),.__P__-tool-reject:hover:not(:disabled){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-2);padding:var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-form-gate-title{margin:0;font-size:var(--__P__-text-base);font-weight:700;color:var(--__P__-fg)}.__P__-form-gate-desc{margin:0 0 var(--__P__-space-1);font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-form-done{display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 12px;border:1px dashed var(--__P__-border);border-radius:999px;align-self:center;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-form-done svg{width:14px;height:14px;color:var(--__P__-success, #22c55e)}.__P__-form-done-title{font-weight:400}.__P__-tool-ask-input,.__P__-tool-approval{display:flex;flex-direction:column;gap:var(--__P__-space-2);margin-top:6px;padding:var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated)}.__P__-tool-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-badge{padding:2px 8px;border-radius:999px;background:var(--__P__-warning, #f59e0b);color:#1a1206;font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-title{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}.__P__-tool-question{margin:0;font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-tool-desc{margin:0;font-size:var(--__P__-text-sm);color:var(--__P__-fg-muted)}.__P__-tool-args{margin:0;padding:var(--__P__-space-2);max-height:160px;overflow:auto;border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-tool-stale-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-tool-decided{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px}.__P__-tool-decided-label{padding:2px 8px;border-radius:999px;background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600}.__P__-tool-decided-label[data-approved=true]{color:var(--__P__-success, #16a34a);border-color:var(--__P__-success, #16a34a)}.__P__-tool-decided-label[data-approved=false]{color:var(--__P__-danger);border-color:var(--__P__-danger)}.__P__-tool-decided-value{font-size:var(--__P__-text-sm);color:var(--__P__-fg)}\n';
974
990
 
975
991
  // src/styles/standalone.css
976
992
  var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
977
993
 
978
994
  // src/styles/page.css
979
- var page_default = ':host([data-mode="page"]){min-height:0}:host([data-mode="page"]) .__P__-page-shell{display:grid;grid-template-columns:280px 1fr;width:100%;height:100%;min-height:0;background:var(--__P__-bg);color:var(--__P__-fg);transition:grid-template-columns var(--__P__-dur-base) var(--__P__-ease-in-out)}:host([data-mode="page"]) .__P__-page-shell[data-sidebar-collapsed=true]{grid-template-columns:48px 1fr}:host([data-mode="page"]) .__P__-page-chat{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}:host([data-mode="page"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-width:0;min-height:0;flex:1 1 0}:host([data-mode="page"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;border-radius:0;border:0;box-shadow:none;animation:none}:host([data-mode="page"]) .__P__-sidebar{border-right:1px solid var(--__P__-border);display:flex;flex-direction:column;overflow:hidden;background:var(--__P__-surface)}:host([data-mode="page"]) .__P__-sidebar-header{padding:var(--__P__-space-4) var(--__P__-space-5);border-bottom:1px solid var(--__P__-border);display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2);min-height:56px;box-sizing:border-box}:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-header{padding:var(--__P__-space-4) var(--__P__-space-2);justify-content:center}:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-logo,:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-title{display:none}:host([data-mode="page"]) .__P__-sidebar-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--__P__-border);border-radius:6px;background:transparent;color:var(--__P__-fg);cursor:pointer;transition:background .12s,border-color .12s}:host([data-mode="page"]) .__P__-sidebar-toggle:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}:host([data-mode="page"]) .__P__-sidebar-toggle:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}:host([data-mode="page"]) .__P__-sidebar-logo{height:32px;display:block}:host([data-mode="page"]) .__P__-sidebar-title{font-size:var(--__P__-text-md);font-weight:600}:host([data-mode="page"]) .__P__-sidebar-section{padding:var(--__P__-space-3) var(--__P__-space-4);border-bottom:1px solid var(--__P__-border)}:host([data-mode="page"]) .__P__-sidebar-nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}:host([data-mode="page"]) .__P__-sidebar-nav-item{display:flex;align-items:center;gap:10px;padding:var(--__P__-space-2) var(--__P__-space-3);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);text-decoration:none;font-size:14px;transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}:host([data-mode="page"]) .__P__-sidebar-nav-item:hover{background:var(--__P__-hover)}:host([data-mode="page"]) .__P__-sidebar-nav-item:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}:host([data-mode="page"]) .__P__-sidebar-cards{display:grid;grid-template-columns:1fr;gap:var(--__P__-space-2)}:host([data-mode="page"]) .__P__-sidebar-card{display:block;padding:10px 12px;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-sm);text-decoration:none;color:var(--__P__-fg);transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}:host([data-mode="page"]) .__P__-sidebar-card:hover{border-color:var(--__P__-accent)}:host([data-mode="page"]) .__P__-sidebar-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}:host([data-mode="page"]) .__P__-sidebar-card-label{font-weight:600;font-size:14px}:host([data-mode="page"]) .__P__-sidebar-card-desc{font-size:var(--__P__-text-xs);color:var(--__P__-muted);margin-top:2px}:host([data-mode="page"]) .__P__-sidebar-conversations{flex:1 1 auto;overflow-y:auto;padding:var(--__P__-space-3) var(--__P__-space-4)}:host([data-mode="page"]) .__P__-page-chat{display:flex;flex-direction:column;overflow:hidden}@media(max-width:768px){:host([data-mode="page"]) .__P__-page-shell{grid-template-columns:1fr}:host([data-mode="page"]) .__P__-sidebar{display:none}}\n';
995
+ var page_default = ':host([data-mode="page"]){min-height:0}:host([data-mode="page"]) .__P__-page-shell{display:grid;grid-template-columns:280px 1fr;width:100%;height:100%;min-height:0;background:var(--__P__-bg);color:var(--__P__-fg);transition:grid-template-columns var(--__P__-dur-base) var(--__P__-ease-in-out)}:host([data-mode="page"]) .__P__-page-shell[data-sidebar-collapsed=true]{grid-template-columns:48px 1fr}:host([data-mode="page"]) .__P__-page-chat{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}:host([data-mode="page"]) .__P__-anchor{position:static;inset:auto;padding:0;align-items:stretch;width:100%;height:100%;min-width:0;min-height:0;flex:1 1 0}:host([data-mode="page"]) .__P__-panel{width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none;border-radius:0;border:0;box-shadow:none;animation:none}:host([data-mode="page"]) .__P__-sidebar{border-right:1px solid var(--__P__-border);display:flex;flex-direction:column;overflow:hidden;background:var(--__P__-surface)}:host([data-mode="page"]) .__P__-sidebar-header{padding:var(--__P__-space-4) var(--__P__-space-5);border-bottom:1px solid var(--__P__-border);display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2);min-height:56px;box-sizing:border-box}:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-header{padding:var(--__P__-space-4) var(--__P__-space-2);justify-content:center}:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-logo,:host([data-mode="page"]) .__P__-sidebar[data-collapsed=true] .__P__-sidebar-title{display:none}:host([data-mode="page"]) .__P__-sidebar-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--__P__-border);border-radius:6px;background:transparent;color:var(--__P__-fg);cursor:pointer;transition:background .12s,border-color .12s}:host([data-mode="page"]) .__P__-sidebar-toggle:hover{background:var(--__P__-hover);border-color:var(--__P__-accent)}:host([data-mode="page"]) .__P__-sidebar-toggle:focus-visible{outline:2px solid var(--__P__-accent);outline-offset:2px}:host([data-mode="page"]) .__P__-sidebar-logo{height:32px;display:block}:host([data-mode="page"]) .__P__-sidebar-title{font-size:var(--__P__-text-md);font-weight:600}:host([data-mode="page"]) .__P__-sidebar-section{padding:var(--__P__-space-3) var(--__P__-space-4);border-bottom:1px solid var(--__P__-border)}:host([data-mode="page"]) .__P__-sidebar-nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}:host([data-mode="page"]) .__P__-sidebar-nav-item{display:flex;align-items:center;gap:10px;padding:var(--__P__-space-2) var(--__P__-space-3);border-radius:var(--__P__-radius-sm);color:var(--__P__-fg);text-decoration:none;font-size:calc(14px * var(--__P__-text-scale));transition:background var(--__P__-dur-quick) var(--__P__-ease-out)}:host([data-mode="page"]) .__P__-sidebar-nav-item:hover{background:var(--__P__-hover)}:host([data-mode="page"]) .__P__-sidebar-nav-item:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}:host([data-mode="page"]) .__P__-sidebar-cards{display:grid;grid-template-columns:1fr;gap:var(--__P__-space-2)}:host([data-mode="page"]) .__P__-sidebar-card{display:block;padding:10px 12px;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-sm);text-decoration:none;color:var(--__P__-fg);transition:border-color var(--__P__-dur-quick) var(--__P__-ease-out)}:host([data-mode="page"]) .__P__-sidebar-card:hover{border-color:var(--__P__-accent)}:host([data-mode="page"]) .__P__-sidebar-card:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}:host([data-mode="page"]) .__P__-sidebar-card-label{font-weight:600;font-size:calc(14px * var(--__P__-text-scale))}:host([data-mode="page"]) .__P__-sidebar-card-desc{font-size:var(--__P__-text-xs);color:var(--__P__-muted);margin-top:2px}:host([data-mode="page"]) .__P__-sidebar-conversations{flex:1 1 auto;overflow-y:auto;padding:var(--__P__-space-3) var(--__P__-space-4)}:host([data-mode="page"]) .__P__-page-chat{display:flex;flex-direction:column;overflow:hidden}@media(max-width:768px){:host([data-mode="page"]) .__P__-page-shell{grid-template-columns:1fr}:host([data-mode="page"]) .__P__-sidebar{display:none}}\n';
980
996
 
981
997
  // src/styles/index.ts
982
998
  var PREFIX = true ? "helpai" : "helpai";
@@ -1291,7 +1307,7 @@ var DEFAULT_PATHS = {
1291
1307
  /**
1292
1308
  * Form submission (the event-driven forms engine). POST `{ visitorId,
1293
1309
  * conversationId, formId, trigger, values, skipped? }` → record the form's answers
1294
- * immediately, keyed by the same visitor + conversation as the conversation.
1310
+ * immediately, keyed by the same `visitorId` + `conversationId` the chat uses.
1295
1311
  * Overridable via `endpoints.submitForm`. Fire-and-forget; 404 is ignored.
1296
1312
  */
1297
1313
  submitForm: "/ai/agent/submit-form"
@@ -2629,6 +2645,10 @@ var MoreIcon = () => /* @__PURE__ */ jsxs("svg", { ...props, "aria-hidden": "tru
2629
2645
  ] });
2630
2646
  var SpeakerIcon = () => /* @__PURE__ */ jsx("svg", { ...props, "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M11 5 6 9H2v6h4l5 4zM15 9a5 5 0 0 1 0 6M18 7a9 9 0 0 1 0 10" }) });
2631
2647
  var SpeakerMutedIcon = () => /* @__PURE__ */ jsx("svg", { ...props, "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M11 5 6 9H2v6h4l5 4zM22 9l-6 6M16 9l6 6" }) });
2648
+ var TextSizeIcon = () => /* @__PURE__ */ jsxs("svg", { ...props, "aria-hidden": "true", children: [
2649
+ /* @__PURE__ */ jsx("path", { d: "M3 18 8 6l5 12M4.7 14h6.6" }),
2650
+ /* @__PURE__ */ jsx("path", { d: "M14.5 18l3.2-7 3.2 7M15.6 15.8h4.2" })
2651
+ ] });
2632
2652
  var CheckIcon = () => /* @__PURE__ */ jsx("svg", { ...props, "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" }) });
2633
2653
  var HistoryIcon = () => /* @__PURE__ */ jsxs("svg", { ...props, "aria-hidden": "true", children: [
2634
2654
  /* @__PURE__ */ jsx("path", { d: "M3 3v6h6" }),
@@ -2809,8 +2829,8 @@ var TID = {
2809
2829
  sidebar: `${p2}-sidebar`,
2810
2830
  /** Sidebar collapse / expand toggle. */
2811
2831
  sidebarToggle: `${p2}-sidebar-toggle`,
2812
- /** Sidebar "New chat" button. */
2813
- sidebarNewChat: `${p2}-sidebar-new-chat`,
2832
+ /** Sidebar "New conversation" button. */
2833
+ sidebarNewConversation: `${p2}-sidebar-new-conversation`,
2814
2834
  /** Sidebar history row — suffix `-{conversationId}` at the JSX site. */
2815
2835
  sidebarItem: `${p2}-sidebar-item`,
2816
2836
  // ── Messenger modules ───────────────────────────────────────────
@@ -2820,7 +2840,7 @@ var TID = {
2820
2840
  modulesEmpty: `${p2}-modules-empty`,
2821
2841
  /** Bottom-nav tab button — suffix `-{moduleId}` at the JSX site. */
2822
2842
  tab: `${p2}-tab`,
2823
- /** Unread badge on the Messages tab. */
2843
+ /** Unread badge on the Conversations tab. */
2824
2844
  tabBadge: `${p2}-tab-badge`,
2825
2845
  /** Home module root. */
2826
2846
  homeView: `${p2}-home-view`,
@@ -2835,7 +2855,7 @@ var TID = {
2835
2855
  /** Home / Help search bar. */
2836
2856
  homeSearch: `${p2}-home-search`,
2837
2857
  helpSearch: `${p2}-help-search`,
2838
- /** Home recent-message card. */
2858
+ /** Home recent-conversation card. */
2839
2859
  homeRecent: `${p2}-home-recent`,
2840
2860
  /** Home content-list row ("Popular articles") — suffix `-{id}`. */
2841
2861
  homeContentRow: `${p2}-home-content-row`,
@@ -2844,8 +2864,10 @@ var TID = {
2844
2864
  /** News list item — suffix `-{id}`. */
2845
2865
  newsItem: `${p2}-news-item`,
2846
2866
  // ── Forms + human-in-the-loop (forms / ask-input / approval) ─────
2847
- /** Form gate root (replaces the composer, locking the chat). */
2867
+ /** Form gate root a timeline row that locks the chat while open. */
2848
2868
  formGate: `${p2}-form-gate`,
2869
+ /** Collapsed "Form submitted / skipped" marker row (ephemeral). */
2870
+ formDone: `${p2}-form-done`,
2849
2871
  /** Form submit button. */
2850
2872
  formSubmit: `${p2}-form-submit`,
2851
2873
  /** Form skip button (shown only when `skippable`). */
@@ -3109,6 +3131,7 @@ function isActionVisible(name, mode, panelSize, ctx) {
3109
3131
  case "history":
3110
3132
  case "language":
3111
3133
  case "theme":
3134
+ case "textSize":
3112
3135
  return true;
3113
3136
  case "expand":
3114
3137
  return mode === "floating";
@@ -3812,6 +3835,7 @@ function OverflowMenu({ items, triggerLabel }) {
3812
3835
  import { jsx as jsx9, jsxs as jsxs7 } from "preact/jsx-runtime";
3813
3836
  var p9 = BRAND.cssPrefix;
3814
3837
  var NEXT_THEME = { auto: "dark", dark: "light", light: "auto" };
3838
+ var NEXT_TEXT_SIZE = { normal: "large", large: "small", small: "normal" };
3815
3839
  function themeIcon(mode) {
3816
3840
  if (mode === "light") return /* @__PURE__ */ jsx9(SunIcon, {});
3817
3841
  if (mode === "dark") return /* @__PURE__ */ jsx9(MoonIcon, {});
@@ -3819,7 +3843,7 @@ function themeIcon(mode) {
3819
3843
  }
3820
3844
  function HeaderActions({ panelProps, variant }) {
3821
3845
  const { options, panelSize, feedback, onClose, onClear, onExpand, onFullscreen, onPopOut, onSoundToggle } = panelProps;
3822
- const { onToggleHistory, onLocaleChange, onThemeChange } = panelProps;
3846
+ const { onToggleHistory, onLocaleChange, onThemeChange, onTextSizeChange } = panelProps;
3823
3847
  const s = options.strings;
3824
3848
  const mode = options.mode;
3825
3849
  const isChat = variant === "chat";
@@ -3829,27 +3853,15 @@ function HeaderActions({ panelProps, variant }) {
3829
3853
  const visible = (name) => isActionVisible(name, mode, panelSize, { popOutUrl: options.popOutUrl });
3830
3854
  const themeMode = options.themeMode;
3831
3855
  const themeLabel = { auto: s.themeAuto, light: s.themeLight, dark: s.themeDark };
3856
+ const textSize = options.textSize;
3857
+ const textSizeLabel = {
3858
+ small: s.textSizeSmall,
3859
+ normal: s.textSizeNormal,
3860
+ large: s.textSizeLarge
3861
+ };
3832
3862
  const items = [];
3833
- if (has("theme")) {
3834
- items.push({
3835
- id: "theme",
3836
- icon: themeIcon(themeMode),
3837
- label: `${s.theme}: ${themeLabel[themeMode]}`,
3838
- onSelect: () => onThemeChange(NEXT_THEME[themeMode]),
3839
- keepOpen: true
3840
- });
3841
- }
3842
- if (has("language") && options.availableLocales.length > 1) {
3843
- for (const locale of options.availableLocales) {
3844
- items.push({
3845
- id: `language:${locale}`,
3846
- label: `${s.language} \u2014 ${locale}`,
3847
- lang: locale,
3848
- type: "switch",
3849
- on: locale === options.locale,
3850
- onSelect: () => onLocaleChange(locale)
3851
- });
3852
- }
3863
+ if (isChat && has("clear")) {
3864
+ items.push({ id: "clear", icon: /* @__PURE__ */ jsx9(ComposeIcon, {}), label: s.newConversation, onSelect: onClear });
3853
3865
  }
3854
3866
  if (has("expand") && visible("expand")) {
3855
3867
  const on = panelSize === "expanded";
@@ -3886,8 +3898,35 @@ function HeaderActions({ panelProps, variant }) {
3886
3898
  onSelect: onSoundToggle
3887
3899
  });
3888
3900
  }
3889
- if (isChat && has("clear")) {
3890
- items.push({ id: "clear", icon: /* @__PURE__ */ jsx9(ComposeIcon, {}), label: s.newConversation, onSelect: onClear });
3901
+ if (has("theme")) {
3902
+ items.push({
3903
+ id: "theme",
3904
+ icon: themeIcon(themeMode),
3905
+ label: `${s.theme}: ${themeLabel[themeMode]}`,
3906
+ onSelect: () => onThemeChange(NEXT_THEME[themeMode]),
3907
+ keepOpen: true
3908
+ });
3909
+ }
3910
+ if (has("textSize")) {
3911
+ items.push({
3912
+ id: "textSize",
3913
+ icon: /* @__PURE__ */ jsx9(TextSizeIcon, {}),
3914
+ label: `${s.textSize}: ${textSizeLabel[textSize]}`,
3915
+ onSelect: () => onTextSizeChange(NEXT_TEXT_SIZE[textSize]),
3916
+ keepOpen: true
3917
+ });
3918
+ }
3919
+ if (has("language") && options.availableLocales.length > 1) {
3920
+ for (const locale of options.availableLocales) {
3921
+ items.push({
3922
+ id: `language:${locale}`,
3923
+ label: `${s.language} \u2014 ${locale}`,
3924
+ lang: locale,
3925
+ type: "switch",
3926
+ on: locale === options.locale,
3927
+ onSelect: () => onLocaleChange(locale)
3928
+ });
3929
+ }
3891
3930
  }
3892
3931
  const showClose = !!onClose && canShowClose(mode, panelSize, options.actions);
3893
3932
  const showHistory = isChat && has("history");
@@ -3920,6 +3959,10 @@ function HeaderActions({ panelProps, variant }) {
3920
3959
  ] });
3921
3960
  }
3922
3961
 
3962
+ // src/ui/message-list.tsx
3963
+ import { useEffect as useEffect8, useLayoutEffect, useRef as useRef5, useState as useState6 } from "preact/hooks";
3964
+ import { useComputed as useComputed5 } from "@preact/signals";
3965
+
3923
3966
  // src/ui/form/dynamic-form.tsx
3924
3967
  import { useState as useState5 } from "preact/hooks";
3925
3968
 
@@ -4271,10 +4314,17 @@ function FormGate({ form, strings, onSubmit, onSkip }) {
4271
4314
  )
4272
4315
  ] });
4273
4316
  }
4274
-
4275
- // src/ui/message-list.tsx
4276
- import { useEffect as useEffect8, useLayoutEffect, useRef as useRef5, useState as useState6 } from "preact/hooks";
4277
- import { useComputed as useComputed5 } from "@preact/signals";
4317
+ function FormDoneMarker({ marker, strings }) {
4318
+ const label = marker.outcome === "skipped" ? strings.formSkipped : strings.formSubmitted;
4319
+ return /* @__PURE__ */ jsxs9("div", { class: `${p11}-form-done`, "data-testid": TID.formDone, role: "status", children: [
4320
+ /* @__PURE__ */ jsx11(CheckIcon, {}),
4321
+ /* @__PURE__ */ jsx11("span", { children: label }),
4322
+ marker.title ? /* @__PURE__ */ jsxs9("span", { class: `${p11}-form-done-title`, children: [
4323
+ "\xB7 ",
4324
+ marker.title
4325
+ ] }) : null
4326
+ ] });
4327
+ }
4278
4328
 
4279
4329
  // src/ui/message-bubble.tsx
4280
4330
  import { useComputed as useComputed4 } from "@preact/signals";
@@ -4736,7 +4786,9 @@ function MessageList({
4736
4786
  showToolCalls,
4737
4787
  loading,
4738
4788
  idle,
4739
- tool
4789
+ tool,
4790
+ form,
4791
+ formMarkers
4740
4792
  }) {
4741
4793
  const ref = useRef5(null);
4742
4794
  const messages = useComputed5(() => messagesSig.value);
@@ -4792,6 +4844,12 @@ function MessageList({
4792
4844
  obs.observe(el, { childList: true, subtree: true, characterData: true });
4793
4845
  return () => obs.disconnect();
4794
4846
  }, [messages.value]);
4847
+ const activeFormId = form?.form.id;
4848
+ useLayoutEffect(() => {
4849
+ const el = ref.current;
4850
+ if (!el || !activeFormId) return;
4851
+ el.scrollTop = el.scrollHeight;
4852
+ }, [activeFormId]);
4795
4853
  useEffect8(() => {
4796
4854
  const el = ref.current;
4797
4855
  if (!el) return;
@@ -4817,7 +4875,19 @@ function MessageList({
4817
4875
  const rows = [];
4818
4876
  let prevDay = "";
4819
4877
  const lastId = messages.value.at(-1)?.id;
4878
+ const pendingMarkers = [...formMarkers ?? []].toSorted(
4879
+ (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
4880
+ );
4881
+ const flushMarkersBefore = (createdAt) => {
4882
+ let next = pendingMarkers[0];
4883
+ while (next && next.createdAt !== void 0 && (createdAt === void 0 || next.createdAt <= createdAt)) {
4884
+ pendingMarkers.shift();
4885
+ rows.push(/* @__PURE__ */ jsx17(FormDoneMarker, { marker: next, strings }, next.key));
4886
+ next = pendingMarkers[0];
4887
+ }
4888
+ };
4820
4889
  for (const m of messages.value) {
4890
+ flushMarkersBefore(m.createdAt);
4821
4891
  const day = dayKey(m.createdAt);
4822
4892
  if (day && day !== prevDay) {
4823
4893
  rows.push(
@@ -4841,6 +4911,9 @@ function MessageList({
4841
4911
  )
4842
4912
  );
4843
4913
  }
4914
+ for (const marker of pendingMarkers) {
4915
+ rows.push(/* @__PURE__ */ jsx17(FormDoneMarker, { marker, strings }, marker.key));
4916
+ }
4844
4917
  return /* @__PURE__ */ jsxs14("div", { class: `${p15}-list-wrap`, children: [
4845
4918
  /* @__PURE__ */ jsxs14(
4846
4919
  "div",
@@ -4852,8 +4925,9 @@ function MessageList({
4852
4925
  "aria-relevant": "additions text",
4853
4926
  "data-scrolling": scrolling ? "true" : void 0,
4854
4927
  children: [
4855
- loading && messages.value.length === 0 ? /* @__PURE__ */ jsx17("div", { class: `${p15}-list-loading`, role: "status", children: strings.messagesLoading }) : null,
4856
- rows
4928
+ loading && messages.value.length === 0 ? /* @__PURE__ */ jsx17("div", { class: `${p15}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
4929
+ rows,
4930
+ form ? /* @__PURE__ */ jsx17(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
4857
4931
  ]
4858
4932
  }
4859
4933
  ),
@@ -4933,7 +5007,13 @@ var BUCKET_TO_STRING = {
4933
5007
  lastWeek: "dateLastWeek",
4934
5008
  older: "dateOlder"
4935
5009
  };
4936
- function ConversationList({ transport, strings, visitorId, onSelect, onNewChat }) {
5010
+ function ConversationList({
5011
+ transport,
5012
+ strings,
5013
+ visitorId,
5014
+ onSelect,
5015
+ onNewConversation
5016
+ }) {
4937
5017
  const p33 = BRAND.cssPrefix;
4938
5018
  const [state, setState] = useState7("loading");
4939
5019
  const [conversations, setChats] = useState7([]);
@@ -4952,10 +5032,19 @@ function ConversationList({ transport, strings, visitorId, onSelect, onNewChat }
4952
5032
  cancelled = true;
4953
5033
  };
4954
5034
  }, [transport, visitorId]);
4955
- const newChatButton = onNewChat ? /* @__PURE__ */ jsx18("div", { class: `${p33}-history-footer`, children: /* @__PURE__ */ jsxs15("button", { type: "button", class: `${p33}-history-new`, onClick: onNewChat, "data-testid": TID.sidebarNewChat, children: [
4956
- /* @__PURE__ */ jsx18(PlusIcon, {}),
4957
- strings.historyNewChat
4958
- ] }) }) : null;
5035
+ const newChatButton = onNewConversation ? /* @__PURE__ */ jsx18("div", { class: `${p33}-history-footer`, children: /* @__PURE__ */ jsxs15(
5036
+ "button",
5037
+ {
5038
+ type: "button",
5039
+ class: `${p33}-history-new`,
5040
+ onClick: onNewConversation,
5041
+ "data-testid": TID.sidebarNewConversation,
5042
+ children: [
5043
+ /* @__PURE__ */ jsx18(PlusIcon, {}),
5044
+ strings.newConversation
5045
+ ]
5046
+ }
5047
+ ) }) : null;
4959
5048
  if (state === "loading") {
4960
5049
  return /* @__PURE__ */ jsxs15(Fragment2, { children: [
4961
5050
  /* @__PURE__ */ jsx18("div", { class: `${p33}-history-empty`, children: strings.historyLoading }),
@@ -4993,18 +5082,12 @@ function ConversationList({ transport, strings, visitorId, onSelect, onNewChat }
4993
5082
  ] });
4994
5083
  }
4995
5084
 
4996
- // src/ui/chat-history-pane.tsx
4997
- import { jsx as jsx19 } from "preact/jsx-runtime";
4998
- function ChatHistoryPane(props2) {
4999
- return /* @__PURE__ */ jsx19(ConversationList, { ...props2 });
5000
- }
5001
-
5002
5085
  // src/ui/suggestions.tsx
5003
- import { jsx as jsx20 } from "preact/jsx-runtime";
5086
+ import { jsx as jsx19 } from "preact/jsx-runtime";
5004
5087
  var p16 = BRAND.cssPrefix;
5005
5088
  function Suggestions({ suggestions, onPick }) {
5006
5089
  if (suggestions.length === 0) return null;
5007
- return /* @__PURE__ */ jsx20("div", { class: `${p16}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx20(
5090
+ return /* @__PURE__ */ jsx19("div", { class: `${p16}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx19(
5008
5091
  "button",
5009
5092
  {
5010
5093
  type: "button",
@@ -5018,7 +5101,7 @@ function Suggestions({ suggestions, onPick }) {
5018
5101
  }
5019
5102
 
5020
5103
  // src/ui/panel.tsx
5021
- import { Fragment as Fragment3, jsx as jsx21, jsxs as jsxs16 } from "preact/jsx-runtime";
5104
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs16 } from "preact/jsx-runtime";
5022
5105
  var p17 = BRAND.cssPrefix;
5023
5106
  function Panel(props2) {
5024
5107
  const { options, onClose } = props2;
@@ -5054,7 +5137,7 @@ function Panel(props2) {
5054
5137
  style: { position: "relative" },
5055
5138
  "data-testid": TID.panel,
5056
5139
  children: [
5057
- /* @__PURE__ */ jsx21(
5140
+ /* @__PURE__ */ jsx20(
5058
5141
  PanelContent,
5059
5142
  {
5060
5143
  ...props2,
@@ -5063,7 +5146,7 @@ function Panel(props2) {
5063
5146
  composerAttachApiRef
5064
5147
  }
5065
5148
  ),
5066
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
5149
+ /* @__PURE__ */ jsx20(PoweredByBar, { poweredBy: props2.options.poweredBy })
5067
5150
  ]
5068
5151
  }
5069
5152
  );
@@ -5088,13 +5171,14 @@ function PanelContent(props2) {
5088
5171
  onBack,
5089
5172
  onClear,
5090
5173
  onToggleHistory,
5091
- onSelectHistoryChat,
5092
- onNewChat,
5174
+ onSelectHistoryConversation,
5175
+ onNewConversation,
5093
5176
  onWidgetSizeChange,
5094
5177
  onSend,
5095
5178
  onStop,
5096
5179
  onSuggestion,
5097
5180
  activeForm,
5181
+ formMarkers,
5098
5182
  onFormSubmit,
5099
5183
  onFormSkip,
5100
5184
  tool,
@@ -5105,11 +5189,11 @@ function PanelContent(props2) {
5105
5189
  const s = options.strings;
5106
5190
  let composerArea;
5107
5191
  if (activeForm) {
5108
- composerArea = /* @__PURE__ */ jsx21(FormGate, { form: activeForm, strings: s, onSubmit: onFormSubmit, onSkip: onFormSkip });
5192
+ composerArea = null;
5109
5193
  } else if (canSend) {
5110
5194
  composerArea = /* @__PURE__ */ jsxs16(Fragment3, { children: [
5111
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5112
- /* @__PURE__ */ jsx21(
5195
+ /* @__PURE__ */ jsx20(Suggestions, { suggestions, onPick: onSuggestion }),
5196
+ /* @__PURE__ */ jsx20(
5113
5197
  Composer,
5114
5198
  {
5115
5199
  options,
@@ -5124,10 +5208,10 @@ function PanelContent(props2) {
5124
5208
  )
5125
5209
  ] });
5126
5210
  } else {
5127
- composerArea = /* @__PURE__ */ jsx21(ReadOnlyBanner, { label: s.chatClosed, ctaLabel: s.startNewConversation, onNewChat: onClear });
5211
+ composerArea = /* @__PURE__ */ jsx20(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
5128
5212
  }
5129
5213
  return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5130
- view === "history" ? /* @__PURE__ */ jsx21(
5214
+ view === "history" ? /* @__PURE__ */ jsx20(
5131
5215
  HistoryHeader,
5132
5216
  {
5133
5217
  strings: s,
@@ -5136,7 +5220,7 @@ function PanelContent(props2) {
5136
5220
  showClose: canShowClose(options.mode, panelSize, options.actions)
5137
5221
  }
5138
5222
  ) : /* @__PURE__ */ jsxs16("header", { class: `${p17}-header`, "data-testid": TID.panelHeader, children: [
5139
- onBack ? /* @__PURE__ */ jsx21(
5223
+ onBack ? /* @__PURE__ */ jsx20(
5140
5224
  "button",
5141
5225
  {
5142
5226
  type: "button",
@@ -5144,24 +5228,24 @@ function PanelContent(props2) {
5144
5228
  onClick: onBack,
5145
5229
  "aria-label": s.moduleBack,
5146
5230
  title: s.moduleBack,
5147
- children: /* @__PURE__ */ jsx21(BackIcon, {})
5231
+ children: /* @__PURE__ */ jsx20(BackIcon, {})
5148
5232
  }
5149
5233
  ) : null,
5150
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5151
- /* @__PURE__ */ jsx21(HeaderActions, { panelProps: props2, variant: "chat" })
5234
+ agent ? /* @__PURE__ */ jsx20(AgentBadge, { agent }) : /* @__PURE__ */ jsx20("h1", { children: s.panelTitle }),
5235
+ /* @__PURE__ */ jsx20(HeaderActions, { panelProps: props2, variant: "chat" })
5152
5236
  ] }),
5153
- view === "history" ? /* @__PURE__ */ jsx21(
5154
- ChatHistoryPane,
5237
+ view === "history" ? /* @__PURE__ */ jsx20(
5238
+ ConversationList,
5155
5239
  {
5156
5240
  transport,
5157
5241
  strings: s,
5158
5242
  visitorId,
5159
- onSelect: (chat) => onSelectHistoryChat(chat.conversationId),
5160
- onNewChat
5243
+ onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5244
+ onNewConversation
5161
5245
  }
5162
5246
  ) : /* @__PURE__ */ jsxs16(Fragment3, { children: [
5163
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5164
- /* @__PURE__ */ jsx21(
5247
+ /* @__PURE__ */ jsx20(DropZone, { visible: dragOver, strings: s }),
5248
+ /* @__PURE__ */ jsx20(
5165
5249
  MessageList,
5166
5250
  {
5167
5251
  messagesSig,
@@ -5171,13 +5255,15 @@ function PanelContent(props2) {
5171
5255
  showToolCalls: options.showToolCalls,
5172
5256
  loading: loadingMessages,
5173
5257
  idle: !isStreaming,
5174
- tool
5258
+ tool,
5259
+ form: activeForm ? { form: activeForm, onSubmit: onFormSubmit, onSkip: onFormSkip } : null,
5260
+ formMarkers
5175
5261
  }
5176
5262
  ),
5177
5263
  composerArea,
5178
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
5264
+ /* @__PURE__ */ jsx20(ComposerFooter, { disclaimer: options.composerDisclaimer })
5179
5265
  ] }),
5180
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
5266
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx20(
5181
5267
  ResizeGrip,
5182
5268
  {
5183
5269
  panelEl: containerEl,
@@ -5197,7 +5283,7 @@ function HistoryHeader({
5197
5283
  showClose
5198
5284
  }) {
5199
5285
  return /* @__PURE__ */ jsxs16("header", { class: `${p17}-header`, children: [
5200
- /* @__PURE__ */ jsx21(
5286
+ /* @__PURE__ */ jsx20(
5201
5287
  "button",
5202
5288
  {
5203
5289
  type: "button",
@@ -5205,11 +5291,11 @@ function HistoryHeader({
5205
5291
  onClick: onBack,
5206
5292
  "aria-label": strings.historyBack,
5207
5293
  title: strings.historyBack,
5208
- children: /* @__PURE__ */ jsx21(BackIcon, {})
5294
+ children: /* @__PURE__ */ jsx20(BackIcon, {})
5209
5295
  }
5210
5296
  ),
5211
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5212
- showClose ? /* @__PURE__ */ jsx21(
5297
+ /* @__PURE__ */ jsx20("h1", { children: strings.historyTitle }),
5298
+ showClose ? /* @__PURE__ */ jsx20(
5213
5299
  "button",
5214
5300
  {
5215
5301
  type: "button",
@@ -5217,34 +5303,38 @@ function HistoryHeader({
5217
5303
  onClick: onClose,
5218
5304
  "aria-label": strings.close,
5219
5305
  title: strings.close,
5220
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
5306
+ children: /* @__PURE__ */ jsx20(CloseIcon, {})
5221
5307
  }
5222
5308
  ) : null
5223
5309
  ] });
5224
5310
  }
5225
- function ReadOnlyBanner({ label, ctaLabel, onNewChat }) {
5311
+ function ReadOnlyBanner({
5312
+ label,
5313
+ ctaLabel,
5314
+ onNewConversation
5315
+ }) {
5226
5316
  return /* @__PURE__ */ jsxs16("div", { class: `${p17}-readonly-banner`, role: "note", children: [
5227
- /* @__PURE__ */ jsx21("span", { class: `${p17}-readonly-label`, children: label }),
5228
- /* @__PURE__ */ jsx21("button", { type: "button", class: `${p17}-readonly-cta`, onClick: onNewChat, children: ctaLabel })
5317
+ /* @__PURE__ */ jsx20("span", { class: `${p17}-readonly-label`, children: label }),
5318
+ /* @__PURE__ */ jsx20("button", { type: "button", class: `${p17}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
5229
5319
  ] });
5230
5320
  }
5231
5321
  function ComposerFooter({ disclaimer }) {
5232
5322
  if (!disclaimer) return null;
5233
- return /* @__PURE__ */ jsx21("div", { class: `${p17}-composer-footer`, children: /* @__PURE__ */ jsx21("div", { class: `${p17}-disclaimer`, children: disclaimer }) });
5323
+ return /* @__PURE__ */ jsx20("div", { class: `${p17}-composer-footer`, children: /* @__PURE__ */ jsx20("div", { class: `${p17}-disclaimer`, children: disclaimer }) });
5234
5324
  }
5235
5325
  function PoweredByBar({ poweredBy }) {
5236
5326
  if (!poweredBy) return null;
5237
- return /* @__PURE__ */ jsx21("div", { class: `${p17}-poweredby-bar`, children: /* @__PURE__ */ jsx21(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
5327
+ return /* @__PURE__ */ jsx20("div", { class: `${p17}-poweredby-bar`, children: /* @__PURE__ */ jsx20(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
5238
5328
  }
5239
5329
  function PoweredBy({ logoUrl, text, href }) {
5240
5330
  const inner = /* @__PURE__ */ jsxs16(Fragment3, { children: [
5241
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p17}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
5242
- text ? /* @__PURE__ */ jsx21("span", { children: text }) : null
5331
+ logoUrl ? /* @__PURE__ */ jsx20("img", { class: `${p17}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
5332
+ text ? /* @__PURE__ */ jsx20("span", { children: text }) : null
5243
5333
  ] });
5244
5334
  if (href) {
5245
- return /* @__PURE__ */ jsx21("a", { class: `${p17}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
5335
+ return /* @__PURE__ */ jsx20("a", { class: `${p17}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
5246
5336
  }
5247
- return /* @__PURE__ */ jsx21("span", { class: `${p17}-poweredby`, children: inner });
5337
+ return /* @__PURE__ */ jsx20("span", { class: `${p17}-poweredby`, children: inner });
5248
5338
  }
5249
5339
 
5250
5340
  // src/ui/form/form-controller.ts
@@ -5320,7 +5410,7 @@ function whenPasses(form, d) {
5320
5410
  }
5321
5411
 
5322
5412
  // src/ui/sidebar.tsx
5323
- import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs17 } from "preact/jsx-runtime";
5413
+ import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5324
5414
  function Sidebar(props2) {
5325
5415
  const p33 = BRAND.cssPrefix;
5326
5416
  const { site, blocks, strings, collapsed } = props2;
@@ -5329,8 +5419,8 @@ function Sidebar(props2) {
5329
5419
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
5330
5420
  return /* @__PURE__ */ jsxs17("aside", { class: `${p33}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
5331
5421
  /* @__PURE__ */ jsxs17("div", { class: `${p33}-sidebar-header`, children: [
5332
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
5333
- /* @__PURE__ */ jsx22(
5422
+ /* @__PURE__ */ jsx21(SidebarBrand, { site }),
5423
+ /* @__PURE__ */ jsx21(
5334
5424
  "button",
5335
5425
  {
5336
5426
  type: "button",
@@ -5340,21 +5430,21 @@ function Sidebar(props2) {
5340
5430
  title: toggleLabel,
5341
5431
  onClick: props2.onToggleCollapsed,
5342
5432
  "data-testid": TID.sidebarToggle,
5343
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
5433
+ children: /* @__PURE__ */ jsx21(SidebarToggleIcon, { collapsed })
5344
5434
  }
5345
5435
  )
5346
5436
  ] }),
5347
5437
  collapsed ? null : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5348
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p33}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
5349
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
5350
- props2.showConversations ? /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-conversations`, children: /* @__PURE__ */ jsx22(
5438
+ navigation.length > 0 ? /* @__PURE__ */ jsx21("nav", { class: `${p33}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx21(SidebarNav, { items: navigation }) }) : null,
5439
+ linkCards.length > 0 ? /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx21(SidebarCards, { items: linkCards }) }) : null,
5440
+ props2.showConversations ? /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-conversations`, children: /* @__PURE__ */ jsx21(
5351
5441
  ConversationList,
5352
5442
  {
5353
5443
  transport: props2.transport,
5354
5444
  strings: props2.strings,
5355
5445
  visitorId: props2.visitorId,
5356
- onSelect: props2.onSelectChat,
5357
- onNewChat: props2.onNewChat
5446
+ onSelect: props2.onSelectConversation,
5447
+ onNewConversation: props2.onNewConversation
5358
5448
  }
5359
5449
  ) }) : null
5360
5450
  ] })
@@ -5365,14 +5455,14 @@ function SidebarBrand({ site }) {
5365
5455
  if (site?.logo?.url) {
5366
5456
  const alt = site.logo.alt ?? site.title ?? "Logo";
5367
5457
  return /* @__PURE__ */ jsxs17("picture", { children: [
5368
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
5369
- /* @__PURE__ */ jsx22("img", { class: `${p33}-sidebar-logo`, src: site.logo.url, alt })
5458
+ site.logoDark?.url ? /* @__PURE__ */ jsx21("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
5459
+ /* @__PURE__ */ jsx21("img", { class: `${p33}-sidebar-logo`, src: site.logo.url, alt })
5370
5460
  ] });
5371
5461
  }
5372
- return /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-title`, children: site?.title ?? BRAND.name });
5462
+ return /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-title`, children: site?.title ?? BRAND.name });
5373
5463
  }
5374
5464
  function SidebarToggleIcon({ collapsed }) {
5375
- return /* @__PURE__ */ jsx22(
5465
+ return /* @__PURE__ */ jsx21(
5376
5466
  "svg",
5377
5467
  {
5378
5468
  width: "16",
@@ -5382,13 +5472,13 @@ function SidebarToggleIcon({ collapsed }) {
5382
5472
  stroke: "currentColor",
5383
5473
  "stroke-width": "2",
5384
5474
  "aria-hidden": "true",
5385
- children: collapsed ? /* @__PURE__ */ jsx22("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx22("polyline", { points: "15 6 9 12 15 18" })
5475
+ children: collapsed ? /* @__PURE__ */ jsx21("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx21("polyline", { points: "15 6 9 12 15 18" })
5386
5476
  }
5387
5477
  );
5388
5478
  }
5389
5479
  function SidebarNav({ items }) {
5390
5480
  const p33 = BRAND.cssPrefix;
5391
- return /* @__PURE__ */ jsx22("ul", { class: `${p33}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs17(
5481
+ return /* @__PURE__ */ jsx21("ul", { class: `${p33}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsxs17(
5392
5482
  "a",
5393
5483
  {
5394
5484
  class: `${p33}-sidebar-nav-item`,
@@ -5396,15 +5486,15 @@ function SidebarNav({ items }) {
5396
5486
  target: item.href ? "_blank" : void 0,
5397
5487
  rel: item.href ? "noreferrer" : void 0,
5398
5488
  children: [
5399
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p33}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
5400
- /* @__PURE__ */ jsx22("span", { class: `${p33}-sidebar-nav-label`, children: item.label })
5489
+ item.icon ? /* @__PURE__ */ jsx21("span", { class: `${p33}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
5490
+ /* @__PURE__ */ jsx21("span", { class: `${p33}-sidebar-nav-label`, children: item.label })
5401
5491
  ]
5402
5492
  }
5403
5493
  ) }, item.id ?? item.label)) });
5404
5494
  }
5405
5495
  function SidebarCards({ items }) {
5406
5496
  const p33 = BRAND.cssPrefix;
5407
- return /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs17(
5497
+ return /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs17(
5408
5498
  "a",
5409
5499
  {
5410
5500
  class: `${p33}-sidebar-card`,
@@ -5412,8 +5502,8 @@ function SidebarCards({ items }) {
5412
5502
  target: item.href ? "_blank" : void 0,
5413
5503
  rel: item.href ? "noreferrer" : void 0,
5414
5504
  children: [
5415
- /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-card-label`, children: item.label }),
5416
- item.description ? /* @__PURE__ */ jsx22("div", { class: `${p33}-sidebar-card-desc`, children: item.description }) : null
5505
+ /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-card-label`, children: item.label }),
5506
+ item.description ? /* @__PURE__ */ jsx21("div", { class: `${p33}-sidebar-card-desc`, children: item.description }) : null
5417
5507
  ]
5418
5508
  },
5419
5509
  item.id ?? item.label
@@ -5421,11 +5511,11 @@ function SidebarCards({ items }) {
5421
5511
  }
5422
5512
 
5423
5513
  // src/ui/page-shell.tsx
5424
- import { jsx as jsx23, jsxs as jsxs18 } from "preact/jsx-runtime";
5514
+ import { jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5425
5515
  var p18 = BRAND.cssPrefix;
5426
5516
  function PageShell(props2) {
5427
5517
  return /* @__PURE__ */ jsxs18("main", { class: `${p18}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
5428
- /* @__PURE__ */ jsx23(
5518
+ /* @__PURE__ */ jsx22(
5429
5519
  Sidebar,
5430
5520
  {
5431
5521
  site: props2.site,
@@ -5434,13 +5524,13 @@ function PageShell(props2) {
5434
5524
  strings: props2.strings,
5435
5525
  visitorId: props2.visitorId,
5436
5526
  showConversations: props2.showConversations,
5437
- onSelectChat: props2.onSelectChat,
5438
- onNewChat: props2.onNewChat,
5527
+ onSelectConversation: props2.onSelectConversation,
5528
+ onNewConversation: props2.onNewConversation,
5439
5529
  collapsed: props2.sidebarCollapsed,
5440
5530
  onToggleCollapsed: props2.onToggleSidebarCollapsed
5441
5531
  }
5442
5532
  ),
5443
- /* @__PURE__ */ jsx23("section", { class: `${p18}-page-chat`, "aria-label": "Chat", children: props2.children })
5533
+ /* @__PURE__ */ jsx22("section", { class: `${p18}-page-chat`, "aria-label": "Chat", children: props2.children })
5444
5534
  ] });
5445
5535
  }
5446
5536
 
@@ -5480,7 +5570,7 @@ var atTabRoot = (s) => activeStack(s).length === 0;
5480
5570
  import { useCallback as useCallback4, useEffect as useEffect15, useRef as useRef8 } from "preact/hooks";
5481
5571
  import { useComputed as useComputed6 } from "@preact/signals";
5482
5572
 
5483
- // src/ui/modules/messages.tsx
5573
+ // src/ui/modules/chat.tsx
5484
5574
  var chatLayout = {
5485
5575
  Icon: BubblesIcon
5486
5576
  // No `Root`: MessengerHome renders the existing chat panel for this tab.
@@ -5490,35 +5580,35 @@ var chatLayout = {
5490
5580
  import { useEffect as useEffect11, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
5491
5581
 
5492
5582
  // src/ui/back-header.tsx
5493
- import { jsx as jsx24, jsxs as jsxs19 } from "preact/jsx-runtime";
5583
+ import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
5494
5584
  var p19 = BRAND.cssPrefix;
5495
5585
  function TitleBar({ title, actions }) {
5496
5586
  return /* @__PURE__ */ jsxs19("header", { class: `${p19}-back-header`, "data-variant": "title", children: [
5497
- /* @__PURE__ */ jsx24("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" }),
5498
- /* @__PURE__ */ jsx24("h1", { class: `${p19}-back-title`, children: title }),
5499
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" })
5587
+ /* @__PURE__ */ jsx23("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" }),
5588
+ /* @__PURE__ */ jsx23("h1", { class: `${p19}-back-title`, children: title }),
5589
+ actions ?? /* @__PURE__ */ jsx23("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" })
5500
5590
  ] });
5501
5591
  }
5502
5592
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
5503
5593
  return /* @__PURE__ */ jsxs19("header", { class: `${p19}-back-header`, "data-testid": testid, children: [
5504
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p19}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
5505
- /* @__PURE__ */ jsx24("h1", { class: `${p19}-back-title`, children: title }),
5506
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" })
5594
+ /* @__PURE__ */ jsx23("button", { type: "button", class: `${p19}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx23(BackIcon, {}) }),
5595
+ /* @__PURE__ */ jsx23("h1", { class: `${p19}-back-title`, children: title }),
5596
+ actions ?? /* @__PURE__ */ jsx23("span", { class: `${p19}-back-spacer`, "aria-hidden": "true" })
5507
5597
  ] });
5508
5598
  }
5509
5599
 
5510
5600
  // src/ui/home-search.tsx
5511
- import { jsx as jsx25, jsxs as jsxs20 } from "preact/jsx-runtime";
5601
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
5512
5602
  var p20 = BRAND.cssPrefix;
5513
5603
  function HomeSearchButton({ placeholder, onActivate }) {
5514
5604
  return /* @__PURE__ */ jsxs20("button", { type: "button", class: `${p20}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
5515
- /* @__PURE__ */ jsx25("span", { class: `${p20}-home-search-text`, children: placeholder }),
5516
- /* @__PURE__ */ jsx25("span", { class: `${p20}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
5605
+ /* @__PURE__ */ jsx24("span", { class: `${p20}-home-search-text`, children: placeholder }),
5606
+ /* @__PURE__ */ jsx24("span", { class: `${p20}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx24(SearchIcon, {}) })
5517
5607
  ] });
5518
5608
  }
5519
5609
  function HelpSearchInput({ placeholder, value, onInput }) {
5520
5610
  return /* @__PURE__ */ jsxs20("div", { class: `${p20}-home-search`, "data-input": "true", children: [
5521
- /* @__PURE__ */ jsx25(
5611
+ /* @__PURE__ */ jsx24(
5522
5612
  "input",
5523
5613
  {
5524
5614
  type: "search",
@@ -5529,25 +5619,25 @@ function HelpSearchInput({ placeholder, value, onInput }) {
5529
5619
  "data-testid": TID.helpSearch
5530
5620
  }
5531
5621
  ),
5532
- /* @__PURE__ */ jsx25("span", { class: `${p20}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
5622
+ /* @__PURE__ */ jsx24("span", { class: `${p20}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx24(SearchIcon, {}) })
5533
5623
  ] });
5534
5624
  }
5535
5625
 
5536
5626
  // src/ui/list-row.tsx
5537
- import { jsx as jsx26, jsxs as jsxs21 } from "preact/jsx-runtime";
5627
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
5538
5628
  var p21 = BRAND.cssPrefix;
5539
5629
  function ListRow({ title, subtitle, onClick, testid }) {
5540
5630
  return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p21}-list-row`, onClick, "data-testid": testid, children: [
5541
5631
  /* @__PURE__ */ jsxs21("span", { class: `${p21}-list-row-body`, children: [
5542
- /* @__PURE__ */ jsx26("span", { class: `${p21}-list-row-title`, children: title }),
5543
- subtitle ? /* @__PURE__ */ jsx26("span", { class: `${p21}-list-row-sub`, children: subtitle }) : null
5632
+ /* @__PURE__ */ jsx25("span", { class: `${p21}-list-row-title`, children: title }),
5633
+ subtitle ? /* @__PURE__ */ jsx25("span", { class: `${p21}-list-row-sub`, children: subtitle }) : null
5544
5634
  ] }),
5545
- /* @__PURE__ */ jsx26("span", { class: `${p21}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(ChevronRightIcon, {}) })
5635
+ /* @__PURE__ */ jsx25("span", { class: `${p21}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(ChevronRightIcon, {}) })
5546
5636
  ] });
5547
5637
  }
5548
5638
 
5549
5639
  // src/ui/module-state.tsx
5550
- import { jsx as jsx27, jsxs as jsxs22 } from "preact/jsx-runtime";
5640
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
5551
5641
  var p22 = BRAND.cssPrefix;
5552
5642
  function ModuleState({
5553
5643
  tone = "info",
@@ -5556,13 +5646,13 @@ function ModuleState({
5556
5646
  strings
5557
5647
  }) {
5558
5648
  return /* @__PURE__ */ jsxs22("div", { class: `${p22}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
5559
- /* @__PURE__ */ jsx27("span", { children: message }),
5560
- onRetry ? /* @__PURE__ */ jsx27("button", { type: "button", class: `${p22}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
5649
+ /* @__PURE__ */ jsx26("span", { children: message }),
5650
+ onRetry ? /* @__PURE__ */ jsx26("button", { type: "button", class: `${p22}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
5561
5651
  ] });
5562
5652
  }
5563
5653
 
5564
5654
  // src/ui/modules/help.tsx
5565
- import { jsx as jsx28, jsxs as jsxs23 } from "preact/jsx-runtime";
5655
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
5566
5656
  var p23 = BRAND.cssPrefix;
5567
5657
  var log12 = logger.scope("help");
5568
5658
  var openArticle = (nav, a) => a.url ? nav.push({ kind: "iframe", url: a.url, title: a.title }) : nav.push({ kind: "content", id: a.id, title: a.title });
@@ -5592,7 +5682,7 @@ function fuzzySearch(items, query) {
5592
5682
  return items.map((item) => ({ item, score: Math.max(fuzzyScore(q, item.title) * 2, fuzzyScore(q, item.description ?? "")) })).filter((r) => r.score > 0).toSorted((a, b) => b.score - a.score).map((r) => r.item);
5593
5683
  }
5594
5684
  function ArticleRow({ article, nav }) {
5595
- return /* @__PURE__ */ jsx28(
5685
+ return /* @__PURE__ */ jsx27(
5596
5686
  ListRow,
5597
5687
  {
5598
5688
  title: article.title,
@@ -5629,45 +5719,45 @@ function HelpRoot({ transport, strings, config, nav, panelProps }) {
5629
5719
  const results = useMemo2(() => fuzzySearch(items, query), [items, query]);
5630
5720
  function renderBody() {
5631
5721
  if (query.trim().length > 0) {
5632
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
5633
- return /* @__PURE__ */ jsx28("div", { class: `${p23}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) });
5722
+ if (results.length === 0) return /* @__PURE__ */ jsx27(ModuleState, { message: strings.helpSearchEmpty, strings });
5723
+ return /* @__PURE__ */ jsx27("div", { class: `${p23}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx27(ArticleRow, { article: a, nav }, a.id)) });
5634
5724
  }
5635
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
5725
+ if (state === "loading") return /* @__PURE__ */ jsx27(ModuleState, { message: strings.helpLoading, strings });
5636
5726
  if (state === "error") {
5637
- return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
5727
+ return /* @__PURE__ */ jsx27(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
5638
5728
  }
5639
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
5729
+ if (items.length === 0) return /* @__PURE__ */ jsx27(ModuleState, { message: strings.helpEmpty, strings });
5640
5730
  return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs23("section", { class: `${p23}-help-group`, children: [
5641
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p23}-help-section-title`, children: category }) : null,
5642
- /* @__PURE__ */ jsx28("div", { class: `${p23}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) })
5731
+ category ? /* @__PURE__ */ jsx27("h2", { class: `${p23}-help-section-title`, children: category }) : null,
5732
+ /* @__PURE__ */ jsx27("div", { class: `${p23}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx27(ArticleRow, { article: a, nav }, a.id)) })
5643
5733
  ] }, category));
5644
5734
  }
5645
5735
  return /* @__PURE__ */ jsxs23("div", { class: `${p23}-module`, children: [
5646
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
5647
- /* @__PURE__ */ jsx28("div", { class: `${p23}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
5648
- /* @__PURE__ */ jsx28("div", { class: `${p23}-help-list`, children: renderBody() })
5736
+ /* @__PURE__ */ jsx27(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx27(HeaderActions, { panelProps, variant: "plain" }) }),
5737
+ /* @__PURE__ */ jsx27("div", { class: `${p23}-module-pad`, children: /* @__PURE__ */ jsx27(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
5738
+ /* @__PURE__ */ jsx27("div", { class: `${p23}-help-list`, children: renderBody() })
5649
5739
  ] });
5650
5740
  }
5651
5741
  var helpLayout = {
5652
5742
  Icon: HelpIcon,
5653
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
5743
+ Root: (props2) => /* @__PURE__ */ jsx27(HelpRoot, { ...props2 })
5654
5744
  };
5655
5745
 
5656
5746
  // src/ui/modules/home.tsx
5657
5747
  import { useEffect as useEffect12, useState as useState9 } from "preact/hooks";
5658
5748
 
5659
5749
  // src/ui/home-card.tsx
5660
- import { jsx as jsx29 } from "preact/jsx-runtime";
5750
+ import { jsx as jsx28 } from "preact/jsx-runtime";
5661
5751
  var p24 = BRAND.cssPrefix;
5662
5752
  function HomeCard({ onClick, children, testid }) {
5663
5753
  if (onClick) {
5664
- return /* @__PURE__ */ jsx29("button", { type: "button", class: `${p24}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
5754
+ return /* @__PURE__ */ jsx28("button", { type: "button", class: `${p24}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
5665
5755
  }
5666
- return /* @__PURE__ */ jsx29("div", { class: `${p24}-home-card`, "data-testid": testid, children });
5756
+ return /* @__PURE__ */ jsx28("div", { class: `${p24}-home-card`, "data-testid": testid, children });
5667
5757
  }
5668
5758
 
5669
5759
  // src/ui/modules/home.tsx
5670
- import { Fragment as Fragment5, jsx as jsx30, jsxs as jsxs24 } from "preact/jsx-runtime";
5760
+ import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs24 } from "preact/jsx-runtime";
5671
5761
  var p25 = BRAND.cssPrefix;
5672
5762
  var log13 = logger.scope("home");
5673
5763
  function resolveGreeting(props2) {
@@ -5686,13 +5776,13 @@ function HomeRoot(props2) {
5686
5776
  const [content, setContent] = useState9([]);
5687
5777
  const tagsKey = config.contentTags?.join(",");
5688
5778
  useEffect12(() => {
5689
- if (!config.showRecentMessages) return;
5779
+ if (!config.showRecentConversations) return;
5690
5780
  let cancelled = false;
5691
5781
  transport.listConversations({ limit: 1 }).then((res) => !cancelled && setRecent(res.conversations?.[0] ?? null)).catch((err) => !cancelled && log13.warn("listConversations (home) failed", { err }));
5692
5782
  return () => {
5693
5783
  cancelled = true;
5694
5784
  };
5695
- }, [transport, config.showRecentMessages]);
5785
+ }, [transport, config.showRecentConversations]);
5696
5786
  useEffect12(() => {
5697
5787
  if (!config.contentTags?.length) return;
5698
5788
  let cancelled = false;
@@ -5705,49 +5795,49 @@ function HomeRoot(props2) {
5705
5795
  const avatars = config.userAvatars ?? [];
5706
5796
  const status = config.status;
5707
5797
  const contentTitle = config.contentBlockTitle ? moduleLabel(strings, config.contentBlockTitle) : strings.homeContentTitle;
5708
- return /* @__PURE__ */ jsx30("div", { class: `${p25}-module ${p25}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-scroll`, children: [
5798
+ return /* @__PURE__ */ jsx29("div", { class: `${p25}-module ${p25}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-scroll`, children: [
5709
5799
  /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-hero`, children: [
5710
5800
  /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-hero-top`, children: [
5711
- config.brandName ? /* @__PURE__ */ jsx30("span", { class: `${p25}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx30("span", { class: `${p25}-home-brand-spacer`, "aria-hidden": "true" }),
5801
+ config.brandName ? /* @__PURE__ */ jsx29("span", { class: `${p25}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx29("span", { class: `${p25}-home-brand-spacer`, "aria-hidden": "true" }),
5712
5802
  /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-hero-actions`, children: [
5713
- avatars.length > 0 ? /* @__PURE__ */ jsx30("div", { class: `${p25}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx30("span", { class: `${p25}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx30("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx30("span", { children: initials(a.name) }) }, a.name)) }) : null,
5714
- /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" })
5803
+ avatars.length > 0 ? /* @__PURE__ */ jsx29("div", { class: `${p25}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx29("span", { class: `${p25}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx29("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx29("span", { children: initials(a.name) }) }, a.name)) }) : null,
5804
+ /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" })
5715
5805
  ] })
5716
5806
  ] }),
5717
5807
  config.showGreeting !== false ? /* @__PURE__ */ jsxs24(Fragment5, { children: [
5718
- /* @__PURE__ */ jsx30("h1", { class: `${p25}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
5719
- greeting.subtitle ? /* @__PURE__ */ jsx30("p", { class: `${p25}-home-lead`, children: greeting.subtitle }) : null
5808
+ /* @__PURE__ */ jsx29("h1", { class: `${p25}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
5809
+ greeting.subtitle ? /* @__PURE__ */ jsx29("p", { class: `${p25}-home-lead`, children: greeting.subtitle }) : null
5720
5810
  ] }) : null
5721
5811
  ] }),
5722
5812
  /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-cards`, children: [
5723
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
5813
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx29(
5724
5814
  HomeSearchButton,
5725
5815
  {
5726
5816
  placeholder: strings.homeSearchPlaceholder,
5727
5817
  onActivate: () => nav.switchToLayout("help")
5728
5818
  }
5729
5819
  ) : null,
5730
- recent ? /* @__PURE__ */ jsx30(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
5731
- /* @__PURE__ */ jsx30("span", { class: `${p25}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
5820
+ recent ? /* @__PURE__ */ jsx29(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
5821
+ /* @__PURE__ */ jsx29("span", { class: `${p25}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx29(BubblesIcon, {}) }),
5732
5822
  /* @__PURE__ */ jsxs24("span", { class: `${p25}-home-recent-body`, children: [
5733
- /* @__PURE__ */ jsx30("span", { class: `${p25}-home-recent-title`, children: recent.title }),
5734
- recent.preview ? /* @__PURE__ */ jsx30("span", { class: `${p25}-home-recent-preview`, children: recent.preview }) : null
5823
+ /* @__PURE__ */ jsx29("span", { class: `${p25}-home-recent-title`, children: recent.title }),
5824
+ recent.preview ? /* @__PURE__ */ jsx29("span", { class: `${p25}-home-recent-preview`, children: recent.preview }) : null
5735
5825
  ] }),
5736
- (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p25}-home-recent-dot`, "aria-label": "Unread" }) : null
5826
+ (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx29("span", { class: `${p25}-home-recent-dot`, "aria-label": "Unread" }) : null
5737
5827
  ] }) }) : null,
5738
- status ? /* @__PURE__ */ jsx30(
5828
+ status ? /* @__PURE__ */ jsx29(
5739
5829
  HomeCard,
5740
5830
  {
5741
5831
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: status.text }) : void 0,
5742
5832
  children: /* @__PURE__ */ jsxs24("div", { class: `${p25}-home-status`, "data-level": status.level ?? "operational", children: [
5743
- /* @__PURE__ */ jsx30("span", { class: `${p25}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
5744
- /* @__PURE__ */ jsx30("span", { class: `${p25}-home-status-text`, children: status.text })
5833
+ /* @__PURE__ */ jsx29("span", { class: `${p25}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx29(StatusOkIcon, {}) }),
5834
+ /* @__PURE__ */ jsx29("span", { class: `${p25}-home-status-text`, children: status.text })
5745
5835
  ] })
5746
5836
  }
5747
5837
  ) : null,
5748
5838
  content.length > 0 ? /* @__PURE__ */ jsxs24("section", { class: `${p25}-home-content`, children: [
5749
- /* @__PURE__ */ jsx30("div", { class: `${p25}-home-content-title`, children: contentTitle }),
5750
- /* @__PURE__ */ jsx30("div", { class: `${p25}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx30(
5839
+ /* @__PURE__ */ jsx29("div", { class: `${p25}-home-content-title`, children: contentTitle }),
5840
+ /* @__PURE__ */ jsx29("div", { class: `${p25}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx29(
5751
5841
  ListRow,
5752
5842
  {
5753
5843
  title: item.title,
@@ -5763,12 +5853,12 @@ function HomeRoot(props2) {
5763
5853
  }
5764
5854
  var homeLayout = {
5765
5855
  Icon: HomeIcon,
5766
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
5856
+ Root: (props2) => /* @__PURE__ */ jsx29(HomeRoot, { ...props2 })
5767
5857
  };
5768
5858
 
5769
5859
  // src/ui/modules/news.tsx
5770
5860
  import { useEffect as useEffect13, useState as useState10 } from "preact/hooks";
5771
- import { jsx as jsx31, jsxs as jsxs25 } from "preact/jsx-runtime";
5861
+ import { jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
5772
5862
  var p26 = BRAND.cssPrefix;
5773
5863
  var log14 = logger.scope("news");
5774
5864
  function NewsRoot({ transport, strings, config, nav, panelProps }) {
@@ -5795,12 +5885,12 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
5795
5885
  };
5796
5886
  }, [transport, tags, reloadKey]);
5797
5887
  function renderBody() {
5798
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
5888
+ if (state === "loading") return /* @__PURE__ */ jsx30(ModuleState, { message: strings.newsLoading, strings });
5799
5889
  if (state === "error") {
5800
- return /* @__PURE__ */ jsx31(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
5890
+ return /* @__PURE__ */ jsx30(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
5801
5891
  }
5802
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
5803
- return /* @__PURE__ */ jsx31("div", { class: `${p26}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs25(
5892
+ if (items.length === 0) return /* @__PURE__ */ jsx30(ModuleState, { message: strings.newsEmpty, strings });
5893
+ return /* @__PURE__ */ jsx30("div", { class: `${p26}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs25(
5804
5894
  "button",
5805
5895
  {
5806
5896
  type: "button",
@@ -5808,11 +5898,11 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
5808
5898
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
5809
5899
  "data-testid": tid(TID.newsItem, item.id),
5810
5900
  children: [
5811
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p26}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
5901
+ item.image ? /* @__PURE__ */ jsx30("img", { class: `${p26}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
5812
5902
  /* @__PURE__ */ jsxs25("span", { class: `${p26}-news-body`, children: [
5813
- item.tags && item.tags.length > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p26}-news-tags`, children: item.tags.map((t) => /* @__PURE__ */ jsx31("span", { class: `${p26}-news-tag`, children: t }, t)) }) : null,
5814
- /* @__PURE__ */ jsx31("span", { class: `${p26}-news-title`, children: item.title }),
5815
- item.description ? /* @__PURE__ */ jsx31("span", { class: `${p26}-news-summary`, children: item.description }) : null
5903
+ item.tags && item.tags.length > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p26}-news-tags`, children: item.tags.map((t) => /* @__PURE__ */ jsx30("span", { class: `${p26}-news-tag`, children: t }, t)) }) : null,
5904
+ /* @__PURE__ */ jsx30("span", { class: `${p26}-news-title`, children: item.title }),
5905
+ item.description ? /* @__PURE__ */ jsx30("span", { class: `${p26}-news-summary`, children: item.description }) : null
5816
5906
  ] })
5817
5907
  ]
5818
5908
  },
@@ -5820,13 +5910,13 @@ function NewsRoot({ transport, strings, config, nav, panelProps }) {
5820
5910
  )) });
5821
5911
  }
5822
5912
  return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
5823
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
5824
- /* @__PURE__ */ jsx31("div", { class: `${p26}-module-scroll`, children: renderBody() })
5913
+ /* @__PURE__ */ jsx30(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" }) }),
5914
+ /* @__PURE__ */ jsx30("div", { class: `${p26}-module-scroll`, children: renderBody() })
5825
5915
  ] });
5826
5916
  }
5827
5917
  var newsLayout = {
5828
5918
  Icon: NewsIcon,
5829
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
5919
+ Root: (props2) => /* @__PURE__ */ jsx30(NewsRoot, { ...props2 })
5830
5920
  };
5831
5921
 
5832
5922
  // src/ui/modules/registry.ts
@@ -5838,10 +5928,10 @@ var LAYOUTS = {
5838
5928
  };
5839
5929
 
5840
5930
  // src/ui/home-tab-bar.tsx
5841
- import { jsx as jsx32, jsxs as jsxs26 } from "preact/jsx-runtime";
5931
+ import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
5842
5932
  var p27 = BRAND.cssPrefix;
5843
5933
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
5844
- return /* @__PURE__ */ jsx32("nav", { class: `${p27}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
5934
+ return /* @__PURE__ */ jsx31("nav", { class: `${p27}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
5845
5935
  const Icon = LAYOUTS[m.layout].Icon;
5846
5936
  const selected = m.id === activeTab;
5847
5937
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
@@ -5856,10 +5946,10 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
5856
5946
  "data-testid": tid(TID.tab, m.id),
5857
5947
  children: [
5858
5948
  /* @__PURE__ */ jsxs26("span", { class: `${p27}-tab-icon`, "aria-hidden": "true", children: [
5859
- /* @__PURE__ */ jsx32(Icon, {}),
5860
- badge ? /* @__PURE__ */ jsx32("span", { class: `${p27}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
5949
+ /* @__PURE__ */ jsx31(Icon, {}),
5950
+ badge ? /* @__PURE__ */ jsx31("span", { class: `${p27}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
5861
5951
  ] }),
5862
- /* @__PURE__ */ jsx32("span", { class: `${p27}-tab-label`, children: moduleLabel(strings, m.label) })
5952
+ /* @__PURE__ */ jsx31("span", { class: `${p27}-tab-label`, children: moduleLabel(strings, m.label) })
5863
5953
  ]
5864
5954
  },
5865
5955
  m.id
@@ -5868,12 +5958,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
5868
5958
  }
5869
5959
 
5870
5960
  // src/ui/iframe-view.tsx
5871
- import { jsx as jsx33, jsxs as jsxs27 } from "preact/jsx-runtime";
5961
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
5872
5962
  var p28 = BRAND.cssPrefix;
5873
5963
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
5874
5964
  function IframeView({ url, title, strings, onBack, actions }) {
5875
5965
  return /* @__PURE__ */ jsxs27("div", { class: `${p28}-module`, children: [
5876
- /* @__PURE__ */ jsx33(
5966
+ /* @__PURE__ */ jsx32(
5877
5967
  BackHeader,
5878
5968
  {
5879
5969
  title: title || strings.moduleBack,
@@ -5882,7 +5972,7 @@ function IframeView({ url, title, strings, onBack, actions }) {
5882
5972
  actions
5883
5973
  }
5884
5974
  ),
5885
- /* @__PURE__ */ jsx33(
5975
+ /* @__PURE__ */ jsx32(
5886
5976
  "iframe",
5887
5977
  {
5888
5978
  class: `${p28}-content-frame`,
@@ -5899,7 +5989,7 @@ function IframeView({ url, title, strings, onBack, actions }) {
5899
5989
 
5900
5990
  // src/ui/content-view.tsx
5901
5991
  import { useCallback as useCallback3, useEffect as useEffect14, useState as useState11 } from "preact/hooks";
5902
- import { jsx as jsx34, jsxs as jsxs28 } from "preact/jsx-runtime";
5992
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
5903
5993
  var p29 = BRAND.cssPrefix;
5904
5994
  var log15 = logger.scope("content");
5905
5995
  function ContentView({ id, title, transport, strings, onBack, actions }) {
@@ -5928,17 +6018,17 @@ function ContentView({ id, title, transport, strings, onBack, actions }) {
5928
6018
  };
5929
6019
  }, [transport, id, reloadKey]);
5930
6020
  function renderBody() {
5931
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
5932
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6021
+ if (failed) return /* @__PURE__ */ jsx33(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6022
+ if (item === null) return /* @__PURE__ */ jsx33(ModuleState, { message: strings.contentLoading, strings });
5933
6023
  return /* @__PURE__ */ jsxs28("article", { class: `${p29}-content`, "data-testid": TID.contentView, children: [
5934
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p29}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
5935
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p29}-content-subtitle`, children: item.description }) : null,
5936
- item.tags && item.tags.length > 0 ? /* @__PURE__ */ jsx34("span", { class: `${p29}-news-tags`, children: item.tags.map((t) => /* @__PURE__ */ jsx34("span", { class: `${p29}-news-tag`, children: t }, t)) }) : null,
5937
- /* @__PURE__ */ jsx34(StaticMarkdown, { text: item.content ?? "" })
6024
+ item.image ? /* @__PURE__ */ jsx33("img", { class: `${p29}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6025
+ item.description ? /* @__PURE__ */ jsx33("p", { class: `${p29}-content-subtitle`, children: item.description }) : null,
6026
+ item.tags && item.tags.length > 0 ? /* @__PURE__ */ jsx33("span", { class: `${p29}-news-tags`, children: item.tags.map((t) => /* @__PURE__ */ jsx33("span", { class: `${p29}-news-tag`, children: t }, t)) }) : null,
6027
+ /* @__PURE__ */ jsx33(StaticMarkdown, { text: item.content ?? "" })
5938
6028
  ] });
5939
6029
  }
5940
6030
  return /* @__PURE__ */ jsxs28("div", { class: `${p29}-module`, children: [
5941
- /* @__PURE__ */ jsx34(
6031
+ /* @__PURE__ */ jsx33(
5942
6032
  BackHeader,
5943
6033
  {
5944
6034
  title: item?.title || title || strings.moduleBack,
@@ -5948,12 +6038,12 @@ function ContentView({ id, title, transport, strings, onBack, actions }) {
5948
6038
  testid: TID.backHeader
5949
6039
  }
5950
6040
  ),
5951
- /* @__PURE__ */ jsx34("div", { class: `${p29}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6041
+ /* @__PURE__ */ jsx33("div", { class: `${p29}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
5952
6042
  ] });
5953
6043
  }
5954
6044
 
5955
6045
  // src/ui/messenger-home.tsx
5956
- import { jsx as jsx35, jsxs as jsxs29 } from "preact/jsx-runtime";
6046
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
5957
6047
  var p30 = BRAND.cssPrefix;
5958
6048
  function MessengerHome({
5959
6049
  panelProps,
@@ -6022,12 +6112,12 @@ function MessengerHome({
6022
6112
  nav: moduleNav,
6023
6113
  panelProps
6024
6114
  });
6025
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
6115
+ const plainActions = /* @__PURE__ */ jsx34(HeaderActions, { panelProps, variant: "plain" });
6026
6116
  let body;
6027
6117
  if (top?.kind === "iframe") {
6028
- body = /* @__PURE__ */ jsx35(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6118
+ body = /* @__PURE__ */ jsx34(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6029
6119
  } else if (top?.kind === "content") {
6030
- body = /* @__PURE__ */ jsx35(
6120
+ body = /* @__PURE__ */ jsx34(
6031
6121
  ContentView,
6032
6122
  {
6033
6123
  id: top.id,
@@ -6039,7 +6129,7 @@ function MessengerHome({
6039
6129
  }
6040
6130
  );
6041
6131
  } else if (activeModule?.layout === "chat") {
6042
- body = /* @__PURE__ */ jsx35(
6132
+ body = /* @__PURE__ */ jsx34(
6043
6133
  PanelContent,
6044
6134
  {
6045
6135
  ...panelProps,
@@ -6050,7 +6140,7 @@ function MessengerHome({
6050
6140
  );
6051
6141
  } else if (activeModule) {
6052
6142
  const Root = LAYOUTS[activeModule.layout].Root;
6053
- body = Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(activeModule) }, activeModule.id) : null;
6143
+ body = Root ? /* @__PURE__ */ jsx34(Root, { ...screenProps(activeModule) }, activeModule.id) : null;
6054
6144
  } else {
6055
6145
  body = null;
6056
6146
  }
@@ -6065,8 +6155,8 @@ function MessengerHome({
6065
6155
  style: { position: "relative" },
6066
6156
  "data-testid": TID.messengerHome,
6067
6157
  children: [
6068
- /* @__PURE__ */ jsx35("div", { class: `${p30}-messenger-body`, children: body }),
6069
- showTabBar ? /* @__PURE__ */ jsx35(
6158
+ /* @__PURE__ */ jsx34("div", { class: `${p30}-messenger-body`, children: body }),
6159
+ showTabBar ? /* @__PURE__ */ jsx34(
6070
6160
  HomeTabBar,
6071
6161
  {
6072
6162
  modules: enabledModules,
@@ -6076,8 +6166,8 @@ function MessengerHome({
6076
6166
  onSelect: nav.switchTab
6077
6167
  }
6078
6168
  ) : null,
6079
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6080
- options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx35(
6169
+ /* @__PURE__ */ jsx34(PoweredByBar, { poweredBy: options.poweredBy }),
6170
+ options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx34(
6081
6171
  ResizeGrip,
6082
6172
  {
6083
6173
  panelEl: containerRef.current,
@@ -6094,7 +6184,7 @@ function MessengerHome({
6094
6184
  }
6095
6185
 
6096
6186
  // src/ui/modules-empty.tsx
6097
- import { jsx as jsx36, jsxs as jsxs30 } from "preact/jsx-runtime";
6187
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6098
6188
  var p31 = BRAND.cssPrefix;
6099
6189
  function ModulesEmpty({ strings, onClose }) {
6100
6190
  return /* @__PURE__ */ jsxs30(
@@ -6105,7 +6195,7 @@ function ModulesEmpty({ strings, onClose }) {
6105
6195
  "aria-label": strings.panelTitle,
6106
6196
  "data-testid": TID.modulesEmpty,
6107
6197
  children: [
6108
- onClose ? /* @__PURE__ */ jsx36(
6198
+ onClose ? /* @__PURE__ */ jsx35(
6109
6199
  "button",
6110
6200
  {
6111
6201
  type: "button",
@@ -6113,10 +6203,10 @@ function ModulesEmpty({ strings, onClose }) {
6113
6203
  onClick: onClose,
6114
6204
  "aria-label": strings.close,
6115
6205
  title: strings.close,
6116
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
6206
+ children: /* @__PURE__ */ jsx35(CloseIcon, {})
6117
6207
  }
6118
6208
  ) : null,
6119
- /* @__PURE__ */ jsx36("p", { class: `${p31}-modules-empty-text`, children: strings.modulesEmpty })
6209
+ /* @__PURE__ */ jsx35("p", { class: `${p31}-modules-empty-text`, children: strings.modulesEmpty })
6120
6210
  ]
6121
6211
  }
6122
6212
  );
@@ -6188,7 +6278,7 @@ function useLauncherCallout({ callout, persistence }) {
6188
6278
  }
6189
6279
 
6190
6280
  // src/ui/app.tsx
6191
- import { jsx as jsx37, jsxs as jsxs31 } from "preact/jsx-runtime";
6281
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6192
6282
  var log16 = logger.scope("app");
6193
6283
  var p32 = BRAND.cssPrefix;
6194
6284
  function App({ options, hostElement, bus }) {
@@ -6199,10 +6289,12 @@ function App({ options, hostElement, bus }) {
6199
6289
  const [activeThemeMode, setActiveThemeMode] = useState13(
6200
6290
  () => initialSettings.themeMode ?? options.themeMode
6201
6291
  );
6292
+ const [activeTextSize, setActiveTextSize] = useState13(() => initialSettings.textSize ?? options.textSize);
6202
6293
  const conversationIdSig = useSignal2(persistence.loadConversationId());
6203
6294
  const messagesSig = useSignal2([]);
6204
6295
  const unreadCountSig = useSignal2(0);
6205
6296
  const [loadingMessages, setLoadingMessages] = useState13(false);
6297
+ const [formMarkers, setFormMarkers] = useState13([]);
6206
6298
  function landingTab() {
6207
6299
  const list = options.modules.list;
6208
6300
  const ids = new Set(list.map((m) => m.id));
@@ -6280,6 +6372,9 @@ function App({ options, hostElement, bus }) {
6280
6372
  useEffect17(() => {
6281
6373
  hostElement.dataset.theme = activeThemeMode;
6282
6374
  }, [hostElement, activeThemeMode, options]);
6375
+ useEffect17(() => {
6376
+ hostElement.dataset.textSize = activeTextSize;
6377
+ }, [hostElement, activeTextSize, options]);
6283
6378
  useEffect17(() => {
6284
6379
  feedback.update(options.sound, options.haptics);
6285
6380
  }, [feedback, options.sound, options.haptics]);
@@ -6404,14 +6499,29 @@ function App({ options, hostElement, bus }) {
6404
6499
  if (res.userPrefs.locale) setActiveLocale(res.userPrefs.locale);
6405
6500
  if (res.userPrefs.soundMuted !== void 0) feedback.setMuted(res.userPrefs.soundMuted);
6406
6501
  if (res.userPrefs.themeMode) setActiveThemeMode(res.userPrefs.themeMode);
6502
+ if (res.userPrefs.textSize) setActiveTextSize(res.userPrefs.textSize);
6407
6503
  }
6408
6504
  const isResume = !newConversation && persistedChatId && res.conversationId === persistedChatId;
6409
6505
  if (isResume) {
6410
6506
  setLoadingMessages(true);
6411
6507
  try {
6412
- const chat = res.messages?.length ? { conversationId: persistedChatId, canContinue: res.canContinue ?? true, messages: res.messages } : await transport.loadConversation(persistedChatId);
6508
+ const chat = res.messages?.length ? {
6509
+ conversationId: persistedChatId,
6510
+ canContinue: res.canContinue ?? true,
6511
+ messages: res.messages,
6512
+ formSubmissions: res.formSubmissions
6513
+ } : await transport.loadConversation(persistedChatId);
6413
6514
  if (isStale()) return;
6414
6515
  const loaded = (chat.messages ?? []).map(fromWireMessage);
6516
+ const subs = chat.formSubmissions ?? res.formSubmissions ?? [];
6517
+ setFormMarkers(
6518
+ subs.map((rec, i) => ({
6519
+ key: `wire:${rec.formId}:${rec.createdAt ?? i}`,
6520
+ formId: rec.formId,
6521
+ outcome: rec.skipped ? "skipped" : "submitted",
6522
+ createdAt: rec.createdAt
6523
+ }))
6524
+ );
6415
6525
  const tail = resumeBubbleRef.current ? [resumeBubbleRef.current] : [];
6416
6526
  if (loaded.length || tail.length) {
6417
6527
  messagesSig.value = [...loaded, ...tail];
@@ -6639,6 +6749,10 @@ function App({ options, hostElement, bus }) {
6639
6749
  onComplete: (form, trigger, values, skipped) => {
6640
6750
  log16.info("formSubmit", { formId: form.id, trigger, skipped });
6641
6751
  bus.emit("formSubmit", { formId: form.id, values, skipped });
6752
+ setFormMarkers((prev) => [
6753
+ ...prev,
6754
+ { key: `local:${form.id}:${prev.length}`, formId: form.id, outcome: skipped ? "skipped" : "submitted" }
6755
+ ]);
6642
6756
  if (skipped || Object.keys(values).length === 0) return;
6643
6757
  const activeConversationId = conversationIdSig.value ?? uuid7();
6644
6758
  if (!conversationIdSig.value) {
@@ -6752,6 +6866,7 @@ function App({ options, hostElement, bus }) {
6752
6866
  conversationIdSig.value = void 0;
6753
6867
  persistence.clearConversation();
6754
6868
  setCanSend(true);
6869
+ setFormMarkers([]);
6755
6870
  void runStartConversation({ newConversation: true });
6756
6871
  }, [streaming, activeCancel, messagesSig, conversationIdSig, persistence, runStartConversation, bus]);
6757
6872
  const handleNewChat = useCallback6(() => {
@@ -6777,7 +6892,7 @@ function App({ options, hostElement, bus }) {
6777
6892
  const handlePopOut = useCallback6(() => {
6778
6893
  if (!options.popOutUrl) return;
6779
6894
  const url = new URL(options.popOutUrl);
6780
- if (conversationIdSig.value) url.searchParams.set("chat", conversationIdSig.value);
6895
+ if (conversationIdSig.value) url.searchParams.set("conversation", conversationIdSig.value);
6781
6896
  if (options.widgetId !== "default") url.searchParams.set("widgetId", options.widgetId);
6782
6897
  log16.info("popOut", { url: url.toString() });
6783
6898
  window.open(url.toString(), "_blank", "noopener,noreferrer");
@@ -6810,6 +6925,16 @@ function App({ options, hostElement, bus }) {
6810
6925
  },
6811
6926
  [hostElement, patchAndSync, bus]
6812
6927
  );
6928
+ const handleTextSizeChange = useCallback6(
6929
+ (size) => {
6930
+ log16.info("textSizeChange", { size });
6931
+ setActiveTextSize(size);
6932
+ hostElement.dataset.textSize = size;
6933
+ patchAndSync({ textSize: size });
6934
+ bus.emit("textSizeChange", size);
6935
+ },
6936
+ [hostElement, patchAndSync, bus]
6937
+ );
6813
6938
  const handleToggleSidebarCollapsed = useCallback6(() => {
6814
6939
  setSidebarCollapsed((prev) => {
6815
6940
  const next = !prev;
@@ -6827,12 +6952,12 @@ function App({ options, hostElement, bus }) {
6827
6952
  },
6828
6953
  [patchAndSync, bus]
6829
6954
  );
6830
- const handleSelectHistoryChat = useCallback6(
6831
- async (targetChatId) => {
6832
- log16.info("selectChat", { conversationId: targetChatId });
6833
- bus.emit("selectChat", { conversationId: targetChatId });
6955
+ const handleSelectHistoryConversation = useCallback6(
6956
+ async (targetConversationId) => {
6957
+ log16.info("selectConversation", { conversationId: targetConversationId });
6958
+ bus.emit("selectConversation", { conversationId: targetConversationId });
6834
6959
  try {
6835
- const res = await transport.loadConversation(targetChatId);
6960
+ const res = await transport.loadConversation(targetConversationId);
6836
6961
  const hydrated = res.messages.map(fromWireMessage);
6837
6962
  messagesSig.value = hydrated;
6838
6963
  conversationIdSig.value = res.conversationId;
@@ -6841,7 +6966,7 @@ function App({ options, hostElement, bus }) {
6841
6966
  setCanSend(res.canContinue);
6842
6967
  setSuggestions(res.suggestions ?? []);
6843
6968
  setView("chat");
6844
- await transport.markRead(targetChatId);
6969
+ await transport.markRead(targetConversationId);
6845
6970
  refreshUnread();
6846
6971
  } catch (err) {
6847
6972
  bus.emit("error", err);
@@ -6862,8 +6987,8 @@ function App({ options, hostElement, bus }) {
6862
6987
  return unsub;
6863
6988
  }, [hostElement, handleOpen, handleClose, handleExpand, handleFullscreen, handlePopOut, forms]);
6864
6989
  const effectiveOptions = useMemo3(
6865
- () => applyOptionOverrides(options, activeLocale, activeThemeMode),
6866
- [options, activeLocale, activeThemeMode]
6990
+ () => applyOptionOverrides(options, activeLocale, activeThemeMode, activeTextSize),
6991
+ [options, activeLocale, activeThemeMode, activeTextSize]
6867
6992
  );
6868
6993
  const panelProps = {
6869
6994
  options: effectiveOptions,
@@ -6886,10 +7011,11 @@ function App({ options, hostElement, bus }) {
6886
7011
  onPopOut: handlePopOut,
6887
7012
  onSoundToggle: handleSoundToggle,
6888
7013
  onToggleHistory: handleToggleHistory,
6889
- onSelectHistoryChat: handleSelectHistoryChat,
6890
- onNewChat: handleNewChat,
7014
+ onSelectHistoryConversation: handleSelectHistoryConversation,
7015
+ onNewConversation: handleNewChat,
6891
7016
  onLocaleChange: handleLocaleChange,
6892
7017
  onThemeChange: handleThemeChange,
7018
+ onTextSizeChange: handleTextSizeChange,
6893
7019
  onWidgetSizeChange: handleWidgetSizeChange,
6894
7020
  onSend: handleSend,
6895
7021
  onStop: handleStop,
@@ -6902,12 +7028,15 @@ function App({ options, hostElement, bus }) {
6902
7028
  // Active form: replaces the composer as a gate and locks every chat action
6903
7029
  // until the visitor submits or (when skippable) skips.
6904
7030
  activeForm: activeForm.value?.form ?? null,
7031
+ // Resolve marker titles against the CURRENT forms config — the wire echo
7032
+ // can land before the server config merge populates `options.forms`.
7033
+ formMarkers: formMarkers.map((m) => ({ ...m, title: options.forms.list.find((f) => f.id === m.formId)?.title })),
6905
7034
  onFormSubmit: forms.complete,
6906
7035
  onFormSkip: forms.skip,
6907
7036
  tool: toolInteraction
6908
7037
  };
6909
7038
  const onSelectConversation = (conversationId) => {
6910
- void handleSelectHistoryChat(conversationId);
7039
+ void handleSelectHistoryConversation(conversationId);
6911
7040
  const chatId = chatTabId();
6912
7041
  if (chatId) homeNav.switchTab(chatId);
6913
7042
  };
@@ -6916,12 +7045,12 @@ function App({ options, hostElement, bus }) {
6916
7045
  const renderSurface = (size) => {
6917
7046
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
6918
7047
  if (enabledModules.length === 0) {
6919
- return /* @__PURE__ */ jsx37(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
7048
+ return /* @__PURE__ */ jsx36(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
6920
7049
  }
6921
7050
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
6922
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
7051
+ return /* @__PURE__ */ jsx36(Panel, { ...panelProps, panelSize: size });
6923
7052
  }
6924
- return /* @__PURE__ */ jsx37(
7053
+ return /* @__PURE__ */ jsx36(
6925
7054
  MessengerHome,
6926
7055
  {
6927
7056
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -6935,11 +7064,11 @@ function App({ options, hostElement, bus }) {
6935
7064
  );
6936
7065
  };
6937
7066
  if (options.mode === "page") {
6938
- const onSelectChatFromSidebar = (chat) => {
6939
- void handleSelectHistoryChat(chat.conversationId);
7067
+ const onSelectConversationFromSidebar = (chat) => {
7068
+ void handleSelectHistoryConversation(chat.conversationId);
6940
7069
  };
6941
- const messagesEnabled = enabledModules.some((m) => m.layout === "chat");
6942
- return /* @__PURE__ */ jsx37("div", { class: `${p32}-anchor`, children: /* @__PURE__ */ jsx37(
7070
+ const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7071
+ return /* @__PURE__ */ jsx36("div", { class: `${p32}-anchor`, children: /* @__PURE__ */ jsx36(
6943
7072
  PageShell,
6944
7073
  {
6945
7074
  site: parsedSite,
@@ -6947,9 +7076,9 @@ function App({ options, hostElement, bus }) {
6947
7076
  transport,
6948
7077
  strings: effectiveOptions.strings,
6949
7078
  visitorId,
6950
- showConversations: messagesEnabled,
6951
- onSelectChat: onSelectChatFromSidebar,
6952
- onNewChat: handleNewChat,
7079
+ showConversations: conversationsEnabled,
7080
+ onSelectConversation: onSelectConversationFromSidebar,
7081
+ onNewConversation: handleNewChat,
6953
7082
  sidebarCollapsed,
6954
7083
  onToggleSidebarCollapsed: handleToggleSidebarCollapsed,
6955
7084
  children: renderSurface("fullscreen")
@@ -6958,7 +7087,7 @@ function App({ options, hostElement, bus }) {
6958
7087
  }
6959
7088
  if (isInlineLike) {
6960
7089
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
6961
- return /* @__PURE__ */ jsx37("div", { class: `${p32}-anchor`, children: renderSurface(inlineSize) });
7090
+ return /* @__PURE__ */ jsx36("div", { class: `${p32}-anchor`, children: renderSurface(inlineSize) });
6962
7091
  }
6963
7092
  const drawerEdgeTab = options.mode === "drawer";
6964
7093
  const triggerOwnedByPage = options.mode === "modal";
@@ -6966,7 +7095,7 @@ function App({ options, hostElement, bus }) {
6966
7095
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
6967
7096
  return /* @__PURE__ */ jsxs31("div", { class: `${p32}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
6968
7097
  isOpen ? renderSurface(panelSize) : null,
6969
- launcherVisible ? /* @__PURE__ */ jsx37(
7098
+ launcherVisible ? /* @__PURE__ */ jsx36(
6970
7099
  Launcher,
6971
7100
  {
6972
7101
  onToggle: handleOpen,
@@ -6976,7 +7105,7 @@ function App({ options, hostElement, bus }) {
6976
7105
  edgeTab: drawerEdgeTab
6977
7106
  }
6978
7107
  ) : null,
6979
- calloutToRender ? /* @__PURE__ */ jsx37(
7108
+ calloutToRender ? /* @__PURE__ */ jsx36(
6980
7109
  LauncherCallout,
6981
7110
  {
6982
7111
  callout: calloutToRender,