@helpai/elements 0.46.2 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.mjs CHANGED
@@ -30,7 +30,7 @@ var BRAND = {
30
30
  };
31
31
 
32
32
  // src/core/version.ts
33
- var ELEMENTS_VERSION = true ? "0.46.2" : "0.0.0-dev";
33
+ var ELEMENTS_VERSION = true ? "0.47.0" : "0.0.0-dev";
34
34
  var ELEMENTS_VERSION_PARAM = "_ev";
35
35
 
36
36
  // src/i18n/strings.ts
@@ -91,7 +91,6 @@ var STRINGS_EN = {
91
91
  thinking: "Thinking\u2026",
92
92
  thoughts: "Thoughts",
93
93
  usedTool: "Used tool",
94
- toolDetails: "Details",
95
94
  toolResult: "Result",
96
95
  sources: "Sources",
97
96
  // ── Messenger modules ──────────────────────────────────────────
@@ -138,17 +137,32 @@ var STRINGS_EN = {
138
137
  formChooseAtMost: "Choose at most {max}",
139
138
  formOther: "Other",
140
139
  formOtherPlaceholder: "Type your answer\u2026",
141
- inputRequired: "I need a bit more info",
142
- inputSubmit: "Submit",
140
+ inputRequired: "User Input Required",
141
+ inputBadge: "User Input",
142
+ inputAnswered: "Answered",
143
+ inputSkipped: "Skipped",
144
+ inputQuestion: "Question",
145
+ inputResponse: "Response",
146
+ inputYourAnswer: "Your answer",
147
+ inputSubmit: "Submit answer",
148
+ inputSubmitHint: "Enter to submit \xB7 Shift+Enter for new line",
143
149
  inputSkip: "Skip",
144
150
  inputSubmitted: "Answer submitted",
151
+ respFreeText: "Free Text",
152
+ respSingleChoice: "Single Choice",
153
+ respMultiChoice: "Multiple Choice",
154
+ respConfirmation: "Confirmation",
145
155
  approvalRequired: "Approval required",
146
156
  approve: "Approve",
147
157
  reject: "Reject",
148
158
  approved: "Approved",
149
159
  rejected: "Rejected",
150
160
  approvalReason: "Add a reason (optional)",
151
- stepNoLongerActive: "This request is no longer active."
161
+ stepNoLongerActive: "This request is no longer active.",
162
+ toolParameters: "Parameters",
163
+ statusCompleted: "Completed",
164
+ statusDenied: "Denied",
165
+ statusError: "Error"
152
166
  };
153
167
  var STRINGS_FR = {
154
168
  attach: "Joindre des fichiers",
@@ -207,7 +221,6 @@ var STRINGS_FR = {
207
221
  thinking: "R\xE9flexion\u2026",
208
222
  thoughts: "R\xE9flexions",
209
223
  usedTool: "Outil utilis\xE9",
210
- toolDetails: "D\xE9tails",
211
224
  toolResult: "R\xE9sultat",
212
225
  sources: "Sources",
213
226
  // ── Messenger modules ──────────────────────────────────────────
@@ -254,21 +267,167 @@ var STRINGS_FR = {
254
267
  formChooseAtMost: "Choisissez au plus {max}",
255
268
  formOther: "Autre",
256
269
  formOtherPlaceholder: "Saisissez votre r\xE9ponse\u2026",
257
- inputRequired: "J'ai besoin de quelques pr\xE9cisions",
258
- inputSubmit: "Envoyer",
270
+ inputRequired: "Saisie requise",
271
+ inputBadge: "Saisie",
272
+ inputAnswered: "R\xE9pondu",
273
+ inputSkipped: "Ignor\xE9",
274
+ inputQuestion: "Question",
275
+ inputResponse: "R\xE9ponse",
276
+ inputYourAnswer: "Votre r\xE9ponse",
277
+ inputSubmit: "Envoyer la r\xE9ponse",
278
+ inputSubmitHint: "Entr\xE9e pour envoyer \xB7 Maj+Entr\xE9e pour un saut de ligne",
259
279
  inputSkip: "Ignorer",
260
280
  inputSubmitted: "R\xE9ponse envoy\xE9e",
281
+ respFreeText: "Texte libre",
282
+ respSingleChoice: "Choix unique",
283
+ respMultiChoice: "Choix multiple",
284
+ respConfirmation: "Confirmation",
261
285
  approvalRequired: "Approbation requise",
262
286
  approve: "Approuver",
263
287
  reject: "Refuser",
264
288
  approved: "Approuv\xE9",
265
289
  rejected: "Refus\xE9",
266
290
  approvalReason: "Ajouter une raison (facultatif)",
267
- stepNoLongerActive: "Cette demande n'est plus active."
291
+ stepNoLongerActive: "Cette demande n'est plus active.",
292
+ toolParameters: "Param\xE8tres",
293
+ statusCompleted: "Termin\xE9",
294
+ statusDenied: "Refus\xE9",
295
+ statusError: "Erreur"
296
+ };
297
+ var STRINGS_AR = {
298
+ attach: "\u0625\u0631\u0641\u0627\u0642 \u0645\u0644\u0641\u0627\u062A",
299
+ attachmentMimeRejected: "\u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",
300
+ attachmentTooLarge: "\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u064B\u0627",
301
+ 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",
302
+ conversationClosed: "\u062A\u0645 \u0625\u063A\u0644\u0627\u0642 \u0647\u0630\u0647 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
303
+ conversationLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629\u2026",
304
+ close: "\u0625\u063A\u0644\u0627\u0642",
305
+ collapse: "\u0637\u064A\u0651",
306
+ collapseSidebar: "\u0637\u064A\u0651 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
307
+ composerPlaceholder: "\u0627\u0643\u062A\u0628 \u0631\u0633\u0627\u0644\u0629\u2026",
308
+ dateLastWeek: "\u0622\u062E\u0631 \u0667 \u0623\u064A\u0627\u0645",
309
+ dateOlder: "\u0623\u0642\u062F\u0645",
310
+ dateToday: "\u0627\u0644\u064A\u0648\u0645",
311
+ dateYesterday: "\u0623\u0645\u0633",
312
+ dropZone: "\u0623\u0641\u0644\u062A \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0644\u0625\u0631\u0641\u0627\u0642\u0647\u0627",
313
+ errorGeneric: "\u062D\u062F\u062B \u062E\u0637\u0623 \u0645\u0627",
314
+ 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.",
315
+ errorRetry: "\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
316
+ expand: "\u062A\u0648\u0633\u064A\u0639",
317
+ expandSidebar: "\u062A\u0648\u0633\u064A\u0639 \u0627\u0644\u0634\u0631\u064A\u0637 \u0627\u0644\u062C\u0627\u0646\u0628\u064A",
318
+ exitFullscreen: "\u0625\u0646\u0647\u0627\u0621 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
319
+ fullscreen: "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
320
+ history: "\u0627\u0644\u0633\u062C\u0644",
321
+ historyBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
322
+ historyEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A \u0633\u0627\u0628\u0642\u0629 \u0628\u0639\u062F",
323
+ historyContinue: "\u0645\u062A\u0627\u0628\u0639\u0629 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
324
+ historyLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0645\u062D\u0627\u062F\u062B\u0627\u062A\u0643\u2026",
325
+ historyTitle: "\u0633\u062C\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
326
+ language: "\u0627\u0644\u0644\u063A\u0629",
327
+ launcherOpen: "\u0641\u062A\u062D \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
328
+ launcherLabel: "\u062A\u062D\u062F\u062B \u0645\u0639\u0646\u0627",
329
+ micStart: "\u0628\u062F\u0621 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
330
+ micStop: "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0635\u0648\u062A\u064A",
331
+ 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",
332
+ moreActions: "\u0625\u062C\u0631\u0627\u0621\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
333
+ newConversation: "\u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
334
+ panelTitle: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629",
335
+ resizeHandle: "\u0627\u0633\u062D\u0628 \u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u062D\u062C\u0645",
336
+ scrollToBottom: "\u0627\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0623\u062D\u062F\u062B",
337
+ send: "\u0625\u0631\u0633\u0627\u0644",
338
+ soundOff: "\u0643\u062A\u0645 \u0627\u0644\u0635\u0648\u062A",
339
+ soundOn: "\u062A\u0634\u063A\u064A\u0644 \u0627\u0644\u0635\u0648\u062A",
340
+ startNewConversation: "\u0628\u062F\u0621 \u0645\u062D\u0627\u062F\u062B\u0629 \u062C\u062F\u064A\u062F\u0629",
341
+ stop: "\u0625\u064A\u0642\u0627\u0641",
342
+ theme: "\u0627\u0644\u0645\u0638\u0647\u0631",
343
+ themeAuto: "\u062A\u0644\u0642\u0627\u0626\u064A",
344
+ themeDark: "\u062F\u0627\u0643\u0646",
345
+ themeLight: "\u0641\u0627\u062A\u062D",
346
+ textSize: "\u062D\u062C\u0645 \u0627\u0644\u0646\u0635",
347
+ textSizeSmall: "\u0635\u063A\u064A\u0631",
348
+ textSizeNormal: "\u0639\u0627\u062F\u064A",
349
+ textSizeLarge: "\u0643\u0628\u064A\u0631",
350
+ loading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
351
+ thinking: "\u064A\u0641\u0643\u0631\u2026",
352
+ thoughts: "\u0627\u0644\u0623\u0641\u0643\u0627\u0631",
353
+ usedTool: "\u0623\u062F\u0627\u0629 \u0645\u064F\u0633\u062A\u062E\u062F\u064E\u0645\u0629",
354
+ toolResult: "\u0627\u0644\u0646\u062A\u064A\u062C\u0629",
355
+ sources: "\u0627\u0644\u0645\u0635\u0627\u062F\u0631",
356
+ // ── Messenger modules ──────────────────────────────────────────
357
+ tabHome: "\u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629",
358
+ tabConversations: "\u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A",
359
+ tabHelp: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
360
+ tabNews: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
361
+ modulesEmpty: "\u0644\u0627 \u0634\u064A\u0621 \u0647\u0646\u0627 \u0628\u0639\u062F",
362
+ moduleBack: "\u0631\u062C\u0648\u0639",
363
+ contentLoading: "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
364
+ homeGreeting: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
365
+ homeGreetingNamed: "\u0645\u0631\u062D\u0628\u064B\u0627 {name} \u{1F44B}",
366
+ homeGreetingLead: "\u0643\u064A\u0641 \u064A\u0645\u0643\u0646\u0646\u0627 \u0645\u0633\u0627\u0639\u062F\u062A\u0643\u061F",
367
+ homeSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
368
+ homeContentTitle: "\u0645\u0642\u0627\u0644\u0627\u062A \u0634\u0627\u0626\u0639\u0629",
369
+ homeStatus: "\u0627\u0644\u062D\u0627\u0644\u0629",
370
+ helpTitle: "\u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629",
371
+ helpSearchPlaceholder: "\u0627\u0628\u062D\u062B \u0639\u0646 \u0645\u0633\u0627\u0639\u062F\u0629",
372
+ helpEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0642\u0627\u0644\u0627\u062A \u0645\u0633\u0627\u0639\u062F\u0629 \u0628\u0639\u062F",
373
+ helpLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0629\u2026",
374
+ helpSearchEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0646\u062A\u0627\u0626\u062C",
375
+ newsTitle: "\u0627\u0644\u0623\u062E\u0628\u0627\u0631",
376
+ newsEmpty: "\u0644\u0627 \u062A\u0648\u062C\u062F \u0623\u062E\u0628\u0627\u0631 \u0628\u0639\u062F",
377
+ newsLoading: "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0623\u062E\u0628\u0627\u0631\u2026",
378
+ newsBack: "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0627\u0644\u0623\u062E\u0628\u0627\u0631",
379
+ newsPublishedAt: "\u0646\u064F\u0634\u0631 \u0641\u064A {date}",
380
+ // ── Forms + human-in-the-loop (forms / ask-input / approval) ────
381
+ formSubmit: "\u0625\u0631\u0633\u0627\u0644",
382
+ formSkip: "\u0644\u0627\u062D\u0642\u064B\u0627",
383
+ formSubmitted: "\u062A\u0645",
384
+ formSkipped: "\u0644\u0627\u062D\u0642\u064B\u0627",
385
+ formFillOut: "\u062A\u0639\u0628\u0626\u0629",
386
+ formRequired: "\u0647\u0630\u0627 \u0627\u0644\u062D\u0642\u0644 \u0645\u0637\u0644\u0648\u0628",
387
+ 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",
388
+ formInvalidTel: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0635\u062D\u064A\u062D\u064B\u0627",
389
+ formInvalidUrl: "\u0623\u062F\u062E\u0644 \u0631\u0627\u0628\u0637\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
390
+ formInvalidNumber: "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645\u064B\u0627 \u0635\u062D\u064A\u062D\u064B\u0627",
391
+ 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)",
392
+ 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)",
393
+ formNumberTooSmall: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0642\u0644 \u0639\u0646 {min}",
394
+ formNumberTooLarge: "\u064A\u062C\u0628 \u0623\u0644\u0627 \u064A\u0632\u064A\u062F \u0639\u0646 {max}",
395
+ 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",
396
+ formChooseAtLeast: "\u0627\u062E\u062A\u0631 {min} \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644",
397
+ formChooseAtMost: "\u0627\u062E\u062A\u0631 {max} \u0639\u0644\u0649 \u0627\u0644\u0623\u0643\u062B\u0631",
398
+ formOther: "\u0623\u062E\u0631\u0649",
399
+ formOtherPlaceholder: "\u0627\u0643\u062A\u0628 \u0625\u062C\u0627\u0628\u062A\u0643\u2026",
400
+ inputRequired: "\u0645\u0637\u0644\u0648\u0628 \u0625\u062F\u062E\u0627\u0644 \u0645\u0646 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
401
+ inputBadge: "\u0625\u062F\u062E\u0627\u0644 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
402
+ inputAnswered: "\u062A\u0645\u062A \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
403
+ inputSkipped: "\u062A\u0645 \u0627\u0644\u062A\u062E\u0637\u064A",
404
+ inputQuestion: "\u0627\u0644\u0633\u0624\u0627\u0644",
405
+ inputResponse: "\u0627\u0644\u0625\u062C\u0627\u0628\u0629",
406
+ inputYourAnswer: "\u0625\u062C\u0627\u0628\u062A\u0643",
407
+ inputSubmit: "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
408
+ inputSubmitHint: "Enter \u0644\u0644\u0625\u0631\u0633\u0627\u0644 \xB7 Shift+Enter \u0644\u0633\u0637\u0631 \u062C\u062F\u064A\u062F",
409
+ inputSkip: "\u062A\u062E\u0637\u064D\u0651",
410
+ inputSubmitted: "\u062A\u0645 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0625\u062C\u0627\u0628\u0629",
411
+ respFreeText: "\u0646\u0635 \u062D\u0631",
412
+ respSingleChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0648\u0627\u062D\u062F",
413
+ respMultiChoice: "\u0627\u062E\u062A\u064A\u0627\u0631 \u0645\u062A\u0639\u062F\u062F",
414
+ respConfirmation: "\u062A\u0623\u0643\u064A\u062F",
415
+ approvalRequired: "\u0645\u0637\u0644\u0648\u0628 \u0645\u0648\u0627\u0641\u0642\u0629",
416
+ approve: "\u0645\u0648\u0627\u0641\u0642\u0629",
417
+ reject: "\u0631\u0641\u0636",
418
+ approved: "\u062A\u0645\u062A \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629",
419
+ rejected: "\u0645\u0631\u0641\u0648\u0636",
420
+ approvalReason: "\u0623\u0636\u0641 \u0633\u0628\u0628\u064B\u0627 (\u0627\u062E\u062A\u064A\u0627\u0631\u064A)",
421
+ stepNoLongerActive: "\u0644\u0645 \u064A\u0639\u062F \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 \u0646\u0634\u0637\u064B\u0627.",
422
+ toolParameters: "\u0627\u0644\u0645\u0639\u0637\u064A\u0627\u062A",
423
+ statusCompleted: "\u0645\u0643\u062A\u0645\u0644",
424
+ statusDenied: "\u0645\u0631\u0641\u0648\u0636",
425
+ statusError: "\u062E\u0637\u0623"
268
426
  };
269
427
  var BUILTIN_STRINGS = {
270
428
  en: STRINGS_EN,
271
- fr: STRINGS_FR
429
+ fr: STRINGS_FR,
430
+ ar: STRINGS_AR
272
431
  };
273
432
  function resolveStrings(locale, override) {
274
433
  const tag = primaryTag(locale);
@@ -1204,7 +1363,7 @@ var tokens_default = ':host{--__P__-accent-user: __BRAND_ACCENT__;--__P__-accent
1204
1363
  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';
1205
1364
 
1206
1365
  // src/styles/panel.css
1207
- 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';
1366
+ 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';
1208
1367
 
1209
1368
  // src/styles/standalone.css
1210
1369
  var standalone_default = ".__P__-standalone-page{margin:0;height:100vh;background:var(--__P__-bg, #fff);display:grid;place-items:stretch}\n";
@@ -1292,22 +1451,22 @@ function attachAdoptedSheet(shadow, doc) {
1292
1451
  }
1293
1452
  }
1294
1453
  function applyThemeOverrides(host, overrides) {
1295
- const p35 = BRAND.cssPrefix;
1296
- if (overrides.accent) host.style.setProperty(`--${p35}-accent-user`, overrides.accent);
1297
- if (overrides.accentText) host.style.setProperty(`--${p35}-accent-text-user`, overrides.accentText);
1298
- if (overrides.radius) host.style.setProperty(`--${p35}-radius`, overrides.radius);
1299
- if (overrides.fontFamily) host.style.setProperty(`--${p35}-font`, overrides.fontFamily);
1454
+ const p36 = BRAND.cssPrefix;
1455
+ if (overrides.accent) host.style.setProperty(`--${p36}-accent-user`, overrides.accent);
1456
+ if (overrides.accentText) host.style.setProperty(`--${p36}-accent-text-user`, overrides.accentText);
1457
+ if (overrides.radius) host.style.setProperty(`--${p36}-radius`, overrides.radius);
1458
+ if (overrides.fontFamily) host.style.setProperty(`--${p36}-font`, overrides.fontFamily);
1300
1459
  }
1301
1460
  function applyThemeMode(host, mode) {
1302
1461
  host.dataset.theme = mode;
1303
1462
  }
1304
1463
  function applySize(host, size) {
1305
- const p35 = BRAND.cssPrefix;
1306
- if (size.width !== void 0) host.style.setProperty(`--${p35}-panel-w`, size.width);
1307
- if (size.height !== void 0) host.style.setProperty(`--${p35}-panel-h`, size.height);
1308
- if (size.expanded?.width !== void 0) host.style.setProperty(`--${p35}-expanded-w`, size.expanded.width);
1309
- if (size.expanded?.height !== void 0) host.style.setProperty(`--${p35}-expanded-h`, size.expanded.height);
1310
- if (size.inset !== void 0) host.style.setProperty(`--${p35}-panel-inset`, size.inset);
1464
+ const p36 = BRAND.cssPrefix;
1465
+ if (size.width !== void 0) host.style.setProperty(`--${p36}-panel-w`, size.width);
1466
+ if (size.height !== void 0) host.style.setProperty(`--${p36}-panel-h`, size.height);
1467
+ if (size.expanded?.width !== void 0) host.style.setProperty(`--${p36}-expanded-w`, size.expanded.width);
1468
+ if (size.expanded?.height !== void 0) host.style.setProperty(`--${p36}-expanded-h`, size.expanded.height);
1469
+ if (size.inset !== void 0) host.style.setProperty(`--${p36}-panel-inset`, size.inset);
1311
1470
  }
1312
1471
  function applyPosition(host, pos) {
1313
1472
  host.dataset.position = pos;
@@ -1571,11 +1730,11 @@ function toBase64Url(json) {
1571
1730
  var nonEmpty = (ctx) => ctx && Object.keys(ctx).length > 0 ? ctx : void 0;
1572
1731
  function encodeContext(user, page) {
1573
1732
  const u = nonEmpty(user);
1574
- const p35 = nonEmpty(page);
1575
- if (!u && !p35) return void 0;
1733
+ const p36 = nonEmpty(page);
1734
+ if (!u && !p36) return void 0;
1576
1735
  const envelope = {};
1577
1736
  if (u) envelope.user = u;
1578
- if (p35) envelope.page = p35;
1737
+ if (p36) envelope.page = p36;
1579
1738
  return toBase64Url(JSON.stringify(envelope));
1580
1739
  }
1581
1740
 
@@ -1585,8 +1744,8 @@ function parseWireDate(value) {
1585
1744
  const ms = Date.parse(value);
1586
1745
  return Number.isFinite(ms) ? ms : void 0;
1587
1746
  }
1588
- function toolPartType(toolName) {
1589
- const bare = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
1747
+ function toolPartType(toolName2) {
1748
+ const bare = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
1590
1749
  return `tool-${bare}`;
1591
1750
  }
1592
1751
  function toolNameFromType(type) {
@@ -1674,8 +1833,8 @@ function buildSendMessageRequest(params) {
1674
1833
  if (tools?.length) body.data = { tools };
1675
1834
  return body;
1676
1835
  }
1677
- function isResolvedToolPart(p35) {
1678
- return p35.state === "output-available" || p35.state === "output-error" || p35.state === "output-denied" || p35.approval?.approved !== void 0;
1836
+ function isResolvedToolPart(p36) {
1837
+ return p36.state === "output-available" || p36.state === "output-error" || p36.state === "output-denied" || p36.approval?.approved !== void 0;
1679
1838
  }
1680
1839
  function normalizeToolRef(ref) {
1681
1840
  if (typeof ref === "string") return ref ? { code: ref } : null;
@@ -1683,29 +1842,29 @@ function normalizeToolRef(ref) {
1683
1842
  }
1684
1843
  function messageToWireParts(m) {
1685
1844
  const out = [];
1686
- for (const p35 of m.parts) {
1687
- if (p35.kind === "step-start") {
1845
+ for (const p36 of m.parts) {
1846
+ if (p36.kind === "step-start") {
1688
1847
  out.push({ type: "step-start" });
1689
1848
  }
1690
- if (p35.kind === "reasoning" && p35.text) {
1691
- out.push({ type: "reasoning", text: p35.text, state: p35.done ? "done" : "streaming" });
1849
+ if (p36.kind === "reasoning" && p36.text) {
1850
+ out.push({ type: "reasoning", text: p36.text, state: p36.done ? "done" : "streaming" });
1692
1851
  }
1693
- if (p35.kind === "text" && p35.text) {
1694
- out.push({ text: p35.text, type: "text" });
1852
+ if (p36.kind === "text" && p36.text) {
1853
+ out.push({ text: p36.text, type: "text" });
1695
1854
  }
1696
- if (p35.kind === "file" && p35.url) {
1697
- out.push({ mediaType: p35.mediaType, type: "file", url: p35.url });
1855
+ if (p36.kind === "file" && p36.url) {
1856
+ out.push({ mediaType: p36.mediaType, type: "file", url: p36.url });
1698
1857
  }
1699
- if (p35.kind === "tool" && isResolvedToolPart(p35)) {
1858
+ if (p36.kind === "tool" && isResolvedToolPart(p36)) {
1700
1859
  const part = {
1701
- type: toolPartType(p35.toolName),
1702
- toolCallId: p35.toolCallId,
1703
- state: p35.state
1860
+ type: toolPartType(p36.toolName),
1861
+ toolCallId: p36.toolCallId,
1862
+ state: p36.state
1704
1863
  };
1705
- if (p35.input !== void 0) part.input = p35.input;
1706
- if (p35.output !== void 0) part.output = p35.output;
1707
- if (p35.error !== void 0) part.errorText = p35.error;
1708
- if (p35.approval && p35.approval.approved !== void 0) part.approval = p35.approval;
1864
+ if (p36.input !== void 0) part.input = p36.input;
1865
+ if (p36.output !== void 0) part.output = p36.output;
1866
+ if (p36.error !== void 0) part.errorText = p36.error;
1867
+ if (p36.approval && p36.approval.approved !== void 0) part.approval = p36.approval;
1709
1868
  out.push(part);
1710
1869
  }
1711
1870
  }
@@ -2374,12 +2533,13 @@ function makeAssistantMessage() {
2374
2533
  };
2375
2534
  }
2376
2535
  function makeInstantWelcomeMessage(m) {
2536
+ const id = uuid7();
2377
2537
  return toReactive({
2378
- id: m.id,
2538
+ id,
2379
2539
  role: m.role,
2380
2540
  createdAt: Date.now(),
2381
2541
  status: "complete",
2382
- parts: [{ kind: "text", id: `${m.id}-t0`, text: m.text, done: true }]
2542
+ parts: [{ kind: "text", id: `${id}-t0`, text: m.text, done: true }]
2383
2543
  });
2384
2544
  }
2385
2545
  function toReactive(m) {
@@ -2440,7 +2600,7 @@ function fromWireMessage(w) {
2440
2600
  };
2441
2601
  }
2442
2602
  return null;
2443
- }).filter((p35) => p35 !== null);
2603
+ }).filter((p36) => p36 !== null);
2444
2604
  return {
2445
2605
  id: w.id,
2446
2606
  role: w.role,
@@ -2474,43 +2634,43 @@ function assistantText(m) {
2474
2634
  }
2475
2635
  return out;
2476
2636
  }
2477
- function partToReactive(p35) {
2478
- if (p35.kind === "text" || p35.kind === "reasoning") {
2479
- return { kind: p35.kind, id: p35.id, textSig: signal(p35.text), doneSig: signal(p35.done) };
2637
+ function partToReactive(p36) {
2638
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2639
+ return { kind: p36.kind, id: p36.id, textSig: signal(p36.text), doneSig: signal(p36.done) };
2480
2640
  }
2481
- if (p35.kind === "tool") {
2641
+ if (p36.kind === "tool") {
2482
2642
  return {
2483
2643
  kind: "tool",
2484
- toolCallId: p35.toolCallId,
2485
- toolName: p35.toolName,
2486
- inputPartialSig: signal(p35.inputPartial),
2487
- inputSig: signal(p35.input),
2488
- outputSig: signal(p35.output),
2489
- errorSig: signal(p35.error),
2490
- stateSig: signal(p35.state),
2491
- approvalSig: signal(p35.approval)
2644
+ toolCallId: p36.toolCallId,
2645
+ toolName: p36.toolName,
2646
+ inputPartialSig: signal(p36.inputPartial),
2647
+ inputSig: signal(p36.input),
2648
+ outputSig: signal(p36.output),
2649
+ errorSig: signal(p36.error),
2650
+ stateSig: signal(p36.state),
2651
+ approvalSig: signal(p36.approval)
2492
2652
  };
2493
2653
  }
2494
- return p35;
2654
+ return p36;
2495
2655
  }
2496
- function partFromReactive(p35) {
2497
- if (p35.kind === "text" || p35.kind === "reasoning") {
2498
- return { kind: p35.kind, id: p35.id, text: p35.textSig.value, done: p35.doneSig.value };
2656
+ function partFromReactive(p36) {
2657
+ if (p36.kind === "text" || p36.kind === "reasoning") {
2658
+ return { kind: p36.kind, id: p36.id, text: p36.textSig.value, done: p36.doneSig.value };
2499
2659
  }
2500
- if (p35.kind === "tool") {
2660
+ if (p36.kind === "tool") {
2501
2661
  return {
2502
2662
  kind: "tool",
2503
- toolCallId: p35.toolCallId,
2504
- toolName: p35.toolName,
2505
- inputPartial: p35.inputPartialSig.value,
2506
- input: p35.inputSig.value,
2507
- output: p35.outputSig.value,
2508
- error: p35.errorSig.value,
2509
- state: p35.stateSig.value,
2510
- approval: p35.approvalSig.value
2663
+ toolCallId: p36.toolCallId,
2664
+ toolName: p36.toolName,
2665
+ inputPartial: p36.inputPartialSig.value,
2666
+ input: p36.inputSig.value,
2667
+ output: p36.outputSig.value,
2668
+ error: p36.errorSig.value,
2669
+ state: p36.stateSig.value,
2670
+ approval: p36.approvalSig.value
2511
2671
  };
2512
2672
  }
2513
- return p35;
2673
+ return p36;
2514
2674
  }
2515
2675
 
2516
2676
  // src/stream/reducer.ts
@@ -2556,8 +2716,8 @@ var StreamReducer = class {
2556
2716
  ensureTextPart(m, "text", chunk.id);
2557
2717
  return;
2558
2718
  case "text-delta": {
2559
- const p35 = ensureTextPart(m, "text", chunk.id);
2560
- p35.textSig.value += chunk.delta;
2719
+ const p36 = ensureTextPart(m, "text", chunk.id);
2720
+ p36.textSig.value += chunk.delta;
2561
2721
  return;
2562
2722
  }
2563
2723
  case "text-end":
@@ -2567,8 +2727,8 @@ var StreamReducer = class {
2567
2727
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2568
2728
  return;
2569
2729
  case "reasoning-delta": {
2570
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2571
- p35.textSig.value += chunk.delta;
2730
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2731
+ p36.textSig.value += chunk.delta;
2572
2732
  return;
2573
2733
  }
2574
2734
  case "reasoning-end":
@@ -2618,19 +2778,19 @@ var StreamReducer = class {
2618
2778
  }
2619
2779
  };
2620
2780
  function ensureTextPart(m, kind, id) {
2621
- const existing = m.partsSig.value.find((p35) => p35.kind === kind && p35.id === id);
2781
+ const existing = m.partsSig.value.find((p36) => p36.kind === kind && p36.id === id);
2622
2782
  if (existing) return existing;
2623
2783
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2624
2784
  appendPart(m, part);
2625
2785
  return part;
2626
2786
  }
2627
- function ensureToolPart(m, toolCallId, toolName) {
2628
- const existing = m.partsSig.value.find((p35) => p35.kind === "tool" && p35.toolCallId === toolCallId);
2787
+ function ensureToolPart(m, toolCallId, toolName2) {
2788
+ const existing = m.partsSig.value.find((p36) => p36.kind === "tool" && p36.toolCallId === toolCallId);
2629
2789
  if (existing) return existing;
2630
2790
  const part = {
2631
2791
  kind: "tool",
2632
2792
  toolCallId,
2633
- toolName: toolName ?? "tool",
2793
+ toolName: toolName2 ?? "tool",
2634
2794
  inputPartialSig: signal2(""),
2635
2795
  inputSig: signal2(void 0),
2636
2796
  outputSig: signal2(void 0),
@@ -2645,7 +2805,7 @@ function appendPart(m, part) {
2645
2805
  m.partsSig.value = [...m.partsSig.value, part];
2646
2806
  }
2647
2807
  function appendSource(m, source) {
2648
- if (m.partsSig.value.some((p35) => p35.kind === "source" && p35.sourceId === source.sourceId)) return;
2808
+ if (m.partsSig.value.some((p36) => p36.kind === "source" && p36.sourceId === source.sourceId)) return;
2649
2809
  appendPart(m, source);
2650
2810
  }
2651
2811
  function applyTool(m, chunk) {
@@ -2654,37 +2814,37 @@ function applyTool(m, chunk) {
2654
2814
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2655
2815
  return;
2656
2816
  case "tool-input-delta": {
2657
- const p35 = ensureToolPart(m, chunk.toolCallId);
2658
- p35.inputPartialSig.value += chunk.inputTextDelta;
2817
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2818
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2659
2819
  return;
2660
2820
  }
2661
2821
  case "tool-input-available": {
2662
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2663
- p35.inputSig.value = chunk.input;
2664
- p35.stateSig.value = "input-available";
2822
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2823
+ p36.inputSig.value = chunk.input;
2824
+ p36.stateSig.value = "input-available";
2665
2825
  return;
2666
2826
  }
2667
2827
  case "tool-approval-request": {
2668
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2669
- p35.approvalSig.value = { id: chunk.approvalId };
2670
- p35.stateSig.value = "approval-requested";
2828
+ const p36 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2829
+ p36.approvalSig.value = { id: chunk.approvalId };
2830
+ p36.stateSig.value = "approval-requested";
2671
2831
  return;
2672
2832
  }
2673
2833
  case "tool-output-available": {
2674
- const p35 = ensureToolPart(m, chunk.toolCallId);
2675
- p35.outputSig.value = chunk.output;
2676
- p35.stateSig.value = "output-available";
2834
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2835
+ p36.outputSig.value = chunk.output;
2836
+ p36.stateSig.value = "output-available";
2677
2837
  return;
2678
2838
  }
2679
2839
  case "tool-output-error": {
2680
- const p35 = ensureToolPart(m, chunk.toolCallId);
2681
- p35.errorSig.value = chunk.errorText;
2682
- p35.stateSig.value = "output-error";
2840
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2841
+ p36.errorSig.value = chunk.errorText;
2842
+ p36.stateSig.value = "output-error";
2683
2843
  return;
2684
2844
  }
2685
2845
  case "tool-output-denied": {
2686
- const p35 = ensureToolPart(m, chunk.toolCallId);
2687
- p35.stateSig.value = "output-denied";
2846
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2847
+ p36.stateSig.value = "output-denied";
2688
2848
  return;
2689
2849
  }
2690
2850
  default:
@@ -3381,24 +3541,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3381
3541
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3382
3542
  import { jsx as jsx3 } from "preact/jsx-runtime";
3383
3543
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3384
- const p35 = BRAND.cssPrefix;
3544
+ const p36 = BRAND.cssPrefix;
3385
3545
  const dragRef = useRef(null);
3386
3546
  useEffect2(() => {
3387
3547
  if (!panelEl) return;
3388
3548
  const style = panelEl.style;
3389
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3390
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3391
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3392
- if (resize.maxHeight) style.setProperty(`--${p35}-resize-max-h`, resize.maxHeight);
3549
+ if (resize.minWidth) style.setProperty(`--${p36}-resize-min-w`, resize.minWidth);
3550
+ if (resize.maxWidth) style.setProperty(`--${p36}-resize-max-w`, resize.maxWidth);
3551
+ if (resize.minHeight) style.setProperty(`--${p36}-resize-min-h`, resize.minHeight);
3552
+ if (resize.maxHeight) style.setProperty(`--${p36}-resize-max-h`, resize.maxHeight);
3393
3553
  if (initialSize) {
3394
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3395
- style.setProperty(`--${p35}-widget-h`, `${initialSize.height}px`);
3554
+ style.setProperty(`--${p36}-widget-w`, `${initialSize.width}px`);
3555
+ style.setProperty(`--${p36}-widget-h`, `${initialSize.height}px`);
3396
3556
  }
3397
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3557
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3398
3558
  if (!panelEl) return null;
3399
3559
  const isTop = position.startsWith("top-");
3400
3560
  const isRight = position.endsWith("-right");
3401
- const cornerClass = `${p35}-resize-grip ${p35}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3561
+ const cornerClass = `${p36}-resize-grip ${p36}-resize-grip--${isTop ? "bottom" : "top"}-${isRight ? "left" : "right"}`;
3402
3562
  const onPointerDown = (e) => {
3403
3563
  if (!panelEl) return;
3404
3564
  const target = e.currentTarget;
@@ -3423,8 +3583,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3423
3583
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3424
3584
  const dx = (e.clientX - d.startX) * d.dirX;
3425
3585
  const dy = (e.clientY - d.startY) * d.dirY;
3426
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3427
- panelEl.style.setProperty(`--${p35}-widget-h`, `${d.startH + dy}px`);
3586
+ panelEl.style.setProperty(`--${p36}-widget-w`, `${d.startW + dx}px`);
3587
+ panelEl.style.setProperty(`--${p36}-widget-h`, `${d.startH + dy}px`);
3428
3588
  };
3429
3589
  const onPointerUp = (e) => {
3430
3590
  const d = dragRef.current;
@@ -4161,7 +4321,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4161
4321
  // src/ui/overflow-menu.tsx
4162
4322
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4163
4323
  function OverflowMenu({ items, triggerLabel }) {
4164
- const p35 = BRAND.cssPrefix;
4324
+ const p36 = BRAND.cssPrefix;
4165
4325
  const menu = usePopoverMenu({ itemCount: items.length });
4166
4326
  const handleSelect = (item) => {
4167
4327
  if (item.disabled) return;
@@ -4184,13 +4344,13 @@ function OverflowMenu({ items, triggerLabel }) {
4184
4344
  e.stopPropagation();
4185
4345
  pickSegment(item, segs[next].value);
4186
4346
  };
4187
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4347
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4188
4348
  /* @__PURE__ */ jsx8(
4189
4349
  "button",
4190
4350
  {
4191
4351
  ref: menu.triggerRef,
4192
4352
  type: "button",
4193
- class: `${p35}-icon-btn`,
4353
+ class: `${p36}-icon-btn`,
4194
4354
  "aria-label": triggerLabel,
4195
4355
  "aria-haspopup": "menu",
4196
4356
  "aria-expanded": menu.open,
@@ -4204,7 +4364,7 @@ function OverflowMenu({ items, triggerLabel }) {
4204
4364
  "div",
4205
4365
  {
4206
4366
  ref: menu.menuRef,
4207
- class: `${p35}-menu`,
4367
+ class: `${p36}-menu`,
4208
4368
  role: "menu",
4209
4369
  "aria-label": triggerLabel,
4210
4370
  onKeyDown: menu.onMenuKey,
@@ -4214,14 +4374,14 @@ function OverflowMenu({ items, triggerLabel }) {
4214
4374
  "div",
4215
4375
  {
4216
4376
  role: "menuitem",
4217
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4377
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4218
4378
  "aria-label": item.label,
4219
4379
  tabIndex: -1,
4220
4380
  onKeyDown: (e) => onSegmentRowKey(e, item),
4221
4381
  children: [
4222
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4223
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4224
- /* @__PURE__ */ jsx8("span", { class: `${p35}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4382
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4383
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4384
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-segmented`, role: "group", "aria-label": item.label, children: item.segments.map((seg) => {
4225
4385
  const active = seg.value === item.value;
4226
4386
  return /* @__PURE__ */ jsx8(
4227
4387
  "button",
@@ -4229,7 +4389,7 @@ function OverflowMenu({ items, triggerLabel }) {
4229
4389
  type: "button",
4230
4390
  role: "menuitemradio",
4231
4391
  "aria-checked": active,
4232
- class: `${p35}-segment`,
4392
+ class: `${p36}-segment`,
4233
4393
  "data-on": active ? "true" : void 0,
4234
4394
  lang: seg.lang,
4235
4395
  title: seg.value,
@@ -4249,14 +4409,14 @@ function OverflowMenu({ items, triggerLabel }) {
4249
4409
  {
4250
4410
  type: "button",
4251
4411
  role: "menuitem",
4252
- class: `${p35}-menu-item`,
4412
+ class: `${p36}-menu-item`,
4253
4413
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4254
4414
  disabled: item.disabled,
4255
4415
  onClick: () => handleSelect(item),
4256
4416
  children: [
4257
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4258
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4259
- item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4417
+ item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-icon`, children: item.icon }) : null,
4418
+ /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-label`, children: item.label }),
4419
+ item.type === "switch" && item.on ? /* @__PURE__ */ jsx8("span", { class: `${p36}-menu-check`, "aria-hidden": "true", children: /* @__PURE__ */ jsx8(CheckIcon, {}) }) : null
4260
4420
  ]
4261
4421
  },
4262
4422
  item.id
@@ -4499,6 +4659,7 @@ function DynamicForm({
4499
4659
  onSubmit,
4500
4660
  skipLabel,
4501
4661
  onSkip,
4662
+ footerHint,
4502
4663
  disabled,
4503
4664
  rootTestId,
4504
4665
  submitTestId,
@@ -4545,6 +4706,7 @@ function DynamicForm({
4545
4706
  field.name
4546
4707
  )),
4547
4708
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4709
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4548
4710
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4549
4711
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4550
4712
  ] })
@@ -4799,9 +4961,9 @@ function FormDoneMarker({
4799
4961
  import { useComputed as useComputed5 } from "@preact/signals";
4800
4962
 
4801
4963
  // src/stream/constants.ts
4802
- function isAskUserInputTool(toolName) {
4803
- if (!toolName) return false;
4804
- const name = toolName.startsWith("tool:") ? toolName.slice(5) : toolName;
4964
+ function isAskUserInputTool(toolName2) {
4965
+ if (!toolName2) return false;
4966
+ const name = toolName2.startsWith("tool:") ? toolName2.slice(5) : toolName2;
4805
4967
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4806
4968
  }
4807
4969
 
@@ -4895,36 +5057,92 @@ function SourceView({ part, strings }) {
4895
5057
 
4896
5058
  // src/ui/tool-approval.tsx
4897
5059
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4898
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
5060
+
5061
+ // src/ui/tool-card.tsx
5062
+ import { jsx as jsx14, jsxs as jsxs11 } from "preact/jsx-runtime";
4899
5063
  var p13 = BRAND.cssPrefix;
4900
- function displayToolName(toolName) {
4901
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ");
5064
+ function toolName(raw) {
5065
+ if (raw.startsWith("tool:")) return raw.slice(5);
5066
+ if (raw.startsWith("tool-")) return raw.slice(5);
5067
+ return raw;
5068
+ }
5069
+ function statusOf(state, approval) {
5070
+ if (state === "output-error") return "error";
5071
+ if (state === "output-denied" || approval?.approved === false) return "denied";
5072
+ if (state === "output-available") return "completed";
5073
+ if (approval?.approved === true) return "approved";
5074
+ return "pending";
5075
+ }
5076
+ var ICON = {
5077
+ completed: "\u2713",
5078
+ approved: "\u2713",
5079
+ denied: "\u2715",
5080
+ error: "\u26A0",
5081
+ pending: "\u2022"
5082
+ };
5083
+ function ToolStatus({
5084
+ state,
5085
+ approval,
5086
+ strings
5087
+ }) {
5088
+ const status = statusOf(state, approval);
5089
+ const label = status === "completed" ? strings.statusCompleted : status === "approved" ? strings.approved : status === "denied" ? strings.statusDenied : status === "error" ? strings.statusError : "";
5090
+ if (!label) return null;
5091
+ return /* @__PURE__ */ jsxs11("span", { class: `${p13}-toolui-status`, "data-status": status, children: [
5092
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-status-icon`, "aria-hidden": "true", children: ICON[status] }),
5093
+ label
5094
+ ] });
5095
+ }
5096
+ function ToolSection({ label, value, error }) {
5097
+ const text = error ? String(value ?? "") : pretty(unwrapResult(value));
5098
+ if (!text) return null;
5099
+ return /* @__PURE__ */ jsxs11("div", { class: `${p13}-toolui-section`, children: [
5100
+ /* @__PURE__ */ jsx14("span", { class: `${p13}-toolui-label`, children: label }),
5101
+ /* @__PURE__ */ jsx14("pre", { class: `${p13}-toolui-code`, "data-error": error ? "true" : void 0, children: text })
5102
+ ] });
4902
5103
  }
5104
+ function unwrapResult(output) {
5105
+ if (output && typeof output === "object") {
5106
+ const rec = output;
5107
+ if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5108
+ }
5109
+ return output;
5110
+ }
5111
+ function pretty(value) {
5112
+ if (value == null) return "";
5113
+ try {
5114
+ const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5115
+ if (!json || json === "{}" || json === "[]" || json === '""') return "";
5116
+ return json.length > 800 ? `${json.slice(0, 800)}\u2026` : json;
5117
+ } catch {
5118
+ return "";
5119
+ }
5120
+ }
5121
+
5122
+ // src/ui/tool-approval.tsx
5123
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5124
+ var p14 = BRAND.cssPrefix;
4903
5125
  function ToolApproval({ part, strings, active, onDecision }) {
4904
5126
  const approval = useComputed2(() => part.approvalSig.value);
5127
+ const state = useComputed2(() => part.stateSig.value);
4905
5128
  const input = useComputed2(() => part.inputSig.value);
5129
+ const output = useComputed2(() => part.outputSig.value);
5130
+ const error = useComputed2(() => part.errorSig.value);
4906
5131
  const reason = useSignal("");
4907
- const decided = approval.value?.approved !== void 0;
4908
- if (decided) {
4909
- const ap = approval.value;
4910
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4911
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4912
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4913
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4914
- ] });
4915
- }
4916
- const args = summarizeInput(input.value);
4917
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4918
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4919
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4920
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) })
5132
+ const decided = approval.value?.approved !== void 0 || state.value !== "approval-requested";
5133
+ return /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui`, "data-testid": decided ? TID.toolDecision : TID.toolApproval, children: [
5134
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-toolui-head`, children: [
5135
+ /* @__PURE__ */ jsx15("strong", { class: `${p14}-toolui-title`, children: toolName(part.toolName) }),
5136
+ 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 })
4921
5137
  ] }),
4922
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4923
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4924
- /* @__PURE__ */ jsx14(
5138
+ /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolParameters, value: input.value }),
5139
+ output.value !== void 0 ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5140
+ error.value ? /* @__PURE__ */ jsx15(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null,
5141
+ decided ? null : active ? /* @__PURE__ */ jsxs12(Fragment2, { children: [
5142
+ /* @__PURE__ */ jsx15(
4925
5143
  "input",
4926
5144
  {
4927
- class: `${p13}-field-input`,
5145
+ class: `${p14}-field-input`,
4928
5146
  value: reason.value,
4929
5147
  placeholder: strings.approvalReason,
4930
5148
  onInput: (e) => {
@@ -4932,40 +5150,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4932
5150
  }
4933
5151
  }
4934
5152
  ),
4935
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4936
- /* @__PURE__ */ jsx14(
5153
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5154
+ /* @__PURE__ */ jsx15(
4937
5155
  "button",
4938
5156
  {
4939
5157
  type: "button",
4940
- class: `${p13}-tool-reject`,
5158
+ class: `${p14}-form-skip`,
4941
5159
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4942
5160
  "data-testid": TID.toolReject,
4943
5161
  children: strings.reject
4944
5162
  }
4945
5163
  ),
4946
- /* @__PURE__ */ jsx14(
5164
+ /* @__PURE__ */ jsx15(
4947
5165
  "button",
4948
5166
  {
4949
5167
  type: "button",
4950
- class: `${p13}-tool-approve`,
5168
+ class: `${p14}-form-submit`,
4951
5169
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4952
5170
  "data-testid": TID.toolApprove,
4953
5171
  children: strings.approve
4954
5172
  }
4955
5173
  )
4956
5174
  ] })
4957
- ] }) : /* @__PURE__ */ jsx14("p", { class: `${p13}-tool-stale-note`, children: strings.stepNoLongerActive })
5175
+ ] }) : (
5176
+ // eslint-disable-next-line unicorn/no-nested-ternary -- decided → none; active → controls; stale → note
5177
+ /* @__PURE__ */ jsx15("p", { class: `${p14}-toolui-note`, children: strings.stepNoLongerActive })
5178
+ )
4958
5179
  ] });
