@helpai/elements 0.46.3 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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.3" : "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
  }
@@ -2441,7 +2600,7 @@ function fromWireMessage(w) {
2441
2600
  };
2442
2601
  }
2443
2602
  return null;
2444
- }).filter((p35) => p35 !== null);
2603
+ }).filter((p36) => p36 !== null);
2445
2604
  return {
2446
2605
  id: w.id,
2447
2606
  role: w.role,
@@ -2475,43 +2634,43 @@ function assistantText(m) {
2475
2634
  }
2476
2635
  return out;
2477
2636
  }
2478
- function partToReactive(p35) {
2479
- if (p35.kind === "text" || p35.kind === "reasoning") {
2480
- 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) };
2481
2640
  }
2482
- if (p35.kind === "tool") {
2641
+ if (p36.kind === "tool") {
2483
2642
  return {
2484
2643
  kind: "tool",
2485
- toolCallId: p35.toolCallId,
2486
- toolName: p35.toolName,
2487
- inputPartialSig: signal(p35.inputPartial),
2488
- inputSig: signal(p35.input),
2489
- outputSig: signal(p35.output),
2490
- errorSig: signal(p35.error),
2491
- stateSig: signal(p35.state),
2492
- 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)
2493
2652
  };
2494
2653
  }
2495
- return p35;
2654
+ return p36;
2496
2655
  }
2497
- function partFromReactive(p35) {
2498
- if (p35.kind === "text" || p35.kind === "reasoning") {
2499
- 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 };
2500
2659
  }
2501
- if (p35.kind === "tool") {
2660
+ if (p36.kind === "tool") {
2502
2661
  return {
2503
2662
  kind: "tool",
2504
- toolCallId: p35.toolCallId,
2505
- toolName: p35.toolName,
2506
- inputPartial: p35.inputPartialSig.value,
2507
- input: p35.inputSig.value,
2508
- output: p35.outputSig.value,
2509
- error: p35.errorSig.value,
2510
- state: p35.stateSig.value,
2511
- 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
2512
2671
  };
2513
2672
  }
2514
- return p35;
2673
+ return p36;
2515
2674
  }
2516
2675
 
2517
2676
  // src/stream/reducer.ts
@@ -2557,8 +2716,8 @@ var StreamReducer = class {
2557
2716
  ensureTextPart(m, "text", chunk.id);
2558
2717
  return;
2559
2718
  case "text-delta": {
2560
- const p35 = ensureTextPart(m, "text", chunk.id);
2561
- p35.textSig.value += chunk.delta;
2719
+ const p36 = ensureTextPart(m, "text", chunk.id);
2720
+ p36.textSig.value += chunk.delta;
2562
2721
  return;
2563
2722
  }
2564
2723
  case "text-end":
@@ -2568,8 +2727,8 @@ var StreamReducer = class {
2568
2727
  ensureTextPart(m, "reasoning", chunk.id).doneSig.value = false;
2569
2728
  return;
2570
2729
  case "reasoning-delta": {
2571
- const p35 = ensureTextPart(m, "reasoning", chunk.id);
2572
- p35.textSig.value += chunk.delta;
2730
+ const p36 = ensureTextPart(m, "reasoning", chunk.id);
2731
+ p36.textSig.value += chunk.delta;
2573
2732
  return;
2574
2733
  }
2575
2734
  case "reasoning-end":
@@ -2619,19 +2778,19 @@ var StreamReducer = class {
2619
2778
  }
2620
2779
  };
2621
2780
  function ensureTextPart(m, kind, id) {
2622
- 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);
2623
2782
  if (existing) return existing;
2624
2783
  const part = { kind, id, textSig: signal2(""), doneSig: signal2(false) };
2625
2784
  appendPart(m, part);
2626
2785
  return part;
2627
2786
  }
2628
- function ensureToolPart(m, toolCallId, toolName) {
2629
- 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);
2630
2789
  if (existing) return existing;
