/* Поправки поверх Element Web для «Рабочего чата». Подключается из index.html (setup.sh). */
@import url("/branding/fonts/inter.css");

/* Своя тема Element строится поверх светлой, а та ставит Nunito. Шрифт — как на /start. */
body, input, button, textarea, select, .mx_AuthPage {
  font-family: -apple-system, "SF Pro Text", "Inter", BlinkMacSystemFont, "Segoe UI", "Twemoji", sans-serif !important;
}
/* Внутри приложения Element берёт шрифт из --cpd-font-family-sans, который тема не переопределяет.
   "Twemoji" — шрифт смайлов самого Element: без него в наборе реакций часть значков — пустые квадраты. */
:root, [class*="cpd-theme-"] {
  --cpd-font-family-sans: -apple-system, "SF Pro Text", "Inter", BlinkMacSystemFont, "Segoe UI", "Twemoji", "Apple Color Emoji", "Segoe UI Emoji", sans-serif !important;
}

/* Размытая подложка Element за карточкой на ровном фоне видна светлым ореолом — не нужна. */
.mx_AuthPage_modalBlur {
  display: none !important;
}

/* Карточка входа: мягкая тень и тонкая рамка вместо жёсткой тени Element. */
.mx_AuthPage_modal {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06) !important;
  border: 1px solid #e8e8ed !important;
  border-radius: 22px !important;
  overflow: hidden !important;
}
.mx_AuthPage_modalContent {
  background: #fff !important;
}
.mx_AuthBody h1 {
  letter-spacing: -0.02em !important;
  line-height: 1.15 !important;
}
/* Поля входа как у Apple: без «плавающей» подписи на рамке (Material), подсказка внутри поля.
   Подпись остаётся для экранного диктора, но визуально скрыта. */
