@senguoyun/dsh-arkme 0.1.38 → 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 (36) hide show
  1. package/lib/client.js +2000 -405
  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/ArkmeRichContent.d.ts +2 -1
  13. package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
  14. package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
  15. package/lib/types/client/api.d.ts +1 -1
  16. package/lib/types/client/api.d.ts.map +1 -1
  17. package/lib/types/client/arkme-theme.d.ts +1 -0
  18. package/lib/types/client/arkme-theme.d.ts.map +1 -1
  19. package/lib/types/client/composer-draft-store.d.ts +1 -1
  20. package/lib/types/client/composer-draft-store.d.ts.map +1 -1
  21. package/lib/types/client/conversation-memory-cache.d.ts +10 -0
  22. package/lib/types/client/conversation-memory-cache.d.ts.map +1 -1
  23. package/lib/types/client/ui-controller.d.ts +2 -1
  24. package/lib/types/client/ui-controller.d.ts.map +1 -1
  25. package/lib/types/host-api.d.ts.map +1 -1
  26. package/lib/types/sdk/index.d.ts +15 -2
  27. package/lib/types/sdk/index.d.ts.map +1 -1
  28. package/lib/types/services/chat-service.d.ts +17 -1
  29. package/lib/types/services/chat-service.d.ts.map +1 -1
  30. package/lib/types/services/file-transfers.d.ts +1 -0
  31. package/lib/types/services/file-transfers.d.ts.map +1 -1
  32. package/lib/types/services/record-service.d.ts +4 -0
  33. package/lib/types/services/record-service.d.ts.map +1 -1
  34. package/lib/types/types.d.ts +53 -1
  35. package/lib/types/types.d.ts.map +1 -1
  36. 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.38";
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,
@@ -92738,6 +93714,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
92738
93714
  background: "color-mix(in srgb, var(--dsw-alias-bg-base, #ffffff) 97%, #000000)",
92739
93715
  boxShadow: "none"
92740
93716
  },
93717
+ composerInnerExtension: {
93718
+ borderTop: 0,
93719
+ borderRadius: "0 0 15px 15px"
93720
+ },
92741
93721
  composerStack: {
92742
93722
  width: "100%",
92743
93723
  minWidth: 0,
@@ -93094,6 +94074,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93094
94074
  const ARKME_MESSAGE_ACTION_MENU_LABELS = [
93095
94075
  "复制",
93096
94076
  "复制链接",
94077
+ "延展",
93097
94078
  "多选",
93098
94079
  "转发"
93099
94080
  ];
@@ -93315,6 +94296,35 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93315
94296
  }
93316
94297
  return [...map.values()].sort((a, b) => a.sendAtMillis - b.sendAtMillis || a.itemUid.localeCompare(b.itemUid));
93317
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
+ }
93318
94328
  const ARKME_CONFIRMED_SEND_RETENTION_MILLIS = ARKME_CONVERSATION_TIMELINE_FRESH_MILLIS * 4;
93319
94329
  /**
93320
94330
  * Retains only bounded Host-confirmed sends while an eventually-consistent
@@ -93584,6 +94594,53 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93584
94594
  ]
93585
94595
  });
93586
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
+ }
93587
94644
  function normalizedEpochMillis(value) {
93588
94645
  return value > 0 && value < 1e11 ? value * 1e3 : value;
93589
94646
  }
@@ -93761,6 +94818,66 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
93761
94818
  size: kind === "forward" ? 18 : 16
93762
94819
  });
93763
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
+ }
93764
94881
  function ArkmeForwardLinearIcon({ size = 18 }) {
93765
94882
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeSelectActionIcon, {
93766
94883
  kind: "forward",
@@ -94300,6 +95417,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94300
95417
  const attachments = composerDraft.attachments;
94301
95418
  const [composerInputFocused, setComposerInputFocused] = (0, react.useState)(false);
94302
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]);
94303
95425
  const backgroundSoundAvailabilityRef = (0, react.useRef)({
94304
95426
  supported: backgroundSoundSupported,
94305
95427
  eligibilityReason: backgroundSoundEligibilityReason
@@ -94360,6 +95482,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94360
95482
  const panelRef = (0, react.useRef)(null);
94361
95483
  const bodyRef = (0, react.useRef)(null);
94362
95484
  const sentinelRef = (0, react.useRef)(null);
95485
+ const newerSentinelRef = (0, react.useRef)(null);
94363
95486
  const composerRef = (0, react.useRef)(null);
94364
95487
  const textareaRef = (0, react.useRef)(null);
94365
95488
  const fileInputRef = (0, react.useRef)(null);
@@ -94448,13 +95571,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94448
95571
  ]);
94449
95572
  const [timelineView, setTimelineView] = (0, react.useState)({
94450
95573
  sourceKey: "",
95574
+ mode: "latest",
95575
+ aroundSequenceRange: void 0,
94451
95576
  items: [],
94452
95577
  aiPolishNotices: [],
94453
95578
  aiPolishSettings: void 0,
94454
95579
  nextCursor: void 0,
94455
- hasMore: false
95580
+ hasMore: false,
95581
+ newerCursor: void 0,
95582
+ newerHasMore: false
94456
95583
  });
94457
- const { sourceKey: timelineStateKey, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore } = timelineView;
95584
+ const { sourceKey: timelineStateKey, mode: timelineMode, aroundSequenceRange, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore, newerCursor, newerHasMore } = timelineView;
94458
95585
  const aiPolishSettingsRef = (0, react.useRef)(aiPolishSettings);
94459
95586
  const aiPolishNoticesRef = (0, react.useRef)(aiPolishNotices);
94460
95587
  aiPolishSettingsRef.current = aiPolishSettings;
@@ -94535,11 +95662,16 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94535
95662
  const [compactNavigation, setCompactNavigation] = (0, react.useState)(false);
94536
95663
  const [submitBusy, setSubmitBusy] = (0, react.useState)(false);
94537
95664
  const [loadingOlder, setLoadingOlder] = (0, react.useState)(false);
95665
+ const [loadingNewer, setLoadingNewer] = (0, react.useState)(false);
95666
+ const newerSentinelArmedRef = (0, react.useRef)(true);
94538
95667
  const [highlightedTargetUid, setHighlightedTargetUid] = (0, react.useState)("");
94539
95668
  const conversationTargetPagingRef = (0, react.useRef)({
94540
95669
  revision: 0,
94541
- pages: 0
95670
+ pages: 0,
95671
+ aroundRequested: false
94542
95672
  });
95673
+ const conversationTargetLocatedRevisionRef = (0, react.useRef)(0);
95674
+ const conversationTargetAbortRef = (0, react.useRef)();
94543
95675
  const [error, setError] = (0, react.useState)(initialAuth?.status === "binding-required" ? t("error.binding.required") : "");
94544
95676
  const [agreed, setAgreed] = (0, react.useState)(true);
94545
95677
  const [loginMode, setLoginMode] = (0, react.useState)(initialAuth?.status === "binding-required" ? "phone" : "jiwo");
@@ -94767,6 +95899,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94767
95899
  document.removeEventListener("keydown", closeMessageMenuFromKeyboard);
94768
95900
  };
94769
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]);
94770
95914
  const qrRequestStartedRef = (0, react.useRef)(false);
94771
95915
  const qrFlowRevisionRef = (0, react.useRef)(0);
94772
95916
  const currentJiwoAttemptRef = (0, react.useRef)();
@@ -94775,9 +95919,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94775
95919
  const confirmedSendRetention = (0, react.useMemo)(() => new ArkmeConfirmedSendRetentionOwner(), [authenticatedAccountKey]);
94776
95920
  const cacheAccountKeyRef = (0, react.useRef)();
94777
95921
  const timelineGenerationRef = (0, react.useRef)(0);
94778
- const timelineRequestAbortRef = (0, react.useRef)();
94779
- const timelineRequestKeyRef = (0, react.useRef)("");
95922
+ const timelineWindowRevisionRef = (0, react.useRef)(0);
95923
+ const timelineRequestsRef = (0, react.useRef)(/* @__PURE__ */ new Map());
94780
95924
  const pendingViewportRestoreRef = (0, react.useRef)();