2631
2790
  const part = {
2632
2791
  kind: "tool",
2633
2792
  toolCallId,
2634
- toolName: toolName ?? "tool",
2793
+ toolName: toolName2 ?? "tool",
2635
2794
  inputPartialSig: signal2(""),
2636
2795
  inputSig: signal2(void 0),
2637
2796
  outputSig: signal2(void 0),
@@ -2646,7 +2805,7 @@ function appendPart(m, part) {
2646
2805
  m.partsSig.value = [...m.partsSig.value, part];
2647
2806
  }
2648
2807
  function appendSource(m, source) {
2649
- 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;
2650
2809
  appendPart(m, source);
2651
2810
  }
2652
2811
  function applyTool(m, chunk) {
@@ -2655,37 +2814,37 @@ function applyTool(m, chunk) {
2655
2814
  ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2656
2815
  return;
2657
2816
  case "tool-input-delta": {
2658
- const p35 = ensureToolPart(m, chunk.toolCallId);
2659
- p35.inputPartialSig.value += chunk.inputTextDelta;
2817
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2818
+ p36.inputPartialSig.value += chunk.inputTextDelta;
2660
2819
  return;
2661
2820
  }
2662
2821
  case "tool-input-available": {
2663
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2664
- p35.inputSig.value = chunk.input;
2665
- 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";
2666
2825
  return;
2667
2826
  }
2668
2827
  case "tool-approval-request": {
2669
- const p35 = ensureToolPart(m, chunk.toolCallId, chunk.toolName);
2670
- p35.approvalSig.value = { id: chunk.approvalId };
2671
- 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";
2672
2831
  return;
2673
2832
  }
2674
2833
  case "tool-output-available": {
2675
- const p35 = ensureToolPart(m, chunk.toolCallId);
2676
- p35.outputSig.value = chunk.output;
2677
- p35.stateSig.value = "output-available";
2834
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2835
+ p36.outputSig.value = chunk.output;
2836
+ p36.stateSig.value = "output-available";
2678
2837
  return;
2679
2838
  }
2680
2839
  case "tool-output-error": {
2681
- const p35 = ensureToolPart(m, chunk.toolCallId);
2682
- p35.errorSig.value = chunk.errorText;
2683
- p35.stateSig.value = "output-error";
2840
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2841
+ p36.errorSig.value = chunk.errorText;
2842
+ p36.stateSig.value = "output-error";
2684
2843
  return;
2685
2844
  }
2686
2845
  case "tool-output-denied": {
2687
- const p35 = ensureToolPart(m, chunk.toolCallId);
2688
- p35.stateSig.value = "output-denied";
2846
+ const p36 = ensureToolPart(m, chunk.toolCallId);
2847
+ p36.stateSig.value = "output-denied";
2689
2848
  return;
2690
2849
  }
2691
2850
  default:
@@ -3382,24 +3541,24 @@ import { useCallback as useCallback2, useEffect as useEffect9, useRef as useRef6
3382
3541
  import { useEffect as useEffect2, useRef } from "preact/hooks";
3383
3542
  import { jsx as jsx3 } from "preact/jsx-runtime";
3384
3543
  function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, strings }) {
3385
- const p35 = BRAND.cssPrefix;
3544
+ const p36 = BRAND.cssPrefix;
3386
3545
  const dragRef = useRef(null);
3387
3546
  useEffect2(() => {
3388
3547
  if (!panelEl) return;
3389
3548
  const style = panelEl.style;
3390
- if (resize.minWidth) style.setProperty(`--${p35}-resize-min-w`, resize.minWidth);
3391
- if (resize.maxWidth) style.setProperty(`--${p35}-resize-max-w`, resize.maxWidth);
3392
- if (resize.minHeight) style.setProperty(`--${p35}-resize-min-h`, resize.minHeight);
3393
- 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);
3394
3553
  if (initialSize) {
3395
- style.setProperty(`--${p35}-widget-w`, `${initialSize.width}px`);
3396
- 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`);
3397
3556
  }
3398
- }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p35, initialSize]);
3557
+ }, [panelEl, resize.minWidth, resize.maxWidth, resize.minHeight, resize.maxHeight, p36, initialSize]);
3399
3558
  if (!panelEl) return null;
3400
3559
  const isTop = position.startsWith("top-");
3401
3560
  const isRight = position.endsWith("-right");
3402
- 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"}`;
3403
3562
  const onPointerDown = (e) => {
3404
3563
  if (!panelEl) return;
3405
3564
  const target = e.currentTarget;
@@ -3424,8 +3583,8 @@ function ResizeGrip({ panelEl, resize, position, initialSize, onSizeChange, stri
3424
3583
  if (!d || e.pointerId !== d.pointerId || !panelEl) return;
3425
3584
  const dx = (e.clientX - d.startX) * d.dirX;
3426
3585
  const dy = (e.clientY - d.startY) * d.dirY;
3427
- panelEl.style.setProperty(`--${p35}-widget-w`, `${d.startW + dx}px`);
3428
- 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`);
3429
3588
  };
3430
3589
  const onPointerUp = (e) => {
3431
3590
  const d = dragRef.current;
@@ -4162,7 +4321,7 @@ function usePopoverMenu({ itemCount, initialFocusIndex }) {
4162
4321
  // src/ui/overflow-menu.tsx
4163
4322
  import { jsx as jsx8, jsxs as jsxs6 } from "preact/jsx-runtime";
4164
4323
  function OverflowMenu({ items, triggerLabel }) {
4165
- const p35 = BRAND.cssPrefix;
4324
+ const p36 = BRAND.cssPrefix;
4166
4325
  const menu = usePopoverMenu({ itemCount: items.length });
4167
4326
  const handleSelect = (item) => {
4168
4327
  if (item.disabled) return;
@@ -4185,13 +4344,13 @@ function OverflowMenu({ items, triggerLabel }) {
4185
4344
  e.stopPropagation();
4186
4345
  pickSegment(item, segs[next].value);
4187
4346
  };
4188
- return /* @__PURE__ */ jsxs6("div", { class: `${p35}-menu-wrap`, children: [
4347
+ return /* @__PURE__ */ jsxs6("div", { class: `${p36}-menu-wrap`, children: [
4189
4348
  /* @__PURE__ */ jsx8(
4190
4349
  "button",
4191
4350
  {
4192
4351
  ref: menu.triggerRef,
4193
4352
  type: "button",
4194
- class: `${p35}-icon-btn`,
4353
+ class: `${p36}-icon-btn`,
4195
4354
  "aria-label": triggerLabel,
4196
4355
  "aria-haspopup": "menu",
4197
4356
  "aria-expanded": menu.open,
@@ -4205,7 +4364,7 @@ function OverflowMenu({ items, triggerLabel }) {
4205
4364
  "div",
4206
4365
  {
4207
4366
  ref: menu.menuRef,
4208
- class: `${p35}-menu`,
4367
+ class: `${p36}-menu`,
4209
4368
  role: "menu",
4210
4369
  "aria-label": triggerLabel,
4211
4370
  onKeyDown: menu.onMenuKey,
@@ -4215,14 +4374,14 @@ function OverflowMenu({ items, triggerLabel }) {
4215
4374
  "div",
4216
4375
  {
4217
4376
  role: "menuitem",
4218
- class: `${p35}-menu-item ${p35}-menu-item-segmented`,
4377
+ class: `${p36}-menu-item ${p36}-menu-item-segmented`,
4219
4378
  "aria-label": item.label,
4220
4379
  tabIndex: -1,
4221
4380
  onKeyDown: (e) => onSegmentRowKey(e, item),
4222
4381
  children: [
4223
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4224
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4225
- /* @__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) => {
4226
4385
  const active = seg.value === item.value;
4227
4386
  return /* @__PURE__ */ jsx8(
4228
4387
  "button",
@@ -4230,7 +4389,7 @@ function OverflowMenu({ items, triggerLabel }) {
4230
4389
  type: "button",
4231
4390
  role: "menuitemradio",
4232
4391
  "aria-checked": active,
4233
- class: `${p35}-segment`,
4392
+ class: `${p36}-segment`,
4234
4393
  "data-on": active ? "true" : void 0,
4235
4394
  lang: seg.lang,
4236
4395
  title: seg.value,
@@ -4250,14 +4409,14 @@ function OverflowMenu({ items, triggerLabel }) {
4250
4409
  {
4251
4410
  type: "button",
4252
4411
  role: "menuitem",
4253
- class: `${p35}-menu-item`,
4412
+ class: `${p36}-menu-item`,
4254
4413
  "aria-pressed": item.type === "switch" ? item.on : void 0,
4255
4414
  disabled: item.disabled,
4256
4415
  onClick: () => handleSelect(item),
4257
4416
  children: [
4258
- item.icon ? /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-icon`, children: item.icon }) : null,
4259
- /* @__PURE__ */ jsx8("span", { class: `${p35}-menu-label`, children: item.label }),
4260
- 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
4261
4420
  ]
4262
4421
  },
4263
4422
  item.id
@@ -4500,6 +4659,7 @@ function DynamicForm({
4500
4659
  onSubmit,
4501
4660
  skipLabel,
4502
4661
  onSkip,
4662
+ footerHint,
4503
4663
  disabled,
4504
4664
  rootTestId,
4505
4665
  submitTestId,
@@ -4546,6 +4706,7 @@ function DynamicForm({
4546
4706
  field.name
4547
4707
  )),
4548
4708
  /* @__PURE__ */ jsxs8("div", { class: `${p10}-form-actions`, children: [
4709
+ footerHint ? /* @__PURE__ */ jsx10("span", { class: `${p10}-form-hint`, children: footerHint }) : null,
4549
4710
  skipLabel && onSkip ? /* @__PURE__ */ jsx10("button", { type: "button", class: `${p10}-form-skip`, onClick: onSkip, disabled, "data-testid": skipTestId, children: skipLabel }) : null,
4550
4711
  /* @__PURE__ */ jsx10("button", { type: "submit", class: `${p10}-form-submit`, disabled, "data-testid": submitTestId, children: submitLabel })
4551
4712
  ] })
@@ -4800,9 +4961,9 @@ function FormDoneMarker({
4800
4961
  import { useComputed as useComputed5 } from "@preact/signals";
4801
4962
 
4802
4963
  // src/stream/constants.ts
4803
- function isAskUserInputTool(toolName) {
4804
- if (!toolName) return false;
4805
- 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;
4806
4967
  return name === "ask-user-input" || name === "ask_user_input" || name === "request-user-input" || name === "request_user_input";
4807
4968
  }
4808
4969
 
@@ -4896,36 +5057,92 @@ function SourceView({ part, strings }) {
4896
5057
 
4897
5058
  // src/ui/tool-approval.tsx
4898
5059
  import { useComputed as useComputed2, useSignal } from "@preact/signals";
4899
- 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";
4900
5063
  var p13 = BRAND.cssPrefix;
4901
- function displayToolName(toolName) {
4902
- 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
+ ] });
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;
4903
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;
4904
5125
  function ToolApproval({ part, strings, active, onDecision }) {
4905
5126
  const approval = useComputed2(() => part.approvalSig.value);
5127
+ const state = useComputed2(() => part.stateSig.value);
4906
5128
  const input = useComputed2(() => part.inputSig.value);
5129
+ const output = useComputed2(() => part.outputSig.value);
5130
+ const error = useComputed2(() => part.errorSig.value);
4907
5131
  const reason = useSignal("");
4908
- const decided = approval.value?.approved !== void 0;
4909
- if (decided) {
4910
- const ap = approval.value;
4911
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval ${p13}-tool-decided`, "data-testid": TID.toolDecision, children: [
4912
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-label`, "data-approved": ap?.approved ? "true" : "false", children: ap?.approved ? strings.approved : strings.rejected }),
4913
- /* @__PURE__ */ jsx14("strong", { class: `${p13}-tool-title`, children: displayToolName(part.toolName) }),
4914
- ap?.reason ? /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-decided-value`, children: ap.reason }) : null
4915
- ] });
4916
- }
4917
- const args = summarizeInput(input.value);
4918
- return /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-approval`, "data-testid": TID.toolApproval, children: [
4919
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-tool-head`, children: [
4920
- /* @__PURE__ */ jsx14("span", { class: `${p13}-tool-badge`, children: strings.approvalRequired }),
4921
- /* @__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 })
4922
5137
  ] }),
4923
- args ? /* @__PURE__ */ jsx14("pre", { class: `${p13}-tool-args`, children: args }) : null,
4924
- active ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
4925
- /* @__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(
4926
5143
  "input",
4927
5144
  {
4928
- class: `${p13}-field-input`,
5145
+ class: `${p14}-field-input`,
4929
5146
  value: reason.value,
4930
5147
  placeholder: strings.approvalReason,
4931
5148
  onInput: (e) => {
@@ -4933,40 +5150,34 @@ function ToolApproval({ part, strings, active, onDecision }) {
4933
5150
  }
4934
5151
  }
4935
5152
  ),
4936
- /* @__PURE__ */ jsxs11("div", { class: `${p13}-form-actions`, children: [
4937
- /* @__PURE__ */ jsx14(
5153
+ /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5154
+ /* @__PURE__ */ jsx15(
4938
5155
  "button",
4939
5156
  {
4940
5157
  type: "button",
4941
- class: `${p13}-tool-reject`,
5158
+ class: `${p14}-form-skip`,
4942
5159
  onClick: () => onDecision(part.toolCallId, false, reason.value.trim() || void 0),
4943
5160
  "data-testid": TID.toolReject,
4944
5161
  children: strings.reject
4945
5162
  }
4946
5163
  ),
4947
- /* @__PURE__ */ jsx14(
5164
+ /* @__PURE__ */ jsx15(
4948
5165
  "button",
4949
5166
  {
4950
5167
  type: "button",
4951
- class: `${p13}-tool-approve`,
5168
+ class: `${p14}-form-submit`,
4952
5169
  onClick: () => onDecision(part.toolCallId, true, reason.value.trim() || void 0),
4953
5170
  "data-testid": TID.toolApprove,
4954
5171
  children: strings.approve
4955
5172
  }
4956
5173
  )
4957
5174
  ] })
4958
- ] }) : /* @__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
+ )
4959
5179
  ] });
4960
5180
  }
4961
- function summarizeInput(input) {
4962
- if (input == null) return "";
4963
- try {
4964
- const json = typeof input === "string" ? input : JSON.stringify(input, null, 2);
4965
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
4966
- } catch {
4967
- return "";
4968
- }
4969
- }
4970
5181
 
4971
5182
  // src/ui/tool-ask-input.tsx
4972
5183
  import { useComputed as useComputed3 } from "@preact/signals";
@@ -5026,8 +5237,20 @@ function num(v) {
5026
5237
  }
5027
5238
 
5028
5239
  // src/ui/tool-ask-input.tsx
5029
- import { jsx as jsx15, jsxs as jsxs12 } from "preact/jsx-runtime";
5030
- 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
+ }
5031
5254
  function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5032
5255
  const state = useComputed3(() => part.stateSig.value);
5033
5256
  const approval = useComputed3(() => part.approvalSig.value);
@@ -5039,71 +5262,93 @@ function ToolAskInput({ part, strings, active, onSubmit, onDecision }) {
5039
5262
  else if (request.value.responseType === "confirmation") onSubmit(part.toolCallId, { confirmed: accepted });
5040
5263
  else onSubmit(part.toolCallId, accepted ? { answer } : {});
5041
5264
  };
5265
+ const req = request.value;
5042
5266
  if (decided) {
5043
- return /* @__PURE__ */ jsx15(DecidedSummary, { part, strings });
5267
+ return /* @__PURE__ */ jsx16(DecidedCard, { part, strings, req });
5044
5268
  }
5045
- if (!active) {
5046
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-stale`, "data-testid": TID.toolAskInput, children: [
5047
- /* @__PURE__ */ jsx15(Header, { strings, title: request.value.title ?? request.value.question }),
5048
- /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-stale-note`, children: strings.stepNoLongerActive })
5049
- ] });
5050
- }
5051
- const req = request.value;
5052
- const isConfirmation = req.responseType === "confirmation";
5053
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input`, "data-testid": TID.toolAskInput, children: [
5054
- /* @__PURE__ */ jsx15(Header, { strings, title: req.title }),
5055
- req.description ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-desc`, children: req.description }) : null,
5056
- isConfirmation ? /* @__PURE__ */ jsx15("p", { class: `${p14}-tool-question`, children: req.question }) : null,
5057
- isConfirmation ? /* @__PURE__ */ jsxs12("div", { class: `${p14}-form-actions`, children: [
5058
- /* @__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(
5059
5289
  "button",
5060
5290
  {
5061
5291
  type: "button",
5062
- class: `${p14}-form-skip`,
5292
+ class: `${p15}-form-skip`,
5063
5293
  onClick: () => resolve(void 0, false),
5064
5294
  "data-testid": TID.toolInputSkip,
5065
5295
  children: strings.reject
5066
5296
  }
5067
5297
  ),
5068
- /* @__PURE__ */ jsx15(
5298
+ /* @__PURE__ */ jsx16(
5069
5299
  "button",
5070
5300
  {
5071
5301
  type: "button",
5072
- class: `${p14}-form-submit`,
5302
+ class: `${p15}-form-submit`,
5073
5303
  onClick: () => resolve(void 0, true),
5074
5304
  "data-testid": TID.toolInputSubmit,
5075
5305
  children: strings.approve
5076
5306
  }
5077
5307
  )
5078
- ] }) : /* @__PURE__ */ jsx15(
5079
- DynamicForm,
5080
- {
5081
- fields: askInputToFields(req),
5082
- strings,
5083
- submitLabel: strings.inputSubmit,
5084
- onSubmit: (values) => resolve(values.answer ?? Object.values(values).join(", "), true),
5085
- skipLabel: req.required === false ? strings.inputSkip : void 0,
5086
- onSkip: req.required === false ? () => resolve(void 0, false) : void 0,
5087
- submitTestId: TID.toolInputSubmit,
5088
- skipTestId: TID.toolInputSkip
5089
- }
5090
- )
5091
- ] });
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
+ );
5092
5328
  }
5093
- function Header({ strings, title }) {
5094
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-head`, children: [
5095
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-badge`, children: strings.inputRequired }),
5096
- 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 })
5097
5333
  ] });
5098
5334
  }
5099
- function DecidedSummary({ part, strings }) {
5335
+ function DecidedCard({
5336
+ part,
5337
+ strings,
5338
+ req
5339
+ }) {
5100
5340
  const output = useComputed3(() => part.outputSig.value);
5101
5341
  const approval = useComputed3(() => part.approvalSig.value);
5102
- const answer = approval.value?.approved !== void 0 ? approval.value.reason ?? "" : summarizeOutput(output.value);
5103
5342
  const skipped = approval.value?.approved === false;
5104
- return /* @__PURE__ */ jsxs12("div", { class: `${p14}-tool-ask-input ${p14}-tool-decided`, "data-testid": TID.toolDecision, children: [
5105
- /* @__PURE__ */ jsx15("span", { class: `${p14}-tool-decided-label`, children: skipped ? strings.inputSkip : strings.inputSubmitted }),
5106
- /* @__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
5107
5352
  ] });
5108
5353
  }
5109
5354
  function summarizeOutput(output) {
@@ -5112,6 +5357,7 @@ function summarizeOutput(output) {
5112
5357
  if (typeof output === "object") {
5113
5358
  const rec = output;
5114
5359
  if ("confirmed" in rec) return rec.confirmed ? "Yes" : "No";
5360
+ if (typeof rec.responseText === "string" && rec.responseText) return rec.responseText;
5115
5361
  return Object.values(rec).filter((v) => typeof v === "string" || typeof v === "number").join(", ");
5116
5362
  }
5117
5363
  return String(output);
@@ -5119,52 +5365,30 @@ function summarizeOutput(output) {
5119
5365
 
5120
5366
  // src/ui/tool-call.tsx
5121
5367
  import { useComputed as useComputed4 } from "@preact/signals";
5122
- import { jsx as jsx16, jsxs as jsxs13 } from "preact/jsx-runtime";
5123
- var p15 = BRAND.cssPrefix;
5124
- function displayToolName2(toolName) {
5125
- return (toolName.startsWith("tool:") ? toolName.slice(5) : toolName).replace(/[-_]+/g, " ").trim();
5126
- }
5368
+ import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5369
+ var p16 = BRAND.cssPrefix;
5127
5370
  function ToolCall({ part, strings }) {
5128
- const details = useComputed4(() => pretty(part.inputSig.value));
5129
- const result = useComputed4(() => part.errorSig.value ?? pretty(unwrapResult(part.outputSig.value)));
5130
- const isError = useComputed4(() => !!part.errorSig.value);
5131
- if (!details.value && !result.value) return null;
5132
- return /* @__PURE__ */ jsxs13("details", { class: `${p15}-tool-call`, "data-testid": TID.toolCall, children: [
5133
- /* @__PURE__ */ jsxs13("summary", { class: `${p15}-tool-call-summary`, children: [
5134
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-badge`, children: strings.usedTool }),
5135
- /* @__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 })
5136
5382
  ] }),
5137
- details.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, children: [
5138
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolDetails }),
5139
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: details.value })
5140
- ] }) : null,
5141
- result.value ? /* @__PURE__ */ jsxs13("div", { class: `${p15}-tool-call-section`, "data-error": isError.value ? "true" : void 0, children: [
5142
- /* @__PURE__ */ jsx16("span", { class: `${p15}-tool-call-label`, children: strings.toolResult }),
5143
- /* @__PURE__ */ jsx16("pre", { class: `${p15}-tool-args`, children: result.value })
5144
- ] }) : 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
5145
5386
  ] });
5146
5387
  }
5147
- function unwrapResult(output) {
5148
- if (output && typeof output === "object") {
5149
- const rec = output;
5150
- if (rec.storage === "tool-result-ref" && "summary" in rec) return rec.summary;
5151
- }
5152
- return output;
5153
- }
5154
- function pretty(value) {
5155
- if (value == null) return "";
5156
- try {
5157
- const json = typeof value === "string" ? value : JSON.stringify(value, null, 2);
5158
- if (!json || json === "{}" || json === "[]" || json === '""') return "";
5159
- return json.length > 600 ? `${json.slice(0, 600)}\u2026` : json;
5160
- } catch {
5161
- return "";
5162
- }
5163
- }
5164
5388
 
5165
5389
  // src/ui/message-bubble.tsx
5166
- import { jsx as jsx17, jsxs as jsxs14 } from "preact/jsx-runtime";
5167
- var p16 = BRAND.cssPrefix;
5390
+ import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5391
+ var p17 = BRAND.cssPrefix;
5168
5392
  function MessageBubble({
5169
5393
  message,
5170
5394
  strings,
@@ -5188,9 +5412,9 @@ function MessageBubble({
5188
5412
  const working = streaming && !hasAnswerText.value;
5189
5413
  const showStreamDots = streaming && !bufferedHold && !(reasoningVisible.value && working);
5190
5414
  const stamp = formatStamp(message.createdAt);
5191
- 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: [
5192
- /* @__PURE__ */ jsxs14("div", { class: `${p16}-bubble`, children: [
5193
- 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(
5194
5418
  PartView,
5195
5419
  {
5196
5420
  part,
@@ -5204,10 +5428,10 @@ function MessageBubble({
5204
5428
  },
5205
5429
  partKey(part)
5206
5430
  )),
5207
- showStreamDots && /* @__PURE__ */ jsx17(TypingDots, {}),
5208
- 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
5209
5433
  ] }),
5210
- 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
5211
5435
  ] }) });
5212
5436
  }
5213
5437
  function formatStamp(createdAt) {
@@ -5237,11 +5461,11 @@ function PartView({
5237
5461
  case "step-start":
5238
5462
  return null;
5239
5463
  case "text":
5240
- return /* @__PURE__ */ jsx17(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5464
+ return /* @__PURE__ */ jsx18(MarkdownView, { textSig: part.textSig, doneSig: part.doneSig });
5241
5465
  case "reasoning":
5242
- return showReasoning ? /* @__PURE__ */ jsx17(ReasoningView, { part, active, strings }) : null;
5466
+ return showReasoning ? /* @__PURE__ */ jsx18(ReasoningView, { part, active, strings }) : null;
5243
5467
  case "tool":
5244
- return /* @__PURE__ */ jsx17(
5468
+ return /* @__PURE__ */ jsx18(
5245
5469
  ToolPartView,
5246
5470
  {
5247
5471
  part,
@@ -5253,11 +5477,11 @@ function PartView({
5253
5477
  );
5254
5478
  case "file":
5255
5479
  if (part.mediaType.startsWith("image/")) {
5256
- return /* @__PURE__ */ jsx17("img", { src: part.url, alt: "", loading: "lazy" });
5480
+ return /* @__PURE__ */ jsx18("img", { src: part.url, alt: "", loading: "lazy" });
5257
5481
  }
5258
- 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 });
5259
5483
  case "source":
5260
- return showSources ? /* @__PURE__ */ jsx17(SourceView, { part, strings }) : null;
5484
+ return showSources ? /* @__PURE__ */ jsx18(SourceView, { part, strings }) : null;
5261
5485
  }
5262
5486
  }
5263
5487
  function ToolPartView({
@@ -5270,7 +5494,7 @@ function ToolPartView({
5270
5494
  const hasApproval = useComputed5(() => part.approvalSig.value !== void 0);
5271
5495
  if (tool?.humanInLoop) {
5272
5496
  if (isAskUserInputTool(part.toolName)) {
5273
- return /* @__PURE__ */ jsx17(
5497
+ return /* @__PURE__ */ jsx18(
5274
5498
  ToolAskInput,
5275
5499
  {
5276
5500
  part,
@@ -5282,19 +5506,19 @@ function ToolPartView({
5282
5506
  );
5283
5507
  }
5284
5508
  if (hasApproval.value) {
5285
- return /* @__PURE__ */ jsx17(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5509
+ return /* @__PURE__ */ jsx18(ToolApproval, { part, strings, active: interactive, onDecision: tool.onDecision });
5286
5510
  }
5287
5511
  }
5288
- return showToolCalls ? /* @__PURE__ */ jsx17(ToolCall, { part, strings }) : null;
5512
+ return showToolCalls ? /* @__PURE__ */ jsx18(ToolCall, { part, strings }) : null;
5289
5513
  }
5290
5514
  function ReasoningView({
5291
5515
  part,
5292
5516
  active,
5293
5517
  strings
5294
5518
  }) {
5295
- return /* @__PURE__ */ jsxs14("details", { class: `${p16}-reasoning`, open: active, "data-active": active ? "true" : void 0, children: [
5296
- /* @__PURE__ */ jsx17("summary", { class: `${p16}-reasoning-summary`, children: /* @__PURE__ */ jsx17("span", { class: `${p16}-reasoning-label`, children: active ? strings.thinking : strings.thoughts }) }),
5297
- /* @__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 }) })
5298
5522
  ] });
5299
5523
  }
5300
5524
  function partKey(part) {
@@ -5312,22 +5536,22 @@ function partKey(part) {
5312
5536
  }
5313
5537
  }
5314
5538
  function TypingDots() {
5315
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-typing`, "aria-hidden": "true", children: [
5316
- /* @__PURE__ */ jsx17("span", {}),
5317
- /* @__PURE__ */ jsx17("span", {}),
5318
- /* @__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", {})
5319
5543
  ] });
5320
5544
  }
5321
5545
  function LoadingSpinner({ label }) {
5322
- return /* @__PURE__ */ jsxs14("span", { class: `${p16}-loading`, role: "status", children: [
5323
- /* @__PURE__ */ jsx17("span", { class: `${p16}-loading-spinner`, "aria-hidden": "true" }),
5324
- /* @__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 })
5325
5549
  ] });
5326
5550
  }
5327
5551
 
5328
5552
  // src/ui/message-list.tsx
5329
- import { jsx as jsx18, jsxs as jsxs15 } from "preact/jsx-runtime";
5330
- var p17 = BRAND.cssPrefix;
5553
+ import { jsx as jsx19, jsxs as jsxs16 } from "preact/jsx-runtime";
5554
+ var p18 = BRAND.cssPrefix;
5331
5555
  var STICK_THRESHOLD = 120;
5332
5556
  var INTERACTION_GRACE_MS = 350;
5333
5557
  var DIVIDER_IDLE_MS = 1200;
@@ -5498,7 +5722,7 @@ function MessageList({
5498
5722
  const pendingMarkers = [...formMarkers ?? []].toSorted(
5499
5723
  (a, b) => (a.createdAt ?? Infinity) - (b.createdAt ?? Infinity)
5500
5724
  );
5501
- const markerRow = (marker) => /* @__PURE__ */ jsx18(
5725
+ const markerRow = (marker) => /* @__PURE__ */ jsx19(
5502
5726
  FormDoneMarker,
5503
5727
  {
5504
5728
  marker,
@@ -5519,12 +5743,12 @@ function MessageList({
5519
5743
  const day = dayKey(m.createdAt);
5520
5744
  if (day && day !== prevDay) {
5521
5745
  rows.push(
5522
- /* @__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}`)
5523
5747
  );
5524
5748
  prevDay = day;
5525
5749
  }
5526
5750
  rows.push(
5527
- /* @__PURE__ */ jsx18(
5751
+ /* @__PURE__ */ jsx19(
5528
5752
  MessageBubble,
5529
5753
  {
5530
5754
  message: m,
@@ -5543,33 +5767,33 @@ function MessageList({
5543
5767
  for (const marker of pendingMarkers) {
5544
5768
  rows.push(markerRow(marker));
5545
5769
  }
5546
- return /* @__PURE__ */ jsxs15("div", { class: `${p17}-list-wrap`, children: [
5547
- /* @__PURE__ */ jsxs15(
5770
+ return /* @__PURE__ */ jsxs16("div", { class: `${p18}-list-wrap`, children: [
5771
+ /* @__PURE__ */ jsxs16(
5548
5772
  "div",
5549
5773
  {
5550
5774
  ref,
5551
- class: `${p17}-list`,
5775
+ class: `${p18}-list`,
5552
5776
  role: "log",
5553
5777
  "aria-live": "polite",
5554
5778
  "aria-relevant": "additions text",
5555
5779
  "data-scrolling": scrolling ? "true" : void 0,
5556
5780
  children: [
5557
- 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,
5558
5782
  rows,
5559
- 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
5560
5784
  ]
5561
5785
  }
5562
5786
  ),
5563
- showJump ? /* @__PURE__ */ jsx18(
5787
+ showJump ? /* @__PURE__ */ jsx19(
5564
5788
  "button",
5565
5789
  {
5566
5790
  type: "button",
5567
- class: `${p17}-jump`,
5791
+ class: `${p18}-jump`,
5568
5792
  onClick: jumpToBottom,
5569
5793
  "aria-label": strings.scrollToBottom,
5570
5794
  title: strings.scrollToBottom,
5571
5795
  "data-testid": TID.scrollToBottom,
5572
- children: /* @__PURE__ */ jsx18(ChevronDownIcon, {})
5796
+ children: /* @__PURE__ */ jsx19(ChevronDownIcon, {})
5573
5797
  }
5574
5798
  ) : null
5575
5799
  ] });
@@ -5628,7 +5852,7 @@ function startOfDay(ms) {
5628
5852
  }
5629
5853
 
5630
5854
  // src/ui/conversation-list.tsx
5631
- 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";
5632
5856
  var log12 = logger.scope("history");
5633
5857
  var DEFAULT_SKELETON_ROWS = 3;
5634
5858
  var MAX_SKELETON_ROWS = 6;
@@ -5655,7 +5879,7 @@ function ConversationList({
5655
5879
  onSelect,
5656
5880
  onNewConversation
5657
5881
  }) {
5658
- const p35 = BRAND.cssPrefix;
5882
+ const p36 = BRAND.cssPrefix;
5659
5883
  const seed = transport.peekConversations({ visitorId });
5660
5884
  const [state, setState] = useState7(seed ? "loaded" : "loading");
5661
5885
  const [conversations, setChats] = useState7(seed?.conversations ?? []);
@@ -5676,32 +5900,32 @@ function ConversationList({
5676
5900
  cancelled = true;
5677
5901
  };
5678
5902
  }, [transport, visitorId, persistence]);
5679
- 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(
5680
5904
  "button",
5681
5905
  {
5682
5906
  type: "button",
5683
- class: `${p35}-history-new`,
5907
+ class: `${p36}-history-new`,
5684
5908
  onClick: onNewConversation,
5685
5909
  "data-testid": TID.sidebarNewConversation,
5686
5910
  children: [
5687
- /* @__PURE__ */ jsx19(PlusIcon, {}),
5911
+ /* @__PURE__ */ jsx20(PlusIcon, {}),
5688
5912
  strings.newConversation
5689
5913
  ]
5690
5914
  }
5691
5915
  ) }) : null;
5692
5916
  if (state === "loading") {
5693
5917
  const rows = Math.min(persistence.loadHistoryCount() ?? DEFAULT_SKELETON_ROWS, MAX_SKELETON_ROWS);
5694
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5695
- /* @__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: [
5696
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-heading` }) }),
5697
- /* @__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: [
5698
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar ${p35}-skeleton` }),
5699
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5700
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5701
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: /* @__PURE__ */ jsx19("span", { class: `${p35}-skeleton ${p35}-skeleton-title` }) }),
5702
- /* @__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` }) })
5703
5927
  ] }),
5704
- /* @__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` }) }) })
5705
5929
  ] })
5706
5930
  ] }, i)) })
5707
5931
  ] }) }),
@@ -5709,36 +5933,36 @@ function ConversationList({
5709
5933
  ] });
5710
5934
  }
5711
5935
  if (state === "error" || conversations.length === 0) {
5712
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5713
- /* @__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 }),
5714
5938
  newChatButton
5715
5939
  ] });
5716
5940
  }
5717
5941
  const now = Date.now();
5718
5942
  const groups = groupByBucket(now, conversations);
5719
- return /* @__PURE__ */ jsxs16(Fragment3, { children: [
5720
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history`, role: "list", children: groups.map((group) => /* @__PURE__ */ jsxs16("div", { class: `${p35}-history-group`, children: [
5721
- /* @__PURE__ */ jsx19("div", { class: `${p35}-history-heading`, children: strings[BUCKET_TO_STRING[group.bucket]] }),
5722
- /* @__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(
5723
5947
  "button",
5724
5948
  {
5725
5949
  type: "button",
5726
5950
  role: "listitem",
5727
- class: `${p35}-history-item`,
5951
+ class: `${p36}-history-item`,
5728
5952
  onClick: () => onSelect(chat),
5729
5953
  "data-closed": chat.canContinue ? void 0 : "true",
5730
5954
  "data-unread": (chat.unreadCount ?? 0) > 0 ? "true" : void 0,
5731
5955
  "data-testid": tid(TID.historyItem, chat.conversationId),
5732
5956
  children: [
5733
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx19(MessageIcon, {}) }),
5734
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-body`, children: [
5735
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5736
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-title`, children: chat.title }),
5737
- /* @__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) })
5738
5962
  ] }),
5739
- /* @__PURE__ */ jsxs16("span", { class: `${p35}-history-row`, children: [
5740
- /* @__PURE__ */ jsx19("span", { class: `${p35}-history-preview`, children: chat.preview ?? (chat.canContinue ? strings.historyContinue : strings.conversationClosed) }),
5741
- (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
5742
5966
  ] })
5743
5967
  ] })
5744
5968
  ]
@@ -5751,15 +5975,15 @@ function ConversationList({
5751
5975
  }
5752
5976
 
5753
5977
  // src/ui/suggestions.tsx
5754
- import { jsx as jsx20 } from "preact/jsx-runtime";
5755
- var p18 = BRAND.cssPrefix;
5978
+ import { jsx as jsx21 } from "preact/jsx-runtime";
5979
+ var p19 = BRAND.cssPrefix;
5756
5980
  function Suggestions({ suggestions, onPick }) {
5757
5981
  if (suggestions.length === 0) return null;
5758
- 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(
5759
5983
  "button",
5760
5984
  {
5761
5985
  type: "button",
5762
- class: `${p18}-suggestion`,
5986
+ class: `${p19}-suggestion`,
5763
5987
  onClick: () => onPick(s),
5764
5988
  "data-testid": tid(TID.suggestion, i),
5765
5989
  children: s.label
@@ -5769,8 +5993,8 @@ function Suggestions({ suggestions, onPick }) {
5769
5993
  }
5770
5994
 
5771
5995
  // src/ui/panel.tsx
5772
- import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "preact/jsx-runtime";
5773
- var p19 = BRAND.cssPrefix;
5996
+ import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs18 } from "preact/jsx-runtime";
5997
+ var p20 = BRAND.cssPrefix;
5774
5998
  function Panel(props2) {
5775
5999
  const { options, onClose } = props2;
5776
6000
  const s = options.strings;
@@ -5794,18 +6018,18 @@ function Panel(props2) {
5794
6018
  }, []);
5795
6019
  const { visible: dragOver } = useFileDrop({ containerRef, onDrop: onDropItems });
5796
6020
  useDragMove(containerRef.current, options.mode === "modal");
5797
- return /* @__PURE__ */ jsxs17(
6021
+ return /* @__PURE__ */ jsxs18(
5798
6022
  "div",
5799
6023
  {
5800
6024
  ref: containerRef,
5801
- class: `${p19}-panel`,
6025
+ class: `${p20}-panel`,
5802
6026
  role: "dialog",
5803
6027
  "aria-modal": "false",
5804
6028
  "aria-label": s.panelTitle,
5805
6029
  style: { position: "relative" },
5806
6030
  "data-testid": TID.panel,
5807
6031
  children: [
5808
- /* @__PURE__ */ jsx21(
6032
+ /* @__PURE__ */ jsx22(
5809
6033
  PanelContent,
5810
6034
  {
5811
6035
  ...props2,
@@ -5814,7 +6038,7 @@ function Panel(props2) {
5814
6038
  composerAttachApiRef
5815
6039
  }
5816
6040
  ),
5817
- /* @__PURE__ */ jsx21(PoweredByBar, { poweredBy: props2.options.poweredBy })
6041
+ /* @__PURE__ */ jsx22(PoweredByBar, { poweredBy: props2.options.poweredBy })
5818
6042
  ]
5819
6043
  }
5820
6044
  );
@@ -5861,9 +6085,9 @@ function PanelContent(props2) {
5861
6085
  if (activeForm) {
5862
6086
  composerArea = null;
5863
6087
  } else if (canSend) {
5864
- composerArea = /* @__PURE__ */ jsxs17(Fragment4, { children: [
5865
- /* @__PURE__ */ jsx21(Suggestions, { suggestions, onPick: onSuggestion }),
5866
- /* @__PURE__ */ jsx21(
6088
+ composerArea = /* @__PURE__ */ jsxs18(Fragment4, { children: [
6089
+ /* @__PURE__ */ jsx22(Suggestions, { suggestions, onPick: onSuggestion }),
6090
+ /* @__PURE__ */ jsx22(
5867
6091
  Composer,
5868
6092
  {
5869
6093
  options,
@@ -5878,10 +6102,10 @@ function PanelContent(props2) {
5878
6102
  )
5879
6103
  ] });
5880
6104
  } else {
5881
- 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 });
5882
6106
  }
5883
- return /* @__PURE__ */ jsxs17(Fragment4, { children: [
5884
- view === "history" ? /* @__PURE__ */ jsx21(
6107
+ return /* @__PURE__ */ jsxs18(Fragment4, { children: [
6108
+ view === "history" ? /* @__PURE__ */ jsx22(
5885
6109
  HistoryHeader,
5886
6110
  {
5887
6111
  strings: s,
@@ -5889,22 +6113,22 @@ function PanelContent(props2) {
5889
6113
  onClose,
5890
6114
  showClose: canShowClose(options.mode, panelSize, options.actions)
5891
6115
  }
5892
- ) : /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, "data-testid": TID.panelHeader, children: [
5893
- onBack ? /* @__PURE__ */ jsx21(
6116
+ ) : /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, "data-testid": TID.panelHeader, children: [
6117
+ onBack ? /* @__PURE__ */ jsx22(
5894
6118
  "button",
5895
6119
  {
5896
6120
  type: "button",
5897
- class: `${p19}-icon-btn`,
6121
+ class: `${p20}-icon-btn`,
5898
6122
  onClick: onBack,
5899
6123
  "aria-label": s.moduleBack,
5900
6124
  title: s.moduleBack,
5901
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6125
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5902
6126
  }
5903
6127
  ) : null,
5904
- agent ? /* @__PURE__ */ jsx21(AgentBadge, { agent, strings: s }) : /* @__PURE__ */ jsx21("h1", { children: s.panelTitle }),
5905
- /* @__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" })
5906
6130
  ] }),
5907
- view === "history" ? /* @__PURE__ */ jsx21(
6131
+ view === "history" ? /* @__PURE__ */ jsx22(
5908
6132
  ConversationList,
5909
6133
  {
5910
6134
  transport,
@@ -5915,9 +6139,9 @@ function PanelContent(props2) {
5915
6139
  onSelect: (conversation) => onSelectHistoryConversation(conversation.conversationId),
5916
6140
  onNewConversation
5917
6141
  }
5918
- ) : /* @__PURE__ */ jsxs17(Fragment4, { children: [
5919
- /* @__PURE__ */ jsx21(DropZone, { visible: dragOver, strings: s }),
5920
- /* @__PURE__ */ jsx21(
6142
+ ) : /* @__PURE__ */ jsxs18(Fragment4, { children: [
6143
+ /* @__PURE__ */ jsx22(DropZone, { visible: dragOver, strings: s }),
6144
+ /* @__PURE__ */ jsx22(
5921
6145
  MessageList,
5922
6146
  {
5923
6147
  messagesSig,
@@ -5935,9 +6159,9 @@ function PanelContent(props2) {
5935
6159
  }
5936
6160
  ),
5937
6161
  composerArea,
5938
- /* @__PURE__ */ jsx21(ComposerFooter, { disclaimer: options.composerDisclaimer })
6162
+ /* @__PURE__ */ jsx22(ComposerFooter, { disclaimer: options.composerDisclaimer })
5939
6163
  ] }),
5940
- options.size.resize?.enabled ? /* @__PURE__ */ jsx21(
6164
+ options.size.resize?.enabled ? /* @__PURE__ */ jsx22(
5941
6165
  ResizeGrip,
5942
6166
  {
5943
6167
  panelEl: containerEl,
@@ -5956,28 +6180,28 @@ function HistoryHeader({
5956
6180
  onClose,
5957
6181
  showClose
5958
6182
  }) {
5959
- return /* @__PURE__ */ jsxs17("header", { class: `${p19}-header`, children: [
5960
- /* @__PURE__ */ jsx21(
6183
+ return /* @__PURE__ */ jsxs18("header", { class: `${p20}-header`, children: [
6184
+ /* @__PURE__ */ jsx22(
5961
6185
  "button",
5962
6186
  {
5963
6187
  type: "button",
5964
- class: `${p19}-icon-btn`,
6188
+ class: `${p20}-icon-btn`,
5965
6189
  onClick: onBack,
5966
6190
  "aria-label": strings.historyBack,
5967
6191
  title: strings.historyBack,
5968
- children: /* @__PURE__ */ jsx21(BackIcon, {})
6192
+ children: /* @__PURE__ */ jsx22(BackIcon, {})
5969
6193
  }
5970
6194
  ),
5971
- /* @__PURE__ */ jsx21("h1", { children: strings.historyTitle }),
5972
- showClose ? /* @__PURE__ */ jsx21(
6195
+ /* @__PURE__ */ jsx22("h1", { children: strings.historyTitle }),
6196
+ showClose ? /* @__PURE__ */ jsx22(
5973
6197
  "button",
5974
6198
  {
5975
6199
  type: "button",
5976
- class: `${p19}-icon-btn`,
6200
+ class: `${p20}-icon-btn`,
5977
6201
  onClick: onClose,
5978
6202
  "aria-label": strings.close,
5979
6203
  title: strings.close,
5980
- children: /* @__PURE__ */ jsx21(CloseIcon, {})
6204
+ children: /* @__PURE__ */ jsx22(CloseIcon, {})
5981
6205
  }
5982
6206
  ) : null
5983
6207
  ] });
@@ -5987,28 +6211,28 @@ function ReadOnlyBanner({
5987
6211
  ctaLabel,
5988
6212
  onNewConversation
5989
6213
  }) {
5990
- return /* @__PURE__ */ jsxs17("div", { class: `${p19}-readonly-banner`, role: "note", children: [
5991
- /* @__PURE__ */ jsx21("span", { class: `${p19}-readonly-label`, children: label }),
5992
- /* @__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 })
5993
6217
  ] });
5994
6218
  }
5995
6219
  function ComposerFooter({ disclaimer }) {
5996
6220
  if (!disclaimer) return null;
5997
- 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 }) });
5998
6222
  }
5999
6223
  function PoweredByBar({ poweredBy }) {
6000
6224
  if (!poweredBy) return null;
6001
- 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 }) });
6002
6226
  }
6003
6227
  function PoweredBy({ logoUrl, text, href }) {
6004
- const inner = /* @__PURE__ */ jsxs17(Fragment4, { children: [
6005
- logoUrl ? /* @__PURE__ */ jsx21("img", { class: `${p19}-poweredby-logo`, src: logoUrl, alt: "", loading: "lazy" }) : null,
6006
- 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
6007
6231
  ] });
6008
6232
  if (href) {
6009
- 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 });
6010
6234
  }
6011
- return /* @__PURE__ */ jsx21("span", { class: `${p19}-poweredby`, children: inner });
6235
+ return /* @__PURE__ */ jsx22("span", { class: `${p20}-poweredby`, children: inner });
6012
6236
  }
6013
6237
 
6014
6238
  // src/ui/form/form-controller.ts
@@ -6091,34 +6315,34 @@ function whenPasses(form, d) {
6091
6315
  }
6092
6316
 
6093
6317
  // src/ui/sidebar.tsx
6094
- 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";
6095
6319
  function Sidebar(props2) {
6096
- const p35 = BRAND.cssPrefix;
6320
+ const p36 = BRAND.cssPrefix;
6097
6321
  const { site, blocks, strings, collapsed } = props2;
6098
6322
  const navigation = blocks?.navigation ?? [];
6099
6323
  const linkCards = blocks?.linkCards ?? [];
6100
6324
  const toggleLabel = collapsed ? strings.expandSidebar : strings.collapseSidebar;
6101
- return /* @__PURE__ */ jsxs18("aside", { class: `${p35}-sidebar`, "data-collapsed": collapsed ? "true" : "false", "data-testid": TID.sidebar, children: [
6102
- /* @__PURE__ */ jsxs18("div", { class: `${p35}-sidebar-header`, children: [
6103
- /* @__PURE__ */ jsx22(SidebarBrand, { site }),
6104
- /* @__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(
6105
6329
  "button",
6106
6330
  {
6107
6331
  type: "button",
6108
- class: `${p35}-sidebar-toggle`,
6332
+ class: `${p36}-sidebar-toggle`,
6109
6333
  "aria-label": toggleLabel,
6110
6334
  "aria-expanded": collapsed ? "false" : "true",
6111
6335
  title: toggleLabel,
6112
6336
  onClick: props2.onToggleCollapsed,
6113
6337
  "data-testid": TID.sidebarToggle,
6114
- children: /* @__PURE__ */ jsx22(SidebarToggleIcon, { collapsed })
6338
+ children: /* @__PURE__ */ jsx23(SidebarToggleIcon, { collapsed })
6115
6339
  }
6116
6340
  )
6117
6341
  ] }),
6118
- collapsed ? null : /* @__PURE__ */ jsxs18(Fragment5, { children: [
6119
- navigation.length > 0 ? /* @__PURE__ */ jsx22("nav", { class: `${p35}-sidebar-section`, "data-section": "navigation", children: /* @__PURE__ */ jsx22(SidebarNav, { items: navigation }) }) : null,
6120
- linkCards.length > 0 ? /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-section`, "data-section": "link-cards", children: /* @__PURE__ */ jsx22(SidebarCards, { items: linkCards }) }) : null,
6121
- 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(
6122
6346
  ConversationList,
6123
6347
  {
6124
6348
  transport: props2.transport,
@@ -6134,18 +6358,18 @@ function Sidebar(props2) {
6134
6358
  ] });
6135
6359
  }
6136
6360
  function SidebarBrand({ site }) {
6137
- const p35 = BRAND.cssPrefix;
6361
+ const p36 = BRAND.cssPrefix;
6138
6362
  if (site?.logo?.url) {
6139
6363
  const alt = site.logo.alt ?? site.title ?? "Logo";
6140
- return /* @__PURE__ */ jsxs18("picture", { children: [
6141
- site.logoDark?.url ? /* @__PURE__ */ jsx22("source", { srcset: site.logoDark.url, media: "(prefers-color-scheme: dark)" }) : null,
6142
- /* @__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 })
6143
6367
  ] });
6144
6368
  }
6145
- 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 });
6146
6370
  }
6147
6371
  function SidebarToggleIcon({ collapsed }) {
6148
- return /* @__PURE__ */ jsx22(
6372
+ return /* @__PURE__ */ jsx23(
6149
6373
  "svg",
6150
6374
  {
6151
6375
  width: "16",
@@ -6155,38 +6379,38 @@ function SidebarToggleIcon({ collapsed }) {
6155
6379
  stroke: "currentColor",
6156
6380
  "stroke-width": "2",
6157
6381
  "aria-hidden": "true",
6158
- 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" })
6159
6383
  }
6160
6384
  );
6161
6385
  }
6162
6386
  function SidebarNav({ items }) {
6163
- const p35 = BRAND.cssPrefix;
6164
- 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(
6165
6389
  "a",
6166
6390
  {
6167
- class: `${p35}-sidebar-nav-item`,
6391
+ class: `${p36}-sidebar-nav-item`,
6168
6392
  href: item.href,
6169
6393
  target: item.href ? "_blank" : void 0,
6170
6394
  rel: item.href ? "noreferrer" : void 0,
6171
6395
  children: [
6172
- item.icon ? /* @__PURE__ */ jsx22("span", { class: `${p35}-sidebar-nav-icon`, "data-icon": item.icon }) : null,
6173
- /* @__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 })
6174
6398
  ]
6175
6399
  }
6176
6400
  ) }, item.id ?? item.label)) });
6177
6401
  }
6178
6402
  function SidebarCards({ items }) {
6179
- const p35 = BRAND.cssPrefix;
6180
- 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(
6181
6405
  "a",
6182
6406
  {
6183
- class: `${p35}-sidebar-card`,
6407
+ class: `${p36}-sidebar-card`,
6184
6408
  href: item.href,
6185
6409
  target: item.href ? "_blank" : void 0,
6186
6410
  rel: item.href ? "noreferrer" : void 0,
6187
6411
  children: [
6188
- /* @__PURE__ */ jsx22("div", { class: `${p35}-sidebar-card-label`, children: item.label }),
6189
- 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
6190
6414
  ]
6191
6415
  },
6192
6416
  item.id ?? item.label
@@ -6194,11 +6418,11 @@ function SidebarCards({ items }) {
6194
6418
  }
6195
6419
 
6196
6420
  // src/ui/page-shell.tsx
6197
- import { jsx as jsx23, jsxs as jsxs19 } from "preact/jsx-runtime";
6198
- var p20 = BRAND.cssPrefix;
6421
+ import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6422
+ var p21 = BRAND.cssPrefix;
6199
6423
  function PageShell(props2) {
6200
- return /* @__PURE__ */ jsxs19("main", { class: `${p20}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6201
- /* @__PURE__ */ jsx23(
6424
+ return /* @__PURE__ */ jsxs20("main", { class: `${p21}-page-shell`, "data-sidebar-collapsed": props2.sidebarCollapsed ? "true" : "false", children: [
6425
+ /* @__PURE__ */ jsx24(
6202
6426
  Sidebar,
6203
6427
  {
6204
6428
  site: props2.site,
@@ -6215,7 +6439,7 @@ function PageShell(props2) {
6215
6439
  onToggleCollapsed: props2.onToggleSidebarCollapsed
6216
6440
  }
6217
6441
  ),
6218
- /* @__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 })
6219
6443
  ] });
6220
6444
  }
6221
6445
 
@@ -6265,80 +6489,80 @@ var chatLayout = {
6265
6489
  import { useEffect as useEffect10, useMemo as useMemo2, useState as useState8 } from "preact/hooks";
6266
6490
 
6267
6491
  // src/ui/back-header.tsx
6268
- import { jsx as jsx24, jsxs as jsxs20 } from "preact/jsx-runtime";
6269
- var p21 = BRAND.cssPrefix;
6492
+ import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6493
+ var p22 = BRAND.cssPrefix;
6270
6494
  function TitleBar({ title, actions }) {
6271
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-variant": "title", children: [
6272
- /* @__PURE__ */ jsx24("span", { class: `${p21}-back-spacer`, "aria-hidden": "true" }),
6273
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6274
- 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" })
6275
6499
  ] });
6276
6500
  }
6277
6501
  function BackHeader({ title, backLabel, onBack, actions, testid }) {
6278
- return /* @__PURE__ */ jsxs20("header", { class: `${p21}-back-header`, "data-testid": testid, children: [
6279
- /* @__PURE__ */ jsx24("button", { type: "button", class: `${p21}-icon-btn`, onClick: onBack, "aria-label": backLabel, title: backLabel, children: /* @__PURE__ */ jsx24(BackIcon, {}) }),
6280
- /* @__PURE__ */ jsx24("h1", { class: `${p21}-back-title`, children: title }),
6281
- 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" })
6282
6506
  ] });
6283
6507
  }
6284
6508
 
6285
6509
  // src/ui/home-search.tsx
6286
- import { jsx as jsx25, jsxs as jsxs21 } from "preact/jsx-runtime";
6287
- var p22 = BRAND.cssPrefix;
6510
+ import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6511
+ var p23 = BRAND.cssPrefix;
6288
6512
  function HomeSearchButton({ placeholder, onActivate }) {
6289
- return /* @__PURE__ */ jsxs21("button", { type: "button", class: `${p22}-home-search`, onClick: onActivate, "data-testid": TID.homeSearch, children: [
6290
- /* @__PURE__ */ jsx25("span", { class: `${p22}-home-search-text`, children: placeholder }),
6291
- /* @__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, {}) })
6292
6516
  ] });
6293
6517
  }
6294
6518
  function HelpSearchInput({ placeholder, value, onInput }) {
6295
- return /* @__PURE__ */ jsxs21("div", { class: `${p22}-home-search`, "data-input": "true", children: [
6296
- /* @__PURE__ */ jsx25(
6519
+ return /* @__PURE__ */ jsxs22("div", { class: `${p23}-home-search`, "data-input": "true", children: [
6520
+ /* @__PURE__ */ jsx26(
6297
6521
  "input",
6298
6522
  {
6299
6523
  type: "search",
6300
- class: `${p22}-home-search-input`,
6524
+ class: `${p23}-home-search-input`,
6301
6525
  placeholder,
6302
6526
  value,
6303
6527
  onInput: (e) => onInput(e.currentTarget.value),
6304
6528
  "data-testid": TID.helpSearch
6305
6529
  }
6306
6530
  ),
6307
- /* @__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, {}) })
6308
6532
  ] });
6309
6533
  }
6310
6534
 
6311
6535
  // src/ui/list-row.tsx
6312
- import { jsx as jsx26, jsxs as jsxs22 } from "preact/jsx-runtime";
6313
- var p23 = BRAND.cssPrefix;
6536
+ import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6537
+ var p24 = BRAND.cssPrefix;
6314
6538
  function ListRow({ title, subtitle, onClick, testid }) {
6315
- return /* @__PURE__ */ jsxs22("button", { type: "button", class: `${p23}-list-row`, onClick, "data-testid": testid, children: [
6316
- /* @__PURE__ */ jsxs22("span", { class: `${p23}-list-row-body`, children: [
6317
- /* @__PURE__ */ jsx26("span", { class: `${p23}-list-row-title`, children: title }),
6318
- 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
6319
6543
  ] }),
6320
- /* @__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, {}) })
6321
6545
  ] });
6322
6546
  }
6323
6547
 
6324
6548
  // src/ui/module-state.tsx
6325
- import { jsx as jsx27, jsxs as jsxs23 } from "preact/jsx-runtime";
6326
- var p24 = BRAND.cssPrefix;
6549
+ import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6550
+ var p25 = BRAND.cssPrefix;
6327
6551
  function ModuleState({
6328
6552
  tone = "info",
6329
6553
  message,
6330
6554
  onRetry,
6331
6555
  strings
6332
6556
  }) {
6333
- return /* @__PURE__ */ jsxs23("div", { class: `${p24}-module-empty`, role: tone === "error" ? "alert" : "status", "aria-live": "polite", children: [
6334
- /* @__PURE__ */ jsx27("span", { children: message }),
6335
- 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
6336
6560
  ] });
6337
6561
  }
6338
6562
 
6339
6563
  // src/ui/modules/help.tsx
6340
- import { jsx as jsx28, jsxs as jsxs24 } from "preact/jsx-runtime";
6341
- var p25 = BRAND.cssPrefix;
6564
+ import { jsx as jsx29, jsxs as jsxs25 } from "preact/jsx-runtime";
6565
+ var p26 = BRAND.cssPrefix;
6342
6566
  var log13 = logger.scope("help");
6343
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 });
6344
6568
  function groupByCategory(items) {
@@ -6367,7 +6591,7 @@ function fuzzySearch(items, query) {
6367
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);
6368
6592
  }
6369
6593
  function ArticleRow({ article, nav }) {
6370
- return /* @__PURE__ */ jsx28(
6594
+ return /* @__PURE__ */ jsx29(
6371
6595
  ListRow,
6372
6596
  {
6373
6597
  title: article.title,
@@ -6412,46 +6636,46 @@ function HelpRoot({ transport, strings, config, nav, bus, panelProps }) {
6412
6636
  }, [query, results, bus]);
6413
6637
  function renderBody() {
6414
6638
  if (query.trim().length > 0) {
6415
- if (results.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpSearchEmpty, strings });
6416
- 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)) });
6417
6641
  }
6418
- if (state === "loading") return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpLoading, strings });
6642
+ if (state === "loading") return /* @__PURE__ */ jsx29(ModuleState, { message: strings.helpLoading, strings });
6419
6643
  if (state === "error") {
6420
- 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 });
6421
6645
  }
6422
- if (items.length === 0) return /* @__PURE__ */ jsx28(ModuleState, { message: strings.helpEmpty, strings });
6423
- return groupByCategory(items).map(([category, rows]) => /* @__PURE__ */ jsxs24("section", { class: `${p25}-help-group`, children: [
6424
- category ? /* @__PURE__ */ jsx28("h2", { class: `${p25}-help-section-title`, children: category }) : null,
6425
- /* @__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)) })
6426
6650
  ] }, category));
6427
6651
  }
6428
- return /* @__PURE__ */ jsxs24("div", { class: `${p25}-module`, children: [
6429
- /* @__PURE__ */ jsx28(TitleBar, { title: strings.helpTitle, actions: /* @__PURE__ */ jsx28(HeaderActions, { panelProps, variant: "plain" }) }),
6430
- /* @__PURE__ */ jsx28("div", { class: `${p25}-module-pad`, children: /* @__PURE__ */ jsx28(HelpSearchInput, { placeholder: strings.helpSearchPlaceholder, value: query, onInput: setQuery }) }),
6431
- /* @__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() })
6432
6656
  ] });
6433
6657
  }
6434
6658
  var helpLayout = {
6435
6659
  Icon: HelpIcon,
6436
- Root: (props2) => /* @__PURE__ */ jsx28(HelpRoot, { ...props2 })
6660
+ Root: (props2) => /* @__PURE__ */ jsx29(HelpRoot, { ...props2 })
6437
6661
  };
6438
6662
 
6439
6663
  // src/ui/modules/home.tsx
6440
6664
  import { useEffect as useEffect11, useState as useState9 } from "preact/hooks";
6441
6665
 
6442
6666
  // src/ui/home-card.tsx
6443
- import { jsx as jsx29 } from "preact/jsx-runtime";
6444
- var p26 = BRAND.cssPrefix;
6667
+ import { jsx as jsx30 } from "preact/jsx-runtime";
6668
+ var p27 = BRAND.cssPrefix;
6445
6669
  function HomeCard({ onClick, children, testid }) {
6446
6670
  if (onClick) {
6447
- 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 });
6448
6672
  }
6449
- 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 });
6450
6674
  }
6451
6675
 
6452
6676
  // src/ui/modules/home.tsx
6453
- import { Fragment as Fragment6, jsx as jsx30, jsxs as jsxs25 } from "preact/jsx-runtime";
6454
- var p27 = BRAND.cssPrefix;
6677
+ import { Fragment as Fragment6, jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6678
+ var p28 = BRAND.cssPrefix;
6455
6679
  var log14 = logger.scope("home");
6456
6680
  function resolveGreeting(props2) {
6457
6681
  const name = props2.options.userContext?.name;
@@ -6494,49 +6718,49 @@ function HomeRoot(props2) {
6494
6718
  const status = config.status;
6495
6719
  const statusText = status?.text ? localizeText(strings, status.text) : strings.homeStatus;
6496
6720
  const contentTitle = config.contentBlockTitle ? localizeText(strings, config.contentBlockTitle) : strings.homeContentTitle;
6497
- return /* @__PURE__ */ jsx30("div", { class: `${p27}-module ${p27}-home`, "data-testid": TID.homeView, children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-scroll`, children: [
6498
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero`, children: [
6499
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-top`, children: [
6500
- 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" }),
6501
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-hero-actions`, children: [
6502
- 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,
6503
- /* @__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" })
6504
6728
  ] })
6505
6729
  ] }),
6506
- config.showGreeting !== false ? /* @__PURE__ */ jsxs25(Fragment6, { children: [
6507
- /* @__PURE__ */ jsx30("h1", { class: `${p27}-home-greeting`, "data-testid": TID.homeGreeting, children: greeting.title }),
6508
- 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
6509
6733
  ] }) : null
6510
6734
  ] }),
6511
- /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-cards`, children: [
6512
- config.showSearchBar !== false ? /* @__PURE__ */ jsx30(
6735
+ /* @__PURE__ */ jsxs26("div", { class: `${p28}-home-cards`, children: [
6736
+ config.showSearchBar !== false ? /* @__PURE__ */ jsx31(
6513
6737
  HomeSearchButton,
6514
6738
  {
6515
6739
  placeholder: strings.homeSearchPlaceholder,
6516
6740
  onActivate: () => nav.switchToLayout("help")
6517
6741
  }
6518
6742
  ) : null,
6519
- 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: [
6520
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-avatar`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(BubblesIcon, {}) }),
6521
- /* @__PURE__ */ jsxs25("span", { class: `${p27}-home-recent-body`, children: [
6522
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-recent-title`, children: recent.title }),
6523
- 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
6524
6748
  ] }),
6525
- (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
6526
6750
  ] }) }) : null,
6527
- status ? /* @__PURE__ */ jsx30(
6751
+ status ? /* @__PURE__ */ jsx31(
6528
6752
  HomeCard,
6529
6753
  {
6530
6754
  onClick: status.url ? () => nav.push({ kind: "iframe", url: status.url, title: statusText }) : void 0,
6531
- children: /* @__PURE__ */ jsxs25("div", { class: `${p27}-home-status`, "data-level": status.level ?? "operational", children: [
6532
- /* @__PURE__ */ jsx30("span", { class: `${p27}-home-status-icon`, "aria-hidden": "true", children: /* @__PURE__ */ jsx30(StatusOkIcon, {}) }),
6533
- /* @__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 })
6534
6758
  ] })
6535
6759
  }
6536
6760
  ) : null,
6537
- content.length > 0 ? /* @__PURE__ */ jsxs25("section", { class: `${p27}-home-content`, children: [
6538
- /* @__PURE__ */ jsx30("div", { class: `${p27}-home-content-title`, children: contentTitle }),
6539
- /* @__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(
6540
6764
  ListRow,
6541
6765
  {
6542
6766
  title: item.title,
@@ -6552,13 +6776,13 @@ function HomeRoot(props2) {
6552
6776
  }
6553
6777
  var homeLayout = {
6554
6778
  Icon: HomeIcon,
6555
- Root: (props2) => /* @__PURE__ */ jsx30(HomeRoot, { ...props2 })
6779
+ Root: (props2) => /* @__PURE__ */ jsx31(HomeRoot, { ...props2 })
6556
6780
  };
6557
6781
 
6558
6782
  // src/ui/modules/news.tsx
6559
6783
  import { useEffect as useEffect12, useState as useState10 } from "preact/hooks";
6560
- import { jsx as jsx31, jsxs as jsxs26 } from "preact/jsx-runtime";
6561
- var p28 = BRAND.cssPrefix;
6784
+ import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6785
+ var p29 = BRAND.cssPrefix;
6562
6786
  var log15 = logger.scope("news");
6563
6787
  function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6564
6788
  const tags = config.contentTags;
@@ -6586,37 +6810,37 @@ function NewsRoot({ transport, strings, config, nav, bus, panelProps }) {
6586
6810
  };
6587
6811
  }, [transport, tags, reloadKey, bus]);
6588
6812
  function renderBody() {
6589
- if (state === "loading") return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsLoading, strings });
6813
+ if (state === "loading") return /* @__PURE__ */ jsx32(ModuleState, { message: strings.newsLoading, strings });
6590
6814
  if (state === "error") {
6591
- 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 });
6592
6816
  }
6593
- if (items.length === 0) return /* @__PURE__ */ jsx31(ModuleState, { message: strings.newsEmpty, strings });
6594
- 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(
6595
6819
  "button",
6596
6820
  {
6597
6821
  type: "button",
6598
- class: `${p28}-news-card`,
6822
+ class: `${p29}-news-card`,
6599
6823
  onClick: () => nav.push({ kind: "content", id: item.id, title: item.title }),
6600
6824
  "data-testid": tid(TID.newsItem, item.id),
6601
6825
  children: [
6602
- item.image ? /* @__PURE__ */ jsx31("img", { class: `${p28}-news-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6603
- /* @__PURE__ */ jsxs26("span", { class: `${p28}-news-body`, children: [
6604
- /* @__PURE__ */ jsx31("span", { class: `${p28}-news-title`, children: item.title }),
6605
- 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
6606
6830
  ] })
6607
6831
  ]
6608
6832
  },
6609
6833
  item.id
6610
6834
  )) });
6611
6835
  }
6612
- return /* @__PURE__ */ jsxs26("div", { class: `${p28}-module`, children: [
6613
- /* @__PURE__ */ jsx31(TitleBar, { title: strings.newsTitle, actions: /* @__PURE__ */ jsx31(HeaderActions, { panelProps, variant: "plain" }) }),
6614
- /* @__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() })
6615
6839
  ] });
6616
6840
  }
6617
6841
  var newsLayout = {
6618
6842
  Icon: NewsIcon,
6619
- Root: (props2) => /* @__PURE__ */ jsx31(NewsRoot, { ...props2 })
6843
+ Root: (props2) => /* @__PURE__ */ jsx32(NewsRoot, { ...props2 })
6620
6844
  };
6621
6845
 
6622
6846
  // src/ui/modules/registry.ts
@@ -6628,28 +6852,28 @@ var LAYOUTS = {
6628
6852
  };
6629
6853
 
6630
6854
  // src/ui/home-tab-bar.tsx
6631
- import { jsx as jsx32, jsxs as jsxs27 } from "preact/jsx-runtime";
6632
- var p29 = BRAND.cssPrefix;
6855
+ import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6856
+ var p30 = BRAND.cssPrefix;
6633
6857
  function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6634
- 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) => {
6635
6859
  const Icon = LAYOUTS[m.layout].Icon;
6636
6860
  const selected = m.id === activeTab;
6637
6861
  const badge = m.layout === "chat" && unreadCount > 0 ? unreadCount > 9 ? "9+" : String(unreadCount) : null;
6638
- return /* @__PURE__ */ jsxs27(
6862
+ return /* @__PURE__ */ jsxs28(
6639
6863
  "button",
6640
6864
  {
6641
6865
  type: "button",
6642
6866
  role: "tab",
6643
6867
  "aria-selected": selected,
6644
- class: `${p29}-tab`,
6868
+ class: `${p30}-tab`,
6645
6869
  onClick: () => onSelect(m.id),
6646
6870
  "data-testid": tid(TID.tab, m.id),
6647
6871
  children: [
6648
- /* @__PURE__ */ jsxs27("span", { class: `${p29}-tab-icon`, "aria-hidden": "true", children: [
6649
- /* @__PURE__ */ jsx32(Icon, {}),
6650
- 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
6651
6875
  ] }),
6652
- /* @__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) })
6653
6877
  ]
6654
6878
  },
6655
6879
  m.id
@@ -6658,12 +6882,12 @@ function HomeTabBar({ modules, activeTab, strings, unreadCount, onSelect }) {
6658
6882
  }
6659
6883
 
6660
6884
  // src/ui/iframe-view.tsx
6661
- import { jsx as jsx33, jsxs as jsxs28 } from "preact/jsx-runtime";
6662
- var p30 = BRAND.cssPrefix;
6885
+ import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6886
+ var p31 = BRAND.cssPrefix;
6663
6887
  var SANDBOX = "allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-downloads";
6664
6888
  function IframeView({ url, title, strings, onBack, actions }) {
6665
- return /* @__PURE__ */ jsxs28("div", { class: `${p30}-module`, children: [
6666
- /* @__PURE__ */ jsx33(
6889
+ return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6890
+ /* @__PURE__ */ jsx34(
6667
6891
  BackHeader,
6668
6892
  {
6669
6893
  title: title || strings.moduleBack,
@@ -6672,10 +6896,10 @@ function IframeView({ url, title, strings, onBack, actions }) {
6672
6896
  actions
6673
6897
  }
6674
6898
  ),
6675
- /* @__PURE__ */ jsx33(
6899
+ /* @__PURE__ */ jsx34(
6676
6900
  "iframe",
6677
6901
  {
6678
- class: `${p30}-content-frame`,
6902
+ class: `${p31}-content-frame`,
6679
6903
  src: url,
6680
6904
  title: title || "content",
6681
6905
  sandbox: SANDBOX,
@@ -6689,8 +6913,8 @@ function IframeView({ url, title, strings, onBack, actions }) {
6689
6913
 
6690
6914
  // src/ui/content-view.tsx
6691
6915
  import { useCallback as useCallback3, useEffect as useEffect13, useState as useState11 } from "preact/hooks";
6692
- import { jsx as jsx34, jsxs as jsxs29 } from "preact/jsx-runtime";
6693
- var p31 = BRAND.cssPrefix;
6916
+ import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6917
+ var p32 = BRAND.cssPrefix;
6694
6918
  var log16 = logger.scope("content");
6695
6919
  var READ_DWELL_MS = 5e3;
6696
6920
  function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
@@ -6734,16 +6958,16 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6734
6958
  [bus, id]
6735
6959
  );
6736
6960
  function renderBody() {
6737
- if (failed) return /* @__PURE__ */ jsx34(ModuleState, { tone: "error", message: strings.errorGeneric, onRetry: retry, strings });
6738
- if (item === null) return /* @__PURE__ */ jsx34(ModuleState, { message: strings.contentLoading, strings });
6739
- return /* @__PURE__ */ jsxs29("article", { class: `${p31}-content`, "data-testid": TID.contentView, onClick: onArticleClick, children: [
6740
- item.image ? /* @__PURE__ */ jsx34("img", { class: `${p31}-content-hero`, src: item.image, alt: "", loading: "lazy" }) : null,
6741
- item.description ? /* @__PURE__ */ jsx34("p", { class: `${p31}-content-subtitle`, children: item.description }) : null,
6742
- /* @__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 ?? "" })
6743
6967
  ] });
6744
6968
  }
6745
- return /* @__PURE__ */ jsxs29("div", { class: `${p31}-module`, children: [
6746
- /* @__PURE__ */ jsx34(
6969
+ return /* @__PURE__ */ jsxs30("div", { class: `${p32}-module`, children: [
6970
+ /* @__PURE__ */ jsx35(
6747
6971
  BackHeader,
6748
6972
  {
6749
6973
  title: item?.title || title || strings.moduleBack,
@@ -6753,13 +6977,13 @@ function ContentView({ id, title, transport, strings, bus, onBack, actions }) {
6753
6977
  testid: TID.backHeader
6754
6978
  }
6755
6979
  ),
6756
- /* @__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() })
6757
6981
  ] });
6758
6982
  }
6759
6983
 
6760
6984
  // src/ui/messenger-home.tsx
6761
- import { jsx as jsx35, jsxs as jsxs30 } from "preact/jsx-runtime";
6762
- var p32 = BRAND.cssPrefix;
6985
+ import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6986
+ var p33 = BRAND.cssPrefix;
6763
6987
  function MessengerHome({
6764
6988
  panelProps,
6765
6989
  enabledModules,
@@ -6830,12 +7054,12 @@ function MessengerHome({
6830
7054
  bus,
6831
7055
  panelProps
6832
7056
  });
6833
- const plainActions = /* @__PURE__ */ jsx35(HeaderActions, { panelProps, variant: "plain" });
7057
+ const plainActions = /* @__PURE__ */ jsx36(HeaderActions, { panelProps, variant: "plain" });
6834
7058
  if (activeModule) visitedRef.current.add(activeModule.id);
6835
7059
  const visitedTabs = enabledModules.filter((m) => visitedRef.current.has(m.id));
6836
7060
  const tabRoot = (module) => {
6837
7061
  if (module.layout === "chat") {
6838
- return /* @__PURE__ */ jsx35(
7062
+ return /* @__PURE__ */ jsx36(
6839
7063
  PanelContent,
6840
7064
  {
6841
7065
  ...panelProps,
@@ -6846,14 +7070,14 @@ function MessengerHome({
6846
7070
  );
6847
7071
  }
6848
7072
  const Root = LAYOUTS[module.layout].Root;
6849
- return Root ? /* @__PURE__ */ jsx35(Root, { ...screenProps(module) }) : null;
7073
+ return Root ? /* @__PURE__ */ jsx36(Root, { ...screenProps(module) }) : null;
6850
7074
  };
6851
7075
  const renderReader = () => {
6852
7076
  if (top?.kind === "iframe") {
6853
- 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 });
6854
7078
  }
6855
7079
  if (top?.kind === "content") {
6856
- return /* @__PURE__ */ jsx35(
7080
+ return /* @__PURE__ */ jsx36(
6857
7081
  ContentView,
6858
7082
  {
6859
7083
  id: top.id,
@@ -6868,22 +7092,22 @@ function MessengerHome({
6868
7092
  }
6869
7093
  return null;
6870
7094
  };
6871
- return /* @__PURE__ */ jsxs30(
7095
+ return /* @__PURE__ */ jsxs31(
6872
7096
  "div",
6873
7097
  {
6874
7098
  ref: containerRef,
6875
- class: `${p32}-panel ${p32}-messenger`,
7099
+ class: `${p33}-panel ${p33}-messenger`,
6876
7100
  role: "dialog",
6877
7101
  "aria-modal": "false",
6878
7102
  "aria-label": strings.panelTitle,
6879
7103
  style: { position: "relative" },
6880
7104
  "data-testid": TID.messengerHome,
6881
7105
  children: [
6882
- /* @__PURE__ */ jsxs30("div", { class: `${p32}-messenger-body`, children: [
6883
- 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)),
6884
7108
  renderReader()
6885
7109
  ] }),
6886
- showTabBar ? /* @__PURE__ */ jsx35(
7110
+ showTabBar ? /* @__PURE__ */ jsx36(
6887
7111
  HomeTabBar,
6888
7112
  {
6889
7113
  modules: enabledModules,
@@ -6893,8 +7117,8 @@ function MessengerHome({
6893
7117
  onSelect: nav.switchTab
6894
7118
  }
6895
7119
  ) : null,
6896
- /* @__PURE__ */ jsx35(PoweredByBar, { poweredBy: options.poweredBy }),
6897
- 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(
6898
7122
  ResizeGrip,
6899
7123
  {
6900
7124
  panelEl: containerRef.current,
@@ -6911,29 +7135,29 @@ function MessengerHome({
6911
7135
  }
6912
7136
 
6913
7137
  // src/ui/modules-empty.tsx
6914
- import { jsx as jsx36, jsxs as jsxs31 } from "preact/jsx-runtime";
6915
- var p33 = BRAND.cssPrefix;
7138
+ import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7139
+ var p34 = BRAND.cssPrefix;
6916
7140
  function ModulesEmpty({ strings, onClose }) {
6917
- return /* @__PURE__ */ jsxs31(
7141
+ return /* @__PURE__ */ jsxs32(
6918
7142
  "div",
6919
7143
  {
6920
- class: `${p33}-panel ${p33}-modules-empty`,
7144
+ class: `${p34}-panel ${p34}-modules-empty`,
6921
7145
  role: "dialog",
6922
7146
  "aria-label": strings.panelTitle,
6923
7147
  "data-testid": TID.modulesEmpty,
6924
7148
  children: [
6925
- onClose ? /* @__PURE__ */ jsx36(
7149
+ onClose ? /* @__PURE__ */ jsx37(
6926
7150
  "button",
6927
7151
  {
6928
7152
  type: "button",
6929
- class: `${p33}-icon-btn ${p33}-modules-empty-close`,
7153
+ class: `${p34}-icon-btn ${p34}-modules-empty-close`,
6930
7154
  onClick: onClose,
6931
7155
  "aria-label": strings.close,
6932
7156
  title: strings.close,
6933
- children: /* @__PURE__ */ jsx36(CloseIcon, {})
7157
+ children: /* @__PURE__ */ jsx37(CloseIcon, {})
6934
7158
  }
6935
7159
  ) : null,
6936
- /* @__PURE__ */ jsx36("p", { class: `${p33}-modules-empty-text`, children: strings.modulesEmpty })
7160
+ /* @__PURE__ */ jsx37("p", { class: `${p34}-modules-empty-text`, children: strings.modulesEmpty })
6937
7161
  ]
6938
7162
  }
6939
7163
  );
@@ -6956,19 +7180,19 @@ function useLauncherCallout({ callout, persistence }) {
6956
7180
  }
6957
7181
 
6958
7182
  // src/ui/app.tsx
6959
- import { jsx as jsx37, jsxs as jsxs32 } from "preact/jsx-runtime";
7183
+ import { jsx as jsx38, jsxs as jsxs33 } from "preact/jsx-runtime";
6960
7184
  var log17 = logger.scope("app");
6961
- var p34 = BRAND.cssPrefix;
7185
+ var p35 = BRAND.cssPrefix;
6962
7186
  function makeLocalizedWelcome(w, strings) {
6963
7187
  return makeInstantWelcomeMessage({ ...w, text: localizeText(strings, w.text) });
6964
7188
  }
6965
7189
  function firstText(m) {
6966
- return m.partsSig.value.find((p35) => p35.kind === "text")?.textSig.value ?? "";
7190
+ return m.partsSig.value.find((pt) => pt.kind === "text")?.textSig.value ?? "";
6967
7191
  }
6968
7192
  function allToolPartsSettled(msg) {
6969
- const tools = msg.partsSig.value.filter((p35) => p35.kind === "tool");
6970
- return tools.length > 0 && tools.every((p35) => {
6971
- 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;
6972
7196
  return s === "output-available" || s === "output-error" || s === "output-denied" || s === "approval-responded";
6973
7197
  });
6974
7198
  }
@@ -7887,12 +8111,12 @@ function App({ options, hostElement, bus }) {
7887
8111
  const renderSurface = (size) => {
7888
8112
  const closeable = isActionVisible("close", effectiveOptions.mode, size);
7889
8113
  if (enabledModules.length === 0) {
7890
- 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 });
7891
8115
  }
7892
8116
  if (enabledModules.length === 1 && enabledModules[0]?.layout === "chat") {
7893
- return /* @__PURE__ */ jsx37(Panel, { ...panelProps, panelSize: size });
8117
+ return /* @__PURE__ */ jsx38(Panel, { ...panelProps, panelSize: size });
7894
8118
  }
7895
- return /* @__PURE__ */ jsx37(
8119
+ return /* @__PURE__ */ jsx38(
7896
8120
  MessengerHome,
7897
8121
  {
7898
8122
  panelProps: { ...panelProps, panelSize: size, onClose: closeable ? handleClose : void 0 },
@@ -7911,7 +8135,7 @@ function App({ options, hostElement, bus }) {
7911
8135
  void handleSelectHistoryConversation(chat.conversationId);
7912
8136
  };
7913
8137
  const conversationsEnabled = enabledModules.some((m) => m.layout === "chat");
7914
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: /* @__PURE__ */ jsx37(
8138
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: /* @__PURE__ */ jsx38(
7915
8139
  PageShell,
7916
8140
  {
7917
8141
  site: parsedSite,
@@ -7932,15 +8156,15 @@ function App({ options, hostElement, bus }) {
7932
8156
  }
7933
8157
  if (isInlineLike) {
7934
8158
  const inlineSize = options.mode === "standalone" ? "fullscreen" : panelSize;
7935
- return /* @__PURE__ */ jsx37("div", { class: `${p34}-anchor`, children: renderSurface(inlineSize) });
8159
+ return /* @__PURE__ */ jsx38("div", { class: `${p35}-anchor`, children: renderSurface(inlineSize) });
7936
8160
  }
7937
8161
  const drawerEdgeTab = options.mode === "drawer";
7938
8162
  const triggerOwnedByPage = options.mode === "modal";
7939
8163
  const launcherVisible = !triggerOwnedByPage && !options.launcher.hidden && (!isOpen || launcherLeaving);
7940
8164
  const calloutToRender = launcherVisible && !launcherLeaving && !calloutDismissed && !drawerEdgeTab ? effectiveOptions.launcher.callout : null;
7941
- return /* @__PURE__ */ jsxs32("div", { class: `${p34}-anchor`, "data-launcher-size": effectiveOptions.launcher.size, children: [
7942
- isOpen || activated ? /* @__PURE__ */ jsx37("div", { class: `${p34}-surface`, hidden: !isOpen, children: renderSurface(panelSize) }) : null,
7943
- 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(
7944
8168
  Launcher,
7945
8169
  {
7946
8170
  onToggle: handleOpen,
@@ -7950,7 +8174,7 @@ function App({ options, hostElement, bus }) {
7950
8174
  edgeTab: drawerEdgeTab
7951
8175
  }
7952
8176
  ) : null,
7953
- calloutToRender ? /* @__PURE__ */ jsx37(
8177
+ calloutToRender ? /* @__PURE__ */ jsx38(
7954
8178
  LauncherCallout,
7955
8179
  {
7956
8180
  callout: calloutToRender,
@@ -8015,34 +8239,34 @@ var TRACKED = {
8015
8239
  expand: (on) => ({ on }),
8016
8240
  fullscreen: (on) => ({ on }),
8017
8241
  // Conversation funnel. `send` is the key conversion; text never rides.
8018
- send: (p35) => ({ attachments: p35.attachmentCount }),
8019
- message: (p35) => ({ role: p35.role }),
8242
+ send: (p36) => ({ attachments: p36.attachmentCount }),
8243
+ message: (p36) => ({ role: p36.role }),
8020
8244
  stop: () => void 0,
8021
8245
  clear: () => void 0,
8022
8246
  suggestion: () => void 0,
8023
- toggleHistory: (p35) => ({ view: p35.view }),
8247
+ toggleHistory: (p36) => ({ view: p36.view }),
8024
8248
  handshake: () => void 0,
8025
8249
  // Forms + human-in-the-loop — ids and outcomes, never values.
8026
- formSubmit: (p35) => ({ formId: p35.formId, skipped: p35.skipped }),
8250
+ formSubmit: (p36) => ({ formId: p36.formId, skipped: p36.skipped }),
8027
8251
  toolResult: () => void 0,
8028
- toolDecision: (p35) => ({ approved: p35.approved }),
8252
+ toolDecision: (p36) => ({ approved: p36.approved }),
8029
8253
  // Content — ids, tags + counts only; titles/bodies never ride.
8030
- contentView: (p35) => ({ section: p35.section, tags: p35.tags, count: p35.count }),
8031
- contentOpen: (p35) => ({ contentId: p35.contentId, tags: p35.tags }),
8032
- contentSearch: (p35) => ({ qlen: p35.queryLength, hits: p35.hitCount }),
8033
- contentRead: (p35) => ({ contentId: p35.contentId }),
8034
- 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 }),
8035
8259
  // Composer / attachments / voice.
8036
- attach: (p35) => ({ count: p35.count, bytes: p35.totalBytes }),
8260
+ attach: (p36) => ({ count: p36.count, bytes: p36.totalBytes }),
8037
8261
  voiceStart: () => void 0,
8038
- voiceStop: (p35) => ({ ms: p35.durationMs }),
8262
+ voiceStop: (p36) => ({ ms: p36.durationMs }),
8039
8263
  voiceCancel: () => void 0,
8040
8264
  // Preferences — how visitors tune the surface.
8041
8265
  localeChange: (locale) => ({ locale }),
8042
8266
  themeChange: (theme) => ({ theme }),
8043
8267
  textSizeChange: (size) => ({ size }),
8044
- soundToggle: (p35) => ({ muted: p35.muted }),
8045
- sidebarToggle: (p35) => ({ collapsed: p35.collapsed }),
8268
+ soundToggle: (p36) => ({ muted: p36.muted }),
8269
+ sidebarToggle: (p36) => ({ collapsed: p36.collapsed }),
8046
8270
  calloutDismiss: () => void 0,
8047
8271
  // Health signal only — the error object itself never leaves the page.
8048
8272
  error: () => void 0