4959
5180
  }
4960
- function summarizeInput(input) {
4961
- if (input == null) return "";
4962
- try {
4963
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4964
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4965
- } catch {
4966
- return "";
4967
- }
4968
- }
4969
5181
 
4970
5182
  // src/ui/tool-ask-input.tsx
4971
5183
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -5025,8 +5237,20 @@ function num(v) {
5025
5237
  }
5026
5238
 
5027
5239
  // src/ui/tool-ask-input.tsx
5028
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5029
- var p14 = BRAND.cssPrefix;
5240
+ import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5241
+ var p15 = BRAND.cssPrefix;
5242
+ function responseTypeLabel(req, s) {
5243
+ switch (req.responseType) {
5244
+ case "single-choice":
5245
+ return s.respSingleChoice;
5246
+ case "multi-choice":
5247
+ return s.respMultiChoice;
5248
+ case "confirmation":
5249
+ return s.respConfirmation;
5250
+ default:
5251
+ return s.respFreeText;
5252
+ }
5253
+ }
5030
5254
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5031
5255
  const state = useComputed3(() => part.stateSig.value);
5032
5256
  const approval = useComputed3(() => part.approvalSig.value);
@@ -5038,71 +5262,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5038
5262
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
5039
5263
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
5040
5264
  };
5265
+ const req = request.value;
5041
5266
  if (decided) {
5042
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5043
- }
5044
- if (!active) {
5045
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5046
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5047
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5048
- ] });
5267
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5049
5268
  }
