@helpai/elements 0.46.2 → 0.47.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
@@ -87,7 +87,6 @@ var STRINGS_EN = {
87
87
  thinking: "Thinking\u2026",
88
88
  thoughts: "Thoughts",
89
89
  usedTool: "Used tool",
90
- toolDetails: "Details",
91
90
  toolResult: "Result",
92
91
  sources: "Sources",
93
92
  // ── Messenger modules ──────────────────────────────────────────
@@ -134,17 +133,32 @@ var STRINGS_EN = {
134
133
  formChooseAtMost: "Choose at most {max}",
135
134
  formOther: "Other",
136
135
  formOtherPlaceholder: "Type your answer\u2026",
137
- inputRequired: "I need a bit more info",
138
- inputSubmit: "Submit",
136
+ inputRequired: "User Input Required",
137
+ inputBadge: "User Input",
138
+ inputAnswered: "Answered",
139
+ inputSkipped: "Skipped",
140
+ inputQuestion: "Question",
141
+ inputResponse: "Response",
142
+ inputYourAnswer: "Your answer",
143
+ inputSubmit: "Submit answer",
144
+ inputSubmitHint: "Enter to submit \xB7 Shift+Enter for new line",
139
145
  inputSkip: "Skip",
140
146
  inputSubmitted: "Answer submitted",
147
+ respFreeText: "Free Text",
148
+ respSingleChoice: "Single Choice",
149
+ respMultiChoice: "Multiple Choice",
150
+ respConfirmation: "Confirmation",
141
151
  approvalRequired: "Approval required",
142
152
  approve: "Approve",
143
153
  reject: "Reject",
144
154
  approved: "Approved",
145
155
  rejected: "Rejected",
146
156
  approvalReason: "Add a reason (optional)",
147
- stepNoLongerActive: "This request is no longer active."
157
+ stepNoLongerActive: "This request is no longer active.",
158
+ toolParameters: "Parameters",
159
+ statusCompleted: "Completed",
160
+ statusDenied: "Denied",
161
+ statusError: "Error"
148
162
  };
149
163
  var STRINGS_FR = {
150
164
  attach: "Joindre des fichiers",
@@ -203,7 +217,6 @@ var STRINGS_FR = {
203
217
  thinking: "R\xE9flexion\u2026",
204
218
  thoughts: "R\xE9flexions",
205
219
  usedTool: "Outil utilis\xE9",
206
- toolDetails: "D\xE9tails",
207
220
  toolResult: "R\xE9sultat",
208
221
  sources: "Sources",
209
222
  // ── Messenger modules ──────────────────────────────────────────
@@ -250,21 +263,167 @@ var STRINGS_FR = {
250
263
  formChooseAtMost: "Choisissez au plus {max}",
251
264
  formOther: "Autre",
252
265
  formOtherPlaceholder: "Saisissez votre r\xE9ponse\u2026",
253
- inputRequired: "J'ai besoin de quelques pr\xE9cisions",
254
- inputSubmit: "Envoyer",
266
+ inputRequired: "Saisie requise",
267
+ inputBadge: "Saisie",
268
+ inputAnswered: "R\xE9pondu",
269
+ inputSkipped: "Ignor\xE9",
270
+ inputQuestion: "Question",
271
+ inputResponse: "R\xE9ponse",
272
+ inputYourAnswer: "Votre r\xE9ponse",
273
+ inputSubmit: "Envoyer la r\xE9ponse",
274
+ inputSubmitHint: "Entr\xE9e pour envoyer \xB7 Maj+Entr\xE9e pour un saut de ligne",
255
275
  inputSkip: "Ignorer",
256
276
  inputSubmitted: "R\xE9ponse envoy\xE9e",
277
+ respFreeText: "Texte libre",
278
+ respSingleChoice: "Choix unique",
279
+ respMultiChoice: "Choix multiple",
280
+ respConfirmation: "Confirmation",
257
281
  approvalRequired: "Approbation requise",
258
282
  approve: "Approuver",
259
283
  reject: "Refuser",
260
284
  approved: "Approuv\xE9",
261
285
  rejected: "Refus\xE9",
262
286
  approvalReason: "Ajouter une raison (facultatif)",
263
- stepNoLongerActive: "Cette demande n'est plus active."
287
+ stepNoLongerActive: "Cette demande n'est plus active.",
288
+ toolParameters: "Param\xE8tres",
289
+ statusCompleted: "Termin\xE9",
290
+ statusDenied: "Refus\xE9",
291
+ statusError: "Erreur"
292
+ };
293
+ var STRINGS_AR = {
294
+ attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
295
+ attachmentMimeRejected: "\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",
296
+ attachmentTooLarge: "\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627",
297
+ attachmentTooMany: "\u062A\u0645 \u0628\u0644\u0648\u063A \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0645\u0631\u0641\u0642\u0627\u062A",
298
+ conversationClosed: "\u062A\u0645 \u0625\u063A\u0644\u0627\u0642 \u0647\u0630\u0647 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
299
+ conversationLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u2026",
300
+ close: "\u0625\u063A\u0644\u0627\u0642",
301
+ collapse: "\u0637\u064A\u0651",
302
+ collapseSidebar: "\u0637\u064A\u0651 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
303
+ composerPlaceholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\u2026",
304
+ dateLastWeek: "\u0622\u062E\u0631 \u0667 \u0623\u064A\u0627\u0645",
305
+ dateOlder: "\u0623\u0642\u062F\u0645",
306
+ dateToday: "\u0627\u0644\u064A\u0648\u0645",
307
+ dateYesterday: "\u0623\u0645\u0633",
308
+ dropZone: "\u0623\u0641\u0644\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0644\u0625\u0631\u0641\u0627\u0642\u0647\u0627",
309
+ errorGeneric: "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
310
+ errorRateLimited: "\u0637\u0644\u0628\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627 \u2014 \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0628\u0639\u062F \u0644\u062D\u0638\u0629.",
311
+ errorRetry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
312
+ expand: "\u062A\u0648\u0633\u064A\u0639",
313
+ expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
314
+ exitFullscreen: "\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
315
+ fullscreen: "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
316
+ history: "\u0627\u0644\u0633\u062C\u0644",
317
+ historyBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
318
+ historyEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0633\u0627\u0628\u0642\u0629 \u0628\u0639\u062F",
319
+ historyContinue: "\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
320
+ historyLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643\u2026",
321
+ historyTitle: "\u0633\u062C\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
322
+ language: "\u0627\u0644\u0644\u063A\u0629",
323
+ launcherOpen: "\u0641\u062A\u062D \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
324
+ launcherLabel: "\u062A\u062D\u062F\u062B \u0645\u0639\u0646\u0627",
325
+ micStart: "\u0628\u062F\u0621 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
326
+ micStop: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
327
+ micUnsupported: "\u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u0645\u062A\u0635\u0641\u062D",
328
+ moreActions: "\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
329
+ newConversation: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
330
+ panelTitle: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
331
+ resizeHandle: "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645",
332
+ scrollToBottom: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u062D\u062F\u062B",
333
+ send: "\u0625\u0631\u0633\u0627\u0644",
334
+ soundOff: "\u0643\u062A\u0645 \u0627\u0644\u0635\u0648\u062A",
335
+ soundOn: "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0635\u0648\u062A",
336
+ startNewConversation: "\u0628\u062F\u0621 \u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
337
+ stop: "\u0625\u064A\u0642\u0627\u0641",
338
+ theme: "\u0627\u0644\u0645\u0638\u0647\u0631",
339
+ themeAuto: "\u062A\u0644\u0642\u0627\u0626\u064A",
340
+ themeDark: "\u062F\u0627\u0643\u0646",
341
+ themeLight: "\u0641\u0627\u062A\u062D",
342
+ textSize: "\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",
343
+ textSizeSmall: "\u0635\u063A\u064A\u0631",
344
+ textSizeNormal: "\u0639\u0627\u062F\u064A",
345
+ textSizeLarge: "\u0643\u0628\u064A\u0631",
346
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
347
+ thinking: "\u064A\u0641\u0643\u0631\u2026",
348
+ thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
349
+ usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
350
+ toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
351
+ sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
352
+ // ── Messenger modules ──────────────────────────────────────────
353
+ tabHome: "\u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",
354
+ tabConversations: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
355
+ tabHelp: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
356
+ tabNews: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
357
+ modulesEmpty: "\u0644\u0627 \u0634\u064A\u0621 \u0647\u0646\u0627 \u0628\u0639\u062F",
358
+ moduleBack: "\u0631\u062C\u0648\u0639",
359
+ contentLoading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
360
+ homeGreeting: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
361
+ homeGreetingNamed: "\u0645\u0631\u062D\u0628\u064B\u0627 {name} \u{1F44B}",
362
+ homeGreetingLead: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
363
+ homeSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
364
+ homeContentTitle: "\u0645\u0642\u0627\u0644\u0627\u062A \u0634\u0627\u0626\u0639\u0629",
365
+ homeStatus: "\u0627\u0644\u062D\u0627\u0644\u0629",
366
+ helpTitle: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
367
+ helpSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
368
+ helpEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0642\u0627\u0644\u0627\u062A \u0645\u0633\u0627\u0639\u062F\u0629 \u0628\u0639\u062F",
369
+ helpLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629\u2026",
370
+ helpSearchEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
371
+ newsTitle: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
372
+ newsEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062E\u0628\u0627\u0631 \u0628\u0639\u062F",
373
+ newsLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0623\u062E\u0628\u0627\u0631\u2026",
374
+ newsBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u062E\u0628\u0627\u0631",
375
+ newsPublishedAt: "\u0646\u064F\u0634\u0631 \u0641\u064A {date}",
376
+ // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
377
+ formSubmit: "\u0625\u0631\u0633\u0627\u0644",
378
+ formSkip: "\u0644\u0627\u062D\u0642\u064B\u0627",
379
+ formSubmitted: "\u062A\u0645",
380
+ formSkipped: "\u0644\u0627\u062D\u0642\u064B\u0627",
381
+ formFillOut: "\u062A\u0639\u0628\u0626\u0629",
382
+ formRequired: "\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",
383
+ formInvalidEmail: "\u0623\u062F\u062E\u0644 \u0628\u0631\u064A\u062F\u064B\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
384
+ formInvalidTel: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0635\u062D\u064A\u062D\u064B\u0627",
385
+ formInvalidUrl: "\u0623\u062F\u062E\u0644 \u0631\u0627\u0628\u0637\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
386
+ formInvalidNumber: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
387
+ formTooShort: "\u0642\u0635\u064A\u0631 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 {min} \u062D\u0631\u0641\u064B\u0627)",
388
+ formTooLong: "\u0637\u0648\u064A\u0644 \u062C\u062F\u064B\u0627 (\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 {max} \u062D\u0631\u0641\u064B\u0627)",
389
+ formNumberTooSmall: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",
390
+ formNumberTooLarge: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",
391
+ formPatternMismatch: "\u064A\u0631\u062C\u0649 \u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0635\u064A\u063A\u0629 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629",
392
+ formChooseAtLeast: "\u0627\u062E\u062A\u0631 {min} \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
393
+ formChooseAtMost: "\u0627\u062E\u062A\u0631 {max} \u0639\u0644\u0649 \u0627\u0644\u0623\u0643\u062B\u0631",
394
+ formOther: "\u0623\u062E\u0631\u0649",
395
+ formOtherPlaceholder: "\u0627\u0643\u062A\u0628 \u0625\u062C\u0627\u0628\u062A\u0643\u2026",
396
+ inputRequired: "\u0645\u0637\u0644\u0648\u0628 \u0625\u062F\u062E\u0627\u0644 \u0645\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
397
+ inputBadge: "\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
398
+ inputAnswered: "\u062A\u0645\u062A \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
399
+ inputSkipped: "\u062A\u0645 \u0627\u0644\u062A\u062E\u0637\u064A",
400
+ inputQuestion: "\u0627\u0644\u0633\u0624\u0627\u0644",
401
+ inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
402
+ inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
403
+ inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
404
+ inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
405
+ inputSkip: "\u062A\u062E\u0637\u064D\u0651",
406
+ inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
407
+ respFreeText: "\u0646\u0635 \u062D\u0631",
408
+ respSingleChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0648\u0627\u062D\u062F",
409
+ respMultiChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u062A\u0639\u062F\u062F",
410
+ respConfirmation: "\u062A\u0623\u0643\u064A\u062F",
411
+ approvalRequired: "\u0645\u0637\u0644\u0648\u0628 \u0645\u0648\u0627\u0641\u0642\u0629",
412
+ approve: "\u0645\u0648\u0627\u0641\u0642\u0629",
413
+ reject: "\u0631\u0641\u0636",
414
+ approved: "\u062A\u0645\u062A \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629",
415
+ rejected: "\u0645\u0631\u0641\u0648\u0636",
416
+ approvalReason: "\u0623\u0636\u0641 \u0633\u0628\u0628\u064B\u0627 (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
417
+ stepNoLongerActive: "\u0644\u0645 \u064A\u0639\u062F \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0646\u0634\u0637\u064B\u0627.",
418
+ toolParameters: "\u0627\u0644\u0645\u0639\u0637\u064A\u0627\u062A",
419
+ statusCompleted: "\u0645\u0643\u062A\u0645\u0644",
420
+ statusDenied: "\u0645\u0631\u0641\u0648\u0636",
421
+ statusError: "\u062E\u0637\u0623"
264
422
  };
265
423
  var BUILTIN_STRINGS = {
266
424
  en: STRINGS_EN,
267
- fr: STRINGS_FR
425
+ fr: STRINGS_FR,
426
+ ar: STRINGS_AR
268
427
  };
269
428
  function resolveStrings(locale, override) {
270
429
  const tag = primaryTag(locale);
@@ -1238,7 +1397,7 @@ var tokens_default = ':host{--__P__-accent-user: __BRAND_ACCENT__;--__P__-accent
1238
1397
  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';
1239
1398
 
1240
1399
  // src/styles/panel.css
1241
- var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}: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:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__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)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}: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;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}: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}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}: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-inline-start: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,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-tool-args,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-tool-args::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-tool-args::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end: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:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;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}.__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-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-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-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start: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-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);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:start}.__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-inline-start:var(--__P__-space-3);border-inline-start: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:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end: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-call{margin-top:6px;border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-xs)}.__P__-tool-call-summary{display:flex;align-items:center;gap:6px;padding:var(--__P__-space-1) var(--__P__-space-2);cursor:pointer;list-style:none;color:var(--__P__-fg-muted)}.__P__-tool-call-summary::-webkit-details-marker{display:none}.__P__-tool-call-section{padding:0 var(--__P__-space-2) var(--__P__-space-2)}.__P__-tool-call-label{display:block;margin-bottom:4px;color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);text-transform:uppercase;letter-spacing:.04em}.__P__-tool-call-section[data-error=true] .__P__-tool-args{color:var(--__P__-danger, #c0392b)}.__P__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);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);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__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:max(16px,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-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__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-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;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-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__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%;inset-inline-end: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__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__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,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__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__-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-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__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:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-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-inline-start: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:start;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:start}.__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:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__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:start;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-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;inset-inline-end: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-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__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%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px 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-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__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:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;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:var(--__P__-space-2)}.__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-3);padding:var(--__P__-space-4);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[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__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)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
1400
+ var panel_default = '.__P__-anchor{color-scheme:var(--__P__-color-scheme, light);right:16px;bottom:16px}.__P__-surface{display:contents}.__P__-surface[hidden]{display:none}: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:color-mix(in srgb,currentColor 15%,transparent)}.__P__-callout-close:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px}.__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)}@media(prefers-reduced-motion:no-preference){.__P__-panel{transition:width var(--__P__-dur-base) var(--__P__-ease),height var(--__P__-dur-base) var(--__P__-ease),max-width var(--__P__-dur-base) var(--__P__-ease),max-height var(--__P__-dur-base) var(--__P__-ease)}.__P__-panel[data-resizing]{transition:none}}: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;padding:0;justify-content:flex-end;align-items:flex-end}:host([data-mode="fullscreen"][data-position*="top"]) .__P__-anchor{justify-content:flex-start}:host([data-mode="fullscreen"][data-position*="left"]) .__P__-anchor{align-items:flex-start}: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}@media(max-width:640px){:host([data-mode="open"]) .__P__-anchor,:host([data-mode="expanded"]) .__P__-anchor{inset:0;align-items:stretch;padding:0}:host([data-mode="open"]) .__P__-panel,:host([data-mode="expanded"]) .__P__-panel{width:100vw;height:100dvh;max-width:none;max-height:none;border-radius:0;border:0}}: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-inline-start: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,.__P__-history,.__P__-module-scroll,.__P__-home-scroll,.__P__-help-list,.__P__-toolui-code,.__P__-sidebar-conversations{scrollbar-width:thin;scrollbar-color:var(--__P__-border-strong) transparent;overscroll-behavior:contain;scrollbar-gutter:stable}.__P__-list::-webkit-scrollbar,.__P__-history::-webkit-scrollbar,.__P__-module-scroll::-webkit-scrollbar,.__P__-home-scroll::-webkit-scrollbar,.__P__-help-list::-webkit-scrollbar,.__P__-toolui-code::-webkit-scrollbar,.__P__-sidebar-conversations::-webkit-scrollbar{width:8px}.__P__-list::-webkit-scrollbar-thumb,.__P__-history::-webkit-scrollbar-thumb,.__P__-module-scroll::-webkit-scrollbar-thumb,.__P__-home-scroll::-webkit-scrollbar-thumb,.__P__-help-list::-webkit-scrollbar-thumb,.__P__-toolui-code::-webkit-scrollbar-thumb,.__P__-sidebar-conversations::-webkit-scrollbar-thumb{background:var(--__P__-border-strong);border-radius:8px}.__P__-list-wrap{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.__P__-jump{position:absolute;inset-inline-end: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:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;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}.__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-end-end-radius:5px}.__P__-bubble-row[data-role=assistant] .__P__-bubble{background:var(--__P__-bubble-assistant);color:var(--__P__-bubble-assistant-text);border-end-start-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-inline-start:1.5em;margin:10px 0}.__P__-md ul{list-style:disc}.__P__-md ol{list-style:decimal}.__P__-md li{margin:6px 0;padding-inline-start: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-inline-start:3px solid color-mix(in srgb,var(--__P__-accent) 50%,transparent);background:color-mix(in srgb,var(--__P__-accent) 5%,transparent);border-start-end-radius:var(--__P__-radius-sm);border-end-end-radius:var(--__P__-radius-sm);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:start}.__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-inline-start:var(--__P__-space-3);border-inline-start: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:hover{color:var(--__P__-fg)}.__P__-reasoning-summary:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:2px;border-radius:var(--__P__-radius-sm)}.__P__-reasoning-summary::-webkit-details-marker{display:none}.__P__-reasoning-summary:before{content:"";width:5px;height:5px;border-inline-end: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__-source{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:6px;margin-inline-end:6px;padding:var(--__P__-space-1) var(--__P__-space-2);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);text-decoration:none}a.__P__-source:hover{color:var(--__P__-fg);border-color:var(--__P__-accent)}.__P__-source-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__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:max(16px,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-3)}.__P__-history-heading{font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted);padding:14px 4px 8px;text-transform:uppercase;letter-spacing:.04em}.__P__-history-card{display:flex;flex-direction:column;background:var(--__P__-surface);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-lg, 14px);overflow:hidden}.__P__-history-item{all:unset;display:flex;align-items:center;gap:var(--__P__-space-3);padding:12px var(--__P__-space-3);cursor:pointer;transition:background var(--__P__-dur-base) var(--__P__-ease)}.__P__-history-item+.__P__-history-item{border-top:1px solid var(--__P__-border)}.__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-avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:color-mix(in oklab,var(--__P__-accent) 12%,transparent);color:var(--__P__-accent)}.__P__-history-avatar svg{width:18px;height:18px}.__P__-history-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.__P__-history-row{display:flex;align-items:center;justify-content:space-between;gap:var(--__P__-space-2)}.__P__-history-title{flex:1;min-width:0;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-time{flex:none;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-history-preview{flex:1;min-width:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.__P__-history-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--__P__-accent)}.__P__-history-item[data-unread=true] .__P__-history-title{font-weight:600}.__P__-history-item[data-closed=true] .__P__-history-title{color:var(--__P__-fg-muted)}.__P__-history-item-skeleton{cursor:default;pointer-events:none}.__P__-skeleton{display:block;border-radius:4px;background:linear-gradient(90deg,color-mix(in oklab,var(--__P__-fg) 9%,transparent) 30%,color-mix(in oklab,var(--__P__-fg) 17%,transparent),color-mix(in oklab,var(--__P__-fg) 9%,transparent) 70%);background-size:200% 100%;animation:__P__-skeleton-shimmer 1.8s ease-in-out infinite}.__P__-history-avatar.__P__-skeleton{border-radius:50%}.__P__-skeleton-heading{width:52px;height:8px}.__P__-skeleton-title{width:55%;height:12px}.__P__-skeleton-time{width:34px;height:10px}.__P__-skeleton-preview{width:80%;height:10px}@keyframes __P__-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.__P__-skeleton{animation:none}}.__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%;inset-inline-end: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__-menu-item-segmented{cursor:default}.__P__-menu-item-segmented:hover{background:transparent}.__P__-segmented{display:inline-flex;gap:2px;padding:2px;background:var(--__P__-bg-elevated);border-radius:var(--__P__-radius-sm)}.__P__-segment{all:unset;min-width:26px;padding:3px 8px;font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.02em;text-align:center;color:var(--__P__-fg-muted);border-radius:calc(var(--__P__-radius-sm) - 2px);cursor:pointer;transition:color .12s ease,background .12s ease}.__P__-segment:hover{color:var(--__P__-fg)}.__P__-segment[data-on=true]{background:var(--__P__-bg);color:var(--__P__-accent);box-shadow:var(--__P__-shadow-card)}.__P__-segment:focus-visible{outline:2px solid var(--__P__-focus);outline-offset:-2px}.__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,.__P__-messenger-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.__P__-messenger-pane[hidden]{display:none}@keyframes __P__-view-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.__P__-module{display:flex;flex-direction:column;height:100%;min-height:0}@media(prefers-reduced-motion:no-preference){.__P__-module,.__P__-history{animation:__P__-view-in .18s var(--__P__-ease-out)}}.__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__-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-hero-actions .__P__-icon-btn:hover{background:color-mix(in srgb,#fff 18%,transparent);color:#fff}.__P__-home-hero-actions .__P__-icon-btn:active{background:color-mix(in srgb,#fff 26%,transparent)}.__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:10px 0 0;font-family:var(--__P__-font-display);font-size:clamp(calc(15px * var(--__P__-text-scale)),calc(4.2cqi * var(--__P__-text-scale)),var(--__P__-text-xl));font-weight:600;line-height:1.25;letter-spacing:-.005em;color:color-mix(in srgb,var(--__P__-on-accent) 78%,transparent);overflow-wrap:anywhere}.__P__-home-avatars{display:flex}.__P__-home-avatar{width:30px;height:30px;border-radius:999px;overflow:hidden;margin-inline-start:-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-inline-start: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:start;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:start}.__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:start;padding:var(--__P__-space-3) var(--__P__-space-2);border-radius:var(--__P__-radius-sm)}.__P__-list-row:hover{background:var(--__P__-hover)}.__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:start;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-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;inset-inline-end: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-4)}.__P__-field{display:flex;flex-direction:column;gap:6px}.__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%;min-width:0;max-width:100%;box-sizing:border-box;padding:10px 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-input[type=date],.__P__-field-input[type=time]{appearance:none;-webkit-appearance:none}@media(pointer:coarse){.__P__-field-input{font-size:max(16px,calc(16px * var(--__P__-text-scale)))}}.__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:10px;padding-top:2px}.__P__-choice{display:flex;align-items:flex-start;gap:10px;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;align-items:center;justify-content:flex-end;gap:var(--__P__-space-2);margin-top:var(--__P__-space-2)}.__P__-form-hint{margin-inline-end:auto;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}.__P__-form-submit{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){filter:brightness(1.06)}.__P__-form-submit:disabled{opacity:.6;cursor:default}.__P__-form-skip{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){background:var(--__P__-bg-elevated)}.__P__-form-gate{display:flex;flex-direction:column;gap:var(--__P__-space-3);padding:var(--__P__-space-4);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[data-outcome=skipped] svg{color:var(--__P__-fg-muted)}.__P__-form-done-fill{border:0;background:none;padding:0 2px;cursor:pointer;font:inherit;font-weight:600;color:var(--__P__-accent)}.__P__-form-done-fill:hover{text-decoration:underline}details.__P__-form-done{display:block;padding:0;border-radius:var(--__P__-radius-md)}details[open].__P__-form-done{width:min(100%,420px);background:var(--__P__-surface)}.__P__-form-done-summary{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;cursor:pointer;list-style:none}.__P__-form-done-summary::-webkit-details-marker{display:none}.__P__-form-done-summary>svg:last-child{color:var(--__P__-fg-muted);transition:transform .15s var(--__P__-ease)}details[open]>.__P__-form-done-summary>svg:last-child{transform:rotate(90deg)}.__P__-form-answers{margin:0;padding:var(--__P__-space-2) var(--__P__-space-3) var(--__P__-space-3);display:grid;gap:var(--__P__-space-3);text-align:start}.__P__-form-answer{display:grid;gap:6px}.__P__-form-answer dt{font-size:var(--__P__-text-sm);font-weight:600;color:var(--__P__-fg)}.__P__-form-answer dd{margin:0;padding:10px var(--__P__-space-3);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg);font-size:var(--__P__-text-sm);font-weight:400;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui{display:flex;flex-direction:column;gap:var(--__P__-space-3);margin-top:6px;padding:var(--__P__-space-4);border:1px solid var(--__P__-border);border-radius:var(--__P__-radius-md);background:var(--__P__-bg-elevated);font-size:var(--__P__-text-sm)}.__P__-toolui-stale{opacity:.7}details.__P__-toolui-collapsible{gap:0}details.__P__-toolui-collapsible>:not(summary){margin-top:var(--__P__-space-3)}.__P__-toolui-collapsible>summary{cursor:pointer;list-style:none}.__P__-toolui-collapsible>summary::-webkit-details-marker{display:none}.__P__-toolui-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.__P__-toolui-title{margin-inline-end:auto;font-weight:600;color:var(--__P__-fg);overflow-wrap:anywhere}.__P__-toolui-badge{padding:3px 10px;border-radius:999px;border:1px solid var(--__P__-border);background:var(--__P__-bg);color:var(--__P__-fg-muted);font-size:var(--__P__-text-xs);font-weight:600;white-space:nowrap}.__P__-toolui-badge-accent{border-color:color-mix(in oklab,var(--__P__-warning, #f59e0b) 55%,transparent);background:color-mix(in oklab,var(--__P__-warning, #f59e0b) 12%,transparent);color:var(--__P__-warning, #f59e0b)}.__P__-toolui-status{display:inline-flex;align-items:center;gap:5px;margin-inline-start:auto;font-size:var(--__P__-text-xs);font-weight:600;color:var(--__P__-fg-muted)}.__P__-toolui-status[data-status=completed],.__P__-toolui-status[data-status=approved]{color:var(--__P__-success, #16a34a)}.__P__-toolui-status[data-status=denied],.__P__-toolui-status[data-status=error]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-desc{margin:0;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border);color:var(--__P__-fg-muted);line-height:1.5}.__P__-toolui-section{display:flex;flex-direction:column;gap:6px;padding:var(--__P__-space-3);border-radius:var(--__P__-radius-sm);background:var(--__P__-bg);border:1px solid var(--__P__-border)}.__P__-toolui-label{font-size:var(--__P__-text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--__P__-fg-muted)}.__P__-toolui-text{margin:0;font-size:var(--__P__-text-base);font-weight:600;color:var(--__P__-fg);line-height:1.4;overflow-wrap:anywhere}.__P__-toolui-code{margin:0;max-height:220px;overflow:auto;color:var(--__P__-fg);font-size:var(--__P__-text-xs);white-space:pre-wrap;word-break:break-word}.__P__-toolui-code[data-error=true]{color:var(--__P__-danger, #dc2626)}.__P__-toolui-note{margin:0;font-size:var(--__P__-text-xs);color:var(--__P__-fg-muted)}:host([dir="rtl"]) .__P__-icon-dir{transform:scaleX(-1)}:host([dir="rtl"]) .__P__-field-input[type=date],:host([dir="rtl"]) .__P__-field-input[type=time]{position:relative;text-align:right;padding-left:34px}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-datetime-edit,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-datetime-edit{text-align:right}:host([dir="rtl"]) .__P__-field-input[type=date]::-webkit-calendar-picker-indicator,:host([dir="rtl"]) .__P__-field-input[type=time]::-webkit-calendar-picker-indicator{position:absolute;left:var(--__P__-space-3);margin:0}\n';
1242
1401
 
1243
1402
  // src/styles/standalone.css
1244
1403
  var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
@@ -1326,22 +1485,22 @@ function attachAdoptedSheet(shadow, doc) {
1326
1485
  }
1327
1486
  }
1328
1487
  function applyThemeOverrides(host, overrides) {
1329
- const p35 = BRAND.cssPrefix;
1330
- if (overrides.accent) host.style.setProperty(`--${p35}-accent-user`, overrides.accent);
1331
- if (overrides.accentText) host.style.setProperty(`--${p35}-accent-text-user`, overrides.accentText);
1332
- if (overrides.radius) host.style.setProperty(`--${p35}-radius`, overrides.radius);
1333
- if (overrides.fontFamily) host.style.setProperty(`--${p35}-font`, overrides.fontFamily);
1488
+ const p36 = BRAND.cssPrefix;
1489
+ if (overrides.accent) host.style.setProperty(`--${p36}-accent-user`, overrides.accent);
1490
+ if (overrides.accentText) host.style.setProperty(`--${p36}-accent-text-user`, overrides.accentText);
1491
+ if (overrides.radius) host.style.setProperty(`--${p36}-radius`, overrides.radius);
1492
+ if (overrides.fontFamily) host.style.setProperty(`--${p36}-font`, overrides.fontFamily);
1334
1493
  }
1335
1494
  function applyThemeMode(host, mode) {
1336
1495
  host.dataset.theme = mode;
1337
1496
  }
1338
1497
  function applySize(host, size) {
1339
- const p35 = BRAND.cssPrefix;
1340
- if (size.width !== void 0) host.style.setProperty(`--${p35}-panel-w`, size.width);
1341
- if (size.height !== void 0) host.style.setProperty(`--${p35}-panel-h`, size.height);
1342
- if (size.expanded?.width !== void 0) host.style.setProperty(`--${p35}-expanded-w`, size.expanded.width);
1343
- if (size.expanded?.height !== void 0) host.style.setProperty(`--${p35}-expanded-h`, size.expanded.height);
1344
- if (size.inset !== void 0) host.style.setProperty(`--${p35}-panel-inset`, size.inset);
1498
+ const p36 = BRAND.cssPrefix;
1499
+ if (size.width !== void 0) host.style.setProperty(`--${p36}-panel-w`, size.width);
1500
+ if (size.height !== void 0) host.style.setProperty(`--${p36}-panel-h`, size.height);
1501
+ if (size.expanded?.width !== void 0) host.style.setProperty(`--${p36}-expanded-w`, size.expanded.width);
1502
+ if (size.expanded?.height !== void 0) host.style.setProperty(`--${p36}-expanded-h`, size.expanded.height);
1503
+ if (size.inset !== void 0) host.style.setProperty(`--${p36}-panel-inset`, size.inset);
1345
1504
  }
1346
1505
  function applyPosition(host, pos) {
1347
1506
  host.dataset.position = pos;
@@ -1445,7 +1604,7 @@ function createAuth(opts) {
1445
1604
  }
1446
1605
 
1447
1606
  // src/core/version.ts
1448
- var ELEMENTS_VERSION = true ? "0.46.2" : "0.0.0-dev";
1607
+ var ELEMENTS_VERSION = true ? "0.47.0" : "0.0.0-dev";
1449
1608
  var ELEMENTS_VERSION_PARAM = "_ev";
1450
1609
 
1451
1610
  // src/stream/types.ts
@@ -1530,11 +1689,11 @@ function toBase64Url(json) {
1530
1689
  var nonEmpty = (ctx) => ctx && Object.keys(ctx).length > 0 ? ctx : void 0;
1531
1690
  function encodeContext(user, page) {
1532
1691
  const u = nonEmpty(user);
1533
- const p35 = nonEmpty(page);
1534
- if (!u && !p35) return void 0;
1692
+ const p36 = nonEmpty(page);
1693
+ if (!u && !p36) return void 0;
1535
1694
  const envelope = {};
1536
1695
  if (u) envelope.user = u;
1537
- if (p35) envelope.page = p35;
1696
+ if (p36) envelope.page = p36;
1538
1697
  return toBase64Url(JSON.stringify(envelope));
1539
1698
  }
1540
1699
 
@@ -1544,8 +1703,8 @@ function parseWireDate(value) {
1544
1703
  const ms = Date.parse(value);
1545
1704
  return Number.isFinite(ms) ? ms : void 0;
1546
1705
  }
1547
- function toolPartType(toolName) {
1548
- const bare = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
1706
+ function toolPartType(toolName2) {
1707
+ const bare = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
1549
1708
  return `tool-${bare}`;
1550
1709
  }
1551
1710
  function toolNameFromType(type) {
@@ -1633,8 +1792,8 @@ function buildSendMessageRequest(params) {
1633
1792
  if (tools?.length) body.data = { tools };
1634
1793
  return body;
1635
1794
  }
1636
- function isResolvedToolPart(p35) {
1637
- return p35.state === "output-available" || p35.state === "output-error" || p35.state === "output-denied" || p35.approval?.approved !== void 0;
1795
+ function isResolvedToolPart(p36) {
1796
+ return p36.state === "output-available" || p36.state === "output-error" || p36.state === "output-denied" || p36.approval?.approved !== void 0;
1638
1797
  }
1639
1798
  function normalizeToolRef(ref) {
1640
1799
  if (typeof ref === "string") return ref ? { code: ref } : null;
@@ -1642,29 +1801,29 @@ function normalizeToolRef(ref) {
1642
1801
  }
1643
1802
  function messageToWireParts(m) {
1644
1803
  const out = [];
1645
- for (const p35 of m.parts) {
1646
- if (p35.kind === "step-start") {
1804
+ for (const p36 of m.parts) {
1805
+ if (p36.kind === "step-start") {
1647
1806
  out.push({ type: "step-start" });
1648
1807
  }
1649
- if (p35.kind === "reasoning" && p35.text) {
1650
- out.push({ type: "reasoning", text: p35.text, state: p35.done ? "done" : "streaming" });
1808
+ if (p36.kind === "reasoning" && p36.text) {
1809
+ out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
1651
1810
  }
1652
- if (p35.kind === "text" && p35.text) {
1653
- out.push({ text: p35.text, type: "text" });
1811
+ if (p36.kind === "text" && p36.text) {
1812
+ out.push({ text: p36.text, type: "text" });
1654
1813
  }
1655
- if (p35.kind === "file" && p35.url) {
1656
- out.push({ mediaType: p35.mediaType, type: "file", url: p35.url });
1814
+ if (p36.kind === "file" && p36.url) {
1815
+ out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
1657
1816
  }
1658
- if (p35.kind === "tool" && isResolvedToolPart(p35)) {
1817
+ if (p36.kind === "tool" && isResolvedToolPart(p36)) {
1659
1818
  const part = {
1660
- type: toolPartType(p35.toolName),
1661
- toolCallId: p35.toolCallId,
1662
- state: p35.state
1819
+ type: toolPartType(p36.toolName),
1820
+ toolCallId: p36.toolCallId,
1821
+ state: p36.state
1663
1822
  };
1664
- if (p35.input !== void 0) part.input = p35.input;
1665
- if (p35.output !== void 0) part.output = p35.output;
1666
- if (p35.error !== void 0) part.errorText = p35.error;
1667
- if (p35.approval && p35.approval.approved !== void 0) part.approval = p35.approval;
1823
+ if (p36.input !== void 0) part.input = p36.input;
1824
+ if (p36.output !== void 0) part.output = p36.output;
1825
+ if (p36.error !== void 0) part.errorText = p36.error;
1826
+ if (p36.approval && p36.approval.approved !== void 0) part.approval = p36.approval;
1668
1827
  out.push(part);
1669
1828
  }
1670
1829
  }
@@ -2333,12 +2492,13 @@ function makeAssistantMessage() {
2333
2492
  };
2334
2493
  }
2335
2494
  function makeInstantWelcomeMessage(m) {
2495
+ const id = uuid7();
2336
2496
  return toReactive({
2337
- id: m.id,
2497
+ id,
2338
2498
  role: m.role,
2339
2499
  createdAt: Date.now(),
2340
2500
  status: "complete",
2341
- parts: [{ kind: "text", id: `${m.id}-t0`, text: m.text, done: true }]
2501
+ parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
2342
2502
  });
2343
2503
  }
2344
2504
  function toReactive(m) {
@@ -2399,7 +2559,7 @@ function fromWireMessage(w) {
2399
2559
  };
2400
2560
  }
2401
2561
  return null;
2402
- }).filter((p35) => p35 !== null);
2562
+ }).filter((p36) => p36 !== null);
2403
2563
  return {
2404
2564
  id: w.id,
2405
2565
  role: w.role,
@@ -2433,43 +2593,43 @@ function assistantText(m) {
2433
2593
  }
2434
2594
  return out;
2435
2595
  }
2436
- function partToReactive(p35) {
2437
- if (p35.kind === "text" || p35.kind === "reasoning") {
2438
- return { kind: p35.kind, id: p35.id, textSig: signal(p35.text), doneSig: signal(p35.done) };
2596
+ function partToReactive(p36) {
2597
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2598
+ return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
2439
2599
  }
2440
- if (p35.kind === "tool") {
2600
+ if (p36.kind === "tool") {
2441
2601
  return {
2442
2602
  kind: "tool",
2443
- toolCallId: p35.toolCallId,
2444
- toolName: p35.toolName,
2445
- inputPartialSig: signal(p35.inputPartial),
2446
- inputSig: signal(p35.input),
2447
- outputSig: signal(p35.output),
2448
- errorSig: signal(p35.error),
2449
- stateSig: signal(p35.state),
2450
- approvalSig: signal(p35.approval)
2603
+ toolCallId: p36.toolCallId,
2604
+ toolName: p36.toolName,
2605
+ inputPartialSig: signal(p36.inputPartial),
2606
+ inputSig: signal(p36.input),
2607
+ outputSig: signal(p36.output),
2608
+ errorSig: signal(p36.error),
2609
+ stateSig: signal(p36.state),
2610
+ approvalSig: signal(p36.approval)
2451
2611
  };
2452
2612
  }
2453
- return p35;
2613
+ return p36;
2454
2614
  }
2455
- function partFromReactive(p35) {
2456
- if (p35.kind === "text" || p35.kind === "reasoning") {
2457
- return { kind: p35.kind, id: p35.id, text: p35.textSig.value, done: p35.doneSig.value };
2615
+ function partFromReactive(p36) {
2616
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2617
+ return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
2458
2618
  }
2459
- if (p35.kind === "tool") {
2619
+ if (p36.kind === "tool") {
2460
2620
  return {
2461
2621
  kind: "tool",
2462
- toolCallId: p35.toolCallId,
2463
- toolName: p35.toolName,
2464
- inputPartial: p35.inputPartialSig.value,
2465
- input: p35.inputSig.value,
2466
- output: p35.outputSig.value,
2467
- error: p35.errorSig.value,
2468
- state: p35.stateSig.value,
2469
- approval: p35.approvalSig.value
2622
+ toolCallId: p36.toolCallId,
2623
+ toolName: p36.toolName,
2624
+ inputPartial: p36.inputPartialSig.value,
2625
+ input: p36.inputSig.value,
2626
+ output: p36.outputSig.value,
2627
+ error: p36.errorSig.value,
2628
+ state: p36.stateSig.value,
2629
+ approval: p36.approvalSig.value
2470
2630
  };
2471
2631
  }
2472
- return p35;
2632
+ return p36;
2473
2633
  }
2474
2634
 
2475
2635
  // src/stream/reducer.ts
@@ -2515,8 +2675,8 @@ var StreamReducer = class {
2515
2675
  ensureTextPart(m, "text", chunk.id);
2516
2676
  return;
2517
2677
  case "text-delta": {
2518
- const p35 = ensureTextPart(m, "text", chunk.id);
2519
- p35.textSig.value += chunk.delta;
2678
+ const p36 = ensureTextPart(m, "text", chunk.id);
2679
+ p36.textSig.value += chunk.delta;
2520
2680
  return;
2521
2681
  }
2522
2682
  case "text-end":
@@ -2526,8 +2686,8 @@ var StreamReducer = class {
2526
2686
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2527
2687
  return;
2528
2688
  case "reasoning-delta": {
2529
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2530
- p35.textSig.value += chunk.delta;
2689
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2690
+ p36.textSig.value += chunk.delta;
2531
2691
  return;
2532
2692
  }
2533
2693
  case "reasoning-end":
@@ -2577,19 +2737,19 @@ var StreamReducer = class {
2577
2737
  }
2578
2738
  };
2579
2739
  function ensureTextPart(m, kind, id) {
2580
- const existing = m.partsSig.value.find((p35) => p35.kind === kind && p35.id === id);
2740
+ const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
2581
2741
  if (existing) return existing;
2582
2742
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2583
2743
  appendPart(m, part);
2584
2744
  return part;
2585
2745
  }
2586
- function ensureToolPart(m, toolCallId, toolName) {
2587
- const existing = m.partsSig.value.find((p35) => p35.kind === "tool" && p35.toolCallId === toolCallId);
2746
+ function ensureToolPart(m, toolCallId, toolName2) {
2747
+ const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
2588
2748
  if (existing) return existing;
2589
2749
  const part = {
2590
2750
  kind: "tool",
2591
2751
  toolCallId,
2592
- toolName: toolName ?? "tool",
2752
+ toolName: toolName2 ?? "tool",
2593
2753
  inputPartialSig: signal2(""),
2594
2754
  inputSig: signal2(void 0),
2595
2755
  outputSig: signal2(void 0),
@@ -2604,7 +2764,7 @@ function appendPart(m, part) {
2604
2764
  m.partsSig.value = [...m.partsSig.value, part];
2605
2765
  }
2606
2766
  function appendSource(m, source) {
2607
- if (m.partsSig.value.some((p35) => p35.kind === "source" && p35.sourceId === source.sourceId)) return;
2767
+ if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
2608
2768
  appendPart(m, source);
2609
2769
  }
2610
2770
  function applyTool(m, chunk) {
@@ -2613,37 +2773,37 @@ function applyTool(m, chunk) {
2613
2773
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2614
2774
  return;
2615
2775
  case "tool-input-delta": {
2616
- const p35 = ensureToolPart(m, chunk.toolCallId);
2617
- p35.inputPartialSig.value += chunk.inputTextDelta;
2776
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2777
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2618
2778
  return;
2619
2779
  }
2620
2780
  case "tool-input-available": {
2621
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2622
- p35.inputSig.value = chunk.input;
2623
- p35.stateSig.value = "input-available";
2781
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2782
+ p36.inputSig.value = chunk.input;
2783
+ p36.stateSig.value = "input-available";
2624
2784
  return;
2625
2785
  }
2626
2786
  case "tool-approval-request": {
2627
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2628
- p35.approvalSig.value = { id: chunk.approvalId };
2629
- p35.stateSig.value = "approval-requested";
2787
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2788
+ p36.approvalSig.value = { id: chunk.approvalId };
2789
+ p36.stateSig.value = "approval-requested";
2630
2790
  return;
2631
2791
  }
2632
2792
  case "tool-output-available": {
2633
- const p35 = ensureToolPart(m, chunk.toolCallId);
2634
- p35.outputSig.value = chunk.output;
2635
- p35.stateSig.value = "output-available";
2793
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2794
+ p36.outputSig.value = chunk.output;
2795
+ p36.stateSig.value = "output-available";
2636
2796
  return;
2637
2797
  }
2638
2798
  case "tool-output-error": {
2639
- const p35 = ensureToolPart(m, chunk.toolCallId);
2640
- p35.errorSig.value = chunk.errorText;
2641
- p35.stateSig.value = "output-error";
2799
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2800
+ p36.errorSig.value = chunk.errorText;
2801
+ p36.stateSig.value = "output-error";
2642
2802
  return;
2643
2803
  }
2644
2804
  case "tool-output-denied": {
2645
- const p35 = ensureToolPart(m, chunk.toolCallId);
2646
- p35.stateSig.value = "output-denied";
2805
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2806
+ p36.stateSig.value = "output-denied";
2647
2807
  return;
2648
2808
  }
2649
2809
  default:
@@ -3340,24 +3500,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3340
3500
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3341
3501
  import { jsx as jsx3 } from "preact/jsx-runtime";
3342
3502
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3343
- const p35 = BRAND.cssPrefix;
3503
+ const p36 = BRAND.cssPrefix;
3344
3504
  const dragRef = useRef(null);
3345
3505
  useEffect2(() => {
3346
3506
  if (!panelEl) return;
3347
3507
  const style = panelEl.style;
3348
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3349
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3350
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3351
- if (resize.maxHeight) style.setProperty(`--${p35}-resize-max-h`, resize.maxHeight);
3508
+ if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
3509
+ if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
3510
+ if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
3511
+ if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
3352
3512
  if (initialSize) {
3353
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3354
- style.setProperty(`--${p35}-widget-h`, `${initialSize.height}px`);
3513
+ style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
3514
+ style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
3355
3515
  }
3356
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3516
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3357
3517
  if (!panelEl) return null;
3358
3518
  const isTop = position.startsWith("top-");
3359
3519
  const isRight = position.endsWith("-right");
3360
- const cornerClass = `${p35}-resize-grip ${p35}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3520
+ const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3361
3521
  const onPointerDown = (e) => {
3362
3522
  if (!panelEl) return;
3363
3523
  const target = e.currentTarget;
@@ -3382,8 +3542,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3382
3542
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3383
3543
  const dx = (e.clientX - d.startX) * d.dirX;
3384
3544
  const dy = (e.clientY - d.startY) * d.dirY;
3385
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3386
- panelEl.style.setProperty(`--${p35}-widget-h`, `${d.startH + dy}px`);
3545
+ panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
3546
+ panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
3387
3547
  };
3388
3548
  const onPointerUp = (e) => {
3389
3549
  const d = dragRef.current;
@@ -4120,7 +4280,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4120
4280
  // src/ui/overflow-menu.tsx
4121
4281
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4122
4282
  function OverflowMenu({ items, triggerLabel }) {
4123
- const p35 = BRAND.cssPrefix;
4283
+ const p36 = BRAND.cssPrefix;
4124
4284
  const menu = usePopoverMenu({ itemCount: items.length });
4125
4285
  const handleSelect = (item) => {
4126
4286
  if (item.disabled) return;
@@ -4143,13 +4303,13 @@ function OverflowMenu({ items, triggerLabel }) {
4143
4303
  e.stopPropagation();
4144
4304
  pickSegment(item, segs[next].value);
4145
4305
  };
4146
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4306
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4147
4307
  /* @__PURE__ */ jsx8(
4148
4308
  "button",
4149
4309
  {
4150
4310
  ref: menu.triggerRef,
4151
4311
  type: "button",
4152
- class: `${p35}-icon-btn`,
4312
+ class: `${p36}-icon-btn`,
4153
4313
  "aria-label": triggerLabel,
4154
4314
  "aria-haspopup": "menu",
4155
4315
  "aria-expanded": menu.open,
@@ -4163,7 +4323,7 @@ function OverflowMenu({ items, triggerLabel }) {
4163
4323
  "div",
4164
4324
  {
4165
4325
  ref: menu.menuRef,
4166
- class: `${p35}-menu`,
4326
+ class: `${p36}-menu`,
4167
4327
  role: "menu",
4168
4328
  "aria-label": triggerLabel,
4169
4329
  onKeyDown: menu.onMenuKey,
@@ -4173,14 +4333,14 @@ function OverflowMenu({ items, triggerLabel }) {
4173
4333
  "div",
4174
4334
  {
4175
4335
  role: "menuitem",
4176
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4336
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4177
4337
  "aria-label": item.label,
4178
4338
  tabIndex: -1,
4179
4339
  onKeyDown: (e) => onSegmentRowKey(e, item),
4180
4340
  children: [
4181
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4182
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4183
- /* @__PURE__ */ jsx8("span", { class: `${p35}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4341
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4342
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4343
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4184
4344
  const active = seg.value === item.value;
4185
4345
  return /* @__PURE__ */ jsx8(
4186
4346
  "button",
@@ -4188,7 +4348,7 @@ function OverflowMenu({ items, triggerLabel }) {
4188
4348
  type: "button",
4189
4349
  role: "menuitemradio",
4190
4350
  "aria-checked": active,
4191
- class: `${p35}-segment`,
4351
+ class: `${p36}-segment`,
4192
4352
  "data-on": active ? "true" : void 0,
4193
4353
  lang: seg.lang,
4194
4354
  title: seg.value,
@@ -4208,14 +4368,14 @@ function OverflowMenu({ items, triggerLabel }) {
4208
4368
  {
4209
4369
  type: "button",
4210
4370
  role: "menuitem",
4211
- class: `${p35}-menu-item`,
4371
+ class: `${p36}-menu-item`,
4212
4372
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4213
4373
  disabled: item.disabled,
4214
4374
  onClick: () => handleSelect(item),
4215
4375
  children: [
4216
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4217
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4218
- item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4376
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4377
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4378
+ item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4219
4379
  ]
4220
4380
  },
4221
4381
  item.id
@@ -4458,6 +4618,7 @@ function DynamicForm({
4458
4618
  onSubmit,
4459
4619
  skipLabel,
4460
4620
  onSkip,
4621
+ footerHint,
4461
4622
  disabled,
4462
4623
  rootTestId,
4463
4624
  submitTestId,
@@ -4504,6 +4665,7 @@ function DynamicForm({
4504
4665
  field.name
4505
4666
  )),
4506
4667
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4668
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4507
4669
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4508
4670
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4509
4671
  ] })
@@ -4758,9 +4920,9 @@ function FormDoneMarker({
4758
4920
  import { useComputed as useComputed5 } from "@preact/signals";
4759
4921
 
4760
4922
  // src/stream/constants.ts
4761
- function isAskUserInputTool(toolName) {
4762
- if (!toolName) return false;
4763
- const name = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
4923
+ function isAskUserInputTool(toolName2) {
4924
+ if (!toolName2) return false;
4925
+ const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
4764
4926
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4765
4927
  }
4766
4928
 
@@ -4854,36 +5016,92 @@ function SourceView({ part, strings }) {
4854
5016
 
4855
5017
  // src/ui/tool-approval.tsx
4856
5018
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4857
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
5019
+
5020
+ // src/ui/tool-card.tsx
5021
+ import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
4858
5022
  var p13 = BRAND.cssPrefix;
4859
- function displayToolName(toolName) {
4860
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ");
5023
+ function toolName(raw) {
5024
+ if (raw.startsWith("tool:")) return raw.slice(5);
5025
+ if (raw.startsWith("tool-")) return raw.slice(5);
5026
+ return raw;
5027
+ }
5028
+ function statusOf(state, approval) {
5029
+ if (state === "output-error") return "error";
5030
+ if (state === "output-denied" || approval?.approved === false) return "denied";
5031
+ if (state === "output-available") return "completed";
5032
+ if (approval?.approved === true) return "approved";
5033
+ return "pending";
5034
+ }
5035
+ var ICON = {
5036
+ completed: "\u2713",
5037
+ approved: "\u2713",
5038
+ denied: "\u2715",
5039
+ error: "\u26A0",
5040
+ pending: "\u2022"
5041
+ };
5042
+ function ToolStatus({
5043
+ state,
5044
+ approval,
5045
+ strings
5046
+ }) {
5047
+ const status = statusOf(state, approval);
5048
+ const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
5049
+ if (!label) return null;
5050
+ return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
5051
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
5052
+ label
5053
+ ] });
5054
+ }
5055
+ function ToolSection({ label, value, error }) {
5056
+ const text = error ? String(value ?? "") : pretty(unwrapResult(value));
5057
+ if (!text) return null;
5058
+ return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
5059
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
5060
+ /* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
5061
+ ] });
4861
5062
  }
5063
+ function unwrapResult(output) {
5064
+ if (output && typeof output === "object") {
5065
+ const rec = output;
5066
+ if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5067
+ }
5068
+ return output;
5069
+ }
5070
+ function pretty(value) {
5071
+ if (value == null) return "";
5072
+ try {
5073
+ const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5074
+ if (!json || json === "{}" || json === "[]" || json === '""') return "";
5075
+ return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
5076
+ } catch {
5077
+ return "";
5078
+ }
5079
+ }
5080
+
5081
+ // src/ui/tool-approval.tsx
5082
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5083
+ var p14 = BRAND.cssPrefix;
4862
5084
  function ToolApproval({ part, strings, active, onDecision }) {
4863
5085
  const approval = useComputed2(() => part.approvalSig.value);
5086
+ const state = useComputed2(() => part.stateSig.value);
4864
5087
  const input = useComputed2(() => part.inputSig.value);
5088
+ const output = useComputed2(() => part.outputSig.value);
5089
+ const error = useComputed2(() => part.errorSig.value);
4865
5090
  const reason = useSignal("");
4866
- const decided = approval.value?.approved !== void 0;
4867
- if (decided) {
4868
- const ap = approval.value;
4869
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4870
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4871
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4872
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4873
- ] });
4874
- }
4875
- const args = summarizeInput(input.value);
4876
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4877
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4878
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4879
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
5091
+ const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
5092
+ return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
5093
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
5094
+ /* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
5095
+ decided ? /* @__PURE__ */ jsx15(ToolStatus, { state: state.value, approval: approval.value, strings }) : /* @__PURE__ */ jsx15("span", { class: `${p14}-toolui-badge ${p14}-toolui-badge-accent`, children: strings.approvalRequired })
4880
5096
  ] }),
4881
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4882
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4883
- /* @__PURE__ */ jsx14(
5097
+ /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
5098
+ output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5099
+ error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
5100
+ decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
5101
+ /* @__PURE__ */ jsx15(
4884
5102
  "input",
4885
5103
  {
4886
- class: `${p13}-field-input`,
5104
+ class: `${p14}-field-input`,
4887
5105
  value: reason.value,
4888
5106
  placeholder: strings.approvalReason,
4889
5107
  onInput: (e) => {
@@ -4891,40 +5109,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4891
5109
  }
4892
5110
  }
4893
5111
  ),
4894
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4895
- /* @__PURE__ */ jsx14(
5112
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5113
+ /* @__PURE__ */ jsx15(
4896
5114
  "button",
4897
5115
  {
4898
5116
  type: "button",
4899
- class: `${p13}-tool-reject`,
5117
+ class: `${p14}-form-skip`,
4900
5118
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4901
5119
  "data-testid": TID.toolReject,
4902
5120
  children: strings.reject
4903
5121
  }
4904
5122
  ),
4905
- /* @__PURE__ */ jsx14(
5123
+ /* @__PURE__ */ jsx15(
4906
5124
  "button",
4907
5125
  {
4908
5126
  type: "button",
4909
- class: `${p13}-tool-approve`,
5127
+ class: `${p14}-form-submit`,
4910
5128
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4911
5129
  "data-testid": TID.toolApprove,
4912
5130
  children: strings.approve
4913
5131
  }
4914
5132
  )
4915
5133
  ] })
4916
- ] }) : /* @__PURE__ */ jsx14("p", { class: `${p13}-tool-stale-note`, children: strings.stepNoLongerActive })
5134
+ ] }) : (
5135
+ // eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
5136
+ /* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
5137
+ )
4917
5138
  ] });
4918
5139
  }
4919
- function summarizeInput(input) {
4920
- if (input == null) return "";
4921
- try {
4922
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4923
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4924
- } catch {
4925
- return "";
4926
- }
4927
- }
4928
5140
 
4929
5141
  // src/ui/tool-ask-input.tsx
4930
5142
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -4984,8 +5196,20 @@ function num(v) {
4984
5196
  }
4985
5197
 
4986
5198
  // src/ui/tool-ask-input.tsx
4987
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
4988
- var p14 = BRAND.cssPrefix;
5199
+ import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5200
+ var p15 = BRAND.cssPrefix;
5201
+ function responseTypeLabel(req, s) {
5202
+ switch (req.responseType) {
5203
+ case "single-choice":
5204
+ return s.respSingleChoice;
5205
+ case "multi-choice":
5206
+ return s.respMultiChoice;
5207
+ case "confirmation":
5208
+ return s.respConfirmation;
5209
+ default:
5210
+ return s.respFreeText;
5211
+ }
5212
+ }
4989
5213
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4990
5214
  const state = useComputed3(() => part.stateSig.value);
4991
5215
  const approval = useComputed3(() => part.approvalSig.value);
@@ -4997,71 +5221,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4997
5221
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
4998
5222
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
4999
5223
  };
5224
+ const req = request.value;
5000
5225
  if (decided) {
5001
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5002
- }
5003
- if (!active) {
5004
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5005
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5006
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5007
- ] });
5226
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5008
5227
  }
5009
- const req = request.value;
5010
- const isConfirmation = req.responseType === "confirmation";
5011
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5012
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5013
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5014
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5015
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5016
- /* @__PURE__ */ jsx15(
5228
+ const stale = !active;
5229
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
5230
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5231
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
5232
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
5233
+ ] }),
5234
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5235
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5236
+ stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
5237
+ ] });
5238
+ }
5239
+ function AskBody({
5240
+ req,
5241
+ strings,
5242
+ resolve
5243
+ }) {
5244
+ if (req.responseType === "confirmation") {
5245
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
5246
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
5247
+ /* @__PURE__ */ jsx16(
5017
5248
  "button",
5018
5249
  {
5019
5250
  type: "button",
5020
- class: `${p14}-form-skip`,
5251
+ class: `${p15}-form-skip`,
5021
5252
  onClick: () => resolve(void 0, false),
5022
5253
  "data-testid": TID.toolInputSkip,
5023
5254
  children: strings.reject
5024
5255
  }
5025
5256
  ),
5026
- /* @__PURE__ */ jsx15(
5257
+ /* @__PURE__ */ jsx16(
5027
5258
  "button",
5028
5259
  {
5029
5260
  type: "button",
5030
- class: `${p14}-form-submit`,
5261
+ class: `${p15}-form-submit`,
5031
5262
  onClick: () => resolve(void 0, true),
5032
5263
  "data-testid": TID.toolInputSubmit,
5033
5264
  children: strings.approve
5034
5265
  }
5035
5266
  )
5036
- ] }) : /* @__PURE__ */ jsx15(
5037
- DynamicForm,
5038
- {
5039
- fields: askInputToFields(req),
5040
- strings,
5041
- submitLabel: strings.inputSubmit,
5042
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5043
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5044
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5045
- submitTestId: TID.toolInputSubmit,
5046
- skipTestId: TID.toolInputSkip
5047
- }
5048
- )
5049
- ] });
5267
+ ] });
5268
+ }
5269
+ const fields = askInputToFields(req).map((f) => {
5270
+ f.label = strings.inputYourAnswer;
5271
+ return f;
5272
+ });
5273
+ return /* @__PURE__ */ jsx16(
5274
+ DynamicForm,
5275
+ {
5276
+ fields,
5277
+ strings,
5278
+ submitLabel: strings.inputSubmit,
5279
+ footerHint: strings.inputSubmitHint,
5280
+ onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5281
+ skipLabel: req.required === false ? strings.inputSkip : void 0,
5282
+ onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5283
+ submitTestId: TID.toolInputSubmit,
5284
+ skipTestId: TID.toolInputSkip
5285
+ }
5286
+ );
5050
5287
  }
5051
- function Header({ strings, title }) {
5052
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5053
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5054
- title ? /* @__PURE__ */ jsx15("strong", { class: `${p14}-tool-title`, children: title }) : null
5288
+ function Section({ label, text }) {
5289
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
5290
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
5291
+ /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
5055
5292
  ] });
5056
5293
  }
5057
- function DecidedSummary({ part, strings }) {
5294
+ function DecidedCard({
5295
+ part,
5296
+ strings,
5297
+ req
5298
+ }) {
5058
5299
  const output = useComputed3(() => part.outputSig.value);
5059
5300
  const approval = useComputed3(() => part.approvalSig.value);
5060
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5061
5301
  const skipped = approval.value?.approved === false;
5062
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5063
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5064
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-value`, children: skipped ? "" : answer || strings.inputSubmitted })
5302
+ const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5303
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
5304
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5305
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
5306
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
5307
+ ] }),
5308
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5309
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5310
+ !skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
5065
5311
  ] });
5066
5312
  }
5067
5313
  function summarizeOutput(output) {
@@ -5070,6 +5316,7 @@ function summarizeOutput(output) {
5070
5316
  if (typeof output === "object") {
5071
5317
  const rec = output;
5072
5318
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5319
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5073
5320
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5074
5321
  }
5075
5322
  return String(output);
@@ -5077,52 +5324,30 @@ function summarizeOutput(output) {
5077
5324
 
5078
5325
  // src/ui/tool-call.tsx
5079
5326
  import { useComputed as useComputed4 } from "@preact/signals";
5080
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5081
- var p15 = BRAND.cssPrefix;
5082
- function displayToolName2(toolName) {
5083
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5084
- }
5327
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5328
+ var p16 = BRAND.cssPrefix;
5085
5329
  function ToolCall({ part, strings }) {
5086
- const details = useComputed4(() => pretty(part.inputSig.value));
5087
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5088
- const isError = useComputed4(() => !!part.errorSig.value);
5089
- if (!details.value && !result.value) return null;
5090
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5091
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5092
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5093
- /* @__PURE__ */ jsx16("strong", { class: `${p15}-tool-title`, children: displayToolName2(part.toolName) })
5330
+ const input = useComputed4(() => part.inputSig.value);
5331
+ const output = useComputed4(() => part.outputSig.value);
5332
+ const error = useComputed4(() => part.errorSig.value);
5333
+ const state = useComputed4(() => part.stateSig.value);
5334
+ const approval = useComputed4(() => part.approvalSig.value);
5335
+ const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
5336
+ if (!hasDetails.value) return null;
5337
+ return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
5338
+ /* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
5339
+ /* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
5340
+ /* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
5094
5341
  ] }),
5095
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5096
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5097
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5098
- ] }) : null,
5099
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5100
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5101
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5102
- ] }) : null
5342
+ /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
5343
+ output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5344
+ error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
5103
5345
  ] });
5104
5346
  }
5105
- function unwrapResult(output) {
5106
- if (output && typeof output === "object") {
5107
- const rec = output;
5108
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5109
- }
5110
- return output;
5111
- }
5112
- function pretty(value) {
5113
- if (value == null) return "";
5114
- try {
5115
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5116
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5117
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5118
- } catch {
5119
- return "";
5120
- }
5121
- }
5122
5347
 
5123
5348
  // src/ui/message-bubble.tsx
5124
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5125
- var p16 = BRAND.cssPrefix;
5349
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5350
+ var p17 = BRAND.cssPrefix;
5126
5351
  function MessageBubble({
5127
5352
  message,
5128
5353
  strings,
@@ -5146,9 +5371,9 @@ function MessageBubble({
5146
5371
  const working = streaming && !hasAnswerText.value;
5147
5372
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5148
5373
  const stamp = formatStamp(message.createdAt);
5149
- return /* @__PURE__ */ jsx17("div", { class: `${p16}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble-col`, children: [
5150
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5151
- bufferedHold ? /* @__PURE__ */ jsx17(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx17(
5374
+ return /* @__PURE__ */ jsx18("div", { class: `${p17}-bubble-row`, "data-role": message.role, "data-testid": tid(TID.messageBubble, message.id), children: /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble-col`, children: [
5375
+ /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
5376
+ bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
5152
5377
  PartView,
5153
5378
  {
5154
5379
  part,
@@ -5162,10 +5387,10 @@ function MessageBubble({
5162
5387
  },
5163
5388
  partKey(part)
5164
5389
  )),
5165
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5166
- message.status === "error" && message.errorText ? /* @__PURE__ */ jsx17("div", { class: `${p16}-error`, role: "alert", children: /* @__PURE__ */ jsx17("span", { children: message.errorText }) }) : null
5390
+ showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
5391
+ message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
5167
5392
  ] }),
5168
- stamp ? /* @__PURE__ */ jsx17("time", { class: `${p16}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5393
+ stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5169
5394
  ] }) });
5170
5395
  }
5171
5396
  function formatStamp(createdAt) {
@@ -5195,11 +5420,11 @@ function PartView({
5195
5420
  case "step-start":
5196
5421
  return null;
5197
5422
  case "text":
5198
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5423
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5199
5424
  case "reasoning":
5200
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5425
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5201
5426
  case "tool":
5202
- return /* @__PURE__ */ jsx17(
5427
+ return /* @__PURE__ */ jsx18(
5203
5428
  ToolPartView,
5204
5429
  {
5205
5430
  part,
@@ -5211,11 +5436,11 @@ function PartView({
5211
5436
  );
5212
5437
  case "file":
5213
5438
  if (part.mediaType.startsWith("image/")) {
5214
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5439
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5215
5440
  }
5216
- return /* @__PURE__ */ jsx17("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5441
+ return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5217
5442
  case "source":
5218
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5443
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5219
5444
  }
5220
5445
  }
5221
5446
  function ToolPartView({
@@ -5228,7 +5453,7 @@ function ToolPartView({
5228
5453
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5229
5454
  if (tool?.humanInLoop) {
5230
5455
  if (isAskUserInputTool(part.toolName)) {
5231
- return /* @__PURE__ */ jsx17(
5456
+ return /* @__PURE__ */ jsx18(
5232
5457
  ToolAskInput,
5233
5458
  {
5234
5459
  part,
@@ -5240,19 +5465,19 @@ function ToolPartView({
5240
5465
  );
5241
5466
  }
5242
5467
  if (hasApproval.value) {
5243
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5468
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5244
5469
  }
5245
5470
  }
5246
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5471
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5247
5472
  }
5248
5473
  function ReasoningView({
5249
5474
  part,
5250
5475
  active,
5251
5476
  strings
5252
5477
  }) {
5253
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5254
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5255
- /* @__PURE__ */ jsx17("div", { class: `${p16}-reasoning-body`, children: /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5478
+ return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5479
+ /* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5480
+ /* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5256
5481
  ] });
5257
5482
  }
5258
5483
  function partKey(part) {
@@ -5270,22 +5495,22 @@ function partKey(part) {
5270
5495
  }
5271
5496
  }
5272
5497
  function TypingDots() {
5273
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5274
- /* @__PURE__ */ jsx17("span", {}),
5275
- /* @__PURE__ */ jsx17("span", {}),
5276
- /* @__PURE__ */ jsx17("span", {})
5498
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
5499
+ /* @__PURE__ */ jsx18("span", {}),
5500
+ /* @__PURE__ */ jsx18("span", {}),
5501
+ /* @__PURE__ */ jsx18("span", {})
5277
5502
  ] });
5278
5503
  }
5279
5504
  function LoadingSpinner({ label }) {
5280
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5281
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5282
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-label`, children: label })
5505
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
5506
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
5507
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
5283
5508
  ] });
