/* индикатор загрузки */
#hidden_messages {
    position: fixed;
    right: 50px;
    top: 100px;
    z-index: 1000;
}

/* индикатор состояния сохранения */
#save-status-indicator {
    position: fixed;
    right: 50px;
    top: 140px;
    z-index: 1000;
    min-width: 150px;
    padding: 8px 12px;
    margin: 0;
}

.success-msg {
    font-size: 10px;
    color: rgb(128, 128, 128);
    display: none;
}

.error-msg {
    font-size: 10px;
    color: rgb(128, 128, 128);
    display: none;
}
  
.loading-snake {
    width: 35px;
    height: 20px;
    overflow: hidden;
    background: url('../img/loading.gif') center center no-repeat;
    background-size: contain;
    display: none;
}

.loading-snake-visible {
    width: 35px;
    height: 20px;
    overflow: hidden;
    background: url('../img/loading.gif') center center no-repeat;
    background-size: contain;
}

/* фиксированная ширина*/
.fw-50 {
    max-width: 50px;
    min-width: 50px;
    width: 50px;
}

.fw-70 {
    max-width: 70px;
    min-width: 70px;
    width: 70px;
}

.fw-100 {
    max-width: 100px;
    min-width: 100px;
    width: 100px;
}

.fw-150 {
    max-width: 150px;
    min-width: 150px;
    width: 150px;
}

.fw-200 {
    max-width: 200px;
    min-width: 200px;
    width: 200px;
}

.fw-300 {
    max-width: 300px;
    min-width: 300px;
    width: 300px;
}

/* Input с символом (% / ₽) — общие стили (KPI, бюджет и др.) */
.input-with-symbol {
    position: relative;
    width: 100%;
}

.input-with-symbol input.input-with-padding {
    padding: 2px 4px !important;
    padding-right: 17px !important;
}

.input-with-symbol .value-symbol {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    font-size: 13px;
    line-height: 1.3;
    color: #6c757d;
    user-select: none;
    vertical-align: middle;
}

/* Узкая колонка плана (как в KPI) */
.budget-plan-cell {
    min-width: 100px;
    max-width: 100px;
    width: 100px;
}

/* Дочерние фонды на странице бюджета — отступ по имени */
tr.fund-child-row td:first-child {
    padding-left: 1.5rem;
}

/* Подсветка строки бюджета при наведении (по аналогии с _kpi_table) */
tr.budget-fund-row:hover {
    background-color: #e5edf5 !important;
}
tr.budget-fund-row:hover td {
    background-color: #e5edf5 !important;
}

.budget-plan-cell .input-with-symbol input {
    width: 100%;
    min-width: 0;
    text-align: center;
    font-size: 13px;
    line-height: 1.3;
    height: auto;
    min-height: 24px;
}

.budget-plan-cell .budget-plan-readonly {
    display: inline-block;
    text-align: center;
    font-size: 13px;
    min-height: 24px;
    line-height: 24px;
    color: #6c757d;
}

/* максимальная ширина*/
.max-w-50 {max-width: 50px;}

.max-w-70 {max-width: 70px;}

.max-w-100 {max-width: 100px;}

.max-w-150 {max-width: 150px;}

.max-w-200 {max-width: 200px;}

.max-w-300 {max-width: 300px;}


/* разворачиваемая при наведении ячейка таблицы */
td.td-expandable {
    height: 20px;
    max-height: 20px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: 0.3s;
}

td.td-expandable:hover{
    white-space: normal;
}

/* бейджи */

.badge-outline-danger {
    border:2px solid #f5365c !important;
    color: #f5365c;
}

.badge-outline-warning {
    border:2px solid #fb6340 !important;
    color: #fb6340;
}

.badge-outline-secondary {
    border:2px solid #6c757d !important;
    color: #6c757d;
}

/* цвет филиала */
.branch-color-square {
    display: inline-block;
    width: 28px;
    height: 28px;
}


/* кастомный скроллбар */

