@senguoyun/dsh-arkme 0.1.37 → 0.1.39

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.
Files changed (38) hide show
  1. package/lib/client.js +2150 -472
  2. package/lib/client.js.map +1 -1
  3. package/lib/index.js +14 -1
  4. package/lib/persistent-extension.js +1 -1
  5. package/lib/{persistent-runtime-Bc6X98km.js → persistent-runtime-DLrd2RMI.js} +10234 -196
  6. package/lib/sdk.js +31 -0
  7. package/lib/types/arkme-service.d.ts +14 -1
  8. package/lib/types/arkme-service.d.ts.map +1 -1
  9. package/lib/types/client/ArkmeAttachmentStrip.d.ts.map +1 -1
  10. package/lib/types/client/ArkmeNoteDetails.d.ts +4 -2
  11. package/lib/types/client/ArkmeNoteDetails.d.ts.map +1 -1
  12. package/lib/types/client/ArkmePersistentShell.d.ts +7 -1
  13. package/lib/types/client/ArkmePersistentShell.d.ts.map +1 -1
  14. package/lib/types/client/ArkmeRichContent.d.ts +2 -1
  15. package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
  16. package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
  17. package/lib/types/client/api.d.ts +1 -1
  18. package/lib/types/client/api.d.ts.map +1 -1
  19. package/lib/types/client/arkme-theme.d.ts +1 -0
  20. package/lib/types/client/arkme-theme.d.ts.map +1 -1
  21. package/lib/types/client/composer-draft-store.d.ts +1 -1
  22. package/lib/types/client/composer-draft-store.d.ts.map +1 -1
  23. package/lib/types/client/conversation-memory-cache.d.ts +10 -0
  24. package/lib/types/client/conversation-memory-cache.d.ts.map +1 -1
  25. package/lib/types/client/ui-controller.d.ts +2 -1
  26. package/lib/types/client/ui-controller.d.ts.map +1 -1
  27. package/lib/types/host-api.d.ts.map +1 -1
  28. package/lib/types/sdk/index.d.ts +15 -2
  29. package/lib/types/sdk/index.d.ts.map +1 -1
  30. package/lib/types/services/chat-service.d.ts +17 -1
  31. package/lib/types/services/chat-service.d.ts.map +1 -1
  32. package/lib/types/services/file-transfers.d.ts +1 -0
  33. package/lib/types/services/file-transfers.d.ts.map +1 -1
  34. package/lib/types/services/record-service.d.ts +4 -0
  35. package/lib/types/services/record-service.d.ts.map +1 -1
  36. package/lib/types/types.d.ts +53 -1
  37. package/lib/types/types.d.ts.map +1 -1
  38. package/package.json +5 -5
package/lib/client.js CHANGED
@@ -769,6 +769,16 @@ window.__ModuleLoader__.load({
769
769
  ...options.cursor === void 0 ? {} : { cursor: options.cursor }
770
770
  }, options.signal);
771
771
  }
772
+ async readSourceAround(sourceRef, itemUid, recordOwnerUserId, options = {}) {
773
+ if (sourceRef.trim() === "" || itemUid.trim() === "" || !Number.isSafeInteger(recordOwnerUserId) || recordOwnerUserId <= 0) throw new TypeError("Arkme timeline around requires a source, record uid, and record owner");
774
+ return await this.call("source.timeline-around", {
775
+ sourceRef,
776
+ itemUid,
777
+ recordOwnerUserId,
778
+ ...options.beforeLimit === void 0 ? {} : { beforeLimit: options.beforeLimit },
779
+ ...options.afterLimit === void 0 ? {} : { afterLimit: options.afterLimit }
780
+ }, options.signal);
781
+ }
772
782
  async messageReadReceiptSummaries(sourceRef, items, signal) {
773
783
  const normalizedSourceRef = sourceRef.trim();
774
784
  if (normalizedSourceRef === "" || items.length < 1 || items.length > 50) throw new TypeError(`Arkme message read receipts require one source and 1-${String(50)} messages`);
@@ -859,6 +869,27 @@ window.__ModuleLoader__.load({
859
869
  recordUid: options.recordUid ?? crypto.randomUUID()
860
870
  }, options.signal);
861
871
  }
872
+ async sourceMessageExtensionContext(sourceRef, messageActionRef, signal) {
873
+ if (sourceRef.trim() === "" || messageActionRef.trim() === "") throw new TypeError("Arkme source message extension requires a source and action reference");
874
+ return await this.call("source.message-extension.context", {
875
+ sourceRef,
876
+ messageActionRef
877
+ }, signal);
878
+ }
879
+ async extendSourceMessage(sourceRef, messageActionRef, textContent, options = {}) {
880
+ const fileRefs = [...new Set((options.fileRefs ?? []).map((value) => value.trim()).filter((value) => value !== ""))];
881
+ if (sourceRef.trim() === "" || messageActionRef.trim() === "" || textContent.trim() === "" && fileRefs.length === 0) throw new TypeError("Arkme source message extension requires a target and text or attachments");
882
+ if (fileRefs.length > 9) throw new TypeError("Arkme source message extension accepts at most 9 attachments");
883
+ return await this.call("source.message-extension.extend", {
884
+ sourceRef,
885
+ messageActionRef,
886
+ textContent,
887
+ recordUid: options.recordUid ?? crypto.randomUUID(),
888
+ relationUid: options.relationUid ?? crypto.randomUUID(),
889
+ ...options.parentRecordUid?.trim() ? { parentRecordUid: options.parentRecordUid.trim() } : {},
890
+ fileRefs
891
+ }, options.signal);
892
+ }
862
893
  async resolveLinkMetadata(url, signal) {
863
894
  const normalizedUrl = url.trim();
864
895
  if (normalizedUrl === "" || normalizedUrl.length > 2048) throw new TypeError("Arkme link metadata URL must not be empty");
@@ -2074,9 +2105,13 @@ window.__ModuleLoader__.load({
2074
2105
  isRestored(key) {
2075
2106
  return key !== void 0 && this.restoredKeys.has(key);
2076
2107
  }
2077
- beginFileSend(key) {
2108
+ beginFileSend(key, submissionScope = "file-send") {
2078
2109
  const draft = this.get(key);
2079
- const fingerprint = JSON.stringify([serializeArkmeComposerDraft(draft), draft.attachments.map(arkmeAttachmentId)]);
2110
+ const fingerprint = JSON.stringify([
2111
+ submissionScope,
2112
+ serializeArkmeComposerDraft(draft),
2113
+ draft.attachments.map(arkmeAttachmentId)
2114
+ ]);
2080
2115
  const current = draft.fileSendIdentity;
2081
2116
  const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
2082
2117
  if (current?.fingerprint === fingerprint && uuid.test(current.recordUid) && uuid.test(current.relationUid)) return current;
@@ -5117,7 +5152,7 @@ window.__ModuleLoader__.load({
5117
5152
  qrcode.stringToBytes;
5118
5153
  //#endregion
5119
5154
  //#region package.json
5120
- var version = "0.1.37";
5155
+ var version = "0.1.39";
5121
5156
  //#endregion
5122
5157
  //#region src/client/arkme-billing.ts
5123
5158
  function createBillingClientRequestId(source = globalThis.crypto) {
@@ -6056,6 +6091,7 @@ window.__ModuleLoader__.load({
6056
6091
  messageOther: "var(--arkme-chat-other-bubble, var(--dsw-specific-bubble, var(--dsw-alias-bg-layer-2, #f3f4f6)))",
6057
6092
  memberRecordOther: "var(--arkme-member-record-other-bubble, var(--dsw-specific-bubble-highlight, var(--dsw-alias-bg-layer-3, #e1e5ee)))",
6058
6093
  subtle: "var(--dsw-alias-bg-module-platform, var(--dsw-alias-bg-layer-1, #f5f6f8))",
6094
+ extensionSource: "var(--dsw-alias-fill-secondary, var(--dsw-alias-bg-module-platform, #f2f2f2))",
6059
6095
  elevated: "var(--dsw-alias-button-elevated-fill, var(--dsw-alias-bg-layer-2, #ffffff))",
6060
6096
  primaryAction: "var(--dsw-alias-button-primary-fill, #17191c)",
6061
6097
  onPrimaryAction: "var(--dsw-alias-label-primary-inverted, #ffffff)",
@@ -8805,7 +8841,7 @@ window.__ModuleLoader__.load({
8805
8841
  selectedBot: bot
8806
8842
  });
8807
8843
  }
8808
- showConversationTarget(source, itemUid, sendAtMillis) {
8844
+ showConversationTarget(source, itemUid, sendAtMillis, recordOwnerUserId) {
8809
8845
  this.leaveContacts();
8810
8846
  const normalizedItemUid = itemUid.trim();
8811
8847
  if (normalizedItemUid === "") throw new TypeError("会话消息定位标识不能为空");
@@ -8821,7 +8857,8 @@ window.__ModuleLoader__.load({
8821
8857
  conversationTarget: {
8822
8858
  revision: ++this.conversationTargetRevision,
8823
8859
  itemUid: normalizedItemUid,
8824
- sendAtMillis: Number.isFinite(sendAtMillis) ? sendAtMillis : 0
8860
+ sendAtMillis: Number.isFinite(sendAtMillis) ? sendAtMillis : 0,
8861
+ ...recordOwnerUserId !== void 0 && Number.isSafeInteger(recordOwnerUserId) && recordOwnerUserId > 0 ? { recordOwnerUserId } : {}
8825
8862
  }
8826
8863
  });
8827
8864
  }
@@ -8831,7 +8868,7 @@ window.__ModuleLoader__.load({
8831
8868
  this.publish(rest);
8832
8869
  }
8833
8870
  publish(next) {
8834
- const sameView = next.authRevision === this.state.authRevision && next.mode === this.state.mode && next.productMode === this.state.productMode && next.calendarOpen === this.state.calendarOpen && next.notificationActivationRevision === this.state.notificationActivationRevision && next.conversationTarget?.revision === this.state.conversationTarget?.revision && next.conversationTarget?.itemUid === this.state.conversationTarget?.itemUid && next.conversationTarget?.sendAtMillis === this.state.conversationTarget?.sendAtMillis && next.recordingTarget?.dateStamp === this.state.recordingTarget?.dateStamp && next.recordingTarget?.startAtMillis === this.state.recordingTarget?.startAtMillis && next.extensionShareRef === this.state.extensionShareRef && next.extensionShareAction === this.state.extensionShareAction && next.extensionDetailId === this.state.extensionDetailId && next.extensionAuthorFilter?.ownerUserId === this.state.extensionAuthorFilter?.ownerUserId && next.extensionAuthorFilter?.ownerName === this.state.extensionAuthorFilter?.ownerName && next.webLoginDialogOpen === this.state.webLoginDialogOpen && sameWorldTarget(next.worldTarget, this.state.worldTarget) && sameSelectedSource(next.selectedSource, this.state.selectedSource) && sameBot(next.selectedBot, this.state.selectedBot);
8871
+ const sameView = next.authRevision === this.state.authRevision && next.mode === this.state.mode && next.productMode === this.state.productMode && next.calendarOpen === this.state.calendarOpen && next.notificationActivationRevision === this.state.notificationActivationRevision && next.conversationTarget?.revision === this.state.conversationTarget?.revision && next.conversationTarget?.itemUid === this.state.conversationTarget?.itemUid && next.conversationTarget?.sendAtMillis === this.state.conversationTarget?.sendAtMillis && next.conversationTarget?.recordOwnerUserId === this.state.conversationTarget?.recordOwnerUserId && next.recordingTarget?.dateStamp === this.state.recordingTarget?.dateStamp && next.recordingTarget?.startAtMillis === this.state.recordingTarget?.startAtMillis && next.extensionShareRef === this.state.extensionShareRef && next.extensionShareAction === this.state.extensionShareAction && next.extensionDetailId === this.state.extensionDetailId && next.extensionAuthorFilter?.ownerUserId === this.state.extensionAuthorFilter?.ownerUserId && next.extensionAuthorFilter?.ownerName === this.state.extensionAuthorFilter?.ownerName && next.webLoginDialogOpen === this.state.webLoginDialogOpen && sameWorldTarget(next.worldTarget, this.state.worldTarget) && sameSelectedSource(next.selectedSource, this.state.selectedSource) && sameBot(next.selectedBot, this.state.selectedBot);
8835
8872
  if (sameView && next.chatRevision === this.state.chatRevision && next.recordRevision === this.state.recordRevision) return;
8836
8873
  this.state = next;
8837
8874
  if (!sameView) this.viewState = viewStateOf(next);
@@ -35083,7 +35120,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35083
35120
  height
35084
35121
  };
35085
35122
  }
35086
- function ArkmeMediaPreview({ blocks, selected, onSelect, onClose, openLocalFile = true, forceDownload = false }) {
35123
+ function ArkmeMediaPreview({ blocks, selected, onSelect, onClose, previewUrl, openLocalFile = true, forceDownload = false }) {
35087
35124
  const index = Math.max(0, blocks.findIndex((block) => block.mediaRef === selected.mediaRef));
35088
35125
  const viewportRef = (0, react.useRef)(null);
35089
35126
  const dragOriginRef = (0, react.useRef)(void 0);
@@ -35091,7 +35128,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35091
35128
  const [imageMode, setImageMode] = (0, react.useState)("contained");
35092
35129
  const [imageDragging, setImageDragging] = (0, react.useState)(false);
35093
35130
  const original = useArkmeOriginal(selected, selected.kind === "image");
35094
- const originalUrl = original.localRef === void 0 ? mediaUrl$1(selected) : arkmeLocalFileUrl(original.localRef);
35131
+ const originalUrl = previewUrl ?? (original.localRef === void 0 ? mediaUrl$1(selected) : arkmeLocalFileUrl(original.localRef));
35095
35132
  (0, react.useEffect)(() => {
35096
35133
  setImageMode("contained");
35097
35134
  setImageDragging(false);
@@ -35596,9 +35633,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35596
35633
  ] });
35597
35634
  }
35598
35635
  function ArkmeAttachmentDraftTile({ asset, previewUrl, onRemove, onOpen, disabled = false }) {
35599
- const visualPreview = previewUrl !== void 0 && (asset.fileKind === 1 || asset.fileKind === 3);
35636
+ const [failedPreviewUrl, setFailedPreviewUrl] = (0, react.useState)();
35637
+ const visualPreview = previewUrl !== void 0 && failedPreviewUrl !== previewUrl && (asset.fileKind === 1 || asset.fileKind === 3);
35638
+ const imagePreviewFailed = asset.fileKind === 1 && previewUrl !== void 0 && failedPreviewUrl === previewUrl;
35600
35639
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
35601
- "data-arkme-attachment-tile": visualPreview ? asset.fileKind === 1 ? "image-preview" : "video-preview" : "file-icon",
35640
+ "data-arkme-attachment-tile": visualPreview ? asset.fileKind === 1 ? "image-preview" : "video-preview" : imagePreviewFailed ? "image-error" : "file-icon",
35602
35641
  title: asset.fileName,
35603
35642
  "aria-label": `附件 ${asset.fileName}`,
35604
35643
  style: {
@@ -35616,7 +35655,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35616
35655
  type: "button",
35617
35656
  "aria-label": `预览 ${asset.fileName}`,
35618
35657
  onClick: onOpen,
35619
- disabled: onOpen === void 0,
35658
+ disabled: onOpen === void 0 || imagePreviewFailed,
35620
35659
  style: {
35621
35660
  border: 0,
35622
35661
  padding: 0,
@@ -35625,11 +35664,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35625
35664
  display: "grid",
35626
35665
  placeItems: "center",
35627
35666
  background: "transparent",
35628
- cursor: "pointer"
35667
+ cursor: imagePreviewFailed ? "default" : "pointer"
35629
35668
  },
35630
35669
  children: visualPreview && asset.fileKind === 1 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
35631
35670
  src: previewUrl,
35632
35671
  alt: asset.fileName,
35672
+ onError: () => {
35673
+ setFailedPreviewUrl(previewUrl);
35674
+ },
35633
35675
  style: {
35634
35676
  width: "100%",
35635
35677
  height: "100%",
@@ -35642,6 +35684,9 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35642
35684
  playsInline: true,
35643
35685
  preload: "metadata",
35644
35686
  "aria-label": asset.fileName,
35687
+ onError: () => {
35688
+ setFailedPreviewUrl(previewUrl);
35689
+ },
35645
35690
  style: {
35646
35691
  width: "100%",
35647
35692
  height: "100%",
@@ -35661,7 +35706,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
35661
35706
  textShadow: "0 1px 4px rgba(0,0,0,.55)"
35662
35707
  },
35663
35708
  children: "▶"
35664
- })] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFileIcon, {
35709
+ })] }) : imagePreviewFailed ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
35710
+ role: "status",
35711
+ "aria-label": `${asset.fileName} 图片预览失败`,
35712
+ style: {
35713
+ maxWidth: 42,
35714
+ color: "var(--dsw-alias-label-tertiary, #7f8792)",
35715
+ fontSize: 9,
35716
+ lineHeight: "12px",
35717
+ textAlign: "center"
35718
+ },
35719
+ children: "图片预览失败"
35720
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFileIcon, {
35665
35721
  fileName: asset.fileName,
35666
35722
  ...asset.mimeType === void 0 ? {} : { mimeType: asset.mimeType },
35667
35723
  size: 32
@@ -60603,6 +60659,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
60603
60659
  const id = arkmeAttachmentId(attachment);
60604
60660
  const metadata = arkmeAttachmentMetadata(attachment);
60605
60661
  const canMove = !disabled && attachments.length > 1;
60662
+ const previewUrl = attachment.previewUrl ?? (attachment.localFile === void 0 ? void 0 : arkmeLocalFileUrl(attachment.localFile.fileRef));
60606
60663
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
60607
60664
  role: "listitem",
60608
60665
  tabIndex: canMove ? 0 : -1,
@@ -60651,10 +60708,8 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
60651
60708
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentDraftTile, {
60652
60709
  asset: metadata,
60653
60710
  disabled,
60654
- ...attachment.localFile === void 0 ? attachment.previewUrl === void 0 ? {} : { previewUrl: attachment.previewUrl } : {
60655
- previewUrl: arkmeLocalFileUrl(attachment.localFile.fileRef),
60656
- onOpen: () => onPreview(attachment)
60657
- },
60711
+ ...previewUrl === void 0 ? {} : { previewUrl },
60712
+ ...attachment.localFile === void 0 ? {} : { onOpen: () => onPreview(attachment) },
60658
60713
  onRemove: () => {
60659
60714
  if (!disabled) onRemove(attachment);
60660
60715
  }
@@ -87093,7 +87148,20 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
87093
87148
  function arkmeConversationTimelineContentEqual(left, right) {
87094
87149
  if (left === right) return true;
87095
87150
  if (left === void 0 || right === void 0) return false;
87096
- return left.hasMore === right.hasMore && JSON.stringify(left.nextCursor) === JSON.stringify(right.nextCursor) && JSON.stringify(left.items) === JSON.stringify(right.items) && JSON.stringify(left.aiPolishNotices) === JSON.stringify(right.aiPolishNotices) && JSON.stringify(left.aiPolishSettings) === JSON.stringify(right.aiPolishSettings);
87151
+ return (left.mode ?? "latest") === (right.mode ?? "latest") && JSON.stringify(left.aroundSequenceRange) === JSON.stringify(right.aroundSequenceRange) && left.hasMore === right.hasMore && left.newerHasMore === right.newerHasMore && JSON.stringify(left.nextCursor) === JSON.stringify(right.nextCursor) && JSON.stringify(left.newerCursor) === JSON.stringify(right.newerCursor) && JSON.stringify(left.items) === JSON.stringify(right.items) && JSON.stringify(left.aiPolishNotices) === JSON.stringify(right.aiPolishNotices) && JSON.stringify(left.aiPolishSettings) === JSON.stringify(right.aiPolishSettings);
87152
+ }
87153
+ function arkmeConversationTimelineSequenceRange(items, previous) {
87154
+ const sequences = items.flatMap((item) => item.sequence === void 0 ? [] : [item.sequence]);
87155
+ if (sequences.length === 0) return previous;
87156
+ return {
87157
+ minimumSequence: Math.min(previous?.minimumSequence ?? Number.POSITIVE_INFINITY, ...sequences),
87158
+ maximumSequence: Math.max(previous?.maximumSequence ?? Number.NEGATIVE_INFINITY, ...sequences)
87159
+ };
87160
+ }
87161
+ function arkmeConversationTimelineDeltaItems(mode, aroundSequenceRange, currentItems, deltaItems) {
87162
+ if (mode === "latest") return [...deltaItems];
87163
+ const existingIds = new Set(currentItems.map((item) => item.itemUid));
87164
+ return deltaItems.filter((item) => existingIds.has(item.itemUid) || item.sequence !== void 0 && aroundSequenceRange !== void 0 && item.sequence >= aroundSequenceRange.minimumSequence && item.sequence <= aroundSequenceRange.maximumSequence);
87097
87165
  }
87098
87166
  function arkmeConversationTimelineExpired(snapshot, nowMillis) {
87099
87167
  if (snapshot?.fetchedAtMillis === void 0) return true;
@@ -87137,9 +87205,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
87137
87205
  }
87138
87206
  storeTimeline(conversationKey, snapshot) {
87139
87207
  const previous = this.timelines.get(conversationKey);
87140
- const latestSequence = snapshot.latestSequence === void 0 && previous?.latestSequence === void 0 ? void 0 : Math.max(snapshot.latestSequence ?? 0, previous?.latestSequence ?? 0);
87208
+ const computedLatestSequence = latestTimelineSequence(snapshot.items);
87209
+ const mode = snapshot.mode ?? previous?.mode ?? "latest";
87210
+ const { aroundSequenceRange: snapshotAroundSequenceRange, ...snapshotWithoutAroundSequenceRange } = snapshot;
87211
+ const nextAroundSequenceRange = mode === "around" ? snapshotAroundSequenceRange ?? previous?.aroundSequenceRange : void 0;
87212
+ const latestSequence = snapshot.latestSequence === void 0 && previous?.latestSequence === void 0 && computedLatestSequence === 0 ? void 0 : Math.max(snapshot.latestSequence ?? 0, previous?.latestSequence ?? 0, computedLatestSequence);
87141
87213
  const next = {
87142
- ...snapshot,
87214
+ ...snapshotWithoutAroundSequenceRange,
87215
+ mode,
87216
+ ...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
87143
87217
  ...snapshot.fetchedAtMillis === void 0 && previous?.fetchedAtMillis !== void 0 ? { fetchedAtMillis: previous.fetchedAtMillis } : {},
87144
87218
  ...snapshot.recordRevision === void 0 && previous?.recordRevision !== void 0 ? { recordRevision: previous.recordRevision } : {},
87145
87219
  ...latestSequence === void 0 ? {} : { latestSequence }
@@ -89293,6 +89367,190 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89293
89367
  fontSize: 11,
89294
89368
  lineHeight: "18px"
89295
89369
  },
89370
+ extensionFooter: {
89371
+ flex: "none",
89372
+ padding: 0,
89373
+ color: arkmeTheme.tertiary,
89374
+ fontSize: 11,
89375
+ lineHeight: "18px"
89376
+ },
89377
+ extensionComposer: {
89378
+ display: "flex",
89379
+ flexDirection: "column"
89380
+ },
89381
+ extensionAttachmentPreview: { padding: "8px 16px" },
89382
+ extensionInputBar: {
89383
+ padding: "12px 16px",
89384
+ borderTop: "0.5px solid #e6e6e6"
89385
+ },
89386
+ extensionInputWrap: {
89387
+ minHeight: 44,
89388
+ maxHeight: 100,
89389
+ display: "flex",
89390
+ alignItems: "flex-end",
89391
+ gap: 8,
89392
+ padding: "8px 8px 8px 12px",
89393
+ boxSizing: "border-box",
89394
+ border: 0,
89395
+ borderRadius: 12,
89396
+ background: "#f6f6f6"
89397
+ },
89398
+ extensionInput: {
89399
+ flex: 1,
89400
+ minWidth: 0,
89401
+ minHeight: 28,
89402
+ maxHeight: 84,
89403
+ boxSizing: "border-box",
89404
+ fieldSizing: "content",
89405
+ overflowY: "auto",
89406
+ resize: "none",
89407
+ border: 0,
89408
+ outline: 0,
89409
+ padding: "4px 0 3px",
89410
+ background: "transparent",
89411
+ color: arkmeTheme.text,
89412
+ font: "inherit",
89413
+ fontSize: 14,
89414
+ lineHeight: "20px"
89415
+ },
89416
+ extensionTool: {
89417
+ width: 18,
89418
+ height: 28,
89419
+ flex: "none",
89420
+ display: "grid",
89421
+ placeItems: "center",
89422
+ padding: 0,
89423
+ border: 0,
89424
+ borderRadius: 6,
89425
+ background: "transparent",
89426
+ color: arkmeTheme.tertiary,
89427
+ cursor: "pointer"
89428
+ },
89429
+ extensionSend: {
89430
+ width: 28,
89431
+ height: 28,
89432
+ flex: "none",
89433
+ display: "grid",
89434
+ placeItems: "center",
89435
+ padding: 0,
89436
+ border: 0,
89437
+ borderRadius: 999,
89438
+ background: arkmeTheme.text,
89439
+ color: arkmeTheme.base,
89440
+ cursor: "pointer",
89441
+ fontSize: 16
89442
+ },
89443
+ extensionParent: {
89444
+ margin: "12px 0 16px",
89445
+ paddingLeft: 10,
89446
+ borderLeftWidth: 1,
89447
+ borderLeftStyle: "solid",
89448
+ borderLeftColor: arkmeTheme.border,
89449
+ color: arkmeTheme.tertiary,
89450
+ fontSize: 13,
89451
+ lineHeight: "20px",
89452
+ overflow: "hidden"
89453
+ },
89454
+ extensionParentText: {
89455
+ display: "-webkit-box",
89456
+ WebkitBoxOrient: "vertical",
89457
+ WebkitLineClamp: 2,
89458
+ overflow: "hidden",
89459
+ overflowWrap: "anywhere"
89460
+ },
89461
+ extensionContext: { marginTop: 28 },
89462
+ extensionContextTitle: {
89463
+ marginBottom: 18,
89464
+ color: arkmeTheme.secondary,
89465
+ fontSize: 13,
89466
+ lineHeight: "20px",
89467
+ fontWeight: 500
89468
+ },
89469
+ extensionContextList: {
89470
+ display: "flex",
89471
+ flexDirection: "column",
89472
+ gap: 10
89473
+ },
89474
+ extensionContextRow: {
89475
+ display: "flex",
89476
+ alignItems: "flex-start",
89477
+ gap: 10,
89478
+ minWidth: 0,
89479
+ padding: "6px 8px",
89480
+ boxSizing: "border-box",
89481
+ borderRadius: 12,
89482
+ background: "transparent",
89483
+ cursor: "pointer",
89484
+ outline: 0
89485
+ },
89486
+ extensionContextRowSelected: { background: arkmeTheme.subtle },
89487
+ extensionContextBody: {
89488
+ flex: 1,
89489
+ minWidth: 0
89490
+ },
89491
+ extensionContextHead: {
89492
+ display: "flex",
89493
+ alignItems: "baseline",
89494
+ gap: 8,
89495
+ marginBottom: 4
89496
+ },
89497
+ extensionContextName: {
89498
+ flex: 1,
89499
+ minWidth: 0,
89500
+ color: arkmeTheme.secondary,
89501
+ fontSize: 13,
89502
+ lineHeight: "20px",
89503
+ fontWeight: 500,
89504
+ overflowWrap: "anywhere"
89505
+ },
89506
+ extensionContextTime: {
89507
+ flex: "none",
89508
+ color: arkmeTheme.tertiary,
89509
+ fontSize: 11,
89510
+ lineHeight: "18px"
89511
+ },
89512
+ extensionContextMedia: {
89513
+ marginTop: 5,
89514
+ color: arkmeTheme.tertiary,
89515
+ fontSize: 11,
89516
+ lineHeight: "18px",
89517
+ overflowWrap: "anywhere"
89518
+ },
89519
+ extensionContextStatus: {
89520
+ display: "flex",
89521
+ alignItems: "center",
89522
+ gap: 8,
89523
+ color: arkmeTheme.tertiary,
89524
+ fontSize: 12,
89525
+ lineHeight: "20px"
89526
+ },
89527
+ extensionContextRetry: {
89528
+ padding: 0,
89529
+ border: 0,
89530
+ background: "transparent",
89531
+ color: arkmeTheme.accent,
89532
+ cursor: "pointer",
89533
+ font: "inherit"
89534
+ },
89535
+ extensionContextAvatarImage: {
89536
+ width: "100%",
89537
+ height: "100%",
89538
+ objectFit: "cover",
89539
+ display: "block"
89540
+ },
89541
+ extensionContextAvatarFallback: {
89542
+ width: 36,
89543
+ height: 36,
89544
+ flex: "none",
89545
+ display: "grid",
89546
+ placeItems: "center",
89547
+ borderRadius: 999,
89548
+ overflow: "hidden",
89549
+ background: arkmeTheme.layer2,
89550
+ color: arkmeTheme.secondary,
89551
+ fontSize: 13,
89552
+ fontWeight: 600
89553
+ },
89296
89554
  notice: {
89297
89555
  margin: "12px 0 0",
89298
89556
  fontSize: 12,
@@ -89403,28 +89661,519 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89403
89661
  style: styles$9.body,
89404
89662
  children
89405
89663
  }),
89406
- footer && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
89407
- style: styles$9.footer,
89664
+ footer !== void 0 && footer !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("footer", {
89665
+ style: typeof footer === "string" ? styles$9.footer : styles$9.extensionFooter,
89408
89666
  children: footer
89409
89667
  })
89410
89668
  ]
89411
89669
  });
89412
89670
  }
89671
+ function clipboardFiles(data) {
89672
+ const itemFiles = Array.from(data.items).flatMap((item) => {
89673
+ if (item.kind !== "file") return [];
89674
+ const file = item.getAsFile();
89675
+ return file === null ? [] : [file];
89676
+ });
89677
+ return itemFiles.length > 0 ? itemFiles : Array.from(data.files);
89678
+ }
89679
+ async function removeDetailExtensionAttachments(attachments) {
89680
+ for (const attachment of attachments) releaseArkmeComposerAttachment(attachment);
89681
+ const sdk = createArkmeSdk();
89682
+ await Promise.allSettled(attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [sdk.removeLocalFile(attachment.localFile.fileRef)]));
89683
+ }
89684
+ function removeDetailExtensionAttachmentsAfter(attachments, pendingSend) {
89685
+ if (attachments.length === 0) return;
89686
+ if (pendingSend === void 0) {
89687
+ removeDetailExtensionAttachments(attachments);
89688
+ return;
89689
+ }
89690
+ pendingSend.catch(() => void 0).then(async () => {
89691
+ await removeDetailExtensionAttachments(attachments);
89692
+ });
89693
+ }
89694
+ function DetailExtensionComposer({ sourceRef, messageActionRef, parentRecordUid, targetKey, onSent, onError }) {
89695
+ const [text, setText] = (0, react.useState)("");
89696
+ const [attachments, setAttachments] = (0, react.useState)([]);
89697
+ const [preparing, setPreparing] = (0, react.useState)(false);
89698
+ const [sending, setSending] = (0, react.useState)(false);
89699
+ const [draftPreview, setDraftPreview] = (0, react.useState)();
89700
+ const fileInputRef = (0, react.useRef)(null);
89701
+ const stageAbortRef = (0, react.useRef)();
89702
+ const sendAbortRef = (0, react.useRef)();
89703
+ const sendPromiseRef = (0, react.useRef)();
89704
+ const generationRef = (0, react.useRef)(0);
89705
+ const attachmentsRef = (0, react.useRef)([]);
89706
+ const submissionRef = (0, react.useRef)();
89707
+ attachmentsRef.current = attachments;
89708
+ (0, react.useEffect)(() => {
89709
+ generationRef.current += 1;
89710
+ stageAbortRef.current?.abort();
89711
+ attachmentsRef.current = [];
89712
+ sendAbortRef.current = void 0;
89713
+ sendPromiseRef.current = void 0;
89714
+ submissionRef.current = void 0;
89715
+ setText("");
89716
+ setAttachments([]);
89717
+ setPreparing(false);
89718
+ setSending(false);
89719
+ setDraftPreview(void 0);
89720
+ return () => {
89721
+ generationRef.current += 1;
89722
+ stageAbortRef.current?.abort();
89723
+ const pending = attachmentsRef.current;
89724
+ const pendingSend = sendPromiseRef.current;
89725
+ attachmentsRef.current = [];
89726
+ sendAbortRef.current?.abort();
89727
+ sendAbortRef.current = void 0;
89728
+ sendPromiseRef.current = void 0;
89729
+ removeDetailExtensionAttachmentsAfter(pending, pendingSend);
89730
+ };
89731
+ }, [targetKey]);
89732
+ const selectFiles = async (files) => {
89733
+ if (files === null || files.length === 0 || preparing || sending) return;
89734
+ const controller = new AbortController();
89735
+ stageAbortRef.current?.abort();
89736
+ stageAbortRef.current = controller;
89737
+ setPreparing(true);
89738
+ const next = [];
89739
+ let appended = false;
89740
+ try {
89741
+ const sdk = createArkmeSdk();
89742
+ const policy = await sdk.fileCapabilities(controller.signal);
89743
+ const selected = Array.from(files);
89744
+ const failures = [];
89745
+ for (const file of selected) {
89746
+ controller.signal.throwIfAborted();
89747
+ if (attachments.length + next.length >= policy.maxAttachments) {
89748
+ failures.push(`最多添加 ${String(policy.maxAttachments)} 个附件:${file.name}`);
89749
+ continue;
89750
+ }
89751
+ const limit = file.type.startsWith("image/") ? policy.maxImageBytes : policy.maxFileBytes;
89752
+ if (file.size <= 0 || file.size > limit) {
89753
+ failures.push(`${file.name} 为空或超过 ${String(Math.floor(limit / 1024 / 1024))} MiB`);
89754
+ continue;
89755
+ }
89756
+ try {
89757
+ const localFile = await sdk.stageFile(file, { signal: controller.signal });
89758
+ const previewUrl = localFile.fileKind === 1 && typeof URL.createObjectURL === "function" ? URL.createObjectURL(file) : void 0;
89759
+ next.push({
89760
+ localFile,
89761
+ ...previewUrl === void 0 ? {} : { previewUrl }
89762
+ });
89763
+ } catch (caught) {
89764
+ if (controller.signal.aborted) throw caught;
89765
+ failures.push(caught instanceof Error ? `${file.name}:${caught.message}` : `${file.name}:附件准备失败`);
89766
+ }
89767
+ }
89768
+ if (!controller.signal.aborted && next.length > 0) {
89769
+ const combined = [...attachmentsRef.current, ...next];
89770
+ attachmentsRef.current = combined;
89771
+ appended = true;
89772
+ setAttachments(combined);
89773
+ }
89774
+ if (failures.length > 0) onError(failures.join(";"));
89775
+ } catch (caught) {
89776
+ if (!controller.signal.aborted) onError(caught instanceof Error ? caught.message : "附件准备失败");
89777
+ } finally {
89778
+ if (stageAbortRef.current === controller) {
89779
+ stageAbortRef.current = void 0;
89780
+ setPreparing(false);
89781
+ }
89782
+ if (fileInputRef.current !== null) fileInputRef.current.value = "";
89783
+ if (!appended && next.length > 0) removeDetailExtensionAttachments(next);
89784
+ }
89785
+ };
89786
+ const send = async () => {
89787
+ const normalizedText = text.trim();
89788
+ const fileRefs = attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
89789
+ if (sending || preparing || normalizedText === "" && fileRefs.length === 0) return;
89790
+ const fingerprint = JSON.stringify([
89791
+ parentRecordUid ?? "",
89792
+ normalizedText,
89793
+ fileRefs
89794
+ ]);
89795
+ const recordUid = submissionRef.current?.fingerprint === fingerprint ? submissionRef.current.recordUid : crypto.randomUUID();
89796
+ const relationUid = submissionRef.current?.fingerprint === fingerprint ? submissionRef.current.relationUid : crypto.randomUUID();
89797
+ submissionRef.current = {
89798
+ fingerprint,
89799
+ recordUid,
89800
+ relationUid
89801
+ };
89802
+ const generation = generationRef.current;
89803
+ const controller = new AbortController();
89804
+ sendAbortRef.current = controller;
89805
+ setSending(true);
89806
+ const request = callArkme("source.message-extension.extend", {
89807
+ sourceRef,
89808
+ messageActionRef,
89809
+ textContent: normalizedText,
89810
+ recordUid,
89811
+ relationUid,
89812
+ ...parentRecordUid === void 0 ? {} : { parentRecordUid },
89813
+ fileRefs
89814
+ }, controller.signal);
89815
+ sendPromiseRef.current = request;
89816
+ try {
89817
+ const result = await request;
89818
+ if (generationRef.current !== generation || controller.signal.aborted) return;
89819
+ submissionRef.current = void 0;
89820
+ attachmentsRef.current = [];
89821
+ for (const attachment of attachments) releaseArkmeComposerAttachment(attachment);
89822
+ setText("");
89823
+ setAttachments([]);
89824
+ setDraftPreview(void 0);
89825
+ onSent(result);
89826
+ const sdk = createArkmeSdk();
89827
+ Promise.all(fileRefs.map(async (fileRef) => {
89828
+ await sdk.removeLocalFile(fileRef);
89829
+ })).catch(() => {});
89830
+ } catch (caught) {
89831
+ if (generationRef.current === generation && !controller.signal.aborted) onError(caught instanceof Error ? caught.message : "延展发送失败,请重试");
89832
+ } finally {
89833
+ if (sendPromiseRef.current === request) sendPromiseRef.current = void 0;
89834
+ if (sendAbortRef.current === controller) sendAbortRef.current = void 0;
89835
+ if (generationRef.current === generation) setSending(false);
89836
+ }
89837
+ };
89838
+ const disabled = preparing || sending;
89839
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
89840
+ style: styles$9.extensionComposer,
89841
+ onDragOver: (event) => {
89842
+ if (!disabled && Array.from(event.dataTransfer.types).includes("Files")) {
89843
+ event.preventDefault();
89844
+ event.dataTransfer.dropEffect = "copy";
89845
+ }
89846
+ },
89847
+ onDrop: (event) => {
89848
+ if (!disabled && event.dataTransfer.files.length > 0) {
89849
+ event.preventDefault();
89850
+ selectFiles(event.dataTransfer.files);
89851
+ }
89852
+ },
89853
+ children: [
89854
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
89855
+ ref: fileInputRef,
89856
+ type: "file",
89857
+ multiple: true,
89858
+ hidden: true,
89859
+ "data-arkme-detail-extension-file-input": "true",
89860
+ onChange: (event) => selectFiles(event.currentTarget.files)
89861
+ }),
89862
+ attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
89863
+ style: styles$9.extensionAttachmentPreview,
89864
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
89865
+ attachments,
89866
+ disabled,
89867
+ onMove: (from, to) => {
89868
+ setAttachments((current) => {
89869
+ const next = [...current];
89870
+ const [item] = next.splice(from, 1);
89871
+ if (item !== void 0) next.splice(to, 0, item);
89872
+ attachmentsRef.current = next;
89873
+ return next;
89874
+ });
89875
+ },
89876
+ onRemove: (attachment) => {
89877
+ const fileRef = attachment.localFile?.fileRef;
89878
+ releaseArkmeComposerAttachment(attachment);
89879
+ if (draftPreview === attachment) setDraftPreview(void 0);
89880
+ setAttachments((current) => {
89881
+ const next = current.filter((item) => item !== attachment);
89882
+ attachmentsRef.current = next;
89883
+ return next;
89884
+ });
89885
+ if (fileRef !== void 0) createArkmeSdk().removeLocalFile(fileRef).catch((caught) => {
89886
+ onError(caught instanceof Error ? caught.message : "附件移除失败");
89887
+ });
89888
+ },
89889
+ onPreview: (attachment) => {
89890
+ setDraftPreview(attachment);
89891
+ }
89892
+ })
89893
+ }),
89894
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
89895
+ className: "arkme-detail-extension-input-bar",
89896
+ style: styles$9.extensionInputBar,
89897
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
89898
+ className: "arkme-detail-extension-input-shell",
89899
+ style: styles$9.extensionInputWrap,
89900
+ children: [
89901
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
89902
+ type: "button",
89903
+ style: {
89904
+ ...styles$9.extensionTool,
89905
+ opacity: disabled ? .4 : 1
89906
+ },
89907
+ "aria-label": "添加延展附件",
89908
+ disabled,
89909
+ onClick: () => {
89910
+ fileInputRef.current?.click();
89911
+ },
89912
+ children: preparing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFilePreparingIndicator, {}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(o$6, { size: 18 })
89913
+ }),
89914
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
89915
+ rows: 1,
89916
+ style: styles$9.extensionInput,
89917
+ "aria-label": "延展此快记",
89918
+ placeholder: "延展此快记...",
89919
+ value: text,
89920
+ disabled,
89921
+ onChange: (event) => {
89922
+ setText(event.target.value);
89923
+ },
89924
+ onPaste: (event) => {
89925
+ const files = clipboardFiles(event.clipboardData);
89926
+ if (files.length > 0) {
89927
+ event.preventDefault();
89928
+ selectFiles(files);
89929
+ }
89930
+ },
89931
+ onKeyDown: (event) => {
89932
+ if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
89933
+ event.preventDefault();
89934
+ send();
89935
+ }
89936
+ }
89937
+ }),
89938
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
89939
+ type: "button",
89940
+ style: {
89941
+ ...styles$9.extensionSend,
89942
+ opacity: normalizedSendOpacity(text, attachments.length, disabled)
89943
+ },
89944
+ "aria-label": "发送延展",
89945
+ disabled: disabled || text.trim() === "" && attachments.length === 0,
89946
+ onClick: () => {
89947
+ send();
89948
+ },
89949
+ children: "↑"
89950
+ })
89951
+ ]
89952
+ })
89953
+ }),
89954
+ draftPreview?.localFile !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMediaPreview, {
89955
+ selected: localFileBlock(draftPreview.localFile),
89956
+ blocks: attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile)]),
89957
+ ...draftPreview.previewUrl === void 0 ? {} : { previewUrl: draftPreview.previewUrl },
89958
+ onSelect: (block) => {
89959
+ const attachment = attachments.find((item) => item.localFile?.fileRef === block.localFileRef);
89960
+ if (attachment !== void 0) setDraftPreview(attachment);
89961
+ },
89962
+ onClose: () => {
89963
+ setDraftPreview(void 0);
89964
+ },
89965
+ openLocalFile: false
89966
+ })
89967
+ ]
89968
+ });
89969
+ }
89970
+ function normalizedSendOpacity(text, attachmentCount, disabled) {
89971
+ return disabled || text.trim() === "" && attachmentCount === 0 ? .35 : 1;
89972
+ }
89413
89973
  function arkmeTimelineDetailSenderText(item) {
89414
89974
  return item.agentSource === void 0 ? item.senderName : `${item.senderName} · ${item.agentSource.label}`;
89415
89975
  }
89976
+ function detailExtensionSenderName(item) {
89977
+ return item.senderDisplayName.trim() || (item.sourceKind === "agent_message" ? "Agent" : "未知用户");
89978
+ }
89979
+ function detailExtensionTimelineItem$1(item) {
89980
+ const avatar = item.senderAvatarUrl?.trim() ?? "";
89981
+ return {
89982
+ itemUid: item.recordUid,
89983
+ senderName: detailExtensionSenderName(item),
89984
+ isMe: false,
89985
+ sendAtMillis: item.sendAtMillis,
89986
+ title: item.title,
89987
+ textContent: item.textContent,
89988
+ status: 1,
89989
+ templateKind: item.templateKind,
89990
+ displayKind: item.displayKind,
89991
+ ...avatar !== "" && !/^(https?:|data:|blob:)/iu.test(avatar) ? { avatarRef: avatar } : {}
89992
+ };
89993
+ }
89994
+ function DetailExtensionAvatar({ item, size = 32 }) {
89995
+ const name = detailExtensionSenderName(item);
89996
+ const avatar = item.senderAvatarUrl?.trim() ?? "";
89997
+ if (/^(https?:|data:|blob:)/iu.test(avatar)) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
89998
+ style: {
89999
+ ...styles$9.extensionContextAvatarFallback,
90000
+ width: size,
90001
+ height: size
90002
+ },
90003
+ "aria-hidden": true,
90004
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
90005
+ src: avatar,
90006
+ alt: "",
90007
+ draggable: false,
90008
+ style: styles$9.extensionContextAvatarImage
90009
+ })
90010
+ });
90011
+ if (avatar !== "") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
90012
+ avatarRef: avatar,
90013
+ size,
90014
+ label: "延展作者头像"
90015
+ });
90016
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
90017
+ style: {
90018
+ ...styles$9.extensionContextAvatarFallback,
90019
+ width: size,
90020
+ height: size
90021
+ },
90022
+ "aria-hidden": true,
90023
+ children: [...name][0] ?? "?"
90024
+ });
90025
+ }
90026
+ function orderedDetailExtensions(extensions, rootRecordUid) {
90027
+ const newestFirst = [...extensions].sort((left, right) => right.sendAtMillis - left.sendAtMillis);
90028
+ const direct = newestFirst.filter((item) => item.parentRecordUid === rootRecordUid || item.parentRecordUid === void 0 && item.level <= 2);
90029
+ const directUids = new Set(direct.map((item) => item.recordUid));
90030
+ const result = [];
90031
+ const used = /* @__PURE__ */ new Set();
90032
+ for (const item of direct) {
90033
+ result.push({
90034
+ item,
90035
+ nested: false
90036
+ });
90037
+ used.add(item.recordUid);
90038
+ for (const child of newestFirst.filter((candidate) => candidate.parentRecordUid === item.recordUid)) {
90039
+ result.push({
90040
+ item: child,
90041
+ nested: true
90042
+ });
90043
+ used.add(child.recordUid);
90044
+ }
90045
+ }
90046
+ for (const item of newestFirst) {
90047
+ if (used.has(item.recordUid)) continue;
90048
+ result.push({
90049
+ item,
90050
+ nested: !directUids.has(item.recordUid) && item.level > 2
90051
+ });
90052
+ }
90053
+ return result;
90054
+ }
90055
+ function DetailExtensionParent({ parent }) {
90056
+ const text = parent.textContent.trim() || parent.title.trim();
90057
+ const attachmentText = (parent.contentBlocks ?? []).map((block) => block.fileName.trim()).filter(Boolean).join("、");
90058
+ const preview = text || attachmentText;
90059
+ if (preview === "") return null;
90060
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
90061
+ style: styles$9.extensionParent,
90062
+ "data-arkme-detail-extension-parent": parent.itemUid,
90063
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
90064
+ style: styles$9.extensionParentText,
90065
+ children: preview
90066
+ })
90067
+ });
90068
+ }
90069
+ function DetailExtensionContext({ state, optimistic, selectedRecordUid, sourceRef, shareWebsite, onMessageCopyLinkOpen, onRetry, onSelect }) {
90070
+ const context = state.kind === "success" ? state.context : void 0;
90071
+ const byUid = /* @__PURE__ */ new Map();
90072
+ for (const item of optimistic) byUid.set(item.recordUid, item);
90073
+ for (const item of context?.extensions ?? []) byUid.set(item.recordUid, item);
90074
+ const extensions = [...byUid.values()];
90075
+ const extensionCount = Math.max(context?.extensionCount ?? 0, extensions.length);
90076
+ if (state.kind === "loading" && extensions.length === 0) return null;
90077
+ if (state.kind === "error" && extensions.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
90078
+ style: styles$9.extensionContext,
90079
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90080
+ role: "alert",
90081
+ style: styles$9.extensionContextStatus,
90082
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: state.message }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
90083
+ type: "button",
90084
+ style: styles$9.extensionContextRetry,
90085
+ onClick: onRetry,
90086
+ children: "重试"
90087
+ })]
90088
+ })
90089
+ });
90090
+ if (extensionCount === 0) return null;
90091
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
90092
+ style: styles$9.extensionContext,
90093
+ "aria-label": "快记延展列表",
90094
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90095
+ style: styles$9.extensionContextTitle,
90096
+ "data-arkme-note-extension-count": "true",
90097
+ children: [
90098
+ "共",
90099
+ extensionCount,
90100
+ "条延展"
90101
+ ]
90102
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
90103
+ style: styles$9.extensionContextList,
90104
+ children: orderedDetailExtensions(extensions, context?.parentRecordUid ?? "").map(({ item: extension, nested }) => {
90105
+ const timelineItem = detailExtensionTimelineItem$1(extension);
90106
+ const mediaLabel = extension.mediaItems.map((media) => media.fileName.trim()).filter(Boolean).join("、");
90107
+ const selected = extension.recordUid === selectedRecordUid;
90108
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90109
+ style: {
90110
+ ...styles$9.extensionContextRow,
90111
+ ...selected ? styles$9.extensionContextRowSelected : {},
90112
+ ...nested ? { marginLeft: 30 } : {}
90113
+ },
90114
+ role: "button",
90115
+ tabIndex: 0,
90116
+ "aria-pressed": selected,
90117
+ "data-arkme-note-extension-item": extension.recordUid,
90118
+ onClick: () => {
90119
+ onSelect(extension);
90120
+ },
90121
+ onKeyDown: (event) => {
90122
+ if (event.key === "Enter" || event.key === " ") {
90123
+ event.preventDefault();
90124
+ onSelect(extension);
90125
+ }
90126
+ },
90127
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailExtensionAvatar, {
90128
+ item: extension,
90129
+ size: nested ? 28 : 32
90130
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90131
+ style: styles$9.extensionContextBody,
90132
+ children: [
90133
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
90134
+ style: styles$9.extensionContextHead,
90135
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
90136
+ style: styles$9.extensionContextName,
90137
+ children: detailExtensionSenderName(extension)
90138
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
90139
+ style: styles$9.extensionContextTime,
90140
+ children: [dateLabel(extension.sendAtMillis), timeLabel$1(extension.sendAtMillis)].filter(Boolean).join(" ")
90141
+ })]
90142
+ }),
90143
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageContent, {
90144
+ presentation: "detail",
90145
+ item: timelineItem,
90146
+ ...sourceRef === void 0 ? {} : { sourceRef },
90147
+ ...shareWebsite === void 0 ? {} : { shareWebsite },
90148
+ ...onMessageCopyLinkOpen === void 0 ? {} : { onMessageCopyLinkOpen }
90149
+ }),
90150
+ mediaLabel !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
90151
+ style: styles$9.extensionContextMedia,
90152
+ children: mediaLabel
90153
+ })
90154
+ ]
90155
+ })]
90156
+ }, extension.recordUid);
90157
+ })
90158
+ })]
90159
+ });
90160
+ }
89416
90161
  function relatedQuickNoteErrorMessage(error, fallback) {
89417
90162
  return error instanceof Error && error.message.trim() !== "" ? error.message : fallback;
89418
90163
  }
89419
90164
  function relatedQuickNoteReferenceExpired$1(error) {
89420
90165
  return error instanceof ArkmeClientError && error.body.code === "related-quick-note-ref-expired";
89421
90166
  }
89422
- function ArkmeTimelineDetailDrawer({ item, sourceRef, showOriginal, onClose, onToggleOriginal, shareWebsite, onMessageCopyLinkOpen }) {
90167
+ function ArkmeTimelineDetailDrawer({ item, sourceRef, showOriginal, onClose, onToggleOriginal, shareWebsite, onMessageCopyLinkOpen, onExtensionSent, onToast }) {
89423
90168
  const [relatedView, setRelatedView] = (0, react.useState)("source-detail");
89424
90169
  const [relatedState, setRelatedState] = (0, react.useState)({ kind: "idle" });
89425
90170
  const [relatedDetailState, setRelatedDetailState] = (0, react.useState)({ kind: "idle" });
89426
90171
  const listAbortRef = (0, react.useRef)();
89427
90172
  const detailAbortRef = (0, react.useRef)();
90173
+ const extensionAbortRef = (0, react.useRef)();
90174
+ const [extensionState, setExtensionState] = (0, react.useState)({ kind: "idle" });
90175
+ const [optimisticExtensions, setOptimisticExtensions] = (0, react.useState)([]);
90176
+ const [selectedExtensionRecordUid, setSelectedExtensionRecordUid] = (0, react.useState)();
89428
90177
  const bodyRef = (0, react.useRef)(null);
89429
90178
  const scrollTopByViewRef = (0, react.useRef)({
89430
90179
  "source-detail": 0,
@@ -89459,6 +90208,32 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89459
90208
  });
89460
90209
  });
89461
90210
  }, [messageActionRef, normalizedSourceRef]);
90211
+ const loadExtensionContext = (0, react.useCallback)(() => {
90212
+ extensionAbortRef.current?.abort();
90213
+ if (normalizedSourceRef === "" || messageActionRef === "") {
90214
+ setExtensionState({ kind: "idle" });
90215
+ return;
90216
+ }
90217
+ const controller = new AbortController();
90218
+ extensionAbortRef.current = controller;
90219
+ setExtensionState((current) => current.kind === "success" ? current : { kind: "loading" });
90220
+ callArkme("source.message-extension.context", {
90221
+ sourceRef: normalizedSourceRef,
90222
+ messageActionRef
90223
+ }, controller.signal).then((context) => {
90224
+ if (controller.signal.aborted || extensionAbortRef.current !== controller) return;
90225
+ setExtensionState({
90226
+ kind: "success",
90227
+ context
90228
+ });
90229
+ }).catch((error) => {
90230
+ if (controller.signal.aborted || extensionAbortRef.current !== controller) return;
90231
+ setExtensionState({
90232
+ kind: "error",
90233
+ message: relatedQuickNoteErrorMessage(error, "延展加载失败")
90234
+ });
90235
+ });
90236
+ }, [messageActionRef, normalizedSourceRef]);
89462
90237
  const loadRelatedDetail = (0, react.useCallback)((relatedItem) => {
89463
90238
  detailAbortRef.current?.abort();
89464
90239
  if (normalizedSourceRef === "") return;
@@ -89493,20 +90268,30 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89493
90268
  (0, react.useEffect)(() => {
89494
90269
  listAbortRef.current?.abort();
89495
90270
  detailAbortRef.current?.abort();
90271
+ extensionAbortRef.current?.abort();
89496
90272
  setRelatedView("source-detail");
89497
90273
  setRelatedState({ kind: "idle" });
89498
90274
  setRelatedDetailState({ kind: "idle" });
90275
+ setExtensionState({ kind: "idle" });
90276
+ setOptimisticExtensions([]);
90277
+ setSelectedExtensionRecordUid(void 0);
89499
90278
  scrollTopByViewRef.current = {
89500
90279
  "source-detail": 0,
89501
90280
  "related-list": 0,
89502
90281
  "related-detail": 0
89503
90282
  };
89504
90283
  loadRelated();
90284
+ loadExtensionContext();
89505
90285
  return () => {
89506
90286
  listAbortRef.current?.abort();
89507
90287
  detailAbortRef.current?.abort();
90288
+ extensionAbortRef.current?.abort();
89508
90289
  };
89509
- }, [item.itemUid, loadRelated]);
90290
+ }, [
90291
+ item.itemUid,
90292
+ loadExtensionContext,
90293
+ loadRelated
90294
+ ]);
89510
90295
  (0, react.useEffect)(() => {
89511
90296
  if (bodyRef.current !== null) bodyRef.current.scrollTop = scrollTopByViewRef.current[relatedView];
89512
90297
  }, [relatedView]);
@@ -89517,6 +90302,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89517
90302
  const closeDrawer = () => {
89518
90303
  listAbortRef.current?.abort();
89519
90304
  detailAbortRef.current?.abort();
90305
+ extensionAbortRef.current?.abort();
89520
90306
  onClose();
89521
90307
  };
89522
90308
  const backRelated = () => {
@@ -89525,6 +90311,20 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89525
90311
  };
89526
90312
  const textContent = showOriginal && item.aiPolish?.originalText !== void 0 ? item.aiPolish.originalText : item.aiPolish?.state === "polished" && item.aiPolish.polishedText !== void 0 ? item.aiPolish.polishedText : item.textContent;
89527
90313
  const canToggle = item.aiPolish?.state === "polished" && item.aiPolish.originalText !== void 0 && item.aiPolish.polishedText !== void 0;
90314
+ const extensionFooter = normalizedSourceRef === "" || messageActionRef === "" ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailExtensionComposer, {
90315
+ sourceRef: normalizedSourceRef,
90316
+ messageActionRef,
90317
+ ...selectedExtensionRecordUid === void 0 ? {} : { parentRecordUid: selectedExtensionRecordUid },
90318
+ targetKey: `${normalizedSourceRef}:${item.itemUid}:${selectedExtensionRecordUid ?? item.itemUid}`,
90319
+ onError: (message) => {
90320
+ onToast?.(message);
90321
+ },
90322
+ onSent: (result) => {
90323
+ setOptimisticExtensions((current) => [result.extension, ...current.filter((item) => item.recordUid !== result.recordUid)]);
90324
+ onExtensionSent?.(result);
90325
+ loadExtensionContext();
90326
+ }
90327
+ });
89528
90328
  if (relatedView === "related-list") {
89529
90329
  const total = relatedState.kind === "success" ? relatedState.list.total : 0;
89530
90330
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoteDetailShell, {
@@ -89534,6 +90334,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89534
90334
  onBack: backRelated,
89535
90335
  backLabel: "返回快记详情",
89536
90336
  bodyRef,
90337
+ footer: extensionFooter,
89537
90338
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRelatedQuickNotesList, {
89538
90339
  state: relatedState,
89539
90340
  onRetry: loadRelated,
@@ -89542,7 +90343,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89542
90343
  loadRelatedDetail(relatedItem);
89543
90344
  }
89544
90345
  }) })
89545
- }, "related-list");
90346
+ });
89546
90347
  }
89547
90348
  if (relatedView === "related-detail") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(NoteDetailShell, {
89548
90349
  title: "相关快记详情",
@@ -89551,6 +90352,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89551
90352
  onBack: backRelated,
89552
90353
  backLabel: "返回相关快记列表",
89553
90354
  bodyRef,
90355
+ footer: extensionFooter,
89554
90356
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRelatedQuickNoteDetail, {
89555
90357
  state: relatedDetailState,
89556
90358
  onRetry: loadRelatedDetail,
@@ -89558,12 +90360,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89558
90360
  ...shareWebsite === void 0 ? {} : { shareWebsite },
89559
90361
  ...onMessageCopyLinkOpen === void 0 ? {} : { onMessageCopyLinkOpen }
89560
90362
  })
89561
- }, "related-detail");
90363
+ });
89562
90364
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(NoteDetailShell, {
89563
90365
  title: "快记详情",
89564
90366
  label: "快记详情",
89565
90367
  onClose: closeDrawer,
89566
90368
  bodyRef,
90369
+ footer: extensionFooter,
89567
90370
  children: [
89568
90371
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
89569
90372
  style: {
@@ -89608,15 +90411,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
89608
90411
  ...onMessageCopyLinkOpen === void 0 ? {} : { onMessageCopyLinkOpen }
89609
90412
  })
89610
90413
  }),
90414
+ item.extensionParent !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailExtensionParent, { parent: item.extensionParent }),
89611
90415
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRelatedQuickNotesCard, {
89612
90416
  state: relatedState,
89613
90417
  onOpen: () => {
89614
90418
  navigateRelated("related-list");
89615
90419
  },
89616
90420
  onRetry: loadRelated
90421
+ }),
90422
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailExtensionContext, {
90423
+ state: extensionState,
90424
+ optimistic: optimisticExtensions,
90425
+ ...selectedExtensionRecordUid === void 0 ? {} : { selectedRecordUid: selectedExtensionRecordUid },
90426
+ ...sourceRef === void 0 ? {} : { sourceRef },
90427
+ ...shareWebsite === void 0 ? {} : { shareWebsite },
90428
+ ...onMessageCopyLinkOpen === void 0 ? {} : { onMessageCopyLinkOpen },
90429
+ onRetry: loadExtensionContext,
90430
+ onSelect: (extension) => {
90431
+ setSelectedExtensionRecordUid(extension.recordUid);
90432
+ }
89617
90433
  })
89618
90434
  ]
89619
- }, "source-detail");
90435
+ });
89620
90436
  }
89621
90437
  function ForwardDetailRow({ name, time, avatarRef, segment = false, children }) {
89622
90438
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -91727,14 +92543,23 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
91727
92543
  row: {
91728
92544
  width: "100%",
91729
92545
  minWidth: 0,
91730
- display: "flex"
92546
+ display: "flex",
92547
+ background: "transparent",
92548
+ transition: "background-color .3s ease"
91731
92549
  },
91732
92550
  rowSearchTarget: {
91733
- borderRadius: 14,
91734
- outline: "2px solid rgba(10,132,255,.42)",
91735
- outlineOffset: 5,
91736
- background: "rgba(10,132,255,.07)",
91737
- transition: "outline-color .3s ease, background-color .3s ease"
92551
+ position: "relative",
92552
+ isolation: "isolate"
92553
+ },
92554
+ rowSearchTargetBackdrop: {
92555
+ position: "absolute",
92556
+ top: -6,
92557
+ right: -6,
92558
+ bottom: 12,
92559
+ left: -6,
92560
+ zIndex: -1,
92561
+ background: arkmeTheme.active,
92562
+ pointerEvents: "none"
91738
92563
  },
91739
92564
  rowMe: { justifyContent: "flex-end" },
91740
92565
  rowOther: { justifyContent: "flex-start" },
@@ -91822,6 +92647,32 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
91822
92647
  gap: 7
91823
92648
  },
91824
92649
  messageBodyMe: { alignItems: "flex-end" },
92650
+ extensionMessageGroup: {
92651
+ width: "100%",
92652
+ minWidth: 0,
92653
+ display: "flex",
92654
+ flexDirection: "column",
92655
+ alignItems: "flex-start",
92656
+ gap: 0
92657
+ },
92658
+ extensionMessageGroupMe: { alignItems: "flex-end" },
92659
+ extensionChildLine: {
92660
+ width: "100%",
92661
+ minWidth: 0,
92662
+ display: "flex",
92663
+ alignItems: "flex-start",
92664
+ gap: 10
92665
+ },
92666
+ extensionChildLineMe: { flexDirection: "row-reverse" },
92667
+ extensionChildBody: {
92668
+ minWidth: 0,
92669
+ flex: 1,
92670
+ display: "flex",
92671
+ flexDirection: "column",
92672
+ alignItems: "flex-start",
92673
+ gap: 7
92674
+ },
92675
+ extensionChildBodyMe: { alignItems: "flex-end" },
91825
92676
  forwardMessageBody: { flex: 1 },
91826
92677
  sharedRecordingMessageBody: {
91827
92678
  width: "100%",
@@ -91938,6 +92789,49 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
91938
92789
  background: arkmeTheme.messageOther,
91939
92790
  "--arkme-bubble-fade": arkmeTheme.messageOther
91940
92791
  },
92792
+ extensionParentPreview: {
92793
+ maxWidth: "min(600px, 100%)",
92794
+ minWidth: 30,
92795
+ display: "flex",
92796
+ alignItems: "center",
92797
+ gap: 8,
92798
+ padding: 8,
92799
+ boxSizing: "border-box",
92800
+ overflow: "hidden",
92801
+ borderRadius: "12px 12px 0 0",
92802
+ background: `linear-gradient(180deg, ${arkmeTheme.subtle} 0%, transparent 68.06%)`,
92803
+ color: arkmeTheme.tertiary,
92804
+ fontSize: 12,
92805
+ lineHeight: "16px"
92806
+ },
92807
+ extensionParentPreviewMe: { marginRight: 54 },
92808
+ extensionParentPreviewOther: { marginLeft: 54 },
92809
+ extensionParentText: {
92810
+ minWidth: 0,
92811
+ overflow: "hidden",
92812
+ textOverflow: "ellipsis",
92813
+ whiteSpace: "nowrap"
92814
+ },
92815
+ extensionParentMedia: {
92816
+ display: "flex",
92817
+ flex: "none",
92818
+ gap: 4
92819
+ },
92820
+ extensionParentImage: {
92821
+ width: 32,
92822
+ height: 32,
92823
+ display: "block",
92824
+ objectFit: "cover",
92825
+ borderRadius: 5,
92826
+ background: arkmeTheme.subtle
92827
+ },
92828
+ extensionParentFile: {
92829
+ maxWidth: 120,
92830
+ overflow: "hidden",
92831
+ textOverflow: "ellipsis",
92832
+ whiteSpace: "nowrap",
92833
+ color: arkmeTheme.secondary
92834
+ },
91941
92835
  forwardBubble: {
91942
92836
  width: 354,
91943
92837
  maxWidth: "100%",
@@ -92049,6 +92943,88 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
92049
92943
  ...arkmeConversationComposerLayout.composer,
92050
92944
  background: "#fff"
92051
92945
  },
92946
+ composerDestinationHint: {
92947
+ minHeight: 18,
92948
+ margin: "0 0 5px 6px",
92949
+ display: "flex",
92950
+ alignItems: "center",
92951
+ gap: 0,
92952
+ color: arkmeTheme.tertiary,
92953
+ fontSize: 11,
92954
+ lineHeight: "18px"
92955
+ },
92956
+ composerDestinationHintIcon: {
92957
+ marginRight: 6,
92958
+ fontSize: 14,
92959
+ lineHeight: "18px"
92960
+ },
92961
+ composerDestinationHintName: {
92962
+ color: arkmeTheme.secondary,
92963
+ fontWeight: 500
92964
+ },
92965
+ composerExtensionTarget: {
92966
+ margin: 0,
92967
+ padding: 8,
92968
+ display: "flex",
92969
+ alignItems: "flex-start",
92970
+ gap: 10,
92971
+ borderRadius: "12px 12px 0 0",
92972
+ border: `1px solid ${colors.border}`,
92973
+ borderBottom: 0,
92974
+ background: arkmeTheme.extensionSource,
92975
+ boxShadow: `inset 0 -1px 0 ${colors.border}`
92976
+ },
92977
+ composerExtensionTargetBody: {
92978
+ flex: 1,
92979
+ minWidth: 0
92980
+ },
92981
+ composerExtensionTargetText: {
92982
+ overflow: "hidden",
92983
+ color: arkmeTheme.tertiary,
92984
+ fontSize: 12,
92985
+ lineHeight: "18px",
92986
+ textOverflow: "ellipsis",
92987
+ whiteSpace: "nowrap"
92988
+ },
92989
+ composerExtensionTargetFiles: {
92990
+ marginTop: 5,
92991
+ display: "flex",
92992
+ gap: 5,
92993
+ overflow: "hidden",
92994
+ color: arkmeTheme.tertiary,
92995
+ fontSize: 10,
92996
+ lineHeight: "14px"
92997
+ },
92998
+ composerExtensionTargetFile: {
92999
+ width: 42,
93000
+ height: 34,
93001
+ display: "grid",
93002
+ placeItems: "center",
93003
+ overflow: "hidden",
93004
+ borderRadius: 5,
93005
+ background: arkmeTheme.elevated,
93006
+ textOverflow: "ellipsis",
93007
+ whiteSpace: "nowrap"
93008
+ },
93009
+ composerExtensionTargetImage: {
93010
+ width: "100%",
93011
+ height: "100%",
93012
+ display: "block",
93013
+ objectFit: "cover"
93014
+ },
93015
+ composerExtensionTargetCancel: {
93016
+ flex: "none",
93017
+ width: 24,
93018
+ height: 24,
93019
+ padding: 0,
93020
+ border: 0,
93021
+ borderRadius: 6,
93022
+ background: "transparent",
93023
+ color: arkmeTheme.tertiary,
93024
+ cursor: "pointer",
93025
+ fontSize: 18,
93026
+ lineHeight: "22px"
93027
+ },
92052
93028
  selectBar: {
92053
93029
  position: "absolute",
92054
93030
  left: 0,
@@ -92731,7 +93707,16 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
92731
93707
  ...arkmeConversationComposerLayout.composerInner,
92732
93708
  border: `1px solid ${colors.border}`,
92733
93709
  background: arkmeTheme.input,
92734
- boxShadow: arkmeTheme.shadow
93710
+ boxShadow: "none",
93711
+ transition: "background-color 140ms ease"
93712
+ },
93713
+ composerInnerFocused: {
93714
+ background: "color-mix(in srgb, var(--dsw-alias-bg-base, #ffffff) 97%, #000000)",
93715
+ boxShadow: "none"
93716
+ },
93717
+ composerInnerExtension: {
93718
+ borderTop: 0,
93719
+ borderRadius: "0 0 15px 15px"
92735
93720
  },
92736
93721
  composerStack: {
92737
93722
  width: "100%",
@@ -92923,19 +93908,24 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
92923
93908
  lineHeight: "18px"
92924
93909
  },
92925
93910
  send: {
92926
- width: 34,
92927
- height: 34,
93911
+ width: 36,
93912
+ height: 28,
92928
93913
  flex: "none",
92929
93914
  display: "grid",
92930
93915
  placeItems: "center",
92931
93916
  border: 0,
92932
- borderRadius: 9,
92933
- background: "#171923",
92934
- color: arkmeTheme.foreground,
93917
+ borderRadius: 14,
93918
+ background: "#09B83E",
93919
+ color: "#fff",
92935
93920
  cursor: "pointer",
92936
93921
  transform: "translateY(-2px)",
92937
93922
  transition: "background-color 100ms ease"
92938
93923
  },
93924
+ sendDisabled: {
93925
+ background: "#DCE1E9",
93926
+ color: "#fff",
93927
+ cursor: "default"
93928
+ },
92939
93929
  forwardDrawerDismiss: {
92940
93930
  position: "absolute",
92941
93931
  top: 68,
@@ -93084,6 +94074,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93084
94074
  const ARKME_MESSAGE_ACTION_MENU_LABELS = [
93085
94075
  "复制",
93086
94076
  "复制链接",
94077
+ "延展",
93087
94078
  "多选",
93088
94079
  "转发"
93089
94080
  ];
@@ -93305,6 +94296,35 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93305
94296
  }
93306
94297
  return [...map.values()].sort((a, b) => a.sendAtMillis - b.sendAtMillis || a.itemUid.localeCompare(b.itemUid));
93307
94298
  }
94299
+ function detailExtensionTimelineItem(parent, result) {
94300
+ const extension = result.extension;
94301
+ const avatarRef = extension.senderAvatarUrl?.trim() ?? "";
94302
+ return {
94303
+ itemUid: result.recordUid,
94304
+ senderName: extension.senderDisplayName.trim() || "我",
94305
+ isMe: true,
94306
+ sendAtMillis: extension.sendAtMillis,
94307
+ title: extension.title,
94308
+ textContent: extension.textContent,
94309
+ status: result.status,
94310
+ ...result.sequence === void 0 ? {} : { sequence: result.sequence },
94311
+ ...avatarRef === "" ? {} : { avatarRef },
94312
+ templateKind: extension.templateKind,
94313
+ displayKind: extension.displayKind,
94314
+ extensionParentRecordUid: result.parentRecordUid,
94315
+ extensionParent: {
94316
+ itemUid: parent.itemUid,
94317
+ senderName: parent.senderName,
94318
+ title: parent.title,
94319
+ textContent: parent.textContent,
94320
+ ...parent.contentBlocks === void 0 ? {} : { contentBlocks: parent.contentBlocks }
94321
+ },
94322
+ awaitingTimelineProjection: true
94323
+ };
94324
+ }
94325
+ function extensionConversationPreview(extension) {
94326
+ return extension.textContent.trim() || extension.title.trim() || extension.mediaItems.map((item) => item.fileName.trim()).find(Boolean) || "非文本内容";
94327
+ }
93308
94328
  const ARKME_CONFIRMED_SEND_RETENTION_MILLIS = ARKME_CONVERSATION_TIMELINE_FRESH_MILLIS * 4;
93309
94329
  /**
93310
94330
  * Retains only bounded Host-confirmed sends while an eventually-consistent
@@ -93574,6 +94594,53 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93574
94594
  ]
93575
94595
  });
93576
94596
  }
94597
+ function ArkmeExtensionParentPreview({ parent, isMe, onSelect }) {
94598
+ const text = parent.textContent.trim() || parent.title.trim();
94599
+ const blocks = [...parent.contentBlocks ?? []].sort((left, right) => left.sortOrder - right.sortOrder);
94600
+ const visuals = blocks.filter((block) => block.kind === "image" || block.kind === "video").slice(0, 3);
94601
+ const firstFile = blocks.find((block) => block.kind !== "image" && block.kind !== "video");
94602
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
94603
+ "data-arkme-extension-parent-preview": parent.itemUid,
94604
+ style: {
94605
+ ...styles$6.extensionParentPreview,
94606
+ ...isMe ? styles$6.extensionParentPreviewMe : styles$6.extensionParentPreviewOther,
94607
+ ...onSelect === void 0 ? {} : { cursor: "pointer" }
94608
+ },
94609
+ title: text || firstFile?.fileName,
94610
+ role: onSelect === void 0 ? void 0 : "button",
94611
+ tabIndex: onSelect === void 0 ? void 0 : 0,
94612
+ onClick: onSelect,
94613
+ onKeyDown: onSelect === void 0 ? void 0 : (event) => {
94614
+ if (event.key === "Enter" || event.key === " ") {
94615
+ event.preventDefault();
94616
+ onSelect();
94617
+ }
94618
+ },
94619
+ children: [
94620
+ text !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
94621
+ style: styles$6.extensionParentText,
94622
+ children: text
94623
+ }),
94624
+ visuals.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
94625
+ style: styles$6.extensionParentMedia,
94626
+ "aria-label": "原消息附件",
94627
+ children: visuals.map((block) => block.kind === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
94628
+ src: block.localFileRef === void 0 ? `/arkme-self/api/media?ref=${encodeURIComponent(block.mediaRef)}` : createArkmeSdk().localFileUrl(block.localFileRef),
94629
+ alt: block.fileName,
94630
+ draggable: false,
94631
+ style: styles$6.extensionParentImage
94632
+ }, block.mediaRef) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
94633
+ style: styles$6.extensionParentFile,
94634
+ children: block.fileName || "视频"
94635
+ }, block.mediaRef))
94636
+ }),
94637
+ text === "" && visuals.length === 0 && firstFile !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
94638
+ style: styles$6.extensionParentFile,
94639
+ children: firstFile.fileName || "附件"
94640
+ }) : null
94641
+ ]
94642
+ });
94643
+ }
93577
94644
  function normalizedEpochMillis(value) {
93578
94645
  return value > 0 && value < 1e11 ? value * 1e3 : value;
93579
94646
  }
@@ -93751,6 +94818,66 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93751
94818
  size: kind === "forward" ? 18 : 16
93752
94819
  });
93753
94820
  }
94821
+ function ArkmeDesktopExtensionIcon() {
94822
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
94823
+ width: "16",
94824
+ height: "16",
94825
+ viewBox: "0 0 16 16",
94826
+ fill: "none",
94827
+ "aria-hidden": true,
94828
+ "data-arkme-message-extension-icon": "desktop",
94829
+ children: [
94830
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
94831
+ cx: "8",
94832
+ cy: "2",
94833
+ r: "1.5",
94834
+ stroke: "currentColor",
94835
+ strokeLinecap: "round",
94836
+ strokeLinejoin: "round"
94837
+ }),
94838
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
94839
+ cx: "13",
94840
+ cy: "6",
94841
+ r: "1.5",
94842
+ stroke: "currentColor",
94843
+ strokeLinecap: "round",
94844
+ strokeLinejoin: "round"
94845
+ }),
94846
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
94847
+ cx: "1.5",
94848
+ cy: "10.5",
94849
+ r: "1",
94850
+ stroke: "currentColor",
94851
+ strokeLinecap: "round",
94852
+ strokeLinejoin: "round"
94853
+ }),
94854
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
94855
+ cx: "14.5",
94856
+ cy: "14.5",
94857
+ r: "1",
94858
+ stroke: "currentColor",
94859
+ strokeLinecap: "round",
94860
+ strokeLinejoin: "round"
94861
+ }),
94862
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
94863
+ cx: "8",
94864
+ cy: "10",
94865
+ r: "2.5",
94866
+ stroke: "currentColor",
94867
+ strokeLinecap: "round",
94868
+ strokeLinejoin: "round"
94869
+ }),
94870
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
94871
+ d: "M8 3.5V7.5",
94872
+ stroke: "currentColor"
94873
+ }),
94874
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
94875
+ d: "M12 7L10 8.5M13.5 14L10 11.5M2.5 10.5H5.5",
94876
+ stroke: "currentColor"
94877
+ })
94878
+ ]
94879
+ });
94880
+ }
93754
94881
  function ArkmeForwardLinearIcon({ size = 18 }) {
93755
94882
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeSelectActionIcon, {
93756
94883
  kind: "forward",
@@ -94290,6 +95417,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94290
95417
  const attachments = composerDraft.attachments;
94291
95418
  const [composerInputFocused, setComposerInputFocused] = (0, react.useState)(false);
94292
95419
  const [composerShowsInputTime, setComposerShowsInputTime] = (0, react.useState)(arkmeComposerShowsInputTime);
95420
+ const [composerExtensionTarget, setComposerExtensionTarget] = (0, react.useState)();
95421
+ const activeComposerExtensionTarget = composerExtensionTarget?.sourceRef === source?.sourceRef ? composerExtensionTarget : void 0;
95422
+ (0, react.useEffect)(() => {
95423
+ if (composerExtensionTarget !== void 0 && composerExtensionTarget.sourceRef !== source?.sourceRef) setComposerExtensionTarget(void 0);
95424
+ }, [composerExtensionTarget, source?.sourceRef]);
94293
95425
  const backgroundSoundAvailabilityRef = (0, react.useRef)({
94294
95426
  supported: backgroundSoundSupported,
94295
95427
  eligibilityReason: backgroundSoundEligibilityReason
@@ -94350,6 +95482,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94350
95482
  const panelRef = (0, react.useRef)(null);
94351
95483
  const bodyRef = (0, react.useRef)(null);
94352
95484
  const sentinelRef = (0, react.useRef)(null);
95485
+ const newerSentinelRef = (0, react.useRef)(null);
94353
95486
  const composerRef = (0, react.useRef)(null);
94354
95487
  const textareaRef = (0, react.useRef)(null);
94355
95488
  const fileInputRef = (0, react.useRef)(null);
@@ -94438,13 +95571,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94438
95571
  ]);
94439
95572
  const [timelineView, setTimelineView] = (0, react.useState)({
94440
95573
  sourceKey: "",
95574
+ mode: "latest",
95575
+ aroundSequenceRange: void 0,
94441
95576
  items: [],
94442
95577
  aiPolishNotices: [],
94443
95578
  aiPolishSettings: void 0,
94444
95579
  nextCursor: void 0,
94445
- hasMore: false
95580
+ hasMore: false,
95581
+ newerCursor: void 0,
95582
+ newerHasMore: false
94446
95583
  });
94447
- const { sourceKey: timelineStateKey, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore } = timelineView;
95584
+ const { sourceKey: timelineStateKey, mode: timelineMode, aroundSequenceRange, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore, newerCursor, newerHasMore } = timelineView;
94448
95585
  const aiPolishSettingsRef = (0, react.useRef)(aiPolishSettings);
94449
95586
  const aiPolishNoticesRef = (0, react.useRef)(aiPolishNotices);
94450
95587
  aiPolishSettingsRef.current = aiPolishSettings;
@@ -94525,11 +95662,16 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94525
95662
  const [compactNavigation, setCompactNavigation] = (0, react.useState)(false);
94526
95663
  const [submitBusy, setSubmitBusy] = (0, react.useState)(false);
94527
95664
  const [loadingOlder, setLoadingOlder] = (0, react.useState)(false);
95665
+ const [loadingNewer, setLoadingNewer] = (0, react.useState)(false);
95666
+ const newerSentinelArmedRef = (0, react.useRef)(true);
94528
95667
  const [highlightedTargetUid, setHighlightedTargetUid] = (0, react.useState)("");
94529
95668
  const conversationTargetPagingRef = (0, react.useRef)({
94530
95669
  revision: 0,
94531
- pages: 0
95670
+ pages: 0,
95671
+ aroundRequested: false
94532
95672
  });
95673
+ const conversationTargetLocatedRevisionRef = (0, react.useRef)(0);
95674
+ const conversationTargetAbortRef = (0, react.useRef)();
94533
95675
  const [error, setError] = (0, react.useState)(initialAuth?.status === "binding-required" ? t("error.binding.required") : "");
94534
95676
  const [agreed, setAgreed] = (0, react.useState)(true);
94535
95677
  const [loginMode, setLoginMode] = (0, react.useState)(initialAuth?.status === "binding-required" ? "phone" : "jiwo");
@@ -94757,6 +95899,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94757
95899
  document.removeEventListener("keydown", closeMessageMenuFromKeyboard);
94758
95900
  };
94759
95901
  }, [messageMenu]);
95902
+ (0, react.useEffect)(() => {
95903
+ if (highlightedTargetUid === "" || typeof document === "undefined") return;
95904
+ const clearHighlightedTargetFromOutside = (event) => {
95905
+ if (event.button !== 0) return;
95906
+ if (event.target?.closest?.("[data-arkme-message-item-uid]")?.getAttribute("data-arkme-message-item-uid") === highlightedTargetUid) return;
95907
+ setHighlightedTargetUid("");
95908
+ };
95909
+ document.addEventListener("pointerdown", clearHighlightedTargetFromOutside, true);
95910
+ return () => {
95911
+ document.removeEventListener("pointerdown", clearHighlightedTargetFromOutside, true);
95912
+ };
95913
+ }, [highlightedTargetUid]);
94760
95914
  const qrRequestStartedRef = (0, react.useRef)(false);
94761
95915
  const qrFlowRevisionRef = (0, react.useRef)(0);
94762
95916
  const currentJiwoAttemptRef = (0, react.useRef)();
@@ -94765,9 +95919,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94765
95919
  const confirmedSendRetention = (0, react.useMemo)(() => new ArkmeConfirmedSendRetentionOwner(), [authenticatedAccountKey]);
94766
95920
  const cacheAccountKeyRef = (0, react.useRef)();
94767
95921
  const timelineGenerationRef = (0, react.useRef)(0);
94768
- const timelineRequestAbortRef = (0, react.useRef)();
94769
- const timelineRequestKeyRef = (0, react.useRef)("");
95922
+ const timelineWindowRevisionRef = (0, react.useRef)(0);
95923
+ const timelineRequestsRef = (0, react.useRef)(/* @__PURE__ */ new Map());
94770
95924
  const pendingViewportRestoreRef = (0, react.useRef)();
95925
+ const pendingConversationTargetLocateRef = (0, react.useRef)();
94771
95926
  const interwovenRequestRef = (0, react.useRef)();
94772
95927
  const interwovenGenerationRef = (0, react.useRef)(0);
94773
95928
  const detailRequestRef = (0, react.useRef)();
@@ -94785,9 +95940,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94785
95940
  (0, react.useEffect)(() => {
94786
95941
  if (activeConversation) return;
94787
95942
  timelineGenerationRef.current += 1;
94788
- timelineRequestAbortRef.current?.abort();
94789
- timelineRequestAbortRef.current = void 0;
94790
- timelineRequestKeyRef.current = "";
95943
+ timelineWindowRevisionRef.current += 1;
95944
+ for (const request of timelineRequestsRef.current.values()) request.controller.abort();
95945
+ timelineRequestsRef.current.clear();
95946
+ conversationTargetAbortRef.current?.abort();
95947
+ conversationTargetAbortRef.current = void 0;
95948
+ pendingConversationTargetLocateRef.current = void 0;
95949
+ setHighlightedTargetUid("");
94791
95950
  interwovenGenerationRef.current += 1;
94792
95951
  interwovenRequestRef.current?.abort();
94793
95952
  interwovenRequestRef.current = void 0;
@@ -95241,19 +96400,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95241
96400
  arkmeChatDirectory.refreshRoot({ force: true }).catch(() => void 0);
95242
96401
  }
95243
96402
  }, [source]);
95244
- const loadTimeline = (0, react.useCallback)(async (cursor, preserve = false, limit = 40) => {
96403
+ const loadTimeline = (0, react.useCallback)(async (cursor, preserve = false, limit = 40, intent = cursor === void 0 ? "latest" : "pagination") => {
95245
96404
  if (source === void 0) return;
95246
96405
  const sourceRef = source.sourceRef;
95247
96406
  const sourceKey = arkmeSourceIdentityKey(source);
95248
96407
  const generation = timelineGenerationRef.current;
96408
+ if (intent === "background" && (conversationCacheRef.current.getTimeline(sourceKey)?.mode === "around" || conversationTargetAbortRef.current !== void 0 && !conversationTargetAbortRef.current.signal.aborted)) return;
96409
+ const direction = cursor === void 0 ? "initial" : (cursor.afterSequence ?? 0) > 0 ? "newer" : "older";
95249
96410
  const requestKey = `${sourceKey}:${cursor === void 0 ? "initial" : JSON.stringify(cursor)}`;
95250
- const activeController = timelineRequestAbortRef.current;
95251
- if (activeController !== void 0 && !activeController.signal.aborted && timelineRequestKeyRef.current === requestKey) return;
96411
+ const activeRequest = timelineRequestsRef.current.get(direction);
96412
+ if (activeRequest !== void 0 && !activeRequest.controller.signal.aborted && activeRequest.requestKey === requestKey) return;
96413
+ if (intent === "latest") {
96414
+ timelineWindowRevisionRef.current += 1;
96415
+ for (const [activeDirection, request] of timelineRequestsRef.current) if (activeDirection !== direction) request.controller.abort();
96416
+ }
96417
+ const windowRevision = timelineWindowRevisionRef.current;
95252
96418
  const hadCachedTimeline = conversationCacheRef.current.getTimeline(sourceKey) !== void 0;
95253
96419
  const controller = new AbortController();
95254
- timelineRequestAbortRef.current?.abort();
95255
- timelineRequestAbortRef.current = controller;
95256
- timelineRequestKeyRef.current = requestKey;
96420
+ activeRequest?.controller.abort();
96421
+ timelineRequestsRef.current.set(direction, {
96422
+ controller,
96423
+ requestKey
96424
+ });
95257
96425
  let page;
95258
96426
  try {
95259
96427
  page = await retryArkmeRead(() => callArkme("source.timeline", {
@@ -95265,23 +96433,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95265
96433
  if (isArkmeRequestAbort(caught, controller.signal)) return;
95266
96434
  throw caught;
95267
96435
  } finally {
95268
- if (timelineRequestAbortRef.current === controller) {
95269
- timelineRequestAbortRef.current = void 0;
95270
- timelineRequestKeyRef.current = "";
95271
- }
96436
+ if (timelineRequestsRef.current.get(direction)?.controller === controller) timelineRequestsRef.current.delete(direction);
95272
96437
  }
95273
- if (generation !== timelineGenerationRef.current) return;
96438
+ if (generation !== timelineGenerationRef.current || windowRevision !== timelineWindowRevisionRef.current) return;
95274
96439
  const cached = conversationCacheRef.current.getTimeline(sourceKey);
96440
+ const loadingNewerPage = (cursor?.afterSequence ?? 0) > 0;
96441
+ const cachedItemUids = new Set((cached?.items ?? []).map((item) => item.itemUid));
96442
+ const newerPageStartItemUid = loadingNewerPage ? mergeItems([], page.items.filter((item) => !cachedItemUids.has(item.itemUid)))[0]?.itemUid : void 0;
96443
+ const nextAroundSequenceRange = !(cursor === void 0 || loadingNewerPage && !page.hasMore) && (cached?.mode ?? "latest") === "around" ? arkmeConversationTimelineSequenceRange(page.items, cached?.aroundSequenceRange) : void 0;
95275
96444
  const nextAiPolishSettings = cursor === void 0 ? page.aiPolishSettings : cached?.aiPolishSettings;
95276
- const authoritativeItems = mergeItems([], page.items);
96445
+ const authoritativeItems = mergeItems(cursor === void 0 ? (cached?.items ?? []).filter((item) => item.awaitingTimelineProjection === true && !page.items.some((projected) => projected.itemUid === item.itemUid)) : [], page.items);
95277
96446
  const snapshot = {
96447
+ mode: cursor === void 0 ? "latest" : loadingNewerPage && !page.hasMore ? "latest" : cached?.mode ?? "latest",
96448
+ ...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
95278
96449
  items: cursor === void 0 ? confirmedSendRetention.merge(sourceKey, authoritativeItems) : mergeItems(cached?.items ?? [], page.items),
95279
96450
  aiPolishNotices: cursor === void 0 ? page.aiPolishNotices ?? [] : cached?.aiPolishNotices ?? [],
95280
- hasMore: page.hasMore,
96451
+ hasMore: loadingNewerPage ? cached?.hasMore ?? false : page.hasMore,
96452
+ newerHasMore: loadingNewerPage ? page.hasMore : cursor === void 0 ? false : cached?.newerHasMore ?? false,
95281
96453
  fetchedAtMillis: Date.now(),
95282
96454
  ...sourceIsChat ? { latestSequence: Math.max(source.latestSequence ?? 0, ...page.items.map((item) => item.sequence ?? 0)) } : { recordRevision: sourceProjectionRevision },
95283
96455
  ...nextAiPolishSettings === void 0 ? {} : { aiPolishSettings: nextAiPolishSettings },
95284
- ...page.nextCursor === void 0 ? {} : { nextCursor: page.nextCursor }
96456
+ ...loadingNewerPage ? cached?.nextCursor === void 0 ? {} : { nextCursor: cached.nextCursor } : page.nextCursor === void 0 ? {} : { nextCursor: page.nextCursor },
96457
+ ...loadingNewerPage ? page.nextCursor === void 0 ? {} : { newerCursor: page.nextCursor } : cursor === void 0 || cached?.newerCursor === void 0 ? {} : { newerCursor: cached.newerCursor }
95285
96458
  };
95286
96459
  const contentChanged = !arkmeConversationTimelineContentEqual(cached, snapshot);
95287
96460
  const releasedMoments = conversationCacheRef.current.storeTimeline(sourceKey, snapshot);
@@ -95290,15 +96463,20 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95290
96463
  const body = bodyRef.current;
95291
96464
  pendingViewportRestoreRef.current = {
95292
96465
  sourceKey,
95293
- viewport: preserve || hadCachedTimeline ? body === null ? conversationCacheRef.current.getViewport(sourceKey) : arkmeConversationViewport(body) : void 0
96466
+ viewport: preserve || hadCachedTimeline ? body === null ? conversationCacheRef.current.getViewport(sourceKey) : arkmeConversationViewport(body) : void 0,
96467
+ ...newerPageStartItemUid === void 0 ? {} : { newerPageStartAnchorId: `message:${newerPageStartItemUid}` }
95294
96468
  };
95295
96469
  if (contentChanged) setTimelineView({
95296
96470
  sourceKey,
96471
+ mode: snapshot.mode ?? "latest",
96472
+ aroundSequenceRange: snapshot.aroundSequenceRange,
95297
96473
  items: snapshot.items,
95298
96474
  aiPolishNotices: snapshot.aiPolishNotices,
95299
96475
  aiPolishSettings: snapshot.aiPolishSettings,
95300
96476
  nextCursor: snapshot.nextCursor,
95301
- hasMore: snapshot.hasMore
96477
+ hasMore: snapshot.hasMore,
96478
+ newerCursor: snapshot.newerCursor,
96479
+ newerHasMore: snapshot.newerHasMore ?? false
95302
96480
  });
95303
96481
  if (releasedMomentsChanged && releasedMoments !== void 0) setInterwovenMoments(releasedMoments);
95304
96482
  }
@@ -95353,25 +96531,130 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95353
96531
  const target = ui.conversationTarget;
95354
96532
  if (!activeConversation || !authenticated || source === void 0 || target === void 0 || timelineStateKey !== conversationKey) return;
95355
96533
  if (conversationTargetPagingRef.current.revision !== target.revision) {
96534
+ conversationTargetAbortRef.current?.abort();
96535
+ conversationTargetAbortRef.current = void 0;
95356
96536
  conversationTargetPagingRef.current = {
95357
96537
  revision: target.revision,
95358
- pages: 0
96538
+ pages: 0,
96539
+ aroundRequested: false
95359
96540
  };
96541
+ newerSentinelArmedRef.current = true;
96542
+ if (pendingConversationTargetLocateRef.current?.revision !== target.revision) pendingConversationTargetLocateRef.current = void 0;
95360
96543
  setHighlightedTargetUid("");
95361
96544
  }
96545
+ if (conversationTargetLocatedRevisionRef.current === target.revision) return;
95362
96546
  if (items.some((item) => item.itemUid === target.itemUid)) {
95363
- const body = bodyRef.current;
95364
- (body === null ? void 0 : [...body.querySelectorAll("[data-arkme-conversation-row]")].find((element) => element.dataset.arkmeConversationRow === target.itemUid))?.scrollIntoView({
95365
- behavior: "smooth",
95366
- block: "center"
96547
+ if (pendingConversationTargetLocateRef.current?.revision === target.revision) return;
96548
+ let animationFrame = 0;
96549
+ let remainingRenderAttempts = 3;
96550
+ const locateRenderedTarget = () => {
96551
+ const body = bodyRef.current;
96552
+ const row = body === null ? void 0 : [...body.querySelectorAll("[data-arkme-message-item-uid]")].find((element) => element.dataset.arkmeMessageItemUid === target.itemUid);
96553
+ if (body === null || row === void 0) {
96554
+ if (remainingRenderAttempts > 0) {
96555
+ remainingRenderAttempts -= 1;
96556
+ animationFrame = requestAnimationFrame(locateRenderedTarget);
96557
+ return;
96558
+ }
96559
+ if (messageActionStatusTimerRef.current !== void 0) window.clearTimeout(messageActionStatusTimerRef.current);
96560
+ setMessageActionStatus("已加载对应快记,但暂时无法定位到它");
96561
+ messageActionStatusTimerRef.current = window.setTimeout(() => {
96562
+ setMessageActionStatus("");
96563
+ messageActionStatusTimerRef.current = void 0;
96564
+ }, MESSAGE_ACTION_NOTICE_MS);
96565
+ arkmeUi.consumeConversationTarget(target.revision);
96566
+ return;
96567
+ }
96568
+ const bodyRect = body.getBoundingClientRect();
96569
+ const rowRect = row.getBoundingClientRect();
96570
+ const rowHeight = rowRect.height || rowRect.bottom - rowRect.top;
96571
+ const centeredTop = body.scrollTop + rowRect.top - bodyRect.top - (body.clientHeight - rowHeight) / 2;
96572
+ const maximumTop = Math.max(0, body.scrollHeight - body.clientHeight);
96573
+ body.scrollTo({
96574
+ top: Math.max(0, Math.min(maximumTop, centeredTop)),
96575
+ behavior: "smooth"
96576
+ });
96577
+ setHighlightedTargetUid(target.itemUid);
96578
+ conversationTargetLocatedRevisionRef.current = target.revision;
96579
+ arkmeUi.consumeConversationTarget(target.revision);
96580
+ };
96581
+ locateRenderedTarget();
96582
+ return () => {
96583
+ if (animationFrame !== 0) cancelAnimationFrame(animationFrame);
96584
+ };
96585
+ }
96586
+ if ((source.kind === "private_chat" || source.kind === "group_chat") && (target.recordOwnerUserId ?? 0) > 0 && !conversationTargetPagingRef.current.aroundRequested) {
96587
+ conversationTargetPagingRef.current.aroundRequested = true;
96588
+ const generation = timelineGenerationRef.current;
96589
+ for (const request of timelineRequestsRef.current.values()) request.controller.abort();
96590
+ timelineRequestsRef.current.clear();
96591
+ const windowRevision = ++timelineWindowRevisionRef.current;
96592
+ const controller = new AbortController();
96593
+ conversationTargetAbortRef.current?.abort();
96594
+ conversationTargetAbortRef.current = controller;
96595
+ retryArkmeRead(() => callArkme("source.timeline-around", {
96596
+ sourceRef: source.sourceRef,
96597
+ itemUid: target.itemUid,
96598
+ recordOwnerUserId: target.recordOwnerUserId,
96599
+ beforeLimit: 20,
96600
+ afterLimit: 20
96601
+ }, controller.signal), { signal: controller.signal }).then((page) => {
96602
+ if (controller.signal.aborted || generation !== timelineGenerationRef.current || windowRevision !== timelineWindowRevisionRef.current || arkmeUi.getSnapshot().conversationTarget?.revision !== target.revision) return;
96603
+ if (!page.items.some((item) => item.itemUid === target.itemUid)) throw new Error("未找到要定位的快记");
96604
+ timelineRequestsRef.current.get("initial")?.controller.abort();
96605
+ timelineRequestsRef.current.delete("initial");
96606
+ timelineWindowRevisionRef.current += 1;
96607
+ const cached = conversationCacheRef.current.getTimeline(conversationKey);
96608
+ const nextAroundSequenceRange = arkmeConversationTimelineSequenceRange(page.items);
96609
+ const snapshot = {
96610
+ mode: "around",
96611
+ ...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
96612
+ items: page.items,
96613
+ aiPolishNotices: cached?.aiPolishNotices ?? [],
96614
+ hasMore: page.olderHasMore,
96615
+ newerHasMore: page.newerHasMore,
96616
+ fetchedAtMillis: Date.now(),
96617
+ ...sourceIsChat ? { latestSequence: Math.max(page.latestKnownSequence ?? 0, ...page.items.map((item) => item.sequence ?? 0)) } : { recordRevision: sourceProjectionRevision },
96618
+ ...cached?.aiPolishSettings === void 0 ? {} : { aiPolishSettings: cached.aiPolishSettings },
96619
+ ...page.olderCursor === void 0 ? {} : { nextCursor: page.olderCursor },
96620
+ ...page.newerCursor === void 0 ? {} : { newerCursor: page.newerCursor }
96621
+ };
96622
+ conversationCacheRef.current.storeTimeline(conversationKey, snapshot);
96623
+ pendingViewportRestoreRef.current = void 0;
96624
+ pendingConversationTargetLocateRef.current = {
96625
+ sourceKey: conversationKey,
96626
+ itemUid: target.itemUid,
96627
+ revision: target.revision
96628
+ };
96629
+ setTimelineView({
96630
+ sourceKey: conversationKey,
96631
+ mode: "around",
96632
+ aroundSequenceRange: snapshot.aroundSequenceRange,
96633
+ items: snapshot.items,
96634
+ aiPolishNotices: snapshot.aiPolishNotices,
96635
+ aiPolishSettings: snapshot.aiPolishSettings,
96636
+ nextCursor: snapshot.nextCursor,
96637
+ hasMore: snapshot.hasMore,
96638
+ newerCursor: snapshot.newerCursor,
96639
+ newerHasMore: snapshot.newerHasMore ?? false
96640
+ });
96641
+ }).catch((caught) => {
96642
+ if (isArkmeRequestAbort(caught, controller.signal)) return;
96643
+ if (pendingConversationTargetLocateRef.current?.revision === target.revision) pendingConversationTargetLocateRef.current = void 0;
96644
+ const message = errorMessage$2(caught) || "暂时无法定位这条快记";
96645
+ if (messageActionStatusTimerRef.current !== void 0) window.clearTimeout(messageActionStatusTimerRef.current);
96646
+ setMessageActionStatus(message);
96647
+ messageActionStatusTimerRef.current = window.setTimeout(() => {
96648
+ setMessageActionStatus("");
96649
+ messageActionStatusTimerRef.current = void 0;
96650
+ }, MESSAGE_ACTION_NOTICE_MS);
96651
+ arkmeUi.consumeConversationTarget(target.revision);
96652
+ }).finally(() => {
96653
+ if (conversationTargetAbortRef.current === controller) conversationTargetAbortRef.current = void 0;
95367
96654
  });
95368
- setHighlightedTargetUid(target.itemUid);
95369
- window.setTimeout(() => {
95370
- setHighlightedTargetUid((current) => current === target.itemUid ? "" : current);
95371
- }, 2400);
95372
- arkmeUi.consumeConversationTarget(target.revision);
95373
96655
  return;
95374
96656
  }
96657
+ if ((target.recordOwnerUserId ?? 0) > 0) return;
95375
96658
  if (loadingOlder) return;
95376
96659
  if (!hasMore || nextCursor === void 0 || conversationTargetPagingRef.current.pages >= 80) {
95377
96660
  setError("已打开对应会话,但暂未能在当前历史中定位该条消息");
@@ -95396,6 +96679,8 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95396
96679
  loadingOlder,
95397
96680
  nextCursor,
95398
96681
  source,
96682
+ sourceIsChat,
96683
+ sourceProjectionRevision,
95399
96684
  timelineStateKey,
95400
96685
  ui.conversationTarget
95401
96686
  ]);
@@ -95408,9 +96693,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95408
96693
  ]);
95409
96694
  (0, react.useLayoutEffect)(() => {
95410
96695
  timelineGenerationRef.current += 1;
95411
- timelineRequestAbortRef.current?.abort();
95412
- timelineRequestAbortRef.current = void 0;
95413
- timelineRequestKeyRef.current = "";
96696
+ timelineWindowRevisionRef.current += 1;
96697
+ newerSentinelArmedRef.current = true;
96698
+ for (const request of timelineRequestsRef.current.values()) request.controller.abort();
96699
+ timelineRequestsRef.current.clear();
96700
+ conversationTargetAbortRef.current?.abort();
96701
+ conversationTargetAbortRef.current = void 0;
96702
+ pendingConversationTargetLocateRef.current = void 0;
96703
+ setHighlightedTargetUid("");
95414
96704
  const accountChanged = cacheAccountKeyRef.current !== authenticatedAccountKey;
95415
96705
  if (!accountChanged && timelineStateKey !== "" && bodyRef.current !== null) conversationCacheRef.current.storeViewport(timelineStateKey, arkmeConversationViewport(bodyRef.current));
95416
96706
  if (accountChanged) {
@@ -95426,11 +96716,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95426
96716
  else pendingViewportRestoreRef.current = void 0;
95427
96717
  setTimelineView({
95428
96718
  sourceKey: sourceKey ?? "",
96719
+ mode: cachedTimeline?.mode ?? "latest",
96720
+ aroundSequenceRange: cachedTimeline?.aroundSequenceRange,
95429
96721
  items: cachedTimeline?.items ?? [],
95430
96722
  aiPolishNotices: cachedTimeline?.aiPolishNotices ?? [],
95431
96723
  aiPolishSettings: cachedTimeline?.aiPolishSettings,
95432
96724
  nextCursor: cachedTimeline?.nextCursor,
95433
- hasMore: cachedTimeline?.hasMore ?? false
96725
+ hasMore: cachedTimeline?.hasMore ?? false,
96726
+ newerCursor: cachedTimeline?.newerCursor,
96727
+ newerHasMore: cachedTimeline?.newerHasMore ?? false
95434
96728
  });
95435
96729
  setTimelineLoadingKey(sourceKey !== void 0 && cachedTimeline === void 0 ? sourceKey : "");
95436
96730
  setTimelineSkeletonKey("");
@@ -95513,6 +96807,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95513
96807
  const generation = timelineGenerationRef.current;
95514
96808
  const cachedTimeline = conversationCacheRef.current.getTimeline(conversationKey);
95515
96809
  const hasCachedTimeline = cachedTimeline !== void 0;
96810
+ if (cachedTimeline?.mode === "around") {
96811
+ setTimelineLoadingKey((current) => current === conversationKey ? "" : current);
96812
+ setTimelineSkeletonKey((current) => current === conversationKey ? "" : current);
96813
+ return;
96814
+ }
95516
96815
  const authoritativeLatestSequence = Math.max(source.latestSequence ?? 0, chatDelta.latestSequence ?? 0);
95517
96816
  const realtimeCoversLatest = sourceIsChat && arkmeRealtimeDeltaCoversTimelineGap(cachedTimeline, chatDelta.items, authoritativeLatestSequence);
95518
96817
  if (!(sourceIsChat ? !realtimeCoversLatest && arkmeShouldRefreshChatTimeline(cachedTimeline, Date.now(), authoritativeLatestSequence) : arkmeShouldRefreshRecordTimeline(cachedTimeline, Date.now(), sourceProjectionRevision))) {
@@ -95521,7 +96820,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95521
96820
  acknowledgeRead(cachedTimeline?.items ?? []);
95522
96821
  return;
95523
96822
  }
95524
- loadTimeline().catch((caught) => {
96823
+ loadTimeline(void 0, false, 40, "background").catch((caught) => {
95525
96824
  arkmeChatDirectory.rejectOptimisticRead(source.sourceRef, source.sourceKey, source.latestSequence ?? 0);
95526
96825
  if (generation === timelineGenerationRef.current) {
95527
96826
  setTimelineLoadingKey((current) => current === conversationKey ? "" : current);
@@ -95545,21 +96844,29 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95545
96844
  if (!authenticated || source === void 0 || timelineStateKey !== conversationKey) return;
95546
96845
  if (conversationCacheRef.current.getTimeline(conversationKey) === void 0) return;
95547
96846
  conversationCacheRef.current.storeTimeline(conversationKey, {
96847
+ mode: timelineMode,
96848
+ ...aroundSequenceRange === void 0 ? {} : { aroundSequenceRange },
95548
96849
  items,
95549
96850
  aiPolishNotices,
95550
96851
  hasMore,
95551
96852
  ...aiPolishSettings === void 0 ? {} : { aiPolishSettings },
95552
- ...nextCursor === void 0 ? {} : { nextCursor }
96853
+ ...nextCursor === void 0 ? {} : { nextCursor },
96854
+ ...newerCursor === void 0 ? {} : { newerCursor },
96855
+ newerHasMore
95553
96856
  });
95554
96857
  }, [
95555
96858
  aiPolishNotices,
95556
96859
  aiPolishSettings,
96860
+ aroundSequenceRange,
95557
96861
  authenticated,
95558
96862
  conversationKey,
95559
96863
  hasMore,
95560
96864
  items,
96865
+ newerCursor,
96866
+ newerHasMore,
95561
96867
  nextCursor,
95562
96868
  source,
96869
+ timelineMode,
95563
96870
  timelineStateKey
95564
96871
  ]);
95565
96872
  (0, react.useEffect)(() => {
@@ -95638,8 +96945,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95638
96945
  (0, react.useEffect)(() => {
95639
96946
  if (!activeConversation || !authenticated || source === void 0) return;
95640
96947
  const deltaItems = chatDelta.items;
95641
- if (deltaItems.length === 0) return;
95642
- const nextItems = mergeItems(items, deltaItems);
96948
+ const existingIds = new Set(items.map((item) => item.itemUid));
96949
+ const applicableDeltaItems = arkmeConversationTimelineDeltaItems(timelineMode, aroundSequenceRange, items, deltaItems);
96950
+ if (applicableDeltaItems.length === 0) return;
96951
+ const nextItems = mergeItems(items, applicableDeltaItems);
95643
96952
  if (JSON.stringify(nextItems) === JSON.stringify(items)) return;
95644
96953
  const body = bodyRef.current;
95645
96954
  const viewport = body === null ? void 0 : arkmeConversationViewport(body);
@@ -95647,11 +96956,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95647
96956
  sourceKey: conversationKey,
95648
96957
  viewport
95649
96958
  };
95650
- const existingIds = new Set(items.map((item) => item.itemUid));
95651
- const incomingCount = deltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
96959
+ const incomingCount = applicableDeltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
95652
96960
  setTimelineView((current) => {
95653
96961
  if (current.sourceKey !== conversationKey) return current;
95654
- const mergedItems = mergeItems(current.items, deltaItems);
96962
+ const mergedItems = mergeItems(current.items, applicableDeltaItems);
95655
96963
  return sameStateValue(current.items, mergedItems) ? current : {
95656
96964
  ...current,
95657
96965
  items: mergedItems
@@ -95659,15 +96967,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95659
96967
  });
95660
96968
  if (viewport?.stickToBottom === false && incomingCount > 0) setNewMessageCount((current) => current + incomingCount);
95661
96969
  else setNewMessageCount(0);
95662
- acknowledgeRead(deltaItems);
96970
+ acknowledgeRead(applicableDeltaItems);
95663
96971
  }, [
95664
96972
  acknowledgeRead,
95665
96973
  activeConversation,
96974
+ aroundSequenceRange,
95666
96975
  authenticated,
95667
96976
  chatDelta,
95668
96977
  conversationKey,
95669
96978
  items,
95670
- source
96979
+ source,
96980
+ timelineMode
95671
96981
  ]);
95672
96982
  (0, react.useEffect)(() => {
95673
96983
  if (!activeConversation || !authenticated || source?.kind !== "group_chat") return;
@@ -95759,6 +97069,38 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95759
97069
  loadingOlder,
95760
97070
  nextCursor
95761
97071
  ]);
97072
+ (0, react.useEffect)(() => {
97073
+ const root = bodyRef.current;
97074
+ const sentinel = newerSentinelRef.current;
97075
+ if (!authenticated || root === null || sentinel === null || !newerHasMore || newerCursor === void 0) return;
97076
+ const observer = new IntersectionObserver((entries) => {
97077
+ if (entries[0]?.isIntersecting !== true) {
97078
+ newerSentinelArmedRef.current = true;
97079
+ return;
97080
+ }
97081
+ if (!newerSentinelArmedRef.current || loadingNewer) return;
97082
+ newerSentinelArmedRef.current = false;
97083
+ setLoadingNewer(true);
97084
+ loadTimeline(newerCursor, true).catch((caught) => {
97085
+ setError(errorMessage$2(caught));
97086
+ }).finally(() => {
97087
+ setLoadingNewer(false);
97088
+ });
97089
+ }, {
97090
+ root,
97091
+ rootMargin: "0px 0px 120px"
97092
+ });
97093
+ observer.observe(sentinel);
97094
+ return () => {
97095
+ observer.disconnect();
97096
+ };
97097
+ }, [
97098
+ authenticated,
97099
+ loadTimeline,
97100
+ loadingNewer,
97101
+ newerCursor,
97102
+ newerHasMore
97103
+ ]);
95762
97104
  (0, react.useEffect)(() => {
95763
97105
  if (smsCountdown <= 0) return;
95764
97106
  const timer = setTimeout(() => {
@@ -96061,6 +97403,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96061
97403
  const send = async () => {
96062
97404
  if (source === void 0 || composerDraftKey === void 0) return;
96063
97405
  const targetSource = source;
97406
+ const extensionTarget = activeComposerExtensionTarget;
96064
97407
  const targetDraftKey = composerDraftKey;
96065
97408
  const targetUserId = authenticatedUserId;
96066
97409
  const targetAccountKey = authenticatedAccountKey;
@@ -96085,8 +97428,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96085
97428
  state: "failed",
96086
97429
  message: errorMessage$2(caught) || "位置采集失败,请稍后重试"
96087
97430
  })) : Promise.resolve({ state: "disabled" });
96088
- const { recordUid, relationUid } = arkmeComposerDraftStore.beginFileSend(targetDraftKey);
97431
+ const { recordUid, relationUid } = arkmeComposerDraftStore.beginFileSend(targetDraftKey, extensionTarget === void 0 ? void 0 : JSON.stringify([
97432
+ "source-message-extension",
97433
+ targetSource.sourceRef,
97434
+ arkmeTimelineMessageActionRef(extensionTarget.item)
97435
+ ]));
96089
97436
  const pendingDraft = arkmeComposerDraftStore.take(targetDraftKey);
97437
+ const pendingAttachments = [...pendingDraft.attachments];
97438
+ const pendingAssets = pendingAttachments.flatMap((attachment) => attachment.asset === void 0 ? [] : [attachment.asset]);
97439
+ const pendingFileRefs = pendingAttachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
96090
97440
  pendingComposerFocusDraftKeyRef.current = targetDraftKey;
96091
97441
  let inputCapture;
96092
97442
  try {
@@ -96120,11 +97470,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96120
97470
  state: "polishing",
96121
97471
  originalText: textContent
96122
97472
  } } : {},
97473
+ ...extensionTarget === void 0 ? {} : {
97474
+ extensionParentRecordUid: extensionTarget.item.itemUid,
97475
+ extensionParent: {
97476
+ itemUid: extensionTarget.item.itemUid,
97477
+ senderName: extensionTarget.item.senderName,
97478
+ title: extensionTarget.item.title,
97479
+ textContent: extensionTarget.item.textContent,
97480
+ ...extensionTarget.item.contentBlocks === void 0 ? {} : { contentBlocks: extensionTarget.item.contentBlocks }
97481
+ },
97482
+ contentBlocks: pendingAttachments.flatMap((attachment, index) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile, index)])
97483
+ },
96123
97484
  displayKind: 0
96124
97485
  };
96125
- const pendingAttachments = [...pendingDraft.attachments];
96126
- const pendingAssets = pendingAttachments.flatMap((attachment) => attachment.asset === void 0 ? [] : [attachment.asset]);
96127
- const pendingFileRefs = pendingAttachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
96128
97486
  if (sameTargetComposer()) pendingViewportRestoreRef.current = {
96129
97487
  sourceKey: arkmeSourceIdentityKey(targetSource),
96130
97488
  viewport: void 0
@@ -96151,11 +97509,52 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96151
97509
  length: mention.length
96152
97510
  }];
96153
97511
  });
96154
- if (pendingFileRefs.length === 0 && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
97512
+ if ((extensionTarget !== void 0 || pendingFileRefs.length === 0) && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
96155
97513
  if (sameTargetComposer()) setError("");
96156
97514
  let durableFileSendUncertain = false;
96157
97515
  let stagedBackgroundFileRefs = [];
96158
97516
  try {
97517
+ if (extensionTarget !== void 0) {
97518
+ if (pendingAssets.length > 0) throw new Error("请重新添加本地附件后再延展");
97519
+ const result = await callArkme("source.message-extension.extend", {
97520
+ sourceRef: targetSource.sourceRef,
97521
+ messageActionRef: arkmeTimelineMessageActionRef(extensionTarget.item),
97522
+ textContent,
97523
+ recordUid,
97524
+ relationUid,
97525
+ fileRefs: pendingFileRefs
97526
+ });
97527
+ if (!sameTargetAccount()) throw new Error("账号已切换,本次延展结果已丢弃");
97528
+ const applyExtensionResult = (current) => applySourceSendResult(current, recordUid, {
97529
+ sourceRef: targetSource.sourceRef,
97530
+ itemUid: result.recordUid,
97531
+ status: result.status,
97532
+ localState: result.localState,
97533
+ ...result.sequence === void 0 ? {} : { sequence: result.sequence }
97534
+ }).map((item) => item.itemUid === result.recordUid ? {
97535
+ ...item,
97536
+ awaitingTimelineProjection: true
97537
+ } : item);
97538
+ if (sameTargetComposer()) setItems(applyExtensionResult);
97539
+ const targetSourceKey = arkmeSourceIdentityKey(targetSource);
97540
+ const cachedTimeline = conversationCacheRef.current.getTimeline(targetSourceKey);
97541
+ if (cachedTimeline !== void 0) conversationCacheRef.current.storeTimeline(targetSourceKey, {
97542
+ ...cachedTimeline,
97543
+ items: applyExtensionResult(mergeItems(cachedTimeline.items, [optimistic])),
97544
+ ...result.sequence === void 0 ? {} : { latestSequence: Math.max(cachedTimeline.latestSequence ?? 0, result.sequence) }
97545
+ });
97546
+ if (result.sequence !== void 0) arkmeChatDirectory.upsert({
97547
+ ...targetSource,
97548
+ latestPreview: textContent || "非文本内容",
97549
+ activeAtMillis: now,
97550
+ latestSequence: result.sequence
97551
+ }, targetSource.sourceKey);
97552
+ await Promise.allSettled(pendingFileRefs.map((fileRef) => callArkme("files.local.remove", { fileRef })));
97553
+ releaseArkmeComposerDraft(pendingDraft);
97554
+ if (sameTargetComposer()) setComposerExtensionTarget((current) => current?.sourceRef === extensionTarget.sourceRef && current.item.itemUid === extensionTarget.item.itemUid ? void 0 : current);
97555
+ arkmeUi.chatChanged();
97556
+ return;
97557
+ }
96159
97558
  if (pendingFileRefs.length > 0 && pendingAssets.length > 0) throw new Error("旧版附件与本地附件不能混合发送,请重新添加旧版附件");
96160
97559
  const sdk = createArkmeSdk();
96161
97560
  const allCapturedSegments = [...inputCapture.backgroundSound.segments];
@@ -96433,6 +97832,59 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96433
97832
  };
96434
97833
  const detailItem = items.find((item) => item.itemUid === detailItemUid);
96435
97834
  const detailSharedRecording = detailItem === void 0 ? void 0 : arkmeRelatedRecordingItemFromSharedRecording(detailItem);
97835
+ const acceptDetailExtension = (0, react.useCallback)((result) => {
97836
+ const targetSource = source;
97837
+ const targetSourceKey = targetSource === void 0 ? "" : arkmeSourceIdentityKey(targetSource);
97838
+ const parent = items.find((item) => item.itemUid === detailItemUid);
97839
+ if (targetSource === void 0 || parent === void 0 || result.parentRecordUid !== parent.itemUid || activeSourceKeyRef.current !== targetSourceKey) return;
97840
+ const projected = detailExtensionTimelineItem(parent, result);
97841
+ const applyProjection = (current) => mergeItems(current, [projected]);
97842
+ pendingViewportRestoreRef.current = {
97843
+ sourceKey: targetSourceKey,
97844
+ viewport: void 0
97845
+ };
97846
+ setItems(applyProjection);
97847
+ const cachedTimeline = conversationCacheRef.current.getTimeline(targetSourceKey);
97848
+ const projectedAiPolishSettings = cachedTimeline?.aiPolishSettings ?? aiPolishSettings;
97849
+ const projectedNextCursor = cachedTimeline?.nextCursor ?? nextCursor;
97850
+ const projectedNewerCursor = cachedTimeline?.newerCursor ?? newerCursor;
97851
+ conversationCacheRef.current.storeTimeline(targetSourceKey, {
97852
+ items: applyProjection(cachedTimeline?.items ?? items),
97853
+ aiPolishNotices: cachedTimeline?.aiPolishNotices ?? aiPolishNotices,
97854
+ hasMore: cachedTimeline?.hasMore ?? hasMore,
97855
+ ...projectedAiPolishSettings === void 0 ? {} : { aiPolishSettings: projectedAiPolishSettings },
97856
+ ...projectedNextCursor === void 0 ? {} : { nextCursor: projectedNextCursor },
97857
+ ...projectedNewerCursor === void 0 ? {} : { newerCursor: projectedNewerCursor },
97858
+ newerHasMore: cachedTimeline?.newerHasMore ?? newerHasMore,
97859
+ latestSequence: Math.max(cachedTimeline?.latestSequence ?? 0, result.sequence ?? 0),
97860
+ fetchedAtMillis: cachedTimeline?.fetchedAtMillis ?? Date.now(),
97861
+ ...!sourceIsChat ? { recordRevision: cachedTimeline?.recordRevision ?? sourceProjectionRevision } : {}
97862
+ });
97863
+ const latestPreview = extensionConversationPreview(result.extension);
97864
+ if (result.sequence !== void 0 && isArkmeChatDirectorySource(targetSource)) arkmeChatDirectory.upsert({
97865
+ ...targetSource,
97866
+ latestPreview,
97867
+ activeAtMillis: result.extension.sendAtMillis,
97868
+ latestSequence: result.sequence
97869
+ }, targetSource.sourceKey);
97870
+ arkmeUi.chatChanged();
97871
+ loadTimeline(void 0, true).catch((caught) => {
97872
+ if (activeSourceKeyRef.current === targetSourceKey) setError(errorMessage$2(caught));
97873
+ });
97874
+ }, [
97875
+ aiPolishNotices,
97876
+ aiPolishSettings,
97877
+ detailItemUid,
97878
+ hasMore,
97879
+ items,
97880
+ loadTimeline,
97881
+ newerCursor,
97882
+ newerHasMore,
97883
+ nextCursor,
97884
+ source,
97885
+ sourceIsChat,
97886
+ sourceProjectionRevision
97887
+ ]);
96436
97888
  const activateSource = (0, react.useCallback)((nextSource) => {
96437
97889
  if (isArkmeChatDirectorySource(nextSource)) arkmeChatDirectory.upsert(nextSource);
96438
97890
  arkmeUi.selectSource(nextSource);
@@ -96832,6 +98284,27 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96832
98284
  interwovenMoments,
96833
98285
  visibleConversationJoinEvents
96834
98286
  ]);
98287
+ (0, react.useLayoutEffect)(() => {
98288
+ const pending = pendingConversationTargetLocateRef.current;
98289
+ const body = bodyRef.current;
98290
+ if (pending === void 0 || body === null || pending.sourceKey !== timelineStateKey) return;
98291
+ const row = [...body.querySelectorAll("[data-arkme-message-item-uid]")].find((element) => element.dataset.arkmeMessageItemUid === pending.itemUid);
98292
+ if (row === void 0) return;
98293
+ const bodyRect = body.getBoundingClientRect();
98294
+ const rowRect = row.getBoundingClientRect();
98295
+ const rowHeight = rowRect.height || rowRect.bottom - rowRect.top;
98296
+ const centeredTop = body.scrollTop + rowRect.top - bodyRect.top - (body.clientHeight - rowHeight) / 2;
98297
+ const maximumTop = Math.max(0, body.scrollHeight - body.clientHeight);
98298
+ pendingConversationTargetLocateRef.current = void 0;
98299
+ pendingViewportRestoreRef.current = void 0;
98300
+ body.scrollTo({
98301
+ top: Math.max(0, Math.min(maximumTop, centeredTop)),
98302
+ behavior: "auto"
98303
+ });
98304
+ setHighlightedTargetUid(pending.itemUid);
98305
+ conversationTargetLocatedRevisionRef.current = pending.revision;
98306
+ arkmeUi.consumeConversationTarget(pending.revision);
98307
+ }, [displayRows, timelineStateKey]);
96835
98308
  const activeSelectMode = selectMode?.sourceKey === conversationKey ? selectMode : void 0;
96836
98309
  const selectedMessageItems = (0, react.useMemo)(() => activeSelectMode === void 0 ? [] : arkmeSelectedTimelineItems(displayItems, activeSelectMode.selectedIds), [activeSelectMode, displayItems]);
96837
98310
  const selectedMessageCount = activeSelectMode?.selectedIds.size ?? 0;
@@ -96877,6 +98350,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96877
98350
  const closeMessageMenu = (0, react.useCallback)(() => {
96878
98351
  setMessageMenu(void 0);
96879
98352
  }, []);
98353
+ const startMessageExtension = (0, react.useCallback)((item) => {
98354
+ const actionRef = arkmeTimelineMessageActionRef(item);
98355
+ closeMessageMenu();
98356
+ if (source === void 0 || actionRef === "") return;
98357
+ setComposerExtensionTarget({
98358
+ sourceRef: source.sourceRef,
98359
+ item
98360
+ });
98361
+ setDrawer(void 0);
98362
+ requestAnimationFrame(() => {
98363
+ textareaRef.current?.focus();
98364
+ });
98365
+ }, [closeMessageMenu, source]);
96880
98366
  const closeMessageSnapshot = (0, react.useCallback)(() => {
96881
98367
  snapshotRequestRef.current?.abort();
96882
98368
  snapshotRequestRef.current = void 0;
@@ -97394,11 +98880,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97394
98880
  const body = bodyRef.current;
97395
98881
  if (pending === void 0 || body === null || pending.sourceKey !== timelineStateKey) return;
97396
98882
  const anchorOffset = arkmeConversationAnchorOffset(body, pending.viewport?.anchorId);
97397
- body.scrollTop = arkmeConversationRestoredScrollTop(pending.viewport, {
98883
+ const newerPageStartOffset = arkmeConversationAnchorOffset(body, pending.newerPageStartAnchorId);
98884
+ const maximumScrollTop = Math.max(0, body.scrollHeight - body.clientHeight);
98885
+ body.scrollTop = pending.newerPageStartAnchorId === void 0 ? arkmeConversationRestoredScrollTop(pending.viewport, {
97398
98886
  currentScrollTop: body.scrollTop,
97399
98887
  scrollHeight: body.scrollHeight,
97400
98888
  ...anchorOffset === void 0 ? {} : { anchorOffset }
97401
- });
98889
+ }) : Math.max(0, Math.min(maximumScrollTop, newerPageStartOffset === void 0 ? pending.viewport?.scrollTop ?? body.scrollTop : body.scrollTop + newerPageStartOffset));
97402
98890
  conversationCacheRef.current.storeViewport(pending.sourceKey, arkmeConversationViewport(body));
97403
98891
  pendingViewportRestoreRef.current = void 0;
97404
98892
  }, [
@@ -97429,6 +98917,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97429
98917
  const utilityContentVisible = authView === "content" && (ui.mode === "recordings" || ui.mode === "world" || ui.mode === "search" || ui.mode === "extensions" || ui.mode === "voiceprint" || ui.mode === "calls");
97430
98918
  const conversationOverlayHost = panelRef.current;
97431
98919
  const composerPlaceholder = arkmeComposerPlaceholderText(arkmeComposerPlaceholderTargetForSource(selectedSource, conversationMembers.length));
98920
+ const effectiveComposerPlaceholder = activeComposerExtensionTarget === void 0 ? composerPlaceholder : `发送到「${source?.displayName ?? ""}」…`;
97432
98921
  const localNotificationBlockingOverlayOpen = addMenuOpen || longArticleCreating || groupMembersOpen || drawer !== void 0 || selectedMoment !== void 0 || relatedMenuOpen || relatedPanelOpen || relatedDetail !== void 0 || memberMenu !== void 0 || messageMenu !== void 0 || snapshot !== void 0 || messageReportItem !== void 0 || memberProfile !== void 0 || memberRecords !== void 0 || forwardTargetPicker !== void 0;
97433
98922
  (0, react.useLayoutEffect)(() => {
97434
98923
  const target = notificationActivation.source;
@@ -97918,6 +99407,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97918
99407
  const isForwardMessageCard = item.forwardRecords !== void 0;
97919
99408
  const isSharedRecordingCard = item.sharedRecording !== void 0;
97920
99409
  const isStructuredMessageCard = isForwardMessageCard || isSharedRecordingCard;
99410
+ const isExtensionMessage = !isSharedRecordingCard && item.extensionParent !== void 0;
99411
+ const messageAvatar = showMessageAvatars && !isSharedRecordingCard ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageAvatar, {
99412
+ ...avatarRef === void 0 ? {} : { avatarRef },
99413
+ ...messageMember === void 0 ? {} : { member: messageMember },
99414
+ profileEnabled: source?.kind === "group_chat",
99415
+ onOpen: openMemberProfile,
99416
+ onContextMenu: openMemberMenu
99417
+ }) : null;
97921
99418
  const selectionAnchor = arkmeMessageSelectionAnchor(item);
97922
99419
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [startsDay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
97923
99420
  style: styles$6.date,
@@ -97939,41 +99436,40 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97939
99436
  event.stopPropagation();
97940
99437
  toggleSelectedMessage(item);
97941
99438
  },
97942
- children: [activeSelectMode !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageSelectionControl, {
97943
- anchor: selectionAnchor,
97944
- checked: selectedForAction,
97945
- disabled: !canUseMessageAction,
97946
- onToggle: () => {
97947
- toggleSelectedMessage(item);
97948
- }
97949
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97950
- style: {
97951
- ...styles$6.messageLine,
97952
- ...activeSelectMode !== void 0 && selectionAnchor === "avatar" ? styles$6.messageLineSelectAvatarMode : {},
97953
- ...item.isMe && !isSharedRecordingCard ? styles$6.messageLineMe : {},
97954
- ...isForwardMessageCard ? styles$6.forwardMessageLine : {},
97955
- ...isSharedRecordingCard ? styles$6.sharedRecordingMessageLine : {},
97956
- ...activeSelectMode !== void 0 && selectionAnchor === "card-center" ? styles$6.messageLineSelectCardCenterMode : {}
97957
- },
97958
- children: [showMessageAvatars && !isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageAvatar, {
97959
- ...avatarRef === void 0 ? {} : { avatarRef },
97960
- ...messageMember === void 0 ? {} : { member: messageMember },
97961
- profileEnabled: source?.kind === "group_chat",
97962
- onOpen: openMemberProfile,
97963
- onContextMenu: openMemberMenu
97964
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99439
+ children: [
99440
+ highlightedTargetUid === item.itemUid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99441
+ "aria-hidden": "true",
99442
+ "data-arkme-highlight-backdrop": "true",
99443
+ style: styles$6.rowSearchTargetBackdrop
99444
+ }),
99445
+ activeSelectMode !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageSelectionControl, {
99446
+ anchor: selectionAnchor,
99447
+ checked: selectedForAction,
99448
+ disabled: !canUseMessageAction,
99449
+ onToggle: () => {
99450
+ toggleSelectedMessage(item);
99451
+ }
99452
+ }),
99453
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97965
99454
  style: {
97966
- ...styles$6.messageBody,
97967
- ...item.isMe && !isSharedRecordingCard ? styles$6.messageBodyMe : {},
97968
- ...isForwardMessageCard ? styles$6.forwardMessageBody : {},
97969
- ...isSharedRecordingCard ? styles$6.sharedRecordingMessageBody : {}
99455
+ ...styles$6.messageLine,
99456
+ ...activeSelectMode !== void 0 && selectionAnchor === "avatar" ? styles$6.messageLineSelectAvatarMode : {},
99457
+ ...item.isMe && !isSharedRecordingCard ? styles$6.messageLineMe : {},
99458
+ ...isForwardMessageCard ? styles$6.forwardMessageLine : {},
99459
+ ...isSharedRecordingCard ? styles$6.sharedRecordingMessageLine : {},
99460
+ ...activeSelectMode !== void 0 && selectionAnchor === "card-center" ? styles$6.messageLineSelectCardCenterMode : {}
97970
99461
  },
97971
- children: [
97972
- !isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineMessageHeader, {
99462
+ children: [!isExtensionMessage && messageAvatar, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99463
+ style: {
99464
+ ...styles$6.messageBody,
99465
+ ...item.isMe && !isSharedRecordingCard ? styles$6.messageBodyMe : {},
99466
+ ...isForwardMessageCard ? styles$6.forwardMessageBody : {},
99467
+ ...isSharedRecordingCard ? styles$6.sharedRecordingMessageBody : {}
99468
+ },
99469
+ children: [!isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineMessageHeader, {
97973
99470
  item,
97974
99471
  ...selfProfile === void 0 ? {} : { profile: selfProfile }
97975
- }),
97976
- (() => {
99472
+ }), (() => {
97977
99473
  const messageBubble = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97978
99474
  role: "button",
97979
99475
  tabIndex: 0,
@@ -98075,23 +99571,55 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98075
99571
  }, task.taskRef))
98076
99572
  ]
98077
99573
  });
98078
- return isSharedRecordingCard ? messageBubble : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageReadReceiptLine, {
99574
+ const messageContentLine = isSharedRecordingCard ? messageBubble : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageReadReceiptLine, {
98079
99575
  source,
98080
99576
  item,
98081
99577
  wide: isStructuredMessageCard,
98082
99578
  children: messageBubble
98083
99579
  }, `read-receipt:${conversationOverlayKey}`);
98084
- })(),
98085
- selfTopicSource !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineSelfTopicBadge, {
98086
- topic: selfTopicSource,
98087
- onSelect: activateSelfSource
98088
- })
98089
- ]
98090
- })]
98091
- })]
99580
+ const topicBadge = selfTopicSource === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineSelfTopicBadge, {
99581
+ topic: selfTopicSource,
99582
+ onSelect: activateSelfSource
99583
+ });
99584
+ if (!isExtensionMessage || item.extensionParent === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [messageContentLine, topicBadge] });
99585
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99586
+ "data-arkme-extension-message-cluster": "true",
99587
+ style: {
99588
+ ...styles$6.extensionMessageGroup,
99589
+ ...item.isMe ? styles$6.extensionMessageGroupMe : {}
99590
+ },
99591
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeExtensionParentPreview, {
99592
+ parent: item.extensionParent,
99593
+ isMe: item.isMe,
99594
+ onSelect: () => {
99595
+ arkmeUi.showConversationTarget(source, item.extensionParent?.itemUid ?? "", item.extensionParent?.sendAtMillis ?? 0, item.extensionParent?.recordOwnerUserId);
99596
+ }
99597
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99598
+ "data-arkme-extension-child-line": "true",
99599
+ style: {
99600
+ ...styles$6.extensionChildLine,
99601
+ ...item.isMe ? styles$6.extensionChildLineMe : {}
99602
+ },
99603
+ children: [messageAvatar, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99604
+ style: {
99605
+ ...styles$6.extensionChildBody,
99606
+ ...item.isMe ? styles$6.extensionChildBodyMe : {}
99607
+ },
99608
+ children: [messageContentLine, topicBadge]
99609
+ })]
99610
+ })]
99611
+ });
99612
+ })()]
99613
+ })]
99614
+ })
99615
+ ]
98092
99616
  })] }, row.id);
98093
99617
  })
98094
99618
  }),
99619
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99620
+ ref: newerSentinelRef,
99621
+ style: styles$6.sentinel
99622
+ }),
98095
99623
  newMessageCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98096
99624
  type: "button",
98097
99625
  style: styles$6.newMessages,
@@ -98253,285 +99781,345 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98253
99781
  },
98254
99782
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98255
99783
  style: styles$6.composerStack,
98256
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98257
- ref: composerRef,
98258
- className: "arkme-conversation-composer-inner",
98259
- style: styles$6.composerInner,
98260
- children: [
98261
- addMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98262
- ref: addMenuRef,
98263
- style: styles$6.addMenu,
98264
- role: "menu",
98265
- children: [
98266
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98267
- type: "button",
98268
- role: "menuitem",
98269
- style: styles$6.addMenuItem,
98270
- onClick: () => {
98271
- setAddMenuOpen(false);
98272
- fileInputRef.current?.click();
98273
- },
98274
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98275
- "aria-hidden": true,
98276
- children: "📎"
98277
- }), "添加照片和文件"]
98278
- }),
98279
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { style: styles$6.menuDivider }),
98280
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98281
- type: "button",
98282
- role: "menuitem",
98283
- style: styles$6.addMenuItem,
98284
- onClick: () => {
98285
- setLongArticleCreating(true);
98286
- setAddMenuOpen(false);
98287
- },
98288
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98289
- "aria-hidden": true,
98290
- children: ""
98291
- }), "写长文"]
98292
- })
98293
- ]
98294
- }),
98295
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
98296
- ref: fileInputRef,
98297
- type: "file",
98298
- multiple: true,
98299
- hidden: true,
98300
- onChange: (event) => {
98301
- selectFiles(event.currentTarget.files);
98302
- }
98303
- }),
98304
- attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
98305
- attachments,
98306
- disabled: preparingFiles,
98307
- onMove: (from, to) => arkmeComposerDraftStore.moveAttachment(composerDraftKey, from, to),
98308
- onPreview: (attachment) => {
98309
- if (attachment.localFile !== void 0) setDraftPreview(localFileBlock(attachment.localFile));
99784
+ children: [
99785
+ activeComposerExtensionTarget !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99786
+ style: styles$6.composerDestinationHint,
99787
+ "data-arkme-composer-destination-hint": "true",
99788
+ children: [
99789
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99790
+ style: styles$6.composerDestinationHintIcon,
99791
+ "aria-hidden": true,
99792
+ children: "💡"
99793
+ }),
99794
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "正在给 " }),
99795
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99796
+ style: styles$6.composerDestinationHintName,
99797
+ children: arkmeSourceDestinationLabel(source)
99798
+ }),
99799
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: " 发消息" })
99800
+ ]
99801
+ }),
99802
+ activeComposerExtensionTarget !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99803
+ style: styles$6.composerExtensionTarget,
99804
+ "data-arkme-composer-extension-target": "true",
99805
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99806
+ style: styles$6.composerExtensionTargetBody,
99807
+ children: [(activeComposerExtensionTarget.item.textContent.trim() || activeComposerExtensionTarget.item.title.trim()) !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99808
+ style: styles$6.composerExtensionTargetText,
99809
+ children: activeComposerExtensionTarget.item.textContent.trim() || activeComposerExtensionTarget.item.title.trim()
99810
+ }), (activeComposerExtensionTarget.item.contentBlocks?.length ?? 0) > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99811
+ style: styles$6.composerExtensionTargetFiles,
99812
+ children: activeComposerExtensionTarget.item.contentBlocks?.slice(0, 3).map((block, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99813
+ style: styles$6.composerExtensionTargetFile,
99814
+ title: block.fileName || "附件",
99815
+ children: block.kind === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
99816
+ style: styles$6.composerExtensionTargetImage,
99817
+ src: createArkmeSdk().mediaUrl(block.mediaRef),
99818
+ alt: block.fileName || "图片附件"
99819
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99820
+ hidden: true,
99821
+ children: block.fileName || "附件"
99822
+ })] }) : block.fileName || "附件"
99823
+ }, `${block.mediaRef}:${String(index)}`))
99824
+ })]
99825
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
99826
+ type: "button",
99827
+ style: styles$6.composerExtensionTargetCancel,
99828
+ "aria-label": "取消延展",
99829
+ onClick: () => {
99830
+ setComposerExtensionTarget(void 0);
99831
+ textareaRef.current?.focus();
98310
99832
  },
98311
- onRemove: (attachment) => {
98312
- arkmeComposerDraftStore.removeAttachment(composerDraftKey, arkmeAttachmentId(attachment));
98313
- if (attachment.localFile !== void 0) callArkme("files.local.remove", { fileRef: attachment.localFile.fileRef }).catch((caught) => setError(errorMessage$2(caught)));
98314
- }
98315
- }),
98316
- activeConversation && draftPreview !== void 0 && typeof document !== "undefined" && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMediaPreview, {
98317
- selected: draftPreview,
98318
- blocks: attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile)]),
98319
- onSelect: setDraftPreview,
98320
- onClose: () => setDraftPreview(void 0),
98321
- openLocalFile: false
98322
- }), document.body),
98323
- mentionTrigger !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98324
- style: styles$6.mentionSuggestions,
98325
- role: "listbox",
98326
- "aria-label": "选择要 @ 的对象",
98327
- children: mentionCandidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98328
- style: styles$6.mentionSuggestionsEmpty,
98329
- children: "暂无可 @ 的对象"
98330
- }) : mentionCandidates.map((member, index) => {
98331
- const primary = arkmeMentionCandidatePrimaryText(member);
98332
- const secondary = member.kind === "bot" ? (member.secondaryName ?? "Bot").trim() : "";
98333
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98334
- type: "button",
98335
- role: "option",
98336
- "aria-selected": index === mentionCandidateIndex,
98337
- style: {
98338
- ...styles$6.mentionSuggestionRow,
98339
- ...index === mentionCandidateIndex ? styles$6.mentionSuggestionRowActive : {}
98340
- },
98341
- onMouseEnter: () => {
98342
- setMentionCandidateIndex(index);
98343
- },
98344
- onMouseDown: (event) => {
98345
- event.preventDefault();
98346
- insertMentionCandidate(member);
98347
- },
98348
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98349
- style: styles$6.mentionSuggestionAvatar,
98350
- "aria-hidden": true,
98351
- children: member.kind === "bot" ? member.avatarRef === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98352
- style: styles$6.mentionSuggestionBotAvatar,
98353
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(t$5, {
98354
- size: 14,
98355
- weight: "fill"
98356
- })
98357
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
98358
- avatarRef: member.avatarRef,
98359
- size: 28,
98360
- label: member.displayName
98361
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
98362
- ...member.kind === "member" && member.avatarRef !== void 0 ? { avatarRef: member.avatarRef } : {},
98363
- size: 28,
98364
- label: member.displayName
98365
- })
98366
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
98367
- style: styles$6.mentionSuggestionText,
99833
+ children: "×"
99834
+ })]
99835
+ }),
99836
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99837
+ ref: composerRef,
99838
+ className: "arkme-conversation-composer-inner",
99839
+ "data-arkme-primary-composer": "true",
99840
+ "data-arkme-composer-focused": composerInputFocused ? "true" : "false",
99841
+ style: {
99842
+ ...styles$6.composerInner,
99843
+ ...composerInputFocused ? styles$6.composerInnerFocused : {},
99844
+ ...activeComposerExtensionTarget === void 0 ? {} : styles$6.composerInnerExtension
99845
+ },
99846
+ children: [
99847
+ addMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
99848
+ ref: addMenuRef,
99849
+ style: styles$6.addMenu,
99850
+ role: "menu",
99851
+ children: [
99852
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
99853
+ type: "button",
99854
+ role: "menuitem",
99855
+ style: styles$6.addMenuItem,
99856
+ onClick: () => {
99857
+ setAddMenuOpen(false);
99858
+ fileInputRef.current?.click();
99859
+ },
98368
99860
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98369
- style: styles$6.mentionSuggestionName,
98370
- children: primary
98371
- }), secondary !== "" && secondary !== member.displayName ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98372
- style: styles$6.mentionSuggestionSecondary,
98373
- children: secondary
98374
- }) : null]
98375
- })]
98376
- }, member.kind === "all" ? "all" : member.kind === "bot" ? `bot:${member.botRef}` : `member:${member.mentionRef}`);
98377
- })
98378
- }),
98379
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRichComposerInput, {
98380
- className: "arkme-conversation-textarea",
98381
- ref: textareaRef,
98382
- style: styles$6.textarea,
98383
- value: draft,
98384
- mentions: composerDraft.mentions,
98385
- emojis: composerDraft.emojis,
98386
- maxLength: 2e4,
98387
- placeholder: composerPlaceholder,
98388
- ariaLabel: composerPlaceholder,
98389
- disabled: preparingFiles,
98390
- onTextChange: updateComposerText,
98391
- onFocus: () => {
98392
- setComposerInputFocused(true);
98393
- },
98394
- onBlur: () => {
98395
- setComposerInputFocused(false);
98396
- },
98397
- onSelectionChange: updateMentionTrigger,
98398
- onPaste: (event) => {
98399
- const files = arkmeClipboardFiles(event.clipboardData);
98400
- if (files.length === 0) return;
98401
- event.preventDefault();
98402
- selectFiles(files);
98403
- },
98404
- onKeyDown: (event) => {
98405
- if (mentionTrigger !== void 0) {
98406
- if (event.key === "Escape") {
98407
- event.preventDefault();
98408
- setMentionTrigger(void 0);
98409
- return;
98410
- }
98411
- if (event.key === "ArrowDown" && mentionCandidates.length > 0) {
98412
- event.preventDefault();
98413
- setMentionCandidateIndex((index) => (index + 1) % mentionCandidates.length);
98414
- return;
98415
- }
98416
- if (event.key === "ArrowUp" && mentionCandidates.length > 0) {
98417
- event.preventDefault();
98418
- setMentionCandidateIndex((index) => (index + mentionCandidates.length - 1) % mentionCandidates.length);
98419
- return;
98420
- }
98421
- if ((event.key === "Enter" || event.key === "Tab") && mentionCandidates.length > 0) {
98422
- event.preventDefault();
98423
- const selectedCandidate = mentionCandidates[Math.min(mentionCandidateIndex, mentionCandidates.length - 1)];
98424
- if (selectedCandidate !== void 0) insertMentionCandidate(selectedCandidate);
98425
- return;
98426
- }
99861
+ "aria-hidden": true,
99862
+ children: "📎"
99863
+ }), "添加照片和文件"]
99864
+ }),
99865
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { style: styles$6.menuDivider }),
99866
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
99867
+ type: "button",
99868
+ role: "menuitem",
99869
+ style: styles$6.addMenuItem,
99870
+ onClick: () => {
99871
+ setLongArticleCreating(true);
99872
+ setAddMenuOpen(false);
99873
+ },
99874
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99875
+ "aria-hidden": true,
99876
+ children: "✎"
99877
+ }), "写长文"]
99878
+ })
99879
+ ]
99880
+ }),
99881
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
99882
+ ref: fileInputRef,
99883
+ type: "file",
99884
+ multiple: true,
99885
+ hidden: true,
99886
+ onChange: (event) => {
99887
+ selectFiles(event.currentTarget.files);
98427
99888
  }
98428
- if (!event.nativeEvent.isComposing && (event.key === "Backspace" || event.key === "Delete")) {
98429
- const caret = arkmeComposerDraftStore.deleteMentionAtSelection(composerDraftKey, textareaRef.current?.selectionStart ?? draft.length, textareaRef.current?.selectionEnd ?? draft.length, event.key === "Backspace" ? "backward" : "forward");
98430
- if (caret !== void 0) {
98431
- event.preventDefault();
98432
- requestAnimationFrame(() => {
98433
- textareaRef.current?.focus();
98434
- textareaRef.current?.setSelectionRange(caret, caret);
98435
- });
98436
- return;
98437
- }
99889
+ }),
99890
+ attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
99891
+ attachments,
99892
+ disabled: preparingFiles,
99893
+ onMove: (from, to) => arkmeComposerDraftStore.moveAttachment(composerDraftKey, from, to),
99894
+ onPreview: (attachment) => {
99895
+ if (attachment.localFile !== void 0) setDraftPreview(localFileBlock(attachment.localFile));
99896
+ },
99897
+ onRemove: (attachment) => {
99898
+ arkmeComposerDraftStore.removeAttachment(composerDraftKey, arkmeAttachmentId(attachment));
99899
+ if (attachment.localFile !== void 0) callArkme("files.local.remove", { fileRef: attachment.localFile.fileRef }).catch((caught) => setError(errorMessage$2(caught)));
98438
99900
  }
98439
- if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
99901
+ }),
99902
+ activeConversation && draftPreview !== void 0 && typeof document !== "undefined" && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMediaPreview, {
99903
+ selected: draftPreview,
99904
+ blocks: attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile)]),
99905
+ onSelect: setDraftPreview,
99906
+ onClose: () => setDraftPreview(void 0),
99907
+ openLocalFile: false
99908
+ }), document.body),
99909
+ mentionTrigger !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99910
+ style: styles$6.mentionSuggestions,
99911
+ role: "listbox",
99912
+ "aria-label": "选择要 @ 的对象",
99913
+ children: mentionCandidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99914
+ style: styles$6.mentionSuggestionsEmpty,
99915
+ children: "暂无可 @ 的对象"
99916
+ }) : mentionCandidates.map((member, index) => {
99917
+ const primary = arkmeMentionCandidatePrimaryText(member);
99918
+ const secondary = member.kind === "bot" ? (member.secondaryName ?? "Bot").trim() : "";
99919
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
99920
+ type: "button",
99921
+ role: "option",
99922
+ "aria-selected": index === mentionCandidateIndex,
99923
+ style: {
99924
+ ...styles$6.mentionSuggestionRow,
99925
+ ...index === mentionCandidateIndex ? styles$6.mentionSuggestionRowActive : {}
99926
+ },
99927
+ onMouseEnter: () => {
99928
+ setMentionCandidateIndex(index);
99929
+ },
99930
+ onMouseDown: (event) => {
99931
+ event.preventDefault();
99932
+ insertMentionCandidate(member);
99933
+ },
99934
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99935
+ style: styles$6.mentionSuggestionAvatar,
99936
+ "aria-hidden": true,
99937
+ children: member.kind === "bot" ? member.avatarRef === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99938
+ style: styles$6.mentionSuggestionBotAvatar,
99939
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(t$5, {
99940
+ size: 14,
99941
+ weight: "fill"
99942
+ })
99943
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
99944
+ avatarRef: member.avatarRef,
99945
+ size: 28,
99946
+ label: member.displayName
99947
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
99948
+ ...member.kind === "member" && member.avatarRef !== void 0 ? { avatarRef: member.avatarRef } : {},
99949
+ size: 28,
99950
+ label: member.displayName
99951
+ })
99952
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
99953
+ style: styles$6.mentionSuggestionText,
99954
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99955
+ style: styles$6.mentionSuggestionName,
99956
+ children: primary
99957
+ }), secondary !== "" && secondary !== member.displayName ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
99958
+ style: styles$6.mentionSuggestionSecondary,
99959
+ children: secondary
99960
+ }) : null]
99961
+ })]
99962
+ }, member.kind === "all" ? "all" : member.kind === "bot" ? `bot:${member.botRef}` : `member:${member.mentionRef}`);
99963
+ })
99964
+ }),
99965
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRichComposerInput, {
99966
+ className: "arkme-conversation-textarea",
99967
+ ref: textareaRef,
99968
+ style: styles$6.textarea,
99969
+ value: draft,
99970
+ mentions: composerDraft.mentions,
99971
+ emojis: composerDraft.emojis,
99972
+ maxLength: 2e4,
99973
+ placeholder: effectiveComposerPlaceholder,
99974
+ ariaLabel: effectiveComposerPlaceholder,
99975
+ disabled: preparingFiles,
99976
+ onTextChange: updateComposerText,
99977
+ onFocus: () => {
99978
+ setComposerInputFocused(true);
99979
+ },
99980
+ onBlur: () => {
99981
+ setComposerInputFocused(false);
99982
+ },
99983
+ onSelectionChange: updateMentionTrigger,
99984
+ onPaste: (event) => {
99985
+ const files = arkmeClipboardFiles(event.clipboardData);
99986
+ if (files.length === 0) return;
98440
99987
  event.preventDefault();
98441
- if (canSend) send();
98442
- }
98443
- }
98444
- }, composerDraftKey),
98445
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98446
- style: styles$6.tools,
98447
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98448
- style: styles$6.toolGroup,
98449
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
98450
- ref: addMenuTriggerRef,
98451
- type: "button",
98452
- style: styles$6.plus,
98453
- "aria-label": "添加内容",
98454
- "aria-haspopup": "menu",
98455
- "aria-expanded": addMenuOpen,
98456
- disabled: preparingFiles,
98457
- onClick: () => {
98458
- setAddMenuOpen((value) => !value);
98459
- },
98460
- children: preparingFiles ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFilePreparingIndicator, {}) : "+"
98461
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeEmojiPicker, {
98462
- disabled: preparingFiles,
98463
- scopeKey: composerDraftKey,
98464
- ...source?.kind === "private_chat" || source?.kind === "group_chat" ? { sourceRef: source.sourceRef } : {},
98465
- getCaretGeometry: () => textareaRef.current?.getCaretGeometry(),
98466
- getEditorGeometry: () => textareaRef.current?.getEditorGeometry(),
98467
- onSelect: insertEmoji,
98468
- onUploadSticker: async (file) => {
98469
- if (composerDraftKey === void 0) throw new Error("请先选择聊天");
98470
- return await uploadFavoriteSticker(file);
98471
- },
98472
- onStickerSent: async () => {
98473
- await loadTimeline();
98474
- },
98475
- onError: (message) => {
98476
- setError(message);
99988
+ selectFiles(files);
99989
+ },
99990
+ onKeyDown: (event) => {
99991
+ if (mentionTrigger !== void 0) {
99992
+ if (event.key === "Escape") {
99993
+ event.preventDefault();
99994
+ setMentionTrigger(void 0);
99995
+ return;
99996
+ }
99997
+ if (event.key === "ArrowDown" && mentionCandidates.length > 0) {
99998
+ event.preventDefault();
99999
+ setMentionCandidateIndex((index) => (index + 1) % mentionCandidates.length);
100000
+ return;
100001
+ }
100002
+ if (event.key === "ArrowUp" && mentionCandidates.length > 0) {
100003
+ event.preventDefault();
100004
+ setMentionCandidateIndex((index) => (index + mentionCandidates.length - 1) % mentionCandidates.length);
100005
+ return;
100006
+ }
100007
+ if ((event.key === "Enter" || event.key === "Tab") && mentionCandidates.length > 0) {
100008
+ event.preventDefault();
100009
+ const selectedCandidate = mentionCandidates[Math.min(mentionCandidateIndex, mentionCandidates.length - 1)];
100010
+ if (selectedCandidate !== void 0) insertMentionCandidate(selectedCandidate);
100011
+ return;
100012
+ }
98477
100013
  }
98478
- }, `emoji-picker:${conversationOverlayKey}`)]
98479
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98480
- style: styles$6.composerSendArea,
98481
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeComposerInputStats, {
98482
- active: activeConversation,
98483
- visible: composerStatsVisible,
98484
- textLength: composerTextLength,
98485
- ...composerInputStartedAtMillis === void 0 ? {} : { startedAtMillis: composerInputStartedAtMillis },
98486
- showsInputTime: composerShowsInputTime,
98487
- onToggle: () => {
98488
- const next = !composerShowsInputTime;
98489
- setComposerShowsInputTime(next);
98490
- setArkmeComposerShowsInputTime(next);
98491
- textareaRef.current?.focus();
100014
+ if (!event.nativeEvent.isComposing && (event.key === "Backspace" || event.key === "Delete")) {
100015
+ const caret = arkmeComposerDraftStore.deleteMentionAtSelection(composerDraftKey, textareaRef.current?.selectionStart ?? draft.length, textareaRef.current?.selectionEnd ?? draft.length, event.key === "Backspace" ? "backward" : "forward");
100016
+ if (caret !== void 0) {
100017
+ event.preventDefault();
100018
+ requestAnimationFrame(() => {
100019
+ textareaRef.current?.focus();
100020
+ textareaRef.current?.setSelectionRange(caret, caret);
100021
+ });
100022
+ return;
100023
+ }
98492
100024
  }
98493
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
98494
- type: "button",
98495
- style: {
98496
- ...styles$6.send,
98497
- opacity: canSend ? 1 : .4
98498
- },
98499
- disabled: !canSend,
98500
- "aria-label": "发送消息",
98501
- onMouseDown: (event) => {
100025
+ if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
98502
100026
  event.preventDefault();
98503
- },
98504
- onMouseEnter: (event) => {
98505
- if (!event.currentTarget.disabled) event.currentTarget.style.background = "#262936";
98506
- },
98507
- onMouseLeave: (event) => {
98508
- event.currentTarget.style.background = "#171923";
98509
- },
98510
- onClick: () => {
98511
- send();
98512
- },
98513
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
98514
- viewBox: "0 0 16 16",
98515
- width: "16",
98516
- height: "16",
98517
- "aria-hidden": true,
98518
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
98519
- d: "M8.3125 0.980183C8.66767 1.0531 8.97902 1.20418 9.2627 1.43233C9.48724 1.61297 9.73029 1.85793 9.97949 2.10714L14.707 6.83468L13.293 8.24874L9 3.95577V15.0417H7V3.95577L2.70703 8.24874L1.29297 6.83468L6.02051 2.10714C6.26971 1.85793 6.51277 1.61297 6.7373 1.43233C6.97662 1.23986 7.28445 1.04402 7.6875 0.980183C7.8973 0.947006 8.1031 0.95516 8.3125 0.980183Z",
98520
- fill: "currentColor"
100027
+ if (canSend) send();
100028
+ }
100029
+ }
100030
+ }, composerDraftKey),
100031
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
100032
+ style: styles$6.tools,
100033
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
100034
+ style: styles$6.toolGroup,
100035
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
100036
+ ref: addMenuTriggerRef,
100037
+ type: "button",
100038
+ style: styles$6.plus,
100039
+ "aria-label": "添加内容",
100040
+ "aria-haspopup": "menu",
100041
+ "aria-expanded": addMenuOpen,
100042
+ disabled: preparingFiles,
100043
+ onClick: () => {
100044
+ setAddMenuOpen((value) => !value);
100045
+ },
100046
+ children: preparingFiles ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFilePreparingIndicator, {}) : "+"
100047
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeEmojiPicker, {
100048
+ disabled: preparingFiles,
100049
+ scopeKey: composerDraftKey,
100050
+ ...source?.kind === "private_chat" || source?.kind === "group_chat" ? { sourceRef: source.sourceRef } : {},
100051
+ getCaretGeometry: () => textareaRef.current?.getCaretGeometry(),
100052
+ getEditorGeometry: () => textareaRef.current?.getEditorGeometry(),
100053
+ onSelect: insertEmoji,
100054
+ onUploadSticker: async (file) => {
100055
+ if (composerDraftKey === void 0) throw new Error("请先选择聊天");
100056
+ return await uploadFavoriteSticker(file);
100057
+ },
100058
+ onStickerSent: async () => {
100059
+ await loadTimeline();
100060
+ },
100061
+ onError: (message) => {
100062
+ setError(message);
100063
+ }
100064
+ }, `emoji-picker:${conversationOverlayKey}`)]
100065
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
100066
+ style: styles$6.composerSendArea,
100067
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeComposerInputStats, {
100068
+ active: activeConversation,
100069
+ visible: composerStatsVisible,
100070
+ textLength: composerTextLength,
100071
+ ...composerInputStartedAtMillis === void 0 ? {} : { startedAtMillis: composerInputStartedAtMillis },
100072
+ showsInputTime: composerShowsInputTime,
100073
+ onToggle: () => {
100074
+ const next = !composerShowsInputTime;
100075
+ setComposerShowsInputTime(next);
100076
+ setArkmeComposerShowsInputTime(next);
100077
+ textareaRef.current?.focus();
100078
+ }
100079
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
100080
+ type: "button",
100081
+ style: {
100082
+ ...styles$6.send,
100083
+ ...canSend ? {} : styles$6.sendDisabled
100084
+ },
100085
+ disabled: !canSend,
100086
+ "aria-label": "发送消息",
100087
+ onMouseDown: (event) => {
100088
+ event.preventDefault();
100089
+ },
100090
+ onMouseEnter: (event) => {
100091
+ if (!event.currentTarget.disabled) event.currentTarget.style.background = "#08A437";
100092
+ },
100093
+ onMouseLeave: (event) => {
100094
+ if (!event.currentTarget.disabled) event.currentTarget.style.background = "#09B83E";
100095
+ },
100096
+ onClick: () => {
100097
+ send();
100098
+ },
100099
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
100100
+ viewBox: "9.7 6.1 16 16",
100101
+ width: "16",
100102
+ height: "16",
100103
+ "aria-hidden": true,
100104
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
100105
+ d: "M23.5521 7.04659L11.5965 10.7238C10.7646 10.9798 10.6133 12.092 11.3467 12.5609L14.879 14.8189C15.0627 14.9363 15.2792 14.9919 15.4967 14.9775C15.7142 14.9631 15.9214 14.8794 16.088 14.7388L20.4967 11.0186C20.7357 10.8169 21.0582 11.1392 20.8566 11.3784L17.1366 15.7879C16.996 15.9545 16.9124 16.1617 16.8981 16.3792C16.8837 16.5966 16.9393 16.813 17.0568 16.9966L19.3143 20.5285C19.783 21.2617 20.8954 21.1104 21.1513 20.2787L24.8286 8.32335C25.0696 7.53956 24.3356 6.80563 23.5521 7.04659Z",
100106
+ fill: "currentColor"
100107
+ })
98521
100108
  })
98522
- })
100109
+ })]
98523
100110
  })]
98524
- })]
98525
- }),
98526
- arkmeSourceSupportsRecordInputCapture(source?.kind) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeBackgroundSoundWaveform, {
98527
- owner: recordInputCaptureOwner,
98528
- draftKey: composerDraftKey
98529
- })
98530
- ]
98531
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98532
- style: styles$6.composerHint,
98533
- children: "Enter发送 / Shift+Enter换行"
98534
- })]
100111
+ }),
100112
+ arkmeSourceSupportsRecordInputCapture(source?.kind) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeBackgroundSoundWaveform, {
100113
+ owner: recordInputCaptureOwner,
100114
+ draftKey: composerDraftKey
100115
+ })
100116
+ ]
100117
+ }),
100118
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
100119
+ style: styles$6.composerHint,
100120
+ children: "Enter发送 / Shift+Enter换行"
100121
+ })
100122
+ ]
98535
100123
  })
98536
100124
  })
98537
100125
  ] }),
@@ -98781,6 +100369,26 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98781
100369
  children: ARKME_MESSAGE_ACTION_MENU_LABELS[1]
98782
100370
  })]
98783
100371
  }),
100372
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
100373
+ type: "button",
100374
+ role: "menuitem",
100375
+ style: {
100376
+ ...styles$6.messageActionMenuItem,
100377
+ opacity: arkmeTimelineMessageActionRef(messageMenuItem) === "" ? .45 : 1
100378
+ },
100379
+ disabled: arkmeTimelineMessageActionRef(messageMenuItem) === "",
100380
+ onClick: () => {
100381
+ startMessageExtension(messageMenuItem);
100382
+ },
100383
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
100384
+ style: styles$6.messageActionMenuIcon,
100385
+ "aria-hidden": true,
100386
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeDesktopExtensionIcon, {})
100387
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
100388
+ style: styles$6.messageActionMenuText,
100389
+ children: ARKME_MESSAGE_ACTION_MENU_LABELS[2]
100390
+ })]
100391
+ }),
98784
100392
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98785
100393
  type: "button",
98786
100394
  role: "menuitem",
@@ -98798,7 +100406,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98798
100406
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "select" })
98799
100407
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98800
100408
  style: styles$6.messageActionMenuText,
98801
- children: ARKME_MESSAGE_ACTION_MENU_LABELS[2]
100409
+ children: ARKME_MESSAGE_ACTION_MENU_LABELS[3]
98802
100410
  })]
98803
100411
  }),
98804
100412
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -98818,7 +100426,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98818
100426
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "forward" })
98819
100427
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98820
100428
  style: styles$6.messageActionMenuText,
98821
- children: ARKME_MESSAGE_ACTION_MENU_LABELS[3]
100429
+ children: ARKME_MESSAGE_ACTION_MENU_LABELS[4]
98822
100430
  })]
98823
100431
  }),
98824
100432
  arkmeCanReportTimelineMessage(source, messageMenuItem) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -98948,7 +100556,9 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98948
100556
  setShowOriginal((value) => !value);
98949
100557
  },
98950
100558
  shareWebsite,
98951
- onMessageCopyLinkOpen: openMessageCopyLinkDetail
100559
+ onMessageCopyLinkOpen: openMessageCopyLinkDetail,
100560
+ onExtensionSent: acceptDetailExtension,
100561
+ onToast: showMessageActionStatus
98952
100562
  }, detailItem.itemUid),
98953
100563
  activeConversation && drawer === "copyLink" && copyLinkDetail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98954
100564
  style: styles$6.forwardDrawerDismiss,
@@ -130582,12 +132192,43 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130582
132192
  }
130583
132193
  };
130584
132194
  const ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH = 76;
130585
- const ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH = 72;
132195
+ const ARKME_PERSISTENT_DIRECTORY_MIN_WIDTH = 64;
132196
+ const ARKME_PERSISTENT_DIRECTORY_AVATAR_ONLY_WIDTH = 200;
132197
+ const ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH = 140;
130586
132198
  const ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH = 480;
130587
- const ARKME_PERSISTENT_SIDEBAR_AVATAR_ONLY_WIDTH = 120;
132199
+ const ARKME_PERSISTENT_DIRECTORY_MAX_WIDTH = ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH - ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH;
132200
+ const ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY = "dsh-arkme:persistent-sidebar-width:v1";
130588
132201
  function clampPersistentSidebarWidth(width) {
130589
132202
  return Math.min(ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH, Math.max(ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH, Math.round(width)));
130590
132203
  }
132204
+ function browserPersistentSidebarStorage() {
132205
+ try {
132206
+ return typeof window === "undefined" ? void 0 : window.localStorage;
132207
+ } catch {
132208
+ return;
132209
+ }
132210
+ }
132211
+ function readPersistentSidebarWidth(storage = browserPersistentSidebarStorage()) {
132212
+ if (storage === void 0) return void 0;
132213
+ try {
132214
+ const raw = storage.getItem(ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY);
132215
+ if (raw === null || raw.trim() === "") return void 0;
132216
+ const parsed = Number(raw);
132217
+ return Number.isFinite(parsed) ? clampPersistentSidebarWidth(parsed) : void 0;
132218
+ } catch {
132219
+ return;
132220
+ }
132221
+ }
132222
+ function writePersistentSidebarWidth(width, storage = browserPersistentSidebarStorage()) {
132223
+ if (storage === void 0) return;
132224
+ try {
132225
+ storage.setItem(ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY, String(clampPersistentSidebarWidth(width)));
132226
+ } catch {}
132227
+ }
132228
+ function resolvePersistentSidebarWidth(collapsed, hostWidth, preferredWidth, compactWidthOverride) {
132229
+ if (collapsed) return compactWidthOverride === void 0 ? ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH : clampPersistentSidebarWidth(compactWidthOverride);
132230
+ return preferredWidth === void 0 ? clampPersistentSidebarWidth(hostWidth) : clampPersistentSidebarWidth(preferredWidth);
132231
+ }
130591
132232
  /** Permanent browser-side lifecycles that used to be owned by the optional DSH footer entry. */
130592
132233
  function ArkmePersistentClientRuntime() {
130593
132234
  const ui = (0, react.useSyncExternalStore)(arkmeUi.subscribe, arkmeUi.getViewSnapshot, arkmeUi.getViewSnapshot);
@@ -130612,7 +132253,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130612
132253
  return !desktopStartupGate && auth?.status === "authenticated" && mode === "login";
130613
132254
  }
130614
132255
  /** Arkme permanently owns the DSH sidebar seat so navigation stays stable across Arkme and Harness conversations. */
130615
- function ArkmePersistentSidebar({ collapsed, width, useSessions, renderSlot, collapseSidebar, closeDetails, searchDshMessages = async () => ({
132256
+ function ArkmePersistentSidebar({ collapsed, width, useSessions, renderSlot, closeDetails, searchDshMessages = async () => ({
130616
132257
  items: [],
130617
132258
  hasMore: false
130618
132259
  }), openDshSession = () => void 0 }) {
@@ -130640,11 +132281,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130640
132281
  };
130641
132282
  const [sendToSelfState, setSendToSelfState] = (0, react.useState)();
130642
132283
  const directoryVisible = !loginMode && ui.calendarOpen !== true && (ui.mode === "source" || ui.mode === "bot" || ui.mode === "arko" || harnessMode);
130643
- const [sidebarWidthOverride, setSidebarWidthOverride] = (0, react.useState)();
132284
+ const [preferredSidebarWidth, setPreferredSidebarWidth] = (0, react.useState)(() => readPersistentSidebarWidth());
132285
+ const [compactSidebarWidthOverride, setCompactSidebarWidthOverride] = (0, react.useState)();
130644
132286
  const sidebarResizeRef = (0, react.useRef)();
130645
132287
  const [sidebarResizing, setSidebarResizing] = (0, react.useState)(false);
130646
- const renderedSidebarWidth = sidebarWidthOverride ?? width + ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH;
130647
- const avatarOnly = !contactsMode && renderedSidebarWidth <= ARKME_PERSISTENT_SIDEBAR_AVATAR_ONLY_WIDTH;
132288
+ const renderedSidebarWidth = resolvePersistentSidebarWidth(collapsed, clampPersistentSidebarWidth(width + ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH), preferredSidebarWidth, compactSidebarWidthOverride);
132289
+ const renderedDirectoryWidth = renderedSidebarWidth - ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH;
132290
+ const avatarOnly = !contactsMode && renderedDirectoryWidth <= ARKME_PERSISTENT_DIRECTORY_AVATAR_ONLY_WIDTH;
130648
132291
  (0, react.useEffect)(() => {
130649
132292
  if (authenticatedUserId === void 0) {
130650
132293
  setSendToSelfState(void 0);
@@ -130681,12 +132324,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130681
132324
  }, [searchDshMessages, sessionState.byId]);
130682
132325
  (0, react.useLayoutEffect)(() => {
130683
132326
  closeDetails();
130684
- if (collapsed) collapseSidebar();
130685
- }, [
130686
- closeDetails,
130687
- collapseSidebar,
130688
- collapsed
130689
- ]);
132327
+ }, [closeDetails]);
132328
+ (0, react.useEffect)(() => {
132329
+ if (!collapsed) setCompactSidebarWidthOverride(void 0);
132330
+ }, [collapsed]);
130690
132331
  (0, react.useLayoutEffect)(() => {
130691
132332
  arkmeContactsTab.activateAccount(contactsAccountKey);
130692
132333
  }, [contactsAccountKey]);
@@ -130710,43 +132351,112 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130710
132351
  sidebarResizeRef.current = {
130711
132352
  pointerId: event.pointerId,
130712
132353
  startX: event.clientX,
130713
- startWidth: renderedSidebarWidth
132354
+ startWidth: renderedSidebarWidth,
132355
+ compact: collapsed,
132356
+ lastWidth: renderedSidebarWidth
130714
132357
  };
130715
132358
  setSidebarResizing(true);
130716
- }, [renderedSidebarWidth]);
132359
+ }, [collapsed, renderedSidebarWidth]);
130717
132360
  const continueSidebarResize = (0, react.useCallback)((event) => {
130718
132361
  const resize = sidebarResizeRef.current;
130719
132362
  if (resize === void 0 || resize.pointerId !== event.pointerId) return;
130720
- setSidebarWidthOverride(clampPersistentSidebarWidth(resize.startWidth + event.clientX - resize.startX));
132363
+ const nextWidth = clampPersistentSidebarWidth(resize.startWidth + event.clientX - resize.startX);
132364
+ resize.lastWidth = nextWidth;
132365
+ if (resize.compact) setCompactSidebarWidthOverride(nextWidth);
132366
+ else setPreferredSidebarWidth(nextWidth);
130721
132367
  }, []);
130722
132368
  const stopSidebarResize = (0, react.useCallback)((element, pointerId) => {
132369
+ const resize = sidebarResizeRef.current;
130723
132370
  if (pointerId !== void 0 && element?.hasPointerCapture(pointerId)) element.releasePointerCapture(pointerId);
132371
+ if (resize !== void 0 && !resize.compact) writePersistentSidebarWidth(resize.lastWidth);
130724
132372
  sidebarResizeRef.current = void 0;
130725
132373
  setSidebarResizing(false);
130726
132374
  }, []);
132375
+ const resizeSidebarFromKeyboard = (0, react.useCallback)((event) => {
132376
+ let nextWidth;
132377
+ if (event.key === "Home") nextWidth = ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH;
132378
+ else if (event.key === "End") nextWidth = ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH;
132379
+ else if (event.key === "ArrowLeft") nextWidth = renderedSidebarWidth - 16;
132380
+ else if (event.key === "ArrowRight") nextWidth = renderedSidebarWidth + 16;
132381
+ if (nextWidth === void 0) return;
132382
+ event.preventDefault();
132383
+ const clamped = clampPersistentSidebarWidth(nextWidth);
132384
+ if (collapsed) setCompactSidebarWidthOverride(clamped);
132385
+ else {
132386
+ setPreferredSidebarWidth(clamped);
132387
+ writePersistentSidebarWidth(clamped);
132388
+ }
132389
+ }, [collapsed, renderedSidebarWidth]);
132390
+ const sidebarSizingStyle = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("style", {
132391
+ "data-arkme-owned": "persistent-sidebar-resize-handle-style",
132392
+ children: `
132393
+ :root { --arkme-persistent-sidebar-width: ${String(renderedSidebarWidth)}px; }
132394
+ :root:has([data-arkme-owned="persistent-sidebar"]) [data-side="sidebar"] {
132395
+ left: ${String(renderedSidebarWidth)}px !important;
132396
+ pointer-events: none;
132397
+ }
132398
+ :root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-slot="root"] > div,
132399
+ :root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-side="sidebar"] {
132400
+ transition: none !important;
132401
+ }
132402
+ `
132403
+ });
132404
+ const sidebarResizeHandle = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
132405
+ "data-arkme-owned": "persistent-sidebar-resize-handle",
132406
+ role: "separator",
132407
+ "aria-label": "调整对话列表宽度",
132408
+ "aria-orientation": "vertical",
132409
+ "aria-valuemin": ARKME_PERSISTENT_DIRECTORY_MIN_WIDTH,
132410
+ "aria-valuemax": ARKME_PERSISTENT_DIRECTORY_MAX_WIDTH,
132411
+ "aria-valuenow": renderedDirectoryWidth,
132412
+ tabIndex: 0,
132413
+ style: styles$3.sidebarResizeHandle,
132414
+ onPointerDown: beginSidebarResize,
132415
+ onPointerMove: continueSidebarResize,
132416
+ onPointerUp: (event) => {
132417
+ stopSidebarResize(event.currentTarget, event.pointerId);
132418
+ },
132419
+ onPointerCancel: (event) => {
132420
+ stopSidebarResize(event.currentTarget, event.pointerId);
132421
+ },
132422
+ onLostPointerCapture: () => {
132423
+ stopSidebarResize();
132424
+ },
132425
+ onKeyDown: resizeSidebarFromKeyboard
132426
+ });
130727
132427
  if (loginMode) return webLockedMode ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
130728
132428
  "data-arkme-owned": "persistent-sidebar",
130729
132429
  "data-arkme-workspace": true,
130730
132430
  "data-arkme-login-mode": "true",
130731
132431
  "data-arkme-web-locked": true,
130732
132432
  "data-arkme-directory-visible": "true",
132433
+ "data-arkme-sidebar-collapsed": collapsed ? "true" : "false",
132434
+ "data-arkme-sidebar-resizing": sidebarResizing ? "true" : "false",
132435
+ "data-arkme-sidebar-width": renderedSidebarWidth,
132436
+ "data-arkme-directory-width": renderedDirectoryWidth,
130733
132437
  style: styles$3.sidebar,
130734
132438
  "aria-label": "Arkme 受限工作区导航",
130735
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeProductNavigation, {
130736
- compact: false,
130737
- hosted: true,
130738
- taskExpanded: true,
130739
- locked: true
130740
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
130741
- style: styles$3.taskDirectory,
130742
- "data-arkme-directory-mode": "web-locked",
130743
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeNavigation, {
130744
- wide: true,
130745
- embeddedProductShell: true,
130746
- showHarnessEntry: true,
130747
- lockedDirectory: true
130748
- })
130749
- })]
132439
+ children: [
132440
+ sidebarSizingStyle,
132441
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeProductNavigation, {
132442
+ compact: false,
132443
+ hosted: true,
132444
+ taskExpanded: true,
132445
+ locked: true
132446
+ }),
132447
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
132448
+ style: styles$3.taskDirectory,
132449
+ "data-arkme-directory-mode": "web-locked",
132450
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeNavigation, {
132451
+ wide: true,
132452
+ avatarOnly,
132453
+ embeddedProductShell: true,
132454
+ showHarnessEntry: true,
132455
+ lockedDirectory: true
132456
+ })
132457
+ }),
132458
+ sidebarResizeHandle
132459
+ ]
130750
132460
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
130751
132461
  "data-arkme-owned": "persistent-sidebar",
130752
132462
  "data-arkme-login-mode": "true",
@@ -130764,30 +132474,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130764
132474
  "data-arkme-harness-mode": harnessMode ? "true" : "false",
130765
132475
  "data-arkme-directory-visible": directoryVisible ? "true" : "false",
130766
132476
  "data-arkme-sidebar-resizing": sidebarResizing ? "true" : "false",
132477
+ "data-arkme-sidebar-width": renderedSidebarWidth,
132478
+ "data-arkme-directory-width": renderedDirectoryWidth,
130767
132479
  "data-arkme-login-mode": "false",
130768
132480
  ...contactsMode ? { "data-arkme-contacts-mobile-view": scopedContacts.selection.kind !== "none" ? "content" : "directory" } : {},
130769
132481
  style: styles$3.sidebar,
130770
132482
  "aria-label": "Arkme 功能导航栏",
130771
132483
  children: [
130772
- !collapsed && directoryVisible && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("style", {
130773
- "data-arkme-owned": "persistent-sidebar-resize-handle-style",
130774
- children: `
130775
- :root { --arkme-persistent-sidebar-width: ${String(renderedSidebarWidth)}px; }
130776
- :root:has([data-arkme-owned="persistent-sidebar"]) [data-side="sidebar"] {
130777
- left: ${String(renderedSidebarWidth)}px !important;
130778
- pointer-events: none;
130779
- }
130780
- :root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-slot="root"] > div,
130781
- :root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-side="sidebar"] {
130782
- transition: none !important;
130783
- }
130784
- `
130785
- }),
132484
+ directoryVisible && (!contactsMode || !collapsed) && sidebarSizingStyle,
130786
132485
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeProductNavigation, {
130787
132486
  compact: false,
130788
132487
  hosted: true,
130789
132488
  taskExpanded: true,
130790
- hidden: avatarOnly,
130791
132489
  currentSessionId: sessionState.current
130792
132490
  }),
130793
132491
  directoryVisible && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -130849,27 +132547,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
130849
132547
  ...sendToSelfSource === void 0 ? {} : { sendToSelfSource }
130850
132548
  })
130851
132549
  }),
130852
- !collapsed && directoryVisible && !contactsMode && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
130853
- "data-arkme-owned": "persistent-sidebar-resize-handle",
130854
- role: "separator",
130855
- "aria-label": "调整对话列表宽度",
130856
- "aria-orientation": "vertical",
130857
- "aria-valuemin": ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH,
130858
- "aria-valuemax": ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH,
130859
- "aria-valuenow": renderedSidebarWidth,
130860
- style: styles$3.sidebarResizeHandle,
130861
- onPointerDown: beginSidebarResize,
130862
- onPointerMove: continueSidebarResize,
130863
- onPointerUp: (event) => {
130864
- stopSidebarResize(event.currentTarget, event.pointerId);
130865
- },
130866
- onPointerCancel: (event) => {
130867
- stopSidebarResize(event.currentTarget, event.pointerId);
130868
- },
130869
- onLostPointerCapture: () => {
130870
- stopSidebarResize();
130871
- }
130872
- })
132550
+ directoryVisible && !contactsMode && sidebarResizeHandle
130873
132551
  ]
130874
132552
  });
130875
132553
  }
@@ -131027,7 +132705,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
131027
132705
  }
131028
132706
  //#endregion
131029
132707
  //#region src/client/redesign/arkme-redesign.css?inline
131030
- var arkme_redesign_default = "[data-arkme-workspace] {\n --arkme-line: #e7e7e9;\n --arkme-muted: #8e9199;\n --arkme-soft: #f6f6f7;\n --arkme-focus: #cbd5ff;\n color: #171923;\n font-synthesis: none;\n font-family: SF Pro Text, SF Pro Display, -apple-system, BlinkMacSystemFont, PingFang SC, Helvetica Neue, Microsoft YaHei, sans-serif;\n}\n\n[data-arkme-workspace], [data-arkme-workspace] * {\n box-sizing: border-box;\n}\n\n[data-arkme-workspace] button, [data-arkme-workspace] input, [data-arkme-workspace] textarea {\n font: inherit;\n}\n\n[data-arkme-workspace] button {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n}\n\n[data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: none !important;\n}\n\n.arkme-redesign-root {\n --arkme-native-titlebar: 0px;\n background: #fff;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n position: relative;\n overflow: hidden;\n}\n\n.arkme-native-desktop .arkme-redesign-root {\n --arkme-native-titlebar: 50px;\n}\n\n.arkme-native-desktop .arkme-redesign-root:before {\n content: \"\";\n z-index: 30;\n pointer-events: none;\n background: #e8e8ea;\n height: 1px;\n position: absolute;\n top: 49px;\n left: 0;\n right: 0;\n}\n\n.arkme-native-desktop [data-arkme-owned=\"persistent-sidebar\"] > [data-arkme-owned=\"product-navigation\"] {\n padding-top: 28px !important;\n}\n\n.arkme-redesign-rail {\n z-index: 8;\n top: calc(26px + var(--arkme-native-titlebar));\n background: #fbfbfc;\n border: 1px solid #e4e4e7;\n border-radius: 22px;\n flex-direction: column;\n width: 72px;\n padding: 10px 8px;\n display: flex;\n position: absolute;\n bottom: 22px;\n left: 24px;\n box-shadow: 0 16px 38px #1e20260e;\n}\n\n.arkme-redesign-rail-primary {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.arkme-redesign-rail-primary button {\n color: #3e4149;\n border-radius: 15px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n min-height: 57px;\n transition: background .18s, color .18s;\n display: flex;\n position: relative;\n}\n\n.arkme-redesign-rail-primary button span {\n letter-spacing: .01em;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-rail-primary button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-rail-primary button.is-active {\n color: #151722;\n background: #f1f2f6;\n}\n\n.arkme-redesign-rail-primary button.is-active:before {\n content: \"\";\n background: #9eadff;\n border-radius: 3px;\n width: 3px;\n height: 33px;\n position: absolute;\n left: -9px;\n}\n\n.arkme-redesign-rail-footer {\n border-top: 0 solid #ededee;\n justify-items: center;\n gap: 7px;\n margin-top: auto;\n padding-top: 0;\n display: grid;\n position: relative;\n}\n\n.arkme-redesign-rail-footer:has( > .arkme-update-rail-slot) {\n border-top-width: 1px;\n padding-top: 10px;\n}\n\n.arkme-redesign-rail-footer > button {\n color: #4b4f58;\n border-radius: 14px;\n place-items: center;\n width: 46px;\n height: 46px;\n display: grid;\n}\n\n.arkme-redesign-rail-footer > button:hover, .arkme-redesign-rail-footer > button.is-active {\n background: #f1f2f5;\n}\n\n.arkme-redesign-rail-footer:empty {\n display: none;\n}\n\n.arkme-update-rail-slot {\n width: 52px;\n height: 30px;\n position: relative;\n}\n\nbutton.arkme-update-rail {\n color: #53648e;\n cursor: pointer;\n width: 52px;\n min-height: 28px;\n font: inherit;\n background: #f1f3fa;\n border: 0;\n border-radius: 999px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n padding: 0 7px;\n transition: transform .16s, background .16s, color .16s, box-shadow .16s;\n display: flex;\n box-shadow: inset 0 0 0 1px #5b70ab17;\n}\n\nbutton.arkme-update-rail:hover, button.arkme-update-rail.is-active {\n transform: translateY(-1px);\n color: #34476f !important;\n background: #e9edf8 !important;\n}\n\nbutton.arkme-update-rail.is-available {\n color: #fff !important;\n background: #f0524f !important;\n box-shadow: 0 5px 12px #e03c3933, inset 0 0 0 1px #b2232014 !important;\n}\n\nbutton.arkme-update-rail.is-available:hover, button.arkme-update-rail.is-available.is-active {\n color: #fff !important;\n background: #df4542 !important;\n box-shadow: 0 7px 16px #d736333d, inset 0 0 0 1px #961a181a !important;\n}\n\nbutton.arkme-update-rail.is-error {\n color: #b54841 !important;\n background: #fff0ee !important;\n}\n\n.arkme-update-rail span {\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n font-size: 9px;\n font-weight: 550;\n line-height: 1;\n}\n\n.arkme-update-rail svg {\n flex: none;\n}\n\n.arkme-update-rail.is-ready {\n gap: 3px;\n padding: 0 4px;\n}\n\n.arkme-update-rail.is-ready svg {\n width: 13px;\n height: 13px;\n}\n\n.arkme-update-rail.is-downloading svg {\n animation: 1.6s linear infinite arkme-update-spin;\n}\n\n.arkme-update-popover {\n z-index: 100000;\n overflow-wrap: anywhere;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.12);\n background: #fffffff7;\n border: 1px solid #cfd1d7e6;\n border-radius: 20px;\n width: 356px;\n max-width: calc(100vw - 16px);\n max-height: calc(100vh - 16px);\n padding: 18px;\n animation: .2s cubic-bezier(.2, .8, .2, 1) arkme-update-popover-in;\n position: fixed;\n bottom: 14px;\n left: 68px;\n overflow-y: auto;\n box-shadow: 0 24px 58px #1b1e2629, 0 3px 10px #1b1e260e;\n}\n\n.arkme-update-popover-heading {\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 12px;\n display: grid;\n}\n\n.arkme-update-popover-heading > div {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading span {\n color: #92959d;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-update-popover-heading h2 {\n color: #242731;\n letter-spacing: -.025em;\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n}\n\n.arkme-update-popover-heading > button {\n color: #93969e;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading > button:hover {\n color: #3d414a;\n background: #f1f2f4;\n}\n\n.arkme-update-popover-summary {\n color: #7d818a;\n margin: 13px 0 0;\n font-size: 11px;\n line-height: 1.55;\n}\n\n.arkme-update-release-notes {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n margin-top: 14px;\n padding: 5px 0;\n}\n\n.arkme-update-release-notes > div {\n grid-template-columns: 28px minmax(0, 1fr);\n align-items: center;\n gap: 10px;\n min-height: 51px;\n display: grid;\n}\n\n.arkme-update-release-notes > div + div {\n border-top: 1px solid #f0f0f2;\n}\n\n.arkme-update-release-notes > div > span {\n color: #a3a6ad;\n font-variant-numeric: tabular-nums;\n font-size: 9px;\n}\n\n.arkme-update-release-notes p {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-update-release-notes strong {\n color: #3b3f48;\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-update-release-notes small {\n color: #92959d;\n font-size: 10px;\n line-height: 1.45;\n}\n\n.arkme-update-message {\n color: #747983;\n margin: 12px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-update-message.is-error {\n color: #b54841;\n}\n\n.arkme-update-popover-actions {\n grid-template-columns: 1fr 1.45fr;\n gap: 9px;\n margin-top: 16px;\n display: grid;\n}\n\n.arkme-update-popover-actions button {\n cursor: pointer;\n height: 42px;\n font: inherit;\n border-radius: 12px;\n padding: 0;\n font-size: 12px;\n font-weight: 500;\n transition: transform .16s, background .16s, box-shadow .16s;\n border: 0 !important;\n}\n\n.arkme-update-popover-actions button:hover {\n transform: translateY(-1px);\n}\n\n.arkme-update-popover-actions .arkme-update-later {\n color: #666a73 !important;\n background: #f2f2f4 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-later:hover {\n background: #ececef !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now {\n color: #fff !important;\n background: #1c1f28 !important;\n box-shadow: 0 7px 18px #181b2324 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now:hover {\n background: #11131b !important;\n box-shadow: 0 9px 22px #181b232e !important;\n}\n\n.arkme-update-now:disabled {\n opacity: .46;\n cursor: default;\n transform: none;\n}\n\n.arkme-update-capsule {\n z-index: 10030;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.2);\n background: #ffffffed;\n border: 1px solid #cdd0d8d6;\n border-radius: 18px;\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 10px;\n width: 326px;\n max-width: calc(100vw - 16px);\n min-height: 52px;\n padding: 9px 9px 9px 14px;\n animation: .22s cubic-bezier(.2, .8, .2, 1) arkme-update-capsule-in;\n display: grid;\n position: fixed;\n top: 18px;\n left: 50%;\n transform: translateX(-50%);\n box-shadow: 0 16px 40px #1c1f2724, 0 2px 8px #1c1f270f;\n}\n\n.arkme-native-desktop .arkme-update-capsule {\n top: 62px;\n}\n\n.arkme-update-capsule-copy {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-capsule-copy strong {\n color: #333741;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-update-capsule-copy small {\n color: #93969e;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-update-progress {\n background: #eceef3;\n border-radius: 999px;\n height: 4px;\n overflow: hidden;\n}\n\n.arkme-update-progress span {\n border-radius: inherit;\n background: #6779b5;\n height: 100%;\n transition: width .65s cubic-bezier(.2, .7, .25, 1);\n display: block;\n}\n\n.arkme-update-progress.is-indeterminate span {\n width: 34%;\n animation: 1.25s ease-in-out infinite arkme-update-indeterminate;\n}\n\n.arkme-update-capsule > b {\n color: #656a75;\n font-variant-numeric: tabular-nums;\n text-align: right;\n font-size: 10px;\n font-weight: 500;\n}\n\n.arkme-update-capsule[data-layout=\"progress\"] {\n grid-template-columns: minmax(0, 1fr) minmax(40px, .8fr) 34px 28px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] {\n grid-template-columns: minmax(0, 1fr) auto 28px;\n width: 306px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] .arkme-update-capsule-copy small {\n -webkit-line-clamp: 3;\n white-space: normal;\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n font-size: 11px;\n line-height: 1.45;\n display: -webkit-box;\n}\n\n.arkme-update-capsule[data-layout=\"restarting\"] {\n grid-template-columns: minmax(0, 1fr);\n width: 218px;\n padding-right: 14px;\n}\n\n.arkme-update-capsule.is-restarting .arkme-update-capsule-copy {\n text-align: center;\n justify-self: center;\n}\n\n.arkme-update-ready-action {\n color: #fff;\n cursor: pointer;\n width: auto;\n height: 32px;\n font: inherit;\n white-space: nowrap;\n background: #242731;\n border: 0;\n border-radius: 10px;\n padding: 0 11px;\n font-size: 10px;\n font-weight: 550;\n}\n\n.arkme-update-ready-action:hover {\n background: #151821;\n}\n\n.arkme-update-ready-action:disabled {\n opacity: .65;\n cursor: wait;\n}\n\n.arkme-update-ready-action:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #6779b5;\n}\n\n.arkme-update-capsule-close {\n color: #8a8e97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-capsule-close:hover {\n color: #343841;\n background: #f0f1f3;\n}\n\n@keyframes arkme-update-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes arkme-update-popover-in {\n from {\n opacity: 0;\n transform: translate(-8px, 3px) scale(.985);\n }\n}\n\n@keyframes arkme-update-capsule-in {\n from {\n opacity: 0;\n transform: translate(-50%, -8px) scale(.98);\n }\n}\n\n@keyframes arkme-update-indeterminate {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(300%);\n }\n}\n\n.arkme-redesign-profile {\n position: relative;\n}\n\n.arkme-redesign-profile > span {\n width: 32px !important;\n height: 32px !important;\n}\n\n.arkme-redesign-profile-popover {\n z-index: 10000;\n backdrop-filter: blur(20px);\n background: #fffffff5;\n border: 1px solid #d8d9dde6;\n border-radius: 18px;\n width: 264px;\n padding: 10px;\n position: fixed;\n bottom: 14px;\n left: 64px;\n box-shadow: 0 20px 50px #1a1c2326, 0 2px 8px #1a1c230d;\n}\n\n.arkme-redesign-profile-head {\n align-items: center;\n gap: 11px;\n padding: 9px 9px 13px;\n display: flex;\n}\n\n.arkme-redesign-profile-head > span {\n text-align: left;\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-head strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-head small {\n color: #8b8f98;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-profile-menu {\n border-top: 1px solid #eeeeef;\n gap: 2px;\n padding-top: 6px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button {\n width: 100%;\n min-height: 50px;\n box-shadow: none;\n color: #393d46;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 11px;\n outline: 0;\n grid-template-columns: 28px minmax(0, 1fr) 16px;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-profile-menu button > span {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-menu strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-profile-menu small {\n color: #92969f;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-menu button > svg:last-child {\n color: #a0a3aa;\n}\n\n.arkme-redesign-native-settings-trigger {\n clip-path: inset(50%);\n width: 1px;\n height: 1px;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-panel {\n inset: var(--arkme-native-titlebar) auto 0 96px;\n z-index: 3;\n border-right: 1px solid var(--arkme-line);\n background: #fff;\n flex-direction: column;\n width: 300px;\n min-width: 0;\n padding: 0;\n display: flex;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-search {\n text-align: left;\n border-radius: 11px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 40px;\n margin: 20px 0 10px;\n padding: 0 12px;\n display: flex;\n color: #9699a1 !important;\n border: 1px solid #e1e2e5 !important;\n font-size: 11px !important;\n}\n\n.arkme-redesign-chat-search:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-chat-directory {\n flex: 1;\n min-height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-directory > section {\n background: none !important;\n}\n\n.arkme-redesign-task-section {\n z-index: 3;\n border-bottom: 1px solid #ececef;\n outline: none;\n height: 158px;\n margin: 0 6px 12px;\n position: relative;\n}\n\n.arkme-redesign-task-section-title {\n color: #767b85;\n justify-content: space-between;\n align-items: center;\n height: 28px;\n padding: 0 7px;\n display: flex;\n}\n\n.arkme-redesign-task-section-title strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-task-section-title button {\n border-radius: 7px;\n place-items: center;\n width: 24px;\n height: 24px;\n display: grid;\n}\n\n.arkme-redesign-task-section-title button:hover {\n background: #f3f3f5;\n}\n\n.arkme-redesign-task-list {\n overscroll-behavior: contain;\n scrollbar-gutter: stable;\n background: #fff;\n max-height: 128px;\n padding-bottom: 2px;\n transition: max-height .18s, box-shadow .18s, padding .18s;\n display: grid;\n position: absolute;\n top: 28px;\n left: 0;\n right: 0;\n overflow: hidden auto;\n}\n\n.arkme-redesign-task-section:hover .arkme-redesign-task-list, .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n max-height: min(360px, 100vh - 180px);\n padding-bottom: 6px;\n box-shadow: 0 14px 22px #1b1e2512;\n}\n\n.arkme-redesign-task-list > button {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n gap: 4px;\n width: 100%;\n min-width: 0;\n height: 32px;\n padding: 0 8px;\n display: grid;\n}\n\n.arkme-redesign-task-list > button:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-task-list > button.is-selected {\n color: #232630;\n background: #f0f1f4;\n}\n\n.arkme-redesign-task-state {\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 20px;\n display: inline-flex;\n}\n\n.arkme-redesign-task-state.is-complete > i {\n background: #39a56b1a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n display: block;\n position: relative;\n}\n\n.arkme-redesign-task-state.is-complete > i:after {\n content: \"\";\n background: #39a56b;\n border-radius: 50%;\n position: absolute;\n inset: 2px;\n}\n\n.arkme-redesign-task-matrix {\n grid-template-columns: repeat(3, 2px);\n grid-auto-rows: 2px;\n gap: 1px;\n width: 10px;\n height: 10px;\n display: grid;\n}\n\n.arkme-redesign-task-matrix i {\n opacity: .15;\n background: #5d76e8;\n border-radius: 1px;\n animation: 1s infinite arkme-task-dot-chase;\n}\n\n.arkme-redesign-task-matrix i:nth-child(2) {\n animation-delay: .125s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(3) {\n animation-delay: .25s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(4) {\n animation-delay: .375s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(5) {\n animation-delay: .5s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(6) {\n animation-delay: .625s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(7) {\n animation-delay: .75s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(8) {\n animation-delay: .875s;\n}\n\n@keyframes arkme-task-dot-chase {\n 0%, 12.4% {\n opacity: 1;\n }\n\n 12.5%, 24.9% {\n opacity: .6;\n }\n\n 25%, 37.4% {\n opacity: .35;\n }\n\n 37.5%, 100% {\n opacity: .15;\n }\n}\n\n.arkme-redesign-task-copy {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-redesign-task-copy strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-task-copy small {\n color: #9a9da5;\n flex: none;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-redesign-task-first {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 12px);\n height: 32px;\n margin: 0 6px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.arkme-redesign-task-first:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-content {\n inset: var(--arkme-native-titlebar) 0 0 96px;\n background: #fff;\n min-width: 0;\n min-height: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-content.has-panel {\n left: 396px;\n}\n\n.arkme-redesign-content.has-details {\n right: 360px;\n}\n\n.arkme-redesign-content.is-login-takeover {\n left: 0;\n right: 0;\n}\n\n.arkme-redesign-route-surface {\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-surface {\n background: #fff !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header {\n border-bottom: 1px solid #ececef !important;\n height: 68px !important;\n padding: 12px 16px 12px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header h2 {\n font-size: 15px !important;\n font-weight: 600 !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-body {\n padding: 22px 22px 12px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-records {\n gap: 0 !important;\n width: 100% !important;\n}\n\n.arkme-conversation-records-reveal {\n animation: .12s ease-out both arkme-conversation-records-reveal;\n}\n\n@keyframes arkme-conversation-records-reveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-conversation-records-reveal {\n animation: none;\n }\n}\n\n.arkme-redesign-route-chats [data-arkme-content-presentation=\"bubble\"] p {\n font-size: 14px;\n line-height: 1.62;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer {\n padding: 0 24px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner {\n background: #fff !important;\n border: 1px solid #dfe1e6 !important;\n border-radius: 15px !important;\n gap: 8px !important;\n width: 100% !important;\n padding: 12px 13px 9px !important;\n box-shadow: 0 8px 30px #1c1f270b !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer textarea {\n min-height: 38px !important;\n padding: 0 !important;\n font-size: 14px !important;\n line-height: 22px !important;\n}\n\n.arkme-redesign-task-conversation {\n font-size: 15px;\n}\n\n.arkme-redesign-task-conversation [data-phase] {\n --dsh-chat-content-width: calc(100% - 64px);\n --dsh-composer-card-max-width: calc(100% - 32px);\n}\n\n.arkme-redesign-task-conversation [data-chat-flow] {\n width: calc(100% - 64px) !important;\n max-width: none !important;\n margin-left: 32px !important;\n margin-right: 32px !important;\n}\n\n.arkme-redesign-task-conversation textarea {\n font-size: 14px !important;\n}\n\n@media (width >= 1100px) {\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-directory-visible=\"true\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-directory-visible=\"false\"]) {\n grid-template-columns: 72px minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"true\"]:not([data-arkme-web-locked])) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n}\n\n[data-arkme-avatar-only=\"true\"] > :not([role=\"tree\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] {\n padding: 8px 6px 18px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button {\n justify-content: center !important;\n gap: 0 !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > :not(:first-child) {\n display: none !important;\n}\n\n.arkme-redesign-feature-page {\n background: #fff;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n padding: 30px 48px 36px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-feature-page > header {\n flex: none;\n margin: 0 0 22px;\n}\n\n.arkme-redesign-feature-page > header p {\n color: #8d9098;\n margin: 0 0 8px;\n font-size: 11px;\n}\n\n.arkme-redesign-feature-page > header h1 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 27px;\n font-weight: 600;\n}\n\n.arkme-redesign-feature-page > header span {\n color: #858992;\n margin-top: 10px;\n font-size: 12px;\n display: block;\n}\n\n.arkme-redesign-feature-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-recordings-page {\n background: #fff;\n padding: 0;\n}\n\n.arkme-redesign-recordings-page > div {\n height: 100% !important;\n}\n\n.arkme-redesign-search-page {\n padding: 66px 0 40px;\n}\n\n.arkme-redesign-search-page > header, .arkme-redesign-search-page > .arkme-redesign-feature-body {\n width: min(980px, 100% - 80px);\n margin-left: auto;\n margin-right: auto;\n}\n\n.arkme-redesign-search-page > header {\n margin-bottom: 28px;\n}\n\n.arkme-redesign-search-page > header h1 {\n font-size: 32px;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body {\n overflow-y: auto;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div {\n width: 100% !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div > header {\n display: none !important;\n}\n\n.arkme-redesign-search-page .arkme-search-box {\n box-shadow: 0 8px 28px #1c1f2709;\n color: #646872 !important;\n background: #fff !important;\n border: 1px solid #e1e2e5 !important;\n border-radius: 15px !important;\n gap: 12px !important;\n height: 68px !important;\n padding: 0 20px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"] {\n font-size: 14px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder {\n color: #92959d;\n}\n\n.arkme-redesign-search-page .arkme-search-history, .arkme-redesign-search-page .arkme-search-quick {\n margin: 24px 0 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history > div, .arkme-redesign-search-page .arkme-search-quick > div {\n gap: 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button, .arkme-redesign-search-page .arkme-search-quick button {\n text-align: left;\n overflow: hidden;\n color: #30333b !important;\n border: 0 !important;\n border-bottom: 1px solid #e6e7e9 !important;\n border-radius: 0 !important;\n justify-content: space-between !important;\n align-items: center !important;\n gap: 14px !important;\n width: 100% !important;\n height: 52px !important;\n padding: 0 6px !important;\n font-size: 12px !important;\n display: flex !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button span, .arkme-redesign-search-page .arkme-search-quick button span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.arkme-redesign-plugins-page {\n background: #fff;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: #fff !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded header {\n display: none !important;\n}\n\n.arkme-extension-toolbar {\n align-items: center;\n gap: 12px;\n height: 46px;\n display: flex;\n}\n\n.arkme-extension-toolbar label {\n color: #8e929a;\n border: 1px solid #e1e2e5;\n border-radius: 12px;\n flex: 1;\n align-items: center;\n gap: 10px;\n min-width: 0;\n height: 44px;\n padding: 0 14px;\n display: flex;\n}\n\n.arkme-extension-toolbar input {\n color: #262932;\n background: none;\n border: 0;\n outline: 0;\n flex: 1;\n min-width: 0;\n font-size: 12px;\n}\n\n.arkme-extension-toolbar > button {\n border-radius: 11px;\n height: 38px;\n padding: 0 15px;\n font-size: 11px;\n border: 1px solid #e1e2e5 !important;\n}\n\n.arkme-extension-toolbar > button:hover {\n background: #f6f6f7;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded nav {\n width: 420px;\n height: 38px !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded main {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n align-content: start;\n gap: 12px;\n padding: 16px 0 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card {\n background: #fff !important;\n border: 1px solid #e3e4e7 !important;\n border-radius: 15px !important;\n min-height: 138px !important;\n margin: 0 !important;\n padding: 18px !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card:hover {\n background: #fafafa !important;\n border-color: #d5d7dc !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-grid-span, .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"status\"], .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"alert\"] {\n grid-column: 1 / -1;\n}\n\n@keyframes arkme-icon-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkme-icon-spin {\n animation: .8s linear infinite arkme-icon-spin;\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-arkme-voice] .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-redesign-settings-surface {\n color: #20232c;\n background: none;\n width: 100%;\n height: auto;\n overflow: visible;\n}\n\n.arkme-redesign-settings-shell {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.arkme-redesign-settings-profile {\n align-items: center;\n gap: 16px;\n padding: 0 0 24px;\n display: flex;\n}\n\n.arkme-redesign-settings-profile > div:nth-child(2) {\n min-width: 0;\n}\n\n.arkme-redesign-settings-profile h1 {\n color: #20232c;\n letter-spacing: -.03em;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0 0 6px;\n font-size: 24px;\n font-weight: 600;\n line-height: 30px;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p {\n color: #858992;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 13px;\n line-height: 18px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.arkme-account-profile-qr {\n color: #858992;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin: 0;\n padding: 2px;\n display: inline-flex;\n}\n\n.arkme-account-profile-qr:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-profile-qr svg {\n width: 20px;\n height: 20px;\n display: block;\n}\n\n.arkme-redesign-settings-group {\n background: none;\n border: 0;\n border-bottom: 1px solid #e1e2e5;\n border-radius: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-group:last-child {\n border-bottom: 0;\n}\n\n.arkme-redesign-settings-group > h2 {\n color: #8a8e96;\n border-bottom: 1px solid #ededee;\n margin: 0;\n padding: 15px 1px 10px;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n}\n\n.arkme-redesign-settings-group > div {\n padding: 0;\n}\n\n.arkme-redesign-setting-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n text-decoration: none;\n display: grid;\n}\n\n.arkme-redesign-setting-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-redesign-setting-row, a.arkme-redesign-setting-row {\n cursor: pointer;\n}\n\nbutton.arkme-redesign-setting-row:hover, a.arkme-redesign-setting-row:hover {\n color: #53617d;\n}\n\n.arkme-redesign-setting-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-redesign-setting-row > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > strong.is-danger {\n color: #b54841;\n}\n\n.arkme-redesign-setting-summary {\n color: #858992;\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 360px;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-info-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: 26px minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n display: grid;\n}\n\n.arkme-account-info-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-account-info-row {\n cursor: pointer;\n}\n\n.arkme-account-info-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-account-info-icon {\n color: #6f7580;\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 26px;\n display: inline-flex;\n}\n\n.arkme-account-info-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-account-info-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-account-info-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-account-info-action {\n color: #858992;\n white-space: nowrap;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-info-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-feedback {\n color: #b54841;\n align-items: flex-start;\n gap: 6px;\n margin: 8px 0 14px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-account-dialog-backdrop {\n z-index: 50;\n background: #12141a6b;\n justify-content: center;\n align-items: center;\n padding: 18px;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.arkme-account-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n width: min(420px, 100vw - 36px);\n max-height: calc(100vh - 56px);\n overflow: auto;\n box-shadow: 0 18px 52px #11182738;\n}\n\n.arkme-account-dialog > header {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n height: 58px;\n padding: 0 16px 0 20px;\n display: flex;\n}\n\n.arkme-account-dialog h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 650;\n line-height: 24px;\n}\n\n.arkme-account-dialog > header button {\n color: #8d929b;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n width: 34px;\n height: 34px;\n}\n\n.arkme-account-qr-card {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ededee;\n border-radius: 14px;\n justify-items: center;\n gap: 7px;\n width: 270px;\n margin: 22px auto 16px;\n padding: 24px 22px 22px;\n display: grid;\n}\n\n.arkme-account-qr-card strong {\n margin-top: 4px;\n font-size: 17px;\n font-weight: 650;\n line-height: 23px;\n}\n\n.arkme-account-qr-card span, .arkme-account-qr-card small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-qr-card img {\n width: 180px;\n height: 180px;\n margin-top: 8px;\n}\n\n.arkme-account-form {\n gap: 12px;\n padding: 18px 20px 20px;\n display: grid;\n}\n\n.arkme-account-form label {\n color: #5f6570;\n gap: 7px;\n font-size: 12px;\n line-height: 18px;\n display: grid;\n}\n\n.arkme-account-form input {\n box-sizing: border-box;\n color: #20232c;\n width: 100%;\n height: 42px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n outline: none;\n padding: 0 12px;\n}\n\n.arkme-account-form input:focus {\n border-color: #9aa7c2;\n box-shadow: 0 0 0 3px #53617d1f;\n}\n\n.arkme-account-rule {\n color: #858992;\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-code-row {\n grid-template-columns: minmax(0, 1fr) 92px;\n gap: 8px;\n display: grid;\n}\n\n.arkme-account-code-row button {\n color: #343944;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n}\n\n.arkme-account-code-row button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-actions {\n justify-content: flex-end;\n gap: 10px;\n padding-top: 6px;\n display: flex;\n}\n\n.arkme-account-dialog-actions button {\n color: #343944;\n min-width: 78px;\n height: 36px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n display: inline-flex;\n}\n\n.arkme-account-dialog-actions button[type=\"submit\"], .arkme-account-dialog-actions button:last-child {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-account-dialog-actions button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-status {\n color: #13a85b;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-dialog-status.is-error {\n color: #b54841;\n}\n\n.arkme-redesign-version-row {\n grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto 18px;\n}\n\n.arkme-redesign-version-row.is-without-action {\n grid-template-columns: minmax(0, 1fr) auto 18px;\n}\n\n.arkme-redesign-version-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-version-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-value {\n color: #858992;\n white-space: nowrap;\n justify-self: end;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-version-action-slot {\n justify-content: flex-end;\n display: inline-flex;\n}\n\n.arkme-redesign-trailing-slot {\n width: 18px;\n height: 1px;\n}\n\nbutton.arkme-redesign-update-button {\n color: #343944;\n min-width: 72px;\n height: 30px;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n gap: 5px;\n padding: 0 11px;\n font-size: 11px;\n display: inline-flex;\n}\n\nbutton.arkme-redesign-update-button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\nbutton.arkme-redesign-update-button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-redesign-settings-group:has(.arkme-redesign-balance-row) {\n overflow: visible;\n}\n\n.arkme-redesign-balance-row {\n grid-template-columns: max-content max-content minmax(0, 1fr) 18px;\n column-gap: 20px;\n}\n\n.arkme-redesign-balance-row.is-without-reserved {\n grid-template-columns: max-content minmax(0, 1fr) 18px;\n}\n\n.arkme-redesign-balance-main {\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n gap: 2px;\n padding: 0;\n display: grid;\n}\n\n.arkme-redesign-balance-main > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-balance-main > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-balance-usage {\n color: #8a8e96;\n white-space: nowrap;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-redesign-reserved-balance {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-recharge-trigger {\n justify-self: end;\n}\n\n.arkme-redesign-reserved-title {\n align-items: center;\n gap: 5px;\n width: fit-content;\n display: inline-flex;\n position: relative;\n}\n\n.arkme-redesign-reserved-title > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-reserved-balance > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-reserved-help {\n box-sizing: border-box;\n color: #858992;\n cursor: help;\n border: 1px solid #a6aab2;\n border-radius: 50%;\n place-items: center;\n width: 15px;\n height: 15px;\n font-size: 10px;\n font-weight: 600;\n line-height: 1;\n display: inline-grid;\n}\n\n.arkme-redesign-reserved-help:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #7b8cad;\n}\n\n.arkme-redesign-reserved-title > [role=\"tooltip\"] {\n box-sizing: border-box;\n z-index: 20;\n color: #fff;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n background: #2e323b;\n border-radius: 8px;\n width: 240px;\n padding: 9px 11px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n transition: opacity .12s, transform .12s, visibility .12s;\n position: absolute;\n bottom: calc(100% + 8px);\n left: calc(100% - 7.5px);\n transform: translate(-50%, 2px);\n box-shadow: 0 6px 18px #181b222e;\n}\n\n.arkme-redesign-reserved-help:hover ~ [role=\"tooltip\"], .arkme-redesign-reserved-help:focus ~ [role=\"tooltip\"] {\n opacity: 1;\n visibility: visible;\n transform: translate(-50%);\n}\n\n.arkme-billing-backdrop {\n z-index: 120;\n backdrop-filter: blur(3px);\n background: #181b223d;\n place-items: center;\n padding: 28px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-billing-recharge-dialog, .arkme-billing-payment-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #dedfe3;\n border-radius: 20px;\n width: min(620px, 100%);\n max-height: min(720px, 100vh - 56px);\n overflow-y: auto;\n box-shadow: 0 24px 72px #191c232e;\n}\n\n.arkme-billing-payment-dialog {\n width: min(420px, 100%);\n}\n\n.arkme-billing-dialog-header {\n border-bottom: 1px solid #ececef;\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n min-height: 78px;\n padding: 20px 22px 16px;\n display: flex;\n}\n\n.arkme-billing-dialog-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n line-height: 25px;\n}\n\n.arkme-billing-dialog-header p {\n overflow-wrap: anywhere;\n color: #8a8e96;\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-dialog-header > button {\n color: #777c85;\n width: 32px;\n height: 32px;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n place-items: center;\n font-size: 22px;\n display: grid;\n}\n\n.arkme-billing-dialog-header > button:hover {\n color: #20232c;\n background: #f3f3f5;\n}\n\n.arkme-billing-dialog-body {\n padding: 18px 22px 22px;\n}\n\n.arkme-billing-dialog-balance {\n border-bottom: 1px solid #ececef;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 12px;\n min-height: 48px;\n padding: 0 2px 16px;\n display: grid;\n}\n\n.arkme-billing-dialog-balance > span {\n color: #8a8e96;\n grid-column: 1;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-billing-dialog-balance > strong {\n grid-column: 1;\n font-size: 22px;\n font-weight: 600;\n line-height: 28px;\n}\n\n.arkme-billing-dialog-balance > button, .arkme-billing-error > button {\n color: #626772;\n height: 30px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n grid-area: 1 / 2 / span 2;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-billing-products-section, .arkme-billing-payment-section {\n padding-top: 17px;\n}\n\n.arkme-billing-products-section h3, .arkme-billing-payment-section h3 {\n color: #747984;\n margin: 0 0 11px;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.arkme-billing-product-grid {\n width: 100%;\n}\n\n.arkme-billing-product-grid > button {\n color: #20232c;\n min-width: 0;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n align-content: center;\n gap: 4px;\n padding: 9px 11px;\n display: grid;\n}\n\n.arkme-billing-product-grid > button:hover {\n background: #f8f8f9;\n border-color: #cfd2d8;\n}\n\n.arkme-billing-product-grid > button.is-selected {\n border-color: #75839e;\n box-shadow: 0 0 0 1px #75839e;\n}\n\n.arkme-billing-product-grid > button > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-billing-product-grid > button > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 19px;\n}\n\n.arkme-billing-payment-actions {\n flex-wrap: wrap;\n gap: 10px;\n display: flex;\n}\n\n.arkme-billing-payment-actions > button {\n color: #333842;\n min-width: 154px;\n height: 38px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.arkme-billing-payment-actions > button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\n.arkme-billing-payment-actions > button:disabled, .arkme-billing-product-grid > button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-billing-platform-icon {\n flex: none;\n width: 18px;\n height: 18px;\n}\n\n.arkme-billing-platform-icon.is-alipay {\n color: #1677ff;\n}\n\n.arkme-billing-platform-icon.is-wechat {\n color: #07c160;\n}\n\n.arkme-billing-state {\n color: #858992;\n margin: 12px 0 2px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-error {\n color: #b54841;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n margin-top: 10px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-billing-error.is-purchase {\n justify-content: flex-start;\n}\n\n.arkme-billing-payment-content {\n text-align: center;\n justify-items: center;\n gap: 10px;\n padding: 28px 24px 18px;\n display: grid;\n}\n\n.arkme-billing-payment-content > .arkme-billing-platform-icon {\n width: 38px;\n height: 38px;\n margin-bottom: 4px;\n}\n\n.arkme-billing-payment-content > img {\n border-radius: 10px;\n width: 210px;\n height: 210px;\n}\n\n.arkme-billing-payment-content > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-billing-payment-content > p {\n color: #858992;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-payment-content.is-paid > strong {\n color: #16794f;\n font-size: 18px;\n line-height: 25px;\n}\n\n.arkme-billing-payment-content.is-paid > .arkme-billing-error {\n justify-content: center;\n}\n\n.arkme-billing-payment-content.is-crediting > strong {\n color: #335f9e;\n}\n\n.arkme-billing-dialog-actions {\n flex-wrap: wrap;\n justify-content: center;\n gap: 9px;\n padding: 0 22px 20px;\n display: flex;\n}\n\n.arkme-billing-dialog-actions > button, .arkme-billing-primary-action {\n color: #3c424d;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n padding: 0 14px;\n font-size: 12px;\n}\n\n.arkme-billing-dialog-actions > .arkme-billing-primary-action, .arkme-billing-payment-content > .arkme-billing-primary-action {\n color: #fff;\n background: #20232d;\n border-color: #20232d;\n}\n\n.arkme-redesign-settings-error {\n color: #b54841;\n background: #fff3f0;\n border-radius: 10px;\n margin: -8px 0 28px;\n padding: 10px 13px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-remote-settings-dialog-backdrop {\n z-index: 1150;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-remote-settings-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n flex-direction: column;\n width: min(720px, 100vw - 48px);\n max-height: min(720px, 100vh - 48px);\n display: flex;\n overflow: hidden;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-page-header {\n box-sizing: border-box;\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n min-height: 74px;\n padding: 0 24px 0 28px;\n display: flex;\n}\n\n.arkme-remote-page-header > div {\n min-width: 0;\n}\n\n.arkme-remote-page-header h1 {\n color: #20232c;\n letter-spacing: -.02em;\n margin: 0;\n font-size: 18px;\n font-weight: 620;\n line-height: 25px;\n}\n\n.arkme-remote-page-header p {\n color: #8b9098;\n margin: 3px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-settings-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-settings-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-settings-dialog-body {\n overscroll-behavior: contain;\n gap: 28px;\n padding: 24px 28px 28px;\n display: grid;\n overflow-y: auto;\n}\n\n.arkme-remote-section {\n gap: 13px;\n display: grid;\n}\n\n.arkme-remote-section-header {\n justify-content: space-between;\n align-items: flex-end;\n gap: 18px;\n min-height: 34px;\n display: flex;\n}\n\n.arkme-remote-section-header > div:first-child {\n min-width: 0;\n}\n\n.arkme-remote-section-header h2 {\n color: #292c34;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-remote-section-header p {\n color: #8b9098;\n margin: 2px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-section-header > div:last-child {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-remote-icon-button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-icon-button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-add-button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 5px;\n padding: 0 12px;\n font-size: 11px;\n font-weight: 550;\n display: inline-flex;\n}\n\n.arkme-remote-add-button:hover {\n background: #343944;\n}\n\n.arkme-remote-add-button:disabled, .arkme-remote-icon-button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-settings-card {\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-allow-row {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 60px;\n padding: 0 18px;\n display: flex;\n}\n\n.arkme-remote-allow-row > div {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-allow-row strong, .arkme-remote-device-row strong, .arkme-remote-name-row strong {\n color: #343944;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.arkme-remote-allow-row span, .arkme-remote-device-row span, .arkme-remote-name-row small {\n color: #8b9098;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-switch {\n cursor: pointer;\n background: #d7d9dd;\n border: 0;\n border-radius: 999px;\n flex: none;\n width: 40px;\n height: 23px;\n padding: 0;\n transition: background .16s;\n position: relative;\n}\n\n.arkme-remote-switch > span {\n background: #fff;\n border-radius: 50%;\n width: 17px;\n height: 17px;\n transition: transform .16s;\n position: absolute;\n top: 3px;\n left: 3px;\n box-shadow: 0 1px 3px #14182038;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] {\n background: #3b9cf5;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] > span {\n transform: translateX(17px);\n}\n\n.arkme-remote-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-device-row {\n border-bottom: 1px solid #ededee;\n grid-template-columns: 24px minmax(0, 1fr) auto;\n align-items: center;\n gap: 11px;\n min-height: 64px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-device-row:last-child {\n border-bottom: 0;\n}\n\n.arkme-remote-device-row > svg {\n color: #68707c;\n}\n\n.arkme-remote-device-row > div {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-device-row > button {\n color: #5d626c;\n min-height: 30px;\n font: inherit;\n cursor: pointer;\n background: #f3f3f4;\n border: 0;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 10px;\n}\n\n.arkme-remote-device-row > button:hover {\n color: #b54841;\n background: #fff0ed;\n}\n\n.arkme-remote-device-row > button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-empty-row {\n color: #989ca3;\n align-items: center;\n gap: 11px;\n min-height: 52px;\n padding: 0 18px;\n font-size: 11px;\n display: flex;\n}\n\n.arkme-remote-empty-row > svg {\n color: #a2a6ad;\n}\n\n.arkme-remote-name-row {\n color: #727780;\n width: 100%;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n grid-template-columns: 24px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 11px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-name-row:hover {\n background: #fafafb;\n}\n\n.arkme-remote-name-row > span {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-name-row small {\n display: block;\n}\n\n.arkme-remote-rename {\n border-top: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 7px;\n padding: 12px 18px;\n display: grid;\n}\n\n.arkme-remote-rename input {\n box-sizing: border-box;\n color: #20232c;\n min-width: 0;\n height: 34px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n outline: 0;\n padding: 0 10px;\n font-size: 12px;\n}\n\n.arkme-remote-rename input:focus {\n border-color: #6eb3f3;\n box-shadow: 0 0 0 3px #3b9cf51f;\n}\n\n.arkme-remote-rename button {\n color: #4f5560;\n min-height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e0e1e4;\n border-radius: 9px;\n padding: 0 11px;\n font-size: 11px;\n}\n\n.arkme-remote-rename button[type=\"submit\"] {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-remote-rename button:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-error {\n margin: -22px 0 0;\n}\n\n.arkme-remote-dialog-backdrop {\n z-index: 1200;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n overflow: auto;\n}\n\n.arkme-remote-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n width: min(440px, 100vw - 32px);\n max-height: calc(100vh - 48px);\n padding: 28px;\n position: relative;\n overflow: auto;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-dialog-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n position: absolute;\n top: 16px;\n right: 16px;\n}\n\n.arkme-remote-dialog-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-dialog-symbol {\n color: #343944;\n justify-content: center;\n align-items: center;\n gap: 9px;\n height: 38px;\n display: flex;\n}\n\n.arkme-remote-dialog-symbol > span {\n background: #d6d8dc;\n width: 28px;\n height: 1px;\n}\n\n.arkme-remote-dialog > header {\n text-align: center;\n margin: 12px 0 22px;\n}\n\n.arkme-remote-dialog h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 19px;\n font-weight: 620;\n line-height: 27px;\n}\n\n.arkme-remote-dialog header p {\n color: #858992;\n margin: 6px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-pairing-tabs {\n box-sizing: border-box;\n background: #f1f1f2;\n border-radius: 11px;\n grid-template-columns: 1fr 1fr;\n gap: 3px;\n height: 38px;\n padding: 3px;\n display: grid;\n}\n\n.arkme-remote-pairing-tabs button {\n color: #737881;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n color: #252831;\n background: #fff;\n box-shadow: 0 1px 3px #14182017;\n}\n\n.arkme-remote-pairing-display {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 308px;\n margin-top: 14px;\n padding: 24px;\n display: flex;\n position: relative;\n}\n\n.arkme-remote-pairing-display > img {\n width: 232px;\n height: 232px;\n image-rendering: pixelated;\n display: block;\n}\n\n.arkme-remote-pairing-display > p {\n color: #8b9098;\n text-align: center;\n margin: 10px 0 0;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-remote-pairing-code {\n color: #20232c;\n letter-spacing: .17em;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: all;\n font-size: 33px;\n font-weight: 620;\n line-height: 46px;\n}\n\n.arkme-remote-pairing-tools {\n gap: 4px;\n display: flex;\n position: absolute;\n bottom: 12px;\n right: 12px;\n}\n\n.arkme-remote-pairing-tools button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-pairing-tools button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-pairing-expired {\n text-align: center;\n justify-items: center;\n gap: 7px;\n display: grid;\n}\n\n.arkme-remote-pairing-expired strong {\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-remote-pairing-expired p {\n color: #8b9098;\n margin: 0;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-expired button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n margin-top: 7px;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-remote-dialog-note {\n color: #858992;\n align-items: flex-start;\n gap: 7px;\n margin: 14px 2px 0;\n font-size: 10px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-remote-dialog-note > svg {\n color: #5e856d;\n flex: none;\n margin-top: 1px;\n}\n\n.arkme-remote-settings-close:focus-visible, .arkme-remote-icon-button:focus-visible, .arkme-remote-add-button:focus-visible, .arkme-remote-switch:focus-visible, .arkme-remote-device-row > button:focus-visible, .arkme-remote-name-row:focus-visible, .arkme-remote-rename button:focus-visible, .arkme-remote-dialog button:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #3b9cf5;\n}\n\n@media (width <= 520px) {\n .arkme-remote-settings-dialog-backdrop {\n padding: 10px;\n }\n\n .arkme-remote-settings-dialog {\n border-radius: 17px;\n width: calc(100vw - 20px);\n max-height: calc(100vh - 20px);\n }\n\n .arkme-remote-page-header {\n min-height: 68px;\n padding: 0 16px 0 20px;\n }\n\n .arkme-remote-page-header p {\n display: none;\n }\n\n .arkme-remote-settings-dialog-body {\n gap: 24px;\n padding: 20px 18px 22px;\n }\n\n .arkme-remote-section-header p {\n display: none;\n }\n\n .arkme-remote-device-row {\n grid-template-columns: 22px minmax(0, 1fr);\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .arkme-remote-device-row > button {\n grid-column: 2;\n justify-self: start;\n }\n\n .arkme-remote-dialog-backdrop {\n padding: 12px;\n }\n\n .arkme-remote-dialog {\n padding: 24px 20px;\n }\n\n .arkme-remote-pairing-display {\n min-height: 282px;\n padding: 18px;\n }\n\n .arkme-remote-pairing-display > img {\n width: min(224px, 100%);\n height: auto;\n }\n\n .arkme-remote-pairing-code {\n letter-spacing: .12em;\n font-size: 26px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-remote-switch, .arkme-remote-switch > span {\n transition: none;\n }\n}\n\n.arkme-redesign-model-settings {\n color: #20232c;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\n.arkme-redesign-model-settings > header {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 42px 0 22px;\n}\n\n.arkme-redesign-model-settings > header button {\n color: #525762;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 18px;\n align-items: center;\n gap: 4px;\n padding: 0 10px 0 7px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.arkme-redesign-model-settings > header button:hover {\n color: #20232c;\n background: #f6f6f7;\n}\n\n.arkme-redesign-model-settings-body {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 0 0 68px;\n}\n\n.arkme-redesign-model-settings-body > * {\n max-width: none !important;\n}\n\n.arkme-redesign-task-start {\n place-items: center;\n width: 100%;\n height: 100%;\n padding: 28px 58px 64px;\n display: grid;\n}\n\n.arkme-redesign-task-start-inner {\n text-align: center;\n width: min(760px, 88%);\n transform: translateY(-12px);\n}\n\n.arkme-redesign-task-greeting {\n justify-content: center;\n align-items: center;\n gap: 12px;\n margin-bottom: 24px;\n display: flex;\n}\n\n.arkme-redesign-task-greeting img {\n object-fit: contain;\n flex: none;\n width: 62px;\n height: 16px;\n display: block;\n}\n\n.arkme-redesign-task-start h1 {\n letter-spacing: -.03em;\n margin: 0;\n font-size: 29px;\n font-weight: 600;\n line-height: 1.15;\n}\n\n.arkme-redesign-hero-input {\n border: 1px solid var(--arkme-focus);\n text-align: left;\n background: #fff;\n border-radius: 17px;\n grid-template-rows: minmax(56px, 1fr) auto;\n min-height: 142px;\n padding: 17px 16px 13px 20px;\n display: grid;\n box-shadow: 0 8px 30px #1c1f270b;\n}\n\n.arkme-redesign-hero-input:focus-within {\n border-color: #aebdff;\n box-shadow: 0 10px 38px #36488c13, 0 0 0 3px #91a4ff12;\n}\n\n.arkme-redesign-hero-input textarea {\n resize: none;\n color: #20232c;\n border: 0;\n outline: 0;\n width: 100%;\n min-height: 58px;\n padding: 0;\n font-size: 15px;\n line-height: 1.6;\n}\n\n.arkme-redesign-hero-input textarea::placeholder {\n color: #a3a6ad;\n}\n\n.arkme-redesign-hero-controls {\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n display: flex;\n}\n\n.arkme-redesign-hero-controls > div {\n align-items: center;\n gap: 7px;\n display: flex;\n}\n\n.arkme-redesign-source-button {\n border-radius: 22px;\n align-items: center;\n gap: 8px;\n height: 36px;\n padding: 0 13px;\n font-size: 13px;\n display: flex;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool, .arkme-redesign-send-task {\n border-radius: 50%;\n place-items: center;\n width: 40px;\n height: 40px;\n display: grid;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool:hover {\n background: #f5f5f6;\n}\n\n.arkme-redesign-send-task {\n color: #fff !important;\n background: #20232d !important;\n border: 0 !important;\n}\n\n.arkme-redesign-send-task:disabled {\n cursor: default;\n background: #d9dade !important;\n}\n\n.arkme-redesign-task-error {\n color: #b84747;\n text-align: left;\n margin-top: 10px;\n font-size: 12px;\n}\n\n.arkme-redesign-starters {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n width: calc(100% - 18px);\n margin: 22px auto 0;\n display: grid;\n}\n\n.arkme-redesign-starters > button {\n text-align: left;\n border-right: 1px solid #e7e7e9;\n align-items: center;\n gap: 12px;\n min-width: 0;\n min-height: 48px;\n padding: 4px 18px;\n display: flex;\n}\n\n.arkme-redesign-starters > button:last-child {\n border-right: 0;\n}\n\n.arkme-redesign-starters > button:hover strong {\n color: #5365ad;\n}\n\n.arkme-redesign-starter-icon {\n color: #30333b;\n border: 1px solid #e2e3e6;\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n}\n\n.arkme-redesign-starters > button > span:last-child {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-starters strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-redesign-starters small {\n color: #8d919a;\n font-size: 12px;\n}\n\n.arkme-redesign-details {\n z-index: 4;\n top: var(--arkme-native-titlebar);\n background: #fff;\n border-left: 1px solid #e7e7e9;\n width: 360px;\n position: absolute;\n bottom: 0;\n right: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-calendar-overlay {\n z-index: 14;\n inset: var(--arkme-native-titlebar) 0 0;\n pointer-events: none;\n position: absolute;\n}\n\n.arkme-redesign-calendar-overlay > * {\n pointer-events: auto;\n}\n\n.arkme-redesign-overlays {\n z-index: 20;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.arkme-redesign-overlays > * {\n pointer-events: auto;\n}\n\n.arkme-workspace-dialog-backdrop {\n z-index: 60;\n backdrop-filter: blur(2px);\n background: #181b2238;\n place-items: center;\n padding: 28px;\n display: grid;\n position: absolute;\n inset: 0;\n}\n\n.arkme-workspace-dialog {\n background: #fff;\n border: 1px solid #dddfe4;\n border-radius: 18px;\n grid-template-rows: auto auto minmax(0, 1fr) auto;\n width: min(640px, 100%);\n height: min(620px, 100%);\n min-height: 420px;\n display: grid;\n overflow: hidden;\n box-shadow: 0 24px 70px #191c232e;\n}\n\n.arkme-workspace-dialog > header {\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n padding: 22px 24px 16px;\n display: flex;\n}\n\n.arkme-workspace-dialog > header span {\n color: #8b8e96;\n font-size: 10px;\n}\n\n.arkme-workspace-dialog > header h2 {\n margin: 5px 0 0;\n font-size: 19px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog > header > button {\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-dialog > nav {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n align-items: center;\n gap: 2px;\n min-height: 42px;\n padding: 0 22px;\n display: flex;\n overflow-x: auto;\n}\n\n.arkme-workspace-dialog > nav > span {\n white-space: nowrap;\n color: #9a9da5;\n align-items: center;\n gap: 2px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > nav button {\n color: #666a73;\n border-radius: 8px;\n align-items: center;\n gap: 5px;\n height: 30px;\n padding: 0 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-directory-list {\n min-height: 0;\n padding: 10px 14px;\n overflow-y: auto;\n}\n\n.arkme-workspace-directory-list > button {\n text-align: left;\n border-radius: 11px;\n grid-template-columns: 34px minmax(0, 1fr) 18px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 48px;\n padding: 0 11px;\n display: grid;\n}\n\n.arkme-workspace-directory-list > button:hover {\n background: #f5f5f7;\n}\n\n.arkme-workspace-directory-list > button > span {\n color: #636873;\n border: 1px solid #e5e6e9;\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-directory-list strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog-status, .arkme-workspace-dialog-error {\n color: #8c9098;\n text-align: center;\n padding: 54px 16px;\n font-size: 12px;\n}\n\n.arkme-workspace-dialog-error {\n color: #b94b4b;\n}\n\n.arkme-workspace-dialog > footer {\n border-top: 1px solid #e8e9ec;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 72px;\n padding: 12px 18px;\n display: flex;\n}\n\n.arkme-workspace-dialog-back {\n color: #696d76;\n align-items: center;\n gap: 6px;\n height: 36px;\n padding: 0 10px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > footer > div {\n align-items: center;\n gap: 12px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-workspace-dialog > footer small {\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #92959d;\n max-width: 280px;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog > footer > div > button {\n color: #fff;\n background: #20232d;\n border-radius: 10px;\n flex: none;\n height: 38px;\n padding: 0 17px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-redesign-placeholder {\n color: #858992;\n text-align: center;\n place-content: center;\n justify-items: center;\n width: 100%;\n height: 100%;\n display: grid;\n}\n\n.arkme-redesign-placeholder > span {\n color: #555a64;\n border: 1px solid #e1e2e5;\n border-radius: 14px;\n place-items: center;\n width: 48px;\n height: 48px;\n display: grid;\n}\n\n.arkme-redesign-placeholder h1 {\n color: #3e424b;\n margin: 16px 0 7px;\n font-size: 18px;\n}\n\n.arkme-redesign-placeholder p {\n margin: 0;\n font-size: 12px;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] {\n --arkme-line: var(--dsw-alias-border-l1);\n --arkme-muted: var(--dsw-alias-label-tertiary);\n --arkme-soft: var(--dsw-alias-bg-layer-2);\n --arkme-focus: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"], body[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] {\n background: var(--dsw-specific-sidebar-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-brand\"] {\n box-shadow: none;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"light\"] {\n display: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: block !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] > div {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-surface, body[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] div:has( > input[aria-label=\"搜索\"]) {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button:hover {\n background: var(--dsw-alias-interactive-bg-hover) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] > span[aria-hidden=\"true\"] {\n background: var(--dsw-alias-state-business-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [aria-label=\"Arkme 会话列表\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] button[aria-label=\"新任务\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] button[aria-label=\"新任务\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"treeitem\"][aria-selected=\"true\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"treeitem\"][aria-selected=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"status\"][aria-label$=\"个人测试版\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"status\"][aria-label$=\"个人测试版\"] {\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button:first-child, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button:first-child {\n border-color: var(--dsw-alias-button-primary-fill) !important;\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover, body[data-ds-dark-theme] .arkme-update-capsule {\n border-color: var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, transparent);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading h2, body[data-ds-dark-theme] .arkme-update-release-notes strong, body[data-ds-dark-theme] .arkme-update-capsule-copy strong {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading span, body[data-ds-dark-theme] .arkme-update-popover-summary, body[data-ds-dark-theme] .arkme-update-release-notes small, body[data-ds-dark-theme] .arkme-update-capsule-copy small {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-release-notes, body[data-ds-dark-theme] .arkme-update-release-notes > div + div {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-update-later, body[data-ds-dark-theme] .arkme-update-progress, body[data-ds-dark-theme] .arkme-update-rail:not(.is-available) {\n background: var(--dsw-alias-fill-l1);\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"当天内容\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"] > span[aria-hidden] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > header button, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[aria-label*=\"记录\"] {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > div > span {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"false\"][aria-label*=\"条记录\"] > span:last-child {\n background: var(--dsw-alias-bg-layer-2) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span {\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span:last-child {\n color: var(--dsw-alias-label-primary-inverted) !important;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article > div > div:last-child {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article h3, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article p {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article time, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article span {\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-root, body[data-ds-dark-theme] .arkme-redesign-chat-panel, body[data-ds-dark-theme] .arkme-redesign-content, body[data-ds-dark-theme] .arkme-redesign-feature-page, body[data-ds-dark-theme] .arkme-redesign-recordings-page, body[data-ds-dark-theme] .arkme-redesign-plugins-page, body[data-ds-dark-theme] .arkme-redesign-model-settings, body[data-ds-dark-theme] .arkme-redesign-details {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-native-desktop .arkme-redesign-root:before {\n background: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-sidebar-fill);\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button, body[data-ds-dark-theme] .arkme-redesign-profile-menu button, body[data-ds-dark-theme] .arkme-redesign-task-list > button, body[data-ds-dark-theme] .arkme-redesign-task-first, body[data-ds-dark-theme] .arkme-workspace-dialog > nav button, body[data-ds-dark-theme] .arkme-workspace-dialog-back, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button:hover, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button:hover, body[data-ds-dark-theme] .arkme-redesign-profile-menu button:hover, body[data-ds-dark-theme] .arkme-redesign-chat-search:hover, body[data-ds-dark-theme] .arkme-redesign-task-section-title button:hover, body[data-ds-dark-theme] .arkme-redesign-task-list > button:hover, body[data-ds-dark-theme] .arkme-redesign-task-first:hover, body[data-ds-dark-theme] .arkme-extension-toolbar > button:hover, body[data-ds-dark-theme] button.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] a.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button:hover, body[data-ds-dark-theme] .arkme-redesign-round-tool:hover, body[data-ds-dark-theme] .arkme-workspace-directory-list > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button.is-active, body[data-ds-dark-theme] .arkme-redesign-task-list > button.is-selected {\n background: var(--dsw-alias-interactive-bg-active);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-footer, body[data-ds-dark-theme] .arkme-redesign-profile-menu, body[data-ds-dark-theme] .arkme-redesign-task-section, body[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-header, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-row, body[data-ds-dark-theme] .arkme-account-info-row, body[data-ds-dark-theme] .arkme-redesign-starters > button, body[data-ds-dark-theme] .arkme-redesign-details, body[data-ds-dark-theme] .arkme-workspace-dialog > nav, body[data-ds-dark-theme] .arkme-workspace-dialog > footer {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-popover, body[data-ds-dark-theme] .arkme-workspace-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-head small, body[data-ds-dark-theme] .arkme-redesign-profile-menu small, body[data-ds-dark-theme] .arkme-redesign-profile-menu button > svg:last-child, body[data-ds-dark-theme] .arkme-redesign-task-section-title, body[data-ds-dark-theme] .arkme-redesign-task-copy small, body[data-ds-dark-theme] .arkme-account-profile-qr, body[data-ds-dark-theme] .arkme-redesign-feature-page > header p, body[data-ds-dark-theme] .arkme-redesign-feature-page > header span, body[data-ds-dark-theme] .arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder, body[data-ds-dark-theme] .arkme-redesign-settings-profile p, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-summary, body[data-ds-dark-theme] .arkme-account-info-copy > small, body[data-ds-dark-theme] .arkme-account-info-action, body[data-ds-dark-theme] .arkme-account-info-row > svg, body[data-ds-dark-theme] .arkme-account-info-icon, body[data-ds-dark-theme] .arkme-redesign-setting-row > svg, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea::placeholder, body[data-ds-dark-theme] .arkme-redesign-starters small, body[data-ds-dark-theme] .arkme-workspace-dialog > header span, body[data-ds-dark-theme] .arkme-workspace-dialog > nav > span, body[data-ds-dark-theme] .arkme-workspace-dialog-status, body[data-ds-dark-theme] .arkme-workspace-dialog > footer small, body[data-ds-dark-theme] .arkme-redesign-placeholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label, body[data-ds-dark-theme] .arkme-extension-toolbar > button, body[data-ds-dark-theme] .arkme-redesign-settings-group, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-workspace-directory-list > button > span, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n border-color: var(--dsw-alias-border-l2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-extension-toolbar input, body[data-ds-dark-theme] .arkme-redesign-settings-profile h1, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-task-start h1, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-redesign-placeholder h1 {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-list, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-surface, body[data-ds-dark-theme] .arkme-redesign-settings-group {\n color: var(--dsw-alias-label-primary);\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog > header, body[data-ds-dark-theme] .arkme-account-qr-card {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-account-qr-card, body[data-ds-dark-theme] .arkme-account-form input, body[data-ds-dark-theme] .arkme-account-code-row button, body[data-ds-dark-theme] .arkme-account-dialog-actions button {\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-border-l2);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog-actions button[type=\"submit\"], body[data-ds-dark-theme] .arkme-account-dialog-actions button:last-child {\n border-color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nbody[data-ds-dark-theme] .arkme-account-rule, body[data-ds-dark-theme] .arkme-account-qr-card span, body[data-ds-dark-theme] .arkme-account-qr-card small, body[data-ds-dark-theme] .arkme-account-form label {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-surface, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-box {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-greeting img {\n filter: invert() hue-rotate(180deg);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input textarea {\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon {\n background: var(--dsw-alias-button-elevated-fill) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card:hover {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-interactive-bg-hover) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-error {\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-page-header h1, body[data-ds-dark-theme] .arkme-remote-section-header h2, body[data-ds-dark-theme] .arkme-remote-allow-row strong, body[data-ds-dark-theme] .arkme-remote-device-row strong, body[data-ds-dark-theme] .arkme-remote-name-row strong, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-code {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-section-header p, body[data-ds-dark-theme] .arkme-remote-page-header p, body[data-ds-dark-theme] .arkme-remote-allow-row span, body[data-ds-dark-theme] .arkme-remote-device-row span, body[data-ds-dark-theme] .arkme-remote-name-row small, body[data-ds-dark-theme] .arkme-remote-dialog header p, body[data-ds-dark-theme] .arkme-remote-pairing-display > p, body[data-ds-dark-theme] .arkme-remote-dialog-note, body[data-ds-dark-theme] .arkme-remote-empty-row {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-card, body[data-ds-dark-theme] .arkme-remote-settings-dialog, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-display, body[data-ds-dark-theme] .arkme-remote-rename input {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-allow-row, body[data-ds-dark-theme] .arkme-remote-device-row, body[data-ds-dark-theme] .arkme-remote-rename, body[data-ds-dark-theme] .arkme-remote-page-header {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close, body[data-ds-dark-theme] .arkme-remote-icon-button, body[data-ds-dark-theme] .arkme-remote-dialog-close, body[data-ds-dark-theme] .arkme-remote-pairing-tools button, body[data-ds-dark-theme] .arkme-remote-name-row {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close:hover, body[data-ds-dark-theme] .arkme-remote-icon-button:hover, body[data-ds-dark-theme] .arkme-remote-dialog-close:hover, body[data-ds-dark-theme] .arkme-remote-pairing-tools button:hover, body[data-ds-dark-theme] .arkme-remote-name-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-add-button, body[data-ds-dark-theme] .arkme-remote-rename button[type=\"submit\"], body[data-ds-dark-theme] .arkme-remote-pairing-expired button {\n background: var(--dsw-alias-button-primary-fill);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-device-row > button, body[data-ds-dark-theme] .arkme-remote-rename button {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs {\n background: var(--dsw-alias-bg-layer-2);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-dialog-backdrop, body[data-ds-dark-theme] .arkme-remote-dialog-backdrop {\n background: #07090d8f;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-setting-row > strong.is-danger, body[data-ds-dark-theme] .arkme-redesign-task-error, body[data-ds-dark-theme] .arkme-workspace-dialog-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i {\n background: var(--dsw-alias-state-success-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i:after {\n background: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-matrix i, body[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 3px var(--dsw-alias-state-business-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-starters > button:hover strong {\n color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task, body[data-ds-dark-theme] .arkme-workspace-dialog > footer > div > button {\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task:disabled {\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-workspace-dialog-backdrop {\n background: var(--dsw-alias-bg-mask-1);\n}\n\n@media (width <= 1024px) {\n .arkme-redesign-chat-panel {\n width: 264px;\n left: 82px;\n }\n\n .arkme-redesign-content {\n left: 82px;\n }\n\n .arkme-redesign-content.has-panel {\n left: 346px;\n }\n\n .arkme-redesign-rail {\n left: 12px;\n }\n\n .arkme-redesign-starters > button {\n padding: 0 10px;\n }\n\n .arkme-redesign-feature-page {\n padding-left: 30px;\n padding-right: 30px;\n }\n}\n\n@media (width <= 820px) {\n .arkme-redesign-chat-panel {\n display: none;\n }\n\n .arkme-redesign-content.has-panel {\n left: 82px;\n }\n\n .arkme-redesign-task-start {\n padding: 28px;\n }\n\n .arkme-redesign-starters {\n grid-template-columns: 1fr;\n gap: 6px;\n }\n\n .arkme-redesign-starters > button {\n border-right: 0;\n }\n\n .arkme-voiceprint-relationships {\n grid-template-columns: minmax(0, 1fr) !important;\n gap: 28px !important;\n }\n\n .arkme-voiceprint-outbound {\n border-left: 0 !important;\n border-top: 1px solid var(--dsw-alias-border-subtle, #e6e7eb) !important;\n padding-top: 28px !important;\n padding-left: 0 !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-redesign-task-matrix i {\n opacity: .6;\n animation: none;\n }\n\n .arkme-update-rail.is-downloading svg, .arkme-update-popover, .arkme-update-capsule, .arkme-update-progress.is-indeterminate span {\n animation: none;\n }\n\n .arkme-update-rail, .arkme-update-progress span {\n transition: none;\n }\n}\n\n.arkme-contact-directory, .arkme-directory-detail-pane {\n box-sizing: border-box;\n min-width: 0;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 13px;\n overflow: hidden;\n}\n\n[data-arkme-directory-mode=\"contacts\"] {\n background: var(--dsw-specific-sidebar-fill, #fff) !important;\n border-left-color: var(--dsw-alias-border-l1, #ececef) !important;\n}\n\n.arkme-contact-directory {\n overflow-wrap: anywhere;\n padding: 8px 6px 18px;\n overflow-y: auto;\n}\n\n.arkme-directory-detail-pane {\n overflow: hidden;\n}\n\n.arkme-contact-directory button, .arkme-directory-detail-pane button {\n appearance: none;\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n border: 0;\n margin: 0;\n}\n\n.arkme-contact-directory-section {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n min-width: 0;\n padding: 2px 0 5px;\n}\n\n.arkme-contact-directory-section-header {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-width: 0;\n min-height: 42px;\n padding: 0 10px;\n display: flex;\n}\n\n.arkme-contact-directory-section-title {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-contact-directory-section-title strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.arkme-contact-directory-caret {\n width: 14px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n transform-origin: center;\n flex: none;\n font-size: 18px;\n line-height: 1;\n transition: transform .16s;\n}\n\n.arkme-contact-directory-section-header[aria-expanded=\"true\"] .arkme-contact-directory-caret {\n transform: rotate(90deg);\n}\n\n.arkme-contact-directory-section-header:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-section-body {\n min-width: 0;\n padding: 0 0 5px;\n}\n\n.arkme-contact-directory-list {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-directory-count {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n font-variant-numeric: tabular-nums;\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-directory-row {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 13px;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-width: 0;\n min-height: 52px;\n margin: 1px 0;\n padding: 7px 10px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row img {\n object-fit: cover;\n border-radius: 50%;\n flex: none;\n width: 38px;\n height: 38px;\n}\n\n.arkme-contact-directory-row.is-static {\n cursor: default;\n}\n\n.arkme-contact-directory-row.is-selected {\n background: var(--dsw-alias-interactive-bg-active, #eef0f4);\n}\n\n.arkme-contact-directory-row:not(.is-static):hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-avatar {\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy {\n flex: 1;\n align-content: center;\n min-width: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy small {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-letter {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n padding: 8px 10px 2px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n}\n\n.arkme-contact-directory-alphabetical, .arkme-contact-directory-letter-group {\n min-width: 0;\n}\n\n.arkme-contact-directory-status, .arkme-contact-directory-warning {\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n overflow-wrap: anywhere;\n margin: 3px 8px;\n padding: 7px 9px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-contact-directory-warning {\n color: var(--dsw-alias-state-warning-primary, #b45309);\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n border-radius: 9px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-contact-directory-warning button {\n color: inherit;\n cursor: pointer;\n background: none;\n flex: none;\n padding: 2px 4px;\n font-weight: 600;\n}\n\n.arkme-contact-directory-more {\n text-align: center;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n width: calc(100% - 16px);\n min-height: 32px;\n padding: 6px 8px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n margin: 3px 8px !important;\n}\n\n.arkme-contact-directory-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 14px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-directory-detail-empty {\n background: var(--dsw-alias-bg-base, #fff);\n place-items: center;\n min-width: 0;\n height: 100%;\n min-height: 0;\n display: grid;\n}\n\n.arkme-directory-detail-logo {\n object-fit: contain;\n opacity: .9;\n width: 96px;\n height: 96px;\n}\n\n.arkme-contact-detail, .arkme-contact-profile, .arkme-contact-world-card, .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.arkme-contact-detail {\n background: var(--dsw-alias-bg-base, #fff);\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n padding: 32px clamp(24px, 5vw, 56px);\n}\n\n.arkme-contact-profile-main {\n grid-template-columns: 72px minmax(0, 1fr) auto;\n align-items: center;\n gap: 18px;\n width: min(100%, 760px);\n margin: 0 auto;\n display: grid;\n}\n\n.arkme-contact-profile-avatar {\n border-radius: 50%;\n place-items: center;\n width: 72px;\n height: 72px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile-identity {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-profile-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n font-size: 20px;\n font-weight: 650;\n line-height: 28px;\n display: block;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-contact-profile-fields > div {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #68707c);\n gap: 4px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-contact-profile-fields dt, .arkme-contact-profile-fields dd {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields dt {\n flex: none;\n}\n\n[data-arkme-workspace] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill, #5667cc);\n cursor: pointer;\n border-radius: 10px;\n min-height: 36px;\n padding: 0 16px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary-inverted, #fff) !important;\n}\n\n.arkme-contact-profile-message:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-contact-profile-error, .arkme-contact-profile-message-error {\n max-width: 760px;\n color: var(--dsw-alias-state-error-primary, #b42318);\n overflow-wrap: anywhere;\n margin: 0 auto;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-contact-profile-error {\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n display: flex;\n}\n\n.arkme-contact-profile-status {\n max-width: 760px;\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n margin: 0 auto;\n padding: 24px 0;\n font-size: 12px;\n}\n\n.arkme-contact-world {\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-detail > .arkme-contact-world {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-subtle, #f7f7f8);\n padding: 22px clamp(20px, 4vw, 52px) 28px;\n}\n\n.arkme-contact-world-container {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 18px;\n flex-direction: column;\n width: min(100%, 980px);\n min-width: 0;\n height: 100%;\n min-height: 0;\n margin: 0 auto;\n display: flex;\n overflow-y: auto;\n box-shadow: 0 16px 48px #161b230f;\n}\n\n.arkme-contact-world-title {\n box-sizing: border-box;\n width: min(100%, 760px);\n margin: 0 auto;\n padding: 22px 28px 10px;\n font-size: 15px;\n font-weight: 650;\n line-height: 22px;\n}\n\n.arkme-contact-world-list {\n box-sizing: border-box;\n align-content: start;\n gap: 30px;\n width: min(100%, 760px);\n min-height: 0;\n margin: 0 auto;\n padding: 28px 28px 42px;\n display: grid;\n}\n\n.arkme-contact-world-year {\n gap: 24px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-year > h2 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 28px;\n font-weight: 750;\n line-height: 36px;\n}\n\n.arkme-contact-world-entry {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-diary {\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n align-items: center;\n gap: 8px;\n font-size: 11px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time span {\n font-size: 17px;\n line-height: 10px;\n}\n\n.arkme-contact-world-card {\n border: 1px dashed var(--dsw-alias-border-l2, #d9dce2);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 14px;\n gap: 10px;\n padding: 15px 16px;\n display: grid;\n}\n\n.arkme-contact-world-card-header {\n grid-template-columns: 36px minmax(0, 1fr) auto;\n align-items: center;\n gap: 9px;\n display: grid;\n}\n\n.arkme-contact-world-author {\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n font-size: 13px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-world-headline {\n margin: 2px 0 0;\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-contact-world-text {\n color: var(--dsw-alias-label-secondary, #68707c);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-images {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n min-width: 0;\n max-width: 620px;\n display: grid;\n}\n\n.arkme-contact-world-image {\n aspect-ratio: 1;\n object-fit: cover;\n border-radius: 11px;\n width: 100%;\n display: block;\n}\n\n.arkme-contact-world-image-error, .arkme-contact-world-image-loading {\n aspect-ratio: 1;\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n width: 100%;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n border-radius: 11px;\n place-items: center;\n display: grid;\n}\n\n.arkme-contact-world-tags {\n flex-wrap: wrap;\n gap: 6px;\n display: flex;\n}\n\n.arkme-contact-world-tag {\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 11px;\n}\n\n.arkme-contact-world-empty {\n box-sizing: border-box;\n text-align: center;\n flex: 1;\n place-content: center;\n justify-items: center;\n min-height: 240px;\n padding: 36px 20px;\n display: grid;\n}\n\n.arkme-contact-world-empty img {\n width: 140px;\n height: 100px;\n display: block;\n}\n\n.arkme-contact-world-empty p {\n color: var(--dsw-alias-label-secondary, #858992);\n margin: 16px 0 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-error, .arkme-contact-world-status {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n place-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-contact-world-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-load-more {\n cursor: pointer;\n background: none;\n border-radius: 9px;\n place-self: center;\n min-height: 34px;\n padding: 0 12px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n}\n\n.arkme-contact-world-load-more-status, .arkme-contact-world-load-more-error {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 8px 16px;\n font-size: 11px;\n}\n\n.arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-page-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n align-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-directory-unmarked-speaker-detail {\n background: var(--dsw-alias-bg-base, #fff);\n min-height: 0;\n padding: clamp(28px, 5vw, 60px);\n overflow-y: auto;\n}\n\n.arkme-unmarked-speaker-token-avatar {\n background: var(--dsw-alias-bg-module-platform, var(--dsw-alias-bg-layer-1, #f1f2f3));\n color: var(--dsw-alias-label-secondary, #666c75);\n letter-spacing: -.02em;\n border-radius: 50%;\n flex: none;\n place-items: center;\n font-weight: 650;\n line-height: 1;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 18px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 24px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary h1, .arkme-unmarked-speaker-summary h2, .arkme-unmarked-speaker-audio h2, .arkme-unmarked-speaker-choice h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 20px;\n font-weight: 680;\n line-height: 28px;\n}\n\n.arkme-unmarked-speaker-identity {\n align-items: center;\n gap: 16px;\n min-width: 0;\n padding: 2px 4px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-identity > div {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-identity p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-stats {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #737984);\n flex-wrap: wrap;\n gap: 8px 20px;\n padding: 0 4px;\n font-size: 12px;\n line-height: 19px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-stats span {\n white-space: nowrap;\n position: relative;\n}\n\n.arkme-unmarked-speaker-stats span + span:before {\n content: \"\";\n background: var(--dsw-alias-label-caption, #b3b7bd);\n border-radius: 50%;\n width: 3px;\n height: 3px;\n position: absolute;\n top: 8px;\n left: -11px;\n}\n\n.arkme-unmarked-speaker-stats strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-inference {\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 18px;\n grid-template-columns: 40px minmax(0, 1fr);\n align-items: start;\n gap: 12px;\n min-width: 0;\n padding: 18px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n border: 1px solid var(--dsw-alias-border-l1, #e3e4e7);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 40px;\n height: 40px;\n color: var(--dsw-alias-label-secondary, #656b75);\n border-radius: 50%;\n place-items: center;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon svg path, .arkme-unmarked-speaker-action-icon svg path {\n stroke: currentColor;\n stroke-width: 1.5px;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.arkme-unmarked-speaker-inference > div {\n gap: 5px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-label {\n color: var(--dsw-alias-label-secondary, #747983);\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-inference strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 14px;\n font-weight: 650;\n line-height: 21px;\n}\n\n.arkme-unmarked-speaker-inference p {\n color: var(--dsw-alias-label-secondary, #686e78);\n margin: 0;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-unmarked-speaker-actions {\n gap: 10px;\n display: grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-action {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 100%;\n min-height: 62px;\n color: var(--dsw-alias-label-primary, #202124);\n text-align: left;\n cursor: pointer;\n border-radius: 16px;\n grid-template-columns: 42px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n padding: 10px 46px 10px 14px;\n font-size: 13px;\n font-weight: 650;\n display: grid;\n position: relative;\n}\n\n.arkme-unmarked-speaker-action:after {\n content: \"›\";\n color: var(--dsw-alias-label-caption, #a7abb2);\n font-size: 22px;\n font-weight: 400;\n position: absolute;\n right: 18px;\n}\n\n.arkme-unmarked-speaker-action:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f7f7f8);\n border-color: var(--dsw-alias-border-l2, #d9dade);\n}\n\n.arkme-unmarked-speaker-summary > [role=\"status\"], .arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"status\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"status\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-label-secondary, #68707c);\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 10px;\n padding: 9px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-state-error-primary, #b42318);\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n}\n\n.arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 16px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 28px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 40px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n min-width: 0;\n padding-bottom: 4px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header > button {\n min-height: 32px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 11px;\n}\n\n.arkme-unmarked-speaker-subview-header > button:before {\n content: \"‹\";\n vertical-align: -1px;\n margin-right: 4px;\n font-size: 17px;\n}\n\n.arkme-unmarked-speaker-subview-heading {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-heading p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-segment-list {\n gap: 10px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-card {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 16px;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px 16px;\n min-width: 0;\n padding: 16px 16px 14px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-meta {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #757b85);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-unmarked-speaker-segment-transcript {\n min-width: 0;\n color: var(--dsw-alias-label-primary, #292c34);\n white-space: pre-wrap;\n grid-column: 1;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-alias-bg-layer-2, #f4f4f5);\n width: 38px;\n min-width: 38px;\n height: 38px;\n min-height: 38px;\n color: var(--dsw-alias-label-primary, #292c34);\n cursor: pointer;\n border-radius: 50%;\n grid-area: 1 / 2 / span 2;\n align-self: center;\n place-items: center;\n padding: 0;\n display: inline-grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play:not(:disabled):hover {\n background: var(--dsw-alias-bg-layer-3, #e9eaec);\n}\n\n.arkme-unmarked-speaker-segment-play:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-choice-meta {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: -4px 0 0;\n padding: 0 4px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-choice-options {\n border: 0;\n gap: 8px;\n min-width: 0;\n margin: 0;\n padding: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-options legend {\n color: var(--dsw-alias-label-secondary, #737984);\n margin-bottom: 9px;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-choice-option {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n cursor: pointer;\n border-radius: 14px;\n grid-template-columns: 18px minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n min-width: 0;\n min-height: 52px;\n padding: 10px 14px;\n font-size: 13px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-option:has(input:checked) {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n background: var(--dsw-alias-interactive-bg-active, #f0f2ff);\n}\n\n.arkme-unmarked-speaker-choice-option input {\n width: 16px;\n height: 16px;\n accent-color: var(--dsw-alias-state-business-primary, #6677d9);\n margin: 0;\n}\n\n.arkme-unmarked-speaker-recommended {\n background: var(--dsw-alias-state-business-tertiary, #eef0ff);\n color: var(--dsw-alias-state-business-primary, #5667cc);\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-choice-new-name {\n border: 1px solid var(--dsw-alias-border-l1, #dfe1e5);\n background: var(--dsw-specific-input-major, #fff);\n width: 100%;\n min-height: 42px;\n color: var(--dsw-alias-label-primary, #202124);\n border-radius: 12px;\n outline: 0;\n padding: 0 13px;\n font-size: 12px;\n}\n\n.arkme-unmarked-speaker-choice-new-name:focus {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--dsw-alias-state-business-primary, #6677d9) 14%, transparent);\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-confirm {\n background: var(--dsw-alias-button-primary-fill, #202124);\n min-height: 42px;\n color: var(--dsw-alias-label-primary-inverted, #fff);\n cursor: pointer;\n border-radius: 12px;\n padding: 0 16px;\n font-size: 12px;\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-confirm:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-summary button:not(.arkme-unmarked-speaker-action), .arkme-unmarked-speaker-audio button:not(.arkme-unmarked-speaker-segment-play), .arkme-unmarked-speaker-choice button:not(.arkme-unmarked-speaker-confirm), .arkme-contact-world-error button, .arkme-contact-profile-error button {\n border: 1px solid var(--dsw-alias-border-l2, var(--arkme-line));\n background: var(--dsw-alias-button-elevated-fill, #fff);\n min-height: 34px;\n color: var(--dsw-alias-label-primary, #202124);\n cursor: pointer;\n border-radius: 9px;\n padding: 0 12px;\n}\n\n.arkme-unmarked-speaker-gone, .arkme-unmarked-speaker-success {\n box-sizing: border-box;\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n width: min(100%, 680px);\n color: var(--dsw-alias-state-warning-primary, #9a3412);\n border-radius: 10px;\n margin: 0 auto;\n padding: 12px 14px;\n}\n\n.arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary, #ecfdf3);\n color: var(--dsw-alias-state-success-primary, #067647);\n}\n\n.arkme-contact-directory button:focus-visible, .arkme-directory-detail-pane button:focus-visible, [data-arkme-owned=\"product-navigation\"] button:focus-visible {\n outline: 2px solid var(--arkme-focus);\n outline-offset: 2px;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory, body[data-ds-dark-theme] .arkme-directory-detail-pane {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-row.is-selected, body[data-ds-dark-theme] .arkme-contact-world-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option, body[data-ds-dark-theme] .arkme-unmarked-speaker-action {\n background: var(--dsw-alias-bg-layer-1);\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-action-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option:has(input:checked) {\n background: var(--dsw-alias-interactive-bg-active);\n border-color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-detail > .arkme-contact-world {\n background: var(--dsw-alias-bg-subtle);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-world-container {\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: none;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-warning, body[data-ds-dark-theme] .arkme-unmarked-speaker-gone, body[data-ds-dark-theme] .arkme-contact-world-image-error, body[data-ds-dark-theme] .arkme-contact-world-image-loading {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-error, body[data-ds-dark-theme] .arkme-contact-profile-message-error, body[data-ds-dark-theme] .arkme-contact-world-error, body[data-ds-dark-theme] .arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-more, body[data-ds-dark-theme] .arkme-contact-world-load-more {\n color: var(--dsw-alias-state-business-primary);\n}\n\n@media (width <= 1024px) {\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"] {\n min-width: 0;\n }\n}\n\n@media (width <= 820px) {\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"directory\"]) {\n grid-template-columns: minmax(0, 1fr) 0 0 !important;\n }\n\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"content\"]) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"][data-arkme-contacts-mobile-view=\"content\"], [data-arkme-owned=\"persistent-workspace\"][data-arkme-contacts-mobile-view=\"directory\"] {\n display: none !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"], .arkme-directory-detail-pane {\n min-width: 0;\n }\n}\n\n.arkme-directory-mobile-back {\n display: none;\n}\n\n@media (width <= 820px) {\n .arkme-directory-mobile-back {\n min-height: 42px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n align-items: center;\n gap: 5px;\n padding: 0 14px;\n display: inline-flex;\n }\n\n .arkme-directory-mobile-back:before {\n content: \"‹\";\n font-size: 18px;\n line-height: 1;\n }\n\n .arkme-directory-mobile-back:hover {\n color: var(--dsw-alias-label-primary, #202124);\n }\n\n .arkme-contact-profile {\n padding: 26px 20px;\n }\n\n .arkme-contact-profile-main {\n grid-template-columns: 56px minmax(0, 1fr) auto;\n gap: 12px;\n }\n\n .arkme-contact-profile-avatar {\n width: 56px;\n height: 56px;\n }\n\n .arkme-contact-profile-avatar > span {\n width: 56px !important;\n height: 56px !important;\n }\n\n .arkme-contact-world-title {\n padding-left: 20px;\n padding-right: 20px;\n }\n\n .arkme-directory-unmarked-speaker-detail {\n padding: 20px 18px 30px;\n }\n\n .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n gap: 14px;\n }\n\n .arkme-unmarked-speaker-stats {\n gap: 7px 14px;\n }\n\n .arkme-unmarked-speaker-stats span + span:before {\n display: none;\n }\n\n .arkme-unmarked-speaker-inference {\n grid-template-columns: 36px minmax(0, 1fr);\n padding: 15px;\n }\n\n .arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n width: 36px;\n height: 36px;\n }\n\n .arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 36px minmax(0, 1fr);\n gap: 9px;\n }\n\n .arkme-unmarked-speaker-segment-card {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .arkme-unmarked-speaker-segment-transcript, [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n grid-area: auto / 1;\n }\n\n [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n justify-self: start;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-contact-directory-caret {\n transition: none;\n }\n\n .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-conversation-surface {\n --arkme-chat-self-bubble: #eef1f8;\n --arkme-chat-other-bubble: #f3f4f6;\n}\n\nbody[data-ds-dark-theme] .arkme-conversation-surface {\n --arkme-chat-self-bubble: #2c3142;\n --arkme-chat-other-bubble: #282a31;\n --arkme-audio-control: #8995c5;\n}\n\n[data-arkme-message-direction]:focus-visible, [data-arkme-note-detail] button:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n.arkme-world-extension-activity:hover {\n background: var(--dsw-alias-interactive-bg-hover, #2631480f) !important;\n}\n\n.arkme-world-extension-activity:active {\n background: var(--dsw-alias-interactive-bg-active, #2631481a) !important;\n}\n\n.arkme-world-extension-activity:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n@media (width <= 680px) {\n .arkme-world-extension-activity {\n grid-template-columns: 48px minmax(0, 1fr) !important;\n gap: 11px !important;\n padding: 13px !important;\n }\n}\n";
132708
+ var arkme_redesign_default = "[data-arkme-workspace] {\n --arkme-line: #e7e7e9;\n --arkme-muted: #8e9199;\n --arkme-soft: #f6f6f7;\n --arkme-focus: #cbd5ff;\n color: #171923;\n font-synthesis: none;\n font-family: SF Pro Text, SF Pro Display, -apple-system, BlinkMacSystemFont, PingFang SC, Helvetica Neue, Microsoft YaHei, sans-serif;\n}\n\n[data-arkme-workspace], [data-arkme-workspace] * {\n box-sizing: border-box;\n}\n\n[data-arkme-workspace] button, [data-arkme-workspace] input, [data-arkme-workspace] textarea {\n font: inherit;\n}\n\n[data-arkme-workspace] button {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n}\n\n[data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: none !important;\n}\n\n.arkme-redesign-root {\n --arkme-native-titlebar: 0px;\n background: #fff;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n position: relative;\n overflow: hidden;\n}\n\n.arkme-native-desktop .arkme-redesign-root {\n --arkme-native-titlebar: 50px;\n}\n\n.arkme-native-desktop .arkme-redesign-root:before {\n content: \"\";\n z-index: 30;\n pointer-events: none;\n background: #e8e8ea;\n height: 1px;\n position: absolute;\n top: 49px;\n left: 0;\n right: 0;\n}\n\n.arkme-native-desktop [data-arkme-owned=\"persistent-sidebar\"] > [data-arkme-owned=\"product-navigation\"] {\n padding-top: 28px !important;\n}\n\n.arkme-redesign-rail {\n z-index: 8;\n top: calc(26px + var(--arkme-native-titlebar));\n background: #fbfbfc;\n border: 1px solid #e4e4e7;\n border-radius: 22px;\n flex-direction: column;\n width: 72px;\n padding: 10px 8px;\n display: flex;\n position: absolute;\n bottom: 22px;\n left: 24px;\n box-shadow: 0 16px 38px #1e20260e;\n}\n\n.arkme-redesign-rail-primary {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.arkme-redesign-rail-primary button {\n color: #3e4149;\n border-radius: 15px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n min-height: 57px;\n transition: background .18s, color .18s;\n display: flex;\n position: relative;\n}\n\n.arkme-redesign-rail-primary button span {\n letter-spacing: .01em;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-rail-primary button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-rail-primary button.is-active {\n color: #151722;\n background: #f1f2f6;\n}\n\n.arkme-redesign-rail-primary button.is-active:before {\n content: \"\";\n background: #9eadff;\n border-radius: 3px;\n width: 3px;\n height: 33px;\n position: absolute;\n left: -9px;\n}\n\n.arkme-redesign-rail-footer {\n border-top: 0 solid #ededee;\n justify-items: center;\n gap: 7px;\n margin-top: auto;\n padding-top: 0;\n display: grid;\n position: relative;\n}\n\n.arkme-redesign-rail-footer:has( > .arkme-update-rail-slot) {\n border-top-width: 1px;\n padding-top: 10px;\n}\n\n.arkme-redesign-rail-footer > button {\n color: #4b4f58;\n border-radius: 14px;\n place-items: center;\n width: 46px;\n height: 46px;\n display: grid;\n}\n\n.arkme-redesign-rail-footer > button:hover, .arkme-redesign-rail-footer > button.is-active {\n background: #f1f2f5;\n}\n\n.arkme-redesign-rail-footer:empty {\n display: none;\n}\n\n.arkme-update-rail-slot {\n width: 52px;\n height: 30px;\n position: relative;\n}\n\nbutton.arkme-update-rail {\n color: #53648e;\n cursor: pointer;\n width: 52px;\n min-height: 28px;\n font: inherit;\n background: #f1f3fa;\n border: 0;\n border-radius: 999px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n padding: 0 7px;\n transition: transform .16s, background .16s, color .16s, box-shadow .16s;\n display: flex;\n box-shadow: inset 0 0 0 1px #5b70ab17;\n}\n\nbutton.arkme-update-rail:hover, button.arkme-update-rail.is-active {\n transform: translateY(-1px);\n color: #34476f !important;\n background: #e9edf8 !important;\n}\n\nbutton.arkme-update-rail.is-available {\n color: #fff !important;\n background: #f0524f !important;\n box-shadow: 0 5px 12px #e03c3933, inset 0 0 0 1px #b2232014 !important;\n}\n\nbutton.arkme-update-rail.is-available:hover, button.arkme-update-rail.is-available.is-active {\n color: #fff !important;\n background: #df4542 !important;\n box-shadow: 0 7px 16px #d736333d, inset 0 0 0 1px #961a181a !important;\n}\n\nbutton.arkme-update-rail.is-error {\n color: #b54841 !important;\n background: #fff0ee !important;\n}\n\n.arkme-update-rail span {\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n font-size: 9px;\n font-weight: 550;\n line-height: 1;\n}\n\n.arkme-update-rail svg {\n flex: none;\n}\n\n.arkme-update-rail.is-ready {\n gap: 3px;\n padding: 0 4px;\n}\n\n.arkme-update-rail.is-ready svg {\n width: 13px;\n height: 13px;\n}\n\n.arkme-update-rail.is-downloading svg {\n animation: 1.6s linear infinite arkme-update-spin;\n}\n\n.arkme-update-popover {\n z-index: 100000;\n overflow-wrap: anywhere;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.12);\n background: #fffffff7;\n border: 1px solid #cfd1d7e6;\n border-radius: 20px;\n width: 356px;\n max-width: calc(100vw - 16px);\n max-height: calc(100vh - 16px);\n padding: 18px;\n animation: .2s cubic-bezier(.2, .8, .2, 1) arkme-update-popover-in;\n position: fixed;\n bottom: 14px;\n left: 68px;\n overflow-y: auto;\n box-shadow: 0 24px 58px #1b1e2629, 0 3px 10px #1b1e260e;\n}\n\n.arkme-update-popover-heading {\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 12px;\n display: grid;\n}\n\n.arkme-update-popover-heading > div {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading span {\n color: #92959d;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-update-popover-heading h2 {\n color: #242731;\n letter-spacing: -.025em;\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n}\n\n.arkme-update-popover-heading > button {\n color: #93969e;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading > button:hover {\n color: #3d414a;\n background: #f1f2f4;\n}\n\n.arkme-update-popover-summary {\n color: #7d818a;\n margin: 13px 0 0;\n font-size: 11px;\n line-height: 1.55;\n}\n\n.arkme-update-release-notes {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n margin-top: 14px;\n padding: 5px 0;\n}\n\n.arkme-update-release-notes > div {\n grid-template-columns: 28px minmax(0, 1fr);\n align-items: center;\n gap: 10px;\n min-height: 51px;\n display: grid;\n}\n\n.arkme-update-release-notes > div + div {\n border-top: 1px solid #f0f0f2;\n}\n\n.arkme-update-release-notes > div > span {\n color: #a3a6ad;\n font-variant-numeric: tabular-nums;\n font-size: 9px;\n}\n\n.arkme-update-release-notes p {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-update-release-notes strong {\n color: #3b3f48;\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-update-release-notes small {\n color: #92959d;\n font-size: 10px;\n line-height: 1.45;\n}\n\n.arkme-update-message {\n color: #747983;\n margin: 12px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-update-message.is-error {\n color: #b54841;\n}\n\n.arkme-update-popover-actions {\n grid-template-columns: 1fr 1.45fr;\n gap: 9px;\n margin-top: 16px;\n display: grid;\n}\n\n.arkme-update-popover-actions button {\n cursor: pointer;\n height: 42px;\n font: inherit;\n border-radius: 12px;\n padding: 0;\n font-size: 12px;\n font-weight: 500;\n transition: transform .16s, background .16s, box-shadow .16s;\n border: 0 !important;\n}\n\n.arkme-update-popover-actions button:hover {\n transform: translateY(-1px);\n}\n\n.arkme-update-popover-actions .arkme-update-later {\n color: #666a73 !important;\n background: #f2f2f4 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-later:hover {\n background: #ececef !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now {\n color: #fff !important;\n background: #1c1f28 !important;\n box-shadow: 0 7px 18px #181b2324 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now:hover {\n background: #11131b !important;\n box-shadow: 0 9px 22px #181b232e !important;\n}\n\n.arkme-update-now:disabled {\n opacity: .46;\n cursor: default;\n transform: none;\n}\n\n.arkme-update-capsule {\n z-index: 10030;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.2);\n background: #ffffffed;\n border: 1px solid #cdd0d8d6;\n border-radius: 18px;\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 10px;\n width: 326px;\n max-width: calc(100vw - 16px);\n min-height: 52px;\n padding: 9px 9px 9px 14px;\n animation: .22s cubic-bezier(.2, .8, .2, 1) arkme-update-capsule-in;\n display: grid;\n position: fixed;\n top: 18px;\n left: 50%;\n transform: translateX(-50%);\n box-shadow: 0 16px 40px #1c1f2724, 0 2px 8px #1c1f270f;\n}\n\n.arkme-native-desktop .arkme-update-capsule {\n top: 62px;\n}\n\n.arkme-update-capsule-copy {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-capsule-copy strong {\n color: #333741;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-update-capsule-copy small {\n color: #93969e;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-update-progress {\n background: #eceef3;\n border-radius: 999px;\n height: 4px;\n overflow: hidden;\n}\n\n.arkme-update-progress span {\n border-radius: inherit;\n background: #6779b5;\n height: 100%;\n transition: width .65s cubic-bezier(.2, .7, .25, 1);\n display: block;\n}\n\n.arkme-update-progress.is-indeterminate span {\n width: 34%;\n animation: 1.25s ease-in-out infinite arkme-update-indeterminate;\n}\n\n.arkme-update-capsule > b {\n color: #656a75;\n font-variant-numeric: tabular-nums;\n text-align: right;\n font-size: 10px;\n font-weight: 500;\n}\n\n.arkme-update-capsule[data-layout=\"progress\"] {\n grid-template-columns: minmax(0, 1fr) minmax(40px, .8fr) 34px 28px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] {\n grid-template-columns: minmax(0, 1fr) auto 28px;\n width: 306px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] .arkme-update-capsule-copy small {\n -webkit-line-clamp: 3;\n white-space: normal;\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n font-size: 11px;\n line-height: 1.45;\n display: -webkit-box;\n}\n\n.arkme-update-capsule[data-layout=\"restarting\"] {\n grid-template-columns: minmax(0, 1fr);\n width: 218px;\n padding-right: 14px;\n}\n\n.arkme-update-capsule.is-restarting .arkme-update-capsule-copy {\n text-align: center;\n justify-self: center;\n}\n\n.arkme-update-ready-action {\n color: #fff;\n cursor: pointer;\n width: auto;\n height: 32px;\n font: inherit;\n white-space: nowrap;\n background: #242731;\n border: 0;\n border-radius: 10px;\n padding: 0 11px;\n font-size: 10px;\n font-weight: 550;\n}\n\n.arkme-update-ready-action:hover {\n background: #151821;\n}\n\n.arkme-update-ready-action:disabled {\n opacity: .65;\n cursor: wait;\n}\n\n.arkme-update-ready-action:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #6779b5;\n}\n\n.arkme-update-capsule-close {\n color: #8a8e97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-capsule-close:hover {\n color: #343841;\n background: #f0f1f3;\n}\n\n@keyframes arkme-update-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes arkme-update-popover-in {\n from {\n opacity: 0;\n transform: translate(-8px, 3px) scale(.985);\n }\n}\n\n@keyframes arkme-update-capsule-in {\n from {\n opacity: 0;\n transform: translate(-50%, -8px) scale(.98);\n }\n}\n\n@keyframes arkme-update-indeterminate {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(300%);\n }\n}\n\n.arkme-redesign-profile {\n position: relative;\n}\n\n.arkme-redesign-profile > span {\n width: 32px !important;\n height: 32px !important;\n}\n\n.arkme-redesign-profile-popover {\n z-index: 10000;\n backdrop-filter: blur(20px);\n background: #fffffff5;\n border: 1px solid #d8d9dde6;\n border-radius: 18px;\n width: 264px;\n padding: 10px;\n position: fixed;\n bottom: 14px;\n left: 64px;\n box-shadow: 0 20px 50px #1a1c2326, 0 2px 8px #1a1c230d;\n}\n\n.arkme-redesign-profile-head {\n align-items: center;\n gap: 11px;\n padding: 9px 9px 13px;\n display: flex;\n}\n\n.arkme-redesign-profile-head > span {\n text-align: left;\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-head strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-head small {\n color: #8b8f98;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-profile-menu {\n border-top: 1px solid #eeeeef;\n gap: 2px;\n padding-top: 6px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button {\n width: 100%;\n min-height: 50px;\n box-shadow: none;\n color: #393d46;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 11px;\n outline: 0;\n grid-template-columns: 28px minmax(0, 1fr) 16px;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-profile-menu button > span {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-menu strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-profile-menu small {\n color: #92969f;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-menu button > svg:last-child {\n color: #a0a3aa;\n}\n\n.arkme-redesign-native-settings-trigger {\n clip-path: inset(50%);\n width: 1px;\n height: 1px;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-panel {\n inset: var(--arkme-native-titlebar) auto 0 96px;\n z-index: 3;\n border-right: 1px solid var(--arkme-line);\n background: #fff;\n flex-direction: column;\n width: 300px;\n min-width: 0;\n padding: 0;\n display: flex;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-search {\n text-align: left;\n border-radius: 11px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 40px;\n margin: 20px 0 10px;\n padding: 0 12px;\n display: flex;\n color: #9699a1 !important;\n border: 1px solid #e1e2e5 !important;\n font-size: 11px !important;\n}\n\n.arkme-redesign-chat-search:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-chat-directory {\n flex: 1;\n min-height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-directory > section {\n background: none !important;\n}\n\n.arkme-redesign-task-section {\n z-index: 3;\n border-bottom: 1px solid #ececef;\n outline: none;\n height: 158px;\n margin: 0 6px 12px;\n position: relative;\n}\n\n.arkme-redesign-task-section-title {\n color: #767b85;\n justify-content: space-between;\n align-items: center;\n height: 28px;\n padding: 0 7px;\n display: flex;\n}\n\n.arkme-redesign-task-section-title strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-task-section-title button {\n border-radius: 7px;\n place-items: center;\n width: 24px;\n height: 24px;\n display: grid;\n}\n\n.arkme-redesign-task-section-title button:hover {\n background: #f3f3f5;\n}\n\n.arkme-redesign-task-list {\n overscroll-behavior: contain;\n scrollbar-gutter: stable;\n background: #fff;\n max-height: 128px;\n padding-bottom: 2px;\n transition: max-height .18s, box-shadow .18s, padding .18s;\n display: grid;\n position: absolute;\n top: 28px;\n left: 0;\n right: 0;\n overflow: hidden auto;\n}\n\n.arkme-redesign-task-section:hover .arkme-redesign-task-list, .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n max-height: min(360px, 100vh - 180px);\n padding-bottom: 6px;\n box-shadow: 0 14px 22px #1b1e2512;\n}\n\n.arkme-redesign-task-list > button {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n gap: 4px;\n width: 100%;\n min-width: 0;\n height: 32px;\n padding: 0 8px;\n display: grid;\n}\n\n.arkme-redesign-task-list > button:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-task-list > button.is-selected {\n color: #232630;\n background: #f0f1f4;\n}\n\n.arkme-redesign-task-state {\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 20px;\n display: inline-flex;\n}\n\n.arkme-redesign-task-state.is-complete > i {\n background: #39a56b1a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n display: block;\n position: relative;\n}\n\n.arkme-redesign-task-state.is-complete > i:after {\n content: \"\";\n background: #39a56b;\n border-radius: 50%;\n position: absolute;\n inset: 2px;\n}\n\n.arkme-redesign-task-matrix {\n grid-template-columns: repeat(3, 2px);\n grid-auto-rows: 2px;\n gap: 1px;\n width: 10px;\n height: 10px;\n display: grid;\n}\n\n.arkme-redesign-task-matrix i {\n opacity: .15;\n background: #5d76e8;\n border-radius: 1px;\n animation: 1s infinite arkme-task-dot-chase;\n}\n\n.arkme-redesign-task-matrix i:nth-child(2) {\n animation-delay: .125s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(3) {\n animation-delay: .25s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(4) {\n animation-delay: .375s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(5) {\n animation-delay: .5s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(6) {\n animation-delay: .625s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(7) {\n animation-delay: .75s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(8) {\n animation-delay: .875s;\n}\n\n@keyframes arkme-task-dot-chase {\n 0%, 12.4% {\n opacity: 1;\n }\n\n 12.5%, 24.9% {\n opacity: .6;\n }\n\n 25%, 37.4% {\n opacity: .35;\n }\n\n 37.5%, 100% {\n opacity: .15;\n }\n}\n\n.arkme-redesign-task-copy {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-redesign-task-copy strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-task-copy small {\n color: #9a9da5;\n flex: none;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-redesign-task-first {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 12px);\n height: 32px;\n margin: 0 6px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.arkme-redesign-task-first:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-content {\n inset: var(--arkme-native-titlebar) 0 0 96px;\n background: #fff;\n min-width: 0;\n min-height: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-content.has-panel {\n left: 396px;\n}\n\n.arkme-redesign-content.has-details {\n right: 360px;\n}\n\n.arkme-redesign-content.is-login-takeover {\n left: 0;\n right: 0;\n}\n\n.arkme-redesign-route-surface {\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-surface {\n background: #fff !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header {\n border-bottom: 1px solid #ececef !important;\n height: 68px !important;\n padding: 12px 16px 12px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header h2 {\n font-size: 15px !important;\n font-weight: 600 !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-body {\n padding: 22px 22px 12px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-records {\n gap: 0 !important;\n width: 100% !important;\n}\n\n.arkme-conversation-records-reveal {\n animation: .12s ease-out both arkme-conversation-records-reveal;\n}\n\n@keyframes arkme-conversation-records-reveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-conversation-records-reveal {\n animation: none;\n }\n}\n\n.arkme-redesign-route-chats [data-arkme-content-presentation=\"bubble\"] p {\n font-size: 14px;\n line-height: 1.62;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer {\n padding: 0 24px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner {\n background: #fff !important;\n border: 1px solid #dfe1e6 !important;\n border-radius: 15px !important;\n gap: 8px !important;\n width: 100% !important;\n padding: 12px 13px 9px !important;\n box-shadow: 0 8px 30px #1c1f270b !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"] {\n box-shadow: none !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"][data-arkme-composer-focused=\"true\"] {\n background: color-mix(in srgb, var(--dsw-alias-bg-base, #fff) 97%, #000) !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer textarea {\n min-height: 38px !important;\n padding: 0 !important;\n font-size: 14px !important;\n line-height: 22px !important;\n}\n\n.arkme-redesign-task-conversation {\n font-size: 15px;\n}\n\n.arkme-redesign-task-conversation [data-phase] {\n --dsh-chat-content-width: calc(100% - 64px);\n --dsh-composer-card-max-width: calc(100% - 32px);\n}\n\n.arkme-redesign-task-conversation [data-chat-flow] {\n width: calc(100% - 64px) !important;\n max-width: none !important;\n margin-left: 32px !important;\n margin-right: 32px !important;\n}\n\n.arkme-redesign-task-conversation textarea {\n font-size: 14px !important;\n}\n\n[data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"][data-arkme-directory-visible=\"true\"] [data-arkme-directory-mode=\"conversations\"]), [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-web-locked] [data-arkme-directory-mode=\"web-locked\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n}\n\n[data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"][data-arkme-directory-visible=\"false\"]) {\n grid-template-columns: 72px minmax(0, 1fr) 0 !important;\n}\n\n@media (width >= 1100px) {\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"] [data-arkme-directory-mode=\"contacts\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"true\"]:not([data-arkme-web-locked])) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n}\n\n[data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"]:has( > [data-arkme-directory-mode=\"conversations\"]) > [data-arkme-owned=\"product-navigation\"] {\n flex: 0 0 72px !important;\n width: 72px !important;\n min-width: 72px !important;\n}\n\n[data-arkme-owned=\"persistent-sidebar\"] :is([data-arkme-directory-mode=\"conversations\"], [data-arkme-directory-mode=\"web-locked\"]) {\n min-width: 64px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] > :not([role=\"tree\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] {\n padding: 8px 6px 18px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button {\n justify-content: center !important;\n gap: 0 !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > :not(:first-child) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child:has( > span:nth-child(2)) {\n justify-content: center !important;\n gap: 0 !important;\n width: auto !important;\n min-width: 38px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) {\n display: contents !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:first-child {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child {\n display: contents !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child > :not([style*=\"min-width: 17px\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child > [style*=\"min-width: 17px\"] {\n top: 3px;\n right: 3px;\n position: absolute !important;\n}\n\n.arkme-redesign-feature-page {\n background: #fff;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n padding: 30px 48px 36px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-feature-page > header {\n flex: none;\n margin: 0 0 22px;\n}\n\n.arkme-redesign-feature-page > header p {\n color: #8d9098;\n margin: 0 0 8px;\n font-size: 11px;\n}\n\n.arkme-redesign-feature-page > header h1 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 27px;\n font-weight: 600;\n}\n\n.arkme-redesign-feature-page > header span {\n color: #858992;\n margin-top: 10px;\n font-size: 12px;\n display: block;\n}\n\n.arkme-redesign-feature-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-recordings-page {\n background: #fff;\n padding: 0;\n}\n\n.arkme-redesign-recordings-page > div {\n height: 100% !important;\n}\n\n.arkme-redesign-search-page {\n padding: 66px 0 40px;\n}\n\n.arkme-redesign-search-page > header, .arkme-redesign-search-page > .arkme-redesign-feature-body {\n width: min(980px, 100% - 80px);\n margin-left: auto;\n margin-right: auto;\n}\n\n.arkme-redesign-search-page > header {\n margin-bottom: 28px;\n}\n\n.arkme-redesign-search-page > header h1 {\n font-size: 32px;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body {\n overflow-y: auto;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div {\n width: 100% !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div > header {\n display: none !important;\n}\n\n.arkme-redesign-search-page .arkme-search-box {\n box-shadow: 0 8px 28px #1c1f2709;\n color: #646872 !important;\n background: #fff !important;\n border: 1px solid #e1e2e5 !important;\n border-radius: 15px !important;\n gap: 12px !important;\n height: 68px !important;\n padding: 0 20px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"] {\n font-size: 14px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder {\n color: #92959d;\n}\n\n.arkme-redesign-search-page .arkme-search-history, .arkme-redesign-search-page .arkme-search-quick {\n margin: 24px 0 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history > div, .arkme-redesign-search-page .arkme-search-quick > div {\n gap: 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button, .arkme-redesign-search-page .arkme-search-quick button {\n text-align: left;\n overflow: hidden;\n color: #30333b !important;\n border: 0 !important;\n border-bottom: 1px solid #e6e7e9 !important;\n border-radius: 0 !important;\n justify-content: space-between !important;\n align-items: center !important;\n gap: 14px !important;\n width: 100% !important;\n height: 52px !important;\n padding: 0 6px !important;\n font-size: 12px !important;\n display: flex !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button span, .arkme-redesign-search-page .arkme-search-quick button span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.arkme-redesign-plugins-page {\n background: #fff;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: #fff !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded header {\n display: none !important;\n}\n\n.arkme-extension-toolbar {\n align-items: center;\n gap: 12px;\n height: 46px;\n display: flex;\n}\n\n.arkme-extension-toolbar label {\n color: #8e929a;\n border: 1px solid #e1e2e5;\n border-radius: 12px;\n flex: 1;\n align-items: center;\n gap: 10px;\n min-width: 0;\n height: 44px;\n padding: 0 14px;\n display: flex;\n}\n\n.arkme-extension-toolbar input {\n color: #262932;\n background: none;\n border: 0;\n outline: 0;\n flex: 1;\n min-width: 0;\n font-size: 12px;\n}\n\n.arkme-extension-toolbar > button {\n border-radius: 11px;\n height: 38px;\n padding: 0 15px;\n font-size: 11px;\n border: 1px solid #e1e2e5 !important;\n}\n\n.arkme-extension-toolbar > button:hover {\n background: #f6f6f7;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded nav {\n width: 420px;\n height: 38px !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded main {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n align-content: start;\n gap: 12px;\n padding: 16px 0 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card {\n background: #fff !important;\n border: 1px solid #e3e4e7 !important;\n border-radius: 15px !important;\n min-height: 138px !important;\n margin: 0 !important;\n padding: 18px !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card:hover {\n background: #fafafa !important;\n border-color: #d5d7dc !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-grid-span, .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"status\"], .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"alert\"] {\n grid-column: 1 / -1;\n}\n\n@keyframes arkme-icon-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkme-icon-spin {\n animation: .8s linear infinite arkme-icon-spin;\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-arkme-voice] .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-redesign-settings-surface {\n color: #20232c;\n background: none;\n width: 100%;\n height: auto;\n overflow: visible;\n}\n\n.arkme-redesign-settings-shell {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.arkme-redesign-settings-profile {\n align-items: center;\n gap: 16px;\n padding: 0 0 24px;\n display: flex;\n}\n\n.arkme-redesign-settings-profile > div:nth-child(2) {\n min-width: 0;\n}\n\n.arkme-redesign-settings-profile h1 {\n color: #20232c;\n letter-spacing: -.03em;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0 0 6px;\n font-size: 24px;\n font-weight: 600;\n line-height: 30px;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p {\n color: #858992;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 13px;\n line-height: 18px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.arkme-account-profile-qr {\n color: #858992;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin: 0;\n padding: 2px;\n display: inline-flex;\n}\n\n.arkme-account-profile-qr:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-profile-qr svg {\n width: 20px;\n height: 20px;\n display: block;\n}\n\n.arkme-redesign-settings-group {\n background: none;\n border: 0;\n border-bottom: 1px solid #e1e2e5;\n border-radius: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-group:last-child {\n border-bottom: 0;\n}\n\n.arkme-redesign-settings-group > h2 {\n color: #8a8e96;\n border-bottom: 1px solid #ededee;\n margin: 0;\n padding: 15px 1px 10px;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n}\n\n.arkme-redesign-settings-group > div {\n padding: 0;\n}\n\n.arkme-redesign-setting-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n text-decoration: none;\n display: grid;\n}\n\n.arkme-redesign-setting-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-redesign-setting-row, a.arkme-redesign-setting-row {\n cursor: pointer;\n}\n\nbutton.arkme-redesign-setting-row:hover, a.arkme-redesign-setting-row:hover {\n color: #53617d;\n}\n\n.arkme-redesign-setting-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-redesign-setting-row > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > strong.is-danger {\n color: #b54841;\n}\n\n.arkme-redesign-setting-summary {\n color: #858992;\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 360px;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-info-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: 26px minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n display: grid;\n}\n\n.arkme-account-info-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-account-info-row {\n cursor: pointer;\n}\n\n.arkme-account-info-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-account-info-icon {\n color: #6f7580;\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 26px;\n display: inline-flex;\n}\n\n.arkme-account-info-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-account-info-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-account-info-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-account-info-action {\n color: #858992;\n white-space: nowrap;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-info-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-feedback {\n color: #b54841;\n align-items: flex-start;\n gap: 6px;\n margin: 8px 0 14px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-account-dialog-backdrop {\n z-index: 50;\n background: #12141a6b;\n justify-content: center;\n align-items: center;\n padding: 18px;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.arkme-account-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n width: min(420px, 100vw - 36px);\n max-height: calc(100vh - 56px);\n overflow: auto;\n box-shadow: 0 18px 52px #11182738;\n}\n\n.arkme-account-dialog > header {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n height: 58px;\n padding: 0 16px 0 20px;\n display: flex;\n}\n\n.arkme-account-dialog h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 650;\n line-height: 24px;\n}\n\n.arkme-account-dialog > header button {\n color: #8d929b;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n width: 34px;\n height: 34px;\n}\n\n.arkme-account-qr-card {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ededee;\n border-radius: 14px;\n justify-items: center;\n gap: 7px;\n width: 270px;\n margin: 22px auto 16px;\n padding: 24px 22px 22px;\n display: grid;\n}\n\n.arkme-account-qr-card strong {\n margin-top: 4px;\n font-size: 17px;\n font-weight: 650;\n line-height: 23px;\n}\n\n.arkme-account-qr-card span, .arkme-account-qr-card small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-qr-card img {\n width: 180px;\n height: 180px;\n margin-top: 8px;\n}\n\n.arkme-account-form {\n gap: 12px;\n padding: 18px 20px 20px;\n display: grid;\n}\n\n.arkme-account-form label {\n color: #5f6570;\n gap: 7px;\n font-size: 12px;\n line-height: 18px;\n display: grid;\n}\n\n.arkme-account-form input {\n box-sizing: border-box;\n color: #20232c;\n width: 100%;\n height: 42px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n outline: none;\n padding: 0 12px;\n}\n\n.arkme-account-form input:focus {\n border-color: #9aa7c2;\n box-shadow: 0 0 0 3px #53617d1f;\n}\n\n.arkme-account-rule {\n color: #858992;\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-code-row {\n grid-template-columns: minmax(0, 1fr) 92px;\n gap: 8px;\n display: grid;\n}\n\n.arkme-account-code-row button {\n color: #343944;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n}\n\n.arkme-account-code-row button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-actions {\n justify-content: flex-end;\n gap: 10px;\n padding-top: 6px;\n display: flex;\n}\n\n.arkme-account-dialog-actions button {\n color: #343944;\n min-width: 78px;\n height: 36px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n display: inline-flex;\n}\n\n.arkme-account-dialog-actions button[type=\"submit\"], .arkme-account-dialog-actions button:last-child {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-account-dialog-actions button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-status {\n color: #13a85b;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-dialog-status.is-error {\n color: #b54841;\n}\n\n.arkme-redesign-version-row {\n grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto 18px;\n}\n\n.arkme-redesign-version-row.is-without-action {\n grid-template-columns: minmax(0, 1fr) auto 18px;\n}\n\n.arkme-redesign-version-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-version-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-value {\n color: #858992;\n white-space: nowrap;\n justify-self: end;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-version-action-slot {\n justify-content: flex-end;\n display: inline-flex;\n}\n\n.arkme-redesign-trailing-slot {\n width: 18px;\n height: 1px;\n}\n\nbutton.arkme-redesign-update-button {\n color: #343944;\n min-width: 72px;\n height: 30px;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n gap: 5px;\n padding: 0 11px;\n font-size: 11px;\n display: inline-flex;\n}\n\nbutton.arkme-redesign-update-button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\nbutton.arkme-redesign-update-button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-redesign-settings-group:has(.arkme-redesign-balance-row) {\n overflow: visible;\n}\n\n.arkme-redesign-balance-row {\n grid-template-columns: max-content max-content minmax(0, 1fr) 18px;\n column-gap: 20px;\n}\n\n.arkme-redesign-balance-row.is-without-reserved {\n grid-template-columns: max-content minmax(0, 1fr) 18px;\n}\n\n.arkme-redesign-balance-main {\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n gap: 2px;\n padding: 0;\n display: grid;\n}\n\n.arkme-redesign-balance-main > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-balance-main > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-balance-usage {\n color: #8a8e96;\n white-space: nowrap;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-redesign-reserved-balance {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-recharge-trigger {\n justify-self: end;\n}\n\n.arkme-redesign-reserved-title {\n align-items: center;\n gap: 5px;\n width: fit-content;\n display: inline-flex;\n position: relative;\n}\n\n.arkme-redesign-reserved-title > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-reserved-balance > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-reserved-help {\n box-sizing: border-box;\n color: #858992;\n cursor: help;\n border: 1px solid #a6aab2;\n border-radius: 50%;\n place-items: center;\n width: 15px;\n height: 15px;\n font-size: 10px;\n font-weight: 600;\n line-height: 1;\n display: inline-grid;\n}\n\n.arkme-redesign-reserved-help:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #7b8cad;\n}\n\n.arkme-redesign-reserved-title > [role=\"tooltip\"] {\n box-sizing: border-box;\n z-index: 20;\n color: #fff;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n background: #2e323b;\n border-radius: 8px;\n width: 240px;\n padding: 9px 11px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n transition: opacity .12s, transform .12s, visibility .12s;\n position: absolute;\n bottom: calc(100% + 8px);\n left: calc(100% - 7.5px);\n transform: translate(-50%, 2px);\n box-shadow: 0 6px 18px #181b222e;\n}\n\n.arkme-redesign-reserved-help:hover ~ [role=\"tooltip\"], .arkme-redesign-reserved-help:focus ~ [role=\"tooltip\"] {\n opacity: 1;\n visibility: visible;\n transform: translate(-50%);\n}\n\n.arkme-billing-backdrop {\n z-index: 120;\n backdrop-filter: blur(3px);\n background: #181b223d;\n place-items: center;\n padding: 28px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-billing-recharge-dialog, .arkme-billing-payment-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #dedfe3;\n border-radius: 20px;\n width: min(620px, 100%);\n max-height: min(720px, 100vh - 56px);\n overflow-y: auto;\n box-shadow: 0 24px 72px #191c232e;\n}\n\n.arkme-billing-payment-dialog {\n width: min(420px, 100%);\n}\n\n.arkme-billing-dialog-header {\n border-bottom: 1px solid #ececef;\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n min-height: 78px;\n padding: 20px 22px 16px;\n display: flex;\n}\n\n.arkme-billing-dialog-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n line-height: 25px;\n}\n\n.arkme-billing-dialog-header p {\n overflow-wrap: anywhere;\n color: #8a8e96;\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-dialog-header > button {\n color: #777c85;\n width: 32px;\n height: 32px;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n place-items: center;\n font-size: 22px;\n display: grid;\n}\n\n.arkme-billing-dialog-header > button:hover {\n color: #20232c;\n background: #f3f3f5;\n}\n\n.arkme-billing-dialog-body {\n padding: 18px 22px 22px;\n}\n\n.arkme-billing-dialog-balance {\n border-bottom: 1px solid #ececef;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 12px;\n min-height: 48px;\n padding: 0 2px 16px;\n display: grid;\n}\n\n.arkme-billing-dialog-balance > span {\n color: #8a8e96;\n grid-column: 1;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-billing-dialog-balance > strong {\n grid-column: 1;\n font-size: 22px;\n font-weight: 600;\n line-height: 28px;\n}\n\n.arkme-billing-dialog-balance > button, .arkme-billing-error > button {\n color: #626772;\n height: 30px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n grid-area: 1 / 2 / span 2;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-billing-products-section, .arkme-billing-payment-section {\n padding-top: 17px;\n}\n\n.arkme-billing-products-section h3, .arkme-billing-payment-section h3 {\n color: #747984;\n margin: 0 0 11px;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.arkme-billing-product-grid {\n width: 100%;\n}\n\n.arkme-billing-product-grid > button {\n color: #20232c;\n min-width: 0;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n align-content: center;\n gap: 4px;\n padding: 9px 11px;\n display: grid;\n}\n\n.arkme-billing-product-grid > button:hover {\n background: #f8f8f9;\n border-color: #cfd2d8;\n}\n\n.arkme-billing-product-grid > button.is-selected {\n border-color: #75839e;\n box-shadow: 0 0 0 1px #75839e;\n}\n\n.arkme-billing-product-grid > button > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-billing-product-grid > button > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 19px;\n}\n\n.arkme-billing-payment-actions {\n flex-wrap: wrap;\n gap: 10px;\n display: flex;\n}\n\n.arkme-billing-payment-actions > button {\n color: #333842;\n min-width: 154px;\n height: 38px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.arkme-billing-payment-actions > button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\n.arkme-billing-payment-actions > button:disabled, .arkme-billing-product-grid > button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-billing-platform-icon {\n flex: none;\n width: 18px;\n height: 18px;\n}\n\n.arkme-billing-platform-icon.is-alipay {\n color: #1677ff;\n}\n\n.arkme-billing-platform-icon.is-wechat {\n color: #07c160;\n}\n\n.arkme-billing-state {\n color: #858992;\n margin: 12px 0 2px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-error {\n color: #b54841;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n margin-top: 10px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-billing-error.is-purchase {\n justify-content: flex-start;\n}\n\n.arkme-billing-payment-content {\n text-align: center;\n justify-items: center;\n gap: 10px;\n padding: 28px 24px 18px;\n display: grid;\n}\n\n.arkme-billing-payment-content > .arkme-billing-platform-icon {\n width: 38px;\n height: 38px;\n margin-bottom: 4px;\n}\n\n.arkme-billing-payment-content > img {\n border-radius: 10px;\n width: 210px;\n height: 210px;\n}\n\n.arkme-billing-payment-content > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-billing-payment-content > p {\n color: #858992;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-payment-content.is-paid > strong {\n color: #16794f;\n font-size: 18px;\n line-height: 25px;\n}\n\n.arkme-billing-payment-content.is-paid > .arkme-billing-error {\n justify-content: center;\n}\n\n.arkme-billing-payment-content.is-crediting > strong {\n color: #335f9e;\n}\n\n.arkme-billing-dialog-actions {\n flex-wrap: wrap;\n justify-content: center;\n gap: 9px;\n padding: 0 22px 20px;\n display: flex;\n}\n\n.arkme-billing-dialog-actions > button, .arkme-billing-primary-action {\n color: #3c424d;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n padding: 0 14px;\n font-size: 12px;\n}\n\n.arkme-billing-dialog-actions > .arkme-billing-primary-action, .arkme-billing-payment-content > .arkme-billing-primary-action {\n color: #fff;\n background: #20232d;\n border-color: #20232d;\n}\n\n.arkme-redesign-settings-error {\n color: #b54841;\n background: #fff3f0;\n border-radius: 10px;\n margin: -8px 0 28px;\n padding: 10px 13px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-remote-settings-dialog-backdrop {\n z-index: 1150;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-remote-settings-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n flex-direction: column;\n width: min(720px, 100vw - 48px);\n max-height: min(720px, 100vh - 48px);\n display: flex;\n overflow: hidden;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-page-header {\n box-sizing: border-box;\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n min-height: 74px;\n padding: 0 24px 0 28px;\n display: flex;\n}\n\n.arkme-remote-page-header > div {\n min-width: 0;\n}\n\n.arkme-remote-page-header h1 {\n color: #20232c;\n letter-spacing: -.02em;\n margin: 0;\n font-size: 18px;\n font-weight: 620;\n line-height: 25px;\n}\n\n.arkme-remote-page-header p {\n color: #8b9098;\n margin: 3px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-settings-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-settings-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-settings-dialog-body {\n overscroll-behavior: contain;\n gap: 28px;\n padding: 24px 28px 28px;\n display: grid;\n overflow-y: auto;\n}\n\n.arkme-remote-section {\n gap: 13px;\n display: grid;\n}\n\n.arkme-remote-section-header {\n justify-content: space-between;\n align-items: flex-end;\n gap: 18px;\n min-height: 34px;\n display: flex;\n}\n\n.arkme-remote-section-header > div:first-child {\n min-width: 0;\n}\n\n.arkme-remote-section-header h2 {\n color: #292c34;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-remote-section-header p {\n color: #8b9098;\n margin: 2px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-section-header > div:last-child {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-remote-icon-button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-icon-button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-add-button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 5px;\n padding: 0 12px;\n font-size: 11px;\n font-weight: 550;\n display: inline-flex;\n}\n\n.arkme-remote-add-button:hover {\n background: #343944;\n}\n\n.arkme-remote-add-button:disabled, .arkme-remote-icon-button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-settings-card {\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-allow-row {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 60px;\n padding: 0 18px;\n display: flex;\n}\n\n.arkme-remote-allow-row > div {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-allow-row strong, .arkme-remote-device-row strong, .arkme-remote-name-row strong {\n color: #343944;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.arkme-remote-allow-row span, .arkme-remote-device-row span, .arkme-remote-name-row small {\n color: #8b9098;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-switch {\n cursor: pointer;\n background: #d7d9dd;\n border: 0;\n border-radius: 999px;\n flex: none;\n width: 40px;\n height: 23px;\n padding: 0;\n transition: background .16s;\n position: relative;\n}\n\n.arkme-remote-switch > span {\n background: #fff;\n border-radius: 50%;\n width: 17px;\n height: 17px;\n transition: transform .16s;\n position: absolute;\n top: 3px;\n left: 3px;\n box-shadow: 0 1px 3px #14182038;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] {\n background: #3b9cf5;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] > span {\n transform: translateX(17px);\n}\n\n.arkme-remote-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-device-row {\n border-bottom: 1px solid #ededee;\n grid-template-columns: 24px minmax(0, 1fr) auto;\n align-items: center;\n gap: 11px;\n min-height: 64px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-device-row:last-child {\n border-bottom: 0;\n}\n\n.arkme-remote-device-row > svg {\n color: #68707c;\n}\n\n.arkme-remote-device-row > div {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-device-row > button {\n color: #5d626c;\n min-height: 30px;\n font: inherit;\n cursor: pointer;\n background: #f3f3f4;\n border: 0;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 10px;\n}\n\n.arkme-remote-device-row > button:hover {\n color: #b54841;\n background: #fff0ed;\n}\n\n.arkme-remote-device-row > button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-empty-row {\n color: #989ca3;\n align-items: center;\n gap: 11px;\n min-height: 52px;\n padding: 0 18px;\n font-size: 11px;\n display: flex;\n}\n\n.arkme-remote-empty-row > svg {\n color: #a2a6ad;\n}\n\n.arkme-remote-name-row {\n color: #727780;\n width: 100%;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n grid-template-columns: 24px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 11px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-name-row:hover {\n background: #fafafb;\n}\n\n.arkme-remote-name-row > span {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-name-row small {\n display: block;\n}\n\n.arkme-remote-rename {\n border-top: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 7px;\n padding: 12px 18px;\n display: grid;\n}\n\n.arkme-remote-rename input {\n box-sizing: border-box;\n color: #20232c;\n min-width: 0;\n height: 34px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n outline: 0;\n padding: 0 10px;\n font-size: 12px;\n}\n\n.arkme-remote-rename input:focus {\n border-color: #6eb3f3;\n box-shadow: 0 0 0 3px #3b9cf51f;\n}\n\n.arkme-remote-rename button {\n color: #4f5560;\n min-height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e0e1e4;\n border-radius: 9px;\n padding: 0 11px;\n font-size: 11px;\n}\n\n.arkme-remote-rename button[type=\"submit\"] {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-remote-rename button:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-error {\n margin: -22px 0 0;\n}\n\n.arkme-remote-dialog-backdrop {\n z-index: 1200;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n overflow: auto;\n}\n\n.arkme-remote-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n width: min(440px, 100vw - 32px);\n max-height: calc(100vh - 48px);\n padding: 28px;\n position: relative;\n overflow: auto;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-dialog-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n position: absolute;\n top: 16px;\n right: 16px;\n}\n\n.arkme-remote-dialog-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-dialog-symbol {\n color: #343944;\n justify-content: center;\n align-items: center;\n gap: 9px;\n height: 38px;\n display: flex;\n}\n\n.arkme-remote-dialog-symbol > span {\n background: #d6d8dc;\n width: 28px;\n height: 1px;\n}\n\n.arkme-remote-dialog > header {\n text-align: center;\n margin: 12px 0 22px;\n}\n\n.arkme-remote-dialog h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 19px;\n font-weight: 620;\n line-height: 27px;\n}\n\n.arkme-remote-dialog header p {\n color: #858992;\n margin: 6px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-pairing-tabs {\n box-sizing: border-box;\n background: #f1f1f2;\n border-radius: 11px;\n grid-template-columns: 1fr 1fr;\n gap: 3px;\n height: 38px;\n padding: 3px;\n display: grid;\n}\n\n.arkme-remote-pairing-tabs button {\n color: #737881;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n color: #252831;\n background: #fff;\n box-shadow: 0 1px 3px #14182017;\n}\n\n.arkme-remote-pairing-display {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 308px;\n margin-top: 14px;\n padding: 24px;\n display: flex;\n position: relative;\n}\n\n.arkme-remote-pairing-display > img {\n width: 232px;\n height: 232px;\n image-rendering: pixelated;\n display: block;\n}\n\n.arkme-remote-pairing-display > p {\n color: #8b9098;\n text-align: center;\n margin: 10px 0 0;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-remote-pairing-code {\n color: #20232c;\n letter-spacing: .17em;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: all;\n font-size: 33px;\n font-weight: 620;\n line-height: 46px;\n}\n\n.arkme-remote-pairing-tools {\n gap: 4px;\n display: flex;\n position: absolute;\n bottom: 12px;\n right: 12px;\n}\n\n.arkme-remote-pairing-tools button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-pairing-tools button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-pairing-expired {\n text-align: center;\n justify-items: center;\n gap: 7px;\n display: grid;\n}\n\n.arkme-remote-pairing-expired strong {\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-remote-pairing-expired p {\n color: #8b9098;\n margin: 0;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-expired button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n margin-top: 7px;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-remote-dialog-note {\n color: #858992;\n align-items: flex-start;\n gap: 7px;\n margin: 14px 2px 0;\n font-size: 10px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-remote-dialog-note > svg {\n color: #5e856d;\n flex: none;\n margin-top: 1px;\n}\n\n.arkme-remote-settings-close:focus-visible, .arkme-remote-icon-button:focus-visible, .arkme-remote-add-button:focus-visible, .arkme-remote-switch:focus-visible, .arkme-remote-device-row > button:focus-visible, .arkme-remote-name-row:focus-visible, .arkme-remote-rename button:focus-visible, .arkme-remote-dialog button:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #3b9cf5;\n}\n\n@media (width <= 520px) {\n .arkme-remote-settings-dialog-backdrop {\n padding: 10px;\n }\n\n .arkme-remote-settings-dialog {\n border-radius: 17px;\n width: calc(100vw - 20px);\n max-height: calc(100vh - 20px);\n }\n\n .arkme-remote-page-header {\n min-height: 68px;\n padding: 0 16px 0 20px;\n }\n\n .arkme-remote-page-header p {\n display: none;\n }\n\n .arkme-remote-settings-dialog-body {\n gap: 24px;\n padding: 20px 18px 22px;\n }\n\n .arkme-remote-section-header p {\n display: none;\n }\n\n .arkme-remote-device-row {\n grid-template-columns: 22px minmax(0, 1fr);\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .arkme-remote-device-row > button {\n grid-column: 2;\n justify-self: start;\n }\n\n .arkme-remote-dialog-backdrop {\n padding: 12px;\n }\n\n .arkme-remote-dialog {\n padding: 24px 20px;\n }\n\n .arkme-remote-pairing-display {\n min-height: 282px;\n padding: 18px;\n }\n\n .arkme-remote-pairing-display > img {\n width: min(224px, 100%);\n height: auto;\n }\n\n .arkme-remote-pairing-code {\n letter-spacing: .12em;\n font-size: 26px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-remote-switch, .arkme-remote-switch > span {\n transition: none;\n }\n}\n\n.arkme-redesign-model-settings {\n color: #20232c;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\n.arkme-redesign-model-settings > header {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 42px 0 22px;\n}\n\n.arkme-redesign-model-settings > header button {\n color: #525762;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 18px;\n align-items: center;\n gap: 4px;\n padding: 0 10px 0 7px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.arkme-redesign-model-settings > header button:hover {\n color: #20232c;\n background: #f6f6f7;\n}\n\n.arkme-redesign-model-settings-body {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 0 0 68px;\n}\n\n.arkme-redesign-model-settings-body > * {\n max-width: none !important;\n}\n\n.arkme-redesign-task-start {\n place-items: center;\n width: 100%;\n height: 100%;\n padding: 28px 58px 64px;\n display: grid;\n}\n\n.arkme-redesign-task-start-inner {\n text-align: center;\n width: min(760px, 88%);\n transform: translateY(-12px);\n}\n\n.arkme-redesign-task-greeting {\n justify-content: center;\n align-items: center;\n gap: 12px;\n margin-bottom: 24px;\n display: flex;\n}\n\n.arkme-redesign-task-greeting img {\n object-fit: contain;\n flex: none;\n width: 62px;\n height: 16px;\n display: block;\n}\n\n.arkme-redesign-task-start h1 {\n letter-spacing: -.03em;\n margin: 0;\n font-size: 29px;\n font-weight: 600;\n line-height: 1.15;\n}\n\n.arkme-redesign-hero-input {\n border: 1px solid var(--arkme-focus);\n text-align: left;\n background: #fff;\n border-radius: 17px;\n grid-template-rows: minmax(56px, 1fr) auto;\n min-height: 142px;\n padding: 17px 16px 13px 20px;\n display: grid;\n box-shadow: 0 8px 30px #1c1f270b;\n}\n\n.arkme-redesign-hero-input:focus-within {\n border-color: #aebdff;\n box-shadow: 0 10px 38px #36488c13, 0 0 0 3px #91a4ff12;\n}\n\n.arkme-redesign-hero-input textarea {\n resize: none;\n color: #20232c;\n border: 0;\n outline: 0;\n width: 100%;\n min-height: 58px;\n padding: 0;\n font-size: 15px;\n line-height: 1.6;\n}\n\n.arkme-redesign-hero-input textarea::placeholder {\n color: #a3a6ad;\n}\n\n.arkme-redesign-hero-controls {\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n display: flex;\n}\n\n.arkme-redesign-hero-controls > div {\n align-items: center;\n gap: 7px;\n display: flex;\n}\n\n.arkme-redesign-source-button {\n border-radius: 22px;\n align-items: center;\n gap: 8px;\n height: 36px;\n padding: 0 13px;\n font-size: 13px;\n display: flex;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool, .arkme-redesign-send-task {\n border-radius: 50%;\n place-items: center;\n width: 40px;\n height: 40px;\n display: grid;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool:hover {\n background: #f5f5f6;\n}\n\n.arkme-redesign-send-task {\n color: #fff !important;\n background: #20232d !important;\n border: 0 !important;\n}\n\n.arkme-redesign-send-task:disabled {\n cursor: default;\n background: #d9dade !important;\n}\n\n.arkme-redesign-task-error {\n color: #b84747;\n text-align: left;\n margin-top: 10px;\n font-size: 12px;\n}\n\n.arkme-redesign-starters {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n width: calc(100% - 18px);\n margin: 22px auto 0;\n display: grid;\n}\n\n.arkme-redesign-starters > button {\n text-align: left;\n border-right: 1px solid #e7e7e9;\n align-items: center;\n gap: 12px;\n min-width: 0;\n min-height: 48px;\n padding: 4px 18px;\n display: flex;\n}\n\n.arkme-redesign-starters > button:last-child {\n border-right: 0;\n}\n\n.arkme-redesign-starters > button:hover strong {\n color: #5365ad;\n}\n\n.arkme-redesign-starter-icon {\n color: #30333b;\n border: 1px solid #e2e3e6;\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n}\n\n.arkme-redesign-starters > button > span:last-child {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-starters strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-redesign-starters small {\n color: #8d919a;\n font-size: 12px;\n}\n\n.arkme-redesign-details {\n z-index: 4;\n top: var(--arkme-native-titlebar);\n background: #fff;\n border-left: 1px solid #e7e7e9;\n width: 360px;\n position: absolute;\n bottom: 0;\n right: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-calendar-overlay {\n z-index: 14;\n inset: var(--arkme-native-titlebar) 0 0;\n pointer-events: none;\n position: absolute;\n}\n\n.arkme-redesign-calendar-overlay > * {\n pointer-events: auto;\n}\n\n.arkme-redesign-overlays {\n z-index: 20;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.arkme-redesign-overlays > * {\n pointer-events: auto;\n}\n\n.arkme-workspace-dialog-backdrop {\n z-index: 60;\n backdrop-filter: blur(2px);\n background: #181b2238;\n place-items: center;\n padding: 28px;\n display: grid;\n position: absolute;\n inset: 0;\n}\n\n.arkme-workspace-dialog {\n background: #fff;\n border: 1px solid #dddfe4;\n border-radius: 18px;\n grid-template-rows: auto auto minmax(0, 1fr) auto;\n width: min(640px, 100%);\n height: min(620px, 100%);\n min-height: 420px;\n display: grid;\n overflow: hidden;\n box-shadow: 0 24px 70px #191c232e;\n}\n\n.arkme-workspace-dialog > header {\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n padding: 22px 24px 16px;\n display: flex;\n}\n\n.arkme-workspace-dialog > header span {\n color: #8b8e96;\n font-size: 10px;\n}\n\n.arkme-workspace-dialog > header h2 {\n margin: 5px 0 0;\n font-size: 19px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog > header > button {\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-dialog > nav {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n align-items: center;\n gap: 2px;\n min-height: 42px;\n padding: 0 22px;\n display: flex;\n overflow-x: auto;\n}\n\n.arkme-workspace-dialog > nav > span {\n white-space: nowrap;\n color: #9a9da5;\n align-items: center;\n gap: 2px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > nav button {\n color: #666a73;\n border-radius: 8px;\n align-items: center;\n gap: 5px;\n height: 30px;\n padding: 0 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-directory-list {\n min-height: 0;\n padding: 10px 14px;\n overflow-y: auto;\n}\n\n.arkme-workspace-directory-list > button {\n text-align: left;\n border-radius: 11px;\n grid-template-columns: 34px minmax(0, 1fr) 18px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 48px;\n padding: 0 11px;\n display: grid;\n}\n\n.arkme-workspace-directory-list > button:hover {\n background: #f5f5f7;\n}\n\n.arkme-workspace-directory-list > button > span {\n color: #636873;\n border: 1px solid #e5e6e9;\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-directory-list strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog-status, .arkme-workspace-dialog-error {\n color: #8c9098;\n text-align: center;\n padding: 54px 16px;\n font-size: 12px;\n}\n\n.arkme-workspace-dialog-error {\n color: #b94b4b;\n}\n\n.arkme-workspace-dialog > footer {\n border-top: 1px solid #e8e9ec;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 72px;\n padding: 12px 18px;\n display: flex;\n}\n\n.arkme-workspace-dialog-back {\n color: #696d76;\n align-items: center;\n gap: 6px;\n height: 36px;\n padding: 0 10px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > footer > div {\n align-items: center;\n gap: 12px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-workspace-dialog > footer small {\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #92959d;\n max-width: 280px;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog > footer > div > button {\n color: #fff;\n background: #20232d;\n border-radius: 10px;\n flex: none;\n height: 38px;\n padding: 0 17px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-redesign-placeholder {\n color: #858992;\n text-align: center;\n place-content: center;\n justify-items: center;\n width: 100%;\n height: 100%;\n display: grid;\n}\n\n.arkme-redesign-placeholder > span {\n color: #555a64;\n border: 1px solid #e1e2e5;\n border-radius: 14px;\n place-items: center;\n width: 48px;\n height: 48px;\n display: grid;\n}\n\n.arkme-redesign-placeholder h1 {\n color: #3e424b;\n margin: 16px 0 7px;\n font-size: 18px;\n}\n\n.arkme-redesign-placeholder p {\n margin: 0;\n font-size: 12px;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] {\n --arkme-line: var(--dsw-alias-border-l1);\n --arkme-muted: var(--dsw-alias-label-tertiary);\n --arkme-soft: var(--dsw-alias-bg-layer-2);\n --arkme-focus: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"], body[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] {\n background: var(--dsw-specific-sidebar-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-brand\"] {\n box-shadow: none;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"light\"] {\n display: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: block !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] > div {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-surface, body[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] div:has( > input[aria-label=\"搜索\"]) {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button:hover {\n background: var(--dsw-alias-interactive-bg-hover) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] > span[aria-hidden=\"true\"] {\n background: var(--dsw-alias-state-business-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [aria-label=\"Arkme 会话列表\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] button[aria-label=\"新任务\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] button[aria-label=\"新任务\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"treeitem\"][aria-selected=\"true\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"treeitem\"][aria-selected=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"status\"][aria-label$=\"个人测试版\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"status\"][aria-label$=\"个人测试版\"] {\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button:first-child, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button:first-child {\n border-color: var(--dsw-alias-button-primary-fill) !important;\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover, body[data-ds-dark-theme] .arkme-update-capsule {\n border-color: var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, transparent);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading h2, body[data-ds-dark-theme] .arkme-update-release-notes strong, body[data-ds-dark-theme] .arkme-update-capsule-copy strong {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading span, body[data-ds-dark-theme] .arkme-update-popover-summary, body[data-ds-dark-theme] .arkme-update-release-notes small, body[data-ds-dark-theme] .arkme-update-capsule-copy small {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-release-notes, body[data-ds-dark-theme] .arkme-update-release-notes > div + div {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-update-later, body[data-ds-dark-theme] .arkme-update-progress, body[data-ds-dark-theme] .arkme-update-rail:not(.is-available) {\n background: var(--dsw-alias-fill-l1);\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"当天内容\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"] > span[aria-hidden] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > header button, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[aria-label*=\"记录\"] {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > div > span {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"false\"][aria-label*=\"条记录\"] > span:last-child {\n background: var(--dsw-alias-bg-layer-2) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span {\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span:last-child {\n color: var(--dsw-alias-label-primary-inverted) !important;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article > div > div:last-child {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article h3, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article p {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article time, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article span {\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-root, body[data-ds-dark-theme] .arkme-redesign-chat-panel, body[data-ds-dark-theme] .arkme-redesign-content, body[data-ds-dark-theme] .arkme-redesign-feature-page, body[data-ds-dark-theme] .arkme-redesign-recordings-page, body[data-ds-dark-theme] .arkme-redesign-plugins-page, body[data-ds-dark-theme] .arkme-redesign-model-settings, body[data-ds-dark-theme] .arkme-redesign-details {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-native-desktop .arkme-redesign-root:before {\n background: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-sidebar-fill);\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button, body[data-ds-dark-theme] .arkme-redesign-profile-menu button, body[data-ds-dark-theme] .arkme-redesign-task-list > button, body[data-ds-dark-theme] .arkme-redesign-task-first, body[data-ds-dark-theme] .arkme-workspace-dialog > nav button, body[data-ds-dark-theme] .arkme-workspace-dialog-back, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button:hover, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button:hover, body[data-ds-dark-theme] .arkme-redesign-profile-menu button:hover, body[data-ds-dark-theme] .arkme-redesign-chat-search:hover, body[data-ds-dark-theme] .arkme-redesign-task-section-title button:hover, body[data-ds-dark-theme] .arkme-redesign-task-list > button:hover, body[data-ds-dark-theme] .arkme-redesign-task-first:hover, body[data-ds-dark-theme] .arkme-extension-toolbar > button:hover, body[data-ds-dark-theme] button.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] a.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button:hover, body[data-ds-dark-theme] .arkme-redesign-round-tool:hover, body[data-ds-dark-theme] .arkme-workspace-directory-list > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button.is-active, body[data-ds-dark-theme] .arkme-redesign-task-list > button.is-selected {\n background: var(--dsw-alias-interactive-bg-active);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-footer, body[data-ds-dark-theme] .arkme-redesign-profile-menu, body[data-ds-dark-theme] .arkme-redesign-task-section, body[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-header, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-row, body[data-ds-dark-theme] .arkme-account-info-row, body[data-ds-dark-theme] .arkme-redesign-starters > button, body[data-ds-dark-theme] .arkme-redesign-details, body[data-ds-dark-theme] .arkme-workspace-dialog > nav, body[data-ds-dark-theme] .arkme-workspace-dialog > footer {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-popover, body[data-ds-dark-theme] .arkme-workspace-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-head small, body[data-ds-dark-theme] .arkme-redesign-profile-menu small, body[data-ds-dark-theme] .arkme-redesign-profile-menu button > svg:last-child, body[data-ds-dark-theme] .arkme-redesign-task-section-title, body[data-ds-dark-theme] .arkme-redesign-task-copy small, body[data-ds-dark-theme] .arkme-account-profile-qr, body[data-ds-dark-theme] .arkme-redesign-feature-page > header p, body[data-ds-dark-theme] .arkme-redesign-feature-page > header span, body[data-ds-dark-theme] .arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder, body[data-ds-dark-theme] .arkme-redesign-settings-profile p, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-summary, body[data-ds-dark-theme] .arkme-account-info-copy > small, body[data-ds-dark-theme] .arkme-account-info-action, body[data-ds-dark-theme] .arkme-account-info-row > svg, body[data-ds-dark-theme] .arkme-account-info-icon, body[data-ds-dark-theme] .arkme-redesign-setting-row > svg, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea::placeholder, body[data-ds-dark-theme] .arkme-redesign-starters small, body[data-ds-dark-theme] .arkme-workspace-dialog > header span, body[data-ds-dark-theme] .arkme-workspace-dialog > nav > span, body[data-ds-dark-theme] .arkme-workspace-dialog-status, body[data-ds-dark-theme] .arkme-workspace-dialog > footer small, body[data-ds-dark-theme] .arkme-redesign-placeholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label, body[data-ds-dark-theme] .arkme-extension-toolbar > button, body[data-ds-dark-theme] .arkme-redesign-settings-group, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-workspace-directory-list > button > span, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n border-color: var(--dsw-alias-border-l2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-extension-toolbar input, body[data-ds-dark-theme] .arkme-redesign-settings-profile h1, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-task-start h1, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-redesign-placeholder h1 {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-list, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-surface, body[data-ds-dark-theme] .arkme-redesign-settings-group {\n color: var(--dsw-alias-label-primary);\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog > header, body[data-ds-dark-theme] .arkme-account-qr-card {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-account-qr-card, body[data-ds-dark-theme] .arkme-account-form input, body[data-ds-dark-theme] .arkme-account-code-row button, body[data-ds-dark-theme] .arkme-account-dialog-actions button {\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-border-l2);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog-actions button[type=\"submit\"], body[data-ds-dark-theme] .arkme-account-dialog-actions button:last-child {\n border-color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nbody[data-ds-dark-theme] .arkme-account-rule, body[data-ds-dark-theme] .arkme-account-qr-card span, body[data-ds-dark-theme] .arkme-account-qr-card small, body[data-ds-dark-theme] .arkme-account-form label {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-surface, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-box {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"] {\n box-shadow: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"][data-arkme-composer-focused=\"true\"] {\n background: color-mix(in srgb, var(--dsw-alias-bg-base, #fff) 97%, #000) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-greeting img {\n filter: invert() hue-rotate(180deg);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input textarea {\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon {\n background: var(--dsw-alias-button-elevated-fill) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card:hover {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-interactive-bg-hover) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-error {\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-page-header h1, body[data-ds-dark-theme] .arkme-remote-section-header h2, body[data-ds-dark-theme] .arkme-remote-allow-row strong, body[data-ds-dark-theme] .arkme-remote-device-row strong, body[data-ds-dark-theme] .arkme-remote-name-row strong, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-code {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-section-header p, body[data-ds-dark-theme] .arkme-remote-page-header p, body[data-ds-dark-theme] .arkme-remote-allow-row span, body[data-ds-dark-theme] .arkme-remote-device-row span, body[data-ds-dark-theme] .arkme-remote-name-row small, body[data-ds-dark-theme] .arkme-remote-dialog header p, body[data-ds-dark-theme] .arkme-remote-pairing-display > p, body[data-ds-dark-theme] .arkme-remote-dialog-note, body[data-ds-dark-theme] .arkme-remote-empty-row {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-card, body[data-ds-dark-theme] .arkme-remote-settings-dialog, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-display, body[data-ds-dark-theme] .arkme-remote-rename input {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-allow-row, body[data-ds-dark-theme] .arkme-remote-device-row, body[data-ds-dark-theme] .arkme-remote-rename, body[data-ds-dark-theme] .arkme-remote-page-header {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close, body[data-ds-dark-theme] .arkme-remote-icon-button, body[data-ds-dark-theme] .arkme-remote-dialog-close, body[data-ds-dark-theme] .arkme-remote-pairing-tools button, body[data-ds-dark-theme] .arkme-remote-name-row {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close:hover, body[data-ds-dark-theme] .arkme-remote-icon-button:hover, body[data-ds-dark-theme] .arkme-remote-dialog-close:hover, body[data-ds-dark-theme] .arkme-remote-pairing-tools button:hover, body[data-ds-dark-theme] .arkme-remote-name-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-add-button, body[data-ds-dark-theme] .arkme-remote-rename button[type=\"submit\"], body[data-ds-dark-theme] .arkme-remote-pairing-expired button {\n background: var(--dsw-alias-button-primary-fill);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-device-row > button, body[data-ds-dark-theme] .arkme-remote-rename button {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs {\n background: var(--dsw-alias-bg-layer-2);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-dialog-backdrop, body[data-ds-dark-theme] .arkme-remote-dialog-backdrop {\n background: #07090d8f;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-setting-row > strong.is-danger, body[data-ds-dark-theme] .arkme-redesign-task-error, body[data-ds-dark-theme] .arkme-workspace-dialog-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i {\n background: var(--dsw-alias-state-success-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i:after {\n background: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-matrix i, body[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 3px var(--dsw-alias-state-business-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-starters > button:hover strong {\n color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task, body[data-ds-dark-theme] .arkme-workspace-dialog > footer > div > button {\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task:disabled {\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-workspace-dialog-backdrop {\n background: var(--dsw-alias-bg-mask-1);\n}\n\n@media (width <= 1024px) {\n .arkme-redesign-chat-panel {\n width: 264px;\n left: 82px;\n }\n\n .arkme-redesign-content {\n left: 82px;\n }\n\n .arkme-redesign-content.has-panel {\n left: 346px;\n }\n\n .arkme-redesign-rail {\n left: 12px;\n }\n\n .arkme-redesign-starters > button {\n padding: 0 10px;\n }\n\n .arkme-redesign-feature-page {\n padding-left: 30px;\n padding-right: 30px;\n }\n}\n\n@media (width <= 820px) {\n .arkme-redesign-chat-panel {\n display: none;\n }\n\n .arkme-redesign-content.has-panel {\n left: 82px;\n }\n\n .arkme-redesign-task-start {\n padding: 28px;\n }\n\n .arkme-redesign-starters {\n grid-template-columns: 1fr;\n gap: 6px;\n }\n\n .arkme-redesign-starters > button {\n border-right: 0;\n }\n\n .arkme-voiceprint-relationships {\n grid-template-columns: minmax(0, 1fr) !important;\n gap: 28px !important;\n }\n\n .arkme-voiceprint-outbound {\n border-left: 0 !important;\n border-top: 1px solid var(--dsw-alias-border-subtle, #e6e7eb) !important;\n padding-top: 28px !important;\n padding-left: 0 !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-redesign-task-matrix i {\n opacity: .6;\n animation: none;\n }\n\n .arkme-update-rail.is-downloading svg, .arkme-update-popover, .arkme-update-capsule, .arkme-update-progress.is-indeterminate span {\n animation: none;\n }\n\n .arkme-update-rail, .arkme-update-progress span {\n transition: none;\n }\n}\n\n.arkme-contact-directory, .arkme-directory-detail-pane {\n box-sizing: border-box;\n min-width: 0;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 13px;\n overflow: hidden;\n}\n\n[data-arkme-directory-mode=\"contacts\"] {\n background: var(--dsw-specific-sidebar-fill, #fff) !important;\n border-left-color: var(--dsw-alias-border-l1, #ececef) !important;\n}\n\n.arkme-contact-directory {\n overflow-wrap: anywhere;\n padding: 8px 6px 18px;\n overflow-y: auto;\n}\n\n.arkme-directory-detail-pane {\n overflow: hidden;\n}\n\n.arkme-contact-directory button, .arkme-directory-detail-pane button {\n appearance: none;\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n border: 0;\n margin: 0;\n}\n\n.arkme-contact-directory-section {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n min-width: 0;\n padding: 2px 0 5px;\n}\n\n.arkme-contact-directory-section-header {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-width: 0;\n min-height: 42px;\n padding: 0 10px;\n display: flex;\n}\n\n.arkme-contact-directory-section-title {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-contact-directory-section-title strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.arkme-contact-directory-caret {\n width: 14px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n transform-origin: center;\n flex: none;\n font-size: 18px;\n line-height: 1;\n transition: transform .16s;\n}\n\n.arkme-contact-directory-section-header[aria-expanded=\"true\"] .arkme-contact-directory-caret {\n transform: rotate(90deg);\n}\n\n.arkme-contact-directory-section-header:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-section-body {\n min-width: 0;\n padding: 0 0 5px;\n}\n\n.arkme-contact-directory-list {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-directory-count {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n font-variant-numeric: tabular-nums;\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-directory-row {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 13px;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-width: 0;\n min-height: 52px;\n margin: 1px 0;\n padding: 7px 10px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row img {\n object-fit: cover;\n border-radius: 50%;\n flex: none;\n width: 38px;\n height: 38px;\n}\n\n.arkme-contact-directory-row.is-static {\n cursor: default;\n}\n\n.arkme-contact-directory-row.is-selected {\n background: var(--dsw-alias-interactive-bg-active, #eef0f4);\n}\n\n.arkme-contact-directory-row:not(.is-static):hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-avatar {\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy {\n flex: 1;\n align-content: center;\n min-width: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy small {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-letter {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n padding: 8px 10px 2px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n}\n\n.arkme-contact-directory-alphabetical, .arkme-contact-directory-letter-group {\n min-width: 0;\n}\n\n.arkme-contact-directory-status, .arkme-contact-directory-warning {\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n overflow-wrap: anywhere;\n margin: 3px 8px;\n padding: 7px 9px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-contact-directory-warning {\n color: var(--dsw-alias-state-warning-primary, #b45309);\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n border-radius: 9px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-contact-directory-warning button {\n color: inherit;\n cursor: pointer;\n background: none;\n flex: none;\n padding: 2px 4px;\n font-weight: 600;\n}\n\n.arkme-contact-directory-more {\n text-align: center;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n width: calc(100% - 16px);\n min-height: 32px;\n padding: 6px 8px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n margin: 3px 8px !important;\n}\n\n.arkme-contact-directory-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 14px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-directory-detail-empty {\n background: var(--dsw-alias-bg-base, #fff);\n place-items: center;\n min-width: 0;\n height: 100%;\n min-height: 0;\n display: grid;\n}\n\n.arkme-directory-detail-logo {\n object-fit: contain;\n opacity: .9;\n width: 96px;\n height: 96px;\n}\n\n.arkme-contact-detail, .arkme-contact-profile, .arkme-contact-world-card, .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.arkme-contact-detail {\n background: var(--dsw-alias-bg-base, #fff);\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n padding: 32px clamp(24px, 5vw, 56px);\n}\n\n.arkme-contact-profile-main {\n grid-template-columns: 72px minmax(0, 1fr) auto;\n align-items: center;\n gap: 18px;\n width: min(100%, 760px);\n margin: 0 auto;\n display: grid;\n}\n\n.arkme-contact-profile-avatar {\n border-radius: 50%;\n place-items: center;\n width: 72px;\n height: 72px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile-identity {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-profile-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n font-size: 20px;\n font-weight: 650;\n line-height: 28px;\n display: block;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-contact-profile-fields > div {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #68707c);\n gap: 4px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-contact-profile-fields dt, .arkme-contact-profile-fields dd {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields dt {\n flex: none;\n}\n\n[data-arkme-workspace] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill, #5667cc);\n cursor: pointer;\n border-radius: 10px;\n min-height: 36px;\n padding: 0 16px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary-inverted, #fff) !important;\n}\n\n.arkme-contact-profile-message:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-contact-profile-error, .arkme-contact-profile-message-error {\n max-width: 760px;\n color: var(--dsw-alias-state-error-primary, #b42318);\n overflow-wrap: anywhere;\n margin: 0 auto;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-contact-profile-error {\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n display: flex;\n}\n\n.arkme-contact-profile-status {\n max-width: 760px;\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n margin: 0 auto;\n padding: 24px 0;\n font-size: 12px;\n}\n\n.arkme-contact-world {\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-detail > .arkme-contact-world {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-subtle, #f7f7f8);\n padding: 22px clamp(20px, 4vw, 52px) 28px;\n}\n\n.arkme-contact-world-container {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 18px;\n flex-direction: column;\n width: min(100%, 980px);\n min-width: 0;\n height: 100%;\n min-height: 0;\n margin: 0 auto;\n display: flex;\n overflow-y: auto;\n box-shadow: 0 16px 48px #161b230f;\n}\n\n.arkme-contact-world-title {\n box-sizing: border-box;\n width: min(100%, 760px);\n margin: 0 auto;\n padding: 22px 28px 10px;\n font-size: 15px;\n font-weight: 650;\n line-height: 22px;\n}\n\n.arkme-contact-world-list {\n box-sizing: border-box;\n align-content: start;\n gap: 30px;\n width: min(100%, 760px);\n min-height: 0;\n margin: 0 auto;\n padding: 28px 28px 42px;\n display: grid;\n}\n\n.arkme-contact-world-year {\n gap: 24px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-year > h2 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 28px;\n font-weight: 750;\n line-height: 36px;\n}\n\n.arkme-contact-world-entry {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-diary {\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n align-items: center;\n gap: 8px;\n font-size: 11px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time span {\n font-size: 17px;\n line-height: 10px;\n}\n\n.arkme-contact-world-card {\n border: 1px dashed var(--dsw-alias-border-l2, #d9dce2);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 14px;\n gap: 10px;\n padding: 15px 16px;\n display: grid;\n}\n\n.arkme-contact-world-card-header {\n grid-template-columns: 36px minmax(0, 1fr) auto;\n align-items: center;\n gap: 9px;\n display: grid;\n}\n\n.arkme-contact-world-author {\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n font-size: 13px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-world-headline {\n margin: 2px 0 0;\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-contact-world-text {\n color: var(--dsw-alias-label-secondary, #68707c);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-images {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n min-width: 0;\n max-width: 620px;\n display: grid;\n}\n\n.arkme-contact-world-image {\n aspect-ratio: 1;\n object-fit: cover;\n border-radius: 11px;\n width: 100%;\n display: block;\n}\n\n.arkme-contact-world-image-error, .arkme-contact-world-image-loading {\n aspect-ratio: 1;\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n width: 100%;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n border-radius: 11px;\n place-items: center;\n display: grid;\n}\n\n.arkme-contact-world-tags {\n flex-wrap: wrap;\n gap: 6px;\n display: flex;\n}\n\n.arkme-contact-world-tag {\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 11px;\n}\n\n.arkme-contact-world-empty {\n box-sizing: border-box;\n text-align: center;\n flex: 1;\n place-content: center;\n justify-items: center;\n min-height: 240px;\n padding: 36px 20px;\n display: grid;\n}\n\n.arkme-contact-world-empty img {\n width: 140px;\n height: 100px;\n display: block;\n}\n\n.arkme-contact-world-empty p {\n color: var(--dsw-alias-label-secondary, #858992);\n margin: 16px 0 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-error, .arkme-contact-world-status {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n place-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-contact-world-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-load-more {\n cursor: pointer;\n background: none;\n border-radius: 9px;\n place-self: center;\n min-height: 34px;\n padding: 0 12px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n}\n\n.arkme-contact-world-load-more-status, .arkme-contact-world-load-more-error {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 8px 16px;\n font-size: 11px;\n}\n\n.arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-page-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n align-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-directory-unmarked-speaker-detail {\n background: var(--dsw-alias-bg-base, #fff);\n min-height: 0;\n padding: clamp(28px, 5vw, 60px);\n overflow-y: auto;\n}\n\n.arkme-unmarked-speaker-token-avatar {\n background: var(--dsw-alias-bg-module-platform, var(--dsw-alias-bg-layer-1, #f1f2f3));\n color: var(--dsw-alias-label-secondary, #666c75);\n letter-spacing: -.02em;\n border-radius: 50%;\n flex: none;\n place-items: center;\n font-weight: 650;\n line-height: 1;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 18px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 24px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary h1, .arkme-unmarked-speaker-summary h2, .arkme-unmarked-speaker-audio h2, .arkme-unmarked-speaker-choice h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 20px;\n font-weight: 680;\n line-height: 28px;\n}\n\n.arkme-unmarked-speaker-identity {\n align-items: center;\n gap: 16px;\n min-width: 0;\n padding: 2px 4px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-identity > div {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-identity p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-stats {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #737984);\n flex-wrap: wrap;\n gap: 8px 20px;\n padding: 0 4px;\n font-size: 12px;\n line-height: 19px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-stats span {\n white-space: nowrap;\n position: relative;\n}\n\n.arkme-unmarked-speaker-stats span + span:before {\n content: \"\";\n background: var(--dsw-alias-label-caption, #b3b7bd);\n border-radius: 50%;\n width: 3px;\n height: 3px;\n position: absolute;\n top: 8px;\n left: -11px;\n}\n\n.arkme-unmarked-speaker-stats strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-inference {\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 18px;\n grid-template-columns: 40px minmax(0, 1fr);\n align-items: start;\n gap: 12px;\n min-width: 0;\n padding: 18px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n border: 1px solid var(--dsw-alias-border-l1, #e3e4e7);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 40px;\n height: 40px;\n color: var(--dsw-alias-label-secondary, #656b75);\n border-radius: 50%;\n place-items: center;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon svg path, .arkme-unmarked-speaker-action-icon svg path {\n stroke: currentColor;\n stroke-width: 1.5px;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.arkme-unmarked-speaker-inference > div {\n gap: 5px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-label {\n color: var(--dsw-alias-label-secondary, #747983);\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-inference strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 14px;\n font-weight: 650;\n line-height: 21px;\n}\n\n.arkme-unmarked-speaker-inference p {\n color: var(--dsw-alias-label-secondary, #686e78);\n margin: 0;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-unmarked-speaker-actions {\n gap: 10px;\n display: grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-action {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 100%;\n min-height: 62px;\n color: var(--dsw-alias-label-primary, #202124);\n text-align: left;\n cursor: pointer;\n border-radius: 16px;\n grid-template-columns: 42px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n padding: 10px 46px 10px 14px;\n font-size: 13px;\n font-weight: 650;\n display: grid;\n position: relative;\n}\n\n.arkme-unmarked-speaker-action:after {\n content: \"›\";\n color: var(--dsw-alias-label-caption, #a7abb2);\n font-size: 22px;\n font-weight: 400;\n position: absolute;\n right: 18px;\n}\n\n.arkme-unmarked-speaker-action:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f7f7f8);\n border-color: var(--dsw-alias-border-l2, #d9dade);\n}\n\n.arkme-unmarked-speaker-summary > [role=\"status\"], .arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"status\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"status\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-label-secondary, #68707c);\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 10px;\n padding: 9px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-state-error-primary, #b42318);\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n}\n\n.arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 16px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 28px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 40px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n min-width: 0;\n padding-bottom: 4px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header > button {\n min-height: 32px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 11px;\n}\n\n.arkme-unmarked-speaker-subview-header > button:before {\n content: \"‹\";\n vertical-align: -1px;\n margin-right: 4px;\n font-size: 17px;\n}\n\n.arkme-unmarked-speaker-subview-heading {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-heading p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-segment-list {\n gap: 10px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-card {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 16px;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px 16px;\n min-width: 0;\n padding: 16px 16px 14px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-meta {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #757b85);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-unmarked-speaker-segment-transcript {\n min-width: 0;\n color: var(--dsw-alias-label-primary, #292c34);\n white-space: pre-wrap;\n grid-column: 1;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-alias-bg-layer-2, #f4f4f5);\n width: 38px;\n min-width: 38px;\n height: 38px;\n min-height: 38px;\n color: var(--dsw-alias-label-primary, #292c34);\n cursor: pointer;\n border-radius: 50%;\n grid-area: 1 / 2 / span 2;\n align-self: center;\n place-items: center;\n padding: 0;\n display: inline-grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play:not(:disabled):hover {\n background: var(--dsw-alias-bg-layer-3, #e9eaec);\n}\n\n.arkme-unmarked-speaker-segment-play:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-choice-meta {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: -4px 0 0;\n padding: 0 4px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-choice-options {\n border: 0;\n gap: 8px;\n min-width: 0;\n margin: 0;\n padding: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-options legend {\n color: var(--dsw-alias-label-secondary, #737984);\n margin-bottom: 9px;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-choice-option {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n cursor: pointer;\n border-radius: 14px;\n grid-template-columns: 18px minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n min-width: 0;\n min-height: 52px;\n padding: 10px 14px;\n font-size: 13px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-option:has(input:checked) {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n background: var(--dsw-alias-interactive-bg-active, #f0f2ff);\n}\n\n.arkme-unmarked-speaker-choice-option input {\n width: 16px;\n height: 16px;\n accent-color: var(--dsw-alias-state-business-primary, #6677d9);\n margin: 0;\n}\n\n.arkme-unmarked-speaker-recommended {\n background: var(--dsw-alias-state-business-tertiary, #eef0ff);\n color: var(--dsw-alias-state-business-primary, #5667cc);\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-choice-new-name {\n border: 1px solid var(--dsw-alias-border-l1, #dfe1e5);\n background: var(--dsw-specific-input-major, #fff);\n width: 100%;\n min-height: 42px;\n color: var(--dsw-alias-label-primary, #202124);\n border-radius: 12px;\n outline: 0;\n padding: 0 13px;\n font-size: 12px;\n}\n\n.arkme-unmarked-speaker-choice-new-name:focus {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--dsw-alias-state-business-primary, #6677d9) 14%, transparent);\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-confirm {\n background: var(--dsw-alias-button-primary-fill, #202124);\n min-height: 42px;\n color: var(--dsw-alias-label-primary-inverted, #fff);\n cursor: pointer;\n border-radius: 12px;\n padding: 0 16px;\n font-size: 12px;\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-confirm:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-summary button:not(.arkme-unmarked-speaker-action), .arkme-unmarked-speaker-audio button:not(.arkme-unmarked-speaker-segment-play), .arkme-unmarked-speaker-choice button:not(.arkme-unmarked-speaker-confirm), .arkme-contact-world-error button, .arkme-contact-profile-error button {\n border: 1px solid var(--dsw-alias-border-l2, var(--arkme-line));\n background: var(--dsw-alias-button-elevated-fill, #fff);\n min-height: 34px;\n color: var(--dsw-alias-label-primary, #202124);\n cursor: pointer;\n border-radius: 9px;\n padding: 0 12px;\n}\n\n.arkme-unmarked-speaker-gone, .arkme-unmarked-speaker-success {\n box-sizing: border-box;\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n width: min(100%, 680px);\n color: var(--dsw-alias-state-warning-primary, #9a3412);\n border-radius: 10px;\n margin: 0 auto;\n padding: 12px 14px;\n}\n\n.arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary, #ecfdf3);\n color: var(--dsw-alias-state-success-primary, #067647);\n}\n\n.arkme-contact-directory button:focus-visible, .arkme-directory-detail-pane button:focus-visible, [data-arkme-owned=\"product-navigation\"] button:focus-visible {\n outline: 2px solid var(--arkme-focus);\n outline-offset: 2px;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory, body[data-ds-dark-theme] .arkme-directory-detail-pane {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-row.is-selected, body[data-ds-dark-theme] .arkme-contact-world-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option, body[data-ds-dark-theme] .arkme-unmarked-speaker-action {\n background: var(--dsw-alias-bg-layer-1);\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-action-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option:has(input:checked) {\n background: var(--dsw-alias-interactive-bg-active);\n border-color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-detail > .arkme-contact-world {\n background: var(--dsw-alias-bg-subtle);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-world-container {\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: none;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-warning, body[data-ds-dark-theme] .arkme-unmarked-speaker-gone, body[data-ds-dark-theme] .arkme-contact-world-image-error, body[data-ds-dark-theme] .arkme-contact-world-image-loading {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-error, body[data-ds-dark-theme] .arkme-contact-profile-message-error, body[data-ds-dark-theme] .arkme-contact-world-error, body[data-ds-dark-theme] .arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-more, body[data-ds-dark-theme] .arkme-contact-world-load-more {\n color: var(--dsw-alias-state-business-primary);\n}\n\n@media (width <= 1024px) {\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"] {\n min-width: 0;\n }\n}\n\n@media (width <= 820px) {\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"directory\"]) {\n grid-template-columns: minmax(0, 1fr) 0 0 !important;\n }\n\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"content\"]) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"][data-arkme-contacts-mobile-view=\"content\"], [data-arkme-owned=\"persistent-workspace\"][data-arkme-contacts-mobile-view=\"directory\"] {\n display: none !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"], .arkme-directory-detail-pane {\n min-width: 0;\n }\n}\n\n.arkme-directory-mobile-back {\n display: none;\n}\n\n@media (width <= 820px) {\n .arkme-directory-mobile-back {\n min-height: 42px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n align-items: center;\n gap: 5px;\n padding: 0 14px;\n display: inline-flex;\n }\n\n .arkme-directory-mobile-back:before {\n content: \"‹\";\n font-size: 18px;\n line-height: 1;\n }\n\n .arkme-directory-mobile-back:hover {\n color: var(--dsw-alias-label-primary, #202124);\n }\n\n .arkme-contact-profile {\n padding: 26px 20px;\n }\n\n .arkme-contact-profile-main {\n grid-template-columns: 56px minmax(0, 1fr) auto;\n gap: 12px;\n }\n\n .arkme-contact-profile-avatar {\n width: 56px;\n height: 56px;\n }\n\n .arkme-contact-profile-avatar > span {\n width: 56px !important;\n height: 56px !important;\n }\n\n .arkme-contact-world-title {\n padding-left: 20px;\n padding-right: 20px;\n }\n\n .arkme-directory-unmarked-speaker-detail {\n padding: 20px 18px 30px;\n }\n\n .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n gap: 14px;\n }\n\n .arkme-unmarked-speaker-stats {\n gap: 7px 14px;\n }\n\n .arkme-unmarked-speaker-stats span + span:before {\n display: none;\n }\n\n .arkme-unmarked-speaker-inference {\n grid-template-columns: 36px minmax(0, 1fr);\n padding: 15px;\n }\n\n .arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n width: 36px;\n height: 36px;\n }\n\n .arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 36px minmax(0, 1fr);\n gap: 9px;\n }\n\n .arkme-unmarked-speaker-segment-card {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .arkme-unmarked-speaker-segment-transcript, [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n grid-area: auto / 1;\n }\n\n [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n justify-self: start;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-contact-directory-caret {\n transition: none;\n }\n\n .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-conversation-surface {\n --arkme-chat-self-bubble: #eef1f8;\n --arkme-chat-other-bubble: #f3f4f6;\n}\n\nbody[data-ds-dark-theme] .arkme-conversation-surface {\n --arkme-chat-self-bubble: #2c3142;\n --arkme-chat-other-bubble: #282a31;\n --arkme-audio-control: #8995c5;\n}\n\nbody[data-ds-dark-theme] .arkme-detail-extension-input-bar {\n border-top-color: #363636 !important;\n}\n\nbody[data-ds-dark-theme] .arkme-detail-extension-input-shell {\n background: #2b2b2b !important;\n}\n\n[data-arkme-message-direction]:focus-visible, [data-arkme-note-detail] button:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n.arkme-world-extension-activity:hover {\n background: var(--dsw-alias-interactive-bg-hover, #2631480f) !important;\n}\n\n.arkme-world-extension-activity:active {\n background: var(--dsw-alias-interactive-bg-active, #2631481a) !important;\n}\n\n.arkme-world-extension-activity:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n@media (width <= 680px) {\n .arkme-world-extension-activity {\n grid-template-columns: 48px minmax(0, 1fr) !important;\n gap: 11px !important;\n padding: 13px !important;\n }\n}\n";
131031
132709
  //#endregion
131032
132710
  //#region src/client/redesign/styles.ts
131033
132711
  const REDESIGN_STYLE_ID = "@senguoyun/dsh-arkme/redesign";