/* =========================================================================
   АТС Технологии — редизайн портала (Задачи) по присланному макету.
   Файл ТОЛЬКО перекрашивает существующую разметку (left_sidebar.tpl,
   task_list.tpl, add_task_form.tpl, task_full.tpl + их AJAX-partial'ы).
   Никакая PHP-логика, имена полей форм, id/name, на которые опирается
   существующий JS (add_task.js, core.js, tools.js, task_full.js), — НЕ
   меняются и не переименовываются. Файл только добавляет CSS поверх.

   Подключение: положить рядом с {THEME}/css/my.css и добавить в
   modules/main.tpl ОДНУ строку (см. README.md), последней после
   существующих <link rel="stylesheet">, чтобы правила были приоритетнее.
   ========================================================================= */

/* =========================================================================
   Шрифт (правка 46). Раньше в теле файла уже стояло font-family:'Inter',
   но сам файл шрифта нигде не был подключён — реально везде показывался
   резервный системный шрифт (Segoe UI/Arial). Ник попросил "более
   строгий/деловой" вид — самостоятельный вариант: файлы шрифта лежат
   рядом с этим CSS в подпапке fonts/ (SIL Open Font License — можно
   свободно раздавать со своего сервера, см. fonts/LICENSE-Inter.txt),
   подключение через @font-face, без внешних сетевых запросов на
   fonts.googleapis.com и т.п. — не зависит от доступа в интернет с
   компьютера сотрудника.
   4 начертания (400/500/600/700 — все, что реально используются в этом
   файле, см. font-weight ниже) × 2 подмножества символов (кириллица +
   латиница, по unicode-range — браузер сам подгружает только то
   подмножество, символы которого реально встречаются на странице,
   не оба сразу). Итого 8 файлов, ~130 КБ на все начертания разом.
   Путь к файлам — относительный (fonts/...), поэтому папку fonts/ нужно
   положить РЯДОМ с этим CSS-файлом на сервере (та же папка, где лежит
   сам ats-redesign.css) — иначе шрифт не найдётся и браузер тихо
   откатится на системный (font-display:swap ниже гарантирует, что текст
   в любом случае не "мигает" invisible — сразу показывается системным
   шрифтом, подменяется на Inter, как только догрузится). */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/inter-cyrillic-400.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/inter-latin-400.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/inter-cyrillic-500.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/inter-latin-500.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/inter-cyrillic-600.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/inter-latin-600.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/inter-cyrillic-700.woff2') format('woff2');
  unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/inter-latin-700.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  /* Правка 46 — шкала отступов (4/8/12/16/20/24), чтобы новые и уже
     существующие блоки ссылались на одни и те же значения вместо
     случайных "магических" чисел (было, например, вперемешку 12/14/16/17px
     у визуально однотипных карточек) — только там, где это не меняет
     сложную существующую раскладку (grid-gap с осмысленным своим числом
     не трогаю). */
  --ats-space-1:4px;
  --ats-space-2:8px;
  --ats-space-3:12px;
  --ats-space-4:16px;
  --ats-space-5:20px;
  --ats-space-6:24px;
  --ats-bg:#f4f8fc;
  --ats-panel:#fff;
  --ats-line:#dfe8f2;
  --ats-text:#132b55;
  --ats-muted:#7890ad;
  --ats-accent:#1479ed;
  --ats-accent2:#5b43d6;
  --ats-green:#20b66b;
  --ats-yellow:#f2b928;
  --ats-red:#ef5350;
  --ats-cyan:#39a6df;
  --ats-purple:#8a5cf6;
  --ats-brown:#a9744f;
  --ats-teal:#0fb8ab;
  --ats-gray:#98a6b8;
  /* Правка (12) — редизайн «более деловой/современный вид»: слоистые,
     более плоские тени вместо одной размытой (так выглядят более
     аккуратно и «корпоративно» — тонкая контурная линия + мягкий
     объём), плюс отдельные токены под разные уровни (карточка/модалка/
     мелкий элемент), чтобы не плодить магические числа по всему файлу.
     Цвета (--ats-*) не меняю — только форма/тени/типографика. */
  --ats-shadow-sm:0 1px 2px rgba(19,43,85,.05);
  --ats-shadow:0 1px 2px rgba(19,43,85,.04), 0 10px 24px rgba(30,75,125,.08);
  --ats-shadow-lg:0 24px 60px rgba(15,35,70,.18);
  --ats-radius:12px;
  --ats-radius-sm:8px;
}

/* ---------------------------------------------------------------------
   База
   --------------------------------------------------------------------- */
body{
  background:var(--ats-bg) !important;
  color:var(--ats-text);
  font-family:'Inter','Segoe UI',Arial,sans-serif !important;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
#main_content{background:var(--ats-bg)}
a{color:var(--ats-accent)}

/* Заголовок раздела (Канбан/Гант и т.п.) — единый стиль вместо инлайн-
   стилей в каждом .tpl, чтобы менять типографику в одном месте. */
.ats-page-title{
  margin:0;
  font-size:20px;
  font-weight:700;
  letter-spacing:-.01em;
  color:var(--ats-text);
}

/* ---------------------------------------------------------------------
   Сайдбар (left_sidebar.tpl) — #left-sidebar / .sidebar / .metismenu
   --------------------------------------------------------------------- */
#left-sidebar.sidebar{
  background:var(--ats-panel) !important;
  border-right:1px solid var(--ats-line);
  box-shadow:none !important;
  padding-top:6px;
}
#left-sidebar.sidebar > a{
  display:flex;
  align-items:center;
  height:72px;
  padding:12px 22px;
  border-bottom:1px solid var(--ats-line);
  margin-bottom:8px;
}
#left-sidebar.sidebar > a img{
  width:auto;
  max-height:40px;
}
#left-sidebar-nav.sidebar-nav{padding:10px 10px}
#left-sidebar-nav .metismenu{list-style:none;margin:0;padding:0}
#left-sidebar-nav .metismenu > li.g_heading{
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:var(--ats-muted);
  padding:14px 13px 6px;
  font-weight:700;
}
#left-sidebar-nav .metismenu li a{
  display:flex;
  align-items:center;
  gap:12px;
  padding:11px 13px;
  border-radius:9px;
  margin:2px 0;
  color:#30496f;
  font-size:13.5px;
  font-weight:500;
  text-decoration:none;
  border-left:3px solid transparent;
  transition:background .12s ease,color .12s ease;
}
#left-sidebar-nav .metismenu li a i{
  width:20px;
  text-align:center;
  font-size:16px;
  color:#7890ad;
}
#left-sidebar-nav .metismenu li a:hover{
  background:#f1f6fc;
  color:var(--ats-text);
}
#left-sidebar-nav .metismenu li a.active,
#left-sidebar-nav .metismenu li.active > a{
  background:#eaf2ff;
  color:#086fe8;
  font-weight:700;
  border-left-color:var(--ats-accent);
  box-shadow:inset 0 0 0 1px rgba(20,121,237,.08);
}
#left-sidebar-nav .metismenu li a.active i,
#left-sidebar-nav .metismenu li.active > a i{color:#086fe8}

/* ---------------------------------------------------------------------
   Страница / контент (main.tpl .page, .section-body)
   --------------------------------------------------------------------- */