/* Firefox */
.scrollbar-type-1 {
    scrollbar-width: thin;
    scrollbar-color: #D5D5D5 #F7F7F7;
}

/* Chrome, Edge and Safari */
.scrollbar-type-1::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
.scrollbar-type-1::-webkit-scrollbar-track {
  border-radius: 5px;
  background-color: #F7F7F7;
}

.scrollbar-type-1::-webkit-scrollbar-track:hover {
  background-color: #F4F4F4;
}

.scrollbar-type-1::-webkit-scrollbar-track:active {
  background-color: #F4F4F4;
}

.scrollbar-type-1::-webkit-scrollbar-thumb {
  border-radius: 5px;
  background-color: #D5D5D5;
}

.scrollbar-type-1::-webkit-scrollbar-thumb:hover {
  background-color: #C5C5C5;
}

.scrollbar-type-1::-webkit-scrollbar-thumb:active {
  background-color: #ADADAD;
}


/* всплывающие подсказки */
.tip-wrapper {
    position: relative;
}
.show-tip {
    cursor: pointer;
    font-weight: 500;
    color: #65656579;
}

.show-tip.inherit {
    font-weight: inherit;
    color: inherit;
    text-decoration: underline;
    text-decoration-style: dotted;
}

.tip {
    padding: 10px;
    background: #ffffff;
    border-radius: 10px;
    position: absolute;
    left: 20px;
    top: 28px;
    width: auto;
    min-width: 200px;
    max-width: 400px;
    text-align: left;
    font-size: 12px;
    font-weight: 500;
    color: #656565;
    -webkit-box-shadow: 0px 0px 8px 0px rgba(149, 149, 149, 0.38);
    -moz-box-shadow: 0px 0px 8px 0px rgba(149, 149, 149, 0.38);
    box-shadow: 0px 0px 8px 0px rgba(149, 149, 149, 0.38);
    z-index: 9999999;
}

.thead-sticky .tip {
  top: 60px;
}

/* контекстное меню для истории изменений */
.kpi-context-menu {
    position: fixed;
    z-index: 10000;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    min-width: 180px;
    padding: 4px 0;
}

.kpi-context-menu-item {
    padding: 8px 15px;
    cursor: pointer;
    font-size: 14px;
    color: #333;
    user-select: none;
}

.kpi-context-menu-item:hover {
    background-color: #f5f5f5;
}

.kpi-context-menu-item:active {
    background-color: #e9ecef;
}

/* всплывающее окно истории изменений */
.kpi-history-popup {
    position: fixed;
    z-index: 10001;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}

.kpi-history-popup table {
    font-size: 12px;
}

.kpi-history-popup table th {
    font-size: 11px;
    font-weight: 600;
    padding: 8px 10px;
    background-color: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
}

.kpi-history-popup table td {
    padding: 6px 10px;
    border-bottom: 1px solid #e9ecef;
}

.kpi-history-popup table tr:hover {
    background-color: #f8f9fa;
}

/* for all */
.hidden {
    display: none;
}



/* переопределение стилей */

/* ссылки в левом меню: название сжимается и обрезается многоточием, кнопка настроек держится справа */
.wrapper .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item {
    display: flex;
    align-items: center;
}

/* Ширина ссылки задана числом, а не «остатком места»: панель фиксированная (240px),
   поэтому место под подпись известно заранее. Иначе обрезку пришлось бы пересчитывать
   на каждом кадре анимации разворачивания панели — это и тормозило. */
.wrapper .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item > a:first-child {
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    width: 210px;
}

/* у пунктов с кнопкой настроек места под подпись меньше */
.wrapper .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item:has(> a + a) > a:first-child {
    width: 160px;
}

/* в свёрнутой панели ссылка шире её самой — обрезаем до ширины иконки, пока не раскрыли */
.wrapper.nav-collapsed .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item > a:first-child,
.wrapper.nav-collapsed .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item:has(> a + a) > a:first-child {
    width: auto;
}