5284
5509
  }
5285
5510
 
5286
5511
  // src/ui/message-list.tsx
5287
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5288
- var p17 = BRAND.cssPrefix;
5512
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5513
+ var p18 = BRAND.cssPrefix;
5289
5514
  var STICK_THRESHOLD = 120;
5290
5515
  var INTERACTION_GRACE_MS = 350;
5291
5516
  var DIVIDER_IDLE_MS = 1200;
@@ -5456,7 +5681,7 @@ function MessageList({
5456
5681
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5457
5682
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5458
5683
  );
5459
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5684
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5460
5685
  FormDoneMarker,
5461
5686
  {
5462
5687
  marker,
@@ -5477,12 +5702,12 @@ function MessageList({
5477
5702
  const day = dayKey(m.createdAt);
5478
5703
  if (day && day !== prevDay) {
5479
5704
  rows.push(
5480
- /* @__PURE__ */ jsx18("div", { class: `${p17}-date-divider`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-date-pill`, title: fullDate(m.createdAt), children: dayLabel(m.createdAt, strings) }) }, `day:${day}`)
5705
+ /* @__PURE__ */ jsx19("div", { class: `${p18}-date-divider`, children: /* @__PURE__ */ jsx19("span", { class: `${p18}-date-pill`, title: fullDate(m.createdAt), children: dayLabel(m.createdAt, strings) }) }, `day:${day}`)
5481
5706
  );
5482
5707
  prevDay = day;
5483
5708
  }
5484
5709
  rows.push(
5485
- /* @__PURE__ */ jsx18(
5710
+ /* @__PURE__ */ jsx19(
5486
5711
  MessageBubble,
5487
5712
  {
5488
5713
  message: m,
@@ -5501,33 +5726,33 @@ function MessageList({
5501
5726
  for (const marker of pendingMarkers) {
5502
5727
  rows.push(markerRow(marker));
5503
5728
  }
5504
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5505
- /* @__PURE__ */ jsxs15(
5729
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5730
+ /* @__PURE__ */ jsxs16(
5506
5731
  "div",
5507
5732
  {
5508
5733
  ref,
5509
- class: `${p17}-list`,
5734
+ class: `${p18}-list`,
5510
5735
  role: "log",
5511
5736
  "aria-live": "polite",
5512
5737
  "aria-relevant": "additions text",
5513
5738
  "data-scrolling": scrolling ? "true" : void 0,
5514
5739
  children: [
5515
- loading && messages.value.length === 0 ? /* @__PURE__ */ jsx18("div", { class: `${p17}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5740
+ loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5516
5741
  rows,
5517
- form ? /* @__PURE__ */ jsx18(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5742
+ form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5518
5743
  ]
5519
5744
  }
5520
5745
  ),
5521
- showJump ? /* @__PURE__ */ jsx18(
5746
+ showJump ? /* @__PURE__ */ jsx19(
5522
5747
  "button",
5523
5748
  {
5524
5749
  type: "button",
5525
- class: `${p17}-jump`,
5750
+ class: `${p18}-jump`,
5526
5751
  onClick: jumpToBottom,
5527
5752
  "aria-label": strings.scrollToBottom,
5528
5753
  title: strings.scrollToBottom,
5529
5754
  "data-testid": TID.scrollToBottom,
5530
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5755
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5531
5756
  }
5532
5757
  ) : null
5533
5758
  ] });
@@ -5586,7 +5811,7 @@ function startOfDay(ms) {
5586
5811
  }
5587
5812
 
5588
5813
  // src/ui/conversation-list.tsx
5589
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5814
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
5590
5815
  var log11 = logger.scope("history");
5591
5816
  var DEFAULT_SKELETON_ROWS = 3;
5592
5817
  var MAX_SKELETON_ROWS = 6;
@@ -5613,7 +5838,7 @@ function ConversationList({
5613
5838
  onSelect,
5614
5839
  onNewConversation
5615
5840
  }) {
5616
- const p35 = BRAND.cssPrefix;
5841
+ const p36 = BRAND.cssPrefix;
5617
5842
  const seed = transport.peekConversations({ visitorId });
5618
5843
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5619
5844
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5634,32 +5859,32 @@ function ConversationList({
5634
5859
  cancelled = true;
5635
5860
  };
5636
5861
  }, [transport, visitorId, persistence]);
5637
- const newChatButton = onNewConversation ? /* @__PURE__ */ jsx19("div", { class: `${p35}-history-footer`, children: /* @__PURE__ */ jsxs16(
5862
+ const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
5638
5863
  "button",
5639
5864
  {
5640
5865
  type: "button",
5641
- class: `${p35}-history-new`,
5866
+ class: `${p36}-history-new`,
5642
5867
  onClick: onNewConversation,
5643
5868
  "data-testid": TID.sidebarNewConversation,
5644
5869
  children: [
5645
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5870
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5646
5871
  strings.newConversation
5647
5872
  ]
5648
5873
  }
5649
5874
  ) }) : null;
5650
5875
  if (state === "loading") {
5651
5876
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5652
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5653
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, "aria-busy": "true", "aria-label": strings.historyLoading, children: /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, "aria-hidden": "true", children: [
5654
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5655
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-item ${p35}-history-item-skeleton`, children: [
5656
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5657
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5658
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5659
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5660
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-time` }) })
5877
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5878
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, "aria-busy": "true", "aria-label": strings.historyLoading, children: /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, "aria-hidden": "true", children: [
5879
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
5880
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: Array.from({ length: Math.max(1, rows) }, (_, i) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-item ${p36}-history-item-skeleton`, children: [
5881
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
5882
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5883
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5884
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
5885
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
5661
5886
  ] }),
5662
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-row`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-preview` }) }) })
5887
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-row`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-preview` }) }) })
5663
5888
  ] })
5664
5889
  ] }, i)) })
5665
5890
  ] }) }),
@@ -5667,36 +5892,36 @@ function ConversationList({
5667
5892
  ] });
5668
5893
  }
5669
5894
  if (state === "error" || conversations.length === 0) {
5670
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5671
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-empty`, children: strings.historyEmpty }),
5895
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5896
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
5672
5897
  newChatButton
5673
5898
  ] });
