/* ─────────────────────────────────────────────────────────────────────────
   Дизайн-система Relevantrix. Один файл на все страницы — правило одного
   места: раньше палитра дублировалась в <style> каждой страницы и разъезжалась.

   Источник — ai-editor-prototype.html. Bootstrap оставлен ради поведения
   (модалки, offcanvas, дропдауны), здесь переопределён только визуальный слой.
   Страницы подключают этот файл ПОСЛЕ bootstrap.min.css.
   ───────────────────────────────────────────────────────────────────────── */

:root{
  --ink:#15181C; --ink-2:#5A626B; --ink-3:#8B939C;
  --paper:#FFFFFF; --canvas:#EDEFF1;
  --rule:#DCE0E4; --rule-2:#C3C9CF;
  --signal:#1F5F5B; --signal-bg:#E4EFED;
  --pending:#9A6414; --pending-bg:#F6EEDF;
  --danger-c:#9E362E; --danger-bg:#F7E7E5;
  --measure:#4E4180; --measure-bg:#EBE8F4;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --sans:"IBM Plex Sans",system-ui,sans-serif;

  /* Токены Bootstrap перекладываем на палитру прототипа, чтобы не гоняться
     за каждым его компонентом по отдельности. */
  --bs-body-bg: var(--canvas);
  --bs-body-color: var(--ink);
  --bs-border-color: var(--rule);
  --bs-border-radius: 3px;
  --bs-border-radius-sm: 2px;
  --bs-border-radius-lg: 3px;
  --bs-font-sans-serif: var(--sans);
  --bs-primary: #1F5F5B;
  --bs-primary-rgb: 31,95,91;
  --bs-link-color: var(--signal);
  --bs-link-hover-color: #17423F;
  --bs-secondary-color: var(--ink-2);
  --bs-emphasis-color: var(--ink);
}

body{
  background:var(--canvas); color:var(--ink); font-family:var(--sans);
  font-size:14px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
:focus-visible{ outline:2px solid var(--signal); outline-offset:2px; }
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }

/* ── каркас: сайдбар и мобильная шапка ── */
.sidebar{
  width:230px; min-height:100vh; background:var(--paper);
  border-right:1px solid var(--rule-2); flex-shrink:0; display:flex; flex-direction:column;
}
.offcanvas{ background:var(--paper)!important; border-right:1px solid var(--rule-2)!important; }
.mobile-navbar{ background:var(--paper); border-bottom:1px solid var(--rule-2); }
.logo-icon{ color:var(--signal); }

