/* ==========================================================================
   Bootstrap 5.3 → Industrial Swiss bridge
   --------------------------------------------------------------------------
   Bootstrap-компоненты несут СКОМПИЛИРОВАННЫЕ значения в своих переменных
   (.btn-primary { --bs-btn-bg: #0d6efd }), поэтому :root --bs-primary их
   не красит. Этот файл переопределяет переменные покомпонентно.
   Роли — из static/marketing/tokens.css (docs/DESIGN_SYSTEM.md).
   Подключается после Bootstrap и tokens.css, до base.css.
   ========================================================================== */

/* ---------- Глобальные переменные ---------- */
:root {
  --bs-body-font-family: var(--font-sans);
  --bs-font-monospace:   var(--font-mono);

  --bs-body-bg:          var(--bg-sunken);
  --bs-body-color:       var(--text);
  --bs-emphasis-color:   var(--n-950);
  --bs-secondary-color:  var(--text-muted);
  --bs-tertiary-color:   var(--text-faint);
  --bs-secondary-bg:     var(--n-50);
  --bs-tertiary-bg:      var(--n-25);
  --bs-heading-color:    var(--text);

  --bs-border-color:     var(--border);
  --bs-border-radius:    var(--r-md);
  --bs-border-radius-sm: var(--r-sm);
  --bs-border-radius-lg: var(--r-lg);
  --bs-border-radius-xl: var(--r-lg);
  --bs-border-radius-xxl: var(--r-lg);

  --bs-primary:      var(--p-500);
  --bs-primary-rgb:  31, 80, 117;
  --bs-success:      var(--ok);
  --bs-success-rgb:  31, 122, 76;
  --bs-warning:      var(--warn);
  --bs-warning-rgb:  224, 164, 0;
  --bs-danger:       var(--stop);
  --bs-danger-rgb:   168, 36, 24;
  --bs-info:         var(--info);
  --bs-info-rgb:     31, 80, 117;

  --bs-link-color:           var(--p-500);
  --bs-link-color-rgb:       31, 80, 117;
  --bs-link-hover-color:     var(--p-600);
  --bs-link-hover-color-rgb: 23, 64, 95;

  --bs-focus-ring-color: rgba(31, 80, 117, 0.25);
}

/* Subtle-палитра утилит (bg-*-subtle / text-*-emphasis: alert-подобные блоки) */
:root {
  --bs-primary-bg-subtle: var(--p-50);
  --bs-primary-border-subtle: var(--p-200);
  --bs-primary-text-emphasis: var(--p-700);
  --bs-success-bg-subtle: var(--ok-bg);
  --bs-success-text-emphasis: var(--ok-ink);
  --bs-warning-bg-subtle: var(--warn-bg);
  --bs-warning-text-emphasis: var(--warn-ink);
  --bs-danger-bg-subtle: var(--stop-bg);
  --bs-danger-text-emphasis: var(--stop-ink);
  --bs-info-bg-subtle: var(--info-bg);
  --bs-info-text-emphasis: var(--info-ink);
  --bs-secondary-bg-subtle: var(--n-50);
  --bs-light-bg-subtle: var(--n-25);
}

/* ---------- Кнопки ---------- */
.btn {
  --bs-btn-border-radius: var(--r-md);
  --bs-btn-focus-box-shadow: var(--sh-focus);
  transition: color var(--d-fast) var(--e-out),
              background-color var(--d-fast) var(--e-out),
              border-color var(--d-fast) var(--e-out);
}
/* Нажатие утапливается, не пружинит (§8.5) */
.btn:active { transform: translateY(1px); }