5674
5899
  }
5675
5900
  const now = Date.now();
5676
5901
  const groups = groupByBucket(now, conversations);
5677
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5678
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5679
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5680
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs16(
5902
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5903
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
5904
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5905
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
5681
5906
  "button",
5682
5907
  {
5683
5908
  type: "button",
5684
5909
  role: "listitem",
5685
- class: `${p35}-history-item`,
5910
+ class: `${p36}-history-item`,
5686
5911
  onClick: () => onSelect(chat),
5687
5912
  "data-closed": chat.canContinue ? void 0 : "true",
5688
5913
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5689
5914
  "data-testid": tid(TID.historyItem, chat.conversationId),
5690
5915
  children: [
5691
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5692
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5693
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5694
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5695
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5916
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
5917
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5918
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5919
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
5920
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5696
5921
  ] }),
5697
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5698
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5699
- (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx19("span", { class: `${p35}-history-dot` }) : null
5922
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5923
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5924
+ (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
5700
5925
  ] })
5701
5926
  ] })
5702
5927
  ]
@@ -5709,15 +5934,15 @@ function ConversationList({
5709
5934
  }
5710
5935
 
5711
5936
  // src/ui/suggestions.tsx
5712
- import { jsx as jsx20 } from "preact/jsx-runtime";
5713
- var p18 = BRAND.cssPrefix;
5937
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5938
+ var p19 = BRAND.cssPrefix;
5714
5939
  function Suggestions({ suggestions, onPick }) {
5715
5940
  if (suggestions.length === 0) return null;
5716
- return /* @__PURE__ */ jsx20("div", { class: `${p18}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx20(
5941
+ return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
5717
5942
  "button",
5718
5943
  {
5719
5944
  type: "button",
5720
- class: `${p18}-suggestion`,
5945
+ class: `${p19}-suggestion`,
5721
5946
  onClick: () => onPick(s),
5722
5947
  "data-testid": tid(TID.suggestion, i),
5723
5948
  children: s.label
@@ -5727,8 +5952,8 @@ function Suggestions({ suggestions, onPick }) {
5727
5952
  }
5728
5953
 
5729
5954
  // src/ui/panel.tsx
5730
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5731
- var p19 = BRAND.cssPrefix;
5955
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5956
+ var p20 = BRAND.cssPrefix;
5732
5957
  function Panel(props2) {
5733
5958
  const { options, onClose } = props2;
5734
5959
  const s = options.strings;
@@ -5752,18 +5977,18 @@ function Panel(props2) {
5752
5977
  }, []);
5753
5978
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5754
5979
  useDragMove(containerRef.current, options.mode === "modal");
5755
- return /* @__PURE__ */ jsxs17(
5980
+ return /* @__PURE__ */ jsxs18(
5756
5981
  "div",
5757
5982
  {
5758
5983
  ref: containerRef,
5759
- class: `${p19}-panel`,
5984
+ class: `${p20}-panel`,
5760
5985
  role: "dialog",
5761
5986
  "aria-modal": "false",
5762
5987
  "aria-label": s.panelTitle,
5763
5988
  style: { position: "relative" },
5764
5989
  "data-testid": TID.panel,
5765
5990
  children: [
5766
- /* @__PURE__ */ jsx21(
5991
+ /* @__PURE__ */ jsx22(
5767
5992
  PanelContent,
5768
5993
  {
5769
5994
  ...props2,
@@ -5772,7 +5997,7 @@ function Panel(props2) {
5772
5997
  composerAttachApiRef
5773
5998
  }
5774
5999
  ),
5775
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6000
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5776
6001
  ]
5777
6002
  }
5778
6003
  );
@@ -5819,9 +6044,9 @@ function PanelContent(props2) {
5819
6044
  if (activeForm) {
5820
6045
  composerArea = null;
5821
6046
  } else if (canSend) {
5822
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5823
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5824
- /* @__PURE__ */ jsx21(
6047
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6048
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6049
+ /* @__PURE__ */ jsx22(
5825
6050
  Composer,
5826
6051
  {
5827
6052
  options,
@@ -5836,10 +6061,10 @@ function PanelContent(props2) {
5836
6061
  )
5837
6062
  ] });
5838
6063
  } else {
5839
- composerArea = /* @__PURE__ */ jsx21(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
6064
+ composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
5840
6065
  }
5841
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5842
- view === "history" ? /* @__PURE__ */ jsx21(
6066
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6067
+ view === "history" ? /* @__PURE__ */ jsx22(
5843
6068
  HistoryHeader,
5844
6069
  {
5845
6070
  strings: s,
@@ -5847,22 +6072,22 @@ function PanelContent(props2) {
5847
6072
  onClose,
5848
6073
  showClose: canShowClose(options.mode, panelSize, options.actions)
5849
6074
  }
5850
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5851
- onBack ? /* @__PURE__ */ jsx21(
6075
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6076
+ onBack ? /* @__PURE__ */ jsx22(
5852
6077
  "button",
5853
6078
  {
5854
6079
  type: "button",
5855
- class: `${p19}-icon-btn`,
6080
+ class: `${p20}-icon-btn`,
5856
6081
  onClick: onBack,
5857
6082
  "aria-label": s.moduleBack,
5858
6083
  title: s.moduleBack,
5859
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6084
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5860
6085
  }
5861
6086
  ) : null,
5862
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5863
- /* @__PURE__ */ jsx21(HeaderActions, { panelProps: props2, variant: "chat" })
6087
+ agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
6088
+ /* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
5864
6089
  ] }),
5865
- view === "history" ? /* @__PURE__ */ jsx21(
6090
+ view === "history" ? /* @__PURE__ */ jsx22(
5866
6091
  ConversationList,
5867
6092
  {
5868
6093
  transport,
@@ -5873,9 +6098,9 @@ function PanelContent(props2) {
5873
6098
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5874
6099
  onNewConversation
5875
6100
  }
5876
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5877
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5878
- /* @__PURE__ */ jsx21(
6101
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6102
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6103
+ /* @__PURE__ */ jsx22(
5879
6104
  MessageList,
5880
6105
  {
5881
6106
  messagesSig,
@@ -5893,9 +6118,9 @@ function PanelContent(props2) {
5893
6118
  }
5894
6119
  ),
5895
6120
  composerArea,
5896
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6121
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5897
6122
  ] }),
5898
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6123
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5899
6124
  ResizeGrip,
5900
6125
  {
5901
6126
  panelEl: containerEl,
@@ -5914,28 +6139,28 @@ function HistoryHeader({
5914
6139
  onClose,
5915
6140
  showClose
5916
6141
  }) {
5917
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5918
- /* @__PURE__ */ jsx21(
6142
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6143
+ /* @__PURE__ */ jsx22(
5919
6144
  "button",
5920
6145
  {
5921
6146
  type: "button",
5922
- class: `${p19}-icon-btn`,
6147
+ class: `${p20}-icon-btn`,
5923
6148
  onClick: onBack,
5924
6149
  "aria-label": strings.historyBack,
5925
6150
  title: strings.historyBack,
5926
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6151
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5927
6152
  }
5928
6153
  ),
5929
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5930
- showClose ? /* @__PURE__ */ jsx21(
6154
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6155
+ showClose ? /* @__PURE__ */ jsx22(
5931
6156
  "button",
5932
6157
  {
5933
6158
  type: "button",
5934
- class: `${p19}-icon-btn`,
6159
+ class: `${p20}-icon-btn`,
5935
6160
  onClick: onClose,
5936
6161
  "aria-label": strings.close,
5937
6162
  title: strings.close,
5938
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6163
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5939
6164
  }
5940
6165
  ) : null
5941
6166
  ] });
@@ -5945,28 +6170,28 @@ function ReadOnlyBanner({
5945
6170
  ctaLabel,
5946
6171
  onNewConversation
5947
6172
  }) {
5948
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5949
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5950
- /* @__PURE__ */ jsx21("button", { type: "button", class: `${p19}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
6173
+ return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
6174
+ /* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
6175
+ /* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
5951
6176
  ] });
5952
6177
  }
5953
6178
  function ComposerFooter({ disclaimer }) {
5954
6179
  if (!disclaimer) return null;
5955
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-composer-footer`, children: /* @__PURE__ */ jsx21("div", { class: `${p19}-disclaimer`, children: disclaimer }) });
6180
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
5956
6181
  }
5957
6182
  function PoweredByBar({ poweredBy }) {
5958
6183
  if (!poweredBy) return null;
5959
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-poweredby-bar`, children: /* @__PURE__ */ jsx21(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6184
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
5960
6185
  }
5961
6186
  function PoweredBy({ logoUrl, text, href }) {
5962
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5963
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
5964
- text ? /* @__PURE__ */ jsx21("span", { children: text }) : null
6187
+ const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6188
+ logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6189
+ text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
5965
6190
  ] });
5966
6191
  if (href) {
5967
- return /* @__PURE__ */ jsx21("a", { class: `${p19}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6192
+ return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
5968
6193
  }
5969
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6194
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
5970
6195
  }
