/* enroll-post-confirm-ux-canon-20260729k (C′)
 * Shell как IdP enrollment: mint фон + белая карточка (не бирюзовый fullscreen).
 * Full-viewport mask — oauth-callback / enroll-settle (cold), пока overlay НЕ --hidden.
 * 29h: НЕ прятать --hidden через enroll-settle (белый кадр OIDC #state&code);
 *   только data-cdto-busy-dismissed. Stage сразу visible на enroll/oauth.
 * telegraf-warm-hop-auth-flash-20260824a: short-warm — скрыть AuthPage до гидрации MX.
 */

/* V2 short corridor: hide Element login/welcome on warm/MX/#/room (not cold #/login). */
html.cdto-telegraf-short-warm .mx_AuthPage,
html.cdto-telegraf-short-warm .mx_Login,
html.cdto-telegraf-short-warm .mx_Welcome,
html.cdto-telegraf-short-warm .mx_AuthPage_modalContent {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* 20260824b: warm hop — не mint enroll, а фон ленты (wallpaper подгрузится следом). */
html.cdto-telegraf-short-warm,
html.cdto-telegraf-short-warm body {
  background-color: #f4f0e6 !important;
  background-image: url("/branding/telegraf-chat-wallpaper-pattern-20260727c.jpg") !important;
  background-repeat: repeat !important;
}
html.cdto-telegraf-short-warm #cdto-telegraf-auth-busy {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/*
 * 20260824d: L1 slot-lock — SpacePanel 52px + список (last px / 28%) + шапка 58 + композер.
 * 20260825b A+B: не снимать по голым SpacePanel/LeftPanel; поверх chrome до rich ready;
 *   fade-out ~120 мс (cdto-telegraf-l1-fading → l1-ready).
 * 20260825c: critical opaque L1 first-byte; dismiss только RoomHeader+composer+RoomView;
 *   min hold 280 мс (не список комнат / не пустой фон).
 * 20260826c: wireframe = живой chrome (поиск/чипы/ряды/bubble/thumbs);
 *   стык меню: top = menu-h 53px, без inset #0a5c56 (канон rail-menu-junction).
 * 20260826e: critical first-byte ears + L1 hold 1s
 * 20260826f: меню z-index над L1 — нижняя кромка поверх Search/RoomHeader
 */
#cdto-telegraf-l1-shell {
  display: none;
  box-sizing: border-box;
  position: fixed;
  /* Контент (список/шапка) flush под меню; рэйлы сами дают edge-stack 2px. */
  top: var(--cdto-space-menu-h, 53px);
  left: 0;
  right: 0;
  bottom: 0;
  /* B: выше Element chrome, ниже enroll busy (2147483000). */
  z-index: 2147482000;
  flex-direction: row;
  align-items: stretch;
  pointer-events: none;
  background: transparent;
  opacity: 1;
  transition: opacity 0.14s ease;
  /* Токены стыка (канон rail-menu-junction / Home). */
  --cdto-l1-edge: var(--cdto-space-menu-edge-stack, 2px);
  --cdto-l1-ear-h: var(--cdto-rail-header-h, 56px);
}
html.cdto-telegraf-short-warm #cdto-telegraf-l1-shell {
  display: flex;
}
/*
 * Стык меню ↔ Search/RoomHeader: на живой странице нижняя кромка меню
 * (rgba + #0a5c56) рисуется ПОВЕРХ белого app-bar. L1 выше меню по z-index
 * перекрывал кромку → «белая щель» / другой стык. Поднимаем всё меню над L1.
 */
