/*!
 * bootstrap3-compat.css — слой совместимости Bootstrap 3 поверх Bootstrap 5.
 *
 * Назначение: позволяет bs3-разметке продолжать работать после подключения
 * Bootstrap 5 БЕЗ ручного рефакторинга каждого класса. Реализует:
 *   1. CSS-эквиваленты bs3-классов, не имеющих прямого аналога в bs5;
 *   2. Маппинг glyphicons на Bootstrap Icons (через ::before + content).
 *
 * УСЛОВИЕ для работы иконок: подключите bootstrap-icons.css и шрифты
 * (https://icons.getbootstrap.com/). Без него glyphicons будут пустыми.
 *
 * Этот файл дополняет, но НЕ заменяет автоматическую миграцию классов
 * (bs3_to_bs5). Он полезен для渐进ного перехода и для мест, которые
 * невозможно преобразовать автоматически (серверные шаблоны и т.п.).
 *
 * Версия: 2.0.0 | Лицензия: MIT
 */

/* =========================================================================
 * 0. Типографика bs3 (переопределение CSS-переменных bs5)
 *
 * bs5 задаёт текстовые шрифты через CSS-переменные в :root:
 *   --bs-body-font-family: system-ui,-apple-system,"Segoe UI",Roboto,...
 *   --bs-body-font-size:   1rem (16px)
 *   --bs-body-line-height: 1.5
 *   --bs-body-color:       #212529
 * bs3 использовал жёсткие значения:
 *   font-family: "Helvetica Neue",Helvetica,Arial,sans-serif
 *   font-size:   14px
 *   line-height: 1.42857143
 *   color:       #333
 * Чтобы мигрированный сайт сохранял bs3-вид текста, возвращаем bs3-значения
 * через переменные bs5 (так их подхватят все компоненты bs5, использующие
 * var(--bs-body-*)).
 * ========================================================================= */
