@helpai/elements 0.46.3 → 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.3" : "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
  }
@@ -2400,7 +2559,7 @@ function fromWireMessage(w) {
2400
2559
  };
2401
2560
  }
2402
2561
  return null;
2403
- }).filter((p35) => p35 !== null);
2562
+ }).filter((p36) => p36 !== null);
2404
2563
  return {
2405
2564
  id: w.id,
2406
2565
  role: w.role,
@@ -2434,43 +2593,43 @@ function assistantText(m) {
2434
2593
  }
2435
2594
  return out;
2436
2595
  }
2437
- function partToReactive(p35) {
2438
- if (p35.kind === "text" || p35.kind === "reasoning") {
2439
- 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) };
2440
2599
  }
2441
- if (p35.kind === "tool") {
2600
+ if (p36.kind === "tool") {
2442
2601
  return {
2443
2602
  kind: "tool",
2444
- toolCallId: p35.toolCallId,
2445
- toolName: p35.toolName,
2446
- inputPartialSig: signal(p35.inputPartial),
2447
- inputSig: signal(p35.input),
2448
- outputSig: signal(p35.output),
2449
- errorSig: signal(p35.error),
2450
- stateSig: signal(p35.state),
2451
- 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)
2452
2611
  };
2453
2612
  }
2454
- return p35;
2613
+ return p36;
2455
2614
  }
2456
- function partFromReactive(p35) {
2457
- if (p35.kind === "text" || p35.kind === "reasoning") {
2458
- 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 };
2459
2618
  }
2460
- if (p35.kind === "tool") {
2619
+ if (p36.kind === "tool") {
2461
2620
  return {
2462
2621
  kind: "tool",
2463
- toolCallId: p35.toolCallId,
2464
- toolName: p35.toolName,
2465
- inputPartial: p35.inputPartialSig.value,
2466
- input: p35.inputSig.value,
2467
- output: p35.outputSig.value,
2468
- error: p35.errorSig.value,
2469
- state: p35.stateSig.value,
2470
- 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
2471
2630
  };
2472
2631
  }
2473
- return p35;
2632
+ return p36;
2474
2633
  }
2475
2634
 
2476
2635
  // src/stream/reducer.ts
@@ -2516,8 +2675,8 @@ var StreamReducer = class {
2516
2675
  ensureTextPart(m, "text", chunk.id);
2517
2676
  return;
2518
2677
  case "text-delta": {
2519
- const p35 = ensureTextPart(m, "text", chunk.id);
2520
- p35.textSig.value += chunk.delta;
2678
+ const p36 = ensureTextPart(m, "text", chunk.id);
2679
+ p36.textSig.value += chunk.delta;
2521
2680
  return;
2522
2681
  }
2523
2682
  case "text-end":
@@ -2527,8 +2686,8 @@ var StreamReducer = class {
2527
2686
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2528
2687
  return;
2529
2688
  case "reasoning-delta": {
2530
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2531
- p35.textSig.value += chunk.delta;
2689
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2690
+ p36.textSig.value += chunk.delta;
2532
2691
  return;
2533
2692
  }
2534
2693
  case "reasoning-end":
@@ -2578,19 +2737,19 @@ var StreamReducer = class {
2578
2737
  }
2579
2738
  };
2580
2739
  function ensureTextPart(m, kind, id) {
2581
- 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);
2582
2741
  if (existing) return existing;
2583
2742
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2584
2743
  appendPart(m, part);
2585
2744
  return part;
2586
2745
  }
2587
- function ensureToolPart(m, toolCallId, toolName) {
2588
- 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);
2589
2748
  if (existing) return existing;