5971
6196
 
5972
6197
  // src/ui/form/form-controller.ts
@@ -6049,34 +6274,34 @@ function whenPasses(form, d) {
6049
6274
  }
6050
6275
 
6051
6276
  // src/ui/sidebar.tsx
6052
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
6277
+ import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6053
6278
  function Sidebar(props2) {
6054
- const p35 = BRAND.cssPrefix;
6279
+ const p36 = BRAND.cssPrefix;
6055
6280
  const { site, blocks, strings, collapsed } = props2;
6056
6281
  const navigation = blocks?.navigation ?? [];
6057
6282
  const linkCards = blocks?.linkCards ?? [];
6058
6283
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6059
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6060
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6061
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6062
- /* @__PURE__ */ jsx22(
6284
+ return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6285
+ /* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
6286
+ /* @__PURE__ */ jsx23(SidebarBrand, { site }),
6287
+ /* @__PURE__ */ jsx23(
6063
6288
  "button",
6064
6289
  {
6065
6290
  type: "button",
6066
- class: `${p35}-sidebar-toggle`,
6291
+ class: `${p36}-sidebar-toggle`,
6067
6292
  "aria-label": toggleLabel,
6068
6293
  "aria-expanded": collapsed ? "false" : "true",
6069
6294
  title: toggleLabel,
6070
6295
  onClick: props2.onToggleCollapsed,
6071
6296
  "data-testid": TID.sidebarToggle,
6072
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6297
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6073
6298
  }
6074
6299
  )
6075
6300
  ] }),
