/* ============================================================
   PrintCRM — Semantics (semantics.css)
   Единая карта «смысл → цвет»:
   • текстовые утилиты text-* приводятся к токенам (обе темы);
   • бейджи bg-* становятся «мягкими» тонированными пилюлями;
   • цветные шапки карточек/модалок bg-* → нейтральные с акцентной
     полосой слева (вместо «радуги»);
   • канбан: колонки и рамки карточек по статусам;
   • чипы остатков (qs-stock-*).
   Тёмная тема переопределяет бейджи/остатки в dark.css.
   ============================================================ */

/* ---------- Текстовые семантические цвета → токены ---------- */
.text-primary { color: var(--c-primary) !important; }
.text-success { color: var(--c-success) !important; }
.text-danger  { color: var(--c-danger) !important; }
.text-warning { color: var(--c-warning) !important; }
.text-info    { color: var(--c-info) !important; }
.text-secondary { color: var(--c-secondary) !important; }

/* .text-dark — это «тёмный текст на цветной подложке» (бейджи bg-warning,
   шапки карточек). Bootstrap берёт его из --bs-dark-rgb, а в тёмной теме
   там #0a0e15 — невидимый текст на тёмном фоне. Переводим на токен текста. */
.text-dark { color: var(--c-text) !important; }

/* ---------- Бейджи: мягкие тонированные (светлая тема) ----------
   !important обязателен: утилиты .bg-* в Bootstrap тоже помечены
   !important и иначе перебивают мягкую подложку. */
.badge.bg-primary   { background-color: var(--c-primary-soft) !important; color: var(--c-primary) !important; }
.badge.bg-success   { background-color: var(--c-success-soft) !important; color: var(--c-success-text) !important; }
.badge.bg-warning   { background-color: var(--c-warning-soft) !important; color: var(--c-warning-text) !important; }
.badge.bg-danger    { background-color: var(--c-danger-soft) !important; color: var(--c-danger-text) !important; }
.badge.bg-info      { background-color: var(--c-info-soft) !important; color: var(--c-info-text) !important; }
.badge.bg-secondary { background-color: var(--c-secondary-soft) !important; color: var(--c-secondary-text) !important; }
.badge.bg-light     { background-color: var(--c-surface-2) !important; color: var(--c-text-muted) !important; border: 1px solid var(--c-border); }

/* ---------- Шапки карточек: нейтральные + цветная полоса слева ---------- */
.card-header.bg-primary,
.card-header.bg-success,
.card-header.bg-danger,
.card-header.bg-warning,
.card-header.bg-info,
.card-header.bg-secondary {
    background-color: var(--c-surface) !important;
    color: var(--c-text) !important;
    border-bottom: 1px solid var(--c-border);
    border-left: 4px solid var(--c-primary);
}
.card-header.bg-success   { border-left-color: var(--c-success); }
.card-header.bg-danger    { border-left-color: var(--c-danger); }
.card-header.bg-warning   { border-left-color: var(--c-warning); }
.card-header.bg-info      { border-left-color: var(--c-info); }
.card-header.bg-secondary { border-left-color: var(--c-secondary); }

/* Шапки модалок — то же правило */
.modal-header.bg-primary,
.modal-header.bg-success,
.modal-header.bg-danger,
.modal-header.bg-warning,
.modal-header.bg-info,
.modal-header.bg-secondary {
    background-color: var(--c-surface) !important;
    color: var(--c-text) !important;
    border-bottom: 1px solid var(--c-border);
    border-left: 4px solid var(--c-primary);
}
.modal-header.bg-success   { border-left-color: var(--c-success); }
.modal-header.bg-danger    { border-left-color: var(--c-danger); }
.modal-header.bg-warning   { border-left-color: var(--c-warning); }
.modal-header.bg-info      { border-left-color: var(--c-info); }
.modal-header.bg-secondary { border-left-color: var(--c-secondary); }

/* ---------- Чипы остатков быстрой продажи (светлая) ---------- */
.qs-stock-ok      { background: var(--c-success-soft); color: var(--c-success); }
.qs-stock-low     { background: var(--c-warning-soft); color: var(--c-warning); }
.qs-stock-out     { background: var(--c-danger-soft);  color: var(--c-danger); }
.qs-stock-service { background: var(--c-info-soft);    color: var(--c-info); }

/* ---------- Канбан: колонки по статусам ---------- */
.kanban-col .card-header {
    background: var(--c-surface);
    border-bottom: 1px solid var(--c-border);
    border-left: 4px solid var(--c-border-strong);
    border-radius: var(--radius-md) var(--radius-md) 0 0;
}
.kanban-col[data-status="pending"]     .card-header { border-left-color: var(--c-warning); }
.kanban-col[data-status="confirmed"]   .card-header { border-left-color: var(--c-primary); }
.kanban-col[data-status="in_progress"] .card-header { border-left-color: var(--c-info); }
.kanban-col[data-status="completed"]   .card-header { border-left-color: var(--c-success); }
.kanban-col[data-status="cancelled"]   .card-header { border-left-color: var(--c-danger); }

/* Канбан: рамка оплаты на карточке */
.kanban-card { border-left: 4px solid var(--c-border-strong) !important; }
.kanban-card[data-payment="paid"]    { border-left-color: var(--c-success) !important; }
.kanban-card[data-payment="partial"] { border-left-color: var(--c-warning) !important; }
.kanban-card[data-payment="unpaid"]  { border-left-color: var(--c-secondary) !important; }