.btn-primary {
  --bs-btn-bg: var(--p-500);
  --bs-btn-border-color: var(--p-500);
  --bs-btn-hover-bg: var(--p-600);
  --bs-btn-hover-border-color: var(--p-600);
  --bs-btn-active-bg: var(--p-700);
  --bs-btn-active-border-color: var(--p-700);
  --bs-btn-disabled-bg: var(--p-300);
  --bs-btn-disabled-border-color: var(--p-300);
}
.btn-outline-primary {
  --bs-btn-color: var(--p-500);
  --bs-btn-border-color: var(--p-300);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--p-500);
  --bs-btn-hover-border-color: var(--p-500);
  --bs-btn-active-bg: var(--p-600);
  --bs-btn-active-border-color: var(--p-600);
  --bs-btn-disabled-color: var(--p-300);
  --bs-btn-disabled-border-color: var(--p-200);
}
.btn-secondary {
  --bs-btn-bg: var(--n-600);
  --bs-btn-border-color: var(--n-600);
  --bs-btn-hover-bg: var(--n-700);
  --bs-btn-hover-border-color: var(--n-700);
  --bs-btn-active-bg: var(--n-800);
  --bs-btn-active-border-color: var(--n-800);
}
.btn-outline-secondary {
  --bs-btn-color: var(--n-600);
  --bs-btn-border-color: var(--n-300);
  --bs-btn-hover-color: var(--n-800);
  --bs-btn-hover-bg: var(--n-50);
  --bs-btn-hover-border-color: var(--n-400);
  --bs-btn-active-color: var(--n-900);
  --bs-btn-active-bg: var(--n-100);
  --bs-btn-active-border-color: var(--n-400);
}
.btn-success {
  --bs-btn-bg: var(--ok);
  --bs-btn-border-color: var(--ok);
  --bs-btn-hover-bg: var(--ok-ink);
  --bs-btn-hover-border-color: var(--ok-ink);
  --bs-btn-active-bg: var(--ok-ink);
  --bs-btn-active-border-color: var(--ok-ink);
}
.btn-danger {
  --bs-btn-bg: var(--stop);
  --bs-btn-border-color: var(--stop);
  --bs-btn-hover-bg: var(--stop-ink);
  --bs-btn-hover-border-color: var(--stop-ink);
  --bs-btn-active-bg: var(--stop-ink);
  --bs-btn-active-border-color: var(--stop-ink);
}
.btn-outline-danger {
  --bs-btn-color: var(--stop);
  --bs-btn-border-color: var(--stop);
  --bs-btn-hover-bg: var(--stop);
  --bs-btn-hover-border-color: var(--stop);
  --bs-btn-active-bg: var(--stop-ink);
  --bs-btn-active-border-color: var(--stop-ink);
}
.btn-warning {
  --bs-btn-color: var(--n-900);
  --bs-btn-bg: var(--warn);
  --bs-btn-border-color: var(--warn);
  --bs-btn-hover-color: var(--n-900);
  --bs-btn-hover-bg: color-mix(in srgb, var(--warn) 88%, black);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--warn) 88%, black);
}
.btn-link { --bs-btn-color: var(--p-500); --bs-btn-hover-color: var(--p-600); }

/* ---------- Бейджи: пилюля запрещена (§8.14) ---------- */
.badge {
  --bs-badge-border-radius: var(--r-sm);
  font-weight: 600;
}
/* Мостовой запрет: класс уходит из разметки в Phase 4, тогда снять правило */
.badge.rounded-pill { border-radius: var(--r-sm) !important; }

/* ---------- Алерты: подложка + -ink текст + сигнальная полоса (§8.3, §8.8) -- */
.alert { --bs-alert-border-radius: var(--r-sm); }
.alert-success,
.alert-warning,
.alert-danger,
.alert-info {
  --bs-alert-border-color: transparent;
  border-left: 4px solid;
  --bs-alert-link-color: inherit;
}
.alert-success { --bs-alert-bg: var(--ok-bg);   --bs-alert-color: var(--ok-ink);   border-left-color: var(--ok); }
.alert-warning { --bs-alert-bg: var(--warn-bg); --bs-alert-color: var(--warn-ink); border-left-color: var(--warn); }
.alert-danger  { --bs-alert-bg: var(--stop-bg); --bs-alert-color: var(--stop-ink); border-left-color: var(--stop); }
.alert-info    { --bs-alert-bg: var(--info-bg); --bs-alert-color: var(--info-ink); border-left-color: var(--info); }

/* ---------- Текстовые утилиты сигналов: текст — только -ink (§8.3) ---------- */
.text-success { color: var(--ok-ink) !important; }
.text-warning { color: var(--warn-ink) !important; }
.text-danger  { color: var(--stop-ink) !important; }
.text-info    { color: var(--info-ink) !important; }

/* ---------- Таблицы: без зебры, волосяная линия (§8.10) ---------- */
.table {
  --bs-table-striped-bg: transparent;
  --bs-table-striped-color: var(--text);
  --bs-table-border-color: var(--border);
  --bs-table-hover-bg: var(--n-25);
  --bs-table-hover-color: var(--text);
}
.table > :not(caption) > * > * { border-bottom-color: var(--border-faint); }
.table > thead > tr > th { border-bottom-color: var(--border-strong); }