6076
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6077
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6078
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6079
- props2.showConversations ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-conversations`, children: /* @__PURE__ */ jsx22(
6301
+ collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
6302
+ navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
6303
+ linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
6304
+ props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
6080
6305
  ConversationList,
6081
6306
  {
6082
6307
  transport: props2.transport,
@@ -6092,18 +6317,18 @@ function Sidebar(props2) {
6092
6317
  ] });
6093
6318
  }
6094
6319
  function SidebarBrand({ site }) {
6095
- const p35 = BRAND.cssPrefix;
6320
+ const p36 = BRAND.cssPrefix;
6096
6321
  if (site?.logo?.url) {
6097
6322
  const alt = site.logo.alt ?? site.title ?? "Logo";
6098
- return /* @__PURE__ */ jsxs18("picture", { children: [
6099
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6100
- /* @__PURE__ */ jsx22("img", { class: `${p35}-sidebar-logo`, src: site.logo.url, alt })
6323
+ return /* @__PURE__ */ jsxs19("picture", { children: [
6324
+ site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6325
+ /* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
6101
6326
  ] });
6102
6327
  }
6103
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-title`, children: site?.title ?? BRAND.name });
6328
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
6104
6329
  }
6105
6330
  function SidebarToggleIcon({ collapsed }) {
6106
- return /* @__PURE__ */ jsx22(
6331
+ return /* @__PURE__ */ jsx23(
6107
6332
  "svg",
6108
6333
  {
6109
6334
  width: "16",
@@ -6113,38 +6338,38 @@ function SidebarToggleIcon({ collapsed }) {
6113
6338
  stroke: "currentColor",
6114
6339
  "stroke-width": "2",
6115
6340
  "aria-hidden": "true",
6116
- children: collapsed ? /* @__PURE__ */ jsx22("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx22("polyline", { points: "15 6 9 12 15 18" })
6341
+ children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
6117
6342
  }
6118
6343
  );
6119
6344
  }
6120
6345
  function SidebarNav({ items }) {
6121
- const p35 = BRAND.cssPrefix;
6122
- return /* @__PURE__ */ jsx22("ul", { class: `${p35}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs18(
6346
+ const p36 = BRAND.cssPrefix;
6347
+ return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
6123
6348
  "a",
6124
6349
  {
6125
- class: `${p35}-sidebar-nav-item`,
6350
+ class: `${p36}-sidebar-nav-item`,
6126
6351
  href: item.href,
6127
6352
  target: item.href ? "_blank" : void 0,
6128
6353
  rel: item.href ? "noreferrer" : void 0,
6129
6354
  children: [
6130
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6131
- /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-label`, children: item.label })
6355
+ item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6356
+ /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
6132
6357
  ]
6133
6358
  }
6134
6359
  ) }, item.id ?? item.label)) });