5050
- const req = request.value;
5051
- const isConfirmation = req.responseType === "confirmation";
5052
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5053
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5054
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5055
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5056
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5057
- /* @__PURE__ */ jsx15(
5269
+ const stale = !active;
5270
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui${stale ? ` ${p15}-toolui-stale` : ""}`, "data-testid": TID.toolAskInput, children: [
5271
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5272
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputRequired }),
5273
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: responseTypeLabel(req, strings) })
5274
+ ] }),
5275
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5276
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5277
+ stale ? /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-note`, children: strings.stepNoLongerActive }) : /* @__PURE__ */ jsx16(AskBody, { req, strings, resolve })
5278
+ ] });
5279
+ }
5280
+ function AskBody({
5281
+ req,
5282
+ strings,
5283
+ resolve
5284
+ }) {
5285
+ if (req.responseType === "confirmation") {
5286
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-form-actions`, children: [
5287
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-form-hint`, children: strings.inputSubmitHint }),
5288
+ /* @__PURE__ */ jsx16(
5058
5289
  "button",
5059
5290
  {
5060
5291
  type: "button",
5061
- class: `${p14}-form-skip`,
5292
+ class: `${p15}-form-skip`,
5062
5293
  onClick: () => resolve(void 0, false),
5063
5294
  "data-testid": TID.toolInputSkip,
5064
5295
  children: strings.reject
5065
5296
  }
5066
5297
  ),