95925
+ const pendingConversationTargetLocateRef = (0, react.useRef)();
94781
95926
  const interwovenRequestRef = (0, react.useRef)();
94782
95927
  const interwovenGenerationRef = (0, react.useRef)(0);
94783
95928
  const detailRequestRef = (0, react.useRef)();
@@ -94795,9 +95940,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
94795
95940
  (0, react.useEffect)(() => {
94796
95941
  if (activeConversation) return;
94797
95942
  timelineGenerationRef.current += 1;
94798
- timelineRequestAbortRef.current?.abort();
94799
- timelineRequestAbortRef.current = void 0;
94800
- 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("");
94801
95950
  interwovenGenerationRef.current += 1;
94802
95951
  interwovenRequestRef.current?.abort();
94803
95952
  interwovenRequestRef.current = void 0;
@@ -95251,19 +96400,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95251
96400
  arkmeChatDirectory.refreshRoot({ force: true }).catch(() => void 0);
95252
96401
  }
95253
96402
  }, [source]);
95254
- 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") => {
95255
96404
  if (source === void 0) return;
95256
96405
  const sourceRef = source.sourceRef;
95257
96406
  const sourceKey = arkmeSourceIdentityKey(source);
95258
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";
95259
96410
  const requestKey = `${sourceKey}:${cursor === void 0 ? "initial" : JSON.stringify(cursor)}`;
95260
- const activeController = timelineRequestAbortRef.current;
95261
- 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;
95262
96418
  const hadCachedTimeline = conversationCacheRef.current.getTimeline(sourceKey) !== void 0;
95263
96419
  const controller = new AbortController();
95264
- timelineRequestAbortRef.current?.abort();
95265
- timelineRequestAbortRef.current = controller;
95266
- timelineRequestKeyRef.current = requestKey;
96420
+ activeRequest?.controller.abort();
96421
+ timelineRequestsRef.current.set(direction, {
96422
+ controller,
96423
+ requestKey
96424
+ });
95267
96425
  let page;
