@font-face{font-family:'icomoon';src:url('/admin/static/icomoon.woff') format('woff');font-weight:normal;font-style:normal;font-display:block;}
[class^="icon-"],[class*=" icon-"]{font-family:'icomoon'!important;speak:none;font-style:normal;font-weight:normal;
  font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;}
.icon-loupe:before{content:""}.icon-employees:before{content:""}.icon-team-success:before{content:""}
.icon-check:before{content:""}.icon-coin-stack:before{content:""}.icon-reload:before{content:""}
.icon-filter:before{content:""}.icon-blank:before{content:""}.icon-task:before{content:""}
.icon-target:before{content:""}
/* Light theme is the default (defined on :root). Dark theme is opt-in via
   html[data-theme="dark"]. Keeping light on :root means the page renders light
   before the (body-level) theme-init script runs, so default users see no flash. */
:root{
  --brand:#4f46e5;--brand-dark:#4338ca;--brand-50:#eef2ff;--brand-100:#e0e7ff;
  --bg:#eef1f6;--surface:#ffffff;--border:#e4e8ef;--border-strong:#cbd2de;
  --text:#1e2638;--muted:#697587;--danger:#dc2626;
  --th-bg:#f7f8fb;--td-border:#eef1f6;--row-hover:#f8fafc;--code-bg:#f1f3f8;
  --footer-bg:var(--brand-50);--chip-bg:#eef2ff;--chip-border:#c7d2fe;--chip-text:#4338ca;
  --shadow-sm:0 1px 2px rgba(16,24,40,.06);
  --shadow:0 1px 3px rgba(16,24,40,.08),0 1px 2px rgba(16,24,40,.05);
  --shadow-md:0 6px 20px rgba(16,24,40,.10);
}
html[data-theme="dark"]{
  --brand:#818cf8;--brand-dark:#6366f1;--brand-50:#1e2533;--brand-100:#2a3344;
  --bg:#0e131a;--surface:#171e27;--border:#2a323d;--border-strong:#3a434f;
  --text:#e5e9f0;--muted:#9aa6b6;--danger:#f87171;
  --th-bg:#141a22;--td-border:#222a34;--row-hover:#1e2630;--code-bg:#202934;
  --footer-bg:#141a22;--chip-bg:#222b3a;--chip-border:#33405a;--chip-text:#c7d2fe;
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow:0 1px 3px rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 6px 20px rgba(0,0,0,.5);
}
*{box-sizing:border-box;}
body{font-family:'Inter','Segoe UI',-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,sans-serif!important;
  background:var(--bg)!important;color:var(--text)!important;-webkit-font-smoothing:antialiased;line-height:1.5;}
/* Базовый контейнер контента для страниц без собственных inline-стилей body
   (страницы с собственным max-width его переопределяют — без !important). */
body{max-width:1180px;margin:0 auto;padding:24px 20px 72px;}
h1{font-size:25px;font-weight:700;letter-spacing:-.015em;margin:0 0 6px;}
h2{font-size:18px;font-weight:650;letter-spacing:-.01em;}
a{color:var(--brand);}

/* ---- unified top navigation (identical on every page) ---- */
nav.tabs{display:flex!important;flex-wrap:wrap!important;gap:4px!important;align-items:center;
  margin:16px 0 28px!important;padding:7px!important;background:var(--surface)!important;
  border:1px solid var(--border)!important;border-radius:16px!important;box-shadow:var(--shadow)!important;}
nav.tabs a{padding:9px 14px!important;border:1px solid transparent!important;border-radius:10px!important;
  text-decoration:none!important;color:var(--muted)!important;background:transparent!important;
  font-size:13.5px!important;font-weight:600!important;line-height:1.15!important;white-space:nowrap;
  transition:background .15s,color .15s;}