5067
- /* @__PURE__ */ jsx15(
5298
+ /* @__PURE__ */ jsx16(
5068
5299
  "button",
5069
5300
  {
5070
5301
  type: "button",
5071
- class: `${p14}-form-submit`,
5302
+ class: `${p15}-form-submit`,
5072
5303
  onClick: () => resolve(void 0, true),
5073
5304
  "data-testid": TID.toolInputSubmit,
5074
5305
  children: strings.approve
5075
5306
  }
5076
5307
  )
5077
- ] }) : /* @__PURE__ */ jsx15(
5078
- DynamicForm,
5079
- {
5080
- fields: askInputToFields(req),
5081
- strings,
5082
- submitLabel: strings.inputSubmit,
5083
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5084
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5085
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5086
- submitTestId: TID.toolInputSubmit,
5087
- skipTestId: TID.toolInputSkip
5088
- }
5089
- )
5090
- ] });
5308
+ ] });
5309
+ }
5310
+ const fields = askInputToFields(req).map((f) => {
5311
+ f.label = strings.inputYourAnswer;
5312
+ return f;
5313
+ });
5314
+ return /* @__PURE__ */ jsx16(
5315
+ DynamicForm,
5316
+ {
5317
+ fields,
5318
+ strings,
5319
+ submitLabel: strings.inputSubmit,
5320
+ footerHint: strings.inputSubmitHint,
5321
+ onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5322
+ skipLabel: req.required === false ? strings.inputSkip : void 0,
5323
+ onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5324
+ submitTestId: TID.toolInputSubmit,
5325
+ skipTestId: TID.toolInputSkip
5326
+ }
5327
+ );
5091
5328
  }
5092
- function Header({ strings, title }) {
5093
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5094
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5095
- title ? /* @__PURE__ */ jsx15("strong", { class: `${p14}-tool-title`, children: title }) : null
5329
+ function Section({ label, text }) {
5330
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-section`, children: [
5331
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-label`, children: label }),
5332
+ /* @__PURE__ */ jsx16("p", { class: `${p15}-toolui-text`, children: text })
5096
5333
  ] });
5097
5334
  }
5098
- function DecidedSummary({ part, strings }) {
5335
+ function DecidedCard({
5336
+ part,
5337
+ strings,
5338
+ req
5339
+ }) {
5099
5340
  const output = useComputed3(() => part.outputSig.value);
5100
5341
  const approval = useComputed3(() => part.approvalSig.value);
5101
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5102
5342
  const skipped = approval.value?.approved === false;
5103
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5104
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5105
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-value`, children: skipped ? "" : answer || strings.inputSubmitted })
5343
+ const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5344
+ return /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui`, "data-testid": TID.toolDecision, children: [
5345
+ /* @__PURE__ */ jsxs13("div", { class: `${p15}-toolui-head`, children: [
5346
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge ${p15}-toolui-badge-accent`, children: strings.inputBadge }),
5347
+ /* @__PURE__ */ jsx16("span", { class: `${p15}-toolui-badge`, children: skipped ? strings.inputSkipped : strings.inputAnswered })
5348
+ ] }),
5349
+ req.description ? /* @__PURE__ */ jsx16("div", { class: `${p15}-toolui-desc`, children: req.description }) : null,
5350
+ /* @__PURE__ */ jsx16(Section, { label: strings.inputQuestion, text: req.question }),
5351
+ !skipped && answer ? /* @__PURE__ */ jsx16(Section, { label: strings.inputResponse, text: answer }) : null
5106
5352
  ] });
5107
5353
  }
5108
5354
  function summarizeOutput(output) {
@@ -5111,6 +5357,7 @@ function summarizeOutput(output) {
5111
5357
  if (typeof output === "object") {
5112
5358
  const rec = output;
5113
5359
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5360
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5114
5361
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5115
5362
  }
5116
5363
  return String(output);
@@ -5118,52 +5365,30 @@ function summarizeOutput(output) {
5118
5365
 
5119
5366
  // src/ui/tool-call.tsx
5120
5367
  import { useComputed as useComputed4 } from "@preact/signals";
5121
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5122
- var p15 = BRAND.cssPrefix;
5123
- function displayToolName2(toolName) {
5124
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5125
- }
5368
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5369
+ var p16 = BRAND.cssPrefix;
5126
5370
  function ToolCall({ part, strings }) {
5127
- const details = useComputed4(() => pretty(part.inputSig.value));
5128
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5129
- const isError = useComputed4(() => !!part.errorSig.value);
5130
- if (!details.value && !result.value) return null;
5131
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5132
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5133
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5134
- /* @__PURE__ */ jsx16("strong", { class: `${p15}-tool-title`, children: displayToolName2(part.toolName) })
5371
+ const input = useComputed4(() => part.inputSig.value);
5372
+ const output = useComputed4(() => part.outputSig.value);
5373
+ const error = useComputed4(() => part.errorSig.value);
5374
+ const state = useComputed4(() => part.stateSig.value);
5375
+ const approval = useComputed4(() => part.approvalSig.value);
5376
+ const hasDetails = useComputed4(() => !!pretty(input.value) || !!error.value || !!pretty(unwrapResult(output.value)));
5377
+ if (!hasDetails.value) return null;
5378
+ return /* @__PURE__ */ jsxs14("details", { class: `${p16}-toolui ${p16}-toolui-collapsible`, "data-testid": TID.toolCall, children: [
5379
+ /* @__PURE__ */ jsxs14("summary", { class: `${p16}-toolui-head`, children: [
5380
+ /* @__PURE__ */ jsx17("strong", { class: `${p16}-toolui-title`, children: toolName(part.toolName) }),
5381
+ /* @__PURE__ */ jsx17(ToolStatus, { state: state.value, approval: approval.value, strings })
5135
5382
  ] }),
5136
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5137
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5138
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5139
- ] }) : null,
5140
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5141
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5142
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5143
- ] }) : null
5383
+ /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolParameters, value: input.value }),
5384
+ output.value !== void 0 ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.toolResult, value: output.value }) : null,
5385
+ error.value ? /* @__PURE__ */ jsx17(ToolSection, { label: strings.statusError, value: error.value, error: true }) : null
5144
5386
  ] });
5145
5387
  }
5146
- function unwrapResult(output) {
5147
- if (output && typeof output === "object") {
5148
- const rec = output;
5149
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5150
- }
5151
- return output;
5152
- }
5153
- function pretty(value) {
5154
- if (value == null) return "";
5155
- try {
5156
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5157
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5158
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5159
- } catch {
5160
- return "";
5161
- }
5162
- }
5163
5388
 
5164
5389
  // src/ui/message-bubble.tsx
5165
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5166
- var p16 = BRAND.cssPrefix;
5390
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5391
+ var p17 = BRAND.cssPrefix;
5167
5392
  function MessageBubble({
5168
5393
  message,
5169
5394
  strings,
@@ -5187,9 +5412,9 @@ function MessageBubble({
5187
5412
  const working = streaming && !hasAnswerText.value;
5188
5413
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5189
5414
  const stamp = formatStamp(message.createdAt);
5190
- 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: [
5191
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5192
- bufferedHold ? /* @__PURE__ */ jsx17(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx17(
5415
+ 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: [
5416
+ /* @__PURE__ */ jsxs15("div", { class: `${p17}-bubble`, children: [
5417
+ bufferedHold ? /* @__PURE__ */ jsx18(LoadingSpinner, { label: strings.loading }) : partList.map((part) => /* @__PURE__ */ jsx18(
5193
5418
  PartView,
5194
5419
  {
5195
5420
  part,
@@ -5203,10 +5428,10 @@ function MessageBubble({
5203
5428
  },
5204
5429
  partKey(part)
5205
5430
  )),
5206
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5207
- message.status === "error" && message.errorText ? /* @__PURE__ */ jsx17("div", { class: `${p16}-error`, role: "alert", children: /* @__PURE__ */ jsx17("span", { children: message.errorText }) }) : null
5431
+ showStreamDots && /* @__PURE__ */ jsx18(TypingDots, {}),
5432
+ message.status === "error" && message.errorText ? /* @__PURE__ */ jsx18("div", { class: `${p17}-error`, role: "alert", children: /* @__PURE__ */ jsx18("span", { children: message.errorText }) }) : null
5208
5433
  ] }),
5209
- stamp ? /* @__PURE__ */ jsx17("time", { class: `${p16}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5434
+ stamp ? /* @__PURE__ */ jsx18("time", { class: `${p17}-bubble-time`, dateTime: stamp.iso, title: stamp.full, children: stamp.short }) : null
5210
5435
  ] }) });
5211
5436
  }
