@medipha/chat 1.0.14
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/README.md +103 -0
- package/dist/api/client.d.ts +5 -0
- package/dist/features/composer/attachment-file-helpers.d.ts +22 -0
- package/dist/features/composer/attachments/attachment-buttons.d.ts +8 -0
- package/dist/features/composer/conversation-composer.d.ts +20 -0
- package/dist/features/composer/editor/font-size-extension.d.ts +18 -0
- package/dist/features/composer/editor/mention-suggestion-list.d.ts +15 -0
- package/dist/features/composer/editor/paste-text-style.d.ts +5 -0
- package/dist/features/composer/emoji/emoji-picker-button.d.ts +9 -0
- package/dist/features/composer/emoji/emoji-shortcode-extension.d.ts +9 -0
- package/dist/features/composer/emoji/emoji-shortcodes.d.ts +2 -0
- package/dist/features/composer/format-bar/format-bar.d.ts +14 -0
- package/dist/features/composer/more-menu/more-menu.d.ts +4 -0
- package/dist/features/composer/pending-attachment.d.ts +10 -0
- package/dist/features/composer/reply/composer-reply-banner.d.ts +11 -0
- package/dist/features/composer/reply/use-reply-target.d.ts +12 -0
- package/dist/features/composer/stickers.d.ts +6 -0
- package/dist/features/composer/toolbar/composer-toolbar.d.ts +19 -0
- package/dist/features/composer/typing/use-typing-notifier.d.ts +11 -0
- package/dist/features/composer/use-attachment-upload.d.ts +4 -0
- package/dist/features/composer/use-pending-attachments.d.ts +16 -0
- package/dist/features/create-conversation/create-conversation-panel.d.ts +9 -0
- package/dist/features/create-conversation/tabs/create-group-tab.d.ts +13 -0
- package/dist/features/create-conversation/tabs/direct-chat-tab.d.ts +12 -0
- package/dist/features/create-conversation/tabs/selected-members-modal.d.ts +11 -0
- package/dist/features/files/file-attachment.d.ts +24 -0
- package/dist/features/forward/forward-dialog.d.ts +11 -0
- package/dist/features/forward/use-forward-message.d.ts +21 -0
- package/dist/features/media-preview/media-preview-modal.d.ts +23 -0
- package/dist/features/media-preview/use-image-lightbox.d.ts +16 -0
- package/dist/features/message-list/bubble/message-actions/message-actions-menu.d.ts +27 -0
- package/dist/features/message-list/bubble/message-bubble.d.ts +53 -0
- package/dist/features/message-list/bubble/message-content-body.d.ts +12 -0
- package/dist/features/message-list/bubble/message-reactions.d.ts +18 -0
- package/dist/features/message-list/bubble/rich-message-content.d.ts +8 -0
- package/dist/features/message-list/overlays/message-details/message-details-modal.d.ts +16 -0
- package/dist/features/message-list/overlays/message-details/use-message-details-modal.d.ts +14 -0
- package/dist/features/message-list/overlays/message-menu/use-message-menu.d.ts +21 -0
- package/dist/features/message-list/overlays/reaction/reaction-modal.d.ts +22 -0
- package/dist/features/message-list/overlays/reaction/use-reaction-modal.d.ts +23 -0
- package/dist/features/message-list/overlays/reaction/use-reaction-picker.d.ts +8 -0
- package/dist/features/message-list/overlays/system-members/system-members-modal.d.ts +22 -0
- package/dist/features/message-list/overlays/system-members/use-system-members-modal.d.ts +18 -0
- package/dist/features/message-list/use-message-removal.d.ts +12 -0
- package/dist/features/message-list/use-message-timeline-scroll.d.ts +25 -0
- package/dist/features/message-window/use-message-window.d.ts +46 -0
- package/dist/features/pinned-messages/pinned-messages-bar.d.ts +18 -0
- package/dist/features/pinned-messages/use-pinned-messages.d.ts +21 -0
- package/dist/features/typing/use-typing-indicator.d.ts +12 -0
- package/dist/index.cjs +278 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +66322 -0
- package/dist/module/chat-module.d.ts +3 -0
- package/dist/module/chat-module.types.d.ts +11 -0
- package/dist/module/chat-routes.d.ts +4 -0
- package/dist/module/chat-runtime-context.d.ts +5 -0
- package/dist/pages/Setting/archive/archive-attachment-preview.d.ts +13 -0
- package/dist/pages/Setting/archive/archive-file-list.d.ts +15 -0
- package/dist/pages/Setting/archive/archive-helpers.d.ts +37 -0
- package/dist/pages/Setting/archive/archive-media-grid.d.ts +14 -0
- package/dist/pages/Setting/archive/archive-view.d.ts +19 -0
- package/dist/pages/Setting/archive/hooks/use-conversation-archive.d.ts +22 -0
- package/dist/pages/Setting/conversation-settings-panel.d.ts +20 -0
- package/dist/pages/Setting/hooks/use-conversation-settings.d.ts +41 -0
- package/dist/pages/Setting/hooks/use-search-panel.d.ts +7 -0
- package/dist/pages/Setting/index.d.ts +39 -0
- package/dist/pages/Setting/members/add-member-modal.d.ts +11 -0
- package/dist/pages/Setting/members/group-members-modal.d.ts +21 -0
- package/dist/pages/Setting/members/hooks/use-rename-group-dialog.d.ts +15 -0
- package/dist/pages/Setting/members/member-selection-footer.d.ts +12 -0
- package/dist/pages/Setting/members/members-list-modal.d.ts +29 -0
- package/dist/pages/Setting/members/settings-modal.d.ts +36 -0
- package/dist/pages/Setting/members/use-member-selection.d.ts +18 -0
- package/dist/pages/Setting/search-panel.d.ts +13 -0
- package/dist/pages/conversation/conversation-detail/conversation-detail.d.ts +92 -0
- package/dist/pages/conversation/conversation-footer/conversation-footer.d.ts +42 -0
- package/dist/pages/conversation/conversation-header/conversation-header.d.ts +27 -0
- package/dist/pages/conversation/hooks/use-current-membership.d.ts +14 -0
- package/dist/pages/conversation/index.d.ts +28 -0
- package/dist/pages/conversations/empty-state/conversation-empty-state.d.ts +3 -0
- package/dist/pages/conversations/index.d.ts +4 -0
- package/dist/pages/sidebar/hooks/use-conversations.d.ts +17 -0
- package/dist/pages/sidebar/index.d.ts +4 -0
- package/dist/pages/sidebar/sidbar-conversation-list/sidbar-conversation-list.d.ts +13 -0
- package/dist/pages/sidebar/sidebar-filter/sidebar-filter.d.ts +13 -0
- package/dist/pages/sidebar/sidebar-header-infor/sidebar-header-infor.d.ts +4 -0
- package/dist/shared/components/banner-carousel.d.ts +9 -0
- package/dist/shared/components/conversation-avatar.d.ts +19 -0
- package/dist/shared/components/date-range-filter-pill.d.ts +17 -0
- package/dist/shared/components/download-action.d.ts +11 -0
- package/dist/shared/components/filter-pill.d.ts +15 -0
- package/dist/shared/components/image-not-available.d.ts +12 -0
- package/dist/shared/components/image-with-fallback.d.ts +13 -0
- package/dist/shared/components/load-more-sentinel.d.ts +15 -0
- package/dist/shared/components/quote-icon.d.ts +5 -0
- package/dist/shared/components/search-empty-state.d.ts +8 -0
- package/dist/shared/components/shared-icon.d.ts +5 -0
- package/dist/shared/components/user-avatar.d.ts +12 -0
- package/dist/shared/components/user-profile-modal.d.ts +13 -0
- package/dist/shared/components/verified-badge.d.ts +5 -0
- package/dist/shared/helper/dayjs-date-picker.d.ts +14 -0
- package/dist/shared/hooks/use-directory-filter.d.ts +13 -0
- package/dist/shared/hooks/use-user-profile-modal.d.ts +9 -0
- package/dist/socket/chatSocket.d.ts +6 -0
- package/dist/store/authStore.d.ts +34 -0
- package/dist/store/connectionStore.d.ts +8 -0
- package/dist/store/conversationsStore.d.ts +38 -0
- package/dist/store/forwardStore.d.ts +14 -0
- package/dist/store/pinnedMessagesStore.d.ts +16 -0
- package/dist/store/presenceStore.d.ts +11 -0
- package/dist/store/verifiedPermissionsStore.d.ts +20 -0
- package/dist/styles.css +2 -0
- package/dist/utils/chat-display.d.ts +44 -0
- package/dist/utils/chat-member-resolvers.d.ts +9 -0
- package/dist/utils/chat-toast.d.ts +18 -0
- package/dist/utils/chat.d.ts +282 -0
- package/dist/utils/token.d.ts +0 -0
- package/dist/utils/work-status.d.ts +15 -0
- package/package.json +96 -0
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.med-chat-root .conversation-placeholder{height:100%;color:var(--chat-text-muted);flex-direction:column;justify-content:center;align-items:center;display:flex}.med-chat-root .conversation-placeholder-title{color:var(--chat-text-heading);text-align:center;margin:0 0 8px;font-size:22px;font-weight:400}.med-chat-root .conversation-placeholder-title strong{font-weight:700}.med-chat-root .conversation-placeholder-title-strong{color:var(--chat-success)!important}.med-chat-root .conversation-placeholder-subtitle{max-width:380px;color:var(--chat-text-muted);text-align:center;margin:0 0 50px;font-size:14px}.med-chat-root .conversation-placeholder-banner{width:460px;max-width:85%;margin-bottom:8px}.med-chat-root .conversation-placeholder-footer{margin:12px 0 0}.med-chat-root .media-preview-backdrop{z-index:1100;background:#0f172ad9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.med-chat-root .media-preview-close{z-index:1;color:var(--chat-surface);background:0 0;border:0;font-size:20px;position:absolute;top:16px;right:16px}.med-chat-root .media-preview-body{flex-direction:column;align-items:center;gap:16px;max-width:92vw;max-height:92vh;display:flex}.med-chat-root .media-preview-stage{justify-content:center;align-items:center;width:78vw;height:66vh;display:flex;position:relative;overflow:hidden}.med-chat-root .media-preview-image{object-fit:contain;cursor:zoom-in;max-width:100%;max-height:100%;transition:transform 80ms ease-out}.med-chat-root .media-preview-nav{width:44px;height:44px;color:var(--chat-surface);background:#0f172ab3;border:0;border-radius:50%;place-items:center;font-size:20px;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.med-chat-root .media-preview-nav:hover{background:#0f172ae6}.med-chat-root .media-preview-prev{left:24px}.med-chat-root .media-preview-next{right:24px}.med-chat-root .media-preview-counter{color:var(--chat-surface);background:#ffffff26;border-radius:999px;padding:4px 10px;font-size:12px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.med-chat-root .media-preview-rail{background:#0f172a8c;border-radius:12px;align-items:center;gap:6px;width:100%;max-width:84vw;padding:0 6px;display:flex}.med-chat-root .media-preview-rail-scroll{width:28px;height:44px;color:var(--chat-surface);background:0 0;border:0;border-radius:6px;flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.med-chat-root .media-preview-rail-scroll:hover{background:#ffffff26}.med-chat-root .media-preview-rail-track{scrollbar-width:none;flex:auto;gap:12px;min-width:0;padding:10px 2px;display:flex;overflow:auto hidden}.med-chat-root .media-preview-rail-track::-webkit-scrollbar{display:none}.med-chat-root .media-preview-rail-group{flex-direction:column;flex:none;align-items:flex-start;gap:4px;display:flex}.med-chat-root .media-preview-rail-date{color:#ffffffa6;white-space:nowrap;flex:none;font-size:11px}.med-chat-root .media-preview-rail-group-items{gap:6px;display:flex}.med-chat-root .media-preview-rail-divider{color:#ffffff40;flex:none;align-self:stretch;align-items:center;font-size:20px;display:flex}.med-chat-root .media-preview-rail-thumb{opacity:.6;border:2px solid #0000;border-radius:8px;flex:none;width:64px;height:64px;overflow:hidden}.med-chat-root .media-preview-rail-thumb img{object-fit:cover;width:100%;height:100%}.med-chat-root .media-preview-rail-thumb:hover{opacity:.85}.med-chat-root .media-preview-rail-thumb.is-active{opacity:1;border-color:var(--chat-primary)}@media (width<=768px){.med-chat-root .media-preview-body{width:100%;max-width:100vw;max-height:100vh}.med-chat-root .media-preview-stage{width:84vw;height:58vh}.med-chat-root .media-preview-rail{max-width:92vw}.med-chat-root .media-preview-nav{width:36px;height:36px;font-size:16px}.med-chat-root .media-preview-prev{left:6px}.med-chat-root .media-preview-next{right:6px}.med-chat-root .media-preview-rail-thumb{width:56px;height:56px}}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}@keyframes tab-panel-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes reaction-burst-fly{0%{transform:translate(-50%, -50%) rotate(var(--burst-angle)) translateX(0) rotate(calc(var(--burst-angle) * -1)) scale(1);opacity:1}to{transform:translate(-50%, -50%) rotate(var(--burst-angle)) translateX(60px) rotate(calc(var(--burst-angle) * -1)) scale(.4);opacity:0}}@keyframes message-image-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}@keyframes message-focus-flash{0%,30%{background:#2563eb24}to{background:#2563eb00}}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-pop-in{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:none}}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root .verified-badge{vertical-align:middle;flex:none;justify-content:center;align-items:center;width:21px;height:20px;margin-left:4px;display:inline-flex;position:relative;transform:translateY(-1px)}.med-chat-root .verified-badge:before,.med-chat-root .verified-badge:after{content:"";border-radius:30%;position:absolute;inset:0}.med-chat-root .verified-badge:after{transform:rotate(22.5deg)}.med-chat-root .verified-badge-check{z-index:1;width:100%;height:100%;position:relative}.med-chat-root .verified-badge--sm{width:21px;height:21px;margin-left:3px}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root .forward-source-preview{color:var(--chat-text-icon-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.med-chat-root .forward-note{border:1px solid var(--chat-border-soft);font:inherit;resize:none;border-radius:8px;padding:8px 12px;font-size:14px}.med-chat-root .forward-selected-count{color:var(--chat-text-icon-muted);font-size:13px}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root .pinned-bar{z-index:4;border-bottom:1px solid var(--chat-border-light);background:var(--chat-surface-subtle);position:absolute;top:0;left:0;right:0;box-shadow:0 2px 8px #0f172a14}.med-chat-root .pinned-bar-head{align-items:center;gap:6px;width:100%;padding:5px 12px;display:flex}.med-chat-root .pinned-bar-summary{cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;min-width:0;padding:0;display:flex}.med-chat-root .pinned-bar-icon{color:var(--chat-primary);flex:none;font-size:16px}.med-chat-root .pinned-bar-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.med-chat-root .pinned-bar-title{font-size:13px;font-weight:600}.med-chat-root .pinned-bar-preview{color:var(--chat-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.med-chat-root .pinned-bar-count{border:1px solid var(--chat-border-divider);background:var(--chat-surface);color:var(--chat-text-slate);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:flex}.med-chat-root .pinned-bar-count:hover{background:var(--chat-surface-hover)}.med-chat-root .pinned-dropdown-scrim{z-index:5;background:#0f172a59;position:absolute;inset:0}.med-chat-root .pinned-bar.is-expanded{border-bottom:none}.med-chat-root .pinned-bar.is-expanded .pinned-bar-head{visibility:hidden;height:0;padding:0;overflow:hidden}.med-chat-root .pinned-dropdown{z-index:6;background:var(--chat-surface);border-radius:0 0 12px 12px;position:absolute;top:0;left:0;right:0;overflow:hidden;box-shadow:0 16px 32px #0f172a38}.med-chat-root .pinned-dropdown-header{background:var(--chat-surface-subtle);border-bottom:1px solid var(--chat-border-light);justify-content:space-between;align-items:center;padding:8px 12px;font-size:13px;display:flex}.med-chat-root .pinned-dropdown-collapse{color:var(--chat-text-slate);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:12px;transition:background .15s;display:flex}.med-chat-root .pinned-dropdown-collapse:hover{background:var(--chat-surface-hover)}.med-chat-root .pinned-dropdown-list{max-height:320px;margin:0;padding:4px;list-style:none;overflow-y:auto}.med-chat-root .pinned-dropdown-item{border-radius:8px;align-items:center;gap:4px;transition:background .15s;display:flex}.med-chat-root .pinned-dropdown-item:hover{background:var(--chat-surface-subtle)}.med-chat-root .pinned-dropdown-item:not(:last-child){margin-bottom:2px}.med-chat-root .pinned-dropdown-jump{cursor:pointer;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:8px;min-width:0;padding:5px 6px;display:flex}.med-chat-root .pinned-dropdown-item-icon{background:var(--chat-primary-tint);width:26px;height:26px;color:var(--chat-primary);border-radius:50%;flex:none;place-items:center;font-size:13px;display:grid}.med-chat-root .pinned-dropdown-item-text{min-width:0;color:var(--chat-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.4;overflow:hidden}.med-chat-root .pinned-dropdown-unpin{width:26px;height:26px;color:var(--chat-text-placeholder);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:6px;flex:none;place-items:center;margin-right:2px;transition:opacity .15s,background .15s,color .15s;display:grid}.med-chat-root .pinned-dropdown-item:hover .pinned-dropdown-unpin{opacity:1}.med-chat-root .pinned-dropdown-unpin:hover{background:var(--chat-danger-tint-alt);color:var(--chat-danger)}.pinned-detail-modal .ant-modal-content{border-radius:12px;padding:0;overflow:hidden}.pinned-detail-modal .ant-modal-header{text-align:left;border-bottom:none;margin:0;padding:16px 44px 12px 20px}.pinned-detail-modal .ant-modal-title{font-size:16px;font-weight:700}.pinned-detail-modal .ant-modal-body{padding:0}.pinned-detail-modal .ant-modal-footer{border-top:1px solid var(--chat-border-light);justify-content:space-between;align-items:center;gap:8px;margin:0;padding:12px 16px;display:flex}.pinned-detail-panel{background:var(--chat-surface-panel);padding:14px 16px}.pinned-detail-sender{color:var(--chat-text-muted);text-align:center;margin:0 0 8px;font-size:13px}.pinned-detail-content{height:220px;color:var(--chat-text-strong);text-align:left;white-space:pre-wrap;word-break:break-word;margin:0;font-size:14px;line-height:1.5;overflow-y:auto}.pinned-detail-hint{color:var(--chat-text-placeholder);text-align:center;justify-content:center;align-items:center;gap:5px;margin:10px 0 0;font-size:12px;display:flex}.pinned-detail-copy{background:var(--chat-surface-panel);width:40px;height:40px;color:var(--chat-text-slate);cursor:pointer;border:none;border-radius:8px;flex:none;place-items:center;font-size:16px;display:grid}.pinned-detail-copy:hover{background:var(--chat-surface-hover)}.pinned-detail-close{background:var(--chat-surface-panel);color:var(--chat-text-strong);cursor:pointer;border:none;border-radius:8px;padding:8px 24px;font-weight:600}.pinned-detail-close:hover{background:var(--chat-surface-hover)}.med-chat-root .composer-reply-banner{border-left:3px solid var(--chat-primary-light);background:var(--chat-primary-tint);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.med-chat-root .composer-reply-banner-text{flex:1;min-width:0}.med-chat-root .composer-reply-banner-text strong,.med-chat-root .composer-reply-banner-text small{display:block}.med-chat-root .composer-reply-banner button{color:var(--chat-text-secondary);background:0 0;border:0}.med-chat-root .message-actions{opacity:0;gap:2px;transition:opacity .1s;display:flex;position:relative}.med-chat-root .message:hover .message-actions{opacity:1}.med-chat-root .message-action-button{background:var(--chat-surface-hover);width:28px;height:28px;color:var(--chat-text-secondary);border:0;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.med-chat-root .message-action-button:hover{background:var(--chat-border-divider)}.med-chat-root .message-options{position:relative}.med-chat-root .message-options-menu{z-index:100;background:var(--chat-surface);border-radius:10px;flex-direction:column;width:220px;max-height:280px;padding:6px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #0f172a26}.med-chat-root .message-options-menu button{color:var(--chat-text-heading);text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.med-chat-root .message-options-menu button:hover{background:var(--chat-surface-hover)}.med-chat-root .message-options-menu svg{color:var(--chat-primary);font-size:15px}.med-chat-root .message-options-menu-more{justify-content:space-between}.med-chat-root .message-options-menu-more svg{color:var(--chat-text-secondary);font-size:11px}.med-chat-root .message-options-menu-submenu-item{padding-left:24px}.med-chat-root .message-options-menu-danger,.med-chat-root .message-options-menu-danger svg{color:var(--chat-danger)}.med-chat-root .file-card{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px 10px;display:grid}.med-chat-root .file-card-conversation{border-radius:10px;max-width:420px}.med-chat-root .file-card-info{gap:2px;min-width:0;display:grid}.med-chat-root .file-card-info strong{color:var(--chat-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.med-chat-root .file-card-info small{color:var(--chat-text-muted);font-size:12px}.med-chat-root .file-card-actions{gap:2px;display:flex}.med-chat-root .file-card-actions .archive-file-action{color:var(--chat-text-icon-muted)}.med-chat-root .file-card--clickable{cursor:pointer}.med-chat-root .file-card--inline{background:var(--chat-surface);border:1px solid #0f172a14;border-radius:10px;max-width:420px;padding:10px;transition:transform .15s,box-shadow .15s}.med-chat-root .file-card--inline:hover{transform:scale(1.02);box-shadow:0 6px 16px #0f172a1a}.med-chat-root .file-card-meta{justify-content:space-between;align-items:center;gap:10px;height:20px;display:flex}.med-chat-root .file-card-meta small{min-width:0;color:var(--chat-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.med-chat-root .file-card-actions{flex:none}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root .chat-scroller{scrollbar-width:thin;scrollbar-color:transparent transparent}.med-chat-root .chat-scroller:hover,.med-chat-root .chat-scroller.is-scrolling{scrollbar-color:#64748b8c transparent}.med-chat-root .chat-scroller::-webkit-scrollbar{width:8px}.med-chat-root .chat-scroller::-webkit-scrollbar-thumb{background:0 0;border-radius:4px;transition:background .3s}.med-chat-root .chat-scroller:hover::-webkit-scrollbar-thumb{background:#64748b8c}.med-chat-root .chat-scroller.is-scrolling::-webkit-scrollbar-thumb{background:#64748b8c}.med-chat-root .message-timeline{flex:auto;min-height:0;position:relative;overflow:hidden;container-type:inline-size}.med-chat-root .message-list-enter{opacity:1;height:100%;transition:opacity .18s ease-out}.med-chat-root .message-list-enter--pending{opacity:0;pointer-events:none}.med-chat-root .conversation-loading-overlay{z-index:1;background:var(--chat-surface);place-items:center;margin:0;display:grid;position:absolute;inset:0}.med-chat-root .conversation-loading-animation{width:120px;height:120px}.med-chat-root .history-loader{z-index:2;background:var(--chat-surface);color:var(--chat-text-muted);border-radius:999px;margin:0;padding:6px 10px;font-size:12px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0f172a1f}.med-chat-root .history-loader.top{top:14px}.med-chat-root .history-loader.bottom{bottom:14px}.med-chat-root .composer-attachments-preview{border-top:1px solid var(--chat-border);background:var(--chat-surface);flex-wrap:wrap;flex:none;gap:8px;padding:10px 16px;display:flex}.med-chat-root .composer-attachment-thumb{border:1px solid var(--chat-border-bubble);background:var(--chat-surface-subtle);border-radius:8px;width:64px;height:64px;position:relative;overflow:hidden}.med-chat-root .composer-attachment-thumb img{object-fit:cover;width:100%;height:100%}.med-chat-root .composer-attachment-file{flex-direction:column;justify-content:center;align-items:center;gap:4px;height:100%;padding:5px 4px;display:flex;overflow:hidden}.med-chat-root .composer-attachment-file .archive-file-icon{width:30px;height:30px;font-size:13px}.med-chat-root .composer-attachment-file-name{max-width:100%;color:var(--chat-text-secondary);text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:9px;line-height:1.2;overflow:hidden}.med-chat-root .composer-attachment-remove{width:18px;height:18px;color:var(--chat-surface);cursor:pointer;background:#0f172aa6;border:0;border-radius:50%;place-items:center;padding:0;font-size:11px;line-height:1;display:grid;position:absolute;top:2px;right:2px}.med-chat-root .composer-attachment-remove:hover{background:#dc2626e6}.med-chat-root .composer-attachment-remove .anticon{line-height:0;display:flex}.med-chat-root .composer-attachment-remove svg{display:block}.med-chat-root .message-timeline-day-pill{z-index:3;color:var(--chat-surface);pointer-events:none;background:#0f172ac7;border-radius:999px;margin:0;padding:6px 14px;font-size:12px;font-weight:600;position:absolute;top:14px;left:50%;transform:translate(-50%)}.med-chat-root .message-timeline-day-pill--below-loader{top:62px}.med-chat-root .conversation-empty-state{cursor:pointer;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.med-chat-root .conversation-empty-state-animation{width:360px;height:360px}.med-chat-root .conversation-empty-state .conversation-empty{padding-top:0}.med-chat-root .typing-indicator{z-index:2;max-width:calc(100% - 90px);color:var(--chat-text-muted);text-overflow:ellipsis;white-space:nowrap;pointer-events:none;background:#ebecf0;border-radius:999px;margin:0;padding:2px 10px;font-size:12px;font-style:italic;position:absolute;bottom:8px;left:16px;overflow:hidden}.med-chat-root .new-messages-button{z-index:3;background:var(--chat-primary);color:var(--chat-surface);border:0;border-radius:999px;padding:6px 14px;position:absolute;bottom:16px;right:24px;box-shadow:0 6px 18px #2563eb59}.med-chat-root .scroll-to-bottom-button{z-index:3;border:1px solid var(--chat-border);background:var(--chat-surface);width:36px;height:36px;color:var(--chat-text-muted);border-radius:50%;place-items:center;font-size:16px;display:grid;position:absolute;bottom:16px;right:24px;box-shadow:0 6px 18px #0f172a1f}.med-chat-root .composer-popover-anchor{z-index:100;position:absolute;bottom:100%;left:16px}.med-chat-root .composer-inline-popover-anchor{z-index:100;margin-bottom:6px;position:absolute;bottom:100%;left:0}.med-chat-root .composer-popover{background:var(--chat-surface);border-radius:10px;margin-bottom:8px;overflow:hidden;box-shadow:0 8px 24px #0f172a26}.med-chat-root .composer-format-bar{border:1px solid var(--chat-border);background:var(--chat-surface-subtle);border-radius:8px;align-items:center;gap:4px;margin-bottom:8px;padding:6px 8px;display:flex}.med-chat-root .composer-format-bar button:not(.message-send-button){color:#4b5563;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;display:inline-flex}.med-chat-root .composer-format-bar-spacer{flex:1}.med-chat-root .composer-format-bar button.is-active{background:var(--chat-primary-soft);color:var(--chat-primary-strong)}.med-chat-root .composer-toolbar-item{display:inline-flex;position:relative}.med-chat-root .composer-font-size-icon{font-size:16px;font-weight:700;line-height:1}.med-chat-root .composer-format-bar-divider{background:var(--chat-border-soft);width:1px;height:18px;margin:0 2px}.med-chat-root .composer-color-grid{grid-template-columns:repeat(3,1fr);gap:8px;width:168px;padding:10px;display:grid}.med-chat-root .composer-color-swatch{cursor:pointer;border:1px solid #0f172a1a;border-radius:50%;width:40px;height:40px}.med-chat-root .composer-color-swatch:hover{transform:scale(1.08)}.med-chat-root .composer-font-size-list{flex-direction:column;gap:2px;width:140px;padding:6px;display:flex}.med-chat-root .composer-font-size-list button{color:var(--chat-text-strong);text-align:left;background:0 0;border:0;border-radius:6px;padding:8px 10px}.med-chat-root .composer-font-size-list button:hover{background:var(--chat-surface-hover)}.med-chat-root .composer-more-anchor{display:inline-flex;position:relative}.med-chat-root .composer-more-menu{z-index:100;background:var(--chat-surface);border-radius:10px;width:240px;padding:6px;display:grid;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 8px 24px #0f172a26}.med-chat-root .message-toolbar .composer-more-menu button{width:100%;height:auto;color:var(--chat-text-strong);text-align:left;white-space:normal;background:0 0;border:0;border-radius:8px;justify-content:flex-start;align-items:center;gap:10px;padding:9px 10px;font-size:14px;display:flex}.med-chat-root .composer-more-menu button:hover{background:var(--chat-surface-hover)}.med-chat-root .composer-more-menu-icon{font-size:16px}.med-chat-root .composer-more-menu-icon--task{color:var(--chat-primary)}.med-chat-root .composer-more-menu-help{color:var(--chat-text-faint);margin-left:auto;font-size:13px}.med-chat-root .composer-more-menu-divider{background:var(--chat-surface-hover-alt);height:1px;margin:4px 6px}.med-chat-root .conversation-upload-input{display:none}.med-chat-root .conversation-footer-dropzone{position:relative}.med-chat-root .conversation-footer-dropzone.is-dragging-over:after{content:"";border:2px dashed var(--chat-primary);background:var(--chat-primary-tint);opacity:.6;pointer-events:none;border-radius:12px;position:absolute;inset:4px}.med-chat-root,.med-chat-root *,.chat-modal-backdrop,.chat-modal-backdrop *{scrollbar-width:thin;scrollbar-color:var(--chat-border-scrollbar) transparent}.med-chat-root ::-webkit-scrollbar{width:6px;height:6px}.chat-modal-backdrop ::-webkit-scrollbar{width:6px;height:6px}.med-chat-root ::-webkit-scrollbar-track{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-track{background:0 0}.med-chat-root ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.chat-modal-backdrop ::-webkit-scrollbar-thumb{background-color:var(--chat-border-scrollbar);border-radius:999px}.med-chat-root ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.chat-modal-backdrop ::-webkit-scrollbar-thumb:hover{background-color:var(--chat-text-placeholder)}.med-chat-root ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:vertical:end:decrement{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:start:increment{width:0!important;height:0!important;display:none!important}.chat-modal-backdrop ::-webkit-scrollbar-button:horizontal:end:decrement{width:0!important;height:0!important;display:none!important}.med-chat-root ::-webkit-scrollbar-corner{background:0 0}.chat-modal-backdrop ::-webkit-scrollbar-corner{background:0 0}.med-chat-root .conversation-layout{width:100%;height:100vh;min-height:0;color:var(--chat-text-heading);background:var(--chat-surface);grid-template-columns:320px minmax(0,1fr) 0;transition:grid-template-columns .5s;display:grid;overflow-x:hidden}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:320px minmax(0,1fr) 400px}.med-chat-root .conversation-sidebar{border-right:1px solid var(--chat-border);flex-direction:column;height:100%;min-height:0;display:flex}.med-chat-root .conversation-current-user{box-sizing:border-box;border-bottom:1px solid var(--chat-surface-hover-alt);align-items:center;gap:10px;height:64px;padding:0 16px;display:flex}.med-chat-root .conversation-current-user-avatar{flex:none;width:40px;height:40px}.med-chat-root .conversation-current-user-avatar-trigger{cursor:pointer;background:0 0;border:0;padding:0;display:block}.med-chat-root .conversation-current-user-copy{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.med-chat-root .conversation-current-user-name{color:var(--chat-text-heading);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.med-chat-root .conversation-current-user-work{color:var(--chat-text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.med-chat-root .conversation-search-panel{border-bottom:1px solid var(--chat-surface-hover-alt);padding:16px}.med-chat-root .conversation-search-row,.med-chat-root .conversation-filter-row,.med-chat-root .conversation-header-person,.med-chat-root .conversation-header-actions,.med-chat-root .message-toolbar,.med-chat-root .message-input-row{align-items:center;display:flex}.med-chat-root .conversation-search-row{gap:10px}.med-chat-root .conversation-search-row .conversation-icon-button{color:var(--chat-success);font-size:18px}.med-chat-root .conversation-search-row .conversation-icon-button:hover{background:var(--chat-success-tint)}.med-chat-root .conversation-search-field{flex:1}.med-chat-root button{cursor:pointer}.med-chat-root .conversation-icon-button,.med-chat-root .conversation-header-actions button,.med-chat-root .message-toolbar button{width:32px;height:32px;color:var(--chat-text-dark-muted);background:0 0;border:0;border-radius:6px;font-size:18px}.med-chat-root .conversation-filter-row{gap:16px;margin-top:12px}.med-chat-root .conversation-filter{color:var(--chat-text-dim);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;padding:0 0 4px;display:inline-flex}.med-chat-root .conversation-filter .verified-badge{width:15px;height:15px;margin-left:5px}.med-chat-root .conversation-filter--active{border-color:var(--chat-success);color:var(--chat-success-text);font-weight:600}.med-chat-root .conversation-list{flex:1;min-height:0;overflow-y:auto}.med-chat-root .conversation-row{border-bottom:1px solid var(--chat-surface-tint);min-height:72px;color:inherit;align-items:center;gap:12px;padding:12px;text-decoration:none;display:flex;position:relative}.med-chat-root .conversation-row:hover,.med-chat-root .conversation-row--active{background:var(--chat-primary-tint)}.med-chat-root .conversation-avatar,.med-chat-root .conversation-current-user-avatar,.med-chat-root .message-avatar,.med-chat-root .message-reply-avatar,.med-chat-root .message-search-result-avatar{background:var(--chat-success-tint);color:var(--chat-success-text);object-fit:cover;border:1px solid var(--chat-border-soft);border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:700;display:grid}.med-chat-root .conversation-avatar{width:48px;height:48px}.med-chat-root .conversation-avatar--large{width:40px;height:40px}.med-chat-root .conversation-avatar--settings{width:72px;height:72px;font-size:16px}.med-chat-root .conversation-avatar--group{background:0 0;border:none;border-radius:50%;grid-template-columns:repeat(2,1fr);grid-auto-rows:1fr;place-items:stretch stretch;gap:1px;padding:2px;display:grid}.med-chat-root .conversation-avatar-cell{border:1px solid var(--chat-border-soft);min-width:0;min-height:0;color:var(--chat-success-text);border-radius:50%;place-items:center;font-size:9px;font-weight:700;display:grid;overflow:hidden}.med-chat-root .conversation-avatar-cell img{object-fit:cover;width:100%;height:100%}.med-chat-root .conversation-avatar-cell--count{color:var(--chat-text-slate);font-size:10px}.med-chat-root .conversation-avatar-wrap{flex:none;position:relative}.med-chat-root .conversation-avatar-wrap.is-clickable{cursor:pointer}.med-chat-root .conversation-row-copy{flex:1;align-items:center;gap:4px;min-width:0;display:grid}.med-chat-root .conversation-row-title{align-items:center;gap:4px;min-width:0;font-size:14px;display:flex}.med-chat-root .conversation-row-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.med-chat-root .conversation-row-title .verified-badge{flex:none;margin:0}.med-chat-root .conversation-row-preview,.med-chat-root .message-time{color:var(--chat-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.med-chat-root .conversation-row-preview{font-size:13px}.med-chat-root .conversation-row--unread .conversation-row-name,.med-chat-root .conversation-row--unread .conversation-row-preview{color:var(--chat-text-strong);font-weight:700}.med-chat-root .conversation-row-meta{flex-direction:column;flex:none;align-items:flex-end;gap:4px;display:flex}.med-chat-root .conversation-row-meta time{color:var(--chat-text-muted);white-space:nowrap;font-size:12px;font-weight:500}.med-chat-root .conversation-unread{background:var(--chat-danger-alt);min-width:18px;height:18px;color:var(--chat-surface);border-radius:999px;place-items:center;padding:0 5px;font-size:11px;font-weight:600;display:grid}.med-chat-root .conversation-row-badges{align-items:center;gap:4px;display:flex}.med-chat-root .conversation-pin-button{width:18px;height:18px;color:var(--chat-success-text);opacity:0;visibility:hidden;background:0 0;border:0;place-items:center;padding:0;font-size:16px;transition:opacity .15s;display:grid}.med-chat-root .conversation-row:hover .conversation-pin-button,.med-chat-root .conversation-pin-button.is-pinned{opacity:1;visibility:visible}.med-chat-root .conversation-main{background:#ebecf0;flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.med-chat-root .conversation-header{border-bottom:1px solid var(--chat-border);background:var(--chat-surface);flex:none;justify-content:space-between;align-items:center;height:64px;padding:0 16px;display:flex;overflow:hidden}.med-chat-root .conversation-header-person{flex:1;gap:12px;min-width:0}.med-chat-root .conversation-header-title-block{flex-direction:column;min-width:0;display:flex}.med-chat-root .conversation-header h1,.med-chat-root .conversation-header p,.med-chat-root .message-bubble p{margin:0}.med-chat-root .conversation-header h1{align-items:center;gap:4px;min-width:0;font-size:16px;display:flex}.med-chat-root .conversation-title-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.med-chat-root .conversation-header h1 .verified-badge{margin-left:0}.med-chat-root .conversation-title-wrap{align-items:center;gap:6px;min-width:0;display:flex}.med-chat-root .conversation-title-edit-button{background:var(--chat-surface-hover-alt2);width:22px;height:22px;color:var(--chat-text-secondary);cursor:pointer;opacity:0;border:0;border-radius:50%;place-items:center;padding:0;font-size:12px;transition:opacity .15s;display:grid}.med-chat-root .conversation-title-wrap.is-editable:hover .conversation-title-edit-button,.med-chat-root .conversation-title-wrap.is-editable:focus-within .conversation-title-edit-button{opacity:1}.med-chat-root .conversation-header p{color:var(--chat-text-neutral);font-size:12px}.med-chat-root .conversation-online-dot{background:var(--chat-success-alt);border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.med-chat-root .avatar-presence-dot{background:var(--chat-text-placeholder);border:2px solid var(--chat-surface);border-radius:50%;width:13px;height:13px;position:absolute;bottom:1px;right:1px;box-shadow:0 0 0 1px #0f172a0f}.med-chat-root .avatar-presence-dot.is-online{background:var(--chat-success-alt)}.med-chat-root .conversation-row-avatar{flex:none;display:inline-flex;position:relative}.med-chat-root .conversation-row-avatar .avatar-presence-dot{width:11px;height:11px}.med-chat-root .conversation-header-actions{gap:6px}.med-chat-root .message{align-items:flex-start;gap:12px;padding:8px 16px 16px;display:flex}.med-chat-root .message:has(.message-reaction-badge){z-index:1;position:relative}.med-chat-root .message-avatar,.med-chat-root .message-avatar-placeholder{flex:0 0 32px;width:32px;height:32px}.med-chat-root .message-avatar-button{cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;padding:0;display:block}.med-chat-root .message-content{min-width:0}.med-chat-root .message-sender{color:var(--chat-text-muted);font:inherit;text-align:left;background:0 0;border:0;margin:0 0 4px;padding:0;font-size:12px;font-weight:600;display:block}.med-chat-root .message-bubble{z-index:1;border:1px solid var(--chat-border-bubble);background:var(--chat-surface-subtle);overflow-wrap:anywhere;word-break:break-word;border-radius:10px;min-width:80px;max-width:50cqw;padding:12px;font-size:14px;position:relative;box-shadow:0 1px 3px #0f172a14}.med-chat-root .message-tombstone{color:#64748b;margin:0;font-style:italic}.med-chat-root .ProseMirror-trailingBreak{display:none}.med-chat-root .message-bubble a{color:var(--chat-primary);word-break:break-all;text-decoration:underline}.med-chat-root .rich-message-content .ProseMirror{white-space:pre-wrap;outline:none}.med-chat-root .rich-message-content .ProseMirror p{margin:0 0 8px}.med-chat-root .rich-message-content .ProseMirror p:last-child{margin-bottom:0}.med-chat-root .rich-message-content .ProseMirror ul,.med-chat-root .rich-message-content .ProseMirror ol{margin:4px 0;padding-left:20px}.med-chat-root .rich-message-content .ProseMirror li p{margin:0}.med-chat-root .message--mine .message-bubble a{color:var(--chat-primary)}.med-chat-root .message-bubble:has(.message-reaction-badge){padding-bottom:20px}.med-chat-root .message-time{margin:4px 0 0;display:block}.med-chat-root .message-reply-context{border:0;border-left:3px solid var(--chat-primary-light);background:var(--chat-surface);width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:6px;align-items:center;gap:8px;margin-bottom:8px;padding:6px 8px;display:flex;box-shadow:0 2px 6px #0f172a24}.med-chat-root .message--mine .message-reply-context{border-left-color:var(--chat-primary-light);background:var(--chat-surface)}.med-chat-root .message-reply-context:hover,.med-chat-root .message--mine .message-reply-context:hover{background:var(--chat-primary-pale)}.med-chat-root .message-reply-avatar{flex:none;width:24px;height:24px;font-size:10px}.med-chat-root .message-reply-text{min-width:0}.med-chat-root .message-reply-context strong,.med-chat-root .message-reply-context small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.med-chat-root .message-reply-context strong{font-size:12px}.med-chat-root .message-reply-context small{opacity:.8;font-size:12px}.med-chat-root .message-bubble-row{align-items:center;gap:6px;display:flex;position:relative}.med-chat-root .message--mine .message-bubble-row{flex-direction:row-reverse}.med-chat-root .reaction-picker-anchor{z-index:100;padding-bottom:2px;position:absolute;bottom:100%;left:0}.med-chat-root .message--mine .reaction-picker-anchor{left:auto;right:0}.med-chat-root .reaction-picker{background:var(--chat-surface);border-radius:999px;gap:2px;padding:6px;display:flex;box-shadow:0 8px 24px #0f172a26}.med-chat-root .reaction-picker button{background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:18px;line-height:1;transition:transform .18s cubic-bezier(.34,1.56,.64,1),background-color .15s;display:flex}.med-chat-root .reaction-picker button:hover{background:var(--chat-surface-hover);transform:scale(1.4)translateY(-6px)}.med-chat-root .reaction-picker-remove{border-left:1px solid var(--chat-border-divider);color:var(--chat-text-placeholder);margin-left:4px;padding-left:6px;font-size:14px}.med-chat-root .reaction-picker-remove:hover{color:var(--chat-danger-alt)}.med-chat-root .reaction-modal{width:460px;overflow-x:hidden}.med-chat-root .reaction-modal-body{flex-direction:column;gap:0;min-height:0;margin:0 -20px -20px;display:flex}.med-chat-root .reaction-modal-tabs{border-bottom:1px solid var(--chat-surface-hover-alt);background:var(--chat-surface-subtle);overscroll-behavior-x:contain;scrollbar-width:none;flex:none;gap:4px;padding:6px 12px 0;display:flex;overflow-x:auto}.med-chat-root .reaction-modal-tabs::-webkit-scrollbar{display:none}.med-chat-root .reaction-modal-tabs button{color:var(--chat-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:8px 8px 0 0;flex:none;align-items:center;gap:6px;padding:8px 12px 7px;font-size:13px;line-height:1;display:flex}.med-chat-root .reaction-modal-tabs button>span:first-child{font-size:15px}.med-chat-root .reaction-modal-tabs button>span:last-child{font-variant-numeric:tabular-nums}.med-chat-root .reaction-modal-tabs button:hover{background:var(--chat-surface-hover-alt2);color:var(--chat-text-strong)}.med-chat-root .reaction-modal-tabs button.active{border-bottom-color:var(--chat-success-text);background:var(--chat-surface);color:var(--chat-success-text);font-weight:600}.med-chat-root .reaction-modal-list{flex:1;gap:2px;max-height:320px;padding:12px;animation:.2s both tab-panel-in;display:grid;overflow-y:auto}.med-chat-root .reaction-modal-row-count{color:var(--chat-text-secondary);font-variant-numeric:tabular-nums;font-size:14px}.med-chat-root .reaction-modal-state{color:var(--chat-text-secondary);text-align:center;margin:0;padding:12px 8px;font-size:14px}.med-chat-root .reaction-modal-error{color:var(--chat-danger);justify-items:center;gap:8px;display:grid}.med-chat-root .reaction-modal-error button,.med-chat-root .reaction-modal-load-more{background:var(--chat-surface-hover-alt2);color:#334155;cursor:pointer;border:0;border-radius:6px;padding:7px 10px;font-size:13px}.med-chat-root .reaction-modal-load-more{justify-self:center}.med-chat-root .reaction-modal-load-more:disabled{cursor:wait;opacity:.65}.med-chat-root .system-members-modal{padding:28px 28px 32px}.med-chat-root .system-members-modal-title:first-letter{text-transform:uppercase}.med-chat-root .system-members-modal .reaction-modal-body{margin:0}.med-chat-root .system-members-modal .reaction-modal-list{max-height:328px;padding:0}.med-chat-root .message-system-member-count{color:var(--chat-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:none}.med-chat-root .message-reaction-anchor{z-index:5;align-items:center;gap:4px;display:flex;position:absolute;bottom:-10px;right:-6px}.med-chat-root .message-reaction-badge{border:1px solid var(--chat-border-bubble);background:var(--chat-surface-subtle);cursor:pointer;border-radius:999px;align-items:center;gap:4px;height:22px;padding:0 8px 0 4px;display:inline-flex;box-shadow:0 1px 3px #0f172a1f}.med-chat-root .message-reaction-badge:hover{background:var(--chat-surface-hover)}.med-chat-root .message-reaction-badge-icons{align-items:center;display:inline-flex}.med-chat-root .message-reaction-badge-icon{background:var(--chat-surface);width:16px;height:16px;box-shadow:0 0 0 1.5px var(--chat-surface-subtle);border-radius:50%;justify-content:center;align-items:center;font-size:11px;line-height:1;display:inline-flex}.med-chat-root .message-reaction-badge-icon+.message-reaction-badge-icon{margin-left:-6px}.med-chat-root .message-reaction-badge-count{color:var(--chat-text-secondary);font-variant-numeric:tabular-nums;font-size:12px}.med-chat-root .message-reaction-picker-control{position:relative}.reaction-burst-viewport{z-index:2000;pointer-events:none;position:fixed;inset:0;overflow:hidden}.reaction-burst{position:absolute}.reaction-burst-particle{font-size:14px;line-height:1;animation:.65s ease-out forwards reaction-burst-fly;position:absolute;top:0;left:0}.med-chat-root .message-reaction-trigger{border:1px solid var(--chat-border-bubble);background:var(--chat-surface);width:22px;height:22px;color:var(--chat-text-secondary);opacity:0;border-radius:50%;justify-content:center;align-items:center;transition:opacity .1s;display:inline-flex;box-shadow:0 1px 3px #0f172a1f}.med-chat-root .message:hover .message-reaction-trigger{opacity:1}.med-chat-root .message-reaction-trigger:hover{background:var(--chat-surface-hover)}.med-chat-root .message-image-button{aspect-ratio:4/3;cursor:zoom-in;background:0 0;border:0;border-radius:8px;width:260px;padding:0;display:block;overflow:hidden}.med-chat-root .message-image-button.is-loading{display:grid}.med-chat-root .message-image-button.is-loading,.med-chat-root .message-image-grid-item.is-loading{background:linear-gradient(100deg, var(--chat-surface-hover) 30%, var(--chat-surface-hover-alt) 50%, var(--chat-surface-hover) 70%);background-size:200% 100%;animation:1.4s ease-in-out infinite message-image-shimmer}.med-chat-root .message-image-button .message-image,.med-chat-root .message-image-grid-item img{opacity:1;transition:opacity .25s}.med-chat-root .message-image-button.is-loading .message-image,.med-chat-root .message-image-grid-item.is-loading img{opacity:0}.med-chat-root .message-image-grid{border-radius:8px;gap:3px;width:260px;display:grid;overflow:hidden;box-shadow:0 2px 8px #0f172a29}.med-chat-root .message-image-grid--1{grid-template-columns:1fr}.med-chat-root .message-image-grid--2,.med-chat-root .message-image-grid--4{grid-template-columns:repeat(2,1fr)}.med-chat-root .message-image-grid--3{grid-template-columns:repeat(3,1fr)}.med-chat-root .message-image-grid-item{aspect-ratio:1;background:var(--chat-border);cursor:zoom-in;border:0;padding:0}.med-chat-root .message-image-grid-item img{object-fit:cover;width:100%;height:100%}.med-chat-root .message-document-list{gap:4px;display:grid}.med-chat-root .message-date{justify-content:center;padding:16px;display:flex}.med-chat-root .message-date span{border:1px solid var(--chat-border-bubble);background:var(--chat-surface);color:var(--chat-text-secondary);border-radius:999px;padding:6px 18px;font-size:12px;box-shadow:0 1px 3px #0f172a14}.med-chat-root .message-date-icon{color:var(--chat-text-muted);vertical-align:-1px;margin-right:4px}.med-chat-root .message-date-info span{box-shadow:none;font-size:inherit;background:0 0;border:0;border-radius:0;padding:0}.med-chat-root .message-date-info .message-mention{color:var(--chat-primary-strong);font-weight:600}.med-chat-root .message-date-info .message-mention--user{cursor:pointer}.med-chat-root .message-date-pin{border:1px solid var(--chat-border-bubble);background:var(--chat-surface);max-width:min(420px,100%);font:inherit;border-radius:999px;align-items:center;gap:6px;padding:6px 18px;display:flex;box-shadow:0 1px 3px #0f172a14}.med-chat-root .message-date-pin .message-date-pin-icon,.med-chat-root .message-date-pin .message-date-pin-text,.med-chat-root .message-date-pin .message-date-pin-view{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0;font-size:12px}.med-chat-root .message-date-pin .message-date-pin-icon{color:var(--chat-warning);flex:none}.med-chat-root .message-date-pin .message-date-pin-text{min-width:0;color:var(--chat-text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.med-chat-root .message-date-pin .message-date-pin-text span{box-shadow:none;font-size:inherit;background:0 0;border:0;border-radius:0;padding:0}.med-chat-root .message-date-pin .message-date-pin-text .message-mention{color:var(--chat-primary-strong);font-weight:600}.med-chat-root .message-date-pin .message-date-pin-text .message-mention--user{cursor:pointer}.med-chat-root .message-date-pin .message-date-pin-view{color:var(--chat-primary);font-weight:600;font:inherit;cursor:pointer;flex:none}.med-chat-root .message-day-divider{justify-content:center;padding:12px 0;display:flex}.med-chat-root .message-day-divider span{background:var(--chat-primary-pale-alt);color:var(--chat-text-slate-alt);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:600}.med-chat-root .message-composer{border-top:1px solid var(--chat-border);background:var(--chat-surface);flex:none;position:relative}.med-chat-root .message-toolbar{gap:2px;margin-bottom:2px;padding-top:5px;padding-bottom:5px;padding-left:0}.med-chat-root .message-toolbar button{width:28px;height:28px;font-size:17px}.med-chat-root .conversation-icon-button,.med-chat-root .conversation-header-actions button,.med-chat-root .message-toolbar button,.med-chat-root .message-send-button{justify-content:center;align-items:center;display:inline-flex}.med-chat-root .message-toolbar button.is-active{color:var(--chat-primary-strong)}.med-chat-root .message-input-row{border:1px solid var(--chat-border-soft);align-items:center;gap:6px;min-height:45px;padding:2px 4px 2px 10px}.med-chat-root .message-editor{flex-direction:column;flex:1;justify-content:center;align-self:stretch;min-width:0;display:flex}.med-chat-root .message-editor .ProseMirror{outline:0;min-height:24px;max-height:200px;font-size:13px;overflow:hidden auto}.med-chat-root .message-editor.is-expanded{justify-content:flex-start}.med-chat-root .message-editor.is-expanded .ProseMirror{min-height:62vh;max-height:66vh}.med-chat-root .message-editor .ProseMirror p{overflow-wrap:anywhere;word-break:break-word;margin:0}.med-chat-root .message-editor .ProseMirror p.is-editor-empty:first-child:before{color:var(--chat-text-placeholder);content:attr(data-placeholder);float:left;pointer-events:none;height:0}.med-chat-root .message-editor .mention{color:var(--chat-primary-strong);font-weight:600}.med-chat-root .message-send-button{background:var(--chat-success);width:36px;height:36px;color:var(--chat-surface);border:0;border-radius:7px}.mention-menu{z-index:1200;border:1px solid var(--chat-border-soft);background:var(--chat-surface);border-radius:10px;min-width:240px;max-height:300px;display:grid;position:relative;overflow-y:auto;transform:translateZ(0);box-shadow:0 8px 24px #0f172a26}.mention-menu__hint{border-bottom:1px solid var(--chat-surface-hover);background:var(--chat-warning-tint-alt);color:var(--chat-text-gold);padding:6px 12px;font-size:11px;position:sticky;top:0}.mention-menu__item{background:var(--chat-surface);cursor:pointer;text-align:left;border:0;align-items:center;gap:10px;padding:7px 12px;display:flex}.mention-menu__item:hover{background:var(--chat-surface-hover)}.mention-menu__item--selected{background:var(--chat-primary-tint)}.mention-menu__avatar{background:var(--chat-primary-soft);width:30px;height:30px;color:var(--chat-primary-strong);object-fit:cover;border-radius:50%;flex:none;place-items:center;font-size:12px;font-weight:600;display:grid}.mention-menu__avatar--all{background:var(--chat-primary);color:var(--chat-surface);font-size:15px}.mention-menu__text{min-width:0;color:var(--chat-text-strong);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:14px;display:flex;overflow:hidden}.mention-menu__all-badge{color:var(--chat-primary);font-weight:600}.med-chat-root button.conversation-message-list-button{display:none}.med-chat-root button.conversation-header-back{width:38px;height:38px;color:var(--chat-text-body);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;margin-left:-6px;margin-right:2px;padding:0;font-size:20px;line-height:1;transition:background .15s,transform .1s;display:none}.med-chat-root button.conversation-header-back:hover{background:var(--chat-surface-hover-alt2)}.med-chat-root button.conversation-header-back:active{background:var(--chat-border-divider);transform:scale(.92)}.med-chat-root button.conversation-header-back .anticon{font-size:20px}.med-chat-root button.conversation-member-count-button{color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;align-self:flex-start;padding:0}.med-chat-root button.conversation-member-count-button:hover{color:var(--chat-success-text);text-decoration:none}.med-chat-root button.conversation-header-search-toggle,.med-chat-root button.conversation-settings-toggle{color:var(--chat-success-text);justify-content:center;align-items:center;display:inline-flex}.med-chat-root .conversation-icon-button--active{background:var(--chat-primary-tint-alt);color:var(--chat-primary-strong)}.med-chat-root .conversation-empty{color:var(--chat-text-muted);text-align:center;padding:24px 16px;font-size:13px}.med-chat-root .conversation-error{color:var(--chat-text-strong);padding:8px 16px;font-size:13px}.med-chat-root .conversation-list>.conversation-error,.med-chat-root .conversation-list>.conversation-empty{text-align:center}.med-chat-root .banner-carousel{position:relative}.med-chat-root .banner-carousel-arrow{z-index:1;width:32px;height:32px;color:var(--chat-text-faint);background:0 0;border:0;border-radius:50%;place-items:center;font-size:16px;transition:color .15s,background-color .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.med-chat-root .banner-carousel-arrow:hover{background:var(--chat-surface-hover);color:var(--chat-text-muted)}.med-chat-root .banner-carousel-arrow--prev{left:-40px}.med-chat-root .banner-carousel-arrow--next{right:-40px}.med-chat-root .banner-carousel-viewport{aspect-ratio:3/2;border-radius:16px;width:100%;overflow:hidden;box-shadow:0 12px 32px #0f172a1f}.med-chat-root .banner-carousel-track{height:100%;transition:transform .5s;display:flex}.med-chat-root .banner-carousel-slide{object-fit:cover;flex:none;width:100%;height:100%}.med-chat-root .banner-carousel-dots{justify-content:center;gap:6px;margin-top:12px;display:flex}.med-chat-root .banner-carousel-dot{background:var(--chat-border-scrollbar);border:0;border-radius:50%;width:7px;height:7px;padding:0;transition:background-color .2s,transform .2s}.med-chat-root .banner-carousel-dot.is-active{background:var(--chat-primary);transform:scale(1.3)}.med-chat-root .conversation-header-actions button.is-active{background:var(--chat-success-tint);color:var(--chat-success-text)}.med-chat-root .message--mine{flex-direction:row-reverse}.med-chat-root .message--mine .message-content{flex-direction:column;align-items:flex-end;display:flex}.med-chat-root .message--mine .message-bubble{border-color:var(--chat-primary-soft-alt);background:var(--chat-primary-soft);color:inherit}.med-chat-root .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-button){box-shadow:none;background:0 0;border-color:#0000;padding:0}.med-chat-root .message--mine .message-bubble:has(>.message-image-grid){box-shadow:none;background:0 0;border-color:#0000;padding:0}:is(.med-chat-root .message-bubble:has(>.message-image-button)>p,.med-chat-root .message-bubble:has(>.message-image-grid)>p){margin-top:6px}.med-chat-root .message--focused{animation:2.2s ease-out message-focus-flash}.med-chat-root .message-image{object-fit:cover;border-radius:8px;width:100%;height:100%;display:block;box-shadow:0 2px 8px #0f172a29}.med-chat-root .image-not-available{background:var(--chat-surface-hover);width:100%;height:100%;min-height:64px;color:var(--chat-text-muted);text-align:center;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:10px;display:flex}.med-chat-root .image-not-available-icon{opacity:.7;width:40%;max-width:48px;height:auto}.med-chat-root .image-not-available-text{font-size:12px;line-height:1.3}.med-chat-root .image-not-available--compact{gap:0;min-height:0;padding:4px}.med-chat-root .image-not-available--compact .image-not-available-icon{max-width:28px}.med-chat-root .message-attachment{color:inherit;font-weight:600;text-decoration:underline}.med-chat-root .message-forwarded-label{color:var(--chat-text-icon-muted);align-items:center;gap:4px;margin-bottom:2px;font-size:12px;font-style:italic;display:inline-flex}.med-chat-root .message-mention{color:var(--chat-primary-strong);font-weight:600}.med-chat-root .message--mine .message-mention{color:var(--chat-primary-strong)}.med-chat-root .message-mention--user{cursor:pointer}.med-chat-root .message-retry-actions{align-self:flex-end;gap:6px;margin-top:4px;display:flex}.med-chat-root .message-retry{border:1px solid var(--chat-danger);color:var(--chat-danger);background:0 0;border-radius:6px;padding:2px 10px;font-size:12px}.med-chat-root .message-delete-failed{border:1px solid var(--chat-border-scrollbar);color:var(--chat-text-secondary);background:0 0;border-radius:6px;padding:2px 10px;font-size:12px}.med-chat-root .message-delete-failed:hover{background:var(--chat-surface-hover)}.med-chat-root .composer-error{margin:0;padding:4px 16px}.med-chat-root .settings-panel,.med-chat-root .message-search-panel{background:var(--chat-surface);border-left:1px solid var(--chat-border);flex-direction:column;width:100%;height:100%;min-height:0;padding:16px;display:flex;overflow:hidden}.med-chat-root .message-search-panel-header{justify-content:space-between;align-items:flex-start;margin-bottom:12px;display:flex}.med-chat-root .settings-panel-header{flex-direction:column;margin-bottom:12px;display:flex}.med-chat-root .settings-panel-header-top{border-bottom:1px solid var(--chat-border-light);text-align:center;padding-top:8px;padding-bottom:20px;position:relative}.med-chat-root .settings-panel-header-title{color:var(--chat-text-heading);margin:0;font-size:16px;font-weight:700}.med-chat-root .settings-title-block{text-align:center;flex-direction:column;align-items:center;gap:8px;padding-top:20px;padding-bottom:12px;display:flex}.med-chat-root .settings-avatar-edit{flex:none;position:relative}.med-chat-root .settings-avatar-preview-trigger{cursor:pointer;background:0 0;border:0;padding:0;display:block}.med-chat-root .settings-avatar-preview-trigger:disabled{cursor:default}.med-chat-root .settings-avatar-edit-overlay{z-index:1;border:2px solid var(--chat-surface);background:var(--chat-text-secondary,#475569);width:28px;height:28px;color:var(--chat-surface);cursor:pointer;border-radius:50%;place-items:center;font-size:14px;transition:filter .15s;display:grid;position:absolute;bottom:-2px;right:-6px}.med-chat-root .settings-avatar-edit:has(.conversation-avatar--group) .settings-avatar-edit-overlay{bottom:-9px;right:-11px}.med-chat-root .settings-avatar-edit-overlay:hover{filter:brightness(.9)}.med-chat-root .settings-avatar-edit-overlay:disabled{opacity:.6;cursor:not-allowed}.med-chat-root .settings-avatar-file-input{display:none}.med-chat-root .settings-avatar-error{color:var(--chat-danger);margin:4px 0 0;font-size:12px}.med-chat-root .settings-title-row{justify-content:center;align-items:center;gap:8px;display:flex}.med-chat-root .settings-title-row h2{color:var(--chat-text-heading);margin:0;font-size:16px;font-weight:700}.med-chat-root .settings-edit-title-button,.med-chat-root .settings-close-button,.med-chat-root .message-search-panel-header button{color:var(--chat-text-secondary);background:0 0;border:0;font-size:16px}.med-chat-root .settings-panel-header-top .settings-close-button{position:absolute;top:0;right:0}.med-chat-root .settings-row-list{gap:4px;display:grid}.med-chat-root .settings-row{background:var(--chat-surface-subtle);text-align:left;border:0;border-radius:8px;justify-content:space-between;align-items:center;padding:12px;display:flex}.med-chat-root .settings-row:hover{background:var(--chat-success-tint)}.med-chat-root .settings-row:hover .settings-row-icon--add,.med-chat-root .settings-row:hover .settings-row-icon--members{border-color:1px solid var(--chat-success-text)!important}.med-chat-root .settings-row span strong{font-size:14px;display:block}.med-chat-root .settings-row span small{color:var(--chat-text-muted);font-size:12px}.med-chat-root .settings-row.danger strong{color:var(--chat-danger)}.med-chat-root .settings-row-icon{border-radius:50%;flex:none;justify-content:center;align-items:center;width:36px;height:36px;margin-right:12px;font-size:16px;display:inline-flex}.med-chat-root .settings-row-icon--add,.med-chat-root .settings-row-icon--members{background:var(--chat-success-tint);color:var(--chat-success);border:1px solid}.med-chat-root .settings-row-icon--danger{background:var(--chat-danger-tint);color:var(--chat-danger)}.med-chat-root .settings-row-chevron{color:var(--chat-border-mid);flex:none;margin-left:8px;font-size:12px}.med-chat-root .settings-row-text{flex:1;min-width:0}.med-chat-root .settings-row-icon--task,.med-chat-root .settings-row-icon--feed{background:var(--chat-success-tint);color:var(--chat-success)}.med-chat-root .settings-row--static{cursor:default}.med-chat-root .settings-row--static:hover{background:var(--chat-surface-subtle)}.med-chat-root .settings-feed-section{gap:4px;display:grid}.med-chat-root .settings-feed-chevron{transition:transform .15s}.med-chat-root .settings-feed-chevron.is-expanded{transform:rotate(90deg)}.med-chat-root .settings-feed-list{gap:4px;display:grid}.med-chat-root .message-search-form{align-items:center;gap:8px;margin-bottom:12px;display:flex}.med-chat-root .message-search-input-pill{flex:1}.med-chat-root .message-search-clear{color:var(--chat-success);background:0 0;border:0;flex:none;place-items:center;padding:0;font-size:14px;display:grid}.med-chat-root .message-search-clear:hover{color:var(--chat-success-text)}.med-chat-root .message-search-filters{align-items:center;gap:8px;margin-bottom:12px;display:flex}.med-chat-root .message-search-filters-label{color:var(--chat-text-muted);flex:none;font-size:13px}.med-chat-root .message-search-tabs{gap:16px;margin-bottom:12px;display:flex}.med-chat-root .message-search-tabs button{color:var(--chat-text-dim);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 0 4px}.med-chat-root .message-search-tabs button.active{border-color:var(--chat-success);color:var(--chat-success-text);font-weight:600}.med-chat-root .search-empty-state{justify-items:center;gap:8px;padding:24px 16px 8px;display:grid}.med-chat-root .search-empty-state-image{width:160px;max-width:60%;height:auto}.med-chat-root .search-empty-state .conversation-empty{padding:0}.med-chat-root .message-search-results{flex:1;align-content:start;gap:6px;min-height:0;animation:.2s both tab-panel-in;display:grid;overflow-y:auto}.med-chat-root .message-search-result{border:1px solid var(--chat-surface-hover-alt);background:var(--chat-surface);text-align:left;border-radius:8px;align-items:flex-start;gap:10px;padding:10px;display:flex}.med-chat-root .message-search-result:hover{background:var(--chat-primary-tint)}.med-chat-root .message-search-result-avatar{width:40px;height:40px}.med-chat-root .message-search-result-body{flex:1;gap:2px;min-width:0;display:grid}.med-chat-root .message-search-result-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.med-chat-root .message-search-result-head strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.med-chat-root .message-search-result-head span{color:var(--chat-text-muted);flex:none;font-size:12px}.med-chat-root .message-search-result-snippet{color:var(--chat-text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.med-chat-root .message-search-result-kind{color:var(--chat-text-muted)}.med-chat-root .message-search-result-snippet mark{color:var(--chat-primary);background:0 0;padding:0;font-weight:600}.med-chat-root .message-search-more{border:1px solid var(--chat-border-soft);background:var(--chat-surface);border-radius:8px;margin-top:12px;padding:8px}.med-chat-root .chat-modal-backdrop{z-index:1000;background:#00000073;place-items:center;animation:.15s ease-out modal-fade-in;display:grid;position:fixed;inset:0}.med-chat-root .chat-modal-backdrop--layered{z-index:1010}.med-chat-root .chat-modal{background:var(--chat-surface);border-radius:12px;flex-direction:column;gap:12px;width:420px;max-width:92vw;max-height:80vh;padding:20px 20px 28px;animation:.18s ease-out modal-pop-in;display:flex;overflow-y:auto}.med-chat-root .chat-modal--wide{width:760px;max-width:96vw;max-height:86vh;overflow-y:hidden}.med-chat-root .chat-modal--medium{width:640px;max-width:94vw;max-height:86vh}.med-chat-root .user-profile-modal{width:380px}.med-chat-root .user-profile-modal-body{flex-direction:column;align-items:center;gap:6px;display:flex}.med-chat-root .user-profile-avatar{background:var(--chat-success-tint);width:96px;height:96px;color:var(--chat-success-text);border:0;border-radius:50%;place-items:center;margin-bottom:8px;padding:0;font-family:inherit;font-size:30px;font-weight:700;display:grid;overflow:hidden}.med-chat-root .user-profile-avatar:not(:disabled){cursor:pointer}.med-chat-root .user-profile-avatar img{object-fit:cover;width:100%;height:100%}.med-chat-root .user-profile-name{margin:0;font-size:18px;font-weight:700}.med-chat-root .user-profile-status{margin-top:4px}.med-chat-root .user-profile-code{color:var(--chat-text-muted);margin:0 0 10px;font-size:13px}.med-chat-root .user-profile-chat-button{background:var(--chat-success-tint);color:var(--chat-success-text);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;margin:4px 0 8px;padding:7px 18px;font-size:13px;font-weight:600;display:inline-flex}.med-chat-root .user-profile-chat-button:hover{background:var(--chat-success-alt)}.med-chat-root .chat-modal-load-more-sentinel{text-align:center;grid-column:1/-1;margin:4px 0;padding:8px}.med-chat-root .user-profile-fields{border-top:1px solid var(--chat-surface-hover-alt);gap:8px;width:100%;margin:6px 0 0;padding-top:12px;display:grid}.med-chat-root .user-profile-field{grid-template-columns:120px 1fr;gap:8px;font-size:13px;display:grid}.med-chat-root .user-profile-field dt{color:var(--chat-text-muted)}.med-chat-root .user-profile-field dd{overflow-wrap:anywhere;color:var(--chat-text-strong);text-align:right;margin:0}.med-chat-root .chat-modal--medium .chat-modal-user-list{flex:0 auto;height:336px;max-height:none}.med-chat-root .chat-modal--wide .chat-modal-user-list{flex:0 auto;grid-template-columns:repeat(2,1fr);grid-auto-rows:min-content;height:min(340px,60vh);max-height:none}.med-chat-root .chat-modal-user-list>.conversation-empty,.med-chat-root .chat-modal-user-list>.conversation-error,.med-chat-root .chat-modal-user-list>.search-empty-state{grid-column:1/-1;padding:16px}.med-chat-root .chat-modal--wide .chat-modal-form{flex-direction:column;flex:1;min-height:0;display:flex}.med-chat-root .chat-modal--wide .chat-modal-label,.med-chat-root .chat-modal--wide .chat-modal-actions{flex:none}.med-chat-root .chat-modal--wide .chat-modal-user-row{align-items:center;min-width:0}.med-chat-root .chat-modal--wide .chat-modal-user-row strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.med-chat-root .chat-modal-header{justify-content:space-between;align-items:center;display:flex}.med-chat-root .chat-modal-header h2{margin:0;font-size:16px}.med-chat-root .chat-modal-header button{background:0 0;border:0;font-size:16px}.med-chat-root .message-details-preview{border:1px solid var(--chat-border);border-radius:10px;gap:10px;padding:12px;display:flex}.med-chat-root .message-details-preview-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.med-chat-root .message-details-preview-body strong{font-size:13px}.med-chat-root .message-details-preview-body p{color:var(--chat-text-dark-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.med-chat-root .message-details-preview-body time{color:var(--chat-text-muted);font-size:12px}.med-chat-root .message-details-seen{flex-direction:column;gap:8px;min-height:60px;padding:4px 4px 12px;display:flex}.med-chat-root .message-details-seen-title{color:var(--chat-text-muted);text-transform:uppercase;margin:0;font-size:12px;font-weight:600}.med-chat-root .message-details-seen-row{color:var(--chat-text-dark-muted);align-items:center;gap:8px;font-size:13px;display:flex}.med-chat-root .message-details-footnote{border-top:1px solid var(--chat-surface-hover-alt);color:var(--chat-text-icon-faint);margin:0;padding-top:8px;font-size:11px}.med-chat-root .chat-modal-tabs{gap:16px;display:flex}.med-chat-root .chat-modal-tabs button{color:var(--chat-text-dim);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 0 4px}.med-chat-root .chat-modal-tabs button.active{border-color:var(--chat-success);color:var(--chat-success-text);font-weight:600}.med-chat-root .chat-modal-user-list{align-content:start;gap:4px;max-height:320px;display:grid;overflow:hidden auto}.med-chat-root .chat-modal-user-row{background:var(--chat-surface-subtle);text-align:left;border:0;border-radius:8px;align-items:center;gap:10px;height:64px;padding:8px;display:flex}.med-chat-root .chat-modal-user-row:hover{background:var(--chat-success-tint)}.med-chat-root .chat-modal-user-row--clickable{cursor:pointer}.med-chat-root .chat-modal-user-row--owner{background:var(--chat-success-tint)}.med-chat-root .chat-modal-user-row--owner:hover{background:var(--chat-success-tint);filter:brightness(.97)}.med-chat-root .chat-modal-user-owner-icon{object-fit:contain;flex:none;width:26px;height:26px;margin-left:auto}.med-chat-root .chat-modal-user-name-block{text-align:left;flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.med-chat-root .chat-modal-user-name-block small{color:var(--chat-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.med-chat-root .chat-modal-user-name-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.med-chat-root .chat-modal-user-name-row strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.med-chat-root .chat-modal-user-code{background:var(--chat-surface-hover-alt2);color:#5b6576;border-radius:999px;flex:none;padding:1px 7px;font-size:11px;font-weight:600}.med-chat-root .chat-modal-user-status{max-width:120px;color:var(--chat-info-teal);text-overflow:ellipsis;white-space:nowrap;background:#0ea5a524;border:1px solid #0ea5a54d;border-radius:999px;flex:none;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex;overflow:hidden}.med-chat-root .chat-modal-quick-add{background:var(--chat-surface-hover);color:var(--chat-text-strong);text-align:left;border:0;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.med-chat-root .chat-modal-quick-add:hover{background:var(--chat-border-divider)}.med-chat-root .chat-modal-list-header{justify-content:space-between;align-items:center;font-size:13px;display:flex}.med-chat-root .chat-modal-search--pill{border:1.5px solid var(--chat-success);height:40px;color:var(--chat-text-faint);border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:14px;display:flex}.med-chat-root .chat-modal-search--pill:focus-within{border-color:var(--chat-success);outline:2px solid var(--chat-success-tint);outline-offset:1px}.med-chat-root .chat-modal-search--pill>.anticon:first-child{color:var(--chat-success)}.med-chat-root .chat-modal-search.chat-modal-search--pill input{height:28px;color:var(--chat-text-strong);font:inherit;background:0 0;border:0;outline:none;flex:1;align-items:center;padding:4px 8px;font-size:13px}.med-chat-root .chat-modal-search.chat-modal-search--pill input::placeholder{color:var(--chat-text-faint)}.med-chat-root .chat-modal-search.chat-modal-search--pill input:focus{outline:none}.med-chat-root .chat-modal-user-list--grouped{flex-direction:column;gap:8px;display:flex}.med-chat-root .chat-modal-user-group{gap:4px;display:grid}.med-chat-root .chat-modal-user-group-letter{color:var(--chat-text-muted);margin:4px 0 0;font-size:12px;font-weight:600}.med-chat-root .chat-modal-user-row--selectable{justify-content:space-between}.med-chat-root .chat-modal-user-row--selectable.is-selected{background:var(--chat-success-tint)}.med-chat-root .chat-modal-user-checkbox{border:1.5px solid var(--chat-border-scrollbar);border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:14px;display:inline-flex}.med-chat-root .chat-modal-user-checkbox.is-checked{border-color:var(--chat-success);background:var(--chat-success);color:var(--chat-surface);font-weight:700}.med-chat-root .chat-modal-user-checkbox-input{display:none}.med-chat-root .chat-modal-user-remove{width:32px;height:32px;color:var(--chat-danger);background:0 0;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.med-chat-root .chat-modal-user-remove:hover{background:var(--chat-danger-tint)}.med-chat-root .chat-modal-user-remove.is-loading{opacity:.5}.med-chat-root .chat-modal-footer{border-top:1px solid var(--chat-surface-hover-alt);justify-content:space-between;align-items:center;gap:8px;padding-top:8px;display:flex}.med-chat-root .chat-modal-footer-buttons{align-items:center;gap:8px;display:flex}.med-chat-root .chat-modal-footer .chat-ghost-button,.med-chat-root .chat-modal-actions .chat-ghost-button{margin-top:0}.med-chat-root .chat-modal-form{gap:12px;display:grid}.med-chat-root .chat-modal-label{gap:4px;font-size:13px;display:grid}.med-chat-root .chat-modal-label input{border:1px solid var(--chat-border-soft);font:inherit;border-radius:6px;padding:8px 10px}.med-chat-root .chat-modal-label input:focus{border-color:var(--chat-success);outline:2px solid var(--chat-success-tint);outline-offset:1px}.med-chat-root .chat-modal-group-title-input{border:1.5px solid var(--chat-success);height:40px;font:inherit;border-radius:999px;padding:0 14px;font-size:14px}.med-chat-root .chat-modal-group-title-input::placeholder{color:var(--chat-text-faint)}.med-chat-root .chat-modal-group-title-input:focus{outline:none}.med-chat-root .chat-modal-search{gap:8px;display:flex}.med-chat-root .chat-modal-search input{border:1px solid var(--chat-border-soft);font:inherit;border-radius:6px;flex:1;padding:8px 10px}.med-chat-root .rename-group-form .chat-modal-label{gap:6px}.med-chat-root .rename-group-label-row{justify-content:space-between;align-items:baseline;display:flex}.med-chat-root .rename-group-char-count{color:var(--chat-text-faint);font-size:12px;font-weight:400}.med-chat-root .chat-modal-actions.rename-group-actions{justify-content:flex-end;gap:8px}.med-chat-root .chat-modal-actions{justify-content:space-between;align-items:center;display:flex}.med-chat-root .chat-modal-selected-count{color:var(--chat-success);background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:600;display:inline-flex}.med-chat-root .chat-modal-selected-count:disabled{color:var(--chat-text-icon-faint);cursor:default}.med-chat-root .chat-modal-selected-count:disabled .chat-modal-selected-tick{color:var(--chat-text-icon-faint)}.med-chat-root .chat-modal-selected-count--static{cursor:default}.med-chat-root .chat-modal-selected-count--static:empty{display:none}.med-chat-root .chat-modal-selected-tick{color:var(--chat-success);font-size:14px}.med-chat-root .chat-modal-actions-submit{align-items:center;gap:10px;display:flex}.med-chat-root .chat-primary-button{background:var(--chat-success);color:var(--chat-surface);border:0;border-radius:8px;padding:8px 16px}.med-chat-root .chat-danger-button{background:var(--chat-danger);color:var(--chat-surface);border:0;border-radius:8px;padding:8px 16px}.med-chat-root .chat-ghost-button{border:1px solid var(--chat-border-soft);background:var(--chat-surface);border-radius:8px;margin-top:12px;padding:8px 16px}.med-chat-root .chat-primary-button:disabled{opacity:.5;cursor:default}.med-chat-root .settings-media-section{background:var(--chat-surface-subtle);border-radius:8px;padding:12px}.med-chat-root .settings-media-section-header{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px;display:flex}.med-chat-root .settings-see-all{color:var(--chat-success-text);cursor:pointer;background:0 0;border:0;font-size:13px;font-weight:600}.med-chat-root .settings-verified-switch{background:#cbd5e1;border-radius:999px;flex:none;width:36px;height:20px;transition:background .15s;position:relative}.med-chat-root .settings-verified-switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px}.med-chat-root .settings-verified-switch.is-on{background:var(--chat-primary)}.med-chat-root .settings-verified-switch.is-on:after{transform:translate(16px)}.med-chat-root .settings-media-preview-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.med-chat-root .settings-media-preview-thumb{aspect-ratio:1;background:var(--chat-border);border-radius:6px;position:relative;overflow:hidden}.med-chat-root .settings-media-thumb-open{cursor:pointer;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.med-chat-root .settings-media-preview-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .2s}.med-chat-root .settings-media-preview-thumb:hover img{transform:scale(1.06)}.med-chat-root .settings-media-actions{opacity:0;gap:2px;transition:opacity .15s;display:flex;position:absolute;bottom:4px;right:4px}.med-chat-root .settings-media-preview-thumb:hover .settings-media-actions,.med-chat-root .archive-media-thumb:hover .settings-media-actions{opacity:1}.med-chat-root .settings-media-actions .archive-file-action{width:26px;height:26px;color:var(--chat-surface);background:#0f172a8c;border-radius:6px;font-size:13px}.med-chat-root .settings-media-actions .archive-file-action:hover{color:var(--chat-surface);background:#0f172ad1}.med-chat-root .settings-file-preview-list{gap:4px;display:grid}.med-chat-root .settings-file-preview-row{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:6px;display:flex}.med-chat-root .settings-file-preview-row:hover{background:var(--chat-primary-tint)}.med-chat-root .archive-view{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex}.med-chat-root .archive-view-header{grid-template-columns:28px 1fr 28px;align-items:center;gap:8px;display:grid}.med-chat-root .archive-view-header h2{text-align:center;margin:0;font-size:16px}.med-chat-root .archive-back-button{width:28px;height:28px;color:var(--chat-text-strong);background:0 0;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;display:inline-flex}.med-chat-root .archive-back-button:hover{background:var(--chat-surface-hover)}.med-chat-root .archive-search{margin:4px 0}.med-chat-root .archive-filters{gap:8px;display:flex}.med-chat-root .archive-groups{flex:1;gap:16px;min-height:0;display:grid;overflow-y:auto}.med-chat-root .archive-group h3{color:var(--chat-text-muted);margin:0 0 8px;font-size:13px}.med-chat-root .archive-media-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.med-chat-root .archive-media-thumb{aspect-ratio:1;background:var(--chat-border);border:0;border-radius:8px;padding:0;position:relative;overflow:hidden}.med-chat-root .archive-media-thumb img{object-fit:cover;width:100%;height:100%;transition:transform .2s}.med-chat-root .archive-media-thumb:hover img{transform:scale(1.06)}.med-chat-root .archive-media-meta{color:var(--chat-surface);text-align:left;white-space:nowrap;text-overflow:ellipsis;background:linear-gradient(#0000,#0000008c);padding:4px 6px;font-size:11px;position:absolute;inset:auto 0 0;overflow:hidden}.med-chat-root .archive-file-list,.med-chat-root .archive-link-list{gap:4px;display:grid}.med-chat-root .archive-file-row{background:var(--chat-surface-subtle);border-radius:8px;align-items:center;gap:4px;display:flex}.med-chat-root .archive-file-row:hover{background:var(--chat-primary-tint)}.med-chat-root .archive-file-main{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:10px;min-width:0;padding:8px;display:flex}.med-chat-root .archive-file-actions{flex:none;gap:2px;padding-right:6px;display:flex}.med-chat-root .archive-file-action{width:32px;height:32px;color:var(--chat-text-icon-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;font-size:16px;text-decoration:none;display:inline-flex}.med-chat-root .archive-file-action:hover{background:var(--chat-primary-soft);color:var(--chat-primary-strong)}.med-chat-root .archive-file-icon{background:var(--chat-border-tint);width:36px;height:36px;color:var(--chat-text-icon-muted);border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:inline-flex}.med-chat-root .archive-file-icon--word{background:var(--chat-primary);color:var(--chat-surface)}.med-chat-root .archive-file-icon--excel{background:var(--chat-success);color:var(--chat-surface)}.med-chat-root .archive-file-icon--pdf{background:var(--chat-danger);color:var(--chat-surface);font-size:11px}.med-chat-root .archive-file-icon--zip{background:var(--chat-primary-accent);color:var(--chat-surface);font-size:10px}.med-chat-root .archive-file-icon--other{font-size:18px}.med-chat-root .archive-file-info{gap:2px;min-width:0;display:grid}.med-chat-root .archive-file-info strong{overflow-wrap:anywhere;word-break:break-word;font-weight:600}.med-chat-root .archive-file-info small{color:var(--chat-text-muted);font-size:12px}.med-chat-root .archive-link-row{background:var(--chat-surface-subtle);border-radius:8px;align-items:center;gap:10px;padding:8px;text-decoration:none;display:flex}.med-chat-root .archive-link-row:hover{background:var(--chat-primary-tint)}.med-chat-root .archive-link-icon{background:var(--chat-border-tint);width:36px;height:36px;color:var(--chat-text-icon-muted);border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.med-chat-root .archive-link-info{gap:2px;min-width:0;display:grid}.med-chat-root .archive-link-info strong{color:var(--chat-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.med-chat-root .archive-link-info small{color:var(--chat-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.med-chat-root .filter-pill{flex:1;position:relative}.med-chat-root .filter-pill-trigger{border:1px solid var(--chat-border-soft);background:var(--chat-surface);width:100%;color:var(--chat-text-dark-muted);border-radius:999px;justify-content:space-between;align-items:center;gap:6px;padding:4px 6px 4px 12px;display:flex}.med-chat-root .filter-pill-trigger.is-active{border-color:var(--chat-success);background:var(--chat-success-tint);color:var(--chat-success-text)}.med-chat-root .filter-pill-trigger.is-disabled{cursor:not-allowed;opacity:.5}.med-chat-root .filter-pill-trigger-label{color:inherit;font:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:4px 0;font-size:13px;overflow:hidden}.med-chat-root .filter-pill-trigger.is-active .filter-pill-trigger-label{font-weight:600}.med-chat-root .filter-pill-trigger-chevron{color:var(--chat-success);flex:none;font-size:11px}.med-chat-root .filter-pill-trigger-clear{color:var(--chat-success);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;font-size:15px;display:inline-flex}.med-chat-root .filter-pill-menu{z-index:210;background:var(--chat-surface);border-radius:10px;min-width:160px;max-height:260px;padding:6px;display:grid;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #0f172a26}.med-chat-root .filter-pill-menu button{color:var(--chat-text-strong);text-align:left;background:0 0;border:0;border-radius:8px;padding:8px 10px;font-size:13px}.med-chat-root .filter-pill-menu button:hover{background:var(--chat-surface-hover)}.med-chat-root .filter-pill-menu button.is-active{color:var(--chat-success-text);font-weight:600}.med-chat-root .date-range-filter-pill{flex:1;position:relative}.med-chat-root .date-range-filter-panel{z-index:210;background:var(--chat-surface);border-radius:10px;gap:8px;width:320px;padding:12px;display:grid;position:fixed;box-shadow:0 8px 24px #0f172a26}.med-chat-root .date-range-filter-suggest{color:var(--chat-text-strong);background:0 0;border:0;justify-content:space-between;align-items:center;padding:6px 4px;font-size:13px;font-weight:600;display:flex}.med-chat-root .date-range-filter-suggest svg{color:var(--chat-border-mid);font-size:11px;transition:transform .15s}.med-chat-root .date-range-filter-suggest .is-expanded{transform:rotate(90deg)}.med-chat-root .date-range-filter-presets{border-bottom:1px solid var(--chat-surface-hover-alt);gap:2px;padding-bottom:6px;display:grid}.med-chat-root .date-range-filter-presets button{color:var(--chat-text-dark-muted);text-align:left;background:0 0;border:0;border-radius:6px;padding:6px 8px;font-size:13px}.med-chat-root .date-range-filter-presets button:hover{background:var(--chat-surface-hover)}.med-chat-root .date-range-filter-presets button.is-active{color:var(--chat-primary-strong);font-weight:600}.med-chat-root .date-range-filter-label{color:var(--chat-text-muted);margin:0;font-size:12px;font-weight:600}.med-chat-root .date-range-filter-inputs{gap:8px;display:flex}.med-chat-root .date-range-filter-inputs .ant-picker{flex:1;width:0}.med-chat-root .date-range-filter-panel .ant-picker{width:100%}.med-chat-root .ant-picker:hover,.med-chat-root .ant-picker-focused{border-color:var(--chat-success)}.med-chat-root .ant-picker-focused{box-shadow:0 0 0 2px var(--chat-success-tint)}.ant-picker-dropdown .ant-picker-header-view button:hover,.ant-picker-dropdown .ant-picker-today-btn{color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner:before{border-color:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner{background:var(--chat-success)}.ant-picker-dropdown .ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view:hover .ant-picker-cell-inner,.ant-picker-dropdown .ant-picker-cell-in-view.ant-picker-cell-in-range:before{background:var(--chat-success-tint)}.med-chat-root .archive-preview-backdrop{z-index:50;background:#0f172aa6;place-items:center;display:grid;position:fixed;inset:0}.med-chat-root .archive-preview{background:var(--chat-surface);border-radius:12px;flex-direction:column;align-items:center;gap:12px;max-width:90vw;max-height:90vh;padding:24px;display:flex;position:relative}.med-chat-root .archive-preview img{object-fit:contain;border-radius:8px;max-width:100%;max-height:70vh}.med-chat-root .archive-doc-viewer{background:var(--chat-surface);border:0;border-radius:8px;width:min(88vw,960px);height:82vh;overflow:hidden}.med-chat-root .archive-doc-content{background:var(--chat-surface);color:var(--chat-text-strong);text-align:left;padding:24px;overflow:auto}.med-chat-root .archive-sheet .sheet-name{color:var(--chat-text-slate);margin:12px 0 6px;font-size:13px}.med-chat-root .archive-sheet table{border-collapse:collapse;font-size:13px}.med-chat-root .archive-sheet td,.med-chat-root .archive-sheet th{border:1px solid var(--chat-border-divider);white-space:nowrap;padding:4px 8px}.med-chat-root .archive-preview-empty{color:var(--chat-text-icon-muted);padding:40px}.med-chat-root .archive-preview-close{background:0 0;border:0;font-size:16px;position:absolute;top:8px;right:8px}.med-chat-root .archive-preview-file{text-align:center;gap:6px;padding:24px;display:grid}.med-chat-root .archive-preview-file .archive-file-icon{font-size:40px}.med-chat-root .archive-preview-download{text-decoration:none}@media (width<=1024px){.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:minmax(0,1fr) 400px}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar{display:none}}@media (width<=768px){.med-chat-root .conversation-layout{grid-template-columns:1fr}.med-chat-root .conversation-layout .conversation-sidebar{display:flex}.med-chat-root .conversation-layout .conversation-main,.med-chat-root .conversation-layout.has-active-conversation .conversation-sidebar{display:none}.med-chat-root .conversation-layout.has-active-conversation .conversation-main{display:flex}.med-chat-root button.conversation-header-back{display:inline-flex}.med-chat-root .conversation-layout.has-side-panel{grid-template-columns:1fr}.med-chat-root .conversation-layout.has-side-panel .conversation-sidebar,.med-chat-root .conversation-layout.has-side-panel .conversation-main{display:none}}.med-chat-root,.med-chat-root--portal{--chat-primary:#2563eb;--chat-primary-strong:#1d4ed8;--chat-primary-light:#60a5fa;--chat-primary-mid:#7cb3fa;--chat-primary-tint:#eff6ff;--chat-primary-tint-alt:#e0edff;--chat-primary-tint-strong:#eaf2ff;--chat-primary-soft:#dbeafe;--chat-primary-soft-alt:#cbdbf5;--chat-primary-pale:#f4f7fb;--chat-primary-pale-alt:#bcbdc0;--chat-primary-border:#93c5fd;--chat-primary-accent:#7c3aed;--chat-danger:#dc2626;--chat-danger-alt:#ef4444;--chat-danger-tint:#fde2e2;--chat-danger-tint-alt:#fee2e2;--chat-success:#16a34a;--chat-success-alt:#22c55e;--chat-success-tint:#dcfce7;--chat-success-tint-alt:#d1fae5;--chat-success-text:#166534;--chat-warning:#f59e0b;--chat-warning-tint:#fef3c7;--chat-warning-tint-alt:#fffbeb;--chat-warning-text:#92400e;--chat-info-teal:#0ea5a5;--chat-surface:#fff;--chat-surface-subtle:#f8fafc;--chat-surface-hover:#f1f5f9;--chat-surface-hover-alt:#edf0f4;--chat-surface-hover-alt2:#eef2f7;--chat-surface-tint:#f1f3f6;--chat-surface-panel:#ebecf0;--chat-border:#e4e8ee;--chat-border-soft:#dce2ea;--chat-border-light:#e5e7eb;--chat-border-bubble:#e1e7ef;--chat-border-divider:#e2e8f0;--chat-border-scrollbar:#cbd5e1;--chat-border-mid:#b6c0cf;--chat-border-tint:#eef1f5;--chat-text-heading:#162033;--chat-text-strong:#1f2937;--chat-text-secondary:#526174;--chat-text-slate:#475569;--chat-text-slate-alt:#fff;--chat-text-muted:#7a8598;--chat-text-dim:#6b7280;--chat-text-dark-muted:#47546b;--chat-text-faint:#9ca3af;--chat-text-placeholder:#94a3b8;--chat-text-icon-muted:#64748b;--chat-text-icon-faint:#97a3b6;--chat-text-gold:#92764a;--chat-text-body:#0f172a;--chat-text-neutral:#718096}.med-chat-root{width:100%;height:100%}.med-chat-root--portal{display:contents}.chat-toast-dark .ant-message-notice-content{color:#fff;background:#1f1f1f;border-radius:8px;padding:8px 16px;box-shadow:0 4px 12px #00000040}
|
|
2
|
+
/*$vite$:1*/
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ChatUser, Conversation, ConversationMember, MessageContent } from './chat';
|
|
2
|
+
export declare const getMemberUser: (member: ConversationMember) => ChatUser;
|
|
3
|
+
export declare const getMemberUserId: (member: ConversationMember) => string | null;
|
|
4
|
+
export declare const getMemberRole: (member: ConversationMember | null | undefined) => string;
|
|
5
|
+
/** Whether/when the given user pinned this conversation to their own sidebar — a
|
|
6
|
+
* personal preference, so it's read off that user's own member row, not the conversation. */
|
|
7
|
+
export declare const getConversationPinnedAt: (conversation: Conversation, userId: string | null) => string | null;
|
|
8
|
+
/** Formats a message timestamp for display under a bubble (e.g. "14:05", vi-VN). */
|
|
9
|
+
export declare const formatMessageTime: (createdAt: string) => string;
|
|
10
|
+
/** "Hôm nay" / "Hôm qua" / "T4, 20/03/2026" — used for day dividers and the scroll pill. */
|
|
11
|
+
export declare const formatDayLabel: (createdAt: string) => string;
|
|
12
|
+
/** Calendar-day key (not a full timestamp) so messages on the same day always group together. */
|
|
13
|
+
export declare const getDayKey: (createdAt: string) => string | null;
|
|
14
|
+
/** "Vài giây" / "5 phút" / "3 giờ" / "Hôm qua" / "T4" / "20/03" — Zalo-style relative
|
|
15
|
+
* timestamp for the conversation list, so a message that just landed doesn't need the
|
|
16
|
+
* reader to do clock math. */
|
|
17
|
+
export declare const formatRelativeTime: (createdAt: string) => string;
|
|
18
|
+
/** "14 phút" / "Hôm qua" / "4 ngày" / "15/08" — same recency tiers as `formatRelativeTime`
|
|
19
|
+
* but spelling out the day count instead of a weekday shorthand, for the search results
|
|
20
|
+
* list (each row already sits far enough from the others that "T4" alone reads ambiguous). */
|
|
21
|
+
export declare const formatSearchResultTime: (createdAt: string) => string;
|
|
22
|
+
export interface SearchSnippetPart {
|
|
23
|
+
text: string;
|
|
24
|
+
matched: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Splits a search result's `searchSnippet` into plain/matched runs for the caller to render
|
|
27
|
+
* (e.g. plain `<span>` vs. a highlighted one) — the snippet itself has no markup, just the
|
|
28
|
+
* backend's start/stop markers around each matched term. */
|
|
29
|
+
export declare const splitSearchSnippet: (snippet: string) => SearchSnippetPart[];
|
|
30
|
+
/** Short label for the quoted message shown above a reply (bubble preview or composer banner). */
|
|
31
|
+
export declare const getReplyPreviewText: (replyTo: {
|
|
32
|
+
type: string;
|
|
33
|
+
content: MessageContent | null;
|
|
34
|
+
attachmentName?: string | null;
|
|
35
|
+
removedAt?: string | null;
|
|
36
|
+
}) => string;
|
|
37
|
+
export declare const MAX_DETAILED_SEEN_MEMBERS = 100;
|
|
38
|
+
/**
|
|
39
|
+
* Truncates a long file name to one line, keeping the extension and the few characters
|
|
40
|
+
* right before it fully intact instead of a plain end-ellipsis potentially swallowing them
|
|
41
|
+
* (e.g. "Báo cáo tài chí…" losing which file type it even is).
|
|
42
|
+
* Result shape when truncated: "<head>...<last 3 chars of the base name><.extension>".
|
|
43
|
+
*/
|
|
44
|
+
export declare function truncateFileName(name: string, maxLength?: number): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ChatUser, ConversationMember } from './chat';
|
|
2
|
+
/** Resolves a message's senderId to a display name from whatever member data we have loaded. */
|
|
3
|
+
export declare const resolveSenderName: (senderId: string | undefined, members: ConversationMember[] | undefined, currentUserId: string | null, authUser: ChatUser | null) => string;
|
|
4
|
+
/** Resolves a userId to their full member record (department, job title, ...) from whatever
|
|
5
|
+
* member data we have loaded — used to show that directory info in places (like the reaction
|
|
6
|
+
* detail modal) that only get name/avatar from their own endpoint. */
|
|
7
|
+
export declare const resolveMemberUser: (userId: string, members: ConversationMember[] | undefined) => ChatUser | undefined;
|
|
8
|
+
/** Resolves a userId to their avatar photo (resolved URL) or null to fall back to initials. */
|
|
9
|
+
export declare const resolveMemberAvatarUrl: (userId: string | undefined, members: ConversationMember[] | undefined) => string | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SocketEmitResult } from '@medipha/chat-core';
|
|
2
|
+
/** Shared notification surface for web chat actions; mobile supplies its own presentation. */
|
|
3
|
+
export declare const chatToast: {
|
|
4
|
+
success: (content: string) => import('antd/lib/message').MessageType;
|
|
5
|
+
error: (content: string) => import('antd/lib/message').MessageType;
|
|
6
|
+
warning: (content: string) => import('antd/lib/message').MessageType;
|
|
7
|
+
info: (content: string) => import('antd/lib/message').MessageType;
|
|
8
|
+
/** Zalo-style dark pill toast for copy-to-clipboard confirmations. */
|
|
9
|
+
copied: (content: string) => import('antd/lib/message').MessageType;
|
|
10
|
+
hide: (key?: string | number) => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Converts the core's immediate emit outcome into the web-only disconnected notification.
|
|
14
|
+
* A successful result does not prove server processing; acknowledgement handling owns that.
|
|
15
|
+
*/
|
|
16
|
+
export declare function canContinueSocketAction(result: SocketEmitResult): boolean;
|
|
17
|
+
/** Extracts a server-provided acknowledgement error while leaving unknown ack envelopes alone. */
|
|
18
|
+
export declare function getSocketAcknowledgementErrorMessage(acknowledgement: unknown, fallbackMessage: string): string | null;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { ReactionSummaryPayload, ReactionType } from '@medipha/chat-core';
|
|
2
|
+
export type MessageMark = 'bold' | 'italic' | 'underline' | 'strike';
|
|
3
|
+
export declare const TEXT_COLORS: readonly ["#1f2937", "#dc2626", "#f97316", "#ca8a04", "#16a34a", "#0284c7", "#7c3aed", "#db2777"];
|
|
4
|
+
export declare const FONT_SIZES: readonly ["13px", "18px"];
|
|
5
|
+
export type TextColor = (typeof TEXT_COLORS)[number];
|
|
6
|
+
export type FontSize = (typeof FONT_SIZES)[number];
|
|
7
|
+
/** Carries at least one of color/fontSize — an attrs-less textStyle mark is meaningless. */
|
|
8
|
+
export type TextStyleMark = {
|
|
9
|
+
type: 'textStyle';
|
|
10
|
+
attrs: {
|
|
11
|
+
color: TextColor;
|
|
12
|
+
fontSize?: FontSize;
|
|
13
|
+
};
|
|
14
|
+
} | {
|
|
15
|
+
type: 'textStyle';
|
|
16
|
+
attrs: {
|
|
17
|
+
color?: TextColor;
|
|
18
|
+
fontSize: FontSize;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type RichTextMark = {
|
|
22
|
+
type: MessageMark;
|
|
23
|
+
} | TextStyleMark;
|
|
24
|
+
export declare const MENTION_ALL_ID = "__mention_all__";
|
|
25
|
+
export type LegacyMessageContentNode = {
|
|
26
|
+
type: 'text';
|
|
27
|
+
text: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'mention_all';
|
|
30
|
+
} | {
|
|
31
|
+
type: 'mention_user';
|
|
32
|
+
userId: string;
|
|
33
|
+
fallbackName?: string;
|
|
34
|
+
};
|
|
35
|
+
export type LegacyMessageContent = LegacyMessageContentNode[];
|
|
36
|
+
export type RichTextNode = {
|
|
37
|
+
type: 'text';
|
|
38
|
+
text: string;
|
|
39
|
+
marks?: RichTextMark[];
|
|
40
|
+
};
|
|
41
|
+
export type RichMentionUserNode = {
|
|
42
|
+
type: 'mention_user';
|
|
43
|
+
userId: string;
|
|
44
|
+
fallbackName?: string;
|
|
45
|
+
};
|
|
46
|
+
export type RichMentionAllNode = {
|
|
47
|
+
type: 'mention_all';
|
|
48
|
+
};
|
|
49
|
+
export type RichHardBreakNode = {
|
|
50
|
+
type: 'hardBreak';
|
|
51
|
+
};
|
|
52
|
+
export type RichInlineNode = RichTextNode | RichMentionUserNode | RichMentionAllNode | RichHardBreakNode;
|
|
53
|
+
export interface RichParagraphNode {
|
|
54
|
+
type: 'paragraph';
|
|
55
|
+
content?: RichInlineNode[];
|
|
56
|
+
}
|
|
57
|
+
export interface RichListItemNode {
|
|
58
|
+
type: 'listItem';
|
|
59
|
+
content: Array<RichParagraphNode | RichBulletListNode | RichOrderedListNode>;
|
|
60
|
+
}
|
|
61
|
+
export interface RichBulletListNode {
|
|
62
|
+
type: 'bulletList';
|
|
63
|
+
content: RichListItemNode[];
|
|
64
|
+
}
|
|
65
|
+
export interface RichOrderedListNode {
|
|
66
|
+
type: 'orderedList';
|
|
67
|
+
content: RichListItemNode[];
|
|
68
|
+
}
|
|
69
|
+
export type RichBlockNode = RichParagraphNode | RichBulletListNode | RichOrderedListNode;
|
|
70
|
+
export interface RichMessageDocument {
|
|
71
|
+
type: 'doc';
|
|
72
|
+
content: RichBlockNode[];
|
|
73
|
+
}
|
|
74
|
+
export type MessageContent = LegacyMessageContent | RichMessageDocument;
|
|
75
|
+
/** Compatibility alias retained for callers that compose legacy content directly. */
|
|
76
|
+
export type MessageContentNode = LegacyMessageContentNode;
|
|
77
|
+
export type MessageStatus = 'pending' | 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
|
|
78
|
+
export type MessageType = 'TEXT' | 'IMAGE' | 'DOCUMENT' | 'SYSTEM';
|
|
79
|
+
/** Only ever set when type is SYSTEM — which category of SYSTEM message this is, so the
|
|
80
|
+
* bubble can pick an icon without inspecting the message text. */
|
|
81
|
+
export type MessageSystemCategory = 'MESSAGE_PIN' | 'GROUP_INFO_UPDATE' | 'MEMBER_CHANGE';
|
|
82
|
+
export type MessageFailureStage = 'upload' | 'send';
|
|
83
|
+
export interface MentionedUser {
|
|
84
|
+
userId: string;
|
|
85
|
+
fullName?: string;
|
|
86
|
+
[key: string]: unknown;
|
|
87
|
+
}
|
|
88
|
+
/** Aggregate message reaction history, with the current user's separate local projection. */
|
|
89
|
+
export interface ReactionSummary extends ReactionSummaryPayload {
|
|
90
|
+
mine: {
|
|
91
|
+
type: ReactionType;
|
|
92
|
+
count: number;
|
|
93
|
+
} | null;
|
|
94
|
+
}
|
|
95
|
+
/** Display mapping is intentionally fixed to the backend's supported reaction types. */
|
|
96
|
+
export declare const REACTION_EMOJI_BY_TYPE: Record<ReactionType, string>;
|
|
97
|
+
export declare const REACTION_TYPES: ReactionType[];
|
|
98
|
+
export declare const createEmptyReactionSummary: () => ReactionSummary;
|
|
99
|
+
export interface MessageReplyPreview {
|
|
100
|
+
id: string;
|
|
101
|
+
senderId: string;
|
|
102
|
+
senderName: string;
|
|
103
|
+
type: MessageType;
|
|
104
|
+
content: MessageContent | null;
|
|
105
|
+
attachmentName: string | null;
|
|
106
|
+
removedAt?: string | null;
|
|
107
|
+
removedById?: string | null;
|
|
108
|
+
}
|
|
109
|
+
export interface ChatMessageAttachment {
|
|
110
|
+
id: string;
|
|
111
|
+
url: string;
|
|
112
|
+
name: string | null;
|
|
113
|
+
mimeType: string | null;
|
|
114
|
+
sizeBytes: number | null;
|
|
115
|
+
}
|
|
116
|
+
export interface ChatMessage {
|
|
117
|
+
id?: string;
|
|
118
|
+
clientMessageId?: string;
|
|
119
|
+
conversationId?: string;
|
|
120
|
+
content: MessageContent | null;
|
|
121
|
+
mentionsAll: boolean;
|
|
122
|
+
mentionedUserIds: string[];
|
|
123
|
+
mentionedUsers: MentionedUser[];
|
|
124
|
+
senderId?: string;
|
|
125
|
+
senderName?: string;
|
|
126
|
+
senderAvatarUrl?: string | null;
|
|
127
|
+
/** Only present on search results — a `ts_headline` excerpt from the backend with the
|
|
128
|
+
* matched term(s) wrapped in SEARCH_HIGHLIGHT_START/END markers (see search-panel.tsx). */
|
|
129
|
+
searchSnippet?: string | null;
|
|
130
|
+
/** Whether `searchSnippet` is missing text before/after it — a "..." belongs on that
|
|
131
|
+
* side only. */
|
|
132
|
+
searchSnippetTruncatedStart?: boolean;
|
|
133
|
+
searchSnippetTruncatedEnd?: boolean;
|
|
134
|
+
sequence?: string;
|
|
135
|
+
createdAt: string;
|
|
136
|
+
status: MessageStatus;
|
|
137
|
+
type: MessageType;
|
|
138
|
+
systemCategory?: MessageSystemCategory | null;
|
|
139
|
+
/** Only set on a batch member-add notice: how many people it named in total, so the
|
|
140
|
+
* collapsed "N người khác" segment can be turned into a button. The names themselves are
|
|
141
|
+
* fetched on demand, never carried in the message. */
|
|
142
|
+
systemMemberCount?: number | null;
|
|
143
|
+
attachmentId?: string | null;
|
|
144
|
+
attachmentName?: string | null;
|
|
145
|
+
attachmentMimeType?: string | null;
|
|
146
|
+
attachmentUrl?: string | null;
|
|
147
|
+
attachmentSizeBytes?: number | null;
|
|
148
|
+
attachments?: ChatMessageAttachment[];
|
|
149
|
+
attachmentIds?: string[];
|
|
150
|
+
replyToId?: string | null;
|
|
151
|
+
replyTo?: MessageReplyPreview | null;
|
|
152
|
+
reactionSummary: ReactionSummary;
|
|
153
|
+
pinnedAt?: string | null;
|
|
154
|
+
pinnedById?: string | null;
|
|
155
|
+
pinnedByName?: string | null;
|
|
156
|
+
removedAt?: string | null;
|
|
157
|
+
removedById?: string | null;
|
|
158
|
+
previewUrl?: string;
|
|
159
|
+
previewUrls?: string[];
|
|
160
|
+
failureStage?: MessageFailureStage;
|
|
161
|
+
file?: File;
|
|
162
|
+
files?: File[];
|
|
163
|
+
}
|
|
164
|
+
export interface ChatUser {
|
|
165
|
+
id?: string;
|
|
166
|
+
userId?: string;
|
|
167
|
+
fullName?: string;
|
|
168
|
+
name?: string;
|
|
169
|
+
displayName?: string;
|
|
170
|
+
account?: string;
|
|
171
|
+
email?: string;
|
|
172
|
+
avatarUrl?: string;
|
|
173
|
+
avatar?: string;
|
|
174
|
+
code?: string;
|
|
175
|
+
jobTitleName?: string;
|
|
176
|
+
/** ERP work status ("Đang làm việc", "Thử việc", "Nghỉ việc", ...) — shown as a badge
|
|
177
|
+
* next to the name in member-picker lists. */
|
|
178
|
+
workStatusName?: string | null;
|
|
179
|
+
[key: string]: unknown;
|
|
180
|
+
}
|
|
181
|
+
export interface ConversationMember {
|
|
182
|
+
id?: string;
|
|
183
|
+
userId?: string;
|
|
184
|
+
role?: string;
|
|
185
|
+
status?: string;
|
|
186
|
+
user?: ChatUser;
|
|
187
|
+
lastReadSequence?: string;
|
|
188
|
+
isOnline?: boolean;
|
|
189
|
+
/** Set when this member has pinned the conversation to the top of their own sidebar. */
|
|
190
|
+
pinnedAt?: string | null;
|
|
191
|
+
[key: string]: unknown;
|
|
192
|
+
}
|
|
193
|
+
export interface ConversationLastMessage {
|
|
194
|
+
id?: string;
|
|
195
|
+
content: MessageContent | null;
|
|
196
|
+
createdAt?: string;
|
|
197
|
+
senderId?: string;
|
|
198
|
+
senderName?: string;
|
|
199
|
+
type?: string;
|
|
200
|
+
attachmentName?: string;
|
|
201
|
+
removedAt?: string | null;
|
|
202
|
+
removedById?: string | null;
|
|
203
|
+
[key: string]: unknown;
|
|
204
|
+
}
|
|
205
|
+
export interface Conversation {
|
|
206
|
+
id?: string;
|
|
207
|
+
type?: string;
|
|
208
|
+
title?: string | null;
|
|
209
|
+
name?: string | null;
|
|
210
|
+
avatarUrl?: string | null;
|
|
211
|
+
lastSequence?: string;
|
|
212
|
+
lastMessage?: ConversationLastMessage | null;
|
|
213
|
+
members?: ConversationMember[];
|
|
214
|
+
participants?: ConversationMember[];
|
|
215
|
+
/** Messages the current user has not read yet, computed server-side. */
|
|
216
|
+
unreadCount?: number;
|
|
217
|
+
/** Verified ("tích xanh") group — destructive actions are locked while true. */
|
|
218
|
+
isVerified?: boolean;
|
|
219
|
+
[key: string]: unknown;
|
|
220
|
+
}
|
|
221
|
+
export interface MessagesWindow {
|
|
222
|
+
messages: unknown[];
|
|
223
|
+
oldestSequence: string | null;
|
|
224
|
+
newestSequence: string | null;
|
|
225
|
+
hasOlderMessages: boolean;
|
|
226
|
+
hasNewerMessages: boolean;
|
|
227
|
+
targetMessageId: string | null;
|
|
228
|
+
}
|
|
229
|
+
export interface MessageContentPart {
|
|
230
|
+
key: string;
|
|
231
|
+
kind: 'text' | 'line_break' | 'mention_all' | 'mention_user';
|
|
232
|
+
value: string;
|
|
233
|
+
userId?: string;
|
|
234
|
+
marks?: MessageMark[];
|
|
235
|
+
}
|
|
236
|
+
export declare const getEntityId: (entity: unknown) => string | null;
|
|
237
|
+
export declare const readUserName: (user: unknown) => string;
|
|
238
|
+
export declare const getInitials: (name: unknown) => string;
|
|
239
|
+
export declare const readUsers: (response: unknown) => unknown[];
|
|
240
|
+
export declare const readConversations: (response: unknown) => unknown[];
|
|
241
|
+
export declare const getConversationTitle: (conversation: unknown, currentUserId?: string | null) => string;
|
|
242
|
+
/** Avatar photo for a conversation row: the conversation's own photo, or for direct chats
|
|
243
|
+
* the other participant's photo, or null to fall back to initials. */
|
|
244
|
+
export declare const getConversationAvatar: (conversation: unknown, currentUserId?: string | null) => string | null;
|
|
245
|
+
export declare const getConversationMessages: (conversation: unknown) => unknown[];
|
|
246
|
+
export declare const readMessages: (response: unknown) => unknown[];
|
|
247
|
+
export declare const readMessagesWindow: (response: unknown) => MessagesWindow;
|
|
248
|
+
export declare const toMessageContent: (editorJson: unknown) => MessageContent | null;
|
|
249
|
+
export declare const normalizeMessageContent: (content: unknown) => MessageContent | null;
|
|
250
|
+
export declare const hasMessageContent: (content: MessageContent | null | undefined) => boolean;
|
|
251
|
+
export declare const getMessageContentParts: (message: unknown) => MessageContentPart[];
|
|
252
|
+
export declare const getMessageContentText: (message: unknown) => string;
|
|
253
|
+
/** Plain text for a SYSTEM message. Its mention nodes only carry the actor/target name, so
|
|
254
|
+
* they drop the "@" a composed mention shows — the same treatment renderSystemMessageContent
|
|
255
|
+
* already gives the timeline, since a leading "@" reads wrong inside a log sentence. Keeping
|
|
256
|
+
* it also broke callers that match the sender name against the start of this text. */
|
|
257
|
+
export declare const getSystemMessageText: (message: unknown) => string;
|
|
258
|
+
/** A removal is permanent: all presentation code must branch on this single predicate. */
|
|
259
|
+
export declare const isMessageRemoved: (message: {
|
|
260
|
+
removedAt?: string | null;
|
|
261
|
+
}) => boolean;
|
|
262
|
+
/** Clears quoted content when the source message has been permanently removed. */
|
|
263
|
+
export declare const applyReplyPreviewTombstone: (preview: MessageReplyPreview, removal: {
|
|
264
|
+
removedAt?: string | null;
|
|
265
|
+
removedById?: string | null;
|
|
266
|
+
}) => MessageReplyPreview;
|
|
267
|
+
/**
|
|
268
|
+
* Removes every field that could render or retain message content while preserving its
|
|
269
|
+
* timeline identity. The server treats removal as terminal, so clients must too.
|
|
270
|
+
*/
|
|
271
|
+
export declare const applyMessageTombstone: (message: ChatMessage, removal: {
|
|
272
|
+
removedAt?: string | null;
|
|
273
|
+
removedById?: string | null;
|
|
274
|
+
}) => ChatMessage;
|
|
275
|
+
/** Narrows the aggregate-only reaction history payload without ever retaining reaction users. */
|
|
276
|
+
export declare const normalizeReactionSummary: (value: unknown) => ReactionSummary;
|
|
277
|
+
export declare const normalizeIncomingMessage: (message: unknown, fallbackConversationId?: string) => ChatMessage;
|
|
278
|
+
/** Formats a byte count as a short human-readable size label (e.g. "2.4 MB"). */
|
|
279
|
+
export declare const formatFileSize: (sizeBytes: number | null | undefined) => string;
|
|
280
|
+
export declare const sortMessagesBySequence: (messages: ChatMessage[]) => ChatMessage[];
|
|
281
|
+
export declare const mergeMessage: (messages: ChatMessage[], nextMessage: ChatMessage) => ChatMessage[];
|
|
282
|
+
export declare const mergeMessages: (currentMessages: ChatMessage[], nextMessages: ChatMessage[]) => ChatMessage[];
|
|
File without changes
|