.wrapper.nav-collapsed .page-wrap .app-sidebar:hover .sidebar-content .nav-container .navigation-main .nav-item > a:first-child {
    width: 210px;
}

.wrapper.nav-collapsed .page-wrap .app-sidebar:hover .sidebar-content .nav-container .navigation-main .nav-item:has(> a + a) > a:first-child {
    width: 160px;
}

/* тема делает подпись inline-block — такой блок неделим и при нехватке места пропадает
   целиком, оставляя одно многоточие. Внутри флекса он сжимается и режется по буквам. */
.wrapper .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item > a:first-child span {
    flex: 1 1 0%;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.wrapper .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item > a + a {
    flex: 0 0 auto;
    margin-left: 0;
}

/* в свёрнутом меню кнопка настроек не влезает — показываем её только при наведении */
.wrapper.nav-collapsed .page-wrap .app-sidebar .sidebar-content .nav-container .navigation-main .nav-item > a + a {
    display: none;
}

.wrapper.nav-collapsed .page-wrap .app-sidebar:hover .sidebar-content .nav-container .navigation-main .nav-item > a + a {
    display: block;
}

/* подсказка с полным названием пункта: выглядит продолжением самой строки меню.
   pointer-events отключены — иначе курсор попадает на подсказку вместо меню,
   меню считает что мышь ушла, сворачивается, и всё начинает дрожать. */
.tooltip.sidebar-tooltip {
    z-index: 1041;
    pointer-events: none;
}

.tooltip.sidebar-tooltip .tooltip-inner {
    max-width: none;
    white-space: nowrap;
    text-align: left;
    font-size: 13px;
    padding: 15px 20px;
    border-radius: 0;
    background-color: #4a5872;
}

.tooltip.sidebar-tooltip .arrow {
    display: none;
}

/* поля даты и времени */
/* Safari не центрирует содержимое поля даты: тема задаёт .form-control
   {min-height:35px; padding:0 10px}, строка занимает 19,5px, и оставшуюся
   пустоту Safari отдаёт вниз, прижимая дату к верхнему краю. Делаем поле
   флекс-контейнером — высота остаётся 35px, содержимое встаёт по центру.
   Проверено замером в Safari 18.4 и в Chrome: высота 35.0, как у селекта. */
input[type="date"].form-control,
input[type="datetime-local"].form-control,
input[type="time"].form-control,
input[type="month"].form-control {
    display: flex;
    align-items: center;
}


/* автообзвон: строки графиков, по которым фильтруется таблица */
.ad-clickable {
    border-radius: 4px;
    transition: background-color .12s ease-in-out;
}
.ad-clickable:hover {
    background-color: #f1f4f8;
}

/* автообзвон: поля-бланки в столбце «Когда» редактора сценария.
   Строка должна читаться одним предложением — «через 2 суток с 10:00 по
   12:00», — поэтому у полей нет рамки и фона, только нижняя линия. Иконку
   вызова часов в Chrome убираем: она ломает строку, а время вводится
   с клавиатуры. */
.ad-blank {
    border: 0;
    background: none;
    border-bottom: 1px dashed #9aa4b0;
    height: 24px;
    padding: 0 2px;
    text-align: center;
    outline: none;
    color: inherit;
    font: inherit;
}
.ad-blank::-webkit-calendar-picker-indicator,
.ad-blank::-webkit-inner-spin-button,
.ad-blank::-webkit-clear-button {
    display: none;
    -webkit-appearance: none;
}

/* Филиал виден на портале, но не участвует в сводных итогах.
   Значок ставится сразу после названия, название приглушается. */
.branch-no-summary-mark {
    margin-left: 4px;
    cursor: help;
    vertical-align: middle;
}

.branch-no-summary {
    opacity: 0.55;
}

/* Компактная шапка страниц: срезаем вертикальные зазоры над содержимым карточки (тикет #148).
   Действует на весь портал. */
.wrapper .page-wrap .main-content { padding-top: 12px; }
.card .card-header { padding-top: 6px; padding-bottom: 6px; }
.card .card-body { padding-top: 10px; }