5212
5437
  function formatStamp(createdAt) {
@@ -5236,11 +5461,11 @@ function PartView({
5236
5461
  case "step-start":
5237
5462
  return null;
5238
5463
  case "text":
5239
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5464
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5240
5465
  case "reasoning":
5241
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5466
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5242
5467
  case "tool":
5243
- return /* @__PURE__ */ jsx17(
5468
+ return /* @__PURE__ */ jsx18(
5244
5469
  ToolPartView,
5245
5470
  {
5246
5471
  part,
@@ -5252,11 +5477,11 @@ function PartView({
5252
5477
  );
5253
5478
  case "file":
5254
5479
  if (part.mediaType.startsWith("image/")) {
5255
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5480
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5256
5481
  }
5257
- return /* @__PURE__ */ jsx17("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5482
+ return /* @__PURE__ */ jsx18("a", { href: part.url, target: "_blank", rel: "noreferrer noopener", children: part.url });
5258
5483
  case "source":
5259
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5484
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5260
5485
  }
5261
5486
  }
5262
5487
  function ToolPartView({
@@ -5269,7 +5494,7 @@ function ToolPartView({
5269
5494
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5270
5495
  if (tool?.humanInLoop) {
5271
5496
  if (isAskUserInputTool(part.toolName)) {
5272
- return /* @__PURE__ */ jsx17(
5497
+ return /* @__PURE__ */ jsx18(
5273
5498
  ToolAskInput,
5274
5499
  {
5275
5500
  part,
@@ -5281,19 +5506,19 @@ function ToolPartView({
5281
5506
  );
5282
5507
  }
5283
5508
  if (hasApproval.value) {
5284
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5509
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5285
5510
  }
5286
5511
  }
5287
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5512
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5288
5513
  }
5289
5514
  function ReasoningView({
5290
5515
  part,
5291
5516
  active,
5292
5517
  strings
5293
5518
  }) {
5294
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5295
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5296
- /* @__PURE__ */ jsx17("div", { class: `${p16}-reasoning-body`, children: /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5519
+ return /* @__PURE__ */ jsxs15("details", { class: `${p17}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5520
+ /* @__PURE__ */ jsx18("summary", { class: `${p17}-reasoning-summary`, children: /* @__PURE__ */ jsx18("span", { class: `${p17}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5521
+ /* @__PURE__ */ jsx18("div", { class: `${p17}-reasoning-body`, children: /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig }) })
5297
5522
  ] });
5298
5523
  }
5299
5524
  function partKey(part) {
@@ -5311,22 +5536,22 @@ function partKey(part) {
5311
5536
  }
5312
5537
  }
5313
5538
  function TypingDots() {
5314
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5315
- /* @__PURE__ */ jsx17("span", {}),
5316
- /* @__PURE__ */ jsx17("span", {}),
5317
- /* @__PURE__ */ jsx17("span", {})
5539
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-typing`, "aria-hidden": "true", children: [
5540
+ /* @__PURE__ */ jsx18("span", {}),
5541
+ /* @__PURE__ */ jsx18("span", {}),
5542
+ /* @__PURE__ */ jsx18("span", {})
5318
5543
  ] });
5319
5544
  }
5320
5545
  function LoadingSpinner({ label }) {
5321
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5322
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5323
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-label`, children: label })
5546
+ return /* @__PURE__ */ jsxs15("span", { class: `${p17}-loading`, role: "status", children: [
5547
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-spinner`, "aria-hidden": "true" }),
5548
+ /* @__PURE__ */ jsx18("span", { class: `${p17}-loading-label`, children: label })
5324
5549
  ] });
5325
5550
  }
5326
5551
 
5327
5552
  // src/ui/message-list.tsx
5328
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5329
- var p17 = BRAND.cssPrefix;
5553
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5554
+ var p18 = BRAND.cssPrefix;
5330
5555
  var STICK_THRESHOLD = 120;
5331
5556
  var INTERACTION_GRACE_MS = 350;
5332
5557
  var DIVIDER_IDLE_MS = 1200;
@@ -5497,7 +5722,7 @@ function MessageList({
5497
5722
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5498
5723
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5499
5724
  );
5500
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5725
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5501
5726
  FormDoneMarker,
5502
5727
  {
5503
5728
  marker,
@@ -5518,12 +5743,12 @@ function MessageList({
5518
5743
  const day = dayKey(m.createdAt);
5519
5744
  if (day && day !== prevDay) {
5520
5745
  rows.push(
5521
- /* @__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}`)
5746
+ /* @__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}`)
5522
5747
  );
5523
5748
  prevDay = day;
5524
5749
  }
5525
5750
  rows.push(
5526
- /* @__PURE__ */ jsx18(
5751
+ /* @__PURE__ */ jsx19(
5527
5752
  MessageBubble,
5528
5753
  {
5529
5754
  message: m,
@@ -5542,33 +5767,33 @@ function MessageList({
5542
5767
  for (const marker of pendingMarkers) {
5543
5768
  rows.push(markerRow(marker));
5544
5769
  }
5545
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5546
- /* @__PURE__ */ jsxs15(
5770
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5771
+ /* @__PURE__ */ jsxs16(
5547
5772
  "div",
5548
5773
  {
5549
5774
  ref,
5550
- class: `${p17}-list`,
5775
+ class: `${p18}-list`,
5551
5776
  role: "log",
5552
5777
  "aria-live": "polite",
5553
5778
  "aria-relevant": "additions text",
5554
5779
  "data-scrolling": scrolling ? "true" : void 0,
5555
5780
  children: [
5556
- loading && messages.value.length === 0 ? /* @__PURE__ */ jsx18("div", { class: `${p17}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5781
+ loading && messages.value.length === 0 ? /* @__PURE__ */ jsx19("div", { class: `${p18}-list-loading`, role: "status", children: strings.conversationLoading }) : null,
5557
5782
  rows,
5558
- form ? /* @__PURE__ */ jsx18(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5783
+ form ? /* @__PURE__ */ jsx19(FormGate, { form: form.form, strings, onSubmit: form.onSubmit, onSkip: form.onSkip }) : null
5559
5784
  ]
5560
5785
  }
5561
5786
  ),
5562
- showJump ? /* @__PURE__ */ jsx18(
5787
+ showJump ? /* @__PURE__ */ jsx19(
5563
5788
  "button",
5564
5789
  {
5565
5790
  type: "button",
5566
- class: `${p17}-jump`,
5791
+ class: `${p18}-jump`,
5567
5792
  onClick: jumpToBottom,
5568
5793
  "aria-label": strings.scrollToBottom,
5569
5794
  title: strings.scrollToBottom,
5570
5795
  "data-testid": TID.scrollToBottom,
5571
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5796
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5572
5797
  }
5573
5798
  ) : null
5574
5799
  ] });
@@ -5627,7 +5852,7 @@ function startOfDay(ms) {
5627
5852
  }
5628
5853
 
5629
5854
  // src/ui/conversation-list.tsx
5630
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5855
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs17 } from "preact/jsx-runtime";
5631
5856
  var log12 = logger.scope("history");
5632
5857
  var DEFAULT_SKELETON_ROWS = 3;
5633
5858
  var MAX_SKELETON_ROWS = 6;
@@ -5654,7 +5879,7 @@ function ConversationList({
5654
5879
  onSelect,
5655
5880
  onNewConversation
5656
5881
  }) {
5657
- const p35 = BRAND.cssPrefix;
5882
+ const p36 = BRAND.cssPrefix;
5658
5883
  const seed = transport.peekConversations({ visitorId });
5659
5884
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5660
5885
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5675,32 +5900,32 @@ function ConversationList({
5675
5900
  cancelled = true;
5676
5901
  };
5677
5902
  }, [transport, visitorId, persistence]);
5678
- const newChatButton = onNewConversation ? /* @__PURE__ */ jsx19("div", { class: `${p35}-history-footer`, children: /* @__PURE__ */ jsxs16(
5903
+ const newChatButton = onNewConversation ? /* @__PURE__ */ jsx20("div", { class: `${p36}-history-footer`, children: /* @__PURE__ */ jsxs17(
5679
5904
  "button",
5680
5905
  {
5681
5906
  type: "button",
5682
- class: `${p35}-history-new`,
5907
+ class: `${p36}-history-new`,
5683
5908
  onClick: onNewConversation,
5684
5909
  "data-testid": TID.sidebarNewConversation,
5685
5910
  children: [
5686
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5911
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5687
5912
  strings.newConversation
5688
5913
  ]
5689
5914
  }
5690
5915
  ) }) : null;
5691
5916
  if (state === "loading") {
5692
5917
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5693
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5694
- /* @__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: [
5695
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5696
- /* @__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: [
5697
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5698
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5699
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5700
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5701
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-time` }) })
5918
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5919
+ /* @__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: [
5920
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-heading` }) }),
5921
+ /* @__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: [
5922
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar ${p36}-skeleton` }),
5923
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5924
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5925
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-title` }) }),
5926
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: /* @__PURE__ */ jsx20("span", { class: `${p36}-skeleton ${p36}-skeleton-time` }) })
5702
5927
  ] }),
5703
- /* @__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` }) }) })
5928
+ /* @__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` }) }) })
5704
5929
  ] })
5705
5930
  ] }, i)) })
5706
5931
  ] }) }),
@@ -5708,36 +5933,36 @@ function ConversationList({
5708
5933
  ] });
5709
5934
  }
5710
5935
  if (state === "error" || conversations.length === 0) {
5711
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5712
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-empty`, children: strings.historyEmpty }),
5936
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5937
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-empty`, children: strings.historyEmpty }),
5713
5938
  newChatButton
5714
5939
  ] });
5715
5940
  }
5716
5941
  const now = Date.now();
5717
5942
  const groups = groupByBucket(now, conversations);
5718
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5719
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5720
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5721
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs16(
5943
+ return /* @__PURE__ */ jsxs17(Fragment3, { children: [
5944
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs17("div", { class: `${p36}-history-group`, children: [
5945
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5946
+ /* @__PURE__ */ jsx20("div", { class: `${p36}-history-card`, children: group.conversations.map((chat) => /* @__PURE__ */ jsxs17(
5722
5947
  "button",
5723
5948
  {
5724
5949
  type: "button",
5725
5950
  role: "listitem",
5726
- class: `${p35}-history-item`,
5951
+ class: `${p36}-history-item`,
5727
5952
  onClick: () => onSelect(chat),
5728
5953
  "data-closed": chat.canContinue ? void 0 : "true",
5729
5954
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5730
5955
  "data-testid": tid(TID.historyItem, chat.conversationId),
5731
5956
  children: [
5732
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5733
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5734
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5735
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5736
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5957
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx20(MessageIcon, {}) }),
5958
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-body`, children: [
5959
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5960
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-title`, children: chat.title }),
5961
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-time`, children: rowTime(chat.lastMessageAt, now, locale) })
5737
5962
  ] }),
5738
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5739
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5740
- (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx19("span", { class: `${p35}-history-dot` }) : null
5963
+ /* @__PURE__ */ jsxs17("span", { class: `${p36}-history-row`, children: [
5964
+ /* @__PURE__ */ jsx20("span", { class: `${p36}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5965
+ (chat.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx20("span", { class: `${p36}-history-dot` }) : null
5741
5966
  ] })
5742
5967
  ] })
5743
5968
  ]
@@ -5750,15 +5975,15 @@ function ConversationList({
5750
5975
  }
5751
5976
 
5752
5977
  // src/ui/suggestions.tsx
5753
- import { jsx as jsx20 } from "preact/jsx-runtime";
5754
- var p18 = BRAND.cssPrefix;
5978
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5979
+ var p19 = BRAND.cssPrefix;
5755
5980
  function Suggestions({ suggestions, onPick }) {
5756
5981
  if (suggestions.length === 0) return null;
5757
- return /* @__PURE__ */ jsx20("div", { class: `${p18}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx20(
5982
+ return /* @__PURE__ */ jsx21("div", { class: `${p19}-suggestions`, role: "group", "aria-label": "Suggested replies", children: suggestions.map((s, i) => /* @__PURE__ */ jsx21(
5758
5983
  "button",
5759
5984
  {
5760
5985
  type: "button",
5761
- class: `${p18}-suggestion`,
5986
+ class: `${p19}-suggestion`,
5762
5987
  onClick: () => onPick(s),
5763
5988
  "data-testid": tid(TID.suggestion, i),
5764
5989
  children: s.label
@@ -5768,8 +5993,8 @@ function Suggestions({ suggestions, onPick }) {
5768
5993
  }
5769
5994
 
5770
5995
  // src/ui/panel.tsx
5771
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5772
- var p19 = BRAND.cssPrefix;
5996
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5997
+ var p20 = BRAND.cssPrefix;
5773
5998
  function Panel(props2) {
5774
5999
  const { options, onClose } = props2;
5775
6000
  const s = options.strings;
@@ -5793,18 +6018,18 @@ function Panel(props2) {
5793
6018
  }, []);
5794
6019
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5795
6020
  useDragMove(containerRef.current, options.mode === "modal");
5796
- return /* @__PURE__ */ jsxs17(
6021
+ return /* @__PURE__ */ jsxs18(
5797
6022
  "div",
5798
6023
  {
5799
6024
  ref: containerRef,
5800
- class: `${p19}-panel`,
6025
+ class: `${p20}-panel`,
5801
6026
  role: "dialog",
5802
6027
  "aria-modal": "false",
5803
6028
  "aria-label": s.panelTitle,
5804
6029
  style: { position: "relative" },
5805
6030
  "data-testid": TID.panel,
5806
6031
  children: [
5807
- /* @__PURE__ */ jsx21(
6032
+ /* @__PURE__ */ jsx22(
5808
6033
  PanelContent,
5809
6034
  {
5810
6035
  ...props2,
@@ -5813,7 +6038,7 @@ function Panel(props2) {
5813
6038
  composerAttachApiRef
5814
6039
  }
5815
6040
  ),
5816
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6041
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5817
6042
  ]
5818
6043
  }
5819
6044
  );
@@ -5860,9 +6085,9 @@ function PanelContent(props2) {
5860
6085
  if (activeForm) {
5861
6086
  composerArea = null;
5862
6087
  } else if (canSend) {
5863
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5864
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5865
- /* @__PURE__ */ jsx21(
6088
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6089
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6090
+ /* @__PURE__ */ jsx22(
5866
6091
  Composer,
5867
6092
  {
5868
6093
  options,
@@ -5877,10 +6102,10 @@ function PanelContent(props2) {
5877
6102
  )
5878
6103
  ] });
5879
6104
  } else {
5880
- composerArea = /* @__PURE__ */ jsx21(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
6105
+ composerArea = /* @__PURE__ */ jsx22(ReadOnlyBanner, { label: s.conversationClosed, ctaLabel: s.startNewConversation, onNewConversation: onClear });
5881
6106
  }
5882
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5883
- view === "history" ? /* @__PURE__ */ jsx21(
6107
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6108
+ view === "history" ? /* @__PURE__ */ jsx22(
5884
6109
  HistoryHeader,
5885
6110
  {
5886
6111
  strings: s,
@@ -5888,22 +6113,22 @@ function PanelContent(props2) {
5888
6113
  onClose,
5889
6114
  showClose: canShowClose(options.mode, panelSize, options.actions)
5890
6115
  }
5891
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5892
- onBack ? /* @__PURE__ */ jsx21(
6116
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6117
+ onBack ? /* @__PURE__ */ jsx22(
5893
6118
  "button",
5894
6119
  {
5895
6120
  type: "button",
5896
- class: `${p19}-icon-btn`,
6121
+ class: `${p20}-icon-btn`,
5897
6122
  onClick: onBack,
5898
6123
  "aria-label": s.moduleBack,
5899
6124
  title: s.moduleBack,
5900
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6125
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5901
6126
  }
5902
6127
  ) : null,
5903
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5904
- /* @__PURE__ */ jsx21(HeaderActions, { panelProps: props2, variant: "chat" })
6128
+ agent ? /* @__PURE__ */ jsx22(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx22("h1", { children: s.panelTitle }),
6129
+ /* @__PURE__ */ jsx22(HeaderActions, { panelProps: props2, variant: "chat" })
5905
6130
  ] }),
5906
- view === "history" ? /* @__PURE__ */ jsx21(
6131
+ view === "history" ? /* @__PURE__ */ jsx22(
5907
6132
  ConversationList,
5908
6133
  {
5909
6134
  transport,
@@ -5914,9 +6139,9 @@ function PanelContent(props2) {
5914
6139
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5915
6140
  onNewConversation
5916
6141
  }
5917
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5918
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5919
- /* @__PURE__ */ jsx21(
6142
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6143
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6144
+ /* @__PURE__ */ jsx22(
5920
6145
  MessageList,
5921
6146
  {
5922
6147
  messagesSig,
@@ -5934,9 +6159,9 @@ function PanelContent(props2) {
5934
6159
  }
5935
6160
  ),
5936
6161
  composerArea,
5937
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6162
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5938
6163
  ] }),
5939
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6164
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5940
6165
  ResizeGrip,
5941
6166
  {
5942
6167
  panelEl: containerEl,
@@ -5955,28 +6180,28 @@ function HistoryHeader({
5955
6180
  onClose,
5956
6181
  showClose
5957
6182
  }) {
5958
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5959
- /* @__PURE__ */ jsx21(
6183
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6184
+ /* @__PURE__ */ jsx22(
5960
6185
  "button",
5961
6186
  {
5962
6187
  type: "button",
5963
- class: `${p19}-icon-btn`,
6188
+ class: `${p20}-icon-btn`,
5964
6189
  onClick: onBack,
5965
6190
  "aria-label": strings.historyBack,
5966
6191
  title: strings.historyBack,
5967
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6192
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5968
6193
  }
5969
6194
  ),
5970
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5971
- showClose ? /* @__PURE__ */ jsx21(
6195
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6196
+ showClose ? /* @__PURE__ */ jsx22(
5972
6197
  "button",
5973
6198
  {
5974
6199
  type: "button",
5975
- class: `${p19}-icon-btn`,
6200
+ class: `${p20}-icon-btn`,
5976
6201
  onClick: onClose,
5977
6202
  "aria-label": strings.close,
5978
6203
  title: strings.close,
5979
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6204
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5980
6205
  }
5981
6206
  ) : null
5982
6207
  ] });
@@ -5986,28 +6211,28 @@ function ReadOnlyBanner({
5986
6211
  ctaLabel,
5987
6212
  onNewConversation
5988
6213
  }) {
5989
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5990
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5991
- /* @__PURE__ */ jsx21("button", { type: "button", class: `${p19}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
6214
+ return /* @__PURE__ */ jsxs18("div", { class: `${p20}-readonly-banner`, role: "note", children: [
6215
+ /* @__PURE__ */ jsx22("span", { class: `${p20}-readonly-label`, children: label }),
6216
+ /* @__PURE__ */ jsx22("button", { type: "button", class: `${p20}-readonly-cta`, onClick: onNewConversation, children: ctaLabel })
5992
6217
  ] });
5993
6218
  }
5994
6219
  function ComposerFooter({ disclaimer }) {
5995
6220
  if (!disclaimer) return null;
5996
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-composer-footer`, children: /* @__PURE__ */ jsx21("div", { class: `${p19}-disclaimer`, children: disclaimer }) });
6221
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-composer-footer`, children: /* @__PURE__ */ jsx22("div", { class: `${p20}-disclaimer`, children: disclaimer }) });
5997
6222
  }
5998
6223
  function PoweredByBar({ poweredBy }) {
5999
6224
  if (!poweredBy) return null;
6000
- return /* @__PURE__ */ jsx21("div", { class: `${p19}-poweredby-bar`, children: /* @__PURE__ */ jsx21(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6225
+ return /* @__PURE__ */ jsx22("div", { class: `${p20}-poweredby-bar`, children: /* @__PURE__ */ jsx22(PoweredBy, { logoUrl: poweredBy.logoUrl, text: poweredBy.text, href: poweredBy.href }) });
6001
6226
  }
6002
6227
  function PoweredBy({ logoUrl, text, href }) {
6003
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
6004
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6005
- text ? /* @__PURE__ */ jsx21("span", { children: text }) : null
6228
+ const inner = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6229
+ logoUrl ? /* @__PURE__ */ jsx22("img", { class: `${p20}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6230
+ text ? /* @__PURE__ */ jsx22("span", { children: text }) : null
6006
6231
  ] });
6007
6232
  if (href) {
6008
- return /* @__PURE__ */ jsx21("a", { class: `${p19}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6233
+ return /* @__PURE__ */ jsx22("a", { class: `${p20}-poweredby`, href, target: "_blank", rel: "noopener noreferrer", children: inner });
6009
6234
  }
6010
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6235
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
6011
6236
  }
6012
6237
 
6013
6238
  // src/ui/form/form-controller.ts
@@ -6090,34 +6315,34 @@ function whenPasses(form, d) {
6090
6315
  }
6091
6316
 
6092
6317
  // src/ui/sidebar.tsx
6093
- import { Fragment as Fragment5, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
6318
+ import { Fragment as Fragment5, jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6094
6319
  function Sidebar(props2) {
6095
- const p35 = BRAND.cssPrefix;
6320
+ const p36 = BRAND.cssPrefix;
6096
6321
  const { site, blocks, strings, collapsed } = props2;
6097
6322
  const navigation = blocks?.navigation ?? [];
6098
6323
  const linkCards = blocks?.linkCards ?? [];
6099
6324
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6100
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6101
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6102
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6103
- /* @__PURE__ */ jsx22(
6325
+ return /* @__PURE__ */ jsxs19("aside", { class: `${p36}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6326
+ /* @__PURE__ */ jsxs19("div", { class: `${p36}-sidebar-header`, children: [
6327
+ /* @__PURE__ */ jsx23(SidebarBrand, { site }),
6328
+ /* @__PURE__ */ jsx23(
6104
6329
  "button",
6105
6330
  {
6106
6331
  type: "button",
6107
- class: `${p35}-sidebar-toggle`,
6332
+ class: `${p36}-sidebar-toggle`,
6108
6333
  "aria-label": toggleLabel,
6109
6334
  "aria-expanded": collapsed ? "false" : "true",
6110
6335
  title: toggleLabel,
6111
6336
  onClick: props2.onToggleCollapsed,
6112
6337
  "data-testid": TID.sidebarToggle,
6113
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6338
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6114
6339
  }
6115
6340
  )
6116
6341
  ] }),
6117
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6118
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6119
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6120
- props2.showConversations ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-conversations`, children: /* @__PURE__ */ jsx22(
6342
+ collapsed ? null : /* @__PURE__ */ jsxs19(Fragment5, { children: [
6343
+ navigation.length > 0 ? /* @__PURE__ */ jsx23("nav", { class: `${p36}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx23(SidebarNav, { items: navigation }) }) : null,
6344
+ linkCards.length > 0 ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx23(SidebarCards, { items: linkCards }) }) : null,
6345
+ props2.showConversations ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-conversations`, children: /* @__PURE__ */ jsx23(
6121
6346
  ConversationList,
6122
6347
  {
6123
6348
  transport: props2.transport,
@@ -6133,18 +6358,18 @@ function Sidebar(props2) {
6133
6358
  ] });
6134
6359
  }
6135
6360
  function SidebarBrand({ site }) {
6136
- const p35 = BRAND.cssPrefix;
6361
+ const p36 = BRAND.cssPrefix;
6137
6362
  if (site?.logo?.url) {
6138
6363
  const alt = site.logo.alt ?? site.title ?? "Logo";
6139
- return /* @__PURE__ */ jsxs18("picture", { children: [
6140
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6141
- /* @__PURE__ */ jsx22("img", { class: `${p35}-sidebar-logo`, src: site.logo.url, alt })
6364
+ return /* @__PURE__ */ jsxs19("picture", { children: [
6365
+ site.logoDark?.url ? /* @__PURE__ */ jsx23("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6366
+ /* @__PURE__ */ jsx23("img", { class: `${p36}-sidebar-logo`, src: site.logo.url, alt })
6142
6367
  ] });
6143
6368
  }
6144
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-title`, children: site?.title ?? BRAND.name });
6369
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-title`, children: site?.title ?? BRAND.name });
6145
6370
  }
6146
6371
  function SidebarToggleIcon({ collapsed }) {
6147
- return /* @__PURE__ */ jsx22(
6372
+ return /* @__PURE__ */ jsx23(
6148
6373
  "svg",
6149
6374
  {
6150
6375
  width: "16",
@@ -6154,38 +6379,38 @@ function SidebarToggleIcon({ collapsed }) {
6154
6379
  stroke: "currentColor",
6155
6380
  "stroke-width": "2",
6156
6381
  "aria-hidden": "true",
6157
- children: collapsed ? /* @__PURE__ */ jsx22("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx22("polyline", { points: "15 6 9 12 15 18" })
6382
+ children: collapsed ? /* @__PURE__ */ jsx23("polyline", { points: "9 6 15 12 9 18" }) : /* @__PURE__ */ jsx23("polyline", { points: "15 6 9 12 15 18" })
6158
6383
  }
6159
6384
  );
6160
6385
  }
6161
6386
  function SidebarNav({ items }) {
6162
- const p35 = BRAND.cssPrefix;
6163
- return /* @__PURE__ */ jsx22("ul", { class: `${p35}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsxs18(
6387
+ const p36 = BRAND.cssPrefix;
6388
+ return /* @__PURE__ */ jsx23("ul", { class: `${p36}-sidebar-nav`, children: items.map((item) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsxs19(
6164
6389
  "a",
6165
6390
  {
6166
- class: `${p35}-sidebar-nav-item`,
6391
+ class: `${p36}-sidebar-nav-item`,
6167
6392
  href: item.href,
6168
6393
  target: item.href ? "_blank" : void 0,
6169
6394
  rel: item.href ? "noreferrer" : void 0,
6170
6395
  children: [
6171
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6172
- /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-label`, children: item.label })
6396
+ item.icon ? /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6397
+ /* @__PURE__ */ jsx23("span", { class: `${p36}-sidebar-nav-label`, children: item.label })
6173
6398
  ]
6174
6399
  }
6175
6400
  ) }, item.id ?? item.label)) });
6176
6401
  }
6177
6402
  function SidebarCards({ items }) {
6178
- const p35 = BRAND.cssPrefix;
6179
- return /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs18(
6403
+ const p36 = BRAND.cssPrefix;
6404
+ return /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-cards`, children: items.map((item) => /* @__PURE__ */ jsxs19(
6180
6405
  "a",
6181
6406
  {
6182
- class: `${p35}-sidebar-card`,
6407
+ class: `${p36}-sidebar-card`,
6183
6408
  href: item.href,
6184
6409
  target: item.href ? "_blank" : void 0,
6185
6410
  rel: item.href ? "noreferrer" : void 0,
6186
6411
  children: [
6187
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6188
- item.description ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-desc`, children: item.description }) : null
6412
+ /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-label`, children: item.label }),
6413
+ item.description ? /* @__PURE__ */ jsx23("div", { class: `${p36}-sidebar-card-desc`, children: item.description }) : null
6189
6414
  ]
6190
6415
  },
6191
6416
  item.id ?? item.label
@@ -6193,11 +6418,11 @@ function SidebarCards({ items }) {
6193
6418
  }
6194
6419
 
6195
6420
  // src/ui/page-shell.tsx
6196
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6197
- var p20 = BRAND.cssPrefix;
6421
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6422
+ var p21 = BRAND.cssPrefix;
6198
6423
  function PageShell(props2) {
6199
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6200
- /* @__PURE__ */ jsx23(
6424
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6425
+ /* @__PURE__ */ jsx24(
6201
6426
  Sidebar,
6202
6427
  {
6203
6428
  site: props2.site,
@@ -6214,7 +6439,7 @@ function PageShell(props2) {
6214
6439
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6215
6440
  }
6216
6441
  ),
6217
- /* @__PURE__ */ jsx23("section", { class: `${p20}-page-chat`, "aria-label": "Chat", children: props2.children })
6442
+ /* @__PURE__ */ jsx24("section", { class: `${p21}-page-chat`, "aria-label": "Chat", children: props2.children })
6218
6443
  ] });
6219
6444
  }
6220
6445
 
@@ -6264,80 +6489,80 @@ var chatLayout = {
6264
6489
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6265
6490
 
6266
6491
  // src/ui/back-header.tsx
6267
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6268
- var p21 = BRAND.cssPrefix;
6492
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6493
+ var p22 = BRAND.cssPrefix;
6269
6494
  function TitleBar({ title, actions }) {
6270
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6271
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6272
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6273
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6495
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-variant": "title", children: [
6496
+ /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" }),
6497
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6498
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6274
6499
  ] });
6275
6500
  }
6276
6501
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6277
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6278
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6279
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6280
- actions ?? /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" })
6502
+ return /* @__PURE__ */ jsxs21("header", { class: `${p22}-back-header`, "data-testid": testid, children: [
6503
+ /* @__PURE__ */ jsx25("button", { type: "button", class: `${p22}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx25(BackIcon, {}) }),
6504
+ /* @__PURE__ */ jsx25("h1", { class: `${p22}-back-title`, children: title }),
6505
+ actions ?? /* @__PURE__ */ jsx25("span", { class: `${p22}-back-spacer`, "aria-hidden": "true" })
6281
6506
  ] });
6282
6507
  }
6283
6508
 
6284
6509
  // src/ui/home-search.tsx
6285
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6286
- var p22 = BRAND.cssPrefix;
6510
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6511
+ var p23 = BRAND.cssPrefix;
6287
6512
  function HomeSearchButton({ placeholder, onActivate }) {
6288
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6289
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6290
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6513
+ return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6514
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-text`, children: placeholder }),
6515
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6291
6516
  ] });
6292
6517
  }
6293
6518
  function HelpSearchInput({ placeholder, value, onInput }) {
6294
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6295
- /* @__PURE__ */ jsx25(
6519
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6520
+ /* @__PURE__ */ jsx26(
6296
6521
  "input",
6297
6522
  {
6298
6523
  type: "search",
6299
- class: `${p22}-home-search-input`,
6524
+ class: `${p23}-home-search-input`,
6300
6525
  placeholder,
6301
6526
  value,
6302
6527
  onInput: (e) => onInput(e.currentTarget.value),
6303
6528
  "data-testid": TID.helpSearch
6304
6529
  }
6305
6530
  ),
6306
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx25(SearchIcon, {}) })
6531
+ /* @__PURE__ */ jsx26("span", { class: `${p23}-home-search-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(SearchIcon, {}) })
6307
6532
  ] });
6308
6533
  }
6309
6534
 
6310
6535
  // src/ui/list-row.tsx
6311
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6312
- var p23 = BRAND.cssPrefix;
6536
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6537
+ var p24 = BRAND.cssPrefix;
6313
6538
  function ListRow({ title, subtitle, onClick, testid }) {
6314
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6315
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6316
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6317
- subtitle ? /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-sub`, children: subtitle }) : null
6539
+ return /* @__PURE__ */ jsxs23("button", { type: "button", class: `${p24}-list-row`, onClick, "data-testid": testid, children: [
6540
+ /* @__PURE__ */ jsxs23("span", { class: `${p24}-list-row-body`, children: [
6541
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-title`, children: title }),
6542
+ subtitle ? /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-sub`, children: subtitle }) : null
6318
6543
  ] }),
6319
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx26(ChevronRightIcon, {}) })
6544
+ /* @__PURE__ */ jsx27("span", { class: `${p24}-list-row-chevron`, "aria-hidden": "true", children: /* @__PURE__ */ jsx27(ChevronRightIcon, {}) })
6320
6545
  ] });
6321
6546
  }
6322
6547
 
6323
6548
  // src/ui/module-state.tsx
6324
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6325
- var p24 = BRAND.cssPrefix;
6549
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6550
+ var p25 = BRAND.cssPrefix;
6326
6551
  function ModuleState({
6327
6552
  tone = "info",
6328
6553
  message,
6329
6554
  onRetry,
6330
6555
  strings
6331
6556
  }) {
6332
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6333
- /* @__PURE__ */ jsx27("span", { children: message }),
6334
- onRetry ? /* @__PURE__ */ jsx27("button", { type: "button", class: `${p24}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6557
+ return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6558
+ /* @__PURE__ */ jsx28("span", { children: message }),
6559
+ onRetry ? /* @__PURE__ */ jsx28("button", { type: "button", class: `${p25}-module-retry`, onClick: onRetry, children: strings.errorRetry }) : null
6335
6560
  ] });
6336
6561
  }
6337
6562
 
6338
6563
  // src/ui/modules/help.tsx
6339
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6340
- var p25 = BRAND.cssPrefix;
6564
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6565
+ var p26 = BRAND.cssPrefix;
6341
6566
  var log13 = logger.scope("help");
6342
6567
  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 });
6343
6568
  function groupByCategory(items) {
@@ -6366,7 +6591,7 @@ function fuzzySearch(items, query) {
6366
6591
  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);
6367
6592
  }
6368
6593
  function ArticleRow({ article, nav }) {
6369
- return /* @__PURE__ */ jsx28(
6594
+ return /* @__PURE__ */ jsx29(
6370
6595
  ListRow,
6371
6596
  {
6372
6597
  title: article.title,
@@ -6411,46 +6636,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6411
6636
  }, [query, results, bus]);
6412
6637
  function renderBody() {
6413
6638
  if (query.trim().length > 0) {
6414
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6415
- return /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) });
6639
+ if (results.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpSearchEmpty, strings });
6640
+ return /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: results.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) });
6416
6641
  }
6417
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6642
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6418
6643
  if (state === "error") {
6419
- return /* @__PURE__ */ jsx28(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6644
+ return /* @__PURE__ */ jsx29(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6420
6645
  }
6421
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6422
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6423
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6424
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx28(ArticleRow, { article: a, nav }, a.id)) })
6646
+ if (items.length === 0) return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpEmpty, strings });
6647
+ return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs25("section", { class: `${p26}-help-group`, children: [
6648
+ category ? /* @__PURE__ */ jsx29("h2", { class: `${p26}-help-section-title`, children: category }) : null,
6649
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-card`, children: rows.map((a) => /* @__PURE__ */ jsx29(ArticleRow, { article: a, nav }, a.id)) })
6425
6650
  ] }, category));
6426
6651
  }
6427
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6428
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6429
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6430
- /* @__PURE__ */ jsx28("div", { class: `${p25}-help-list`, children: renderBody() })
6652
+ return /* @__PURE__ */ jsxs25("div", { class: `${p26}-module`, children: [
6653
+ /* @__PURE__ */ jsx29(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx29(HeaderActions, { panelProps, variant: "plain" }) }),
6654
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-module-pad`, children: /* @__PURE__ */ jsx29(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6655
+ /* @__PURE__ */ jsx29("div", { class: `${p26}-help-list`, children: renderBody() })
6431
6656
  ] });
6432
6657
  }
6433
6658
  var helpLayout = {
6434
6659
  Icon: HelpIcon,
6435
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6660
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6436
6661
  };
6437
6662
 
6438
6663
  // src/ui/modules/home.tsx
6439
6664
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6440
6665
 
6441
6666
  // src/ui/home-card.tsx
6442
- import { jsx as jsx29 } from "preact/jsx-runtime";
6443
- var p26 = BRAND.cssPrefix;
6667
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6668
+ var p27 = BRAND.cssPrefix;
6444
6669
  function HomeCard({ onClick, children, testid }) {
6445
6670
  if (onClick) {
6446
- return /* @__PURE__ */ jsx29("button", { type: "button", class: `${p26}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6671
+ return /* @__PURE__ */ jsx30("button", { type: "button", class: `${p27}-home-card`, "data-interactive": "true", onClick, "data-testid": testid, children });
6447
6672
  }
6448
- return /* @__PURE__ */ jsx29("div", { class: `${p26}-home-card`, "data-testid": testid, children });
6673
+ return /* @__PURE__ */ jsx30("div", { class: `${p27}-home-card`, "data-testid": testid, children });
6449
6674
  }
6450
6675
 
6451
6676
  // src/ui/modules/home.tsx
6452
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6453
- var p27 = BRAND.cssPrefix;
6677
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6678
+ var p28 = BRAND.cssPrefix;
6454
6679
  var log14 = logger.scope("home");
6455
6680
  function resolveGreeting(props2) {
6456
6681
  const name = props2.options.userContext?.name;
@@ -6493,49 +6718,49 @@ function HomeRoot(props2) {
6493
6718
  const status = config.status;
6494
6719
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6495
6720
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6496
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6497
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6498
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6499
- 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" }),
6500
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6501
- 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,
6502
- /* @__PURE__ */ jsx30(HeaderActions, { panelProps, variant: "plain" })
6721
+ return /* @__PURE__ */ jsx31("div", { class: `${p28}-module ${p28}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-scroll`, children: [
6722
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero`, children: [
6723
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-top`, children: [
6724
+ 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" }),
6725
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-hero-actions`, children: [
6726
+ 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,
6727
+ /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" })
6503
6728
  ] })
6504
6729
  ] }),
6505
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6506
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6507
- greeting.subtitle ? /* @__PURE__ */ jsx30("p", { class: `${p27}-home-lead`, children: greeting.subtitle }) : null
6730
+ config.showGreeting !== false ? /* @__PURE__ */ jsxs26(Fragment6, { children: [
6731
+ /* @__PURE__ */ jsx31("h1", { class: `${p28}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6732
+ greeting.subtitle ? /* @__PURE__ */ jsx31("p", { class: `${p28}-home-lead`, children: greeting.subtitle }) : null
6508
6733
  ] }) : null
6509
6734
  ] }),
6510
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6511
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6735
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6736
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6512
6737
  HomeSearchButton,
6513
6738
  {
6514
6739
  placeholder: strings.homeSearchPlaceholder,
6515
6740
  onActivate: () => nav.switchToLayout("help")
6516
6741
  }
6517
6742
  ) : null,
6518
- 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: [
6519
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6520
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6521
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6522
- recent.preview ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-preview`, children: recent.preview }) : null
6743
+ 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: [
6744
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(BubblesIcon, {}) }),
6745
+ /* @__PURE__ */ jsxs26("span", { class: `${p28}-home-recent-body`, children: [
6746
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-title`, children: recent.title }),
6747
+ recent.preview ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-preview`, children: recent.preview }) : null
6523
6748
  ] }),
6524
- (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-dot`, "aria-label": "Unread" }) : null
6749
+ (recent.unreadCount ?? 0) > 0 ? /* @__PURE__ */ jsx31("span", { class: `${p28}-home-recent-dot`, "aria-label": "Unread" }) : null
6525
6750
  ] }) }) : null,
6526
- status ? /* @__PURE__ */ jsx30(
6751
+ status ? /* @__PURE__ */ jsx31(
6527
6752
  HomeCard,
6528
6753
  {
6529
6754
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6530
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6531
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6532
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-text`, children: statusText })
6755
+ children: /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-status`, "data-level": status.level ?? "operational", children: [
6756
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx31(StatusOkIcon, {}) }),
6757
+ /* @__PURE__ */ jsx31("span", { class: `${p28}-home-status-text`, children: statusText })
6533
6758
  ] })
6534
6759
  }
6535
6760
  ) : null,
6536
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6537
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6538
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx30(
6761
+ content.length > 0 ? /* @__PURE__ */ jsxs26("section", { class: `${p28}-home-content`, children: [
6762
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-title`, children: contentTitle }),
6763
+ /* @__PURE__ */ jsx31("div", { class: `${p28}-home-content-list`, children: content.map((item) => /* @__PURE__ */ jsx31(
6539
6764
  ListRow,
6540
6765
  {
6541
6766
  title: item.title,
@@ -6551,13 +6776,13 @@ function HomeRoot(props2) {
6551
6776
  }
6552
6777
  var homeLayout = {
6553
6778
  Icon: HomeIcon,
6554
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6779
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6555
6780
  };
6556
6781
 
6557
6782
  // src/ui/modules/news.tsx
6558
6783
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6559
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6560
- var p28 = BRAND.cssPrefix;
6784
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6785
+ var p29 = BRAND.cssPrefix;
6561
6786
  var log15 = logger.scope("news");
6562
6787
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6563
6788
  const tags = config.contentTags;
@@ -6585,37 +6810,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6585
6810
  };
6586
6811
  }, [transport, tags, reloadKey, bus]);
6587
6812
  function renderBody() {
6588
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6813
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6589
6814
  if (state === "error") {
6590
- return /* @__PURE__ */ jsx31(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6815
+ return /* @__PURE__ */ jsx32(ModuleState, { tone: "error", message: errorMsg, onRetry: () => setReloadKey((k) => k + 1), strings });
6591
6816
  }
6592
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6593
- return /* @__PURE__ */ jsx31("div", { class: `${p28}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs26(
6817
+ if (items.length === 0) return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsEmpty, strings });
6818
+ return /* @__PURE__ */ jsx32("div", { class: `${p29}-news-list`, children: items.map((item) => /* @__PURE__ */ jsxs27(
6594
6819
  "button",
6595
6820
  {
6596
6821
  type: "button",
6597
- class: `${p28}-news-card`,
6822
+ class: `${p29}-news-card`,
6598
6823
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6599
6824
  "data-testid": tid(TID.newsItem, item.id),
6600
6825
  children: [
6601
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6602
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6603
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6604
- item.description ? /* @__PURE__ */ jsx31("span", { class: `${p28}-news-summary`, children: item.description }) : null
6826
+ item.image ? /* @__PURE__ */ jsx32("img", { class: `${p29}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6827
+ /* @__PURE__ */ jsxs27("span", { class: `${p29}-news-body`, children: [
6828
+ /* @__PURE__ */ jsx32("span", { class: `${p29}-news-title`, children: item.title }),
6829
+ item.description ? /* @__PURE__ */ jsx32("span", { class: `${p29}-news-summary`, children: item.description }) : null
6605
6830
  ] })
6606
6831
  ]
6607
6832
  },
6608
6833
  item.id
6609
6834
  )) });
6610
6835
  }
6611
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6612
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6613
- /* @__PURE__ */ jsx31("div", { class: `${p28}-module-scroll`, children: renderBody() })
6836
+ return /* @__PURE__ */ jsxs27("div", { class: `${p29}-module`, children: [
6837
+ /* @__PURE__ */ jsx32(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx32(HeaderActions, { panelProps, variant: "plain" }) }),
6838
+ /* @__PURE__ */ jsx32("div", { class: `${p29}-module-scroll`, children: renderBody() })
6614
6839
  ] });