:root {
  --bs-body-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  --bs-body-font-size: 14px;
  --bs-body-font-weight: 400;
  --bs-body-line-height: 1.42857143;
  --bs-body-color: #333;
  --bs-body-color-rgb: 51, 51, 51;
  --bs-body-bg: #fff;
  --bs-body-bg-rgb: 255, 255, 255;
  --bs-body-text-align: left;
  --bs-font-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

/* =========================================================================
 * 1. Классы bs3 без прямого аналога в bs5 (минимальный набор)
 * ========================================================================= */

/* Обтекание / центрирование */
.pull-left  { float: left !important; }
.pull-right { float: right !important; }
.center-block { display: block; margin-left: auto; margin-right: auto; }

/* Изображения */
.img-responsive { max-width: 100%; height: auto; }
.img-rounded { border-radius: .25rem; }
.img-circle { border-radius: 50%; }

/* input-group */
.input-group-addon {
  display: flex;
  align-items: center;
  padding: .375rem .75rem;
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--bs-body-color, #212529);
  text-align: center;
  background-color: var(--bs-tertiary-bg, #e9ecef);
  border: 1px solid var(--bs-border-color, #ced4da);
  border-radius: .375rem;
}

/* Панели (panel -> card приближение; для полноценной темы используйте миграцию) */
.panel { position: relative; display: flex; flex-direction: column;
  min-width: 0; background-color: var(--bs-body-bg, #fff);
  background-clip: border-box; border: 1px solid rgba(0,0,0,.125);
  border-radius: .375rem; }
.panel-body { flex: 1 1 auto; padding: 1rem; }
.panel-heading { padding: .5rem 1rem; margin-bottom: 0;
  background-color: rgba(0,0,0,.03); border-bottom: 1px solid rgba(0,0,0,.125);
  border-top-left-radius: calc(.375rem - 1px); border-top-right-radius: calc(.375rem - 1px); }
.panel-title { margin-top: 0; margin-bottom: 0; font-size: 1rem; color: inherit; }
.panel-footer { padding: .5rem 1rem; background-color: var(--bs-tertiary-bg, #f8f9fa);
  border-top: 1px solid rgba(0,0,0,.125);
  border-bottom-right-radius: calc(.375rem - 1px); border-bottom-left-radius: calc(.375rem - 1px); }

/* well */
.well { min-height: 20px; padding: 19px; margin-bottom: 20px;
  background-color: var(--bs-tertiary-bg, #f5f5f5);
  border: 1px solid #e3e3e3; border-radius: 4px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05); box-shadow: inset 0 1px 1px rgba(0,0,0,.05); }
.well-sm { padding: 9px; border-radius: 3px; }
.well-lg { padding: 24px; border-radius: 6px; }

/* thumbnail */
.thumbnail { display: block; padding: 4px; margin-bottom: 1rem;
  line-height: 1.5; background-color: var(--bs-body-bg, #fff);
  border: 1px solid var(--bs-border-color, #ddd); border-radius: 4px;
  -webkit-transition: border .2s ease-in-out; transition: border .2s ease-in-out; }

/* Формы */
.control-label { padding-top: calc(.375rem + 1px); padding-bottom: calc(.375rem + 1px);
  margin-bottom: 0; font-size: inherit; line-height: 1.5; }
.form-group { margin-bottom: 1rem; }
.help-block { display: block; margin-top: .25rem; margin-bottom: 1rem;
  color: var(--bs-secondary-color, #737373); }

/* Таблицы */
.table-condensed > th, .table-condensed > td { padding: .3rem; }

/* Navbar variants (bs3 navbar-default / navbar-inverse под bs5).
   bs5.3 НЕ определяет эти классы, а базовый .navbar прозрачен по фону.
   Даём фон + текстовый цвет явной высокой специфичностью (0,2,0),
   чтобы bs3-разметка <nav class="navbar navbar-default fixed-top">
   сохраняла классический bs3-вид (светлый/тёмный navbar). */
.navbar.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
  color: #777;  /* bs3 navbar-default link color */
}
.navbar.navbar-inverse {
  background-color: #222;
  border-color: #080808;
  color: #9d9d9d;  /* bs3 navbar-inverse link color */
}
/* Текст ссылок внутри navbar должен наследовать цвет (для ссылок в
   navbar-nav см. отдельное правило ниже). */
.navbar.navbar-default a,
.navbar.navbar-inverse a { color: inherit; }

/* Navbar positioning: bs3 navbar-fixed-top → bs5 fixed-top.
   Мигратор переименовывает класс navbar-fixed-top → fixed-top (правильно для bs5).
   Но PHP-страницы используют bs3-styles.css (конгломерат), где .fixed-top НЕ
   определён (там только .navbar-fixed-top). Результат: navbar не получает
   position:fixed, остаётся в потоке, а margin-top:60px на container создаёт
   видимый пустой отступ сверху. Определяем ОБА класса — покрывает bs3-CSS
   и bs5-CSS (bs5 уже задаёт .fixed-top, тут дублируем для bs3-only страниц). */
.navbar.fixed-top,
.navbar.navbar-fixed-top {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1030;
}
/* Высота navbar: bs3 по умолчанию ~50px. В разметке проекта стиль закомментирован
   (style="/*max-height: 50px;* /"), поэтому bs5 свободно растягивает navbar.
   Фиксируем max-height: 50px !important — navbar остаётся компактным как в bs3. */
.navbar.navbar-default.fixed-top,
.navbar.navbar-default.navbar-fixed-top {
  max-height: 50px !important;
}
.navbar.sticky-top,
.navbar.navbar-static-top {
  position: sticky;
  top: 0;
  z-index: 1020;
}
.navbar.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1030;
}

/* nav */
.nav-divider { height: 1px; margin: .5rem 0; overflow: hidden;
  background-color: var(--bs-border-color, #e9ecef); }

/* bs3 nav/nav-pills/nav-stacked с голыми <li> (без .nav-item/.nav-link).
   bs5 стилизует только .nav-link, поэтому голые <li><a>/<li><span> теряют
   блочность. Проект (server_info/postsTable) вкладывает .badge с width:100%
   и <h6> внутрь <li class="active">. Возвращаем bs3-поведение. */
.nav { padding-left: 0; list-style: none; }
.nav > li { display: block; }
.nav-stacked > li,
.nav.flex-column > li { float: none; }
/* nav-pills: активный пункт получает цветной фон (как bs3 .nav-pills > .active > a). */
.nav-pills > .active,
.nav-pills > li.active {
  background-color: var(--bs-primary, #0d6efd);
  border-radius: .25rem;
}
.nav-pills > .active > a,
.nav-pills > li.active > a,
.nav-pills > .active > span,
.nav-pills > li.active > span {
  color: #fff;
}
/* bs3 nav-pills > .active > a > .badge: инверсия (белый фон, синий текст) для
   badge внутри активного pill. Возвращаем, чтобы badge в активной ячейке
   таблицы (server_info/postsTable) выглядел как в bs3. */
.nav-pills > .active > a > .badge,
.nav-pills > li.active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
/* badge с width:100% как контейнер ячейки (с <h6> внутри): bs3 .badge был
   inline-block и уважал width внутри блочного .nav>li. Под bs5 убираем nowrap,
   чтобы <br>/<h6> переносились; font-size наследуем от h6 (иначе .badge 12px
   уменьшает h6-текст). display оставляем inline-block как в bs3. */
.nav > li .badge[style*="width: 100%"],
.nav > li span.badge[style*="width:100%"] {
  white-space: normal;
  font-size: inherit;
  line-height: inherit;
}

/* pager (упрощённый — bs5 требует .pagination/.page-item) */
.pager { padding-left: 0; margin: 1rem 0; list-style: none; text-align: center; }
.pager li { display: inline; }
.pager li > a, .pager li > span { display: inline-block; padding: 5px 14px;
  background-color: var(--bs-body-bg, #fff); border: 1px solid #ddd; border-radius: 15px; }

/* page-header */
.page-header { padding-bottom: 9px; margin: 2rem 0 1rem; border-bottom: 1px solid #eee; }

/* jumbotron */
.jumbotron { padding: 2rem 1rem; margin-bottom: 2rem;
  background-color: var(--bs-tertiary-bg, #e9ecef); border-radius: .5rem; }
.jumbotron-fluid { padding-right: 0; padding-left: 0; border-radius: 0; }

/* badge-pill */
.badge-pill { padding-right: .6em; padding-left: .6em; border-radius: 10rem; }

/* badge (голый .badge) — bs3 имел дефолтный серый фон; bs5 рендерит без фона.
   Возвращаем bs3-вид: серый фон #777, белый текст, базовый padding/font-size.
   ВАЖНО: НЕ задаём border-radius и min-width — проектный CSS (.badge{border-radius:6px})
   должен иметь возможность их переопределить. compat грузится ПОСЛЕ bs5 и проекта,
   поэтому любое свойство здесь перебивает проектное. Оставляем только то, что
   bs3 давал, а bs5/проект не дают: background-color, font-weight, vertical-align. */
.badge {
  display: inline-block;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  background-color: #777;
}
.badge:empty { display: inline-block; }

div.navbar-brand > span.badge {
  border-radius: 7px !important;
}

span.badge span#jcjs_ver {
  display: inline-block;
  min-width: 60px !important;
}

/* =========================================================================
   Dropdown (bs3-разметка → bs5-рендер)
   bs3 использовал <li><a> внутри .dropdown-menu и <li class="divider">.
   bs5 требует .dropdown-item на <a> и <hr class="dropdown-divider">.
   Не трогая разметку, возвращаем bs3-внешний вид пунктам меню под bs5:
   фон, разделители, отступы, hover/focus.
   ========================================================================= */
.dropdown-menu {
  /* Гарантируем классический bs3-вид меню под bs5: фиксируем позиционирование
     и стиль, даже если тема bs5 переопределяет их. */
  background-color: #fff;
  border: 1px solid rgba(0,0,0,.15);
  border-radius: .375rem;
  /* bs3-позиционирование относительно .dropdown-контейнера (который
     position:relative см. ниже). bs5 не задаёт top/left для .dropdown-menu,
     так что без них абсолютное меню «прилипнет» к верху ближайшего
     позиционированного предка. Явно укажем как в bs3. */
  top: 100%;
  left: 0;
  /* bs5 по умолчанию скрывает .dropdown-menu пока не добавлен .show —
     это нормально и трогать не нужно. Здесь только косметика. */
}
/* КРИТИЧНО: bs5 определяет .navbar-nav .dropdown-menu { position: static }
   (для мобильного режима navbar-expand-*). bs3-разметка не имеет navbar-expand,
   поэтому меню остается static и при раскрытии растягивает navbar по высоте.
   Переопределяем на absolute с ТЕМ ЖЕ селектором (специфичность (0,2,0)),
   compat.css грузится ПОСЛЕ bs5 → выигрывает. */
.navbar-nav .dropdown-menu,
.navbar .navbar-nav .dropdown-menu {
  position: absolute;
}
/* bs3 .dropdown контейнер: в bs3 имел position:relative, чтобы абсолютно
   позиционированное .dropdown-menu отсчитывалось от него. В bs5 (до 5.2)
   класс .dropdown НЕ определён → .dropdown-menu (position:absolute) висит
   на ближайшем позиционированном предке (.navbar fixed), что при раскрытии
   ломает flex-layout navbar (brand «съезжает»). Возвращаем position:relative. */
.dropdown {
  position: relative;
}
/* В bs5.0 раскрытое меню добавляет класс .show. Если bs5-Dropdown JS не
   подгрузился, показываем меню по :hover как в bs3 (опционально, мягко). */
.dropdown:hover > .dropdown-menu {
  /* намеренно пусто: bs5-Dropdown JS из bootstrap.bundle.min.js раскрывает
     меню корректно. Это место — точка расширения при необходимости. */
}
/* bs3-пункты: <li><a> → стилизуем <a> как dropdown-item. */
.dropdown-menu > li > a,
.dropdown-menu > li > a:link,
.dropdown-menu > li > a:visited {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: 400;
  line-height: 1.42857143;
  color: #333;
  text-decoration: none;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  color: #262626;
  text-decoration: none;
  background-color: #f5f5f5;
}
/* Сами <li> не должны ломать поток bs5 (который ожидает .dropdown-item
   как прямой дочерний). Нейтрализуем возможные bs5-стили на li. */
.dropdown-menu > li { list-style: none; }
/* bs3-разделитель: <li class="divider">. bs5 ищет .dropdown-divider,
   иначе li рендерится пустым без линии. Возвращаем линию. */
.dropdown-menu > .divider,
.dropdown-menu > li.divider {
  height: 0;
  margin: 9px 0;
  overflow: hidden;
  background-color: #e5e5e5;
  border: 0;
  display: block;
}
/* =========================================================================
   Navbar (bs3-разметка → bs5-рендер)
   bs3: .navbar > .container > .navbar-header > .navbar-brand + .nav.navbar-nav
   bs5 ждёт .navbar-nav > .nav-item > .nav-link и сам решает цвет через
   --bs-navbar-color. Возвращаем bs3-навигации читаемый вид без правки разметки.
   ========================================================================= */
/* bs3 navbar-header: в bs3 содержал .navbar-brand + .navbar-nav бок о бок
   (всё float:left). В bs5 .navbar-header не определён → это обычный block-div,
   и бренд (тоже div.navbar-brand) занимает всю ширину, ссыпая нав на новую
   строку. Делаем header flex-строкой, чтобы бренд и нав встали в один ряд.
   align-items:flex-start (а не center) — соответствует bs3, где бренд и нав
   прижимались к верхнему краю navbar. */
.navbar .navbar-header {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: .25rem;
}
/* bs3 navbar-nav: <ul class="nav navbar-nav"> → расположить горизонтально. */
.navbar .navbar-nav,
.navbar ul.nav {
  display: flex;
  flex-direction: row;
  align-items: center;
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;
}
/* bs3-пункт: <li><a> внутри navbar. bs5 стилизует только .nav-link, поэтому
   голые <a> теряют цвет/паддинг. Даём им bs3-navbar-стиль (цвет наследуется
   от navbar, opacity как у nav-link bs5). */
.navbar .navbar-nav > li > a,
.navbar ul.nav > li > a {
  display: flex;
  align-items: center;
  padding-right: .5rem;
  padding-left: .5rem;
  text-decoration: none;
  white-space: nowrap;
  color: inherit;
  opacity: .8;
}
.navbar .navbar-nav > li > a:hover,
.navbar ul.nav > li > a:hover,
.navbar .navbar-nav > li > a:focus,
.navbar ul.nav > li > a:focus {
  opacity: 1;
  color: inherit;
}
/* dropdown-toggle внутри navbar — частный случай navbar-ссылки: сохраняем
   иконку читаемой (caret в bs3 закомментирован в разметке проекта). */
.navbar .dropdown-toggle {
  cursor: pointer;
}

/* sr-only */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.sr-only-focusable:active, .sr-only-focusable:focus {
  position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal; }

/* text-align bs3 */
.text-left   { text-align: left !important; }
.text-right  { text-align: right !important; }

/* responsive utilities (минимальный набор) */
.hidden-xs { display: none !important; }
.visible-xs-block, .visible-xs-inline, .visible-xs-inline-block { display: none !important; }

/* input sizes */
.input-sm { height: calc(1.5em + .5rem + 2px); padding: .25rem .5rem;
  font-size: .875rem; line-height: 1.5; border-radius: .2rem; }
.input-lg { height: calc(1.5em + 1rem + 2px); padding: .5rem 1rem;
  font-size: 1.25rem; line-height: 1.5; border-radius: .3rem; }

/* Состояния */
.collapse { display: none; }
.collapse.in, .collapse.show { display: block; }

/* =========================================================================
 * 2. Маппинг glyphicons на Bootstrap Icons (bi-*)
 *
 * Требует подключения bootstrap-icons.css + шрифтов (fonts/bootstrap-icons.*).
 * Каждый класс glyphicon-* рисует иконку через ::before с codepoint из
 * Bootstrap Icons. Разметка НЕ меняется: class="glyphicon glyphicon-home"
 * остаётся, а иконка видна под bs5.
 *
 * Источник codepoint'ов: bootstrap-icons.css 1.13.1 (реальные значения из
 * установленного пакета, не приблизительные). Покрыто 48/48 имён проекта.
 * ========================================================================= */

.glyphicon { display: inline-block; font-family: "bootstrap-icons", "Bootstrap Icons" !important;
  font-style: normal; font-weight: normal; line-height: 1; vertical-align: -.125em;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

  .glyphicon-align-center::before { content: "\f5c4"; }  /* bi-text-center */
  .glyphicon-align-left::before { content: "\f5c7"; }  /* bi-text-left */
  .glyphicon-align-right::before { content: "\f5c9"; }  /* bi-text-right */
  .glyphicon-arrow-down::before { content: "\f128"; }  /* bi-arrow-down */
  .glyphicon-arrow-up::before { content: "\f148"; }  /* bi-arrow-up */
  .glyphicon-book::before { content: "\f194"; }  /* bi-book */
  .glyphicon-calendar::before { content: "\f1f6"; }  /* bi-calendar */
  .glyphicon-chevron-down::before { content: "\f282"; }  /* bi-chevron-down */
  .glyphicon-chevron-left::before { content: "\f284"; }  /* bi-chevron-left */
  .glyphicon-chevron-right::before { content: "\f285"; }  /* bi-chevron-right */
  .glyphicon-chevron-up::before { content: "\f286"; }  /* bi-chevron-up */
  .glyphicon-cloud-download::before { content: "\f29b"; }  /* bi-cloud-download */
  .glyphicon-cog::before { content: "\f3e5"; }  /* bi-gear */
  .glyphicon-collapse-down::before { content: "\f14b"; }  /* bi-arrows-collapse */
  .glyphicon-collapse-up::before { content: "\f14d"; }  /* bi-arrows-fullscreen */
  .glyphicon-copy::before { content: "\f28b"; }  /* bi-clipboard-check */
  .glyphicon-copyright-mark::before { content: "\f7db"; }  /* bi-c-circle */
  .glyphicon-dashboard::before { content: "\f580"; }  /* bi-speedometer2 */
  .glyphicon-download-alt::before { content: "\f30a"; }  /* bi-download */
  .glyphicon-exclamation-sign::before { content: "\f333"; }  /* bi-exclamation-circle */
  .glyphicon-eye-close::before { content: "\f340"; }  /* bi-eye-slash */
  .glyphicon-eye-open::before { content: "\f341"; }  /* bi-eye */
  .glyphicon-fire::before { content: "\f7f6"; }  /* bi-fire */
  .glyphicon-fullscreen::before { content: "\f3df"; }  /* bi-fullscreen */
  .glyphicon-hand-down::before { content: "\f402"; }  /* bi-hand-index-thumb */
  .glyphicon-hand-right::before { content: "\f403"; }  /* bi-hand-index */
  .glyphicon-home::before { content: "\f425"; }  /* bi-house */
  .glyphicon-link::before { content: "\f470"; }  /* bi-link-45deg */
  .glyphicon-list::before { content: "\f478"; }  /* bi-list-ul */
  .glyphicon-list-alt::before { content: "\f227"; }  /* bi-card-list */
  .glyphicon-lock::before { content: "\f47b"; }  /* bi-lock */
  .glyphicon-minus::before { content: "\f63b"; }  /* bi-dash-lg */
  .glyphicon-ok::before { content: "\f633"; }  /* bi-check-lg */
  .glyphicon-paste::before { content: "\f290"; }  /* bi-clipboard */
  .glyphicon-plus::before { content: "\f64d"; }  /* bi-plus-lg */
  .glyphicon-random::before { content: "\f544"; }  /* bi-shuffle */
  .glyphicon-refresh::before { content: "\f130"; }  /* bi-arrow-repeat */
  .glyphicon-remove::before { content: "\f659"; }  /* bi-x-lg */
  .glyphicon-repeat::before { content: "\f130"; }  /* bi-arrow-repeat */
  .glyphicon-retweet::before { content: "\f130"; }  /* bi-arrow-repeat */
  .glyphicon-screenshot::before { content: "\f220"; }  /* bi-camera */
  .glyphicon-search::before { content: "\f52a"; }  /* bi-search */
  .glyphicon-send::before { content: "\f6c0"; }  /* bi-send */
  .glyphicon-th::before { content: "\f3fc"; }  /* bi-grid */
  .glyphicon-time::before { content: "\f293"; }  /* bi-clock */
  .glyphicon-transfer::before { content: "\f12b"; }  /* bi-arrow-left-right */
  .glyphicon-trash::before { content: "\f5de"; }  /* bi-trash */
  .glyphicon-warning-sign::before { content: "\f33b"; }  /* bi-exclamation-triangle */

.fixed-table-header { margin-right: 0px !important; }
.no-scrol-y { overflow-y: hidden !important; }
.showed-scrollbar, .hidden-scrollbar, .narrow-scrollbar { display: block; overflow: auto; }
.hidden-scrollbar::-webkit-scrollbar { display: none; }
.narrow-scrollbar::-webkit-scrollbar { width: 5px; background-color: #999; }
.narrow-scrollbar::-webkit-scrollbar-thumb { background: #666; }

.f-primary   { color: #007bff !important; }
.f-secondary { color: #6c757d !important; }
.f-success   { color: #28a745 !important; }
.f-warning   { color: #ffc107 !important; }
.f-danger    { color: #dc3545 !important; }
.f-info      { color: #17a2b8 !important; }
.f-light     { color: #f8f9fa !important; }
.f-dark      { color: #343a40 !important; }

.badge-primary   { color: #ffffff; background-color: #007bff !important; }
.badge-secondary { color: #ffffff; background-color: #6c757d !important; }
.badge-success   { color: #ffffff; background-color: #28a745 !important; }
.badge-warning   { color: #212529; background-color: #ffc107 !important; }
.badge-danger    { color: #ffffff; background-color: #dc3545 !important; }
.badge-info      { color: #ffffff; background-color: #17a2b8 !important; }
.badge-light     { color: #212529; background-color: #f8f9fa !important; }
.badge-dark      { color: #ffffff; background-color: #343a40 !important; }
.3table-middle tbody tr td  { vertical-align: middle; }
.table tbody tr td  { vertical-align: middle; }
td  { vertical-align: middle; }
.table > tbody > tr > td {
    padding-left: 3px;
    padding-right: 3px;
    margin: 0px;
}
ul.post-name > li.active {
  background-color: #ffffff;
}
/* корекция иконок dropdown */
li.dropdown > a > span.glyphicon {
    line-height: 1.2;
    font-size: 1.4em;
    color: #555;
    font-weight: bold;
}
div.navbar-brand {color: #555;}
/* корекция меню выбора языка dropdown-submenu */
.dropdown-submenu {
    position: relative;
}
.dropdown-menu .dropdown-menu {
    top: auto;
    left: 100%;
    transform: translateY(-2.8rem);
}
.dropdown-submenu ul {
    display: block !important;
    opacity: 0;
    visibility: hidden;
    transition: .33s opacity, .22s visibility;
}
.dropdown-submenu ul:hover  {
    opacity: 1;
    visibility: visible;
}
.dropdown-submenu:hover > ul {
    opacity: 1;
    visibility: visible;
}
.bootstrap-datetimepicker-widget.dropdown-menu {
  width: 15em !important;
}
.noselect {
  -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
     -khtml-user-select: none; /* Konqueror HTML */
       -moz-user-select: none; /* Old versions of Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
            user-select: none; /* Non-prefixed version, currently
                                  supported by Chrome, Edge, Opera and Firefox */
}