nav.tabs a:hover{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
nav.tabs a.active{background:var(--brand)!important;color:#fff!important;border-color:var(--brand)!important;
  box-shadow:0 2px 6px rgba(227,82,5,.35)!important;}

/* ---- second-level ("subtabs") nav, e.g. Настройки/Интеграция/Диалоги внутри
   карточки агента — underline style so it reads as a sub-level of the page,
   not a second copy of the main pill nav directly above it ---- */
nav.tabs.agent-subtabs{display:inline-flex!important;flex-wrap:nowrap!important;max-width:100%;overflow-x:auto;
  margin:0 0 24px!important;padding:5px!important;gap:4px!important;
  background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:14px!important;
  box-shadow:var(--shadow-sm)!important;scrollbar-width:thin;}
nav.tabs.agent-subtabs a{display:inline-flex;align-items:center;gap:6px;padding:10px 18px!important;margin:0!important;
  border:none!important;border-radius:10px!important;background:transparent!important;
  color:var(--text)!important;font-size:14px!important;font-weight:600!important;}
nav.tabs.agent-subtabs a:hover{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
nav.tabs.agent-subtabs a.active{background:var(--brand)!important;color:#fff!important;
  box-shadow:0 2px 8px rgba(227,82,5,.35)!important;}
nav.tabs.agent-subtabs a.active:hover{color:#fff!important;}

/* ---- nav dropdown groups (e.g. "Боты", "Диалоги и мониторинг") ---- */
.tabs-group{position:relative;display:inline-flex;}
.tabs-group-trigger{padding:9px 14px!important;border:1px solid transparent!important;border-radius:10px!important;
  color:var(--muted)!important;background:transparent!important;font:inherit;font-size:13.5px!important;
  font-weight:600!important;line-height:1.15!important;white-space:nowrap;cursor:pointer;
  transition:background .15s,color .15s;}
.tabs-group-trigger .caret{font-size:11px;opacity:.7;cursor:pointer;}
.tabs-group-trigger:hover{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
.tabs-group.active .tabs-group-trigger{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
.tabs-group.open .tabs-group-trigger{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
.tabs-group-menu{position:absolute;top:calc(100% + 4px);left:0;display:none;flex-direction:column;gap:2px;
  min-width:190px;background:var(--surface)!important;border:1px solid var(--border)!important;
  border-radius:12px!important;box-shadow:var(--shadow-md)!important;padding:6px!important;z-index:30;}
.tabs-group-menu a{width:auto!important;}
nav.tabs.nav-hover-closed:not(.nav-open) .tabs-group:hover>.tabs-group-menu{display:none!important;}
nav.tabs.nav-hover-closed:not(.nav-open) .tabs-group.hover-hold>.tabs-group-menu{display:none!important;}
/* .tabs-group.open .tabs-group-menu (потомок, без >) той же специфичности, что
   и re-show ниже, достаёт и вложенное меню через открытого родителя, даже
   когда сам .tabs-group.nested не .open — сбрасываем и открываем явно только
   свой уровень, плюс отдельно вложенный, когда у него самого есть .open. */
.tabs-group.open .tabs-group-menu{display:none;}
.tabs-group.open>.tabs-group-menu{display:flex;}
.tabs-group.nested.open>.tabs-group-menu{display:flex;}
/* Скрыт по умолчанию, раскрывается при наведении (десктоп) — независимо от
   .open (клик остаётся рабочим для тач-устройств, где :hover не срабатывает).
   Псевдоэлемент-«мостик» перекрывает зазор между кнопкой и меню, чтобы курсор
   не терял :hover при диагональном движении в само меню. */
.tabs-group:hover>.tabs-group-menu{display:flex;}
/* hover-hold — короткая задержка закрытия (JS), чтобы флаут не пропадал,
   если курсор на мгновение соскользнул с кнопки по пути в меню. */
.tabs-group.hover-hold>.tabs-group-menu{display:flex;}
.tabs-group:hover>.tabs-group-trigger::after{content:'';position:absolute;left:0;right:0;top:100%;height:6px;}
/* ---- nested flyout (e.g. "Боты ОЛ" -> список конкретных ботов) ---- */
.tabs-group-menu .tabs-group.nested{width:100%;}
.tabs-group-menu .tabs-group.nested>.tabs-group-trigger{width:100%;display:flex!important;
  align-items:center;justify-content:space-between;gap:8px;text-align:left;}
.tabs-group-menu .tabs-group.nested>.tabs-group-menu{top:-6px;left:calc(100% + 4px);}

/* ---- header ---- */
.topbar{padding-bottom:18px;border-bottom:1px solid var(--border);}

/* ---- cards ---- */
.card{border:1px solid var(--border)!important;border-radius:14px!important;background:var(--surface)!important;
  box-shadow:var(--shadow-sm)!important;}

/* ---- connector tiles (rounded squares, Bitrix Open Lines connector page style) ---- */
.connector-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;max-width:1000px;margin-top:20px;}
.connector-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;min-height:180px;padding:24px 14px;border-radius:14px;border:1px solid var(--border);
  background:var(--surface);text-decoration:none!important;color:var(--text)!important;text-align:center;
  box-shadow:var(--shadow-sm);transition:transform .15s,box-shadow .15s;}
.connector-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);}
.connector-tile__link{display:flex;flex-direction:column;align-items:center;gap:10px;
  text-decoration:none!important;color:inherit!important;}
.connector-tile__link::after{content:'';position:absolute;inset:0;border-radius:14px;}
.connector-tile__company{display:flex;flex-direction:column;align-items:center;gap:2px;
  font-size:13px;color:var(--muted);line-height:1.35;}
.connector-tile__portal{position:relative;z-index:1;font-weight:600;color:var(--brand)!important;}
.connector-tile--active .connector-tile__company,
.connector-tile--active .connector-tile__portal{color:rgba(255,255,255,.92)!important;}
.connector-tile__icon{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:64px;height:64px;
  border-radius:50%;font-size:28px;line-height:1;}
.connector-tile__label{font-size:18px;font-weight:700;line-height:1.25;}
.connector-tile__status{font-size:14px;font-weight:600;color:var(--muted);line-height:1.4;}
.connector-tile__badge{position:absolute;top:-8px;right:-8px;width:26px;height:26px;border-radius:50%;
  background:#fff;color:#16a34a;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:900;box-shadow:0 1px 4px rgba(16,24,40,.3);}
.connector-tile--error .connector-tile__status{color:var(--danger)!important;}
.connector-tile--broken{border:2px solid var(--danger);box-shadow:0 0 0 4px rgba(220,38,38,.14);}
.connector-tile__health{font-size:13px;font-weight:700;color:var(--danger);line-height:1.35;}
.connector-tile--hh .connector-tile__icon{background:rgba(220,38,38,.12);color:#dc2626;}
.connector-tile--max .connector-tile__icon{background:rgba(139,92,246,.16);color:#7c3aed;}
.connector-tile--hh.connector-tile--active{background:#dc2626;border-color:transparent;}
.connector-tile--max.connector-tile--active{background:#8b5cf6;border-color:transparent;}
.connector-tile--whatsapp .connector-tile__icon{background:rgba(37,211,102,.16);color:#128c7e;}
.connector-tile--whatsapp.connector-tile--active{background:#25d366;border-color:transparent;}
.connector-tile--avito .connector-tile__icon{background:rgba(0,170,255,.16);color:#0086cc;font-weight:700;}
.connector-tile--avito.connector-tile--active{background:#00aaff;border-color:transparent;}
.connector-tile--active .connector-tile__label{color:#fff!important;}
.connector-tile--active .connector-tile__icon{background:rgba(255,255,255,.22)!important;color:#fff!important;}
.connector-tile--active .connector-tile__status{color:rgba(255,255,255,.85)!important;}
.connector-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;
  margin:0 0 18px;}
.connector-actions{display:flex;flex-wrap:wrap;gap:10px;}
.connector-view{position:relative;margin-left:auto;}
.connector-view__trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;min-width:180px;
  padding:10px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);
  color:var(--text);font:inherit;font-weight:650;cursor:pointer;box-shadow:var(--shadow-sm);}
.connector-view__trigger:hover,.connector-view__trigger[aria-expanded='true']{border-color:var(--brand);color:var(--brand-dark);}
.connector-view__menu{position:absolute;right:0;top:calc(100% + 6px);z-index:25;display:none;min-width:240px;
  padding:6px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-md);}
.connector-view.open .connector-view__menu{display:grid;gap:2px;}
.connector-view__option{width:100%;padding:9px 11px;border:0;border-radius:8px;background:transparent;color:var(--text);
  font:inherit;font-size:14px;font-weight:600;text-align:left;cursor:pointer;}
.connector-view__option:hover{background:var(--brand-50);color:var(--brand-dark);}
.connector-view__option[aria-checked='true']{background:var(--brand);color:#fff;}
.connector-section{margin-top:26px;}
.connector-section:first-child{margin-top:0;}
.connector-section__title{margin:0 0 4px;font-size:18px;}
.connector-section .connector-grid{margin-top:14px;}
@media(max-width:640px){.connector-toolbar{align-items:stretch}.connector-actions,.connector-view{width:100%;margin-left:0}
  .connector-view__trigger{width:100%}.connector-view__menu{left:0;right:auto;width:100%;}}
@media(max-width:480px){.connector-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));}}

/* ---- connector settings pages (.cx) ---- */
.cx-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 4px;font-size:14px;color:var(--muted);}
.cx-crumbs a{color:var(--muted);text-decoration:none;font-weight:600;}
.cx-crumbs a:hover{color:var(--brand-dark);text-decoration:underline;}
.cx-crumbs__sep{color:var(--border-strong);}
.cx-crumbs__current{color:var(--text);font-weight:700;}
.cx{max-width:880px;display:flex;flex-direction:column;gap:20px;margin-top:16px;font-size:14px;}
.cx-step{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--cx-accent,var(--brand));
  border-radius:14px;box-shadow:var(--shadow);padding:20px 24px 24px;}
.cx-step__head{display:flex;align-items:center;gap:12px;padding-bottom:14px;margin-bottom:4px;border-bottom:1px solid var(--border);}
.cx-step__num{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex-shrink:0;
  border-radius:50%;background:var(--cx-accent,var(--brand));color:#fff;font-weight:800;font-size:14px;}
.cx-step__title{margin:0;font-size:18px;line-height:1.2;}
.cx-step__subtitle{display:block;margin-top:3px;color:var(--muted);font-size:13px;font-weight:400;}
.cx-step__body{display:flex;flex-direction:column;}
.cx-step__body>section,.cx-step__body>form,.cx-step__body>div{border:0!important;border-radius:0!important;background:none!important;
  padding:18px 0 0!important;margin:0!important;}
.cx .cx-step__body>*+*{border-top:1px solid var(--border)!important;margin-top:18px!important;}
.cx h3{font-size:15px!important;margin:0 0 10px!important;}
.cx p{line-height:1.5;font-size:14px;}
.cx form.edit .wide{grid-column:1 / -1;}
.cx label{font-size:13px!important;font-weight:600!important;color:var(--text);}
.cx input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.cx select,.cx textarea{
  box-sizing:border-box;width:100%;min-height:40px;padding:9px 12px!important;border:1px solid var(--border-strong)!important;
  border-radius:8px!important;background:var(--surface)!important;color:var(--text)!important;font:inherit;font-size:14px!important;font-weight:400!important;
  transition:border-color .15s,box-shadow .15s;}
.cx input:focus,.cx select:focus,.cx textarea:focus{outline:none;border-color:var(--brand)!important;box-shadow:0 0 0 3px var(--brand-100);}
.cx form[style*='flex'] label{flex:1 1 200px;}
.cx form[style*='flex'] select{width:auto;min-width:220px;}
.cx button,.cx .cx-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;
  padding:9px 18px!important;border:1px solid var(--brand)!important;border-radius:8px!important;background:var(--brand)!important;
  color:#fff!important;font:inherit;font-size:14px!important;font-weight:700!important;text-decoration:none!important;
  white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s,border-color .15s,transform .05s;}
.cx button:hover,.cx .cx-btn:hover{background:var(--brand-dark)!important;border-color:var(--brand-dark)!important;}
.cx button:active{transform:translateY(1px);}
.cx button.btn-ghost{min-height:32px;padding:5px 12px!important;background:var(--surface)!important;color:var(--text)!important;
  border-color:var(--border-strong)!important;font-size:13px!important;font-weight:600!important;box-shadow:none;}
.cx button.btn-ghost:hover{background:var(--brand-50)!important;border-color:var(--brand)!important;}
.cx button.btn-danger{background:var(--surface)!important;color:var(--danger)!important;border-color:var(--danger)!important;}
.cx button.btn-danger:hover{background:#fef2f2!important;}
.cx code{padding:1px 6px;border-radius:5px;background:var(--code-bg);font-size:12px;}
.cx pre{margin:10px 0!important;}
.dstat-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap;line-height:1.5;}
.dstat-badge--bot{background:#e0ecff;color:#1d4ed8;}
.dstat-badge--client{background:#dcfce7;color:#166534;}
.dstat-badge--wait{background:#fef3c7;color:#92400e;}
.dstat-badge--manager{background:#ede9fe;color:#6d28d9;}
.dstat-badge--done{background:#eef0f3;color:#475467;}
.dstat-legend{margin:0 0 12px;padding:10px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:13px;}
.dstat-legend summary{cursor:pointer;font-weight:700;}
.dstat-legend__row{display:flex;gap:10px;align-items:flex-start;margin-top:8px;flex-wrap:wrap;}
.dstat-legend__row ul{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;list-style:none;}
.cx-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:700;
  background:#f1f5f9;color:#475569;}
.cx-pill::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;}
.cx-pill--connected{background:#dcfce7;color:#166534;}
.cx-pill--error{background:#fee2e2;color:#991b1b;}
.cx-pill--lg{padding:6px 16px;font-size:16px;}
.cx-pill--lg::before{width:10px;height:10px;}
.cx-alert{padding:12px 16px;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;}
.cx-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.cx-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.cx-grid .wide{grid-column:1 / -1;}
.cx-hint{margin:0;color:var(--muted);font-size:12px;}
@media(max-width:700px){.cx-grid{grid-template-columns:1fr;}.cx-step{padding:16px;}}
/* ---- MAX Account: чаты аккаунта (.mxc) ---- */
.mxc{display:grid;grid-template-columns:300px minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:600px;border:1px solid var(--border)!important;
  border-radius:12px!important;overflow:hidden;padding:0!important;margin-top:14px!important;}
.mxc-list{overflow-y:auto;border-right:1px solid var(--border);background:var(--surface);}
.mxc-item{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 14px;
  border-bottom:1px solid var(--border);cursor:pointer;outline:none;}
.mxc-item:hover,.mxc-item:focus-visible{background:var(--row-hover);}
.mxc-item.is-active{background:var(--brand-50);}
.mxc-item--deleted{opacity:.66;}
.mxc-avatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:17px;color:#fff;background:#94a3b8;}
.mxc-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mxc-tag{display:block;font-size:11px;font-weight:600;color:var(--muted);}
.mxc-tag--archived{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:#f1f5f9;color:#64748b;}
.mxc-tag--deleted{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;background:#fee2e2;color:#991b1b;}
.mxc-phone{font-size:12px;color:var(--text);margin-top:2px;}
.mxc-lead{font-size:12px;font-weight:700;white-space:nowrap;}
.mxc-more{display:block;width:calc(100% - 28px);margin:12px 14px;}
.mxc-preview{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px;}
.mxc-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px;align-self:start;font-size:12px;color:var(--muted);}
.mxc-unread{min-width:20px;height:20px;padding:0 6px;box-sizing:border-box;border-radius:999px;background:#16a34a;color:#fff;
  font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;}
.mxc-pane{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg);}
.mxc-pane__head{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border);
  font-weight:700;min-height:44px;}
.mxc-avatar{overflow:hidden;flex-shrink:0;}
.mxc-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.mxc-pane__head .mxc-avatar{width:36px;height:36px;font-size:14px;}
.mxc-messages{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px;}
.mxc-empty{margin:auto;color:var(--muted);text-align:center;font-size:14px;}
.mxc-day{align-self:center;padding:3px 12px;border-radius:999px;background:var(--surface);color:var(--muted);font-size:12px;
  font-weight:600;margin:6px 0;box-shadow:var(--shadow-sm);}
.mxc-msg{max-width:72%;padding:8px 12px 6px;border-radius:14px;background:var(--surface);box-shadow:var(--shadow-sm);
  align-self:flex-start;word-break:break-word;white-space:pre-wrap;font-size:14px;line-height:1.4;}
.mxc-msg--out{align-self:flex-end;background:#dcf8c6;}
.mxc-msg__time{display:block;margin-top:3px;text-align:right;font-size:11px;color:#64748b;white-space:nowrap;}
.mxc-msg img,.mxc-msg video{display:block;max-width:280px;max-height:320px;border-radius:10px;margin-bottom:4px;}
.mxc-msg audio{display:block;width:260px;max-width:100%;margin-bottom:2px;}
.mxc-msg a{color:var(--brand-dark);font-weight:600;}
.mxc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.mxc-spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;
  animation:mxc-spin .7s linear infinite;vertical-align:-2px;margin-right:6px;}
@keyframes mxc-spin{to{transform:rotate(360deg);}}
.mxc-loader{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;color:var(--muted);font-size:14px;}
.mxc-list.is-busy{opacity:.55;pointer-events:none;}
.mxc-quote{border-left:3px solid #16a34a;background:rgba(0,0,0,.04);padding:4px 8px;border-radius:6px;margin-bottom:4px;font-size:13px;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mxc-fwd{font-size:12px;color:var(--muted);font-style:italic;margin-bottom:2px;}
.mxc-media-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;margin-bottom:4px;border:1px solid var(--border);border-radius:8px;
  background:var(--surface);cursor:pointer;font:inherit;font-size:13px;}
.mxc-thumb{position:relative;display:inline-block;cursor:pointer;}
.mxc-thumb img{filter:blur(1px);}
.mxc-thumb__hint{position:absolute;inset:auto 6px 10px 6px;text-align:center;font-size:12px;color:#fff;text-shadow:0 1px 2px #000;}
.mxc-card{display:block;padding:6px 8px;margin-bottom:4px;border-radius:8px;background:rgba(0,0,0,.04);font-size:13px;}
.mxc-card ul{margin:4px 0 0;padding-left:18px;}
.mxc-reaction{font-size:22px;line-height:1;}
.mxc-deleted{font-style:italic;color:var(--muted);}
.mxc-call{display:flex;align-items:center;gap:10px;font-size:13px;}
.mxc-call__icon{font-size:22px;}
.mxc-call--missed b{color:#b91c1c;}
.mxc-msg--deleted{outline:1px dashed #f87171;}
.mxc-msg img.mxc-sticker{max-width:140px;background:transparent;}
@media(max-width:760px){.mxc{grid-template-columns:1fr;height:auto;}.mxc-list{max-height:260px;border-right:0;border-bottom:1px solid var(--border);}
  .mxc-messages{height:420px;}}

/* ---- tables ---- */
table{background:var(--surface);border:1px solid var(--border)!important;border-radius:14px;
  overflow:hidden;box-shadow:var(--shadow-sm);}
th{background:var(--th-bg)!important;color:var(--muted)!important;font-size:12px!important;font-weight:600!important;
  text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)!important;}
td{border-bottom:1px solid var(--td-border)!important;}
tbody tr:last-child td{border-bottom:none!important;}
tbody tr:hover td{background:var(--row-hover);}

/* ---- buttons ---- */
button,input[type=submit]{cursor:pointer;border-radius:10px;border:1px solid var(--brand);
  background:var(--brand);color:#fff;font-weight:600;transition:background .15s;}
button:hover,input[type=submit]:hover{background:var(--brand-dark);}
button.danger,.danger{background:var(--danger)!important;border-color:var(--danger)!important;color:#fff!important;}

/* ---- inputs ---- */
input,select,textarea{border-radius:10px;border:1px solid var(--border-strong);background:var(--surface);}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50);}

/* ---- misc ---- */
code{background:var(--code-bg);padding:2px 6px;border-radius:6px;font-size:13px;}
@media(max-width:720px){nav.tabs{gap:3px!important;}nav.tabs a{padding:8px 11px!important;font-size:13px!important;}
  .tabs-group-trigger{padding:8px 11px!important;font-size:13px!important;}
  /* На мобильном :hover не срабатывает — раскрытие только по тапу (.open, уже
     работает через JS). Флаут вбок/абсолютным блоком на узком экране уезжает
     за край экрана — на мобильном каждая группа становится своей строкой на
     всю ширину, а меню — блоком под кнопкой (не абсолютным и не flex-item
     рядом с кнопкой, иначе flex-контейнер .tabs-group разложит их в один ряд
     и продавит горизонтальный скролл всей страницы). */
  .tabs-group{display:block!important;width:100%;}
  .tabs-group-trigger{display:flex!important;width:100%;justify-content:space-between;text-align:left;}
  .tabs-group:hover>.tabs-group-menu,.tabs-group.hover-hold>.tabs-group-menu{display:none;}
  /* Базовое unconditional-правило .tabs-group.open .tabs-group-menu{display:flex}
     (десктоп, потомок — без >) той же специфичности достаёт и вложенное меню
     через открытого родителя, даже когда сам вложенный .tabs-group.nested не
     .open. Сбрасываем это здесь и открываем явно только нужный уровень —
     иначе на мобильном раскрывается сразу всё дерево по клику на верхний пункт. */
  .tabs-group.open .tabs-group-menu{display:none;}
  .tabs-group.open>.tabs-group-menu{display:block;}
  .tabs-group.nested.open>.tabs-group-menu{display:block;}
  .tabs-group-menu{position:static;display:none;width:100%;min-width:0;box-shadow:none!important;
    margin-top:2px;}
  .tabs-group-menu a{display:block!important;}
  .tabs-group-menu .tabs-group.nested{display:block;width:100%;}
  .tabs-group-menu .tabs-group.nested>.tabs-group-menu{position:static;left:auto;top:auto;
    margin-left:12px;border-left:2px solid var(--border)!important;border-radius:0 8px 8px 0!important;}
}

/* ---- узкие экраны: многие страницы задают свои <table>/.grid/.meta/form.edit
   в собственных inline <style> без мобильного брейкпоинта (repeat(N,minmax(NNNpx,1fr))
   не сжимается меньше NNNpx на колонку — на 375px это гарантированный горизонтальный
   скролл всей страницы). Правим централизованно здесь, !important —чтобы выигрывать
   у per-page правил той же специфичности независимо от порядка в документе
   (см. комментарий в начале файла про ADMIN_BASE_CSS и !important). */
@media(max-width:480px){
  table{display:block!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch;}
  .grid,.meta,form.edit,.settings-form{grid-template-columns:1fr!important;}
  /* .topbar (заголовок страницы + кнопки справа, из _render_page_heading — общий
     для всех страниц) на большинстве страниц объявлен без flex-wrap, поэтому
     заголовок и блок кнопок(домой/время/ошибки/выход) не переносятся и вместе
     шире экрана. */
  .topbar{flex-wrap:wrap!important;}
}

/* ---- unified footer (identical on every page) ---- */
footer.app-footer{display:flex!important;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;
  margin:40px 0 0!important;padding:14px 16px!important;border-top:1px solid var(--border)!important;
  background:var(--footer-bg)!important;color:var(--muted)!important;font-size:13px!important;text-align:center;}
footer.app-footer a{color:var(--brand-dark)!important;text-decoration:none;font-weight:700;}
footer.app-footer a:hover{text-decoration:underline;}
footer.app-footer .sep{opacity:.5;}

/* ---- Bitrix MCP: ответ системы + краткий ответ справа ---- */
.mcp-cols{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;align-items:start;margin-top:8px;}
.mcp-answer{background:var(--brand-50);border:1px solid var(--brand-100);border-radius:14px;padding:16px;position:sticky;top:16px;}
.mcp-answer h3{margin:0 0 8px;}
.mcp-answer .text{white-space:pre-wrap;word-break:break-word;font-size:15px;line-height:1.5;}
@media(max-width:860px){.mcp-cols{grid-template-columns:1fr;}.mcp-answer{position:static;}}

/* ---- dark-theme overrides for page-level inline <style> blocks ----
   Scoped to [data-theme="dark"] so they apply only when dark is explicitly
   selected, never in the default light mode. !important beats the per-page rules. */
html[data-theme="dark"] .card,
html[data-theme="dark"] .edit,
html[data-theme="dark"] form.edit,
html[data-theme="dark"] fieldset,
html[data-theme="dark"] details,
html[data-theme="dark"] .box,
html[data-theme="dark"] .panel{background:var(--surface)!important;border-color:var(--border)!important;color:var(--text)!important;}
html[data-theme="dark"] input,
html[data-theme="dark"] select,
html[data-theme="dark"] textarea{background:var(--surface)!important;color:var(--text)!important;border-color:var(--border-strong)!important;}
html[data-theme="dark"] pre{background:var(--code-bg)!important;color:var(--text)!important;border-color:var(--border)!important;}
html[data-theme="dark"] .muted{color:var(--muted)!important;}
html[data-theme="dark"] hr{border-color:var(--border)!important;}

/* ---- PMG reference layout -------------------------------------------------
   The reference in referrer_verstka uses a fixed graphite navigation rail,
   a strong magenta page header and a quiet grey workspace. Keep the existing
   semantic menu and page markup, but give every admin route the same shell. */
:root{
  --brand:#e35205;--brand-dark:#c24604;--brand-50:#fdeee5;--brand-100:#f9d3bd;
  --bg:#e6e9ed;--surface:#fff;--border:#dfe3e8;--border-strong:#c8ced6;
  --sidebar:#434a54;--sidebar-line:#656f7f;--sidebar-text:#fff;
  --chip-bg:var(--brand-50);--chip-border:var(--brand-100);--chip-text:var(--brand-dark);
}
html[data-theme="dark"]{
  --brand:#f26d2b;--brand-dark:#e35205;--brand-50:#2e2119;--brand-100:#5a3420;
  --chip-bg:#2e2119;--chip-border:#5a3420;--chip-text:#fdba8c;
}
html{min-height:100%;background:var(--bg);}
body{
  width:auto!important;max-width:none!important;min-height:100vh;margin:0!important;
  padding:0 20px 64px 70px!important;background:var(--bg)!important;
  transition:padding-left .3s ease-in-out;
}
body:has(nav.tabs.main-nav:not(.nav-hover-closed):hover),body:has(nav.tabs.main-nav.nav-open){padding-left:230px!important;}
body>.topbar{
  min-height:92px;margin:0 -20px!important;padding:14px 20px!important;
  background:var(--brand)!important;border:0!important;color:#fff!important;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
body>.topbar h1,body>.topbar .title-row,body>.topbar strong{color:#fff!important;}
body>.topbar .muted,body>.topbar div,body>.topbar span,body>.topbar label{color:rgba(255,255,255,.82)!important;}
body>.topbar a:not([style*="background"]){color:#fff!important;}
body>.topbar .lang-switcher select{border-color:rgba(255,255,255,.45);}
body>.topbar p{margin:3px 0 0!important;}
.topbar-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;}
.topbar-chip{display:inline-flex!important;align-items:center;gap:6px;padding:7px 10px!important;border-radius:3px!important;
  background:rgba(255,255,255,.14)!important;border:1px solid rgba(255,255,255,.34)!important;color:#fff!important;
  font-size:13px;font-weight:600!important;text-decoration:none!important;}
.topbar-chip:hover{background:rgba(255,255,255,.24)!important;}
.topbar-user{font-size:13px!important;line-height:1.35!important;color:rgba(255,255,255,.82)!important;white-space:nowrap;}
.server-time{display:flex!important;align-items:center;gap:6px!important;text-align:left!important;font-size:12px!important;line-height:1.25!important;}
.server-time>span:first-child,.server-time>span:last-child{display:none;}
.server-time strong{font-size:13px!important;font-weight:600!important;}
.lang-switcher{display:inline-flex!important;align-items:center!important;gap:0!important;padding:2px!important;
  border:1px solid rgba(255,255,255,.38);border-radius:3px;background:rgba(255,255,255,.12);}
.lang-switcher select{height:32px;padding:4px 26px 4px 9px!important;border:0!important;border-radius:2px!important;
  background:#fff!important;color:#343b45!important;font-size:13px!important;box-shadow:none!important;}
.lang-switcher button{width:32px;height:32px;padding:0!important;border:0!important;border-radius:2px!important;
  background:transparent!important;color:#fff!important;font-size:17px!important;}
.lang-switcher button:hover{background:rgba(255,255,255,.18)!important;}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
body>.topbar+.tabs{margin-top:0!important;}
h1{font-size:28px!important;font-weight:600!important;letter-spacing:0!important;}
h2{letter-spacing:0!important;}

nav.tabs.main-nav{
  position:fixed!important;inset:0 auto 0 0!important;z-index:1001!important;
  width:50px!important;height:100vh!important;margin:0!important;padding:57px 0 84px!important;
  display:block!important;overflow:hidden!important;
  background:var(--sidebar)!important;border:0!important;border-radius:0!important;box-shadow:none!important;
  transition:width .3s ease-in-out;
}
nav.tabs.main-nav:not(.nav-hover-closed):hover,nav.tabs.main-nav.nav-open{width:210px!important;overflow:visible!important;}
.nav-brand-toggle{position:absolute;inset:0 auto auto 0;z-index:2;width:50px;height:57px;padding:0!important;
  border:0!important;border-radius:0!important;background:transparent!important;color:transparent!important;cursor:pointer;}
.nav-brand-toggle::before{content:'';position:absolute;left:17px;top:20px;width:18px;height:14px;
  border-top:2px solid #fff;border-bottom:2px solid #fff;box-sizing:border-box;}
.nav-brand-toggle::after{content:'';position:absolute;left:17px;top:26px;width:18px;border-top:2px solid #fff;}
.nav-brand-toggle:focus-visible{outline:2px solid #fff!important;outline-offset:-3px;}
.nav-pin-control{position:absolute;inset:0 12px auto auto;z-index:3;width:28px;height:57px;display:flex;align-items:center;justify-content:center;
  opacity:0;pointer-events:none;color:rgba(255,255,255,.82)!important;cursor:pointer;user-select:none;}
nav.tabs.main-nav:not(.nav-hover-closed):hover .nav-pin-control,nav.tabs.main-nav.nav-open .nav-pin-control{opacity:1;pointer-events:auto;}
.nav-pin-control input{width:16px;height:16px;margin:0;accent-color:var(--brand);cursor:pointer;}
.nav-pin-control span{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
nav.tabs.main-nav::before{
  content:'';position:absolute;inset:0 0 auto 0;height:57px;padding:0;
  display:flex;align-items:center;border-bottom:1px solid var(--sidebar-line);
  color:#fff;font-size:20px;font-weight:700;letter-spacing:0;
  background:none;
  white-space:nowrap;
}
nav.tabs.main-nav:not(.nav-hover-closed):hover::before,nav.tabs.main-nav.nav-open::before{content:'GPT360';padding-left:90px;
  background:url('/admin/static/brand/gpt360-mark.svg') no-repeat 54px center/28px 28px;}
nav.tabs.main-nav>a,nav.tabs.main-nav>.tabs-group>.tabs-group-trigger{
  width:100%!important;min-height:48px!important;margin:0!important;padding:13px 18px!important;
  display:flex!important;align-items:center!important;justify-content:space-between!important;
  border:0!important;border-radius:0!important;color:rgba(255,255,255,.72)!important;
  background:transparent!important;font-size:14px!important;font-weight:400!important;
  text-align:left!important;box-shadow:none!important;white-space:normal!important;
}
nav.tabs.main-nav>a>.nav-label,nav.tabs.main-nav>.tabs-group>.tabs-group-trigger>.nav-label{
  display:block;width:125px;flex:0 0 125px;margin-left:auto;overflow:hidden;white-space:nowrap;font-weight:400;opacity:0;text-align:right;
}
nav.tabs.main-nav:not(.nav-hover-closed):hover>a>.nav-label,nav.tabs.main-nav:not(.nav-hover-closed):hover>.tabs-group>.tabs-group-trigger>.nav-label,
nav.tabs.main-nav.nav-open>a>.nav-label,nav.tabs.main-nav.nav-open>.tabs-group>.tabs-group-trigger>.nav-label{
  overflow:hidden;opacity:1;text-align:right;
}
.nav-icon{width:22px;min-width:22px;text-align:center;font-size:21px;color:rgba(255,255,255,.8);}
nav.tabs.main-nav:not(.nav-hover-closed):hover .nav-icon,nav.tabs.main-nav.nav-open .nav-icon{margin-right:8px;}
nav.tabs.main-nav:not(:hover):not(.nav-open)>.tabs-group>.tabs-group-trigger .caret,
nav.tabs.main-nav.nav-hover-closed:not(.nav-open)>.tabs-group>.tabs-group-trigger .caret{display:none;}
nav.tabs.main-nav>a:hover,nav.tabs.main-nav>a.active,nav.tabs.main-nav>.tabs-group:hover>.tabs-group-trigger,
nav.tabs.main-nav>.tabs-group.active>.tabs-group-trigger,nav.tabs.main-nav>.tabs-group.open>.tabs-group-trigger{
  color:#fff!important;background:#505864!important;
}
.tabs-group{position:relative!important;display:block!important;width:100%!important;}
.tabs-group-menu{
  position:fixed!important;top:auto!important;left:204px!important;margin-top:-48px!important;
  min-width:230px!important;max-height:calc(100vh - 24px);overflow-y:auto;
  padding:7px!important;background:#fff!important;border:1px solid var(--border)!important;
  border-radius:0 6px 6px 0!important;box-shadow:0 8px 28px rgba(20,27,38,.18)!important;
}
.tabs-group-menu a{
  min-height:40px;padding:10px 12px!important;border-radius:3px!important;
  color:#505866!important;font-weight:400!important;white-space:normal!important;
}
.tabs-group-menu a:hover,.tabs-group-menu a.active{background:var(--brand-50)!important;color:var(--brand-dark)!important;}
.tabs-group-menu .tabs-group.nested>.tabs-group-menu{left:432px!important;margin-top:-40px!important;}
.tabs-group-trigger .caret{color:currentColor!important;}
/* Раскрытая через top:auto+margin-top-хак вертикальная позиция флаута
   (см. .tabs-group-menu выше) не знает о высоте вьюпорта: длинный список
   (например, все боты ОЛ) при триггере ближе к низу экрана уезжает нижним
   краем за пределы окна без скролла — навести мышку на последние пункты
   невозможно. positionFlyout() в скрипте ниже на mouseenter/open меряет
   реальную высоту меню и сдвигает верх через --flyout-top, если понадобилось.
   Селектор с четырёхкратным классом — нарочный трюк с специфичностью, чтобы
   гарантированно перебить .tabs-group-menu .tabs-group.nested>.tabs-group-menu
   выше независимо от порядка правил. */
.tabs-group-menu.flyout-adjusted.flyout-adjusted.flyout-adjusted.flyout-adjusted{
  top:var(--flyout-top)!important;margin-top:0!important;
}
/* Вложенный флаут ставится вплотную к фактическому правому краю родительского
   меню (его ширина зависит от подписей), а не по фиксированному left —
   иначе между ними остаётся зазор, на котором курсор теряет :hover. */
.tabs-group-menu.flyout-left.flyout-left.flyout-left.flyout-left{left:var(--flyout-left)!important;}

.card,table{border-radius:3px!important;box-shadow:none!important;}
button,input[type=submit]{border-radius:3px!important;}
input,select,textarea{border-radius:3px!important;}
footer.app-footer{margin:40px -20px -64px!important;min-height:64px;background:#fff!important;}

@media(max-width:900px){
  body{padding:0 20px 56px 72px!important;}
  body:has(nav.tabs.main-nav:not(.nav-hover-closed):hover),body:has(nav.tabs.main-nav.nav-open){padding-left:72px!important;}
  body>.topbar{margin:0 -20px!important;padding:18px 20px 18px 72px!important;min-height:96px;}
  body>.topbar+.tabs{margin-top:0!important;}
  nav.tabs.main-nav{width:52px!important;padding-top:64px!important;overflow:visible!important;}
  nav.tabs.main-nav:hover{width:52px!important;}
  nav.tabs.main-nav.nav-open{width:210px!important;overflow:visible!important;box-shadow:8px 0 24px rgba(20,27,38,.22)!important;}
  nav.tabs.main-nav::before{content:'';height:64px;padding:0;background-position:center;background-size:22px 28px;}
  nav.tabs.main-nav.nav-open::before{content:'GPT360';padding-left:90px;
    background:url('/admin/static/brand/gpt360-mark.svg') no-repeat 54px center/28px 28px;}
  .nav-brand-toggle{height:64px;cursor:pointer;}
  .nav-pin-control{right:12px;height:64px;}
  nav.tabs.main-nav>a,nav.tabs.main-nav>.tabs-group>.tabs-group-trigger{
    min-height:54px!important;padding:14px 7px!important;justify-content:center!important;
    font-size:14px!important;text-align:center!important;
  }
  nav.tabs.main-nav>a>.nav-label,nav.tabs.main-nav>.tabs-group>.tabs-group-trigger>.nav-label{
    display:none!important;
  }
  nav.tabs.main-nav.nav-open>a>.nav-label,nav.tabs.main-nav.nav-open>.tabs-group>.tabs-group-trigger>.nav-label{
    display:block!important;width:125px;flex:0 0 125px;opacity:1;text-align:right;
  }
  nav.tabs.main-nav.nav-open .nav-icon{margin-right:8px;}
  nav.tabs.main-nav.nav-open .caret{display:inline;}
  nav.tabs.main-nav.nav-open .tabs-group-menu{left:204px!important;}
  nav.tabs.main-nav .caret{display:none;}
  .tabs-group-menu{left:48px!important;margin-top:-54px!important;}
  .tabs-group-menu .tabs-group.nested>.tabs-group-menu{left:274px!important;}
  footer.app-footer{margin:40px -20px -56px!important;}
}
@media(max-width:600px){
  body{padding-left:62px!important;padding-right:14px!important;}
  body:has(nav.tabs.main-nav:not(.nav-hover-closed):hover),body:has(nav.tabs.main-nav.nav-open){padding-left:62px!important;}
  body>.topbar{margin:0 -14px!important;padding:16px 14px 16px 66px!important;align-items:flex-start;}
  body>.topbar>div:first-child p{display:none!important;}
  body>.topbar>div:last-child{justify-content:flex-start!important;gap:5px!important;}
  .topbar-actions .topbar-chip{display:none!important;}
  .topbar-user{font-size:11px!important;white-space:normal!important;}
  .server-time strong{font-size:11px!important;}
  .lang-switcher{margin-top:2px;}
  nav.tabs.main-nav{width:48px!important;}
  nav.tabs.main-nav.nav-open{width:210px!important;}
  .tabs-group-menu{left:44px!important;max-width:calc(100vw - 56px)!important;}
  .tabs-group-menu .tabs-group.nested>.tabs-group-menu{
    position:static!important;left:auto!important;margin:2px 0 0 10px!important;max-width:none!important;
  }
  footer.app-footer{margin-left:-14px!important;margin-right:-14px!important;}
}
/* Режим разработки: флаг только в localStorage браузера (Настройки → «Режим разработки»).
   .dev-only видно лишь с флагом, .dev-off — лишь без него. Класс на <html> ставит скрипт меню. */
html:not(.dev-mode) .dev-only,html:not(.dev-mode) nav.tabs.main-nav a.dev-only{display:none!important;}
html.dev-mode .dev-off{display:none!important;}