bothouse-dsh 0.1.53 → 0.1.55
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/collab/cli-member.mjs +74 -5
- package/collab/dsh-member.mjs +8 -5
- package/collab/handoff-rules.json +8 -101
- package/collab/instance-lock.mjs +46 -0
- package/collab/member-management.mjs +75 -0
- package/collab/plugin.mjs +65 -31
- package/collab/roster.mjs +21 -1
- package/collab/store.mjs +50 -8
- package/collab/team-exit-rules.json +1 -1
- package/collab/team-mode-rules.md +2 -1
- package/node_modules/bothouse-dsh-channels/client.js +473 -119
- package/node_modules/bothouse-dsh-desk/client.js +3 -2
- package/node_modules/bothouse-dsh-devices/client.js +3 -2
- package/node_modules/bothouse-dsh-panel/client.js +3 -2
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// dsh-client-source-sha256:
|
|
2
|
-
// dsh-style-sha256:
|
|
1
|
+
// dsh-client-source-sha256: 70d3c61abb2bc3b9e0709cd19b74b64138d19289f45370b9bc335a72925a56ec
|
|
2
|
+
// dsh-style-sha256: 9d75964f7231ba60e917f20dccdae4bd87b91f25cd8dc6887c93e537430fbd3e
|
|
3
3
|
window.__ModuleLoader__.load({
|
|
4
4
|
id: "bothouse-dsh-channels",
|
|
5
5
|
factory: (require) => {
|
|
6
6
|
var module = { exports: {} };
|
|
7
7
|
var exports = module.exports;
|
|
8
|
-
(function(){var s=document.createElement('style');s.setAttribute('data-dsh-plugin',"bothouse-dsh-channels");s.textContent=".dshc_page {\n width: 100%;\n height: 100%;\n min-height: 0;\n padding-top: var(--dsh-frame-top-clearance, 0px);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n grid-template-columns: 220px minmax(0, 1fr) 240px;\n font-size: 14px;\n line-height: 1.5;\n display: grid;\n}\n\n.dshc_notice {\n max-width: 480px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n grid-column: 1 / -1;\n place-self: center;\n padding: 24px;\n}\n\n.dshc_rooms, .dshc_members {\n background: var(--dsw-alias-bg-layer-2);\n min-height: 0;\n padding: 0 8px 16px;\n overflow-y: auto;\n}\n\n.dshc_membersHead {\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n flex: none;\n height: 44px;\n margin: 0 0 8px;\n}\n\n.dshc_groupTitle {\n color: var(--dsw-alias-label-tertiary);\n letter-spacing: .02em;\n margin: 12px 8px 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_room {\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n align-items: center;\n gap: 6px;\n padding: 6px 8px;\n display: flex;\n}\n\n.dshc_room:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_room:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_workspace {\n padding-left: 22px;\n font-size: .95em;\n}\n\n.dshc_roomLabel {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_activeCount {\n color: var(--dsw-alias-label-tertiary);\n flex-shrink: 0;\n margin-left: auto;\n font-size: 11px;\n}\n\n.dshc_activeBusy {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_roomActive {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_hash {\n color: var(--dsw-alias-label-tertiary);\n font-size: 16px;\n}\n\n.dshc_chat {\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n display: flex;\n}\n\n.dshc_chatHead {\n -webkit-app-region: drag;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n align-items: center;\n gap: 6px;\n height: 44px;\n padding: 0 16px;\n font-weight: 600;\n display: flex;\n}\n\n.dshc_log {\n flex: 1;\n min-height: 0;\n padding: 8px 0 12px;\n overflow-y: auto;\n}\n\n.dshc_guide {\n border: 1px dashed var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n margin: 16px;\n padding: 14px 16px;\n display: flex;\n}\n\n.dshc_empty {\n color: var(--dsw-alias-label-tertiary);\n padding: 24px 16px;\n}\n\n.dshc_message {\n grid-template-columns: 36px minmax(0, 1fr);\n gap: 12px;\n padding: 6px 16px;\n display: grid;\n}\n\n.dshc_system .dshc_text {\n color: var(--dsw-alias-label-tertiary);\n font-style: italic;\n}\n\n.dshc_avatar {\n corner-shape: round;\n color: #fff;\n border-radius: 50%;\n place-items: center;\n width: 36px;\n height: 36px;\n font-weight: 700;\n display: grid;\n position: relative;\n}\n\n.dshc_avatarImage {\n object-fit: cover;\n border-radius: 50%;\n width: 100%;\n height: 100%;\n position: absolute;\n inset: 0;\n}\n\n.dshc_avatarSmall {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.dshc_avatarAnchor {\n align-self: start;\n position: relative;\n}\n\n.dshc_avatarButton {\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n padding: 0;\n}\n\n.dshc_avatarMenu {\n z-index: 3;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n min-width: 140px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n flex-direction: column;\n padding: 6px;\n display: flex;\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n}\n\n.dshc_avatarMenuTitle {\n padding: 4px 8px;\n font-weight: 700;\n}\n\n.dshc_avatarMenuItem {\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 6px 8px;\n}\n\n.dshc_avatarMenuItem:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_messageBody {\n min-width: 0;\n}\n\n.dshc_messageHead {\n align-items: baseline;\n gap: 6px;\n display: flex;\n}\n\n.dshc_author {\n font-weight: 600;\n}\n\n.dshc_time {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dshc_tag {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-state-business-primary);\n white-space: nowrap;\n padding: 0 4px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.dshc_edited {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dshc_ownActions {\n margin-left: auto;\n margin-right: var(--channels-reply-clearance);\n opacity: 0;\n gap: 8px;\n display: inline-flex;\n}\n\n.dshc_message:hover .dshc_ownActions, .dshc_ownActions:focus-within {\n opacity: 1;\n}\n\n@media (hover: none) {\n .dshc_ownActions {\n opacity: 1;\n }\n}\n\n.dshc_editBox {\n flex-direction: column;\n gap: 6px;\n margin-top: 4px;\n display: flex;\n}\n\n.dshc_editInput {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n min-height: 60px;\n color: inherit;\n font: inherit;\n resize: vertical;\n padding: 8px;\n}\n\n.dshc_editBar {\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_editBar .dshc_time {\n margin-right: auto;\n}\n\n.dshc_text {\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.dshc_card {\n border-left: 4px solid var(--dsw-alias-state-business-primary);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n margin-top: 4px;\n padding: 6px 10px;\n}\n\n.dshc_card[data-state=\"failed\"] {\n border-left-color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_card[data-state=\"retrying\"] {\n border-left-color: var(--dsw-alias-state-warning-primary, #faa61a);\n}\n\n.dshc_cardButtons {\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_cardTitle {\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_cardHead {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_cardViews {\n gap: 4px;\n display: flex;\n}\n\n.dshc_cardViewButton {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n cursor: pointer;\n background: none;\n padding: 0 6px;\n font-size: 12px;\n}\n\n.dshc_cardViewButton[aria-pressed=\"true\"] {\n background: var(--dsw-alias-bg-base);\n font-weight: 600;\n}\n\n.dshc_permActions {\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_permScope {\n color: var(--dsw-alias-text-secondary);\n flex-basis: 100%;\n font-size: 12px;\n}\n\n.dshc_permStatus {\n margin-top: 6px;\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_message {\n --channels-reply-clearance: 36px;\n position: relative;\n}\n\n.dshc_quote {\n border-left: 2px solid var(--dsw-alias-label-tertiary);\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n text-overflow: ellipsis;\n gap: 6px;\n margin-bottom: 2px;\n padding-left: 8px;\n font-size: 12px;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_quoteDeleted {\n font-style: italic;\n}\n\n.dshc_quoteAuthor {\n flex: none;\n font-weight: 600;\n}\n\n.dshc_replyButton {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n cursor: pointer;\n border: 0;\n padding: 0 6px;\n}\n\n.dshc_msgTools {\n z-index: 1;\n border: 1px solid var(--dsw-alias-separator, #7f7f7f40);\n border-radius: var(--dsw-radius-sm, 6px);\n background: var(--dsw-alias-bg-elevated, var(--dsw-alias-bg-primary, #fff));\n opacity: 0;\n pointer-events: none;\n align-items: center;\n gap: 2px;\n padding: 2px;\n display: inline-flex;\n position: absolute;\n top: 2px;\n right: 16px;\n box-shadow: 0 2px 6px #00000014;\n}\n\n.dshc_msgTool {\n border-radius: var(--dsw-radius-sm, 6px);\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 2px 8px;\n font-size: 12px;\n}\n\n.dshc_msgTool:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_msgTool:disabled {\n cursor: default;\n opacity: .6;\n}\n\n.dshc_msgToolNote {\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n padding: 0 6px;\n font-size: 12px;\n}\n\n.dshc_message:hover .dshc_msgTools, .dshc_message:focus-within .dshc_msgTools, .dshc_msgTools:has(.dshc_msgToolNote) {\n opacity: 1;\n pointer-events: auto;\n}\n\n@media (hover: none) {\n .dshc_msgTools {\n box-shadow: none;\n opacity: 1;\n pointer-events: auto;\n background: none;\n border: 0;\n margin-top: 2px;\n position: static;\n }\n}\n\n.dshc_replyBar {\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n padding: 4px 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_replyBarText {\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.dshc_replyCancel {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n}\n\n.dshc_working {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary);\n align-items: center;\n gap: 6px;\n padding: 0 16px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_composer {\n padding: 0 16px 16px;\n position: relative;\n}\n\n.dshc_composerBox {\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1, var(--dsw-alias-bg-layer-2));\n box-shadow: var(--dsw-shadow-lv1-blur);\n flex-direction: column;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_composerBox:focus-within {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_composerToolbar {\n flex: none;\n align-items: center;\n gap: 4px;\n padding: 4px 10px 10px;\n display: flex;\n}\n\n.dshc_composerBox > .dshc_replyBar, .dshc_composerBox > .dshc_attachments {\n margin: 10px 14px 0;\n}\n\n.dshc_mentionButton {\n border-radius: var(--dsw-radius-full, 50%);\n width: 32px;\n height: 32px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n padding: 0;\n font-size: 18px;\n display: inline-flex;\n}\n\n.dshc_mentionButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_sendButton {\n border-radius: var(--dsw-radius-full, 50%);\n width: 32px;\n height: 32px;\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-label-primary);\n font: inherit;\n cursor: pointer;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n margin-left: auto;\n padding: 0;\n display: inline-flex;\n}\n\n.dshc_sendButton:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.dshc_sendButton:focus-visible, .dshc_mentionButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_mentionPopup {\n z-index: 2;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n max-height: 320px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n flex-direction: column;\n padding: 6px;\n display: flex;\n position: absolute;\n bottom: calc(100% - 8px);\n left: 16px;\n right: 16px;\n}\n\n.dshc_mentionPopup > [role=\"listbox\"] {\n min-height: 0;\n overflow-y: auto;\n}\n\n.dshc_mentionTitle {\n color: var(--dsw-alias-label-tertiary);\n padding: 4px 8px 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_mentionItem {\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n align-items: center;\n gap: 10px;\n padding: 6px 8px;\n display: flex;\n}\n\n.dshc_mentionActive {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_mentionName {\n font-weight: 600;\n}\n\n.dshc_mentionMeta {\n color: var(--dsw-alias-label-tertiary);\n margin-left: auto;\n font-size: 12px;\n}\n\n.dshc_mentionHint {\n border-top: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 8px 2px;\n font-size: 11px;\n}\n\n.dshc_sendError {\n color: var(--dsw-alias-state-error-primary);\n margin-bottom: 6px;\n font-size: 12px;\n}\n\n.dshc_input {\n box-sizing: border-box;\n width: 100%;\n min-height: 52px;\n max-height: 40vh;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n resize: none;\n field-sizing: content;\n background: none;\n border: 0;\n border-radius: 0;\n flex: 1;\n min-width: 0;\n padding: 14px 16px 8px;\n line-height: 1.5;\n}\n\n.dshc_input::placeholder {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n@media (width <= 600px) {\n .dshc_composer {\n padding: 0 8px 8px;\n }\n\n .dshc_composerToolbar {\n padding: 4px 8px 8px;\n }\n\n .dshc_input {\n padding: 12px 14px 8px;\n }\n}\n\n.dshc_input:focus-visible {\n outline: none;\n}\n\n.dshc_member {\n border-radius: var(--dsw-radius-sm);\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: 1;\n align-items: center;\n gap: 10px;\n padding: 5px 8px;\n display: flex;\n}\n\n.dshc_member:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_member:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_offline {\n opacity: .5;\n}\n\n.dshc_memberAvatar {\n position: relative;\n}\n\n.dshc_presence {\n border: 2px solid var(--dsw-alias-bg-layer-2);\n corner-shape: round;\n background: #23a55a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n position: absolute;\n bottom: -2px;\n right: -2px;\n}\n\n.dshc_offline .dshc_presence {\n background: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_memberText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_memberName {\n align-items: center;\n gap: 6px;\n display: flex;\n}\n\n.dshc_memberStatus {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n@media (width <= 900px) {\n .dshc_page {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .dshc_rooms, .dshc_members {\n display: none;\n }\n}\n\n.dshc_groupHead {\n justify-content: space-between;\n align-items: center;\n padding-right: 4px;\n display: flex;\n}\n\n.dshc_iconButton {\n border-radius: var(--dsw-radius-sm);\n width: 22px;\n height: 22px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n font-size: 16px;\n line-height: 1;\n}\n\n.dshc_iconButton:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_roomInput, .dshc_fieldInput {\n box-sizing: border-box;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n font: inherit;\n padding: 6px 8px;\n}\n\n.dshc_roomInput {\n margin: 2px 0 6px;\n}\n\n.dshc_roomInput:focus-visible, .dshc_fieldInput:focus-visible, .dshc_iconButton:focus-visible, .dshc_linkButton:focus-visible, .dshc_addMemberButton:focus-visible, .dshc_primaryButton:focus-visible, .dshc_secondaryButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_addMemberButton {\n box-sizing: border-box;\n border: 1px dashed var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n margin: 4px 0;\n padding: 7px 8px;\n}\n\n.dshc_addMemberButton:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_settingsDivider {\n border: 0;\n border-top: 1px solid var(--dsw-alias-border-l1);\n width: 100%;\n margin: 8px 0 4px;\n}\n\n.dshc_memberListDivider {\n border: 0;\n border-top: 1px solid var(--dsw-alias-border-l1);\n width: calc(100% - 16px);\n margin: 12px 8px 2px;\n}\n\n.dshc_settingsButton {\n text-align: left;\n border-style: solid;\n border-color: #0000;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_settingsButton svg {\n flex: none;\n}\n\n.dshc_memberRow {\n border-radius: var(--dsw-radius-sm);\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.dshc_memberRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_memberRow .dshc_member:hover {\n background: none;\n}\n\n.dshc_memberModel {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n overflow: hidden;\n}\n\n.dshc_memberActions {\n color: var(--dsw-alias-label-tertiary);\n opacity: 0;\n flex: none;\n gap: 4px;\n padding-right: 6px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_memberRow:hover .dshc_memberActions, .dshc_memberRow:focus-within .dshc_memberActions {\n opacity: 1;\n}\n\n.dshc_linkButton {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 2px 4px;\n font-size: 12px;\n}\n\n.dshc_linkButton:hover {\n color: var(--dsw-alias-label-primary);\n text-decoration: underline;\n}\n\n.dshc_dialogBackdrop {\n z-index: 10;\n background: #00000073;\n place-items: center;\n padding: 16px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.dshc_dialog {\n border-radius: var(--dsw-radius-lg);\n width: min(460px, 100%);\n max-height: calc(100vh - 32px);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n box-shadow: var(--dsw-elevation-panel, 0 12px 32px #0000004d);\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog {\n box-sizing: border-box;\n height: min(70vh, 100dvh - 32px);\n max-height: calc(100dvh - 32px);\n overflow: hidden;\n}\n\n.dshc_settingsBody {\n overscroll-behavior: contain;\n flex: auto;\n min-height: 0;\n padding: 2px;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog > :not(.dshc_settingsBody) {\n flex-shrink: 0;\n}\n\n.dshc_settingsFields {\n flex-direction: column;\n gap: 12px;\n display: flex;\n}\n\n.dshc_settingsFeedback {\n overflow-wrap: anywhere;\n max-height: 20%;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog .dshc_dialogActions {\n justify-content: space-between;\n}\n\n@media (width <= 599px) {\n .dshc_settingsDialog {\n height: calc(100dvh - 32px);\n padding: 16px;\n }\n}\n\n.dshc_avatarCropStage {\n background: #000000a6;\n padding: 20px;\n}\n\n.dshc_avatarCropFrame {\n aspect-ratio: 1;\n touch-action: none;\n cursor: grab;\n outline: 2px solid #fff;\n width: min(256px, 100%);\n margin: auto;\n position: relative;\n overflow: hidden;\n}\n\n.dshc_avatarCropFrame:active {\n cursor: grabbing;\n}\n\n.dshc_avatarCropFrame img {\n pointer-events: none;\n user-select: none;\n max-width: none;\n position: absolute;\n}\n\n.dshc_dialogTitle {\n margin: 0;\n font-size: 16px;\n}\n\n.dshc_field {\n color: var(--dsw-alias-label-secondary);\n flex-direction: column;\n gap: 4px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_field textarea {\n resize: vertical;\n}\n\n.dshc_choiceRow {\n flex-wrap: wrap;\n gap: 12px;\n display: flex;\n}\n\n.dshc_choiceColumn {\n flex-direction: column;\n gap: 12px;\n display: flex;\n}\n\n.dshc_choiceColumn .dshc_choice {\n grid-template-columns: max-content minmax(0, 1fr);\n align-items: start;\n display: grid;\n}\n\n.dshc_choice {\n color: var(--dsw-alias-label-primary, inherit);\n cursor: pointer;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.dshc_dialogActions {\n justify-content: flex-end;\n gap: 8px;\n display: flex;\n}\n\n.dshc_primaryButton, .dshc_secondaryButton {\n border-radius: var(--dsw-radius-sm);\n font: inherit;\n cursor: pointer;\n padding: 7px 14px;\n}\n\n.dshc_primaryButton {\n color: #fff;\n background: var(--dsw-alias-state-business-primary);\n border: 0;\n}\n\n.dshc_primaryButton:disabled {\n cursor: not-allowed;\n opacity: .5;\n}\n\n.dshc_secondaryButton {\n border: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-primary);\n background: none;\n}\n\n.dshc_memberFailed .dshc_memberStatus {\n color: var(--dsw-alias-state-error-primary, #ed4245);\n}\n\n.dshc_memberFailed .dshc_presence {\n background: #ed4245;\n}\n\n.dshc_mobileButton, .dshc_drawerBackdrop {\n display: none;\n}\n\n.dshc_panelToggle {\n border-radius: var(--dsw-radius-sm);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n justify-content: center;\n align-items: center;\n font-size: 16px;\n line-height: 1;\n display: inline-flex;\n}\n\n.dshc_panelToggle:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_panelToggle:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_panelToggleEnd {\n margin-left: auto;\n}\n\n.dshc_capabilityMenu {\n z-index: 4;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-base);\n max-height: 260px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n gap: 2px;\n padding: 5px;\n display: grid;\n position: absolute;\n bottom: calc(100% + 4px);\n left: 0;\n right: 0;\n overflow-y: auto;\n}\n\n.dshc_capabilityItem:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_capabilityHelp {\n color: var(--dsw-alias-label-secondary);\n white-space: normal;\n margin: 6px;\n font-size: 12px;\n}\n\n.dshc_capabilityItem:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_capabilityItem {\n text-align: left;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n background: none;\n border: 0;\n padding: 5px 8px;\n font-size: 12px;\n font-weight: 400;\n}\n\n@media (width >= 901px) {\n .dshc_page.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) 240px;\n }\n\n .dshc_page.dshc_membersHidden {\n grid-template-columns: 220px minmax(0, 1fr);\n }\n\n .dshc_page.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .dshc_roomsHidden > .dshc_rooms, .dshc_membersHidden > .dshc_members {\n display: none;\n }\n}\n\n@media (width <= 900px) {\n .dshc_page {\n position: relative;\n overflow: hidden;\n }\n\n .dshc_mobileButton {\n min-width: 40px;\n min-height: 40px;\n color: inherit;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 6px;\n justify-content: center;\n align-items: center;\n display: inline-flex;\n }\n\n .dshc_mobileButton:last-child {\n margin-left: auto;\n }\n\n .dshc_panelToggle {\n display: none;\n }\n\n .dshc_drawerBackdrop {\n z-index: 4;\n background: #00000073;\n border: 0;\n display: block;\n position: absolute;\n inset: 0;\n }\n\n .dshc_rooms.dshc_drawerOpen, .dshc_members.dshc_drawerOpen {\n z-index: 5;\n box-sizing: border-box;\n width: min(280px, 85%);\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n box-shadow: 0 0 24px #0000004d;\n }\n\n .dshc_rooms.dshc_drawerOpen {\n left: 0;\n }\n\n .dshc_members.dshc_drawerOpen {\n right: 0;\n }\n\n .dshc_memberActions {\n opacity: 1;\n }\n\n .dshc_messageHead {\n flex-wrap: wrap;\n }\n}\n\n.dshc_avatarPicker {\n flex-wrap: wrap;\n gap: 8px;\n display: flex;\n}\n\n.dshc_avatarOption {\n cursor: pointer;\n background: none;\n border: 2px solid #0000;\n border-radius: 50%;\n padding: 2px;\n display: grid;\n}\n\n.dshc_avatarOption[aria-checked=\"true\"] {\n border-color: var(--dsw-alias-accent, #5865f2);\n}\n\n.dshc_taskBoardTrigger {\n box-sizing: border-box;\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n height: 34px;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n align-items: center;\n gap: 8px;\n margin: 4px 0;\n padding: 7px 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_taskBoardTrigger:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_taskBoardTrigger:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_taskBoardSummary {\n color: var(--dsw-alias-label-secondary);\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n overflow: hidden;\n}\n\n.dshc_taskBoardDialog {\n width: min(920px, 100%);\n height: min(70vh, 100dvh - 32px);\n overflow: hidden;\n}\n\n.dshc_taskBoardBody {\n overscroll-behavior: contain;\n flex: auto;\n min-height: 0;\n overflow-y: auto;\n}\n\n.dshc_taskBoardDialog > :not(.dshc_taskBoardBody) {\n flex-shrink: 0;\n}\n\n.dshc_boardTabs {\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n gap: 4px;\n padding-bottom: 8px;\n display: flex;\n overflow-x: auto;\n}\n\n.dshc_boardTabs button {\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n padding: 7px 10px;\n font-size: 13px;\n}\n\n.dshc_boardTabs button:hover, .dshc_boardTabs button[aria-selected=\"true\"] {\n color: var(--dsw-alias-state-business-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_boardTabs button:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\n.dshc_boardTabCount {\n font-variant-numeric: tabular-nums;\n margin-left: 4px;\n}\n\n.dshc_boardCardGrid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px;\n margin: 6px 0 16px;\n padding: 2px;\n list-style: none;\n display: grid;\n}\n\n.dshc_boardTaskCard {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n border-radius: 12px;\n flex-direction: column;\n gap: 10px;\n min-width: 0;\n padding: 14px;\n transition: transform .14s, box-shadow .14s;\n display: flex;\n}\n\n.dshc_boardTaskCard[data-working=\"true\"] {\n border-color: var(--dsw-alias-state-business-primary);\n}\n\n.dshc_boardTaskCard[data-status=\"done\"] {\n filter: saturate(.25);\n color: var(--dsw-alias-label-secondary);\n}\n\n.dshc_boardTaskCard:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px #00000014;\n}\n\n.dshc_boardTaskHeader {\n align-items: flex-start;\n gap: 8px;\n display: flex;\n}\n\n.dshc_boardTaskTitle {\n overflow-wrap: anywhere;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n flex: 1;\n font-size: 14px;\n font-weight: 600;\n line-height: 1.5;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.dshc_boardTaskHeader .dshc_taskStatus {\n border-radius: 999px;\n padding: 3px 7px;\n font-size: 11px;\n}\n\n.dshc_boardTaskCard .dshc_taskLinks {\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.dshc_boardTabEmpty {\n min-height: 240px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n justify-content: center;\n align-items: center;\n padding: 40px 16px;\n display: flex;\n}\n\n@media (width <= 640px) {\n .dshc_boardCardGrid {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_boardTaskCard {\n transition: none;\n }\n\n .dshc_boardTaskCard:hover {\n transform: none;\n }\n}\n\n.dshc_taskBoardScope {\n color: var(--dsw-alias-label-secondary);\n font-size: 12px;\n}\n\n.dshc_taskSection + .dshc_taskSection {\n margin-top: 8px;\n}\n\n.dshc_taskSectionTitle {\n color: var(--dsw-alias-label-secondary);\n margin: 0 0 4px;\n padding: 0 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_taskOwnerGroup + .dshc_taskOwnerGroup {\n margin-top: 4px;\n}\n\n.dshc_taskOwnerName {\n color: var(--dsw-alias-label-tertiary);\n padding: 0 8px;\n font-size: 12px;\n}\n\n.dshc_taskList {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.dshc_taskRow {\n border-radius: var(--dsw-radius-sm);\n padding: 6px 8px;\n}\n\n.dshc_taskRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_taskLine {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.dshc_taskTitle {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n overflow: hidden;\n}\n\n.dshc_taskMeta {\n color: var(--dsw-alias-label-tertiary);\n flex-wrap: wrap;\n gap: 0 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_taskLinks {\n gap: 8px;\n display: flex;\n}\n\n.dshc_taskEmpty {\n color: var(--dsw-alias-label-tertiary);\n margin: 0 8px;\n font-size: 12px;\n}\n\n.dshc_taskDone summary {\n cursor: pointer;\n}\n\n.dshc_taskStatus {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-state-business-primary);\n flex: none;\n padding: 0 4px;\n font-size: 10px;\n font-style: normal;\n font-weight: 600;\n}\n\n.dshc_taskStatus[data-status=\"asked\"], .dshc_taskStatus[data-status=\"escalated\"], .dshc_taskStatus[data-status=\"declined\"], .dshc_taskStatus[data-status=\"rework\"] {\n background: var(--dsw-alias-state-warning-primary, var(--dsw-alias-state-error-primary));\n}\n\n.dshc_taskStatus[data-status=\"done\"] {\n background: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_taskCard {\n margin-top: 4px;\n font-style: normal;\n}\n\n.dshc_taskMembers {\n margin: 4px 0 0;\n padding: 0;\n list-style: none;\n}\n\n.dshc_taskMember {\n align-items: center;\n gap: 8px;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_taskMemberName {\n font-weight: 600;\n}\n\n.dshc_taskSub {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_focused {\n background: var(--dsw-alias-interactive-bg-hover);\n outline: 2px solid var(--dsw-alias-state-business-primary);\n}\n\n.dshc_attachments {\n flex-wrap: wrap;\n gap: 6px;\n margin: 4px 0;\n display: flex;\n}\n\n.dshc_attachmentImage {\n border-radius: 4px;\n max-width: min(320px, 100%);\n max-height: 240px;\n display: block;\n}\n\n.dshc_imageAttachment {\n align-content: start;\n max-width: 100%;\n display: grid;\n}\n\n.dshc_imagePreviewTrigger {\n cursor: zoom-in;\n background: none;\n border: 0;\n border-radius: 4px;\n grid-area: 1 / 1;\n padding: 0;\n}\n\n.dshc_imagePreviewTrigger:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary);\n outline-offset: 2px;\n}\n\n.dshc_imagePreviewDialog {\n box-sizing: border-box;\n width: fit-content;\n max-width: 90vw;\n max-height: 90dvh;\n overflow: auto;\n}\n\n.dshc_imagePreviewHeader {\n flex-shrink: 0;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.dshc_imagePreviewHeader span {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.dshc_imagePreviewHeader button {\n flex-shrink: 0;\n}\n\n.dshc_imagePreviewImage {\n object-fit: contain;\n align-self: center;\n max-width: 100%;\n min-height: 0;\n max-height: 65dvh;\n display: block;\n}\n\n.dshc_imagePreviewActions {\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n display: flex;\n}\n\n.dshc_imagePreviewActions a {\n text-decoration: none;\n}\n\n.dshc_imagePreviewActions button:disabled {\n cursor: wait;\n opacity: .5;\n}\n\n.dshc_attachmentActions {\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-base);\n opacity: 0;\n pointer-events: none;\n flex-wrap: wrap;\n grid-area: 1 / 1;\n place-self: start end;\n gap: 4px;\n margin: 4px;\n padding: 4px;\n display: flex;\n}\n\n.dshc_attachmentActions a {\n text-decoration: none;\n}\n\n.dshc_attachmentActions button:disabled {\n cursor: wait;\n opacity: .5;\n}\n\n.dshc_imageAttachment:hover .dshc_attachmentActions, .dshc_imageAttachment:focus-within .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"error\"] .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"copying\"] .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"copied\"] .dshc_attachmentActions {\n opacity: 1;\n pointer-events: auto;\n}\n\n@media (hover: none), (pointer: coarse), (width <= 768px) {\n .dshc_attachmentActions {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.dshc_attachmentThumb {\n object-fit: cover;\n vertical-align: middle;\n border-radius: 3px;\n width: 32px;\n height: 32px;\n}\n\n.dshc_attachmentFile {\n background: var(--background-secondary, #7f7f7f26);\n color: inherit;\n border-radius: 4px;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n text-decoration: none;\n display: inline-flex;\n}\n\n.dshc_attachmentSize {\n opacity: .6;\n font-size: .85em;\n}\n\n.dshc_attachmentAudio {\n flex-direction: column;\n gap: 2px;\n width: min(320px, 100%);\n display: flex;\n}\n\n.dshc_attachmentAudio audio {\n width: 100%;\n}\n\n.dshc_attachmentAudio a {\n color: inherit;\n text-decoration: none;\n}\n\n.dshc_attachmentFile {\n overflow-wrap: anywhere;\n max-width: 100%;\n}\n\n.dshc_chatHead button, .dshc_chatHead input, .dshc_chatHead select, .dshc_chatHead a, .dshc_chatHead [role=\"menu\"] {\n -webkit-app-region: no-drag;\n}\n\n.dshc_text pre, .dshc_text table {\n max-width: 100%;\n overflow-x: auto;\n}\n\n@media (width >= 901px) {\n .dshc_page {\n grid-template-columns: 232px minmax(0, 1fr) 272px;\n }\n\n .dshc_page.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) 272px;\n }\n\n .dshc_page.dshc_membersHidden {\n grid-template-columns: 232px minmax(0, 1fr);\n }\n\n .dshc_page.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n.dshc_rooms {\n padding-top: 4px;\n}\n\n.dshc_room {\n border-radius: var(--dsw-radius-md);\n min-height: 34px;\n padding: 6px 10px;\n transition: background-color .15s, color .15s;\n}\n\n.dshc_workspace {\n min-height: 30px;\n padding-left: 28px;\n font-size: 13px;\n position: relative;\n}\n\n.dshc_workspace:before {\n content: \"\";\n border-left: 1px solid var(--dsw-alias-border-l2);\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n border-bottom-left-radius: 4px;\n width: 7px;\n position: absolute;\n top: 0;\n bottom: 50%;\n left: 15px;\n}\n\n.dshc_workspace .dshc_hash {\n display: none;\n}\n\n.dshc_roomActive {\n color: var(--dsw-alias-label-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);\n box-shadow: inset 2px 0 0 var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_activeCount {\n font-variant-numeric: tabular-nums;\n border-radius: 999px;\n margin-left: 0;\n padding: 0 6px;\n font-size: 11px;\n line-height: 18px;\n}\n\n.dshc_activeBusy {\n color: var(--dsw-alias-state-business-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);\n}\n\n.dshc_roomLabel {\n flex: auto;\n min-width: 0;\n}\n\n.dshc_avatarStack {\n flex: none;\n align-items: center;\n padding-left: 4px;\n display: inline-flex;\n}\n\n.dshc_stackDot {\n border: 2px solid var(--dsw-alias-bg-layer-2);\n background-position: center;\n background-size: cover;\n border-radius: 50%;\n width: 18px;\n height: 18px;\n margin-left: -6px;\n}\n\n.dshc_room .dshc_stackDot {\n width: 16px;\n height: 16px;\n}\n\n.dshc_roomActive .dshc_stackDot {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, var(--dsw-alias-bg-layer-2));\n}\n\n.dshc_chatHead {\n gap: 8px;\n height: 52px;\n}\n\n.dshc_roomName {\n letter-spacing: -.01em;\n white-space: nowrap;\n font-size: 15px;\n}\n\n.dshc_headMeta {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.dshc_headActivity {\n color: var(--dsw-alias-label-secondary);\n flex: none;\n align-items: center;\n gap: 6px;\n margin-left: auto;\n font-size: 12px;\n font-weight: 500;\n display: inline-flex;\n}\n\n.dshc_headActivity .dshc_stackDot {\n border-color: var(--dsw-alias-bg-base);\n width: 22px;\n height: 22px;\n}\n\n.dshc_headActivity + .dshc_panelToggleEnd {\n margin-left: 4px;\n}\n\n.dshc_chatHead > .dshc_roomName {\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.dshc_chatHead > .dshc_taskBoardTrigger {\n width: auto;\n margin: 0 0 0 auto;\n}\n\n.dshc_chatHead .dshc_taskBoardSummary {\n display: none;\n}\n\n.dshc_headLead {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 999px;\n flex: 0 auto;\n align-items: center;\n gap: 6px;\n min-width: 0;\n padding: 4px 8px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_headLeadText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_headLeadName {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_headLeadStatus {\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n font-size: 11px;\n font-weight: 400;\n}\n\n.dshc_headLead + .dshc_panelToggleEnd {\n margin-left: 0;\n}\n\n.dshc_membersHead {\n align-items: center;\n height: 52px;\n padding: 0 4px;\n display: flex;\n}\n\n.dshc_membersHeadTitle {\n color: var(--dsw-alias-label-tertiary);\n letter-spacing: .08em;\n font-size: 11px;\n font-weight: 650;\n}\n\n.dshc_log {\n padding: 12px 0 16px;\n}\n\n.dshc_message {\n grid-template-columns: 36px minmax(0, 1fr);\n gap: 12px;\n padding: 8px 20px 2px;\n transition: background-color .15s;\n}\n\n.dshc_message.dshc_grouped {\n padding-top: 1px;\n}\n\n.dshc_message:hover {\n background: color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 70%, transparent);\n}\n\n.dshc_messageHead {\n gap: 8px;\n margin-bottom: 2px;\n}\n\n.dshc_messageHeadGrouped {\n margin-bottom: 0;\n}\n\n.dshc_messageHeadGrouped:not(:has(*)) {\n display: none;\n}\n\n.dshc_author {\n font-size: 13px;\n}\n\n.dshc_time, .dshc_edited {\n font-variant-numeric: tabular-nums;\n font-size: 11px;\n}\n\n.dshc_gutterTime {\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n text-align: right;\n opacity: 0;\n align-self: start;\n padding-top: 3px;\n font-size: 10px;\n transition: opacity .15s;\n}\n\n.dshc_message:hover .dshc_gutterTime {\n opacity: 1;\n}\n\n.dshc_text {\n line-height: 1.6;\n}\n\n.dshc_own {\n grid-template-columns: minmax(0, 1fr) 36px;\n}\n\n.dshc_own > :first-child {\n grid-area: 1 / 2;\n}\n\n.dshc_own > .dshc_messageBody {\n flex-direction: column;\n grid-area: 1 / 1;\n align-items: flex-end;\n display: flex;\n}\n\n.dshc_own .dshc_messageHead {\n flex-direction: row-reverse;\n}\n\n.dshc_own .dshc_ownActions {\n margin-left: 0;\n margin-right: auto;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text {\n max-width: min(560px, 100%);\n color: var(--dsw-alias-label-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 16%, var(--dsw-alias-bg-layer-2));\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-state-business-primary) 28%, transparent);\n border-radius: 16px 6px 16px 16px;\n padding: 8px 14px;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_quote {\n align-self: flex-end;\n}\n\n.dshc_own .dshc_msgTools {\n left: 16px;\n right: auto;\n}\n\n.dshc_own.dshc_grouped > .dshc_messageBody > .dshc_text {\n border-radius: 16px 6px 6px 16px;\n}\n\n.dshc_systemRecord {\n flex-direction: column;\n align-items: center;\n padding-bottom: 4px;\n display: flex;\n}\n\n.dshc_systemRecord > .dshc_systemLine {\n align-self: stretch;\n}\n\n.dshc_taskRecord {\n box-sizing: border-box;\n width: min(480px, 100% - 40px);\n margin-top: 0;\n}\n\n.dshc_systemLine {\n color: var(--dsw-alias-label-tertiary);\n align-items: center;\n gap: 12px;\n padding: 10px 32px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_systemLine:before, .dshc_systemLine:after {\n content: \"\";\n background: var(--dsw-alias-border-l2);\n flex: 24px;\n min-width: 24px;\n height: 1px;\n}\n\n.dshc_systemText {\n text-align: center;\n max-width: min(640px, 80%);\n}\n\n.dshc_systemText p {\n margin: 0;\n}\n\n.dshc_errorBar {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 35%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 9%, transparent);\n border-radius: 12px;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px 10px;\n margin: 6px 20px 6px 68px;\n padding: 8px 12px;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_errorBar .dshc_cardButtons {\n margin: 0 0 0 auto;\n}\n\n.dshc_errorBar .dshc_secondaryButton {\n padding: 3px 10px;\n font-size: 12px;\n}\n\n.dshc_errorBar[data-state=\"retried\"] {\n opacity: .65;\n}\n\n.dshc_errorIcon {\n color: #fff;\n background: var(--dsw-alias-state-error-primary);\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 18px;\n height: 18px;\n font-size: 12px;\n font-weight: 700;\n display: grid;\n}\n\n.dshc_errorText {\n min-width: 0;\n color: var(--dsw-alias-label-primary);\n flex: 200px;\n}\n\n.dshc_errorText p {\n margin: 0;\n}\n\n.dshc_runStrip {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1, var(--dsw-alias-bg-layer-2));\n border-radius: 12px;\n flex-direction: column;\n max-width: 100%;\n margin-top: 4px;\n padding: 5px 10px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_runStrip[data-state=\"running\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_runStrip[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_runHead {\n min-width: 0;\n color: var(--dsw-alias-label-secondary);\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_runTitle {\n color: var(--dsw-alias-label-primary);\n flex: none;\n font-weight: 600;\n}\n\n.dshc_runSummary {\n font-variant-numeric: tabular-nums;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_runHead .dshc_cardViews {\n margin-left: 8px;\n}\n\n.dshc_runHead .dshc_cardViewButton {\n color: var(--dsw-alias-label-tertiary);\n border-radius: 999px;\n font-size: 11px;\n}\n\n.dshc_runHead .dshc_cardViewButton[aria-pressed=\"true\"] {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_runIcon {\n border-radius: 50%;\n flex: none;\n width: 12px;\n height: 12px;\n position: relative;\n}\n\n.dshc_runStrip[data-state=\"running\"] .dshc_runIcon {\n border: 2px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n border-top-color: var(--dsw-alias-state-business-primary);\n animation: .8s linear infinite dshc_channels-spin;\n}\n\n.dshc_runStrip[data-state=\"completed\"] .dshc_runIcon {\n background: #23a55a;\n}\n\n.dshc_runStrip[data-state=\"completed\"] .dshc_runIcon:after {\n content: \"\";\n border: 1.5px solid #fff;\n border-width: 0 1.5px 1.5px 0;\n width: 3px;\n height: 6px;\n position: absolute;\n top: 2px;\n left: 4px;\n transform: rotate(45deg);\n}\n\n.dshc_runStrip[data-state=\"failed\"] .dshc_runIcon {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_runSteps {\n color: var(--dsw-alias-label-secondary);\n margin-top: 4px;\n font-size: 12px;\n line-height: 1.55;\n}\n\n.dshc_runSteps p {\n margin: 0;\n}\n\n.dshc_runStrip .dshc_cardButtons {\n margin-top: 6px;\n}\n\n@keyframes dshc_channels-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_runStrip[data-state=\"running\"] .dshc_runIcon {\n animation-duration: 2.4s;\n }\n}\n\n.dshc_card {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-left-width: 1px;\n border-radius: 14px;\n margin-top: 6px;\n padding: 10px 12px;\n}\n\n.dshc_card[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 40%, var(--dsw-alias-border-l2));\n}\n\n.dshc_taskAnchor {\n max-width: 560px;\n box-shadow: inset 3px 0 0 var(--channels-accent-warm, #d08a2e);\n}\n\n.dshc_permInline {\n color: var(--dsw-alias-label-secondary);\n flex-wrap: wrap;\n align-items: baseline;\n gap: 4px 8px;\n display: flex;\n}\n\n.dshc_permInline .dshc_text {\n flex: 0 auto;\n min-width: 0;\n}\n\n.dshc_permInline .dshc_text p {\n margin: 0;\n}\n\n.dshc_permLock {\n color: var(--dsw-alias-state-warning-primary, #e9a23b);\n flex: none;\n font-size: 9px;\n}\n\n.dshc_permWaiting {\n color: var(--dsw-alias-state-warning-primary, #e9a23b);\n flex: none;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dshc_permTray {\n flex-direction: column;\n gap: 6px;\n max-height: 40%;\n margin: 0 16px 8px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_permTrayItem {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 55%, var(--dsw-alias-border-l2));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 7%, var(--dsw-alias-bg-layer-2));\n border-radius: 14px;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px 12px;\n padding: 10px 12px;\n display: flex;\n box-shadow: 0 6px 20px -12px #00000059;\n}\n\n.dshc_permTrayText {\n flex: 240px;\n min-width: 0;\n font-size: 13px;\n}\n\n.dshc_permTrayText .dshc_text p {\n margin: 0;\n}\n\n.dshc_permTrayWho {\n color: var(--dsw-alias-label-secondary);\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_permTrayItem .dshc_permActions {\n flex-wrap: nowrap;\n margin: 0;\n}\n\n.dshc_permTrayItem .dshc_permScope {\n display: none;\n}\n\n.dshc_members {\n flex-direction: column;\n padding: 0 10px 16px;\n}\n\n@media (width >= 901px) {\n .dshc_members {\n display: flex;\n }\n\n .dshc_membersHidden > .dshc_members {\n display: none;\n }\n}\n\n.dshc_members.dshc_drawerOpen {\n display: flex;\n}\n\n.dshc_activityNow {\n flex-direction: column;\n gap: 2px;\n margin-bottom: 6px;\n display: flex;\n}\n\n.dshc_activityItem {\n border: 1px solid var(--dsw-alias-border-l2);\n width: 100%;\n color: inherit;\n background: var(--dsw-alias-bg-base);\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: 12px;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n display: flex;\n}\n\n.dshc_activityItem + .dshc_activityItem {\n margin-top: 4px;\n}\n\n.dshc_activityItem:hover {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 40%, var(--dsw-alias-border-l2));\n}\n\n.dshc_activityItem:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_activityText {\n flex-direction: column;\n flex: 1;\n min-width: 0;\n display: flex;\n}\n\n.dshc_activityName {\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_activityWhat {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_activityPulse {\n background: var(--dsw-alias-state-business-primary);\n border-radius: 50%;\n flex: none;\n width: 8px;\n height: 8px;\n animation: 1.6s ease-in-out infinite dshc_channels-pulse;\n}\n\n@keyframes dshc_channels-pulse {\n 50% {\n box-shadow: 0 0 0 3px #23a55a40;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_activityPulse {\n animation: none;\n }\n}\n\n.dshc_member {\n padding: 6px 8px;\n}\n\n.dshc_memberText {\n flex: 1;\n}\n\n.dshc_memberStatus {\n flex: none;\n margin-left: auto;\n font-size: 11px;\n}\n\n.dshc_memberStatus[data-status=\"busy\"] {\n color: var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_memberStatus[data-status=\"error\"] {\n color: var(--dsw-alias-state-error-primary);\n font-weight: 600;\n}\n\n.dshc_memberActions {\n background: var(--dsw-alias-bg-layer-2);\n padding-left: 8px;\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n}\n\n.dshc_addMemberButton {\n border-radius: 10px;\n}\n\n@media (width <= 900px) {\n .dshc_headMeta, .dshc_headActivityText {\n display: none;\n }\n\n .dshc_chatHead {\n padding: 0 8px;\n }\n\n .dshc_mobileButton {\n white-space: nowrap;\n }\n\n .dshc_headActivity ~ .dshc_mobileButton:last-child {\n margin-left: 4px;\n }\n\n .dshc_message {\n padding-left: 12px;\n padding-right: 12px;\n }\n\n .dshc_errorBar {\n margin-left: 12px;\n margin-right: 12px;\n }\n\n .dshc_permTray {\n margin: 0 8px 8px;\n }\n\n .dshc_permTrayItem .dshc_permActions {\n flex-wrap: wrap;\n }\n\n .dshc_systemLine {\n padding: 8px 12px;\n }\n\n .dshc_systemText {\n max-width: 90%;\n }\n\n .dshc_memberActions {\n background: none;\n padding-left: 0;\n position: static;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsEnter {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsEnterOwn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(.985);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsGlow {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes dshc_channelsPop {\n from {\n opacity: 0;\n transform: translateY(4px) scale(.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsDot {\n 0%, 60%, 100% {\n opacity: .35;\n transform: none;\n }\n\n 30% {\n opacity: 1;\n transform: translateY(-2px);\n }\n}\n\n@keyframes dshc_channelsDrain {\n from {\n transform: scaleX(1);\n }\n\n to {\n transform: scaleX(0);\n }\n}\n\n.dshc_enter {\n animation: .18s cubic-bezier(.2, 0, 0, 1) both dshc_channelsEnter;\n}\n\n.dshc_enterOwn {\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsEnterOwn;\n}\n\n.dshc_enterGlow:before {\n content: \"\";\n pointer-events: none;\n background: linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-state-business-primary) 10%, transparent), transparent 70%);\n animation: .7s cubic-bezier(.4, 0, .2, 1) both dshc_channelsGlow;\n animation-delay: inherit;\n position: absolute;\n inset: 0;\n}\n\n.dshc_message {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_room {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1), color .16s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_card {\n transition: border-color .32s cubic-bezier(.2, 0, 0, 1), background-color .32s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_sendButton, .dshc_primaryButton, .dshc_secondaryButton, .dshc_mentionButton, .dshc_cardViewButton {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1), opacity .16s cubic-bezier(.2, 0, 0, 1), transform .12s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_sendButton:not(:disabled):active, .dshc_primaryButton:not(:disabled):active, .dshc_secondaryButton:not(:disabled):active, .dshc_mentionButton:not(:disabled):active, .dshc_cardViewButton:active {\n transform: translateY(1px);\n}\n\n.dshc_mentionPopup {\n transform-origin: bottom;\n animation: .16s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n}\n\n.dshc_typingDots {\n vertical-align: middle;\n gap: 3px;\n margin-right: 6px;\n display: inline-flex;\n}\n\n.dshc_typingDots i {\n background: currentColor;\n border-radius: 50%;\n width: 4px;\n height: 4px;\n animation: 1.2s ease-in-out infinite dshc_channelsDot;\n}\n\n.dshc_typingDots i:nth-child(2) {\n animation-delay: .15s;\n}\n\n.dshc_typingDots i:nth-child(3) {\n animation-delay: .3s;\n}\n\n.dshc_logWrap {\n flex-direction: column;\n flex: 1;\n min-height: 0;\n display: flex;\n position: relative;\n}\n\n.dshc_olderLoading {\n color: var(--dsw-alias-label-tertiary);\n text-align: center;\n padding: 8px 16px;\n font-size: 12px;\n}\n\n.dshc_unreadDivider {\n color: var(--dsw-alias-state-error-primary);\n align-items: center;\n gap: 8px;\n margin: 8px 16px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n}\n\n.dshc_unreadDivider:before, .dshc_unreadDivider:after {\n content: \"\";\n opacity: .35;\n background: currentColor;\n flex: 1;\n height: 1px;\n}\n\n.dshc_withdrawnRow {\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 16px;\n font-size: 13px;\n font-style: italic;\n animation: .18s cubic-bezier(.2, 0, 0, 1) both dshc_channelsEnter;\n}\n\n.dshc_jumpLatest {\n z-index: 3;\n border: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #00000029);\n font: inherit;\n cursor: pointer;\n border-radius: 999px;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n font-size: 12px;\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n display: inline-flex;\n position: absolute;\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.dshc_jumpLatest:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_jumpLatest:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_jumpCount {\n color: var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_undoToast {\n z-index: 4;\n border-radius: var(--dsw-radius-md);\n width: max-content;\n max-width: calc(100% - 32px);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n align-items: center;\n gap: 12px;\n margin: 0 auto;\n padding: 8px 8px 8px 14px;\n font-size: 13px;\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n display: flex;\n position: absolute;\n bottom: 12px;\n left: 0;\n right: 0;\n overflow: hidden;\n}\n\n.dshc_undoButton {\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n background: color-mix(in srgb, currentColor 16%, transparent);\n font: inherit;\n cursor: pointer;\n border: 0;\n padding: 2px 10px;\n font-weight: 600;\n}\n\n.dshc_undoButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_undoBar {\n background: var(--dsw-alias-state-business-primary);\n transform-origin: 0;\n height: 2px;\n animation: linear forwards dshc_channelsDrain;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.dshc_undoToast ~ .dshc_jumpLatest {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_enter, .dshc_enterOwn, .dshc_enterGlow:before, .dshc_mentionPopup, .dshc_jumpLatest, .dshc_undoToast, .dshc_withdrawnRow {\n animation: none;\n }\n\n .dshc_typingDots i {\n opacity: .6;\n animation: none;\n }\n\n .dshc_undoBar {\n animation: none;\n }\n\n .dshc_message, .dshc_room, .dshc_card, .dshc_sendButton, .dshc_primaryButton, .dshc_secondaryButton, .dshc_mentionButton, .dshc_cardViewButton {\n transition: none;\n }\n}\n\n.dshc_leadCard {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 14px;\n align-items: center;\n gap: 10px;\n margin: 8px 8px 4px;\n padding: 10px 12px;\n display: flex;\n}\n\n.dshc_leadCardText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_leadCardName {\n color: var(--dsw-alias-label-primary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.dshc_leadCardStatus {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_message:not(.dshc_own) > .dshc_messageBody > .dshc_text {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 6px 16px 16px;\n width: fit-content;\n max-width: min(640px, 100%);\n padding: 8px 14px;\n}\n\n.dshc_message.dshc_grouped:not(.dshc_own) > .dshc_messageBody > .dshc_text {\n border-radius: 6px 16px 16px 6px;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text {\n color: var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-primary);\n box-shadow: none;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text * {\n color: inherit;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text a {\n color: inherit;\n text-decoration: underline;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text code {\n color: inherit;\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 18%, transparent);\n}\n\n.dshc_boardDrawerBackdrop {\n background: #00000040;\n place-items: stretch end;\n padding: 0;\n}\n\n.dshc_boardDrawerBackdrop > .dshc_taskBoardDialog {\n box-sizing: border-box;\n border-radius: 0;\n width: min(440px, 100%);\n height: 100dvh;\n max-height: none;\n animation: .2s ease-out dshc_boardDrawerIn;\n}\n\n@keyframes dshc_boardDrawerIn {\n from {\n opacity: 0;\n transform: translateX(24px);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_boardDrawerBackdrop > .dshc_taskBoardDialog {\n animation: none;\n }\n}\n\n.dshc_schemeToggle {\n border-radius: var(--dsw-radius-sm);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n margin-left: 4px;\n font-size: 16px;\n line-height: 1;\n display: inline-flex;\n}\n\n.dshc_schemeToggle:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_schemeToggle:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_schemeToggle + .dshc_panelToggleEnd {\n margin-left: 4px;\n}\n\n.dshc_progressCard {\n z-index: 2;\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n box-shadow: 0 6px 18px #0000000a, 0 -12px 0 0 var(--dsw-alias-bg-base);\n border-radius: 14px;\n margin: 0 16px 12px;\n padding: 8px 14px;\n font-size: 12px;\n position: sticky;\n top: 0;\n}\n\n.dshc_progressTitle {\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\n.dshc_progressRows {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 0 14px;\n margin: 4px 0 0;\n display: grid;\n}\n\n.dshc_progressRow {\n min-width: 0;\n}\n\n.dshc_progressRow dt {\n color: var(--dsw-alias-label-tertiary);\n font-size: 10px;\n}\n\n.dshc_progressRow dd {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n overflow: hidden;\n}\n\n.dshc_progressRow[data-empty=\"true\"] dd {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_progressRow[data-row=\"open\"][data-empty=\"false\"] dd, .dshc_progressRow[data-row=\"open\"] .dshc_progressLink {\n color: var(--dsw-alias-state-warning-primary, #b7791f);\n}\n\n.dshc_progressLink {\n max-width: 100%;\n color: inherit;\n font: inherit;\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.dshc_progressLink:hover {\n text-decoration: underline;\n}\n\n@media (width <= 760px) {\n .dshc_progressCard {\n margin: 0 10px 10px;\n }\n\n .dshc_progressRows {\n grid-template-columns: 52px minmax(0, 1fr);\n }\n\n .dshc_progressRow {\n display: contents;\n }\n}\n\n.dshc_stepChips {\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_stepChip {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n max-width: 220px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n border-radius: 999px;\n align-items: center;\n gap: 5px;\n padding: 2px 9px 2px 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.dshc_stepChip b {\n color: var(--dsw-alias-label-primary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 600;\n overflow: hidden;\n}\n\n.dshc_stepChip:disabled {\n cursor: default;\n}\n\n.dshc_stepChip[aria-expanded=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_stepChip[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepChip[data-state=\"failed\"] b {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_stepChip[data-state=\"running\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 55%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepMark {\n background: var(--dsw-alias-label-tertiary);\n border-radius: 50%;\n flex: none;\n width: 7px;\n height: 7px;\n}\n\n.dshc_stepChip[data-state=\"ok\"] .dshc_stepMark {\n background: #23a55a;\n}\n\n.dshc_stepChip[data-state=\"failed\"] .dshc_stepMark {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_stepChip[data-state=\"running\"] .dshc_stepMark {\n background: var(--dsw-alias-state-business-primary);\n animation: 1s ease-in-out infinite dshc_channels-blink;\n}\n\n@keyframes dshc_channels-blink {\n 50% {\n opacity: .3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_stepChip[data-state=\"running\"] .dshc_stepMark {\n animation: none;\n }\n}\n\n.dshc_stepOut {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-base));\n color: var(--dsw-alias-label-secondary);\n border-radius: 8px;\n flex-basis: 100%;\n gap: 4px;\n padding: 8px 10px;\n font-size: 11px;\n line-height: 1.5;\n display: grid;\n}\n\n.dshc_stepOut[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepOut div {\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.dshc_stepOut span {\n color: var(--dsw-alias-label-tertiary);\n flex: none;\n}\n\n.dshc_stepOut code {\n overflow-wrap: anywhere;\n min-width: 0;\n font-family: ui-monospace, Menlo, monospace;\n}\n\n.dshc_stepOut[data-state=\"failed\"] > div[data-state=\"failed\"] > div:last-child > code {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_decideTray {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 55%, var(--dsw-alias-border-l2));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 7%, var(--dsw-alias-bg-layer-2));\n border-radius: 14px;\n flex-direction: column;\n max-height: 45%;\n margin: 0 16px 8px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_decideTrayHead {\n width: 100%;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n align-items: baseline;\n gap: 8px;\n padding: 7px 12px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_decideTrayHead strong {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 70%, var(--dsw-alias-label-primary));\n}\n\n.dshc_decideTrayHead small {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_decideTrayHead:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\n.dshc_decideTrayToggle {\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.dshc_decideTray .dshc_permTray {\n max-height: none;\n margin: 0;\n padding: 0 8px 8px;\n}\n\n.dshc_askList {\n flex-direction: column;\n display: flex;\n}\n\n.dshc_askItem {\n border-top: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 30%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n flex-wrap: wrap;\n align-items: center;\n gap: 6px 10px;\n padding: 8px 12px;\n display: flex;\n}\n\n.dshc_askKind {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 75%, var(--dsw-alias-label-primary));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 15%, transparent);\n border-radius: 5px;\n flex: none;\n padding: 0 6px;\n font-size: 11px;\n}\n\n.dshc_askText {\n flex-direction: column;\n flex: 200px;\n min-width: 0;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_askQuestion {\n overflow-wrap: anywhere;\n}\n\n.dshc_askFrom {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n overflow: hidden;\n}\n\n.dshc_askForm {\n flex: 0 260px;\n align-items: center;\n gap: 6px;\n min-width: 160px;\n display: flex;\n}\n\n.dshc_askInput {\n border: 1px solid var(--dsw-alias-border-l2);\n min-width: 0;\n color: inherit;\n background: var(--dsw-alias-bg-base);\n font: inherit;\n border-radius: 8px;\n flex: 1;\n padding: 4px 8px;\n font-size: 12px;\n}\n\n.dshc_askInput:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_askSend {\n width: 26px;\n height: 26px;\n color: var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-primary);\n cursor: pointer;\n border: 0;\n border-radius: 50%;\n flex: none;\n justify-content: center;\n align-items: center;\n padding: 0;\n display: inline-flex;\n}\n\n.dshc_askSend:disabled {\n opacity: .3;\n cursor: default;\n}\n\n.dshc_askSend:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\n.dshc_askDone {\n color: var(--dsw-alias-label-secondary);\n align-items: center;\n gap: 8px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_askNotice {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 75%, var(--dsw-alias-label-primary));\n flex-basis: 100%;\n font-size: 12px;\n}\n\n@media (width <= 900px) {\n .dshc_decideTray {\n margin: 0 8px 8px;\n }\n\n .dshc_askForm {\n flex-basis: 100%;\n }\n}\n\n.dshc_headTeam {\n flex: none;\n align-items: center;\n margin-left: auto;\n display: inline-flex;\n}\n\n.dshc_mate, .dshc_mateMore {\n border: 2px solid var(--dsw-alias-bg-base);\n background: var(--dsw-alias-bg-base);\n cursor: pointer;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n margin-left: -6px;\n padding: 0;\n display: inline-flex;\n position: relative;\n}\n\n.dshc_mate:first-child {\n margin-left: 0;\n}\n\n.dshc_mate .dshc_avatar {\n margin: 0;\n}\n\n.dshc_mateMore {\n background: var(--dsw-alias-interactive-bg-hover);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-secondary);\n font-size: 11px;\n font-weight: 600;\n}\n\n.dshc_mateDot {\n box-sizing: border-box;\n border: 2px solid var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-tertiary);\n border-radius: 50%;\n width: 9px;\n height: 9px;\n position: absolute;\n bottom: -2px;\n right: -2px;\n}\n\n.dshc_mate[data-state=\"busy\"] .dshc_mateDot {\n background: #23a55a;\n animation: 1.6s ease-in-out infinite dshc_channels-pulse;\n}\n\n.dshc_mate[data-state=\"idle\"] .dshc_mateDot {\n background: var(--dsw-alias-bg-base);\n box-shadow: inset 0 0 0 1.5px var(--dsw-alias-label-tertiary);\n}\n\n.dshc_mate[data-state=\"error\"] .dshc_mateDot {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_mate[data-state=\"offline\"] {\n opacity: .55;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_mate[data-state=\"busy\"] .dshc_mateDot {\n animation: none;\n }\n}\n\n@media (width <= 760px) {\n .dshc_headTeam {\n display: none;\n }\n}\n\n.dshc_chatHead > .dshc_headTeam + .dshc_taskBoardTrigger {\n margin-left: 12px;\n}\n\n.dshc_sideDock {\n display: none;\n}\n\n@media (width >= 1101px) {\n .dshc_page.dshc_panelOpen {\n grid-template-columns: 220px minmax(0, 1fr) min(420px, 36%) 240px;\n }\n\n .dshc_page.dshc_panelOpen.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) min(420px, 36%) 240px;\n }\n\n .dshc_page.dshc_panelOpen.dshc_membersHidden {\n grid-template-columns: 220px minmax(0, 1fr) min(420px, 36%);\n }\n\n .dshc_page.dshc_panelOpen.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr) min(420px, 36%);\n }\n\n .dshc_page.dshc_panelOpen > .dshc_sideDock {\n border-left: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n min-width: 0;\n min-height: 0;\n display: flex;\n }\n}\n\n.dshc_sidePanel {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n max-height: none;\n box-shadow: none;\n border: 0;\n border-radius: 0;\n margin: 0;\n animation: .2s ease-out dshc_boardDrawerIn;\n position: relative;\n}\n\n.dshc_sidePanel:focus {\n outline: none;\n}\n\n.dshc_sidePanelClose {\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 6px;\n font-size: 18px;\n line-height: 1;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n.dshc_sidePanelClose:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_sidePanel {\n animation: none;\n }\n}\n\n.dshc_sidePanel .dshc_boardCardGrid {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.dshc_slashPopup {\n z-index: 6;\n width: min(360px, 100% - 32px);\n animation: none;\n right: auto;\n}\n\n.dshc_slashGroup {\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 8px 2px;\n font-size: 11px;\n}\n\n.dshc_slashItem {\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n align-items: baseline;\n gap: 8px;\n padding: 5px 8px;\n display: flex;\n}\n\n.dshc_slashActive {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_slashName {\n flex: none;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-weight: 600;\n}\n\n.dshc_slashMeta {\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_sendButton.dshc_stopButton {\n background: var(--dsw-alias-label-primary);\n}\n\n.dshc_stopNote + .dshc_sendButton {\n margin-left: 8px;\n}\n\n.dshc_sendButton.dshc_stopButton[data-phase=\"stopping\"] {\n opacity: .6;\n cursor: progress;\n}\n\n.dshc_stopNote {\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n margin-left: auto;\n font-size: 12px;\n}\n\n.dshc_cmdLine {\n color: var(--dsw-alias-label-tertiary);\n flex-wrap: wrap;\n align-items: baseline;\n gap: 6px;\n padding: 1px 16px 1px 72px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_cmdLine code {\n color: var(--dsw-alias-label-secondary);\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n\n.dshc_cmdResult {\n min-width: 0;\n max-width: 60ch;\n color: inherit;\n font: inherit;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.dshc_cmdResult[aria-expanded=\"true\"] {\n white-space: pre-line;\n max-width: none;\n}\n\n.dshc_cmdLine[data-failed=\"true\"] .dshc_cmdResult {\n color: var(--dsw-alias-danger, #d94848);\n}\n\n@media (width <= 720px) {\n .dshc_cmdLine {\n padding-left: 16px;\n }\n}\n\n.dshc_msgTool {\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 24px;\n padding: 0;\n display: inline-flex;\n position: relative;\n}\n\n.dshc_msgTool[data-tip]:after {\n content: attr(data-tip);\n z-index: 3;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-label-primary-inverted);\n white-space: nowrap;\n opacity: 0;\n pointer-events: none;\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%);\n}\n\n.dshc_msgTool[data-tip]:hover:after, .dshc_msgTool[data-tip]:focus-visible:after {\n opacity: 1;\n transition: opacity 0s 80ms;\n}\n\n.dshc_permSessionButton {\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n text-underline-offset: 2px;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 4px 6px;\n font-size: 12px;\n text-decoration: underline;\n}\n\n.dshc_permSessionButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_permSessionButton:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.dshc_queuedButton {\n border: 1px solid var(--dsw-alias-border-default, #0000001f);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 6px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.dshc_queuedButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_queuedTag {\n color: #a76a06;\n background: #eaa02824;\n border-radius: 4px;\n padding: 0 5px;\n font-size: 11px;\n line-height: 16px;\n}\n\n[data-queued] .dshc_ownActions {\n opacity: 1;\n}\n\n.dshc_memory {\n margin-top: 4px;\n}\n\n.dshc_memoryBadge {\n background: var(--dsw-alias-fill-secondary, #0000000d);\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 4px;\n padding: 0 6px;\n font-size: 11px;\n line-height: 18px;\n display: inline-flex;\n}\n\n.dshc_memoryBadge:hover, .dshc_memoryBadge[aria-expanded=\"true\"] {\n color: var(--dsw-alias-label-secondary);\n}\n\n.dshc_memoryList {\n border-left: 2px solid var(--dsw-alias-border-default, #0000001f);\n flex-direction: column;\n gap: 4px;\n max-width: 560px;\n margin: 4px 0 0;\n padding: 6px 10px;\n font-size: 12px;\n list-style: none;\n display: flex;\n}\n\n.dshc_memoryItem {\n flex-direction: column;\n display: flex;\n}\n\n.dshc_memoryTitle {\n color: var(--dsw-alias-label-secondary);\n line-height: 1.5;\n}\n\n.dshc_memoryPage {\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-family: var(--dsw-font-mono, ui-monospace, monospace);\n}\n\n.dshc_delivery {\n flex-direction: column;\n gap: 6px;\n max-width: 720px;\n margin-top: 8px;\n display: flex;\n}\n\n.dshc_deliveryFrame {\n border: 1px solid var(--background-modifier-accent, #7f7f7f4d);\n background: #fff;\n border-radius: 6px;\n height: 360px;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_deliveryActions {\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n display: flex;\n}\n\n.dshc_deliveryActions a {\n text-decoration: none;\n}\n\n.dshc_deliveryDone {\n color: var(--text-muted, #888);\n font-size: 12px;\n}\n\n.dshc_deliveryFullDialog {\n box-sizing: border-box;\n flex-direction: column;\n gap: 8px;\n width: 94vw;\n max-width: none;\n height: 92dvh;\n display: flex;\n}\n\n.dshc_deliveryFullFrame {\n background: #fff;\n border-radius: 6px;\n flex: 1;\n min-height: 0;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_dmTitle {\n color: var(--text-muted, #888);\n margin: 14px 8px 4px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_dmAvatar {\n margin-right: 6px;\n display: inline-flex;\n}\n[data-dc-scheme=\"light\"] {\n --dsw-static-amber-100: #fef5e7;\n --dsw-static-amber-400: #f7ad31;\n --dsw-static-amber-500: #f59e0b;\n --dsw-static-amber-600: #dd8629;\n --dsw-static-amber-900: #27241f;\n --dsw-static-blue-100: #dbeafe;\n --dsw-static-blue-300: #93c5fd;\n --dsw-static-blue-400: #60a5fa;\n --dsw-static-blue-450: #4d93f8;\n --dsw-static-blue-500: #3b82f6;\n --dsw-static-blue-50: #eff6ff;\n --dsw-static-blue-50p: #eaf3ff;\n --dsw-static-blue-600: #2563eb;\n --dsw-static-blue-75: #e5f0ff;\n --dsw-static-blue-800: #1e40af;\n --dsw-static-blue-900: #0e3074;\n --dsw-static-blue-950: #172554;\n --dsw-static-deepseek-100: #e4edfd;\n --dsw-static-deepseek-200: #d3e2ff;\n --dsw-static-deepseek-300: #b7c8fe;\n --dsw-static-deepseek-400: #7aaaff;\n --dsw-static-deepseek-450: #5686fe;\n --dsw-static-deepseek-500: #4176e6;\n --dsw-static-deepseek-50: #edf3fe;\n --dsw-static-deepseek-600: #4868b2;\n --dsw-static-deepseek-700-delete: #2f4c8f;\n --dsw-static-deepseek-800: #34415b;\n --dsw-static-deepseek-900: #283142;\n --dsw-static-green-100: #e6faed;\n --dsw-static-green-400: #4ed17e;\n --dsw-static-green-500: #22c55e;\n --dsw-static-green-500-a08: #22c55e14;\n --dsw-static-green-500-a12: #22c55e1f;\n --dsw-static-green-900: #233c2c;\n --dsw-static-neutral-00: #fff;\n --dsw-static-neutral-1000: #000;\n --dsw-static-neutral-100: #f5f5f5;\n --dsw-static-neutral-150: #ededed;\n --dsw-static-neutral-200: #e5e5e5;\n --dsw-static-neutral-250: #dcdcdc;\n --dsw-static-neutral-300: #d4d4d4;\n --dsw-static-neutral-400: #a2a4a6;\n --dsw-static-neutral-500: #7f8287;\n --dsw-static-neutral-50: #fafafa;\n --dsw-static-neutral-550: #65676b;\n --dsw-static-neutral-600: #545557;\n --dsw-static-neutral-700: #3c3c3d;\n --dsw-static-neutral-800: #292929;\n --dsw-static-neutral-850: #212123;\n --dsw-static-neutral-900: #0f0f0f;\n --dsw-static-neutral-bluish-00: #fff;\n --dsw-static-neutral-bluish-1000: #0f1115;\n --dsw-static-neutral-bluish-100: #ebeef2;\n --dsw-static-neutral-bluish-150: #e9ecf2;\n --dsw-static-neutral-bluish-200: #e1e5ee;\n --dsw-static-neutral-bluish-300: #cfd3d6;\n --dsw-static-neutral-bluish-400: #adb2b8;\n --dsw-static-neutral-bluish-500: #979da6;\n --dsw-static-neutral-bluish-50: #f9fafb;\n --dsw-static-neutral-bluish-600: #81858c;\n --dsw-static-neutral-bluish-60: #f5f6f7;\n --dsw-static-neutral-bluish-700: #61666b;\n --dsw-static-neutral-bluish-750: #43454a;\n --dsw-static-neutral-bluish-75: #f1f3f5;\n --dsw-static-neutral-bluish-800: #353638;\n --dsw-static-neutral-bluish-850: #2c2c2e;\n --dsw-static-neutral-bluish-875: #232324;\n --dsw-static-neutral-bluish-900: #1b1b1c;\n --dsw-static-neutral-bluish-950: #151517;\n --dsw-static-red-100: #fee2e2;\n --dsw-static-red-400: #f25a5a;\n --dsw-static-red-400-a12: #f25a5a1f;\n --dsw-static-red-500: #ef4444;\n --dsw-static-red-50: #fef2f2;\n --dsw-static-red-600: #ec1313;\n --dsw-static-red-600-a08: #ec131314;\n --dsw-static-red-900: #570c0c;\n}\n\n[data-dc-scheme=\"dark\"] {\n --dsw-static-amber-100: #fef5e7;\n --dsw-static-amber-400: #f7ad31;\n --dsw-static-amber-500: #f59e0b;\n --dsw-static-amber-600: #dd8629;\n --dsw-static-amber-900: #27241f;\n --dsw-static-blue-100: #dbeafe;\n --dsw-static-blue-300: #93c5fd;\n --dsw-static-blue-400: #60a5fa;\n --dsw-static-blue-450: #4d93f8;\n --dsw-static-blue-500: #3b82f6;\n --dsw-static-blue-50: #eff6ff;\n --dsw-static-blue-50p: #eaf3ff;\n --dsw-static-blue-600: #2563eb;\n --dsw-static-blue-75: #e5f0ff;\n --dsw-static-blue-800: #1e40af;\n --dsw-static-blue-900: #0e3074;\n --dsw-static-blue-950: #172554;\n --dsw-static-deepseek-100: #e4edfd;\n --dsw-static-deepseek-200: #d3e2ff;\n --dsw-static-deepseek-300: #b7c8fe;\n --dsw-static-deepseek-400: #7aaaff;\n --dsw-static-deepseek-450: #5686fe;\n --dsw-static-deepseek-500: #4176e6;\n --dsw-static-deepseek-50: #edf3fe;\n --dsw-static-deepseek-600: #4868b2;\n --dsw-static-deepseek-700-delete: #2f4c8f;\n --dsw-static-deepseek-800: #34415b;\n --dsw-static-deepseek-900: #283142;\n --dsw-static-green-100: #e6faed;\n --dsw-static-green-400: #4ed17e;\n --dsw-static-green-500: #22c55e;\n --dsw-static-green-500-a08: #22c55e14;\n --dsw-static-green-500-a12: #22c55e1f;\n --dsw-static-green-900: #233c2c;\n --dsw-static-neutral-00: #fff;\n --dsw-static-neutral-1000: #000;\n --dsw-static-neutral-100: #f5f5f5;\n --dsw-static-neutral-150: #ededed;\n --dsw-static-neutral-200: #e5e5e5;\n --dsw-static-neutral-250: #dcdcdc;\n --dsw-static-neutral-300: #d4d4d4;\n --dsw-static-neutral-400: #a2a4a6;\n --dsw-static-neutral-500: #7f8287;\n --dsw-static-neutral-50: #fafafa;\n --dsw-static-neutral-550: #65676b;\n --dsw-static-neutral-600: #545557;\n --dsw-static-neutral-700: #3c3c3d;\n --dsw-static-neutral-800: #292929;\n --dsw-static-neutral-850: #212123;\n --dsw-static-neutral-900: #0f0f0f;\n --dsw-static-neutral-bluish-00: #fff;\n --dsw-static-neutral-bluish-1000: #0f1115;\n --dsw-static-neutral-bluish-100: #ebeef2;\n --dsw-static-neutral-bluish-150: #e9ecf2;\n --dsw-static-neutral-bluish-200: #e1e5ee;\n --dsw-static-neutral-bluish-300: #cfd3d6;\n --dsw-static-neutral-bluish-400: #adb2b8;\n --dsw-static-neutral-bluish-500: #979da6;\n --dsw-static-neutral-bluish-50: #f9fafb;\n --dsw-static-neutral-bluish-600: #81858c;\n --dsw-static-neutral-bluish-60: #f9fafb;\n --dsw-static-neutral-bluish-700: #61666b;\n --dsw-static-neutral-bluish-750: #43454a;\n --dsw-static-neutral-bluish-75: #f1f3f5;\n --dsw-static-neutral-bluish-800: #353638;\n --dsw-static-neutral-bluish-850: #2c2c2e;\n --dsw-static-neutral-bluish-875: #232324;\n --dsw-static-neutral-bluish-900: #1b1b1c;\n --dsw-static-neutral-bluish-950: #151517;\n --dsw-static-red-100: #fee2e2;\n --dsw-static-red-400: #f25a5a;\n --dsw-static-red-400-a12: #f25a5a1f;\n --dsw-static-red-500: #ef4444;\n --dsw-static-red-50: #fef2f2;\n --dsw-static-red-600: #ec1313;\n --dsw-static-red-600-a08: #ec131314;\n --dsw-static-red-900: #570c0c;\n}\n\n[data-dc-scheme=\"light\"] {\n --dsw-alias-bg-base: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-document-preview: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-bg-document-selection: color-mix(in srgb, var(--dsw-static-blue-500) 40%, transparent);\n --dsw-alias-label-document-preview: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-bg-layer-1: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-layer-2: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-layer-3: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-mask-1: #0000003d;\n --dsw-alias-bg-mask-2: #0000001f;\n --dsw-alias-bg-mask-3: #0000007a;\n --dsw-alias-bg-mask-photo: #000000e0;\n --dsw-alias-bg-mask-drop: #ffffffb3;\n --dsw-alias-bg-module-platform: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-bg-multi-select: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-bg-overlay: var(--dsw-static-neutral-bluish-150);\n --dsw-alias-bg-skeleton: #0000000a;\n --dsw-alias-border-inverted2: #0000;\n --dsw-alias-border-inverted: #0000;\n --dsw-alias-border-l1: #0000000a;\n --dsw-alias-border-l2-darkmode-thin: #0000001a;\n --dsw-alias-border-l2: #0000001a;\n --dsw-alias-border-l3: #0000001f;\n --dsw-alias-border-l4: #00000029;\n --dsw-alias-brand-primary-invert: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-brand-primary-new-colorprimary-new-color: #4176e6;\n --dsw-alias-brand-primary: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-brand-text: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-button-contrast-fill: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-button-elevated-fill: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-button-floating-fill: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-button-floating-hover: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-button-ghost-active-border: var(--dsw-static-neutral-bluish-500);\n --dsw-alias-button-ghost-active-fill: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-ghost-active-hover: var(--dsw-static-neutral-bluish-150);\n --dsw-alias-button-info-fill: var(--dsw-static-deepseek-500);\n --dsw-alias-button-info-hover: var(--dsw-static-deepseek-400);\n --dsw-alias-button-primary-dimmed: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-primary-fill: var(--dsw-alias-brand-primary);\n --dsw-alias-button-primary-hover: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-tool-bar-fill-invisible: #1f1f1f5c;\n --dsw-alias-button-tool-bar-fill: #54555780;\n --dsw-alias-button-tool-bar-hover: #54555799;\n --dsw-alias-interactive-bg-active: #2631481a;\n --dsw-alias-interactive-bg-hover-accent: #26314824;\n --dsw-alias-interactive-bg-hover-danger: #ec13130d;\n --dsw-alias-interactive-bg-hover-solid: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-interactive-bg-hover: #2631480f;\n --dsw-alias-label-caption: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-label-deep-diving: color-mix(in srgb, var(--dsw-static-deepseek-500) 70%, var(--dsw-static-blue-950));\n --dsw-alias-label-deep-diving-shimmer: color-mix(in srgb, var(--dsw-static-deepseek-500) 30%, var(--dsw-static-blue-950));\n --dsw-alias-label-dimmed: var(--dsw-static-neutral-bluish-200);\n --dsw-alias-label-primary-bluish: var(--dsw-static-blue-900);\n --dsw-alias-label-primary-dimmed: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-label-primary-foreground: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-label-primary-inverted: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-label-primary: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-label-secondary: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-label-shimmer: color-mix(in srgb, var(--dsw-static-neutral-1000) 30%, transparent);\n --dsw-alias-label-tertiary: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-menu-icon: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-link: var(--dsw-static-deepseek-500);\n --dsw-alias-markdown-citation: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-markdown-code-block-banner: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-markdown-code-block: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-markdown-code-segment-selected: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-markdown-code-segment-unselected: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-markdown-inline-code: var(--dsw-static-neutral-50);\n --dsw-alias-markdown-placeholder: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-markdown-tag: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-scrollbar-bg-l1: var(--dsw-static-neutral-200);\n --dsw-alias-scrollbar-bg-l2: var(--dsw-static-neutral-200);\n --dsw-alias-scrollbar-hover-l1: var(--dsw-static-neutral-300);\n --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-300);\n --dsw-alias-state-business-primary: var(--dsw-static-deepseek-500);\n --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-100);\n --dsw-alias-code-diff-added: var(--dsw-static-green-500-a08);\n --dsw-alias-code-diff-deleted: var(--dsw-static-red-600-a08);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #01a241;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #ba2723;\n --dsw-alias-state-error-primary: var(--dsw-static-red-600);\n --dsw-alias-state-error-secondary: var(--dsw-static-red-400);\n --dsw-alias-state-idle-primary: var(--dsw-static-neutral-300);\n --dsw-alias-state-success-primary: var(--dsw-static-green-500);\n --dsw-alias-state-success-secondary: var(--dsw-static-green-400);\n --dsw-alias-state-success-tertiary: var(--dsw-static-green-100);\n --dsw-alias-state-warn-label: var(--dsw-static-amber-600);\n --dsw-alias-state-warn-primary: var(--dsw-static-amber-500);\n --dsw-alias-state-warn-secondary: var(--dsw-static-amber-400);\n --dsw-alias-state-warn-tertiary: var(--dsw-static-amber-100);\n --dsw-alias-switch-thumb: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-toast-bg: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-toast-label: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-tooltip-bg: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-tooltip-key-bg: color-mix(in srgb, var(--dsw-alias-tooltip-bg), white 18%);\n --dsw-alias-turn-trigger-bg: var(--dsw-alias-markdown-code-block);\n --dsw-alias-turn-trigger-bg-hover: var(--dsw-alias-interactive-bg-hover);\n --dsw-specific-bubble-highlight: var(--dsw-static-deepseek-200);\n --dsw-specific-bubble: var(--dsw-static-deepseek-50);\n --dsw-specific-input-major: var(--dsw-static-neutral-bluish-00);\n --dsw-specific-login-input: var(--dsw-static-neutral-bluish-50);\n --dsw-menu-surface-fill: #f8f9fa94;\n --dsw-alias-menu-group-header-fill: #f8f9faf0;\n --dsw-specific-menu: var(--dsw-menu-surface-fill);\n --dsw-specific-selector: var(--dsw-static-neutral-bluish-60);\n --dsw-specific-sidebar-fill: var(--dsw-static-neutral-bluish-50);\n --dsw-specific-sidebar-nav-item-active-accent: var(--dsw-static-deepseek-100);\n --dsw-specific-sidebar-nav-item-active: var(--dsw-static-neutral-bluish-100);\n --dsw-specific-sidebar-nav-item-hover: var(--dsw-static-neutral-bluish-75);\n --dsw-specific-tip: var(--dsw-static-neutral-bluish-60);\n}\n\n[data-dc-scheme=\"dark\"] {\n --dsw-alias-bg-base: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-bg-document-preview: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-bg-document-selection: color-mix(in srgb, var(--dsw-static-blue-500) 40%, transparent);\n --dsw-alias-label-document-preview: var(--dsw-static-neutral-bluish-300);\n --dsw-alias-bg-layer-1: var(--dsw-static-neutral-bluish-875);\n --dsw-alias-bg-layer-2: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-bg-layer-3: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-bg-mask-1: #00000080;\n --dsw-alias-bg-mask-2: #0003;\n --dsw-alias-bg-mask-3: #0000007a;\n --dsw-alias-bg-mask-photo: #000000e0;\n --dsw-alias-bg-mask-drop: #272730b3;\n --dsw-alias-bg-module-platform: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-bg-multi-select: var(--dsw-static-neutral-850);\n --dsw-alias-bg-overlay: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-bg-skeleton: #ffffff14;\n --dsw-alias-border-inverted2: #ffffff14;\n --dsw-alias-border-inverted: #ffffff0f;\n --dsw-alias-border-l1: #ffffff0f;\n --dsw-alias-border-l2-darkmode-thin: #ffffff0f;\n --dsw-alias-border-l2: #ffffff1f;\n --dsw-alias-border-l3: #ffffff29;\n --dsw-alias-border-l4: #fff3;\n --dsw-alias-brand-primary-invert: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-brand-primary-new-colorprimary-new-color: var(--dsw-static-deepseek-450);\n --dsw-alias-brand-primary: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-brand-text: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-button-contrast-fill: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-button-elevated-fill: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-floating-fill: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-button-floating-hover: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-button-ghost-active-border: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-button-ghost-active-fill: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-ghost-active-hover: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-button-info-fill: var(--dsw-static-deepseek-400);\n --dsw-alias-button-info-hover: var(--dsw-static-deepseek-500);\n --dsw-alias-button-primary-dimmed: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-primary-fill: var(--dsw-alias-brand-primary);\n --dsw-alias-button-primary-hover: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-tool-bar-fill-invisible: #1f1f1f5c;\n --dsw-alias-button-tool-bar-fill: #54555780;\n --dsw-alias-button-tool-bar-hover: #54555799;\n --dsw-alias-interactive-bg-active: #ffffff24;\n --dsw-alias-interactive-bg-hover-accent: #ffffff3d;\n --dsw-alias-interactive-bg-hover-danger: #f25a5a26;\n --dsw-alias-interactive-bg-hover-solid: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-interactive-bg-hover: #ffffff14;\n --dsw-alias-label-caption: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-label-deep-diving: color-mix(in srgb, var(--dsw-static-deepseek-450) 55%, var(--dsw-static-neutral-bluish-400));\n --dsw-alias-label-deep-diving-shimmer: color-mix(in srgb, var(--dsw-static-blue-300) 65%, var(--dsw-static-deepseek-400));\n --dsw-alias-label-dimmed: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-label-primary-bluish: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-label-primary-dimmed: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-label-primary-foreground: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-label-primary-inverted: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-label-primary: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-label-secondary: var(--dsw-static-neutral-bluish-300);\n --dsw-alias-label-shimmer: color-mix(in srgb, var(--dsw-static-neutral-00) 45%, transparent);\n --dsw-alias-label-tertiary: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-menu-icon: var(--dsw-alias-label-primary-dimmed);\n --dsw-alias-link: var(--dsw-static-deepseek-400);\n --dsw-alias-markdown-citation: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-markdown-code-block-banner: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-markdown-code-block: var(--dsw-static-neutral-bluish-900);\n --dsw-alias-markdown-code-segment-selected: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-markdown-code-segment-unselected: var(--dsw-static-neutral-bluish-900);\n --dsw-alias-markdown-inline-code: var(--dsw-static-neutral-800);\n --dsw-alias-markdown-placeholder: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-markdown-tag: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-scrollbar-bg-l1: var(--dsw-static-neutral-700);\n --dsw-alias-scrollbar-bg-l2: var(--dsw-static-neutral-600);\n --dsw-alias-scrollbar-hover-l1: var(--dsw-static-neutral-600);\n --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-550);\n --dsw-alias-state-business-primary: var(--dsw-static-deepseek-400);\n --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-800);\n --dsw-alias-code-diff-added: var(--dsw-static-green-500-a12);\n --dsw-alias-code-diff-deleted: var(--dsw-static-red-400-a12);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n --dsw-alias-state-error-primary: var(--dsw-static-red-400);\n --dsw-alias-state-error-secondary: var(--dsw-static-red-400);\n --dsw-alias-state-idle-primary: var(--dsw-static-neutral-600);\n --dsw-alias-state-success-primary: var(--dsw-static-green-500);\n --dsw-alias-state-success-secondary: var(--dsw-static-green-400);\n --dsw-alias-state-success-tertiary: var(--dsw-static-green-900);\n --dsw-alias-state-warn-label: var(--dsw-static-amber-600);\n --dsw-alias-state-warn-primary: var(--dsw-static-amber-500);\n --dsw-alias-state-warn-secondary: var(--dsw-static-amber-400);\n --dsw-alias-state-warn-tertiary: var(--dsw-static-amber-900);\n --dsw-alias-switch-thumb: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-toast-bg: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-toast-label: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-turn-trigger-bg: var(--dsw-alias-interactive-bg-hover);\n --dsw-alias-turn-trigger-bg-hover: var(--dsw-alias-interactive-bg-active);\n --dsw-alias-tooltip-bg: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-tooltip-key-bg: color-mix(in srgb, var(--dsw-alias-tooltip-bg), white 18%);\n --dsw-specific-bubble-highlight: var(--dsw-static-neutral-bluish-750);\n --dsw-specific-bubble: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-input-major: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-login-input: var(--dsw-static-neutral-bluish-900);\n --dsw-menu-surface-fill: #43454a73;\n --dsw-alias-menu-group-header-fill: #303136f0;\n --dsw-specific-menu: var(--dsw-menu-surface-fill);\n --dsw-specific-selector: var(--dsw-static-neutral-bluish-800);\n --dsw-specific-sidebar-fill: var(--dsw-static-neutral-bluish-900);\n --dsw-specific-sidebar-nav-item-active-accent: var(--dsw-static-neutral-bluish-800);\n --dsw-specific-sidebar-nav-item-active: var(--dsw-static-neutral-bluish-750);\n --dsw-specific-sidebar-nav-item-hover: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-tip: var(--dsw-static-neutral-bluish-800);\n}\n\nhtml[data-platform=\"darwin\"] [data-dc-scheme=\"light\"] {\n --dsw-specific-menu: #f8f9faf0;\n}\n\nhtml[data-platform=\"darwin\"] [data-dc-scheme=\"dark\"] {\n --dsw-specific-menu: #303136f0;\n}\n\n[data-dc-scheme=\"light\"] {\n color-scheme: light;\n}\n\n[data-dc-scheme=\"dark\"] {\n color-scheme: dark;\n}\n.dshc_embed {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n padding-top: var(--dsh-frame-top-clearance, 0px);\n background: var(--dsw-alias-bg-base);\n display: flex;\n}\n\n.dshc_frame {\n background: var(--dsw-alias-bg-base);\n border: 0;\n flex: 1;\n width: 100%;\n height: 100%;\n}\n";document.head.appendChild(s)})();
|
|
8
|
+
(function(){var s=document.createElement('style');s.setAttribute('data-dsh-plugin',"bothouse-dsh-channels");s.textContent=".dshc_page {\n width: 100%;\n height: 100%;\n min-height: 0;\n padding-top: var(--dsh-frame-top-clearance, 0px);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n grid-template-columns: 220px minmax(0, 1fr) 240px;\n font-size: 14px;\n line-height: 1.5;\n display: grid;\n}\n\n.dshc_notice {\n max-width: 480px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n grid-column: 1 / -1;\n place-self: center;\n padding: 24px;\n}\n\n.dshc_rooms, .dshc_members {\n background: var(--dsw-alias-bg-layer-2);\n min-height: 0;\n padding: 0 8px 16px;\n overflow-y: auto;\n}\n\n.dshc_membersHead {\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n flex: none;\n height: 44px;\n margin: 0 0 8px;\n}\n\n.dshc_groupTitle {\n color: var(--dsw-alias-label-tertiary);\n letter-spacing: .02em;\n margin: 12px 8px 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_room {\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n align-items: center;\n gap: 6px;\n padding: 6px 8px;\n display: flex;\n}\n\n.dshc_room:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_room:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_workspace {\n padding-left: 22px;\n font-size: .95em;\n}\n\n.dshc_roomLabel {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_activeCount {\n color: var(--dsw-alias-label-tertiary);\n flex-shrink: 0;\n margin-left: auto;\n font-size: 11px;\n}\n\n.dshc_activeBusy {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_roomActive {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_hash {\n color: var(--dsw-alias-label-tertiary);\n font-size: 16px;\n}\n\n.dshc_chat {\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n display: flex;\n}\n\n.dshc_chatHead {\n -webkit-app-region: drag;\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n align-items: center;\n gap: 6px;\n height: 44px;\n padding: 0 16px;\n font-weight: 600;\n display: flex;\n}\n\n.dshc_log {\n flex: 1;\n min-height: 0;\n padding: 8px 0 12px;\n overflow-y: auto;\n}\n\n.dshc_guide {\n border: 1px dashed var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n margin: 16px;\n padding: 14px 16px;\n display: flex;\n}\n\n.dshc_empty {\n color: var(--dsw-alias-label-tertiary);\n padding: 24px 16px;\n}\n\n.dshc_message {\n grid-template-columns: 36px minmax(0, 1fr);\n gap: 12px;\n padding: 6px 16px;\n display: grid;\n}\n\n.dshc_system .dshc_text {\n color: var(--dsw-alias-label-tertiary);\n font-style: italic;\n}\n\n.dshc_avatar {\n corner-shape: round;\n color: #fff;\n border-radius: 50%;\n place-items: center;\n width: 36px;\n height: 36px;\n font-weight: 700;\n display: grid;\n position: relative;\n}\n\n.dshc_avatarImage {\n object-fit: cover;\n border-radius: 50%;\n width: 100%;\n height: 100%;\n position: absolute;\n inset: 0;\n}\n\n.dshc_avatarSmall {\n width: 28px;\n height: 28px;\n font-size: 12px;\n}\n\n.dshc_avatarAnchor {\n align-self: start;\n position: relative;\n}\n\n.dshc_avatarButton {\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 50%;\n padding: 0;\n}\n\n.dshc_avatarMenu {\n z-index: 3;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n min-width: 140px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n flex-direction: column;\n padding: 6px;\n display: flex;\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n}\n\n.dshc_avatarMenuTitle {\n padding: 4px 8px;\n font-weight: 700;\n}\n\n.dshc_avatarMenuItem {\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 6px 8px;\n}\n\n.dshc_avatarMenuItem:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_messageBody {\n min-width: 0;\n}\n\n.dshc_messageHead {\n align-items: baseline;\n gap: 6px;\n display: flex;\n}\n\n.dshc_author {\n font-weight: 600;\n}\n\n.dshc_time {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dshc_tag {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-state-business-primary);\n white-space: nowrap;\n padding: 0 4px;\n font-size: 10px;\n font-weight: 600;\n}\n\n.dshc_edited {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n.dshc_ownActions {\n margin-left: auto;\n margin-right: var(--channels-reply-clearance);\n opacity: 0;\n gap: 8px;\n display: inline-flex;\n}\n\n.dshc_message:hover .dshc_ownActions, .dshc_ownActions:focus-within {\n opacity: 1;\n}\n\n@media (hover: none) {\n .dshc_ownActions {\n display: none;\n }\n\n .dshc_message[data-tools-open] .dshc_ownActions {\n opacity: 1;\n display: inline-flex;\n }\n}\n\n.dshc_editBox {\n flex-direction: column;\n gap: 6px;\n margin-top: 4px;\n display: flex;\n}\n\n.dshc_editInput {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n min-height: 60px;\n color: inherit;\n font: inherit;\n resize: vertical;\n padding: 8px;\n}\n\n.dshc_editBar {\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_editBar .dshc_time {\n margin-right: auto;\n}\n\n.dshc_text {\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.dshc_card {\n border-left: 4px solid var(--dsw-alias-state-business-primary);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n margin-top: 4px;\n padding: 6px 10px;\n}\n\n.dshc_card[data-state=\"failed\"] {\n border-left-color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_card[data-state=\"retrying\"] {\n border-left-color: var(--dsw-alias-state-warning-primary, #faa61a);\n}\n\n.dshc_cardButtons {\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_cardTitle {\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_cardHead {\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_cardViews {\n gap: 4px;\n display: flex;\n}\n\n.dshc_cardViewButton {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n cursor: pointer;\n background: none;\n padding: 0 6px;\n font-size: 12px;\n}\n\n.dshc_cardViewButton[aria-pressed=\"true\"] {\n background: var(--dsw-alias-bg-base);\n font-weight: 600;\n}\n\n.dshc_permActions {\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_permScope {\n color: var(--dsw-alias-text-secondary);\n flex-basis: 100%;\n font-size: 12px;\n}\n\n.dshc_permStatus {\n margin-top: 6px;\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_message {\n --channels-reply-clearance: 36px;\n position: relative;\n}\n\n.dshc_quote {\n border-left: 2px solid var(--dsw-alias-label-tertiary);\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n text-overflow: ellipsis;\n gap: 6px;\n margin-bottom: 2px;\n padding-left: 8px;\n font-size: 12px;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_quoteDeleted {\n font-style: italic;\n}\n\n.dshc_quoteAuthor {\n flex: none;\n font-weight: 600;\n}\n\n.dshc_replyButton {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n cursor: pointer;\n border: 0;\n padding: 0 6px;\n}\n\n.dshc_msgTools {\n z-index: 1;\n border: 1px solid var(--dsw-alias-separator, #7f7f7f40);\n border-radius: var(--dsw-radius-sm, 6px);\n background: var(--dsw-alias-bg-elevated, var(--dsw-alias-bg-primary, #fff));\n opacity: 0;\n pointer-events: none;\n align-items: center;\n gap: 2px;\n padding: 2px;\n display: inline-flex;\n position: absolute;\n top: 2px;\n right: 16px;\n box-shadow: 0 2px 6px #00000014;\n}\n\n.dshc_msgTool {\n border-radius: var(--dsw-radius-sm, 6px);\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 2px 8px;\n font-size: 12px;\n}\n\n.dshc_msgTool:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_msgTool:disabled {\n cursor: default;\n opacity: .6;\n}\n\n.dshc_msgToolNote {\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n padding: 0 6px;\n font-size: 12px;\n}\n\n.dshc_message:hover .dshc_msgTools, .dshc_message:focus-within .dshc_msgTools, .dshc_msgTools:has(.dshc_msgToolNote) {\n opacity: 1;\n pointer-events: auto;\n}\n\n@media (hover: none) {\n .dshc_message {\n -webkit-touch-callout: none;\n }\n\n .dshc_msgTools {\n display: none;\n }\n\n .dshc_message[data-tools-open] {\n background: var(--dsw-alias-interactive-bg-hover);\n }\n\n .dshc_message[data-tools-open] .dshc_msgTools {\n z-index: 3;\n opacity: 1;\n pointer-events: auto;\n display: inline-flex;\n top: -14px;\n right: 12px;\n }\n\n .dshc_message[data-tools-open] .dshc_msgTool {\n width: 40px;\n height: 36px;\n }\n}\n\n.dshc_replyBar {\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n background: var(--dsw-alias-bg-layer-2);\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n padding: 4px 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_replyBarText {\n white-space: nowrap;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.dshc_replyCancel {\n color: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n}\n\n.dshc_working {\n min-height: 20px;\n color: var(--dsw-alias-label-tertiary);\n align-items: center;\n gap: 6px;\n padding: 0 16px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_composer {\n padding: 0 16px 16px;\n position: relative;\n}\n\n.dshc_composerBox {\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1, var(--dsw-alias-bg-layer-2));\n box-shadow: var(--dsw-shadow-lv1-blur);\n flex-direction: column;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_composerBox:focus-within {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_composerToolbar {\n flex: none;\n align-items: center;\n gap: 4px;\n padding: 4px 10px 10px;\n display: flex;\n}\n\n.dshc_composerBox > .dshc_replyBar, .dshc_composerBox > .dshc_attachments {\n margin: 10px 14px 0;\n}\n\n.dshc_mentionButton {\n border-radius: var(--dsw-radius-full, 50%);\n width: 32px;\n height: 32px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n padding: 0;\n font-size: 18px;\n display: inline-flex;\n}\n\n.dshc_mentionButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_sendButton {\n border-radius: var(--dsw-radius-full, 50%);\n width: 32px;\n height: 32px;\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-label-primary);\n font: inherit;\n cursor: pointer;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n margin-left: auto;\n padding: 0;\n display: inline-flex;\n}\n\n.dshc_sendButton:disabled {\n opacity: .45;\n cursor: default;\n}\n\n.dshc_sendButton:focus-visible, .dshc_mentionButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_mentionPopup {\n z-index: 2;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-base);\n max-height: 320px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n flex-direction: column;\n padding: 6px;\n display: flex;\n position: absolute;\n bottom: calc(100% - 8px);\n left: 16px;\n right: 16px;\n}\n\n.dshc_mentionPopup > [role=\"listbox\"] {\n min-height: 0;\n overflow-y: auto;\n}\n\n.dshc_mentionTitle {\n color: var(--dsw-alias-label-tertiary);\n padding: 4px 8px 6px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_mentionItem {\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n align-items: center;\n gap: 10px;\n padding: 6px 8px;\n display: flex;\n}\n\n.dshc_mentionActive {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_mentionName {\n font-weight: 600;\n}\n\n.dshc_mentionMeta {\n color: var(--dsw-alias-label-tertiary);\n margin-left: auto;\n font-size: 12px;\n}\n\n.dshc_mentionHint {\n border-top: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 8px 2px;\n font-size: 11px;\n}\n\n.dshc_sendError {\n color: var(--dsw-alias-state-error-primary);\n margin-bottom: 6px;\n font-size: 12px;\n}\n\n.dshc_input {\n box-sizing: border-box;\n width: 100%;\n min-height: 52px;\n max-height: 40vh;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n resize: none;\n field-sizing: content;\n background: none;\n border: 0;\n border-radius: 0;\n flex: 1;\n min-width: 0;\n padding: 14px 16px 8px;\n line-height: 1.5;\n}\n\n.dshc_input::placeholder {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n@media (width <= 600px) {\n .dshc_composer {\n padding: 0 8px 8px;\n }\n\n .dshc_composerToolbar {\n padding: 4px 8px 8px;\n }\n\n .dshc_input {\n padding: 12px 14px 8px;\n }\n}\n\n.dshc_input:focus-visible {\n outline: none;\n}\n\n.dshc_member {\n border-radius: var(--dsw-radius-sm);\n min-width: 0;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: 1;\n align-items: center;\n gap: 10px;\n padding: 5px 8px;\n display: flex;\n}\n\n.dshc_member:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_member:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_offline {\n opacity: .5;\n}\n\n.dshc_memberAvatar {\n position: relative;\n}\n\n.dshc_presence {\n border: 2px solid var(--dsw-alias-bg-layer-2);\n corner-shape: round;\n background: #23a55a;\n border-radius: 50%;\n width: 10px;\n height: 10px;\n position: absolute;\n bottom: -2px;\n right: -2px;\n}\n\n.dshc_offline .dshc_presence {\n background: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_memberText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_memberName {\n align-items: center;\n gap: 6px;\n display: flex;\n}\n\n.dshc_memberStatus {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n}\n\n@media (width <= 900px) {\n .dshc_page {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .dshc_rooms, .dshc_members {\n display: none;\n }\n}\n\n.dshc_groupHead {\n justify-content: space-between;\n align-items: center;\n padding-right: 4px;\n display: flex;\n}\n\n.dshc_iconButton {\n border-radius: var(--dsw-radius-sm);\n width: 22px;\n height: 22px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n font-size: 16px;\n line-height: 1;\n}\n\n.dshc_iconButton:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_roomInput, .dshc_fieldInput {\n box-sizing: border-box;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n font: inherit;\n padding: 6px 8px;\n}\n\n.dshc_roomInput {\n margin: 2px 0 6px;\n}\n\n.dshc_roomInput:focus-visible, .dshc_fieldInput:focus-visible, .dshc_iconButton:focus-visible, .dshc_linkButton:focus-visible, .dshc_addMemberButton:focus-visible, .dshc_primaryButton:focus-visible, .dshc_secondaryButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_addMemberButton {\n box-sizing: border-box;\n border: 1px dashed var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n margin: 4px 0;\n padding: 7px 8px;\n}\n\n.dshc_addMemberButton:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_settingsDivider {\n border: 0;\n border-top: 1px solid var(--dsw-alias-border-l1);\n width: 100%;\n margin: 8px 0 4px;\n}\n\n.dshc_memberListDivider {\n border: 0;\n border-top: 1px solid var(--dsw-alias-border-l1);\n width: calc(100% - 16px);\n margin: 12px 8px 2px;\n}\n\n.dshc_settingsButton {\n text-align: left;\n border-style: solid;\n border-color: #0000;\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_settingsButton svg {\n flex: none;\n}\n\n.dshc_memberRow {\n border-radius: var(--dsw-radius-sm);\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.dshc_memberRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_memberRow .dshc_member:hover {\n background: none;\n}\n\n.dshc_memberModel {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n overflow: hidden;\n}\n\n.dshc_memberActions {\n color: var(--dsw-alias-label-tertiary);\n opacity: 0;\n flex: none;\n gap: 4px;\n padding-right: 6px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_memberRow:hover .dshc_memberActions, .dshc_memberRow:focus-within .dshc_memberActions {\n opacity: 1;\n}\n\n.dshc_linkButton {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 2px 4px;\n font-size: 12px;\n}\n\n.dshc_linkButton:hover {\n color: var(--dsw-alias-label-primary);\n text-decoration: underline;\n}\n\n.dshc_dialogBackdrop {\n z-index: 10;\n background: #00000073;\n place-items: center;\n padding: 16px;\n display: grid;\n position: fixed;\n inset: 0;\n}\n\n.dshc_dialog {\n box-sizing: border-box;\n border-radius: var(--dsw-radius-lg);\n width: min(460px, 100%);\n max-height: calc(100vh - 32px);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n box-shadow: var(--dsw-elevation-panel, 0 12px 32px #0000004d);\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog {\n box-sizing: border-box;\n height: min(70vh, 100dvh - 32px);\n max-height: calc(100dvh - 32px);\n overflow: hidden;\n}\n\n.dshc_settingsBody {\n overscroll-behavior: contain;\n flex: auto;\n min-height: 0;\n padding: 2px;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog > :not(.dshc_settingsBody) {\n flex-shrink: 0;\n}\n\n.dshc_settingsFields {\n flex-direction: column;\n gap: 12px;\n display: flex;\n}\n\n.dshc_settingsFeedback {\n overflow-wrap: anywhere;\n max-height: 20%;\n overflow-y: auto;\n}\n\n.dshc_settingsDialog .dshc_dialogActions {\n justify-content: space-between;\n}\n\n@media (width <= 599px) {\n .dshc_settingsDialog {\n height: calc(100dvh - 32px);\n padding: 16px;\n }\n}\n\n.dshc_avatarCropStage {\n background: #000000a6;\n padding: 20px;\n}\n\n.dshc_avatarCropFrame {\n aspect-ratio: 1;\n touch-action: none;\n cursor: grab;\n outline: 2px solid #fff;\n width: min(256px, 100%);\n margin: auto;\n position: relative;\n overflow: hidden;\n}\n\n.dshc_avatarCropFrame:active {\n cursor: grabbing;\n}\n\n.dshc_avatarCropFrame img {\n pointer-events: none;\n user-select: none;\n max-width: none;\n position: absolute;\n}\n\n.dshc_dialogTitle {\n margin: 0;\n font-size: 16px;\n}\n\n.dshc_field {\n color: var(--dsw-alias-label-secondary);\n flex-direction: column;\n gap: 4px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_field textarea {\n resize: vertical;\n}\n\n.dshc_choiceRow {\n flex-wrap: wrap;\n gap: 12px;\n display: flex;\n}\n\n.dshc_choiceColumn {\n flex-direction: column;\n gap: 12px;\n display: flex;\n}\n\n.dshc_choiceColumn .dshc_choice {\n grid-template-columns: max-content minmax(0, 1fr);\n align-items: start;\n display: grid;\n}\n\n.dshc_choice {\n color: var(--dsw-alias-label-primary, inherit);\n cursor: pointer;\n align-items: center;\n gap: 4px;\n font-size: 13px;\n display: inline-flex;\n}\n\n.dshc_dialogActions {\n justify-content: flex-end;\n gap: 8px;\n display: flex;\n}\n\n.dshc_primaryButton, .dshc_secondaryButton {\n border-radius: var(--dsw-radius-sm);\n font: inherit;\n cursor: pointer;\n padding: 7px 14px;\n}\n\n.dshc_primaryButton {\n color: #fff;\n background: var(--dsw-alias-state-business-primary);\n border: 0;\n}\n\n.dshc_primaryButton:disabled {\n cursor: not-allowed;\n opacity: .5;\n}\n\n.dshc_secondaryButton {\n border: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-primary);\n background: none;\n}\n\n.dshc_memberFailed .dshc_memberStatus {\n color: var(--dsw-alias-state-error-primary, #ed4245);\n}\n\n.dshc_memberFailed .dshc_presence {\n background: #ed4245;\n}\n\n.dshc_mobileButton, .dshc_drawerBackdrop {\n display: none;\n}\n\n.dshc_panelToggle {\n border-radius: var(--dsw-radius-sm);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n justify-content: center;\n align-items: center;\n font-size: 16px;\n line-height: 1;\n display: inline-flex;\n}\n\n.dshc_panelToggle:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_panelToggle:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_panelToggleEnd {\n margin-left: auto;\n}\n\n.dshc_capabilityMenu {\n z-index: 4;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-base);\n max-height: 260px;\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n gap: 2px;\n padding: 5px;\n display: grid;\n position: absolute;\n bottom: calc(100% + 4px);\n left: 0;\n right: 0;\n overflow-y: auto;\n}\n\n.dshc_capabilityItem:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_capabilityHelp {\n color: var(--dsw-alias-label-secondary);\n white-space: normal;\n margin: 6px;\n font-size: 12px;\n}\n\n.dshc_capabilityItem:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_capabilityItem {\n text-align: left;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n background: none;\n border: 0;\n padding: 5px 8px;\n font-size: 12px;\n font-weight: 400;\n}\n\n@media (width >= 901px) {\n .dshc_page.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) 240px;\n }\n\n .dshc_page.dshc_membersHidden {\n grid-template-columns: 220px minmax(0, 1fr);\n }\n\n .dshc_page.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr);\n }\n\n .dshc_roomsHidden > .dshc_rooms, .dshc_membersHidden > .dshc_members {\n display: none;\n }\n}\n\n@media (width <= 900px) {\n .dshc_page {\n position: relative;\n overflow: hidden;\n }\n\n .dshc_mobileButton {\n min-width: 40px;\n min-height: 40px;\n color: inherit;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 6px;\n justify-content: center;\n align-items: center;\n display: inline-flex;\n }\n\n .dshc_mobileButton:last-child {\n margin-left: auto;\n }\n\n .dshc_panelToggle {\n display: none;\n }\n\n .dshc_drawerBackdrop {\n z-index: 4;\n background: #00000073;\n border: 0;\n display: block;\n position: absolute;\n inset: 0;\n }\n\n .dshc_rooms.dshc_drawerOpen, .dshc_members.dshc_drawerOpen {\n z-index: 5;\n box-sizing: border-box;\n width: min(280px, 85%);\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n box-shadow: 0 0 24px #0000004d;\n }\n\n .dshc_rooms.dshc_drawerOpen {\n left: 0;\n }\n\n .dshc_members.dshc_drawerOpen {\n right: 0;\n }\n\n .dshc_memberActions {\n opacity: 1;\n }\n\n .dshc_messageHead {\n flex-wrap: wrap;\n }\n}\n\n.dshc_avatarPicker {\n flex-wrap: wrap;\n gap: 8px;\n display: flex;\n}\n\n.dshc_avatarOption {\n cursor: pointer;\n background: none;\n border: 2px solid #0000;\n border-radius: 50%;\n padding: 2px;\n display: grid;\n}\n\n.dshc_avatarOption[aria-checked=\"true\"] {\n border-color: var(--dsw-alias-accent, #5865f2);\n}\n\n.dshc_taskBoardTrigger {\n box-sizing: border-box;\n border-radius: var(--dsw-radius-sm);\n width: 100%;\n height: 34px;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n align-items: center;\n gap: 8px;\n margin: 4px 0;\n padding: 7px 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_taskBoardTrigger:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_taskBoardTrigger:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_taskBoardSummary {\n color: var(--dsw-alias-label-secondary);\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n overflow: hidden;\n}\n\n.dshc_taskBoardDialog {\n width: min(920px, 100%);\n height: min(70vh, 100dvh - 32px);\n overflow: hidden;\n}\n\n.dshc_taskBoardBody {\n overscroll-behavior: contain;\n flex: auto;\n min-height: 0;\n overflow-y: auto;\n}\n\n.dshc_taskBoardDialog > :not(.dshc_taskBoardBody) {\n flex-shrink: 0;\n}\n\n.dshc_boardTabs {\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n gap: 4px;\n padding-bottom: 8px;\n display: flex;\n overflow-x: auto;\n}\n\n.dshc_boardTabs button {\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n padding: 7px 10px;\n font-size: 13px;\n}\n\n.dshc_boardTabs button:hover, .dshc_boardTabs button[aria-selected=\"true\"] {\n color: var(--dsw-alias-state-business-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_boardTabs button:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\n.dshc_boardTabCount {\n font-variant-numeric: tabular-nums;\n margin-left: 4px;\n}\n\n.dshc_boardCardGrid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px;\n margin: 6px 0 16px;\n padding: 2px;\n list-style: none;\n display: grid;\n}\n\n.dshc_boardTaskCard {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n border-radius: 12px;\n flex-direction: column;\n gap: 10px;\n min-width: 0;\n padding: 14px;\n transition: transform .14s, box-shadow .14s;\n display: flex;\n}\n\n.dshc_boardTaskCard[data-working=\"true\"] {\n border-color: var(--dsw-alias-state-business-primary);\n}\n\n.dshc_boardTaskCard[data-status=\"done\"] {\n filter: saturate(.25);\n color: var(--dsw-alias-label-secondary);\n}\n\n.dshc_boardTaskCard:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px #00000014;\n}\n\n.dshc_boardTaskHeader {\n align-items: flex-start;\n gap: 8px;\n display: flex;\n}\n\n.dshc_boardTaskTitle {\n overflow-wrap: anywhere;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n flex: 1;\n font-size: 14px;\n font-weight: 600;\n line-height: 1.5;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.dshc_boardTaskHeader .dshc_taskStatus {\n border-radius: 999px;\n padding: 3px 7px;\n font-size: 11px;\n}\n\n.dshc_boardTaskCard .dshc_taskLinks {\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.dshc_boardTabEmpty {\n min-height: 240px;\n color: var(--dsw-alias-label-secondary);\n text-align: center;\n justify-content: center;\n align-items: center;\n padding: 40px 16px;\n display: flex;\n}\n\n@media (width <= 640px) {\n .dshc_boardCardGrid {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_boardTaskCard {\n transition: none;\n }\n\n .dshc_boardTaskCard:hover {\n transform: none;\n }\n}\n\n.dshc_taskBoardScope {\n color: var(--dsw-alias-label-secondary);\n font-size: 12px;\n}\n\n.dshc_taskSection + .dshc_taskSection {\n margin-top: 8px;\n}\n\n.dshc_taskSectionTitle {\n color: var(--dsw-alias-label-secondary);\n margin: 0 0 4px;\n padding: 0 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_taskOwnerGroup + .dshc_taskOwnerGroup {\n margin-top: 4px;\n}\n\n.dshc_taskOwnerName {\n color: var(--dsw-alias-label-tertiary);\n padding: 0 8px;\n font-size: 12px;\n}\n\n.dshc_taskList {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.dshc_taskRow {\n border-radius: var(--dsw-radius-sm);\n padding: 6px 8px;\n}\n\n.dshc_taskRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_taskLine {\n align-items: center;\n gap: 6px;\n min-width: 0;\n display: flex;\n}\n\n.dshc_taskTitle {\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n overflow: hidden;\n}\n\n.dshc_taskMeta {\n color: var(--dsw-alias-label-tertiary);\n flex-wrap: wrap;\n gap: 0 8px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_taskLinks {\n gap: 8px;\n display: flex;\n}\n\n.dshc_taskEmpty {\n color: var(--dsw-alias-label-tertiary);\n margin: 0 8px;\n font-size: 12px;\n}\n\n.dshc_taskDone summary {\n cursor: pointer;\n}\n\n.dshc_taskStatus {\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-state-business-primary);\n flex: none;\n padding: 0 4px;\n font-size: 10px;\n font-style: normal;\n font-weight: 600;\n}\n\n.dshc_taskStatus[data-status=\"asked\"], .dshc_taskStatus[data-status=\"escalated\"], .dshc_taskStatus[data-status=\"declined\"], .dshc_taskStatus[data-status=\"rework\"] {\n background: var(--dsw-alias-state-warning-primary, var(--dsw-alias-state-error-primary));\n}\n\n.dshc_taskStatus[data-status=\"done\"] {\n background: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_taskCard {\n margin-top: 4px;\n font-style: normal;\n}\n\n.dshc_taskMembers {\n margin: 4px 0 0;\n padding: 0;\n list-style: none;\n}\n\n.dshc_taskMember {\n align-items: center;\n gap: 8px;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_taskMemberName {\n font-weight: 600;\n}\n\n.dshc_taskSub {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_focused {\n background: var(--dsw-alias-interactive-bg-hover);\n outline: 2px solid var(--dsw-alias-state-business-primary);\n}\n\n.dshc_attachments {\n flex-wrap: wrap;\n gap: 6px;\n margin: 4px 0;\n display: flex;\n}\n\n.dshc_attachmentImage {\n border-radius: 4px;\n max-width: min(320px, 100%);\n max-height: 240px;\n display: block;\n}\n\n.dshc_imageAttachment {\n align-content: start;\n max-width: 100%;\n display: grid;\n}\n\n.dshc_imagePreviewTrigger {\n cursor: zoom-in;\n background: none;\n border: 0;\n border-radius: 4px;\n grid-area: 1 / 1;\n padding: 0;\n}\n\n.dshc_imagePreviewTrigger:focus-visible {\n outline: 2px solid var(--dsw-alias-state-business-primary);\n outline-offset: 2px;\n}\n\n.dshc_imagePreviewDialog {\n box-sizing: border-box;\n width: fit-content;\n max-width: 90vw;\n max-height: 90dvh;\n overflow: auto;\n}\n\n.dshc_imagePreviewHeader {\n flex-shrink: 0;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.dshc_imagePreviewHeader span {\n overflow-wrap: anywhere;\n min-width: 0;\n}\n\n.dshc_imagePreviewHeader button {\n flex-shrink: 0;\n}\n\n.dshc_imagePreviewImage {\n object-fit: contain;\n align-self: center;\n max-width: 100%;\n min-height: 0;\n max-height: 65dvh;\n display: block;\n}\n\n.dshc_imagePreviewActions {\n flex-wrap: wrap;\n flex-shrink: 0;\n gap: 8px;\n display: flex;\n}\n\n.dshc_imagePreviewActions a {\n text-decoration: none;\n}\n\n.dshc_imagePreviewActions button:disabled {\n cursor: wait;\n opacity: .5;\n}\n\n.dshc_attachmentActions {\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-base);\n opacity: 0;\n pointer-events: none;\n flex-wrap: wrap;\n grid-area: 1 / 1;\n place-self: start end;\n gap: 4px;\n margin: 4px;\n padding: 4px;\n display: flex;\n}\n\n.dshc_attachmentActions a {\n text-decoration: none;\n}\n\n.dshc_attachmentActions button:disabled {\n cursor: wait;\n opacity: .5;\n}\n\n.dshc_imageAttachment:hover .dshc_attachmentActions, .dshc_imageAttachment:focus-within .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"error\"] .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"copying\"] .dshc_attachmentActions, .dshc_imageAttachment[data-copy-state=\"copied\"] .dshc_attachmentActions {\n opacity: 1;\n pointer-events: auto;\n}\n\n@media (hover: none), (pointer: coarse), (width <= 768px) {\n .dshc_attachmentActions {\n opacity: 1;\n pointer-events: auto;\n }\n}\n\n.dshc_attachmentThumb {\n object-fit: cover;\n vertical-align: middle;\n border-radius: 3px;\n width: 32px;\n height: 32px;\n}\n\n.dshc_attachmentFile {\n background: var(--background-secondary, #7f7f7f26);\n color: inherit;\n border-radius: 4px;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n text-decoration: none;\n display: inline-flex;\n}\n\n.dshc_attachmentSize {\n opacity: .6;\n font-size: .85em;\n}\n\n.dshc_attachmentAudio {\n flex-direction: column;\n gap: 2px;\n width: min(320px, 100%);\n display: flex;\n}\n\n.dshc_attachmentAudio audio {\n width: 100%;\n}\n\n.dshc_attachmentAudio a {\n color: inherit;\n text-decoration: none;\n}\n\n.dshc_attachmentFile {\n overflow-wrap: anywhere;\n max-width: 100%;\n}\n\n.dshc_chatHead button, .dshc_chatHead input, .dshc_chatHead select, .dshc_chatHead a, .dshc_chatHead [role=\"menu\"] {\n -webkit-app-region: no-drag;\n}\n\n.dshc_text pre, .dshc_text table {\n max-width: 100%;\n overflow-x: auto;\n}\n\n@media (width >= 901px) {\n .dshc_page {\n grid-template-columns: 232px minmax(0, 1fr) 272px;\n }\n\n .dshc_page.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) 272px;\n }\n\n .dshc_page.dshc_membersHidden {\n grid-template-columns: 232px minmax(0, 1fr);\n }\n\n .dshc_page.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr);\n }\n}\n\n.dshc_rooms {\n padding-top: 4px;\n}\n\n.dshc_room {\n border-radius: var(--dsw-radius-md);\n min-height: 34px;\n padding: 6px 10px;\n transition: background-color .15s, color .15s;\n}\n\n.dshc_workspace {\n min-height: 30px;\n padding-left: 28px;\n font-size: 13px;\n position: relative;\n}\n\n.dshc_workspace:before {\n content: \"\";\n border-left: 1px solid var(--dsw-alias-border-l2);\n border-bottom: 1px solid var(--dsw-alias-border-l2);\n border-bottom-left-radius: 4px;\n width: 7px;\n position: absolute;\n top: 0;\n bottom: 50%;\n left: 15px;\n}\n\n.dshc_workspace .dshc_hash {\n display: none;\n}\n\n.dshc_roomActive {\n color: var(--dsw-alias-label-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);\n box-shadow: inset 2px 0 0 var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_activeCount {\n font-variant-numeric: tabular-nums;\n border-radius: 999px;\n margin-left: 0;\n padding: 0 6px;\n font-size: 11px;\n line-height: 18px;\n}\n\n.dshc_activeBusy {\n color: var(--dsw-alias-state-business-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);\n}\n\n.dshc_roomLabel {\n flex: auto;\n min-width: 0;\n}\n\n.dshc_avatarStack {\n flex: none;\n align-items: center;\n padding-left: 4px;\n display: inline-flex;\n}\n\n.dshc_stackDot {\n border: 2px solid var(--dsw-alias-bg-layer-2);\n background-position: center;\n background-size: cover;\n border-radius: 50%;\n width: 18px;\n height: 18px;\n margin-left: -6px;\n}\n\n.dshc_room .dshc_stackDot {\n width: 16px;\n height: 16px;\n}\n\n.dshc_roomActive .dshc_stackDot {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, var(--dsw-alias-bg-layer-2));\n}\n\n.dshc_chatHead {\n gap: 8px;\n height: 52px;\n}\n\n.dshc_roomName {\n letter-spacing: -.01em;\n white-space: nowrap;\n font-size: 15px;\n}\n\n.dshc_headMeta {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n}\n\n.dshc_headActivity {\n color: var(--dsw-alias-label-secondary);\n flex: none;\n align-items: center;\n gap: 6px;\n margin-left: auto;\n font-size: 12px;\n font-weight: 500;\n display: inline-flex;\n}\n\n.dshc_headActivity .dshc_stackDot {\n border-color: var(--dsw-alias-bg-base);\n width: 22px;\n height: 22px;\n}\n\n.dshc_headActivity + .dshc_panelToggleEnd {\n margin-left: 4px;\n}\n\n.dshc_chatHead > .dshc_roomName {\n text-overflow: ellipsis;\n min-width: 0;\n overflow: hidden;\n}\n\n.dshc_chatHead > .dshc_taskBoardTrigger {\n width: auto;\n margin: 0 0 0 auto;\n}\n\n.dshc_chatHead .dshc_taskBoardSummary {\n display: none;\n}\n\n.dshc_headLead {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 999px;\n flex: 0 auto;\n align-items: center;\n gap: 6px;\n min-width: 0;\n padding: 4px 8px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_headLeadText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_headLeadName {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_headLeadStatus {\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n font-size: 11px;\n font-weight: 400;\n}\n\n.dshc_headLead + .dshc_panelToggleEnd {\n margin-left: 0;\n}\n\n.dshc_membersHead {\n align-items: center;\n height: 52px;\n padding: 0 4px;\n display: flex;\n}\n\n.dshc_membersHeadTitle {\n color: var(--dsw-alias-label-tertiary);\n letter-spacing: .08em;\n font-size: 11px;\n font-weight: 650;\n}\n\n.dshc_log {\n padding: 12px 0 16px;\n}\n\n.dshc_message {\n grid-template-columns: 36px minmax(0, 1fr);\n gap: 12px;\n padding: 8px 20px 2px;\n transition: background-color .15s;\n}\n\n.dshc_message.dshc_grouped {\n padding-top: 1px;\n}\n\n.dshc_message:hover {\n background: color-mix(in srgb, var(--dsw-alias-interactive-bg-hover) 70%, transparent);\n}\n\n.dshc_messageHead {\n gap: 8px;\n margin-bottom: 2px;\n}\n\n.dshc_messageHeadGrouped {\n margin-bottom: 0;\n}\n\n.dshc_messageHeadGrouped:not(:has(*)) {\n display: none;\n}\n\n.dshc_author {\n font-size: 13px;\n}\n\n.dshc_time, .dshc_edited {\n font-variant-numeric: tabular-nums;\n font-size: 11px;\n}\n\n.dshc_gutterTime {\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n text-align: right;\n opacity: 0;\n align-self: start;\n padding-top: 3px;\n font-size: 10px;\n transition: opacity .15s;\n}\n\n.dshc_message:hover .dshc_gutterTime {\n opacity: 1;\n}\n\n.dshc_text {\n line-height: 1.6;\n}\n\n.dshc_own {\n grid-template-columns: minmax(0, 1fr) 36px;\n}\n\n.dshc_own > :first-child {\n grid-area: 1 / 2;\n}\n\n.dshc_own > .dshc_messageBody {\n flex-direction: column;\n grid-area: 1 / 1;\n align-items: flex-end;\n display: flex;\n}\n\n.dshc_own .dshc_messageHead {\n flex-direction: row-reverse;\n}\n\n.dshc_own .dshc_ownActions {\n margin-left: 0;\n margin-right: auto;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text {\n max-width: min(560px, 100%);\n color: var(--dsw-alias-label-primary);\n background: color-mix(in srgb, var(--dsw-alias-state-business-primary) 16%, var(--dsw-alias-bg-layer-2));\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-state-business-primary) 28%, transparent);\n border-radius: 16px 6px 16px 16px;\n padding: 8px 14px;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_quote {\n align-self: flex-end;\n}\n\n.dshc_own .dshc_msgTools {\n left: 16px;\n right: auto;\n}\n\n.dshc_own.dshc_grouped > .dshc_messageBody > .dshc_text {\n border-radius: 16px 6px 6px 16px;\n}\n\n.dshc_systemRecord {\n flex-direction: column;\n align-items: center;\n padding-bottom: 4px;\n display: flex;\n}\n\n.dshc_systemRecord > .dshc_systemLine {\n align-self: stretch;\n}\n\n.dshc_taskRecord {\n box-sizing: border-box;\n width: min(480px, 100% - 40px);\n margin-top: 0;\n}\n\n.dshc_systemLine {\n color: var(--dsw-alias-label-tertiary);\n align-items: center;\n gap: 12px;\n padding: 10px 32px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_systemLine:before, .dshc_systemLine:after {\n content: \"\";\n background: var(--dsw-alias-border-l2);\n flex: 24px;\n min-width: 24px;\n height: 1px;\n}\n\n.dshc_systemText {\n text-align: center;\n max-width: min(640px, 80%);\n}\n\n.dshc_systemText p {\n margin: 0;\n}\n\n.dshc_errorBar {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-error-primary) 35%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 9%, transparent);\n border-radius: 12px;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px 10px;\n margin: 6px 20px 6px 68px;\n padding: 8px 12px;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_errorBar .dshc_cardButtons {\n margin: 0 0 0 auto;\n}\n\n.dshc_errorBar .dshc_secondaryButton {\n padding: 3px 10px;\n font-size: 12px;\n}\n\n.dshc_errorBar[data-state=\"retried\"] {\n opacity: .65;\n}\n\n.dshc_errorIcon {\n color: #fff;\n background: var(--dsw-alias-state-error-primary);\n border-radius: 50%;\n flex: none;\n place-items: center;\n width: 18px;\n height: 18px;\n font-size: 12px;\n font-weight: 700;\n display: grid;\n}\n\n.dshc_errorText {\n min-width: 0;\n color: var(--dsw-alias-label-primary);\n flex: 200px;\n}\n\n.dshc_errorText p {\n margin: 0;\n}\n\n.dshc_runStrip {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-1, var(--dsw-alias-bg-layer-2));\n border-radius: 12px;\n flex-direction: column;\n max-width: 100%;\n margin-top: 4px;\n padding: 5px 10px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_runStrip[data-state=\"running\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_runStrip[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_runHead {\n min-width: 0;\n color: var(--dsw-alias-label-secondary);\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_runTitle {\n color: var(--dsw-alias-label-primary);\n flex: none;\n font-weight: 600;\n}\n\n.dshc_runSummary {\n font-variant-numeric: tabular-nums;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_runHead .dshc_cardViews {\n margin-left: 8px;\n}\n\n.dshc_runHead .dshc_cardViewButton {\n color: var(--dsw-alias-label-tertiary);\n border-radius: 999px;\n font-size: 11px;\n}\n\n.dshc_runHead .dshc_cardViewButton[aria-pressed=\"true\"] {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_runIcon {\n border-radius: 50%;\n flex: none;\n width: 12px;\n height: 12px;\n position: relative;\n}\n\n.dshc_runStrip[data-state=\"running\"] .dshc_runIcon {\n border: 2px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n border-top-color: var(--dsw-alias-state-business-primary);\n animation: .8s linear infinite dshc_channels-spin;\n}\n\n.dshc_runStrip[data-state=\"completed\"] .dshc_runIcon {\n background: #23a55a;\n}\n\n.dshc_runStrip[data-state=\"completed\"] .dshc_runIcon:after {\n content: \"\";\n border: 1.5px solid #fff;\n border-width: 0 1.5px 1.5px 0;\n width: 3px;\n height: 6px;\n position: absolute;\n top: 2px;\n left: 4px;\n transform: rotate(45deg);\n}\n\n.dshc_runStrip[data-state=\"failed\"] .dshc_runIcon {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_runSteps {\n color: var(--dsw-alias-label-secondary);\n margin-top: 4px;\n font-size: 12px;\n line-height: 1.55;\n}\n\n.dshc_runSteps p {\n margin: 0;\n}\n\n.dshc_runStrip .dshc_cardButtons {\n margin-top: 6px;\n}\n\n@keyframes dshc_channels-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_runStrip[data-state=\"running\"] .dshc_runIcon {\n animation-duration: 2.4s;\n }\n}\n\n.dshc_card {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-left-width: 1px;\n border-radius: 14px;\n margin-top: 6px;\n padding: 10px 12px;\n}\n\n.dshc_card[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 40%, var(--dsw-alias-border-l2));\n}\n\n.dshc_taskAnchor {\n max-width: 560px;\n box-shadow: inset 3px 0 0 var(--channels-accent-warm, #d08a2e);\n}\n\n.dshc_permInline {\n color: var(--dsw-alias-label-secondary);\n flex-wrap: wrap;\n align-items: baseline;\n gap: 4px 8px;\n display: flex;\n}\n\n.dshc_permInline .dshc_text {\n flex: 0 auto;\n min-width: 0;\n}\n\n.dshc_permInline .dshc_text p {\n margin: 0;\n}\n\n.dshc_permLock {\n color: var(--dsw-alias-state-warning-primary, #e9a23b);\n flex: none;\n font-size: 9px;\n}\n\n.dshc_permWaiting {\n color: var(--dsw-alias-state-warning-primary, #e9a23b);\n flex: none;\n font-size: 11px;\n font-weight: 600;\n}\n\n.dshc_permTray {\n flex-direction: column;\n gap: 6px;\n max-height: 40%;\n margin: 0 16px 8px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_permTrayItem {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 55%, var(--dsw-alias-border-l2));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 7%, var(--dsw-alias-bg-layer-2));\n border-radius: 14px;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px 12px;\n padding: 10px 12px;\n display: flex;\n box-shadow: 0 6px 20px -12px #00000059;\n}\n\n.dshc_permTrayText {\n flex: 240px;\n min-width: 0;\n font-size: 13px;\n}\n\n.dshc_permTrayText .dshc_text p {\n margin: 0;\n}\n\n.dshc_permTrayWho {\n color: var(--dsw-alias-label-secondary);\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_permTrayItem .dshc_permActions {\n flex-wrap: nowrap;\n margin: 0;\n}\n\n.dshc_permTrayItem .dshc_permScope {\n display: none;\n}\n\n.dshc_members {\n flex-direction: column;\n padding: 0 10px 16px;\n}\n\n@media (width >= 901px) {\n .dshc_members {\n display: flex;\n }\n\n .dshc_membersHidden > .dshc_members {\n display: none;\n }\n}\n\n.dshc_members.dshc_drawerOpen {\n display: flex;\n}\n\n.dshc_activityNow {\n flex-direction: column;\n gap: 2px;\n margin-bottom: 6px;\n display: flex;\n}\n\n.dshc_activityItem {\n border: 1px solid var(--dsw-alias-border-l2);\n width: 100%;\n color: inherit;\n background: var(--dsw-alias-bg-base);\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: 12px;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n display: flex;\n}\n\n.dshc_activityItem + .dshc_activityItem {\n margin-top: 4px;\n}\n\n.dshc_activityItem:hover {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 40%, var(--dsw-alias-border-l2));\n}\n\n.dshc_activityItem:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_activityText {\n flex-direction: column;\n flex: 1;\n min-width: 0;\n display: flex;\n}\n\n.dshc_activityName {\n font-size: 13px;\n font-weight: 600;\n}\n\n.dshc_activityWhat {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_activityPulse {\n background: var(--dsw-alias-state-business-primary);\n border-radius: 50%;\n flex: none;\n width: 8px;\n height: 8px;\n animation: 1.6s ease-in-out infinite dshc_channels-pulse;\n}\n\n@keyframes dshc_channels-pulse {\n 50% {\n box-shadow: 0 0 0 3px #23a55a40;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_activityPulse {\n animation: none;\n }\n}\n\n.dshc_member {\n padding: 6px 8px;\n}\n\n.dshc_memberText {\n flex: 1;\n}\n\n.dshc_memberStatus {\n flex: none;\n margin-left: auto;\n font-size: 11px;\n}\n\n.dshc_memberStatus[data-status=\"busy\"] {\n color: var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_memberStatus[data-status=\"error\"] {\n color: var(--dsw-alias-state-error-primary);\n font-weight: 600;\n}\n\n.dshc_memberActions {\n background: var(--dsw-alias-bg-layer-2);\n padding-left: 8px;\n position: absolute;\n top: 50%;\n right: 8px;\n transform: translateY(-50%);\n}\n\n.dshc_addMemberButton {\n border-radius: 10px;\n}\n\n@media (width <= 900px) {\n .dshc_headMeta, .dshc_headActivityText {\n display: none;\n }\n\n .dshc_chatHead {\n padding: 0 8px;\n }\n\n .dshc_mobileButton {\n white-space: nowrap;\n }\n\n .dshc_headActivity ~ .dshc_mobileButton:last-child {\n margin-left: 4px;\n }\n\n .dshc_message {\n padding-left: 12px;\n padding-right: 12px;\n }\n\n .dshc_errorBar {\n margin-left: 12px;\n margin-right: 12px;\n }\n\n .dshc_permTray {\n margin: 0 8px 8px;\n }\n\n .dshc_permTrayItem .dshc_permActions {\n flex-wrap: wrap;\n }\n\n .dshc_systemLine {\n padding: 8px 12px;\n }\n\n .dshc_systemText {\n max-width: 90%;\n }\n\n .dshc_memberActions {\n background: none;\n padding-left: 0;\n position: static;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsEnter {\n from {\n opacity: 0;\n transform: translateY(6px);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsEnterOwn {\n from {\n opacity: 0;\n transform: translateY(12px) scale(.985);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsGlow {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@keyframes dshc_channelsPop {\n from {\n opacity: 0;\n transform: translateY(4px) scale(.98);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@keyframes dshc_channelsDot {\n 0%, 60%, 100% {\n opacity: .35;\n transform: none;\n }\n\n 30% {\n opacity: 1;\n transform: translateY(-2px);\n }\n}\n\n@keyframes dshc_channelsDrain {\n from {\n transform: scaleX(1);\n }\n\n to {\n transform: scaleX(0);\n }\n}\n\n.dshc_enter {\n animation: .18s cubic-bezier(.2, 0, 0, 1) both dshc_channelsEnter;\n}\n\n.dshc_enterOwn {\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsEnterOwn;\n}\n\n.dshc_enterGlow:before {\n content: \"\";\n pointer-events: none;\n background: linear-gradient(90deg, color-mix(in srgb, var(--dsw-alias-state-business-primary) 10%, transparent), transparent 70%);\n animation: .7s cubic-bezier(.4, 0, .2, 1) both dshc_channelsGlow;\n animation-delay: inherit;\n position: absolute;\n inset: 0;\n}\n\n.dshc_message {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_room {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1), color .16s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_card {\n transition: border-color .32s cubic-bezier(.2, 0, 0, 1), background-color .32s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_sendButton, .dshc_primaryButton, .dshc_secondaryButton, .dshc_mentionButton, .dshc_cardViewButton {\n transition: background-color .16s cubic-bezier(.2, 0, 0, 1), opacity .16s cubic-bezier(.2, 0, 0, 1), transform .12s cubic-bezier(.2, 0, 0, 1);\n}\n\n.dshc_sendButton:not(:disabled):active, .dshc_primaryButton:not(:disabled):active, .dshc_secondaryButton:not(:disabled):active, .dshc_mentionButton:not(:disabled):active, .dshc_cardViewButton:active {\n transform: translateY(1px);\n}\n\n.dshc_mentionPopup {\n transform-origin: bottom;\n animation: .16s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n}\n\n.dshc_typingDots {\n vertical-align: middle;\n gap: 3px;\n margin-right: 6px;\n display: inline-flex;\n}\n\n.dshc_typingDots i {\n background: currentColor;\n border-radius: 50%;\n width: 4px;\n height: 4px;\n animation: 1.2s ease-in-out infinite dshc_channelsDot;\n}\n\n.dshc_typingDots i:nth-child(2) {\n animation-delay: .15s;\n}\n\n.dshc_typingDots i:nth-child(3) {\n animation-delay: .3s;\n}\n\n.dshc_logWrap {\n flex-direction: column;\n flex: 1;\n min-height: 0;\n display: flex;\n position: relative;\n}\n\n.dshc_olderLoading {\n color: var(--dsw-alias-label-tertiary);\n text-align: center;\n padding: 8px 16px;\n font-size: 12px;\n}\n\n.dshc_unreadDivider {\n color: var(--dsw-alias-state-error-primary);\n align-items: center;\n gap: 8px;\n margin: 8px 16px;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n}\n\n.dshc_unreadDivider:before, .dshc_unreadDivider:after {\n content: \"\";\n opacity: .35;\n background: currentColor;\n flex: 1;\n height: 1px;\n}\n\n.dshc_withdrawnRow {\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 16px;\n font-size: 13px;\n font-style: italic;\n animation: .18s cubic-bezier(.2, 0, 0, 1) both dshc_channelsEnter;\n}\n\n.dshc_jumpLatest {\n z-index: 3;\n border: 1px solid var(--dsw-alias-border-l2);\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-bg-base);\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #00000029);\n font: inherit;\n cursor: pointer;\n border-radius: 999px;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n font-size: 12px;\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n display: inline-flex;\n position: absolute;\n bottom: 12px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.dshc_jumpLatest:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_jumpLatest:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_jumpCount {\n color: var(--dsw-alias-state-business-primary);\n font-weight: 600;\n}\n\n.dshc_undoToast {\n z-index: 4;\n border-radius: var(--dsw-radius-md);\n width: max-content;\n max-width: calc(100% - 32px);\n color: var(--dsw-alias-label-primary-inverted);\n background: var(--dsw-alias-label-primary);\n box-shadow: var(--dsw-elevation-panel, 0 8px 24px #0000003d);\n align-items: center;\n gap: 12px;\n margin: 0 auto;\n padding: 8px 8px 8px 14px;\n font-size: 13px;\n animation: .22s cubic-bezier(.22, 1, .36, 1) both dshc_channelsPop;\n display: flex;\n position: absolute;\n bottom: 12px;\n left: 0;\n right: 0;\n overflow: hidden;\n}\n\n.dshc_undoButton {\n border-radius: var(--dsw-radius-sm);\n color: inherit;\n background: color-mix(in srgb, currentColor 16%, transparent);\n font: inherit;\n cursor: pointer;\n border: 0;\n padding: 2px 10px;\n font-weight: 600;\n}\n\n.dshc_undoButton:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_undoBar {\n background: var(--dsw-alias-state-business-primary);\n transform-origin: 0;\n height: 2px;\n animation: linear forwards dshc_channelsDrain;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n}\n\n.dshc_undoToast ~ .dshc_jumpLatest {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_enter, .dshc_enterOwn, .dshc_enterGlow:before, .dshc_mentionPopup, .dshc_jumpLatest, .dshc_undoToast, .dshc_withdrawnRow {\n animation: none;\n }\n\n .dshc_typingDots i {\n opacity: .6;\n animation: none;\n }\n\n .dshc_undoBar {\n animation: none;\n }\n\n .dshc_message, .dshc_room, .dshc_card, .dshc_sendButton, .dshc_primaryButton, .dshc_secondaryButton, .dshc_mentionButton, .dshc_cardViewButton {\n transition: none;\n }\n}\n\n.dshc_leadCard {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 14px;\n align-items: center;\n gap: 10px;\n margin: 8px 8px 4px;\n padding: 10px 12px;\n display: flex;\n}\n\n.dshc_leadCardText {\n flex-direction: column;\n min-width: 0;\n display: flex;\n}\n\n.dshc_leadCardName {\n color: var(--dsw-alias-label-primary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 14px;\n font-weight: 650;\n overflow: hidden;\n}\n\n.dshc_leadCardStatus {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_message:not(.dshc_own) > .dshc_messageBody > .dshc_text {\n background: var(--dsw-alias-bg-layer-2);\n border-radius: 6px 16px 16px;\n width: fit-content;\n max-width: min(640px, 100%);\n padding: 8px 14px;\n}\n\n.dshc_message.dshc_grouped:not(.dshc_own) > .dshc_messageBody > .dshc_text {\n border-radius: 6px 16px 16px 6px;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text {\n color: var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-primary);\n box-shadow: none;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text * {\n color: inherit;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text a {\n color: inherit;\n text-decoration: underline;\n}\n\n.dshc_own > .dshc_messageBody > .dshc_text code {\n color: inherit;\n background: color-mix(in srgb, var(--dsw-alias-bg-base) 18%, transparent);\n}\n\n.dshc_boardDrawerBackdrop {\n background: #00000040;\n place-items: stretch end;\n padding: 0;\n}\n\n.dshc_boardDrawerBackdrop > .dshc_taskBoardDialog {\n box-sizing: border-box;\n border-radius: 0;\n width: min(440px, 100%);\n height: 100dvh;\n max-height: none;\n animation: .2s ease-out dshc_boardDrawerIn;\n}\n\n@keyframes dshc_boardDrawerIn {\n from {\n opacity: 0;\n transform: translateX(24px);\n }\n\n to {\n opacity: 1;\n transform: none;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_boardDrawerBackdrop > .dshc_taskBoardDialog {\n animation: none;\n }\n}\n\n.dshc_schemeToggle {\n border-radius: var(--dsw-radius-sm);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n justify-content: center;\n align-items: center;\n margin-left: 4px;\n font-size: 16px;\n line-height: 1;\n display: inline-flex;\n}\n\n.dshc_schemeToggle:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_schemeToggle:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_schemeToggle + .dshc_panelToggleEnd {\n margin-left: 4px;\n}\n\n.dshc_progressCard {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n box-shadow: 0 6px 18px #0000000a, 0 -12px 0 0 var(--dsw-alias-bg-base);\n border-radius: 14px;\n flex: none;\n margin: 8px 16px 4px;\n padding: 8px 14px;\n font-size: 12px;\n position: relative;\n}\n\n.dshc_progressHead {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.dshc_progressTitle {\n color: var(--dsw-alias-label-primary);\n font-size: 12px;\n}\n\n.dshc_progressSummary {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n flex: 1;\n overflow: hidden;\n}\n\n.dshc_progressToggle {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n min-width: 22px;\n height: 24px;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n cursor: pointer;\n background: none;\n flex: none;\n justify-content: center;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding: 0 10px;\n font-size: 12px;\n font-weight: 500;\n line-height: 1;\n display: inline-flex;\n}\n\n.dshc_progressChevron {\n font-size: 12px;\n}\n\n.dshc_progressToggle:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_progressToggle:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_progressCard[data-folded=\"true\"] {\n padding: 6px 12px;\n}\n\n.dshc_progressRows {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 0 14px;\n margin: 4px 0 0;\n display: grid;\n}\n\n.dshc_progressRow {\n min-width: 0;\n}\n\n.dshc_progressRow dt {\n color: var(--dsw-alias-label-tertiary);\n font-size: 10px;\n}\n\n.dshc_progressRow dd {\n white-space: nowrap;\n text-overflow: ellipsis;\n min-width: 0;\n color: var(--dsw-alias-label-primary);\n margin: 0;\n overflow: hidden;\n}\n\n.dshc_progressRow[data-empty=\"true\"] dd {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.dshc_progressRow[data-row=\"open\"][data-empty=\"false\"] dd, .dshc_progressRow[data-row=\"open\"] .dshc_progressLink {\n color: var(--dsw-alias-state-warning-primary, #b7791f);\n}\n\n.dshc_progressLink {\n max-width: 100%;\n color: inherit;\n font: inherit;\n text-align: left;\n white-space: nowrap;\n text-overflow: ellipsis;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.dshc_progressLink:hover {\n text-decoration: underline;\n}\n\n@media (width <= 760px) {\n .dshc_progressCard {\n margin: 6px 10px 2px;\n }\n\n .dshc_progressRows {\n grid-template-columns: 52px minmax(0, 1fr);\n }\n\n .dshc_progressRow {\n display: contents;\n }\n}\n\n.dshc_stepChips {\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 6px;\n display: flex;\n}\n\n.dshc_stepChip {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n max-width: 220px;\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n border-radius: 999px;\n align-items: center;\n gap: 5px;\n padding: 2px 9px 2px 7px;\n font-size: 11px;\n display: inline-flex;\n}\n\n.dshc_stepChip b {\n color: var(--dsw-alias-label-primary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: 600;\n overflow: hidden;\n}\n\n.dshc_stepChip:disabled {\n cursor: default;\n}\n\n.dshc_stepChip[aria-expanded=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_stepChip[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepChip[data-state=\"failed\"] b {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_stepChip[data-state=\"running\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 55%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepMark {\n background: var(--dsw-alias-label-tertiary);\n border-radius: 50%;\n flex: none;\n width: 7px;\n height: 7px;\n}\n\n.dshc_stepChip[data-state=\"ok\"] .dshc_stepMark {\n background: #23a55a;\n}\n\n.dshc_stepChip[data-state=\"failed\"] .dshc_stepMark {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_stepChip[data-state=\"running\"] .dshc_stepMark {\n background: var(--dsw-alias-state-business-primary);\n animation: 1s ease-in-out infinite dshc_channels-blink;\n}\n\n@keyframes dshc_channels-blink {\n 50% {\n opacity: .3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_stepChip[data-state=\"running\"] .dshc_stepMark {\n animation: none;\n }\n}\n\n.dshc_stepOut {\n border: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2, var(--dsw-alias-bg-base));\n color: var(--dsw-alias-label-secondary);\n border-radius: 8px;\n flex-basis: 100%;\n gap: 4px;\n padding: 8px 10px;\n font-size: 11px;\n line-height: 1.5;\n display: grid;\n}\n\n.dshc_stepOut[data-state=\"failed\"] {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, var(--dsw-alias-border-l2));\n}\n\n.dshc_stepOut div {\n gap: 8px;\n min-width: 0;\n display: flex;\n}\n\n.dshc_stepOut span {\n color: var(--dsw-alias-label-tertiary);\n flex: none;\n}\n\n.dshc_stepOut code {\n overflow-wrap: anywhere;\n min-width: 0;\n font-family: ui-monospace, Menlo, monospace;\n}\n\n.dshc_stepOut[data-state=\"failed\"] > div[data-state=\"failed\"] > div:last-child > code {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_decideTray {\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 55%, var(--dsw-alias-border-l2));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 7%, var(--dsw-alias-bg-layer-2));\n border-radius: 14px;\n flex-direction: column;\n max-height: 45%;\n margin: 0 16px 8px;\n display: flex;\n overflow-y: auto;\n}\n\n.dshc_decideTrayHead {\n width: 100%;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n background: none;\n border: 0;\n flex: none;\n align-items: baseline;\n gap: 8px;\n padding: 7px 12px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_decideTrayHead strong {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 70%, var(--dsw-alias-label-primary));\n}\n\n.dshc_decideTrayHead small {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.dshc_decideTrayHead:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n\n.dshc_decideTrayToggle {\n color: var(--dsw-alias-label-secondary);\n white-space: nowrap;\n margin-left: auto;\n}\n\n.dshc_decideTray .dshc_permTray {\n max-height: none;\n margin: 0;\n padding: 0 8px 8px;\n}\n\n.dshc_askList {\n flex-direction: column;\n display: flex;\n}\n\n.dshc_askItem {\n border-top: 1px solid color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 30%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n flex-wrap: wrap;\n align-items: center;\n gap: 6px 10px;\n padding: 8px 12px;\n display: flex;\n}\n\n.dshc_askKind {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 75%, var(--dsw-alias-label-primary));\n background: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 15%, transparent);\n border-radius: 5px;\n flex: none;\n padding: 0 6px;\n font-size: 11px;\n}\n\n.dshc_askText {\n flex-direction: column;\n flex: 200px;\n min-width: 0;\n font-size: 13px;\n display: flex;\n}\n\n.dshc_askQuestion {\n overflow-wrap: anywhere;\n}\n\n.dshc_askFrom {\n color: var(--dsw-alias-label-secondary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n overflow: hidden;\n}\n\n.dshc_askForm {\n flex: 0 260px;\n align-items: center;\n gap: 6px;\n min-width: 160px;\n display: flex;\n}\n\n.dshc_askInput {\n border: 1px solid var(--dsw-alias-border-l2);\n min-width: 0;\n color: inherit;\n background: var(--dsw-alias-bg-base);\n font: inherit;\n border-radius: 8px;\n flex: 1;\n padding: 4px 8px;\n font-size: 12px;\n}\n\n.dshc_askInput:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n}\n\n.dshc_askSend {\n width: 26px;\n height: 26px;\n color: var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-primary);\n cursor: pointer;\n border: 0;\n border-radius: 50%;\n flex: none;\n justify-content: center;\n align-items: center;\n padding: 0;\n display: inline-flex;\n}\n\n.dshc_askSend:disabled {\n opacity: .3;\n cursor: default;\n}\n\n.dshc_askSend:focus-visible {\n outline: var(--dsw-focus-ring-width, 2px) solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n\n.dshc_askDone {\n color: var(--dsw-alias-label-secondary);\n align-items: center;\n gap: 8px;\n font-size: 12px;\n display: inline-flex;\n}\n\n.dshc_askNotice {\n color: color-mix(in srgb, var(--dsw-alias-state-warning-primary, #e9a23b) 75%, var(--dsw-alias-label-primary));\n flex-basis: 100%;\n font-size: 12px;\n}\n\n@media (width <= 900px) {\n .dshc_decideTray {\n margin: 0 8px 8px;\n }\n\n .dshc_askForm {\n flex-basis: 100%;\n }\n}\n\n.dshc_headTeam {\n flex: none;\n align-items: center;\n margin-left: auto;\n display: inline-flex;\n}\n\n.dshc_mate, .dshc_mateMore {\n border: 2px solid var(--dsw-alias-bg-base);\n background: var(--dsw-alias-bg-base);\n cursor: pointer;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n margin-left: -6px;\n padding: 0;\n display: inline-flex;\n position: relative;\n}\n\n.dshc_mate:first-child {\n margin-left: 0;\n}\n\n.dshc_mate .dshc_avatar {\n margin: 0;\n}\n\n.dshc_mateMore {\n background: var(--dsw-alias-interactive-bg-hover);\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-secondary);\n font-size: 11px;\n font-weight: 600;\n}\n\n.dshc_mateDot {\n box-sizing: border-box;\n border: 2px solid var(--dsw-alias-bg-base);\n background: var(--dsw-alias-label-tertiary);\n border-radius: 50%;\n width: 9px;\n height: 9px;\n position: absolute;\n bottom: -2px;\n right: -2px;\n}\n\n.dshc_mate[data-state=\"busy\"] .dshc_mateDot {\n background: #23a55a;\n animation: 1.6s ease-in-out infinite dshc_channels-pulse;\n}\n\n.dshc_mate[data-state=\"idle\"] .dshc_mateDot {\n background: var(--dsw-alias-bg-base);\n box-shadow: inset 0 0 0 1.5px var(--dsw-alias-label-tertiary);\n}\n\n.dshc_mate[data-state=\"error\"] .dshc_mateDot {\n background: var(--dsw-alias-state-error-primary);\n}\n\n.dshc_mate[data-state=\"offline\"] {\n opacity: .55;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_mate[data-state=\"busy\"] .dshc_mateDot {\n animation: none;\n }\n}\n\n@media (width <= 760px) {\n .dshc_headTeam {\n display: none;\n }\n}\n\n.dshc_chatHead > .dshc_headTeam + .dshc_taskBoardTrigger {\n margin-left: 12px;\n}\n\n.dshc_sideDock {\n display: none;\n}\n\n@media (width >= 1101px) {\n .dshc_page.dshc_panelOpen {\n grid-template-columns: 220px minmax(0, 1fr) min(420px, 36%) 240px;\n }\n\n .dshc_page.dshc_panelOpen.dshc_roomsHidden {\n grid-template-columns: minmax(0, 1fr) min(420px, 36%) 240px;\n }\n\n .dshc_page.dshc_panelOpen.dshc_membersHidden {\n grid-template-columns: 220px minmax(0, 1fr) min(420px, 36%);\n }\n\n .dshc_page.dshc_panelOpen.dshc_roomsHidden.dshc_membersHidden {\n grid-template-columns: minmax(0, 1fr) min(420px, 36%);\n }\n\n .dshc_page.dshc_panelOpen > .dshc_sideDock {\n border-left: 1px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-base);\n min-width: 0;\n min-height: 0;\n display: flex;\n }\n}\n\n.dshc_sidePanel {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n max-height: none;\n box-shadow: none;\n border: 0;\n border-radius: 0;\n margin: 0;\n animation: .2s ease-out dshc_boardDrawerIn;\n position: relative;\n}\n\n.dshc_sidePanel:focus {\n outline: none;\n}\n\n.dshc_sidePanelClose {\n width: 28px;\n height: 28px;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n background: none;\n border: 0;\n border-radius: 6px;\n font-size: 18px;\n line-height: 1;\n position: absolute;\n top: 10px;\n right: 10px;\n}\n\n.dshc_sidePanelClose:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_sidePanel {\n animation: none;\n }\n}\n\n.dshc_sidePanel .dshc_boardCardGrid {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.dshc_slashPopup {\n z-index: 6;\n width: min(360px, 100% - 32px);\n animation: none;\n right: auto;\n}\n\n.dshc_slashGroup {\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 8px 2px;\n font-size: 11px;\n}\n\n.dshc_slashItem {\n border-radius: var(--dsw-radius-sm);\n cursor: pointer;\n align-items: baseline;\n gap: 8px;\n padding: 5px 8px;\n display: flex;\n}\n\n.dshc_slashActive {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_slashName {\n flex: none;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-weight: 600;\n}\n\n.dshc_slashMeta {\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 12px;\n overflow: hidden;\n}\n\n.dshc_sendButton.dshc_stopButton {\n background: var(--dsw-alias-label-primary);\n}\n\n.dshc_stopNote + .dshc_sendButton {\n margin-left: 8px;\n}\n\n.dshc_sendButton.dshc_stopButton[data-phase=\"stopping\"] {\n opacity: .6;\n cursor: progress;\n}\n\n.dshc_stopNote {\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n margin-left: auto;\n font-size: 12px;\n}\n\n.dshc_cmdLine {\n color: var(--dsw-alias-label-tertiary);\n flex-wrap: wrap;\n align-items: baseline;\n gap: 6px;\n padding: 1px 16px 1px 72px;\n font-size: 12px;\n display: flex;\n}\n\n.dshc_cmdLine code {\n color: var(--dsw-alias-label-secondary);\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n}\n\n.dshc_cmdResult {\n min-width: 0;\n max-width: 60ch;\n color: inherit;\n font: inherit;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 0;\n overflow: hidden;\n}\n\n.dshc_cmdResult[aria-expanded=\"true\"] {\n white-space: pre-line;\n max-width: none;\n}\n\n.dshc_cmdLine[data-failed=\"true\"] .dshc_cmdResult {\n color: var(--dsw-alias-danger, #d94848);\n}\n\n@media (width <= 720px) {\n .dshc_cmdLine {\n padding-left: 16px;\n }\n}\n\n.dshc_msgTool {\n justify-content: center;\n align-items: center;\n width: 26px;\n height: 24px;\n padding: 0;\n display: inline-flex;\n position: relative;\n}\n\n.dshc_msgTool[data-tip]:after {\n content: attr(data-tip);\n z-index: 3;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-label-primary-inverted);\n white-space: nowrap;\n opacity: 0;\n pointer-events: none;\n border-radius: 4px;\n padding: 2px 6px;\n font-size: 11px;\n position: absolute;\n top: calc(100% + 4px);\n left: 50%;\n transform: translateX(-50%);\n}\n\n.dshc_msgTool[data-tip]:hover:after, .dshc_msgTool[data-tip]:focus-visible:after {\n opacity: 1;\n transition: opacity 0s 80ms;\n}\n\n.dshc_permSessionButton {\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n text-underline-offset: 2px;\n cursor: pointer;\n background: none;\n border: 0;\n padding: 4px 6px;\n font-size: 12px;\n text-decoration: underline;\n}\n\n.dshc_permSessionButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_permSessionButton:disabled {\n opacity: .5;\n cursor: default;\n}\n\n.dshc_queuedButton {\n border: 1px solid var(--dsw-alias-border-default, #0000001f);\n color: var(--dsw-alias-label-secondary);\n font: inherit;\n cursor: pointer;\n background: none;\n border-radius: 9px;\n padding: 0 6px;\n font-size: 11px;\n line-height: 16px;\n}\n\n.dshc_queuedButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.dshc_queuedTag {\n color: #a76a06;\n background: #eaa02824;\n border-radius: 4px;\n padding: 0 5px;\n font-size: 11px;\n line-height: 16px;\n}\n\n[data-queued] .dshc_ownActions {\n opacity: 1;\n}\n\n.dshc_memory {\n margin-top: 4px;\n}\n\n.dshc_memoryBadge {\n background: var(--dsw-alias-fill-secondary, #0000000d);\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n cursor: pointer;\n border: 0;\n border-radius: 9px;\n align-items: center;\n gap: 4px;\n padding: 0 6px;\n font-size: 11px;\n line-height: 18px;\n display: inline-flex;\n}\n\n.dshc_memoryBadge:hover, .dshc_memoryBadge[aria-expanded=\"true\"] {\n color: var(--dsw-alias-label-secondary);\n}\n\n.dshc_memoryList {\n border-left: 2px solid var(--dsw-alias-border-default, #0000001f);\n flex-direction: column;\n gap: 4px;\n max-width: 560px;\n margin: 4px 0 0;\n padding: 6px 10px;\n font-size: 12px;\n list-style: none;\n display: flex;\n}\n\n.dshc_memoryItem {\n flex-direction: column;\n display: flex;\n}\n\n.dshc_memoryTitle {\n color: var(--dsw-alias-label-secondary);\n line-height: 1.5;\n}\n\n.dshc_memoryPage {\n color: var(--dsw-alias-label-tertiary);\n font-size: 11px;\n font-family: var(--dsw-font-mono, ui-monospace, monospace);\n}\n\n.dshc_delivery {\n flex-direction: column;\n gap: 6px;\n max-width: 720px;\n margin-top: 8px;\n display: flex;\n}\n\n.dshc_deliveryFrame {\n border: 1px solid var(--background-modifier-accent, #7f7f7f4d);\n background: #fff;\n border-radius: 6px;\n height: 360px;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_deliveryActions {\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n display: flex;\n}\n\n.dshc_deliveryActions a {\n text-decoration: none;\n}\n\n.dshc_deliveryDone {\n color: var(--text-muted, #888);\n font-size: 12px;\n}\n\n.dshc_deliveryFullDialog {\n box-sizing: border-box;\n flex-direction: column;\n gap: 8px;\n width: 94vw;\n max-width: none;\n height: 92dvh;\n display: flex;\n}\n\n.dshc_deliveryFullFrame {\n background: #fff;\n border-radius: 6px;\n flex: 1;\n min-height: 0;\n display: flex;\n overflow: hidden;\n}\n\n.dshc_dmTitle {\n color: var(--text-muted, #888);\n margin: 14px 8px 4px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.dshc_dmAvatar {\n margin-right: 6px;\n display: inline-flex;\n}\n\n.dshc_dmRow {\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.dshc_dmRow .dshc_room {\n padding-right: 26px;\n}\n\n.dshc_dmClose {\n border-radius: var(--dsw-radius-sm, 4px);\n width: 20px;\n height: 20px;\n color: var(--dsw-alias-label-tertiary, #888);\n font: inherit;\n cursor: pointer;\n opacity: 0;\n background: none;\n border: 0;\n padding: 0;\n font-size: 15px;\n line-height: 20px;\n position: absolute;\n right: 4px;\n}\n\n.dshc_dmRow:hover .dshc_dmClose, .dshc_dmClose:focus-visible {\n opacity: 1;\n}\n\n.dshc_dmClose:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n@media (hover: none) {\n .dshc_dmClose {\n opacity: 1;\n }\n}\n\n.dshc_dmHead {\n margin-top: 14px;\n}\n\n.dshc_dmPicker {\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-2);\n flex-direction: column;\n margin: 0 4px 4px;\n padding: 4px;\n display: flex;\n}\n\n.dshc_dmPickNone {\n color: var(--dsw-alias-label-tertiary);\n padding: 6px 8px;\n font-size: 12px;\n}\n\n.dshc_dmNewRow {\n color: var(--dsw-alias-label-tertiary);\n font-size: 13px;\n}\n\nbutton.dshc_headMeta {\n border-radius: var(--dsw-radius-sm);\n min-width: 0;\n font: inherit;\n cursor: pointer;\n background: none;\n border: 0;\n flex: 0 auto;\n padding: 2px 6px;\n font-size: 12px;\n}\n\nbutton.dshc_headMeta:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.dshc_headSpacer {\n flex: auto;\n}\n\n.dshc_roomUnread {\n color: var(--dsw-alias-label-primary);\n font-weight: 650;\n}\n\n.dshc_unreadBadge {\n color: #fff;\n background: var(--dsw-alias-state-danger-primary, #e5484d);\n text-align: center;\n font-variant-numeric: tabular-nums;\n border-radius: 999px;\n flex: none;\n min-width: 18px;\n padding: 0 5px;\n font-size: 11px;\n font-weight: 600;\n line-height: 18px;\n}\n\n.dshc_slashDisabled {\n opacity: .45;\n cursor: not-allowed;\n}\n\n.dshc_leadCardHint {\n color: var(--dsw-alias-label-tertiary);\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 11px;\n overflow: hidden;\n}\n\n.dshc_roomWorking {\n max-width: 96px;\n color: var(--dsw-alias-state-business-primary);\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: none;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 500;\n display: inline-flex;\n overflow: hidden;\n}\n\n.dshc_roomWorkingDot {\n background: currentColor;\n border-radius: 50%;\n flex: none;\n width: 6px;\n height: 6px;\n animation: 1.4s ease-in-out infinite dshc_roomWorkingPulse;\n}\n\n@keyframes dshc_roomWorkingPulse {\n 50% {\n opacity: .35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .dshc_roomWorkingDot {\n animation: none;\n }\n}\n\n.dshc_drawerTools {\n display: none;\n}\n\n@media (width <= 600px) {\n .dshc_drawerTools {\n flex-wrap: wrap;\n gap: 6px;\n margin: 0 8px 8px;\n display: flex;\n }\n\n .dshc_chatHead > .dshc_taskBoardTrigger, .dshc_chatHead > .dshc_schemeToggle, .dshc_chatHead > .dshc_headMeta, .dshc_chatHead > .dshc_headTeam {\n display: none;\n }\n\n .dshc_chatHead > .dshc_roomName {\n flex: auto;\n }\n}\n\n.dshc_panelOpen .dshc_chatHead > .dshc_headTeam, .dshc_panelOpen .dshc_chatHead > .dshc_headMeta {\n display: none;\n}\n\n.dshc_panelOpen .dshc_chatHead > .dshc_roomName {\n flex: 0 auto;\n}\n[data-dc-scheme=\"light\"] {\n --dsw-static-amber-100: #fef5e7;\n --dsw-static-amber-400: #f7ad31;\n --dsw-static-amber-500: #f59e0b;\n --dsw-static-amber-600: #dd8629;\n --dsw-static-amber-900: #27241f;\n --dsw-static-blue-100: #dbeafe;\n --dsw-static-blue-300: #93c5fd;\n --dsw-static-blue-400: #60a5fa;\n --dsw-static-blue-450: #4d93f8;\n --dsw-static-blue-500: #3b82f6;\n --dsw-static-blue-50: #eff6ff;\n --dsw-static-blue-50p: #eaf3ff;\n --dsw-static-blue-600: #2563eb;\n --dsw-static-blue-75: #e5f0ff;\n --dsw-static-blue-800: #1e40af;\n --dsw-static-blue-900: #0e3074;\n --dsw-static-blue-950: #172554;\n --dsw-static-deepseek-100: #e4edfd;\n --dsw-static-deepseek-200: #d3e2ff;\n --dsw-static-deepseek-300: #b7c8fe;\n --dsw-static-deepseek-400: #7aaaff;\n --dsw-static-deepseek-450: #5686fe;\n --dsw-static-deepseek-500: #4176e6;\n --dsw-static-deepseek-50: #edf3fe;\n --dsw-static-deepseek-600: #4868b2;\n --dsw-static-deepseek-700-delete: #2f4c8f;\n --dsw-static-deepseek-800: #34415b;\n --dsw-static-deepseek-900: #283142;\n --dsw-static-green-100: #e6faed;\n --dsw-static-green-400: #4ed17e;\n --dsw-static-green-500: #22c55e;\n --dsw-static-green-500-a08: #22c55e14;\n --dsw-static-green-500-a12: #22c55e1f;\n --dsw-static-green-900: #233c2c;\n --dsw-static-neutral-00: #fff;\n --dsw-static-neutral-1000: #000;\n --dsw-static-neutral-100: #f5f5f5;\n --dsw-static-neutral-150: #ededed;\n --dsw-static-neutral-200: #e5e5e5;\n --dsw-static-neutral-250: #dcdcdc;\n --dsw-static-neutral-300: #d4d4d4;\n --dsw-static-neutral-400: #a2a4a6;\n --dsw-static-neutral-500: #7f8287;\n --dsw-static-neutral-50: #fafafa;\n --dsw-static-neutral-550: #65676b;\n --dsw-static-neutral-600: #545557;\n --dsw-static-neutral-700: #3c3c3d;\n --dsw-static-neutral-800: #292929;\n --dsw-static-neutral-850: #212123;\n --dsw-static-neutral-900: #0f0f0f;\n --dsw-static-neutral-bluish-00: #fff;\n --dsw-static-neutral-bluish-1000: #0f1115;\n --dsw-static-neutral-bluish-100: #ebeef2;\n --dsw-static-neutral-bluish-150: #e9ecf2;\n --dsw-static-neutral-bluish-200: #e1e5ee;\n --dsw-static-neutral-bluish-300: #cfd3d6;\n --dsw-static-neutral-bluish-400: #adb2b8;\n --dsw-static-neutral-bluish-500: #979da6;\n --dsw-static-neutral-bluish-50: #f9fafb;\n --dsw-static-neutral-bluish-600: #81858c;\n --dsw-static-neutral-bluish-60: #f5f6f7;\n --dsw-static-neutral-bluish-700: #61666b;\n --dsw-static-neutral-bluish-750: #43454a;\n --dsw-static-neutral-bluish-75: #f1f3f5;\n --dsw-static-neutral-bluish-800: #353638;\n --dsw-static-neutral-bluish-850: #2c2c2e;\n --dsw-static-neutral-bluish-875: #232324;\n --dsw-static-neutral-bluish-900: #1b1b1c;\n --dsw-static-neutral-bluish-950: #151517;\n --dsw-static-red-100: #fee2e2;\n --dsw-static-red-400: #f25a5a;\n --dsw-static-red-400-a12: #f25a5a1f;\n --dsw-static-red-500: #ef4444;\n --dsw-static-red-50: #fef2f2;\n --dsw-static-red-600: #ec1313;\n --dsw-static-red-600-a08: #ec131314;\n --dsw-static-red-900: #570c0c;\n}\n\n[data-dc-scheme=\"dark\"] {\n --dsw-static-amber-100: #fef5e7;\n --dsw-static-amber-400: #f7ad31;\n --dsw-static-amber-500: #f59e0b;\n --dsw-static-amber-600: #dd8629;\n --dsw-static-amber-900: #27241f;\n --dsw-static-blue-100: #dbeafe;\n --dsw-static-blue-300: #93c5fd;\n --dsw-static-blue-400: #60a5fa;\n --dsw-static-blue-450: #4d93f8;\n --dsw-static-blue-500: #3b82f6;\n --dsw-static-blue-50: #eff6ff;\n --dsw-static-blue-50p: #eaf3ff;\n --dsw-static-blue-600: #2563eb;\n --dsw-static-blue-75: #e5f0ff;\n --dsw-static-blue-800: #1e40af;\n --dsw-static-blue-900: #0e3074;\n --dsw-static-blue-950: #172554;\n --dsw-static-deepseek-100: #e4edfd;\n --dsw-static-deepseek-200: #d3e2ff;\n --dsw-static-deepseek-300: #b7c8fe;\n --dsw-static-deepseek-400: #7aaaff;\n --dsw-static-deepseek-450: #5686fe;\n --dsw-static-deepseek-500: #4176e6;\n --dsw-static-deepseek-50: #edf3fe;\n --dsw-static-deepseek-600: #4868b2;\n --dsw-static-deepseek-700-delete: #2f4c8f;\n --dsw-static-deepseek-800: #34415b;\n --dsw-static-deepseek-900: #283142;\n --dsw-static-green-100: #e6faed;\n --dsw-static-green-400: #4ed17e;\n --dsw-static-green-500: #22c55e;\n --dsw-static-green-500-a08: #22c55e14;\n --dsw-static-green-500-a12: #22c55e1f;\n --dsw-static-green-900: #233c2c;\n --dsw-static-neutral-00: #fff;\n --dsw-static-neutral-1000: #000;\n --dsw-static-neutral-100: #f5f5f5;\n --dsw-static-neutral-150: #ededed;\n --dsw-static-neutral-200: #e5e5e5;\n --dsw-static-neutral-250: #dcdcdc;\n --dsw-static-neutral-300: #d4d4d4;\n --dsw-static-neutral-400: #a2a4a6;\n --dsw-static-neutral-500: #7f8287;\n --dsw-static-neutral-50: #fafafa;\n --dsw-static-neutral-550: #65676b;\n --dsw-static-neutral-600: #545557;\n --dsw-static-neutral-700: #3c3c3d;\n --dsw-static-neutral-800: #292929;\n --dsw-static-neutral-850: #212123;\n --dsw-static-neutral-900: #0f0f0f;\n --dsw-static-neutral-bluish-00: #fff;\n --dsw-static-neutral-bluish-1000: #0f1115;\n --dsw-static-neutral-bluish-100: #ebeef2;\n --dsw-static-neutral-bluish-150: #e9ecf2;\n --dsw-static-neutral-bluish-200: #e1e5ee;\n --dsw-static-neutral-bluish-300: #cfd3d6;\n --dsw-static-neutral-bluish-400: #adb2b8;\n --dsw-static-neutral-bluish-500: #979da6;\n --dsw-static-neutral-bluish-50: #f9fafb;\n --dsw-static-neutral-bluish-600: #81858c;\n --dsw-static-neutral-bluish-60: #f9fafb;\n --dsw-static-neutral-bluish-700: #61666b;\n --dsw-static-neutral-bluish-750: #43454a;\n --dsw-static-neutral-bluish-75: #f1f3f5;\n --dsw-static-neutral-bluish-800: #353638;\n --dsw-static-neutral-bluish-850: #2c2c2e;\n --dsw-static-neutral-bluish-875: #232324;\n --dsw-static-neutral-bluish-900: #1b1b1c;\n --dsw-static-neutral-bluish-950: #151517;\n --dsw-static-red-100: #fee2e2;\n --dsw-static-red-400: #f25a5a;\n --dsw-static-red-400-a12: #f25a5a1f;\n --dsw-static-red-500: #ef4444;\n --dsw-static-red-50: #fef2f2;\n --dsw-static-red-600: #ec1313;\n --dsw-static-red-600-a08: #ec131314;\n --dsw-static-red-900: #570c0c;\n}\n\n[data-dc-scheme=\"light\"] {\n --dsw-alias-bg-base: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-document-preview: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-bg-document-selection: color-mix(in srgb, var(--dsw-static-blue-500) 40%, transparent);\n --dsw-alias-label-document-preview: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-bg-layer-1: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-layer-2: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-layer-3: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-bg-mask-1: #0000003d;\n --dsw-alias-bg-mask-2: #0000001f;\n --dsw-alias-bg-mask-3: #0000007a;\n --dsw-alias-bg-mask-photo: #000000e0;\n --dsw-alias-bg-mask-drop: #ffffffb3;\n --dsw-alias-bg-module-platform: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-bg-multi-select: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-bg-overlay: var(--dsw-static-neutral-bluish-150);\n --dsw-alias-bg-skeleton: #0000000a;\n --dsw-alias-border-inverted2: #0000;\n --dsw-alias-border-inverted: #0000;\n --dsw-alias-border-l1: #0000000a;\n --dsw-alias-border-l2-darkmode-thin: #0000001a;\n --dsw-alias-border-l2: #0000001a;\n --dsw-alias-border-l3: #0000001f;\n --dsw-alias-border-l4: #00000029;\n --dsw-alias-brand-primary-invert: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-brand-primary-new-colorprimary-new-color: #4176e6;\n --dsw-alias-brand-primary: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-brand-text: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-button-contrast-fill: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-button-elevated-fill: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-button-floating-fill: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-button-floating-hover: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-button-ghost-active-border: var(--dsw-static-neutral-bluish-500);\n --dsw-alias-button-ghost-active-fill: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-ghost-active-hover: var(--dsw-static-neutral-bluish-150);\n --dsw-alias-button-info-fill: var(--dsw-static-deepseek-500);\n --dsw-alias-button-info-hover: var(--dsw-static-deepseek-400);\n --dsw-alias-button-primary-dimmed: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-primary-fill: var(--dsw-alias-brand-primary);\n --dsw-alias-button-primary-hover: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-tool-bar-fill-invisible: #1f1f1f5c;\n --dsw-alias-button-tool-bar-fill: #54555780;\n --dsw-alias-button-tool-bar-hover: #54555799;\n --dsw-alias-interactive-bg-active: #2631481a;\n --dsw-alias-interactive-bg-hover-accent: #26314824;\n --dsw-alias-interactive-bg-hover-danger: #ec13130d;\n --dsw-alias-interactive-bg-hover-solid: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-interactive-bg-hover: #2631480f;\n --dsw-alias-label-caption: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-label-deep-diving: color-mix(in srgb, var(--dsw-static-deepseek-500) 70%, var(--dsw-static-blue-950));\n --dsw-alias-label-deep-diving-shimmer: color-mix(in srgb, var(--dsw-static-deepseek-500) 30%, var(--dsw-static-blue-950));\n --dsw-alias-label-dimmed: var(--dsw-static-neutral-bluish-200);\n --dsw-alias-label-primary-bluish: var(--dsw-static-blue-900);\n --dsw-alias-label-primary-dimmed: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-label-primary-foreground: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-label-primary-inverted: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-label-primary: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-label-secondary: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-label-shimmer: color-mix(in srgb, var(--dsw-static-neutral-1000) 30%, transparent);\n --dsw-alias-label-tertiary: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-menu-icon: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-link: var(--dsw-static-deepseek-500);\n --dsw-alias-markdown-citation: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-markdown-code-block-banner: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-markdown-code-block: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-markdown-code-segment-selected: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-markdown-code-segment-unselected: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-markdown-inline-code: var(--dsw-static-neutral-50);\n --dsw-alias-markdown-placeholder: var(--dsw-static-neutral-bluish-60);\n --dsw-alias-markdown-tag: var(--dsw-static-neutral-bluish-75);\n --dsw-alias-scrollbar-bg-l1: var(--dsw-static-neutral-200);\n --dsw-alias-scrollbar-bg-l2: var(--dsw-static-neutral-200);\n --dsw-alias-scrollbar-hover-l1: var(--dsw-static-neutral-300);\n --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-300);\n --dsw-alias-state-business-primary: var(--dsw-static-deepseek-500);\n --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-100);\n --dsw-alias-code-diff-added: var(--dsw-static-green-500-a08);\n --dsw-alias-code-diff-deleted: var(--dsw-static-red-600-a08);\n --dsw-alias-file-diff-added-bg: #e6f4e7;\n --dsw-alias-file-diff-added-gutter: #edf7ed;\n --dsw-alias-file-diff-added-marker: #01a241;\n --dsw-alias-file-diff-deleted-bg: #fce6e2;\n --dsw-alias-file-diff-deleted-gutter: #fdece9;\n --dsw-alias-file-diff-deleted-marker: #ba2723;\n --dsw-alias-state-error-primary: var(--dsw-static-red-600);\n --dsw-alias-state-error-secondary: var(--dsw-static-red-400);\n --dsw-alias-state-idle-primary: var(--dsw-static-neutral-300);\n --dsw-alias-state-success-primary: var(--dsw-static-green-500);\n --dsw-alias-state-success-secondary: var(--dsw-static-green-400);\n --dsw-alias-state-success-tertiary: var(--dsw-static-green-100);\n --dsw-alias-state-warn-label: var(--dsw-static-amber-600);\n --dsw-alias-state-warn-primary: var(--dsw-static-amber-500);\n --dsw-alias-state-warn-secondary: var(--dsw-static-amber-400);\n --dsw-alias-state-warn-tertiary: var(--dsw-static-amber-100);\n --dsw-alias-switch-thumb: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-toast-bg: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-toast-label: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-tooltip-bg: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-tooltip-key-bg: color-mix(in srgb, var(--dsw-alias-tooltip-bg), white 18%);\n --dsw-alias-turn-trigger-bg: var(--dsw-alias-markdown-code-block);\n --dsw-alias-turn-trigger-bg-hover: var(--dsw-alias-interactive-bg-hover);\n --dsw-specific-bubble-highlight: var(--dsw-static-deepseek-200);\n --dsw-specific-bubble: var(--dsw-static-deepseek-50);\n --dsw-specific-input-major: var(--dsw-static-neutral-bluish-00);\n --dsw-specific-login-input: var(--dsw-static-neutral-bluish-50);\n --dsw-menu-surface-fill: #f8f9fa94;\n --dsw-alias-menu-group-header-fill: #f8f9faf0;\n --dsw-specific-menu: var(--dsw-menu-surface-fill);\n --dsw-specific-selector: var(--dsw-static-neutral-bluish-60);\n --dsw-specific-sidebar-fill: var(--dsw-static-neutral-bluish-50);\n --dsw-specific-sidebar-nav-item-active-accent: var(--dsw-static-deepseek-100);\n --dsw-specific-sidebar-nav-item-active: var(--dsw-static-neutral-bluish-100);\n --dsw-specific-sidebar-nav-item-hover: var(--dsw-static-neutral-bluish-75);\n --dsw-specific-tip: var(--dsw-static-neutral-bluish-60);\n}\n\n[data-dc-scheme=\"dark\"] {\n --dsw-alias-bg-base: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-bg-document-preview: var(--dsw-static-neutral-bluish-950);\n --dsw-alias-bg-document-selection: color-mix(in srgb, var(--dsw-static-blue-500) 40%, transparent);\n --dsw-alias-label-document-preview: var(--dsw-static-neutral-bluish-300);\n --dsw-alias-bg-layer-1: var(--dsw-static-neutral-bluish-875);\n --dsw-alias-bg-layer-2: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-bg-layer-3: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-bg-mask-1: #00000080;\n --dsw-alias-bg-mask-2: #0003;\n --dsw-alias-bg-mask-3: #0000007a;\n --dsw-alias-bg-mask-photo: #000000e0;\n --dsw-alias-bg-mask-drop: #272730b3;\n --dsw-alias-bg-module-platform: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-bg-multi-select: var(--dsw-static-neutral-850);\n --dsw-alias-bg-overlay: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-bg-skeleton: #ffffff14;\n --dsw-alias-border-inverted2: #ffffff14;\n --dsw-alias-border-inverted: #ffffff0f;\n --dsw-alias-border-l1: #ffffff0f;\n --dsw-alias-border-l2-darkmode-thin: #ffffff0f;\n --dsw-alias-border-l2: #ffffff1f;\n --dsw-alias-border-l3: #ffffff29;\n --dsw-alias-border-l4: #fff3;\n --dsw-alias-brand-primary-invert: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-brand-primary-new-colorprimary-new-color: var(--dsw-static-deepseek-450);\n --dsw-alias-brand-primary: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-brand-text: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-button-contrast-fill: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-button-elevated-fill: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-floating-fill: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-button-floating-hover: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-button-ghost-active-border: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-button-ghost-active-fill: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-ghost-active-hover: var(--dsw-static-neutral-bluish-700);\n --dsw-alias-button-info-fill: var(--dsw-static-deepseek-400);\n --dsw-alias-button-info-hover: var(--dsw-static-deepseek-500);\n --dsw-alias-button-primary-dimmed: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-button-primary-fill: var(--dsw-alias-brand-primary);\n --dsw-alias-button-primary-hover: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-button-tool-bar-fill-invisible: #1f1f1f5c;\n --dsw-alias-button-tool-bar-fill: #54555780;\n --dsw-alias-button-tool-bar-hover: #54555799;\n --dsw-alias-interactive-bg-active: #ffffff24;\n --dsw-alias-interactive-bg-hover-accent: #ffffff3d;\n --dsw-alias-interactive-bg-hover-danger: #f25a5a26;\n --dsw-alias-interactive-bg-hover-solid: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-interactive-bg-hover: #ffffff14;\n --dsw-alias-label-caption: var(--dsw-static-neutral-bluish-600);\n --dsw-alias-label-deep-diving: color-mix(in srgb, var(--dsw-static-deepseek-450) 55%, var(--dsw-static-neutral-bluish-400));\n --dsw-alias-label-deep-diving-shimmer: color-mix(in srgb, var(--dsw-static-blue-300) 65%, var(--dsw-static-deepseek-400));\n --dsw-alias-label-dimmed: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-label-primary-bluish: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-label-primary-dimmed: var(--dsw-static-neutral-bluish-100);\n --dsw-alias-label-primary-foreground: var(--dsw-static-neutral-bluish-1000);\n --dsw-alias-label-primary-inverted: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-label-primary: var(--dsw-static-neutral-bluish-50);\n --dsw-alias-label-secondary: var(--dsw-static-neutral-bluish-300);\n --dsw-alias-label-shimmer: color-mix(in srgb, var(--dsw-static-neutral-00) 45%, transparent);\n --dsw-alias-label-tertiary: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-menu-icon: var(--dsw-alias-label-primary-dimmed);\n --dsw-alias-link: var(--dsw-static-deepseek-400);\n --dsw-alias-markdown-citation: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-markdown-code-block-banner: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-markdown-code-block: var(--dsw-static-neutral-bluish-900);\n --dsw-alias-markdown-code-segment-selected: var(--dsw-static-neutral-bluish-800);\n --dsw-alias-markdown-code-segment-unselected: var(--dsw-static-neutral-bluish-900);\n --dsw-alias-markdown-inline-code: var(--dsw-static-neutral-800);\n --dsw-alias-markdown-placeholder: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-markdown-tag: var(--dsw-static-neutral-bluish-850);\n --dsw-alias-scrollbar-bg-l1: var(--dsw-static-neutral-700);\n --dsw-alias-scrollbar-bg-l2: var(--dsw-static-neutral-600);\n --dsw-alias-scrollbar-hover-l1: var(--dsw-static-neutral-600);\n --dsw-alias-scrollbar-hover-l2: var(--dsw-static-neutral-550);\n --dsw-alias-state-business-primary: var(--dsw-static-deepseek-400);\n --dsw-alias-state-business-tertiary: var(--dsw-static-deepseek-800);\n --dsw-alias-code-diff-added: var(--dsw-static-green-500-a12);\n --dsw-alias-code-diff-deleted: var(--dsw-static-red-400-a12);\n --dsw-alias-file-diff-added-bg: #1f3124;\n --dsw-alias-file-diff-added-gutter: #132016;\n --dsw-alias-file-diff-added-marker: #41c977;\n --dsw-alias-file-diff-deleted-bg: #3c1f1b;\n --dsw-alias-file-diff-deleted-gutter: #28130e;\n --dsw-alias-file-diff-deleted-marker: #fa423e;\n --dsw-alias-state-error-primary: var(--dsw-static-red-400);\n --dsw-alias-state-error-secondary: var(--dsw-static-red-400);\n --dsw-alias-state-idle-primary: var(--dsw-static-neutral-600);\n --dsw-alias-state-success-primary: var(--dsw-static-green-500);\n --dsw-alias-state-success-secondary: var(--dsw-static-green-400);\n --dsw-alias-state-success-tertiary: var(--dsw-static-green-900);\n --dsw-alias-state-warn-label: var(--dsw-static-amber-600);\n --dsw-alias-state-warn-primary: var(--dsw-static-amber-500);\n --dsw-alias-state-warn-secondary: var(--dsw-static-amber-400);\n --dsw-alias-state-warn-tertiary: var(--dsw-static-amber-900);\n --dsw-alias-switch-thumb: var(--dsw-static-neutral-bluish-400);\n --dsw-alias-toast-bg: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-toast-label: var(--dsw-static-neutral-bluish-00);\n --dsw-alias-turn-trigger-bg: var(--dsw-alias-interactive-bg-hover);\n --dsw-alias-turn-trigger-bg-hover: var(--dsw-alias-interactive-bg-active);\n --dsw-alias-tooltip-bg: var(--dsw-static-neutral-bluish-750);\n --dsw-alias-tooltip-key-bg: color-mix(in srgb, var(--dsw-alias-tooltip-bg), white 18%);\n --dsw-specific-bubble-highlight: var(--dsw-static-neutral-bluish-750);\n --dsw-specific-bubble: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-input-major: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-login-input: var(--dsw-static-neutral-bluish-900);\n --dsw-menu-surface-fill: #43454a73;\n --dsw-alias-menu-group-header-fill: #303136f0;\n --dsw-specific-menu: var(--dsw-menu-surface-fill);\n --dsw-specific-selector: var(--dsw-static-neutral-bluish-800);\n --dsw-specific-sidebar-fill: var(--dsw-static-neutral-bluish-900);\n --dsw-specific-sidebar-nav-item-active-accent: var(--dsw-static-neutral-bluish-800);\n --dsw-specific-sidebar-nav-item-active: var(--dsw-static-neutral-bluish-750);\n --dsw-specific-sidebar-nav-item-hover: var(--dsw-static-neutral-bluish-850);\n --dsw-specific-tip: var(--dsw-static-neutral-bluish-800);\n}\n\nhtml[data-platform=\"darwin\"] [data-dc-scheme=\"light\"] {\n --dsw-specific-menu: #f8f9faf0;\n}\n\nhtml[data-platform=\"darwin\"] [data-dc-scheme=\"dark\"] {\n --dsw-specific-menu: #303136f0;\n}\n\n[data-dc-scheme=\"light\"] {\n color-scheme: light;\n}\n\n[data-dc-scheme=\"dark\"] {\n color-scheme: dark;\n}\n.dshc_embed {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n min-height: 0;\n padding-top: var(--dsh-frame-top-clearance, 0px);\n background: var(--dsw-alias-bg-base);\n display: flex;\n}\n\n.dshc_frame {\n background: var(--dsw-alias-bg-base);\n border: 0;\n flex: 1;\n width: 100%;\n height: 100%;\n}\n";document.head.appendChild(s)})();
|
|
9
9
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
10
10
|
// \0rolldown/runtime.js
|
|
11
11
|
var __defProp = Object.defineProperty;
|
|
@@ -208,6 +208,13 @@ function createChannelSource(transport) {
|
|
|
208
208
|
let historyEpoch = 0;
|
|
209
209
|
/** #1030: live rows newer than a trimmed window's last one, kept until `loadNewer` catches up. */
|
|
210
210
|
const ahead = /* @__PURE__ */ new Map();
|
|
211
|
+
let newestSeen = 0;
|
|
212
|
+
const unreadIds = /* @__PURE__ */ new Map();
|
|
213
|
+
const withoutUnread = (unread, roomId) => {
|
|
214
|
+
if (roomId === void 0 || unread?.[String(roomId)] === void 0) return unread;
|
|
215
|
+
const { [String(roomId)]: _gone, ...rest } = unread;
|
|
216
|
+
return rest;
|
|
217
|
+
};
|
|
211
218
|
const set = (next) => {
|
|
212
219
|
snapshot = {
|
|
213
220
|
...snapshot,
|
|
@@ -246,7 +253,25 @@ function createChannelSource(transport) {
|
|
|
246
253
|
const applyEvent = (current, event) => {
|
|
247
254
|
switch (event.type) {
|
|
248
255
|
case "message": {
|
|
249
|
-
if (event.message.room_id !== current.roomId)
|
|
256
|
+
if (event.message.room_id !== current.roomId) {
|
|
257
|
+
const m = event.message;
|
|
258
|
+
const key = String(m.room_id);
|
|
259
|
+
const ids = unreadIds.get(key);
|
|
260
|
+
const fresh = m.id > newestSeen;
|
|
261
|
+
newestSeen = Math.max(newestSeen, m.id);
|
|
262
|
+
if (!fresh || ids?.has(m.id) === true || m.author_kind !== "role" || m.card !== null) return current;
|
|
263
|
+
const next = ids ?? /* @__PURE__ */ new Set();
|
|
264
|
+
next.add(m.id);
|
|
265
|
+
unreadIds.set(key, next);
|
|
266
|
+
return {
|
|
267
|
+
...current,
|
|
268
|
+
unread: {
|
|
269
|
+
...current.unread,
|
|
270
|
+
[key]: next.size
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
newestSeen = Math.max(newestSeen, event.message.id);
|
|
250
275
|
const list = current.messages;
|
|
251
276
|
const id = event.message.id;
|
|
252
277
|
const first = list[0];
|
|
@@ -452,6 +477,12 @@ function createChannelSource(transport) {
|
|
|
452
477
|
taskChat: keepBoard ? previous.taskChat : void 0,
|
|
453
478
|
outbox: outbox.filter((entry) => entry.roomId === roomId)
|
|
454
479
|
};
|
|
480
|
+
for (const row of rows) newestSeen = Math.max(newestSeen, row.id);
|
|
481
|
+
if (roomId !== void 0) unreadIds.delete(String(roomId));
|
|
482
|
+
next = {
|
|
483
|
+
...next,
|
|
484
|
+
unread: withoutUnread(snapshot.unread, roomId)
|
|
485
|
+
};
|
|
455
486
|
for (const event of read.events) next = applyEvent(next, event);
|
|
456
487
|
pending = void 0;
|
|
457
488
|
set(next);
|
|
@@ -468,18 +499,22 @@ function createChannelSource(transport) {
|
|
|
468
499
|
rememberRoom(roomId);
|
|
469
500
|
if (roomId !== snapshot.roomId) earlyTasks.clear();
|
|
470
501
|
const shown = outbox.filter((entry) => entry.roomId === roomId);
|
|
502
|
+
unreadIds.delete(String(roomId));
|
|
503
|
+
const unread = withoutUnread(snapshot.unread, roomId);
|
|
471
504
|
set(roomId === snapshot.roomId ? {
|
|
472
505
|
roomId,
|
|
473
506
|
messages: [],
|
|
474
507
|
hasMoreNewer: false,
|
|
475
|
-
outbox: shown
|
|
508
|
+
outbox: shown,
|
|
509
|
+
unread
|
|
476
510
|
} : {
|
|
477
511
|
roomId,
|
|
478
512
|
messages: [],
|
|
479
513
|
hasMoreNewer: false,
|
|
480
514
|
outbox: shown,
|
|
481
515
|
tasks: [],
|
|
482
|
-
taskChat: void 0
|
|
516
|
+
taskChat: void 0,
|
|
517
|
+
unread
|
|
483
518
|
});
|
|
484
519
|
await refresh(false);
|
|
485
520
|
};
|
|
@@ -677,6 +712,13 @@ function createChannelSource(transport) {
|
|
|
677
712
|
if (!snapshot.rooms.some((r) => r.id === room.id)) set({ rooms: [...snapshot.rooms, room] });
|
|
678
713
|
await selectRoom(room.id);
|
|
679
714
|
},
|
|
715
|
+
async closeDm(roomId) {
|
|
716
|
+
await request(`collab/api/dms/${roomId}`, { method: "DELETE" });
|
|
717
|
+
const rooms = snapshot.rooms.filter((r) => r.id !== roomId);
|
|
718
|
+
set({ rooms });
|
|
719
|
+
const next = rooms.find((r) => r.kind !== "workspace" && r.dm_member == null);
|
|
720
|
+
if (snapshot.roomId === roomId && next !== void 0) await selectRoom(next.id);
|
|
721
|
+
},
|
|
680
722
|
async renameRoom(roomId, name) {
|
|
681
723
|
const { room } = await request(`collab/api/rooms/${roomId}`, json("PATCH", { name }));
|
|
682
724
|
set({ rooms: snapshot.rooms.map((r) => r.id === roomId ? {
|
|
@@ -16680,9 +16722,16 @@ var ChannelsPage_module_default = {
|
|
|
16680
16722
|
"dialogBackdrop": "dshc_dialogBackdrop",
|
|
16681
16723
|
"dialogTitle": "dshc_dialogTitle",
|
|
16682
16724
|
"dmAvatar": "dshc_dmAvatar",
|
|
16725
|
+
"dmClose": "dshc_dmClose",
|
|
16726
|
+
"dmHead": "dshc_dmHead",
|
|
16727
|
+
"dmNewRow": "dshc_dmNewRow",
|
|
16728
|
+
"dmPicker": "dshc_dmPicker",
|
|
16729
|
+
"dmPickNone": "dshc_dmPickNone",
|
|
16730
|
+
"dmRow": "dshc_dmRow",
|
|
16683
16731
|
"dmTitle": "dshc_dmTitle",
|
|
16684
16732
|
"drawerBackdrop": "dshc_drawerBackdrop",
|
|
16685
16733
|
"drawerOpen": "dshc_drawerOpen",
|
|
16734
|
+
"drawerTools": "dshc_drawerTools",
|
|
16686
16735
|
"editBar": "dshc_editBar",
|
|
16687
16736
|
"editBox": "dshc_editBox",
|
|
16688
16737
|
"edited": "dshc_edited",
|
|
@@ -16710,6 +16759,7 @@ var ChannelsPage_module_default = {
|
|
|
16710
16759
|
"headLeadStatus": "dshc_headLeadStatus",
|
|
16711
16760
|
"headLeadText": "dshc_headLeadText",
|
|
16712
16761
|
"headMeta": "dshc_headMeta",
|
|
16762
|
+
"headSpacer": "dshc_headSpacer",
|
|
16713
16763
|
"headTeam": "dshc_headTeam",
|
|
16714
16764
|
"iconButton": "dshc_iconButton",
|
|
16715
16765
|
"imageAttachment": "dshc_imageAttachment",
|
|
@@ -16722,6 +16772,7 @@ var ChannelsPage_module_default = {
|
|
|
16722
16772
|
"jumpCount": "dshc_jumpCount",
|
|
16723
16773
|
"jumpLatest": "dshc_jumpLatest",
|
|
16724
16774
|
"leadCard": "dshc_leadCard",
|
|
16775
|
+
"leadCardHint": "dshc_leadCardHint",
|
|
16725
16776
|
"leadCardName": "dshc_leadCardName",
|
|
16726
16777
|
"leadCardStatus": "dshc_leadCardStatus",
|
|
16727
16778
|
"leadCardText": "dshc_leadCardText",
|
|
@@ -16790,10 +16841,14 @@ var ChannelsPage_module_default = {
|
|
|
16790
16841
|
"presence": "dshc_presence",
|
|
16791
16842
|
"primaryButton": "dshc_primaryButton",
|
|
16792
16843
|
"progressCard": "dshc_progressCard",
|
|
16844
|
+
"progressChevron": "dshc_progressChevron",
|
|
16845
|
+
"progressHead": "dshc_progressHead",
|
|
16793
16846
|
"progressLink": "dshc_progressLink",
|
|
16794
16847
|
"progressRow": "dshc_progressRow",
|
|
16795
16848
|
"progressRows": "dshc_progressRows",
|
|
16849
|
+
"progressSummary": "dshc_progressSummary",
|
|
16796
16850
|
"progressTitle": "dshc_progressTitle",
|
|
16851
|
+
"progressToggle": "dshc_progressToggle",
|
|
16797
16852
|
"queuedButton": "dshc_queuedButton",
|
|
16798
16853
|
"queuedTag": "dshc_queuedTag",
|
|
16799
16854
|
"quote": "dshc_quote",
|
|
@@ -16810,6 +16865,10 @@ var ChannelsPage_module_default = {
|
|
|
16810
16865
|
"roomName": "dshc_roomName",
|
|
16811
16866
|
"rooms": "dshc_rooms",
|
|
16812
16867
|
"roomsHidden": "dshc_roomsHidden",
|
|
16868
|
+
"roomUnread": "dshc_roomUnread",
|
|
16869
|
+
"roomWorking": "dshc_roomWorking",
|
|
16870
|
+
"roomWorkingDot": "dshc_roomWorkingDot",
|
|
16871
|
+
"roomWorkingPulse": "dshc_roomWorkingPulse",
|
|
16813
16872
|
"runHead": "dshc_runHead",
|
|
16814
16873
|
"runIcon": "dshc_runIcon",
|
|
16815
16874
|
"runSteps": "dshc_runSteps",
|
|
@@ -16830,6 +16889,7 @@ var ChannelsPage_module_default = {
|
|
|
16830
16889
|
"sidePanel": "dshc_sidePanel",
|
|
16831
16890
|
"sidePanelClose": "dshc_sidePanelClose",
|
|
16832
16891
|
"slashActive": "dshc_slashActive",
|
|
16892
|
+
"slashDisabled": "dshc_slashDisabled",
|
|
16833
16893
|
"slashGroup": "dshc_slashGroup",
|
|
16834
16894
|
"slashItem": "dshc_slashItem",
|
|
16835
16895
|
"slashMeta": "dshc_slashMeta",
|
|
@@ -16878,6 +16938,7 @@ var ChannelsPage_module_default = {
|
|
|
16878
16938
|
"undoBar": "dshc_undoBar",
|
|
16879
16939
|
"undoButton": "dshc_undoButton",
|
|
16880
16940
|
"undoToast": "dshc_undoToast",
|
|
16941
|
+
"unreadBadge": "dshc_unreadBadge",
|
|
16881
16942
|
"unreadDivider": "dshc_unreadDivider",
|
|
16882
16943
|
"withdrawnRow": "dshc_withdrawnRow",
|
|
16883
16944
|
"working": "dshc_working",
|
|
@@ -16896,11 +16957,36 @@ function readStored() {
|
|
|
16896
16957
|
return DEFAULT_SCHEME;
|
|
16897
16958
|
}
|
|
16898
16959
|
}
|
|
16960
|
+
let host;
|
|
16961
|
+
function notify() {
|
|
16962
|
+
for (const fn of listeners) fn();
|
|
16963
|
+
}
|
|
16964
|
+
/** Follow the host theme from now on; the returned function lets go of it. */
|
|
16965
|
+
function bindHostTheme(next) {
|
|
16966
|
+
host = next;
|
|
16967
|
+
current = next.scheme();
|
|
16968
|
+
notify();
|
|
16969
|
+
const off = next.subscribe(() => {
|
|
16970
|
+
if (host !== next) return;
|
|
16971
|
+
current = next.scheme();
|
|
16972
|
+
notify();
|
|
16973
|
+
});
|
|
16974
|
+
return () => {
|
|
16975
|
+
off();
|
|
16976
|
+
if (host !== next) return;
|
|
16977
|
+
host = void 0;
|
|
16978
|
+
current = void 0;
|
|
16979
|
+
notify();
|
|
16980
|
+
};
|
|
16981
|
+
}
|
|
16899
16982
|
function getScheme() {
|
|
16900
16983
|
return current ??= readStored();
|
|
16901
16984
|
}
|
|
16902
16985
|
function setScheme(next) {
|
|
16903
16986
|
current = next;
|
|
16987
|
+
if (host !== void 0) try {
|
|
16988
|
+
host.set(next);
|
|
16989
|
+
} catch (error) {}
|
|
16904
16990
|
try {
|
|
16905
16991
|
globalThis.localStorage?.setItem(SCHEME_KEY, next);
|
|
16906
16992
|
} catch (error) {}
|
|
@@ -17219,7 +17305,7 @@ function EmbedFrame({ src, title, sandboxed = false, sameOrigin = false }) {
|
|
|
17219
17305
|
title,
|
|
17220
17306
|
sandbox,
|
|
17221
17307
|
loading: "lazy",
|
|
17222
|
-
referrerPolicy: "no-referrer"
|
|
17308
|
+
referrerPolicy: sandboxed ? "no-referrer" : "same-origin"
|
|
17223
17309
|
});
|
|
17224
17310
|
}
|
|
17225
17311
|
// src/client/DeliveryPreview.tsx
|
|
@@ -18068,7 +18154,7 @@ function TaskCard({ taskId, tasks, t }) {
|
|
|
18068
18154
|
className: ChannelsPage_module_default.taskSub,
|
|
18069
18155
|
children: m.title
|
|
18070
18156
|
}),
|
|
18071
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Status, {
|
|
18157
|
+
m.id !== task.id && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Status, {
|
|
18072
18158
|
status: m.status,
|
|
18073
18159
|
t
|
|
18074
18160
|
}),
|
|
@@ -18121,6 +18207,20 @@ const LABEL$1 = {
|
|
|
18121
18207
|
next: "progressNext",
|
|
18122
18208
|
open: "progressOpen"
|
|
18123
18209
|
};
|
|
18210
|
+
/** Folded state of the card, remembered per room in the browser (#156). Same shape as the card view switch. */
|
|
18211
|
+
const FOLD_KEY = "dsh-channels-progress-folded:";
|
|
18212
|
+
function loadProgressFolded(roomId) {
|
|
18213
|
+
try {
|
|
18214
|
+
return globalThis.localStorage?.getItem(FOLD_KEY + roomId) === "1";
|
|
18215
|
+
} catch (error) {
|
|
18216
|
+
return false;
|
|
18217
|
+
}
|
|
18218
|
+
}
|
|
18219
|
+
function saveProgressFolded(roomId, folded) {
|
|
18220
|
+
try {
|
|
18221
|
+
globalThis.localStorage?.setItem(FOLD_KEY + roomId, folded ? "1" : "0");
|
|
18222
|
+
} catch (error) {}
|
|
18223
|
+
}
|
|
18124
18224
|
function lineText(line, t) {
|
|
18125
18225
|
const task = line.task;
|
|
18126
18226
|
if (task === void 0) return t("progressNone");
|
|
@@ -18135,17 +18235,43 @@ function lineText(line, t) {
|
|
|
18135
18235
|
});
|
|
18136
18236
|
return line.count > 1 ? `${base}${t("progressMore", { count: String(line.count - 1) })}` : base;
|
|
18137
18237
|
}
|
|
18138
|
-
function ProgressCard({ lines, t, onOpen }) {
|
|
18238
|
+
function ProgressCard({ lines, t, onOpen, folded, onToggle }) {
|
|
18139
18239
|
const shown = lines.filter((line) => line.task !== void 0);
|
|
18140
18240
|
if (shown.length === 0) return null;
|
|
18241
|
+
const summary = shown.map((line) => `${t(LABEL$1[line.row])} ${line.count}`).join(" · ");
|
|
18242
|
+
const label = t(folded ? "progressExpand" : "progressFold");
|
|
18141
18243
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
18142
18244
|
className: ChannelsPage_module_default.progressCard,
|
|
18245
|
+
"data-folded": folded,
|
|
18143
18246
|
role: "region",
|
|
18144
18247
|
"aria-label": t("progressTitle"),
|
|
18145
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.
|
|
18146
|
-
className: ChannelsPage_module_default.
|
|
18147
|
-
children:
|
|
18148
|
-
|
|
18248
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
18249
|
+
className: ChannelsPage_module_default.progressHead,
|
|
18250
|
+
children: [
|
|
18251
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
18252
|
+
className: ChannelsPage_module_default.progressTitle,
|
|
18253
|
+
children: t("progressTitle")
|
|
18254
|
+
}),
|
|
18255
|
+
folded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
18256
|
+
className: ChannelsPage_module_default.progressSummary,
|
|
18257
|
+
title: summary,
|
|
18258
|
+
children: summary
|
|
18259
|
+
}),
|
|
18260
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
18261
|
+
type: "button",
|
|
18262
|
+
className: ChannelsPage_module_default.progressToggle,
|
|
18263
|
+
title: label,
|
|
18264
|
+
"aria-label": label,
|
|
18265
|
+
"aria-expanded": !folded,
|
|
18266
|
+
onClick: onToggle,
|
|
18267
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t(folded ? "progressExpandShort" : "progressFoldShort") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
18268
|
+
"aria-hidden": "true",
|
|
18269
|
+
className: ChannelsPage_module_default.progressChevron,
|
|
18270
|
+
children: folded ? "▾" : "▴"
|
|
18271
|
+
})]
|
|
18272
|
+
})
|
|
18273
|
+
]
|
|
18274
|
+
}), !folded && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("dl", {
|
|
18149
18275
|
className: ChannelsPage_module_default.progressRows,
|
|
18150
18276
|
children: shown.map((line) => {
|
|
18151
18277
|
const text = lineText(line, t);
|
|
@@ -18347,7 +18473,7 @@ const GROUP_TITLE = {
|
|
|
18347
18473
|
model: "slashGroupModel",
|
|
18348
18474
|
view: "slashGroupView"
|
|
18349
18475
|
};
|
|
18350
|
-
function SlashMenu({ commands, selected, target, grouped, t, onPick, onHover }) {
|
|
18476
|
+
function SlashMenu({ commands, selected, target, dmName, disabled = () => false, grouped, t, onPick, onHover }) {
|
|
18351
18477
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
18352
18478
|
className: `${ChannelsPage_module_default.mentionPopup} ${ChannelsPage_module_default.slashPopup}`,
|
|
18353
18479
|
role: "region",
|
|
@@ -18355,7 +18481,7 @@ function SlashMenu({ commands, selected, target, grouped, t, onPick, onHover })
|
|
|
18355
18481
|
children: [
|
|
18356
18482
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
18357
18483
|
className: ChannelsPage_module_default.mentionTitle,
|
|
18358
|
-
children: target
|
|
18484
|
+
children: target !== void 0 ? t("slashTitleLead", { name: target }) : dmName !== void 0 ? t("slashTitleDmNoCmd", { name: dmName }) : t("slashTitleNoLead")
|
|
18359
18485
|
}),
|
|
18360
18486
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
18361
18487
|
role: "listbox",
|
|
@@ -18369,7 +18495,13 @@ function SlashMenu({ commands, selected, target, grouped, t, onPick, onHover })
|
|
|
18369
18495
|
id: `channel-slash-${index}`,
|
|
18370
18496
|
role: "option",
|
|
18371
18497
|
"aria-selected": index === selected,
|
|
18372
|
-
|
|
18498
|
+
"aria-disabled": disabled(c) || void 0,
|
|
18499
|
+
title: disabled(c) ? t("slashDisabledHint") : void 0,
|
|
18500
|
+
className: [
|
|
18501
|
+
ChannelsPage_module_default.slashItem,
|
|
18502
|
+
index === selected ? ChannelsPage_module_default.slashActive : "",
|
|
18503
|
+
disabled(c) ? ChannelsPage_module_default.slashDisabled : ""
|
|
18504
|
+
].filter(Boolean).join(" "),
|
|
18373
18505
|
onMouseDown: (event) => {
|
|
18374
18506
|
event.preventDefault();
|
|
18375
18507
|
},
|
|
@@ -18377,7 +18509,7 @@ function SlashMenu({ commands, selected, target, grouped, t, onPick, onHover })
|
|
|
18377
18509
|
onHover(index);
|
|
18378
18510
|
},
|
|
18379
18511
|
onClick: () => {
|
|
18380
|
-
onPick(c);
|
|
18512
|
+
if (!disabled(c)) onPick(c);
|
|
18381
18513
|
},
|
|
18382
18514
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
18383
18515
|
className: ChannelsPage_module_default.slashName,
|
|
@@ -18507,6 +18639,10 @@ const SLASH_COMMANDS = [
|
|
|
18507
18639
|
}
|
|
18508
18640
|
}
|
|
18509
18641
|
];
|
|
18642
|
+
/** 体检 #5: a command that goes to one bot; without one it is shown greyed out. */
|
|
18643
|
+
function needsTarget(command) {
|
|
18644
|
+
return command.run.kind === "fill" || command.run.kind === "send" && command.run.broadcast !== true;
|
|
18645
|
+
}
|
|
18510
18646
|
/** The text after a leading `/` while the draft is still a bare command word; undefined otherwise. */
|
|
18511
18647
|
function slashQuery(draft) {
|
|
18512
18648
|
const m = /^\/([^\s/]*(?: all)?)$/.exec(draft);
|
|
@@ -18705,31 +18841,6 @@ function Avatar({ id, name, avatar, avatarVersion, small }) {
|
|
|
18705
18841
|
})]
|
|
18706
18842
|
});
|
|
18707
18843
|
}
|
|
18708
|
-
/**
|
|
18709
|
-
* Overlapping portraits of the members at work (#113): room rows and the title
|
|
18710
|
-
* bar show who is busy at a glance. Decorative only (no text), so a row's
|
|
18711
|
-
* accessible name and text stay the room's own; the names go in `title`.
|
|
18712
|
-
*/
|
|
18713
|
-
function AvatarStack({ members, max = 3, label }) {
|
|
18714
|
-
if (members.length === 0) return null;
|
|
18715
|
-
const shown = members.slice(0, max);
|
|
18716
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
18717
|
-
className: ChannelsPage_module_default.avatarStack,
|
|
18718
|
-
title: label ?? members.map((m) => m.name).join("、"),
|
|
18719
|
-
"aria-hidden": true,
|
|
18720
|
-
children: shown.map((m) => {
|
|
18721
|
-
const base = avatarSrc(m.avatar);
|
|
18722
|
-
const src = base && m.avatar?.startsWith("upload:") && m.avatarVersion ? `${base}?v=${m.avatarVersion}` : base;
|
|
18723
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
18724
|
-
className: ChannelsPage_module_default.stackDot,
|
|
18725
|
-
style: {
|
|
18726
|
-
background: color(m.id),
|
|
18727
|
-
...src === void 0 ? {} : { backgroundImage: `url("${src}")` }
|
|
18728
|
-
}
|
|
18729
|
-
}, m.id);
|
|
18730
|
-
})
|
|
18731
|
-
});
|
|
18732
|
-
}
|
|
18733
18844
|
// src/client/persona.ts
|
|
18734
18845
|
/**
|
|
18735
18846
|
* Rewrite only the identity references in a persona text. Replacing every
|
|
@@ -20425,7 +20536,8 @@ function MemoryBadge({ items, t }) {
|
|
|
20425
20536
|
})]
|
|
20426
20537
|
});
|
|
20427
20538
|
}
|
|
20428
|
-
|
|
20539
|
+
const LONG_PRESS_MS = 450;
|
|
20540
|
+
function MessageRow({ message, member, t, onConfigure, menuOpen, onAvatar, onCloseMenu, onMention, onDm, onReview, onDecide, onReply, onTask, onRetry, retrying, tasks, focused, cardView, onCardView, own, grouped, enter, queuedFor, taskCardShown = true, toolsOpen = false, onLongPress }) {
|
|
20429
20541
|
const labels = (0, react.useMemo)(() => ({
|
|
20430
20542
|
code: {
|
|
20431
20543
|
copyLabel: t("copyCode"),
|
|
@@ -20481,6 +20593,17 @@ function MessageRow({ message, member, t, onConfigure, menuOpen, onAvatar, onClo
|
|
|
20481
20593
|
note("task", t("toolTaskFailed", { message: error instanceof Error ? error.message : String(error) }));
|
|
20482
20594
|
});
|
|
20483
20595
|
};
|
|
20596
|
+
const press = (0, react.useRef)(void 0);
|
|
20597
|
+
(0, react.useEffect)(() => () => {
|
|
20598
|
+
clearTimeout(press.current);
|
|
20599
|
+
}, []);
|
|
20600
|
+
const startPress = () => {
|
|
20601
|
+
clearTimeout(press.current);
|
|
20602
|
+
if (onLongPress !== void 0) press.current = setTimeout(onLongPress, LONG_PRESS_MS);
|
|
20603
|
+
};
|
|
20604
|
+
const endPress = () => {
|
|
20605
|
+
clearTimeout(press.current);
|
|
20606
|
+
};
|
|
20484
20607
|
const wasEditing = (0, react.useRef)(false);
|
|
20485
20608
|
const isEditing = own?.editing !== void 0;
|
|
20486
20609
|
(0, react.useEffect)(() => {
|
|
@@ -20523,7 +20646,7 @@ function MessageRow({ message, member, t, onConfigure, menuOpen, onAvatar, onClo
|
|
|
20523
20646
|
labels
|
|
20524
20647
|
})
|
|
20525
20648
|
})
|
|
20526
|
-
}), card?.kind === "task" && typeof card.task_id === "number" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
20649
|
+
}), card?.kind === "task" && typeof card.task_id === "number" && taskCardShown && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
20527
20650
|
className: `${ChannelsPage_module_default.card} ${ChannelsPage_module_default.taskRecord}`,
|
|
20528
20651
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaskCard, {
|
|
20529
20652
|
taskId: card.task_id,
|
|
@@ -20582,7 +20705,17 @@ function MessageRow({ message, member, t, onConfigure, menuOpen, onAvatar, onClo
|
|
|
20582
20705
|
className: classes,
|
|
20583
20706
|
"data-message-id": message.id,
|
|
20584
20707
|
"data-queued": queuedFor !== void 0 || void 0,
|
|
20708
|
+
"data-tools-open": toolsOpen || void 0,
|
|
20585
20709
|
style: enterStyle,
|
|
20710
|
+
onTouchStart: startPress,
|
|
20711
|
+
onTouchEnd: endPress,
|
|
20712
|
+
onTouchMove: endPress,
|
|
20713
|
+
onTouchCancel: endPress,
|
|
20714
|
+
onContextMenu: (event) => {
|
|
20715
|
+
if (onLongPress === void 0 || typeof window.matchMedia !== "function" || !window.matchMedia("(hover: none)").matches) return;
|
|
20716
|
+
event.preventDefault();
|
|
20717
|
+
onLongPress();
|
|
20718
|
+
},
|
|
20586
20719
|
children: [
|
|
20587
20720
|
grouped ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("time", {
|
|
20588
20721
|
className: ChannelsPage_module_default.gutterTime,
|
|
@@ -21125,7 +21258,7 @@ function MemberGroup({ title, members, busy, onPick, onEdit, onRemove, onDm, t }
|
|
|
21125
21258
|
* @param props - framework, injected, and locale shares.
|
|
21126
21259
|
* @returns the three-column channel view.
|
|
21127
21260
|
*/
|
|
21128
|
-
function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask, openDm, createRoom, renameRoom, listModels, listClis, listPersonas, addMember, updateMember, removeMember, setLead, setWorkspacePath, renewRoom, setDispatchMode, setMaxRelay, decidePermission, retryMessage, editMessage, withdrawMessage, loadOlder, loadNewer, keepLatest, showLatest, openModelSettings, answerTask, t }) {
|
|
21261
|
+
function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask, openDm, closeDm, createRoom, renameRoom, listModels, listClis, listPersonas, addMember, updateMember, removeMember, setLead, setWorkspacePath, renewRoom, setDispatchMode, setMaxRelay, decidePermission, retryMessage, editMessage, withdrawMessage, loadOlder, loadNewer, keepLatest, showLatest, openModelSettings, answerTask, t }) {
|
|
21129
21262
|
const scheme = useScheme();
|
|
21130
21263
|
const state = useChannels((snapshot) => snapshot);
|
|
21131
21264
|
const [editing, setEditing] = (0, react.useState)(void 0);
|
|
@@ -21287,8 +21420,36 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21287
21420
|
input.setSelectionRange(next, next);
|
|
21288
21421
|
});
|
|
21289
21422
|
const [avatarMenu, setAvatarMenu] = (0, react.useState)(void 0);
|
|
21423
|
+
const [toolsFor, setToolsFor] = (0, react.useState)(void 0);
|
|
21424
|
+
(0, react.useEffect)(() => {
|
|
21425
|
+
if (toolsFor === void 0) return;
|
|
21426
|
+
const onPress = (event) => {
|
|
21427
|
+
if (event.target?.closest?.(`[data-message-id="${toolsFor}"]`) == null) setToolsFor(void 0);
|
|
21428
|
+
};
|
|
21429
|
+
document.addEventListener("touchstart", onPress);
|
|
21430
|
+
document.addEventListener("mousedown", onPress);
|
|
21431
|
+
return () => {
|
|
21432
|
+
document.removeEventListener("touchstart", onPress);
|
|
21433
|
+
document.removeEventListener("mousedown", onPress);
|
|
21434
|
+
};
|
|
21435
|
+
}, [toolsFor]);
|
|
21436
|
+
(0, react.useEffect)(() => {
|
|
21437
|
+
setToolsFor(void 0);
|
|
21438
|
+
}, [state.roomId]);
|
|
21439
|
+
const [dmPicker, setDmPicker] = (0, react.useState)(false);
|
|
21290
21440
|
const [cardViews, setCardViews] = (0, react.useState)({});
|
|
21441
|
+
const [progressFolded, setProgressFolded] = (0, react.useState)({});
|
|
21291
21442
|
const cardView = state.roomId === void 0 ? CARD_VIEW_DEFAULT : cardViews[state.roomId] ?? loadCardView(state.roomId);
|
|
21443
|
+
const folded = state.roomId !== void 0 && (progressFolded[state.roomId] ?? loadProgressFolded(state.roomId));
|
|
21444
|
+
const toggleProgress = () => {
|
|
21445
|
+
if (state.roomId === void 0) return;
|
|
21446
|
+
const roomId = state.roomId;
|
|
21447
|
+
saveProgressFolded(roomId, !folded);
|
|
21448
|
+
setProgressFolded((folds) => ({
|
|
21449
|
+
...folds,
|
|
21450
|
+
[roomId]: !folded
|
|
21451
|
+
}));
|
|
21452
|
+
};
|
|
21292
21453
|
const chooseCardView = (view) => {
|
|
21293
21454
|
if (state.roomId === void 0) return;
|
|
21294
21455
|
const roomId = state.roomId;
|
|
@@ -21560,17 +21721,36 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21560
21721
|
const popupOpen = mention !== void 0 && candidates.length > 0;
|
|
21561
21722
|
openMentionAt.current = popupOpen ? mention.start : void 0;
|
|
21562
21723
|
const selected = Math.min(highlight, Math.max(candidates.length - 1, 0));
|
|
21563
|
-
const
|
|
21724
|
+
const dmPeer = dmWith === void 0 ? void 0 : byId.get(dmWith);
|
|
21725
|
+
const commandTarget = dmWith !== void 0 ? dmPeer?.kind === "bot" ? dmPeer : void 0 : lead?.kind === "bot" ? lead : void 0;
|
|
21564
21726
|
const slash = slashQuery(draft);
|
|
21565
|
-
const slashCommands = slash === void 0 || capabilitiesDismissed || popupOpen ? [] : matchCommands(slash, (key) => t(key));
|
|
21727
|
+
const slashCommands = slash === void 0 || capabilitiesDismissed || popupOpen ? [] : matchCommands(slash, (key) => t(key)).filter((c) => dmWith === void 0 || c.name !== "stop all" && c.name !== "board");
|
|
21566
21728
|
const slashOpen = slashCommands.length > 0;
|
|
21567
21729
|
const slashSelected = Math.min(slashHighlight, Math.max(slashCommands.length - 1, 0));
|
|
21568
21730
|
const workingBots = (state.roomId === void 0 ? [] : state.thinking[String(state.roomId)] ?? []).map((id) => byId.get(id)).filter((m) => m !== void 0 && m.kind === "bot");
|
|
21569
21731
|
const stopTarget = workingBots.find((m) => m.id === commandTarget?.id) ?? workingBots[0];
|
|
21570
21732
|
const roomFiles = state.roomId === void 0 ? [] : pendingFiles[state.roomId] ?? [];
|
|
21571
21733
|
const stopMode = (stopTarget !== void 0 || stopping?.phase === "stopping") && draft.trim() === "" && roomFiles.length === 0;
|
|
21734
|
+
const taskCardAt = /* @__PURE__ */ new Map();
|
|
21735
|
+
for (const m of visibleMessages) for (const task of state.tasks ?? []) if (task.assign_msg_id === m.id && !taskCardAt.has(task.id) && parseCard(m)?.kind !== "task") taskCardAt.set(task.id, m.id);
|
|
21736
|
+
for (const m of visibleMessages) {
|
|
21737
|
+
const card = m.author_kind === "system" ? parseCard(m) : void 0;
|
|
21738
|
+
if (card?.kind === "task" && typeof card.task_id === "number" && !taskCardAt.has(card.task_id)) taskCardAt.set(card.task_id, m.id);
|
|
21739
|
+
}
|
|
21740
|
+
const recordShowsCard = (m) => {
|
|
21741
|
+
const card = parseCard(m);
|
|
21742
|
+
return card?.kind !== "task" || typeof card.task_id !== "number" || taskCardAt.get(card.task_id) === m.id;
|
|
21743
|
+
};
|
|
21572
21744
|
const answers = commandAnswers(state.messages, (id) => byId.get(id)?.name);
|
|
21573
21745
|
const answerIds = new Set([...answers.values()].map((m) => m.id));
|
|
21746
|
+
const boardOpen = boardDocked && dmWith === void 0;
|
|
21747
|
+
const placeholder = dmWith !== void 0 ? t("dmPlaceholder", { name: dmPeer?.name ?? room?.name ?? "" }) : t(compactComposer() || boardOpen ? "placeholderShort" : "placeholder", { room: room?.name ?? "" });
|
|
21748
|
+
const openBoard = () => {
|
|
21749
|
+
setDrawer(void 0);
|
|
21750
|
+
setTimeout(() => {
|
|
21751
|
+
chatRef.current?.querySelector(`button[aria-label="${t("taskBoardOpen")}"]`)?.click();
|
|
21752
|
+
}, 0);
|
|
21753
|
+
};
|
|
21574
21754
|
const setDraft = (text, nextCaret) => {
|
|
21575
21755
|
const roomId = state.roomId;
|
|
21576
21756
|
if (roomId === void 0) return;
|
|
@@ -21599,6 +21779,11 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21599
21779
|
setRoomError(t("dmOpenFailed", { message: error instanceof Error ? error.message : String(error) }));
|
|
21600
21780
|
});
|
|
21601
21781
|
};
|
|
21782
|
+
const endDm = closeDm === void 0 ? void 0 : (roomId) => {
|
|
21783
|
+
closeDm(roomId).catch((error) => {
|
|
21784
|
+
setRoomError(t("dmCloseFailed", { message: error instanceof Error ? error.message : String(error) }));
|
|
21785
|
+
});
|
|
21786
|
+
};
|
|
21602
21787
|
const mentionFromAvatar = (member) => {
|
|
21603
21788
|
setAvatarMenu(void 0);
|
|
21604
21789
|
pickFromList(member);
|
|
@@ -21743,6 +21928,10 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21743
21928
|
};
|
|
21744
21929
|
const runSlash = (command) => {
|
|
21745
21930
|
const run = command.run;
|
|
21931
|
+
if (commandTarget === void 0 && needsTarget(command)) {
|
|
21932
|
+
noTarget();
|
|
21933
|
+
return;
|
|
21934
|
+
}
|
|
21746
21935
|
setSlashHighlight(0);
|
|
21747
21936
|
if (run.kind === "panel") {
|
|
21748
21937
|
setDraft("", 0);
|
|
@@ -21924,7 +22113,7 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21924
22113
|
ChannelsPage_module_default.page,
|
|
21925
22114
|
roomsHidden ? ChannelsPage_module_default.roomsHidden : "",
|
|
21926
22115
|
membersHidden ? ChannelsPage_module_default.membersHidden : "",
|
|
21927
|
-
|
|
22116
|
+
boardOpen ? ChannelsPage_module_default.panelOpen : ""
|
|
21928
22117
|
].filter(Boolean).join(" "),
|
|
21929
22118
|
"data-dc-scheme": scheme,
|
|
21930
22119
|
children: [
|
|
@@ -21953,17 +22142,24 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
21953
22142
|
avatarVersion: lead.avatarVersion
|
|
21954
22143
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
21955
22144
|
className: ChannelsPage_module_default.leadCardText,
|
|
21956
|
-
children: [
|
|
21957
|
-
|
|
21958
|
-
|
|
21959
|
-
|
|
21960
|
-
|
|
21961
|
-
|
|
21962
|
-
|
|
21963
|
-
|
|
21964
|
-
|
|
21965
|
-
|
|
21966
|
-
|
|
22145
|
+
children: [
|
|
22146
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22147
|
+
className: ChannelsPage_module_default.leadCardName,
|
|
22148
|
+
children: lead?.name ?? t("headLead")
|
|
22149
|
+
}),
|
|
22150
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
22151
|
+
className: ChannelsPage_module_default.leadCardStatus,
|
|
22152
|
+
children: [
|
|
22153
|
+
t("leadPinned"),
|
|
22154
|
+
" · ",
|
|
22155
|
+
leadStatus
|
|
22156
|
+
]
|
|
22157
|
+
}),
|
|
22158
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22159
|
+
className: ChannelsPage_module_default.leadCardHint,
|
|
22160
|
+
children: t("leadCardHint")
|
|
22161
|
+
})
|
|
22162
|
+
]
|
|
21967
22163
|
})]
|
|
21968
22164
|
}),
|
|
21969
22165
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -22016,12 +22212,16 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22016
22212
|
const active = r.active ?? 0;
|
|
22017
22213
|
const showActive = active > 0;
|
|
22018
22214
|
const workers = (state.thinking[String(r.id)] ?? []).map((id) => state.members.find((m) => m.id === id)).filter((m) => m !== void 0);
|
|
22215
|
+
const fresh = r.id === state.roomId ? 0 : state.unread?.[String(r.id)] ?? 0;
|
|
22216
|
+
const working = workers.length === 0 ? void 0 : workers.length === 1 ? t("roomWorking", { name: workers[0].name }) : t("roomWorkingMany", { count: String(workers.length) });
|
|
22019
22217
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22020
22218
|
type: "button",
|
|
22219
|
+
"data-unread": fresh > 0 || void 0,
|
|
22021
22220
|
className: [
|
|
22022
22221
|
ChannelsPage_module_default.room,
|
|
22023
22222
|
depth === 1 ? ChannelsPage_module_default.workspace : "",
|
|
22024
|
-
r.id === state.roomId ? ChannelsPage_module_default.roomActive : ""
|
|
22223
|
+
r.id === state.roomId ? ChannelsPage_module_default.roomActive : "",
|
|
22224
|
+
fresh > 0 ? ChannelsPage_module_default.roomUnread : ""
|
|
22025
22225
|
].filter(Boolean).join(" "),
|
|
22026
22226
|
"aria-current": r.id === state.roomId,
|
|
22027
22227
|
onClick: () => {
|
|
@@ -22039,7 +22239,20 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22039
22239
|
className: ChannelsPage_module_default.roomLabel,
|
|
22040
22240
|
children: r.name
|
|
22041
22241
|
}),
|
|
22042
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
22242
|
+
working !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
22243
|
+
className: ChannelsPage_module_default.roomWorking,
|
|
22244
|
+
"aria-hidden": true,
|
|
22245
|
+
title: workers.map((m) => m.name).join("、"),
|
|
22246
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22247
|
+
className: ChannelsPage_module_default.roomWorkingDot,
|
|
22248
|
+
"aria-hidden": true
|
|
22249
|
+
}), working]
|
|
22250
|
+
}),
|
|
22251
|
+
fresh > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22252
|
+
className: ChannelsPage_module_default.unreadBadge,
|
|
22253
|
+
"aria-label": t("roomUnread", { count: String(fresh) }),
|
|
22254
|
+
children: fresh > 99 ? "99+" : fresh
|
|
22255
|
+
}),
|
|
22043
22256
|
showActive && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22044
22257
|
className: active > 0 ? `${ChannelsPage_module_default.activeCount} ${ChannelsPage_module_default.activeBusy}` : ChannelsPage_module_default.activeCount,
|
|
22045
22258
|
children: t("activeTasks", { count: active })
|
|
@@ -22047,34 +22260,113 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22047
22260
|
]
|
|
22048
22261
|
}, r.id);
|
|
22049
22262
|
}),
|
|
22050
|
-
|
|
22051
|
-
className: ChannelsPage_module_default.
|
|
22052
|
-
children:
|
|
22263
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22264
|
+
className: `${ChannelsPage_module_default.groupHead} ${ChannelsPage_module_default.dmHead}`,
|
|
22265
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
22266
|
+
className: ChannelsPage_module_default.groupTitle,
|
|
22267
|
+
children: t("dmGroup")
|
|
22268
|
+
}), startDm !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
22269
|
+
type: "button",
|
|
22270
|
+
className: ChannelsPage_module_default.iconButton,
|
|
22271
|
+
title: t("dmNew"),
|
|
22272
|
+
"aria-label": t("dmNew"),
|
|
22273
|
+
"aria-expanded": dmPicker,
|
|
22274
|
+
onClick: () => {
|
|
22275
|
+
setDmPicker(!dmPicker);
|
|
22276
|
+
},
|
|
22277
|
+
children: "+"
|
|
22278
|
+
})]
|
|
22053
22279
|
}),
|
|
22054
|
-
|
|
22055
|
-
|
|
22056
|
-
|
|
22280
|
+
dmPicker && startDm !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
22281
|
+
className: ChannelsPage_module_default.dmPicker,
|
|
22282
|
+
role: "menu",
|
|
22283
|
+
"aria-label": t("dmPickTitle"),
|
|
22284
|
+
children: state.members.filter((m) => m.kind !== "human").length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
22285
|
+
className: ChannelsPage_module_default.dmPickNone,
|
|
22286
|
+
children: t("dmPickNone")
|
|
22287
|
+
}) : state.members.filter((m) => m.kind !== "human").map((m) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22057
22288
|
type: "button",
|
|
22058
|
-
|
|
22059
|
-
|
|
22060
|
-
"data-dm-room": r.dm_member,
|
|
22289
|
+
role: "menuitem",
|
|
22290
|
+
className: ChannelsPage_module_default.room,
|
|
22061
22291
|
onClick: () => {
|
|
22062
|
-
|
|
22063
|
-
|
|
22064
|
-
selectRoom(r.id);
|
|
22292
|
+
setDmPicker(false);
|
|
22293
|
+
startDm(m);
|
|
22065
22294
|
},
|
|
22066
22295
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22067
22296
|
className: ChannelsPage_module_default.dmAvatar,
|
|
22068
22297
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Avatar, {
|
|
22069
|
-
id:
|
|
22070
|
-
name:
|
|
22071
|
-
avatar:
|
|
22072
|
-
avatarVersion:
|
|
22298
|
+
id: m.id,
|
|
22299
|
+
name: m.name,
|
|
22300
|
+
avatar: m.avatar,
|
|
22301
|
+
avatarVersion: m.avatarVersion,
|
|
22073
22302
|
small: true
|
|
22074
22303
|
})
|
|
22075
22304
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22076
22305
|
className: ChannelsPage_module_default.roomLabel,
|
|
22077
|
-
children:
|
|
22306
|
+
children: m.name
|
|
22307
|
+
})]
|
|
22308
|
+
}, m.id))
|
|
22309
|
+
}),
|
|
22310
|
+
startDm !== void 0 && dmRooms(state.rooms).length === 0 && !dmPicker && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22311
|
+
type: "button",
|
|
22312
|
+
className: `${ChannelsPage_module_default.room} ${ChannelsPage_module_default.dmNewRow}`,
|
|
22313
|
+
onClick: () => {
|
|
22314
|
+
setDmPicker(true);
|
|
22315
|
+
},
|
|
22316
|
+
children: ["+ ", t("dmNew")]
|
|
22317
|
+
}),
|
|
22318
|
+
dmRooms(state.rooms).map((r) => {
|
|
22319
|
+
const peer = state.members.find((m) => m.id === r.dm_member);
|
|
22320
|
+
const label = peer?.name ?? r.name;
|
|
22321
|
+
const fresh = r.id === state.roomId ? 0 : state.unread?.[String(r.id)] ?? 0;
|
|
22322
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22323
|
+
className: ChannelsPage_module_default.dmRow,
|
|
22324
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22325
|
+
type: "button",
|
|
22326
|
+
"data-unread": fresh > 0 || void 0,
|
|
22327
|
+
className: [
|
|
22328
|
+
ChannelsPage_module_default.room,
|
|
22329
|
+
r.id === state.roomId ? ChannelsPage_module_default.roomActive : "",
|
|
22330
|
+
fresh > 0 ? ChannelsPage_module_default.roomUnread : ""
|
|
22331
|
+
].filter(Boolean).join(" "),
|
|
22332
|
+
"aria-current": r.id === state.roomId,
|
|
22333
|
+
"data-dm-room": r.dm_member,
|
|
22334
|
+
onClick: () => {
|
|
22335
|
+
stickRef.current = true;
|
|
22336
|
+
setDrawer(void 0);
|
|
22337
|
+
selectRoom(r.id);
|
|
22338
|
+
},
|
|
22339
|
+
children: [
|
|
22340
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22341
|
+
className: ChannelsPage_module_default.dmAvatar,
|
|
22342
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Avatar, {
|
|
22343
|
+
id: r.dm_member ?? "",
|
|
22344
|
+
name: label,
|
|
22345
|
+
avatar: peer?.avatar,
|
|
22346
|
+
avatarVersion: peer?.avatarVersion,
|
|
22347
|
+
small: true
|
|
22348
|
+
})
|
|
22349
|
+
}),
|
|
22350
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22351
|
+
className: ChannelsPage_module_default.roomLabel,
|
|
22352
|
+
children: label
|
|
22353
|
+
}),
|
|
22354
|
+
fresh > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22355
|
+
className: ChannelsPage_module_default.unreadBadge,
|
|
22356
|
+
"aria-label": t("roomUnread", { count: String(fresh) }),
|
|
22357
|
+
children: fresh > 99 ? "99+" : fresh
|
|
22358
|
+
})
|
|
22359
|
+
]
|
|
22360
|
+
}), endDm !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
22361
|
+
type: "button",
|
|
22362
|
+
className: ChannelsPage_module_default.dmClose,
|
|
22363
|
+
"data-dm-close": r.id,
|
|
22364
|
+
title: t("dmClose"),
|
|
22365
|
+
"aria-label": t("dmCloseNamed", { name: label }),
|
|
22366
|
+
onClick: () => {
|
|
22367
|
+
endDm(r.id);
|
|
22368
|
+
},
|
|
22369
|
+
children: "×"
|
|
22078
22370
|
})]
|
|
22079
22371
|
}, r.id);
|
|
22080
22372
|
})
|
|
@@ -22116,16 +22408,19 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22116
22408
|
className: ChannelsPage_module_default.roomName,
|
|
22117
22409
|
children: dmWith !== void 0 ? state.members.find((m) => m.id === dmWith)?.name ?? room?.name : room?.name
|
|
22118
22410
|
}),
|
|
22119
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
22411
|
+
dmWith === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22412
|
+
type: "button",
|
|
22120
22413
|
className: ChannelsPage_module_default.headMeta,
|
|
22414
|
+
title: t("showMembersList"),
|
|
22415
|
+
onClick: openActivity,
|
|
22121
22416
|
children: [t("headMembers", { count: visibleMembers.length }), channelActive > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [" · ", t("activeTasks", { count: channelActive })] })]
|
|
22122
22417
|
}),
|
|
22123
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeadTeam, {
|
|
22418
|
+
dmWith === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(HeadTeam, {
|
|
22124
22419
|
mates: headTeam(visibleMembers, leadId, state.tasks ?? [], state.thinking, channelRooms),
|
|
22125
22420
|
t,
|
|
22126
22421
|
onOpen: openActivity
|
|
22127
22422
|
}),
|
|
22128
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaskBoard, {
|
|
22423
|
+
dmWith === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TaskBoard, {
|
|
22129
22424
|
tasks: state.tasks ?? [],
|
|
22130
22425
|
rooms: state.rooms,
|
|
22131
22426
|
chatId: state.taskChat,
|
|
@@ -22135,29 +22430,7 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22135
22430
|
onReview: reviewTask,
|
|
22136
22431
|
dock: boardDock,
|
|
22137
22432
|
onDocked: setBoardDocked
|
|
22138
|
-
}),
|
|
22139
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22140
|
-
className: ChannelsPage_module_default.headLead,
|
|
22141
|
-
role: "group",
|
|
22142
|
-
"aria-label": t("headLead"),
|
|
22143
|
-
title: lead === void 0 ? leadStatus : `${lead.name} · ${leadStatus}`,
|
|
22144
|
-
children: [lead !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Avatar, {
|
|
22145
|
-
id: lead.id,
|
|
22146
|
-
name: lead.name,
|
|
22147
|
-
avatar: lead.avatar,
|
|
22148
|
-
avatarVersion: lead.avatarVersion,
|
|
22149
|
-
small: true
|
|
22150
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
22151
|
-
className: ChannelsPage_module_default.headLeadText,
|
|
22152
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22153
|
-
className: ChannelsPage_module_default.headLeadName,
|
|
22154
|
-
children: lead?.name ?? t("headLead")
|
|
22155
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
22156
|
-
className: ChannelsPage_module_default.headLeadStatus,
|
|
22157
|
-
children: leadStatus
|
|
22158
|
-
})]
|
|
22159
|
-
})]
|
|
22160
|
-
}),
|
|
22433
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: ChannelsPage_module_default.headSpacer }),
|
|
22161
22434
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
22162
22435
|
type: "button",
|
|
22163
22436
|
className: ChannelsPage_module_default.schemeToggle,
|
|
@@ -22191,6 +22464,13 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22191
22464
|
})
|
|
22192
22465
|
]
|
|
22193
22466
|
}),
|
|
22467
|
+
dmWith === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProgressCard, {
|
|
22468
|
+
lines: channelProgress(state.tasks ?? [], channelRooms),
|
|
22469
|
+
t,
|
|
22470
|
+
onOpen: openMessage,
|
|
22471
|
+
folded,
|
|
22472
|
+
onToggle: toggleProgress
|
|
22473
|
+
}),
|
|
22194
22474
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22195
22475
|
className: ChannelsPage_module_default.logWrap,
|
|
22196
22476
|
children: [
|
|
@@ -22213,11 +22493,6 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22213
22493
|
if (el.scrollTop <= 40) pageBack();
|
|
22214
22494
|
},
|
|
22215
22495
|
children: [
|
|
22216
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ProgressCard, {
|
|
22217
|
-
lines: channelProgress(state.tasks ?? [], channelRooms),
|
|
22218
|
-
t,
|
|
22219
|
-
onOpen: openMessage
|
|
22220
|
-
}),
|
|
22221
22496
|
!visibleMembers.some((m) => m.kind !== "human") && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22222
22497
|
className: ChannelsPage_module_default.guide,
|
|
22223
22498
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: t("guideNoMembers") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
@@ -22236,7 +22511,7 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22236
22511
|
}),
|
|
22237
22512
|
visibleMessages.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
22238
22513
|
className: ChannelsPage_module_default.empty,
|
|
22239
|
-
children: t("empty")
|
|
22514
|
+
children: dmWith !== void 0 ? t("dmEmpty", { name: dmPeer?.name ?? room?.name ?? "" }) : t("empty")
|
|
22240
22515
|
}) : visibleMessages.map((m, index) => [firstUnread === m.id ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
22241
22516
|
className: ChannelsPage_module_default.unreadDivider,
|
|
22242
22517
|
role: "separator",
|
|
@@ -22280,7 +22555,12 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22280
22555
|
onReply: startReply,
|
|
22281
22556
|
onTask: toTask,
|
|
22282
22557
|
own: ownActions(m),
|
|
22283
|
-
queuedFor: queuedFor.get(m.id)
|
|
22558
|
+
queuedFor: queuedFor.get(m.id),
|
|
22559
|
+
taskCardShown: recordShowsCard(m),
|
|
22560
|
+
toolsOpen: toolsFor === m.id,
|
|
22561
|
+
onLongPress: () => {
|
|
22562
|
+
setToolsFor(m.id);
|
|
22563
|
+
}
|
|
22284
22564
|
}, m.id)])
|
|
22285
22565
|
]
|
|
22286
22566
|
}),
|
|
@@ -22372,6 +22652,8 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22372
22652
|
commands: slashCommands,
|
|
22373
22653
|
selected: slashSelected,
|
|
22374
22654
|
target: commandTarget?.name,
|
|
22655
|
+
dmName: dmWith === void 0 ? void 0 : dmPeer?.name ?? room?.name,
|
|
22656
|
+
disabled: (c) => commandTarget === void 0 && needsTarget(c),
|
|
22375
22657
|
grouped: slash === "",
|
|
22376
22658
|
t,
|
|
22377
22659
|
onPick: runSlash,
|
|
@@ -22481,7 +22763,7 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22481
22763
|
enterKeyHint: "send",
|
|
22482
22764
|
value: draft,
|
|
22483
22765
|
disabled: state.roomId === void 0 || sending[state.roomId] === true,
|
|
22484
|
-
placeholder
|
|
22766
|
+
placeholder,
|
|
22485
22767
|
role: "combobox",
|
|
22486
22768
|
"aria-expanded": popupOpen || slashOpen,
|
|
22487
22769
|
"aria-controls": slashOpen ? "channel-slash-list" : "channel-mention-list",
|
|
@@ -22601,6 +22883,23 @@ function ChannelsPage({ useChannels, selectRoom, send, reviewTask, dispatchTask,
|
|
|
22601
22883
|
children: t("activityPanel")
|
|
22602
22884
|
})
|
|
22603
22885
|
}),
|
|
22886
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
22887
|
+
className: ChannelsPage_module_default.drawerTools,
|
|
22888
|
+
children: [dmWith === void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
22889
|
+
type: "button",
|
|
22890
|
+
className: ChannelsPage_module_default.secondaryButton,
|
|
22891
|
+
onClick: openBoard,
|
|
22892
|
+
children: t("drawerBoard")
|
|
22893
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
22894
|
+
type: "button",
|
|
22895
|
+
className: ChannelsPage_module_default.secondaryButton,
|
|
22896
|
+
"aria-pressed": scheme === "dark",
|
|
22897
|
+
onClick: () => {
|
|
22898
|
+
setScheme(scheme === "light" ? "dark" : "light");
|
|
22899
|
+
},
|
|
22900
|
+
children: t("drawerDark")
|
|
22901
|
+
})]
|
|
22902
|
+
}),
|
|
22604
22903
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
22605
22904
|
ref: settingsButtonRef,
|
|
22606
22905
|
type: "button",
|
|
@@ -22784,6 +23083,10 @@ const zh = {
|
|
|
22784
23083
|
progressNextReview: "验收 #{id} {title}({name} 已交回)",
|
|
22785
23084
|
progressNextResume: "接着做 #{id} {title}({name},已暂停)",
|
|
22786
23085
|
progressMore: ",另 {count} 件",
|
|
23086
|
+
progressFold: "收起进展",
|
|
23087
|
+
progressExpand: "展开进展",
|
|
23088
|
+
progressFoldShort: "收起",
|
|
23089
|
+
progressExpandShort: "展开",
|
|
22787
23090
|
decideTray: "等你定和权限请求",
|
|
22788
23091
|
trayAsks: "等你点头 · {count} 件",
|
|
22789
23092
|
trayCollapse: "收起",
|
|
@@ -22798,8 +23101,9 @@ const zh = {
|
|
|
22798
23101
|
askUndo: "撤回({n} 秒)",
|
|
22799
23102
|
askApiPending: "接口修复中:这里的回复还送不到,先在聊天里 @ 对方回复",
|
|
22800
23103
|
headLeadLoading: "读取中",
|
|
22801
|
-
leadPinned: "
|
|
22802
|
-
leadCard: "
|
|
23104
|
+
leadPinned: "主角色",
|
|
23105
|
+
leadCard: "主角色",
|
|
23106
|
+
leadCardHint: "接你的话,派活给队友,收结果",
|
|
22803
23107
|
activityPanel: "活动",
|
|
22804
23108
|
activityNow: "正在进行",
|
|
22805
23109
|
activityThinking: "思考中",
|
|
@@ -22839,7 +23143,9 @@ const zh = {
|
|
|
22839
23143
|
workspaceNameFixed: "工作区名称由系统分配,不能修改。",
|
|
22840
23144
|
slashTitle: "命令",
|
|
22841
23145
|
slashTitleLead: "发给 {name} 的命令",
|
|
22842
|
-
slashTitleNoLead: "命令 ·
|
|
23146
|
+
slashTitleNoLead: "命令 · 先在频道设置里选主角色,才能用这些命令",
|
|
23147
|
+
slashTitleDmNoCmd: "命令 · {name} 不接这些命令",
|
|
23148
|
+
slashDisabledHint: "没人接这条命令",
|
|
22843
23149
|
slashHint: "↑↓ 选择 · 回车执行 · Esc 关闭",
|
|
22844
23150
|
slashNoLead: "主角色不是 bothouse 机器人,没人接这条命令;先在频道设置里选主角色,或直接 @ 机器人再打命令。",
|
|
22845
23151
|
slashStop: "停下这一轮,下条接着说",
|
|
@@ -22960,8 +23266,22 @@ const zh = {
|
|
|
22960
23266
|
online: "在线",
|
|
22961
23267
|
close: "关闭",
|
|
22962
23268
|
dmGroup: "私聊",
|
|
23269
|
+
dmNew: "发私信",
|
|
23270
|
+
dmPickTitle: "和谁私聊",
|
|
23271
|
+
dmPickNone: "还没有能私聊的成员",
|
|
23272
|
+
dmPlaceholder: "发消息给 {name}",
|
|
23273
|
+
dmEmpty: "这里只有你和 {name}。",
|
|
23274
|
+
roomUnread: "{count} 条新消息",
|
|
23275
|
+
roomWorking: "{name} 在干活",
|
|
23276
|
+
roomWorkingMany: "{count} 人在干活",
|
|
23277
|
+
showMembersList: "查看成员",
|
|
23278
|
+
drawerBoard: "看任务板",
|
|
23279
|
+
drawerDark: "深色模式",
|
|
22963
23280
|
dmOpen: "发私信",
|
|
22964
23281
|
dmOpenFailed: "打不开私聊:{message}",
|
|
23282
|
+
dmClose: "关闭私聊(记录保留,再点「发私信」可恢复)",
|
|
23283
|
+
dmCloseNamed: "关闭和 {name} 的私聊",
|
|
23284
|
+
dmCloseFailed: "关不掉私聊:{message}",
|
|
22965
23285
|
deliveryFull: "全屏",
|
|
22966
23286
|
deliveryRevise: "继续改",
|
|
22967
23287
|
deliveryAccept: "收下",
|
|
@@ -23111,6 +23431,10 @@ const en = {
|
|
|
23111
23431
|
progressNextReview: "Review #{id} {title} (handed back by {name})",
|
|
23112
23432
|
progressNextResume: "Resume #{id} {title} ({name}, paused)",
|
|
23113
23433
|
progressMore: ", {count} more",
|
|
23434
|
+
progressFold: "Fold progress",
|
|
23435
|
+
progressExpand: "Expand progress",
|
|
23436
|
+
progressFoldShort: "Fold",
|
|
23437
|
+
progressExpandShort: "Expand",
|
|
23114
23438
|
decideTray: "Waiting on you and permission requests",
|
|
23115
23439
|
trayAsks: "Waiting on you · {count}",
|
|
23116
23440
|
trayCollapse: "Collapse",
|
|
@@ -23125,8 +23449,9 @@ const en = {
|
|
|
23125
23449
|
askUndo: "Undo ({n}s)",
|
|
23126
23450
|
askApiPending: "Reply endpoint is being fixed: replies here cannot be delivered yet; @ them in the chat instead",
|
|
23127
23451
|
headLeadLoading: "Loading",
|
|
23128
|
-
leadPinned: "
|
|
23129
|
-
leadCard: "
|
|
23452
|
+
leadPinned: "Primary role",
|
|
23453
|
+
leadCard: "Primary role",
|
|
23454
|
+
leadCardHint: "Takes your messages, hands work to teammates, collects results",
|
|
23130
23455
|
activityPanel: "Activity",
|
|
23131
23456
|
activityNow: "Now",
|
|
23132
23457
|
activityThinking: "Thinking",
|
|
@@ -23182,7 +23507,7 @@ const en = {
|
|
|
23182
23507
|
taskReviewReason: "Reason for rework (required)",
|
|
23183
23508
|
taskReviewSubmit: "Submit rework",
|
|
23184
23509
|
lead: "Primary role",
|
|
23185
|
-
leadNone: "
|
|
23510
|
+
leadNone: "Not selected (use the default)",
|
|
23186
23511
|
durSeconds: "{n}s",
|
|
23187
23512
|
durMinutes: "{n} min",
|
|
23188
23513
|
durHours: "{h} h {m} min",
|
|
@@ -23211,7 +23536,9 @@ const en = {
|
|
|
23211
23536
|
workspaceNameFixed: "Workspace names are assigned by the system and cannot be changed.",
|
|
23212
23537
|
slashTitle: "Commands",
|
|
23213
23538
|
slashTitleLead: "Commands to {name}",
|
|
23214
|
-
slashTitleNoLead: "Commands ·
|
|
23539
|
+
slashTitleNoLead: "Commands · pick a primary role in channel settings to use these",
|
|
23540
|
+
slashTitleDmNoCmd: "Commands · {name} does not take these commands",
|
|
23541
|
+
slashDisabledHint: "No one takes this command",
|
|
23215
23542
|
slashHint: "↑↓ select · Enter run · Esc close",
|
|
23216
23543
|
slashNoLead: "The primary role is not a bothouse bot, so no one takes this command. Pick a primary role in channel settings, or @ a bot before the command.",
|
|
23217
23544
|
slashStop: "Stop the primary role's current turn (the session stays)",
|
|
@@ -23287,8 +23614,22 @@ const en = {
|
|
|
23287
23614
|
online: "Online",
|
|
23288
23615
|
close: "Close",
|
|
23289
23616
|
dmGroup: "Direct messages",
|
|
23617
|
+
dmNew: "New message",
|
|
23618
|
+
dmPickTitle: "Message whom",
|
|
23619
|
+
dmPickNone: "No member to message yet",
|
|
23620
|
+
dmPlaceholder: "Message {name}",
|
|
23621
|
+
dmEmpty: "Only you and {name} are here.",
|
|
23622
|
+
roomUnread: "{count} new messages",
|
|
23623
|
+
roomWorking: "{name} is working",
|
|
23624
|
+
roomWorkingMany: "{count} working",
|
|
23625
|
+
showMembersList: "Show members",
|
|
23626
|
+
drawerBoard: "Task board",
|
|
23627
|
+
drawerDark: "Dark mode",
|
|
23290
23628
|
dmOpen: "Message privately",
|
|
23291
23629
|
dmOpenFailed: "Could not open the private chat: {message}",
|
|
23630
|
+
dmClose: "Close this private chat (history is kept; Message privately reopens it)",
|
|
23631
|
+
dmCloseNamed: "Close the private chat with {name}",
|
|
23632
|
+
dmCloseFailed: "Could not close the private chat: {message}",
|
|
23292
23633
|
deliveryFull: "Full screen",
|
|
23293
23634
|
deliveryRevise: "Keep editing",
|
|
23294
23635
|
deliveryAccept: "Accept",
|
|
@@ -23440,6 +23781,7 @@ function apply(ctx) {
|
|
|
23440
23781
|
reviewTask: channels.actions.reviewTask,
|
|
23441
23782
|
dispatchTask: channels.actions.dispatchTask,
|
|
23442
23783
|
openDm: channels.actions.openDm,
|
|
23784
|
+
closeDm: channels.actions.closeDm,
|
|
23443
23785
|
retrySend: channels.actions.retrySend,
|
|
23444
23786
|
dismissSend: channels.actions.dismissSend,
|
|
23445
23787
|
loadOlder: channels.actions.loadOlder,
|
|
@@ -23496,6 +23838,18 @@ function apply(ctx) {
|
|
|
23496
23838
|
disposePanel?.();
|
|
23497
23839
|
};
|
|
23498
23840
|
});
|
|
23841
|
+
if (typeof ctx.inject === "function") ctx.inject(["theme"], (themed) => {
|
|
23842
|
+
const theme = Reflect.get(themed, "theme");
|
|
23843
|
+
if (theme === void 0) return;
|
|
23844
|
+
const on = Reflect.get(themed, "on");
|
|
23845
|
+
themed.effect(() => bindHostTheme({
|
|
23846
|
+
scheme: () => theme.getTheme().active.colorScheme,
|
|
23847
|
+
set: (next) => {
|
|
23848
|
+
theme.setTheme(next);
|
|
23849
|
+
},
|
|
23850
|
+
subscribe: (fn) => on.call(themed, "theme/change", fn)
|
|
23851
|
+
}), "client-ui-discord: host theme");
|
|
23852
|
+
});
|
|
23499
23853
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
23500
23854
|
name: "sidebar.panellist",
|
|
23501
23855
|
id: PANEL_ID,
|