html.cdto-telegraf-short-warm body > nav.cdto-space-menu {
  z-index: 2147482500 !important;
}
html.cdto-telegraf-short-warm body > nav.cdto-space-menu::before,
html.cdto-telegraf-short-warm body > nav.cdto-space-menu::after {
  z-index: 2147482501 !important;
}
/* Пока L1 держит chrome — живой правый rail не двоится под заглушкой. */
html.cdto-telegraf-short-warm:not(.cdto-telegraf-l1-ready):not(.cdto-telegraf-l1-fading)
  #cdto-space-right-rail {
  visibility: hidden !important;
  pointer-events: none !important;
}
html.cdto-enroll-firstbyte #cdto-telegraf-l1-shell {
  display: none !important;
}
/* A: только после rich ready (класс ставит JS), не :has(.mx_SpacePanel). */
html.cdto-telegraf-l1-fading #cdto-telegraf-l1-shell {
  opacity: 0;
}
html.cdto-telegraf-l1-ready #cdto-telegraf-l1-shell {
  display: none !important;
  opacity: 0;
}
html.cdto-telegraf-l1-left-collapsed .cdto-l1-list {
  display: none !important;
}

/*
 * Уши рэйлов = кнопки open/close под ушами меню.
 * Стык: margin-top edge-stack (2px) — видна кромка #0a5c56 меню, как на Главной/Почте.
 */
.cdto-l1-space,
.cdto-l1-right {
  flex: 0 0 var(--cdto-l1-space-w, 52px);
  width: var(--cdto-l1-space-w, 52px);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  margin-top: var(--cdto-l1-edge, 2px);
  background: #ffffff;
  /* Высота с учётом edge-stack — низ совпадает с viewport. */
  align-self: stretch;
}