.page{background:transparent}
.section-body{background:transparent}

/* Вкладки статусов + доп. вкладки (task_list.tpl) */
.vkladki{margin-bottom:4px}
.vkladki .nav-tabs.page-header-tab{
  border-bottom:0;
  gap:6px;
  flex-wrap:wrap;
}
.vkladki .nav-tabs.page-header-tab .nav-item{margin-bottom:6px}
.vkladki .nav-link{
  position:relative;
  border:0 !important;
  box-shadow:none !important;
  outline:none !important;
  text-decoration:none !important;
  background:#f1f6fc;
  color:#66809e;
  border-radius:8px;
  padding:8px 14px;
  font-size:12.5px;
  font-weight:600;
  margin-right:0;
  line-height:1.3;
}
.vkladki .nav-link:hover{background:#e7f0fb;color:var(--ats-text)}
.vkladki .nav-link.active,
.vkladki .nav-link.active:hover,
.vkladki .nav-link.active:focus{
  background:#edf4ff !important;
  color:#0877ed !important;
  font-weight:700;
  border:0 !important;
  border-bottom:0 !important;
  box-shadow:none !important;
  text-decoration:none !important;
}
/* На всякий случай — тема могла рисовать подчёркивание/полосу активной
   вкладки через ::before/::after, а не border; глушим и их. */
.vkladki .nav-link.active:before,
.vkladki .nav-link.active:after{display:none !important;content:none !important}
.vkladki .nav-link-additional{font-size:11.5px;padding:6px 12px}
.vkladki .task-count,
.vkladki .project-count{
  position:relative;
  z-index:1;
  display:inline-block;
  min-width:16px;
  margin-left:3px;
  padding:1px 5px;
  border-radius:9px;
  background:rgba(20,121,237,.12);
  color:#0877ed !important;
  font-size:10px;
  font-weight:700;
  line-height:1.5;
  text-decoration:none !important;
  vertical-align:text-top;
  top:0;
}
.vkladki .nav-link.active .task-count,
.vkladki .nav-link.active .project-count{background:#0877ed;color:#fff !important}

/* Список проектов (project_list.tpl) — колонку «Клиент» не показываем.
   get_projects.php у меня нет, поэтому не трогаю порядок колонок в PHP,
   а прячу 4-ю колонку (Клиент) и в шапке, и в теле по позиции — это
   безопасно, даже не видя разметки строк. */
.client-col,
#projects-tbody tr td:nth-child(4){display:none}

/* Поиск */
.search-container{
  display:flex;
  align-items:center;
  margin:10px 0 4px 10px !important;
}
.search-container .search-bar{
  margin:0 !important;
  max-width:260px !important;
  height:39px;
  border:1px solid var(--ats-line) !important;
  border-radius:21px !important;
  padding:0 34px 0 16px !important;
  background:#f7faff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%238299b5' viewBox='0 0 16 16'><path d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'/></svg>") no-repeat right 12px center !important;
  background-size:14px !important;
  outline:none;
}
.search-container .search-bar:focus{border-color:var(--ats-accent) !important}
.search-container .clear-search{right:auto !important;left:auto}

/* ---------------------------------------------------------------------
   Карточка со списком задач + таблица (task_list.tpl / get_tasks.php)
   --------------------------------------------------------------------- */
.todo_list{overflow:auto}
.card{
  background:var(--ats-panel);
  border:1px solid var(--ats-line) !important;
  border-radius:var(--ats-radius) !important;
  box-shadow:var(--ats-shadow) !important;
}
.card .card-header{
  background:transparent;
  border-bottom:1px solid var(--ats-line);
  font-weight:700;
}

table.table_custom{
  border-radius:var(--ats-radius);
  font-size:12.5px;
}
/* Заголовки таблиц — капс + разрядка вместо обычного текста: более
   «деловой»/табличный вид (как в корпоративных SaaS-таблицах), при этом
   те же данные и порядок колонок, PHP не трогаю. Цвет чуть темнее
   прежнего (#8aa0ba → #64768c) — из-за уменьшения размера/капса нужен
   более уверенный контраст, иначе подписи колонок читаются хуже. */
table.table_custom thead th{
  background:#f8fbfe;
  color:#64768c !important;
  font-weight:700;
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.04em;
  border-bottom:1px solid var(--ats-line) !important;
  border-top:0 !important;
  white-space:nowrap;
  padding:12px 10px;
}
table.table_custom thead th .sort-arrow{color:#c3d0de}
table.table_custom tbody tr{transition:background .1s ease}
table.table_custom.table-striped tbody tr:nth-of-type(odd){background:#fbfdff}
table.table_custom tbody tr:hover{background:#eef5fd !important;cursor:pointer}
table.table_custom tbody td{
  padding:11px 10px;
  border-bottom:1px solid #e9eff5;
  border-top:0 !important;
  vertical-align:middle;
  color:var(--ats-text);
}
table.table_custom tbody td.name_hide span{font-weight:600}
/* Правка 50 — список проектов, ячейка "Наименование": вместо одной строки
   (правка 49 — Наименование + Обозначение + Модификация через пробел)
   стало три визуальных уровня (Обозначение главной строкой, Наименование
   мелким текстом под ним, Модификация отдельно снизу).
   Правка 53 — снова одна строка: Наименование + Обозначение + Модификация
   через пробел (как в правке 49), но теперь жирным (тот же вес, что и
   .name_hide span выше); правка 53 также добавляла мелкую строку снизу с
   номером проекта, но правка 54 её убрала — номер и так есть в отдельной
   колонке таблицы («#...»), дублировать не нужно. `.ats-proj-mod` (правка
   50) и `.ats-proj-secondary` (правка 50/53) больше не используются.
   Правка 56 — Обозначение КД (`part_number_kd`, правка 55) вынесено из
   жирной строки отдельной строкой ниже, обычным начертанием, серым/
   приглушённым цветом (`.ats-proj-kd`). */
.ats-proj-primary{line-height:1.35;font-weight:600}
.ats-proj-kd{
  font-size:11.5px;color:var(--ats-muted);font-weight:400;margin-top:2px;line-height:1.3;
}
table.table_custom tbody td.due_date_hide.due-date-overdue,
table.table_custom tbody td.control_date_hide.control-date-overdue,
table.table_custom tbody td.discussion_date_hide.discussion-date-overdue{
  color:var(--ats-red);
  font-weight:700;
}

/* Иконка заметок в ячейке номера */
.note-sticker .add-note-button i{color:#c3d0de;font-size:13px}
.note-sticker .add-note-button i.has-notes{color:var(--ats-yellow)}

/* ---------------------------------------------------------------------
   Статус — превращаем <select class="status-select status-XXX"> в
   цветной "pill", как в макете (.status.work/.done/.wait/.over)
   --------------------------------------------------------------------- */
select.status-select{
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  border:0 !important;
  border-radius:999px !important;
  padding:6px 26px 6px 12px !important;
  font-size:11.5px !important;
  font-weight:700 !important;
  letter-spacing:.01em;
  min-width:0;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='9' height='6' fill='none'><path d='M1 1l3.5 3.5L8 1' stroke='%23335' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;
  background-position:right 10px center;
  background-size:9px;
  cursor:pointer;
  /* Тонкий внутренний контур тем же тоном вместо box-shadow:none — даёт
     чуть больше «предметности» пилюле на светлом фоне карточки, не меняя
     цвета заливки. */
  box-shadow:inset 0 0 0 1px rgba(19,43,85,.045) !important;
}
/* Правка 12 — исправление: на полной карточке проекта
   (project_form_full.php) статус — не <select>, а обычный <span
   class="status-select status-XXX"> (страница только для просмотра,
   менять статус там нельзя) — прежний селектор `select.status-select`
   на span не действовал вообще, и текст статуса на этой странице
   отображался обычным неокрашенным текстом вместо пилюли. Тот же вид,
   что у select-версии, но без стрелочки/курсора-указателя (не кликабельно). */
span.status-select{
  display:inline-block;
  border-radius:999px;
  font-size:11.5px !important;
  font-weight:700 !important;
  letter-spacing:.01em;
  box-shadow:inset 0 0 0 1px rgba(19,43,85,.045);
}

/* Ролевой бейдж (правка 12) — «Ваша роль: …» на полной карточке проекта.
   Тот же визуальный язык, что и status-select (пилюля, капс-подобный вес
   шрифта), но нейтральные/акцентные тона роли, а не статуса — чтобы два
   бейджа рядом не читались как варианты одного и того же. */
.role-badge{
  display:inline-block;
  border-radius:999px;
  padding:4px 12px;
  font-size:11px;
  font-weight:700;
  letter-spacing:.01em;
  box-shadow:inset 0 0 0 1px rgba(19,43,85,.045);
}
.role-badge.role-author{background:#f1ecfe;color:#5b3fce}
.role-badge.role-executor{background:#e9f5ff;color:#0879ed}
.role-badge.role-co-executor{background:#e3faf7;color:#0b8f84}
.role-badge.role-observer{background:#eef1f4;color:#5c6b7a}
select.status-select.status-blue,   span.status-select.status-blue  {background-color:#e9f5ff;color:#0879ed}
select.status-select.status-orange, span.status-select.status-orange{background-color:#fff4d9;color:#b87800}
select.status-select.status-green,  span.status-select.status-green {background-color:#e9fbf0;color:#169454}
select.status-select.status-red,    span.status-select.status-red   {background-color:#ffe9e9;color:#e94444}
select.status-select.status-gray,   span.status-select.status-gray  {background-color:#eef1f4;color:#5c6b7a}
select.status-select.status-purple, span.status-select.status-purple{background-color:#f1ecfe;color:#6d3fce}
select.status-select.status-brown,  span.status-select.status-brown {background-color:#f5ece4;color:#8a5a34}
select.status-select.status-teal,   span.status-select.status-teal  {background-color:#e3faf7;color:#0b8f84}
select.status-select.status-yellow, span.status-select.status-yellow{background-color:#fff9e0;color:#9c7b00}
select.status-select:disabled{opacity:.85;cursor:not-allowed}

/* Мобильная карточка задачи (.task_mobile) */
.task_mobile .task-details{margin-bottom:6px}
.task_mobile .status-select{margin-top:4px}

/* ---------------------------------------------------------------------
   Спиннер загрузки
   --------------------------------------------------------------------- */
.loading-spinner{display:flex;justify-content:center;padding:30px}
.loading-spinner .spinner{
  width:34px;height:34px;border-radius:50%;
  border:3px solid var(--ats-line);
  border-top-color:var(--ats-accent);
  animation:ats-spin .8s linear infinite;
}
@keyframes ats-spin{to{transform:rotate(360deg)}}

/* ---------------------------------------------------------------------
   Кнопки / общие элементы форм (модалки, add_task_form.tpl)
   --------------------------------------------------------------------- */
.btn{border-radius:8px !important;font-weight:600;font-size:13px;letter-spacing:.01em}
.btn-primary,
.btn.btn-primary{
  background:var(--ats-accent) !important;
  border-color:var(--ats-accent) !important;
  box-shadow:0 1px 2px rgba(20,121,237,.25) !important;
}
.btn-primary:hover{background:#0f68d4 !important;border-color:#0f68d4 !important;box-shadow:0 2px 6px rgba(20,121,237,.32) !important}
.btn-default,
.btn-outline-secondary{
  background:#fff !important;
  border-color:var(--ats-line) !important;
  color:#315071 !important;
}
.btn-default:hover,
.btn-outline-secondary:hover{background:#f4f8fc !important}

.form-label{font-size:11.5px !important;color:#66809e !important;font-weight:400 !important;letter-spacing:.02em;text-transform:uppercase}
.form-control,.form-select,
.js-example-basic-single + .select2 .select2-selection,
.js-example-basic-multiple + .select2 .select2-selection{
  border:1px solid var(--ats-line) !important;
  border-radius:9px !important;
  font-size:13px;
}
.form-control:focus,.form-select:focus{
  border-color:var(--ats-accent) !important;
  box-shadow:0 0 0 3px rgba(20,121,237,.12) !important;
}
.required::after{color:var(--ats-red)}

.datepicker-container{position:relative}
.datepicker-container input.datepicker{
  padding-right:36px !important;
  box-sizing:border-box !important;
}
/* Иконка календаря у теми рисуется своим классом со своим размером —
   не знаю точных цифр (my.css у меня нет), поэтому жёстко фиксируем
   размер/положение через !important, чтобы она всегда была ровно по
   центру поля, а не вылезала за его верхнюю/нижнюю границу. */
.datepicker-container .calendar-icon{
  position:absolute !important;
  top:50% !important;
  bottom:auto !important;
  right:6px !important;
  left:auto !important;
  transform:translateY(-50%) !important;
  width:20px !important;
  height:20px !important;
  min-width:0 !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  font-size:11px !important;
  line-height:1 !important;
  /* цвет/фон иконки намеренно не трогаю — это может быть контрастная
     "кнопка" (тёмный фон + белая иконка), не хочу перебить читаемость */
  pointer-events:none;
}
.datepicker-container .calendar-icon i{
  font-size:11px !important;
  line-height:1 !important;
  margin:0 !important;
}
.date-options{margin-top:4px}
.date-options .date-link{color:var(--ats-accent);text-decoration:none;font-size:11.5px}
.date-options .date-link:hover{text-decoration:underline}

.task_form.card{background:#fbfdff !important}

/* Подзадача загружается динамически: одинаковые размеры для обычных
   select и Select2, независимо от версии сетки Bootstrap в теме. */
#addSubtaskForm > .row {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0}
#addSubtaskForm > .row > div {width:auto;max-width:none;min-width:0;padding:0}
#addSubtaskForm > .row > .col-lg-12 {grid-column:1 / -1}
#addSubtaskForm .form-label {display:block;margin:0 0 8px!important}
#addSubtaskForm select.form-select {display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;height:48px;min-height:48px;padding:10px 12px}
#addSubtaskForm .select2-container {width:100%!important;min-width:0;max-width:100%}
#addSubtaskForm .select2-selection {box-sizing:border-box;min-height:48px}
#addSubtaskForm .select2-selection--single {height:48px}
#addSubtaskForm .select2-selection--single .select2-selection__rendered {line-height:46px;padding-left:12px;padding-right:30px}
#addSubtaskForm .select2-selection--single .select2-selection__arrow {height:46px}
#addSubtaskForm .select2-selection--multiple {padding:7px 10px}
@media(max-width:767px){#addSubtaskForm > .row {grid-template-columns:minmax(0,1fr)}}

/* ---------------------------------------------------------------------
   Модалка (bootstrap .modal) — карточный вид как в макете
   --------------------------------------------------------------------- */
.modal-content{
  border:0 !important;
  border-radius:14px !important;
  box-shadow:var(--ats-shadow-lg) !important;
  overflow:hidden;
}
.modal-header{border-bottom:1px solid var(--ats-line)}
.modal-header .modal-title{font-weight:700;letter-spacing:-.01em}
.modal-footer{border-top:1px solid var(--ats-line)}

/* ---------------------------------------------------------------------
   task_full.tpl — карточка задачи, комментарии, вкладки
   --------------------------------------------------------------------- */
.page-header-tab .nav-link{
  border:0;
  color:#66809e;
  font-weight:600;
  font-size:12.5px;
  padding:9px 14px;
  border-radius:8px 8px 0 0;
}
.page-header-tab .nav-link.active{
  color:#0877ed;
  background:#edf4ff;
}
.task_form .page-header-tab .nav-link,
.task_form .page-header-tab .nav-link.active {font-weight:400 !important}

.comment-container{
  padding:var(--ats-space-3) var(--ats-space-4);
  border-radius:10px;
  background:#fbfdff;
  border:1px solid #edf2f6;
  margin-bottom:10px;
  transition:border-color .12s ease,box-shadow .12s ease;
}
.comment-container:hover{border-color:#dde8f2}
.comment-container .comment1{
  margin:6px 0 0;
  color:var(--ats-text) !important;
}
.reply-btn{
  border-radius:7px !important;
  font-size:11px !important;
}
.file-item{
  border:1px solid var(--ats-line);
  border-radius:9px;
  padding:8px 10px;
  background:#fff;
  transition:border-color .12s ease,box-shadow .12s ease;
}
/* Правка 46 — файл кликабелен (превью/скачивание, правка 32), но визуально
   никак не показывал это до наведения. */
.file-item:hover{border-color:var(--ats-accent);box-shadow:var(--ats-shadow-sm)}
.file-icon{color:var(--ats-accent);font-size:16px}
.file-name1{font-size:11px;color:#45627f}

.dropify-container{border-color:var(--ats-cyan) !important;border-radius:10px !important;background:#f7fcfe}

.checkbox-google-switch{accent-color:var(--ats-accent)}

.participant-abbr{
  display:inline-block;
  color:#0879ed !important;
  background:#eaf3ff;
  border-radius:14px;
  padding:3px 9px;
  font-size:11px;
  font-weight:600;
  margin:2px 3px 2px 0;
  text-decoration:none !important;
  transition:background .12s ease;
}
.participant-abbr:hover{background:#dcecfe}

/* ---------------------------------------------------------------------
   Прочее
   --------------------------------------------------------------------- */
#scrollToTopBtn{
  border-radius:50%;
  background:var(--ats-accent) !important;
  border:0;
  box-shadow:var(--ats-shadow);
}
.footer{color:var(--ats-muted);font-size:11.5px}

/* ---------------------------------------------------------------------
   Адаптив
   --------------------------------------------------------------------- */
@media(max-width:780px){
  #left-sidebar.sidebar{width:68px}
  #left-sidebar-nav .metismenu li a span,
  #left-sidebar.sidebar > a img{display:none}
  .vkladki .nav-link{padding:7px 10px}
}
@media(max-width:480px){
  .search-container .search-bar{max-width:100% !important}
}

/* ---------------------------------------------------------------------
   Анти-дёрганье layout'а при наведении.
   Тема (main.css/theme1.css/my.css — их у меня нет) где-то, судя по
   всему, добавляет рамку/линию ТОЛЬКО в состоянии :hover, что меняет
   box-model элемента и двигает всё, что ниже. Явно фиксируем рамку/тень/
   отступы/трансформацию одинаковыми во всех состояниях для того, что
   стилизует этот файл, чтобы при наведении менялся только цвет/фон, а
   не размер.
   --------------------------------------------------------------------- */
.vkladki .nav-link,
.vkladki .nav-link:hover,
.vkladki .nav-link:focus,
.vkladki .nav-link:active,
.vkladki .nav-link.active,
.vkladki .nav-link.active:hover{
  border-width:0 !important;
  border-style:none !important;
  outline:none !important;
  box-shadow:none !important;
  transform:none !important;
  margin:2px 0 !important;
  padding-top:8px !important;
  padding-bottom:8px !important;
  vertical-align:top;
}

#left-sidebar-nav .metismenu li a,
#left-sidebar-nav .metismenu li a:hover,
#left-sidebar-nav .metismenu li a:focus,
#left-sidebar-nav .metismenu li a:active{
  border-top:0 !important;
  border-right:0 !important;
  border-bottom:0 !important;
  outline:none !important;
  box-shadow:none !important;
  transform:none !important;
}

table.table_custom tbody tr,
table.table_custom tbody tr:hover,
table.table_custom tbody td,
table.table_custom tbody tr:hover td{
  border-top:0 !important;
  outline:none !important;
  box-shadow:none !important;
  transform:none !important;
}

.btn,.btn:hover,.btn:focus,.btn:active,
.form-control,.form-control:hover,.form-control:focus,
.form-select,.form-select:hover,.form-select:focus{
  transform:none !important;
}
.btn{border-width:1px !important}
.btn:hover,.btn:focus,.btn:active{box-shadow:none !important}
/* Правка 46 — строка выше сознательно убирает focus box-shadow у кнопок
   (глушили дёрганье вида от темы), но взамен ничего не давала — кнопка
   при переходе с клавиатуры визуально не отличалась от обычного состояния.
   Возвращаем видимый акцент, только для клавиатурной навигации
   (:focus-visible не срабатывает при обычном клике мышью — мышиный вид не
   меняется вообще). Сайдбар/вкладки/строки таблицы здесь намеренно не
   трогаю — там outline:none стоит вместе с border-width:0 !important
   специально против дёрганья layout'а (см. блок выше), это отдельная,
   более чувствительная область. */
.btn:focus-visible,
.kanban-view-btn:focus-visible,
.kanban-load-more:focus-visible,
.ats-dash-tab:focus-visible{
  box-shadow:0 0 0 3px rgba(20,121,237,.3) !important;
}

/* =========================================================================
   Канбан (kanban.tpl / get_kanban.php) — с нуля, на данных portal_tasks.
   ========================================================================= */
.kanban-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  margin:4px 0 18px;
  padding-bottom:16px;
  border-bottom:1px solid var(--ats-line);
}
.kanban-filter{
  border:1px solid var(--ats-line) !important;
  border-radius:9px !important;
  padding:8px 12px;
  background:#fff;
  font-size:13px;
  min-width:220px;
  box-shadow:var(--ats-shadow-sm);
}
/* Переключатель "Строкой / Сеткой" (правка от 10.09) */
.kanban-view-toggle{
  display:inline-flex;
  border:1px solid var(--ats-line);
  border-radius:9px;
  overflow:hidden;
  background:#fff;
  box-shadow:var(--ats-shadow-sm);
}
.kanban-view-btn{
  border:0 !important;
  background:#fff;
  padding:7px 12px;
  font-size:12.5px;
  font-weight:600;
  color:#6b7684;
  cursor:pointer;
  display:flex;
  align-items:center;
  gap:6px;
  box-shadow:none !important;
  transition:background .12s ease,color .12s ease;
}
.kanban-view-btn + .kanban-view-btn{border-left:1px solid var(--ats-line) !important}
.kanban-view-btn:hover{background:#f3f6fa}
.kanban-view-btn.active{background:var(--ats-accent);color:#fff}
.kanban-board-real{
  display:grid;
  grid-template-columns:repeat(9,minmax(230px,1fr));
  gap:16px;
  width:100%;
  overflow-x:auto;
  padding-bottom:10px;
  align-items:start;
}
/* Режим "Сеткой": колонки переносятся на новую строку сами (по ширине
   экрана), без горизонтальной прокрутки — перетаскивать карточки между
   любыми колонками можно без скролла вбок. Каждая колонка ограничена по
   высоте со своей вертикальной прокруткой карточек, иначе одна длинная
   колонка растягивала бы всю строку сетки. */
#kanban-board-container.kanban-grid-mode .kanban-board-real{
  grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  overflow-x:visible;
}
#kanban-board-container.kanban-grid-mode .kanban-column-real{
  max-height:min(48vh,540px);
}
#kanban-board-container.kanban-grid-mode .kanban-drop{
  overflow-y:auto;
  min-height:0;
}
@media(max-width:640px){
  #kanban-board-container.kanban-grid-mode .kanban-board-real{grid-template-columns:1fr}
}
.kanban-column-real{
  background:#f6f8fa;
  border:1px solid #e6eaef;
  border-radius:13px;
  min-height:220px;
  padding:4px 10px 10px;
  display:flex;
  flex-direction:column;
  /* Цветной акцент сверху колонки, тон статуса (правка 12) — тот же
     принцип, что уже применён к status-select пилюлям, просто на самой
     колонке, чтобы 9 колонок легче различались визуально «с высоты
     птичьего полёта», не читая заголовки. Класс статуса ($meta['class'])
     теперь передаётся в get_kanban.php на сам div колонки. */
  border-top:3px solid #c7d0da;
}
.kanban-column-real.status-blue{border-top-color:#0879ed}
.kanban-column-real.status-orange{border-top-color:#b87800}
.kanban-column-real.status-green{border-top-color:#169454}
.kanban-column-real.status-red{border-top-color:#e94444}
.kanban-column-real.status-gray{border-top-color:#8a97a6}
.kanban-column-real.status-purple{border-top-color:#6d3fce}
.kanban-column-real.status-brown{border-top-color:#8a5a34}
.kanban-column-real.status-teal{border-top-color:#0b8f84}
.kanban-column-real.status-yellow{border-top-color:#9c7b00}
.kanban-column-real h3{
  font-size:11.5px;
  margin:10px 3px 10px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  color:var(--ats-text);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.kanban-col-count{
  background:#e5eaf0;
  color:#5c6b7a;
  border-radius:10px;
  padding:1px 8px;
  font-size:11px;
  font-weight:700;
  text-transform:none;
  letter-spacing:0;
}
.kanban-drop{
  flex:1;
  min-height:130px;
  border-radius:8px;
  transition:background .12s ease;
}
.kanban-drop.drag-over{
  background:rgba(20,121,237,.08);
  outline:2px dashed var(--ats-accent);
  outline-offset:-2px;
}
.kanban-sticker{
  background:#fff;
  border:1px solid #e5e9ef;
  border-radius:11px;
  padding:12px;
  margin:0 0 9px;
  box-shadow:var(--ats-shadow-sm);
  cursor:grab;
  transition:box-shadow .14s ease,transform .14s ease,border-color .14s ease;
}
.kanban-sticker:hover{
  box-shadow:0 4px 14px rgba(30,45,65,.1);
  border-color:#d6dce4;
  transform:translateY(-1px);
}
.kanban-sticker.dragging{opacity:.4}
.kanban-sticker-title{font-size:12.5px;font-weight:700;line-height:1.4;color:var(--ats-text)}
.kanban-sticker-project{font-size:11px;color:var(--ats-accent);margin-top:6px;font-weight:600}
.kanban-sticker-meta{
  font-size:10.5px;
  color:#8993a0;
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid #eef1f5;
  display:flex;
  align-items:center;
  gap:5px;
  flex-wrap:wrap;
}
.kanban-sticker-executor{font-weight:600;color:#5c6b7a}
.kanban-sticker-due{font-weight:700}
.kanban-sticker.kanban-overdue{border-color:#f3c6c6}
.kanban-sticker.kanban-overdue .kanban-sticker-due{color:var(--ats-red)}
.kanban-load-more{
  width:100%;
  margin-top:2px;
  padding:8px 10px;
  border:1px dashed #c7d0da !important;
  border-radius:9px !important;
  background:#fff;
  color:var(--ats-accent);
  font-size:11.5px;
  font-weight:700;
  letter-spacing:.01em;
  cursor:pointer;
  transition:background .12s ease,border-color .12s ease;
}
.kanban-load-more:hover{background:#eef4fc;border-color:var(--ats-accent) !important}
.kanban-load-more:disabled{opacity:.6;cursor:default}
@media(max-width:1300px){.kanban-board-real{grid-template-columns:repeat(9,230px)}}

/* =========================================================================
   Гант (gantt.tpl / get_gantt.php) — полосы по t.date .. t.due_date.
   ========================================================================= */
.gantt-project-list{display:grid;gap:14px}
/* Плоский список задач (без карточек-проектов) — один блок на всю доску. */
.gantt-flat,
.gantt-project-card{
  background:#fff;
  border:1px solid #e2e7ed;
  border-radius:var(--ats-radius);
  box-shadow:var(--ats-shadow);
  padding:var(--ats-space-4);
  /* overflow:visible (было hidden) — иначе подпись "Сегодня" над линией
     (см. .gantt-today:after ниже, правка 12) обрезалась верхней границей
     карточки. Скруглённые углы всё равно не страдают — полосы (.gantt-bar)
     и так не подходят вплотную к краю карточки за счёт padding. */
  overflow:visible;
}
.gantt-project-title{font-weight:700;letter-spacing:-.01em;margin-bottom:10px;font-size:13.5px;color:var(--ats-text)}
.gantt-row-project{
  display:inline-block;
  font-weight:700;
  font-size:10px;
  letter-spacing:.01em;
  color:var(--ats-accent);
  background:rgba(20,121,237,.08);
  border-radius:999px;
  padding:2px 8px;
  margin-left:6px;
  vertical-align:middle;
}
.gantt-timeline-wrap{overflow-x:auto}
.gantt-timeline{position:relative;min-width:760px;height:14px;margin-bottom:6px}
/* top/bottom:0 (раньше -6px/-6px, декоративный "выступ" линии над мини-
   линейкой) — держим линию строго в границах .gantt-timeline. При
   overflow-x:auto на родителе (.gantt-timeline-wrap) вертикальный overflow
   тоже становится clipping-контекстом (известная особенность CSS: если
   одна ось не visible, другая тоже перестаёт им быть) — то, что "торчит"
   выше/ниже рамки, обрезается. Подпись "Сегодня" (правка 12) по той же
   причине не висит НАД линией, а стоит рядом, по вертикали по центру. */
.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:var(--ats-red);z-index:2}
.gantt-today:after{
  content:'Сегодня';
  position:absolute;
  top:50%;
  left:6px;
  transform:translateY(-50%);
  font-size:9px;
  font-weight:700;
  letter-spacing:.02em;
  color:var(--ats-red);
  white-space:nowrap;
}
.gantt-months{
  display:grid;
  min-width:760px;
  font-size:10px;
  font-weight:600;
  letter-spacing:.02em;
  text-transform:uppercase;
  color:#8993a3;
  margin-bottom:6px;
  border-bottom:1px solid #edf2f6;
  padding-bottom:6px;
}
.gantt-row{margin:14px 0}
.gantt-row-name{
  font-size:11.5px;
  font-weight:600;
  margin-bottom:6px;
  color:var(--ats-text);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
/* Правка 47 — Гант отдела теперь по проектам: название строки — ссылка
   на карточку проекта (у Ганта задач там просто текст, не ссылка).
   Правка 48 (третий заход): Ник — "ссылок все равно нет" — раньше ссылка
   красилась в тот же цвет, что и обычный (некликабельный) текст задачи в
   Ганте сотрудника, и не отличалась от него до наведения курсора, из-за
   чего на скриншоте не было видно, что это вообще ссылка. Теперь красим
   в акцентный цвет сразу, не только по hover — так виднее, что строка
   кликабельна. */
.gantt-row-name a{color:var(--ats-accent);text-decoration:none}
.gantt-row-name a:hover{text-decoration:underline}
/* Текстовая подпись срока (правка от 10.09 (10)) — точное число дней,
   не нужно угадывать по позиции полосы на шкале. Правка 12 — оформлена
   как мелкая пилюля (тот же язык, что status-select/role-badge), а не
   голый текст, чтобы визуально не сливалась со строкой названия задачи. */
.gantt-row-due{
  display:inline-block;
  font-weight:700;
  font-size:10px;
  letter-spacing:.01em;
  color:var(--ats-muted);
  background:#eef2f7;
  border-radius:999px;
  padding:2px 8px;
  margin-left:6px;
  vertical-align:middle;
}
.gantt-row-due-overdue{color:#c23b38;background:#fdecec}
.gantt-row-due-today{color:#9c7b00;background:#fff7dd}
.gantt-row-track{
  position:relative;
  min-width:760px;
  height:22px;
  background:repeating-linear-gradient(to right,#fff 0,#fff calc(100%/6 - 1px),#f4f7fa calc(100%/6 - 1px),#f4f7fa calc(100%/6));
  border-radius:5px;
  border:1px solid #eef1f5;
}
.gantt-bar{
  position:absolute;
  top:2px;
  height:18px;
  border-radius:6px;
  min-width:8px;
  cursor:pointer;
  background:#7aa7e8;
  border:1px solid #5f8fce;
  box-shadow:0 1px 3px rgba(30,45,65,.12);
  transition:box-shadow .12s ease,filter .12s ease;
}
.gantt-bar:hover{box-shadow:0 2px 8px rgba(30,45,65,.22);filter:brightness(.97)}
.gantt-bar.status-blue{background:#8fc2fb;border-color:#5fa3f0}
.gantt-bar.status-orange{background:#ffcf80;border-color:#f2ae40}
.gantt-bar.status-green{background:#8fe0b6;border-color:#3fbf7f}
.gantt-bar.status-red{background:#f7a8a6;border-color:#ef6f6c}
.gantt-bar.status-gray{background:#cfd6dd;border-color:#a9b3bd}
.gantt-bar.status-purple{background:#cdb8fb;border-color:#9d76ef}
.gantt-bar.status-brown{background:#d8b697;border-color:#b3865d}
.gantt-bar.status-teal{background:#8fe3da;border-color:#25b3a4}
.gantt-bar.status-yellow{background:#f7e28a;border-color:#dcbc23}
/* Просроченный срок (правка от 10.09 (10)) — полоса "сегодня → срок"
   рисуется в обратную сторону (от срока до сегодня) и явно подсвечивается,
   независимо от цвета статуса, чтобы было видно с первого взгляда. */
.gantt-bar.gantt-bar-overdue{
  background:repeating-linear-gradient(135deg,#f7a8a6,#f7a8a6 6px,#f2908d 6px,#f2908d 12px) !important;
  border-color:var(--ats-red) !important;
  border-width:2px !important;
}

/* ===== Карточка проекта — правка от 10.09 (14) =====
   Визуал в духе присланного скриншота 1С ("Проект изделия"): шапка с
   кодом/датой слева и ролью/статусом справа, крупный заголовок, затем
   двухколоночная раскладка — слева вертикальный список полей "ярлык:
   значение", справа большая панель описания. Поля — только реально
   существующие в portal_projects, ничего не выдумано (см. комментарий
   в project_form_full.php). Цвета — те же переменные --ats-*. */
.p1c-card{padding-top:4px}
.p1c-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
  flex-wrap:wrap;
  padding-bottom:14px;
  margin-bottom:14px;
  border-bottom:1px solid var(--ats-line);
}
.p1c-code{font-size:13px;color:var(--ats-text)}
.p1c-code-label{color:var(--ats-muted);font-weight:600;margin-right:4px}
.p1c-code-value{font-weight:700}
.p1c-code-sep{color:var(--ats-muted);margin:0 6px}
.p1c-code-date{color:var(--ats-text)}
.p1c-header-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.p1c-title{font-size:16px;font-weight:700;letter-spacing:-.01em;margin:0 0 18px;color:var(--ats-text)}
/* Правка от 10.09 (18), откачена правкой 21 — пробовали 3 отдельные
   колонки (поля / описание / задачи-обсуждение), но попросили вернуть как
   было: 2 колонки — поля слева, а описание и вкладки "Задачи"/"Обсуждение"
   друг под другом справа, в одной колонке (как в правке 16/17). */
.p1c-body{display:grid;grid-template-columns:260px 1fr;gap:28px}
@media(max-width:720px){.p1c-body{grid-template-columns:1fr}}
.p1c-fields{display:flex;flex-direction:column;gap:2px}
.p1c-field{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:7px 0;
  border-bottom:1px solid #eef2f6;
  font-size:12.5px;
}
.p1c-field:last-child{border-bottom:0}
.p1c-field-label{color:var(--ats-muted);font-weight:600;flex:0 0 auto}
.p1c-field-value{color:var(--ats-text);font-weight:600;text-align:right}
.p1c-field-divider{height:1px;background:var(--ats-line);margin:8px 0}
.p1c-main{min-width:0}
.p1c-main-label{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--ats-muted);
  font-weight:700;
  margin-bottom:8px;
}
.p1c-main-text{
  font-size:13.5px;
  line-height:1.6;
  color:var(--ats-text);
  background:#fbfdff;
  border:1px solid #edf2f6;
  border-radius:10px;
  padding:var(--ats-space-4);
  min-height:80px;
  white-space:pre-wrap;
}
/* Правка от 10.09 (16), откачена из формы правки 18 обратно правкой 21 —
   карточка "Задачи"/"Обсуждение" (project_full.tpl) переносится JS'ом
   внутрь колонки описания (#p1c-main-col, под "Описание"), а не в
   отдельную третью колонку. Сама карточка (.card) снаружи имеет свой
   фон/рамку/тень — при вложении в уже белую .p1c-main это давало бы
   "коробку в коробке"; здесь эта рамка/тень нейтрализуется, а сверху вместо
   неё — просто тонкая линия-разделитель (тот же язык, что .p1c-field-divider). */
.p1c-main #project-tasks-comments-card{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  border-radius:0 !important;
  margin-top:20px;
  padding-top:16px;
  border-top:1px solid var(--ats-line);
}
.p1c-main #project-tasks-comments-card .card-header{
  padding-left:0 !important;
  border-bottom:0;
}
.gantt-empty{padding:40px;text-align:center;color:var(--ats-muted)}

/* =========================================================================
   Главная — сводный дашборд (dashboard.tpl / get_dashboard.php),
   правка от 15.09 (37). Стиль по присланному примеру dashboard.html, но
   классы свои (ats-dash-*), чтобы не столкнуться с чужими .kpi/.donut/
   .bars и т.п., если они где-то ещё встречаются на портале. Где возможно
   переиспользую уже существующие блоки — .card, table.table_custom,
   .gantt-*, .kanban-column-real/.kanban-sticker/status-* (Канбан/Гант),
   а не дублирую их заново.
   ========================================================================= */
.ats-kpis{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:14px;
  margin-bottom:14px;
}
.ats-kpi-card{
  background:var(--ats-panel);
  border:1px solid var(--ats-line);
  border-radius:var(--ats-radius);
  box-shadow:var(--ats-shadow);
  padding:var(--ats-space-4);
  display:flex;
  gap:13px;
  align-items:center;
  min-height:88px;
}
.ats-kpi-icon{
  width:44px;height:44px;border-radius:12px;
  display:grid;place-items:center;font-size:21px;flex:0 0 auto;
  background:#e9f4ff;color:var(--ats-accent);
}
.ats-kpi-icon.g{background:#e8fbf1;color:var(--ats-green)}
.ats-kpi-icon.r{background:#fff0f0;color:var(--ats-red)}
.ats-kpi-icon.y{background:#fff7e4;color:#ef9c00}
.ats-kpi-card small{display:block;color:var(--ats-muted);font-size:11px}
.ats-kpi-num{font-size:25px;font-weight:700;margin:3px 0;color:var(--ats-text)}

.ats-dash-grid{
  display:grid;
  grid-template-columns:1.2fr .95fr .95fr;
  gap:14px;
}
.ats-dash-grid-2{grid-template-columns:1.2fr .8fr}
.ats-dash-wide{grid-column:span 1}
.ats-dash-card{padding:var(--ats-space-4)}
.ats-dash-card-title{
  display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;
}
.ats-dash-card-title h3{margin:0;font-size:14.5px;font-weight:700;letter-spacing:-.01em;color:var(--ats-text)}
.ats-dash-link{color:var(--ats-accent);font-size:12px;text-decoration:none}
.ats-dash-link:hover{text-decoration:underline}
.ats-dash-hint{display:block;color:var(--ats-muted);margin-bottom:10px;line-height:1.4}
.ats-dash-empty{padding:14px 0;color:var(--ats-muted);font-size:12.5px}
.ats-dash-more{
  text-align:center;font-size:11px;color:var(--ats-accent);padding:6px 0 2px;
}

.ats-donutwrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.ats-donut{
  width:135px;height:135px;border-radius:50%;position:relative;flex:0 0 auto;
}
.ats-donut:after{
  content:attr(data-center);
  white-space:pre;text-align:center;position:absolute;inset:28px;
  border-radius:50%;background:#fff;display:grid;place-content:center;
  font-size:16px;font-weight:700;line-height:1.25;color:var(--ats-text);
}
.ats-donut-legend{font-size:12px;line-height:2;color:var(--ats-text)}
.ats-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px}

.ats-bars{display:flex;flex-direction:column;gap:2px}
.ats-bar-row{
  display:grid;grid-template-columns:100px 1fr 26px;gap:9px;align-items:center;
  margin:9px 0;font-size:12px;color:var(--ats-text);
}
.ats-barbg{height:9px;background:#edf3f8;border-radius:7px;overflow:hidden}
.ats-bar{height:100%;border-radius:7px;background:var(--ats-accent)}
.ats-bar.green{background:var(--ats-green)}
.ats-bar.yellow{background:var(--ats-yellow)}
.ats-bar.red{background:var(--ats-red)}

.ats-workload{display:flex;flex-direction:column}
.ats-workload-row{
  display:grid;grid-template-columns:30px 1fr 76px 30px;gap:8px;align-items:center;
  margin:8px 0;font-size:12px;color:var(--ats-text);
}
.ats-workload-row .ats-barbg{height:8px}
.ats-mini-avatar{
  width:27px;height:27px;border-radius:50%;display:grid;place-items:center;
  background:#e9f0f8;color:#416384;font-weight:700;font-size:11px;
}

.ats-dash-tablecard{margin-top:var(--ats-space-4);padding:var(--ats-space-4)}
.ats-dash-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.ats-dash-tab{
  border:0;background:#f1f6fc;color:#66809e;border-radius:6px;padding:8px 12px;
  font-size:12px;cursor:pointer;
  transition:background .12s ease,color .12s ease;
}
/* Правка 46 — у вкладок не было наведения (только активное состояние). */
.ats-dash-tab:hover{background:#e7f0fb;color:var(--ats-text)}
.ats-dash-tab.active{background:#edf4ff;color:var(--ats-accent);font-weight:700}
.ats-dash-tab.active:hover{background:#edf4ff;color:var(--ats-accent)}
.ats-dash-tablewrap{overflow:auto}

.ats-status-pill{
  padding:4px 9px;border-radius:6px;font-size:11px;font-weight:600;
  background:#eef2f6;color:#5c6b7a;white-space:nowrap;
}
.ats-status-pill.status-blue{background:#e9f4ff;color:#0879ed}
.ats-status-pill.status-teal{background:#e4f7f5;color:#0b8f84}
.ats-status-pill.status-yellow{background:#fff7e0;color:#9c7b00}
.ats-status-pill.status-orange{background:#fff1e0;color:#b87800}
.ats-status-pill.status-purple{background:#f1eafe;color:#6d3fce}
.ats-status-pill.status-gray{background:#eef1f4;color:#5c6b7a}
.ats-status-pill.status-green{background:#e8fbf1;color:#169454}
.ats-status-pill.status-red{background:#fdeaea;color:#e94444}
.ats-status-pill.status-brown{background:#f5ece4;color:#8a5a34}
.ats-overdue-tag{
  font-size:10px;color:#fff;background:var(--ats-red);border-radius:5px;
  padding:2px 5px;margin-left:4px;vertical-align:middle;
}

.ats-active-projects{display:flex;flex-direction:column}
.ats-project-row{
  display:grid;grid-template-columns:44px 1fr 42px;gap:11px;align-items:center;
  margin:11px 0;
}
.ats-project-icon{
  width:44px;height:40px;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(135deg,#d9ecfb,#b8d9ee);color:#1e4f7a;
  font-weight:700;font-size:12.5px;
}
.ats-project-row b{font-size:13px}
.ats-project-row b a{color:var(--ats-text);text-decoration:none}
.ats-project-row b a:hover{color:var(--ats-accent)}
.ats-project-row small{display:block;color:var(--ats-muted);margin:3px 0;font-size:11px}
.ats-pct{text-align:right;font-size:11px;color:var(--ats-muted)}

.ats-mini-kanban{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;
}
.ats-mini-kanban .kanban-column-real{min-height:auto}

@media(max-width:1150px){
  .ats-kpis{grid-template-columns:repeat(3,1fr)}
  .ats-dash-grid{grid-template-columns:1fr 1fr}
  .ats-dash-grid-2{grid-template-columns:1fr}
  .ats-mini-kanban{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:780px){
  .ats-kpis{grid-template-columns:1fr}
  .ats-dash-grid{grid-template-columns:1fr}
  .ats-mini-kanban{grid-template-columns:1fr}
}

/* =========================================================================
   Аналитика по отделам (department_analytics.tpl / get_department_analytics.php)
   — правка 39, скорректировано правкой 41. Переиспользует .card/.ats-dash-*/
   .gantt-*/.kanban-*/.ats-project-row/.ats-status-pill/.ats-overdue-tag/
   .ats-mini-avatar — новые классы только там, где реально нечего было
   переиспользовать.
   ========================================================================= */
tr.ats-dept-mine{background:#f6fafe}
.ats-emp-search-wrap{margin-bottom:10px}
.ats-emp-search{
  width:100%;max-width:320px;border:1px solid #dde4ec;border-radius:8px;
  padding:8px 12px;font-size:12.5px;color:var(--ats-text);
}
.ats-emp-search:focus{outline:none;border-color:var(--ats-accent)}

/* Правка 41 убрала .gantt-employee-group/.gantt-employee-header (были нужны
   для блока "Гант по всем сотрудникам разом", который тогда убрали целиком
   из-за бардака с 304 проектами у одного человека) — правка 44 вернула
   ТОЛЬКО Гант (без полного списка проектов, который и был причиной
   бардака), классы снова нужны, восстановлены. .ats-emp-project-group
   (был для убранного списка "Проекты сотрудников") по-прежнему не нужен —
   полный список проектов остался за отдельной страницей сотрудника. */
.gantt-employee-group{margin-bottom:18px}
.gantt-employee-group:last-child{margin-bottom:0}
.gantt-employee-header{
  font-weight:700;font-size:12.5px;color:var(--ats-text);
  padding:8px 0 4px;border-bottom:1px solid #edf2f6;margin-bottom:4px;
}
/* Правка 48 (третий заход) — счётчик проектов конкретного сотрудника
   рядом с его именем в "Гант отдела": счётчики на вкладках статуса — по
   всему отделу (сумма по всем сотрудникам), а без этой подписи цифра под
   отдельным сотрудником выглядела как несовпадение/баг ("вкладка
   говорит 16, а у человека — 1 строка"). Мелкий, приглушённый текст —
   не должен спорить по весу с самим именем. */
.gantt-employee-count{
  font-weight:400;font-size:11px;color:var(--ats-muted);
}
/* Правка 48 (четвёртый заход) — "как посмотреть какие обрезались?": имя
   сотрудника в "Гант отдела" теперь ссылка на его отдельную страницу
   (там же — полный список без капа, с вкладками статусов и постраничной
   подгрузкой), а когда кап реально сработал — ещё и явная "Показать
   все →" рядом. Акцентный цвет сразу (не только по hover) — та же
   причина, что и у ссылки на проект чуть выше: неотличимость от простого
   текста до наведения курсора уже один раз приняли за "ссылок нет". */
.gantt-employee-header a.gantt-employee-link{color:var(--ats-accent);text-decoration:none}
.gantt-employee-header a.gantt-employee-link:hover{text-decoration:underline}
.gantt-employee-more{
  color:var(--ats-accent);text-decoration:none;font-weight:600;font-size:11px;
}
.gantt-employee-more:hover{text-decoration:underline}

/* Правка 44 добавляла сюда строку "проект этой задачи" под названием
   задачи в Ганте — Ник посмотрел на реальные данные (у большинства задач
   проекта нет вообще) и попросил убрать: "не нужно привязываться там к
   проекту, просто ссылка на задачу". Правка 47 переиспользует ЭТОТ ЖЕ
   класс под новый смысл — строка меты (статус + прогресс) под названием
   уже самого ПРОЕКТА в Ганте ОТДЕЛА (который теперь строится из проектов,
   а не из задач, см. ats_render_project_gantt_row() в PHP) — визуально то
   же самое место в разметке, что и раньше, просто теперь это данные
   самого ряда, а не "довесок" к чужому. */
.gantt-row-meta{
  margin-top:4px;font-size:11px;color:var(--ats-muted);
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.gantt-row-meta .ats-pct-inline{font-weight:700;color:var(--ats-text)}

/* Правка 41: ссылка-переключатель отдела в таблице "Объём по отделам"
   (только у "моих" отделов — генеральному или руководителю нескольких
   отделов через $EXTRA_DEPARTMENT_HEADS) — открывает отдел AJAX'ом, без
   перезагрузки (см. wireDeptSwitch в department_analytics.tpl).
   Правка 42: .ats-emp-link (сотрудник в таблице) больше не AJAX-панель —
   это теперь обычная ссылка на отдельную страницу
   /department-employee.html, стили те же самые, только .active убран
   (его выставлял JS, которого больше нет — обычная ссылка не имеет
   "активного" состояния сама по себе). */
.ats-dept-link{color:var(--ats-accent);text-decoration:none;font-weight:600;cursor:pointer}
.ats-dept-link:hover{text-decoration:underline}
.ats-dept-link.active{color:var(--ats-text);cursor:default;text-decoration:none}
.ats-emp-link{color:var(--ats-text);text-decoration:none;font-weight:600}
.ats-emp-link:hover{color:var(--ats-accent);text-decoration:underline}

/* Правка 42: вкладки статуса и "Показать ещё" на странице сотрудника
   (department_employee.tpl) теперь обычные ссылки <a>, а не <button> —
   классы те же (.ats-dash-tab/.kanban-load-more), просто сбрасываем
   стандартное подчёркивание/цвет ссылки, остальное стилизуется как раньше. */
a.ats-dash-tab{text-decoration:none;display:inline-block}
a.kanban-load-more{text-decoration:none;display:inline-block;text-align:center}

.ats-mini-kanban-wide{grid-template-columns:repeat(7,1fr)}
@media(max-width:1300px){.ats-mini-kanban-wide{grid-template-columns:repeat(4,1fr)}}
@media(max-width:900px){.ats-mini-kanban-wide{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.ats-mini-kanban-wide{grid-template-columns:1fr}}

/* Правка 57 (28.09): необязательное поле времени <input type="time">,
   которое добавлено рядом с каждым из трёх полей даты задачи (обсуждение/
   срок исполнения/ПДК) — в add_task_form.tpl, project_add_task_form.php и
   taskform_full.php. Существующий датапикер (.datepicker) не трогаю,
   только стилизую соседнее поле под тот же вид — высота/рамка/отступ как у
   .datepicker-container рядом, чтобы оба поля смотрелись одной парой. */
.ats-time-input{
  border:1px solid #aaa;
  height:34px;
  margin-top:6px;
  max-width:120px;
}