6135
6360
  }
6136
6361
  function SidebarCards({ items }) {
6137
- const p35 = BRAND.cssPrefix;
6138
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs18(
6362
+ const p36 = BRAND.cssPrefix;
6363
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
6139
6364
  "a",
6140
6365
  {
6141
- class: `${p35}-sidebar-card`,
6366
+ class: `${p36}-sidebar-card`,
6142
6367
  href: item.href,
6143
6368
  target: item.href ? "_blank" : void 0,
6144
6369
  rel: item.href ? "noreferrer" : void 0,
6145
6370
  children: [
6146
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6147
- item.description ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-desc`, children: item.description }) : null
6371
+ /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
6372
+ item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
6148
6373
  ]
6149
6374
  },
6150
6375
  item.id ?? item.label
@@ -6152,11 +6377,11 @@ function SidebarCards({ items }) {
6152
6377
  }
6153
6378
 
6154
6379
  // src/ui/page-shell.tsx
6155
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6156
- var p20 = BRAND.cssPrefix;
6380
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6381
+ var p21 = BRAND.cssPrefix;
6157
6382
  function PageShell(props2) {
6158
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6159
- /* @__PURE__ */ jsx23(
6383
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6384
+ /* @__PURE__ */ jsx24(
6160
6385
  Sidebar,
6161
6386
  {
6162
6387
  site: props2.site,
@@ -6173,7 +6398,7 @@ function PageShell(props2) {
6173
6398
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6174
6399
  }
6175
6400
  ),
6176
- /* @__PURE__ */ jsx23("section", { class: `${p20}-page-chat`, "aria-label": "Chat", children: props2.children })
6401
+ /* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
6177
6402
  ] });
6178
6403
  }
6179
6404
 
@@ -6223,80 +6448,80 @@ var chatLayout = {
6223
6448
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6224
6449
 
6225
6450
  // src/ui/back-header.tsx
6226
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6227
- var p21 = BRAND.cssPrefix;
6451
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6452
+ var p22 = BRAND.cssPrefix;
6228
6453
  function TitleBar({ title, actions }) {
6229
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6230
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6231
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6232
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6454
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
6455
+ /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
6456
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6457
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6233
6458
  ] });
6234
6459
  }
6235
6460
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6236
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6237
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6238
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6239
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6461
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
6462
+ /* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
6463
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6464
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6240
6465
  ] });
6241
6466
  }
6242
6467
 
6243
6468
  // src/ui/home-search.tsx
6244
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6245
- var p22 = BRAND.cssPrefix;
6469
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6470
+ var p23 = BRAND.cssPrefix;
6246
6471
  function HomeSearchButton({ placeholder, onActivate }) {
6247
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6248
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6249
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6472
+ return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6473
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
6474
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6250
6475
  ] });
6251
6476
  }
6252
6477
  function HelpSearchInput({ placeholder, value, onInput }) {
6253
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6254
- /* @__PURE__ */ jsx25(
6478
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6479
+ /* @__PURE__ */ jsx26(
6255
6480
  "input",
6256
6481
  {
6257
6482
  type: "search",
6258
- class: `${p22}-home-search-input`,
6483
+ class: `${p23}-home-search-input`,
6259
6484
  placeholder,
6260
6485
  value,
6261
6486
  onInput: (e) => onInput(e.currentTarget.value),
6262
6487
  "data-testid": TID.helpSearch
6263
6488
  }
6264
6489
  ),
6265
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6490
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6266
6491
  ] });
6267
6492
  }
6268
6493
 
6269
6494
  // src/ui/list-row.tsx
6270
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6271
- var p23 = BRAND.cssPrefix;
6495
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6496
+ var p24 = BRAND.cssPrefix;
6272
6497
  function ListRow({ title, subtitle, onClick, testid }) {
6273
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6274
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6275
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6276
- subtitle ? /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-sub`, children: subtitle }) : null
6498
+ return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
6499
+ /* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
6500
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
6501
+ subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
6277
6502
  ] }),
6278
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(ChevronRightIcon, {}) })
6503
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
6279
6504
  ] });
6280
6505
  }
6281
6506
 
6282
6507
  // src/ui/module-state.tsx
6283
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6284
- var p24 = BRAND.cssPrefix;
6508
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6509
+ var p25 = BRAND.cssPrefix;
6285
6510
  function ModuleState({
6286
6511
  tone = "info",
6287
6512
  message,
6288
6513
  onRetry,
6289
6514
  strings
6290
6515
  }) {
6291
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6292
- /* @__PURE__ */ jsx27("span", { children: message }),
6293
- onRetry ? /* @__PURE__ */ jsx27("button", { type: "button", class: `${p24}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6516
+ return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6517
+ /* @__PURE__ */ jsx28("span", { children: message }),
6518
+ onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6294
6519
  ] });
6295
6520
  }
6296
6521
 
6297
6522
  // src/ui/modules/help.tsx
6298
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6299
- var p25 = BRAND.cssPrefix;
6523
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6524
+ var p26 = BRAND.cssPrefix;
6300
6525
  var log12 = logger.scope("help");
6301
6526
  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 });
6302
6527
  function groupByCategory(items) {
@@ -6325,7 +6550,7 @@ function fuzzySearch(items, query) {
6325
6550
  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);
6326
6551
  }
6327
6552
  function ArticleRow({ article, nav }) {
6328
- return /* @__PURE__ */ jsx28(
6553
+ return /* @__PURE__ */ jsx29(
6329
6554
  ListRow,
6330
6555
  {
6331
6556
  title: article.title,
@@ -6370,46 +6595,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6370
6595
  }, [query, results, bus]);
6371
6596
  function renderBody() {
6372
6597
  if (query.trim().length > 0) {
6373
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6374
- return /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) });
6598
+ if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
6599
+ return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
6375
6600
  }
6376
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6601
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6377
6602
  if (state === "error") {
6378
- return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6603
+ return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6379
6604
  }
6380
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6381
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6382
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6383
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) })
6605
+ if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
6606
+ return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
6607
+ category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
6608
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
6384
6609
  ] }, category));
6385
6610
  }
6386
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6387
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6388
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6389
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-list`, children: renderBody() })
6611
+ return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
6612
+ /* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
6613
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6614
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
6390
6615
  ] });
6391
6616
  }
6392
6617
  var helpLayout = {
6393
6618
  Icon: HelpIcon,
6394
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6619
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6395
6620
  };
6396
6621
 
6397
6622
  // src/ui/modules/home.tsx
6398
6623
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6399
6624
 
6400
6625
  // src/ui/home-card.tsx
6401
- import { jsx as jsx29 } from "preact/jsx-runtime";
6402
- var p26 = BRAND.cssPrefix;
6626
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6627
+ var p27 = BRAND.cssPrefix;
6403
6628
  function HomeCard({ onClick, children, testid }) {
6404
6629
  if (onClick) {
6405
- return /* @__PURE__ */ jsx29("button", { type: "button", class: `${p26}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6630
+ return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6406
6631
  }
6407
- return /* @__PURE__ */ jsx29("div", { class: `${p26}-home-card`, "data-testid": testid, children });
6632
+ return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
6408
6633
  }
6409
6634
 
6410
6635
  // src/ui/modules/home.tsx
6411
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6412
- var p27 = BRAND.cssPrefix;
6636
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6637
+ var p28 = BRAND.cssPrefix;
6413
6638
  var log13 = logger.scope("home");
6414
6639
  function resolveGreeting(props2) {
6415
6640
  const name = props2.options.userContext?.name;
@@ -6452,49 +6677,49 @@ function HomeRoot(props2) {
6452
6677
  const status = config.status;
6453
6678
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6454
6679
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6455
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6456
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6457
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6458
- config.brandName ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx30("span", { class: `${p27}-home-brand-spacer`, "aria-hidden": "true" }),
6459
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6460
- avatars.length > 0 ? /* @__PURE__ */ jsx30("div", { class: `${p27}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx30("span", { class: `${p27}-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,
6461
- /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" })
6680
+ return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
6681
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
6682
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
6683
+ config.brandName ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand`, "data-testid": TID.homeBrand, children: config.brandName }) : /* @__PURE__ */ jsx31("span", { class: `${p28}-home-brand-spacer`, "aria-hidden": "true" }),
6684
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
6685
+ avatars.length > 0 ? /* @__PURE__ */ jsx31("div", { class: `${p28}-home-avatars`, children: avatars.map((a) => /* @__PURE__ */ jsx31("span", { class: `${p28}-home-avatar`, title: a.role ? `${a.name} \xB7 ${a.role}` : a.name, children: a.avatar ? /* @__PURE__ */ jsx31("img", { src: a.avatar, alt: "", loading: "lazy" }) : /* @__PURE__ */ jsx31("span", { children: initials(a.name) }) }, a.name)) }) : null,
6686
+ /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
6462
6687
  ] })
6463
6688
  ] }),