.cdto-l1-space {
  border-right: 1px solid #e2e8f0;
  /* Иконки SpacePanel под ухом (ритм 56px). */
  background-image:
    radial-gradient(circle 16px at 26px 86px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 16px at 26px 142px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 16px at 26px 198px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 16px at 26px 254px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 16px at 26px 310px, #e2e8f0 99%, transparent 101%);
  background-size: 32px 32px;
  background-repeat: no-repeat;
  background-position:
    10px 70px,
    10px 126px,
    10px 182px,
    10px 238px,
    10px 294px;
  background-color: #ffffff;
}

.cdto-l1-right {
  border-left: 1px solid #e2e8f0;
  background-image:
    radial-gradient(circle 14px at 26px 86px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 14px at 26px 142px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 14px at 26px 198px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 14px at 26px 254px, #e2e8f0 99%, transparent 101%);
  background-size: 28px 28px;
  background-repeat: no-repeat;
  background-position:
    12px 72px,
    12px 128px,
    12px 184px,
    12px 240px;
  background-color: #ffffff;
}

/* Кнопка-ухо: 52×56 (= app-bar 58 − edge-stack 2), как .nav-btn--toggle / SpacePanel_toggle. */
.cdto-l1-ear {
  flex: 0 0 var(--cdto-l1-ear-h, 56px);
  height: var(--cdto-l1-ear-h, 56px);
  width: 100%;
  box-sizing: border-box;
  background: linear-gradient(180deg, #ffffff 0%, #f1f5f9 100%);
  border-bottom: 1px solid #e2e8f0;
  position: relative;
  /* Явная кромка стыка с ухом меню (edge-stack уже снаружи через margin-top). */
  box-shadow: 0 1px 0 rgba(15, 118, 110, 0.06);
}
.cdto-l1-ear::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 12px;
  height: 12px;
  box-sizing: border-box;
  border-right: 3px solid #0f766e;
  border-bottom: 3px solid #0f766e;
  /* Chevron вправо (развернуть список) — как слева на Трекере/Телеграфе. */
  transform: translate(-55%, -50%) rotate(-45deg);
}
.cdto-l1-ear--right::after {
  /* Зеркало: открыть панель влево. */
  transform: translate(-45%, -50%) rotate(135deg);
}

.cdto-l1-list {
  flex: 0 0 var(--cdto-l1-list-w, 28%);
  width: var(--cdto-l1-list-w, 28%);
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  background: #ffffff;
  border-right: 1px solid #e2e8f0;
  min-width: 0;
  overflow: hidden;
}

/* Поиск — app-bar 58px flush под меню (как [data-testid=room-list-search]). */
.cdto-l1-list-search {
  flex: 0 0 var(--cdto-space-app-bar-h, 58px);
  height: var(--cdto-space-app-bar-h, 58px);
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  /* Без верхней границы — кромку даёт меню (rgba + #0a5c56) поверх этого бара. */
  border-top: none;
  /* Нижняя граница — как у ушей рэйлов (.cdto-l1-ear). */
  border-bottom: 1px solid #e2e8f0;
  box-shadow: none;
  background-color: #ffffff;
  background-image:
    linear-gradient(#eef2f6, #eef2f6),
    linear-gradient(180deg, #ffffff 0%, #f1f5f9 100%);
  background-size: calc(100% - 24px) 36px, auto;
  background-repeat: no-repeat;
  background-position: 12px 11px, 0 0;
  background-clip: padding-box;
  border-radius: 0;
}

.cdto-l1-list-head {
  flex: 0 0 28px;
  margin: 14px 16px 6px;
  border-radius: 4px;
  background: #e8edf2;
  max-width: 55%;
}

.cdto-l1-list-chips {
  flex: 0 0 28px;
  margin: 0 12px 10px;
  background-image:
    linear-gradient(#e8edf2, #e8edf2),
    linear-gradient(#e8edf2, #e8edf2);
  background-size: 108px 24px, 64px 24px;
  background-repeat: no-repeat;
  background-position: 0 2px, 116px 2px;
  border-radius: 999px;
}

.cdto-l1-list-rows {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.cdto-l1-list-rows > span {
  display: block;
  height: 52px;
  border-radius: 10px;
  box-sizing: border-box;
  background-image:
    radial-gradient(circle 16px at 24px 26px, #e2e8f0 99%, transparent 101%),
    linear-gradient(#e8edf2, #e8edf2),
    linear-gradient(#eef2f6, #eef2f6);
  background-size: 32px 32px, 52% 11px, 36% 9px;
  background-repeat: no-repeat;
  background-position: 8px 10px, 52px 16px, 52px 31px;
}

.cdto-l1-list-rows > span.is-on {
  background-color: #ece7f8;
  background-image:
    radial-gradient(circle 16px at 24px 26px, #d4c8f0 99%, transparent 101%),
    linear-gradient(#d8d0ec, #d8d0ec),
    linear-gradient(#e2dcf2, #e2dcf2);
}

.cdto-l1-main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  background-image: url("/branding/telegraf-chat-wallpaper-pattern-20260727c.jpg");
  background-repeat: repeat;
  background-size: 360px auto;
  background-color: #c6d7c7;
}

/*
 * RoomHeader — сплошная полоса app-bar 58px flush под меню (эталон живой страницы).
 * Без border-top / inset: нижняя кромка меню рисуется поверх (z-index nav > L1).
 */
.cdto-l1-header {
  flex: 0 0 var(--cdto-l1-header-h, 58px);
  height: var(--cdto-l1-header-h, 58px);
  min-height: var(--cdto-l1-header-h, 58px);
  max-height: var(--cdto-l1-header-h, 58px);
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  border-top: none;
  border-bottom: 1px solid var(--cdto-app-bar-border-color, #e2e8f0);
  box-shadow: var(--cdto-app-bar-shadow, 0 1px 0 rgba(15, 118, 110, 0.05));
  background: var(--cdto-app-bar-bg, linear-gradient(180deg, #ffffff 0%, #f1f5f9 100%));
  background-color: #ffffff;
  background-image:
    linear-gradient(180deg, #ffffff 0%, #f1f5f9 100%),
    radial-gradient(circle 18px, #e2e8f0 99%, transparent 101%),
    linear-gradient(#e8edf2, #e8edf2),
    radial-gradient(circle 10px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 10px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 10px, #e2e8f0 99%, transparent 101%),
    radial-gradient(circle 10px, #e2e8f0 99%, transparent 101%);
  background-size:
    auto,
    36px 36px,
    min(220px, 42%) 14px,
    20px 20px,
    20px 20px,
    20px 20px,
    20px 20px;
  background-repeat: no-repeat;
  background-position:
    0 0,
    16px 11px,
    64px 22px,
    calc(100% - 140px) 19px,
    calc(100% - 104px) 19px,
    calc(100% - 68px) 19px,
    calc(100% - 32px) 19px;
}

.cdto-l1-feed {
  flex: 1 1 auto;
  min-height: 0;
  position: relative;
  box-sizing: border-box;
  padding: 28px 20px 16px;
}

/* Крупный входящий bubble — как белое сообщение в живой комнате. */
.cdto-l1-bubble {
  width: min(560px, 62%);
  max-width: 100%;
  height: min(220px, 38%);
  min-height: 120px;
  border-radius: 12px;
  background: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
  background-image:
    linear-gradient(#e8edf2, #e8edf2),
    linear-gradient(#eef2f6, #eef2f6),
    linear-gradient(#eef2f6, #eef2f6),
    linear-gradient(#eef2f6, #eef2f6);
  background-size: 42% 12px, 88% 10px, 78% 10px, 64% 10px;
  background-repeat: no-repeat;
  background-position: 18px 18px, 18px 44px, 18px 64px, 18px 84px;
}

/* Стек превью справа — как вложения на скрине живой комнаты. */
.cdto-l1-thumbs {
  position: absolute;
  right: 20px;
  top: 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: min(168px, 22%);
}

.cdto-l1-thumbs > b {
  display: block;
  height: 96px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.88);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
  border: 1px solid rgba(226, 232, 240, 0.9);
}

.cdto-l1-composer {
  flex: 0 0 var(--cdto-l1-composer-h, 58px);
  height: var(--cdto-l1-composer-h, 58px);
  padding: 0 16px 14px;
  box-sizing: border-box;
}
.cdto-l1-composer::after {
  content: "";
  display: block;
  height: 44px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

/* 20260824a: first-byte enroll card hidden unless html.cdto-enroll-firstbyte (beats overlay flex). */
html:not(.cdto-enroll-firstbyte) #cdto-telegraf-auth-busy[data-cdto-firstbyte] {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
}

/* First-paint only: unhide until JS takes over. After hideBusy() --hidden must win. */
html.cdto-telegraf-auth-first-paint:not([data-cdto-busy-dismissed]) #cdto-telegraf-auth-busy.cdto-telegraf-auth-busy--hidden,
html.cdto-telegraf-oauth-callback:not([data-cdto-busy-dismissed]) #cdto-telegraf-auth-busy.cdto-telegraf-auth-busy--hidden,
html.cdto-telegraf-enroll-settle:not([data-cdto-busy-dismissed]) #cdto-telegraf-auth-busy.cdto-telegraf-auth-busy--hidden {
  display: flex !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  visibility: visible !important;
}

/* Help room: busy снимать только при data-cdto-busy-dismissed / help-ready.
 * fix19: не голый .mx_RoomView.
 * fix21: НЕ body:has(.mx_RoomView_body) — обгонял JS hold 800 мс → пустой mint / remount. */
html[data-cdto-busy-dismissed="1"] #cdto-telegraf-auth-busy,
html.cdto-telegraf-help-ready #cdto-telegraf-auth-busy,
html.cdto-telegraf-home-ready #cdto-telegraf-auth-busy {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

/* Фон страницы — mint, даже до paint overlay (анти-белый OIDC). */
html.cdto-telegraf-oauth-callback,
html.cdto-telegraf-enroll-settle,
html.cdto-telegraf-auth-first-paint {
  background-color: #ecfdf5 !important;
}
html.cdto-telegraf-oauth-callback body,
html.cdto-telegraf-enroll-settle body,
html.cdto-telegraf-auth-first-paint body {
  background-color: #ecfdf5 !important;
  background-image: none !important;
}

/* Viewport под меню — mint как IdP; overlay прозрачный чтобы particle был виден. */
html.cdto-telegraf-oauth-callback #cdto-telegraf-auth-busy,
html.cdto-telegraf-enroll-settle #cdto-telegraf-auth-busy {
  top: var(--cdto-space-menu-h, 52px) !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  max-width: 100vw !important;
  height: calc(100vh - var(--cdto-space-menu-h, 52px)) !important;
  min-height: calc(100vh - var(--cdto-space-menu-h, 52px)) !important;
  z-index: 10050 !important;
  background-color: #ecfdf5 !important;
  background-image: none !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  padding-top: 0 !important;
  box-sizing: border-box !important;
}

/* T1c / welcome-parity: particle внутри busy — z-index 0 под карточкой.
 * Canvas на body (z 10040) перекрывается opaque busy — не полагаться на body. */
html.cdto-telegraf-oauth-callback #cdto-telegraf-auth-busy #cdto-particle-network-canvas,
html.cdto-telegraf-enroll-settle #cdto-telegraf-auth-busy #cdto-particle-network-canvas,
html.cdto-telegraf-auth-first-paint #cdto-telegraf-auth-busy #cdto-particle-network-canvas,
#cdto-telegraf-auth-busy #cdto-particle-network-canvas {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  z-index: 0 !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: none !important;
}
html.cdto-telegraf-oauth-callback #cdto-telegraf-auth-busy .cdto-auth-wait-stage,
html.cdto-telegraf-enroll-settle #cdto-telegraf-auth-busy .cdto-auth-wait-stage,
#cdto-telegraf-auth-busy .cdto-auth-wait-stage {
  position: relative !important;
  z-index: 1 !important;
}
/* Fallback: canvas ещё на body (до mount) — над Element, под busy. */
html.cdto-telegraf-oauth-callback #cdto-particle-network-canvas,
html.cdto-telegraf-enroll-settle #cdto-particle-network-canvas,
html.cdto-telegraf-auth-first-paint #cdto-particle-network-canvas {
  z-index: 10040 !important;
  visibility: visible !important;
  opacity: 1 !important;
}
html.cdto-telegraf-oauth-callback #cdto-telegraf-auth-busy #cdto-particle-network-canvas,
html.cdto-telegraf-enroll-settle #cdto-telegraf-auth-busy #cdto-particle-network-canvas,
html.cdto-telegraf-auth-first-paint #cdto-telegraf-auth-busy #cdto-particle-network-canvas {
  z-index: 0 !important;
}

html.cdto-telegraf-oauth-callback body.cdto-space-menu-pending .cdto-auth-wait-skeleton,
html.cdto-telegraf-enroll-settle body.cdto-space-menu-pending .cdto-auth-wait-skeleton {
  display: none !important;
}

/* Карточка как эталон IdP «Вход»: центр, один спиннер + title + sub (fix17). */
html.cdto-telegraf-oauth-callback .cdto-auth-wait-card,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-card {
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  margin-top: var(--cdto-idp-card-gap-top, 146px) !important;
  width: min(var(--cdto-enroll-card-max-w, 36rem), calc(100vw - 2rem)) !important;
  max-width: var(--cdto-enroll-card-max-w, 36rem) !important;
  min-height: var(--cdto-enroll-card-min-h, 26rem) !important;
  padding: var(--cdto-enroll-card-pad-y, 2rem) var(--cdto-enroll-card-pad-x, 1.75rem) !important;
  border-radius: var(--cdto-enroll-card-radius, 0.5rem) !important;
  background: #ffffff !important;
  box-shadow: 0 4px 24px rgba(15, 118, 110, 0.12) !important;
  justify-content: center !important;
  gap: var(--cdto-enroll-card-gap, 0.85rem) !important;
  overflow: hidden !important;
}

html.cdto-telegraf-oauth-callback .cdto-auth-wait-card .cdto-auth-wait-spinner,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-card .cdto-auth-wait-spinner {
  margin: 0 auto !important;
}

html.cdto-telegraf-oauth-callback .cdto-auth-wait-card .cdto-auth-wait-title,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-card .cdto-auth-wait-title {
  display: block !important;
  box-sizing: border-box !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  border-bottom: none !important;
  text-align: center !important;
  color: var(--cdto-enroll-title-color, #151515) !important;
  font-size: var(--cdto-enroll-title-size, 1.5rem) !important;
  font-weight: var(--cdto-enroll-title-weight, 700) !important;
  line-height: 1.35 !important;
  opacity: 1 !important;
}

html.cdto-telegraf-oauth-callback .cdto-auth-wait-card .cdto-auth-wait-long,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-card .cdto-auth-wait-long {
  display: block !important;
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 22rem !important;
  margin: 0 auto !important;
  padding: 0 !important;
  text-align: center !important;
  color: #475569 !important;
  opacity: 1 !important;
  max-height: none !important;
}

html.cdto-telegraf-oauth-callback .cdto-auth-wait-card .cdto-auth-wait-long--visible,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-card .cdto-auth-wait-long--visible {
  opacity: 1 !important;
  max-height: none !important;
  margin-top: 0 !important;
}

/* Stage не ждать 250ms — иначе «пустая»/короткая карточка */
html.cdto-telegraf-oauth-callback .cdto-auth-wait-stage,
html.cdto-telegraf-enroll-settle .cdto-auth-wait-stage {
  opacity: 1 !important;
  transform: none !important;
}

/* E2/E3 fail-open actions */
html.cdto-telegraf-enroll-settle .cdto-auth-wait-fail-actions,
html.cdto-telegraf-oauth-callback .cdto-auth-wait-fail-actions {
  display: none;
  margin-top: 0.75rem;
}

html.cdto-telegraf-enroll-settle.cdto-enroll-ux-fail .cdto-auth-wait-fail-actions,
html.cdto-telegraf-oauth-callback.cdto-enroll-ux-fail .cdto-auth-wait-fail-actions {
  display: block !important;
}

html.cdto-telegraf-enroll-settle.cdto-enroll-ux-fail .cdto-auth-wait-spinner,
html.cdto-telegraf-oauth-callback.cdto-enroll-ux-fail .cdto-auth-wait-spinner {
  display: none !important;
}

/* C′: не мигать «Настройка ключей» под shell enroll */
html.cdto-telegraf-enroll-settle .mx_SetupEncryptionBody,
html.cdto-telegraf-oauth-callback .mx_SetupEncryptionBody,
html.cdto-telegraf-enroll-settle .mx_CompleteSecurity,
html.cdto-telegraf-oauth-callback .mx_CompleteSecurity,
html.cdto-telegraf-enroll-settle .mx_EncryptionCard,
html.cdto-telegraf-oauth-callback .mx_EncryptionCard {
  visibility: hidden !important;
  pointer-events: none !important;
}

/* fix7/fix17: прятать голый ProgressBar/Splash под CDTO-карточкой (не «прямоугольник»). */
html.cdto-telegraf-auth-in-progress .mx_LoginSplashView,
html.cdto-telegraf-enroll-settle .mx_LoginSplashView,
html.cdto-telegraf-oauth-callback .mx_LoginSplashView,
html.cdto-telegraf-launch-busy .mx_LoginSplashView,
html.cdto-telegraf-auth-first-paint .mx_LoginSplashView,
body:has(#cdto-telegraf-auth-busy:not(.cdto-telegraf-auth-busy--hidden)) .mx_LoginSplashView,
html:has(#cdto-telegraf-auth-busy:not(.cdto-telegraf-auth-busy--hidden)) .mx_LoginSplashView,
html.cdto-telegraf-auth-in-progress .mx_AuthPage progress.mx_ProgressBar,
html.cdto-telegraf-enroll-settle .mx_AuthPage progress.mx_ProgressBar,
html.cdto-telegraf-oauth-callback .mx_AuthPage progress.mx_ProgressBar,
html.cdto-telegraf-auth-in-progress .mx_AuthPage .mx_ProgressBar,
html.cdto-telegraf-enroll-settle .mx_AuthPage .mx_ProgressBar,
html.cdto-telegraf-auth-in-progress:not([data-cdto-busy-dismissed="1"]) progress.mx_ProgressBar,
html.cdto-telegraf-enroll-settle:not([data-cdto-busy-dismissed="1"]) progress.mx_ProgressBar,
html.cdto-telegraf-auth-in-progress:not([data-cdto-busy-dismissed="1"]) .mx_ProgressBar {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

.cdto-auth-wait-fail-btn {
  display: inline-block;
  padding: 0.65rem 1.25rem;
  font-size: 1rem;
  font-weight: 600;
  color: #fff;
  background: #0f766e;
  border: none;
  border-radius: 0.375rem;
  cursor: pointer;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
}