/* ---------- Формы: двойное кольцо фокуса (§5) ---------- */
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--p-400);
  box-shadow: var(--sh-focus);
}
.form-check-input:checked {
  background-color: var(--p-500);
  border-color: var(--p-500);
}

/* ---------- Карточки: линия и фон, не тень (§8.4) ---------- */
.card {
  --bs-card-border-color: var(--border);
  --bs-card-border-radius: var(--r-md);
  --bs-card-inner-border-radius: calc(var(--r-md) - 1px);
  --bs-card-cap-bg: var(--surface-alt);
  --bs-card-bg: var(--surface);
}
/* Утилиты теней на карточках — гасим до волосяной линии
   (bootstrap .shadow* сами с !important) */
.card.shadow, .card.shadow-sm { box-shadow: var(--sh-hair) !important; }

/* ---------- Над полосой: modal, dropdown, offcanvas, popover ---------- */
.modal-content {
  border-radius: var(--r-lg);
  border-color: var(--border);
  box-shadow: var(--sh-pop);
}
.dropdown-menu {
  --bs-dropdown-border-radius: var(--r-md);
  --bs-dropdown-border-color: var(--border);
  --bs-dropdown-link-hover-bg: var(--n-50);
  --bs-dropdown-link-active-bg: var(--p-500);
  box-shadow: var(--sh-pop);
}
.popover { --bs-popover-border-radius: var(--r-md); --bs-popover-border-color: var(--border); box-shadow: var(--sh-pop); }
.toast { --bs-toast-border-radius: var(--r-md); --bs-toast-border-color: var(--border); box-shadow: var(--sh-pop); }
.toast-container { z-index: var(--bs-toast-zindex, 1090); }
/* Тосты сообщений: та же схема, что у алертов — подложка + -ink текст + засечка (§8.3, §8.8).
   Засечка сверху, а не слева (§1.1): тост центрирован, левого поля у него нет. */
.toast-success,
.toast-warning,
.toast-danger,
.toast-info { --bs-toast-border-color: transparent; border-top: 4px solid; }
.toast-success { --bs-toast-bg: var(--ok-bg);   --bs-toast-color: var(--ok-ink);   border-top-color: var(--ok); }
.toast-warning { --bs-toast-bg: var(--warn-bg); --bs-toast-color: var(--warn-ink); border-top-color: var(--warn); }
.toast-danger  { --bs-toast-bg: var(--stop-bg); --bs-toast-color: var(--stop-ink); border-top-color: var(--stop); }
.toast-info    { --bs-toast-bg: var(--info-bg); --bs-toast-color: var(--info-ink); border-top-color: var(--info); }
.toast-container .toast {
  --bs-toast-max-width: min(560px, calc(100vw - var(--s-5)));
  --bs-toast-font-size: var(--t-lead);
  min-width: min(400px, calc(100vw - var(--s-5)));
  font-weight: 600;
}
.toast-container .toast-body { padding: var(--s-5); }
.toast.fade { transition: opacity var(--d-base) var(--e-out); }

/* ---------- Навигация ---------- */
.nav-tabs {
  --bs-nav-tabs-border-radius: var(--r-sm);
  --bs-nav-tabs-link-active-color: var(--p-600);
  --bs-nav-link-color: var(--text-muted);
  --bs-nav-link-hover-color: var(--text);
}
.nav-pills {
  --bs-nav-pills-border-radius: var(--r-sm);
  --bs-nav-pills-link-active-bg: var(--p-500);
  --bs-nav-link-color: var(--text-muted);
}
.pagination {
  --bs-pagination-color: var(--p-500);
  --bs-pagination-hover-color: var(--p-600);
  --bs-pagination-focus-color: var(--p-600);
  --bs-pagination-focus-box-shadow: var(--sh-focus);
  --bs-pagination-active-bg: var(--p-500);
  --bs-pagination-active-border-color: var(--p-500);
  --bs-pagination-border-color: var(--border);
}

/* ---------- Прогресс ---------- */
.progress {
  --bs-progress-bar-bg: var(--p-500);
  --bs-progress-border-radius: var(--r-xs);
}

/* ---------- Списки ---------- */
.list-group {
  --bs-list-group-border-color: var(--border-faint);
  --bs-list-group-border-radius: var(--r-md);
  --bs-list-group-active-bg: var(--p-500);
  --bs-list-group-active-border-color: var(--p-500);
  --bs-list-group-action-hover-bg: var(--n-25);
}