.mx_AuthBody .mx_Field label {
  position: absolute !important; width: 1px !important; height: 1px !important;
  overflow: hidden !important; clip: rect(0 0 0 0) !important;
}
.mx_AuthBody .mx_Field { background: #fff !important; }
.mx_AuthBody .mx_Field input {
  padding: 14px 16px !important; font-size: 16px !important; color: #1d1d1f !important; background: transparent !important;
}
.mx_AuthBody .mx_Field input::placeholder { color: #86868b !important; opacity: 1 !important; }

/* Автозаполнение браузера красит поле в голубой — оставляем белым, текст обычным. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 1000px #fff inset !important;
  -webkit-text-fill-color: #1d1d1f !important;
  caret-color: #1d1d1f !important;
  transition: background-color 600000s 0s, color 600000s 0s !important;
}
.mx_AuthBody .mx_Field {
  border-radius: 12px !important;
  border-color: #d2d2d7 !important;
}
.mx_AuthBody .mx_Field:focus-within {
  border-color: #0071e3 !important;
  box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.15) !important;
}
.mx_Login_submit {
  min-height: 44px !important;
  font-weight: 500 !important;
  margin-bottom: 0 !important;   /* иначе пустота под кнопкой больше, чем над логотипом */
}
/* Element берёт красный из своего набора (#ff5b55, 3:1 к белому) и тему не слушает — задаём сами (5.7:1). */
.mx_Login_error {
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 1.4 !important;
  text-align: left !important;
  color: #c93126 !important;
}
.mx_AuthBody .mx_Field_invalid {
  border-color: #c93126 !important;
}
.mx_AuthBody .mx_Field_invalid label,
.mx_AuthBody .mx_Field_invalid + .mx_Field_tooltip {
  color: #c93126 !important;
}
/* На компьютере — по центру экрана, а не прижато к верху. */
@media (min-width: 501px) {
  .mx_AuthPage_modal {
    margin-top: max(64px, calc(50vh - 200px)) !important;
  }
}

/* Подвал экрана входа рассчитан на тёмное фото; на светлом фоне тёмная полоса не нужна.
   Element гасит его opacity .72 — с серым текстом это ниже AA, возвращаем полную. */
.mx_AuthFooter {
  background: none !important;
  backdrop-filter: none !important;
  opacity: 1 !important;
}
.mx_AuthFooter a {
  color: #0066cc !important;
  text-decoration: none !important;
}
.mx_AuthFooter a:hover {
  text-decoration: underline !important;
}
/* Ссылка «На технологии Matrix» ведёт на английский matrix.org — сотруднику не нужна. */
.mx_AuthFooter a[href*="matrix.org"] {
  display: none !important;
}
/* «Поставщик учётной записи: chat.kinetto.ru» — сменить сервер всё равно нельзя, строка только путает. */
.mx_AuthBody .mx_ServerPicker {
  display: none !important;
}

/* Узкий экран (iPhone со старой iOS открывает веб-версию). У Element нет мобильной вёрстки:
   колонку с логотипом он прячет, а форму оставляет шириной 237px. Ставим логотип сверху,
   форму — во всю карточку, ссылки подвала — по центру с отступами. */
@media (max-width: 500px) {
  .mx_AuthPage_modal {
    width: calc(100% - 32px) !important;
    margin-top: 24px !important;
    border-radius: 22px !important;
    overflow: hidden !important;
  }
  .mx_AuthPage_modal, .mx_AuthPage_modalContent {
    background: #fff !important;
  }
  .mx_AuthPage_modalBlur {
    display: none !important;
  }
  .mx_AuthBody h1 {
    text-align: center !important;
  }
  /* Safari на iPhone приближает страницу, если в поле шрифт меньше 16px */
  .mx_Field input {
    font-size: 16px !important;
  }
  .mx_AuthPage_modalContent {
    flex-direction: column !important;
    width: 100% !important;
  }
  .mx_AuthHeader {
    display: flex !important;
    width: auto !important;
    padding: 28px 0 0 !important;
    align-items: center !important;
    border: 0 !important;
    background: none !important;
  }
  .mx_AuthHeader > :not(.mx_AuthHeaderLogo) {
    display: none !important;
  }
  .mx_AuthHeaderLogo {
    display: block !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  .mx_AuthHeaderLogo img {
    width: 64px !important;
    height: 64px !important;
  }
  .mx_AuthBody {
    width: auto !important;
    min-width: 0 !important;
    padding: 16px 20px 28px !important;
    border-radius: 0 !important;
  }
  .mx_AuthFooter {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    gap: 12px 24px !important;
    padding: 20px 16px !important;
    white-space: normal !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  .mx_AuthFooter a {
    margin: 0 !important;
    white-space: nowrap !important;
    display: inline-flex !important;
    align-items: center !important;
    min-height: 44px !important;
    padding: 0 8px !important;
  }
}

/* ========================================================================
   Внутри приложения (после входа). Аудит 08.10.2026: стоковый Element = 0/10 Apple.
   ======================================================================== */

/* Окна: без синеватого «стеклянного» кольца 12px — тонкая рамка и мягкая тень. */
.mx_Dialog_border {
  background: transparent !important;
  padding: 0 !important;
  backdrop-filter: none !important;
  border-radius: 22px !important;
}
.mx_Dialog {
  border-radius: 22px !important;
  border: 1px solid #e8e8ed !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06) !important;
}
[role="menu"] {
  border: 1px solid #e8e8ed !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08) !important;
}

/* Без капслока, заголовки с отрицательной разрядкой. */
body * { text-transform: none !important; }
.mx_Heading_h1, .mx_Heading_h2, .mx_Heading_h3, .mx_Heading_h4,
.mx_HomePage h1, .mx_SettingsTab_heading, .mx_RoomHeader_heading {
  letter-spacing: -0.02em !important;
}

/* Поля ввода — как на экране входа, во всём приложении. */
.mx_Field { border-radius: 12px !important; border-color: #d2d2d7 !important; }
.mx_Field:focus-within { border-color: #0071e3 !important; box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.15) !important; }
.mx_InviteDialog_editor { background: #fff !important; border: 1px solid #d2d2d7 !important; border-radius: 12px !important; }
.mx_InviteDialog_editor:focus-within { border-color: #0071e3 !important; box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.15) !important; }
.mx_CopyableText_border { border: 1px solid #d2d2d7 !important; border-radius: 12px !important; }

/* Активная вкладка настроек: белый текст на светло-сером не читался (1.1:1). */
.mx_TabbedView_tabLabel_active { background-color: rgba(0, 113, 227, 0.10) !important; color: #0066cc !important; }
.mx_TabbedView_tabLabel_active svg,
.mx_TabbedView_tabLabel_active .mx_TabbedView_tabLabel_text { color: #0066cc !important; }

/* Лишнее для сотрудника небольшой команды. */
.mx_SpaceItem_new,                                  /* «+» пространств на узкой панели */
.mx_QuickSettingsButton,                            /* шестерёнка дублирует «Все настройки» */
.mx_RoomListPanel kbd,                              /* подсказка Ctrl K в поиске */
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_LABS_TAB"],
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_KEYBOARD_TAB"],
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_SIDEBAR_TAB"] {
  display: none !important;
}

/* Лента: без служебного вступления и сводок «создал(а) комнату», «присоединились».
   Из вступления остаются только кнопки («Добавить участников») — иначе после создания группы пустой экран. */
.mx_NewRoomIntro > :not(.mx_NewRoomIntro_buttons),
.mx_GenericEventListSummary { display: none !important; }


/* Активная «Главная» на узкой панели: без чёрного кольца 2px. */
.mx_SpaceButton_active .mx_SpaceButton_selectionWrapper {
  border-color: transparent !important;
  background: rgba(0, 113, 227, 0.10) !important;
  border-radius: 12px !important;
}

/* Поле ввода сообщения — «пилюля» с рамкой; значок незашифрованного чата не нужен. */
.mx_MessageComposer_wrapper {
  margin: 0 16px 12px !important;
  padding-left: 16px !important;
  border: 1px solid #d2d2d7 !important;
  border-radius: 22px !important;
  background: #fff !important;
}
/* Фокус в поле ввода стоит всегда, пока открыт чат, — постоянное синее кольцо было бы шумом. */
.mx_MessageComposer_wrapper:focus-within {
  border-color: #86868b !important;
  box-shadow: none !important;
}
.mx_MessageComposer_e2eIconWrapper { display: none !important; }

/* Анимации — кривая Apple на всё (поля, переключатели, шапка), фокус — синим. */
*, *::before, *::after { transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1) !important; }
:focus-visible { outline-color: #0071e3 !important; }

/* Наш главный экран (embedded_pages.home_url): во всю высоту, без лишних отступов Element. */
.mx_HomePage.mx_HomePage_default, .mx_HomePage { height: 100% !important; }

/* Главный экран (deploy/branding/home.html). Element вырезает из страницы <style> и классы,
   поэтому стилизуем по структуре: .mx_HomePage_body > div > img, h1, p, div > a. */
.mx_HomePage_body { height: 100%; }
.mx_HomePage_body > div {
  min-height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; padding: 80px 24px; box-sizing: border-box; color: #1d1d1f;
}
.mx_HomePage_body > div > img { width: 72px !important; height: 72px !important; margin: 0 0 20px !important; }
.mx_HomePage_body > div > h1 {
  font-size: 32px !important; line-height: 1.1 !important; letter-spacing: -0.022em !important;
  font-weight: 600 !important; margin: 0 0 8px !important; color: #1d1d1f !important;
}
.mx_HomePage_body > div > p { font-size: 17px; line-height: 1.47; color: #6e6e73; margin: 0; }
.mx_HomePage_body > div > div { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 28px 0 0; }
.mx_HomePage_body > div > div > a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 22px; border-radius: 980px;
  font-size: 15px; font-weight: 500; text-decoration: none !important;
  transition: background-color 200ms cubic-bezier(0.25, 0.1, 0.25, 1);
}
.mx_HomePage_body a[href="#/dm"] { background: #0071e3; color: #fff !important; }
.mx_HomePage_body a[href="#/dm"]:hover { background: #0058b0; }
.mx_HomePage_body a[href="#/new"] { background: #fff; color: #0066cc !important; box-shadow: inset 0 0 0 1px #d2d2d7; }
.mx_HomePage_body a[href="#/new"]:hover { background: #f5f5f7; }
.mx_HomePage_body > div > p:last-child { margin-top: 40px; font-size: 13px; }
.mx_HomePage_body > div > p a { color: #0066cc; text-decoration: none; }
.mx_HomePage_body > div > p a:hover { text-decoration: underline; }

/* Выбранный чат: полоска — это ::before внутреннего контейнера (4px синим). Убираем её,
   подсветка — скруглённая плашка с отступом от краёв панели. */
.mx_RoomListItemView_selected,
.mx_RoomListItemView:hover { background: transparent !important; }
.mx_RoomListItemView > div { margin: 0 8px !important; border-radius: 12px !important; }
.mx_RoomListItemView_selected > div::before { display: none !important; }
.mx_RoomListItemView_selected > div { background: rgba(0, 113, 227, 0.10) !important; }
.mx_RoomListItemView:not(.mx_RoomListItemView_selected):hover > div { background: #f5f5f7 !important; }
/* «Личные сообщения»: ссылка-приглашение на внешний matrix.to и оговорка про скрытые
   предложения закрытому чату без федерации не нужны. */
.mx_InviteDialog_footer,
.mx_InviteDialog_section_hidden_suggestions_disclaimer { display: none !important; }

/* Аудит, 2-й проход внутри приложения. */
/* Поля Compound и кнопки Element: 12px / пилюли, вес 500. */
input[class*="_control_"] { border-radius: 12px !important; border-color: #d2d2d7 !important; }
input[class*="_control_"]:focus {
  border-color: #0071e3 !important; box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.15) !important; outline: none !important;
}
.mx_AccessibleButton_kind_primary, .mx_AccessibleButton_kind_primary_outline,
.mx_AccessibleButton_kind_secondary, .mx_AccessibleButton_kind_danger,
.mx_AccessibleButton_kind_danger_outline {
  border-radius: 980px !important; font-weight: 500 !important; padding-left: 18px !important; padding-right: 18px !important;
}
.mx_MessageActionBar { border-radius: 12px !important; border-color: #e8e8ed !important; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04) !important; }

/* Лишние значки и переключатели Element. Темы Element сбросили бы палитру — выбор темы скрыт. */
.mx_RoomListPanel [aria-label="Обзор комнат"],
.mx_RoomAvatarView > svg, .mx_RoomHeader_heading svg,
.mx_ThreadsActivityCentre_container, .mx_ThreadsActivityCentreButton,
.mx_SpacePanel_toggleCollapse,
.mx_TagComposer { display: none !important; }
/* «Внешний вид»: темы Element сбросили бы палитру, макет IRC и размер картинок сотруднику не нужны.
   Классы 1.12 — у самих блоков нет общего хука, скрываем их подразделы целиком. */
.mx_SettingsSubsection:has(.mx_ThemeChoicePanel_ThemeSelectors),
.mx_SettingsSubsection:has(.mx_LayoutSwitcher_LayoutSelector),
.mx_SettingsSubsection:has(.mx_ImageSizePanel_radios),
#mx_tabpanel_USER_APPEARANCE_TAB .mx_SettingsSubsection_noHeading { display: none !important; }
/* «Безопасность» (ссылка на несуществующий Desktop) — не для сотрудника. «Шифрование» и «Устройства» скрыты
   с 13.10.2026: шифрование выключено, а эти вкладки вели только к подтверждению устройств и ключам —
   в них сотрудники и путались. Отключить чужой вход может руководитель в админке. */
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_SECURITY_TAB"],
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_ENCRYPTION_TAB"],
.mx_TabbedView_tabLabel[aria-controls="mx_tabpanel_USER_SESSION_MANAGER_TAB"] { display: none !important; }
.mx_SettingsSubsection:has(.mx_LoginWithQRSection) { display: none !important; }
#mx_tabpanel_USER_SESSION_MANAGER_TAB [class*="DeviceSecurityCard"],
#mx_tabpanel_USER_SESSION_MANAGER_TAB .mx_FilteredDeviceList_listItem {
  border-color: #e8e8ed !important; border-radius: 12px !important;
}

/* «Личные сообщения»: без технических адресов и пустоты под списком. */
.mx_InviteDialog_tile_nameStack_userId,
.mx_InviteDialog_other [class*="_richItem_"] [class*="_description_"],
[role="menu"] [class*="_userId_"] { display: none !important; }
.mx_InviteDialog_editor, .mx_InviteDialog_editor:focus-within,
.mx_InviteDialog_editor [class*="_pillInput_"] { outline: none !important; }
.mx_InviteDialog_other { height: auto !important; max-height: 80vh !important; }

/* Подписи полей в окнах — для экранного диктора; на экране только подсказка внутри поля. */
.mx_Dialog .mx_Field label {
  position: absolute !important; width: 1px !important; height: 1px !important;
  overflow: hidden !important; clip: rect(0 0 0 0) !important;
}
.mx_Dialog .mx_Field input::placeholder { color: #86868b !important; opacity: 1 !important; }

/* Пузыри: чужие — светло-серые, свои — светло-голубые, радиус 18px, не наезжают на аватар. */
:root, .mx_EventTile {
  --event-tile-bubble-other-background: #f5f5f7 !important;
  --event-tile-bubble-self-background: #e8f1fc !important;
  --event-tile-bubble-hover-background: transparent !important;
  --event-tile-bubble-corner-radius: 18px !important;
  --event-tile-bubble-line-margin-inline-start: 4px !important;
}

/* Мелочи: прочитанные чаты не серые, разделитель даты тихий, рамка шапки — нейтральная. */
.mx_RoomListItemView { color: #1d1d1f !important; }
.mx_TimelineSeparator hr { display: none !important; }
.mx_TimelineSeparator {
  justify-content: center !important; font-size: 12px !important; color: #86868b !important; font-weight: 500 !important;
}
.mx_RoomHeader { border-bottom-color: #e5e5ea !important; }
.mx_TabbedView_tabLabel_text { white-space: nowrap !important; }
.mx_TabbedView_tabLabel svg, .mx_TabbedView_tabLabel_icon { flex-shrink: 0 !important; }

/* Аудит, 3-й проход. */
/* Поля Element: внутренний input/select с белым фоном и 8px давал «рваные» углы. */
.mx_Field input, .mx_Field select, .mx_Field textarea {
  border-radius: 11px !important; background-color: transparent !important;
}
.mx_Field_select select { padding-right: 32px !important; }
.mx_FontScalingPanel_Dropdown { min-width: 200px !important; }
.mx_Dialog .mx_Field input { padding: 12px 16px !important; font-size: 15px !important; }

/* Пункты меню: скругление и фокус заливкой вместо прямоугольной рамки. */
[role="menu"] [role="menuitem"] {
  border-radius: 8px !important; margin: 0 6px !important; width: calc(100% - 12px) !important; box-sizing: border-box !important;
}
[role="menu"] [role="menuitem"]:focus-visible { outline: none !important; background: rgba(0, 113, 227, 0.10) !important; }

/* Пузырь: межстрочный ближе к Apple. */
.mx_EventTile_line .mx_EventTile_body, .mx_EventTile_line .mx_EventTile_content { line-height: 22px !important; }

/* Аватарки участников в шапке — с белым кольцом, не слипаются. */


/* Выключенный переключатель — серая дорожка, как в iOS. */
input[role="switch"]:not(:checked) + div { background: #e9e9eb !important; border-color: transparent !important; }

/* Экран входа на компьютере — одна колонка 420px, логотип сверху (как на телефоне). */
@media (min-width: 501px) {
  /* только форма входа: та же обёртка у экрана «Подтвердите свою цифровую личность», ему нужна родная ширина */
  .mx_AuthPage_modal:has(#mx_LoginForm_username) { width: 400px !important; }
  .mx_AuthPage_modalContent { flex-direction: column !important; width: 100% !important; }
  .mx_AuthHeader {
    display: flex !important; width: auto !important; padding: 32px 0 0 !important;
    align-items: center !important; border: 0 !important; background: none !important;
  }
  .mx_AuthHeader > :not(.mx_AuthHeaderLogo) { display: none !important; }
  .mx_AuthHeaderLogo { display: block !important; width: auto !important; margin: 0 !important; padding: 0 !important; }
  .mx_AuthHeaderLogo img { width: 64px !important; height: 64px !important; }
  .mx_AuthBody { width: auto !important; min-width: 0 !important; padding: 16px 40px 40px !important; border-radius: 0 !important; }
  .mx_AuthBody h1 { text-align: center !important; }
}
/* Образец шрифта в «Внешнем виде» — без тёмной рамки; имена коллег по центру строки (адреса скрыты). */
.mx_FontScalingPanel_preview, .mx_FontScalingPanel_preview * { border-color: #e8e8ed !important; }
.mx_FontScalingPanel_preview { border-radius: 12px !important; }
.mx_InviteDialog_other [class*="_richItem_"] { align-items: center !important; }

/* Аудит, 4-й проход: настройки без стокового содержимого Element.
   Номера блоков сверены замером DOM 08.10.2026 (Element 1.12.30) — после обновления Element перепроверить. */
/* «Параметры»: язык (и так только русский), пространства, горячие клавиши, редактор, блоки кода,
   модерация, каталог, «Общие» с задержками в мс. */
#mx_tabpanel_USER_PREFERENCES_TAB .mx_SettingsSection_subSections > :is(:nth-child(1), :nth-child(3), :nth-child(4), :nth-child(7), :nth-child(8), :nth-child(9), :nth-child(11), :nth-child(12), :nth-child(13), :nth-child(14)),
#mx_tabpanel_USER_PREFERENCES_TAB .mx_SettingsSection_subSections > :nth-child(5) .mx_SettingsSubsection_content > :is(:nth-child(2), :nth-child(4)),
#mx_tabpanel_USER_PREFERENCES_TAB [class*="_separator_"] { display: none !important; }
/* «О программе»: благодарности, версия криптографии, токен доступа. «Очистить кэш» оставлен. */
#mx_tabpanel_USER_HELP_TAB .mx_SettingsSection_subSections > :is(:nth-child(2), :nth-child(3)),
#mx_tabpanel_USER_HELP_TAB .mx_SettingsSection_subSections > :nth-child(4) .mx_SettingsSubsection_content > .mx_SettingsSubsection_text:first-child,
#mx_tabpanel_USER_HELP_TAB details:has(.mx_HelpUserSettingsTab_accessTokenDetails) { display: none !important; }
/* «Шифрование»: «Дополнительно» (ключ сеанса, экспорт/импорт, сброс) и «Устройства других людей». */
#mx_tabpanel_USER_ENCRYPTION_TAB .mx_SettingsTab_sections > :is(:nth-child(4), :nth-child(5)) { display: none !important; }
#mx_tabpanel_USER_ENCRYPTION_TAB h2 { color: #1d1d1f !important; }
/* «Уведомления»: зашифрованные/@room, блок «Другие» (боты, звонки, обновление комнат) и технические переключатели. */
#mx_tabpanel_USER_NOTIFICATIONS_TAB .mx_SettingsSection_subSections > :is(:nth-child(4), :nth-child(5)),
#mx_tabpanel_USER_NOTIFICATIONS_TAB .mx_SettingsSection_subSections > :nth-child(2) .mx_UserNotifSettings_gridRowContainer:is(:nth-child(6), :nth-child(8)),
#mx_tabpanel_USER_NOTIFICATIONS_TAB .mx_SettingsSection_subSections > :nth-child(3) .mx_UserNotifSettings_gridRowContainer:nth-child(6) { display: none !important; }
/* Меню профиля: «Привязать новое устройство» (QR не поддерживается) и «Безопасность» (вкладка скрыта). */
[role="menu"]:has([class*="_avatar_"]) section[class*="_actions_"] > [role="menuitem"]:is(:nth-child(2), :nth-child(3)) { display: none !important; }

/* Мелочи. */
.mx_UserProfileSettings { border-bottom-color: #e8e8ed !important; }
button[class*="_button_"] { font-weight: 500 !important; }
.mx_TabbedView_tabPanel a, .mx_TabbedView_tabPanel .mx_ExternalLink, .mx_TabbedView_tabPanel [class*="_link_"] {
  color: #0066cc !important; text-decoration: none !important; font-weight: 400 !important;
}
input[role="switch"]:not(:checked) + div::after { background: #fff !important; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2) !important; }
.mx_InviteDialog_other [class*="_richItem_"] [class*="_title_"] {
  grid-row: 1 / -1 !important; align-self: center !important; font-size: 15px !important; font-weight: 500 !important;
}
.mx_RoomHeader .mx_FacePile .mx_BaseAvatar + .mx_BaseAvatar { margin-inline-start: 2px !important; }
.mx_EventTile_line .mx_MessageTimestamp { font-size: 11px !important; color: #86868b !important; }
.mx_FontScalingPanel_preview [class*="_slotAvatar_"] { display: none !important; }
@media (min-width: 501px) {
  .mx_Login_submit { max-width: 320px !important; margin-inline: auto !important; display: block !important; }
}.mx_UserNotifSettings_gridColumnLabel { white-space: nowrap !important; }

/* Аудит, 5-й проход. */
/* Меню «+»: «Новый раздел» (пользовательские разделы списка) сотруднику не нужен. */
[role="menu"][aria-label="Открыть меню"] [role="menuitem"]:last-child { display: none !important; }
/* Выпадающие списки — как остальные поля. */
.mx_Dropdown_input { border-radius: 12px !important; font-size: 15px !important; min-height: 40px !important; }
/* Вкладки настроек: текст основным цветом, переходы 200ms. */
.mx_TabbedView_tabLabel, .mx_Login_submit { transition-duration: 200ms !important; }
.mx_TabbedView_tabLabel:not(.mx_TabbedView_tabLabel_active) { color: #1d1d1f !important; }
/* Аудит, 6-й проход (правки проверены подстановкой на живой странице). */
.mx_RoomHeader .mx_FacePile .mx_BaseAvatar { clip-path: none !important; }          /* аватары без «надкусов» */
.mx_InviteDialog_goButton { min-height: 46px !important; }                           /* кнопка по высоте поля */
.mx_AccessibleButton_kind_danger_outline { border-color: #d2d2d7 !important; }       /* без лососёвой рамки */
#mx_tabpanel_USER_HELP_TAB .mx_SettingsSection_subSections > :nth-child(4) .mx_SettingsSubsection_content {
  margin-top: 12px !important; gap: 0 !important;
}
.mx_EventTile_body a { color: #0066cc !important; text-decoration: none !important; }
.mx_EventTile_body a:hover { text-decoration: underline !important; }
.mx_UserNotifSettings_gridColumnLabel, .mx_SettingsSubsection_text { color: #1d1d1f !important; }
[role="menu"] [role="menuitem"]:hover { background: #f5f5f7 !important; }

/* Аудит, 7-й проход. */
.mx_RoomAvatarView_RoomAvatar_icon { mask-image: none !important; -webkit-mask-image: none !important; }  /* аватар без выреза */
.mx_Toast_toast {
  border: 1px solid #e8e8ed !important; border-radius: 18px !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06) !important;
}
/* Аудит, 8-й проход. «О комнате»: без технического адреса, значков и пунктов, которые сотруднику не нужны.
   Номера пунктов сверены в «Общем чате» и в группе (Element 1.12.30): 8 Расширения, 10 Копировать ссылку,
   11 Опросы, 12 Экспорт, 5 Обсуждения (13.10); неактивные (серый «Пригласить») — по признаку, а не по номеру. */
.mx_RoomSummaryCard_alias,
.mx_RoomSummaryCard_badges { display: none !important; }
.mx_RoomSummaryCard :has(> .mx_RoomSummaryCard_bottomOptions) > :is([class*="_disabled_"], :nth-child(5), :nth-child(8), :nth-child(10), :nth-child(11), :nth-child(12)),
.mx_RoomSummaryCard_bottomOptions > :first-child { display: none !important; }

/* «Устройства»: строка без IP и кода устройства (они в «Показать подробности»), название 17px. */
.mx_DeviceTile_metadata { font-size: 0 !important; }
.mx_DeviceTile_metadata > span { font-size: 13px !important; }
.mx_DeviceTile_metadata > span:nth-child(n+3) { display: none !important; }
.mx_DeviceTile_metadata > span:first-child::after { content: " · "; }
#mx_tabpanel_USER_SESSION_MANAGER_TAB .mx_DeviceTile_info h3 { font-size: 17px !important; }
.mx_DeviceSecurityCard .mx_LearnMore_button { margin-inline-start: 4px !important; }
#mx_tabpanel_USER_ENCRYPTION_TAB [class*="_separator_"] { height: 1px !important; }

/* Аудит, 9-й проход (9.6/10): строки «О комнате» с отступом и подсветкой как в меню, описание по центру. */
.mx_RoomSummaryCard [role^="menuitem"] {
  margin: 0 8px !important; width: calc(100% - 16px) !important;
  border-radius: 12px !important; box-sizing: border-box !important;
}
.mx_RoomSummaryCard [role^="menuitem"]:hover { background: #f5f5f7 !important; }
.mx_RoomSummaryCard_topic, .mx_RoomSummaryCard_topic * { text-align: center !important; }

/* Шифрование выключено (12.10.2026): напоминания Element о подтверждении устройств и ключах
   восстановления больше ни к чему не ведут — только путают. Тосты с красным значком и красная точка
   у вкладки «Шифрование» скрыты. */
.mx_ToastContainer .mx_Toast_toast:has(svg[color="var(--cpd-color-icon-critical-primary)"]) { display: none !important; }
.mx_SettingsDialog_tabLabelsAlert::after, .mx_SettingsDialog_tabLabelsAlert::before { display: none !important; }

/* Отметки «доставлено / прочитано» у своих сообщений — внутри пузыря, справа от времени,
   как в мессенджерах. Серая галочка — доставлено, синие две — прочитано (клик — кто прочитал).
   Слот Element стоит у края строки (right:-78px), пузырь — на 12px правее края li. */
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] .mx_EventTile_line { padding-right: 80px !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] .mx_EventTile_line .mx_MessageTimestamp { right: 20px !important; }
/* двойная галочка на 4px шире — время у прочитанных отодвигаем, чтобы не слипалось */
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"]:has(.mx_ReadReceiptGroup_button[aria-haspopup]) .mx_EventTile_line { padding-right: 86px !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"]:has(.mx_ReadReceiptGroup_button[aria-haspopup]) .mx_EventTile_line .mx_MessageTimestamp { right: 26px !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] > [class*="_slotReceipt_"] {
  right: -2px !important; bottom: 4px !important; height: 16px !important; display: flex !important; align-items: center;
}
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] .mx_ReadReceiptGroup_button { padding: 0 !important; height: 16px !important; }
/* доставлено: вместо кружка — одна серая галочка */
li.mx_EventTile[class*="_stateOwnEvent_"] .mx_ReadReceiptGroup_button[role="status"]:has(path[d^="m10.6 13.8"]) .mx_ReadReceiptGroup_container > svg { display: none !important; }
li.mx_EventTile[class*="_stateOwnEvent_"] .mx_ReadReceiptGroup_button[role="status"]:has(path[d^="m10.6 13.8"]) .mx_ReadReceiptGroup_container::before {
  content: ""; display: block; width: 16px; height: 16px; background: #86868b;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3 3 7-7' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3 3 7-7' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 16px no-repeat;
}
/* Element ставит отметку только на последнее прочитанное. Всё своё ВЫШЕ любой отметки «прочитано»
   (в т.ч. если собеседник уже ответил) — тоже прочитано: рисуем те же ✓✓ на самом пузыре.
   Текст и вложения (у вложений в 1.12 хеш-класс _lineMedia_), не служебные плитки вроде звонка. */
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"]:has(~ li .mx_ReadReceiptGroup_button[aria-haspopup]):not(:has(.mx_ReadReceiptGroup_button[aria-haspopup], .mx_ReadReceiptGroup_button[role="status"])):has(.mx_EventTile_body, .mx_EventTile_line[class*="_lineMedia_"]) .mx_EventTile_line { padding-right: 86px !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"]:has(~ li .mx_ReadReceiptGroup_button[aria-haspopup]):not(:has(.mx_ReadReceiptGroup_button[aria-haspopup], .mx_ReadReceiptGroup_button[role="status"])):has(.mx_EventTile_body, .mx_EventTile_line[class*="_lineMedia_"]) .mx_EventTile_line .mx_MessageTimestamp { right: 26px !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"]:has(~ li .mx_ReadReceiptGroup_button[aria-haspopup]):not(:has(.mx_ReadReceiptGroup_button[aria-haspopup], .mx_ReadReceiptGroup_button[role="status"])):has(.mx_EventTile_body, .mx_EventTile_line[class*="_lineMedia_"]) .mx_EventTile_line::after {
  content: ""; position: absolute; right: 10px; bottom: 4px; width: 20px; height: 16px; background: #0071e3; pointer-events: none;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1.5 8.6l3.2 3.2 6.8-7.3M9.2 10.6l1.2 1.2 6.8-7.3' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 20px 16px no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1.5 8.6l3.2 3.2 6.8-7.3M9.2 10.6l1.2 1.2 6.8-7.3' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 20px 16px no-repeat;
}
/* Чужие сообщения: крошечные аватарки «кто дочитал» у края строки только сбивают — у своих есть ✓✓. */
li.mx_EventTile:not([class*="_stateOwnEvent_"]) > [class*="_slotReceipt_"] { visibility: hidden !important; }
/* прочитано: две синие галочки вместо крошечных аватарок; кнопка по-прежнему открывает список прочитавших */
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] .mx_ReadReceiptGroup_button[aria-haspopup] .mx_ReadReceiptGroup_container { display: none !important; }
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] .mx_ReadReceiptGroup_button[aria-haspopup]::before {
  content: ""; display: block; width: 20px; height: 16px; background: #0071e3;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1.5 8.6l3.2 3.2 6.8-7.3M9.2 10.6l1.2 1.2 6.8-7.3' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 20px 16px no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1.5 8.6l3.2 3.2 6.8-7.3M9.2 10.6l1.2 1.2 6.8-7.3' fill='none' stroke='black' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 20px 16px no-repeat;
}

/* Аудит юзабилити 13.10.2026 (три независимых прохода). */
/* Окно «Выйти»: Element пугал «потерей зашифрованных сообщений» и главной кнопкой «Получить ключ
   восстановления». Шифрования нет — оставляем текст (переписан в i18n) и одну кнопку «Выйти». */
.mx_LogoutDialog [class*="_big-icon_"],
.mx_LogoutDialog .mx_EncryptionCard_emphasisedContent a,
.mx_LogoutDialog .mx_EncryptionCard_buttons > button:not([class*="_destructive_"]) { display: none !important; }
/* Обсуждения (ветки) и «Показать источник» сотруднику не нужны — только сбивают. */
.mx_RoomHeader [aria-label="Обсуждения"],
.mx_MessageActionBar [aria-label="Ответить в ветке обсуждения"],
[role="menu"] [role="menuitem"][aria-label="Показать источник"],
[role="menu"] [role="menuitem"][aria-label="Исходный код"] { display: none !important; }
/* Поиск: обзор публичных пространств и комнат у закрытого чата пуст. */
#mx_SpotlightDialog_button_explorePublicSpaces,
#mx_SpotlightDialog_button_explorePublicRooms { display: none !important; }
/* Счётчик непрочитанных — синий, как всё остальное (у Element зелёный). */
[class*="_unread-counter_"] { background-color: #0071e3 !important; }

/* Телефон в браузере (iPhone со старой iOS, где нет Element X). Element не умеет узкий экран:
   список чатов сжимался до 0, а главная просила «выберите чат слева». На главной — список во всю ширину,
   в чате — сам чат; «Главная» на узкой панели возвращает к списку. */
@media (max-width: 600px) {
  /* панели — react-resizable-panels: [data-group] > #left-panel | разделитель | панель с главной/чатом */
  [data-group]:has(.mx_HomePage) > #left-panel { flex: 1 1 auto !important; }
  [data-group]:has(.mx_HomePage) > [data-panel]:has(.mx_HomePage) { display: none !important; }
  [data-group] > [data-separator] { display: none !important; }
}
/* Окно «Новая группа»: только название и тема. Шифрование выключено на сервере, правила входа
   и «дополнительные настройки» (федерация) сотруднику не нужны. */
.mx_CreateRoomDialog form > :has(.mx_JoinRuleDropdown),
.mx_CreateRoomDialog form > [class*="_inline-field_"]:has(input[role="switch"]),
.mx_CreateRoomDialog_details { display: none !important; }
/* Меню профиля: пункт «Главная» (настройки главной для пространств) — пустой для нас. */
[role="menu"]:has([class*="_avatar_"]) section[class*="_actions_"] > [role="menuitem"]:nth-child(1) { display: none !important; }/* Выбранная реакция — синим, как остальное (у Element зелёная). */
[class*="_reactionsRowButtonSelected_"] { background-color: rgba(0, 113, 227, 0.10) !important; border-color: #0071e3 !important; }
/* Аудит 13.10.2026, 2-й проход. */
/* Кнопка «свернуть/развернуть все разделы» в шапке списка: один случайный клик прятал все чаты. */
.mx_RoomListPanel [class*="_icon-button_"][aria-labelledby]:not([aria-label]):not([aria-haspopup]) { display: none !important; }
/* Счётчик на «Главной» — синий, как в списке. */
.mx_SpacePanel_notificationBadge { background-color: #0071e3 !important; }
/* Служебные строки ленты («изменил(а) уровни прав», «разрешил(а) гостям…») — сотруднику не нужны. */
.mx_RoomView_MessageList li.mx_EventTile[class*="_stateInfo_"] { display: none !important; }
/* Меню сообщения: «Поделиться» (ссылка matrix.to наружу) и «Сообщить» (жалоба администратору сервера). */
[role="menu"] [role="menuitem"]:is([aria-label="Поделиться"], [aria-label="Сообщить"]) { display: none !important; }
/* «Выйти» в окне выхода — кнопкой, а не красной ссылкой. */
.mx_LogoutDialog button[class*="_destructive_"] {
  min-height: 44px !important; padding: 0 28px !important; border-radius: 980px !important;
  background: #c93126 !important; color: #fff !important; text-decoration: none !important; border: 0 !important;
}
/* Своя аватарка у своих пузырей (в WhatsApp её нет). */
li.mx_EventTile[class*="_stateOwnEvent_"][class*="_layoutBubble_"] > [class*="_slotAvatar_"] { visibility: hidden !important; }
/* Технические адреса @логин:chat.kinetto.ru в окнах подтверждения. */
.mx_Dialog [class*="_userId_"] { display: none !important; }

/* Телефон в браузере: лента и шапка чата. Element рассчитан на компьютер: поля под аватары 49/60px
   и пузырь не шире 70% оставляли по 2–3 слова в строке, у карточки файла имя сжималось до 2px. */
@media (max-width: 600px) {
  .mx_RoomView_MessageList li.mx_EventTile[class*="_layoutBubble_"] { margin-left: 8px !important; margin-right: 14px !important; }
  .mx_RoomView_MessageList li.mx_EventTile[class*="_layoutBubble_"] > [class*="_slotAvatar_"] { display: none !important; }
  .mx_RoomView_MessageList li.mx_EventTile[class*="_layoutBubble_"] .mx_EventTile_line { max-width: 85% !important; }
  .mx_RoomView_MessageList .mx_EventTile_line[class*="_lineMedia_"]:not([class*="_lineImage_"]) { width: 85% !important; }
  .mx_RoomView_MessageList .mx_EventTile_line[class*="_lineMedia_"]:not([class*="_lineImage_"]) .mx_EventTile_content,
  .mx_RoomView_MessageList .mx_EventTile_line[class*="_lineMedia_"]:not([class*="_lineImage_"]) .mx_EventTile_content > * { width: 100% !important; }
  .mx_RoomHeader .mx_FacePile { display: none !important; }
  .mx_RoomHeader_info { padding-right: 0 !important; }   /* 52px справа — место под скрытые аватары участников */
  .mx_RoomHeader_info [class*="_heading_"], .mx_RoomHeader_heading {
    max-width: none !important; white-space: normal !important; overflow-wrap: anywhere; font-size: 15px !important; line-height: 1.2 !important;
    display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden !important;
  }
}