95268
96426
  try {
95269
96427
  page = await retryArkmeRead(() => callArkme("source.timeline", {
@@ -95275,23 +96433,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95275
96433
  if (isArkmeRequestAbort(caught, controller.signal)) return;
95276
96434
  throw caught;
95277
96435
  } finally {
95278
- if (timelineRequestAbortRef.current === controller) {
95279
- timelineRequestAbortRef.current = void 0;
95280
- timelineRequestKeyRef.current = "";
95281
- }
96436
+ if (timelineRequestsRef.current.get(direction)?.controller === controller) timelineRequestsRef.current.delete(direction);
95282
96437
  }
95283
- if (generation !== timelineGenerationRef.current) return;
96438
+ if (generation !== timelineGenerationRef.current || windowRevision !== timelineWindowRevisionRef.current) return;
95284
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;
95285
96444
  const nextAiPolishSettings = cursor === void 0 ? page.aiPolishSettings : cached?.aiPolishSettings;
95286
- 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);
95287
96446
  const snapshot = {
96447
+ mode: cursor === void 0 ? "latest" : loadingNewerPage && !page.hasMore ? "latest" : cached?.mode ?? "latest",
96448
+ ...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
95288
96449
  items: cursor === void 0 ? confirmedSendRetention.merge(sourceKey, authoritativeItems) : mergeItems(cached?.items ?? [], page.items),
95289
96450
  aiPolishNotices: cursor === void 0 ? page.aiPolishNotices ?? [] : cached?.aiPolishNotices ?? [],
95290
- hasMore: page.hasMore,
96451
+ hasMore: loadingNewerPage ? cached?.hasMore ?? false : page.hasMore,
96452
+ newerHasMore: loadingNewerPage ? page.hasMore : cursor === void 0 ? false : cached?.newerHasMore ?? false,
95291
96453
  fetchedAtMillis: Date.now(),
95292
96454
  ...sourceIsChat ? { latestSequence: Math.max(source.latestSequence ?? 0, ...page.items.map((item) => item.sequence ?? 0)) } : { recordRevision: sourceProjectionRevision },
95293
96455
  ...nextAiPolishSettings === void 0 ? {} : { aiPolishSettings: nextAiPolishSettings },
95294
- ...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 }
95295
96458
  };
95296
96459
  const contentChanged = !arkmeConversationTimelineContentEqual(cached, snapshot);
95297
96460
  const releasedMoments = conversationCacheRef.current.storeTimeline(sourceKey, snapshot);
@@ -95300,15 +96463,20 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95300
96463
  const body = bodyRef.current;
95301
96464
  pendingViewportRestoreRef.current = {
95302
96465
  sourceKey,
95303
- 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}` }
95304
96468
  };
95305
96469
  if (contentChanged) setTimelineView({
95306
96470
  sourceKey,
96471
+ mode: snapshot.mode ?? "latest",
96472
+ aroundSequenceRange: snapshot.aroundSequenceRange,
95307
96473
  items: snapshot.items,
95308
96474
  aiPolishNotices: snapshot.aiPolishNotices,
95309
96475
  aiPolishSettings: snapshot.aiPolishSettings,
95310
96476
  nextCursor: snapshot.nextCursor,
95311
- hasMore: snapshot.hasMore
96477
+ hasMore: snapshot.hasMore,
96478
+ newerCursor: snapshot.newerCursor,
96479
+ newerHasMore: snapshot.newerHasMore ?? false
95312
96480
  });
95313
96481
  if (releasedMomentsChanged && releasedMoments !== void 0) setInterwovenMoments(releasedMoments);
95314
96482
  }
@@ -95363,25 +96531,130 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95363
96531
  const target = ui.conversationTarget;
95364
96532
  if (!activeConversation || !authenticated || source === void 0 || target === void 0 || timelineStateKey !== conversationKey) return;
95365
96533
  if (conversationTargetPagingRef.current.revision !== target.revision) {
96534
+ conversationTargetAbortRef.current?.abort();
96535
+ conversationTargetAbortRef.current = void 0;
95366
96536
  conversationTargetPagingRef.current = {
95367
96537
  revision: target.revision,
95368
- pages: 0
96538
+ pages: 0,
96539
+ aroundRequested: false
95369
96540
  };
96541
+ newerSentinelArmedRef.current = true;
96542
+ if (pendingConversationTargetLocateRef.current?.revision !== target.revision) pendingConversationTargetLocateRef.current = void 0;
95370
96543
  setHighlightedTargetUid("");
95371
96544
  }
96545
+ if (conversationTargetLocatedRevisionRef.current === target.revision) return;
95372
96546
  if (items.some((item) => item.itemUid === target.itemUid)) {
95373
- const body = bodyRef.current;
95374
- (body === null ? void 0 : [...body.querySelectorAll("[data-arkme-conversation-row]")].find((element) => element.dataset.arkmeConversationRow === target.itemUid))?.scrollIntoView({
95375
- behavior: "smooth",
95376
- 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;
95377
96654
  });
95378
- setHighlightedTargetUid(target.itemUid);
95379
- window.setTimeout(() => {
95380
- setHighlightedTargetUid((current) => current === target.itemUid ? "" : current);
95381
- }, 2400);
95382
- arkmeUi.consumeConversationTarget(target.revision);
95383
96655
  return;
95384
96656
  }
96657
+ if ((target.recordOwnerUserId ?? 0) > 0) return;
95385
96658
  if (loadingOlder) return;
95386
96659
  if (!hasMore || nextCursor === void 0 || conversationTargetPagingRef.current.pages >= 80) {
95387
96660
  setError("已打开对应会话,但暂未能在当前历史中定位该条消息");
@@ -95406,6 +96679,8 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95406
96679
  loadingOlder,
95407
96680
  nextCursor,
95408
96681
  source,
96682
+ sourceIsChat,
96683
+ sourceProjectionRevision,
95409
96684
  timelineStateKey,
95410
96685
  ui.conversationTarget
95411
96686
  ]);
@@ -95418,9 +96693,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95418
96693
  ]);
95419
96694
  (0, react.useLayoutEffect)(() => {
95420
96695
  timelineGenerationRef.current += 1;
95421
- timelineRequestAbortRef.current?.abort();
95422
- timelineRequestAbortRef.current = void 0;
95423
- 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("");
95424
96704
  const accountChanged = cacheAccountKeyRef.current !== authenticatedAccountKey;
95425
96705
  if (!accountChanged && timelineStateKey !== "" && bodyRef.current !== null) conversationCacheRef.current.storeViewport(timelineStateKey, arkmeConversationViewport(bodyRef.current));
95426
96706
  if (accountChanged) {
@@ -95436,11 +96716,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95436
96716
  else pendingViewportRestoreRef.current = void 0;
95437
96717
  setTimelineView({
95438
96718
  sourceKey: sourceKey ?? "",
96719
+ mode: cachedTimeline?.mode ?? "latest",
96720
+ aroundSequenceRange: cachedTimeline?.aroundSequenceRange,
95439
96721
  items: cachedTimeline?.items ?? [],
95440
96722
  aiPolishNotices: cachedTimeline?.aiPolishNotices ?? [],
95441
96723
  aiPolishSettings: cachedTimeline?.aiPolishSettings,
95442
96724
  nextCursor: cachedTimeline?.nextCursor,
95443
- hasMore: cachedTimeline?.hasMore ?? false
96725
+ hasMore: cachedTimeline?.hasMore ?? false,
96726
+ newerCursor: cachedTimeline?.newerCursor,
96727
+ newerHasMore: cachedTimeline?.newerHasMore ?? false
95444
96728
  });
95445
96729
  setTimelineLoadingKey(sourceKey !== void 0 && cachedTimeline === void 0 ? sourceKey : "");
95446
96730
  setTimelineSkeletonKey("");
@@ -95523,6 +96807,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95523
96807
  const generation = timelineGenerationRef.current;
95524
96808
  const cachedTimeline = conversationCacheRef.current.getTimeline(conversationKey);
95525
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
+ }
95526
96815
  const authoritativeLatestSequence = Math.max(source.latestSequence ?? 0, chatDelta.latestSequence ?? 0);
95527
96816
  const realtimeCoversLatest = sourceIsChat && arkmeRealtimeDeltaCoversTimelineGap(cachedTimeline, chatDelta.items, authoritativeLatestSequence);
95528
96817
  if (!(sourceIsChat ? !realtimeCoversLatest && arkmeShouldRefreshChatTimeline(cachedTimeline, Date.now(), authoritativeLatestSequence) : arkmeShouldRefreshRecordTimeline(cachedTimeline, Date.now(), sourceProjectionRevision))) {
@@ -95531,7 +96820,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95531
96820
  acknowledgeRead(cachedTimeline?.items ?? []);
95532
96821
  return;
95533
96822
  }
95534
- loadTimeline().catch((caught) => {
96823
+ loadTimeline(void 0, false, 40, "background").catch((caught) => {
95535
96824
  arkmeChatDirectory.rejectOptimisticRead(source.sourceRef, source.sourceKey, source.latestSequence ?? 0);
95536
96825
  if (generation === timelineGenerationRef.current) {
95537
96826
  setTimelineLoadingKey((current) => current === conversationKey ? "" : current);
@@ -95555,21 +96844,29 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95555
96844
  if (!authenticated || source === void 0 || timelineStateKey !== conversationKey) return;
95556
96845
  if (conversationCacheRef.current.getTimeline(conversationKey) === void 0) return;
95557
96846
  conversationCacheRef.current.storeTimeline(conversationKey, {
96847
+ mode: timelineMode,
96848
+ ...aroundSequenceRange === void 0 ? {} : { aroundSequenceRange },
95558
96849
  items,
95559
96850
  aiPolishNotices,
95560
96851
  hasMore,
95561
96852
  ...aiPolishSettings === void 0 ? {} : { aiPolishSettings },
95562
- ...nextCursor === void 0 ? {} : { nextCursor }
96853
+ ...nextCursor === void 0 ? {} : { nextCursor },
96854
+ ...newerCursor === void 0 ? {} : { newerCursor },
96855
+ newerHasMore
95563
96856
  });
95564
96857
  }, [
95565
96858
  aiPolishNotices,
95566
96859
  aiPolishSettings,
96860
+ aroundSequenceRange,
95567
96861
  authenticated,
95568
96862
  conversationKey,
95569
96863
  hasMore,
95570
96864
  items,
96865
+ newerCursor,
96866
+ newerHasMore,
95571
96867
  nextCursor,
95572
96868
  source,
96869
+ timelineMode,
95573
96870
  timelineStateKey
95574
96871
  ]);
95575
96872
  (0, react.useEffect)(() => {
@@ -95648,8 +96945,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95648
96945
  (0, react.useEffect)(() => {
95649
96946
  if (!activeConversation || !authenticated || source === void 0) return;
95650
96947
  const deltaItems = chatDelta.items;
95651
- if (deltaItems.length === 0) return;
95652
- 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);
95653
96952
  if (JSON.stringify(nextItems) === JSON.stringify(items)) return;
95654
96953
  const body = bodyRef.current;
95655
96954
  const viewport = body === null ? void 0 : arkmeConversationViewport(body);
@@ -95657,11 +96956,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95657
96956
  sourceKey: conversationKey,
95658
96957
  viewport
95659
96958
  };
95660
- const existingIds = new Set(items.map((item) => item.itemUid));
95661
- const incomingCount = deltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
96959
+ const incomingCount = applicableDeltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
95662
96960
  setTimelineView((current) => {
95663
96961
  if (current.sourceKey !== conversationKey) return current;
95664
- const mergedItems = mergeItems(current.items, deltaItems);
96962
+ const mergedItems = mergeItems(current.items, applicableDeltaItems);
95665
96963
  return sameStateValue(current.items, mergedItems) ? current : {
95666
96964
  ...current,
95667
96965
  items: mergedItems
@@ -95669,15 +96967,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95669
96967
  });
95670
96968
  if (viewport?.stickToBottom === false && incomingCount > 0) setNewMessageCount((current) => current + incomingCount);
95671
96969
  else setNewMessageCount(0);
95672
- acknowledgeRead(deltaItems);
96970
+ acknowledgeRead(applicableDeltaItems);
95673
96971
  }, [
95674
96972
  acknowledgeRead,
95675
96973
  activeConversation,
96974
+ aroundSequenceRange,
95676
96975
  authenticated,
95677
96976
  chatDelta,
95678
96977
  conversationKey,
95679
96978
  items,
95680
- source
96979
+ source,
96980
+ timelineMode
95681
96981
  ]);
95682
96982
  (0, react.useEffect)(() => {
95683
96983
  if (!activeConversation || !authenticated || source?.kind !== "group_chat") return;
@@ -95769,6 +97069,38 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
95769
97069
  loadingOlder,
95770
97070
  nextCursor
95771
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
+ ]);
95772
97104
  (0, react.useEffect)(() => {
95773
97105
  if (smsCountdown <= 0) return;
95774
97106
  const timer = setTimeout(() => {
@@ -96071,6 +97403,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96071
97403
  const send = async () => {
96072
97404
  if (source === void 0 || composerDraftKey === void 0) return;
96073
97405
  const targetSource = source;
97406
+ const extensionTarget = activeComposerExtensionTarget;
96074
97407
  const targetDraftKey = composerDraftKey;
96075
97408
  const targetUserId = authenticatedUserId;
96076
97409
  const targetAccountKey = authenticatedAccountKey;
@@ -96095,8 +97428,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96095
97428
  state: "failed",
96096
97429
  message: errorMessage$2(caught) || "位置采集失败,请稍后重试"
96097
97430
  })) : Promise.resolve({ state: "disabled" });
96098
- 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
+ ]));
96099
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]);
96100
97440
  pendingComposerFocusDraftKeyRef.current = targetDraftKey;
96101
97441
  let inputCapture;
96102
97442
  try {
@@ -96130,11 +97470,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96130
97470
  state: "polishing",
96131
97471
  originalText: textContent
96132
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
+ },
96133
97484
  displayKind: 0
96134
97485
  };
96135
- const pendingAttachments = [...pendingDraft.attachments];
96136
- const pendingAssets = pendingAttachments.flatMap((attachment) => attachment.asset === void 0 ? [] : [attachment.asset]);
96137
- const pendingFileRefs = pendingAttachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
96138
97486
  if (sameTargetComposer()) pendingViewportRestoreRef.current = {
96139
97487
  sourceKey: arkmeSourceIdentityKey(targetSource),
96140
97488
  viewport: void 0
@@ -96161,11 +97509,52 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96161
97509
  length: mention.length
96162
97510
  }];
96163
97511
  });
96164
- if (pendingFileRefs.length === 0 && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
97512
+ if ((extensionTarget !== void 0 || pendingFileRefs.length === 0) && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
96165
97513
  if (sameTargetComposer()) setError("");
96166
97514
  let durableFileSendUncertain = false;
96167
97515
  let stagedBackgroundFileRefs = [];
96168
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
+ }
96169
97558
  if (pendingFileRefs.length > 0 && pendingAssets.length > 0) throw new Error("旧版附件与本地附件不能混合发送,请重新添加旧版附件");
96170
97559
  const sdk = createArkmeSdk();
96171
97560
  const allCapturedSegments = [...inputCapture.backgroundSound.segments];
@@ -96443,6 +97832,59 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96443
97832
  };
96444
97833
  const detailItem = items.find((item) => item.itemUid === detailItemUid);
96445
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
+ ]);
96446
97888
  const activateSource = (0, react.useCallback)((nextSource) => {
96447
97889
  if (isArkmeChatDirectorySource(nextSource)) arkmeChatDirectory.upsert(nextSource);
96448
97890
  arkmeUi.selectSource(nextSource);
@@ -96842,6 +98284,27 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96842
98284
  interwovenMoments,
96843
98285
  visibleConversationJoinEvents
96844
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]);
96845
98308
  const activeSelectMode = selectMode?.sourceKey === conversationKey ? selectMode : void 0;
96846
98309
  const selectedMessageItems = (0, react.useMemo)(() => activeSelectMode === void 0 ? [] : arkmeSelectedTimelineItems(displayItems, activeSelectMode.selectedIds), [activeSelectMode, displayItems]);
96847
98310
  const selectedMessageCount = activeSelectMode?.selectedIds.size ?? 0;
@@ -96887,6 +98350,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
96887
98350
  const closeMessageMenu = (0, react.useCallback)(() => {
96888
98351
  setMessageMenu(void 0);
96889
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]);
96890
98366
  const closeMessageSnapshot = (0, react.useCallback)(() => {
96891
98367
  snapshotRequestRef.current?.abort();
96892
98368
  snapshotRequestRef.current = void 0;
@@ -97404,11 +98880,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97404
98880
  const body = bodyRef.current;
97405
98881
  if (pending === void 0 || body === null || pending.sourceKey !== timelineStateKey) return;
97406
98882
  const anchorOffset = arkmeConversationAnchorOffset(body, pending.viewport?.anchorId);
97407
- 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, {
97408
98886
  currentScrollTop: body.scrollTop,
97409
98887
  scrollHeight: body.scrollHeight,
97410
98888
  ...anchorOffset === void 0 ? {} : { anchorOffset }
97411
- });
98889
+ }) : Math.max(0, Math.min(maximumScrollTop, newerPageStartOffset === void 0 ? pending.viewport?.scrollTop ?? body.scrollTop : body.scrollTop + newerPageStartOffset));
97412
98890
  conversationCacheRef.current.storeViewport(pending.sourceKey, arkmeConversationViewport(body));
97413
98891
  pendingViewportRestoreRef.current = void 0;
97414
98892
  }, [
@@ -97439,6 +98917,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97439
98917
  const utilityContentVisible = authView === "content" && (ui.mode === "recordings" || ui.mode === "world" || ui.mode === "search" || ui.mode === "extensions" || ui.mode === "voiceprint" || ui.mode === "calls");
97440
98918
  const conversationOverlayHost = panelRef.current;
97441
98919
  const composerPlaceholder = arkmeComposerPlaceholderText(arkmeComposerPlaceholderTargetForSource(selectedSource, conversationMembers.length));
98920
+ const effectiveComposerPlaceholder = activeComposerExtensionTarget === void 0 ? composerPlaceholder : `发送到「${source?.displayName ?? ""}」…`;
97442
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;
97443
98922
  (0, react.useLayoutEffect)(() => {
97444
98923
  const target = notificationActivation.source;
@@ -97928,6 +99407,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97928
99407
  const isForwardMessageCard = item.forwardRecords !== void 0;
97929
99408
  const isSharedRecordingCard = item.sharedRecording !== void 0;
97930
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;
97931
99418
  const selectionAnchor = arkmeMessageSelectionAnchor(item);
97932
99419
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [startsDay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
97933
99420
  style: styles$6.date,
@@ -97949,41 +99436,40 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
97949
99436
  event.stopPropagation();
97950
99437
  toggleSelectedMessage(item);
97951
99438
  },
97952
- children: [activeSelectMode !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageSelectionControl, {
97953
- anchor: selectionAnchor,
97954
- checked: selectedForAction,
97955
- disabled: !canUseMessageAction,
97956
- onToggle: () => {
97957
- toggleSelectedMessage(item);
97958
- }
97959
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97960
- style: {
97961
- ...styles$6.messageLine,
97962
- ...activeSelectMode !== void 0 && selectionAnchor === "avatar" ? styles$6.messageLineSelectAvatarMode : {},
97963
- ...item.isMe && !isSharedRecordingCard ? styles$6.messageLineMe : {},
97964
- ...isForwardMessageCard ? styles$6.forwardMessageLine : {},
97965
- ...isSharedRecordingCard ? styles$6.sharedRecordingMessageLine : {},
97966
- ...activeSelectMode !== void 0 && selectionAnchor === "card-center" ? styles$6.messageLineSelectCardCenterMode : {}
97967
- },
97968
- children: [showMessageAvatars && !isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageAvatar, {
97969
- ...avatarRef === void 0 ? {} : { avatarRef },
97970
- ...messageMember === void 0 ? {} : { member: messageMember },
97971
- profileEnabled: source?.kind === "group_chat",
97972
- onOpen: openMemberProfile,
97973
- onContextMenu: openMemberMenu
97974
- }), /* @__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", {
97975
99454
  style: {
97976
- ...styles$6.messageBody,
97977
- ...item.isMe && !isSharedRecordingCard ? styles$6.messageBodyMe : {},
97978
- ...isForwardMessageCard ? styles$6.forwardMessageBody : {},
97979
- ...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 : {}
97980
99461
  },
97981
- children: [
97982
- !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, {
97983
99470
  item,
97984
99471
  ...selfProfile === void 0 ? {} : { profile: selfProfile }
97985
- }),
97986
- (() => {
99472
+ }), (() => {
97987
99473
  const messageBubble = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
97988
99474
  role: "button",
97989
99475
  tabIndex: 0,
@@ -98085,23 +99571,55 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98085
99571
  }, task.taskRef))
98086
99572
  ]
98087
99573
  });
98088
- return isSharedRecordingCard ? messageBubble : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageReadReceiptLine, {
99574
+ const messageContentLine = isSharedRecordingCard ? messageBubble : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageReadReceiptLine, {
98089
99575
  source,
98090
99576
  item,
98091
99577
  wide: isStructuredMessageCard,
98092
99578
  children: messageBubble
98093
99579
  }, `read-receipt:${conversationOverlayKey}`);
98094
- })(),
98095
- selfTopicSource !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineSelfTopicBadge, {
98096
- topic: selfTopicSource,
98097
- onSelect: activateSelfSource
98098
- })
98099
- ]
98100
- })]
98101
- })]
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
+ ]
98102
99616
  })] }, row.id);
98103
99617
  })
98104
99618
  }),
99619
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
99620
+ ref: newerSentinelRef,
99621
+ style: styles$6.sentinel
99622
+ }),
98105
99623
  newMessageCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98106
99624
  type: "button",
98107
99625
  style: styles$6.newMessages,
@@ -98263,290 +99781,345 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98263
99781
  },
98264
99782
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98265
99783
  style: styles$6.composerStack,
98266
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98267
- ref: composerRef,
98268
- className: "arkme-conversation-composer-inner",
98269
- "data-arkme-primary-composer": "true",
98270
- "data-arkme-composer-focused": composerInputFocused ? "true" : "false",
98271
- style: {
98272
- ...styles$6.composerInner,
98273
- ...composerInputFocused ? styles$6.composerInnerFocused : {}
98274
- },
98275
- children: [
98276
- addMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98277
- ref: addMenuRef,
98278
- style: styles$6.addMenu,
98279
- role: "menu",
98280
- children: [
98281
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98282
- type: "button",
98283
- role: "menuitem",
98284
- style: styles$6.addMenuItem,
98285
- onClick: () => {
98286
- setAddMenuOpen(false);
98287
- fileInputRef.current?.click();
98288
- },
98289
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98290
- "aria-hidden": true,
98291
- children: "📎"
98292
- }), "添加照片和文件"]
98293
- }),
98294
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { style: styles$6.menuDivider }),
98295
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98296
- type: "button",
98297
- role: "menuitem",
98298
- style: styles$6.addMenuItem,
98299
- onClick: () => {
98300
- setLongArticleCreating(true);
98301
- setAddMenuOpen(false);
98302
- },
98303
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98304
- "aria-hidden": true,
98305
- children: "✎"
98306
- }), "写长文"]
98307
- })
98308
- ]
98309
- }),
98310
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
98311
- ref: fileInputRef,
98312
- type: "file",
98313
- multiple: true,
98314
- hidden: true,
98315
- onChange: (event) => {
98316
- selectFiles(event.currentTarget.files);
98317
- }
98318
- }),
98319
- attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
98320
- attachments,
98321
- disabled: preparingFiles,
98322
- onMove: (from, to) => arkmeComposerDraftStore.moveAttachment(composerDraftKey, from, to),
98323
- onPreview: (attachment) => {
98324
- 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();
98325
99832
  },
98326
- onRemove: (attachment) => {
98327
- arkmeComposerDraftStore.removeAttachment(composerDraftKey, arkmeAttachmentId(attachment));
98328
- if (attachment.localFile !== void 0) callArkme("files.local.remove", { fileRef: attachment.localFile.fileRef }).catch((caught) => setError(errorMessage$2(caught)));
98329
- }
98330
- }),
98331
- activeConversation && draftPreview !== void 0 && typeof document !== "undefined" && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMediaPreview, {
98332
- selected: draftPreview,
98333
- blocks: attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile)]),
98334
- onSelect: setDraftPreview,
98335
- onClose: () => setDraftPreview(void 0),
98336
- openLocalFile: false
98337
- }), document.body),
98338
- mentionTrigger !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98339
- style: styles$6.mentionSuggestions,
98340
- role: "listbox",
98341
- "aria-label": "选择要 @ 的对象",
98342
- children: mentionCandidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98343
- style: styles$6.mentionSuggestionsEmpty,
98344
- children: "暂无可 @ 的对象"
98345
- }) : mentionCandidates.map((member, index) => {
98346
- const primary = arkmeMentionCandidatePrimaryText(member);
98347
- const secondary = member.kind === "bot" ? (member.secondaryName ?? "Bot").trim() : "";
98348
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98349
- type: "button",
98350
- role: "option",
98351
- "aria-selected": index === mentionCandidateIndex,
98352
- style: {
98353
- ...styles$6.mentionSuggestionRow,
98354
- ...index === mentionCandidateIndex ? styles$6.mentionSuggestionRowActive : {}
98355
- },
98356
- onMouseEnter: () => {
98357
- setMentionCandidateIndex(index);
98358
- },
98359
- onMouseDown: (event) => {
98360
- event.preventDefault();
98361
- insertMentionCandidate(member);
98362
- },
98363
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98364
- style: styles$6.mentionSuggestionAvatar,
98365
- "aria-hidden": true,
98366
- children: member.kind === "bot" ? member.avatarRef === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98367
- style: styles$6.mentionSuggestionBotAvatar,
98368
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(t$5, {
98369
- size: 14,
98370
- weight: "fill"
98371
- })
98372
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
98373
- avatarRef: member.avatarRef,
98374
- size: 28,
98375
- label: member.displayName
98376
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
98377
- ...member.kind === "member" && member.avatarRef !== void 0 ? { avatarRef: member.avatarRef } : {},
98378
- size: 28,
98379
- label: member.displayName
98380
- })
98381
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
98382
- 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
+ },
98383
99860
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98384
- style: styles$6.mentionSuggestionName,
98385
- children: primary
98386
- }), secondary !== "" && secondary !== member.displayName ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98387
- style: styles$6.mentionSuggestionSecondary,
98388
- children: secondary
98389
- }) : null]
98390
- })]
98391
- }, member.kind === "all" ? "all" : member.kind === "bot" ? `bot:${member.botRef}` : `member:${member.mentionRef}`);
98392
- })
98393
- }),
98394
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRichComposerInput, {
98395
- className: "arkme-conversation-textarea",
98396
- ref: textareaRef,
98397
- style: styles$6.textarea,
98398
- value: draft,
98399
- mentions: composerDraft.mentions,
98400
- emojis: composerDraft.emojis,
98401
- maxLength: 2e4,
98402
- placeholder: composerPlaceholder,
98403
- ariaLabel: composerPlaceholder,
98404
- disabled: preparingFiles,
98405
- onTextChange: updateComposerText,
98406
- onFocus: () => {
98407
- setComposerInputFocused(true);
98408
- },
98409
- onBlur: () => {
98410
- setComposerInputFocused(false);
98411
- },
98412
- onSelectionChange: updateMentionTrigger,
98413
- onPaste: (event) => {
98414
- const files = arkmeClipboardFiles(event.clipboardData);
98415
- if (files.length === 0) return;
98416
- event.preventDefault();
98417
- selectFiles(files);
98418
- },
98419
- onKeyDown: (event) => {
98420
- if (mentionTrigger !== void 0) {
98421
- if (event.key === "Escape") {
98422
- event.preventDefault();
98423
- setMentionTrigger(void 0);
98424
- return;
98425
- }
98426
- if (event.key === "ArrowDown" && mentionCandidates.length > 0) {
98427
- event.preventDefault();
98428
- setMentionCandidateIndex((index) => (index + 1) % mentionCandidates.length);
98429
- return;
98430
- }
98431
- if (event.key === "ArrowUp" && mentionCandidates.length > 0) {
98432
- event.preventDefault();
98433
- setMentionCandidateIndex((index) => (index + mentionCandidates.length - 1) % mentionCandidates.length);
98434
- return;
98435
- }
98436
- if ((event.key === "Enter" || event.key === "Tab") && mentionCandidates.length > 0) {
98437
- event.preventDefault();
98438
- const selectedCandidate = mentionCandidates[Math.min(mentionCandidateIndex, mentionCandidates.length - 1)];
98439
- if (selectedCandidate !== void 0) insertMentionCandidate(selectedCandidate);
98440
- return;
98441
- }
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);
98442
99888
  }
98443
- if (!event.nativeEvent.isComposing && (event.key === "Backspace" || event.key === "Delete")) {
98444
- const caret = arkmeComposerDraftStore.deleteMentionAtSelection(composerDraftKey, textareaRef.current?.selectionStart ?? draft.length, textareaRef.current?.selectionEnd ?? draft.length, event.key === "Backspace" ? "backward" : "forward");
98445
- if (caret !== void 0) {
98446
- event.preventDefault();
98447
- requestAnimationFrame(() => {
98448
- textareaRef.current?.focus();
98449
- textareaRef.current?.setSelectionRange(caret, caret);
98450
- });
98451
- return;
98452
- }
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)));
98453
99900
  }
98454
- 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;
98455
99987
  event.preventDefault();
98456
- if (canSend) send();
98457
- }
98458
- }
98459
- }, composerDraftKey),
98460
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98461
- style: styles$6.tools,
98462
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98463
- style: styles$6.toolGroup,
98464
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
98465
- ref: addMenuTriggerRef,
98466
- type: "button",
98467
- style: styles$6.plus,
98468
- "aria-label": "添加内容",
98469
- "aria-haspopup": "menu",
98470
- "aria-expanded": addMenuOpen,
98471
- disabled: preparingFiles,
98472
- onClick: () => {
98473
- setAddMenuOpen((value) => !value);
98474
- },
98475
- children: preparingFiles ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFilePreparingIndicator, {}) : "+"
98476
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeEmojiPicker, {
98477
- disabled: preparingFiles,
98478
- scopeKey: composerDraftKey,
98479
- ...source?.kind === "private_chat" || source?.kind === "group_chat" ? { sourceRef: source.sourceRef } : {},
98480
- getCaretGeometry: () => textareaRef.current?.getCaretGeometry(),
98481
- getEditorGeometry: () => textareaRef.current?.getEditorGeometry(),
98482
- onSelect: insertEmoji,
98483
- onUploadSticker: async (file) => {
98484
- if (composerDraftKey === void 0) throw new Error("请先选择聊天");
98485
- return await uploadFavoriteSticker(file);
98486
- },
98487
- onStickerSent: async () => {
98488
- await loadTimeline();
98489
- },
98490
- onError: (message) => {
98491
- 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
+ }
98492
100013
  }
98493
- }, `emoji-picker:${conversationOverlayKey}`)]
98494
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
98495
- style: styles$6.composerSendArea,
98496
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeComposerInputStats, {
98497
- active: activeConversation,
98498
- visible: composerStatsVisible,
98499
- textLength: composerTextLength,
98500
- ...composerInputStartedAtMillis === void 0 ? {} : { startedAtMillis: composerInputStartedAtMillis },
98501
- showsInputTime: composerShowsInputTime,
98502
- onToggle: () => {
98503
- const next = !composerShowsInputTime;
98504
- setComposerShowsInputTime(next);
98505
- setArkmeComposerShowsInputTime(next);
98506
- 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
+ }
98507
100024
  }
98508
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
98509
- type: "button",
98510
- style: {
98511
- ...styles$6.send,
98512
- ...canSend ? {} : styles$6.sendDisabled
98513
- },
98514
- disabled: !canSend,
98515
- "aria-label": "发送消息",
98516
- onMouseDown: (event) => {
100025
+ if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
98517
100026
  event.preventDefault();
98518
- },
98519
- onMouseEnter: (event) => {
98520
- if (!event.currentTarget.disabled) event.currentTarget.style.background = "#08A437";
98521
- },
98522
- onMouseLeave: (event) => {
98523
- if (!event.currentTarget.disabled) event.currentTarget.style.background = "#09B83E";
98524
- },
98525
- onClick: () => {
98526
- send();
98527
- },
98528
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
98529
- viewBox: "9.7 6.1 16 16",
98530
- width: "16",
98531
- height: "16",
98532
- "aria-hidden": true,
98533
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
98534
- 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",
98535
- 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
+ })
98536
100108
  })
98537
- })
100109
+ })]
98538
100110
  })]
98539
- })]
98540
- }),
98541
- arkmeSourceSupportsRecordInputCapture(source?.kind) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeBackgroundSoundWaveform, {
98542
- owner: recordInputCaptureOwner,
98543
- draftKey: composerDraftKey
98544
- })
98545
- ]
98546
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
98547
- style: styles$6.composerHint,
98548
- children: "Enter发送 / Shift+Enter换行"
98549
- })]
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
+ ]
98550
100123
  })
98551
100124
  })
98552
100125
  ] }),
@@ -98796,6 +100369,26 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98796
100369
  children: ARKME_MESSAGE_ACTION_MENU_LABELS[1]
98797
100370
  })]
98798
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
+ }),
98799
100392
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
98800
100393
  type: "button",
98801
100394
  role: "menuitem",
@@ -98813,7 +100406,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98813
100406
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "select" })
98814
100407
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98815
100408
  style: styles$6.messageActionMenuText,
98816
- children: ARKME_MESSAGE_ACTION_MENU_LABELS[2]
100409
+ children: ARKME_MESSAGE_ACTION_MENU_LABELS[3]
98817
100410
  })]
98818
100411
  }),
98819
100412
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -98833,7 +100426,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98833
100426
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "forward" })
98834
100427
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
98835
100428
  style: styles$6.messageActionMenuText,
98836
- children: ARKME_MESSAGE_ACTION_MENU_LABELS[3]
100429
+ children: ARKME_MESSAGE_ACTION_MENU_LABELS[4]
98837
100430
  })]
98838
100431
  }),
98839
100432
  arkmeCanReportTimelineMessage(source, messageMenuItem) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
@@ -98963,7 +100556,9 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
98963
100556
  setShowOriginal((value) => !value);
98964
100557
  },
98965
100558
  shareWebsite,
98966
- onMessageCopyLinkOpen: openMessageCopyLinkDetail
100559
+ onMessageCopyLinkOpen: openMessageCopyLinkDetail,
100560
+ onExtensionSent: acceptDetailExtension,
100561
+ onToast: showMessageActionStatus
98967
100562
  }, detailItem.itemUid),
98968
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", {
98969
100564
  style: styles$6.forwardDrawerDismiss,
@@ -131110,7 +132705,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
131110
132705
  }
131111
132706
  //#endregion
131112
132707
  //#region src/client/redesign/arkme-redesign.css?inline
131113
- 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\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";
131114
132709
  //#endregion
131115
132710
  //#region src/client/redesign/styles.ts
131116
132711
  const REDESIGN_STYLE_ID = "@senguoyun/dsh-arkme/redesign";