6615
6840
  }
6616
6841
  var newsLayout = {
6617
6842
  Icon: NewsIcon,
6618
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6843
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6619
6844
  };
6620
6845
 
6621
6846
  // src/ui/modules/registry.ts
@@ -6627,28 +6852,28 @@ var LAYOUTS = {
6627
6852
  };
6628
6853
 
6629
6854
  // src/ui/home-tab-bar.tsx
6630
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6631
- var p29 = BRAND.cssPrefix;
6855
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6856
+ var p30 = BRAND.cssPrefix;
6632
6857
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6633
- return /* @__PURE__ */ jsx32("nav", { class: `${p29}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6858
+ return /* @__PURE__ */ jsx33("nav", { class: `${p30}-tabbar`, role: "tablist", "aria-label": strings.panelTitle, children: modules.map((m) => {
6634
6859
  const Icon = LAYOUTS[m.layout].Icon;
6635
6860
  const selected = m.id === activeTab;
6636
6861
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6637
- return /* @__PURE__ */ jsxs27(
6862
+ return /* @__PURE__ */ jsxs28(
6638
6863
  "button",
6639
6864
  {
6640
6865
  type: "button",
6641
6866
  role: "tab",
6642
6867
  "aria-selected": selected,
6643
- class: `${p29}-tab`,
6868
+ class: `${p30}-tab`,
6644
6869
  onClick: () => onSelect(m.id),
6645
6870
  "data-testid": tid(TID.tab, m.id),
6646
6871
  children: [
6647
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6648
- /* @__PURE__ */ jsx32(Icon, {}),
6649
- badge ? /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6872
+ /* @__PURE__ */ jsxs28("span", { class: `${p30}-tab-icon`, "aria-hidden": "true", children: [
6873
+ /* @__PURE__ */ jsx33(Icon, {}),
6874
+ badge ? /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-badge`, "data-testid": TID.tabBadge, children: badge }) : null
6650
6875
  ] }),