6464
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6465
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6466
- greeting.subtitle ? /* @__PURE__ */ jsx30("p", { class: `${p27}-home-lead`, children: greeting.subtitle }) : null
6689
+ config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
6690
+ /* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6691
+ greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
6467
6692
  ] }) : null
6468
6693
  ] }),
6469
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6470
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6694
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6695
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6471
6696
  HomeSearchButton,
6472
6697
  {
6473
6698
  placeholder: strings.homeSearchPlaceholder,
6474
6699
  onActivate: () => nav.switchToLayout("help")
6475
6700
  }
6476
6701
  ) : null,
6477
- recent ? /* @__PURE__ */ jsx30(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
6478
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6479
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6480
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6481
- recent.preview ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-preview`, children: recent.preview }) : null
6702
+ recent ? /* @__PURE__ */ jsx31(HomeCard, { onClick: () => nav.selectConversation(recent.conversationId), testid: TID.homeRecent, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-recent-row`, "data-unread": (recent.unreadCount ?? 0) > 0 ? "true" : void 0, children: [
6703
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
6704
+ /* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
6705
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
6706
+ recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
6482
6707
  ] }),
6483
- (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-dot`, "aria-label": "Unread" }) : null
6708
+ (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
6484
6709
  ] }) }) : null,
6485
- status ? /* @__PURE__ */ jsx30(
6710
+ status ? /* @__PURE__ */ jsx31(
6486
6711
  HomeCard,
6487
6712
  {
6488
6713
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6489
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6490
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6491
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-text`, children: statusText })
6714
+ children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
6715
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
6716
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
6492
6717
  ] })
6493
6718
  }
6494
6719
  ) : null,
6495
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6496
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6497
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx30(
6720
+ content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
6721
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
6722
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
6498
6723
  ListRow,
6499
6724
  {
6500
6725
  title: item.title,
@@ -6510,13 +6735,13 @@ function HomeRoot(props2) {
6510
6735
  }
6511
6736
  var homeLayout = {
6512
6737
  Icon: HomeIcon,
6513
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6738
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6514
6739
  };
6515
6740
 
6516
6741
  // src/ui/modules/news.tsx
6517
6742
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6518
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6519
- var p28 = BRAND.cssPrefix;
6743
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6744
+ var p29 = BRAND.cssPrefix;
6520
6745
  var log14 = logger.scope("news");
6521
6746
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6522
6747
  const tags = config.contentTags;
@@ -6544,37 +6769,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6544
6769
  };
6545
6770
  }, [transport, tags, reloadKey, bus]);
6546
6771
  function renderBody() {
6547
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6772
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6548
6773
  if (state === "error") {
6549
- return /* @__PURE__ */ jsx31(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6774
+ return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6550
6775
  }
6551
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6552
- return /* @__PURE__ */ jsx31("div", { class: `${p28}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs26(
6776
+ if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
6777
+ return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
6553
6778
  "button",
6554
6779
  {
6555
6780
  type: "button",
6556
- class: `${p28}-news-card`,
6781
+ class: `${p29}-news-card`,
6557
6782
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6558
6783
  "data-testid": tid(TID.newsItem, item.id),
6559
6784
  children: [
6560
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6561
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6562
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6563
- item.description ? /* @__PURE__ */ jsx31("span", { class: `${p28}-news-summary`, children: item.description }) : null
6785
+ item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6786
+ /* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
6787
+ /* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
6788
+ item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
6564
6789
  ] })
6565
6790
  ]
6566
6791
  },
6567
6792
  item.id
6568
6793
  )) });
6569
6794
  }
6570
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6571
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6572
- /* @__PURE__ */ jsx31("div", { class: `${p28}-module-scroll`, children: renderBody() })
6795
+ return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
6796
+ /* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
6797
+ /* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
6573
6798
  ] });
6574
6799
  }
6575
6800
  var newsLayout = {
6576
6801
  Icon: NewsIcon,
6577
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6802
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6578
6803
  };
6579
6804
 
6580
6805
  // src/ui/modules/registry.ts
@@ -6586,28 +6811,28 @@ var LAYOUTS = {
6586
6811
  };
6587
6812
 
6588
6813
  // src/ui/home-tab-bar.tsx
6589
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6590
- var p29 = BRAND.cssPrefix;
6814
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6815
+ var p30 = BRAND.cssPrefix;
6591
6816
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6592
- return /* @__PURE__ */ jsx32("nav", { class: `${p29}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6817
+ return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6593
6818
  const Icon = LAYOUTS[m.layout].Icon;
6594
6819
  const selected = m.id === activeTab;
6595
6820
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6596
- return /* @__PURE__ */ jsxs27(
6821
+ return /* @__PURE__ */ jsxs28(
6597
6822
  "button",
6598
6823
  {
6599
6824
  type: "button",
6600
6825
  role: "tab",
6601
6826
  "aria-selected": selected,
6602
- class: `${p29}-tab`,
6827
+ class: `${p30}-tab`,
6603
6828
  onClick: () => onSelect(m.id),
6604
6829
  "data-testid": tid(TID.tab, m.id),
6605
6830
  children: [
6606
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6607
- /* @__PURE__ */ jsx32(Icon, {}),
6608
- badge ? /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6831
+ /* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
6832
+ /* @__PURE__ */ jsx33(Icon, {}),
6833
+ badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6609
6834
  ] }),
6610
- /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-label`, children: localizeText(strings, m.label) })
6835
+ /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
6611
6836
  ]
6612
6837
  },
6613
6838
  m.id
@@ -6616,12 +6841,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6616
6841
  }
6617
6842
 
6618
6843
  // src/ui/iframe-view.tsx
6619
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6620
- var p30 = BRAND.cssPrefix;
6844
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6845
+ var p31 = BRAND.cssPrefix;
6621
6846
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6622
6847
  function IframeView({ url, title, strings, onBack, actions }) {
6623
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6624
- /* @__PURE__ */ jsx33(
6848
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6849
+ /* @__PURE__ */ jsx34(
6625
6850
  BackHeader,
6626
6851
  {
6627
6852
  title: title || strings.moduleBack,
@@ -6630,10 +6855,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6630
6855
  actions
6631
6856
  }
6632
6857
  ),
6633
- /* @__PURE__ */ jsx33(
6858
+ /* @__PURE__ */ jsx34(
6634
6859
  "iframe",
6635
6860
  {
6636
- class: `${p30}-content-frame`,
6861
+ class: `${p31}-content-frame`,
6637
6862
  src: url,
6638
6863
  title: title || "content",
6639
6864
  sandbox: SANDBOX,
@@ -6647,8 +6872,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6647
6872
 
6648
6873
  // src/ui/content-view.tsx
6649
6874
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6650
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6651
- var p31 = BRAND.cssPrefix;
6875
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6876
+ var p32 = BRAND.cssPrefix;
6652
6877
  var log15 = logger.scope("content");
6653
6878
  var READ_DWELL_MS = 5e3;
6654
6879
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6692,16 +6917,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6692
6917
  [bus, id]
6693
6918
  );
6694
6919
  function renderBody() {
6695
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6696
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6697
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6698
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6699
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6700
- /* @__PURE__ */ jsx34(StaticMarkdown, { text: item.content ?? "" })
6920
+ if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6921
+ if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
6922
+ return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6923
+ item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6924
+ item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
6925
+ /* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
6701
6926
  ] });
6702
6927
  }
6703
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6704
- /* @__PURE__ */ jsx34(
6928
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6929
+ /* @__PURE__ */ jsx35(
6705
6930
  BackHeader,
6706
6931
  {
6707
6932
  title: item?.title || title || strings.moduleBack,
@@ -6711,13 +6936,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6711
6936
  testid: TID.backHeader
6712
6937
  }
6713
6938
  ),
6714
- /* @__PURE__ */ jsx34("div", { class: `${p31}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6939
+ /* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6715
6940
  ] });
6716
6941
  }
6717
6942
 
6718
6943
  // src/ui/messenger-home.tsx
6719
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6720
- var p32 = BRAND.cssPrefix;
6944
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6945
+ var p33 = BRAND.cssPrefix;
6721
6946
  function MessengerHome({
6722
6947
  panelProps,
6723
6948
  enabledModules,
@@ -6788,12 +7013,12 @@ function MessengerHome({
6788
7013
  bus,
6789
7014
  panelProps
6790
7015
  });
6791
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7016
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6792
7017
  if (activeModule) visitedRef.current.add(activeModule.id);
6793
7018
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6794
7019
  const tabRoot = (module) => {
6795
7020
  if (module.layout === "chat") {
6796
- return /* @__PURE__ */ jsx35(
7021
+ return /* @__PURE__ */ jsx36(
6797
7022
  PanelContent,
6798
7023
  {
6799
7024
  ...panelProps,
@@ -6804,14 +7029,14 @@ function MessengerHome({
6804
7029
  );
6805
7030
  }
6806
7031
  const Root = LAYOUTS[module.layout].Root;
6807
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7032
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6808
7033
  };
6809
7034
  const renderReader = () => {
6810
7035
  if (top?.kind === "iframe") {
6811
- return /* @__PURE__ */ jsx35(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
7036
+ return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6812
7037
  }
6813
7038
  if (top?.kind === "content") {
6814
- return /* @__PURE__ */ jsx35(
7039
+ return /* @__PURE__ */ jsx36(
6815
7040
  ContentView,
6816
7041
  {
6817
7042
  id: top.id,
@@ -6826,22 +7051,22 @@ function MessengerHome({
6826
7051
  }
6827
7052
  return null;
6828
7053
  };
6829
- return /* @__PURE__ */ jsxs30(
7054
+ return /* @__PURE__ */ jsxs31(
6830
7055
  "div",
6831
7056
  {
6832
7057
  ref: containerRef,
6833
- class: `${p32}-panel ${p32}-messenger`,
7058
+ class: `${p33}-panel ${p33}-messenger`,
6834
7059
  role: "dialog",
6835
7060
  "aria-modal": "false",
6836
7061
  "aria-label": strings.panelTitle,
6837
7062
  style: { position: "relative" },
6838
7063
  "data-testid": TID.messengerHome,
6839
7064
  children: [
6840
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6841
- visitedTabs.map((m) => /* @__PURE__ */ jsx35("div", { class: `${p32}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
7065
+ /* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
7066
+ visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
6842
7067
  renderReader()
6843
7068
  ] }),
6844
- showTabBar ? /* @__PURE__ */ jsx35(
7069
+ showTabBar ? /* @__PURE__ */ jsx36(
6845
7070
  HomeTabBar,
6846
7071
  {
6847
7072
  modules: enabledModules,
@@ -6851,8 +7076,8 @@ function MessengerHome({
6851
7076
  onSelect: nav.switchTab
6852
7077
  }
6853
7078
  ) : null,
6854
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6855
- options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx35(
7079
+ /* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
7080
+ options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
6856
7081
  ResizeGrip,
6857
7082
  {
6858
7083
  panelEl: containerRef.current,
@@ -6869,29 +7094,29 @@ function MessengerHome({
6869
7094
  }
6870
7095
 
6871
7096
  // src/ui/modules-empty.tsx
6872
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6873
- var p33 = BRAND.cssPrefix;
7097
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7098
+ var p34 = BRAND.cssPrefix;
6874
7099
  function ModulesEmpty({ strings, onClose }) {
6875
- return /* @__PURE__ */ jsxs31(
7100
+ return /* @__PURE__ */ jsxs32(
6876
7101
  "div",
6877
7102
  {
6878
- class: `${p33}-panel ${p33}-modules-empty`,
7103
+ class: `${p34}-panel ${p34}-modules-empty`,
6879
7104
  role: "dialog",
6880
7105
  "aria-label": strings.panelTitle,
6881
7106
  "data-testid": TID.modulesEmpty,
6882
7107
  children: [
6883
- onClose ? /* @__PURE__ */ jsx36(
7108
+ onClose ? /* @__PURE__ */ jsx37(
6884
7109
  "button",
6885
7110
  {
6886
7111
  type: "button",
6887
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7112
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6888
7113
  onClick: onClose,
6889
7114
  "aria-label": strings.close,
6890
7115
  title: strings.close,
6891
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7116
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6892
7117
  }
6893
7118
  ) : null,
6894
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7119
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6895
7120
  ]
6896
7121
  }
6897
7122
  );
@@ -6914,16 +7139,19 @@ function useLauncherCallout({ callout, persistence }) {
6914
7139
  }
6915
7140
 
6916
7141
  // src/ui/app.tsx
6917
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7142
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6918
7143
  var log16 = logger.scope("app");
6919
- var p34 = BRAND.cssPrefix;
7144
+ var p35 = BRAND.cssPrefix;
6920
7145
  function makeLocalizedWelcome(w, strings) {
6921
7146
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6922
7147
  }
7148
+ function firstText(m) {
7149
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
7150
+ }
6923
7151
  function allToolPartsSettled(msg) {
6924
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6925
- return tools.length > 0 && tools.every((p35) => {
6926
- const s = p35.stateSig.value;
7152
+ const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
7153
+ return tools.length > 0 && tools.every((pt) => {
7154
+ const s = pt.stateSig.value;
6927
7155
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6928
7156
  });
6929
7157
  }
@@ -7113,8 +7341,9 @@ function App({ options, hostElement, bus }) {
7113
7341
  (n) => n !== void 0
7114
7342
  );
7115
7343
  const welcomeAnchor = (timelineStamps.length ? Math.min(...timelineStamps) : Date.now()) - 1;
7116
- const loadedIds = new Set(loaded.map((m) => m.id));
7117
- const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedIds.has(w.id)).map((w) => {
7344
+ const welcomeKey = (role, text) => `${role}|${text}`;
7345
+ const loadedKeys = new Set(loaded.map((m) => welcomeKey(m.role, firstText(m))));
7346
+ const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedKeys.has(welcomeKey(w.role, localizeText(stringsRef.current, w.text)))).map((w) => {
7118
7347
  const row = makeLocalizedWelcome(w, stringsRef.current);
7119
7348
  row.createdAt = welcomeAnchor;
7120
7349
  return row;
@@ -7841,12 +8070,12 @@ function App({ options, hostElement, bus }) {
7841
8070
  const renderSurface = (size) => {
7842
8071
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7843
8072
  if (enabledModules.length === 0) {
7844
- return /* @__PURE__ */ jsx37(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
8073
+ return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
7845
8074
  }
7846
8075
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7847
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8076
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7848
8077
  }
7849
- return /* @__PURE__ */ jsx37(
8078
+ return /* @__PURE__ */ jsx38(
7850
8079
  MessengerHome,
7851
8080
  {
7852
8081
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7865,7 +8094,7 @@ function App({ options, hostElement, bus }) {
7865
8094
  void handleSelectHistoryConversation(chat.conversationId);
7866
8095
  };
7867
8096
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7868
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8097
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7869
8098
  PageShell,
7870
8099
  {
7871
8100
  site: parsedSite,
@@ -7886,15 +8115,15 @@ function App({ options, hostElement, bus }) {
7886
8115
  }
7887
8116
  if (isInlineLike) {
7888
8117
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7889
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8118
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7890
8119
  }
7891
8120
  const drawerEdgeTab = options.mode === "drawer";
7892
8121
  const triggerOwnedByPage = options.mode === "modal";
7893
8122
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7894
8123
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7895
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7896
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7897
- launcherVisible ? /* @__PURE__ */ jsx37(
8124
+ return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
8125
+ isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
8126
+ launcherVisible ? /* @__PURE__ */ jsx38(
7898
8127
  Launcher,
7899
8128
  {
7900
8129
  onToggle: handleOpen,
@@ -7904,7 +8133,7 @@ function App({ options, hostElement, bus }) {
7904
8133
  edgeTab: drawerEdgeTab
7905
8134
  }
7906
8135
  ) : null,
7907
- calloutToRender ? /* @__PURE__ */ jsx37(
8136
+ calloutToRender ? /* @__PURE__ */ jsx38(
7908
8137
  LauncherCallout,
7909
8138
  {
7910
8139
  callout: calloutToRender,
@@ -7969,34 +8198,34 @@ var TRACKED = {
7969
8198
  expand: (on) => ({ on }),
7970
8199
  fullscreen: (on) => ({ on }),
7971
8200
  // Conversation funnel. `send` is the key conversion; text never rides.
7972
- send: (p35) => ({ attachments: p35.attachmentCount }),
7973
- message: (p35) => ({ role: p35.role }),
8201
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8202
+ message: (p36) => ({ role: p36.role }),
7974
8203
  stop: () => void 0,
7975
8204
  clear: () => void 0,
7976
8205
  suggestion: () => void 0,
7977
- toggleHistory: (p35) => ({ view: p35.view }),
8206
+ toggleHistory: (p36) => ({ view: p36.view }),
7978
8207
  handshake: () => void 0,
7979
8208
  // Forms + human-in-the-loop — ids and outcomes, never values.
7980
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8209
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
7981
8210
  toolResult: () => void 0,
7982
- toolDecision: (p35) => ({ approved: p35.approved }),
8211
+ toolDecision: (p36) => ({ approved: p36.approved }),
7983
8212
  // Content — ids, tags + counts only; titles/bodies never ride.
7984
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
7985
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
7986
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
7987
- contentRead: (p35) => ({ contentId: p35.contentId }),
7988
- contentLinkClick: (p35) => ({ contentId: p35.contentId }),
8213
+ contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
8214
+ contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
8215
+ contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
8216
+ contentRead: (p36) => ({ contentId: p36.contentId }),
8217
+ contentLinkClick: (p36) => ({ contentId: p36.contentId }),
7989
8218
  // Composer / attachments / voice.
7990
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8219
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
7991
8220
  voiceStart: () => void 0,
7992
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8221
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
7993
8222
  voiceCancel: () => void 0,
7994
8223
  // Preferences — how visitors tune the surface.
7995
8224
  localeChange: (locale) => ({ locale }),
7996
8225
  themeChange: (theme) => ({ theme }),
7997
8226
  textSizeChange: (size) => ({ size }),
7998
- soundToggle: (p35) => ({ muted: p35.muted }),
7999
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8227
+ soundToggle: (p36) => ({ muted: p36.muted }),
8228
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8000
8229
  calloutDismiss: () => void 0,
8001
8230
  // Health signal only — the error object itself never leaves the page.
8002
8231
  error: () => void 0