@senguoyun/dsh-arkme 0.1.37 → 0.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +2150 -472
- package/lib/client.js.map +1 -1
- package/lib/index.js +14 -1
- package/lib/persistent-extension.js +1 -1
- package/lib/{persistent-runtime-Bc6X98km.js → persistent-runtime-DLrd2RMI.js} +10234 -196
- package/lib/sdk.js +31 -0
- package/lib/types/arkme-service.d.ts +14 -1
- package/lib/types/arkme-service.d.ts.map +1 -1
- package/lib/types/client/ArkmeAttachmentStrip.d.ts.map +1 -1
- package/lib/types/client/ArkmeNoteDetails.d.ts +4 -2
- package/lib/types/client/ArkmeNoteDetails.d.ts.map +1 -1
- package/lib/types/client/ArkmePersistentShell.d.ts +7 -1
- package/lib/types/client/ArkmePersistentShell.d.ts.map +1 -1
- package/lib/types/client/ArkmeRichContent.d.ts +2 -1
- package/lib/types/client/ArkmeRichContent.d.ts.map +1 -1
- package/lib/types/client/ArkmeSidebar.d.ts.map +1 -1
- package/lib/types/client/api.d.ts +1 -1
- package/lib/types/client/api.d.ts.map +1 -1
- package/lib/types/client/arkme-theme.d.ts +1 -0
- package/lib/types/client/arkme-theme.d.ts.map +1 -1
- package/lib/types/client/composer-draft-store.d.ts +1 -1
- package/lib/types/client/composer-draft-store.d.ts.map +1 -1
- package/lib/types/client/conversation-memory-cache.d.ts +10 -0
- package/lib/types/client/conversation-memory-cache.d.ts.map +1 -1
- package/lib/types/client/ui-controller.d.ts +2 -1
- package/lib/types/client/ui-controller.d.ts.map +1 -1
- package/lib/types/host-api.d.ts.map +1 -1
- package/lib/types/sdk/index.d.ts +15 -2
- package/lib/types/sdk/index.d.ts.map +1 -1
- package/lib/types/services/chat-service.d.ts +17 -1
- package/lib/types/services/chat-service.d.ts.map +1 -1
- package/lib/types/services/file-transfers.d.ts +1 -0
- package/lib/types/services/file-transfers.d.ts.map +1 -1
- package/lib/types/services/record-service.d.ts +4 -0
- package/lib/types/services/record-service.d.ts.map +1 -1
- package/lib/types/types.d.ts +53 -1
- package/lib/types/types.d.ts.map +1 -1
- 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([
|
|
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.
|
|
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
|
|
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)(
|
|
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
|
-
...
|
|
60655
|
-
|
|
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
|
|
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
|
-
...
|
|
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
|
-
}, [
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
|
|
91734
|
-
|
|
91735
|
-
|
|
91736
|
-
|
|
91737
|
-
|
|
92551
|
+
position: "relative",
|
|
92552
|
+
isolation: "isolate"
|
|
92553
|
+
},
|
|
92554
|
+
rowSearchTargetBackdrop: {
|
|
92555
|
+
position: "absolute",
|
|
92556
|
+
top: -6,
|
|
92557
|
+
right: -6,
|
|
92558
|
+
bottom: 12,
|
|
92559
|
+
left: -6,
|
|
92560
|
+
zIndex: -1,
|
|
92561
|
+
background: arkmeTheme.active,
|
|
92562
|
+
pointerEvents: "none"
|
|
91738
92563
|
},
|
|
91739
92564
|
rowMe: { justifyContent: "flex-end" },
|
|
91740
92565
|
rowOther: { justifyContent: "flex-start" },
|
|
@@ -91822,6 +92647,32 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
91822
92647
|
gap: 7
|
|
91823
92648
|
},
|
|
91824
92649
|
messageBodyMe: { alignItems: "flex-end" },
|
|
92650
|
+
extensionMessageGroup: {
|
|
92651
|
+
width: "100%",
|
|
92652
|
+
minWidth: 0,
|
|
92653
|
+
display: "flex",
|
|
92654
|
+
flexDirection: "column",
|
|
92655
|
+
alignItems: "flex-start",
|
|
92656
|
+
gap: 0
|
|
92657
|
+
},
|
|
92658
|
+
extensionMessageGroupMe: { alignItems: "flex-end" },
|
|
92659
|
+
extensionChildLine: {
|
|
92660
|
+
width: "100%",
|
|
92661
|
+
minWidth: 0,
|
|
92662
|
+
display: "flex",
|
|
92663
|
+
alignItems: "flex-start",
|
|
92664
|
+
gap: 10
|
|
92665
|
+
},
|
|
92666
|
+
extensionChildLineMe: { flexDirection: "row-reverse" },
|
|
92667
|
+
extensionChildBody: {
|
|
92668
|
+
minWidth: 0,
|
|
92669
|
+
flex: 1,
|
|
92670
|
+
display: "flex",
|
|
92671
|
+
flexDirection: "column",
|
|
92672
|
+
alignItems: "flex-start",
|
|
92673
|
+
gap: 7
|
|
92674
|
+
},
|
|
92675
|
+
extensionChildBodyMe: { alignItems: "flex-end" },
|
|
91825
92676
|
forwardMessageBody: { flex: 1 },
|
|
91826
92677
|
sharedRecordingMessageBody: {
|
|
91827
92678
|
width: "100%",
|
|
@@ -91938,6 +92789,49 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
91938
92789
|
background: arkmeTheme.messageOther,
|
|
91939
92790
|
"--arkme-bubble-fade": arkmeTheme.messageOther
|
|
91940
92791
|
},
|
|
92792
|
+
extensionParentPreview: {
|
|
92793
|
+
maxWidth: "min(600px, 100%)",
|
|
92794
|
+
minWidth: 30,
|
|
92795
|
+
display: "flex",
|
|
92796
|
+
alignItems: "center",
|
|
92797
|
+
gap: 8,
|
|
92798
|
+
padding: 8,
|
|
92799
|
+
boxSizing: "border-box",
|
|
92800
|
+
overflow: "hidden",
|
|
92801
|
+
borderRadius: "12px 12px 0 0",
|
|
92802
|
+
background: `linear-gradient(180deg, ${arkmeTheme.subtle} 0%, transparent 68.06%)`,
|
|
92803
|
+
color: arkmeTheme.tertiary,
|
|
92804
|
+
fontSize: 12,
|
|
92805
|
+
lineHeight: "16px"
|
|
92806
|
+
},
|
|
92807
|
+
extensionParentPreviewMe: { marginRight: 54 },
|
|
92808
|
+
extensionParentPreviewOther: { marginLeft: 54 },
|
|
92809
|
+
extensionParentText: {
|
|
92810
|
+
minWidth: 0,
|
|
92811
|
+
overflow: "hidden",
|
|
92812
|
+
textOverflow: "ellipsis",
|
|
92813
|
+
whiteSpace: "nowrap"
|
|
92814
|
+
},
|
|
92815
|
+
extensionParentMedia: {
|
|
92816
|
+
display: "flex",
|
|
92817
|
+
flex: "none",
|
|
92818
|
+
gap: 4
|
|
92819
|
+
},
|
|
92820
|
+
extensionParentImage: {
|
|
92821
|
+
width: 32,
|
|
92822
|
+
height: 32,
|
|
92823
|
+
display: "block",
|
|
92824
|
+
objectFit: "cover",
|
|
92825
|
+
borderRadius: 5,
|
|
92826
|
+
background: arkmeTheme.subtle
|
|
92827
|
+
},
|
|
92828
|
+
extensionParentFile: {
|
|
92829
|
+
maxWidth: 120,
|
|
92830
|
+
overflow: "hidden",
|
|
92831
|
+
textOverflow: "ellipsis",
|
|
92832
|
+
whiteSpace: "nowrap",
|
|
92833
|
+
color: arkmeTheme.secondary
|
|
92834
|
+
},
|
|
91941
92835
|
forwardBubble: {
|
|
91942
92836
|
width: 354,
|
|
91943
92837
|
maxWidth: "100%",
|
|
@@ -92049,6 +92943,88 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
92049
92943
|
...arkmeConversationComposerLayout.composer,
|
|
92050
92944
|
background: "#fff"
|
|
92051
92945
|
},
|
|
92946
|
+
composerDestinationHint: {
|
|
92947
|
+
minHeight: 18,
|
|
92948
|
+
margin: "0 0 5px 6px",
|
|
92949
|
+
display: "flex",
|
|
92950
|
+
alignItems: "center",
|
|
92951
|
+
gap: 0,
|
|
92952
|
+
color: arkmeTheme.tertiary,
|
|
92953
|
+
fontSize: 11,
|
|
92954
|
+
lineHeight: "18px"
|
|
92955
|
+
},
|
|
92956
|
+
composerDestinationHintIcon: {
|
|
92957
|
+
marginRight: 6,
|
|
92958
|
+
fontSize: 14,
|
|
92959
|
+
lineHeight: "18px"
|
|
92960
|
+
},
|
|
92961
|
+
composerDestinationHintName: {
|
|
92962
|
+
color: arkmeTheme.secondary,
|
|
92963
|
+
fontWeight: 500
|
|
92964
|
+
},
|
|
92965
|
+
composerExtensionTarget: {
|
|
92966
|
+
margin: 0,
|
|
92967
|
+
padding: 8,
|
|
92968
|
+
display: "flex",
|
|
92969
|
+
alignItems: "flex-start",
|
|
92970
|
+
gap: 10,
|
|
92971
|
+
borderRadius: "12px 12px 0 0",
|
|
92972
|
+
border: `1px solid ${colors.border}`,
|
|
92973
|
+
borderBottom: 0,
|
|
92974
|
+
background: arkmeTheme.extensionSource,
|
|
92975
|
+
boxShadow: `inset 0 -1px 0 ${colors.border}`
|
|
92976
|
+
},
|
|
92977
|
+
composerExtensionTargetBody: {
|
|
92978
|
+
flex: 1,
|
|
92979
|
+
minWidth: 0
|
|
92980
|
+
},
|
|
92981
|
+
composerExtensionTargetText: {
|
|
92982
|
+
overflow: "hidden",
|
|
92983
|
+
color: arkmeTheme.tertiary,
|
|
92984
|
+
fontSize: 12,
|
|
92985
|
+
lineHeight: "18px",
|
|
92986
|
+
textOverflow: "ellipsis",
|
|
92987
|
+
whiteSpace: "nowrap"
|
|
92988
|
+
},
|
|
92989
|
+
composerExtensionTargetFiles: {
|
|
92990
|
+
marginTop: 5,
|
|
92991
|
+
display: "flex",
|
|
92992
|
+
gap: 5,
|
|
92993
|
+
overflow: "hidden",
|
|
92994
|
+
color: arkmeTheme.tertiary,
|
|
92995
|
+
fontSize: 10,
|
|
92996
|
+
lineHeight: "14px"
|
|
92997
|
+
},
|
|
92998
|
+
composerExtensionTargetFile: {
|
|
92999
|
+
width: 42,
|
|
93000
|
+
height: 34,
|
|
93001
|
+
display: "grid",
|
|
93002
|
+
placeItems: "center",
|
|
93003
|
+
overflow: "hidden",
|
|
93004
|
+
borderRadius: 5,
|
|
93005
|
+
background: arkmeTheme.elevated,
|
|
93006
|
+
textOverflow: "ellipsis",
|
|
93007
|
+
whiteSpace: "nowrap"
|
|
93008
|
+
},
|
|
93009
|
+
composerExtensionTargetImage: {
|
|
93010
|
+
width: "100%",
|
|
93011
|
+
height: "100%",
|
|
93012
|
+
display: "block",
|
|
93013
|
+
objectFit: "cover"
|
|
93014
|
+
},
|
|
93015
|
+
composerExtensionTargetCancel: {
|
|
93016
|
+
flex: "none",
|
|
93017
|
+
width: 24,
|
|
93018
|
+
height: 24,
|
|
93019
|
+
padding: 0,
|
|
93020
|
+
border: 0,
|
|
93021
|
+
borderRadius: 6,
|
|
93022
|
+
background: "transparent",
|
|
93023
|
+
color: arkmeTheme.tertiary,
|
|
93024
|
+
cursor: "pointer",
|
|
93025
|
+
fontSize: 18,
|
|
93026
|
+
lineHeight: "22px"
|
|
93027
|
+
},
|
|
92052
93028
|
selectBar: {
|
|
92053
93029
|
position: "absolute",
|
|
92054
93030
|
left: 0,
|
|
@@ -92731,7 +93707,16 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
92731
93707
|
...arkmeConversationComposerLayout.composerInner,
|
|
92732
93708
|
border: `1px solid ${colors.border}`,
|
|
92733
93709
|
background: arkmeTheme.input,
|
|
92734
|
-
boxShadow:
|
|
93710
|
+
boxShadow: "none",
|
|
93711
|
+
transition: "background-color 140ms ease"
|
|
93712
|
+
},
|
|
93713
|
+
composerInnerFocused: {
|
|
93714
|
+
background: "color-mix(in srgb, var(--dsw-alias-bg-base, #ffffff) 97%, #000000)",
|
|
93715
|
+
boxShadow: "none"
|
|
93716
|
+
},
|
|
93717
|
+
composerInnerExtension: {
|
|
93718
|
+
borderTop: 0,
|
|
93719
|
+
borderRadius: "0 0 15px 15px"
|
|
92735
93720
|
},
|
|
92736
93721
|
composerStack: {
|
|
92737
93722
|
width: "100%",
|
|
@@ -92923,19 +93908,24 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
92923
93908
|
lineHeight: "18px"
|
|
92924
93909
|
},
|
|
92925
93910
|
send: {
|
|
92926
|
-
width:
|
|
92927
|
-
height:
|
|
93911
|
+
width: 36,
|
|
93912
|
+
height: 28,
|
|
92928
93913
|
flex: "none",
|
|
92929
93914
|
display: "grid",
|
|
92930
93915
|
placeItems: "center",
|
|
92931
93916
|
border: 0,
|
|
92932
|
-
borderRadius:
|
|
92933
|
-
background: "#
|
|
92934
|
-
color:
|
|
93917
|
+
borderRadius: 14,
|
|
93918
|
+
background: "#09B83E",
|
|
93919
|
+
color: "#fff",
|
|
92935
93920
|
cursor: "pointer",
|
|
92936
93921
|
transform: "translateY(-2px)",
|
|
92937
93922
|
transition: "background-color 100ms ease"
|
|
92938
93923
|
},
|
|
93924
|
+
sendDisabled: {
|
|
93925
|
+
background: "#DCE1E9",
|
|
93926
|
+
color: "#fff",
|
|
93927
|
+
cursor: "default"
|
|
93928
|
+
},
|
|
92939
93929
|
forwardDrawerDismiss: {
|
|
92940
93930
|
position: "absolute",
|
|
92941
93931
|
top: 68,
|
|
@@ -93084,6 +94074,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
93084
94074
|
const ARKME_MESSAGE_ACTION_MENU_LABELS = [
|
|
93085
94075
|
"复制",
|
|
93086
94076
|
"复制链接",
|
|
94077
|
+
"延展",
|
|
93087
94078
|
"多选",
|
|
93088
94079
|
"转发"
|
|
93089
94080
|
];
|
|
@@ -93305,6 +94296,35 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
93305
94296
|
}
|
|
93306
94297
|
return [...map.values()].sort((a, b) => a.sendAtMillis - b.sendAtMillis || a.itemUid.localeCompare(b.itemUid));
|
|
93307
94298
|
}
|
|
94299
|
+
function detailExtensionTimelineItem(parent, result) {
|
|
94300
|
+
const extension = result.extension;
|
|
94301
|
+
const avatarRef = extension.senderAvatarUrl?.trim() ?? "";
|
|
94302
|
+
return {
|
|
94303
|
+
itemUid: result.recordUid,
|
|
94304
|
+
senderName: extension.senderDisplayName.trim() || "我",
|
|
94305
|
+
isMe: true,
|
|
94306
|
+
sendAtMillis: extension.sendAtMillis,
|
|
94307
|
+
title: extension.title,
|
|
94308
|
+
textContent: extension.textContent,
|
|
94309
|
+
status: result.status,
|
|
94310
|
+
...result.sequence === void 0 ? {} : { sequence: result.sequence },
|
|
94311
|
+
...avatarRef === "" ? {} : { avatarRef },
|
|
94312
|
+
templateKind: extension.templateKind,
|
|
94313
|
+
displayKind: extension.displayKind,
|
|
94314
|
+
extensionParentRecordUid: result.parentRecordUid,
|
|
94315
|
+
extensionParent: {
|
|
94316
|
+
itemUid: parent.itemUid,
|
|
94317
|
+
senderName: parent.senderName,
|
|
94318
|
+
title: parent.title,
|
|
94319
|
+
textContent: parent.textContent,
|
|
94320
|
+
...parent.contentBlocks === void 0 ? {} : { contentBlocks: parent.contentBlocks }
|
|
94321
|
+
},
|
|
94322
|
+
awaitingTimelineProjection: true
|
|
94323
|
+
};
|
|
94324
|
+
}
|
|
94325
|
+
function extensionConversationPreview(extension) {
|
|
94326
|
+
return extension.textContent.trim() || extension.title.trim() || extension.mediaItems.map((item) => item.fileName.trim()).find(Boolean) || "非文本内容";
|
|
94327
|
+
}
|
|
93308
94328
|
const ARKME_CONFIRMED_SEND_RETENTION_MILLIS = ARKME_CONVERSATION_TIMELINE_FRESH_MILLIS * 4;
|
|
93309
94329
|
/**
|
|
93310
94330
|
* Retains only bounded Host-confirmed sends while an eventually-consistent
|
|
@@ -93574,6 +94594,53 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
93574
94594
|
]
|
|
93575
94595
|
});
|
|
93576
94596
|
}
|
|
94597
|
+
function ArkmeExtensionParentPreview({ parent, isMe, onSelect }) {
|
|
94598
|
+
const text = parent.textContent.trim() || parent.title.trim();
|
|
94599
|
+
const blocks = [...parent.contentBlocks ?? []].sort((left, right) => left.sortOrder - right.sortOrder);
|
|
94600
|
+
const visuals = blocks.filter((block) => block.kind === "image" || block.kind === "video").slice(0, 3);
|
|
94601
|
+
const firstFile = blocks.find((block) => block.kind !== "image" && block.kind !== "video");
|
|
94602
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
94603
|
+
"data-arkme-extension-parent-preview": parent.itemUid,
|
|
94604
|
+
style: {
|
|
94605
|
+
...styles$6.extensionParentPreview,
|
|
94606
|
+
...isMe ? styles$6.extensionParentPreviewMe : styles$6.extensionParentPreviewOther,
|
|
94607
|
+
...onSelect === void 0 ? {} : { cursor: "pointer" }
|
|
94608
|
+
},
|
|
94609
|
+
title: text || firstFile?.fileName,
|
|
94610
|
+
role: onSelect === void 0 ? void 0 : "button",
|
|
94611
|
+
tabIndex: onSelect === void 0 ? void 0 : 0,
|
|
94612
|
+
onClick: onSelect,
|
|
94613
|
+
onKeyDown: onSelect === void 0 ? void 0 : (event) => {
|
|
94614
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
94615
|
+
event.preventDefault();
|
|
94616
|
+
onSelect();
|
|
94617
|
+
}
|
|
94618
|
+
},
|
|
94619
|
+
children: [
|
|
94620
|
+
text !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
94621
|
+
style: styles$6.extensionParentText,
|
|
94622
|
+
children: text
|
|
94623
|
+
}),
|
|
94624
|
+
visuals.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
94625
|
+
style: styles$6.extensionParentMedia,
|
|
94626
|
+
"aria-label": "原消息附件",
|
|
94627
|
+
children: visuals.map((block) => block.kind === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
94628
|
+
src: block.localFileRef === void 0 ? `/arkme-self/api/media?ref=${encodeURIComponent(block.mediaRef)}` : createArkmeSdk().localFileUrl(block.localFileRef),
|
|
94629
|
+
alt: block.fileName,
|
|
94630
|
+
draggable: false,
|
|
94631
|
+
style: styles$6.extensionParentImage
|
|
94632
|
+
}, block.mediaRef) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
94633
|
+
style: styles$6.extensionParentFile,
|
|
94634
|
+
children: block.fileName || "视频"
|
|
94635
|
+
}, block.mediaRef))
|
|
94636
|
+
}),
|
|
94637
|
+
text === "" && visuals.length === 0 && firstFile !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
94638
|
+
style: styles$6.extensionParentFile,
|
|
94639
|
+
children: firstFile.fileName || "附件"
|
|
94640
|
+
}) : null
|
|
94641
|
+
]
|
|
94642
|
+
});
|
|
94643
|
+
}
|
|
93577
94644
|
function normalizedEpochMillis(value) {
|
|
93578
94645
|
return value > 0 && value < 1e11 ? value * 1e3 : value;
|
|
93579
94646
|
}
|
|
@@ -93751,6 +94818,66 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
93751
94818
|
size: kind === "forward" ? 18 : 16
|
|
93752
94819
|
});
|
|
93753
94820
|
}
|
|
94821
|
+
function ArkmeDesktopExtensionIcon() {
|
|
94822
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
|
|
94823
|
+
width: "16",
|
|
94824
|
+
height: "16",
|
|
94825
|
+
viewBox: "0 0 16 16",
|
|
94826
|
+
fill: "none",
|
|
94827
|
+
"aria-hidden": true,
|
|
94828
|
+
"data-arkme-message-extension-icon": "desktop",
|
|
94829
|
+
children: [
|
|
94830
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
94831
|
+
cx: "8",
|
|
94832
|
+
cy: "2",
|
|
94833
|
+
r: "1.5",
|
|
94834
|
+
stroke: "currentColor",
|
|
94835
|
+
strokeLinecap: "round",
|
|
94836
|
+
strokeLinejoin: "round"
|
|
94837
|
+
}),
|
|
94838
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
94839
|
+
cx: "13",
|
|
94840
|
+
cy: "6",
|
|
94841
|
+
r: "1.5",
|
|
94842
|
+
stroke: "currentColor",
|
|
94843
|
+
strokeLinecap: "round",
|
|
94844
|
+
strokeLinejoin: "round"
|
|
94845
|
+
}),
|
|
94846
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
94847
|
+
cx: "1.5",
|
|
94848
|
+
cy: "10.5",
|
|
94849
|
+
r: "1",
|
|
94850
|
+
stroke: "currentColor",
|
|
94851
|
+
strokeLinecap: "round",
|
|
94852
|
+
strokeLinejoin: "round"
|
|
94853
|
+
}),
|
|
94854
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
94855
|
+
cx: "14.5",
|
|
94856
|
+
cy: "14.5",
|
|
94857
|
+
r: "1",
|
|
94858
|
+
stroke: "currentColor",
|
|
94859
|
+
strokeLinecap: "round",
|
|
94860
|
+
strokeLinejoin: "round"
|
|
94861
|
+
}),
|
|
94862
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
94863
|
+
cx: "8",
|
|
94864
|
+
cy: "10",
|
|
94865
|
+
r: "2.5",
|
|
94866
|
+
stroke: "currentColor",
|
|
94867
|
+
strokeLinecap: "round",
|
|
94868
|
+
strokeLinejoin: "round"
|
|
94869
|
+
}),
|
|
94870
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
94871
|
+
d: "M8 3.5V7.5",
|
|
94872
|
+
stroke: "currentColor"
|
|
94873
|
+
}),
|
|
94874
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
94875
|
+
d: "M12 7L10 8.5M13.5 14L10 11.5M2.5 10.5H5.5",
|
|
94876
|
+
stroke: "currentColor"
|
|
94877
|
+
})
|
|
94878
|
+
]
|
|
94879
|
+
});
|
|
94880
|
+
}
|
|
93754
94881
|
function ArkmeForwardLinearIcon({ size = 18 }) {
|
|
93755
94882
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeSelectActionIcon, {
|
|
93756
94883
|
kind: "forward",
|
|
@@ -94290,6 +95417,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94290
95417
|
const attachments = composerDraft.attachments;
|
|
94291
95418
|
const [composerInputFocused, setComposerInputFocused] = (0, react.useState)(false);
|
|
94292
95419
|
const [composerShowsInputTime, setComposerShowsInputTime] = (0, react.useState)(arkmeComposerShowsInputTime);
|
|
95420
|
+
const [composerExtensionTarget, setComposerExtensionTarget] = (0, react.useState)();
|
|
95421
|
+
const activeComposerExtensionTarget = composerExtensionTarget?.sourceRef === source?.sourceRef ? composerExtensionTarget : void 0;
|
|
95422
|
+
(0, react.useEffect)(() => {
|
|
95423
|
+
if (composerExtensionTarget !== void 0 && composerExtensionTarget.sourceRef !== source?.sourceRef) setComposerExtensionTarget(void 0);
|
|
95424
|
+
}, [composerExtensionTarget, source?.sourceRef]);
|
|
94293
95425
|
const backgroundSoundAvailabilityRef = (0, react.useRef)({
|
|
94294
95426
|
supported: backgroundSoundSupported,
|
|
94295
95427
|
eligibilityReason: backgroundSoundEligibilityReason
|
|
@@ -94350,6 +95482,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94350
95482
|
const panelRef = (0, react.useRef)(null);
|
|
94351
95483
|
const bodyRef = (0, react.useRef)(null);
|
|
94352
95484
|
const sentinelRef = (0, react.useRef)(null);
|
|
95485
|
+
const newerSentinelRef = (0, react.useRef)(null);
|
|
94353
95486
|
const composerRef = (0, react.useRef)(null);
|
|
94354
95487
|
const textareaRef = (0, react.useRef)(null);
|
|
94355
95488
|
const fileInputRef = (0, react.useRef)(null);
|
|
@@ -94438,13 +95571,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94438
95571
|
]);
|
|
94439
95572
|
const [timelineView, setTimelineView] = (0, react.useState)({
|
|
94440
95573
|
sourceKey: "",
|
|
95574
|
+
mode: "latest",
|
|
95575
|
+
aroundSequenceRange: void 0,
|
|
94441
95576
|
items: [],
|
|
94442
95577
|
aiPolishNotices: [],
|
|
94443
95578
|
aiPolishSettings: void 0,
|
|
94444
95579
|
nextCursor: void 0,
|
|
94445
|
-
hasMore: false
|
|
95580
|
+
hasMore: false,
|
|
95581
|
+
newerCursor: void 0,
|
|
95582
|
+
newerHasMore: false
|
|
94446
95583
|
});
|
|
94447
|
-
const { sourceKey: timelineStateKey, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore } = timelineView;
|
|
95584
|
+
const { sourceKey: timelineStateKey, mode: timelineMode, aroundSequenceRange, items, aiPolishNotices, aiPolishSettings, nextCursor, hasMore, newerCursor, newerHasMore } = timelineView;
|
|
94448
95585
|
const aiPolishSettingsRef = (0, react.useRef)(aiPolishSettings);
|
|
94449
95586
|
const aiPolishNoticesRef = (0, react.useRef)(aiPolishNotices);
|
|
94450
95587
|
aiPolishSettingsRef.current = aiPolishSettings;
|
|
@@ -94525,11 +95662,16 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94525
95662
|
const [compactNavigation, setCompactNavigation] = (0, react.useState)(false);
|
|
94526
95663
|
const [submitBusy, setSubmitBusy] = (0, react.useState)(false);
|
|
94527
95664
|
const [loadingOlder, setLoadingOlder] = (0, react.useState)(false);
|
|
95665
|
+
const [loadingNewer, setLoadingNewer] = (0, react.useState)(false);
|
|
95666
|
+
const newerSentinelArmedRef = (0, react.useRef)(true);
|
|
94528
95667
|
const [highlightedTargetUid, setHighlightedTargetUid] = (0, react.useState)("");
|
|
94529
95668
|
const conversationTargetPagingRef = (0, react.useRef)({
|
|
94530
95669
|
revision: 0,
|
|
94531
|
-
pages: 0
|
|
95670
|
+
pages: 0,
|
|
95671
|
+
aroundRequested: false
|
|
94532
95672
|
});
|
|
95673
|
+
const conversationTargetLocatedRevisionRef = (0, react.useRef)(0);
|
|
95674
|
+
const conversationTargetAbortRef = (0, react.useRef)();
|
|
94533
95675
|
const [error, setError] = (0, react.useState)(initialAuth?.status === "binding-required" ? t("error.binding.required") : "");
|
|
94534
95676
|
const [agreed, setAgreed] = (0, react.useState)(true);
|
|
94535
95677
|
const [loginMode, setLoginMode] = (0, react.useState)(initialAuth?.status === "binding-required" ? "phone" : "jiwo");
|
|
@@ -94757,6 +95899,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94757
95899
|
document.removeEventListener("keydown", closeMessageMenuFromKeyboard);
|
|
94758
95900
|
};
|
|
94759
95901
|
}, [messageMenu]);
|
|
95902
|
+
(0, react.useEffect)(() => {
|
|
95903
|
+
if (highlightedTargetUid === "" || typeof document === "undefined") return;
|
|
95904
|
+
const clearHighlightedTargetFromOutside = (event) => {
|
|
95905
|
+
if (event.button !== 0) return;
|
|
95906
|
+
if (event.target?.closest?.("[data-arkme-message-item-uid]")?.getAttribute("data-arkme-message-item-uid") === highlightedTargetUid) return;
|
|
95907
|
+
setHighlightedTargetUid("");
|
|
95908
|
+
};
|
|
95909
|
+
document.addEventListener("pointerdown", clearHighlightedTargetFromOutside, true);
|
|
95910
|
+
return () => {
|
|
95911
|
+
document.removeEventListener("pointerdown", clearHighlightedTargetFromOutside, true);
|
|
95912
|
+
};
|
|
95913
|
+
}, [highlightedTargetUid]);
|
|
94760
95914
|
const qrRequestStartedRef = (0, react.useRef)(false);
|
|
94761
95915
|
const qrFlowRevisionRef = (0, react.useRef)(0);
|
|
94762
95916
|
const currentJiwoAttemptRef = (0, react.useRef)();
|
|
@@ -94765,9 +95919,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94765
95919
|
const confirmedSendRetention = (0, react.useMemo)(() => new ArkmeConfirmedSendRetentionOwner(), [authenticatedAccountKey]);
|
|
94766
95920
|
const cacheAccountKeyRef = (0, react.useRef)();
|
|
94767
95921
|
const timelineGenerationRef = (0, react.useRef)(0);
|
|
94768
|
-
const
|
|
94769
|
-
const
|
|
95922
|
+
const timelineWindowRevisionRef = (0, react.useRef)(0);
|
|
95923
|
+
const timelineRequestsRef = (0, react.useRef)(/* @__PURE__ */ new Map());
|
|
94770
95924
|
const pendingViewportRestoreRef = (0, react.useRef)();
|
|
95925
|
+
const pendingConversationTargetLocateRef = (0, react.useRef)();
|
|
94771
95926
|
const interwovenRequestRef = (0, react.useRef)();
|
|
94772
95927
|
const interwovenGenerationRef = (0, react.useRef)(0);
|
|
94773
95928
|
const detailRequestRef = (0, react.useRef)();
|
|
@@ -94785,9 +95940,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
94785
95940
|
(0, react.useEffect)(() => {
|
|
94786
95941
|
if (activeConversation) return;
|
|
94787
95942
|
timelineGenerationRef.current += 1;
|
|
94788
|
-
|
|
94789
|
-
|
|
94790
|
-
|
|
95943
|
+
timelineWindowRevisionRef.current += 1;
|
|
95944
|
+
for (const request of timelineRequestsRef.current.values()) request.controller.abort();
|
|
95945
|
+
timelineRequestsRef.current.clear();
|
|
95946
|
+
conversationTargetAbortRef.current?.abort();
|
|
95947
|
+
conversationTargetAbortRef.current = void 0;
|
|
95948
|
+
pendingConversationTargetLocateRef.current = void 0;
|
|
95949
|
+
setHighlightedTargetUid("");
|
|
94791
95950
|
interwovenGenerationRef.current += 1;
|
|
94792
95951
|
interwovenRequestRef.current?.abort();
|
|
94793
95952
|
interwovenRequestRef.current = void 0;
|
|
@@ -95241,19 +96400,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95241
96400
|
arkmeChatDirectory.refreshRoot({ force: true }).catch(() => void 0);
|
|
95242
96401
|
}
|
|
95243
96402
|
}, [source]);
|
|
95244
|
-
const loadTimeline = (0, react.useCallback)(async (cursor, preserve = false, limit = 40) => {
|
|
96403
|
+
const loadTimeline = (0, react.useCallback)(async (cursor, preserve = false, limit = 40, intent = cursor === void 0 ? "latest" : "pagination") => {
|
|
95245
96404
|
if (source === void 0) return;
|
|
95246
96405
|
const sourceRef = source.sourceRef;
|
|
95247
96406
|
const sourceKey = arkmeSourceIdentityKey(source);
|
|
95248
96407
|
const generation = timelineGenerationRef.current;
|
|
96408
|
+
if (intent === "background" && (conversationCacheRef.current.getTimeline(sourceKey)?.mode === "around" || conversationTargetAbortRef.current !== void 0 && !conversationTargetAbortRef.current.signal.aborted)) return;
|
|
96409
|
+
const direction = cursor === void 0 ? "initial" : (cursor.afterSequence ?? 0) > 0 ? "newer" : "older";
|
|
95249
96410
|
const requestKey = `${sourceKey}:${cursor === void 0 ? "initial" : JSON.stringify(cursor)}`;
|
|
95250
|
-
const
|
|
95251
|
-
if (
|
|
96411
|
+
const activeRequest = timelineRequestsRef.current.get(direction);
|
|
96412
|
+
if (activeRequest !== void 0 && !activeRequest.controller.signal.aborted && activeRequest.requestKey === requestKey) return;
|
|
96413
|
+
if (intent === "latest") {
|
|
96414
|
+
timelineWindowRevisionRef.current += 1;
|
|
96415
|
+
for (const [activeDirection, request] of timelineRequestsRef.current) if (activeDirection !== direction) request.controller.abort();
|
|
96416
|
+
}
|
|
96417
|
+
const windowRevision = timelineWindowRevisionRef.current;
|
|
95252
96418
|
const hadCachedTimeline = conversationCacheRef.current.getTimeline(sourceKey) !== void 0;
|
|
95253
96419
|
const controller = new AbortController();
|
|
95254
|
-
|
|
95255
|
-
|
|
95256
|
-
|
|
96420
|
+
activeRequest?.controller.abort();
|
|
96421
|
+
timelineRequestsRef.current.set(direction, {
|
|
96422
|
+
controller,
|
|
96423
|
+
requestKey
|
|
96424
|
+
});
|
|
95257
96425
|
let page;
|
|
95258
96426
|
try {
|
|
95259
96427
|
page = await retryArkmeRead(() => callArkme("source.timeline", {
|
|
@@ -95265,23 +96433,28 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95265
96433
|
if (isArkmeRequestAbort(caught, controller.signal)) return;
|
|
95266
96434
|
throw caught;
|
|
95267
96435
|
} finally {
|
|
95268
|
-
if (
|
|
95269
|
-
timelineRequestAbortRef.current = void 0;
|
|
95270
|
-
timelineRequestKeyRef.current = "";
|
|
95271
|
-
}
|
|
96436
|
+
if (timelineRequestsRef.current.get(direction)?.controller === controller) timelineRequestsRef.current.delete(direction);
|
|
95272
96437
|
}
|
|
95273
|
-
if (generation !== timelineGenerationRef.current) return;
|
|
96438
|
+
if (generation !== timelineGenerationRef.current || windowRevision !== timelineWindowRevisionRef.current) return;
|
|
95274
96439
|
const cached = conversationCacheRef.current.getTimeline(sourceKey);
|
|
96440
|
+
const loadingNewerPage = (cursor?.afterSequence ?? 0) > 0;
|
|
96441
|
+
const cachedItemUids = new Set((cached?.items ?? []).map((item) => item.itemUid));
|
|
96442
|
+
const newerPageStartItemUid = loadingNewerPage ? mergeItems([], page.items.filter((item) => !cachedItemUids.has(item.itemUid)))[0]?.itemUid : void 0;
|
|
96443
|
+
const nextAroundSequenceRange = !(cursor === void 0 || loadingNewerPage && !page.hasMore) && (cached?.mode ?? "latest") === "around" ? arkmeConversationTimelineSequenceRange(page.items, cached?.aroundSequenceRange) : void 0;
|
|
95275
96444
|
const nextAiPolishSettings = cursor === void 0 ? page.aiPolishSettings : cached?.aiPolishSettings;
|
|
95276
|
-
const authoritativeItems = mergeItems([], page.items);
|
|
96445
|
+
const authoritativeItems = mergeItems(cursor === void 0 ? (cached?.items ?? []).filter((item) => item.awaitingTimelineProjection === true && !page.items.some((projected) => projected.itemUid === item.itemUid)) : [], page.items);
|
|
95277
96446
|
const snapshot = {
|
|
96447
|
+
mode: cursor === void 0 ? "latest" : loadingNewerPage && !page.hasMore ? "latest" : cached?.mode ?? "latest",
|
|
96448
|
+
...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
|
|
95278
96449
|
items: cursor === void 0 ? confirmedSendRetention.merge(sourceKey, authoritativeItems) : mergeItems(cached?.items ?? [], page.items),
|
|
95279
96450
|
aiPolishNotices: cursor === void 0 ? page.aiPolishNotices ?? [] : cached?.aiPolishNotices ?? [],
|
|
95280
|
-
hasMore: page.hasMore,
|
|
96451
|
+
hasMore: loadingNewerPage ? cached?.hasMore ?? false : page.hasMore,
|
|
96452
|
+
newerHasMore: loadingNewerPage ? page.hasMore : cursor === void 0 ? false : cached?.newerHasMore ?? false,
|
|
95281
96453
|
fetchedAtMillis: Date.now(),
|
|
95282
96454
|
...sourceIsChat ? { latestSequence: Math.max(source.latestSequence ?? 0, ...page.items.map((item) => item.sequence ?? 0)) } : { recordRevision: sourceProjectionRevision },
|
|
95283
96455
|
...nextAiPolishSettings === void 0 ? {} : { aiPolishSettings: nextAiPolishSettings },
|
|
95284
|
-
...page.nextCursor === void 0 ? {} : { nextCursor: page.nextCursor }
|
|
96456
|
+
...loadingNewerPage ? cached?.nextCursor === void 0 ? {} : { nextCursor: cached.nextCursor } : page.nextCursor === void 0 ? {} : { nextCursor: page.nextCursor },
|
|
96457
|
+
...loadingNewerPage ? page.nextCursor === void 0 ? {} : { newerCursor: page.nextCursor } : cursor === void 0 || cached?.newerCursor === void 0 ? {} : { newerCursor: cached.newerCursor }
|
|
95285
96458
|
};
|
|
95286
96459
|
const contentChanged = !arkmeConversationTimelineContentEqual(cached, snapshot);
|
|
95287
96460
|
const releasedMoments = conversationCacheRef.current.storeTimeline(sourceKey, snapshot);
|
|
@@ -95290,15 +96463,20 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95290
96463
|
const body = bodyRef.current;
|
|
95291
96464
|
pendingViewportRestoreRef.current = {
|
|
95292
96465
|
sourceKey,
|
|
95293
|
-
viewport: preserve || hadCachedTimeline ? body === null ? conversationCacheRef.current.getViewport(sourceKey) : arkmeConversationViewport(body) : void 0
|
|
96466
|
+
viewport: preserve || hadCachedTimeline ? body === null ? conversationCacheRef.current.getViewport(sourceKey) : arkmeConversationViewport(body) : void 0,
|
|
96467
|
+
...newerPageStartItemUid === void 0 ? {} : { newerPageStartAnchorId: `message:${newerPageStartItemUid}` }
|
|
95294
96468
|
};
|
|
95295
96469
|
if (contentChanged) setTimelineView({
|
|
95296
96470
|
sourceKey,
|
|
96471
|
+
mode: snapshot.mode ?? "latest",
|
|
96472
|
+
aroundSequenceRange: snapshot.aroundSequenceRange,
|
|
95297
96473
|
items: snapshot.items,
|
|
95298
96474
|
aiPolishNotices: snapshot.aiPolishNotices,
|
|
95299
96475
|
aiPolishSettings: snapshot.aiPolishSettings,
|
|
95300
96476
|
nextCursor: snapshot.nextCursor,
|
|
95301
|
-
hasMore: snapshot.hasMore
|
|
96477
|
+
hasMore: snapshot.hasMore,
|
|
96478
|
+
newerCursor: snapshot.newerCursor,
|
|
96479
|
+
newerHasMore: snapshot.newerHasMore ?? false
|
|
95302
96480
|
});
|
|
95303
96481
|
if (releasedMomentsChanged && releasedMoments !== void 0) setInterwovenMoments(releasedMoments);
|
|
95304
96482
|
}
|
|
@@ -95353,25 +96531,130 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95353
96531
|
const target = ui.conversationTarget;
|
|
95354
96532
|
if (!activeConversation || !authenticated || source === void 0 || target === void 0 || timelineStateKey !== conversationKey) return;
|
|
95355
96533
|
if (conversationTargetPagingRef.current.revision !== target.revision) {
|
|
96534
|
+
conversationTargetAbortRef.current?.abort();
|
|
96535
|
+
conversationTargetAbortRef.current = void 0;
|
|
95356
96536
|
conversationTargetPagingRef.current = {
|
|
95357
96537
|
revision: target.revision,
|
|
95358
|
-
pages: 0
|
|
96538
|
+
pages: 0,
|
|
96539
|
+
aroundRequested: false
|
|
95359
96540
|
};
|
|
96541
|
+
newerSentinelArmedRef.current = true;
|
|
96542
|
+
if (pendingConversationTargetLocateRef.current?.revision !== target.revision) pendingConversationTargetLocateRef.current = void 0;
|
|
95360
96543
|
setHighlightedTargetUid("");
|
|
95361
96544
|
}
|
|
96545
|
+
if (conversationTargetLocatedRevisionRef.current === target.revision) return;
|
|
95362
96546
|
if (items.some((item) => item.itemUid === target.itemUid)) {
|
|
95363
|
-
|
|
95364
|
-
|
|
95365
|
-
|
|
95366
|
-
|
|
96547
|
+
if (pendingConversationTargetLocateRef.current?.revision === target.revision) return;
|
|
96548
|
+
let animationFrame = 0;
|
|
96549
|
+
let remainingRenderAttempts = 3;
|
|
96550
|
+
const locateRenderedTarget = () => {
|
|
96551
|
+
const body = bodyRef.current;
|
|
96552
|
+
const row = body === null ? void 0 : [...body.querySelectorAll("[data-arkme-message-item-uid]")].find((element) => element.dataset.arkmeMessageItemUid === target.itemUid);
|
|
96553
|
+
if (body === null || row === void 0) {
|
|
96554
|
+
if (remainingRenderAttempts > 0) {
|
|
96555
|
+
remainingRenderAttempts -= 1;
|
|
96556
|
+
animationFrame = requestAnimationFrame(locateRenderedTarget);
|
|
96557
|
+
return;
|
|
96558
|
+
}
|
|
96559
|
+
if (messageActionStatusTimerRef.current !== void 0) window.clearTimeout(messageActionStatusTimerRef.current);
|
|
96560
|
+
setMessageActionStatus("已加载对应快记,但暂时无法定位到它");
|
|
96561
|
+
messageActionStatusTimerRef.current = window.setTimeout(() => {
|
|
96562
|
+
setMessageActionStatus("");
|
|
96563
|
+
messageActionStatusTimerRef.current = void 0;
|
|
96564
|
+
}, MESSAGE_ACTION_NOTICE_MS);
|
|
96565
|
+
arkmeUi.consumeConversationTarget(target.revision);
|
|
96566
|
+
return;
|
|
96567
|
+
}
|
|
96568
|
+
const bodyRect = body.getBoundingClientRect();
|
|
96569
|
+
const rowRect = row.getBoundingClientRect();
|
|
96570
|
+
const rowHeight = rowRect.height || rowRect.bottom - rowRect.top;
|
|
96571
|
+
const centeredTop = body.scrollTop + rowRect.top - bodyRect.top - (body.clientHeight - rowHeight) / 2;
|
|
96572
|
+
const maximumTop = Math.max(0, body.scrollHeight - body.clientHeight);
|
|
96573
|
+
body.scrollTo({
|
|
96574
|
+
top: Math.max(0, Math.min(maximumTop, centeredTop)),
|
|
96575
|
+
behavior: "smooth"
|
|
96576
|
+
});
|
|
96577
|
+
setHighlightedTargetUid(target.itemUid);
|
|
96578
|
+
conversationTargetLocatedRevisionRef.current = target.revision;
|
|
96579
|
+
arkmeUi.consumeConversationTarget(target.revision);
|
|
96580
|
+
};
|
|
96581
|
+
locateRenderedTarget();
|
|
96582
|
+
return () => {
|
|
96583
|
+
if (animationFrame !== 0) cancelAnimationFrame(animationFrame);
|
|
96584
|
+
};
|
|
96585
|
+
}
|
|
96586
|
+
if ((source.kind === "private_chat" || source.kind === "group_chat") && (target.recordOwnerUserId ?? 0) > 0 && !conversationTargetPagingRef.current.aroundRequested) {
|
|
96587
|
+
conversationTargetPagingRef.current.aroundRequested = true;
|
|
96588
|
+
const generation = timelineGenerationRef.current;
|
|
96589
|
+
for (const request of timelineRequestsRef.current.values()) request.controller.abort();
|
|
96590
|
+
timelineRequestsRef.current.clear();
|
|
96591
|
+
const windowRevision = ++timelineWindowRevisionRef.current;
|
|
96592
|
+
const controller = new AbortController();
|
|
96593
|
+
conversationTargetAbortRef.current?.abort();
|
|
96594
|
+
conversationTargetAbortRef.current = controller;
|
|
96595
|
+
retryArkmeRead(() => callArkme("source.timeline-around", {
|
|
96596
|
+
sourceRef: source.sourceRef,
|
|
96597
|
+
itemUid: target.itemUid,
|
|
96598
|
+
recordOwnerUserId: target.recordOwnerUserId,
|
|
96599
|
+
beforeLimit: 20,
|
|
96600
|
+
afterLimit: 20
|
|
96601
|
+
}, controller.signal), { signal: controller.signal }).then((page) => {
|
|
96602
|
+
if (controller.signal.aborted || generation !== timelineGenerationRef.current || windowRevision !== timelineWindowRevisionRef.current || arkmeUi.getSnapshot().conversationTarget?.revision !== target.revision) return;
|
|
96603
|
+
if (!page.items.some((item) => item.itemUid === target.itemUid)) throw new Error("未找到要定位的快记");
|
|
96604
|
+
timelineRequestsRef.current.get("initial")?.controller.abort();
|
|
96605
|
+
timelineRequestsRef.current.delete("initial");
|
|
96606
|
+
timelineWindowRevisionRef.current += 1;
|
|
96607
|
+
const cached = conversationCacheRef.current.getTimeline(conversationKey);
|
|
96608
|
+
const nextAroundSequenceRange = arkmeConversationTimelineSequenceRange(page.items);
|
|
96609
|
+
const snapshot = {
|
|
96610
|
+
mode: "around",
|
|
96611
|
+
...nextAroundSequenceRange === void 0 ? {} : { aroundSequenceRange: nextAroundSequenceRange },
|
|
96612
|
+
items: page.items,
|
|
96613
|
+
aiPolishNotices: cached?.aiPolishNotices ?? [],
|
|
96614
|
+
hasMore: page.olderHasMore,
|
|
96615
|
+
newerHasMore: page.newerHasMore,
|
|
96616
|
+
fetchedAtMillis: Date.now(),
|
|
96617
|
+
...sourceIsChat ? { latestSequence: Math.max(page.latestKnownSequence ?? 0, ...page.items.map((item) => item.sequence ?? 0)) } : { recordRevision: sourceProjectionRevision },
|
|
96618
|
+
...cached?.aiPolishSettings === void 0 ? {} : { aiPolishSettings: cached.aiPolishSettings },
|
|
96619
|
+
...page.olderCursor === void 0 ? {} : { nextCursor: page.olderCursor },
|
|
96620
|
+
...page.newerCursor === void 0 ? {} : { newerCursor: page.newerCursor }
|
|
96621
|
+
};
|
|
96622
|
+
conversationCacheRef.current.storeTimeline(conversationKey, snapshot);
|
|
96623
|
+
pendingViewportRestoreRef.current = void 0;
|
|
96624
|
+
pendingConversationTargetLocateRef.current = {
|
|
96625
|
+
sourceKey: conversationKey,
|
|
96626
|
+
itemUid: target.itemUid,
|
|
96627
|
+
revision: target.revision
|
|
96628
|
+
};
|
|
96629
|
+
setTimelineView({
|
|
96630
|
+
sourceKey: conversationKey,
|
|
96631
|
+
mode: "around",
|
|
96632
|
+
aroundSequenceRange: snapshot.aroundSequenceRange,
|
|
96633
|
+
items: snapshot.items,
|
|
96634
|
+
aiPolishNotices: snapshot.aiPolishNotices,
|
|
96635
|
+
aiPolishSettings: snapshot.aiPolishSettings,
|
|
96636
|
+
nextCursor: snapshot.nextCursor,
|
|
96637
|
+
hasMore: snapshot.hasMore,
|
|
96638
|
+
newerCursor: snapshot.newerCursor,
|
|
96639
|
+
newerHasMore: snapshot.newerHasMore ?? false
|
|
96640
|
+
});
|
|
96641
|
+
}).catch((caught) => {
|
|
96642
|
+
if (isArkmeRequestAbort(caught, controller.signal)) return;
|
|
96643
|
+
if (pendingConversationTargetLocateRef.current?.revision === target.revision) pendingConversationTargetLocateRef.current = void 0;
|
|
96644
|
+
const message = errorMessage$2(caught) || "暂时无法定位这条快记";
|
|
96645
|
+
if (messageActionStatusTimerRef.current !== void 0) window.clearTimeout(messageActionStatusTimerRef.current);
|
|
96646
|
+
setMessageActionStatus(message);
|
|
96647
|
+
messageActionStatusTimerRef.current = window.setTimeout(() => {
|
|
96648
|
+
setMessageActionStatus("");
|
|
96649
|
+
messageActionStatusTimerRef.current = void 0;
|
|
96650
|
+
}, MESSAGE_ACTION_NOTICE_MS);
|
|
96651
|
+
arkmeUi.consumeConversationTarget(target.revision);
|
|
96652
|
+
}).finally(() => {
|
|
96653
|
+
if (conversationTargetAbortRef.current === controller) conversationTargetAbortRef.current = void 0;
|
|
95367
96654
|
});
|
|
95368
|
-
setHighlightedTargetUid(target.itemUid);
|
|
95369
|
-
window.setTimeout(() => {
|
|
95370
|
-
setHighlightedTargetUid((current) => current === target.itemUid ? "" : current);
|
|
95371
|
-
}, 2400);
|
|
95372
|
-
arkmeUi.consumeConversationTarget(target.revision);
|
|
95373
96655
|
return;
|
|
95374
96656
|
}
|
|
96657
|
+
if ((target.recordOwnerUserId ?? 0) > 0) return;
|
|
95375
96658
|
if (loadingOlder) return;
|
|
95376
96659
|
if (!hasMore || nextCursor === void 0 || conversationTargetPagingRef.current.pages >= 80) {
|
|
95377
96660
|
setError("已打开对应会话,但暂未能在当前历史中定位该条消息");
|
|
@@ -95396,6 +96679,8 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95396
96679
|
loadingOlder,
|
|
95397
96680
|
nextCursor,
|
|
95398
96681
|
source,
|
|
96682
|
+
sourceIsChat,
|
|
96683
|
+
sourceProjectionRevision,
|
|
95399
96684
|
timelineStateKey,
|
|
95400
96685
|
ui.conversationTarget
|
|
95401
96686
|
]);
|
|
@@ -95408,9 +96693,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95408
96693
|
]);
|
|
95409
96694
|
(0, react.useLayoutEffect)(() => {
|
|
95410
96695
|
timelineGenerationRef.current += 1;
|
|
95411
|
-
|
|
95412
|
-
|
|
95413
|
-
|
|
96696
|
+
timelineWindowRevisionRef.current += 1;
|
|
96697
|
+
newerSentinelArmedRef.current = true;
|
|
96698
|
+
for (const request of timelineRequestsRef.current.values()) request.controller.abort();
|
|
96699
|
+
timelineRequestsRef.current.clear();
|
|
96700
|
+
conversationTargetAbortRef.current?.abort();
|
|
96701
|
+
conversationTargetAbortRef.current = void 0;
|
|
96702
|
+
pendingConversationTargetLocateRef.current = void 0;
|
|
96703
|
+
setHighlightedTargetUid("");
|
|
95414
96704
|
const accountChanged = cacheAccountKeyRef.current !== authenticatedAccountKey;
|
|
95415
96705
|
if (!accountChanged && timelineStateKey !== "" && bodyRef.current !== null) conversationCacheRef.current.storeViewport(timelineStateKey, arkmeConversationViewport(bodyRef.current));
|
|
95416
96706
|
if (accountChanged) {
|
|
@@ -95426,11 +96716,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95426
96716
|
else pendingViewportRestoreRef.current = void 0;
|
|
95427
96717
|
setTimelineView({
|
|
95428
96718
|
sourceKey: sourceKey ?? "",
|
|
96719
|
+
mode: cachedTimeline?.mode ?? "latest",
|
|
96720
|
+
aroundSequenceRange: cachedTimeline?.aroundSequenceRange,
|
|
95429
96721
|
items: cachedTimeline?.items ?? [],
|
|
95430
96722
|
aiPolishNotices: cachedTimeline?.aiPolishNotices ?? [],
|
|
95431
96723
|
aiPolishSettings: cachedTimeline?.aiPolishSettings,
|
|
95432
96724
|
nextCursor: cachedTimeline?.nextCursor,
|
|
95433
|
-
hasMore: cachedTimeline?.hasMore ?? false
|
|
96725
|
+
hasMore: cachedTimeline?.hasMore ?? false,
|
|
96726
|
+
newerCursor: cachedTimeline?.newerCursor,
|
|
96727
|
+
newerHasMore: cachedTimeline?.newerHasMore ?? false
|
|
95434
96728
|
});
|
|
95435
96729
|
setTimelineLoadingKey(sourceKey !== void 0 && cachedTimeline === void 0 ? sourceKey : "");
|
|
95436
96730
|
setTimelineSkeletonKey("");
|
|
@@ -95513,6 +96807,11 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95513
96807
|
const generation = timelineGenerationRef.current;
|
|
95514
96808
|
const cachedTimeline = conversationCacheRef.current.getTimeline(conversationKey);
|
|
95515
96809
|
const hasCachedTimeline = cachedTimeline !== void 0;
|
|
96810
|
+
if (cachedTimeline?.mode === "around") {
|
|
96811
|
+
setTimelineLoadingKey((current) => current === conversationKey ? "" : current);
|
|
96812
|
+
setTimelineSkeletonKey((current) => current === conversationKey ? "" : current);
|
|
96813
|
+
return;
|
|
96814
|
+
}
|
|
95516
96815
|
const authoritativeLatestSequence = Math.max(source.latestSequence ?? 0, chatDelta.latestSequence ?? 0);
|
|
95517
96816
|
const realtimeCoversLatest = sourceIsChat && arkmeRealtimeDeltaCoversTimelineGap(cachedTimeline, chatDelta.items, authoritativeLatestSequence);
|
|
95518
96817
|
if (!(sourceIsChat ? !realtimeCoversLatest && arkmeShouldRefreshChatTimeline(cachedTimeline, Date.now(), authoritativeLatestSequence) : arkmeShouldRefreshRecordTimeline(cachedTimeline, Date.now(), sourceProjectionRevision))) {
|
|
@@ -95521,7 +96820,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95521
96820
|
acknowledgeRead(cachedTimeline?.items ?? []);
|
|
95522
96821
|
return;
|
|
95523
96822
|
}
|
|
95524
|
-
loadTimeline().catch((caught) => {
|
|
96823
|
+
loadTimeline(void 0, false, 40, "background").catch((caught) => {
|
|
95525
96824
|
arkmeChatDirectory.rejectOptimisticRead(source.sourceRef, source.sourceKey, source.latestSequence ?? 0);
|
|
95526
96825
|
if (generation === timelineGenerationRef.current) {
|
|
95527
96826
|
setTimelineLoadingKey((current) => current === conversationKey ? "" : current);
|
|
@@ -95545,21 +96844,29 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95545
96844
|
if (!authenticated || source === void 0 || timelineStateKey !== conversationKey) return;
|
|
95546
96845
|
if (conversationCacheRef.current.getTimeline(conversationKey) === void 0) return;
|
|
95547
96846
|
conversationCacheRef.current.storeTimeline(conversationKey, {
|
|
96847
|
+
mode: timelineMode,
|
|
96848
|
+
...aroundSequenceRange === void 0 ? {} : { aroundSequenceRange },
|
|
95548
96849
|
items,
|
|
95549
96850
|
aiPolishNotices,
|
|
95550
96851
|
hasMore,
|
|
95551
96852
|
...aiPolishSettings === void 0 ? {} : { aiPolishSettings },
|
|
95552
|
-
...nextCursor === void 0 ? {} : { nextCursor }
|
|
96853
|
+
...nextCursor === void 0 ? {} : { nextCursor },
|
|
96854
|
+
...newerCursor === void 0 ? {} : { newerCursor },
|
|
96855
|
+
newerHasMore
|
|
95553
96856
|
});
|
|
95554
96857
|
}, [
|
|
95555
96858
|
aiPolishNotices,
|
|
95556
96859
|
aiPolishSettings,
|
|
96860
|
+
aroundSequenceRange,
|
|
95557
96861
|
authenticated,
|
|
95558
96862
|
conversationKey,
|
|
95559
96863
|
hasMore,
|
|
95560
96864
|
items,
|
|
96865
|
+
newerCursor,
|
|
96866
|
+
newerHasMore,
|
|
95561
96867
|
nextCursor,
|
|
95562
96868
|
source,
|
|
96869
|
+
timelineMode,
|
|
95563
96870
|
timelineStateKey
|
|
95564
96871
|
]);
|
|
95565
96872
|
(0, react.useEffect)(() => {
|
|
@@ -95638,8 +96945,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95638
96945
|
(0, react.useEffect)(() => {
|
|
95639
96946
|
if (!activeConversation || !authenticated || source === void 0) return;
|
|
95640
96947
|
const deltaItems = chatDelta.items;
|
|
95641
|
-
|
|
95642
|
-
const
|
|
96948
|
+
const existingIds = new Set(items.map((item) => item.itemUid));
|
|
96949
|
+
const applicableDeltaItems = arkmeConversationTimelineDeltaItems(timelineMode, aroundSequenceRange, items, deltaItems);
|
|
96950
|
+
if (applicableDeltaItems.length === 0) return;
|
|
96951
|
+
const nextItems = mergeItems(items, applicableDeltaItems);
|
|
95643
96952
|
if (JSON.stringify(nextItems) === JSON.stringify(items)) return;
|
|
95644
96953
|
const body = bodyRef.current;
|
|
95645
96954
|
const viewport = body === null ? void 0 : arkmeConversationViewport(body);
|
|
@@ -95647,11 +96956,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95647
96956
|
sourceKey: conversationKey,
|
|
95648
96957
|
viewport
|
|
95649
96958
|
};
|
|
95650
|
-
const
|
|
95651
|
-
const incomingCount = deltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
|
|
96959
|
+
const incomingCount = applicableDeltaItems.filter((item) => !existingIds.has(item.itemUid)).length;
|
|
95652
96960
|
setTimelineView((current) => {
|
|
95653
96961
|
if (current.sourceKey !== conversationKey) return current;
|
|
95654
|
-
const mergedItems = mergeItems(current.items,
|
|
96962
|
+
const mergedItems = mergeItems(current.items, applicableDeltaItems);
|
|
95655
96963
|
return sameStateValue(current.items, mergedItems) ? current : {
|
|
95656
96964
|
...current,
|
|
95657
96965
|
items: mergedItems
|
|
@@ -95659,15 +96967,17 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95659
96967
|
});
|
|
95660
96968
|
if (viewport?.stickToBottom === false && incomingCount > 0) setNewMessageCount((current) => current + incomingCount);
|
|
95661
96969
|
else setNewMessageCount(0);
|
|
95662
|
-
acknowledgeRead(
|
|
96970
|
+
acknowledgeRead(applicableDeltaItems);
|
|
95663
96971
|
}, [
|
|
95664
96972
|
acknowledgeRead,
|
|
95665
96973
|
activeConversation,
|
|
96974
|
+
aroundSequenceRange,
|
|
95666
96975
|
authenticated,
|
|
95667
96976
|
chatDelta,
|
|
95668
96977
|
conversationKey,
|
|
95669
96978
|
items,
|
|
95670
|
-
source
|
|
96979
|
+
source,
|
|
96980
|
+
timelineMode
|
|
95671
96981
|
]);
|
|
95672
96982
|
(0, react.useEffect)(() => {
|
|
95673
96983
|
if (!activeConversation || !authenticated || source?.kind !== "group_chat") return;
|
|
@@ -95759,6 +97069,38 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
95759
97069
|
loadingOlder,
|
|
95760
97070
|
nextCursor
|
|
95761
97071
|
]);
|
|
97072
|
+
(0, react.useEffect)(() => {
|
|
97073
|
+
const root = bodyRef.current;
|
|
97074
|
+
const sentinel = newerSentinelRef.current;
|
|
97075
|
+
if (!authenticated || root === null || sentinel === null || !newerHasMore || newerCursor === void 0) return;
|
|
97076
|
+
const observer = new IntersectionObserver((entries) => {
|
|
97077
|
+
if (entries[0]?.isIntersecting !== true) {
|
|
97078
|
+
newerSentinelArmedRef.current = true;
|
|
97079
|
+
return;
|
|
97080
|
+
}
|
|
97081
|
+
if (!newerSentinelArmedRef.current || loadingNewer) return;
|
|
97082
|
+
newerSentinelArmedRef.current = false;
|
|
97083
|
+
setLoadingNewer(true);
|
|
97084
|
+
loadTimeline(newerCursor, true).catch((caught) => {
|
|
97085
|
+
setError(errorMessage$2(caught));
|
|
97086
|
+
}).finally(() => {
|
|
97087
|
+
setLoadingNewer(false);
|
|
97088
|
+
});
|
|
97089
|
+
}, {
|
|
97090
|
+
root,
|
|
97091
|
+
rootMargin: "0px 0px 120px"
|
|
97092
|
+
});
|
|
97093
|
+
observer.observe(sentinel);
|
|
97094
|
+
return () => {
|
|
97095
|
+
observer.disconnect();
|
|
97096
|
+
};
|
|
97097
|
+
}, [
|
|
97098
|
+
authenticated,
|
|
97099
|
+
loadTimeline,
|
|
97100
|
+
loadingNewer,
|
|
97101
|
+
newerCursor,
|
|
97102
|
+
newerHasMore
|
|
97103
|
+
]);
|
|
95762
97104
|
(0, react.useEffect)(() => {
|
|
95763
97105
|
if (smsCountdown <= 0) return;
|
|
95764
97106
|
const timer = setTimeout(() => {
|
|
@@ -96061,6 +97403,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96061
97403
|
const send = async () => {
|
|
96062
97404
|
if (source === void 0 || composerDraftKey === void 0) return;
|
|
96063
97405
|
const targetSource = source;
|
|
97406
|
+
const extensionTarget = activeComposerExtensionTarget;
|
|
96064
97407
|
const targetDraftKey = composerDraftKey;
|
|
96065
97408
|
const targetUserId = authenticatedUserId;
|
|
96066
97409
|
const targetAccountKey = authenticatedAccountKey;
|
|
@@ -96085,8 +97428,15 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96085
97428
|
state: "failed",
|
|
96086
97429
|
message: errorMessage$2(caught) || "位置采集失败,请稍后重试"
|
|
96087
97430
|
})) : Promise.resolve({ state: "disabled" });
|
|
96088
|
-
const { recordUid, relationUid } = arkmeComposerDraftStore.beginFileSend(targetDraftKey
|
|
97431
|
+
const { recordUid, relationUid } = arkmeComposerDraftStore.beginFileSend(targetDraftKey, extensionTarget === void 0 ? void 0 : JSON.stringify([
|
|
97432
|
+
"source-message-extension",
|
|
97433
|
+
targetSource.sourceRef,
|
|
97434
|
+
arkmeTimelineMessageActionRef(extensionTarget.item)
|
|
97435
|
+
]));
|
|
96089
97436
|
const pendingDraft = arkmeComposerDraftStore.take(targetDraftKey);
|
|
97437
|
+
const pendingAttachments = [...pendingDraft.attachments];
|
|
97438
|
+
const pendingAssets = pendingAttachments.flatMap((attachment) => attachment.asset === void 0 ? [] : [attachment.asset]);
|
|
97439
|
+
const pendingFileRefs = pendingAttachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
|
|
96090
97440
|
pendingComposerFocusDraftKeyRef.current = targetDraftKey;
|
|
96091
97441
|
let inputCapture;
|
|
96092
97442
|
try {
|
|
@@ -96120,11 +97470,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96120
97470
|
state: "polishing",
|
|
96121
97471
|
originalText: textContent
|
|
96122
97472
|
} } : {},
|
|
97473
|
+
...extensionTarget === void 0 ? {} : {
|
|
97474
|
+
extensionParentRecordUid: extensionTarget.item.itemUid,
|
|
97475
|
+
extensionParent: {
|
|
97476
|
+
itemUid: extensionTarget.item.itemUid,
|
|
97477
|
+
senderName: extensionTarget.item.senderName,
|
|
97478
|
+
title: extensionTarget.item.title,
|
|
97479
|
+
textContent: extensionTarget.item.textContent,
|
|
97480
|
+
...extensionTarget.item.contentBlocks === void 0 ? {} : { contentBlocks: extensionTarget.item.contentBlocks }
|
|
97481
|
+
},
|
|
97482
|
+
contentBlocks: pendingAttachments.flatMap((attachment, index) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile, index)])
|
|
97483
|
+
},
|
|
96123
97484
|
displayKind: 0
|
|
96124
97485
|
};
|
|
96125
|
-
const pendingAttachments = [...pendingDraft.attachments];
|
|
96126
|
-
const pendingAssets = pendingAttachments.flatMap((attachment) => attachment.asset === void 0 ? [] : [attachment.asset]);
|
|
96127
|
-
const pendingFileRefs = pendingAttachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [attachment.localFile.fileRef]);
|
|
96128
97486
|
if (sameTargetComposer()) pendingViewportRestoreRef.current = {
|
|
96129
97487
|
sourceKey: arkmeSourceIdentityKey(targetSource),
|
|
96130
97488
|
viewport: void 0
|
|
@@ -96151,11 +97509,52 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96151
97509
|
length: mention.length
|
|
96152
97510
|
}];
|
|
96153
97511
|
});
|
|
96154
|
-
if (pendingFileRefs.length === 0 && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
|
|
97512
|
+
if ((extensionTarget !== void 0 || pendingFileRefs.length === 0) && sameTargetComposer()) setItems((current) => mergeItems(current, [optimistic]));
|
|
96155
97513
|
if (sameTargetComposer()) setError("");
|
|
96156
97514
|
let durableFileSendUncertain = false;
|
|
96157
97515
|
let stagedBackgroundFileRefs = [];
|
|
96158
97516
|
try {
|
|
97517
|
+
if (extensionTarget !== void 0) {
|
|
97518
|
+
if (pendingAssets.length > 0) throw new Error("请重新添加本地附件后再延展");
|
|
97519
|
+
const result = await callArkme("source.message-extension.extend", {
|
|
97520
|
+
sourceRef: targetSource.sourceRef,
|
|
97521
|
+
messageActionRef: arkmeTimelineMessageActionRef(extensionTarget.item),
|
|
97522
|
+
textContent,
|
|
97523
|
+
recordUid,
|
|
97524
|
+
relationUid,
|
|
97525
|
+
fileRefs: pendingFileRefs
|
|
97526
|
+
});
|
|
97527
|
+
if (!sameTargetAccount()) throw new Error("账号已切换,本次延展结果已丢弃");
|
|
97528
|
+
const applyExtensionResult = (current) => applySourceSendResult(current, recordUid, {
|
|
97529
|
+
sourceRef: targetSource.sourceRef,
|
|
97530
|
+
itemUid: result.recordUid,
|
|
97531
|
+
status: result.status,
|
|
97532
|
+
localState: result.localState,
|
|
97533
|
+
...result.sequence === void 0 ? {} : { sequence: result.sequence }
|
|
97534
|
+
}).map((item) => item.itemUid === result.recordUid ? {
|
|
97535
|
+
...item,
|
|
97536
|
+
awaitingTimelineProjection: true
|
|
97537
|
+
} : item);
|
|
97538
|
+
if (sameTargetComposer()) setItems(applyExtensionResult);
|
|
97539
|
+
const targetSourceKey = arkmeSourceIdentityKey(targetSource);
|
|
97540
|
+
const cachedTimeline = conversationCacheRef.current.getTimeline(targetSourceKey);
|
|
97541
|
+
if (cachedTimeline !== void 0) conversationCacheRef.current.storeTimeline(targetSourceKey, {
|
|
97542
|
+
...cachedTimeline,
|
|
97543
|
+
items: applyExtensionResult(mergeItems(cachedTimeline.items, [optimistic])),
|
|
97544
|
+
...result.sequence === void 0 ? {} : { latestSequence: Math.max(cachedTimeline.latestSequence ?? 0, result.sequence) }
|
|
97545
|
+
});
|
|
97546
|
+
if (result.sequence !== void 0) arkmeChatDirectory.upsert({
|
|
97547
|
+
...targetSource,
|
|
97548
|
+
latestPreview: textContent || "非文本内容",
|
|
97549
|
+
activeAtMillis: now,
|
|
97550
|
+
latestSequence: result.sequence
|
|
97551
|
+
}, targetSource.sourceKey);
|
|
97552
|
+
await Promise.allSettled(pendingFileRefs.map((fileRef) => callArkme("files.local.remove", { fileRef })));
|
|
97553
|
+
releaseArkmeComposerDraft(pendingDraft);
|
|
97554
|
+
if (sameTargetComposer()) setComposerExtensionTarget((current) => current?.sourceRef === extensionTarget.sourceRef && current.item.itemUid === extensionTarget.item.itemUid ? void 0 : current);
|
|
97555
|
+
arkmeUi.chatChanged();
|
|
97556
|
+
return;
|
|
97557
|
+
}
|
|
96159
97558
|
if (pendingFileRefs.length > 0 && pendingAssets.length > 0) throw new Error("旧版附件与本地附件不能混合发送,请重新添加旧版附件");
|
|
96160
97559
|
const sdk = createArkmeSdk();
|
|
96161
97560
|
const allCapturedSegments = [...inputCapture.backgroundSound.segments];
|
|
@@ -96433,6 +97832,59 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96433
97832
|
};
|
|
96434
97833
|
const detailItem = items.find((item) => item.itemUid === detailItemUid);
|
|
96435
97834
|
const detailSharedRecording = detailItem === void 0 ? void 0 : arkmeRelatedRecordingItemFromSharedRecording(detailItem);
|
|
97835
|
+
const acceptDetailExtension = (0, react.useCallback)((result) => {
|
|
97836
|
+
const targetSource = source;
|
|
97837
|
+
const targetSourceKey = targetSource === void 0 ? "" : arkmeSourceIdentityKey(targetSource);
|
|
97838
|
+
const parent = items.find((item) => item.itemUid === detailItemUid);
|
|
97839
|
+
if (targetSource === void 0 || parent === void 0 || result.parentRecordUid !== parent.itemUid || activeSourceKeyRef.current !== targetSourceKey) return;
|
|
97840
|
+
const projected = detailExtensionTimelineItem(parent, result);
|
|
97841
|
+
const applyProjection = (current) => mergeItems(current, [projected]);
|
|
97842
|
+
pendingViewportRestoreRef.current = {
|
|
97843
|
+
sourceKey: targetSourceKey,
|
|
97844
|
+
viewport: void 0
|
|
97845
|
+
};
|
|
97846
|
+
setItems(applyProjection);
|
|
97847
|
+
const cachedTimeline = conversationCacheRef.current.getTimeline(targetSourceKey);
|
|
97848
|
+
const projectedAiPolishSettings = cachedTimeline?.aiPolishSettings ?? aiPolishSettings;
|
|
97849
|
+
const projectedNextCursor = cachedTimeline?.nextCursor ?? nextCursor;
|
|
97850
|
+
const projectedNewerCursor = cachedTimeline?.newerCursor ?? newerCursor;
|
|
97851
|
+
conversationCacheRef.current.storeTimeline(targetSourceKey, {
|
|
97852
|
+
items: applyProjection(cachedTimeline?.items ?? items),
|
|
97853
|
+
aiPolishNotices: cachedTimeline?.aiPolishNotices ?? aiPolishNotices,
|
|
97854
|
+
hasMore: cachedTimeline?.hasMore ?? hasMore,
|
|
97855
|
+
...projectedAiPolishSettings === void 0 ? {} : { aiPolishSettings: projectedAiPolishSettings },
|
|
97856
|
+
...projectedNextCursor === void 0 ? {} : { nextCursor: projectedNextCursor },
|
|
97857
|
+
...projectedNewerCursor === void 0 ? {} : { newerCursor: projectedNewerCursor },
|
|
97858
|
+
newerHasMore: cachedTimeline?.newerHasMore ?? newerHasMore,
|
|
97859
|
+
latestSequence: Math.max(cachedTimeline?.latestSequence ?? 0, result.sequence ?? 0),
|
|
97860
|
+
fetchedAtMillis: cachedTimeline?.fetchedAtMillis ?? Date.now(),
|
|
97861
|
+
...!sourceIsChat ? { recordRevision: cachedTimeline?.recordRevision ?? sourceProjectionRevision } : {}
|
|
97862
|
+
});
|
|
97863
|
+
const latestPreview = extensionConversationPreview(result.extension);
|
|
97864
|
+
if (result.sequence !== void 0 && isArkmeChatDirectorySource(targetSource)) arkmeChatDirectory.upsert({
|
|
97865
|
+
...targetSource,
|
|
97866
|
+
latestPreview,
|
|
97867
|
+
activeAtMillis: result.extension.sendAtMillis,
|
|
97868
|
+
latestSequence: result.sequence
|
|
97869
|
+
}, targetSource.sourceKey);
|
|
97870
|
+
arkmeUi.chatChanged();
|
|
97871
|
+
loadTimeline(void 0, true).catch((caught) => {
|
|
97872
|
+
if (activeSourceKeyRef.current === targetSourceKey) setError(errorMessage$2(caught));
|
|
97873
|
+
});
|
|
97874
|
+
}, [
|
|
97875
|
+
aiPolishNotices,
|
|
97876
|
+
aiPolishSettings,
|
|
97877
|
+
detailItemUid,
|
|
97878
|
+
hasMore,
|
|
97879
|
+
items,
|
|
97880
|
+
loadTimeline,
|
|
97881
|
+
newerCursor,
|
|
97882
|
+
newerHasMore,
|
|
97883
|
+
nextCursor,
|
|
97884
|
+
source,
|
|
97885
|
+
sourceIsChat,
|
|
97886
|
+
sourceProjectionRevision
|
|
97887
|
+
]);
|
|
96436
97888
|
const activateSource = (0, react.useCallback)((nextSource) => {
|
|
96437
97889
|
if (isArkmeChatDirectorySource(nextSource)) arkmeChatDirectory.upsert(nextSource);
|
|
96438
97890
|
arkmeUi.selectSource(nextSource);
|
|
@@ -96832,6 +98284,27 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96832
98284
|
interwovenMoments,
|
|
96833
98285
|
visibleConversationJoinEvents
|
|
96834
98286
|
]);
|
|
98287
|
+
(0, react.useLayoutEffect)(() => {
|
|
98288
|
+
const pending = pendingConversationTargetLocateRef.current;
|
|
98289
|
+
const body = bodyRef.current;
|
|
98290
|
+
if (pending === void 0 || body === null || pending.sourceKey !== timelineStateKey) return;
|
|
98291
|
+
const row = [...body.querySelectorAll("[data-arkme-message-item-uid]")].find((element) => element.dataset.arkmeMessageItemUid === pending.itemUid);
|
|
98292
|
+
if (row === void 0) return;
|
|
98293
|
+
const bodyRect = body.getBoundingClientRect();
|
|
98294
|
+
const rowRect = row.getBoundingClientRect();
|
|
98295
|
+
const rowHeight = rowRect.height || rowRect.bottom - rowRect.top;
|
|
98296
|
+
const centeredTop = body.scrollTop + rowRect.top - bodyRect.top - (body.clientHeight - rowHeight) / 2;
|
|
98297
|
+
const maximumTop = Math.max(0, body.scrollHeight - body.clientHeight);
|
|
98298
|
+
pendingConversationTargetLocateRef.current = void 0;
|
|
98299
|
+
pendingViewportRestoreRef.current = void 0;
|
|
98300
|
+
body.scrollTo({
|
|
98301
|
+
top: Math.max(0, Math.min(maximumTop, centeredTop)),
|
|
98302
|
+
behavior: "auto"
|
|
98303
|
+
});
|
|
98304
|
+
setHighlightedTargetUid(pending.itemUid);
|
|
98305
|
+
conversationTargetLocatedRevisionRef.current = pending.revision;
|
|
98306
|
+
arkmeUi.consumeConversationTarget(pending.revision);
|
|
98307
|
+
}, [displayRows, timelineStateKey]);
|
|
96835
98308
|
const activeSelectMode = selectMode?.sourceKey === conversationKey ? selectMode : void 0;
|
|
96836
98309
|
const selectedMessageItems = (0, react.useMemo)(() => activeSelectMode === void 0 ? [] : arkmeSelectedTimelineItems(displayItems, activeSelectMode.selectedIds), [activeSelectMode, displayItems]);
|
|
96837
98310
|
const selectedMessageCount = activeSelectMode?.selectedIds.size ?? 0;
|
|
@@ -96877,6 +98350,19 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
96877
98350
|
const closeMessageMenu = (0, react.useCallback)(() => {
|
|
96878
98351
|
setMessageMenu(void 0);
|
|
96879
98352
|
}, []);
|
|
98353
|
+
const startMessageExtension = (0, react.useCallback)((item) => {
|
|
98354
|
+
const actionRef = arkmeTimelineMessageActionRef(item);
|
|
98355
|
+
closeMessageMenu();
|
|
98356
|
+
if (source === void 0 || actionRef === "") return;
|
|
98357
|
+
setComposerExtensionTarget({
|
|
98358
|
+
sourceRef: source.sourceRef,
|
|
98359
|
+
item
|
|
98360
|
+
});
|
|
98361
|
+
setDrawer(void 0);
|
|
98362
|
+
requestAnimationFrame(() => {
|
|
98363
|
+
textareaRef.current?.focus();
|
|
98364
|
+
});
|
|
98365
|
+
}, [closeMessageMenu, source]);
|
|
96880
98366
|
const closeMessageSnapshot = (0, react.useCallback)(() => {
|
|
96881
98367
|
snapshotRequestRef.current?.abort();
|
|
96882
98368
|
snapshotRequestRef.current = void 0;
|
|
@@ -97394,11 +98880,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
97394
98880
|
const body = bodyRef.current;
|
|
97395
98881
|
if (pending === void 0 || body === null || pending.sourceKey !== timelineStateKey) return;
|
|
97396
98882
|
const anchorOffset = arkmeConversationAnchorOffset(body, pending.viewport?.anchorId);
|
|
97397
|
-
|
|
98883
|
+
const newerPageStartOffset = arkmeConversationAnchorOffset(body, pending.newerPageStartAnchorId);
|
|
98884
|
+
const maximumScrollTop = Math.max(0, body.scrollHeight - body.clientHeight);
|
|
98885
|
+
body.scrollTop = pending.newerPageStartAnchorId === void 0 ? arkmeConversationRestoredScrollTop(pending.viewport, {
|
|
97398
98886
|
currentScrollTop: body.scrollTop,
|
|
97399
98887
|
scrollHeight: body.scrollHeight,
|
|
97400
98888
|
...anchorOffset === void 0 ? {} : { anchorOffset }
|
|
97401
|
-
});
|
|
98889
|
+
}) : Math.max(0, Math.min(maximumScrollTop, newerPageStartOffset === void 0 ? pending.viewport?.scrollTop ?? body.scrollTop : body.scrollTop + newerPageStartOffset));
|
|
97402
98890
|
conversationCacheRef.current.storeViewport(pending.sourceKey, arkmeConversationViewport(body));
|
|
97403
98891
|
pendingViewportRestoreRef.current = void 0;
|
|
97404
98892
|
}, [
|
|
@@ -97429,6 +98917,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
97429
98917
|
const utilityContentVisible = authView === "content" && (ui.mode === "recordings" || ui.mode === "world" || ui.mode === "search" || ui.mode === "extensions" || ui.mode === "voiceprint" || ui.mode === "calls");
|
|
97430
98918
|
const conversationOverlayHost = panelRef.current;
|
|
97431
98919
|
const composerPlaceholder = arkmeComposerPlaceholderText(arkmeComposerPlaceholderTargetForSource(selectedSource, conversationMembers.length));
|
|
98920
|
+
const effectiveComposerPlaceholder = activeComposerExtensionTarget === void 0 ? composerPlaceholder : `发送到「${source?.displayName ?? ""}」…`;
|
|
97432
98921
|
const localNotificationBlockingOverlayOpen = addMenuOpen || longArticleCreating || groupMembersOpen || drawer !== void 0 || selectedMoment !== void 0 || relatedMenuOpen || relatedPanelOpen || relatedDetail !== void 0 || memberMenu !== void 0 || messageMenu !== void 0 || snapshot !== void 0 || messageReportItem !== void 0 || memberProfile !== void 0 || memberRecords !== void 0 || forwardTargetPicker !== void 0;
|
|
97433
98922
|
(0, react.useLayoutEffect)(() => {
|
|
97434
98923
|
const target = notificationActivation.source;
|
|
@@ -97918,6 +99407,14 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
97918
99407
|
const isForwardMessageCard = item.forwardRecords !== void 0;
|
|
97919
99408
|
const isSharedRecordingCard = item.sharedRecording !== void 0;
|
|
97920
99409
|
const isStructuredMessageCard = isForwardMessageCard || isSharedRecordingCard;
|
|
99410
|
+
const isExtensionMessage = !isSharedRecordingCard && item.extensionParent !== void 0;
|
|
99411
|
+
const messageAvatar = showMessageAvatars && !isSharedRecordingCard ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageAvatar, {
|
|
99412
|
+
...avatarRef === void 0 ? {} : { avatarRef },
|
|
99413
|
+
...messageMember === void 0 ? {} : { member: messageMember },
|
|
99414
|
+
profileEnabled: source?.kind === "group_chat",
|
|
99415
|
+
onOpen: openMemberProfile,
|
|
99416
|
+
onContextMenu: openMemberMenu
|
|
99417
|
+
}) : null;
|
|
97921
99418
|
const selectionAnchor = arkmeMessageSelectionAnchor(item);
|
|
97922
99419
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [startsDay && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", {
|
|
97923
99420
|
style: styles$6.date,
|
|
@@ -97939,41 +99436,40 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
97939
99436
|
event.stopPropagation();
|
|
97940
99437
|
toggleSelectedMessage(item);
|
|
97941
99438
|
},
|
|
97942
|
-
children: [
|
|
97943
|
-
|
|
97944
|
-
|
|
97945
|
-
|
|
97946
|
-
|
|
97947
|
-
|
|
97948
|
-
|
|
97949
|
-
|
|
97950
|
-
|
|
97951
|
-
|
|
97952
|
-
|
|
97953
|
-
|
|
97954
|
-
|
|
97955
|
-
|
|
97956
|
-
|
|
97957
|
-
},
|
|
97958
|
-
children: [showMessageAvatars && !isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MessageAvatar, {
|
|
97959
|
-
...avatarRef === void 0 ? {} : { avatarRef },
|
|
97960
|
-
...messageMember === void 0 ? {} : { member: messageMember },
|
|
97961
|
-
profileEnabled: source?.kind === "group_chat",
|
|
97962
|
-
onOpen: openMemberProfile,
|
|
97963
|
-
onContextMenu: openMemberMenu
|
|
97964
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99439
|
+
children: [
|
|
99440
|
+
highlightedTargetUid === item.itemUid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99441
|
+
"aria-hidden": "true",
|
|
99442
|
+
"data-arkme-highlight-backdrop": "true",
|
|
99443
|
+
style: styles$6.rowSearchTargetBackdrop
|
|
99444
|
+
}),
|
|
99445
|
+
activeSelectMode !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageSelectionControl, {
|
|
99446
|
+
anchor: selectionAnchor,
|
|
99447
|
+
checked: selectedForAction,
|
|
99448
|
+
disabled: !canUseMessageAction,
|
|
99449
|
+
onToggle: () => {
|
|
99450
|
+
toggleSelectedMessage(item);
|
|
99451
|
+
}
|
|
99452
|
+
}),
|
|
99453
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
97965
99454
|
style: {
|
|
97966
|
-
...styles$6.
|
|
97967
|
-
...
|
|
97968
|
-
...
|
|
97969
|
-
...
|
|
99455
|
+
...styles$6.messageLine,
|
|
99456
|
+
...activeSelectMode !== void 0 && selectionAnchor === "avatar" ? styles$6.messageLineSelectAvatarMode : {},
|
|
99457
|
+
...item.isMe && !isSharedRecordingCard ? styles$6.messageLineMe : {},
|
|
99458
|
+
...isForwardMessageCard ? styles$6.forwardMessageLine : {},
|
|
99459
|
+
...isSharedRecordingCard ? styles$6.sharedRecordingMessageLine : {},
|
|
99460
|
+
...activeSelectMode !== void 0 && selectionAnchor === "card-center" ? styles$6.messageLineSelectCardCenterMode : {}
|
|
97970
99461
|
},
|
|
97971
|
-
children: [
|
|
97972
|
-
|
|
99462
|
+
children: [!isExtensionMessage && messageAvatar, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99463
|
+
style: {
|
|
99464
|
+
...styles$6.messageBody,
|
|
99465
|
+
...item.isMe && !isSharedRecordingCard ? styles$6.messageBodyMe : {},
|
|
99466
|
+
...isForwardMessageCard ? styles$6.forwardMessageBody : {},
|
|
99467
|
+
...isSharedRecordingCard ? styles$6.sharedRecordingMessageBody : {}
|
|
99468
|
+
},
|
|
99469
|
+
children: [!isSharedRecordingCard && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineMessageHeader, {
|
|
97973
99470
|
item,
|
|
97974
99471
|
...selfProfile === void 0 ? {} : { profile: selfProfile }
|
|
97975
|
-
}),
|
|
97976
|
-
(() => {
|
|
99472
|
+
}), (() => {
|
|
97977
99473
|
const messageBubble = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
97978
99474
|
role: "button",
|
|
97979
99475
|
tabIndex: 0,
|
|
@@ -98075,23 +99571,55 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98075
99571
|
}, task.taskRef))
|
|
98076
99572
|
]
|
|
98077
99573
|
});
|
|
98078
|
-
|
|
99574
|
+
const messageContentLine = isSharedRecordingCard ? messageBubble : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageReadReceiptLine, {
|
|
98079
99575
|
source,
|
|
98080
99576
|
item,
|
|
98081
99577
|
wide: isStructuredMessageCard,
|
|
98082
99578
|
children: messageBubble
|
|
98083
99579
|
}, `read-receipt:${conversationOverlayKey}`);
|
|
98084
|
-
|
|
98085
|
-
|
|
98086
|
-
|
|
98087
|
-
|
|
98088
|
-
|
|
98089
|
-
|
|
98090
|
-
|
|
98091
|
-
|
|
99580
|
+
const topicBadge = selfTopicSource === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeTimelineSelfTopicBadge, {
|
|
99581
|
+
topic: selfTopicSource,
|
|
99582
|
+
onSelect: activateSelfSource
|
|
99583
|
+
});
|
|
99584
|
+
if (!isExtensionMessage || item.extensionParent === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [messageContentLine, topicBadge] });
|
|
99585
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99586
|
+
"data-arkme-extension-message-cluster": "true",
|
|
99587
|
+
style: {
|
|
99588
|
+
...styles$6.extensionMessageGroup,
|
|
99589
|
+
...item.isMe ? styles$6.extensionMessageGroupMe : {}
|
|
99590
|
+
},
|
|
99591
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeExtensionParentPreview, {
|
|
99592
|
+
parent: item.extensionParent,
|
|
99593
|
+
isMe: item.isMe,
|
|
99594
|
+
onSelect: () => {
|
|
99595
|
+
arkmeUi.showConversationTarget(source, item.extensionParent?.itemUid ?? "", item.extensionParent?.sendAtMillis ?? 0, item.extensionParent?.recordOwnerUserId);
|
|
99596
|
+
}
|
|
99597
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99598
|
+
"data-arkme-extension-child-line": "true",
|
|
99599
|
+
style: {
|
|
99600
|
+
...styles$6.extensionChildLine,
|
|
99601
|
+
...item.isMe ? styles$6.extensionChildLineMe : {}
|
|
99602
|
+
},
|
|
99603
|
+
children: [messageAvatar, /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99604
|
+
style: {
|
|
99605
|
+
...styles$6.extensionChildBody,
|
|
99606
|
+
...item.isMe ? styles$6.extensionChildBodyMe : {}
|
|
99607
|
+
},
|
|
99608
|
+
children: [messageContentLine, topicBadge]
|
|
99609
|
+
})]
|
|
99610
|
+
})]
|
|
99611
|
+
});
|
|
99612
|
+
})()]
|
|
99613
|
+
})]
|
|
99614
|
+
})
|
|
99615
|
+
]
|
|
98092
99616
|
})] }, row.id);
|
|
98093
99617
|
})
|
|
98094
99618
|
}),
|
|
99619
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99620
|
+
ref: newerSentinelRef,
|
|
99621
|
+
style: styles$6.sentinel
|
|
99622
|
+
}),
|
|
98095
99623
|
newMessageCount > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
98096
99624
|
type: "button",
|
|
98097
99625
|
style: styles$6.newMessages,
|
|
@@ -98253,285 +99781,345 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98253
99781
|
},
|
|
98254
99782
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
98255
99783
|
style: styles$6.composerStack,
|
|
98256
|
-
children: [
|
|
98257
|
-
|
|
98258
|
-
|
|
98259
|
-
|
|
98260
|
-
|
|
98261
|
-
|
|
98262
|
-
|
|
98263
|
-
|
|
98264
|
-
|
|
98265
|
-
|
|
98266
|
-
|
|
98267
|
-
|
|
98268
|
-
|
|
98269
|
-
|
|
98270
|
-
|
|
98271
|
-
|
|
98272
|
-
|
|
98273
|
-
|
|
98274
|
-
|
|
98275
|
-
|
|
98276
|
-
|
|
98277
|
-
|
|
98278
|
-
|
|
98279
|
-
|
|
98280
|
-
|
|
98281
|
-
|
|
98282
|
-
|
|
98283
|
-
|
|
98284
|
-
|
|
98285
|
-
|
|
98286
|
-
|
|
98287
|
-
|
|
98288
|
-
|
|
98289
|
-
|
|
98290
|
-
|
|
98291
|
-
}), "
|
|
98292
|
-
|
|
98293
|
-
|
|
98294
|
-
|
|
98295
|
-
|
|
98296
|
-
|
|
98297
|
-
|
|
98298
|
-
|
|
98299
|
-
|
|
98300
|
-
|
|
98301
|
-
|
|
98302
|
-
|
|
98303
|
-
|
|
98304
|
-
attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
|
|
98305
|
-
attachments,
|
|
98306
|
-
disabled: preparingFiles,
|
|
98307
|
-
onMove: (from, to) => arkmeComposerDraftStore.moveAttachment(composerDraftKey, from, to),
|
|
98308
|
-
onPreview: (attachment) => {
|
|
98309
|
-
if (attachment.localFile !== void 0) setDraftPreview(localFileBlock(attachment.localFile));
|
|
99784
|
+
children: [
|
|
99785
|
+
activeComposerExtensionTarget !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99786
|
+
style: styles$6.composerDestinationHint,
|
|
99787
|
+
"data-arkme-composer-destination-hint": "true",
|
|
99788
|
+
children: [
|
|
99789
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99790
|
+
style: styles$6.composerDestinationHintIcon,
|
|
99791
|
+
"aria-hidden": true,
|
|
99792
|
+
children: "💡"
|
|
99793
|
+
}),
|
|
99794
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "正在给 " }),
|
|
99795
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99796
|
+
style: styles$6.composerDestinationHintName,
|
|
99797
|
+
children: arkmeSourceDestinationLabel(source)
|
|
99798
|
+
}),
|
|
99799
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: " 发消息" })
|
|
99800
|
+
]
|
|
99801
|
+
}),
|
|
99802
|
+
activeComposerExtensionTarget !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99803
|
+
style: styles$6.composerExtensionTarget,
|
|
99804
|
+
"data-arkme-composer-extension-target": "true",
|
|
99805
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99806
|
+
style: styles$6.composerExtensionTargetBody,
|
|
99807
|
+
children: [(activeComposerExtensionTarget.item.textContent.trim() || activeComposerExtensionTarget.item.title.trim()) !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99808
|
+
style: styles$6.composerExtensionTargetText,
|
|
99809
|
+
children: activeComposerExtensionTarget.item.textContent.trim() || activeComposerExtensionTarget.item.title.trim()
|
|
99810
|
+
}), (activeComposerExtensionTarget.item.contentBlocks?.length ?? 0) > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99811
|
+
style: styles$6.composerExtensionTargetFiles,
|
|
99812
|
+
children: activeComposerExtensionTarget.item.contentBlocks?.slice(0, 3).map((block, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99813
|
+
style: styles$6.composerExtensionTargetFile,
|
|
99814
|
+
title: block.fileName || "附件",
|
|
99815
|
+
children: block.kind === "image" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
99816
|
+
style: styles$6.composerExtensionTargetImage,
|
|
99817
|
+
src: createArkmeSdk().mediaUrl(block.mediaRef),
|
|
99818
|
+
alt: block.fileName || "图片附件"
|
|
99819
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99820
|
+
hidden: true,
|
|
99821
|
+
children: block.fileName || "附件"
|
|
99822
|
+
})] }) : block.fileName || "附件"
|
|
99823
|
+
}, `${block.mediaRef}:${String(index)}`))
|
|
99824
|
+
})]
|
|
99825
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
99826
|
+
type: "button",
|
|
99827
|
+
style: styles$6.composerExtensionTargetCancel,
|
|
99828
|
+
"aria-label": "取消延展",
|
|
99829
|
+
onClick: () => {
|
|
99830
|
+
setComposerExtensionTarget(void 0);
|
|
99831
|
+
textareaRef.current?.focus();
|
|
98310
99832
|
},
|
|
98311
|
-
|
|
98312
|
-
|
|
98313
|
-
|
|
98314
|
-
|
|
98315
|
-
|
|
98316
|
-
|
|
98317
|
-
|
|
98318
|
-
|
|
98319
|
-
|
|
98320
|
-
|
|
98321
|
-
|
|
98322
|
-
|
|
98323
|
-
|
|
98324
|
-
|
|
98325
|
-
|
|
98326
|
-
|
|
98327
|
-
|
|
98328
|
-
|
|
98329
|
-
children:
|
|
98330
|
-
|
|
98331
|
-
|
|
98332
|
-
|
|
98333
|
-
|
|
98334
|
-
|
|
98335
|
-
|
|
98336
|
-
|
|
98337
|
-
|
|
98338
|
-
...styles$6.mentionSuggestionRow,
|
|
98339
|
-
...index === mentionCandidateIndex ? styles$6.mentionSuggestionRowActive : {}
|
|
98340
|
-
},
|
|
98341
|
-
onMouseEnter: () => {
|
|
98342
|
-
setMentionCandidateIndex(index);
|
|
98343
|
-
},
|
|
98344
|
-
onMouseDown: (event) => {
|
|
98345
|
-
event.preventDefault();
|
|
98346
|
-
insertMentionCandidate(member);
|
|
98347
|
-
},
|
|
98348
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
98349
|
-
style: styles$6.mentionSuggestionAvatar,
|
|
98350
|
-
"aria-hidden": true,
|
|
98351
|
-
children: member.kind === "bot" ? member.avatarRef === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
98352
|
-
style: styles$6.mentionSuggestionBotAvatar,
|
|
98353
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(t$5, {
|
|
98354
|
-
size: 14,
|
|
98355
|
-
weight: "fill"
|
|
98356
|
-
})
|
|
98357
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
|
|
98358
|
-
avatarRef: member.avatarRef,
|
|
98359
|
-
size: 28,
|
|
98360
|
-
label: member.displayName
|
|
98361
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
|
|
98362
|
-
...member.kind === "member" && member.avatarRef !== void 0 ? { avatarRef: member.avatarRef } : {},
|
|
98363
|
-
size: 28,
|
|
98364
|
-
label: member.displayName
|
|
98365
|
-
})
|
|
98366
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
98367
|
-
style: styles$6.mentionSuggestionText,
|
|
99833
|
+
children: "×"
|
|
99834
|
+
})]
|
|
99835
|
+
}),
|
|
99836
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99837
|
+
ref: composerRef,
|
|
99838
|
+
className: "arkme-conversation-composer-inner",
|
|
99839
|
+
"data-arkme-primary-composer": "true",
|
|
99840
|
+
"data-arkme-composer-focused": composerInputFocused ? "true" : "false",
|
|
99841
|
+
style: {
|
|
99842
|
+
...styles$6.composerInner,
|
|
99843
|
+
...composerInputFocused ? styles$6.composerInnerFocused : {},
|
|
99844
|
+
...activeComposerExtensionTarget === void 0 ? {} : styles$6.composerInnerExtension
|
|
99845
|
+
},
|
|
99846
|
+
children: [
|
|
99847
|
+
addMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
99848
|
+
ref: addMenuRef,
|
|
99849
|
+
style: styles$6.addMenu,
|
|
99850
|
+
role: "menu",
|
|
99851
|
+
children: [
|
|
99852
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
99853
|
+
type: "button",
|
|
99854
|
+
role: "menuitem",
|
|
99855
|
+
style: styles$6.addMenuItem,
|
|
99856
|
+
onClick: () => {
|
|
99857
|
+
setAddMenuOpen(false);
|
|
99858
|
+
fileInputRef.current?.click();
|
|
99859
|
+
},
|
|
98368
99860
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
98369
|
-
|
|
98370
|
-
children:
|
|
98371
|
-
}),
|
|
98372
|
-
|
|
98373
|
-
|
|
98374
|
-
|
|
98375
|
-
|
|
98376
|
-
|
|
98377
|
-
|
|
98378
|
-
|
|
98379
|
-
|
|
98380
|
-
|
|
98381
|
-
|
|
98382
|
-
|
|
98383
|
-
|
|
98384
|
-
|
|
98385
|
-
|
|
98386
|
-
|
|
98387
|
-
|
|
98388
|
-
|
|
98389
|
-
|
|
98390
|
-
|
|
98391
|
-
|
|
98392
|
-
|
|
98393
|
-
|
|
98394
|
-
|
|
98395
|
-
|
|
98396
|
-
},
|
|
98397
|
-
onSelectionChange: updateMentionTrigger,
|
|
98398
|
-
onPaste: (event) => {
|
|
98399
|
-
const files = arkmeClipboardFiles(event.clipboardData);
|
|
98400
|
-
if (files.length === 0) return;
|
|
98401
|
-
event.preventDefault();
|
|
98402
|
-
selectFiles(files);
|
|
98403
|
-
},
|
|
98404
|
-
onKeyDown: (event) => {
|
|
98405
|
-
if (mentionTrigger !== void 0) {
|
|
98406
|
-
if (event.key === "Escape") {
|
|
98407
|
-
event.preventDefault();
|
|
98408
|
-
setMentionTrigger(void 0);
|
|
98409
|
-
return;
|
|
98410
|
-
}
|
|
98411
|
-
if (event.key === "ArrowDown" && mentionCandidates.length > 0) {
|
|
98412
|
-
event.preventDefault();
|
|
98413
|
-
setMentionCandidateIndex((index) => (index + 1) % mentionCandidates.length);
|
|
98414
|
-
return;
|
|
98415
|
-
}
|
|
98416
|
-
if (event.key === "ArrowUp" && mentionCandidates.length > 0) {
|
|
98417
|
-
event.preventDefault();
|
|
98418
|
-
setMentionCandidateIndex((index) => (index + mentionCandidates.length - 1) % mentionCandidates.length);
|
|
98419
|
-
return;
|
|
98420
|
-
}
|
|
98421
|
-
if ((event.key === "Enter" || event.key === "Tab") && mentionCandidates.length > 0) {
|
|
98422
|
-
event.preventDefault();
|
|
98423
|
-
const selectedCandidate = mentionCandidates[Math.min(mentionCandidateIndex, mentionCandidates.length - 1)];
|
|
98424
|
-
if (selectedCandidate !== void 0) insertMentionCandidate(selectedCandidate);
|
|
98425
|
-
return;
|
|
98426
|
-
}
|
|
99861
|
+
"aria-hidden": true,
|
|
99862
|
+
children: "📎"
|
|
99863
|
+
}), "添加照片和文件"]
|
|
99864
|
+
}),
|
|
99865
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { style: styles$6.menuDivider }),
|
|
99866
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
99867
|
+
type: "button",
|
|
99868
|
+
role: "menuitem",
|
|
99869
|
+
style: styles$6.addMenuItem,
|
|
99870
|
+
onClick: () => {
|
|
99871
|
+
setLongArticleCreating(true);
|
|
99872
|
+
setAddMenuOpen(false);
|
|
99873
|
+
},
|
|
99874
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99875
|
+
"aria-hidden": true,
|
|
99876
|
+
children: "✎"
|
|
99877
|
+
}), "写长文"]
|
|
99878
|
+
})
|
|
99879
|
+
]
|
|
99880
|
+
}),
|
|
99881
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
99882
|
+
ref: fileInputRef,
|
|
99883
|
+
type: "file",
|
|
99884
|
+
multiple: true,
|
|
99885
|
+
hidden: true,
|
|
99886
|
+
onChange: (event) => {
|
|
99887
|
+
selectFiles(event.currentTarget.files);
|
|
98427
99888
|
}
|
|
98428
|
-
|
|
98429
|
-
|
|
98430
|
-
|
|
98431
|
-
|
|
98432
|
-
|
|
98433
|
-
|
|
98434
|
-
|
|
98435
|
-
|
|
98436
|
-
|
|
98437
|
-
|
|
99889
|
+
}),
|
|
99890
|
+
attachments.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeAttachmentStrip, {
|
|
99891
|
+
attachments,
|
|
99892
|
+
disabled: preparingFiles,
|
|
99893
|
+
onMove: (from, to) => arkmeComposerDraftStore.moveAttachment(composerDraftKey, from, to),
|
|
99894
|
+
onPreview: (attachment) => {
|
|
99895
|
+
if (attachment.localFile !== void 0) setDraftPreview(localFileBlock(attachment.localFile));
|
|
99896
|
+
},
|
|
99897
|
+
onRemove: (attachment) => {
|
|
99898
|
+
arkmeComposerDraftStore.removeAttachment(composerDraftKey, arkmeAttachmentId(attachment));
|
|
99899
|
+
if (attachment.localFile !== void 0) callArkme("files.local.remove", { fileRef: attachment.localFile.fileRef }).catch((caught) => setError(errorMessage$2(caught)));
|
|
98438
99900
|
}
|
|
98439
|
-
|
|
99901
|
+
}),
|
|
99902
|
+
activeConversation && draftPreview !== void 0 && typeof document !== "undefined" && (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMediaPreview, {
|
|
99903
|
+
selected: draftPreview,
|
|
99904
|
+
blocks: attachments.flatMap((attachment) => attachment.localFile === void 0 ? [] : [localFileBlock(attachment.localFile)]),
|
|
99905
|
+
onSelect: setDraftPreview,
|
|
99906
|
+
onClose: () => setDraftPreview(void 0),
|
|
99907
|
+
openLocalFile: false
|
|
99908
|
+
}), document.body),
|
|
99909
|
+
mentionTrigger !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99910
|
+
style: styles$6.mentionSuggestions,
|
|
99911
|
+
role: "listbox",
|
|
99912
|
+
"aria-label": "选择要 @ 的对象",
|
|
99913
|
+
children: mentionCandidates.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99914
|
+
style: styles$6.mentionSuggestionsEmpty,
|
|
99915
|
+
children: "暂无可 @ 的对象"
|
|
99916
|
+
}) : mentionCandidates.map((member, index) => {
|
|
99917
|
+
const primary = arkmeMentionCandidatePrimaryText(member);
|
|
99918
|
+
const secondary = member.kind === "bot" ? (member.secondaryName ?? "Bot").trim() : "";
|
|
99919
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
99920
|
+
type: "button",
|
|
99921
|
+
role: "option",
|
|
99922
|
+
"aria-selected": index === mentionCandidateIndex,
|
|
99923
|
+
style: {
|
|
99924
|
+
...styles$6.mentionSuggestionRow,
|
|
99925
|
+
...index === mentionCandidateIndex ? styles$6.mentionSuggestionRowActive : {}
|
|
99926
|
+
},
|
|
99927
|
+
onMouseEnter: () => {
|
|
99928
|
+
setMentionCandidateIndex(index);
|
|
99929
|
+
},
|
|
99930
|
+
onMouseDown: (event) => {
|
|
99931
|
+
event.preventDefault();
|
|
99932
|
+
insertMentionCandidate(member);
|
|
99933
|
+
},
|
|
99934
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99935
|
+
style: styles$6.mentionSuggestionAvatar,
|
|
99936
|
+
"aria-hidden": true,
|
|
99937
|
+
children: member.kind === "bot" ? member.avatarRef === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99938
|
+
style: styles$6.mentionSuggestionBotAvatar,
|
|
99939
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(t$5, {
|
|
99940
|
+
size: 14,
|
|
99941
|
+
weight: "fill"
|
|
99942
|
+
})
|
|
99943
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
|
|
99944
|
+
avatarRef: member.avatarRef,
|
|
99945
|
+
size: 28,
|
|
99946
|
+
label: member.displayName
|
|
99947
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeUserAvatar, {
|
|
99948
|
+
...member.kind === "member" && member.avatarRef !== void 0 ? { avatarRef: member.avatarRef } : {},
|
|
99949
|
+
size: 28,
|
|
99950
|
+
label: member.displayName
|
|
99951
|
+
})
|
|
99952
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
99953
|
+
style: styles$6.mentionSuggestionText,
|
|
99954
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99955
|
+
style: styles$6.mentionSuggestionName,
|
|
99956
|
+
children: primary
|
|
99957
|
+
}), secondary !== "" && secondary !== member.displayName ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
99958
|
+
style: styles$6.mentionSuggestionSecondary,
|
|
99959
|
+
children: secondary
|
|
99960
|
+
}) : null]
|
|
99961
|
+
})]
|
|
99962
|
+
}, member.kind === "all" ? "all" : member.kind === "bot" ? `bot:${member.botRef}` : `member:${member.mentionRef}`);
|
|
99963
|
+
})
|
|
99964
|
+
}),
|
|
99965
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeRichComposerInput, {
|
|
99966
|
+
className: "arkme-conversation-textarea",
|
|
99967
|
+
ref: textareaRef,
|
|
99968
|
+
style: styles$6.textarea,
|
|
99969
|
+
value: draft,
|
|
99970
|
+
mentions: composerDraft.mentions,
|
|
99971
|
+
emojis: composerDraft.emojis,
|
|
99972
|
+
maxLength: 2e4,
|
|
99973
|
+
placeholder: effectiveComposerPlaceholder,
|
|
99974
|
+
ariaLabel: effectiveComposerPlaceholder,
|
|
99975
|
+
disabled: preparingFiles,
|
|
99976
|
+
onTextChange: updateComposerText,
|
|
99977
|
+
onFocus: () => {
|
|
99978
|
+
setComposerInputFocused(true);
|
|
99979
|
+
},
|
|
99980
|
+
onBlur: () => {
|
|
99981
|
+
setComposerInputFocused(false);
|
|
99982
|
+
},
|
|
99983
|
+
onSelectionChange: updateMentionTrigger,
|
|
99984
|
+
onPaste: (event) => {
|
|
99985
|
+
const files = arkmeClipboardFiles(event.clipboardData);
|
|
99986
|
+
if (files.length === 0) return;
|
|
98440
99987
|
event.preventDefault();
|
|
98441
|
-
|
|
98442
|
-
}
|
|
98443
|
-
|
|
98444
|
-
|
|
98445
|
-
|
|
98446
|
-
|
|
98447
|
-
|
|
98448
|
-
|
|
98449
|
-
|
|
98450
|
-
|
|
98451
|
-
|
|
98452
|
-
|
|
98453
|
-
|
|
98454
|
-
|
|
98455
|
-
|
|
98456
|
-
|
|
98457
|
-
|
|
98458
|
-
|
|
98459
|
-
|
|
98460
|
-
|
|
98461
|
-
|
|
98462
|
-
|
|
98463
|
-
|
|
98464
|
-
|
|
98465
|
-
|
|
98466
|
-
getEditorGeometry: () => textareaRef.current?.getEditorGeometry(),
|
|
98467
|
-
onSelect: insertEmoji,
|
|
98468
|
-
onUploadSticker: async (file) => {
|
|
98469
|
-
if (composerDraftKey === void 0) throw new Error("请先选择聊天");
|
|
98470
|
-
return await uploadFavoriteSticker(file);
|
|
98471
|
-
},
|
|
98472
|
-
onStickerSent: async () => {
|
|
98473
|
-
await loadTimeline();
|
|
98474
|
-
},
|
|
98475
|
-
onError: (message) => {
|
|
98476
|
-
setError(message);
|
|
99988
|
+
selectFiles(files);
|
|
99989
|
+
},
|
|
99990
|
+
onKeyDown: (event) => {
|
|
99991
|
+
if (mentionTrigger !== void 0) {
|
|
99992
|
+
if (event.key === "Escape") {
|
|
99993
|
+
event.preventDefault();
|
|
99994
|
+
setMentionTrigger(void 0);
|
|
99995
|
+
return;
|
|
99996
|
+
}
|
|
99997
|
+
if (event.key === "ArrowDown" && mentionCandidates.length > 0) {
|
|
99998
|
+
event.preventDefault();
|
|
99999
|
+
setMentionCandidateIndex((index) => (index + 1) % mentionCandidates.length);
|
|
100000
|
+
return;
|
|
100001
|
+
}
|
|
100002
|
+
if (event.key === "ArrowUp" && mentionCandidates.length > 0) {
|
|
100003
|
+
event.preventDefault();
|
|
100004
|
+
setMentionCandidateIndex((index) => (index + mentionCandidates.length - 1) % mentionCandidates.length);
|
|
100005
|
+
return;
|
|
100006
|
+
}
|
|
100007
|
+
if ((event.key === "Enter" || event.key === "Tab") && mentionCandidates.length > 0) {
|
|
100008
|
+
event.preventDefault();
|
|
100009
|
+
const selectedCandidate = mentionCandidates[Math.min(mentionCandidateIndex, mentionCandidates.length - 1)];
|
|
100010
|
+
if (selectedCandidate !== void 0) insertMentionCandidate(selectedCandidate);
|
|
100011
|
+
return;
|
|
100012
|
+
}
|
|
98477
100013
|
}
|
|
98478
|
-
|
|
98479
|
-
|
|
98480
|
-
|
|
98481
|
-
|
|
98482
|
-
|
|
98483
|
-
|
|
98484
|
-
|
|
98485
|
-
|
|
98486
|
-
|
|
98487
|
-
|
|
98488
|
-
const next = !composerShowsInputTime;
|
|
98489
|
-
setComposerShowsInputTime(next);
|
|
98490
|
-
setArkmeComposerShowsInputTime(next);
|
|
98491
|
-
textareaRef.current?.focus();
|
|
100014
|
+
if (!event.nativeEvent.isComposing && (event.key === "Backspace" || event.key === "Delete")) {
|
|
100015
|
+
const caret = arkmeComposerDraftStore.deleteMentionAtSelection(composerDraftKey, textareaRef.current?.selectionStart ?? draft.length, textareaRef.current?.selectionEnd ?? draft.length, event.key === "Backspace" ? "backward" : "forward");
|
|
100016
|
+
if (caret !== void 0) {
|
|
100017
|
+
event.preventDefault();
|
|
100018
|
+
requestAnimationFrame(() => {
|
|
100019
|
+
textareaRef.current?.focus();
|
|
100020
|
+
textareaRef.current?.setSelectionRange(caret, caret);
|
|
100021
|
+
});
|
|
100022
|
+
return;
|
|
100023
|
+
}
|
|
98492
100024
|
}
|
|
98493
|
-
|
|
98494
|
-
type: "button",
|
|
98495
|
-
style: {
|
|
98496
|
-
...styles$6.send,
|
|
98497
|
-
opacity: canSend ? 1 : .4
|
|
98498
|
-
},
|
|
98499
|
-
disabled: !canSend,
|
|
98500
|
-
"aria-label": "发送消息",
|
|
98501
|
-
onMouseDown: (event) => {
|
|
100025
|
+
if (event.key === "Enter" && !event.shiftKey && !event.nativeEvent.isComposing) {
|
|
98502
100026
|
event.preventDefault();
|
|
98503
|
-
|
|
98504
|
-
|
|
98505
|
-
|
|
98506
|
-
|
|
98507
|
-
|
|
98508
|
-
|
|
98509
|
-
|
|
98510
|
-
|
|
98511
|
-
|
|
98512
|
-
|
|
98513
|
-
|
|
98514
|
-
|
|
98515
|
-
|
|
98516
|
-
|
|
98517
|
-
"aria-
|
|
98518
|
-
|
|
98519
|
-
|
|
98520
|
-
|
|
100027
|
+
if (canSend) send();
|
|
100028
|
+
}
|
|
100029
|
+
}
|
|
100030
|
+
}, composerDraftKey),
|
|
100031
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
100032
|
+
style: styles$6.tools,
|
|
100033
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
100034
|
+
style: styles$6.toolGroup,
|
|
100035
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
100036
|
+
ref: addMenuTriggerRef,
|
|
100037
|
+
type: "button",
|
|
100038
|
+
style: styles$6.plus,
|
|
100039
|
+
"aria-label": "添加内容",
|
|
100040
|
+
"aria-haspopup": "menu",
|
|
100041
|
+
"aria-expanded": addMenuOpen,
|
|
100042
|
+
disabled: preparingFiles,
|
|
100043
|
+
onClick: () => {
|
|
100044
|
+
setAddMenuOpen((value) => !value);
|
|
100045
|
+
},
|
|
100046
|
+
children: preparingFiles ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeFilePreparingIndicator, {}) : "+"
|
|
100047
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeEmojiPicker, {
|
|
100048
|
+
disabled: preparingFiles,
|
|
100049
|
+
scopeKey: composerDraftKey,
|
|
100050
|
+
...source?.kind === "private_chat" || source?.kind === "group_chat" ? { sourceRef: source.sourceRef } : {},
|
|
100051
|
+
getCaretGeometry: () => textareaRef.current?.getCaretGeometry(),
|
|
100052
|
+
getEditorGeometry: () => textareaRef.current?.getEditorGeometry(),
|
|
100053
|
+
onSelect: insertEmoji,
|
|
100054
|
+
onUploadSticker: async (file) => {
|
|
100055
|
+
if (composerDraftKey === void 0) throw new Error("请先选择聊天");
|
|
100056
|
+
return await uploadFavoriteSticker(file);
|
|
100057
|
+
},
|
|
100058
|
+
onStickerSent: async () => {
|
|
100059
|
+
await loadTimeline();
|
|
100060
|
+
},
|
|
100061
|
+
onError: (message) => {
|
|
100062
|
+
setError(message);
|
|
100063
|
+
}
|
|
100064
|
+
}, `emoji-picker:${conversationOverlayKey}`)]
|
|
100065
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
100066
|
+
style: styles$6.composerSendArea,
|
|
100067
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeComposerInputStats, {
|
|
100068
|
+
active: activeConversation,
|
|
100069
|
+
visible: composerStatsVisible,
|
|
100070
|
+
textLength: composerTextLength,
|
|
100071
|
+
...composerInputStartedAtMillis === void 0 ? {} : { startedAtMillis: composerInputStartedAtMillis },
|
|
100072
|
+
showsInputTime: composerShowsInputTime,
|
|
100073
|
+
onToggle: () => {
|
|
100074
|
+
const next = !composerShowsInputTime;
|
|
100075
|
+
setComposerShowsInputTime(next);
|
|
100076
|
+
setArkmeComposerShowsInputTime(next);
|
|
100077
|
+
textareaRef.current?.focus();
|
|
100078
|
+
}
|
|
100079
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
100080
|
+
type: "button",
|
|
100081
|
+
style: {
|
|
100082
|
+
...styles$6.send,
|
|
100083
|
+
...canSend ? {} : styles$6.sendDisabled
|
|
100084
|
+
},
|
|
100085
|
+
disabled: !canSend,
|
|
100086
|
+
"aria-label": "发送消息",
|
|
100087
|
+
onMouseDown: (event) => {
|
|
100088
|
+
event.preventDefault();
|
|
100089
|
+
},
|
|
100090
|
+
onMouseEnter: (event) => {
|
|
100091
|
+
if (!event.currentTarget.disabled) event.currentTarget.style.background = "#08A437";
|
|
100092
|
+
},
|
|
100093
|
+
onMouseLeave: (event) => {
|
|
100094
|
+
if (!event.currentTarget.disabled) event.currentTarget.style.background = "#09B83E";
|
|
100095
|
+
},
|
|
100096
|
+
onClick: () => {
|
|
100097
|
+
send();
|
|
100098
|
+
},
|
|
100099
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
100100
|
+
viewBox: "9.7 6.1 16 16",
|
|
100101
|
+
width: "16",
|
|
100102
|
+
height: "16",
|
|
100103
|
+
"aria-hidden": true,
|
|
100104
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
100105
|
+
d: "M23.5521 7.04659L11.5965 10.7238C10.7646 10.9798 10.6133 12.092 11.3467 12.5609L14.879 14.8189C15.0627 14.9363 15.2792 14.9919 15.4967 14.9775C15.7142 14.9631 15.9214 14.8794 16.088 14.7388L20.4967 11.0186C20.7357 10.8169 21.0582 11.1392 20.8566 11.3784L17.1366 15.7879C16.996 15.9545 16.9124 16.1617 16.8981 16.3792C16.8837 16.5966 16.9393 16.813 17.0568 16.9966L19.3143 20.5285C19.783 21.2617 20.8954 21.1104 21.1513 20.2787L24.8286 8.32335C25.0696 7.53956 24.3356 6.80563 23.5521 7.04659Z",
|
|
100106
|
+
fill: "currentColor"
|
|
100107
|
+
})
|
|
98521
100108
|
})
|
|
98522
|
-
})
|
|
100109
|
+
})]
|
|
98523
100110
|
})]
|
|
98524
|
-
})
|
|
98525
|
-
|
|
98526
|
-
|
|
98527
|
-
|
|
98528
|
-
|
|
98529
|
-
|
|
98530
|
-
|
|
98531
|
-
|
|
98532
|
-
|
|
98533
|
-
|
|
98534
|
-
|
|
100111
|
+
}),
|
|
100112
|
+
arkmeSourceSupportsRecordInputCapture(source?.kind) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeBackgroundSoundWaveform, {
|
|
100113
|
+
owner: recordInputCaptureOwner,
|
|
100114
|
+
draftKey: composerDraftKey
|
|
100115
|
+
})
|
|
100116
|
+
]
|
|
100117
|
+
}),
|
|
100118
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
100119
|
+
style: styles$6.composerHint,
|
|
100120
|
+
children: "Enter发送 / Shift+Enter换行"
|
|
100121
|
+
})
|
|
100122
|
+
]
|
|
98535
100123
|
})
|
|
98536
100124
|
})
|
|
98537
100125
|
] }),
|
|
@@ -98781,6 +100369,26 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98781
100369
|
children: ARKME_MESSAGE_ACTION_MENU_LABELS[1]
|
|
98782
100370
|
})]
|
|
98783
100371
|
}),
|
|
100372
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
100373
|
+
type: "button",
|
|
100374
|
+
role: "menuitem",
|
|
100375
|
+
style: {
|
|
100376
|
+
...styles$6.messageActionMenuItem,
|
|
100377
|
+
opacity: arkmeTimelineMessageActionRef(messageMenuItem) === "" ? .45 : 1
|
|
100378
|
+
},
|
|
100379
|
+
disabled: arkmeTimelineMessageActionRef(messageMenuItem) === "",
|
|
100380
|
+
onClick: () => {
|
|
100381
|
+
startMessageExtension(messageMenuItem);
|
|
100382
|
+
},
|
|
100383
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
100384
|
+
style: styles$6.messageActionMenuIcon,
|
|
100385
|
+
"aria-hidden": true,
|
|
100386
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeDesktopExtensionIcon, {})
|
|
100387
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
100388
|
+
style: styles$6.messageActionMenuText,
|
|
100389
|
+
children: ARKME_MESSAGE_ACTION_MENU_LABELS[2]
|
|
100390
|
+
})]
|
|
100391
|
+
}),
|
|
98784
100392
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
98785
100393
|
type: "button",
|
|
98786
100394
|
role: "menuitem",
|
|
@@ -98798,7 +100406,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98798
100406
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "select" })
|
|
98799
100407
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
98800
100408
|
style: styles$6.messageActionMenuText,
|
|
98801
|
-
children: ARKME_MESSAGE_ACTION_MENU_LABELS[
|
|
100409
|
+
children: ARKME_MESSAGE_ACTION_MENU_LABELS[3]
|
|
98802
100410
|
})]
|
|
98803
100411
|
}),
|
|
98804
100412
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -98818,7 +100426,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98818
100426
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeMessageActionIcon, { kind: "forward" })
|
|
98819
100427
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
98820
100428
|
style: styles$6.messageActionMenuText,
|
|
98821
|
-
children: ARKME_MESSAGE_ACTION_MENU_LABELS[
|
|
100429
|
+
children: ARKME_MESSAGE_ACTION_MENU_LABELS[4]
|
|
98822
100430
|
})]
|
|
98823
100431
|
}),
|
|
98824
100432
|
arkmeCanReportTimelineMessage(source, messageMenuItem) && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -98948,7 +100556,9 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
98948
100556
|
setShowOriginal((value) => !value);
|
|
98949
100557
|
},
|
|
98950
100558
|
shareWebsite,
|
|
98951
|
-
onMessageCopyLinkOpen: openMessageCopyLinkDetail
|
|
100559
|
+
onMessageCopyLinkOpen: openMessageCopyLinkDetail,
|
|
100560
|
+
onExtensionSent: acceptDetailExtension,
|
|
100561
|
+
onToast: showMessageActionStatus
|
|
98952
100562
|
}, detailItem.itemUid),
|
|
98953
100563
|
activeConversation && drawer === "copyLink" && copyLinkDetail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
98954
100564
|
style: styles$6.forwardDrawerDismiss,
|
|
@@ -130582,12 +132192,43 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130582
132192
|
}
|
|
130583
132193
|
};
|
|
130584
132194
|
const ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH = 76;
|
|
130585
|
-
const
|
|
132195
|
+
const ARKME_PERSISTENT_DIRECTORY_MIN_WIDTH = 64;
|
|
132196
|
+
const ARKME_PERSISTENT_DIRECTORY_AVATAR_ONLY_WIDTH = 200;
|
|
132197
|
+
const ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH = 140;
|
|
130586
132198
|
const ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH = 480;
|
|
130587
|
-
const
|
|
132199
|
+
const ARKME_PERSISTENT_DIRECTORY_MAX_WIDTH = ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH - ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH;
|
|
132200
|
+
const ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY = "dsh-arkme:persistent-sidebar-width:v1";
|
|
130588
132201
|
function clampPersistentSidebarWidth(width) {
|
|
130589
132202
|
return Math.min(ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH, Math.max(ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH, Math.round(width)));
|
|
130590
132203
|
}
|
|
132204
|
+
function browserPersistentSidebarStorage() {
|
|
132205
|
+
try {
|
|
132206
|
+
return typeof window === "undefined" ? void 0 : window.localStorage;
|
|
132207
|
+
} catch {
|
|
132208
|
+
return;
|
|
132209
|
+
}
|
|
132210
|
+
}
|
|
132211
|
+
function readPersistentSidebarWidth(storage = browserPersistentSidebarStorage()) {
|
|
132212
|
+
if (storage === void 0) return void 0;
|
|
132213
|
+
try {
|
|
132214
|
+
const raw = storage.getItem(ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY);
|
|
132215
|
+
if (raw === null || raw.trim() === "") return void 0;
|
|
132216
|
+
const parsed = Number(raw);
|
|
132217
|
+
return Number.isFinite(parsed) ? clampPersistentSidebarWidth(parsed) : void 0;
|
|
132218
|
+
} catch {
|
|
132219
|
+
return;
|
|
132220
|
+
}
|
|
132221
|
+
}
|
|
132222
|
+
function writePersistentSidebarWidth(width, storage = browserPersistentSidebarStorage()) {
|
|
132223
|
+
if (storage === void 0) return;
|
|
132224
|
+
try {
|
|
132225
|
+
storage.setItem(ARKME_PERSISTENT_SIDEBAR_WIDTH_STORAGE_KEY, String(clampPersistentSidebarWidth(width)));
|
|
132226
|
+
} catch {}
|
|
132227
|
+
}
|
|
132228
|
+
function resolvePersistentSidebarWidth(collapsed, hostWidth, preferredWidth, compactWidthOverride) {
|
|
132229
|
+
if (collapsed) return compactWidthOverride === void 0 ? ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH : clampPersistentSidebarWidth(compactWidthOverride);
|
|
132230
|
+
return preferredWidth === void 0 ? clampPersistentSidebarWidth(hostWidth) : clampPersistentSidebarWidth(preferredWidth);
|
|
132231
|
+
}
|
|
130591
132232
|
/** Permanent browser-side lifecycles that used to be owned by the optional DSH footer entry. */
|
|
130592
132233
|
function ArkmePersistentClientRuntime() {
|
|
130593
132234
|
const ui = (0, react.useSyncExternalStore)(arkmeUi.subscribe, arkmeUi.getViewSnapshot, arkmeUi.getViewSnapshot);
|
|
@@ -130612,7 +132253,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130612
132253
|
return !desktopStartupGate && auth?.status === "authenticated" && mode === "login";
|
|
130613
132254
|
}
|
|
130614
132255
|
/** Arkme permanently owns the DSH sidebar seat so navigation stays stable across Arkme and Harness conversations. */
|
|
130615
|
-
function ArkmePersistentSidebar({ collapsed, width, useSessions, renderSlot,
|
|
132256
|
+
function ArkmePersistentSidebar({ collapsed, width, useSessions, renderSlot, closeDetails, searchDshMessages = async () => ({
|
|
130616
132257
|
items: [],
|
|
130617
132258
|
hasMore: false
|
|
130618
132259
|
}), openDshSession = () => void 0 }) {
|
|
@@ -130640,11 +132281,13 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130640
132281
|
};
|
|
130641
132282
|
const [sendToSelfState, setSendToSelfState] = (0, react.useState)();
|
|
130642
132283
|
const directoryVisible = !loginMode && ui.calendarOpen !== true && (ui.mode === "source" || ui.mode === "bot" || ui.mode === "arko" || harnessMode);
|
|
130643
|
-
const [
|
|
132284
|
+
const [preferredSidebarWidth, setPreferredSidebarWidth] = (0, react.useState)(() => readPersistentSidebarWidth());
|
|
132285
|
+
const [compactSidebarWidthOverride, setCompactSidebarWidthOverride] = (0, react.useState)();
|
|
130644
132286
|
const sidebarResizeRef = (0, react.useRef)();
|
|
130645
132287
|
const [sidebarResizing, setSidebarResizing] = (0, react.useState)(false);
|
|
130646
|
-
const renderedSidebarWidth =
|
|
130647
|
-
const
|
|
132288
|
+
const renderedSidebarWidth = resolvePersistentSidebarWidth(collapsed, clampPersistentSidebarWidth(width + ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH), preferredSidebarWidth, compactSidebarWidthOverride);
|
|
132289
|
+
const renderedDirectoryWidth = renderedSidebarWidth - ARKME_PERSISTENT_SIDEBAR_CHROME_WIDTH;
|
|
132290
|
+
const avatarOnly = !contactsMode && renderedDirectoryWidth <= ARKME_PERSISTENT_DIRECTORY_AVATAR_ONLY_WIDTH;
|
|
130648
132291
|
(0, react.useEffect)(() => {
|
|
130649
132292
|
if (authenticatedUserId === void 0) {
|
|
130650
132293
|
setSendToSelfState(void 0);
|
|
@@ -130681,12 +132324,10 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130681
132324
|
}, [searchDshMessages, sessionState.byId]);
|
|
130682
132325
|
(0, react.useLayoutEffect)(() => {
|
|
130683
132326
|
closeDetails();
|
|
130684
|
-
|
|
130685
|
-
|
|
130686
|
-
|
|
130687
|
-
|
|
130688
|
-
collapsed
|
|
130689
|
-
]);
|
|
132327
|
+
}, [closeDetails]);
|
|
132328
|
+
(0, react.useEffect)(() => {
|
|
132329
|
+
if (!collapsed) setCompactSidebarWidthOverride(void 0);
|
|
132330
|
+
}, [collapsed]);
|
|
130690
132331
|
(0, react.useLayoutEffect)(() => {
|
|
130691
132332
|
arkmeContactsTab.activateAccount(contactsAccountKey);
|
|
130692
132333
|
}, [contactsAccountKey]);
|
|
@@ -130710,43 +132351,112 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130710
132351
|
sidebarResizeRef.current = {
|
|
130711
132352
|
pointerId: event.pointerId,
|
|
130712
132353
|
startX: event.clientX,
|
|
130713
|
-
startWidth: renderedSidebarWidth
|
|
132354
|
+
startWidth: renderedSidebarWidth,
|
|
132355
|
+
compact: collapsed,
|
|
132356
|
+
lastWidth: renderedSidebarWidth
|
|
130714
132357
|
};
|
|
130715
132358
|
setSidebarResizing(true);
|
|
130716
|
-
}, [renderedSidebarWidth]);
|
|
132359
|
+
}, [collapsed, renderedSidebarWidth]);
|
|
130717
132360
|
const continueSidebarResize = (0, react.useCallback)((event) => {
|
|
130718
132361
|
const resize = sidebarResizeRef.current;
|
|
130719
132362
|
if (resize === void 0 || resize.pointerId !== event.pointerId) return;
|
|
130720
|
-
|
|
132363
|
+
const nextWidth = clampPersistentSidebarWidth(resize.startWidth + event.clientX - resize.startX);
|
|
132364
|
+
resize.lastWidth = nextWidth;
|
|
132365
|
+
if (resize.compact) setCompactSidebarWidthOverride(nextWidth);
|
|
132366
|
+
else setPreferredSidebarWidth(nextWidth);
|
|
130721
132367
|
}, []);
|
|
130722
132368
|
const stopSidebarResize = (0, react.useCallback)((element, pointerId) => {
|
|
132369
|
+
const resize = sidebarResizeRef.current;
|
|
130723
132370
|
if (pointerId !== void 0 && element?.hasPointerCapture(pointerId)) element.releasePointerCapture(pointerId);
|
|
132371
|
+
if (resize !== void 0 && !resize.compact) writePersistentSidebarWidth(resize.lastWidth);
|
|
130724
132372
|
sidebarResizeRef.current = void 0;
|
|
130725
132373
|
setSidebarResizing(false);
|
|
130726
132374
|
}, []);
|
|
132375
|
+
const resizeSidebarFromKeyboard = (0, react.useCallback)((event) => {
|
|
132376
|
+
let nextWidth;
|
|
132377
|
+
if (event.key === "Home") nextWidth = ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH;
|
|
132378
|
+
else if (event.key === "End") nextWidth = ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH;
|
|
132379
|
+
else if (event.key === "ArrowLeft") nextWidth = renderedSidebarWidth - 16;
|
|
132380
|
+
else if (event.key === "ArrowRight") nextWidth = renderedSidebarWidth + 16;
|
|
132381
|
+
if (nextWidth === void 0) return;
|
|
132382
|
+
event.preventDefault();
|
|
132383
|
+
const clamped = clampPersistentSidebarWidth(nextWidth);
|
|
132384
|
+
if (collapsed) setCompactSidebarWidthOverride(clamped);
|
|
132385
|
+
else {
|
|
132386
|
+
setPreferredSidebarWidth(clamped);
|
|
132387
|
+
writePersistentSidebarWidth(clamped);
|
|
132388
|
+
}
|
|
132389
|
+
}, [collapsed, renderedSidebarWidth]);
|
|
132390
|
+
const sidebarSizingStyle = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("style", {
|
|
132391
|
+
"data-arkme-owned": "persistent-sidebar-resize-handle-style",
|
|
132392
|
+
children: `
|
|
132393
|
+
:root { --arkme-persistent-sidebar-width: ${String(renderedSidebarWidth)}px; }
|
|
132394
|
+
:root:has([data-arkme-owned="persistent-sidebar"]) [data-side="sidebar"] {
|
|
132395
|
+
left: ${String(renderedSidebarWidth)}px !important;
|
|
132396
|
+
pointer-events: none;
|
|
132397
|
+
}
|
|
132398
|
+
:root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-slot="root"] > div,
|
|
132399
|
+
:root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-side="sidebar"] {
|
|
132400
|
+
transition: none !important;
|
|
132401
|
+
}
|
|
132402
|
+
`
|
|
132403
|
+
});
|
|
132404
|
+
const sidebarResizeHandle = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
132405
|
+
"data-arkme-owned": "persistent-sidebar-resize-handle",
|
|
132406
|
+
role: "separator",
|
|
132407
|
+
"aria-label": "调整对话列表宽度",
|
|
132408
|
+
"aria-orientation": "vertical",
|
|
132409
|
+
"aria-valuemin": ARKME_PERSISTENT_DIRECTORY_MIN_WIDTH,
|
|
132410
|
+
"aria-valuemax": ARKME_PERSISTENT_DIRECTORY_MAX_WIDTH,
|
|
132411
|
+
"aria-valuenow": renderedDirectoryWidth,
|
|
132412
|
+
tabIndex: 0,
|
|
132413
|
+
style: styles$3.sidebarResizeHandle,
|
|
132414
|
+
onPointerDown: beginSidebarResize,
|
|
132415
|
+
onPointerMove: continueSidebarResize,
|
|
132416
|
+
onPointerUp: (event) => {
|
|
132417
|
+
stopSidebarResize(event.currentTarget, event.pointerId);
|
|
132418
|
+
},
|
|
132419
|
+
onPointerCancel: (event) => {
|
|
132420
|
+
stopSidebarResize(event.currentTarget, event.pointerId);
|
|
132421
|
+
},
|
|
132422
|
+
onLostPointerCapture: () => {
|
|
132423
|
+
stopSidebarResize();
|
|
132424
|
+
},
|
|
132425
|
+
onKeyDown: resizeSidebarFromKeyboard
|
|
132426
|
+
});
|
|
130727
132427
|
if (loginMode) return webLockedMode ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("aside", {
|
|
130728
132428
|
"data-arkme-owned": "persistent-sidebar",
|
|
130729
132429
|
"data-arkme-workspace": true,
|
|
130730
132430
|
"data-arkme-login-mode": "true",
|
|
130731
132431
|
"data-arkme-web-locked": true,
|
|
130732
132432
|
"data-arkme-directory-visible": "true",
|
|
132433
|
+
"data-arkme-sidebar-collapsed": collapsed ? "true" : "false",
|
|
132434
|
+
"data-arkme-sidebar-resizing": sidebarResizing ? "true" : "false",
|
|
132435
|
+
"data-arkme-sidebar-width": renderedSidebarWidth,
|
|
132436
|
+
"data-arkme-directory-width": renderedDirectoryWidth,
|
|
130733
132437
|
style: styles$3.sidebar,
|
|
130734
132438
|
"aria-label": "Arkme 受限工作区导航",
|
|
130735
|
-
children: [
|
|
130736
|
-
|
|
130737
|
-
|
|
130738
|
-
|
|
130739
|
-
|
|
130740
|
-
|
|
130741
|
-
|
|
130742
|
-
|
|
130743
|
-
|
|
130744
|
-
|
|
130745
|
-
|
|
130746
|
-
|
|
130747
|
-
|
|
130748
|
-
|
|
130749
|
-
|
|
132439
|
+
children: [
|
|
132440
|
+
sidebarSizingStyle,
|
|
132441
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeProductNavigation, {
|
|
132442
|
+
compact: false,
|
|
132443
|
+
hosted: true,
|
|
132444
|
+
taskExpanded: true,
|
|
132445
|
+
locked: true
|
|
132446
|
+
}),
|
|
132447
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
132448
|
+
style: styles$3.taskDirectory,
|
|
132449
|
+
"data-arkme-directory-mode": "web-locked",
|
|
132450
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeNavigation, {
|
|
132451
|
+
wide: true,
|
|
132452
|
+
avatarOnly,
|
|
132453
|
+
embeddedProductShell: true,
|
|
132454
|
+
showHarnessEntry: true,
|
|
132455
|
+
lockedDirectory: true
|
|
132456
|
+
})
|
|
132457
|
+
}),
|
|
132458
|
+
sidebarResizeHandle
|
|
132459
|
+
]
|
|
130750
132460
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("aside", {
|
|
130751
132461
|
"data-arkme-owned": "persistent-sidebar",
|
|
130752
132462
|
"data-arkme-login-mode": "true",
|
|
@@ -130764,30 +132474,18 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130764
132474
|
"data-arkme-harness-mode": harnessMode ? "true" : "false",
|
|
130765
132475
|
"data-arkme-directory-visible": directoryVisible ? "true" : "false",
|
|
130766
132476
|
"data-arkme-sidebar-resizing": sidebarResizing ? "true" : "false",
|
|
132477
|
+
"data-arkme-sidebar-width": renderedSidebarWidth,
|
|
132478
|
+
"data-arkme-directory-width": renderedDirectoryWidth,
|
|
130767
132479
|
"data-arkme-login-mode": "false",
|
|
130768
132480
|
...contactsMode ? { "data-arkme-contacts-mobile-view": scopedContacts.selection.kind !== "none" ? "content" : "directory" } : {},
|
|
130769
132481
|
style: styles$3.sidebar,
|
|
130770
132482
|
"aria-label": "Arkme 功能导航栏",
|
|
130771
132483
|
children: [
|
|
130772
|
-
|
|
130773
|
-
"data-arkme-owned": "persistent-sidebar-resize-handle-style",
|
|
130774
|
-
children: `
|
|
130775
|
-
:root { --arkme-persistent-sidebar-width: ${String(renderedSidebarWidth)}px; }
|
|
130776
|
-
:root:has([data-arkme-owned="persistent-sidebar"]) [data-side="sidebar"] {
|
|
130777
|
-
left: ${String(renderedSidebarWidth)}px !important;
|
|
130778
|
-
pointer-events: none;
|
|
130779
|
-
}
|
|
130780
|
-
:root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-slot="root"] > div,
|
|
130781
|
-
:root:has([data-arkme-owned="persistent-sidebar"][data-arkme-sidebar-resizing="true"]) [data-side="sidebar"] {
|
|
130782
|
-
transition: none !important;
|
|
130783
|
-
}
|
|
130784
|
-
`
|
|
130785
|
-
}),
|
|
132484
|
+
directoryVisible && (!contactsMode || !collapsed) && sidebarSizingStyle,
|
|
130786
132485
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArkmeProductNavigation, {
|
|
130787
132486
|
compact: false,
|
|
130788
132487
|
hosted: true,
|
|
130789
132488
|
taskExpanded: true,
|
|
130790
|
-
hidden: avatarOnly,
|
|
130791
132489
|
currentSessionId: sessionState.current
|
|
130792
132490
|
}),
|
|
130793
132491
|
directoryVisible && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
@@ -130849,27 +132547,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
130849
132547
|
...sendToSelfSource === void 0 ? {} : { sendToSelfSource }
|
|
130850
132548
|
})
|
|
130851
132549
|
}),
|
|
130852
|
-
|
|
130853
|
-
"data-arkme-owned": "persistent-sidebar-resize-handle",
|
|
130854
|
-
role: "separator",
|
|
130855
|
-
"aria-label": "调整对话列表宽度",
|
|
130856
|
-
"aria-orientation": "vertical",
|
|
130857
|
-
"aria-valuemin": ARKME_PERSISTENT_SIDEBAR_MIN_WIDTH,
|
|
130858
|
-
"aria-valuemax": ARKME_PERSISTENT_SIDEBAR_MAX_WIDTH,
|
|
130859
|
-
"aria-valuenow": renderedSidebarWidth,
|
|
130860
|
-
style: styles$3.sidebarResizeHandle,
|
|
130861
|
-
onPointerDown: beginSidebarResize,
|
|
130862
|
-
onPointerMove: continueSidebarResize,
|
|
130863
|
-
onPointerUp: (event) => {
|
|
130864
|
-
stopSidebarResize(event.currentTarget, event.pointerId);
|
|
130865
|
-
},
|
|
130866
|
-
onPointerCancel: (event) => {
|
|
130867
|
-
stopSidebarResize(event.currentTarget, event.pointerId);
|
|
130868
|
-
},
|
|
130869
|
-
onLostPointerCapture: () => {
|
|
130870
|
-
stopSidebarResize();
|
|
130871
|
-
}
|
|
130872
|
-
})
|
|
132550
|
+
directoryVisible && !contactsMode && sidebarResizeHandle
|
|
130873
132551
|
]
|
|
130874
132552
|
});
|
|
130875
132553
|
}
|
|
@@ -131027,7 +132705,7 @@ yoga yokohama you youtube yt yun za zappos zara zero zip zm zone zuerich zw
|
|
|
131027
132705
|
}
|
|
131028
132706
|
//#endregion
|
|
131029
132707
|
//#region src/client/redesign/arkme-redesign.css?inline
|
|
131030
|
-
var arkme_redesign_default = "[data-arkme-workspace] {\n --arkme-line: #e7e7e9;\n --arkme-muted: #8e9199;\n --arkme-soft: #f6f6f7;\n --arkme-focus: #cbd5ff;\n color: #171923;\n font-synthesis: none;\n font-family: SF Pro Text, SF Pro Display, -apple-system, BlinkMacSystemFont, PingFang SC, Helvetica Neue, Microsoft YaHei, sans-serif;\n}\n\n[data-arkme-workspace], [data-arkme-workspace] * {\n box-sizing: border-box;\n}\n\n[data-arkme-workspace] button, [data-arkme-workspace] input, [data-arkme-workspace] textarea {\n font: inherit;\n}\n\n[data-arkme-workspace] button {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n}\n\n[data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: none !important;\n}\n\n.arkme-redesign-root {\n --arkme-native-titlebar: 0px;\n background: #fff;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n position: relative;\n overflow: hidden;\n}\n\n.arkme-native-desktop .arkme-redesign-root {\n --arkme-native-titlebar: 50px;\n}\n\n.arkme-native-desktop .arkme-redesign-root:before {\n content: \"\";\n z-index: 30;\n pointer-events: none;\n background: #e8e8ea;\n height: 1px;\n position: absolute;\n top: 49px;\n left: 0;\n right: 0;\n}\n\n.arkme-native-desktop [data-arkme-owned=\"persistent-sidebar\"] > [data-arkme-owned=\"product-navigation\"] {\n padding-top: 28px !important;\n}\n\n.arkme-redesign-rail {\n z-index: 8;\n top: calc(26px + var(--arkme-native-titlebar));\n background: #fbfbfc;\n border: 1px solid #e4e4e7;\n border-radius: 22px;\n flex-direction: column;\n width: 72px;\n padding: 10px 8px;\n display: flex;\n position: absolute;\n bottom: 22px;\n left: 24px;\n box-shadow: 0 16px 38px #1e20260e;\n}\n\n.arkme-redesign-rail-primary {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.arkme-redesign-rail-primary button {\n color: #3e4149;\n border-radius: 15px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n min-height: 57px;\n transition: background .18s, color .18s;\n display: flex;\n position: relative;\n}\n\n.arkme-redesign-rail-primary button span {\n letter-spacing: .01em;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-rail-primary button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-rail-primary button.is-active {\n color: #151722;\n background: #f1f2f6;\n}\n\n.arkme-redesign-rail-primary button.is-active:before {\n content: \"\";\n background: #9eadff;\n border-radius: 3px;\n width: 3px;\n height: 33px;\n position: absolute;\n left: -9px;\n}\n\n.arkme-redesign-rail-footer {\n border-top: 0 solid #ededee;\n justify-items: center;\n gap: 7px;\n margin-top: auto;\n padding-top: 0;\n display: grid;\n position: relative;\n}\n\n.arkme-redesign-rail-footer:has( > .arkme-update-rail-slot) {\n border-top-width: 1px;\n padding-top: 10px;\n}\n\n.arkme-redesign-rail-footer > button {\n color: #4b4f58;\n border-radius: 14px;\n place-items: center;\n width: 46px;\n height: 46px;\n display: grid;\n}\n\n.arkme-redesign-rail-footer > button:hover, .arkme-redesign-rail-footer > button.is-active {\n background: #f1f2f5;\n}\n\n.arkme-redesign-rail-footer:empty {\n display: none;\n}\n\n.arkme-update-rail-slot {\n width: 52px;\n height: 30px;\n position: relative;\n}\n\nbutton.arkme-update-rail {\n color: #53648e;\n cursor: pointer;\n width: 52px;\n min-height: 28px;\n font: inherit;\n background: #f1f3fa;\n border: 0;\n border-radius: 999px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n padding: 0 7px;\n transition: transform .16s, background .16s, color .16s, box-shadow .16s;\n display: flex;\n box-shadow: inset 0 0 0 1px #5b70ab17;\n}\n\nbutton.arkme-update-rail:hover, button.arkme-update-rail.is-active {\n transform: translateY(-1px);\n color: #34476f !important;\n background: #e9edf8 !important;\n}\n\nbutton.arkme-update-rail.is-available {\n color: #fff !important;\n background: #f0524f !important;\n box-shadow: 0 5px 12px #e03c3933, inset 0 0 0 1px #b2232014 !important;\n}\n\nbutton.arkme-update-rail.is-available:hover, button.arkme-update-rail.is-available.is-active {\n color: #fff !important;\n background: #df4542 !important;\n box-shadow: 0 7px 16px #d736333d, inset 0 0 0 1px #961a181a !important;\n}\n\nbutton.arkme-update-rail.is-error {\n color: #b54841 !important;\n background: #fff0ee !important;\n}\n\n.arkme-update-rail span {\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n font-size: 9px;\n font-weight: 550;\n line-height: 1;\n}\n\n.arkme-update-rail svg {\n flex: none;\n}\n\n.arkme-update-rail.is-ready {\n gap: 3px;\n padding: 0 4px;\n}\n\n.arkme-update-rail.is-ready svg {\n width: 13px;\n height: 13px;\n}\n\n.arkme-update-rail.is-downloading svg {\n animation: 1.6s linear infinite arkme-update-spin;\n}\n\n.arkme-update-popover {\n z-index: 100000;\n overflow-wrap: anywhere;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.12);\n background: #fffffff7;\n border: 1px solid #cfd1d7e6;\n border-radius: 20px;\n width: 356px;\n max-width: calc(100vw - 16px);\n max-height: calc(100vh - 16px);\n padding: 18px;\n animation: .2s cubic-bezier(.2, .8, .2, 1) arkme-update-popover-in;\n position: fixed;\n bottom: 14px;\n left: 68px;\n overflow-y: auto;\n box-shadow: 0 24px 58px #1b1e2629, 0 3px 10px #1b1e260e;\n}\n\n.arkme-update-popover-heading {\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 12px;\n display: grid;\n}\n\n.arkme-update-popover-heading > div {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading span {\n color: #92959d;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-update-popover-heading h2 {\n color: #242731;\n letter-spacing: -.025em;\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n}\n\n.arkme-update-popover-heading > button {\n color: #93969e;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading > button:hover {\n color: #3d414a;\n background: #f1f2f4;\n}\n\n.arkme-update-popover-summary {\n color: #7d818a;\n margin: 13px 0 0;\n font-size: 11px;\n line-height: 1.55;\n}\n\n.arkme-update-release-notes {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n margin-top: 14px;\n padding: 5px 0;\n}\n\n.arkme-update-release-notes > div {\n grid-template-columns: 28px minmax(0, 1fr);\n align-items: center;\n gap: 10px;\n min-height: 51px;\n display: grid;\n}\n\n.arkme-update-release-notes > div + div {\n border-top: 1px solid #f0f0f2;\n}\n\n.arkme-update-release-notes > div > span {\n color: #a3a6ad;\n font-variant-numeric: tabular-nums;\n font-size: 9px;\n}\n\n.arkme-update-release-notes p {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-update-release-notes strong {\n color: #3b3f48;\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-update-release-notes small {\n color: #92959d;\n font-size: 10px;\n line-height: 1.45;\n}\n\n.arkme-update-message {\n color: #747983;\n margin: 12px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-update-message.is-error {\n color: #b54841;\n}\n\n.arkme-update-popover-actions {\n grid-template-columns: 1fr 1.45fr;\n gap: 9px;\n margin-top: 16px;\n display: grid;\n}\n\n.arkme-update-popover-actions button {\n cursor: pointer;\n height: 42px;\n font: inherit;\n border-radius: 12px;\n padding: 0;\n font-size: 12px;\n font-weight: 500;\n transition: transform .16s, background .16s, box-shadow .16s;\n border: 0 !important;\n}\n\n.arkme-update-popover-actions button:hover {\n transform: translateY(-1px);\n}\n\n.arkme-update-popover-actions .arkme-update-later {\n color: #666a73 !important;\n background: #f2f2f4 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-later:hover {\n background: #ececef !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now {\n color: #fff !important;\n background: #1c1f28 !important;\n box-shadow: 0 7px 18px #181b2324 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now:hover {\n background: #11131b !important;\n box-shadow: 0 9px 22px #181b232e !important;\n}\n\n.arkme-update-now:disabled {\n opacity: .46;\n cursor: default;\n transform: none;\n}\n\n.arkme-update-capsule {\n z-index: 10030;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.2);\n background: #ffffffed;\n border: 1px solid #cdd0d8d6;\n border-radius: 18px;\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 10px;\n width: 326px;\n max-width: calc(100vw - 16px);\n min-height: 52px;\n padding: 9px 9px 9px 14px;\n animation: .22s cubic-bezier(.2, .8, .2, 1) arkme-update-capsule-in;\n display: grid;\n position: fixed;\n top: 18px;\n left: 50%;\n transform: translateX(-50%);\n box-shadow: 0 16px 40px #1c1f2724, 0 2px 8px #1c1f270f;\n}\n\n.arkme-native-desktop .arkme-update-capsule {\n top: 62px;\n}\n\n.arkme-update-capsule-copy {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-capsule-copy strong {\n color: #333741;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-update-capsule-copy small {\n color: #93969e;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-update-progress {\n background: #eceef3;\n border-radius: 999px;\n height: 4px;\n overflow: hidden;\n}\n\n.arkme-update-progress span {\n border-radius: inherit;\n background: #6779b5;\n height: 100%;\n transition: width .65s cubic-bezier(.2, .7, .25, 1);\n display: block;\n}\n\n.arkme-update-progress.is-indeterminate span {\n width: 34%;\n animation: 1.25s ease-in-out infinite arkme-update-indeterminate;\n}\n\n.arkme-update-capsule > b {\n color: #656a75;\n font-variant-numeric: tabular-nums;\n text-align: right;\n font-size: 10px;\n font-weight: 500;\n}\n\n.arkme-update-capsule[data-layout=\"progress\"] {\n grid-template-columns: minmax(0, 1fr) minmax(40px, .8fr) 34px 28px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] {\n grid-template-columns: minmax(0, 1fr) auto 28px;\n width: 306px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] .arkme-update-capsule-copy small {\n -webkit-line-clamp: 3;\n white-space: normal;\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n font-size: 11px;\n line-height: 1.45;\n display: -webkit-box;\n}\n\n.arkme-update-capsule[data-layout=\"restarting\"] {\n grid-template-columns: minmax(0, 1fr);\n width: 218px;\n padding-right: 14px;\n}\n\n.arkme-update-capsule.is-restarting .arkme-update-capsule-copy {\n text-align: center;\n justify-self: center;\n}\n\n.arkme-update-ready-action {\n color: #fff;\n cursor: pointer;\n width: auto;\n height: 32px;\n font: inherit;\n white-space: nowrap;\n background: #242731;\n border: 0;\n border-radius: 10px;\n padding: 0 11px;\n font-size: 10px;\n font-weight: 550;\n}\n\n.arkme-update-ready-action:hover {\n background: #151821;\n}\n\n.arkme-update-ready-action:disabled {\n opacity: .65;\n cursor: wait;\n}\n\n.arkme-update-ready-action:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #6779b5;\n}\n\n.arkme-update-capsule-close {\n color: #8a8e97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-capsule-close:hover {\n color: #343841;\n background: #f0f1f3;\n}\n\n@keyframes arkme-update-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes arkme-update-popover-in {\n from {\n opacity: 0;\n transform: translate(-8px, 3px) scale(.985);\n }\n}\n\n@keyframes arkme-update-capsule-in {\n from {\n opacity: 0;\n transform: translate(-50%, -8px) scale(.98);\n }\n}\n\n@keyframes arkme-update-indeterminate {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(300%);\n }\n}\n\n.arkme-redesign-profile {\n position: relative;\n}\n\n.arkme-redesign-profile > span {\n width: 32px !important;\n height: 32px !important;\n}\n\n.arkme-redesign-profile-popover {\n z-index: 10000;\n backdrop-filter: blur(20px);\n background: #fffffff5;\n border: 1px solid #d8d9dde6;\n border-radius: 18px;\n width: 264px;\n padding: 10px;\n position: fixed;\n bottom: 14px;\n left: 64px;\n box-shadow: 0 20px 50px #1a1c2326, 0 2px 8px #1a1c230d;\n}\n\n.arkme-redesign-profile-head {\n align-items: center;\n gap: 11px;\n padding: 9px 9px 13px;\n display: flex;\n}\n\n.arkme-redesign-profile-head > span {\n text-align: left;\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-head strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-head small {\n color: #8b8f98;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-profile-menu {\n border-top: 1px solid #eeeeef;\n gap: 2px;\n padding-top: 6px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button {\n width: 100%;\n min-height: 50px;\n box-shadow: none;\n color: #393d46;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 11px;\n outline: 0;\n grid-template-columns: 28px minmax(0, 1fr) 16px;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-profile-menu button > span {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-menu strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-profile-menu small {\n color: #92969f;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-menu button > svg:last-child {\n color: #a0a3aa;\n}\n\n.arkme-redesign-native-settings-trigger {\n clip-path: inset(50%);\n width: 1px;\n height: 1px;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-panel {\n inset: var(--arkme-native-titlebar) auto 0 96px;\n z-index: 3;\n border-right: 1px solid var(--arkme-line);\n background: #fff;\n flex-direction: column;\n width: 300px;\n min-width: 0;\n padding: 0;\n display: flex;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-search {\n text-align: left;\n border-radius: 11px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 40px;\n margin: 20px 0 10px;\n padding: 0 12px;\n display: flex;\n color: #9699a1 !important;\n border: 1px solid #e1e2e5 !important;\n font-size: 11px !important;\n}\n\n.arkme-redesign-chat-search:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-chat-directory {\n flex: 1;\n min-height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-directory > section {\n background: none !important;\n}\n\n.arkme-redesign-task-section {\n z-index: 3;\n border-bottom: 1px solid #ececef;\n outline: none;\n height: 158px;\n margin: 0 6px 12px;\n position: relative;\n}\n\n.arkme-redesign-task-section-title {\n color: #767b85;\n justify-content: space-between;\n align-items: center;\n height: 28px;\n padding: 0 7px;\n display: flex;\n}\n\n.arkme-redesign-task-section-title strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-task-section-title button {\n border-radius: 7px;\n place-items: center;\n width: 24px;\n height: 24px;\n display: grid;\n}\n\n.arkme-redesign-task-section-title button:hover {\n background: #f3f3f5;\n}\n\n.arkme-redesign-task-list {\n overscroll-behavior: contain;\n scrollbar-gutter: stable;\n background: #fff;\n max-height: 128px;\n padding-bottom: 2px;\n transition: max-height .18s, box-shadow .18s, padding .18s;\n display: grid;\n position: absolute;\n top: 28px;\n left: 0;\n right: 0;\n overflow: hidden auto;\n}\n\n.arkme-redesign-task-section:hover .arkme-redesign-task-list, .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n max-height: min(360px, 100vh - 180px);\n padding-bottom: 6px;\n box-shadow: 0 14px 22px #1b1e2512;\n}\n\n.arkme-redesign-task-list > button {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n gap: 4px;\n width: 100%;\n min-width: 0;\n height: 32px;\n padding: 0 8px;\n display: grid;\n}\n\n.arkme-redesign-task-list > button:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-task-list > button.is-selected {\n color: #232630;\n background: #f0f1f4;\n}\n\n.arkme-redesign-task-state {\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 20px;\n display: inline-flex;\n}\n\n.arkme-redesign-task-state.is-complete > i {\n background: #39a56b1a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n display: block;\n position: relative;\n}\n\n.arkme-redesign-task-state.is-complete > i:after {\n content: \"\";\n background: #39a56b;\n border-radius: 50%;\n position: absolute;\n inset: 2px;\n}\n\n.arkme-redesign-task-matrix {\n grid-template-columns: repeat(3, 2px);\n grid-auto-rows: 2px;\n gap: 1px;\n width: 10px;\n height: 10px;\n display: grid;\n}\n\n.arkme-redesign-task-matrix i {\n opacity: .15;\n background: #5d76e8;\n border-radius: 1px;\n animation: 1s infinite arkme-task-dot-chase;\n}\n\n.arkme-redesign-task-matrix i:nth-child(2) {\n animation-delay: .125s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(3) {\n animation-delay: .25s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(4) {\n animation-delay: .375s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(5) {\n animation-delay: .5s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(6) {\n animation-delay: .625s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(7) {\n animation-delay: .75s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(8) {\n animation-delay: .875s;\n}\n\n@keyframes arkme-task-dot-chase {\n 0%, 12.4% {\n opacity: 1;\n }\n\n 12.5%, 24.9% {\n opacity: .6;\n }\n\n 25%, 37.4% {\n opacity: .35;\n }\n\n 37.5%, 100% {\n opacity: .15;\n }\n}\n\n.arkme-redesign-task-copy {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-redesign-task-copy strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-task-copy small {\n color: #9a9da5;\n flex: none;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-redesign-task-first {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 12px);\n height: 32px;\n margin: 0 6px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.arkme-redesign-task-first:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-content {\n inset: var(--arkme-native-titlebar) 0 0 96px;\n background: #fff;\n min-width: 0;\n min-height: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-content.has-panel {\n left: 396px;\n}\n\n.arkme-redesign-content.has-details {\n right: 360px;\n}\n\n.arkme-redesign-content.is-login-takeover {\n left: 0;\n right: 0;\n}\n\n.arkme-redesign-route-surface {\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-surface {\n background: #fff !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header {\n border-bottom: 1px solid #ececef !important;\n height: 68px !important;\n padding: 12px 16px 12px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header h2 {\n font-size: 15px !important;\n font-weight: 600 !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-body {\n padding: 22px 22px 12px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-records {\n gap: 0 !important;\n width: 100% !important;\n}\n\n.arkme-conversation-records-reveal {\n animation: .12s ease-out both arkme-conversation-records-reveal;\n}\n\n@keyframes arkme-conversation-records-reveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-conversation-records-reveal {\n animation: none;\n }\n}\n\n.arkme-redesign-route-chats [data-arkme-content-presentation=\"bubble\"] p {\n font-size: 14px;\n line-height: 1.62;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer {\n padding: 0 24px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner {\n background: #fff !important;\n border: 1px solid #dfe1e6 !important;\n border-radius: 15px !important;\n gap: 8px !important;\n width: 100% !important;\n padding: 12px 13px 9px !important;\n box-shadow: 0 8px 30px #1c1f270b !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer textarea {\n min-height: 38px !important;\n padding: 0 !important;\n font-size: 14px !important;\n line-height: 22px !important;\n}\n\n.arkme-redesign-task-conversation {\n font-size: 15px;\n}\n\n.arkme-redesign-task-conversation [data-phase] {\n --dsh-chat-content-width: calc(100% - 64px);\n --dsh-composer-card-max-width: calc(100% - 32px);\n}\n\n.arkme-redesign-task-conversation [data-chat-flow] {\n width: calc(100% - 64px) !important;\n max-width: none !important;\n margin-left: 32px !important;\n margin-right: 32px !important;\n}\n\n.arkme-redesign-task-conversation textarea {\n font-size: 14px !important;\n}\n\n@media (width >= 1100px) {\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-directory-visible=\"true\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-directory-visible=\"false\"]) {\n grid-template-columns: 72px minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"true\"]:not([data-arkme-web-locked])) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n}\n\n[data-arkme-avatar-only=\"true\"] > :not([role=\"tree\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] {\n padding: 8px 6px 18px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button {\n justify-content: center !important;\n gap: 0 !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > :not(:first-child) {\n display: none !important;\n}\n\n.arkme-redesign-feature-page {\n background: #fff;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n padding: 30px 48px 36px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-feature-page > header {\n flex: none;\n margin: 0 0 22px;\n}\n\n.arkme-redesign-feature-page > header p {\n color: #8d9098;\n margin: 0 0 8px;\n font-size: 11px;\n}\n\n.arkme-redesign-feature-page > header h1 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 27px;\n font-weight: 600;\n}\n\n.arkme-redesign-feature-page > header span {\n color: #858992;\n margin-top: 10px;\n font-size: 12px;\n display: block;\n}\n\n.arkme-redesign-feature-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-recordings-page {\n background: #fff;\n padding: 0;\n}\n\n.arkme-redesign-recordings-page > div {\n height: 100% !important;\n}\n\n.arkme-redesign-search-page {\n padding: 66px 0 40px;\n}\n\n.arkme-redesign-search-page > header, .arkme-redesign-search-page > .arkme-redesign-feature-body {\n width: min(980px, 100% - 80px);\n margin-left: auto;\n margin-right: auto;\n}\n\n.arkme-redesign-search-page > header {\n margin-bottom: 28px;\n}\n\n.arkme-redesign-search-page > header h1 {\n font-size: 32px;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body {\n overflow-y: auto;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div {\n width: 100% !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div > header {\n display: none !important;\n}\n\n.arkme-redesign-search-page .arkme-search-box {\n box-shadow: 0 8px 28px #1c1f2709;\n color: #646872 !important;\n background: #fff !important;\n border: 1px solid #e1e2e5 !important;\n border-radius: 15px !important;\n gap: 12px !important;\n height: 68px !important;\n padding: 0 20px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"] {\n font-size: 14px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder {\n color: #92959d;\n}\n\n.arkme-redesign-search-page .arkme-search-history, .arkme-redesign-search-page .arkme-search-quick {\n margin: 24px 0 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history > div, .arkme-redesign-search-page .arkme-search-quick > div {\n gap: 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button, .arkme-redesign-search-page .arkme-search-quick button {\n text-align: left;\n overflow: hidden;\n color: #30333b !important;\n border: 0 !important;\n border-bottom: 1px solid #e6e7e9 !important;\n border-radius: 0 !important;\n justify-content: space-between !important;\n align-items: center !important;\n gap: 14px !important;\n width: 100% !important;\n height: 52px !important;\n padding: 0 6px !important;\n font-size: 12px !important;\n display: flex !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button span, .arkme-redesign-search-page .arkme-search-quick button span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.arkme-redesign-plugins-page {\n background: #fff;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: #fff !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded header {\n display: none !important;\n}\n\n.arkme-extension-toolbar {\n align-items: center;\n gap: 12px;\n height: 46px;\n display: flex;\n}\n\n.arkme-extension-toolbar label {\n color: #8e929a;\n border: 1px solid #e1e2e5;\n border-radius: 12px;\n flex: 1;\n align-items: center;\n gap: 10px;\n min-width: 0;\n height: 44px;\n padding: 0 14px;\n display: flex;\n}\n\n.arkme-extension-toolbar input {\n color: #262932;\n background: none;\n border: 0;\n outline: 0;\n flex: 1;\n min-width: 0;\n font-size: 12px;\n}\n\n.arkme-extension-toolbar > button {\n border-radius: 11px;\n height: 38px;\n padding: 0 15px;\n font-size: 11px;\n border: 1px solid #e1e2e5 !important;\n}\n\n.arkme-extension-toolbar > button:hover {\n background: #f6f6f7;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded nav {\n width: 420px;\n height: 38px !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded main {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n align-content: start;\n gap: 12px;\n padding: 16px 0 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card {\n background: #fff !important;\n border: 1px solid #e3e4e7 !important;\n border-radius: 15px !important;\n min-height: 138px !important;\n margin: 0 !important;\n padding: 18px !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card:hover {\n background: #fafafa !important;\n border-color: #d5d7dc !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-grid-span, .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"status\"], .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"alert\"] {\n grid-column: 1 / -1;\n}\n\n@keyframes arkme-icon-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkme-icon-spin {\n animation: .8s linear infinite arkme-icon-spin;\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-arkme-voice] .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-redesign-settings-surface {\n color: #20232c;\n background: none;\n width: 100%;\n height: auto;\n overflow: visible;\n}\n\n.arkme-redesign-settings-shell {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.arkme-redesign-settings-profile {\n align-items: center;\n gap: 16px;\n padding: 0 0 24px;\n display: flex;\n}\n\n.arkme-redesign-settings-profile > div:nth-child(2) {\n min-width: 0;\n}\n\n.arkme-redesign-settings-profile h1 {\n color: #20232c;\n letter-spacing: -.03em;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0 0 6px;\n font-size: 24px;\n font-weight: 600;\n line-height: 30px;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p {\n color: #858992;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 13px;\n line-height: 18px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.arkme-account-profile-qr {\n color: #858992;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin: 0;\n padding: 2px;\n display: inline-flex;\n}\n\n.arkme-account-profile-qr:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-profile-qr svg {\n width: 20px;\n height: 20px;\n display: block;\n}\n\n.arkme-redesign-settings-group {\n background: none;\n border: 0;\n border-bottom: 1px solid #e1e2e5;\n border-radius: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-group:last-child {\n border-bottom: 0;\n}\n\n.arkme-redesign-settings-group > h2 {\n color: #8a8e96;\n border-bottom: 1px solid #ededee;\n margin: 0;\n padding: 15px 1px 10px;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n}\n\n.arkme-redesign-settings-group > div {\n padding: 0;\n}\n\n.arkme-redesign-setting-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n text-decoration: none;\n display: grid;\n}\n\n.arkme-redesign-setting-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-redesign-setting-row, a.arkme-redesign-setting-row {\n cursor: pointer;\n}\n\nbutton.arkme-redesign-setting-row:hover, a.arkme-redesign-setting-row:hover {\n color: #53617d;\n}\n\n.arkme-redesign-setting-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-redesign-setting-row > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > strong.is-danger {\n color: #b54841;\n}\n\n.arkme-redesign-setting-summary {\n color: #858992;\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 360px;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-info-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: 26px minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n display: grid;\n}\n\n.arkme-account-info-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-account-info-row {\n cursor: pointer;\n}\n\n.arkme-account-info-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-account-info-icon {\n color: #6f7580;\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 26px;\n display: inline-flex;\n}\n\n.arkme-account-info-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-account-info-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-account-info-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-account-info-action {\n color: #858992;\n white-space: nowrap;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-info-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-feedback {\n color: #b54841;\n align-items: flex-start;\n gap: 6px;\n margin: 8px 0 14px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-account-dialog-backdrop {\n z-index: 50;\n background: #12141a6b;\n justify-content: center;\n align-items: center;\n padding: 18px;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.arkme-account-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n width: min(420px, 100vw - 36px);\n max-height: calc(100vh - 56px);\n overflow: auto;\n box-shadow: 0 18px 52px #11182738;\n}\n\n.arkme-account-dialog > header {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n height: 58px;\n padding: 0 16px 0 20px;\n display: flex;\n}\n\n.arkme-account-dialog h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 650;\n line-height: 24px;\n}\n\n.arkme-account-dialog > header button {\n color: #8d929b;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n width: 34px;\n height: 34px;\n}\n\n.arkme-account-qr-card {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ededee;\n border-radius: 14px;\n justify-items: center;\n gap: 7px;\n width: 270px;\n margin: 22px auto 16px;\n padding: 24px 22px 22px;\n display: grid;\n}\n\n.arkme-account-qr-card strong {\n margin-top: 4px;\n font-size: 17px;\n font-weight: 650;\n line-height: 23px;\n}\n\n.arkme-account-qr-card span, .arkme-account-qr-card small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-qr-card img {\n width: 180px;\n height: 180px;\n margin-top: 8px;\n}\n\n.arkme-account-form {\n gap: 12px;\n padding: 18px 20px 20px;\n display: grid;\n}\n\n.arkme-account-form label {\n color: #5f6570;\n gap: 7px;\n font-size: 12px;\n line-height: 18px;\n display: grid;\n}\n\n.arkme-account-form input {\n box-sizing: border-box;\n color: #20232c;\n width: 100%;\n height: 42px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n outline: none;\n padding: 0 12px;\n}\n\n.arkme-account-form input:focus {\n border-color: #9aa7c2;\n box-shadow: 0 0 0 3px #53617d1f;\n}\n\n.arkme-account-rule {\n color: #858992;\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-code-row {\n grid-template-columns: minmax(0, 1fr) 92px;\n gap: 8px;\n display: grid;\n}\n\n.arkme-account-code-row button {\n color: #343944;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n}\n\n.arkme-account-code-row button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-actions {\n justify-content: flex-end;\n gap: 10px;\n padding-top: 6px;\n display: flex;\n}\n\n.arkme-account-dialog-actions button {\n color: #343944;\n min-width: 78px;\n height: 36px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n display: inline-flex;\n}\n\n.arkme-account-dialog-actions button[type=\"submit\"], .arkme-account-dialog-actions button:last-child {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-account-dialog-actions button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-status {\n color: #13a85b;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-dialog-status.is-error {\n color: #b54841;\n}\n\n.arkme-redesign-version-row {\n grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto 18px;\n}\n\n.arkme-redesign-version-row.is-without-action {\n grid-template-columns: minmax(0, 1fr) auto 18px;\n}\n\n.arkme-redesign-version-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-version-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-value {\n color: #858992;\n white-space: nowrap;\n justify-self: end;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-version-action-slot {\n justify-content: flex-end;\n display: inline-flex;\n}\n\n.arkme-redesign-trailing-slot {\n width: 18px;\n height: 1px;\n}\n\nbutton.arkme-redesign-update-button {\n color: #343944;\n min-width: 72px;\n height: 30px;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n gap: 5px;\n padding: 0 11px;\n font-size: 11px;\n display: inline-flex;\n}\n\nbutton.arkme-redesign-update-button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\nbutton.arkme-redesign-update-button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-redesign-settings-group:has(.arkme-redesign-balance-row) {\n overflow: visible;\n}\n\n.arkme-redesign-balance-row {\n grid-template-columns: max-content max-content minmax(0, 1fr) 18px;\n column-gap: 20px;\n}\n\n.arkme-redesign-balance-row.is-without-reserved {\n grid-template-columns: max-content minmax(0, 1fr) 18px;\n}\n\n.arkme-redesign-balance-main {\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n gap: 2px;\n padding: 0;\n display: grid;\n}\n\n.arkme-redesign-balance-main > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-balance-main > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-balance-usage {\n color: #8a8e96;\n white-space: nowrap;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-redesign-reserved-balance {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-recharge-trigger {\n justify-self: end;\n}\n\n.arkme-redesign-reserved-title {\n align-items: center;\n gap: 5px;\n width: fit-content;\n display: inline-flex;\n position: relative;\n}\n\n.arkme-redesign-reserved-title > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-reserved-balance > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-reserved-help {\n box-sizing: border-box;\n color: #858992;\n cursor: help;\n border: 1px solid #a6aab2;\n border-radius: 50%;\n place-items: center;\n width: 15px;\n height: 15px;\n font-size: 10px;\n font-weight: 600;\n line-height: 1;\n display: inline-grid;\n}\n\n.arkme-redesign-reserved-help:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #7b8cad;\n}\n\n.arkme-redesign-reserved-title > [role=\"tooltip\"] {\n box-sizing: border-box;\n z-index: 20;\n color: #fff;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n background: #2e323b;\n border-radius: 8px;\n width: 240px;\n padding: 9px 11px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n transition: opacity .12s, transform .12s, visibility .12s;\n position: absolute;\n bottom: calc(100% + 8px);\n left: calc(100% - 7.5px);\n transform: translate(-50%, 2px);\n box-shadow: 0 6px 18px #181b222e;\n}\n\n.arkme-redesign-reserved-help:hover ~ [role=\"tooltip\"], .arkme-redesign-reserved-help:focus ~ [role=\"tooltip\"] {\n opacity: 1;\n visibility: visible;\n transform: translate(-50%);\n}\n\n.arkme-billing-backdrop {\n z-index: 120;\n backdrop-filter: blur(3px);\n background: #181b223d;\n place-items: center;\n padding: 28px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-billing-recharge-dialog, .arkme-billing-payment-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #dedfe3;\n border-radius: 20px;\n width: min(620px, 100%);\n max-height: min(720px, 100vh - 56px);\n overflow-y: auto;\n box-shadow: 0 24px 72px #191c232e;\n}\n\n.arkme-billing-payment-dialog {\n width: min(420px, 100%);\n}\n\n.arkme-billing-dialog-header {\n border-bottom: 1px solid #ececef;\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n min-height: 78px;\n padding: 20px 22px 16px;\n display: flex;\n}\n\n.arkme-billing-dialog-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n line-height: 25px;\n}\n\n.arkme-billing-dialog-header p {\n overflow-wrap: anywhere;\n color: #8a8e96;\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-dialog-header > button {\n color: #777c85;\n width: 32px;\n height: 32px;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n place-items: center;\n font-size: 22px;\n display: grid;\n}\n\n.arkme-billing-dialog-header > button:hover {\n color: #20232c;\n background: #f3f3f5;\n}\n\n.arkme-billing-dialog-body {\n padding: 18px 22px 22px;\n}\n\n.arkme-billing-dialog-balance {\n border-bottom: 1px solid #ececef;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 12px;\n min-height: 48px;\n padding: 0 2px 16px;\n display: grid;\n}\n\n.arkme-billing-dialog-balance > span {\n color: #8a8e96;\n grid-column: 1;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-billing-dialog-balance > strong {\n grid-column: 1;\n font-size: 22px;\n font-weight: 600;\n line-height: 28px;\n}\n\n.arkme-billing-dialog-balance > button, .arkme-billing-error > button {\n color: #626772;\n height: 30px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n grid-area: 1 / 2 / span 2;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-billing-products-section, .arkme-billing-payment-section {\n padding-top: 17px;\n}\n\n.arkme-billing-products-section h3, .arkme-billing-payment-section h3 {\n color: #747984;\n margin: 0 0 11px;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.arkme-billing-product-grid {\n width: 100%;\n}\n\n.arkme-billing-product-grid > button {\n color: #20232c;\n min-width: 0;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n align-content: center;\n gap: 4px;\n padding: 9px 11px;\n display: grid;\n}\n\n.arkme-billing-product-grid > button:hover {\n background: #f8f8f9;\n border-color: #cfd2d8;\n}\n\n.arkme-billing-product-grid > button.is-selected {\n border-color: #75839e;\n box-shadow: 0 0 0 1px #75839e;\n}\n\n.arkme-billing-product-grid > button > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-billing-product-grid > button > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 19px;\n}\n\n.arkme-billing-payment-actions {\n flex-wrap: wrap;\n gap: 10px;\n display: flex;\n}\n\n.arkme-billing-payment-actions > button {\n color: #333842;\n min-width: 154px;\n height: 38px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.arkme-billing-payment-actions > button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\n.arkme-billing-payment-actions > button:disabled, .arkme-billing-product-grid > button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-billing-platform-icon {\n flex: none;\n width: 18px;\n height: 18px;\n}\n\n.arkme-billing-platform-icon.is-alipay {\n color: #1677ff;\n}\n\n.arkme-billing-platform-icon.is-wechat {\n color: #07c160;\n}\n\n.arkme-billing-state {\n color: #858992;\n margin: 12px 0 2px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-error {\n color: #b54841;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n margin-top: 10px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-billing-error.is-purchase {\n justify-content: flex-start;\n}\n\n.arkme-billing-payment-content {\n text-align: center;\n justify-items: center;\n gap: 10px;\n padding: 28px 24px 18px;\n display: grid;\n}\n\n.arkme-billing-payment-content > .arkme-billing-platform-icon {\n width: 38px;\n height: 38px;\n margin-bottom: 4px;\n}\n\n.arkme-billing-payment-content > img {\n border-radius: 10px;\n width: 210px;\n height: 210px;\n}\n\n.arkme-billing-payment-content > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-billing-payment-content > p {\n color: #858992;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-payment-content.is-paid > strong {\n color: #16794f;\n font-size: 18px;\n line-height: 25px;\n}\n\n.arkme-billing-payment-content.is-paid > .arkme-billing-error {\n justify-content: center;\n}\n\n.arkme-billing-payment-content.is-crediting > strong {\n color: #335f9e;\n}\n\n.arkme-billing-dialog-actions {\n flex-wrap: wrap;\n justify-content: center;\n gap: 9px;\n padding: 0 22px 20px;\n display: flex;\n}\n\n.arkme-billing-dialog-actions > button, .arkme-billing-primary-action {\n color: #3c424d;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n padding: 0 14px;\n font-size: 12px;\n}\n\n.arkme-billing-dialog-actions > .arkme-billing-primary-action, .arkme-billing-payment-content > .arkme-billing-primary-action {\n color: #fff;\n background: #20232d;\n border-color: #20232d;\n}\n\n.arkme-redesign-settings-error {\n color: #b54841;\n background: #fff3f0;\n border-radius: 10px;\n margin: -8px 0 28px;\n padding: 10px 13px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-remote-settings-dialog-backdrop {\n z-index: 1150;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-remote-settings-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n flex-direction: column;\n width: min(720px, 100vw - 48px);\n max-height: min(720px, 100vh - 48px);\n display: flex;\n overflow: hidden;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-page-header {\n box-sizing: border-box;\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n min-height: 74px;\n padding: 0 24px 0 28px;\n display: flex;\n}\n\n.arkme-remote-page-header > div {\n min-width: 0;\n}\n\n.arkme-remote-page-header h1 {\n color: #20232c;\n letter-spacing: -.02em;\n margin: 0;\n font-size: 18px;\n font-weight: 620;\n line-height: 25px;\n}\n\n.arkme-remote-page-header p {\n color: #8b9098;\n margin: 3px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-settings-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-settings-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-settings-dialog-body {\n overscroll-behavior: contain;\n gap: 28px;\n padding: 24px 28px 28px;\n display: grid;\n overflow-y: auto;\n}\n\n.arkme-remote-section {\n gap: 13px;\n display: grid;\n}\n\n.arkme-remote-section-header {\n justify-content: space-between;\n align-items: flex-end;\n gap: 18px;\n min-height: 34px;\n display: flex;\n}\n\n.arkme-remote-section-header > div:first-child {\n min-width: 0;\n}\n\n.arkme-remote-section-header h2 {\n color: #292c34;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-remote-section-header p {\n color: #8b9098;\n margin: 2px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-section-header > div:last-child {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-remote-icon-button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-icon-button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-add-button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 5px;\n padding: 0 12px;\n font-size: 11px;\n font-weight: 550;\n display: inline-flex;\n}\n\n.arkme-remote-add-button:hover {\n background: #343944;\n}\n\n.arkme-remote-add-button:disabled, .arkme-remote-icon-button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-settings-card {\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-allow-row {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 60px;\n padding: 0 18px;\n display: flex;\n}\n\n.arkme-remote-allow-row > div {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-allow-row strong, .arkme-remote-device-row strong, .arkme-remote-name-row strong {\n color: #343944;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.arkme-remote-allow-row span, .arkme-remote-device-row span, .arkme-remote-name-row small {\n color: #8b9098;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-switch {\n cursor: pointer;\n background: #d7d9dd;\n border: 0;\n border-radius: 999px;\n flex: none;\n width: 40px;\n height: 23px;\n padding: 0;\n transition: background .16s;\n position: relative;\n}\n\n.arkme-remote-switch > span {\n background: #fff;\n border-radius: 50%;\n width: 17px;\n height: 17px;\n transition: transform .16s;\n position: absolute;\n top: 3px;\n left: 3px;\n box-shadow: 0 1px 3px #14182038;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] {\n background: #3b9cf5;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] > span {\n transform: translateX(17px);\n}\n\n.arkme-remote-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-device-row {\n border-bottom: 1px solid #ededee;\n grid-template-columns: 24px minmax(0, 1fr) auto;\n align-items: center;\n gap: 11px;\n min-height: 64px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-device-row:last-child {\n border-bottom: 0;\n}\n\n.arkme-remote-device-row > svg {\n color: #68707c;\n}\n\n.arkme-remote-device-row > div {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-device-row > button {\n color: #5d626c;\n min-height: 30px;\n font: inherit;\n cursor: pointer;\n background: #f3f3f4;\n border: 0;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 10px;\n}\n\n.arkme-remote-device-row > button:hover {\n color: #b54841;\n background: #fff0ed;\n}\n\n.arkme-remote-device-row > button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-empty-row {\n color: #989ca3;\n align-items: center;\n gap: 11px;\n min-height: 52px;\n padding: 0 18px;\n font-size: 11px;\n display: flex;\n}\n\n.arkme-remote-empty-row > svg {\n color: #a2a6ad;\n}\n\n.arkme-remote-name-row {\n color: #727780;\n width: 100%;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n grid-template-columns: 24px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 11px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-name-row:hover {\n background: #fafafb;\n}\n\n.arkme-remote-name-row > span {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-name-row small {\n display: block;\n}\n\n.arkme-remote-rename {\n border-top: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 7px;\n padding: 12px 18px;\n display: grid;\n}\n\n.arkme-remote-rename input {\n box-sizing: border-box;\n color: #20232c;\n min-width: 0;\n height: 34px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n outline: 0;\n padding: 0 10px;\n font-size: 12px;\n}\n\n.arkme-remote-rename input:focus {\n border-color: #6eb3f3;\n box-shadow: 0 0 0 3px #3b9cf51f;\n}\n\n.arkme-remote-rename button {\n color: #4f5560;\n min-height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e0e1e4;\n border-radius: 9px;\n padding: 0 11px;\n font-size: 11px;\n}\n\n.arkme-remote-rename button[type=\"submit\"] {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-remote-rename button:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-error {\n margin: -22px 0 0;\n}\n\n.arkme-remote-dialog-backdrop {\n z-index: 1200;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n overflow: auto;\n}\n\n.arkme-remote-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n width: min(440px, 100vw - 32px);\n max-height: calc(100vh - 48px);\n padding: 28px;\n position: relative;\n overflow: auto;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-dialog-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n position: absolute;\n top: 16px;\n right: 16px;\n}\n\n.arkme-remote-dialog-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-dialog-symbol {\n color: #343944;\n justify-content: center;\n align-items: center;\n gap: 9px;\n height: 38px;\n display: flex;\n}\n\n.arkme-remote-dialog-symbol > span {\n background: #d6d8dc;\n width: 28px;\n height: 1px;\n}\n\n.arkme-remote-dialog > header {\n text-align: center;\n margin: 12px 0 22px;\n}\n\n.arkme-remote-dialog h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 19px;\n font-weight: 620;\n line-height: 27px;\n}\n\n.arkme-remote-dialog header p {\n color: #858992;\n margin: 6px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-pairing-tabs {\n box-sizing: border-box;\n background: #f1f1f2;\n border-radius: 11px;\n grid-template-columns: 1fr 1fr;\n gap: 3px;\n height: 38px;\n padding: 3px;\n display: grid;\n}\n\n.arkme-remote-pairing-tabs button {\n color: #737881;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n color: #252831;\n background: #fff;\n box-shadow: 0 1px 3px #14182017;\n}\n\n.arkme-remote-pairing-display {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 308px;\n margin-top: 14px;\n padding: 24px;\n display: flex;\n position: relative;\n}\n\n.arkme-remote-pairing-display > img {\n width: 232px;\n height: 232px;\n image-rendering: pixelated;\n display: block;\n}\n\n.arkme-remote-pairing-display > p {\n color: #8b9098;\n text-align: center;\n margin: 10px 0 0;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-remote-pairing-code {\n color: #20232c;\n letter-spacing: .17em;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: all;\n font-size: 33px;\n font-weight: 620;\n line-height: 46px;\n}\n\n.arkme-remote-pairing-tools {\n gap: 4px;\n display: flex;\n position: absolute;\n bottom: 12px;\n right: 12px;\n}\n\n.arkme-remote-pairing-tools button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-pairing-tools button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-pairing-expired {\n text-align: center;\n justify-items: center;\n gap: 7px;\n display: grid;\n}\n\n.arkme-remote-pairing-expired strong {\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-remote-pairing-expired p {\n color: #8b9098;\n margin: 0;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-expired button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n margin-top: 7px;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-remote-dialog-note {\n color: #858992;\n align-items: flex-start;\n gap: 7px;\n margin: 14px 2px 0;\n font-size: 10px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-remote-dialog-note > svg {\n color: #5e856d;\n flex: none;\n margin-top: 1px;\n}\n\n.arkme-remote-settings-close:focus-visible, .arkme-remote-icon-button:focus-visible, .arkme-remote-add-button:focus-visible, .arkme-remote-switch:focus-visible, .arkme-remote-device-row > button:focus-visible, .arkme-remote-name-row:focus-visible, .arkme-remote-rename button:focus-visible, .arkme-remote-dialog button:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #3b9cf5;\n}\n\n@media (width <= 520px) {\n .arkme-remote-settings-dialog-backdrop {\n padding: 10px;\n }\n\n .arkme-remote-settings-dialog {\n border-radius: 17px;\n width: calc(100vw - 20px);\n max-height: calc(100vh - 20px);\n }\n\n .arkme-remote-page-header {\n min-height: 68px;\n padding: 0 16px 0 20px;\n }\n\n .arkme-remote-page-header p {\n display: none;\n }\n\n .arkme-remote-settings-dialog-body {\n gap: 24px;\n padding: 20px 18px 22px;\n }\n\n .arkme-remote-section-header p {\n display: none;\n }\n\n .arkme-remote-device-row {\n grid-template-columns: 22px minmax(0, 1fr);\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .arkme-remote-device-row > button {\n grid-column: 2;\n justify-self: start;\n }\n\n .arkme-remote-dialog-backdrop {\n padding: 12px;\n }\n\n .arkme-remote-dialog {\n padding: 24px 20px;\n }\n\n .arkme-remote-pairing-display {\n min-height: 282px;\n padding: 18px;\n }\n\n .arkme-remote-pairing-display > img {\n width: min(224px, 100%);\n height: auto;\n }\n\n .arkme-remote-pairing-code {\n letter-spacing: .12em;\n font-size: 26px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-remote-switch, .arkme-remote-switch > span {\n transition: none;\n }\n}\n\n.arkme-redesign-model-settings {\n color: #20232c;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\n.arkme-redesign-model-settings > header {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 42px 0 22px;\n}\n\n.arkme-redesign-model-settings > header button {\n color: #525762;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 18px;\n align-items: center;\n gap: 4px;\n padding: 0 10px 0 7px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.arkme-redesign-model-settings > header button:hover {\n color: #20232c;\n background: #f6f6f7;\n}\n\n.arkme-redesign-model-settings-body {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 0 0 68px;\n}\n\n.arkme-redesign-model-settings-body > * {\n max-width: none !important;\n}\n\n.arkme-redesign-task-start {\n place-items: center;\n width: 100%;\n height: 100%;\n padding: 28px 58px 64px;\n display: grid;\n}\n\n.arkme-redesign-task-start-inner {\n text-align: center;\n width: min(760px, 88%);\n transform: translateY(-12px);\n}\n\n.arkme-redesign-task-greeting {\n justify-content: center;\n align-items: center;\n gap: 12px;\n margin-bottom: 24px;\n display: flex;\n}\n\n.arkme-redesign-task-greeting img {\n object-fit: contain;\n flex: none;\n width: 62px;\n height: 16px;\n display: block;\n}\n\n.arkme-redesign-task-start h1 {\n letter-spacing: -.03em;\n margin: 0;\n font-size: 29px;\n font-weight: 600;\n line-height: 1.15;\n}\n\n.arkme-redesign-hero-input {\n border: 1px solid var(--arkme-focus);\n text-align: left;\n background: #fff;\n border-radius: 17px;\n grid-template-rows: minmax(56px, 1fr) auto;\n min-height: 142px;\n padding: 17px 16px 13px 20px;\n display: grid;\n box-shadow: 0 8px 30px #1c1f270b;\n}\n\n.arkme-redesign-hero-input:focus-within {\n border-color: #aebdff;\n box-shadow: 0 10px 38px #36488c13, 0 0 0 3px #91a4ff12;\n}\n\n.arkme-redesign-hero-input textarea {\n resize: none;\n color: #20232c;\n border: 0;\n outline: 0;\n width: 100%;\n min-height: 58px;\n padding: 0;\n font-size: 15px;\n line-height: 1.6;\n}\n\n.arkme-redesign-hero-input textarea::placeholder {\n color: #a3a6ad;\n}\n\n.arkme-redesign-hero-controls {\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n display: flex;\n}\n\n.arkme-redesign-hero-controls > div {\n align-items: center;\n gap: 7px;\n display: flex;\n}\n\n.arkme-redesign-source-button {\n border-radius: 22px;\n align-items: center;\n gap: 8px;\n height: 36px;\n padding: 0 13px;\n font-size: 13px;\n display: flex;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool, .arkme-redesign-send-task {\n border-radius: 50%;\n place-items: center;\n width: 40px;\n height: 40px;\n display: grid;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool:hover {\n background: #f5f5f6;\n}\n\n.arkme-redesign-send-task {\n color: #fff !important;\n background: #20232d !important;\n border: 0 !important;\n}\n\n.arkme-redesign-send-task:disabled {\n cursor: default;\n background: #d9dade !important;\n}\n\n.arkme-redesign-task-error {\n color: #b84747;\n text-align: left;\n margin-top: 10px;\n font-size: 12px;\n}\n\n.arkme-redesign-starters {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n width: calc(100% - 18px);\n margin: 22px auto 0;\n display: grid;\n}\n\n.arkme-redesign-starters > button {\n text-align: left;\n border-right: 1px solid #e7e7e9;\n align-items: center;\n gap: 12px;\n min-width: 0;\n min-height: 48px;\n padding: 4px 18px;\n display: flex;\n}\n\n.arkme-redesign-starters > button:last-child {\n border-right: 0;\n}\n\n.arkme-redesign-starters > button:hover strong {\n color: #5365ad;\n}\n\n.arkme-redesign-starter-icon {\n color: #30333b;\n border: 1px solid #e2e3e6;\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n}\n\n.arkme-redesign-starters > button > span:last-child {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-starters strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-redesign-starters small {\n color: #8d919a;\n font-size: 12px;\n}\n\n.arkme-redesign-details {\n z-index: 4;\n top: var(--arkme-native-titlebar);\n background: #fff;\n border-left: 1px solid #e7e7e9;\n width: 360px;\n position: absolute;\n bottom: 0;\n right: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-calendar-overlay {\n z-index: 14;\n inset: var(--arkme-native-titlebar) 0 0;\n pointer-events: none;\n position: absolute;\n}\n\n.arkme-redesign-calendar-overlay > * {\n pointer-events: auto;\n}\n\n.arkme-redesign-overlays {\n z-index: 20;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.arkme-redesign-overlays > * {\n pointer-events: auto;\n}\n\n.arkme-workspace-dialog-backdrop {\n z-index: 60;\n backdrop-filter: blur(2px);\n background: #181b2238;\n place-items: center;\n padding: 28px;\n display: grid;\n position: absolute;\n inset: 0;\n}\n\n.arkme-workspace-dialog {\n background: #fff;\n border: 1px solid #dddfe4;\n border-radius: 18px;\n grid-template-rows: auto auto minmax(0, 1fr) auto;\n width: min(640px, 100%);\n height: min(620px, 100%);\n min-height: 420px;\n display: grid;\n overflow: hidden;\n box-shadow: 0 24px 70px #191c232e;\n}\n\n.arkme-workspace-dialog > header {\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n padding: 22px 24px 16px;\n display: flex;\n}\n\n.arkme-workspace-dialog > header span {\n color: #8b8e96;\n font-size: 10px;\n}\n\n.arkme-workspace-dialog > header h2 {\n margin: 5px 0 0;\n font-size: 19px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog > header > button {\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-dialog > nav {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n align-items: center;\n gap: 2px;\n min-height: 42px;\n padding: 0 22px;\n display: flex;\n overflow-x: auto;\n}\n\n.arkme-workspace-dialog > nav > span {\n white-space: nowrap;\n color: #9a9da5;\n align-items: center;\n gap: 2px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > nav button {\n color: #666a73;\n border-radius: 8px;\n align-items: center;\n gap: 5px;\n height: 30px;\n padding: 0 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-directory-list {\n min-height: 0;\n padding: 10px 14px;\n overflow-y: auto;\n}\n\n.arkme-workspace-directory-list > button {\n text-align: left;\n border-radius: 11px;\n grid-template-columns: 34px minmax(0, 1fr) 18px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 48px;\n padding: 0 11px;\n display: grid;\n}\n\n.arkme-workspace-directory-list > button:hover {\n background: #f5f5f7;\n}\n\n.arkme-workspace-directory-list > button > span {\n color: #636873;\n border: 1px solid #e5e6e9;\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-directory-list strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog-status, .arkme-workspace-dialog-error {\n color: #8c9098;\n text-align: center;\n padding: 54px 16px;\n font-size: 12px;\n}\n\n.arkme-workspace-dialog-error {\n color: #b94b4b;\n}\n\n.arkme-workspace-dialog > footer {\n border-top: 1px solid #e8e9ec;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 72px;\n padding: 12px 18px;\n display: flex;\n}\n\n.arkme-workspace-dialog-back {\n color: #696d76;\n align-items: center;\n gap: 6px;\n height: 36px;\n padding: 0 10px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > footer > div {\n align-items: center;\n gap: 12px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-workspace-dialog > footer small {\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #92959d;\n max-width: 280px;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog > footer > div > button {\n color: #fff;\n background: #20232d;\n border-radius: 10px;\n flex: none;\n height: 38px;\n padding: 0 17px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-redesign-placeholder {\n color: #858992;\n text-align: center;\n place-content: center;\n justify-items: center;\n width: 100%;\n height: 100%;\n display: grid;\n}\n\n.arkme-redesign-placeholder > span {\n color: #555a64;\n border: 1px solid #e1e2e5;\n border-radius: 14px;\n place-items: center;\n width: 48px;\n height: 48px;\n display: grid;\n}\n\n.arkme-redesign-placeholder h1 {\n color: #3e424b;\n margin: 16px 0 7px;\n font-size: 18px;\n}\n\n.arkme-redesign-placeholder p {\n margin: 0;\n font-size: 12px;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] {\n --arkme-line: var(--dsw-alias-border-l1);\n --arkme-muted: var(--dsw-alias-label-tertiary);\n --arkme-soft: var(--dsw-alias-bg-layer-2);\n --arkme-focus: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"], body[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] {\n background: var(--dsw-specific-sidebar-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-brand\"] {\n box-shadow: none;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"light\"] {\n display: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: block !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] > div {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-surface, body[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] div:has( > input[aria-label=\"搜索\"]) {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button:hover {\n background: var(--dsw-alias-interactive-bg-hover) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] > span[aria-hidden=\"true\"] {\n background: var(--dsw-alias-state-business-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [aria-label=\"Arkme 会话列表\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] button[aria-label=\"新任务\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] button[aria-label=\"新任务\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"treeitem\"][aria-selected=\"true\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"treeitem\"][aria-selected=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"status\"][aria-label$=\"个人测试版\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"status\"][aria-label$=\"个人测试版\"] {\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button:first-child, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button:first-child {\n border-color: var(--dsw-alias-button-primary-fill) !important;\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover, body[data-ds-dark-theme] .arkme-update-capsule {\n border-color: var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, transparent);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading h2, body[data-ds-dark-theme] .arkme-update-release-notes strong, body[data-ds-dark-theme] .arkme-update-capsule-copy strong {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading span, body[data-ds-dark-theme] .arkme-update-popover-summary, body[data-ds-dark-theme] .arkme-update-release-notes small, body[data-ds-dark-theme] .arkme-update-capsule-copy small {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-release-notes, body[data-ds-dark-theme] .arkme-update-release-notes > div + div {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-update-later, body[data-ds-dark-theme] .arkme-update-progress, body[data-ds-dark-theme] .arkme-update-rail:not(.is-available) {\n background: var(--dsw-alias-fill-l1);\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"当天内容\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"] > span[aria-hidden] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > header button, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[aria-label*=\"记录\"] {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > div > span {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"false\"][aria-label*=\"条记录\"] > span:last-child {\n background: var(--dsw-alias-bg-layer-2) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span {\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span:last-child {\n color: var(--dsw-alias-label-primary-inverted) !important;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article > div > div:last-child {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article h3, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article p {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article time, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article span {\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-root, body[data-ds-dark-theme] .arkme-redesign-chat-panel, body[data-ds-dark-theme] .arkme-redesign-content, body[data-ds-dark-theme] .arkme-redesign-feature-page, body[data-ds-dark-theme] .arkme-redesign-recordings-page, body[data-ds-dark-theme] .arkme-redesign-plugins-page, body[data-ds-dark-theme] .arkme-redesign-model-settings, body[data-ds-dark-theme] .arkme-redesign-details {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-native-desktop .arkme-redesign-root:before {\n background: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-sidebar-fill);\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button, body[data-ds-dark-theme] .arkme-redesign-profile-menu button, body[data-ds-dark-theme] .arkme-redesign-task-list > button, body[data-ds-dark-theme] .arkme-redesign-task-first, body[data-ds-dark-theme] .arkme-workspace-dialog > nav button, body[data-ds-dark-theme] .arkme-workspace-dialog-back, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button:hover, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button:hover, body[data-ds-dark-theme] .arkme-redesign-profile-menu button:hover, body[data-ds-dark-theme] .arkme-redesign-chat-search:hover, body[data-ds-dark-theme] .arkme-redesign-task-section-title button:hover, body[data-ds-dark-theme] .arkme-redesign-task-list > button:hover, body[data-ds-dark-theme] .arkme-redesign-task-first:hover, body[data-ds-dark-theme] .arkme-extension-toolbar > button:hover, body[data-ds-dark-theme] button.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] a.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button:hover, body[data-ds-dark-theme] .arkme-redesign-round-tool:hover, body[data-ds-dark-theme] .arkme-workspace-directory-list > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button.is-active, body[data-ds-dark-theme] .arkme-redesign-task-list > button.is-selected {\n background: var(--dsw-alias-interactive-bg-active);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-footer, body[data-ds-dark-theme] .arkme-redesign-profile-menu, body[data-ds-dark-theme] .arkme-redesign-task-section, body[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-header, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-row, body[data-ds-dark-theme] .arkme-account-info-row, body[data-ds-dark-theme] .arkme-redesign-starters > button, body[data-ds-dark-theme] .arkme-redesign-details, body[data-ds-dark-theme] .arkme-workspace-dialog > nav, body[data-ds-dark-theme] .arkme-workspace-dialog > footer {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-popover, body[data-ds-dark-theme] .arkme-workspace-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-head small, body[data-ds-dark-theme] .arkme-redesign-profile-menu small, body[data-ds-dark-theme] .arkme-redesign-profile-menu button > svg:last-child, body[data-ds-dark-theme] .arkme-redesign-task-section-title, body[data-ds-dark-theme] .arkme-redesign-task-copy small, body[data-ds-dark-theme] .arkme-account-profile-qr, body[data-ds-dark-theme] .arkme-redesign-feature-page > header p, body[data-ds-dark-theme] .arkme-redesign-feature-page > header span, body[data-ds-dark-theme] .arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder, body[data-ds-dark-theme] .arkme-redesign-settings-profile p, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-summary, body[data-ds-dark-theme] .arkme-account-info-copy > small, body[data-ds-dark-theme] .arkme-account-info-action, body[data-ds-dark-theme] .arkme-account-info-row > svg, body[data-ds-dark-theme] .arkme-account-info-icon, body[data-ds-dark-theme] .arkme-redesign-setting-row > svg, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea::placeholder, body[data-ds-dark-theme] .arkme-redesign-starters small, body[data-ds-dark-theme] .arkme-workspace-dialog > header span, body[data-ds-dark-theme] .arkme-workspace-dialog > nav > span, body[data-ds-dark-theme] .arkme-workspace-dialog-status, body[data-ds-dark-theme] .arkme-workspace-dialog > footer small, body[data-ds-dark-theme] .arkme-redesign-placeholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label, body[data-ds-dark-theme] .arkme-extension-toolbar > button, body[data-ds-dark-theme] .arkme-redesign-settings-group, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-workspace-directory-list > button > span, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n border-color: var(--dsw-alias-border-l2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-extension-toolbar input, body[data-ds-dark-theme] .arkme-redesign-settings-profile h1, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-task-start h1, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-redesign-placeholder h1 {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-list, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-surface, body[data-ds-dark-theme] .arkme-redesign-settings-group {\n color: var(--dsw-alias-label-primary);\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog > header, body[data-ds-dark-theme] .arkme-account-qr-card {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-account-qr-card, body[data-ds-dark-theme] .arkme-account-form input, body[data-ds-dark-theme] .arkme-account-code-row button, body[data-ds-dark-theme] .arkme-account-dialog-actions button {\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-border-l2);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog-actions button[type=\"submit\"], body[data-ds-dark-theme] .arkme-account-dialog-actions button:last-child {\n border-color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nbody[data-ds-dark-theme] .arkme-account-rule, body[data-ds-dark-theme] .arkme-account-qr-card span, body[data-ds-dark-theme] .arkme-account-qr-card small, body[data-ds-dark-theme] .arkme-account-form label {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-surface, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-box {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-greeting img {\n filter: invert() hue-rotate(180deg);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input textarea {\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon {\n background: var(--dsw-alias-button-elevated-fill) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card:hover {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-interactive-bg-hover) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-error {\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-page-header h1, body[data-ds-dark-theme] .arkme-remote-section-header h2, body[data-ds-dark-theme] .arkme-remote-allow-row strong, body[data-ds-dark-theme] .arkme-remote-device-row strong, body[data-ds-dark-theme] .arkme-remote-name-row strong, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-code {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-section-header p, body[data-ds-dark-theme] .arkme-remote-page-header p, body[data-ds-dark-theme] .arkme-remote-allow-row span, body[data-ds-dark-theme] .arkme-remote-device-row span, body[data-ds-dark-theme] .arkme-remote-name-row small, body[data-ds-dark-theme] .arkme-remote-dialog header p, body[data-ds-dark-theme] .arkme-remote-pairing-display > p, body[data-ds-dark-theme] .arkme-remote-dialog-note, body[data-ds-dark-theme] .arkme-remote-empty-row {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-card, body[data-ds-dark-theme] .arkme-remote-settings-dialog, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-display, body[data-ds-dark-theme] .arkme-remote-rename input {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-allow-row, body[data-ds-dark-theme] .arkme-remote-device-row, body[data-ds-dark-theme] .arkme-remote-rename, body[data-ds-dark-theme] .arkme-remote-page-header {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close, body[data-ds-dark-theme] .arkme-remote-icon-button, body[data-ds-dark-theme] .arkme-remote-dialog-close, body[data-ds-dark-theme] .arkme-remote-pairing-tools button, body[data-ds-dark-theme] .arkme-remote-name-row {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close:hover, body[data-ds-dark-theme] .arkme-remote-icon-button:hover, body[data-ds-dark-theme] .arkme-remote-dialog-close:hover, body[data-ds-dark-theme] .arkme-remote-pairing-tools button:hover, body[data-ds-dark-theme] .arkme-remote-name-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-add-button, body[data-ds-dark-theme] .arkme-remote-rename button[type=\"submit\"], body[data-ds-dark-theme] .arkme-remote-pairing-expired button {\n background: var(--dsw-alias-button-primary-fill);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-device-row > button, body[data-ds-dark-theme] .arkme-remote-rename button {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs {\n background: var(--dsw-alias-bg-layer-2);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-dialog-backdrop, body[data-ds-dark-theme] .arkme-remote-dialog-backdrop {\n background: #07090d8f;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-setting-row > strong.is-danger, body[data-ds-dark-theme] .arkme-redesign-task-error, body[data-ds-dark-theme] .arkme-workspace-dialog-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i {\n background: var(--dsw-alias-state-success-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i:after {\n background: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-matrix i, body[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 3px var(--dsw-alias-state-business-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-starters > button:hover strong {\n color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task, body[data-ds-dark-theme] .arkme-workspace-dialog > footer > div > button {\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task:disabled {\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-workspace-dialog-backdrop {\n background: var(--dsw-alias-bg-mask-1);\n}\n\n@media (width <= 1024px) {\n .arkme-redesign-chat-panel {\n width: 264px;\n left: 82px;\n }\n\n .arkme-redesign-content {\n left: 82px;\n }\n\n .arkme-redesign-content.has-panel {\n left: 346px;\n }\n\n .arkme-redesign-rail {\n left: 12px;\n }\n\n .arkme-redesign-starters > button {\n padding: 0 10px;\n }\n\n .arkme-redesign-feature-page {\n padding-left: 30px;\n padding-right: 30px;\n }\n}\n\n@media (width <= 820px) {\n .arkme-redesign-chat-panel {\n display: none;\n }\n\n .arkme-redesign-content.has-panel {\n left: 82px;\n }\n\n .arkme-redesign-task-start {\n padding: 28px;\n }\n\n .arkme-redesign-starters {\n grid-template-columns: 1fr;\n gap: 6px;\n }\n\n .arkme-redesign-starters > button {\n border-right: 0;\n }\n\n .arkme-voiceprint-relationships {\n grid-template-columns: minmax(0, 1fr) !important;\n gap: 28px !important;\n }\n\n .arkme-voiceprint-outbound {\n border-left: 0 !important;\n border-top: 1px solid var(--dsw-alias-border-subtle, #e6e7eb) !important;\n padding-top: 28px !important;\n padding-left: 0 !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-redesign-task-matrix i {\n opacity: .6;\n animation: none;\n }\n\n .arkme-update-rail.is-downloading svg, .arkme-update-popover, .arkme-update-capsule, .arkme-update-progress.is-indeterminate span {\n animation: none;\n }\n\n .arkme-update-rail, .arkme-update-progress span {\n transition: none;\n }\n}\n\n.arkme-contact-directory, .arkme-directory-detail-pane {\n box-sizing: border-box;\n min-width: 0;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 13px;\n overflow: hidden;\n}\n\n[data-arkme-directory-mode=\"contacts\"] {\n background: var(--dsw-specific-sidebar-fill, #fff) !important;\n border-left-color: var(--dsw-alias-border-l1, #ececef) !important;\n}\n\n.arkme-contact-directory {\n overflow-wrap: anywhere;\n padding: 8px 6px 18px;\n overflow-y: auto;\n}\n\n.arkme-directory-detail-pane {\n overflow: hidden;\n}\n\n.arkme-contact-directory button, .arkme-directory-detail-pane button {\n appearance: none;\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n border: 0;\n margin: 0;\n}\n\n.arkme-contact-directory-section {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n min-width: 0;\n padding: 2px 0 5px;\n}\n\n.arkme-contact-directory-section-header {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-width: 0;\n min-height: 42px;\n padding: 0 10px;\n display: flex;\n}\n\n.arkme-contact-directory-section-title {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-contact-directory-section-title strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.arkme-contact-directory-caret {\n width: 14px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n transform-origin: center;\n flex: none;\n font-size: 18px;\n line-height: 1;\n transition: transform .16s;\n}\n\n.arkme-contact-directory-section-header[aria-expanded=\"true\"] .arkme-contact-directory-caret {\n transform: rotate(90deg);\n}\n\n.arkme-contact-directory-section-header:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-section-body {\n min-width: 0;\n padding: 0 0 5px;\n}\n\n.arkme-contact-directory-list {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-directory-count {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n font-variant-numeric: tabular-nums;\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-directory-row {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 13px;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-width: 0;\n min-height: 52px;\n margin: 1px 0;\n padding: 7px 10px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row img {\n object-fit: cover;\n border-radius: 50%;\n flex: none;\n width: 38px;\n height: 38px;\n}\n\n.arkme-contact-directory-row.is-static {\n cursor: default;\n}\n\n.arkme-contact-directory-row.is-selected {\n background: var(--dsw-alias-interactive-bg-active, #eef0f4);\n}\n\n.arkme-contact-directory-row:not(.is-static):hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-avatar {\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy {\n flex: 1;\n align-content: center;\n min-width: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy small {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-letter {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n padding: 8px 10px 2px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n}\n\n.arkme-contact-directory-alphabetical, .arkme-contact-directory-letter-group {\n min-width: 0;\n}\n\n.arkme-contact-directory-status, .arkme-contact-directory-warning {\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n overflow-wrap: anywhere;\n margin: 3px 8px;\n padding: 7px 9px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-contact-directory-warning {\n color: var(--dsw-alias-state-warning-primary, #b45309);\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n border-radius: 9px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-contact-directory-warning button {\n color: inherit;\n cursor: pointer;\n background: none;\n flex: none;\n padding: 2px 4px;\n font-weight: 600;\n}\n\n.arkme-contact-directory-more {\n text-align: center;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n width: calc(100% - 16px);\n min-height: 32px;\n padding: 6px 8px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n margin: 3px 8px !important;\n}\n\n.arkme-contact-directory-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 14px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-directory-detail-empty {\n background: var(--dsw-alias-bg-base, #fff);\n place-items: center;\n min-width: 0;\n height: 100%;\n min-height: 0;\n display: grid;\n}\n\n.arkme-directory-detail-logo {\n object-fit: contain;\n opacity: .9;\n width: 96px;\n height: 96px;\n}\n\n.arkme-contact-detail, .arkme-contact-profile, .arkme-contact-world-card, .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.arkme-contact-detail {\n background: var(--dsw-alias-bg-base, #fff);\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n padding: 32px clamp(24px, 5vw, 56px);\n}\n\n.arkme-contact-profile-main {\n grid-template-columns: 72px minmax(0, 1fr) auto;\n align-items: center;\n gap: 18px;\n width: min(100%, 760px);\n margin: 0 auto;\n display: grid;\n}\n\n.arkme-contact-profile-avatar {\n border-radius: 50%;\n place-items: center;\n width: 72px;\n height: 72px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile-identity {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-profile-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n font-size: 20px;\n font-weight: 650;\n line-height: 28px;\n display: block;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-contact-profile-fields > div {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #68707c);\n gap: 4px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-contact-profile-fields dt, .arkme-contact-profile-fields dd {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields dt {\n flex: none;\n}\n\n[data-arkme-workspace] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill, #5667cc);\n cursor: pointer;\n border-radius: 10px;\n min-height: 36px;\n padding: 0 16px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary-inverted, #fff) !important;\n}\n\n.arkme-contact-profile-message:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-contact-profile-error, .arkme-contact-profile-message-error {\n max-width: 760px;\n color: var(--dsw-alias-state-error-primary, #b42318);\n overflow-wrap: anywhere;\n margin: 0 auto;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-contact-profile-error {\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n display: flex;\n}\n\n.arkme-contact-profile-status {\n max-width: 760px;\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n margin: 0 auto;\n padding: 24px 0;\n font-size: 12px;\n}\n\n.arkme-contact-world {\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-detail > .arkme-contact-world {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-subtle, #f7f7f8);\n padding: 22px clamp(20px, 4vw, 52px) 28px;\n}\n\n.arkme-contact-world-container {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 18px;\n flex-direction: column;\n width: min(100%, 980px);\n min-width: 0;\n height: 100%;\n min-height: 0;\n margin: 0 auto;\n display: flex;\n overflow-y: auto;\n box-shadow: 0 16px 48px #161b230f;\n}\n\n.arkme-contact-world-title {\n box-sizing: border-box;\n width: min(100%, 760px);\n margin: 0 auto;\n padding: 22px 28px 10px;\n font-size: 15px;\n font-weight: 650;\n line-height: 22px;\n}\n\n.arkme-contact-world-list {\n box-sizing: border-box;\n align-content: start;\n gap: 30px;\n width: min(100%, 760px);\n min-height: 0;\n margin: 0 auto;\n padding: 28px 28px 42px;\n display: grid;\n}\n\n.arkme-contact-world-year {\n gap: 24px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-year > h2 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 28px;\n font-weight: 750;\n line-height: 36px;\n}\n\n.arkme-contact-world-entry {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-diary {\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n align-items: center;\n gap: 8px;\n font-size: 11px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time span {\n font-size: 17px;\n line-height: 10px;\n}\n\n.arkme-contact-world-card {\n border: 1px dashed var(--dsw-alias-border-l2, #d9dce2);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 14px;\n gap: 10px;\n padding: 15px 16px;\n display: grid;\n}\n\n.arkme-contact-world-card-header {\n grid-template-columns: 36px minmax(0, 1fr) auto;\n align-items: center;\n gap: 9px;\n display: grid;\n}\n\n.arkme-contact-world-author {\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n font-size: 13px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-world-headline {\n margin: 2px 0 0;\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-contact-world-text {\n color: var(--dsw-alias-label-secondary, #68707c);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-images {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n min-width: 0;\n max-width: 620px;\n display: grid;\n}\n\n.arkme-contact-world-image {\n aspect-ratio: 1;\n object-fit: cover;\n border-radius: 11px;\n width: 100%;\n display: block;\n}\n\n.arkme-contact-world-image-error, .arkme-contact-world-image-loading {\n aspect-ratio: 1;\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n width: 100%;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n border-radius: 11px;\n place-items: center;\n display: grid;\n}\n\n.arkme-contact-world-tags {\n flex-wrap: wrap;\n gap: 6px;\n display: flex;\n}\n\n.arkme-contact-world-tag {\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 11px;\n}\n\n.arkme-contact-world-empty {\n box-sizing: border-box;\n text-align: center;\n flex: 1;\n place-content: center;\n justify-items: center;\n min-height: 240px;\n padding: 36px 20px;\n display: grid;\n}\n\n.arkme-contact-world-empty img {\n width: 140px;\n height: 100px;\n display: block;\n}\n\n.arkme-contact-world-empty p {\n color: var(--dsw-alias-label-secondary, #858992);\n margin: 16px 0 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-error, .arkme-contact-world-status {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n place-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-contact-world-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-load-more {\n cursor: pointer;\n background: none;\n border-radius: 9px;\n place-self: center;\n min-height: 34px;\n padding: 0 12px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n}\n\n.arkme-contact-world-load-more-status, .arkme-contact-world-load-more-error {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 8px 16px;\n font-size: 11px;\n}\n\n.arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-page-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n align-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-directory-unmarked-speaker-detail {\n background: var(--dsw-alias-bg-base, #fff);\n min-height: 0;\n padding: clamp(28px, 5vw, 60px);\n overflow-y: auto;\n}\n\n.arkme-unmarked-speaker-token-avatar {\n background: var(--dsw-alias-bg-module-platform, var(--dsw-alias-bg-layer-1, #f1f2f3));\n color: var(--dsw-alias-label-secondary, #666c75);\n letter-spacing: -.02em;\n border-radius: 50%;\n flex: none;\n place-items: center;\n font-weight: 650;\n line-height: 1;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 18px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 24px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary h1, .arkme-unmarked-speaker-summary h2, .arkme-unmarked-speaker-audio h2, .arkme-unmarked-speaker-choice h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 20px;\n font-weight: 680;\n line-height: 28px;\n}\n\n.arkme-unmarked-speaker-identity {\n align-items: center;\n gap: 16px;\n min-width: 0;\n padding: 2px 4px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-identity > div {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-identity p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-stats {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #737984);\n flex-wrap: wrap;\n gap: 8px 20px;\n padding: 0 4px;\n font-size: 12px;\n line-height: 19px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-stats span {\n white-space: nowrap;\n position: relative;\n}\n\n.arkme-unmarked-speaker-stats span + span:before {\n content: \"\";\n background: var(--dsw-alias-label-caption, #b3b7bd);\n border-radius: 50%;\n width: 3px;\n height: 3px;\n position: absolute;\n top: 8px;\n left: -11px;\n}\n\n.arkme-unmarked-speaker-stats strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-inference {\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 18px;\n grid-template-columns: 40px minmax(0, 1fr);\n align-items: start;\n gap: 12px;\n min-width: 0;\n padding: 18px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n border: 1px solid var(--dsw-alias-border-l1, #e3e4e7);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 40px;\n height: 40px;\n color: var(--dsw-alias-label-secondary, #656b75);\n border-radius: 50%;\n place-items: center;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon svg path, .arkme-unmarked-speaker-action-icon svg path {\n stroke: currentColor;\n stroke-width: 1.5px;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.arkme-unmarked-speaker-inference > div {\n gap: 5px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-label {\n color: var(--dsw-alias-label-secondary, #747983);\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-inference strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 14px;\n font-weight: 650;\n line-height: 21px;\n}\n\n.arkme-unmarked-speaker-inference p {\n color: var(--dsw-alias-label-secondary, #686e78);\n margin: 0;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-unmarked-speaker-actions {\n gap: 10px;\n display: grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-action {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 100%;\n min-height: 62px;\n color: var(--dsw-alias-label-primary, #202124);\n text-align: left;\n cursor: pointer;\n border-radius: 16px;\n grid-template-columns: 42px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n padding: 10px 46px 10px 14px;\n font-size: 13px;\n font-weight: 650;\n display: grid;\n position: relative;\n}\n\n.arkme-unmarked-speaker-action:after {\n content: \"›\";\n color: var(--dsw-alias-label-caption, #a7abb2);\n font-size: 22px;\n font-weight: 400;\n position: absolute;\n right: 18px;\n}\n\n.arkme-unmarked-speaker-action:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f7f7f8);\n border-color: var(--dsw-alias-border-l2, #d9dade);\n}\n\n.arkme-unmarked-speaker-summary > [role=\"status\"], .arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"status\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"status\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-label-secondary, #68707c);\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 10px;\n padding: 9px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-state-error-primary, #b42318);\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n}\n\n.arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 16px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 28px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 40px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n min-width: 0;\n padding-bottom: 4px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header > button {\n min-height: 32px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 11px;\n}\n\n.arkme-unmarked-speaker-subview-header > button:before {\n content: \"‹\";\n vertical-align: -1px;\n margin-right: 4px;\n font-size: 17px;\n}\n\n.arkme-unmarked-speaker-subview-heading {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-heading p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-segment-list {\n gap: 10px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-card {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 16px;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px 16px;\n min-width: 0;\n padding: 16px 16px 14px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-meta {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #757b85);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-unmarked-speaker-segment-transcript {\n min-width: 0;\n color: var(--dsw-alias-label-primary, #292c34);\n white-space: pre-wrap;\n grid-column: 1;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-alias-bg-layer-2, #f4f4f5);\n width: 38px;\n min-width: 38px;\n height: 38px;\n min-height: 38px;\n color: var(--dsw-alias-label-primary, #292c34);\n cursor: pointer;\n border-radius: 50%;\n grid-area: 1 / 2 / span 2;\n align-self: center;\n place-items: center;\n padding: 0;\n display: inline-grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play:not(:disabled):hover {\n background: var(--dsw-alias-bg-layer-3, #e9eaec);\n}\n\n.arkme-unmarked-speaker-segment-play:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-choice-meta {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: -4px 0 0;\n padding: 0 4px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-choice-options {\n border: 0;\n gap: 8px;\n min-width: 0;\n margin: 0;\n padding: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-options legend {\n color: var(--dsw-alias-label-secondary, #737984);\n margin-bottom: 9px;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-choice-option {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n cursor: pointer;\n border-radius: 14px;\n grid-template-columns: 18px minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n min-width: 0;\n min-height: 52px;\n padding: 10px 14px;\n font-size: 13px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-option:has(input:checked) {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n background: var(--dsw-alias-interactive-bg-active, #f0f2ff);\n}\n\n.arkme-unmarked-speaker-choice-option input {\n width: 16px;\n height: 16px;\n accent-color: var(--dsw-alias-state-business-primary, #6677d9);\n margin: 0;\n}\n\n.arkme-unmarked-speaker-recommended {\n background: var(--dsw-alias-state-business-tertiary, #eef0ff);\n color: var(--dsw-alias-state-business-primary, #5667cc);\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-choice-new-name {\n border: 1px solid var(--dsw-alias-border-l1, #dfe1e5);\n background: var(--dsw-specific-input-major, #fff);\n width: 100%;\n min-height: 42px;\n color: var(--dsw-alias-label-primary, #202124);\n border-radius: 12px;\n outline: 0;\n padding: 0 13px;\n font-size: 12px;\n}\n\n.arkme-unmarked-speaker-choice-new-name:focus {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--dsw-alias-state-business-primary, #6677d9) 14%, transparent);\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-confirm {\n background: var(--dsw-alias-button-primary-fill, #202124);\n min-height: 42px;\n color: var(--dsw-alias-label-primary-inverted, #fff);\n cursor: pointer;\n border-radius: 12px;\n padding: 0 16px;\n font-size: 12px;\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-confirm:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-summary button:not(.arkme-unmarked-speaker-action), .arkme-unmarked-speaker-audio button:not(.arkme-unmarked-speaker-segment-play), .arkme-unmarked-speaker-choice button:not(.arkme-unmarked-speaker-confirm), .arkme-contact-world-error button, .arkme-contact-profile-error button {\n border: 1px solid var(--dsw-alias-border-l2, var(--arkme-line));\n background: var(--dsw-alias-button-elevated-fill, #fff);\n min-height: 34px;\n color: var(--dsw-alias-label-primary, #202124);\n cursor: pointer;\n border-radius: 9px;\n padding: 0 12px;\n}\n\n.arkme-unmarked-speaker-gone, .arkme-unmarked-speaker-success {\n box-sizing: border-box;\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n width: min(100%, 680px);\n color: var(--dsw-alias-state-warning-primary, #9a3412);\n border-radius: 10px;\n margin: 0 auto;\n padding: 12px 14px;\n}\n\n.arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary, #ecfdf3);\n color: var(--dsw-alias-state-success-primary, #067647);\n}\n\n.arkme-contact-directory button:focus-visible, .arkme-directory-detail-pane button:focus-visible, [data-arkme-owned=\"product-navigation\"] button:focus-visible {\n outline: 2px solid var(--arkme-focus);\n outline-offset: 2px;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory, body[data-ds-dark-theme] .arkme-directory-detail-pane {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-row.is-selected, body[data-ds-dark-theme] .arkme-contact-world-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option, body[data-ds-dark-theme] .arkme-unmarked-speaker-action {\n background: var(--dsw-alias-bg-layer-1);\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-action-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option:has(input:checked) {\n background: var(--dsw-alias-interactive-bg-active);\n border-color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-detail > .arkme-contact-world {\n background: var(--dsw-alias-bg-subtle);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-world-container {\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: none;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-warning, body[data-ds-dark-theme] .arkme-unmarked-speaker-gone, body[data-ds-dark-theme] .arkme-contact-world-image-error, body[data-ds-dark-theme] .arkme-contact-world-image-loading {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-error, body[data-ds-dark-theme] .arkme-contact-profile-message-error, body[data-ds-dark-theme] .arkme-contact-world-error, body[data-ds-dark-theme] .arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-more, body[data-ds-dark-theme] .arkme-contact-world-load-more {\n color: var(--dsw-alias-state-business-primary);\n}\n\n@media (width <= 1024px) {\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"] {\n min-width: 0;\n }\n}\n\n@media (width <= 820px) {\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"directory\"]) {\n grid-template-columns: minmax(0, 1fr) 0 0 !important;\n }\n\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"content\"]) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"][data-arkme-contacts-mobile-view=\"content\"], [data-arkme-owned=\"persistent-workspace\"][data-arkme-contacts-mobile-view=\"directory\"] {\n display: none !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"], .arkme-directory-detail-pane {\n min-width: 0;\n }\n}\n\n.arkme-directory-mobile-back {\n display: none;\n}\n\n@media (width <= 820px) {\n .arkme-directory-mobile-back {\n min-height: 42px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n align-items: center;\n gap: 5px;\n padding: 0 14px;\n display: inline-flex;\n }\n\n .arkme-directory-mobile-back:before {\n content: \"‹\";\n font-size: 18px;\n line-height: 1;\n }\n\n .arkme-directory-mobile-back:hover {\n color: var(--dsw-alias-label-primary, #202124);\n }\n\n .arkme-contact-profile {\n padding: 26px 20px;\n }\n\n .arkme-contact-profile-main {\n grid-template-columns: 56px minmax(0, 1fr) auto;\n gap: 12px;\n }\n\n .arkme-contact-profile-avatar {\n width: 56px;\n height: 56px;\n }\n\n .arkme-contact-profile-avatar > span {\n width: 56px !important;\n height: 56px !important;\n }\n\n .arkme-contact-world-title {\n padding-left: 20px;\n padding-right: 20px;\n }\n\n .arkme-directory-unmarked-speaker-detail {\n padding: 20px 18px 30px;\n }\n\n .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n gap: 14px;\n }\n\n .arkme-unmarked-speaker-stats {\n gap: 7px 14px;\n }\n\n .arkme-unmarked-speaker-stats span + span:before {\n display: none;\n }\n\n .arkme-unmarked-speaker-inference {\n grid-template-columns: 36px minmax(0, 1fr);\n padding: 15px;\n }\n\n .arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n width: 36px;\n height: 36px;\n }\n\n .arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 36px minmax(0, 1fr);\n gap: 9px;\n }\n\n .arkme-unmarked-speaker-segment-card {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .arkme-unmarked-speaker-segment-transcript, [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n grid-area: auto / 1;\n }\n\n [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n justify-self: start;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-contact-directory-caret {\n transition: none;\n }\n\n .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-conversation-surface {\n --arkme-chat-self-bubble: #eef1f8;\n --arkme-chat-other-bubble: #f3f4f6;\n}\n\nbody[data-ds-dark-theme] .arkme-conversation-surface {\n --arkme-chat-self-bubble: #2c3142;\n --arkme-chat-other-bubble: #282a31;\n --arkme-audio-control: #8995c5;\n}\n\n[data-arkme-message-direction]:focus-visible, [data-arkme-note-detail] button:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n.arkme-world-extension-activity:hover {\n background: var(--dsw-alias-interactive-bg-hover, #2631480f) !important;\n}\n\n.arkme-world-extension-activity:active {\n background: var(--dsw-alias-interactive-bg-active, #2631481a) !important;\n}\n\n.arkme-world-extension-activity:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n@media (width <= 680px) {\n .arkme-world-extension-activity {\n grid-template-columns: 48px minmax(0, 1fr) !important;\n gap: 11px !important;\n padding: 13px !important;\n }\n}\n";
|
|
132708
|
+
var arkme_redesign_default = "[data-arkme-workspace] {\n --arkme-line: #e7e7e9;\n --arkme-muted: #8e9199;\n --arkme-soft: #f6f6f7;\n --arkme-focus: #cbd5ff;\n color: #171923;\n font-synthesis: none;\n font-family: SF Pro Text, SF Pro Display, -apple-system, BlinkMacSystemFont, PingFang SC, Helvetica Neue, Microsoft YaHei, sans-serif;\n}\n\n[data-arkme-workspace], [data-arkme-workspace] * {\n box-sizing: border-box;\n}\n\n[data-arkme-workspace] button, [data-arkme-workspace] input, [data-arkme-workspace] textarea {\n font: inherit;\n}\n\n[data-arkme-workspace] button {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n}\n\n[data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: none !important;\n}\n\n.arkme-redesign-root {\n --arkme-native-titlebar: 0px;\n background: #fff;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n position: relative;\n overflow: hidden;\n}\n\n.arkme-native-desktop .arkme-redesign-root {\n --arkme-native-titlebar: 50px;\n}\n\n.arkme-native-desktop .arkme-redesign-root:before {\n content: \"\";\n z-index: 30;\n pointer-events: none;\n background: #e8e8ea;\n height: 1px;\n position: absolute;\n top: 49px;\n left: 0;\n right: 0;\n}\n\n.arkme-native-desktop [data-arkme-owned=\"persistent-sidebar\"] > [data-arkme-owned=\"product-navigation\"] {\n padding-top: 28px !important;\n}\n\n.arkme-redesign-rail {\n z-index: 8;\n top: calc(26px + var(--arkme-native-titlebar));\n background: #fbfbfc;\n border: 1px solid #e4e4e7;\n border-radius: 22px;\n flex-direction: column;\n width: 72px;\n padding: 10px 8px;\n display: flex;\n position: absolute;\n bottom: 22px;\n left: 24px;\n box-shadow: 0 16px 38px #1e20260e;\n}\n\n.arkme-redesign-rail-primary {\n flex-direction: column;\n gap: 5px;\n display: flex;\n}\n\n.arkme-redesign-rail-primary button {\n color: #3e4149;\n border-radius: 15px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n min-height: 57px;\n transition: background .18s, color .18s;\n display: flex;\n position: relative;\n}\n\n.arkme-redesign-rail-primary button span {\n letter-spacing: .01em;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-rail-primary button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-rail-primary button.is-active {\n color: #151722;\n background: #f1f2f6;\n}\n\n.arkme-redesign-rail-primary button.is-active:before {\n content: \"\";\n background: #9eadff;\n border-radius: 3px;\n width: 3px;\n height: 33px;\n position: absolute;\n left: -9px;\n}\n\n.arkme-redesign-rail-footer {\n border-top: 0 solid #ededee;\n justify-items: center;\n gap: 7px;\n margin-top: auto;\n padding-top: 0;\n display: grid;\n position: relative;\n}\n\n.arkme-redesign-rail-footer:has( > .arkme-update-rail-slot) {\n border-top-width: 1px;\n padding-top: 10px;\n}\n\n.arkme-redesign-rail-footer > button {\n color: #4b4f58;\n border-radius: 14px;\n place-items: center;\n width: 46px;\n height: 46px;\n display: grid;\n}\n\n.arkme-redesign-rail-footer > button:hover, .arkme-redesign-rail-footer > button.is-active {\n background: #f1f2f5;\n}\n\n.arkme-redesign-rail-footer:empty {\n display: none;\n}\n\n.arkme-update-rail-slot {\n width: 52px;\n height: 30px;\n position: relative;\n}\n\nbutton.arkme-update-rail {\n color: #53648e;\n cursor: pointer;\n width: 52px;\n min-height: 28px;\n font: inherit;\n background: #f1f3fa;\n border: 0;\n border-radius: 999px;\n justify-content: center;\n align-items: center;\n gap: 4px;\n padding: 0 7px;\n transition: transform .16s, background .16s, color .16s, box-shadow .16s;\n display: flex;\n box-shadow: inset 0 0 0 1px #5b70ab17;\n}\n\nbutton.arkme-update-rail:hover, button.arkme-update-rail.is-active {\n transform: translateY(-1px);\n color: #34476f !important;\n background: #e9edf8 !important;\n}\n\nbutton.arkme-update-rail.is-available {\n color: #fff !important;\n background: #f0524f !important;\n box-shadow: 0 5px 12px #e03c3933, inset 0 0 0 1px #b2232014 !important;\n}\n\nbutton.arkme-update-rail.is-available:hover, button.arkme-update-rail.is-available.is-active {\n color: #fff !important;\n background: #df4542 !important;\n box-shadow: 0 7px 16px #d736333d, inset 0 0 0 1px #961a181a !important;\n}\n\nbutton.arkme-update-rail.is-error {\n color: #b54841 !important;\n background: #fff0ee !important;\n}\n\n.arkme-update-rail span {\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n font-size: 9px;\n font-weight: 550;\n line-height: 1;\n}\n\n.arkme-update-rail svg {\n flex: none;\n}\n\n.arkme-update-rail.is-ready {\n gap: 3px;\n padding: 0 4px;\n}\n\n.arkme-update-rail.is-ready svg {\n width: 13px;\n height: 13px;\n}\n\n.arkme-update-rail.is-downloading svg {\n animation: 1.6s linear infinite arkme-update-spin;\n}\n\n.arkme-update-popover {\n z-index: 100000;\n overflow-wrap: anywhere;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.12);\n background: #fffffff7;\n border: 1px solid #cfd1d7e6;\n border-radius: 20px;\n width: 356px;\n max-width: calc(100vw - 16px);\n max-height: calc(100vh - 16px);\n padding: 18px;\n animation: .2s cubic-bezier(.2, .8, .2, 1) arkme-update-popover-in;\n position: fixed;\n bottom: 14px;\n left: 68px;\n overflow-y: auto;\n box-shadow: 0 24px 58px #1b1e2629, 0 3px 10px #1b1e260e;\n}\n\n.arkme-update-popover-heading {\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 12px;\n display: grid;\n}\n\n.arkme-update-popover-heading > div {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading span {\n color: #92959d;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-update-popover-heading h2 {\n color: #242731;\n letter-spacing: -.025em;\n margin: 0;\n font-size: 17px;\n font-weight: 600;\n}\n\n.arkme-update-popover-heading > button {\n color: #93969e;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-popover-heading > button:hover {\n color: #3d414a;\n background: #f1f2f4;\n}\n\n.arkme-update-popover-summary {\n color: #7d818a;\n margin: 13px 0 0;\n font-size: 11px;\n line-height: 1.55;\n}\n\n.arkme-update-release-notes {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n margin-top: 14px;\n padding: 5px 0;\n}\n\n.arkme-update-release-notes > div {\n grid-template-columns: 28px minmax(0, 1fr);\n align-items: center;\n gap: 10px;\n min-height: 51px;\n display: grid;\n}\n\n.arkme-update-release-notes > div + div {\n border-top: 1px solid #f0f0f2;\n}\n\n.arkme-update-release-notes > div > span {\n color: #a3a6ad;\n font-variant-numeric: tabular-nums;\n font-size: 9px;\n}\n\n.arkme-update-release-notes p {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-update-release-notes strong {\n color: #3b3f48;\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-update-release-notes small {\n color: #92959d;\n font-size: 10px;\n line-height: 1.45;\n}\n\n.arkme-update-message {\n color: #747983;\n margin: 12px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-update-message.is-error {\n color: #b54841;\n}\n\n.arkme-update-popover-actions {\n grid-template-columns: 1fr 1.45fr;\n gap: 9px;\n margin-top: 16px;\n display: grid;\n}\n\n.arkme-update-popover-actions button {\n cursor: pointer;\n height: 42px;\n font: inherit;\n border-radius: 12px;\n padding: 0;\n font-size: 12px;\n font-weight: 500;\n transition: transform .16s, background .16s, box-shadow .16s;\n border: 0 !important;\n}\n\n.arkme-update-popover-actions button:hover {\n transform: translateY(-1px);\n}\n\n.arkme-update-popover-actions .arkme-update-later {\n color: #666a73 !important;\n background: #f2f2f4 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-later:hover {\n background: #ececef !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now {\n color: #fff !important;\n background: #1c1f28 !important;\n box-shadow: 0 7px 18px #181b2324 !important;\n}\n\n.arkme-update-popover-actions .arkme-update-now:hover {\n background: #11131b !important;\n box-shadow: 0 9px 22px #181b232e !important;\n}\n\n.arkme-update-now:disabled {\n opacity: .46;\n cursor: default;\n transform: none;\n}\n\n.arkme-update-capsule {\n z-index: 10030;\n box-sizing: border-box;\n color: #171923;\n backdrop-filter: blur(20px) saturate(1.2);\n background: #ffffffed;\n border: 1px solid #cdd0d8d6;\n border-radius: 18px;\n grid-template-columns: minmax(0, 1fr) 28px;\n align-items: center;\n gap: 10px;\n width: 326px;\n max-width: calc(100vw - 16px);\n min-height: 52px;\n padding: 9px 9px 9px 14px;\n animation: .22s cubic-bezier(.2, .8, .2, 1) arkme-update-capsule-in;\n display: grid;\n position: fixed;\n top: 18px;\n left: 50%;\n transform: translateX(-50%);\n box-shadow: 0 16px 40px #1c1f2724, 0 2px 8px #1c1f270f;\n}\n\n.arkme-native-desktop .arkme-update-capsule {\n top: 62px;\n}\n\n.arkme-update-capsule-copy {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-update-capsule-copy strong {\n color: #333741;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-update-capsule-copy small {\n color: #93969e;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-update-progress {\n background: #eceef3;\n border-radius: 999px;\n height: 4px;\n overflow: hidden;\n}\n\n.arkme-update-progress span {\n border-radius: inherit;\n background: #6779b5;\n height: 100%;\n transition: width .65s cubic-bezier(.2, .7, .25, 1);\n display: block;\n}\n\n.arkme-update-progress.is-indeterminate span {\n width: 34%;\n animation: 1.25s ease-in-out infinite arkme-update-indeterminate;\n}\n\n.arkme-update-capsule > b {\n color: #656a75;\n font-variant-numeric: tabular-nums;\n text-align: right;\n font-size: 10px;\n font-weight: 500;\n}\n\n.arkme-update-capsule[data-layout=\"progress\"] {\n grid-template-columns: minmax(0, 1fr) minmax(40px, .8fr) 34px 28px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] {\n grid-template-columns: minmax(0, 1fr) auto 28px;\n width: 306px;\n}\n\n.arkme-update-capsule[data-layout=\"action\"] .arkme-update-capsule-copy small {\n -webkit-line-clamp: 3;\n white-space: normal;\n overflow-wrap: anywhere;\n -webkit-box-orient: vertical;\n font-size: 11px;\n line-height: 1.45;\n display: -webkit-box;\n}\n\n.arkme-update-capsule[data-layout=\"restarting\"] {\n grid-template-columns: minmax(0, 1fr);\n width: 218px;\n padding-right: 14px;\n}\n\n.arkme-update-capsule.is-restarting .arkme-update-capsule-copy {\n text-align: center;\n justify-self: center;\n}\n\n.arkme-update-ready-action {\n color: #fff;\n cursor: pointer;\n width: auto;\n height: 32px;\n font: inherit;\n white-space: nowrap;\n background: #242731;\n border: 0;\n border-radius: 10px;\n padding: 0 11px;\n font-size: 10px;\n font-weight: 550;\n}\n\n.arkme-update-ready-action:hover {\n background: #151821;\n}\n\n.arkme-update-ready-action:disabled {\n opacity: .65;\n cursor: wait;\n}\n\n.arkme-update-ready-action:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #6779b5;\n}\n\n.arkme-update-capsule-close {\n color: #8a8e97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n place-items: center;\n width: 28px;\n height: 28px;\n padding: 0;\n display: grid;\n}\n\n.arkme-update-capsule-close:hover {\n color: #343841;\n background: #f0f1f3;\n}\n\n@keyframes arkme-update-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes arkme-update-popover-in {\n from {\n opacity: 0;\n transform: translate(-8px, 3px) scale(.985);\n }\n}\n\n@keyframes arkme-update-capsule-in {\n from {\n opacity: 0;\n transform: translate(-50%, -8px) scale(.98);\n }\n}\n\n@keyframes arkme-update-indeterminate {\n from {\n transform: translateX(-100%);\n }\n\n to {\n transform: translateX(300%);\n }\n}\n\n.arkme-redesign-profile {\n position: relative;\n}\n\n.arkme-redesign-profile > span {\n width: 32px !important;\n height: 32px !important;\n}\n\n.arkme-redesign-profile-popover {\n z-index: 10000;\n backdrop-filter: blur(20px);\n background: #fffffff5;\n border: 1px solid #d8d9dde6;\n border-radius: 18px;\n width: 264px;\n padding: 10px;\n position: fixed;\n bottom: 14px;\n left: 64px;\n box-shadow: 0 20px 50px #1a1c2326, 0 2px 8px #1a1c230d;\n}\n\n.arkme-redesign-profile-head {\n align-items: center;\n gap: 11px;\n padding: 9px 9px 13px;\n display: flex;\n}\n\n.arkme-redesign-profile-head > span {\n text-align: left;\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-head strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-head small {\n color: #8b8f98;\n font-size: 11px;\n font-weight: 400;\n}\n\n.arkme-redesign-profile-menu {\n border-top: 1px solid #eeeeef;\n gap: 2px;\n padding-top: 6px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button {\n width: 100%;\n min-height: 50px;\n box-shadow: none;\n color: #393d46;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 11px;\n outline: 0;\n grid-template-columns: 28px minmax(0, 1fr) 16px;\n align-items: center;\n gap: 8px;\n padding: 7px 8px;\n display: grid;\n}\n\n.arkme-redesign-profile-menu button:hover {\n background: #f4f4f5;\n}\n\n.arkme-redesign-profile-menu button > span {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-profile-menu strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-profile-menu small {\n color: #92969f;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.arkme-redesign-profile-menu button > svg:last-child {\n color: #a0a3aa;\n}\n\n.arkme-redesign-native-settings-trigger {\n clip-path: inset(50%);\n width: 1px;\n height: 1px;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-panel {\n inset: var(--arkme-native-titlebar) auto 0 96px;\n z-index: 3;\n border-right: 1px solid var(--arkme-line);\n background: #fff;\n flex-direction: column;\n width: 300px;\n min-width: 0;\n padding: 0;\n display: flex;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-search {\n text-align: left;\n border-radius: 11px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 40px;\n margin: 20px 0 10px;\n padding: 0 12px;\n display: flex;\n color: #9699a1 !important;\n border: 1px solid #e1e2e5 !important;\n font-size: 11px !important;\n}\n\n.arkme-redesign-chat-search:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-chat-directory {\n flex: 1;\n min-height: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-chat-directory > section {\n background: none !important;\n}\n\n.arkme-redesign-task-section {\n z-index: 3;\n border-bottom: 1px solid #ececef;\n outline: none;\n height: 158px;\n margin: 0 6px 12px;\n position: relative;\n}\n\n.arkme-redesign-task-section-title {\n color: #767b85;\n justify-content: space-between;\n align-items: center;\n height: 28px;\n padding: 0 7px;\n display: flex;\n}\n\n.arkme-redesign-task-section-title strong {\n font-size: 12px;\n font-weight: 500;\n}\n\n.arkme-redesign-task-section-title button {\n border-radius: 7px;\n place-items: center;\n width: 24px;\n height: 24px;\n display: grid;\n}\n\n.arkme-redesign-task-section-title button:hover {\n background: #f3f3f5;\n}\n\n.arkme-redesign-task-list {\n overscroll-behavior: contain;\n scrollbar-gutter: stable;\n background: #fff;\n max-height: 128px;\n padding-bottom: 2px;\n transition: max-height .18s, box-shadow .18s, padding .18s;\n display: grid;\n position: absolute;\n top: 28px;\n left: 0;\n right: 0;\n overflow: hidden auto;\n}\n\n.arkme-redesign-task-section:hover .arkme-redesign-task-list, .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n max-height: min(360px, 100vh - 180px);\n padding-bottom: 6px;\n box-shadow: 0 14px 22px #1b1e2512;\n}\n\n.arkme-redesign-task-list > button {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n grid-template-columns: 16px minmax(0, 1fr);\n align-items: center;\n gap: 4px;\n width: 100%;\n min-width: 0;\n height: 32px;\n padding: 0 8px;\n display: grid;\n}\n\n.arkme-redesign-task-list > button:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-task-list > button.is-selected {\n color: #232630;\n background: #f0f1f4;\n}\n\n.arkme-redesign-task-state {\n justify-content: center;\n align-items: center;\n width: 16px;\n height: 20px;\n display: inline-flex;\n}\n\n.arkme-redesign-task-state.is-complete > i {\n background: #39a56b1a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n display: block;\n position: relative;\n}\n\n.arkme-redesign-task-state.is-complete > i:after {\n content: \"\";\n background: #39a56b;\n border-radius: 50%;\n position: absolute;\n inset: 2px;\n}\n\n.arkme-redesign-task-matrix {\n grid-template-columns: repeat(3, 2px);\n grid-auto-rows: 2px;\n gap: 1px;\n width: 10px;\n height: 10px;\n display: grid;\n}\n\n.arkme-redesign-task-matrix i {\n opacity: .15;\n background: #5d76e8;\n border-radius: 1px;\n animation: 1s infinite arkme-task-dot-chase;\n}\n\n.arkme-redesign-task-matrix i:nth-child(2) {\n animation-delay: .125s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(3) {\n animation-delay: .25s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(4) {\n animation-delay: .375s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(5) {\n animation-delay: .5s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(6) {\n animation-delay: .625s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(7) {\n animation-delay: .75s;\n}\n\n.arkme-redesign-task-matrix i:nth-child(8) {\n animation-delay: .875s;\n}\n\n@keyframes arkme-task-dot-chase {\n 0%, 12.4% {\n opacity: 1;\n }\n\n 12.5%, 24.9% {\n opacity: .6;\n }\n\n 25%, 37.4% {\n opacity: .35;\n }\n\n 37.5%, 100% {\n opacity: .15;\n }\n}\n\n.arkme-redesign-task-copy {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-redesign-task-copy strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-task-copy small {\n color: #9a9da5;\n flex: none;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-redesign-task-first {\n color: #555a64;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 12px);\n height: 32px;\n margin: 0 6px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.arkme-redesign-task-first:hover {\n background: #f7f7f8;\n}\n\n.arkme-redesign-content {\n inset: var(--arkme-native-titlebar) 0 0 96px;\n background: #fff;\n min-width: 0;\n min-height: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.arkme-redesign-content.has-panel {\n left: 396px;\n}\n\n.arkme-redesign-content.has-details {\n right: 360px;\n}\n\n.arkme-redesign-content.is-login-takeover {\n left: 0;\n right: 0;\n}\n\n.arkme-redesign-route-surface {\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-surface {\n background: #fff !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header {\n border-bottom: 1px solid #ececef !important;\n height: 68px !important;\n padding: 12px 16px 12px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-header h2 {\n font-size: 15px !important;\n font-weight: 600 !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-body {\n padding: 22px 22px 12px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-records {\n gap: 0 !important;\n width: 100% !important;\n}\n\n.arkme-conversation-records-reveal {\n animation: .12s ease-out both arkme-conversation-records-reveal;\n}\n\n@keyframes arkme-conversation-records-reveal {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-conversation-records-reveal {\n animation: none;\n }\n}\n\n.arkme-redesign-route-chats [data-arkme-content-presentation=\"bubble\"] p {\n font-size: 14px;\n line-height: 1.62;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer {\n padding: 0 24px 20px !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner {\n background: #fff !important;\n border: 1px solid #dfe1e6 !important;\n border-radius: 15px !important;\n gap: 8px !important;\n width: 100% !important;\n padding: 12px 13px 9px !important;\n box-shadow: 0 8px 30px #1c1f270b !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"] {\n box-shadow: none !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"][data-arkme-composer-focused=\"true\"] {\n background: color-mix(in srgb, var(--dsw-alias-bg-base, #fff) 97%, #000) !important;\n}\n\n.arkme-redesign-route-chats .arkme-conversation-composer textarea {\n min-height: 38px !important;\n padding: 0 !important;\n font-size: 14px !important;\n line-height: 22px !important;\n}\n\n.arkme-redesign-task-conversation {\n font-size: 15px;\n}\n\n.arkme-redesign-task-conversation [data-phase] {\n --dsh-chat-content-width: calc(100% - 64px);\n --dsh-composer-card-max-width: calc(100% - 32px);\n}\n\n.arkme-redesign-task-conversation [data-chat-flow] {\n width: calc(100% - 64px) !important;\n max-width: none !important;\n margin-left: 32px !important;\n margin-right: 32px !important;\n}\n\n.arkme-redesign-task-conversation textarea {\n font-size: 14px !important;\n}\n\n[data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"][data-arkme-directory-visible=\"true\"] [data-arkme-directory-mode=\"conversations\"]), [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-web-locked] [data-arkme-directory-mode=\"web-locked\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n}\n\n[data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"][data-arkme-directory-visible=\"false\"]) {\n grid-template-columns: 72px minmax(0, 1fr) 0 !important;\n}\n\n@media (width >= 1100px) {\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"] [data-arkme-directory-mode=\"contacts\"]) {\n grid-template-columns: var(--arkme-persistent-sidebar-width, 356px) minmax(0, 1fr) 0 !important;\n }\n\n [data-slot=\"root\"] > div[data-details-collapsed=\"true\"]:has([data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"true\"]:not([data-arkme-web-locked])) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n}\n\n[data-arkme-owned=\"persistent-sidebar\"][data-arkme-login-mode=\"false\"]:has( > [data-arkme-directory-mode=\"conversations\"]) > [data-arkme-owned=\"product-navigation\"] {\n flex: 0 0 72px !important;\n width: 72px !important;\n min-width: 72px !important;\n}\n\n[data-arkme-owned=\"persistent-sidebar\"] :is([data-arkme-directory-mode=\"conversations\"], [data-arkme-directory-mode=\"web-locked\"]) {\n min-width: 64px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] > :not([role=\"tree\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] {\n padding: 8px 6px 18px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button {\n justify-content: center !important;\n gap: 0 !important;\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > :not(:first-child) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child:has( > span:nth-child(2)) {\n justify-content: center !important;\n gap: 0 !important;\n width: auto !important;\n min-width: 38px !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) {\n display: contents !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:first-child {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child {\n display: contents !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child > :not([style*=\"min-width: 17px\"]) {\n display: none !important;\n}\n\n[data-arkme-avatar-only=\"true\"] [role=\"tree\"] > button > span:first-child > span:nth-child(2) > span:last-child > [style*=\"min-width: 17px\"] {\n top: 3px;\n right: 3px;\n position: absolute !important;\n}\n\n.arkme-redesign-feature-page {\n background: #fff;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n height: 100%;\n min-height: 0;\n padding: 30px 48px 36px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-feature-page > header {\n flex: none;\n margin: 0 0 22px;\n}\n\n.arkme-redesign-feature-page > header p {\n color: #8d9098;\n margin: 0 0 8px;\n font-size: 11px;\n}\n\n.arkme-redesign-feature-page > header h1 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 27px;\n font-weight: 600;\n}\n\n.arkme-redesign-feature-page > header span {\n color: #858992;\n margin-top: 10px;\n font-size: 12px;\n display: block;\n}\n\n.arkme-redesign-feature-body {\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-recordings-page {\n background: #fff;\n padding: 0;\n}\n\n.arkme-redesign-recordings-page > div {\n height: 100% !important;\n}\n\n.arkme-redesign-search-page {\n padding: 66px 0 40px;\n}\n\n.arkme-redesign-search-page > header, .arkme-redesign-search-page > .arkme-redesign-feature-body {\n width: min(980px, 100% - 80px);\n margin-left: auto;\n margin-right: auto;\n}\n\n.arkme-redesign-search-page > header {\n margin-bottom: 28px;\n}\n\n.arkme-redesign-search-page > header h1 {\n font-size: 32px;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body {\n overflow-y: auto;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div {\n width: 100% !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-redesign-feature-body > div > header {\n display: none !important;\n}\n\n.arkme-redesign-search-page .arkme-search-box {\n box-shadow: 0 8px 28px #1c1f2709;\n color: #646872 !important;\n background: #fff !important;\n border: 1px solid #e1e2e5 !important;\n border-radius: 15px !important;\n gap: 12px !important;\n height: 68px !important;\n padding: 0 20px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"] {\n font-size: 14px !important;\n}\n\n.arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder {\n color: #92959d;\n}\n\n.arkme-redesign-search-page .arkme-search-history, .arkme-redesign-search-page .arkme-search-quick {\n margin: 24px 0 0 !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history > div, .arkme-redesign-search-page .arkme-search-quick > div {\n gap: 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button, .arkme-redesign-search-page .arkme-search-quick button {\n text-align: left;\n overflow: hidden;\n color: #30333b !important;\n border: 0 !important;\n border-bottom: 1px solid #e6e7e9 !important;\n border-radius: 0 !important;\n justify-content: space-between !important;\n align-items: center !important;\n gap: 14px !important;\n width: 100% !important;\n height: 52px !important;\n padding: 0 6px !important;\n font-size: 12px !important;\n display: flex !important;\n}\n\n.arkme-redesign-search-page .arkme-search-history button span, .arkme-redesign-search-page .arkme-search-quick button span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.arkme-redesign-plugins-page {\n background: #fff;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: #fff !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded header {\n display: none !important;\n}\n\n.arkme-extension-toolbar {\n align-items: center;\n gap: 12px;\n height: 46px;\n display: flex;\n}\n\n.arkme-extension-toolbar label {\n color: #8e929a;\n border: 1px solid #e1e2e5;\n border-radius: 12px;\n flex: 1;\n align-items: center;\n gap: 10px;\n min-width: 0;\n height: 44px;\n padding: 0 14px;\n display: flex;\n}\n\n.arkme-extension-toolbar input {\n color: #262932;\n background: none;\n border: 0;\n outline: 0;\n flex: 1;\n min-width: 0;\n font-size: 12px;\n}\n\n.arkme-extension-toolbar > button {\n border-radius: 11px;\n height: 38px;\n padding: 0 15px;\n font-size: 11px;\n border: 1px solid #e1e2e5 !important;\n}\n\n.arkme-extension-toolbar > button:hover {\n background: #f6f6f7;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded nav {\n width: 420px;\n height: 38px !important;\n padding: 0 !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-center-embedded main {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n align-content: start;\n gap: 12px;\n padding: 16px 0 0 !important;\n display: grid !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card {\n background: #fff !important;\n border: 1px solid #e3e4e7 !important;\n border-radius: 15px !important;\n min-height: 138px !important;\n margin: 0 !important;\n padding: 18px !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-card:hover {\n background: #fafafa !important;\n border-color: #d5d7dc !important;\n}\n\n.arkme-redesign-plugins-page .arkme-extension-grid-span, .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"status\"], .arkme-redesign-plugins-page .arkme-extension-center-embedded main > [role=\"alert\"] {\n grid-column: 1 / -1;\n}\n\n@keyframes arkme-icon-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.arkme-icon-spin {\n animation: .8s linear infinite arkme-icon-spin;\n}\n\n@media (prefers-reduced-motion: reduce) {\n [data-arkme-voice] .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-redesign-settings-surface {\n color: #20232c;\n background: none;\n width: 100%;\n height: auto;\n overflow: visible;\n}\n\n.arkme-redesign-settings-shell {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n\n.arkme-redesign-settings-profile {\n align-items: center;\n gap: 16px;\n padding: 0 0 24px;\n display: flex;\n}\n\n.arkme-redesign-settings-profile > div:nth-child(2) {\n min-width: 0;\n}\n\n.arkme-redesign-settings-profile h1 {\n color: #20232c;\n letter-spacing: -.03em;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0 0 6px;\n font-size: 24px;\n font-weight: 600;\n line-height: 30px;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p {\n color: #858992;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 13px;\n line-height: 18px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-profile p > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.arkme-account-profile-qr {\n color: #858992;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 24px;\n height: 24px;\n margin: 0;\n padding: 2px;\n display: inline-flex;\n}\n\n.arkme-account-profile-qr:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-profile-qr svg {\n width: 20px;\n height: 20px;\n display: block;\n}\n\n.arkme-redesign-settings-group {\n background: none;\n border: 0;\n border-bottom: 1px solid #e1e2e5;\n border-radius: 0;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-settings-group:last-child {\n border-bottom: 0;\n}\n\n.arkme-redesign-settings-group > h2 {\n color: #8a8e96;\n border-bottom: 1px solid #ededee;\n margin: 0;\n padding: 15px 1px 10px;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n}\n\n.arkme-redesign-settings-group > div {\n padding: 0;\n}\n\n.arkme-redesign-setting-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n text-decoration: none;\n display: grid;\n}\n\n.arkme-redesign-setting-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-redesign-setting-row, a.arkme-redesign-setting-row {\n cursor: pointer;\n}\n\nbutton.arkme-redesign-setting-row:hover, a.arkme-redesign-setting-row:hover {\n color: #53617d;\n}\n\n.arkme-redesign-setting-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-redesign-setting-row > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > strong.is-danger {\n color: #b54841;\n}\n\n.arkme-redesign-setting-summary {\n color: #858992;\n text-align: right;\n white-space: nowrap;\n text-overflow: ellipsis;\n max-width: 360px;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-redesign-setting-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-info-row {\n box-sizing: border-box;\n width: 100%;\n min-height: 54px;\n color: inherit;\n font: inherit;\n text-align: left;\n background: none;\n border: 0;\n border-bottom: 1px solid #ededee;\n grid-template-columns: 26px minmax(0, 1fr) auto 18px;\n align-items: center;\n gap: 10px;\n padding: 9px 1px;\n display: grid;\n}\n\n.arkme-account-info-row:last-child {\n border-bottom: 0;\n}\n\nbutton.arkme-account-info-row {\n cursor: pointer;\n}\n\n.arkme-account-info-row:disabled {\n opacity: .6;\n cursor: default;\n}\n\n.arkme-account-info-icon {\n color: #6f7580;\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 26px;\n display: inline-flex;\n}\n\n.arkme-account-info-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-account-info-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-account-info-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-account-info-action {\n color: #858992;\n white-space: nowrap;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-info-row > svg {\n color: #8d929b;\n}\n\n.arkme-account-feedback {\n color: #b54841;\n align-items: flex-start;\n gap: 6px;\n margin: 8px 0 14px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-account-dialog-backdrop {\n z-index: 50;\n background: #12141a6b;\n justify-content: center;\n align-items: center;\n padding: 18px;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.arkme-account-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n width: min(420px, 100vw - 36px);\n max-height: calc(100vh - 56px);\n overflow: auto;\n box-shadow: 0 18px 52px #11182738;\n}\n\n.arkme-account-dialog > header {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n height: 58px;\n padding: 0 16px 0 20px;\n display: flex;\n}\n\n.arkme-account-dialog h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 650;\n line-height: 24px;\n}\n\n.arkme-account-dialog > header button {\n color: #8d929b;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n width: 34px;\n height: 34px;\n}\n\n.arkme-account-qr-card {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #ededee;\n border-radius: 14px;\n justify-items: center;\n gap: 7px;\n width: 270px;\n margin: 22px auto 16px;\n padding: 24px 22px 22px;\n display: grid;\n}\n\n.arkme-account-qr-card strong {\n margin-top: 4px;\n font-size: 17px;\n font-weight: 650;\n line-height: 23px;\n}\n\n.arkme-account-qr-card span, .arkme-account-qr-card small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-qr-card img {\n width: 180px;\n height: 180px;\n margin-top: 8px;\n}\n\n.arkme-account-form {\n gap: 12px;\n padding: 18px 20px 20px;\n display: grid;\n}\n\n.arkme-account-form label {\n color: #5f6570;\n gap: 7px;\n font-size: 12px;\n line-height: 18px;\n display: grid;\n}\n\n.arkme-account-form input {\n box-sizing: border-box;\n color: #20232c;\n width: 100%;\n height: 42px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n outline: none;\n padding: 0 12px;\n}\n\n.arkme-account-form input:focus {\n border-color: #9aa7c2;\n box-shadow: 0 0 0 3px #53617d1f;\n}\n\n.arkme-account-rule {\n color: #858992;\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-code-row {\n grid-template-columns: minmax(0, 1fr) 92px;\n gap: 8px;\n display: grid;\n}\n\n.arkme-account-code-row button {\n color: #343944;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n}\n\n.arkme-account-code-row button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-actions {\n justify-content: flex-end;\n gap: 10px;\n padding-top: 6px;\n display: flex;\n}\n\n.arkme-account-dialog-actions button {\n color: #343944;\n min-width: 78px;\n height: 36px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 6px;\n padding: 0 14px;\n display: inline-flex;\n}\n\n.arkme-account-dialog-actions button[type=\"submit\"], .arkme-account-dialog-actions button:last-child {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-account-dialog-actions button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-account-dialog-status {\n color: #13a85b;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-account-dialog-status.is-error {\n color: #b54841;\n}\n\n.arkme-redesign-version-row {\n grid-template-columns: minmax(0, 1fr) minmax(150px, auto) auto 18px;\n}\n\n.arkme-redesign-version-row.is-without-action {\n grid-template-columns: minmax(0, 1fr) auto 18px;\n}\n\n.arkme-redesign-version-copy {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-version-copy > strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-copy > small {\n color: #858992;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-redesign-version-value {\n color: #858992;\n white-space: nowrap;\n justify-self: end;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-version-action-slot {\n justify-content: flex-end;\n display: inline-flex;\n}\n\n.arkme-redesign-trailing-slot {\n width: 18px;\n height: 1px;\n}\n\nbutton.arkme-redesign-update-button {\n color: #343944;\n min-width: 72px;\n height: 30px;\n font: inherit;\n white-space: nowrap;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n gap: 5px;\n padding: 0 11px;\n font-size: 11px;\n display: inline-flex;\n}\n\nbutton.arkme-redesign-update-button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\nbutton.arkme-redesign-update-button:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-redesign-settings-group:has(.arkme-redesign-balance-row) {\n overflow: visible;\n}\n\n.arkme-redesign-balance-row {\n grid-template-columns: max-content max-content minmax(0, 1fr) 18px;\n column-gap: 20px;\n}\n\n.arkme-redesign-balance-row.is-without-reserved {\n grid-template-columns: max-content minmax(0, 1fr) 18px;\n}\n\n.arkme-redesign-balance-main {\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n gap: 2px;\n padding: 0;\n display: grid;\n}\n\n.arkme-redesign-balance-main > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-balance-main > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-balance-usage {\n color: #8a8e96;\n white-space: nowrap;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-redesign-reserved-balance {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-recharge-trigger {\n justify-self: end;\n}\n\n.arkme-redesign-reserved-title {\n align-items: center;\n gap: 5px;\n width: fit-content;\n display: inline-flex;\n position: relative;\n}\n\n.arkme-redesign-reserved-title > strong {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.arkme-redesign-reserved-balance > small {\n color: #858992;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-redesign-reserved-help {\n box-sizing: border-box;\n color: #858992;\n cursor: help;\n border: 1px solid #a6aab2;\n border-radius: 50%;\n place-items: center;\n width: 15px;\n height: 15px;\n font-size: 10px;\n font-weight: 600;\n line-height: 1;\n display: inline-grid;\n}\n\n.arkme-redesign-reserved-help:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #7b8cad;\n}\n\n.arkme-redesign-reserved-title > [role=\"tooltip\"] {\n box-sizing: border-box;\n z-index: 20;\n color: #fff;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n background: #2e323b;\n border-radius: 8px;\n width: 240px;\n padding: 9px 11px;\n font-size: 11px;\n font-weight: 400;\n line-height: 17px;\n transition: opacity .12s, transform .12s, visibility .12s;\n position: absolute;\n bottom: calc(100% + 8px);\n left: calc(100% - 7.5px);\n transform: translate(-50%, 2px);\n box-shadow: 0 6px 18px #181b222e;\n}\n\n.arkme-redesign-reserved-help:hover ~ [role=\"tooltip\"], .arkme-redesign-reserved-help:focus ~ [role=\"tooltip\"] {\n opacity: 1;\n visibility: visible;\n transform: translate(-50%);\n}\n\n.arkme-billing-backdrop {\n z-index: 120;\n backdrop-filter: blur(3px);\n background: #181b223d;\n place-items: center;\n padding: 28px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-billing-recharge-dialog, .arkme-billing-payment-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #dedfe3;\n border-radius: 20px;\n width: min(620px, 100%);\n max-height: min(720px, 100vh - 56px);\n overflow-y: auto;\n box-shadow: 0 24px 72px #191c232e;\n}\n\n.arkme-billing-payment-dialog {\n width: min(420px, 100%);\n}\n\n.arkme-billing-dialog-header {\n border-bottom: 1px solid #ececef;\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n min-height: 78px;\n padding: 20px 22px 16px;\n display: flex;\n}\n\n.arkme-billing-dialog-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n line-height: 25px;\n}\n\n.arkme-billing-dialog-header p {\n overflow-wrap: anywhere;\n color: #8a8e96;\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-dialog-header > button {\n color: #777c85;\n width: 32px;\n height: 32px;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n place-items: center;\n font-size: 22px;\n display: grid;\n}\n\n.arkme-billing-dialog-header > button:hover {\n color: #20232c;\n background: #f3f3f5;\n}\n\n.arkme-billing-dialog-body {\n padding: 18px 22px 22px;\n}\n\n.arkme-billing-dialog-balance {\n border-bottom: 1px solid #ececef;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n column-gap: 12px;\n min-height: 48px;\n padding: 0 2px 16px;\n display: grid;\n}\n\n.arkme-billing-dialog-balance > span {\n color: #8a8e96;\n grid-column: 1;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-billing-dialog-balance > strong {\n grid-column: 1;\n font-size: 22px;\n font-weight: 600;\n line-height: 28px;\n}\n\n.arkme-billing-dialog-balance > button, .arkme-billing-error > button {\n color: #626772;\n height: 30px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n grid-area: 1 / 2 / span 2;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-billing-products-section, .arkme-billing-payment-section {\n padding-top: 17px;\n}\n\n.arkme-billing-products-section h3, .arkme-billing-payment-section h3 {\n color: #747984;\n margin: 0 0 11px;\n font-size: 12px;\n font-weight: 500;\n line-height: 18px;\n}\n\n.arkme-billing-product-grid {\n width: 100%;\n}\n\n.arkme-billing-product-grid > button {\n color: #20232c;\n min-width: 0;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 11px;\n align-content: center;\n gap: 4px;\n padding: 9px 11px;\n display: grid;\n}\n\n.arkme-billing-product-grid > button:hover {\n background: #f8f8f9;\n border-color: #cfd2d8;\n}\n\n.arkme-billing-product-grid > button.is-selected {\n border-color: #75839e;\n box-shadow: 0 0 0 1px #75839e;\n}\n\n.arkme-billing-product-grid > button > span {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-billing-product-grid > button > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 19px;\n}\n\n.arkme-billing-payment-actions {\n flex-wrap: wrap;\n gap: 10px;\n display: flex;\n}\n\n.arkme-billing-payment-actions > button {\n color: #333842;\n min-width: 154px;\n height: 38px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 10px;\n justify-content: center;\n align-items: center;\n gap: 8px;\n padding: 0 14px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.arkme-billing-payment-actions > button:hover {\n background: #f7f7f8;\n border-color: #cfd3da;\n}\n\n.arkme-billing-payment-actions > button:disabled, .arkme-billing-product-grid > button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-billing-platform-icon {\n flex: none;\n width: 18px;\n height: 18px;\n}\n\n.arkme-billing-platform-icon.is-alipay {\n color: #1677ff;\n}\n\n.arkme-billing-platform-icon.is-wechat {\n color: #07c160;\n}\n\n.arkme-billing-state {\n color: #858992;\n margin: 12px 0 2px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-error {\n color: #b54841;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n margin-top: 10px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-billing-error.is-purchase {\n justify-content: flex-start;\n}\n\n.arkme-billing-payment-content {\n text-align: center;\n justify-items: center;\n gap: 10px;\n padding: 28px 24px 18px;\n display: grid;\n}\n\n.arkme-billing-payment-content > .arkme-billing-platform-icon {\n width: 38px;\n height: 38px;\n margin-bottom: 4px;\n}\n\n.arkme-billing-payment-content > img {\n border-radius: 10px;\n width: 210px;\n height: 210px;\n}\n\n.arkme-billing-payment-content > strong {\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-billing-payment-content > p {\n color: #858992;\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-billing-payment-content.is-paid > strong {\n color: #16794f;\n font-size: 18px;\n line-height: 25px;\n}\n\n.arkme-billing-payment-content.is-paid > .arkme-billing-error {\n justify-content: center;\n}\n\n.arkme-billing-payment-content.is-crediting > strong {\n color: #335f9e;\n}\n\n.arkme-billing-dialog-actions {\n flex-wrap: wrap;\n justify-content: center;\n gap: 9px;\n padding: 0 22px 20px;\n display: flex;\n}\n\n.arkme-billing-dialog-actions > button, .arkme-billing-primary-action {\n color: #3c424d;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n padding: 0 14px;\n font-size: 12px;\n}\n\n.arkme-billing-dialog-actions > .arkme-billing-primary-action, .arkme-billing-payment-content > .arkme-billing-primary-action {\n color: #fff;\n background: #20232d;\n border-color: #20232d;\n}\n\n.arkme-redesign-settings-error {\n color: #b54841;\n background: #fff3f0;\n border-radius: 10px;\n margin: -8px 0 28px;\n padding: 10px 13px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-remote-settings-dialog-backdrop {\n z-index: 1150;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.arkme-remote-settings-dialog {\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n flex-direction: column;\n width: min(720px, 100vw - 48px);\n max-height: min(720px, 100vh - 48px);\n display: flex;\n overflow: hidden;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-page-header {\n box-sizing: border-box;\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 20px;\n min-height: 74px;\n padding: 0 24px 0 28px;\n display: flex;\n}\n\n.arkme-remote-page-header > div {\n min-width: 0;\n}\n\n.arkme-remote-page-header h1 {\n color: #20232c;\n letter-spacing: -.02em;\n margin: 0;\n font-size: 18px;\n font-weight: 620;\n line-height: 25px;\n}\n\n.arkme-remote-page-header p {\n color: #8b9098;\n margin: 3px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-settings-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n flex: none;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-settings-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-settings-dialog-body {\n overscroll-behavior: contain;\n gap: 28px;\n padding: 24px 28px 28px;\n display: grid;\n overflow-y: auto;\n}\n\n.arkme-remote-section {\n gap: 13px;\n display: grid;\n}\n\n.arkme-remote-section-header {\n justify-content: space-between;\n align-items: flex-end;\n gap: 18px;\n min-height: 34px;\n display: flex;\n}\n\n.arkme-remote-section-header > div:first-child {\n min-width: 0;\n}\n\n.arkme-remote-section-header h2 {\n color: #292c34;\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n line-height: 21px;\n}\n\n.arkme-remote-section-header p {\n color: #8b9098;\n margin: 2px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-section-header > div:last-child {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-remote-icon-button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-icon-button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-add-button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 5px;\n padding: 0 12px;\n font-size: 11px;\n font-weight: 550;\n display: inline-flex;\n}\n\n.arkme-remote-add-button:hover {\n background: #343944;\n}\n\n.arkme-remote-add-button:disabled, .arkme-remote-icon-button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-settings-card {\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-allow-row {\n border-bottom: 1px solid #ededee;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 60px;\n padding: 0 18px;\n display: flex;\n}\n\n.arkme-remote-allow-row > div {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-allow-row strong, .arkme-remote-device-row strong, .arkme-remote-name-row strong {\n color: #343944;\n font-size: 12px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.arkme-remote-allow-row span, .arkme-remote-device-row span, .arkme-remote-name-row small {\n color: #8b9098;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 10px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-remote-switch {\n cursor: pointer;\n background: #d7d9dd;\n border: 0;\n border-radius: 999px;\n flex: none;\n width: 40px;\n height: 23px;\n padding: 0;\n transition: background .16s;\n position: relative;\n}\n\n.arkme-remote-switch > span {\n background: #fff;\n border-radius: 50%;\n width: 17px;\n height: 17px;\n transition: transform .16s;\n position: absolute;\n top: 3px;\n left: 3px;\n box-shadow: 0 1px 3px #14182038;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] {\n background: #3b9cf5;\n}\n\n.arkme-remote-switch[aria-checked=\"true\"] > span {\n transform: translateX(17px);\n}\n\n.arkme-remote-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-device-row {\n border-bottom: 1px solid #ededee;\n grid-template-columns: 24px minmax(0, 1fr) auto;\n align-items: center;\n gap: 11px;\n min-height: 64px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-device-row:last-child {\n border-bottom: 0;\n}\n\n.arkme-remote-device-row > svg {\n color: #68707c;\n}\n\n.arkme-remote-device-row > div {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-device-row > button {\n color: #5d626c;\n min-height: 30px;\n font: inherit;\n cursor: pointer;\n background: #f3f3f4;\n border: 0;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 10px;\n}\n\n.arkme-remote-device-row > button:hover {\n color: #b54841;\n background: #fff0ed;\n}\n\n.arkme-remote-device-row > button:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-remote-empty-row {\n color: #989ca3;\n align-items: center;\n gap: 11px;\n min-height: 52px;\n padding: 0 18px;\n font-size: 11px;\n display: flex;\n}\n\n.arkme-remote-empty-row > svg {\n color: #a2a6ad;\n}\n\n.arkme-remote-name-row {\n color: #727780;\n width: 100%;\n min-height: 62px;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n grid-template-columns: 24px minmax(0, 1fr) 20px;\n align-items: center;\n gap: 11px;\n padding: 0 18px;\n display: grid;\n}\n\n.arkme-remote-name-row:hover {\n background: #fafafb;\n}\n\n.arkme-remote-name-row > span {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-remote-name-row small {\n display: block;\n}\n\n.arkme-remote-rename {\n border-top: 1px solid #ededee;\n grid-template-columns: minmax(0, 1fr) auto auto;\n gap: 7px;\n padding: 12px 18px;\n display: grid;\n}\n\n.arkme-remote-rename input {\n box-sizing: border-box;\n color: #20232c;\n min-width: 0;\n height: 34px;\n font: inherit;\n background: #fff;\n border: 1px solid #dfe1e5;\n border-radius: 9px;\n outline: 0;\n padding: 0 10px;\n font-size: 12px;\n}\n\n.arkme-remote-rename input:focus {\n border-color: #6eb3f3;\n box-shadow: 0 0 0 3px #3b9cf51f;\n}\n\n.arkme-remote-rename button {\n color: #4f5560;\n min-height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e0e1e4;\n border-radius: 9px;\n padding: 0 11px;\n font-size: 11px;\n}\n\n.arkme-remote-rename button[type=\"submit\"] {\n color: #fff;\n background: #20232c;\n border-color: #20232c;\n}\n\n.arkme-remote-rename button:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-remote-error {\n margin: -22px 0 0;\n}\n\n.arkme-remote-dialog-backdrop {\n z-index: 1200;\n box-sizing: border-box;\n backdrop-filter: blur(1.5px);\n background: #16181d47;\n place-items: center;\n padding: 24px;\n display: grid;\n position: fixed;\n inset: 0;\n overflow: auto;\n}\n\n.arkme-remote-dialog {\n box-sizing: border-box;\n color: #20232c;\n background: #fff;\n border: 1px solid #14182014;\n border-radius: 19px;\n width: min(440px, 100vw - 32px);\n max-height: calc(100vh - 48px);\n padding: 28px;\n position: relative;\n overflow: auto;\n box-shadow: 0 18px 54px #11141b2e;\n}\n\n.arkme-remote-dialog-close {\n color: #777c85;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 9px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n position: absolute;\n top: 16px;\n right: 16px;\n}\n\n.arkme-remote-dialog-close:hover {\n color: #20232c;\n background: #f3f3f4;\n}\n\n.arkme-remote-dialog-symbol {\n color: #343944;\n justify-content: center;\n align-items: center;\n gap: 9px;\n height: 38px;\n display: flex;\n}\n\n.arkme-remote-dialog-symbol > span {\n background: #d6d8dc;\n width: 28px;\n height: 1px;\n}\n\n.arkme-remote-dialog > header {\n text-align: center;\n margin: 12px 0 22px;\n}\n\n.arkme-remote-dialog h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 19px;\n font-weight: 620;\n line-height: 27px;\n}\n\n.arkme-remote-dialog header p {\n color: #858992;\n margin: 6px 0 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-remote-pairing-tabs {\n box-sizing: border-box;\n background: #f1f1f2;\n border-radius: 11px;\n grid-template-columns: 1fr 1fr;\n gap: 3px;\n height: 38px;\n padding: 3px;\n display: grid;\n}\n\n.arkme-remote-pairing-tabs button {\n color: #737881;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n color: #252831;\n background: #fff;\n box-shadow: 0 1px 3px #14182017;\n}\n\n.arkme-remote-pairing-display {\n box-sizing: border-box;\n background: #fff;\n border: 1px solid #e5e6e8;\n border-radius: 16px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 308px;\n margin-top: 14px;\n padding: 24px;\n display: flex;\n position: relative;\n}\n\n.arkme-remote-pairing-display > img {\n width: 232px;\n height: 232px;\n image-rendering: pixelated;\n display: block;\n}\n\n.arkme-remote-pairing-display > p {\n color: #8b9098;\n text-align: center;\n margin: 10px 0 0;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-remote-pairing-code {\n color: #20232c;\n letter-spacing: .17em;\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n user-select: all;\n font-size: 33px;\n font-weight: 620;\n line-height: 46px;\n}\n\n.arkme-remote-pairing-tools {\n gap: 4px;\n display: flex;\n position: absolute;\n bottom: 12px;\n right: 12px;\n}\n\n.arkme-remote-pairing-tools button {\n color: #8a8f97;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n}\n\n.arkme-remote-pairing-tools button:hover {\n color: #343944;\n background: #f3f3f4;\n}\n\n.arkme-remote-pairing-expired {\n text-align: center;\n justify-items: center;\n gap: 7px;\n display: grid;\n}\n\n.arkme-remote-pairing-expired strong {\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-remote-pairing-expired p {\n color: #8b9098;\n margin: 0;\n font-size: 11px;\n}\n\n.arkme-remote-pairing-expired button {\n color: #fff;\n min-height: 32px;\n font: inherit;\n cursor: pointer;\n background: #20232c;\n border: 0;\n border-radius: 9px;\n margin-top: 7px;\n padding: 0 12px;\n font-size: 11px;\n}\n\n.arkme-remote-dialog-note {\n color: #858992;\n align-items: flex-start;\n gap: 7px;\n margin: 14px 2px 0;\n font-size: 10px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-remote-dialog-note > svg {\n color: #5e856d;\n flex: none;\n margin-top: 1px;\n}\n\n.arkme-remote-settings-close:focus-visible, .arkme-remote-icon-button:focus-visible, .arkme-remote-add-button:focus-visible, .arkme-remote-switch:focus-visible, .arkme-remote-device-row > button:focus-visible, .arkme-remote-name-row:focus-visible, .arkme-remote-rename button:focus-visible, .arkme-remote-dialog button:focus-visible {\n outline-offset: 2px;\n outline: 2px solid #3b9cf5;\n}\n\n@media (width <= 520px) {\n .arkme-remote-settings-dialog-backdrop {\n padding: 10px;\n }\n\n .arkme-remote-settings-dialog {\n border-radius: 17px;\n width: calc(100vw - 20px);\n max-height: calc(100vh - 20px);\n }\n\n .arkme-remote-page-header {\n min-height: 68px;\n padding: 0 16px 0 20px;\n }\n\n .arkme-remote-page-header p {\n display: none;\n }\n\n .arkme-remote-settings-dialog-body {\n gap: 24px;\n padding: 20px 18px 22px;\n }\n\n .arkme-remote-section-header p {\n display: none;\n }\n\n .arkme-remote-device-row {\n grid-template-columns: 22px minmax(0, 1fr);\n padding-top: 10px;\n padding-bottom: 10px;\n }\n\n .arkme-remote-device-row > button {\n grid-column: 2;\n justify-self: start;\n }\n\n .arkme-remote-dialog-backdrop {\n padding: 12px;\n }\n\n .arkme-remote-dialog {\n padding: 24px 20px;\n }\n\n .arkme-remote-pairing-display {\n min-height: 282px;\n padding: 18px;\n }\n\n .arkme-remote-pairing-display > img {\n width: min(224px, 100%);\n height: auto;\n }\n\n .arkme-remote-pairing-code {\n letter-spacing: .12em;\n font-size: 26px;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-remote-switch, .arkme-remote-switch > span {\n transition: none;\n }\n}\n\n.arkme-redesign-model-settings {\n color: #20232c;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n\n.arkme-redesign-model-settings > header {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 42px 0 22px;\n}\n\n.arkme-redesign-model-settings > header button {\n color: #525762;\n height: 34px;\n font: inherit;\n cursor: pointer;\n background: #fff;\n border: 1px solid #e1e2e5;\n border-radius: 18px;\n align-items: center;\n gap: 4px;\n padding: 0 10px 0 7px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.arkme-redesign-model-settings > header button:hover {\n color: #20232c;\n background: #f6f6f7;\n}\n\n.arkme-redesign-model-settings-body {\n width: min(760px, 100% - 96px);\n margin: 0 auto;\n padding: 0 0 68px;\n}\n\n.arkme-redesign-model-settings-body > * {\n max-width: none !important;\n}\n\n.arkme-redesign-task-start {\n place-items: center;\n width: 100%;\n height: 100%;\n padding: 28px 58px 64px;\n display: grid;\n}\n\n.arkme-redesign-task-start-inner {\n text-align: center;\n width: min(760px, 88%);\n transform: translateY(-12px);\n}\n\n.arkme-redesign-task-greeting {\n justify-content: center;\n align-items: center;\n gap: 12px;\n margin-bottom: 24px;\n display: flex;\n}\n\n.arkme-redesign-task-greeting img {\n object-fit: contain;\n flex: none;\n width: 62px;\n height: 16px;\n display: block;\n}\n\n.arkme-redesign-task-start h1 {\n letter-spacing: -.03em;\n margin: 0;\n font-size: 29px;\n font-weight: 600;\n line-height: 1.15;\n}\n\n.arkme-redesign-hero-input {\n border: 1px solid var(--arkme-focus);\n text-align: left;\n background: #fff;\n border-radius: 17px;\n grid-template-rows: minmax(56px, 1fr) auto;\n min-height: 142px;\n padding: 17px 16px 13px 20px;\n display: grid;\n box-shadow: 0 8px 30px #1c1f270b;\n}\n\n.arkme-redesign-hero-input:focus-within {\n border-color: #aebdff;\n box-shadow: 0 10px 38px #36488c13, 0 0 0 3px #91a4ff12;\n}\n\n.arkme-redesign-hero-input textarea {\n resize: none;\n color: #20232c;\n border: 0;\n outline: 0;\n width: 100%;\n min-height: 58px;\n padding: 0;\n font-size: 15px;\n line-height: 1.6;\n}\n\n.arkme-redesign-hero-input textarea::placeholder {\n color: #a3a6ad;\n}\n\n.arkme-redesign-hero-controls {\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n display: flex;\n}\n\n.arkme-redesign-hero-controls > div {\n align-items: center;\n gap: 7px;\n display: flex;\n}\n\n.arkme-redesign-source-button {\n border-radius: 22px;\n align-items: center;\n gap: 8px;\n height: 36px;\n padding: 0 13px;\n font-size: 13px;\n display: flex;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool, .arkme-redesign-send-task {\n border-radius: 50%;\n place-items: center;\n width: 40px;\n height: 40px;\n display: grid;\n border: 1px solid #e2e3e6 !important;\n}\n\n.arkme-redesign-round-tool:hover {\n background: #f5f5f6;\n}\n\n.arkme-redesign-send-task {\n color: #fff !important;\n background: #20232d !important;\n border: 0 !important;\n}\n\n.arkme-redesign-send-task:disabled {\n cursor: default;\n background: #d9dade !important;\n}\n\n.arkme-redesign-task-error {\n color: #b84747;\n text-align: left;\n margin-top: 10px;\n font-size: 12px;\n}\n\n.arkme-redesign-starters {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n width: calc(100% - 18px);\n margin: 22px auto 0;\n display: grid;\n}\n\n.arkme-redesign-starters > button {\n text-align: left;\n border-right: 1px solid #e7e7e9;\n align-items: center;\n gap: 12px;\n min-width: 0;\n min-height: 48px;\n padding: 4px 18px;\n display: flex;\n}\n\n.arkme-redesign-starters > button:last-child {\n border-right: 0;\n}\n\n.arkme-redesign-starters > button:hover strong {\n color: #5365ad;\n}\n\n.arkme-redesign-starter-icon {\n color: #30333b;\n border: 1px solid #e2e3e6;\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n}\n\n.arkme-redesign-starters > button > span:last-child {\n gap: 4px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-redesign-starters strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 13px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-redesign-starters small {\n color: #8d919a;\n font-size: 12px;\n}\n\n.arkme-redesign-details {\n z-index: 4;\n top: var(--arkme-native-titlebar);\n background: #fff;\n border-left: 1px solid #e7e7e9;\n width: 360px;\n position: absolute;\n bottom: 0;\n right: 0;\n overflow: hidden;\n}\n\n.arkme-redesign-calendar-overlay {\n z-index: 14;\n inset: var(--arkme-native-titlebar) 0 0;\n pointer-events: none;\n position: absolute;\n}\n\n.arkme-redesign-calendar-overlay > * {\n pointer-events: auto;\n}\n\n.arkme-redesign-overlays {\n z-index: 20;\n pointer-events: none;\n position: absolute;\n inset: 0;\n}\n\n.arkme-redesign-overlays > * {\n pointer-events: auto;\n}\n\n.arkme-workspace-dialog-backdrop {\n z-index: 60;\n backdrop-filter: blur(2px);\n background: #181b2238;\n place-items: center;\n padding: 28px;\n display: grid;\n position: absolute;\n inset: 0;\n}\n\n.arkme-workspace-dialog {\n background: #fff;\n border: 1px solid #dddfe4;\n border-radius: 18px;\n grid-template-rows: auto auto minmax(0, 1fr) auto;\n width: min(640px, 100%);\n height: min(620px, 100%);\n min-height: 420px;\n display: grid;\n overflow: hidden;\n box-shadow: 0 24px 70px #191c232e;\n}\n\n.arkme-workspace-dialog > header {\n justify-content: space-between;\n align-items: flex-start;\n gap: 18px;\n padding: 22px 24px 16px;\n display: flex;\n}\n\n.arkme-workspace-dialog > header span {\n color: #8b8e96;\n font-size: 10px;\n}\n\n.arkme-workspace-dialog > header h2 {\n margin: 5px 0 0;\n font-size: 19px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog > header > button {\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-dialog > nav {\n border-top: 1px solid #ececef;\n border-bottom: 1px solid #ececef;\n align-items: center;\n gap: 2px;\n min-height: 42px;\n padding: 0 22px;\n display: flex;\n overflow-x: auto;\n}\n\n.arkme-workspace-dialog > nav > span {\n white-space: nowrap;\n color: #9a9da5;\n align-items: center;\n gap: 2px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > nav button {\n color: #666a73;\n border-radius: 8px;\n align-items: center;\n gap: 5px;\n height: 30px;\n padding: 0 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-directory-list {\n min-height: 0;\n padding: 10px 14px;\n overflow-y: auto;\n}\n\n.arkme-workspace-directory-list > button {\n text-align: left;\n border-radius: 11px;\n grid-template-columns: 34px minmax(0, 1fr) 18px;\n align-items: center;\n gap: 9px;\n width: 100%;\n height: 48px;\n padding: 0 11px;\n display: grid;\n}\n\n.arkme-workspace-directory-list > button:hover {\n background: #f5f5f7;\n}\n\n.arkme-workspace-directory-list > button > span {\n color: #636873;\n border: 1px solid #e5e6e9;\n border-radius: 9px;\n place-items: center;\n width: 32px;\n height: 32px;\n display: grid;\n}\n\n.arkme-workspace-directory-list strong {\n white-space: nowrap;\n text-overflow: ellipsis;\n font-size: 12px;\n font-weight: 500;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog-status, .arkme-workspace-dialog-error {\n color: #8c9098;\n text-align: center;\n padding: 54px 16px;\n font-size: 12px;\n}\n\n.arkme-workspace-dialog-error {\n color: #b94b4b;\n}\n\n.arkme-workspace-dialog > footer {\n border-top: 1px solid #e8e9ec;\n justify-content: space-between;\n align-items: center;\n gap: 18px;\n min-height: 72px;\n padding: 12px 18px;\n display: flex;\n}\n\n.arkme-workspace-dialog-back {\n color: #696d76;\n align-items: center;\n gap: 6px;\n height: 36px;\n padding: 0 10px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.arkme-workspace-dialog > footer > div {\n align-items: center;\n gap: 12px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-workspace-dialog > footer small {\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #92959d;\n max-width: 280px;\n font-size: 9px;\n overflow: hidden;\n}\n\n.arkme-workspace-dialog > footer > div > button {\n color: #fff;\n background: #20232d;\n border-radius: 10px;\n flex: none;\n height: 38px;\n padding: 0 17px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.arkme-workspace-dialog button:disabled {\n opacity: .48;\n cursor: default;\n}\n\n.arkme-redesign-placeholder {\n color: #858992;\n text-align: center;\n place-content: center;\n justify-items: center;\n width: 100%;\n height: 100%;\n display: grid;\n}\n\n.arkme-redesign-placeholder > span {\n color: #555a64;\n border: 1px solid #e1e2e5;\n border-radius: 14px;\n place-items: center;\n width: 48px;\n height: 48px;\n display: grid;\n}\n\n.arkme-redesign-placeholder h1 {\n color: #3e424b;\n margin: 16px 0 7px;\n font-size: 18px;\n}\n\n.arkme-redesign-placeholder p {\n margin: 0;\n font-size: 12px;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] {\n --arkme-line: var(--dsw-alias-border-l1);\n --arkme-muted: var(--dsw-alias-label-tertiary);\n --arkme-soft: var(--dsw-alias-bg-layer-2);\n --arkme-focus: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"], body[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] {\n background: var(--dsw-specific-sidebar-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-brand\"] {\n box-shadow: none;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"light\"] {\n display: none !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-workspace] [data-arkme-theme-image=\"dark\"] {\n display: block !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] > div {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-surface, body[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"persistent-workspace\"] div:has( > input[aria-label=\"搜索\"]) {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button:hover {\n background: var(--dsw-alias-interactive-bg-hover) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-navigation\"] button[aria-current=\"page\"] > span[aria-hidden=\"true\"] {\n background: var(--dsw-alias-state-business-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"], body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [aria-label=\"Arkme 会话列表\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] {\n background: var(--dsw-alias-bg-base) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] button[aria-label=\"新任务\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] label:has( > input[aria-label=\"搜索对话或消息\"]), body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] button[aria-label=\"新任务\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"treeitem\"][aria-selected=\"true\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"treeitem\"][aria-selected=\"true\"] {\n background: var(--dsw-alias-interactive-bg-active) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"directory-pane\"] [role=\"status\"][aria-label$=\"个人测试版\"], body[data-ds-dark-theme] [data-arkme-owned=\"persistent-sidebar\"] [aria-label=\"Arkme 会话列表\"] [role=\"status\"][aria-label$=\"个人测试版\"] {\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] .arkme-conversation-composer {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-recordings-page [aria-label=\"全天候录音操作\"] > div > button:first-child, body[data-ds-dark-theme] [data-arkme-owned=\"product-surface\"] [aria-label=\"全天候录音操作\"] > div > button:first-child {\n border-color: var(--dsw-alias-button-primary-fill) !important;\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover, body[data-ds-dark-theme] .arkme-update-capsule {\n border-color: var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 94%, transparent);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading h2, body[data-ds-dark-theme] .arkme-update-release-notes strong, body[data-ds-dark-theme] .arkme-update-capsule-copy strong {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-popover-heading span, body[data-ds-dark-theme] .arkme-update-popover-summary, body[data-ds-dark-theme] .arkme-update-release-notes small, body[data-ds-dark-theme] .arkme-update-capsule-copy small {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-update-release-notes, body[data-ds-dark-theme] .arkme-update-release-notes > div + div {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-update-later, body[data-ds-dark-theme] .arkme-update-progress, body[data-ds-dark-theme] .arkme-update-rail:not(.is-available) {\n background: var(--dsw-alias-fill-l1);\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"当天内容\"] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) > div > section[aria-label=\"客户端日历\"] > span[aria-hidden] {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > header button, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[aria-label*=\"记录\"] {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] > div > span {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"false\"][aria-label*=\"条记录\"] > span:last-child {\n background: var(--dsw-alias-bg-layer-2) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"], body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span {\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"客户端日历\"] button[data-selected=\"true\"] > span:last-child {\n color: var(--dsw-alias-label-primary-inverted) !important;\n background: none !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article > div > div:last-child {\n border-color: var(--dsw-alias-border-l1) !important;\n background: var(--dsw-alias-bg-layer-2) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article h3, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article p {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article time, body[data-ds-dark-theme] [aria-label=\"客户端日历\"]:has( > button[aria-label=\"关闭日历\"]) section[aria-label=\"当天内容\"] article span {\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-root, body[data-ds-dark-theme] .arkme-redesign-chat-panel, body[data-ds-dark-theme] .arkme-redesign-content, body[data-ds-dark-theme] .arkme-redesign-feature-page, body[data-ds-dark-theme] .arkme-redesign-recordings-page, body[data-ds-dark-theme] .arkme-redesign-plugins-page, body[data-ds-dark-theme] .arkme-redesign-model-settings, body[data-ds-dark-theme] .arkme-redesign-details {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-native-desktop .arkme-redesign-root:before {\n background: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-sidebar-fill);\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button, body[data-ds-dark-theme] .arkme-redesign-profile-menu button, body[data-ds-dark-theme] .arkme-redesign-task-list > button, body[data-ds-dark-theme] .arkme-redesign-task-first, body[data-ds-dark-theme] .arkme-workspace-dialog > nav button, body[data-ds-dark-theme] .arkme-workspace-dialog-back, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button:hover, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button:hover, body[data-ds-dark-theme] .arkme-redesign-profile-menu button:hover, body[data-ds-dark-theme] .arkme-redesign-chat-search:hover, body[data-ds-dark-theme] .arkme-redesign-task-section-title button:hover, body[data-ds-dark-theme] .arkme-redesign-task-list > button:hover, body[data-ds-dark-theme] .arkme-redesign-task-first:hover, body[data-ds-dark-theme] .arkme-extension-toolbar > button:hover, body[data-ds-dark-theme] button.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] a.arkme-redesign-setting-row:hover, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button:hover, body[data-ds-dark-theme] .arkme-redesign-round-tool:hover, body[data-ds-dark-theme] .arkme-workspace-directory-list > button:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active, body[data-ds-dark-theme] .arkme-redesign-rail-footer > button.is-active, body[data-ds-dark-theme] .arkme-redesign-task-list > button.is-selected {\n background: var(--dsw-alias-interactive-bg-active);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-rail-footer, body[data-ds-dark-theme] .arkme-redesign-profile-menu, body[data-ds-dark-theme] .arkme-redesign-task-section, body[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-header, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-row, body[data-ds-dark-theme] .arkme-account-info-row, body[data-ds-dark-theme] .arkme-redesign-starters > button, body[data-ds-dark-theme] .arkme-redesign-details, body[data-ds-dark-theme] .arkme-workspace-dialog > nav, body[data-ds-dark-theme] .arkme-workspace-dialog > footer {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-popover, body[data-ds-dark-theme] .arkme-workspace-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-profile-head small, body[data-ds-dark-theme] .arkme-redesign-profile-menu small, body[data-ds-dark-theme] .arkme-redesign-profile-menu button > svg:last-child, body[data-ds-dark-theme] .arkme-redesign-task-section-title, body[data-ds-dark-theme] .arkme-redesign-task-copy small, body[data-ds-dark-theme] .arkme-account-profile-qr, body[data-ds-dark-theme] .arkme-redesign-feature-page > header p, body[data-ds-dark-theme] .arkme-redesign-feature-page > header span, body[data-ds-dark-theme] .arkme-redesign-search-page input[aria-label=\"搜索\"]:not(:focus)::placeholder, body[data-ds-dark-theme] .arkme-redesign-settings-profile p, body[data-ds-dark-theme] .arkme-redesign-settings-group h2, body[data-ds-dark-theme] .arkme-redesign-setting-summary, body[data-ds-dark-theme] .arkme-account-info-copy > small, body[data-ds-dark-theme] .arkme-account-info-action, body[data-ds-dark-theme] .arkme-account-info-row > svg, body[data-ds-dark-theme] .arkme-account-info-icon, body[data-ds-dark-theme] .arkme-redesign-setting-row > svg, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea::placeholder, body[data-ds-dark-theme] .arkme-redesign-starters small, body[data-ds-dark-theme] .arkme-workspace-dialog > header span, body[data-ds-dark-theme] .arkme-workspace-dialog > nav > span, body[data-ds-dark-theme] .arkme-workspace-dialog-status, body[data-ds-dark-theme] .arkme-workspace-dialog > footer small, body[data-ds-dark-theme] .arkme-redesign-placeholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label, body[data-ds-dark-theme] .arkme-extension-toolbar > button, body[data-ds-dark-theme] .arkme-redesign-settings-group, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-workspace-directory-list > button > span, body[data-ds-dark-theme] .arkme-redesign-placeholder > span {\n border-color: var(--dsw-alias-border-l2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-chat-search, body[data-ds-dark-theme] .arkme-extension-toolbar label {\n color: var(--dsw-alias-label-tertiary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-extension-toolbar input, body[data-ds-dark-theme] .arkme-redesign-settings-profile h1, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-task-start h1, body[data-ds-dark-theme] .arkme-redesign-hero-input textarea, body[data-ds-dark-theme] .arkme-redesign-starter-icon, body[data-ds-dark-theme] .arkme-redesign-placeholder h1 {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-list, body[data-ds-dark-theme] .arkme-redesign-model-settings > header button, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n background: var(--dsw-alias-bg-layer-1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-surface, body[data-ds-dark-theme] .arkme-redesign-settings-group {\n color: var(--dsw-alias-label-primary);\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-shadow-lv3);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog > header, body[data-ds-dark-theme] .arkme-account-qr-card {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-account-qr-card, body[data-ds-dark-theme] .arkme-account-form input, body[data-ds-dark-theme] .arkme-account-code-row button, body[data-ds-dark-theme] .arkme-account-dialog-actions button {\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n border-color: var(--dsw-alias-border-l2);\n}\n\nbody[data-ds-dark-theme] .arkme-account-dialog-actions button[type=\"submit\"], body[data-ds-dark-theme] .arkme-account-dialog-actions button:last-child {\n border-color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-base);\n}\n\nbody[data-ds-dark-theme] .arkme-account-rule, body[data-ds-dark-theme] .arkme-account-qr-card span, body[data-ds-dark-theme] .arkme-account-qr-card small, body[data-ds-dark-theme] .arkme-account-form label {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-surface, body[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-center-embedded > section {\n background: var(--dsw-alias-bg-base) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-box {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"] {\n box-shadow: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-route-chats .arkme-conversation-composer-inner[data-arkme-primary-composer=\"true\"][data-arkme-composer-focused=\"true\"] {\n background: color-mix(in srgb, var(--dsw-alias-bg-base, #fff) 97%, #000) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-greeting img {\n filter: invert() hue-rotate(180deg);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-specific-input-major) !important;\n color: var(--dsw-alias-label-primary) !important;\n box-shadow: var(--dsw-shadow-lv2) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input textarea {\n background: none !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-source-button, body[data-ds-dark-theme] .arkme-redesign-round-tool, body[data-ds-dark-theme] .arkme-redesign-starter-icon {\n background: var(--dsw-alias-button-elevated-fill) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-history button, body[data-ds-dark-theme] .arkme-redesign-search-page .arkme-search-quick button {\n color: var(--dsw-alias-label-primary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card {\n border-color: var(--dsw-alias-border-l1) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-plugins-page .arkme-extension-card:hover {\n border-color: var(--dsw-alias-border-l2) !important;\n background: var(--dsw-alias-interactive-bg-hover) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-section:focus-within .arkme-redesign-task-list {\n box-shadow: var(--dsw-shadow-lv2);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-settings-error {\n background: var(--dsw-alias-interactive-bg-hover-danger);\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-page-header h1, body[data-ds-dark-theme] .arkme-remote-section-header h2, body[data-ds-dark-theme] .arkme-remote-allow-row strong, body[data-ds-dark-theme] .arkme-remote-device-row strong, body[data-ds-dark-theme] .arkme-remote-name-row strong, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-code {\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-section-header p, body[data-ds-dark-theme] .arkme-remote-page-header p, body[data-ds-dark-theme] .arkme-remote-allow-row span, body[data-ds-dark-theme] .arkme-remote-device-row span, body[data-ds-dark-theme] .arkme-remote-name-row small, body[data-ds-dark-theme] .arkme-remote-dialog header p, body[data-ds-dark-theme] .arkme-remote-pairing-display > p, body[data-ds-dark-theme] .arkme-remote-dialog-note, body[data-ds-dark-theme] .arkme-remote-empty-row {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-card, body[data-ds-dark-theme] .arkme-remote-settings-dialog, body[data-ds-dark-theme] .arkme-remote-dialog, body[data-ds-dark-theme] .arkme-remote-pairing-display, body[data-ds-dark-theme] .arkme-remote-rename input {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-allow-row, body[data-ds-dark-theme] .arkme-remote-device-row, body[data-ds-dark-theme] .arkme-remote-rename, body[data-ds-dark-theme] .arkme-remote-page-header {\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close, body[data-ds-dark-theme] .arkme-remote-icon-button, body[data-ds-dark-theme] .arkme-remote-dialog-close, body[data-ds-dark-theme] .arkme-remote-pairing-tools button, body[data-ds-dark-theme] .arkme-remote-name-row {\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-close:hover, body[data-ds-dark-theme] .arkme-remote-icon-button:hover, body[data-ds-dark-theme] .arkme-remote-dialog-close:hover, body[data-ds-dark-theme] .arkme-remote-pairing-tools button:hover, body[data-ds-dark-theme] .arkme-remote-name-row:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-add-button, body[data-ds-dark-theme] .arkme-remote-rename button[type=\"submit\"], body[data-ds-dark-theme] .arkme-remote-pairing-expired button {\n background: var(--dsw-alias-button-primary-fill);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-device-row > button, body[data-ds-dark-theme] .arkme-remote-rename button {\n border-color: var(--dsw-alias-border-l2);\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs {\n background: var(--dsw-alias-bg-layer-2);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button {\n color: var(--dsw-alias-label-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-pairing-tabs button[aria-selected=\"true\"] {\n background: var(--dsw-alias-button-elevated-fill);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-remote-settings-dialog-backdrop, body[data-ds-dark-theme] .arkme-remote-dialog-backdrop {\n background: #07090d8f;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-setting-row > strong.is-danger, body[data-ds-dark-theme] .arkme-redesign-task-error, body[data-ds-dark-theme] .arkme-workspace-dialog-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i {\n background: var(--dsw-alias-state-success-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-state.is-complete > i:after {\n background: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-task-matrix i, body[data-ds-dark-theme] .arkme-redesign-rail-primary button.is-active:before {\n background: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-hero-input:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 3px var(--dsw-alias-state-business-tertiary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-starters > button:hover strong {\n color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task, body[data-ds-dark-theme] .arkme-workspace-dialog > footer > div > button {\n background: var(--dsw-alias-button-primary-fill) !important;\n color: var(--dsw-alias-label-primary-inverted) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-redesign-send-task:disabled {\n background: var(--dsw-alias-button-elevated-fill) !important;\n color: var(--dsw-alias-label-secondary) !important;\n}\n\nbody[data-ds-dark-theme] .arkme-workspace-dialog-backdrop {\n background: var(--dsw-alias-bg-mask-1);\n}\n\n@media (width <= 1024px) {\n .arkme-redesign-chat-panel {\n width: 264px;\n left: 82px;\n }\n\n .arkme-redesign-content {\n left: 82px;\n }\n\n .arkme-redesign-content.has-panel {\n left: 346px;\n }\n\n .arkme-redesign-rail {\n left: 12px;\n }\n\n .arkme-redesign-starters > button {\n padding: 0 10px;\n }\n\n .arkme-redesign-feature-page {\n padding-left: 30px;\n padding-right: 30px;\n }\n}\n\n@media (width <= 820px) {\n .arkme-redesign-chat-panel {\n display: none;\n }\n\n .arkme-redesign-content.has-panel {\n left: 82px;\n }\n\n .arkme-redesign-task-start {\n padding: 28px;\n }\n\n .arkme-redesign-starters {\n grid-template-columns: 1fr;\n gap: 6px;\n }\n\n .arkme-redesign-starters > button {\n border-right: 0;\n }\n\n .arkme-voiceprint-relationships {\n grid-template-columns: minmax(0, 1fr) !important;\n gap: 28px !important;\n }\n\n .arkme-voiceprint-outbound {\n border-left: 0 !important;\n border-top: 1px solid var(--dsw-alias-border-subtle, #e6e7eb) !important;\n padding-top: 28px !important;\n padding-left: 0 !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-redesign-task-matrix i {\n opacity: .6;\n animation: none;\n }\n\n .arkme-update-rail.is-downloading svg, .arkme-update-popover, .arkme-update-capsule, .arkme-update-progress.is-indeterminate span {\n animation: none;\n }\n\n .arkme-update-rail, .arkme-update-progress span {\n transition: none;\n }\n}\n\n.arkme-contact-directory, .arkme-directory-detail-pane {\n box-sizing: border-box;\n min-width: 0;\n height: 100%;\n min-height: 0;\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 13px;\n overflow: hidden;\n}\n\n[data-arkme-directory-mode=\"contacts\"] {\n background: var(--dsw-specific-sidebar-fill, #fff) !important;\n border-left-color: var(--dsw-alias-border-l1, #ececef) !important;\n}\n\n.arkme-contact-directory {\n overflow-wrap: anywhere;\n padding: 8px 6px 18px;\n overflow-y: auto;\n}\n\n.arkme-directory-detail-pane {\n overflow: hidden;\n}\n\n.arkme-contact-directory button, .arkme-directory-detail-pane button {\n appearance: none;\n box-sizing: border-box;\n font: inherit;\n color: inherit;\n border: 0;\n margin: 0;\n}\n\n.arkme-contact-directory-section {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n min-width: 0;\n padding: 2px 0 5px;\n}\n\n.arkme-contact-directory-section-header {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n width: 100%;\n min-width: 0;\n min-height: 42px;\n padding: 0 10px;\n display: flex;\n}\n\n.arkme-contact-directory-section-title {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.arkme-contact-directory-section-title strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.arkme-contact-directory-caret {\n width: 14px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n transform-origin: center;\n flex: none;\n font-size: 18px;\n line-height: 1;\n transition: transform .16s;\n}\n\n.arkme-contact-directory-section-header[aria-expanded=\"true\"] .arkme-contact-directory-caret {\n transform: rotate(90deg);\n}\n\n.arkme-contact-directory-section-header:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-section-body {\n min-width: 0;\n padding: 0 0 5px;\n}\n\n.arkme-contact-directory-list {\n gap: 1px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-directory-count {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n font-variant-numeric: tabular-nums;\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-directory-row {\n text-align: left;\n cursor: pointer;\n background: none;\n border-radius: 13px;\n align-items: center;\n gap: 10px;\n width: 100%;\n min-width: 0;\n min-height: 52px;\n margin: 1px 0;\n padding: 7px 10px;\n display: flex;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row img {\n object-fit: cover;\n border-radius: 50%;\n flex: none;\n width: 38px;\n height: 38px;\n}\n\n.arkme-contact-directory-row.is-static {\n cursor: default;\n}\n\n.arkme-contact-directory-row.is-selected {\n background: var(--dsw-alias-interactive-bg-active, #eef0f4);\n}\n\n.arkme-contact-directory-row:not(.is-static):hover {\n background: var(--dsw-alias-interactive-bg-hover, #f6f6f7);\n}\n\n.arkme-contact-directory-avatar {\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 38px;\n height: 38px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy {\n flex: 1;\n align-content: center;\n min-width: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy strong {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n font-weight: 600;\n line-height: 18px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-row-copy small {\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 11px;\n line-height: 16px;\n overflow: hidden;\n}\n\n.arkme-contact-directory-letter {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n padding: 8px 10px 2px;\n font-size: 11px;\n font-weight: 600;\n line-height: 16px;\n}\n\n.arkme-contact-directory-alphabetical, .arkme-contact-directory-letter-group {\n min-width: 0;\n}\n\n.arkme-contact-directory-status, .arkme-contact-directory-warning {\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n overflow-wrap: anywhere;\n margin: 3px 8px;\n padding: 7px 9px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-contact-directory-warning {\n color: var(--dsw-alias-state-warning-primary, #b45309);\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n border-radius: 9px;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.arkme-contact-directory-warning button {\n color: inherit;\n cursor: pointer;\n background: none;\n flex: none;\n padding: 2px 4px;\n font-weight: 600;\n}\n\n.arkme-contact-directory-more {\n text-align: center;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n width: calc(100% - 16px);\n min-height: 32px;\n padding: 6px 8px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n margin: 3px 8px !important;\n}\n\n.arkme-contact-directory-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 14px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-directory-detail-empty {\n background: var(--dsw-alias-bg-base, #fff);\n place-items: center;\n min-width: 0;\n height: 100%;\n min-height: 0;\n display: grid;\n}\n\n.arkme-directory-detail-logo {\n object-fit: contain;\n opacity: .9;\n width: 96px;\n height: 96px;\n}\n\n.arkme-contact-detail, .arkme-contact-profile, .arkme-contact-world-card, .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.arkme-contact-detail {\n background: var(--dsw-alias-bg-base, #fff);\n grid-template-rows: auto minmax(0, 1fr);\n height: 100%;\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile {\n border-bottom: 1px solid var(--dsw-alias-border-l1, var(--arkme-line));\n padding: 32px clamp(24px, 5vw, 56px);\n}\n\n.arkme-contact-profile-main {\n grid-template-columns: 72px minmax(0, 1fr) auto;\n align-items: center;\n gap: 18px;\n width: min(100%, 760px);\n margin: 0 auto;\n display: grid;\n}\n\n.arkme-contact-profile-avatar {\n border-radius: 50%;\n place-items: center;\n width: 72px;\n height: 72px;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-profile-identity {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-profile-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n font-size: 20px;\n font-weight: 650;\n line-height: 28px;\n display: block;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields {\n gap: 4px;\n margin: 0;\n display: grid;\n}\n\n.arkme-contact-profile-fields > div {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #68707c);\n gap: 4px;\n font-size: 12px;\n line-height: 18px;\n display: flex;\n}\n\n.arkme-contact-profile-fields dt, .arkme-contact-profile-fields dd {\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n overflow: hidden;\n}\n\n.arkme-contact-profile-fields dt {\n flex: none;\n}\n\n[data-arkme-workspace] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill, #5667cc);\n cursor: pointer;\n border-radius: 10px;\n min-height: 36px;\n padding: 0 16px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary-inverted, #fff) !important;\n}\n\n.arkme-contact-profile-message:disabled {\n opacity: .55;\n cursor: default;\n}\n\n.arkme-contact-profile-error, .arkme-contact-profile-message-error {\n max-width: 760px;\n color: var(--dsw-alias-state-error-primary, #b42318);\n overflow-wrap: anywhere;\n margin: 0 auto;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-contact-profile-error {\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n border-radius: 10px;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n padding: 12px 14px;\n display: flex;\n}\n\n.arkme-contact-profile-status {\n max-width: 760px;\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n margin: 0 auto;\n padding: 24px 0;\n font-size: 12px;\n}\n\n.arkme-contact-world {\n min-height: 0;\n display: grid;\n overflow: hidden;\n}\n\n.arkme-contact-detail > .arkme-contact-world {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-subtle, #f7f7f8);\n padding: 22px clamp(20px, 4vw, 52px) 28px;\n}\n\n.arkme-contact-world-container {\n box-sizing: border-box;\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 18px;\n flex-direction: column;\n width: min(100%, 980px);\n min-width: 0;\n height: 100%;\n min-height: 0;\n margin: 0 auto;\n display: flex;\n overflow-y: auto;\n box-shadow: 0 16px 48px #161b230f;\n}\n\n.arkme-contact-world-title {\n box-sizing: border-box;\n width: min(100%, 760px);\n margin: 0 auto;\n padding: 22px 28px 10px;\n font-size: 15px;\n font-weight: 650;\n line-height: 22px;\n}\n\n.arkme-contact-world-list {\n box-sizing: border-box;\n align-content: start;\n gap: 30px;\n width: min(100%, 760px);\n min-height: 0;\n margin: 0 auto;\n padding: 28px 28px 42px;\n display: grid;\n}\n\n.arkme-contact-world-year {\n gap: 24px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-year > h2 {\n letter-spacing: -.04em;\n margin: 0;\n font-size: 28px;\n font-weight: 750;\n line-height: 36px;\n}\n\n.arkme-contact-world-entry {\n gap: 8px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-contact-world-diary {\n color: var(--dsw-alias-label-secondary, #68707c);\n font-size: 13px;\n font-weight: 500;\n line-height: 19px;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n align-items: center;\n gap: 8px;\n font-size: 11px;\n line-height: 16px;\n display: flex;\n}\n\n.arkme-contact-world-entry > .arkme-contact-world-time span {\n font-size: 17px;\n line-height: 10px;\n}\n\n.arkme-contact-world-card {\n border: 1px dashed var(--dsw-alias-border-l2, #d9dce2);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 14px;\n gap: 10px;\n padding: 15px 16px;\n display: grid;\n}\n\n.arkme-contact-world-card-header {\n grid-template-columns: 36px minmax(0, 1fr) auto;\n align-items: center;\n gap: 9px;\n display: grid;\n}\n\n.arkme-contact-world-author {\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n font-size: 13px;\n font-weight: 600;\n overflow: hidden;\n}\n\n.arkme-contact-world-time {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n flex: none;\n font-size: 11px;\n}\n\n.arkme-contact-world-headline {\n margin: 2px 0 0;\n font-size: 14px;\n line-height: 20px;\n}\n\n.arkme-contact-world-text {\n color: var(--dsw-alias-label-secondary, #68707c);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-images {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 6px;\n width: 100%;\n min-width: 0;\n max-width: 620px;\n display: grid;\n}\n\n.arkme-contact-world-image {\n aspect-ratio: 1;\n object-fit: cover;\n border-radius: 11px;\n width: 100%;\n display: block;\n}\n\n.arkme-contact-world-image-error, .arkme-contact-world-image-loading {\n aspect-ratio: 1;\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n width: 100%;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n border-radius: 11px;\n place-items: center;\n display: grid;\n}\n\n.arkme-contact-world-tags {\n flex-wrap: wrap;\n gap: 6px;\n display: flex;\n}\n\n.arkme-contact-world-tag {\n background: var(--dsw-alias-bg-layer-2, var(--arkme-soft));\n color: var(--dsw-alias-label-secondary, var(--arkme-muted));\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 11px;\n}\n\n.arkme-contact-world-empty {\n box-sizing: border-box;\n text-align: center;\n flex: 1;\n place-content: center;\n justify-items: center;\n min-height: 240px;\n padding: 36px 20px;\n display: grid;\n}\n\n.arkme-contact-world-empty img {\n width: 140px;\n height: 100px;\n display: block;\n}\n\n.arkme-contact-world-empty p {\n color: var(--dsw-alias-label-secondary, #858992);\n margin: 16px 0 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n.arkme-contact-world-error, .arkme-contact-world-status {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n place-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-contact-world-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-load-more {\n cursor: pointer;\n background: none;\n border-radius: 9px;\n place-self: center;\n min-height: 34px;\n padding: 0 12px;\n color: var(--dsw-alias-state-business-primary, #4f5fbf) !important;\n}\n\n.arkme-contact-world-load-more-status, .arkme-contact-world-load-more-error {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n padding: 8px 16px;\n font-size: 11px;\n}\n\n.arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary, #b42318);\n}\n\n.arkme-contact-world-page-empty {\n color: var(--dsw-alias-label-tertiary, var(--arkme-muted));\n text-align: center;\n align-self: center;\n padding: 28px 20px;\n font-size: 12px;\n}\n\n.arkme-directory-unmarked-speaker-detail {\n background: var(--dsw-alias-bg-base, #fff);\n min-height: 0;\n padding: clamp(28px, 5vw, 60px);\n overflow-y: auto;\n}\n\n.arkme-unmarked-speaker-token-avatar {\n background: var(--dsw-alias-bg-module-platform, var(--dsw-alias-bg-layer-1, #f1f2f3));\n color: var(--dsw-alias-label-secondary, #666c75);\n letter-spacing: -.02em;\n border-radius: 50%;\n flex: none;\n place-items: center;\n font-weight: 650;\n line-height: 1;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 18px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 24px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-summary h1, .arkme-unmarked-speaker-summary h2, .arkme-unmarked-speaker-audio h2, .arkme-unmarked-speaker-choice h2 {\n letter-spacing: -.02em;\n margin: 0;\n font-size: 20px;\n font-weight: 680;\n line-height: 28px;\n}\n\n.arkme-unmarked-speaker-identity {\n align-items: center;\n gap: 16px;\n min-width: 0;\n padding: 2px 4px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-identity > div {\n gap: 3px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-identity p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-stats {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #737984);\n flex-wrap: wrap;\n gap: 8px 20px;\n padding: 0 4px;\n font-size: 12px;\n line-height: 19px;\n display: flex;\n}\n\n.arkme-unmarked-speaker-stats span {\n white-space: nowrap;\n position: relative;\n}\n\n.arkme-unmarked-speaker-stats span + span:before {\n content: \"\";\n background: var(--dsw-alias-label-caption, #b3b7bd);\n border-radius: 50%;\n width: 3px;\n height: 3px;\n position: absolute;\n top: 8px;\n left: -11px;\n}\n\n.arkme-unmarked-speaker-stats strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-inference {\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 18px;\n grid-template-columns: 40px minmax(0, 1fr);\n align-items: start;\n gap: 12px;\n min-width: 0;\n padding: 18px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n border: 1px solid var(--dsw-alias-border-l1, #e3e4e7);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 40px;\n height: 40px;\n color: var(--dsw-alias-label-secondary, #656b75);\n border-radius: 50%;\n place-items: center;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-icon svg path, .arkme-unmarked-speaker-action-icon svg path {\n stroke: currentColor;\n stroke-width: 1.5px;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.arkme-unmarked-speaker-inference > div {\n gap: 5px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-inference-label {\n color: var(--dsw-alias-label-secondary, #747983);\n font-size: 11px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-inference strong {\n color: var(--dsw-alias-label-primary, #202124);\n font-size: 14px;\n font-weight: 650;\n line-height: 21px;\n}\n\n.arkme-unmarked-speaker-inference p {\n color: var(--dsw-alias-label-secondary, #686e78);\n margin: 0;\n font-size: 12px;\n line-height: 20px;\n}\n\n.arkme-unmarked-speaker-actions {\n gap: 10px;\n display: grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-action {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n width: 100%;\n min-height: 62px;\n color: var(--dsw-alias-label-primary, #202124);\n text-align: left;\n cursor: pointer;\n border-radius: 16px;\n grid-template-columns: 42px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n padding: 10px 46px 10px 14px;\n font-size: 13px;\n font-weight: 650;\n display: grid;\n position: relative;\n}\n\n.arkme-unmarked-speaker-action:after {\n content: \"›\";\n color: var(--dsw-alias-label-caption, #a7abb2);\n font-size: 22px;\n font-weight: 400;\n position: absolute;\n right: 18px;\n}\n\n.arkme-unmarked-speaker-action:hover {\n background: var(--dsw-alias-interactive-bg-hover, #f7f7f8);\n border-color: var(--dsw-alias-border-l2, #d9dade);\n}\n\n.arkme-unmarked-speaker-summary > [role=\"status\"], .arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"status\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"status\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-label-secondary, #68707c);\n background: var(--dsw-alias-bg-layer-2, #f5f5f6);\n border-radius: 10px;\n padding: 9px 12px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-summary > [role=\"alert\"], .arkme-unmarked-speaker-audio > [role=\"alert\"], .arkme-unmarked-speaker-choice > [role=\"alert\"] {\n color: var(--dsw-alias-state-error-primary, #b42318);\n background: var(--dsw-alias-state-error-tertiary, #fff1f0);\n}\n\n.arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n box-sizing: border-box;\n background: none;\n border: 0;\n gap: 16px;\n width: min(100%, 720px);\n margin: 0 auto;\n padding: 4px 0 28px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 40px minmax(0, 1fr);\n align-items: center;\n gap: 12px;\n min-width: 0;\n padding-bottom: 4px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-header > button {\n min-height: 32px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 10px;\n font-size: 11px;\n}\n\n.arkme-unmarked-speaker-subview-header > button:before {\n content: \"‹\";\n vertical-align: -1px;\n margin-right: 4px;\n font-size: 17px;\n}\n\n.arkme-unmarked-speaker-subview-heading {\n gap: 2px;\n min-width: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-subview-heading p {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: 0;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-segment-list {\n gap: 10px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-card {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n border-radius: 16px;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 8px 16px;\n min-width: 0;\n padding: 16px 16px 14px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-segment-meta {\n min-width: 0;\n color: var(--dsw-alias-label-secondary, #757b85);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n line-height: 17px;\n overflow: hidden;\n}\n\n.arkme-unmarked-speaker-segment-transcript {\n min-width: 0;\n color: var(--dsw-alias-label-primary, #292c34);\n white-space: pre-wrap;\n grid-column: 1;\n margin: 0;\n font-size: 13px;\n line-height: 20px;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-alias-bg-layer-2, #f4f4f5);\n width: 38px;\n min-width: 38px;\n height: 38px;\n min-height: 38px;\n color: var(--dsw-alias-label-primary, #292c34);\n cursor: pointer;\n border-radius: 50%;\n grid-area: 1 / 2 / span 2;\n align-self: center;\n place-items: center;\n padding: 0;\n display: inline-grid;\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-segment-play:not(:disabled):hover {\n background: var(--dsw-alias-bg-layer-3, #e9eaec);\n}\n\n.arkme-unmarked-speaker-segment-play:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-choice-meta {\n color: var(--dsw-alias-label-secondary, #737984);\n margin: -4px 0 0;\n padding: 0 4px;\n font-size: 12px;\n line-height: 18px;\n}\n\n.arkme-unmarked-speaker-choice-options {\n border: 0;\n gap: 8px;\n min-width: 0;\n margin: 0;\n padding: 0;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-options legend {\n color: var(--dsw-alias-label-secondary, #737984);\n margin-bottom: 9px;\n font-size: 11px;\n line-height: 17px;\n}\n\n.arkme-unmarked-speaker-choice-option {\n border: 1px solid var(--dsw-alias-border-l1, #e5e6e8);\n background: var(--dsw-alias-bg-layer-1, #fff);\n cursor: pointer;\n border-radius: 14px;\n grid-template-columns: 18px minmax(0, 1fr) auto;\n align-items: center;\n gap: 10px;\n min-width: 0;\n min-height: 52px;\n padding: 10px 14px;\n font-size: 13px;\n display: grid;\n}\n\n.arkme-unmarked-speaker-choice-option:has(input:checked) {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n background: var(--dsw-alias-interactive-bg-active, #f0f2ff);\n}\n\n.arkme-unmarked-speaker-choice-option input {\n width: 16px;\n height: 16px;\n accent-color: var(--dsw-alias-state-business-primary, #6677d9);\n margin: 0;\n}\n\n.arkme-unmarked-speaker-recommended {\n background: var(--dsw-alias-state-business-tertiary, #eef0ff);\n color: var(--dsw-alias-state-business-primary, #5667cc);\n border-radius: 999px;\n padding: 2px 7px;\n font-size: 10px;\n line-height: 16px;\n}\n\n.arkme-unmarked-speaker-choice-new-name {\n border: 1px solid var(--dsw-alias-border-l1, #dfe1e5);\n background: var(--dsw-specific-input-major, #fff);\n width: 100%;\n min-height: 42px;\n color: var(--dsw-alias-label-primary, #202124);\n border-radius: 12px;\n outline: 0;\n padding: 0 13px;\n font-size: 12px;\n}\n\n.arkme-unmarked-speaker-choice-new-name:focus {\n border-color: var(--dsw-alias-state-business-primary, #6677d9);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--dsw-alias-state-business-primary, #6677d9) 14%, transparent);\n}\n\n[data-arkme-workspace] .arkme-unmarked-speaker-confirm {\n background: var(--dsw-alias-button-primary-fill, #202124);\n min-height: 42px;\n color: var(--dsw-alias-label-primary-inverted, #fff);\n cursor: pointer;\n border-radius: 12px;\n padding: 0 16px;\n font-size: 12px;\n font-weight: 650;\n}\n\n.arkme-unmarked-speaker-confirm:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.arkme-unmarked-speaker-summary button:not(.arkme-unmarked-speaker-action), .arkme-unmarked-speaker-audio button:not(.arkme-unmarked-speaker-segment-play), .arkme-unmarked-speaker-choice button:not(.arkme-unmarked-speaker-confirm), .arkme-contact-world-error button, .arkme-contact-profile-error button {\n border: 1px solid var(--dsw-alias-border-l2, var(--arkme-line));\n background: var(--dsw-alias-button-elevated-fill, #fff);\n min-height: 34px;\n color: var(--dsw-alias-label-primary, #202124);\n cursor: pointer;\n border-radius: 9px;\n padding: 0 12px;\n}\n\n.arkme-unmarked-speaker-gone, .arkme-unmarked-speaker-success {\n box-sizing: border-box;\n background: var(--dsw-alias-state-warning-tertiary, #fff7ed);\n width: min(100%, 680px);\n color: var(--dsw-alias-state-warning-primary, #9a3412);\n border-radius: 10px;\n margin: 0 auto;\n padding: 12px 14px;\n}\n\n.arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary, #ecfdf3);\n color: var(--dsw-alias-state-success-primary, #067647);\n}\n\n.arkme-contact-directory button:focus-visible, .arkme-directory-detail-pane button:focus-visible, [data-arkme-owned=\"product-navigation\"] button:focus-visible {\n outline: 2px solid var(--arkme-focus);\n outline-offset: 2px;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory, body[data-ds-dark-theme] .arkme-directory-detail-pane {\n background: var(--dsw-alias-bg-base);\n color: var(--dsw-alias-label-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-row.is-selected, body[data-ds-dark-theme] .arkme-contact-world-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice {\n background: var(--dsw-alias-interactive-bg-active);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-card, body[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option, body[data-ds-dark-theme] .arkme-unmarked-speaker-action {\n background: var(--dsw-alias-bg-layer-1);\n border-color: var(--dsw-alias-border-l1);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-inference-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-action-icon, body[data-ds-dark-theme] .arkme-unmarked-speaker-segment-play {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-choice-option:has(input:checked) {\n background: var(--dsw-alias-interactive-bg-active);\n border-color: var(--dsw-alias-state-business-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-detail > .arkme-contact-world {\n background: var(--dsw-alias-bg-subtle);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-world-container {\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: none;\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-warning, body[data-ds-dark-theme] .arkme-unmarked-speaker-gone, body[data-ds-dark-theme] .arkme-contact-world-image-error, body[data-ds-dark-theme] .arkme-contact-world-image-loading {\n background: var(--dsw-specific-input-major);\n color: var(--dsw-alias-label-secondary);\n}\n\nbody[data-ds-dark-theme] .arkme-unmarked-speaker-success {\n background: var(--dsw-alias-state-success-tertiary);\n color: var(--dsw-alias-state-success-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-error, body[data-ds-dark-theme] .arkme-contact-profile-message-error, body[data-ds-dark-theme] .arkme-contact-world-error, body[data-ds-dark-theme] .arkme-contact-world-load-more-error {\n color: var(--dsw-alias-state-error-primary);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-profile-message {\n background: var(--dsw-alias-button-primary-fill);\n}\n\nbody[data-ds-dark-theme] .arkme-contact-directory-more, body[data-ds-dark-theme] .arkme-contact-world-load-more {\n color: var(--dsw-alias-state-business-primary);\n}\n\n@media (width <= 1024px) {\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"] {\n min-width: 0;\n }\n}\n\n@media (width <= 820px) {\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"directory\"]) {\n grid-template-columns: minmax(0, 1fr) 0 0 !important;\n }\n\n div:has( > [data-shell-overlay]):has([data-arkme-directory-mode=\"contacts\"]):has([data-arkme-contacts-mobile-view=\"content\"]) {\n grid-template-columns: 0 minmax(0, 1fr) 0 !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"][data-arkme-contacts-mobile-view=\"content\"], [data-arkme-owned=\"persistent-workspace\"][data-arkme-contacts-mobile-view=\"directory\"] {\n display: none !important;\n }\n\n [data-arkme-owned=\"persistent-sidebar\"] [data-arkme-directory-mode=\"contacts\"], .arkme-directory-detail-pane {\n min-width: 0;\n }\n}\n\n.arkme-directory-mobile-back {\n display: none;\n}\n\n@media (width <= 820px) {\n .arkme-directory-mobile-back {\n min-height: 42px;\n color: var(--dsw-alias-label-secondary, #68707c);\n cursor: pointer;\n background: none;\n align-items: center;\n gap: 5px;\n padding: 0 14px;\n display: inline-flex;\n }\n\n .arkme-directory-mobile-back:before {\n content: \"‹\";\n font-size: 18px;\n line-height: 1;\n }\n\n .arkme-directory-mobile-back:hover {\n color: var(--dsw-alias-label-primary, #202124);\n }\n\n .arkme-contact-profile {\n padding: 26px 20px;\n }\n\n .arkme-contact-profile-main {\n grid-template-columns: 56px minmax(0, 1fr) auto;\n gap: 12px;\n }\n\n .arkme-contact-profile-avatar {\n width: 56px;\n height: 56px;\n }\n\n .arkme-contact-profile-avatar > span {\n width: 56px !important;\n height: 56px !important;\n }\n\n .arkme-contact-world-title {\n padding-left: 20px;\n padding-right: 20px;\n }\n\n .arkme-directory-unmarked-speaker-detail {\n padding: 20px 18px 30px;\n }\n\n .arkme-unmarked-speaker-summary, .arkme-unmarked-speaker-audio, .arkme-unmarked-speaker-choice {\n gap: 14px;\n }\n\n .arkme-unmarked-speaker-stats {\n gap: 7px 14px;\n }\n\n .arkme-unmarked-speaker-stats span + span:before {\n display: none;\n }\n\n .arkme-unmarked-speaker-inference {\n grid-template-columns: 36px minmax(0, 1fr);\n padding: 15px;\n }\n\n .arkme-unmarked-speaker-inference-icon, .arkme-unmarked-speaker-action-icon {\n width: 36px;\n height: 36px;\n }\n\n .arkme-unmarked-speaker-subview-header {\n grid-template-columns: auto 36px minmax(0, 1fr);\n gap: 9px;\n }\n\n .arkme-unmarked-speaker-segment-card {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .arkme-unmarked-speaker-segment-transcript, [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n grid-area: auto / 1;\n }\n\n [data-arkme-workspace] .arkme-unmarked-speaker-segment-play {\n justify-self: start;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .arkme-contact-directory-caret {\n transition: none;\n }\n\n .arkme-icon-spin {\n animation: none;\n }\n}\n\n.arkme-conversation-surface {\n --arkme-chat-self-bubble: #eef1f8;\n --arkme-chat-other-bubble: #f3f4f6;\n}\n\nbody[data-ds-dark-theme] .arkme-conversation-surface {\n --arkme-chat-self-bubble: #2c3142;\n --arkme-chat-other-bubble: #282a31;\n --arkme-audio-control: #8995c5;\n}\n\nbody[data-ds-dark-theme] .arkme-detail-extension-input-bar {\n border-top-color: #363636 !important;\n}\n\nbody[data-ds-dark-theme] .arkme-detail-extension-input-shell {\n background: #2b2b2b !important;\n}\n\n[data-arkme-message-direction]:focus-visible, [data-arkme-note-detail] button:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n.arkme-world-extension-activity:hover {\n background: var(--dsw-alias-interactive-bg-hover, #2631480f) !important;\n}\n\n.arkme-world-extension-activity:active {\n background: var(--dsw-alias-interactive-bg-active, #2631481a) !important;\n}\n\n.arkme-world-extension-activity:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary, #8295e8);\n outline-offset: 2px;\n}\n\n@media (width <= 680px) {\n .arkme-world-extension-activity {\n grid-template-columns: 48px minmax(0, 1fr) !important;\n gap: 11px !important;\n padding: 13px !important;\n }\n}\n";
|
|
131031
132709
|
//#endregion
|
|
131032
132710
|
//#region src/client/redesign/styles.ts
|
|
131033
132711
|
const REDESIGN_STYLE_ID = "@senguoyun/dsh-arkme/redesign";
|