2590
2749
  const part = {
2591
2750
  kind: "tool",
2592
2751
  toolCallId,
2593
- toolName: toolName ?? "tool",
2752
+ toolName: toolName2 ?? "tool",
2594
2753
  inputPartialSig: signal2(""),
2595
2754
  inputSig: signal2(void 0),
2596
2755
  outputSig: signal2(void 0),
@@ -2605,7 +2764,7 @@ function appendPart(m, part) {
2605
2764
  m.partsSig.value = [...m.partsSig.value, part];
2606
2765
  }
2607
2766
  function appendSource(m, source) {
2608
- 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;
2609
2768
  appendPart(m, source);
2610
2769
  }
2611
2770
  function applyTool(m, chunk) {
@@ -2614,37 +2773,37 @@ function applyTool(m, chunk) {
2614
2773
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2615
2774
  return;
2616
2775
  case "tool-input-delta": {
2617
- const p35 = ensureToolPart(m, chunk.toolCallId);
2618
- p35.inputPartialSig.value += chunk.inputTextDelta;
2776
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2777
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2619
2778
  return;
2620
2779
  }
2621
2780
  case "tool-input-available": {
2622
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2623
- p35.inputSig.value = chunk.input;
2624
- 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";
2625
2784
  return;
2626
2785
  }
2627
2786
  case "tool-approval-request": {
2628
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2629
- p35.approvalSig.value = { id: chunk.approvalId };
2630
- 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";
2631
2790
  return;
2632
2791
  }
2633
2792
  case "tool-output-available": {
2634
- const p35 = ensureToolPart(m, chunk.toolCallId);
2635
- p35.outputSig.value = chunk.output;
2636
- p35.stateSig.value = "output-available";
2793
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2794
+ p36.outputSig.value = chunk.output;
2795
+ p36.stateSig.value = "output-available";
2637
2796
  return;
2638
2797
  }
2639
2798
  case "tool-output-error": {
2640
- const p35 = ensureToolPart(m, chunk.toolCallId);
2641
- p35.errorSig.value = chunk.errorText;
2642
- p35.stateSig.value = "output-error";
2799
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2800
+ p36.errorSig.value = chunk.errorText;
2801
+ p36.stateSig.value = "output-error";
2643
2802
  return;
2644
2803
  }
2645
2804
  case "tool-output-denied": {
2646
- const p35 = ensureToolPart(m, chunk.toolCallId);
2647
- p35.stateSig.value = "output-denied";
2805
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2806
+ p36.stateSig.value = "output-denied";
2648
2807
  return;
2649
2808
  }
2650
2809
  default:
@@ -3341,24 +3500,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3341
3500
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3342
3501
  import { jsx as jsx3 } from "preact/jsx-runtime";
3343
3502
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3344
- const p35 = BRAND.cssPrefix;
3503
+ const p36 = BRAND.cssPrefix;
3345
3504
  const dragRef = useRef(null);
3346
3505
  useEffect2(() => {
3347
3506
  if (!panelEl) return;
3348
3507
  const style = panelEl.style;
3349
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3350
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3351
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3352
- 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);
3353
3512
  if (initialSize) {
3354
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3355
- 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`);
3356
3515
  }
3357
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3516
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3358
3517
  if (!panelEl) return null;
3359
3518
  const isTop = position.startsWith("top-");
3360
3519
  const isRight = position.endsWith("-right");
3361
- 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"}`;
3362
3521
  const onPointerDown = (e) => {
3363
3522
  if (!panelEl) return;
3364
3523
  const target = e.currentTarget;
@@ -3383,8 +3542,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3383
3542
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3384
3543
  const dx = (e.clientX - d.startX) * d.dirX;
3385
3544
  const dy = (e.clientY - d.startY) * d.dirY;
3386
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3387
- 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`);
3388
3547
  };
3389
3548
  const onPointerUp = (e) => {
3390
3549
  const d = dragRef.current;
@@ -4121,7 +4280,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4121
4280
  // src/ui/overflow-menu.tsx
4122
4281
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4123
4282
  function OverflowMenu({ items, triggerLabel }) {
4124
- const p35 = BRAND.cssPrefix;
4283
+ const p36 = BRAND.cssPrefix;
4125
4284
  const menu = usePopoverMenu({ itemCount: items.length });
4126
4285
  const handleSelect = (item) => {
4127
4286
  if (item.disabled) return;
@@ -4144,13 +4303,13 @@ function OverflowMenu({ items, triggerLabel }) {
4144
4303
  e.stopPropagation();
4145
4304
  pickSegment(item, segs[next].value);
4146
4305
  };
4147
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4306
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4148
4307
  /* @__PURE__ */ jsx8(
4149
4308
  "button",
4150
4309
  {
4151
4310
  ref: menu.triggerRef,
4152
4311
  type: "button",
4153
- class: `${p35}-icon-btn`,
4312
+ class: `${p36}-icon-btn`,
4154
4313
  "aria-label": triggerLabel,
4155
4314
  "aria-haspopup": "menu",
4156
4315
  "aria-expanded": menu.open,
@@ -4164,7 +4323,7 @@ function OverflowMenu({ items, triggerLabel }) {
4164
4323
  "div",
4165
4324
  {
4166
4325
  ref: menu.menuRef,
4167
- class: `${p35}-menu`,
4326
+ class: `${p36}-menu`,
4168
4327
  role: "menu",
4169
4328
  "aria-label": triggerLabel,
4170
4329
  onKeyDown: menu.onMenuKey,
@@ -4174,14 +4333,14 @@ function OverflowMenu({ items, triggerLabel }) {
4174
4333
  "div",
4175
4334
  {
4176
4335
  role: "menuitem",
4177
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4336
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4178
4337
  "aria-label": item.label,
4179
4338
  tabIndex: -1,
4180
4339
  onKeyDown: (e) => onSegmentRowKey(e, item),
4181
4340
  children: [
4182
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4183
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4184
- /* @__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) => {
4185
4344
  const active = seg.value === item.value;
4186
4345
  return /* @__PURE__ */ jsx8(
4187
4346
  "button",
@@ -4189,7 +4348,7 @@ function OverflowMenu({ items, triggerLabel }) {
4189
4348
  type: "button",
4190
4349
  role: "menuitemradio",
4191
4350
  "aria-checked": active,
4192
- class: `${p35}-segment`,
4351
+ class: `${p36}-segment`,
4193
4352
  "data-on": active ? "true" : void 0,
4194
4353
  lang: seg.lang,
4195
4354
  title: seg.value,
@@ -4209,14 +4368,14 @@ function OverflowMenu({ items, triggerLabel }) {
4209
4368
  {
4210
4369
  type: "button",
4211
4370
  role: "menuitem",
4212
- class: `${p35}-menu-item`,
4371
+ class: `${p36}-menu-item`,
4213
4372
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4214
4373
  disabled: item.disabled,
4215
4374
  onClick: () => handleSelect(item),
4216
4375
  children: [
4217
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4218
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4219
- 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
4220
4379
  ]
4221
4380
  },
4222
4381
  item.id
@@ -4459,6 +4618,7 @@ function DynamicForm({
4459
4618
  onSubmit,
4460
4619
  skipLabel,
4461
4620
  onSkip,
4621
+ footerHint,
4462
4622
  disabled,
4463
4623
  rootTestId,
4464
4624
  submitTestId,
@@ -4505,6 +4665,7 @@ function DynamicForm({
4505
4665
  field.name
4506
4666
  )),
4507
4667
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4668
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4508
4669
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4509
4670
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4510
4671
  ] })
@@ -4759,9 +4920,9 @@ function FormDoneMarker({
4759
4920
  import { useComputed as useComputed5 } from "@preact/signals";
4760
4921
 
4761
4922
  // src/stream/constants.ts
4762
- function isAskUserInputTool(toolName) {
4763
- if (!toolName) return false;
4764
- 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;
4765
4926
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4766
4927
  }
4767
4928
 
@@ -4855,36 +5016,92 @@ function SourceView({ part, strings }) {
4855
5016
 
4856
5017
  // src/ui/tool-approval.tsx
4857
5018
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4858
- 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";
4859
5022
  var p13 = BRAND.cssPrefix;
4860
- function displayToolName(toolName) {
4861
- 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
+ ] });
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;
4862
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;
4863
5084
  function ToolApproval({ part, strings, active, onDecision }) {
4864
5085
  const approval = useComputed2(() => part.approvalSig.value);
5086
+ const state = useComputed2(() => part.stateSig.value);
4865
5087
  const input = useComputed2(() => part.inputSig.value);
5088
+ const output = useComputed2(() => part.outputSig.value);
5089
+ const error = useComputed2(() => part.errorSig.value);
4866
5090
  const reason = useSignal("");
4867
- const decided = approval.value?.approved !== void 0;
4868
- if (decided) {
4869
- const ap = approval.value;
4870
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4871
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4872
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4873
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4874
- ] });
4875
- }
4876
- const args = summarizeInput(input.value);
4877
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4878
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4879
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4880
- /* @__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 })
4881
5096
  ] }),
4882
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4883
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4884
- /* @__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(
4885
5102
  "input",
4886
5103
  {
4887
- class: `${p13}-field-input`,
5104
+ class: `${p14}-field-input`,
4888
5105
  value: reason.value,
4889
5106
  placeholder: strings.approvalReason,
4890
5107
  onInput: (e) => {
@@ -4892,40 +5109,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4892
5109
  }
4893
5110
  }
4894
5111
  ),
4895
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4896
- /* @__PURE__ */ jsx14(
5112
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5113
+ /* @__PURE__ */ jsx15(
4897
5114
  "button",
4898
5115
  {
4899
5116
  type: "button",
4900
- class: `${p13}-tool-reject`,
5117
+ class: `${p14}-form-skip`,
4901
5118
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4902
5119
  "data-testid": TID.toolReject,
4903
5120
  children: strings.reject
4904
5121
  }
4905
5122
  ),
4906
- /* @__PURE__ */ jsx14(
5123
+ /* @__PURE__ */ jsx15(
4907
5124
  "button",
4908
5125
  {
4909
5126
  type: "button",
4910
- class: `${p13}-tool-approve`,
5127
+ class: `${p14}-form-submit`,
4911
5128
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4912
5129
  "data-testid": TID.toolApprove,
4913
5130
  children: strings.approve
4914
5131
  }
4915
5132
  )
4916
5133
  ] })
4917
- ] }) : /* @__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
+ )
4918
5138
  ] });
4919
5139
  }
4920
- function summarizeInput(input) {
4921
- if (input == null) return "";
4922
- try {
4923
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4924
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4925
- } catch {
4926
- return "";
4927
- }
4928
- }
4929
5140
 
4930
5141
  // src/ui/tool-ask-input.tsx
4931
5142
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -4985,8 +5196,20 @@ function num(v) {
4985
5196
  }
4986
5197
 
4987
5198
  // src/ui/tool-ask-input.tsx
4988
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
4989
- 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
+ }
4990
5213
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4991
5214
  const state = useComputed3(() => part.stateSig.value);
4992
5215
  const approval = useComputed3(() => part.approvalSig.value);
@@ -4998,71 +5221,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
4998
5221
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
4999
5222
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
5000
5223
  };
5224
+ const req = request.value;
5001
5225
  if (decided) {
5002
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5226
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5003
5227
  }
5004
- if (!active) {
5005
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5006
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5007
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5008
- ] });
5009
- }
5010
- const req = request.value;
5011
- const isConfirmation = req.responseType === "confirmation";
5012
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5013
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5014
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5015
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5016
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5017
- /* @__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(
5018
5248
  "button",
5019
5249
  {
5020
5250
  type: "button",
5021
- class: `${p14}-form-skip`,
5251
+ class: `${p15}-form-skip`,
5022
5252
  onClick: () => resolve(void 0, false),
5023
5253
  "data-testid": TID.toolInputSkip,
5024
5254
  children: strings.reject
5025
5255
  }
5026
5256
  ),
5027
- /* @__PURE__ */ jsx15(
5257
+ /* @__PURE__ */ jsx16(
5028
5258
  "button",
5029
5259
  {
5030
5260
  type: "button",
5031
- class: `${p14}-form-submit`,
5261
+ class: `${p15}-form-submit`,
5032
5262
  onClick: () => resolve(void 0, true),
5033
5263
  "data-testid": TID.toolInputSubmit,
5034
5264
  children: strings.approve
5035
5265
  }
5036
5266
  )
5037
- ] }) : /* @__PURE__ */ jsx15(
5038
- DynamicForm,
5039
- {
5040
- fields: askInputToFields(req),
5041
- strings,
5042
- submitLabel: strings.inputSubmit,
5043
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5044
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5045
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5046
- submitTestId: TID.toolInputSubmit,
5047
- skipTestId: TID.toolInputSkip
5048
- }
5049
- )
5050
- ] });
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
+ );
5051
5287
  }
5052
- function Header({ strings, title }) {
5053
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5054
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5055
- 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 })
5056
5292
  ] });
5057
5293
  }
5058
- function DecidedSummary({ part, strings }) {
5294
+ function DecidedCard({
5295
+ part,
5296
+ strings,
5297
+ req
5298
+ }) {
5059
5299
  const output = useComputed3(() => part.outputSig.value);
5060
5300
  const approval = useComputed3(() => part.approvalSig.value);
5061
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5062
5301
  const skipped = approval.value?.approved === false;
5063
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5064
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5065
- /* @__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
5066
5311
  ] });
5067
5312
  }
5068
5313
  function summarizeOutput(output) {
@@ -5071,6 +5316,7 @@ function summarizeOutput(output) {
5071
5316
  if (typeof output === "object") {
5072
5317
  const rec = output;
5073
5318
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5319
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5074
5320
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5075
5321
  }
5076
5322
  return String(output);
@@ -5078,52 +5324,30 @@ function summarizeOutput(output) {
5078
5324
 
5079
5325
  // src/ui/tool-call.tsx
5080
5326
  import { useComputed as useComputed4 } from "@preact/signals";
5081
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5082
- var p15 = BRAND.cssPrefix;
5083
- function displayToolName2(toolName) {
5084
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5085
- }
5327
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5328
+ var p16 = BRAND.cssPrefix;
5086
5329
  function ToolCall({ part, strings }) {
5087
- const details = useComputed4(() => pretty(part.inputSig.value));
5088
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5089
- const isError = useComputed4(() => !!part.errorSig.value);
5090
- if (!details.value && !result.value) return null;
5091
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5092
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5093
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5094
- /* @__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 })
5095
5341
  ] }),
5096
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5097
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5098
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5099
- ] }) : null,
5100
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5101
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5102
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5103
- ] }) : 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
5104
5345
  ] });
5105
5346
  }
5106
- function unwrapResult(output) {
5107
- if (output && typeof output === "object") {
5108
- const rec = output;
5109
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5110
- }
5111
- return output;
5112
- }
5113
- function pretty(value) {
5114
- if (value == null) return "";
5115
- try {
5116
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5117
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5118
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5119
- } catch {
5120
- return "";
5121
- }
5122
- }
5123
5347
 
5124
5348
  // src/ui/message-bubble.tsx
5125
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5126
- var p16 = BRAND.cssPrefix;
5349
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5350
+ var p17 = BRAND.cssPrefix;
5127
5351
  function MessageBubble({
5128
5352
  message,
5129
5353
  strings,
@@ -5147,9 +5371,9 @@ function MessageBubble({
5147
5371
  const working = streaming && !hasAnswerText.value;
5148
5372
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5149
5373
  const stamp = formatStamp(message.createdAt);
5150
- 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: [
5151
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5152
- 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(
5153
5377
  PartView,
5154
5378
  {
5155
5379
  part,
@@ -5163,10 +5387,10 @@ function MessageBubble({
5163
5387
  },
5164
5388
  partKey(part)
5165
5389
  )),
5166
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5167
- 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
5168
5392
  ] }),
5169
- 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
5170
5394
  ] }) });
5171
5395
  }
5172
5396
  function formatStamp(createdAt) {
@@ -5196,11 +5420,11 @@ function PartView({
5196
5420
  case "step-start":
5197
5421
  return null;
5198
5422
  case "text":
5199
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5423
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5200
5424
  case "reasoning":
5201
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5425
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5202
5426
  case "tool":
5203
- return /* @__PURE__ */ jsx17(
5427
+ return /* @__PURE__ */ jsx18(
5204
5428
  ToolPartView,
5205
5429
  {
5206
5430
  part,
@@ -5212,11 +5436,11 @@ function PartView({
5212
5436
  );
5213
5437
  case "file":
5214
5438
  if (part.mediaType.startsWith("image/")) {
5215
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5439
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5216
5440
  }
5217
- 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 });
5218
5442
  case "source":
5219
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5443
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5220
5444
  }
5221
5445
  }
5222
5446
  function ToolPartView({
@@ -5229,7 +5453,7 @@ function ToolPartView({
5229
5453
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5230
5454
  if (tool?.humanInLoop) {
5231
5455
  if (isAskUserInputTool(part.toolName)) {
5232
- return /* @__PURE__ */ jsx17(
5456
+ return /* @__PURE__ */ jsx18(
5233
5457
  ToolAskInput,
5234
5458
  {
5235
5459
  part,
@@ -5241,19 +5465,19 @@ function ToolPartView({
5241
5465
  );
5242
5466
  }
5243
5467
  if (hasApproval.value) {
5244
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5468
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5245
5469
  }
5246
5470
  }
5247
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5471
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5248
5472
  }
5249
5473
  function ReasoningView({
5250
5474
  part,
5251
5475
  active,
5252
5476
  strings
5253
5477
  }) {
5254
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5255
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5256
- /* @__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 }) })
5257
5481
  ] });
5258
5482
  }
5259
5483
  function partKey(part) {
@@ -5271,22 +5495,22 @@ function partKey(part) {
5271
5495
  }
5272
5496
  }
5273
5497
  function TypingDots() {
5274
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5275
- /* @__PURE__ */ jsx17("span", {}),
5276
- /* @__PURE__ */ jsx17("span", {}),
5277
- /* @__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", {})
5278
5502
  ] });
5279
5503
  }
5280
5504
  function LoadingSpinner({ label }) {
5281
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5282
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5283
- /* @__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 })
5284
5508
  ] });
5285
5509
  }
5286
5510
 
5287
5511
  // src/ui/message-list.tsx
5288
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5289
- var p17 = BRAND.cssPrefix;
5512
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5513
+ var p18 = BRAND.cssPrefix;
5290
5514
  var STICK_THRESHOLD = 120;
5291
5515
  var INTERACTION_GRACE_MS = 350;
5292
5516
  var DIVIDER_IDLE_MS = 1200;
@@ -5457,7 +5681,7 @@ function MessageList({
5457
5681
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5458
5682
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5459
5683
  );
5460
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5684
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5461
5685
  FormDoneMarker,
5462
5686
  {
5463
5687
  marker,
@@ -5478,12 +5702,12 @@ function MessageList({
5478
5702
  const day = dayKey(m.createdAt);
5479
5703
  if (day && day !== prevDay) {
5480
5704
  rows.push(
5481
- /* @__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}`)
5482
5706
  );
5483
5707
  prevDay = day;
5484
5708
  }
5485
5709
  rows.push(
5486
- /* @__PURE__ */ jsx18(
5710
+ /* @__PURE__ */ jsx19(
5487
5711
  MessageBubble,
5488
5712
  {
5489
5713
  message: m,
@@ -5502,33 +5726,33 @@ function MessageList({
5502
5726
  for (const marker of pendingMarkers) {
5503
5727
  rows.push(markerRow(marker));
5504
5728
  }
5505
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5506
- /* @__PURE__ */ jsxs15(
5729
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5730
+ /* @__PURE__ */ jsxs16(
5507
5731
  "div",
5508
5732
  {
5509
5733
  ref,
5510
- class: `${p17}-list`,
5734
+ class: `${p18}-list`,
5511
5735
  role: "log",
5512
5736
  "aria-live": "polite",
5513
5737
  "aria-relevant": "additions text",
5514
5738
  "data-scrolling": scrolling ? "true" : void 0,
5515
5739
  children: [
5516
- 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,
5517
5741
  rows,
5518
- 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
5519
5743
  ]
5520
5744
  }
5521
5745
  ),
5522
- showJump ? /* @__PURE__ */ jsx18(
5746
+ showJump ? /* @__PURE__ */ jsx19(
5523
5747
  "button",
5524
5748
  {
5525
5749
  type: "button",
5526
- class: `${p17}-jump`,
5750
+ class: `${p18}-jump`,
5527
5751
  onClick: jumpToBottom,
5528
5752
  "aria-label": strings.scrollToBottom,
5529
5753
  title: strings.scrollToBottom,
5530
5754
  "data-testid": TID.scrollToBottom,
5531
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5755
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5532
5756
  }
5533
5757
  ) : null
5534
5758
  ] });
@@ -5587,7 +5811,7 @@ function startOfDay(ms) {
5587
5811
  }
5588
5812
 
5589
5813
  // src/ui/conversation-list.tsx
5590
- 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";
5591
5815
  var log11 = logger.scope("history");
5592
5816
  var DEFAULT_SKELETON_ROWS = 3;
5593
5817
  var MAX_SKELETON_ROWS = 6;
@@ -5614,7 +5838,7 @@ function ConversationList({
5614
5838
  onSelect,
5615
5839
  onNewConversation
5616
5840
  }) {
5617
- const p35 = BRAND.cssPrefix;
5841
+ const p36 = BRAND.cssPrefix;
5618
5842
  const seed = transport.peekConversations({ visitorId });
5619
5843
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5620
5844
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5635,32 +5859,32 @@ function ConversationList({
5635
5859
  cancelled = true;
5636
5860
  };
5637
5861
  }, [transport, visitorId, persistence]);
5638
- 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(
5639
5863
  "button",
5640
5864
  {
5641
5865
  type: "button",
5642
- class: `${p35}-history-new`,
5866
+ class: `${p36}-history-new`,
5643
5867
  onClick: onNewConversation,
5644
5868
  "data-testid": TID.sidebarNewConversation,
5645
5869
  children: [
5646
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5870
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5647
5871
  strings.newConversation
5648
5872
  ]
5649
5873
  }
5650
5874
  ) }) : null;
5651
5875
  if (state === "loading") {
5652
5876
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5653
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5654
- /* @__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: [
5655
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5656
- /* @__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: [
5657
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5658
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5659
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5660
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5661
- /* @__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` }) })
5662
5886
  ] }),
5663
- /* @__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` }) }) })
5664
5888
  ] })
5665
5889
  ] }, i)) })
5666
5890
  ] }) }),
@@ -5668,36 +5892,36 @@ function ConversationList({
5668
5892
  ] });
5669
5893
  }
5670
5894
  if (state === "error" || conversations.length === 0) {
5671
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5672
- /* @__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 }),
5673
5897
  newChatButton
5674
5898
  ] });
5675
5899
  }
5676
5900
  const now = Date.now();
5677
5901
  const groups = groupByBucket(now, conversations);
5678
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5679
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5680
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5681
- /* @__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(
5682
5906
  "button",
5683
5907
  {
5684
5908
  type: "button",
5685
5909
  role: "listitem",
5686
- class: `${p35}-history-item`,
5910
+ class: `${p36}-history-item`,
5687
5911
  onClick: () => onSelect(chat),
5688
5912
  "data-closed": chat.canContinue ? void 0 : "true",
5689
5913
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5690
5914
  "data-testid": tid(TID.historyItem, chat.conversationId),
5691
5915
  children: [
5692
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5693
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5694
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5695
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5696
- /* @__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) })
5697
5921
  ] }),
5698
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5699
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5700
- (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
5701
5925
  ] })
5702
5926
  ] })
5703
5927
  ]
@@ -5710,15 +5934,15 @@ function ConversationList({
5710
5934
  }
5711
5935
 
5712
5936
  // src/ui/suggestions.tsx
5713
- import { jsx as jsx20 } from "preact/jsx-runtime";
5714
- var p18 = BRAND.cssPrefix;
5937
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5938
+ var p19 = BRAND.cssPrefix;
5715
5939
  function Suggestions({ suggestions, onPick }) {
5716
5940
  if (suggestions.length === 0) return null;
5717
- 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(
5718
5942
  "button",
5719
5943
  {
5720
5944
  type: "button",
5721
- class: `${p18}-suggestion`,
5945
+ class: `${p19}-suggestion`,
5722
5946
  onClick: () => onPick(s),
5723
5947
  "data-testid": tid(TID.suggestion, i),
5724
5948
  children: s.label
@@ -5728,8 +5952,8 @@ function Suggestions({ suggestions, onPick }) {
5728
5952
  }
5729
5953
 
5730
5954
  // src/ui/panel.tsx
5731
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5732
- var p19 = BRAND.cssPrefix;
5955
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5956
+ var p20 = BRAND.cssPrefix;
5733
5957
  function Panel(props2) {
5734
5958
  const { options, onClose } = props2;
5735
5959
  const s = options.strings;
@@ -5753,18 +5977,18 @@ function Panel(props2) {
5753
5977
  }, []);
5754
5978
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5755
5979
  useDragMove(containerRef.current, options.mode === "modal");
5756
- return /* @__PURE__ */ jsxs17(
5980
+ return /* @__PURE__ */ jsxs18(
5757
5981
  "div",
5758
5982
  {
5759
5983
  ref: containerRef,
5760
- class: `${p19}-panel`,
5984
+ class: `${p20}-panel`,
5761
5985
  role: "dialog",
5762
5986
  "aria-modal": "false",
5763
5987
  "aria-label": s.panelTitle,
5764
5988
  style: { position: "relative" },
5765
5989
  "data-testid": TID.panel,
5766
5990
  children: [
5767
- /* @__PURE__ */ jsx21(
5991
+ /* @__PURE__ */ jsx22(
5768
5992
  PanelContent,
5769
5993
  {
5770
5994
  ...props2,
@@ -5773,7 +5997,7 @@ function Panel(props2) {
5773
5997
  composerAttachApiRef
5774
5998
  }
5775
5999
  ),
5776
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6000
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5777
6001
  ]
5778
6002
  }
5779
6003
  );
@@ -5820,9 +6044,9 @@ function PanelContent(props2) {
5820
6044
  if (activeForm) {
5821
6045
  composerArea = null;
5822
6046
  } else if (canSend) {
5823
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5824
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5825
- /* @__PURE__ */ jsx21(
6047
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6048
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6049
+ /* @__PURE__ */ jsx22(
5826
6050
  Composer,
5827
6051
  {
5828
6052
  options,
@@ -5837,10 +6061,10 @@ function PanelContent(props2) {
5837
6061
  )
5838
6062
  ] });
5839
6063
  } else {
5840
- 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 });
5841
6065
  }
5842
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5843
- view === "history" ? /* @__PURE__ */ jsx21(
6066
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6067
+ view === "history" ? /* @__PURE__ */ jsx22(
5844
6068
  HistoryHeader,
5845
6069
  {
5846
6070
  strings: s,
@@ -5848,22 +6072,22 @@ function PanelContent(props2) {
5848
6072
  onClose,
5849
6073
  showClose: canShowClose(options.mode, panelSize, options.actions)
5850
6074
  }
5851
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5852
- onBack ? /* @__PURE__ */ jsx21(
6075
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6076
+ onBack ? /* @__PURE__ */ jsx22(
5853
6077
  "button",
5854
6078
  {
5855
6079
  type: "button",
5856
- class: `${p19}-icon-btn`,
6080
+ class: `${p20}-icon-btn`,
5857
6081
  onClick: onBack,
5858
6082
  "aria-label": s.moduleBack,
5859
6083
  title: s.moduleBack,
5860
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6084
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5861
6085
  }
5862
6086
  ) : null,
5863
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5864
- /* @__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" })
5865
6089
  ] }),
5866
- view === "history" ? /* @__PURE__ */ jsx21(
6090
+ view === "history" ? /* @__PURE__ */ jsx22(
5867
6091
  ConversationList,
5868
6092
  {
5869
6093
  transport,
@@ -5874,9 +6098,9 @@ function PanelContent(props2) {
5874
6098
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5875
6099
  onNewConversation
5876
6100
  }
5877
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5878
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5879
- /* @__PURE__ */ jsx21(
6101
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6102
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6103
+ /* @__PURE__ */ jsx22(
5880
6104
  MessageList,
5881
6105
  {
5882
6106
  messagesSig,
@@ -5894,9 +6118,9 @@ function PanelContent(props2) {
5894
6118
  }
5895
6119
  ),
5896
6120
  composerArea,
5897
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6121
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5898
6122
  ] }),
5899
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6123
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5900
6124
  ResizeGrip,
5901
6125
  {
5902
6126
  panelEl: containerEl,
@@ -5915,28 +6139,28 @@ function HistoryHeader({
5915
6139
  onClose,
5916
6140
  showClose
5917
6141
  }) {
5918
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5919
- /* @__PURE__ */ jsx21(
6142
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6143
+ /* @__PURE__ */ jsx22(
5920
6144
  "button",
5921
6145
  {
5922
6146
  type: "button",
5923
- class: `${p19}-icon-btn`,
6147
+ class: `${p20}-icon-btn`,
5924
6148
  onClick: onBack,
5925
6149
  "aria-label": strings.historyBack,
5926
6150
  title: strings.historyBack,
5927
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6151
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5928
6152
  }
5929
6153
  ),
5930
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5931
- showClose ? /* @__PURE__ */ jsx21(
6154
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6155
+ showClose ? /* @__PURE__ */ jsx22(
5932
6156
  "button",
5933
6157
  {
5934
6158
  type: "button",
5935
- class: `${p19}-icon-btn`,
6159
+ class: `${p20}-icon-btn`,
5936
6160
  onClick: onClose,
5937
6161
  "aria-label": strings.close,
5938
6162
  title: strings.close,
5939
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6163
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5940
6164
  }
5941
6165
  ) : null
5942
6166
  ] });
@@ -5946,28 +6170,28 @@ function ReadOnlyBanner({
5946
6170
  ctaLabel,
5947
6171
  onNewConversation
5948
6172
  }) {
5949
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5950
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5951
- /* @__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 })
5952
6176
  ] });
5953
6177
  }
5954
6178
  function ComposerFooter({ disclaimer }) {
5955
6179
  if (!disclaimer) return null;
5956
- 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 }) });
5957
6181
  }
5958
6182
  function PoweredByBar({ poweredBy }) {
5959
6183
  if (!poweredBy) return null;
5960
- 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 }) });
5961
6185
  }
5962
6186
  function PoweredBy({ logoUrl, text, href }) {
5963
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5964
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
5965
- 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
5966
6190
  ] });
5967
6191
  if (href) {
5968
- 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 });
5969
6193
  }
5970
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6194
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
5971
6195
  }
5972
6196
 
5973
6197
  // src/ui/form/form-controller.ts
@@ -6050,34 +6274,34 @@ function whenPasses(form, d) {
6050
6274
  }
6051
6275
 
6052
6276
  // src/ui/sidebar.tsx
6053
- 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";
6054
6278
  function Sidebar(props2) {
6055
- const p35 = BRAND.cssPrefix;
6279
+ const p36 = BRAND.cssPrefix;
6056
6280
  const { site, blocks, strings, collapsed } = props2;
6057
6281
  const navigation = blocks?.navigation ?? [];
6058
6282
  const linkCards = blocks?.linkCards ?? [];
6059
6283
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6060
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6061
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6062
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6063
- /* @__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(
6064
6288
  "button",
6065
6289
  {
6066
6290
  type: "button",
6067
- class: `${p35}-sidebar-toggle`,
6291
+ class: `${p36}-sidebar-toggle`,
6068
6292
  "aria-label": toggleLabel,
6069
6293
  "aria-expanded": collapsed ? "false" : "true",
6070
6294
  title: toggleLabel,
6071
6295
  onClick: props2.onToggleCollapsed,
6072
6296
  "data-testid": TID.sidebarToggle,
6073
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6297
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6074
6298
  }
6075
6299
  )
6076
6300
  ] }),
6077
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6078
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6079
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6080
- 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(
6081
6305
  ConversationList,
6082
6306
  {
6083
6307
  transport: props2.transport,
@@ -6093,18 +6317,18 @@ function Sidebar(props2) {
6093
6317
  ] });
6094
6318
  }
6095
6319
  function SidebarBrand({ site }) {
6096
- const p35 = BRAND.cssPrefix;
6320
+ const p36 = BRAND.cssPrefix;
6097
6321
  if (site?.logo?.url) {
6098
6322
  const alt = site.logo.alt ?? site.title ?? "Logo";
6099
- return /* @__PURE__ */ jsxs18("picture", { children: [
6100
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6101
- /* @__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 })
6102
6326
  ] });
6103
6327
  }
6104
- 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 });
6105
6329
  }
6106
6330
  function SidebarToggleIcon({ collapsed }) {
6107
- return /* @__PURE__ */ jsx22(
6331
+ return /* @__PURE__ */ jsx23(
6108
6332
  "svg",
6109
6333
  {
6110
6334
  width: "16",
@@ -6114,38 +6338,38 @@ function SidebarToggleIcon({ collapsed }) {
6114
6338
  stroke: "currentColor",
6115
6339
  "stroke-width": "2",
6116
6340
  "aria-hidden": "true",
6117
- 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" })
6118
6342
  }
6119
6343
  );
6120
6344
  }
6121
6345
  function SidebarNav({ items }) {
6122
- const p35 = BRAND.cssPrefix;
6123
- 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(
6124
6348
  "a",
6125
6349
  {
6126
- class: `${p35}-sidebar-nav-item`,
6350
+ class: `${p36}-sidebar-nav-item`,
6127
6351
  href: item.href,
6128
6352
  target: item.href ? "_blank" : void 0,
6129
6353
  rel: item.href ? "noreferrer" : void 0,
6130
6354
  children: [
6131
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6132
- /* @__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 })
6133
6357
  ]
6134
6358
  }
6135
6359
  ) }, item.id ?? item.label)) });
6136
6360
  }
6137
6361
  function SidebarCards({ items }) {
6138
- const p35 = BRAND.cssPrefix;
6139
- 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(
6140
6364
  "a",
6141
6365
  {
6142
- class: `${p35}-sidebar-card`,
6366
+ class: `${p36}-sidebar-card`,
6143
6367
  href: item.href,
6144
6368
  target: item.href ? "_blank" : void 0,
6145
6369
  rel: item.href ? "noreferrer" : void 0,
6146
6370
  children: [
6147
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6148
- 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
6149
6373
  ]
6150
6374
  },
6151
6375
  item.id ?? item.label
@@ -6153,11 +6377,11 @@ function SidebarCards({ items }) {
6153
6377
  }
6154
6378
 
6155
6379
  // src/ui/page-shell.tsx
6156
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6157
- var p20 = BRAND.cssPrefix;
6380
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6381
+ var p21 = BRAND.cssPrefix;
6158
6382
  function PageShell(props2) {
6159
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6160
- /* @__PURE__ */ jsx23(
6383
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6384
+ /* @__PURE__ */ jsx24(
6161
6385
  Sidebar,
6162
6386
  {
6163
6387
  site: props2.site,
@@ -6174,7 +6398,7 @@ function PageShell(props2) {
6174
6398
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6175
6399
  }
6176
6400
  ),
6177
- /* @__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 })
6178
6402
  ] });
6179
6403
  }
6180
6404
 
@@ -6224,80 +6448,80 @@ var chatLayout = {
6224
6448
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6225
6449
 
6226
6450
  // src/ui/back-header.tsx
6227
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6228
- var p21 = BRAND.cssPrefix;
6451
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6452
+ var p22 = BRAND.cssPrefix;
6229
6453
  function TitleBar({ title, actions }) {
6230
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6231
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6232
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6233
- 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" })
6234
6458
  ] });
6235
6459
  }
6236
6460
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6237
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6238
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6239
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6240
- 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" })
6241
6465
  ] });
6242
6466
  }
6243
6467
 
6244
6468
  // src/ui/home-search.tsx
6245
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6246
- var p22 = BRAND.cssPrefix;
6469
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6470
+ var p23 = BRAND.cssPrefix;
6247
6471
  function HomeSearchButton({ placeholder, onActivate }) {
6248
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6249
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6250
- /* @__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, {}) })
6251
6475
  ] });
6252
6476
  }
6253
6477
  function HelpSearchInput({ placeholder, value, onInput }) {
6254
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6255
- /* @__PURE__ */ jsx25(
6478
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6479
+ /* @__PURE__ */ jsx26(
6256
6480
  "input",
6257
6481
  {
6258
6482
  type: "search",
6259
- class: `${p22}-home-search-input`,
6483
+ class: `${p23}-home-search-input`,
6260
6484
  placeholder,
6261
6485
  value,
6262
6486
  onInput: (e) => onInput(e.currentTarget.value),
6263
6487
  "data-testid": TID.helpSearch
6264
6488
  }
6265
6489
  ),
6266
- /* @__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, {}) })
6267
6491
  ] });
6268
6492
  }
6269
6493
 
6270
6494
  // src/ui/list-row.tsx
6271
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6272
- var p23 = BRAND.cssPrefix;
6495
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6496
+ var p24 = BRAND.cssPrefix;
6273
6497
  function ListRow({ title, subtitle, onClick, testid }) {
6274
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6275
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6276
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6277
- 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
6278
6502
  ] }),
6279
- /* @__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, {}) })
6280
6504
  ] });
6281
6505
  }
6282
6506
 
6283
6507
  // src/ui/module-state.tsx
6284
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6285
- var p24 = BRAND.cssPrefix;
6508
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6509
+ var p25 = BRAND.cssPrefix;
6286
6510
  function ModuleState({
6287
6511
  tone = "info",
6288
6512
  message,
6289
6513
  onRetry,
6290
6514
  strings
6291
6515
  }) {
6292
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6293
- /* @__PURE__ */ jsx27("span", { children: message }),
6294
- 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
6295
6519
  ] });
6296
6520
  }
6297
6521
 
6298
6522
  // src/ui/modules/help.tsx
6299
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6300
- var p25 = BRAND.cssPrefix;
6523
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6524
+ var p26 = BRAND.cssPrefix;
6301
6525
  var log12 = logger.scope("help");
6302
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 });
6303
6527
  function groupByCategory(items) {
@@ -6326,7 +6550,7 @@ function fuzzySearch(items, query) {
6326
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);
6327
6551
  }
6328
6552
  function ArticleRow({ article, nav }) {
6329
- return /* @__PURE__ */ jsx28(
6553
+ return /* @__PURE__ */ jsx29(
6330
6554
  ListRow,
6331
6555
  {
6332
6556
  title: article.title,
@@ -6371,46 +6595,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6371
6595
  }, [query, results, bus]);
6372
6596
  function renderBody() {
6373
6597
  if (query.trim().length > 0) {
6374
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6375
- 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)) });
6376
6600
  }
6377
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6601
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6378
6602
  if (state === "error") {
6379
- 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 });
6380
6604
  }
6381
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6382
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6383
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6384
- /* @__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)) })
6385
6609
  ] }, category));
6386
6610
  }
6387
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6388
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6389
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6390
- /* @__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() })
6391
6615
  ] });
6392
6616
  }
6393
6617
  var helpLayout = {
6394
6618
  Icon: HelpIcon,
6395
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6619
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6396
6620
  };
6397
6621
 
6398
6622
  // src/ui/modules/home.tsx
6399
6623
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6400
6624
 
6401
6625
  // src/ui/home-card.tsx
6402
- import { jsx as jsx29 } from "preact/jsx-runtime";
6403
- var p26 = BRAND.cssPrefix;
6626
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6627
+ var p27 = BRAND.cssPrefix;
6404
6628
  function HomeCard({ onClick, children, testid }) {
6405
6629
  if (onClick) {
6406
- 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 });
6407
6631
  }
6408
- 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 });
6409
6633
  }
6410
6634
 
6411
6635
  // src/ui/modules/home.tsx
6412
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6413
- var p27 = BRAND.cssPrefix;
6636
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6637
+ var p28 = BRAND.cssPrefix;
6414
6638
  var log13 = logger.scope("home");
6415
6639
  function resolveGreeting(props2) {
6416
6640
  const name = props2.options.userContext?.name;
@@ -6453,49 +6677,49 @@ function HomeRoot(props2) {
6453
6677
  const status = config.status;
6454
6678
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6455
6679
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6456
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6457
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6458
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6459
- 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" }),
6460
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6461
- 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,
6462
- /* @__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" })
6463
6687
  ] })
6464
6688
  ] }),
6465
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6466
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6467
- 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
6468
6692
  ] }) : null
6469
6693
  ] }),
6470
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6471
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6694
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6695
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6472
6696
  HomeSearchButton,
6473
6697
  {
6474
6698
  placeholder: strings.homeSearchPlaceholder,
6475
6699
  onActivate: () => nav.switchToLayout("help")
6476
6700
  }
6477
6701
  ) : null,
6478
- 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: [
6479
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6480
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6481
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6482
- 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
6483
6707
  ] }),
6484
- (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
6485
6709
  ] }) }) : null,
6486
- status ? /* @__PURE__ */ jsx30(
6710
+ status ? /* @__PURE__ */ jsx31(
6487
6711
  HomeCard,
6488
6712
  {
6489
6713
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6490
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6491
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6492
- /* @__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 })
6493
6717
  ] })
6494
6718
  }
6495
6719
  ) : null,
6496
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6497
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6498
- /* @__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(
6499
6723
  ListRow,
6500
6724
  {
6501
6725
  title: item.title,
@@ -6511,13 +6735,13 @@ function HomeRoot(props2) {
6511
6735
  }
6512
6736
  var homeLayout = {
6513
6737
  Icon: HomeIcon,
6514
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6738
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6515
6739
  };
6516
6740
 
6517
6741
  // src/ui/modules/news.tsx
6518
6742
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6519
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6520
- var p28 = BRAND.cssPrefix;
6743
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6744
+ var p29 = BRAND.cssPrefix;
6521
6745
  var log14 = logger.scope("news");
6522
6746
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6523
6747
  const tags = config.contentTags;
@@ -6545,37 +6769,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6545
6769
  };
6546
6770
  }, [transport, tags, reloadKey, bus]);
6547
6771
  function renderBody() {
6548
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6772
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6549
6773
  if (state === "error") {
6550
- 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 });
6551
6775
  }
6552
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6553
- 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(
6554
6778
  "button",
6555
6779
  {
6556
6780
  type: "button",
6557
- class: `${p28}-news-card`,
6781
+ class: `${p29}-news-card`,
6558
6782
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6559
6783
  "data-testid": tid(TID.newsItem, item.id),
6560
6784
  children: [
6561
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6562
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6563
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6564
- 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
6565
6789
  ] })
6566
6790
  ]
6567
6791
  },
6568
6792
  item.id
6569
6793
  )) });
6570
6794
  }
6571
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6572
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6573
- /* @__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() })
6574
6798
  ] });
6575
6799
  }
6576
6800
  var newsLayout = {
6577
6801
  Icon: NewsIcon,
6578
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6802
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6579
6803
  };
6580
6804
 
6581
6805
  // src/ui/modules/registry.ts
@@ -6587,28 +6811,28 @@ var LAYOUTS = {
6587
6811
  };
6588
6812
 
6589
6813
  // src/ui/home-tab-bar.tsx
6590
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6591
- var p29 = BRAND.cssPrefix;
6814
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6815
+ var p30 = BRAND.cssPrefix;
6592
6816
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6593
- 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) => {
6594
6818
  const Icon = LAYOUTS[m.layout].Icon;
6595
6819
  const selected = m.id === activeTab;
6596
6820
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6597
- return /* @__PURE__ */ jsxs27(
6821
+ return /* @__PURE__ */ jsxs28(
6598
6822
  "button",
6599
6823
  {
6600
6824
  type: "button",
6601
6825
  role: "tab",
6602
6826
  "aria-selected": selected,
6603
- class: `${p29}-tab`,
6827
+ class: `${p30}-tab`,
6604
6828
  onClick: () => onSelect(m.id),
6605
6829
  "data-testid": tid(TID.tab, m.id),
6606
6830
  children: [
6607
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6608
- /* @__PURE__ */ jsx32(Icon, {}),
6609
- 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
6610
6834
  ] }),
6611
- /* @__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) })
6612
6836
  ]
6613
6837
  },
6614
6838
  m.id
@@ -6617,12 +6841,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6617
6841
  }
6618
6842
 
6619
6843
  // src/ui/iframe-view.tsx
6620
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6621
- var p30 = BRAND.cssPrefix;
6844
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6845
+ var p31 = BRAND.cssPrefix;
6622
6846
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6623
6847
  function IframeView({ url, title, strings, onBack, actions }) {
6624
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6625
- /* @__PURE__ */ jsx33(
6848
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6849
+ /* @__PURE__ */ jsx34(
6626
6850
  BackHeader,
6627
6851
  {
6628
6852
  title: title || strings.moduleBack,
@@ -6631,10 +6855,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6631
6855
  actions
6632
6856
  }
6633
6857
  ),
6634
- /* @__PURE__ */ jsx33(
6858
+ /* @__PURE__ */ jsx34(
6635
6859
  "iframe",
6636
6860
  {
6637
- class: `${p30}-content-frame`,
6861
+ class: `${p31}-content-frame`,
6638
6862
  src: url,
6639
6863
  title: title || "content",
6640
6864
  sandbox: SANDBOX,
@@ -6648,8 +6872,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6648
6872
 
6649
6873
  // src/ui/content-view.tsx
6650
6874
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6651
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6652
- var p31 = BRAND.cssPrefix;
6875
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6876
+ var p32 = BRAND.cssPrefix;
6653
6877
  var log15 = logger.scope("content");
6654
6878
  var READ_DWELL_MS = 5e3;
6655
6879
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6693,16 +6917,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6693
6917
  [bus, id]
6694
6918
  );
6695
6919
  function renderBody() {
6696
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6697
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6698
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6699
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6700
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6701
- /* @__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 ?? "" })
6702
6926
  ] });
6703
6927
  }
6704
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6705
- /* @__PURE__ */ jsx34(
6928
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6929
+ /* @__PURE__ */ jsx35(
6706
6930
  BackHeader,
6707
6931
  {
6708
6932
  title: item?.title || title || strings.moduleBack,
@@ -6712,13 +6936,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6712
6936
  testid: TID.backHeader
6713
6937
  }
6714
6938
  ),
6715
- /* @__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() })
6716
6940
  ] });
6717
6941
  }
6718
6942
 
6719
6943
  // src/ui/messenger-home.tsx
6720
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6721
- var p32 = BRAND.cssPrefix;
6944
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6945
+ var p33 = BRAND.cssPrefix;
6722
6946
  function MessengerHome({
6723
6947
  panelProps,
6724
6948
  enabledModules,
@@ -6789,12 +7013,12 @@ function MessengerHome({
6789
7013
  bus,
6790
7014
  panelProps
6791
7015
  });
6792
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7016
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6793
7017
  if (activeModule) visitedRef.current.add(activeModule.id);
6794
7018
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6795
7019
  const tabRoot = (module) => {
6796
7020
  if (module.layout === "chat") {
6797
- return /* @__PURE__ */ jsx35(
7021
+ return /* @__PURE__ */ jsx36(
6798
7022
  PanelContent,
6799
7023
  {
6800
7024
  ...panelProps,
@@ -6805,14 +7029,14 @@ function MessengerHome({
6805
7029
  );
6806
7030
  }
6807
7031
  const Root = LAYOUTS[module.layout].Root;
6808
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7032
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6809
7033
  };
6810
7034
  const renderReader = () => {
6811
7035
  if (top?.kind === "iframe") {
6812
- 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 });
6813
7037
  }
6814
7038
  if (top?.kind === "content") {
6815
- return /* @__PURE__ */ jsx35(
7039
+ return /* @__PURE__ */ jsx36(
6816
7040
  ContentView,
6817
7041
  {
6818
7042
  id: top.id,
@@ -6827,22 +7051,22 @@ function MessengerHome({
6827
7051
  }
6828
7052
  return null;
6829
7053
  };
6830
- return /* @__PURE__ */ jsxs30(
7054
+ return /* @__PURE__ */ jsxs31(
6831
7055
  "div",
6832
7056
  {
6833
7057
  ref: containerRef,
6834
- class: `${p32}-panel ${p32}-messenger`,
7058
+ class: `${p33}-panel ${p33}-messenger`,
6835
7059
  role: "dialog",
6836
7060
  "aria-modal": "false",
6837
7061
  "aria-label": strings.panelTitle,
6838
7062
  style: { position: "relative" },
6839
7063
  "data-testid": TID.messengerHome,
6840
7064
  children: [
6841
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6842
- 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)),
6843
7067
  renderReader()
6844
7068
  ] }),
6845
- showTabBar ? /* @__PURE__ */ jsx35(
7069
+ showTabBar ? /* @__PURE__ */ jsx36(
6846
7070
  HomeTabBar,
6847
7071
  {
6848
7072
  modules: enabledModules,
@@ -6852,8 +7076,8 @@ function MessengerHome({
6852
7076
  onSelect: nav.switchTab
6853
7077
  }
6854
7078
  ) : null,
6855
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6856
- 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(
6857
7081
  ResizeGrip,
6858
7082
  {
6859
7083
  panelEl: containerRef.current,
@@ -6870,29 +7094,29 @@ function MessengerHome({
6870
7094
  }
6871
7095
 
6872
7096
  // src/ui/modules-empty.tsx
6873
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6874
- var p33 = BRAND.cssPrefix;
7097
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7098
+ var p34 = BRAND.cssPrefix;
6875
7099
  function ModulesEmpty({ strings, onClose }) {
6876
- return /* @__PURE__ */ jsxs31(
7100
+ return /* @__PURE__ */ jsxs32(
6877
7101
  "div",
6878
7102
  {
6879
- class: `${p33}-panel ${p33}-modules-empty`,
7103
+ class: `${p34}-panel ${p34}-modules-empty`,
6880
7104
  role: "dialog",
6881
7105
  "aria-label": strings.panelTitle,
6882
7106
  "data-testid": TID.modulesEmpty,
6883
7107
  children: [
6884
- onClose ? /* @__PURE__ */ jsx36(
7108
+ onClose ? /* @__PURE__ */ jsx37(
6885
7109
  "button",
6886
7110
  {
6887
7111
  type: "button",
6888
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7112
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6889
7113
  onClick: onClose,
6890
7114
  "aria-label": strings.close,
6891
7115
  title: strings.close,
6892
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7116
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6893
7117
  }
6894
7118
  ) : null,
6895
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7119
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6896
7120
  ]
6897
7121
  }
6898
7122
  );
@@ -6915,19 +7139,19 @@ function useLauncherCallout({ callout, persistence }) {
6915
7139
  }
6916
7140
 
6917
7141
  // src/ui/app.tsx
6918
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7142
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6919
7143
  var log16 = logger.scope("app");
6920
- var p34 = BRAND.cssPrefix;
7144
+ var p35 = BRAND.cssPrefix;
6921
7145
  function makeLocalizedWelcome(w, strings) {
6922
7146
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6923
7147
  }
6924
7148
  function firstText(m) {
6925
- return m.partsSig.value.find((p35) => p35.kind === "text")?.textSig.value ?? "";
7149
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
6926
7150
  }
6927
7151
  function allToolPartsSettled(msg) {
6928
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6929
- return tools.length > 0 && tools.every((p35) => {
6930
- 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;
6931
7155
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6932
7156
  });
6933
7157
  }
@@ -7846,12 +8070,12 @@ function App({ options, hostElement, bus }) {
7846
8070
  const renderSurface = (size) => {
7847
8071
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7848
8072
  if (enabledModules.length === 0) {
7849
- 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 });
7850
8074
  }
7851
8075
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7852
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8076
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7853
8077
  }
7854
- return /* @__PURE__ */ jsx37(
8078
+ return /* @__PURE__ */ jsx38(
7855
8079
  MessengerHome,
7856
8080
  {
7857
8081
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7870,7 +8094,7 @@ function App({ options, hostElement, bus }) {
7870
8094
  void handleSelectHistoryConversation(chat.conversationId);
7871
8095
  };
7872
8096
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7873
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8097
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7874
8098
  PageShell,
7875
8099
  {
7876
8100
  site: parsedSite,
@@ -7891,15 +8115,15 @@ function App({ options, hostElement, bus }) {
7891
8115
  }
7892
8116
  if (isInlineLike) {
7893
8117
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7894
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8118
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7895
8119
  }
7896
8120
  const drawerEdgeTab = options.mode === "drawer";
7897
8121
  const triggerOwnedByPage = options.mode === "modal";
7898
8122
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7899
8123
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7900
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7901
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7902
- 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(
7903
8127
  Launcher,
7904
8128
  {
7905
8129
  onToggle: handleOpen,
@@ -7909,7 +8133,7 @@ function App({ options, hostElement, bus }) {
7909
8133
  edgeTab: drawerEdgeTab
7910
8134
  }
7911
8135
  ) : null,
7912
- calloutToRender ? /* @__PURE__ */ jsx37(
8136
+ calloutToRender ? /* @__PURE__ */ jsx38(
7913
8137
  LauncherCallout,
7914
8138
  {
7915
8139
  callout: calloutToRender,
@@ -7974,34 +8198,34 @@ var TRACKED = {
7974
8198
  expand: (on) => ({ on }),
7975
8199
  fullscreen: (on) => ({ on }),
7976
8200
  // Conversation funnel. `send` is the key conversion; text never rides.
7977
- send: (p35) => ({ attachments: p35.attachmentCount }),
7978
- message: (p35) => ({ role: p35.role }),
8201
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8202
+ message: (p36) => ({ role: p36.role }),
7979
8203
  stop: () => void 0,
7980
8204
  clear: () => void 0,
7981
8205
  suggestion: () => void 0,
7982
- toggleHistory: (p35) => ({ view: p35.view }),
8206
+ toggleHistory: (p36) => ({ view: p36.view }),
7983
8207
  handshake: () => void 0,
7984
8208
  // Forms + human-in-the-loop — ids and outcomes, never values.
7985
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8209
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
7986
8210
  toolResult: () => void 0,
7987
- toolDecision: (p35) => ({ approved: p35.approved }),
8211
+ toolDecision: (p36) => ({ approved: p36.approved }),
7988
8212
  // Content — ids, tags + counts only; titles/bodies never ride.
7989
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
7990
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
7991
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
7992
- contentRead: (p35) => ({ contentId: p35.contentId }),
7993
- 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 }),
7994
8218
  // Composer / attachments / voice.
7995
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8219
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
7996
8220
  voiceStart: () => void 0,
7997
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8221
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
7998
8222
  voiceCancel: () => void 0,
7999
8223
  // Preferences — how visitors tune the surface.
8000
8224
  localeChange: (locale) => ({ locale }),
8001
8225
  themeChange: (theme) => ({ theme }),
8002
8226
  textSizeChange: (size) => ({ size }),
8003
- soundToggle: (p35) => ({ muted: p35.muted }),
8004
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8227
+ soundToggle: (p36) => ({ muted: p36.muted }),
8228
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8005
8229
  calloutDismiss: () => void 0,
8006
8230
  // Health signal only — the error object itself never leaves the page.
8007
8231
  error: () => void 0