6651
- /* @__PURE__ */ jsx32("span", { class: `${p29}-tab-label`, children: localizeText(strings, m.label) })
6876
+ /* @__PURE__ */ jsx33("span", { class: `${p30}-tab-label`, children: localizeText(strings, m.label) })
6652
6877
  ]
6653
6878
  },
6654
6879
  m.id
@@ -6657,12 +6882,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6657
6882
  }
6658
6883
 
6659
6884
  // src/ui/iframe-view.tsx
6660
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6661
- var p30 = BRAND.cssPrefix;
6885
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6886
+ var p31 = BRAND.cssPrefix;
6662
6887
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6663
6888
  function IframeView({ url, title, strings, onBack, actions }) {
6664
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6665
- /* @__PURE__ */ jsx33(
6889
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6890
+ /* @__PURE__ */ jsx34(
6666
6891
  BackHeader,
6667
6892
  {
6668
6893
  title: title || strings.moduleBack,
@@ -6671,10 +6896,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6671
6896
  actions
6672
6897
  }
6673
6898
  ),
6674
- /* @__PURE__ */ jsx33(
6899
+ /* @__PURE__ */ jsx34(
6675
6900
  "iframe",
6676
6901
  {
6677
- class: `${p30}-content-frame`,
6902
+ class: `${p31}-content-frame`,
6678
6903
  src: url,
6679
6904
  title: title || "content",
6680
6905
  sandbox: SANDBOX,
@@ -6688,8 +6913,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6688
6913
 
6689
6914
  // src/ui/content-view.tsx
6690
6915
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6691
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6692
- var p31 = BRAND.cssPrefix;
6916
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6917
+ var p32 = BRAND.cssPrefix;
6693
6918
  var log16 = logger.scope("content");
6694
6919
  var READ_DWELL_MS = 5e3;
6695
6920
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6733,16 +6958,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6733
6958
  [bus, id]
6734
6959
  );
6735
6960
  function renderBody() {
6736
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6737
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6738
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6739
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6740
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6741
- /* @__PURE__ */ jsx34(StaticMarkdown, { text: item.content ?? "" })
6961
+ if (failed) return /* @__PURE__ */ jsx35(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6962
+ if (item === null) return /* @__PURE__ */ jsx35(ModuleState, { message: strings.contentLoading, strings });
6963
+ return /* @__PURE__ */ jsxs30("article", { class: `${p32}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6964
+ item.image ? /* @__PURE__ */ jsx35("img", { class: `${p32}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6965
+ item.description ? /* @__PURE__ */ jsx35("p", { class: `${p32}-content-subtitle`, children: item.description }) : null,
6966
+ /* @__PURE__ */ jsx35(StaticMarkdown, { text: item.content ?? "" })
6742
6967
  ] });
6743
6968
  }
6744
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6745
- /* @__PURE__ */ jsx34(
6969
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6970
+ /* @__PURE__ */ jsx35(
6746
6971
  BackHeader,
6747
6972
  {
6748
6973
  title: item?.title || title || strings.moduleBack,
@@ -6752,13 +6977,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6752
6977
  testid: TID.backHeader
6753
6978
  }
6754
6979
  ),
6755
- /* @__PURE__ */ jsx34("div", { class: `${p31}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6980
+ /* @__PURE__ */ jsx35("div", { class: `${p32}-module-scroll`, "data-testid": TID.contentScroll, children: renderBody() })
6756
6981
  ] });
6757
6982
  }
6758
6983
 
6759
6984
  // src/ui/messenger-home.tsx
6760
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6761
- var p32 = BRAND.cssPrefix;
6985
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6986
+ var p33 = BRAND.cssPrefix;
6762
6987
  function MessengerHome({
6763
6988
  panelProps,
6764
6989
  enabledModules,
@@ -6829,12 +7054,12 @@ function MessengerHome({
6829
7054
  bus,
6830
7055
  panelProps
6831
7056
  });
6832
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7057
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6833
7058
  if (activeModule) visitedRef.current.add(activeModule.id);
6834
7059
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6835
7060
  const tabRoot = (module) => {
6836
7061
  if (module.layout === "chat") {
6837
- return /* @__PURE__ */ jsx35(
7062
+ return /* @__PURE__ */ jsx36(
6838
7063
  PanelContent,
6839
7064
  {
6840
7065
  ...panelProps,
@@ -6845,14 +7070,14 @@ function MessengerHome({
6845
7070
  );
6846
7071
  }
6847
7072
  const Root = LAYOUTS[module.layout].Root;
6848
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7073
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6849
7074
  };
6850
7075
  const renderReader = () => {
6851
7076
  if (top?.kind === "iframe") {
6852
- return /* @__PURE__ */ jsx35(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
7077
+ return /* @__PURE__ */ jsx36(IframeView, { url: top.url, title: top.title, strings, onBack: nav.pop, actions: plainActions });
6853
7078
  }
6854
7079
  if (top?.kind === "content") {
6855
- return /* @__PURE__ */ jsx35(
7080
+ return /* @__PURE__ */ jsx36(
6856
7081
  ContentView,
6857
7082
  {
6858
7083
  id: top.id,
@@ -6867,22 +7092,22 @@ function MessengerHome({
6867
7092
  }
6868
7093
  return null;
6869
7094
  };
6870
- return /* @__PURE__ */ jsxs30(
7095
+ return /* @__PURE__ */ jsxs31(
6871
7096
  "div",
6872
7097
  {
6873
7098
  ref: containerRef,
6874
- class: `${p32}-panel ${p32}-messenger`,
7099
+ class: `${p33}-panel ${p33}-messenger`,
6875
7100
  role: "dialog",
6876
7101
  "aria-modal": "false",
6877
7102
  "aria-label": strings.panelTitle,
6878
7103
  style: { position: "relative" },
6879
7104
  "data-testid": TID.messengerHome,
6880
7105
  children: [
6881
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6882
- visitedTabs.map((m) => /* @__PURE__ */ jsx35("div", { class: `${p32}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
7106
+ /* @__PURE__ */ jsxs31("div", { class: `${p33}-messenger-body`, children: [
7107
+ visitedTabs.map((m) => /* @__PURE__ */ jsx36("div", { class: `${p33}-messenger-pane`, hidden: isReader || m.id !== activeModule?.id, children: tabRoot(m) }, m.id)),
6883
7108
  renderReader()
6884
7109
  ] }),
6885
- showTabBar ? /* @__PURE__ */ jsx35(
7110
+ showTabBar ? /* @__PURE__ */ jsx36(
6886
7111
  HomeTabBar,
6887
7112
  {
6888
7113
  modules: enabledModules,
@@ -6892,8 +7117,8 @@ function MessengerHome({
6892
7117
  onSelect: nav.switchTab
6893
7118
  }
6894
7119
  ) : null,
6895
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6896
- options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx35(
7120
+ /* @__PURE__ */ jsx36(PoweredByBar, { poweredBy: options.poweredBy }),
7121
+ options.size.resize?.enabled && !(activeModule?.layout === "chat" && !top) ? /* @__PURE__ */ jsx36(
6897
7122
  ResizeGrip,
6898
7123
  {
6899
7124
  panelEl: containerRef.current,
@@ -6910,29 +7135,29 @@ function MessengerHome({
6910
7135
  }
6911
7136
 
6912
7137
  // src/ui/modules-empty.tsx
6913
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6914
- var p33 = BRAND.cssPrefix;
7138
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7139
+ var p34 = BRAND.cssPrefix;
6915
7140
  function ModulesEmpty({ strings, onClose }) {
6916
- return /* @__PURE__ */ jsxs31(
7141
+ return /* @__PURE__ */ jsxs32(
6917
7142
  "div",
6918
7143
  {
6919
- class: `${p33}-panel ${p33}-modules-empty`,
7144
+ class: `${p34}-panel ${p34}-modules-empty`,
6920
7145
  role: "dialog",
6921
7146
  "aria-label": strings.panelTitle,
6922
7147
  "data-testid": TID.modulesEmpty,
6923
7148
  children: [
6924
- onClose ? /* @__PURE__ */ jsx36(
7149
+ onClose ? /* @__PURE__ */ jsx37(
6925
7150
  "button",
6926
7151
  {
6927
7152
  type: "button",
6928
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7153
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6929
7154
  onClick: onClose,
6930
7155
  "aria-label": strings.close,
6931
7156
  title: strings.close,
6932
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7157
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6933
7158
  }
6934
7159
  ) : null,
6935
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7160
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6936
7161
  ]
6937
7162
  }
6938
7163
  );
@@ -6955,16 +7180,19 @@ function useLauncherCallout({ callout, persistence }) {
6955
7180
  }
6956
7181
 
6957
7182
  // src/ui/app.tsx
6958
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7183
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6959
7184
  var log17 = logger.scope("app");
6960
- var p34 = BRAND.cssPrefix;
7185
+ var p35 = BRAND.cssPrefix;
6961
7186
  function makeLocalizedWelcome(w, strings) {
6962
7187
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6963
7188
  }
7189
+ function firstText(m) {
7190
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
7191
+ }
6964
7192
  function allToolPartsSettled(msg) {
6965
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6966
- return tools.length > 0 && tools.every((p35) => {
6967
- const s = p35.stateSig.value;
7193
+ const tools = msg.partsSig.value.filter((pt) => pt.kind === "tool");
7194
+ return tools.length > 0 && tools.every((pt) => {
7195
+ const s = pt.stateSig.value;
6968
7196
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6969
7197
  });
6970
7198
  }
@@ -7154,8 +7382,9 @@ function App({ options, hostElement, bus }) {
7154
7382
  (n) => n !== void 0
7155
7383
  );
7156
7384
  const welcomeAnchor = (timelineStamps.length ? Math.min(...timelineStamps) : Date.now()) - 1;
7157
- const loadedIds = new Set(loaded.map((m) => m.id));
7158
- const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedIds.has(w.id)).map((w) => {
7385
+ const welcomeKey = (role, text) => `${role}|${text}`;
7386
+ const loadedKeys = new Set(loaded.map((m) => welcomeKey(m.role, firstText(m))));
7387
+ const welcomeRows = (welcomeRef.current?.messages ?? []).filter((w) => !loadedKeys.has(welcomeKey(w.role, localizeText(stringsRef.current, w.text)))).map((w) => {
7159
7388
  const row = makeLocalizedWelcome(w, stringsRef.current);
7160
7389
  row.createdAt = welcomeAnchor;
7161
7390
  return row;
@@ -7882,12 +8111,12 @@ function App({ options, hostElement, bus }) {
7882
8111
  const renderSurface = (size) => {
7883
8112
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7884
8113
  if (enabledModules.length === 0) {
7885
- return /* @__PURE__ */ jsx37(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
8114
+ return /* @__PURE__ */ jsx38(ModulesEmpty, { strings: effectiveOptions.strings, onClose: closeable ? handleClose : void 0 });
7886
8115
  }
7887
8116
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7888
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8117
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7889
8118
  }
7890
- return /* @__PURE__ */ jsx37(
8119
+ return /* @__PURE__ */ jsx38(
7891
8120
  MessengerHome,
7892
8121
  {
7893
8122
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7906,7 +8135,7 @@ function App({ options, hostElement, bus }) {
7906
8135
  void handleSelectHistoryConversation(chat.conversationId);
7907
8136
  };
7908
8137
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7909
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8138
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7910
8139
  PageShell,
7911
8140
  {
7912
8141
  site: parsedSite,
@@ -7927,15 +8156,15 @@ function App({ options, hostElement, bus }) {
7927
8156
  }
7928
8157
  if (isInlineLike) {
7929
8158
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7930
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8159
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7931
8160
  }
7932
8161
  const drawerEdgeTab = options.mode === "drawer";
7933
8162
  const triggerOwnedByPage = options.mode === "modal";
7934
8163
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7935
8164
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7936
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7937
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7938
- launcherVisible ? /* @__PURE__ */ jsx37(
8165
+ return /* @__PURE__ */ jsxs33("div", { class: `${p35}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
8166
+ isOpen || activated ? /* @__PURE__ */ jsx38("div", { class: `${p35}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
8167
+ launcherVisible ? /* @__PURE__ */ jsx38(
7939
8168
  Launcher,
7940
8169
  {
7941
8170
  onToggle: handleOpen,
@@ -7945,7 +8174,7 @@ function App({ options, hostElement, bus }) {
7945
8174
  edgeTab: drawerEdgeTab
7946
8175
  }
7947
8176
  ) : null,
7948
- calloutToRender ? /* @__PURE__ */ jsx37(
8177
+ calloutToRender ? /* @__PURE__ */ jsx38(
7949
8178
  LauncherCallout,
7950
8179
  {
7951
8180
  callout: calloutToRender,
@@ -8010,34 +8239,34 @@ var TRACKED = {
8010
8239
  expand: (on) => ({ on }),
8011
8240
  fullscreen: (on) => ({ on }),
8012
8241
  // Conversation funnel. `send` is the key conversion; text never rides.
8013
- send: (p35) => ({ attachments: p35.attachmentCount }),
8014
- message: (p35) => ({ role: p35.role }),
8242
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8243
+ message: (p36) => ({ role: p36.role }),
8015
8244
  stop: () => void 0,
8016
8245
  clear: () => void 0,
8017
8246
  suggestion: () => void 0,
8018
- toggleHistory: (p35) => ({ view: p35.view }),
8247
+ toggleHistory: (p36) => ({ view: p36.view }),
8019
8248
  handshake: () => void 0,
8020
8249
  // Forms + human-in-the-loop — ids and outcomes, never values.
8021
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8250
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
8022
8251
  toolResult: () => void 0,
8023
- toolDecision: (p35) => ({ approved: p35.approved }),
8252
+ toolDecision: (p36) => ({ approved: p36.approved }),
8024
8253
  // Content — ids, tags + counts only; titles/bodies never ride.
8025
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
8026
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
8027
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
8028
- contentRead: (p35) => ({ contentId: p35.contentId }),
8029
- contentLinkClick: (p35) => ({ contentId: p35.contentId }),
8254
+ contentView: (p36) => ({ section: p36.section, tags: p36.tags, count: p36.count }),
8255
+ contentOpen: (p36) => ({ contentId: p36.contentId, tags: p36.tags }),
8256
+ contentSearch: (p36) => ({ qlen: p36.queryLength, hits: p36.hitCount }),
8257
+ contentRead: (p36) => ({ contentId: p36.contentId }),
8258
+ contentLinkClick: (p36) => ({ contentId: p36.contentId }),
8030
8259
  // Composer / attachments / voice.
8031
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8260
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
8032
8261
  voiceStart: () => void 0,
8033
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8262
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
8034
8263
  voiceCancel: () => void 0,
8035
8264
  // Preferences — how visitors tune the surface.
8036
8265
  localeChange: (locale) => ({ locale }),
8037
8266
  themeChange: (theme) => ({ theme }),
8038
8267
  textSizeChange: (size) => ({ size }),
8039
- soundToggle: (p35) => ({ muted: p35.muted }),
8040
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8268
+ soundToggle: (p36) => ({ muted: p36.muted }),
8269
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8041
8270
  calloutDismiss: () => void 0,
8042
8271
  // Health signal only — the error object itself never leaves the page.
8043
8272
  error: () => void 0