.project-link{
  display:flex; align-items:center; gap:9px; color:var(--ink-2);
  border-radius:2px; padding:.4rem .6rem; text-decoration:none; font-size:13px;
}
.project-link:hover{ background:#F6F7F8; color:var(--ink); }
.project-link.active{ background:var(--signal-bg); color:var(--signal); font-weight:500; }
.project-dot{ width:6px; height:6px; border-radius:50%; background:var(--rule-2); flex-shrink:0; }
.project-link.active .project-dot{ background:var(--signal); }

.nav-link-side{ color:var(--ink-2); border-radius:2px; padding:.4rem .6rem; font-size:13px; text-decoration:none; }
.nav-link-side:hover{ background:#F6F7F8; color:var(--ink); }

/* Надзаголовки в сайдбаре — моноширинные, как в прототипе */
.sidebar .text-muted, .offcanvas .text-muted{ font-family:var(--mono); color:var(--ink-3)!important; }

/* ── вкладки ── */
.nav-tabs{ border-bottom:1px solid var(--rule-2); background:var(--canvas); }
.nav-tabs .nav-link{
  color:var(--ink-2); border:none; border-bottom:2px solid transparent;
  border-radius:0; padding:12px 14px; font-size:13px;
}
.nav-tabs .nav-link:hover{ color:var(--ink); background:transparent; border-bottom-color:transparent; }
.nav-tabs .nav-link.active{ color:var(--ink); font-weight:500; background:transparent; border-bottom-color:var(--signal); }

/* ── панели ── */
.card{ background:var(--paper); border:1px solid var(--rule); border-radius:3px; }
.card-header{ background:var(--paper); border-bottom:1px solid var(--rule); }

/* ── таблицы ── */
.table{ --bs-table-bg:var(--paper); --bs-table-color:var(--ink); font-size:13px; margin-bottom:0; }
.table > :not(caption) > * > *{ background-color:var(--paper); }
.table thead th{
  font-family:var(--mono); font-size:10px; letter-spacing:.06em; color:var(--ink-3);
  font-weight:400; text-transform:uppercase;
  border-bottom:1px solid var(--rule-2); padding:10px 14px;
}
.table td{ padding:11px 14px; border-bottom:1px solid var(--rule); vertical-align:middle; }
.table tbody tr{ cursor:pointer; }
.table tbody tr:hover > *{ background-color:#F6F7F8; }
.table tbody tr:last-child td{ border-bottom:none; }
/* Табличные цифры — иначе колонки чисел «пляшут» при перерисовке */
.num, .table td:last-child{ font-variant-numeric:tabular-nums; }

/* ── формы ── */
.form-control, .form-select{
  font-size:13px; border:1px solid var(--rule-2); border-radius:2px;
  background:var(--paper); color:var(--ink); padding:9px 11px;
}
.form-control:focus, .form-select:focus{ border-color:var(--signal); box-shadow:0 0 0 2px var(--signal-bg); }
.form-control::placeholder{ color:var(--ink-3); }
.form-label{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.06em;
  color:var(--ink-3); text-transform:uppercase;
}
textarea.form-control{ font-family:var(--mono); font-size:12px; line-height:1.6; }
.input-group-text{ background:#F6F7F8; border-color:var(--rule-2); color:var(--ink-2); }
.form-check-input:checked{ background-color:var(--signal); border-color:var(--signal); }
.form-check-input:focus{ box-shadow:0 0 0 2px var(--signal-bg); border-color:var(--signal); }

/* ── кнопки ── */
.btn{ font-size:12.5px; border-radius:2px; padding:7px 13px; }
.btn-sm{ font-size:12px; padding:5px 10px; }
.btn-primary{ background:var(--signal-bg); border-color:var(--signal); color:var(--signal); font-weight:500; }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active{ background:#D8E7E4; border-color:var(--signal); color:var(--signal); }
.btn-outline-secondary{ border-color:var(--rule-2); color:var(--ink); background:var(--paper); }
.btn-outline-secondary:hover{ border-color:var(--ink-3); background:#F6F7F8; color:var(--ink); }
.btn-outline-danger{ border-color:var(--danger-c); color:var(--danger-c); background:transparent; }
.btn-outline-danger:hover{ background:var(--danger-bg); color:var(--danger-c); border-color:var(--danger-c); }
.btn-outline-primary{ border-color:var(--signal); color:var(--signal); background:transparent; }
.btn-outline-primary:hover{ background:var(--signal-bg); color:var(--signal); border-color:var(--signal); }
.btn-outline-success{ border-color:var(--signal); color:var(--signal); background:transparent; }
.btn-outline-success:hover{ background:var(--signal-bg); color:var(--signal); border-color:var(--signal); }
.btn-outline-warning{ border-color:var(--pending); color:var(--pending); background:transparent; }
.btn-outline-warning:hover{ background:var(--pending-bg); color:var(--pending); border-color:var(--pending); }
.btn-link{ color:var(--ink-3); text-decoration:none; }
.btn-link:hover{ color:var(--ink); }

/* ── бейджи как «теги» прототипа: мягкая подложка, цветной текст ──
   !important нужен, чтобы перебить утилиту .text-white в разметке. */
.badge{
  font-family:var(--mono); font-size:10px; font-weight:400;
  letter-spacing:.06em; padding:3px 7px; border-radius:2px; text-transform:lowercase;
}
.badge.bg-success  { background:var(--signal-bg)!important;  color:var(--signal)!important; }
.badge.bg-primary  { background:var(--measure-bg)!important; color:var(--measure)!important; }
.badge.bg-warning  { background:var(--pending-bg)!important; color:var(--pending)!important; }
.badge.bg-danger   { background:var(--danger-bg)!important;  color:var(--danger-c)!important; }
.badge.bg-secondary{ background:#E9ECEF!important;           color:var(--ink-2)!important; }
.badge.bg-info     { background:var(--measure-bg)!important; color:var(--measure)!important; }

/* ── модалки, дропдауны, алерты ── */
.modal-content{ background:var(--paper); border:1px solid var(--rule-2); border-radius:3px; }
.modal-header, .modal-footer{ border-color:var(--rule); }
.dropdown-menu{ background:var(--paper)!important; border:1px solid var(--rule-2); border-radius:2px; font-size:13px; }
.dropdown-item:hover{ background:#F6F7F8; }
.alert{ border-radius:2px; font-size:13px; border:1px solid transparent; }
.alert-danger   { background:var(--danger-bg);  border-color:#E9C9C5; color:var(--danger-c); }
.alert-warning  { background:var(--pending-bg); border-color:#E8D9BC; color:var(--pending); }
.alert-secondary{ background:#F1F3F5;           border-color:var(--rule); color:var(--ink-2); }
.alert-success  { background:var(--signal-bg);  border-color:#C6DDD9; color:var(--signal); }

/* ── типографские примитивы прототипа ── */
.k{ font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:var(--ink-3); }
.eyebrow{ font-family:var(--mono); font-size:11px; letter-spacing:.08em; color:var(--ink-3); }
.stat-value{ font-family:var(--mono); font-size:17px; font-weight:500; font-variant-numeric:tabular-nums; }
.big{ font-family:var(--mono); font-size:26px; font-weight:500; letter-spacing:-.02em; font-variant-numeric:tabular-nums; }

/* Цветовые утилиты Bootstrap — на палитру прототипа, иначе синий и зелёный
   по умолчанию спорят с сигнальным цветом. */
.text-primary{ color:var(--measure)!important; }
.text-success{ color:var(--signal)!important; }
.text-danger { color:var(--danger-c)!important; }
.text-warning{ color:var(--pending)!important; }
.text-info   { color:var(--measure)!important; }

.text-muted{ color:var(--ink-2)!important; }
.border-secondary{ border-color:var(--rule)!important; }
.spinner-border{ color:var(--ink-3); }
code{ font-family:var(--mono); color:var(--measure); }
