Files

1278 lines
24 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Direct chat screen and composer/message styles. */
.chat-header-icon-btn {
min-width: 44px;
width: 44px;
min-height: 44px;
height: 44px;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 20px;
line-height: 1;
}
.chat-header-call-btn {
border-radius: 12px;
}
.chat-header-menu-btn {
border-radius: 12px;
font-size: 24px;
}
.chat-unread-separator {
display: flex;
align-items: center;
gap: 10px;
margin: 8px 0;
color: #9ab0de;
font-size: 12px;
}
.chat-unread-separator::before,
.chat-unread-separator::after {
content: "";
flex: 1 1 auto;
height: 1px;
background: linear-gradient(90deg, rgba(126, 150, 199, 0.12), rgba(126, 150, 199, 0.45), rgba(126, 150, 199, 0.12));
}
.chat-unread-separator > span {
white-space: nowrap;
}
.bubble {
max-width: 76%;
padding: 10px 12px;
border-radius: 14px;
font-size: 14px;
line-height: 1.35;
}
.bubble-text {
white-space: pre-wrap;
word-break: break-word;
}
.bubble-reply-preview {
display: block;
width: 100%;
margin: 0 0 8px;
padding: 8px 10px;
border-radius: 10px;
text-align: left;
cursor: pointer;
}
.bubble-reply-preview-author {
font-size: 12px;
font-weight: 700;
color: rgba(250, 221, 155, 0.94);
}
.bubble-reply-preview-text {
margin-top: 3px;
font-size: 12px;
line-height: 1.3;
color: rgba(223, 233, 250, 0.86);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.bubble-meta {
margin-top: 4px;
display: flex;
justify-content: flex-end;
align-items: center;
gap: 5px;
font-size: 9px;
line-height: 1.1;
color: rgba(198, 214, 247, 0.78);
}
.bubble-meta-edited {
margin-top: 3px;
justify-content: flex-end;
color: rgba(235, 208, 137, 0.88);
}
.bubble-time {
letter-spacing: 0.01em;
}
.bubble-status {
min-width: 14px;
text-align: right;
color: rgba(148, 163, 184, 0.92);
}
.bubble-status--delivered,
.bubble-status--read {
color: rgba(215, 230, 255, 0.96);
text-shadow: 0 0 6px rgba(126, 180, 255, 0.36);
}
.bubble-status--failed {
color: rgba(255, 145, 145, 0.96);
}
.bubble-delivery-note {
max-width: 280px;
margin-top: 6px;
font-size: 10px;
line-height: 1.3;
color: rgba(255, 220, 142, 0.92);
}
.bubble-delivery-note--failed {
color: rgba(255, 145, 145, 0.96);
}
.bubble.in {
justify-self: start;
background: #1f2c46;
border-top-left-radius: 6px;
}
.bubble.out {
justify-self: end;
background: #273f63;
border-top-right-radius: 6px;
}
.bubble.call-tech {
max-width: 90%;
justify-self: center;
border-radius: 16px;
border: 1px solid rgba(132, 170, 231, 0.28);
background: rgba(24, 36, 58, 0.72);
color: #dce8ff;
font-size: 12px;
padding: 12px 14px;
}
.bubble-call-card {
display: grid;
min-width: min(280px, 72vw);
}
.bubble-call-head {
display: inline-flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.bubble-call-icon {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
color: #d9ecff;
flex: 0 0 auto;
}
.bubble-call-icon-phone {
font-size: 28px;
line-height: 1;
transform: translateY(-1px);
}
.bubble-call-icon-arrow {
position: absolute;
right: 4px;
bottom: 3px;
font-size: 10px;
line-height: 1;
font-weight: 700;
}
.bubble-call-icon--incoming .bubble-call-icon-arrow {
color: rgba(167, 225, 255, 0.98);
}
.bubble-call-icon--outgoing .bubble-call-icon-arrow {
color: rgba(255, 214, 132, 0.98);
}
.bubble-call-title {
font-size: 14px;
font-weight: 700;
color: #eef6ff;
line-height: 1.2;
}
.bubble-call-line {
font-size: 12px;
line-height: 1.2;
margin-left: 2px;
}
.bubble-call-line--success {
color: #7ee19e;
}
.bubble-call-line--plain {
color: rgba(230, 240, 255, 0.94);
}
.message-attachments {
display: grid;
gap: 0.5rem;
}
.message-attachment-carousel {
gap: 0.35rem;
margin: 0.5rem 0 0.4rem;
max-width: min(100%, 34rem);
}
.message-attachment-carousel-viewport {
align-items: center;
background: linear-gradient(135deg, rgba(15, 23, 42, 0.05), rgba(20, 184, 166, 0.08));
border: 1px solid rgba(15, 23, 42, 0.1);
border-radius: 1.15rem;
display: grid;
min-height: 12rem;
overflow: hidden;
position: relative;
touch-action: pan-y;
}
.message-attachment-carousel-viewport.has-landscape-media {
align-items: start;
min-height: 0;
}
.message-attachment-slide {
align-items: stretch;
display: grid;
min-height: 12rem;
}
.message-attachment-slide.has-landscape-media {
min-height: 0;
}
.message-attachment-arrow {
align-items: center;
border-radius: 999px;
cursor: pointer;
display: inline-flex;
font-size: 1.85rem;
height: 2.35rem;
justify-content: center;
line-height: 1;
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 2.35rem;
z-index: 2;
}
.message-attachment-arrow[hidden] {
display: none;
}
.message-attachment-arrow:disabled {
cursor: default;
opacity: 0.28;
}
.message-attachment-arrow--prev {
left: 0.55rem;
}
.message-attachment-arrow--next {
right: 0.55rem;
}
.message-attachment-counter {
color: #64748b;
font-size: 0.78rem;
text-align: center;
}
.message-attachment-media-frame {
align-items: center;
background: #0f172a;
cursor: zoom-in;
display: grid;
min-height: 12rem;
overflow: hidden;
position: relative;
}
.message-attachment-media-frame.is-landscape {
min-height: 0;
}
.message-attachment-media {
display: block;
height: min(52vh, 20rem);
max-height: 20rem;
object-fit: contain;
width: 100%;
}
.message-attachment-media.is-landscape {
height: auto;
}
.message-attachment-play {
align-items: center;
background: rgba(15, 23, 42, 0.72);
border: 1px solid rgba(255, 255, 255, 0.25);
border-radius: 999px;
color: #fff;
display: inline-flex;
font-size: 1.7rem;
height: 4rem;
justify-content: center;
left: 50%;
padding-left: 0.18rem;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
width: 4rem;
}
.message-attachment-download {
background: rgba(20, 184, 166, 0.95);
border-radius: 999px;
color: #fff;
font-size: 0.82rem;
font-weight: 700;
padding: 0.45rem 0.75rem;
position: relative;
text-decoration: none;
width: max-content;
z-index: 3;
}
.message-attachment-media-frame > .message-attachment-download {
bottom: 0.75rem;
position: absolute;
right: 0.75rem;
}
.message-attachment-file-card {
align-items: center;
background: linear-gradient(135deg, rgba(15, 23, 42, 0.94), rgba(30, 41, 59, 0.94));
border: 1px solid rgba(20, 184, 166, 0.28);
border-radius: 0.8rem;
color: #f8fafc;
cursor: pointer;
display: grid;
gap: 0.55rem;
grid-template-columns: auto minmax(0, 1fr);
min-height: 3.25rem;
padding: 0.55rem 0.7rem;
}
.message-attachment-file-ext {
align-items: center;
background: rgba(20, 184, 166, 0.95);
border-radius: 999px;
color: #fff;
display: inline-flex;
font-size: 0.72rem;
font-weight: 800;
height: 1.7rem;
justify-content: center;
min-width: 3.25rem;
padding: 0 0.55rem;
}
.message-attachment-file-main {
display: grid;
gap: 0.08rem;
min-width: 0;
}
.message-attachment-file-main .message-attachment-meta {
color: #cbd5e1;
}
.message-attachment-unavailable {
align-items: center;
background: linear-gradient(135deg, rgba(254, 242, 242, 0.96), rgba(255, 247, 237, 0.96));
color: #7f1d1d;
display: flex;
font-weight: 700;
justify-content: center;
min-height: 12rem;
padding: 1.25rem;
text-align: center;
}
.message-attachment-card {
align-items: center;
background: linear-gradient(135deg, rgba(240, 253, 250, 0.95), rgba(239, 246, 255, 0.95));
border: 1px solid rgba(20, 184, 166, 0.25);
border-radius: 1rem;
color: #0f172a;
display: flex;
gap: 0.7rem;
padding: 0.75rem 0.85rem;
text-decoration: none;
}
.message-attachment-icon {
align-items: center;
background: #0f766e;
border-radius: 0.8rem;
color: #fff;
display: inline-flex;
flex: 0 0 auto;
height: 2.1rem;
justify-content: center;
width: 2.1rem;
}
.message-attachment-main {
display: grid;
min-width: 0;
}
.message-attachment-name {
font-weight: 700;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.message-attachment-meta {
color: #64748b;
font-size: 0.78rem;
overflow-wrap: anywhere;
}
@media (max-width: 640px) {
.message-attachment-carousel {
max-width: 100%;
}
.message-attachment-carousel-viewport,
.message-attachment-slide,
.message-attachment-media-frame,
.message-attachment-unavailable {
min-height: 10rem;
}
.message-attachment-media {
height: min(42vh, 16rem);
}
.message-attachment-file-card {
grid-template-columns: auto minmax(0, 1fr);
}
.message-attachment-file-card .message-attachment-download {
grid-column: 1 / -1;
}
}
.dm-chat-wrap {
gap: 12px;
}
.dm-chat-screen {
display: flex;
flex-direction: column;
min-height: 0;
gap: 12px;
}
.dm-chat-screen > .dm-chat-wrap {
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
}
.dm-chat-composer {
position: sticky;
bottom: 0;
z-index: 12;
flex: 0 0 auto;
}
.screen-content:has(> .dm-chat-screen) > .dm-chat-screen {
flex: 1 1 auto;
min-height: 0;
}
.screen-content:has(> .dm-chat-screen) {
display: flex;
flex-direction: column;
overflow: hidden;
padding-top: 0;
padding-bottom: 0;
scrollbar-width: none;
-ms-overflow-style: none;
}
.screen-content:has(> .dm-chat-screen)::-webkit-scrollbar {
width: 0;
height: 0;
display: none;
}
.dm-messages-log {
gap: 10px;
}
.dm-screen .bubble {
max-width: 78%;
padding: 11px 14px;
line-height: 1.42;
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.32);
}
.dm-screen .bubble.in {
justify-self: start;
border-radius: 18px 18px 18px 4px;
border: 1px solid rgba(255, 255, 255, 0.12);
background: rgba(20, 25, 35, 0.58);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
.dm-screen .bubble.out {
justify-self: end;
border-radius: 18px 18px 4px 18px;
border: 1px solid rgba(83, 216, 251, 0.4);
background: rgba(83, 216, 251, 0.16);
color: rgba(225, 248, 255, 0.97);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
}
.dm-edit-banner {
grid-column: 1 / -1;
display: grid;
grid-template-columns: 1fr auto;
align-items: start;
gap: 10px;
padding: 10px 12px;
border-radius: 14px;
border: 1px solid transparent;
background: rgba(212, 175, 55, 0.12);
color: rgba(255, 233, 176, 0.96);
box-shadow: 0 10px 22px rgba(0, 0, 0, 0.22);
}
.dm-edit-banner[hidden] {
display: none;
}
.dm-edit-banner__text {
min-width: 0;
font-size: 12px;
line-height: 1.35;
white-space: pre-line;
overflow: hidden;
}
.dm-edit-banner__close {
min-width: 30px;
width: 30px;
height: 30px;
padding: 0;
border-radius: 10px;
}
.dm-chat-input--multiline .dm-actions-col {
grid-template-columns: 46px;
grid-template-rows: repeat(2, 46px);
grid-template-areas:
"emoji"
"send";
}
.dm-emoji-btn {
grid-area: emoji;
min-width: 46px;
width: 46px;
padding: 0;
line-height: 1;
}
.dm-emoji-btn__glyph {
display: inline-grid;
place-items: center;
width: 100%;
height: 100%;
font-size: 27px;
line-height: 1;
}
.bubble.bubble--emoji-only,
.dm-screen .bubble.bubble--emoji-only {
padding: 0;
border: 0;
background: transparent;
box-shadow: none;
backdrop-filter: none;
-webkit-backdrop-filter: none;
color: inherit;
}
.bubble.bubble--emoji-only.in,
.dm-screen .bubble.bubble--emoji-only.in,
.bubble.bubble--emoji-only.out,
.dm-screen .bubble.bubble--emoji-only.out {
border: 0;
background: transparent;
}
.bubble.bubble--emoji-only .bubble-meta {
margin-top: 2px;
padding: 0 4px;
color: rgba(198, 214, 247, 0.72);
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.bubble-text--twemoji-only {
font-size: 56px;
line-height: 1;
}
.bubble-text--twemoji-only .chat-twemoji {
width: 1em;
height: 1em;
}
.dm-chat-input .dm-input {
min-height: 42px;
max-height: 180px;
width: 100%;
min-width: 0;
resize: none;
overflow-y: auto;
scrollbar-width: none;
-ms-overflow-style: none;
line-height: 1.35;
padding: 10px 12px;
}
.dm-chat-input--multiline .dm-input {
padding-right: 14px;
}
.dm-chat-input .dm-input::-webkit-scrollbar {
width: 0;
height: 0;
}
.dm-input {
background: rgba(255, 255, 255, 0.04);
border: 1px solid transparent;
border-radius: 14px;
color: rgba(255, 255, 255, 0.92);
}
.dm-input::placeholder {
color: rgba(255, 255, 255, 0.42);
}
.dm-send-btn {
background: rgba(212, 175, 55, 0.2);
border: 1px solid transparent;
color: rgba(255, 217, 128, 0.98);
border-radius: 14px;
font-weight: 700;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);
}
.dm-send-icon-btn {
grid-area: send;
min-width: 46px;
width: 46px;
padding: 0;
font-size: 15px;
line-height: 1;
}
.dm-message-actions-popover {
position: fixed;
left: 12px;
top: 12px;
margin: 0;
pointer-events: auto;
opacity: 0;
transform: translateY(8px) scale(0.98);
transition: opacity 120ms ease, transform 120ms ease;
box-shadow: 0 18px 34px rgba(0, 0, 0, 0.42);
}
.dm-message-actions-popover.is-visible {
opacity: 1;
transform: translateY(0) scale(1);
}
.dm-message-action-btn {
width: 100%;
min-height: 42px;
justify-content: flex-start;
padding: 0 14px;
border-radius: 12px;
}
.dm-message-action-btn--danger {
color: rgba(255, 182, 182, 0.98);
border-color: rgba(255, 120, 120, 0.3);
background: rgba(112, 28, 28, 0.22);
}
/* Чат: в центре только компактная идентичность собеседника. */
.chat-header-identity {
min-width: 0;
max-width: 132px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
}
.chat-header-avatar-slot {
width: 40px;
height: 40px;
min-width: 40px;
min-height: 40px;
display: inline-flex;
align-items: center;
justify-content: center;
}
.chat-header-avatar.avatar,
.chat-header-avatar.avatar-image {
width: 40px;
height: 40px;
min-width: 40px;
min-height: 40px;
font-size: 14px;
border: 0;
box-shadow: none;
}
/* Фиксированная высота, а не только min-height: при смене основных вкладок
* верхняя граница контента больше не меняется из-за локальной шапки страницы. */
/* Один и тот же текстовый ритм на Контактах / Каналах / Связях /
* Уведомлениях / Профиле и вложенных экранах. */
/* В списке контактов логин слева также остаётся в общей палитре шапки. */
/* Все интерактивные элементы верхней шапки имеют одинаковую рабочую высоту. */
/* Личный чат: аватар остаётся компактным, логин теперь равен общему 18px. */
.chat-header-identity {
max-width: 176px;
gap: 8px;
}
/* Личный чат: логин остаётся строго в центральной колонке,
* аватар живёт отдельно в левой колонке рядом со стрелкой назад. */
.chat-header-login {
min-width: 0;
font-family: var(--font-main);
font-size: 18px;
line-height: 22px;
font-weight: 700;
color: var(--app-topbar-gold);
text-shadow: 0 0 5px var(--app-topbar-blue-glow),
0 0 14px var(--app-topbar-blue-glow-soft);
display: block;
max-width: min(42vw, 180px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: center;
}
.chat-header-avatar-slot--left {
flex: 0 0 28px;
margin-left: 0;
}
.chat-header-connections-btn,
.chat-header-avatar-btn {
padding: 0;
min-width: 0;
min-height: 0;
border: 0;
background: transparent;
box-shadow: none;
transform: none;
}
.chat-header-connections-btn:hover,
.chat-header-connections-btn:active,
.chat-header-connections-btn:focus,
.chat-header-connections-btn:focus-visible,
.chat-header-avatar-btn:hover,
.chat-header-avatar-btn:active,
.chat-header-avatar-btn:focus,
.chat-header-avatar-btn:focus-visible {
border: 0;
background: transparent;
box-shadow: none;
transform: none;
}
.chat-header-connections-btn {
width: 38px;
height: 38px;
border-radius: 999px;
display: inline-flex;
align-items: center;
justify-content: center;
background: rgba(8, 17, 31, 0.65);
border: 1px solid rgba(97, 198, 255, 0.26);
box-shadow: 0 0 0 1px rgba(97, 198, 255, 0.08), 0 0 12px rgba(64, 172, 255, 0.18);
}
.chat-header-connections-btn:hover,
.chat-header-connections-btn:focus-visible {
border-color: rgba(111, 208, 255, 0.38);
box-shadow: 0 0 0 1px rgba(111, 208, 255, 0.16), 0 0 16px rgba(64, 172, 255, 0.28);
}
.chat-header-connections-logo {
width: 24px;
height: 24px;
object-fit: contain;
display: block;
}
.chat-header-avatar-btn {
display: inline-flex;
align-items: center;
justify-content: center;
}
.chat-header-avatar-btn .chat-header-avatar-slot {
display: inline-flex;
}
/* Пузырям сообщений не нужна отдельная обводка: направление читается по фону и геометрии. */
.dm-chat-screen .bubble,
.dm-chat-screen .bubble.in,
.dm-chat-screen .bubble.out,
.dm-chat-screen .bubble.call-tech {
border: 0;
}
.dm-chat-screen .bubble-reply-preview {
border: 0;
}
/* Нижняя панель чата повторяет бело-голубую цветовую роль верхнего toolbar вместо золота. */
.dm-chat-input .dm-input {
border-color: rgba(247, 251, 255, 0.12);
color: var(--app-topbar-gold);
text-shadow:
0 0 4px rgba(92, 190, 255, 0.34),
0 0 10px rgba(72, 145, 255, 0.16);
caret-color: var(--app-topbar-gold);
}
.dm-chat-input .dm-input:focus {
border-color: rgba(92, 190, 255, 0.28);
box-shadow: 0 0 0 1px rgba(92, 190, 255, 0.08);
}
.dm-chat-input .dm-input::placeholder {
color: rgba(247, 251, 255, 0.46);
text-shadow: none;
}
.dm-chat-input .dm-emoji-btn,
.dm-chat-input .dm-send-btn,
.dm-chat-input .dm-edit-banner__close {
color: var(--app-topbar-gold);
text-shadow:
0 0 5px var(--app-topbar-blue-glow),
0 0 12px var(--app-topbar-blue-glow-soft);
filter: drop-shadow(0 0 4px rgba(92, 190, 255, 0.42));
}
.dm-chat-input .dm-send-btn {
border-color: rgba(247, 251, 255, 0.12);
background: rgba(92, 190, 255, 0.08);
box-shadow: none;
}
.dm-chat-input .dm-edit-banner {
border-color: rgba(92, 190, 255, 0.18);
background: rgba(92, 190, 255, 0.08);
color: var(--app-topbar-gold);
}
.dm-chat-input .emoji-picker-tab.is-active {
background: rgba(92, 190, 255, 0.12);
}
/* Composer должен быть продолжением основного фона: без верхнего разделителя
* и без отдельной затемнённой/стеклянной подложки. */
/* ===== Feature geometry around the centralized App Shell ===== */
/* DM: shell рисует global fade, а внутренний scroll-container только резервирует
* место под TopBar/Composer, не реализуя собственное глобальное затухание. */
.app-shell--scroll-nested .dm-chat-screen > .dm-chat-wrap {
box-sizing: border-box;
padding-top: calc(var(--topbar-height, 64px) + 12px);
padding-bottom: calc(var(--composer-height, 0px) + 52px);
}
/* Один визуальный язык для меню профиля, чатов и каналов. */
.dm-message-action-btn {
width: 100%;
min-height: 42px;
padding: 0 11px;
display: flex;
align-items: center;
justify-content: flex-start;
gap: 10px;
border: 0;
border-radius: 10px;
background: transparent;
color: #f4f8ff;
font: inherit;
font-size: 14px;
font-weight: 600;
line-height: 1.2;
text-align: left;
white-space: nowrap;
}
.dm-message-action-btn:hover,
.dm-message-action-btn:focus-visible {
outline: none;
background: rgba(39, 141, 255, 0.12);
}
.dm-message-action-btn--danger {
color: #ffb7c5;
background: transparent;
}
.dm-message-actions-menu {
min-width: 196px;
padding: 6px;
gap: 2px;
border: 1px solid rgba(92, 190, 255, 0.22);
border-radius: 16px;
background: linear-gradient(155deg, rgba(19, 27, 42, 0.97), rgba(7, 12, 22, 0.98));
box-shadow: 0 18px 42px rgba(0, 0, 0, 0.48),
0 0 24px rgba(39, 141, 255, 0.10),
inset 0 1px 0 rgba(255, 255, 255, 0.06);
backdrop-filter: blur(20px) saturate(125%);
-webkit-backdrop-filter: blur(20px) saturate(125%);
width: min(78vw, 240px);
}
.chat-header-login-btn {
padding: 4px 7px;
min-height: 34px;
border: 0;
border-radius: 10px;
background: transparent;
cursor: pointer;
}
/* Поле сообщения занимает почти всю ширину; действия прижаты к правому краю. */
.composer-slot:has(> .dm-chat-input) {
padding-left: 0;
padding-right: 4px;
}
.dm-chat-input {
grid-template-columns: minmax(0, 1fr) auto;
align-items: end;
position: relative;
z-index: 10;
margin-inline: 0;
padding: 10px 0;
border-top: 0;
background: transparent;
backdrop-filter: none;
-webkit-backdrop-filter: none;
gap: 4px;
padding-left: 0;
padding-right: 0;
}
.dm-chat-input--multiline .dm-actions-col {
grid-template-columns: 43px;
}
.dm-emoji-btn,
.dm-send-icon-btn {
min-width: 43px;
width: 43px;
}
/* DM peer identity: one large invisible button fills the area between Back and Call. */
.chat-header-peer-btn {
width: 100%;
min-width: 0;
min-height: 46px;
padding: 2px 0;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: flex-start;
gap: 7px;
text-align: left;
cursor: pointer;
}
.chat-header-peer-btn .chat-header-avatar-slot {
flex: 0 0 40px;
}
.chat-header-peer-text {
min-width: 0;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
gap: 2px;
}
.chat-header-peer-name,
.chat-header-peer-meta {
display: block;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.chat-header-peer-name {
font-size: 14px;
line-height: 1.15;
font-weight: 650;
color: rgba(255,255,255,0.94);
}
.chat-header-peer-meta {
font-size: 11px;
line-height: 1.15;
font-weight: 500;
color: rgba(189,207,232,0.72);
}
/* ===== DM header regression fix (2026-09-02) =====
* The peer identity button intentionally spans the whole free header area.
* Its avatar uses a 119% glass overlay, so neither the center cell nor the
* button may clip overflow. Text keeps its own ellipsis boundary instead.
*/
.chat-header-peer-btn {
overflow: visible;
padding-inline: 2px;
}
.chat-header-peer-btn .chat-header-avatar-slot {
width: 44px;
height: 44px;
min-width: 44px;
min-height: 44px;
flex: 0 0 44px;
overflow: visible;
}
.chat-header-peer-btn .chat-header-avatar-slot .chat-header-avatar {
overflow: visible;
}
.chat-header-peer-text {
flex: 1 1 auto;
overflow: hidden;
}
/* Shell state + Chat-owned composer adjustment (moved out of app-shell.css). */
.app-shell--scroll-nested.keyboard-open .composer-slot .dm-chat-input {
padding-bottom: 0;
}
/* Composer icon actions own their white/blue interaction surface. */
.dm-chat-input :is(.dm-emoji-btn, .dm-send-btn, .dm-edit-banner__close),
.dm-chat-input :is(.dm-emoji-btn, .dm-send-btn, .dm-edit-banner__close):hover,
.dm-chat-input :is(.dm-emoji-btn, .dm-send-btn, .dm-edit-banner__close):focus {
color: #F7FBFF;
text-shadow: 0 0 5px rgba(92, 190, 255, 0.72), 0 0 12px rgba(72, 145, 255, 0.34);
filter: drop-shadow(0 0 4px rgba(92, 190, 255, 0.46));
}