.chatroom-page{height:calc(100dvh - 72px);overflow:hidden}.chatroom-page>.row{height:100%}.chatroom-page .chat-shell-row,.chatroom-page .chat-shell-col{height:100%;min-height:0}.chatroom-page .chat-shell-col{display:flex}.chatroom-page .chat-shell-col>.chat-container{width:100%}.chatroom-page .chat-toolbar{background:linear-gradient(135deg,#f7fbff,#edf4ff);border-bottom:1px solid #dce7f8!important}.chatroom-page .chat-container{flex-direction:column;height:100%;min-height:0;display:flex}.chatroom-page .chat-body-row{flex:1;grid-template-columns:minmax(0,1fr) 340px;align-items:stretch;min-height:0;display:grid;overflow:hidden}.chatroom-page .chat-main-col{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.chatroom-page .chat-container .chat-messages{flex:1;min-height:0;overflow-y:auto}.chatroom-page .message{overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap;max-width:min(100%,780px)}.chatroom-page .message .message-content{overflow-wrap:anywhere}.chatroom-page .chat-input-footer{z-index:2;background:#fff;flex-shrink:0;position:sticky;bottom:0}.chatroom-page .chat-input-footer .input-group,.chatroom-page .chat-input-footer .form-control{min-width:0}.chatroom-page .chat-side-col{background:#fdfefe;border-left:1px solid #dce7f8;flex-direction:column;min-width:0;min-height:0;display:flex!important}.chatroom-page .chat-side-body{background:linear-gradient(#fff 0%,#f8fbff 100%);height:100%;overflow-y:auto}.chatroom-page .connection-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.chatroom-page .connection-dot.online{background:#16a34a;box-shadow:0 0 0 2px #16a34a33}.chatroom-page .connection-dot.offline{background:#ef4444;box-shadow:0 0 0 2px #ef444426}.chatroom-page .chat-image-preview{cursor:pointer;border:1px solid #dbeafe;border-radius:10px;max-width:260px;max-height:260px}.chatroom-page .chat-file-card{background:#f8fbff;border:1px solid #e2e8f0;border-radius:10px;padding:10px}.chatroom-page .chat-file-card .fw-semibold{overflow-wrap:anywhere;word-break:break-word}.chatroom-page .chat-file-card>.d-flex{flex-wrap:wrap}.chatroom-page .chat-file-card>.d-flex>div:last-child{flex-wrap:wrap;gap:8px;display:flex}.chatroom-page .chat-file-card .btn{min-width:84px}.chatroom-page .attachment-actions{flex-wrap:wrap;gap:8px;display:flex}.chatroom-page .attachment-actions .btn{background:#fff;border-width:1px;min-width:88px;font-weight:600;box-shadow:0 1px 4px #00000038}.chatroom-page .attachment-actions .btn-outline-primary{color:#1d4ed8;border-color:#fff}.chatroom-page .attachment-actions .btn-outline-primary:hover,.chatroom-page .attachment-actions .btn-outline-primary:focus{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.chatroom-page .attachment-actions .btn-outline-success{color:#15803d;border-color:#fff}.chatroom-page .attachment-actions .btn-outline-success:hover,.chatroom-page .attachment-actions .btn-outline-success:focus{color:#fff;background:#15803d;border-color:#15803d}.chatroom-page .file-preview-panel{background:#eff6ff;border:1px dashed #93c5fd;border-radius:12px;padding:12px}.chatroom-page .selected-file-image{border:1px solid #bfdbfe;border-radius:8px;max-width:220px;max-height:220px}.chatroom-page .file-preview-panel .fw-semibold{overflow-wrap:anywhere}.chatroom-page .chat-input-footer .btn{min-height:40px}.chatroom-page .typing-indicator{background:#eef6ff;border:1px dashed #bfd4f2;border-radius:8px;width:fit-content;padding:8px 10px}.chatroom-page .presence-list{max-height:48vh;padding-right:3px;overflow-y:auto}.chatroom-page .message-edit-box .form-control{background:#f8fbff}.chatroom-page .presence-item .fw-semibold{overflow-wrap:anywhere}@media (max-width:1200px){.chatroom-page .chat-body-row{grid-template-columns:minmax(0,1fr) 300px}}@media (max-width:992px){.chatroom-page .chat-body-row{grid-template-columns:minmax(0,1fr);overflow-y:auto}.chatroom-page .chat-side-col{border-top:1px solid #e2e8f0;border-left:0;min-height:240px}}@media (max-width:768px){.chatroom-page{height:calc(100dvh - 64px)}.chatroom-page .chat-body-row{grid-template-columns:minmax(0,1fr)}.chatroom-page .chat-container{height:100%}.chatroom-page .chat-side-col{border-top:1px solid #e2e8f0;border-left:0;width:100%;min-width:0;max-width:none}.chatroom-page .presence-list{max-height:none}.chatroom-page .chat-image-preview,.chatroom-page .selected-file-image{max-width:100%;height:auto}.chatroom-page .chat-file-card>.d-flex{flex-direction:column;gap:8px;align-items:flex-start!important}.chatroom-page .chat-file-card>.d-flex>div:last-child{width:100%}.chatroom-page .chat-file-card .btn,.chatroom-page .attachment-actions .btn{flex:120px}}[data-bs-theme=dark] .chatroom-page .chat-toolbar,[data-bs-theme=dark] .chatroom-page .chat-input-footer,[data-bs-theme=dark] .chatroom-page .chat-side-col,[data-bs-theme=dark] .chatroom-page .chat-side-body,[data-bs-theme=dark] .chatroom-page .chat-file-card,[data-bs-theme=dark] .chatroom-page .file-preview-panel,[data-bs-theme=dark] .chatroom-page .typing-indicator,[data-bs-theme=dark] .chatroom-page .message-edit-box .form-control{background:var(--sg-surface)!important}.chat-composer-input{resize:vertical;min-height:38px;max-height:160px;overflow-y:auto}.chat-table-wrap{background:#7f7f7f1f;border:1px solid #7f7f7f4d;border-radius:6px;max-width:100%;margin:.25rem 0 0;overflow-x:auto}.chat-table{border-collapse:collapse;color:inherit;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.35}.chat-table td{white-space:nowrap;vertical-align:top;border:1px solid #7f7f7f40;padding:3px 8px}.chat-code-block{white-space:pre;background:#7f7f7f26;border:1px solid #7f7f7f4d;border-radius:6px;max-width:100%;margin:.25rem 0 0;padding:.5rem .65rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.35;overflow-x:auto}.attachment-modal-stage{background:#101114;border-radius:6px;justify-content:center;align-items:center;min-height:200px;display:flex}.attachment-modal-media{max-width:100%;max-height:72vh;display:block}.attachment-modal-frame{background:#fff;border:0;width:100%;height:72vh}.chat-modern{--cm-bg:#fff;--cm-ink:#18181b;--cm-ink-2:#71717a;--cm-text:#3f3f46;--cm-accent:#8b5cf6;--cm-accent-bg:#ede9fe;--cm-accent-ink:#7c3aed;--cm-chip-bg:#f4f4f5;--cm-chip-ink:#52525b;--cm-field:#f4f4f5;--cm-border:#e4e4e7;--cm-hover:#0000000a;--cm-online:#10b981;--cm-tick-read:#3b82f6}[data-bs-theme=dark] .chat-modern{--cm-bg:#18181b;--cm-ink:#f4f4f5;--cm-ink-2:#a1a1aa;--cm-text:#d4d4d8;--cm-accent:#a78bfa;--cm-accent-bg:#8b5cf633;--cm-accent-ink:#a78bfa;--cm-chip-bg:#27272a;--cm-chip-ink:#a1a1aa;--cm-field:#27272a;--cm-border:#27272a;--cm-hover:#ffffff0f;--cm-online:#10b981;--cm-tick-read:#3b82f6}.chat-modern .chat-messages{background:var(--cm-bg)}.cm-day{z-index:3;pointer-events:none;justify-content:center;margin:16px 0 8px;display:flex;position:sticky;top:6px}.cm-day-pill{background:var(--cm-chip-bg);color:var(--cm-ink-2);border-radius:999px;padding:4px 12px;font-size:.72rem;font-weight:500;display:inline-block}.cm-row{align-items:flex-end;gap:8px;padding:0 8px;animation:.2s ease-out cm-in;display:flex}.cm-row.own{justify-content:flex-end}.cm-row.cluster-start{margin-top:12px}@keyframes cm-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.cm-row{animation:none}}.cm-avatar-slot{flex:0 0 36px;align-self:flex-end;width:36px}.cm-body{flex-direction:column;min-width:0;max-width:72%;display:flex;position:relative}.cm-row.own .cm-body{align-items:flex-end}@media (max-width:992px){.cm-body{max-width:86%}}.cm-hover-actions{z-index:6;background:var(--cm-bg);border:1px solid var(--cm-border);opacity:0;border-radius:9px;gap:1px;padding:2px;transition:opacity .12s;display:flex;position:absolute;top:-14px;right:4px;box-shadow:0 2px 8px #0000001f}.cm-hover-actions.align-end{left:4px;right:auto}.cm-row:hover .cm-hover-actions{opacity:1}.cm-action-btn{width:26px;height:24px;color:var(--cm-ink-2);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;transition:background .1s,color .1s;display:inline-flex}.cm-action-btn:hover{background:var(--cm-chip-bg);color:var(--cm-accent)}.cm-unread-divider{color:var(--cm-accent);text-transform:uppercase;letter-spacing:.03em;align-items:center;gap:10px;margin:14px 8px 8px;font-size:.72rem;font-weight:600;display:flex}.cm-unread-divider:before,.cm-unread-divider:after{content:"";background:var(--cm-accent);opacity:.35;flex:1;height:1px}.chat-modern .chat-main-col{position:relative}.cm-scroll-btn{z-index:12;background:var(--cm-bg);border:1px solid var(--cm-border);height:38px;color:var(--cm-ink);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:0 8px 0 12px;display:inline-flex;position:absolute;bottom:92px;right:18px;box-shadow:0 4px 16px #00000029}.cm-scroll-btn:hover{color:var(--cm-accent)}.cm-scroll-badge{background:var(--cm-accent);color:#fff;font-variant-numeric:tabular-nums;border-radius:999px;padding:1px 7px;font-size:.72rem;font-weight:700}.cm-meta{align-items:baseline;gap:8px;margin:0 4px 2px;display:flex}.cm-name{color:var(--cm-accent);font-size:.82rem;font-weight:600}.cm-time{color:var(--cm-ink-2);font-size:.75rem}.cm-bubble{background:var(--cm-chip-bg);min-width:0;max-width:100%;color:var(--cm-text);overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap;border-radius:14px;flex-direction:column;padding:7px 11px;font-size:.92rem;line-height:1.4;display:flex}.cm-bubble a{color:var(--cm-accent)}.cm-bubble.deleted{opacity:.65;font-style:italic}.cm-inline-img{cursor:pointer;object-fit:cover;border-radius:10px;max-width:min(280px,100%);max-height:280px;margin-top:6px;display:block}.cm-row.other.cluster-start .cm-bubble{border-top-left-radius:4px}.cm-row.own .cm-bubble{background:var(--cm-accent-bg);color:var(--cm-ink)}.cm-row.own.cluster-start .cm-bubble{border-top-right-radius:4px}.cm-time-inline{color:var(--cm-ink-2);white-space:nowrap;align-self:flex-end;align-items:center;gap:4px;margin-top:3px;font-size:.64rem;display:inline-flex}.cm-ticks{cursor:pointer;display:inline-flex}.cm-ticks.read{color:var(--cm-tick-read)}.chat-avatar{color:#fff;-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex;position:relative}.chat-avatar-dot{border:2px solid var(--cm-bg);border-radius:50%;width:11px;height:11px;position:absolute;bottom:-1px;right:-1px}.chat-avatar-dot.is-online{background:var(--cm-online)}.chat-avatar-dot.is-offline{background:#a1a1aa}.msg-reactions{flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px;display:flex}.msg-reactions.align-end{justify-content:flex-end}.reaction-pill{background:var(--cm-chip-bg);color:var(--cm-chip-ink);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:4px;padding:2px 8px;font-size:.8rem;transition:background .12s;display:inline-flex}.reaction-pill:hover{filter:brightness(.97)}.reaction-pill.mine{background:var(--cm-accent-bg);color:var(--cm-accent-ink)}.reaction-count{font-variant-numeric:tabular-nums}.react-add-wrap{display:inline-flex;position:relative}.reaction-add{width:24px;height:22px;color:var(--cm-ink-2);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;transition:opacity .12s,background .12s;display:inline-flex}.cm-row:hover .reaction-add,.reaction-add:focus-visible{opacity:1}.reaction-add:hover{background:var(--cm-chip-bg);color:var(--cm-accent)}.quick-react{z-index:20;background:var(--cm-bg);border:1px solid var(--cm-border);border-radius:12px;gap:2px;padding:5px;display:flex;position:absolute;bottom:28px;left:0;box-shadow:0 6px 18px #00000024}.quick-react-emoji{cursor:pointer;background:0 0;border:0;border-radius:8px;padding:4px;font-size:1.15rem;line-height:1;transition:transform .1s}.quick-react-emoji:hover{transform:scale(1.2)}.chat-icon-btn{width:40px;height:40px;color:var(--cm-ink-2);cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;transition:color .12s,background .12s;display:inline-flex}.chat-icon-btn:hover,.chat-icon-btn.is-active{color:var(--cm-accent);background:var(--cm-chip-bg)}.chat-icon-btn:disabled,.chat-icon-btn.disabled{opacity:.5;cursor:not-allowed}.emoji-picker-wrap{display:inline-flex;position:relative}.emoji-picker-pop{z-index:60;filter:drop-shadow(0 6px 20px #0000002e);position:absolute;bottom:52px;left:0}.cm-typing{color:var(--cm-ink-2);align-items:center;gap:8px;margin:10px 8px 0;font-size:.82rem;animation:.2s ease-out cm-in;display:inline-flex}.cm-typing-dots{gap:3px;display:inline-flex}.cm-typing-dots i{background:var(--cm-ink-2);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite both cm-blink}.cm-typing-dots i:nth-child(2){animation-delay:.2s}.cm-typing-dots i:nth-child(3){animation-delay:.4s}@keyframes cm-blink{0%,80%,to{opacity:.3}40%{opacity:1}}@media (prefers-reduced-motion:reduce){.cm-typing-dots i{animation:none}}.chat-modern .chat-input-footer{background:var(--cm-bg)}.cm-composer{align-items:center;gap:6px;display:flex}.cm-composer .chat-composer-input{background:var(--cm-field);min-width:0;color:var(--cm-ink);resize:none;border:0;border-radius:10px;flex:auto;padding:10px 14px}.cm-composer .chat-composer-input:focus{box-shadow:0 0 0 1px var(--cm-border);outline:none}.cm-send-btn{background:var(--cm-accent);color:#fff;cursor:pointer;border:0;border-radius:10px;flex:none;justify-content:center;align-items:center;width:42px;height:42px;transition:transform 80ms,filter .12s;display:inline-flex}.cm-send-btn:hover:not(:disabled){filter:brightness(1.05)}.cm-send-btn:active:not(:disabled){transform:scale(.94)}.cm-send-btn:disabled{opacity:.5;cursor:not-allowed}.cm-reply-quote{text-align:left;border:0;border-left:3px solid var(--cm-accent);cursor:pointer;background:0 0;border-radius:5px;width:100%;margin-bottom:5px;padding:3px 8px;display:block;overflow:hidden}.cm-row.own .cm-reply-quote{background:#ffffff59}.cm-row.other .cm-reply-quote{background:#0000000a}[data-bs-theme=dark] .cm-row.own .cm-reply-quote,[data-bs-theme=dark] .cm-row.other .cm-reply-quote{background:#ffffff0f}.cm-reply-quote-name{color:var(--cm-accent-ink);font-size:.72rem;font-weight:600;display:block}.cm-reply-quote-text{color:var(--cm-ink-2);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.76rem;display:block;overflow:hidden}.cm-reply-bar{background:var(--cm-chip-bg);border-left:3px solid var(--cm-accent);border-radius:10px;align-items:center;gap:10px;margin-bottom:8px;padding:8px 12px;animation:.15s ease-out cm-in;display:flex}.cm-reply-bar-body{flex:auto;min-width:0}.cm-reply-bar-title{color:var(--cm-accent-ink);font-size:.74rem;font-weight:600;display:block}.cm-reply-bar-text{color:var(--cm-ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;display:block;overflow:hidden}.cm-reply-bar-close{color:var(--cm-ink-2);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;padding:4px;display:inline-flex}.cm-reply-bar-close:hover{color:var(--cm-accent);background:var(--cm-bg)}.cm-link-card{border:1px solid var(--cm-border);background:var(--cm-bg);max-width:min(360px,100%);color:inherit;border-radius:10px;align-items:stretch;gap:10px;margin-top:6px;text-decoration:none;transition:border-color .12s,background .12s;display:flex;overflow:hidden}.cm-link-card:hover{border-color:var(--cm-accent)}.cm-link-thumb{background:var(--cm-chip-bg);flex:none;width:68px}.cm-link-thumb img{object-fit:cover;width:68px;height:100%;max-height:88px;display:block}.cm-link-body{flex-direction:column;justify-content:center;gap:2px;min-width:0;padding:8px 10px;display:flex}.cm-link-site{text-transform:uppercase;letter-spacing:.03em;color:var(--cm-accent-ink);font-size:.68rem}.cm-link-title{color:var(--cm-ink);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.84rem;font-weight:600;display:-webkit-box;overflow:hidden}.cm-link-desc{color:var(--cm-ink-2);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.76rem;display:-webkit-box;overflow:hidden}.cm-row.cm-flash .cm-bubble{animation:1.1s ease-out cm-flash}@keyframes cm-flash{0%{box-shadow:0 0 0 3px var(--cm-accent)}to{box-shadow:0 0 0 3px #0000}}@media (prefers-reduced-motion:reduce){.cm-reply-bar,.cm-row.cm-flash .cm-bubble{animation:none}}.direct-messages-page{background:var(--cm-bg,#fff);min-height:calc(100vh - 80px)}.direct-messages-page .card{border:1px solid var(--cm-border,#e4e4e7);background:var(--cm-bg,#fff);border-radius:14px}.direct-messages-page .card-header{background:var(--cm-bg,#fff);color:var(--cm-ink,#18181b);border-bottom:1px solid var(--cm-border,#e4e4e7)}.direct-contact-list .status-dot{border-radius:50%;width:10px;height:10px}.dm-contact-filters{gap:.5rem;display:grid}.dm-contact-filters .form-select{border-color:#94a3b873}.status-dot.online{background:#22c55e}.status-dot.offline{background:#94a3b8}.dm-chat-card{min-height:70vh;position:relative;overflow:hidden}.dm-messages{background:var(--cm-bg,#fff);height:56vh;min-height:340px;padding:0 1.5rem 1rem;overflow-y:auto}.dm-message{color:#e5e7eb;overflow-wrap:anywhere;word-break:break-word;white-space:pre-wrap;background:#111827;border:1px solid #ffffff0d;border-radius:10px;margin-bottom:.75rem;padding:.75rem;box-shadow:0 6px 14px #00000038}.dm-message.own{background:#1e3a8a;border-color:#3b82f64d}.dm-attachment{border:1px solid var(--sg-border,#e6e8ec);background:var(--sg-surface,#fff);color:var(--sg-text,#1e293b);border-radius:var(--sg-radius-sm,10px);box-shadow:var(--sg-shadow-sm,0 1px 3px #1018281f);padding:.7rem .8rem}.dm-attachment .fw-semibold{overflow-wrap:anywhere;color:var(--sg-text,#1e293b)}.dm-attachment .btn{min-width:86px;font-weight:600}.dm-input-footer{background:var(--sg-surface,#fff);border-top:1px solid var(--sg-border,#00000014);padding:.85rem 1rem}.dm-composer{align-items:stretch;gap:8px;display:flex}.dm-composer-input.form-control{background:var(--sg-surface-2,#fff);min-width:0;color:var(--sg-text,#1e293b);border-color:var(--sg-border,#00000026);border-radius:10px;flex:auto}.dm-composer-input.form-control::placeholder{color:var(--sg-text-subtle,#94a3b8)}.dm-attach-btn.btn{white-space:nowrap;cursor:pointer;border-radius:10px;flex:none;align-items:center;gap:6px;font-weight:600;display:inline-flex}.dm-attach-icon{flex:none}.dm-send-btn.btn{border-radius:10px;flex:none;min-width:84px;font-weight:600}.dm-composer-hint{color:var(--sg-text-subtle,#94a3b8);margin-top:6px;font-size:.78rem}.dm-file-chip{border:1px solid var(--sg-border,#0000001f);background:var(--sg-surface-2,#00000005);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:.5rem .75rem;display:flex}.dm-file-chip-info{flex-direction:column;min-width:0;display:flex}.dm-file-chip-name{overflow-wrap:anywhere;font-weight:600}@media (max-width:992px){.dm-chat-card{min-height:64vh}.dm-messages{height:330px;padding:0 1rem .85rem}}@media (max-width:768px){.direct-messages-page{min-height:calc(100vh - 64px)}.dm-messages{height:300px;padding:0 .85rem .75rem}.dm-attachment .btn{margin-top:6px}.dm-file-chip{flex-wrap:wrap;gap:10px}}[data-bs-theme=dark] .dm-input-footer .form-control::placeholder{color:var(--sg-text-muted)!important}[data-bs-theme=dark] .dm-file-chip{background:var(--sg-surface-2)!important}
