@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.
Files changed (119) hide show
  1. package/README.md +103 -0
  2. package/dist/api/client.d.ts +5 -0
  3. package/dist/features/composer/attachment-file-helpers.d.ts +22 -0
  4. package/dist/features/composer/attachments/attachment-buttons.d.ts +8 -0
  5. package/dist/features/composer/conversation-composer.d.ts +20 -0
  6. package/dist/features/composer/editor/font-size-extension.d.ts +18 -0
  7. package/dist/features/composer/editor/mention-suggestion-list.d.ts +15 -0
  8. package/dist/features/composer/editor/paste-text-style.d.ts +5 -0
  9. package/dist/features/composer/emoji/emoji-picker-button.d.ts +9 -0
  10. package/dist/features/composer/emoji/emoji-shortcode-extension.d.ts +9 -0
  11. package/dist/features/composer/emoji/emoji-shortcodes.d.ts +2 -0
  12. package/dist/features/composer/format-bar/format-bar.d.ts +14 -0
  13. package/dist/features/composer/more-menu/more-menu.d.ts +4 -0
  14. package/dist/features/composer/pending-attachment.d.ts +10 -0
  15. package/dist/features/composer/reply/composer-reply-banner.d.ts +11 -0
  16. package/dist/features/composer/reply/use-reply-target.d.ts +12 -0
  17. package/dist/features/composer/stickers.d.ts +6 -0
  18. package/dist/features/composer/toolbar/composer-toolbar.d.ts +19 -0
  19. package/dist/features/composer/typing/use-typing-notifier.d.ts +11 -0
  20. package/dist/features/composer/use-attachment-upload.d.ts +4 -0
  21. package/dist/features/composer/use-pending-attachments.d.ts +16 -0
  22. package/dist/features/create-conversation/create-conversation-panel.d.ts +9 -0
  23. package/dist/features/create-conversation/tabs/create-group-tab.d.ts +13 -0
  24. package/dist/features/create-conversation/tabs/direct-chat-tab.d.ts +12 -0
  25. package/dist/features/create-conversation/tabs/selected-members-modal.d.ts +11 -0
  26. package/dist/features/files/file-attachment.d.ts +24 -0
  27. package/dist/features/forward/forward-dialog.d.ts +11 -0
  28. package/dist/features/forward/use-forward-message.d.ts +21 -0
  29. package/dist/features/media-preview/media-preview-modal.d.ts +23 -0
  30. package/dist/features/media-preview/use-image-lightbox.d.ts +16 -0
  31. package/dist/features/message-list/bubble/message-actions/message-actions-menu.d.ts +27 -0
  32. package/dist/features/message-list/bubble/message-bubble.d.ts +53 -0
  33. package/dist/features/message-list/bubble/message-content-body.d.ts +12 -0
  34. package/dist/features/message-list/bubble/message-reactions.d.ts +18 -0
  35. package/dist/features/message-list/bubble/rich-message-content.d.ts +8 -0
  36. package/dist/features/message-list/overlays/message-details/message-details-modal.d.ts +16 -0
  37. package/dist/features/message-list/overlays/message-details/use-message-details-modal.d.ts +14 -0
  38. package/dist/features/message-list/overlays/message-menu/use-message-menu.d.ts +21 -0
  39. package/dist/features/message-list/overlays/reaction/reaction-modal.d.ts +22 -0
  40. package/dist/features/message-list/overlays/reaction/use-reaction-modal.d.ts +23 -0
  41. package/dist/features/message-list/overlays/reaction/use-reaction-picker.d.ts +8 -0
  42. package/dist/features/message-list/overlays/system-members/system-members-modal.d.ts +22 -0
  43. package/dist/features/message-list/overlays/system-members/use-system-members-modal.d.ts +18 -0
  44. package/dist/features/message-list/use-message-removal.d.ts +12 -0
  45. package/dist/features/message-list/use-message-timeline-scroll.d.ts +25 -0
  46. package/dist/features/message-window/use-message-window.d.ts +46 -0
  47. package/dist/features/pinned-messages/pinned-messages-bar.d.ts +18 -0
  48. package/dist/features/pinned-messages/use-pinned-messages.d.ts +21 -0
  49. package/dist/features/typing/use-typing-indicator.d.ts +12 -0
  50. package/dist/index.cjs +278 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +66322 -0
  53. package/dist/module/chat-module.d.ts +3 -0
  54. package/dist/module/chat-module.types.d.ts +11 -0
  55. package/dist/module/chat-routes.d.ts +4 -0
  56. package/dist/module/chat-runtime-context.d.ts +5 -0
  57. package/dist/pages/Setting/archive/archive-attachment-preview.d.ts +13 -0
  58. package/dist/pages/Setting/archive/archive-file-list.d.ts +15 -0
  59. package/dist/pages/Setting/archive/archive-helpers.d.ts +37 -0
  60. package/dist/pages/Setting/archive/archive-media-grid.d.ts +14 -0
  61. package/dist/pages/Setting/archive/archive-view.d.ts +19 -0
  62. package/dist/pages/Setting/archive/hooks/use-conversation-archive.d.ts +22 -0
  63. package/dist/pages/Setting/conversation-settings-panel.d.ts +20 -0
  64. package/dist/pages/Setting/hooks/use-conversation-settings.d.ts +41 -0
  65. package/dist/pages/Setting/hooks/use-search-panel.d.ts +7 -0
  66. package/dist/pages/Setting/index.d.ts +39 -0
  67. package/dist/pages/Setting/members/add-member-modal.d.ts +11 -0
  68. package/dist/pages/Setting/members/group-members-modal.d.ts +21 -0
  69. package/dist/pages/Setting/members/hooks/use-rename-group-dialog.d.ts +15 -0
  70. package/dist/pages/Setting/members/member-selection-footer.d.ts +12 -0
  71. package/dist/pages/Setting/members/members-list-modal.d.ts +29 -0
  72. package/dist/pages/Setting/members/settings-modal.d.ts +36 -0
  73. package/dist/pages/Setting/members/use-member-selection.d.ts +18 -0
  74. package/dist/pages/Setting/search-panel.d.ts +13 -0
  75. package/dist/pages/conversation/conversation-detail/conversation-detail.d.ts +92 -0
  76. package/dist/pages/conversation/conversation-footer/conversation-footer.d.ts +42 -0
  77. package/dist/pages/conversation/conversation-header/conversation-header.d.ts +27 -0
  78. package/dist/pages/conversation/hooks/use-current-membership.d.ts +14 -0
  79. package/dist/pages/conversation/index.d.ts +28 -0
  80. package/dist/pages/conversations/empty-state/conversation-empty-state.d.ts +3 -0
  81. package/dist/pages/conversations/index.d.ts +4 -0
  82. package/dist/pages/sidebar/hooks/use-conversations.d.ts +17 -0
  83. package/dist/pages/sidebar/index.d.ts +4 -0
  84. package/dist/pages/sidebar/sidbar-conversation-list/sidbar-conversation-list.d.ts +13 -0
  85. package/dist/pages/sidebar/sidebar-filter/sidebar-filter.d.ts +13 -0
  86. package/dist/pages/sidebar/sidebar-header-infor/sidebar-header-infor.d.ts +4 -0
  87. package/dist/shared/components/banner-carousel.d.ts +9 -0
  88. package/dist/shared/components/conversation-avatar.d.ts +19 -0
  89. package/dist/shared/components/date-range-filter-pill.d.ts +17 -0
  90. package/dist/shared/components/download-action.d.ts +11 -0
  91. package/dist/shared/components/filter-pill.d.ts +15 -0
  92. package/dist/shared/components/image-not-available.d.ts +12 -0
  93. package/dist/shared/components/image-with-fallback.d.ts +13 -0
  94. package/dist/shared/components/load-more-sentinel.d.ts +15 -0
  95. package/dist/shared/components/quote-icon.d.ts +5 -0
  96. package/dist/shared/components/search-empty-state.d.ts +8 -0
  97. package/dist/shared/components/shared-icon.d.ts +5 -0
  98. package/dist/shared/components/user-avatar.d.ts +12 -0
  99. package/dist/shared/components/user-profile-modal.d.ts +13 -0
  100. package/dist/shared/components/verified-badge.d.ts +5 -0
  101. package/dist/shared/helper/dayjs-date-picker.d.ts +14 -0
  102. package/dist/shared/hooks/use-directory-filter.d.ts +13 -0
  103. package/dist/shared/hooks/use-user-profile-modal.d.ts +9 -0
  104. package/dist/socket/chatSocket.d.ts +6 -0
  105. package/dist/store/authStore.d.ts +34 -0
  106. package/dist/store/connectionStore.d.ts +8 -0
  107. package/dist/store/conversationsStore.d.ts +38 -0
  108. package/dist/store/forwardStore.d.ts +14 -0
  109. package/dist/store/pinnedMessagesStore.d.ts +16 -0
  110. package/dist/store/presenceStore.d.ts +11 -0
  111. package/dist/store/verifiedPermissionsStore.d.ts +20 -0
  112. package/dist/styles.css +2 -0
  113. package/dist/utils/chat-display.d.ts +44 -0
  114. package/dist/utils/chat-member-resolvers.d.ts +9 -0
  115. package/dist/utils/chat-toast.d.ts +18 -0
  116. package/dist/utils/chat.d.ts +282 -0
  117. package/dist/utils/token.d.ts +0 -0
  118. package/dist/utils/work-status.d.ts +15 -0
  119. package/package.json +96 -0
@@ -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