/* === CopyCRM brand fonts (self-hosted) === */
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-400-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-400-latin.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:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-700-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-700-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/jetbrainsmono-700-latin.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:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/onest-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/onest-400-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/onest-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Onest';font-style:normal;font-weight:400;font-display:swap;src:url('/static/fonts/brand/onest-400-latin.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:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/brand/onest-600-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/brand/onest-600-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/brand/onest-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Onest';font-style:normal;font-weight:600;font-display:swap;src:url('/static/fonts/brand/onest-600-latin.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:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/onest-700-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/onest-700-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/onest-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Onest';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/onest-700-latin.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:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('/static/fonts/brand/onest-800-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('/static/fonts/brand/onest-800-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('/static/fonts/brand/onest-800-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Onest';font-style:normal;font-weight:800;font-display:swap;src:url('/static/fonts/brand/onest-800-latin.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:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/unbounded-700-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/unbounded-700-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/unbounded-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:700;font-display:swap;src:url('/static/fonts/brand/unbounded-700-latin.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:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url('/static/fonts/brand/unbounded-900-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url('/static/fonts/brand/unbounded-900-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url('/static/fonts/brand/unbounded-900-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:900;font-display:swap;src:url('/static/fonts/brand/unbounded-900-latin.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;}

/* ============================================================
   CopyCRM brand skin · v2 — по брендбуку «CopyCRM × Копик» v1.0
   Аддитивный слой ПОВЕРХ легаси-стилей. Шаблоны не переписываем:
   побеждаем специфичностью (префиксы body / html body), потому что
   десятки <style>-блоков грузятся ПОСЛЕ этого файла.
   Откат: убрать <link> из шаблонов + бамп SW. Файлы темплейтов не трогать!
   ============================================================ */

/* ---------- токены ---------- */
:root {
  --bk-or-300: #F6973F; --bk-or-500: #ED8128; --bk-or-600: #DD6E18; --bk-or-700: #C95E18;
  --bk-cr-50: #FFFBF6; --bk-cr-100: #FFF6EC; --bk-cr-200: #FFE4C9; --bk-cr-300: #F3D9BD;
  --bk-co-900: #34261B; --bk-co-600: #6B5444; --bk-co-400: #A1886F;
  --bk-violet: #8B46C9; --bk-violet-soft: #F3E9FC;
  --bk-teal: #14B8A6;  --bk-teal-soft: #E2F7F4;
  --bk-green: #2BA84A; --bk-green-soft: #E4F6E9;
  --bk-red: #E5484D;   --bk-red-soft: #FDEAEA;
  --bk-amber: #F5B82E; --bk-amber-soft: #FFF4DC;
  --bk-g-fire: linear-gradient(135deg, #F6973F 0%, #ED8128 55%, #DD6E18 100%);
  --bk-g-sunrise: linear-gradient(135deg, #FFC07A 0%, #F6973F 50%, #ED8128 100%);
  --bk-g-berry: linear-gradient(135deg, #A96FE3 0%, #8B46C9 100%);
  --bk-bd: 2px solid var(--bk-cr-300);
  --bk-r-s: 12px; --bk-r-m: 20px; --bk-r-l: 28px;
  --bk-shadow-sticker: 8px 8px 0 rgba(52, 38, 27, .10);
  --bk-shadow-sticker-sm: 5px 5px 0 rgba(52, 38, 27, .10);
  --bk-shadow-soft: 0 10px 30px -12px rgba(201, 94, 24, .35);
  --bk-font-d: 'Unbounded', system-ui, sans-serif;
  --bk-font-b: 'Onest', 'Segoe UI', system-ui, sans-serif;
  --bk-font-m: 'JetBrains Mono', ui-monospace, monospace;
  /* тёмное какао */
  --bk-dk-bg: #211710; --bk-dk-bg2: #2A1C12;
  --bk-dk-surface: #312216; --bk-dk-surface2: #3A2A1B; --bk-dk-border: #4A3527;
  --bk-dk-text: #F4E8DC; --bk-dk-text2: #C9B49E;
}

/* ============================================================
   БАЗА: шрифт + полотно
   ============================================================ */
html body {
  font-family: var(--bk-font-b) !important;
}
::selection { background: var(--bk-or-500); color: #fff; }

html body:not(.dark-theme) {
  background: var(--bk-cr-100) !important;
  background-image:
    radial-gradient(620px 420px at 88% -6%, rgba(246,151,63,.16), transparent 60%),
    radial-gradient(520px 420px at -8% 32%, rgba(255,184,103,.13), transparent 60%),
    radial-gradient(700px 520px at 104% 78%, rgba(139,70,201,.05), transparent 60%) !important;
  color: var(--bk-co-900);
}
html body.dark-theme {
  background: var(--bk-dk-bg) !important;
  background-image:
    radial-gradient(620px 420px at 88% -6%, rgba(237,129,40,.09), transparent 60%),
    radial-gradient(520px 420px at -8% 32%, rgba(201,94,24,.07), transparent 60%) !important;
  color: var(--bk-dk-text);
}

/* ============================================================
   ПЕРЕКЛЮЧЕНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ (главный рычаг перекраски)
   Семейства определены в tabs.html/part2/part3 на контейнерах;
   здесь бьём специфичностью body:not(...)/html body.dark-theme.
   ============================================================ */
/* --om-*: склад, карточки объектов, нормативка, расходы и др. */
body:not(.dark-theme) {
  --om-primary: var(--bk-or-500);
  --om-bg: var(--bk-cr-50);
  --om-card-bg: #ffffff;
  --om-border: var(--bk-cr-300);
  --om-text: var(--bk-co-900);
  --om-text-muted: var(--bk-co-600);
  --om-input-bg: #ffffff;
  --om-hover: var(--bk-cr-100);
  /* --tr-*: вкладка стажёров */
  --tr-primary: var(--bk-or-500);
  --tr-primary-light: var(--bk-or-300);
  --tr-primary-dark: var(--bk-or-600);
  --tr-bg: transparent;
  --tr-card-bg: #ffffff;
  --tr-border: var(--bk-cr-300);
  --tr-text: var(--bk-co-900);
  --tr-text-muted: var(--bk-co-600);
  /* --ge-*: каталог товаров */
  --ge-primary: var(--bk-or-500);
  --ge-gradient: var(--bk-g-fire);
}
body:not(.dark-theme) .object-management-container {
  --om-primary: var(--bk-or-500);
  --om-bg: var(--bk-cr-50);
  --om-card-bg: #ffffff;
  --om-border: var(--bk-cr-300);
  --om-text: var(--bk-co-900);
  --om-text-muted: var(--bk-co-600);
}
body:not(.dark-theme) .designer-container {
  --do-primary: var(--bk-or-500);
  --do-surface: var(--bk-cr-50);
  --do-border: var(--bk-cr-300);
}
body:not(.dark-theme) .photo-editor-modern {
  --pe-primary: var(--bk-or-500);
  --pe-surface: var(--bk-cr-50);
  --pe-border: var(--bk-cr-300);
}
body:not(.dark-theme) .infographic-container {
  --inf-primary: var(--bk-or-500);
  --inf-surface: var(--bk-cr-50);
}
body:not(.dark-theme) .staff-schedule-container {
  --ss-primary: var(--bk-or-500);
  --ss-surface: #ffffff;
  --ss-surface-alt: var(--bk-cr-50);
}
body:not(.dark-theme) .subs-container {
  --subs-primary: var(--bk-or-500);
  --subs-border: rgba(52, 38, 27, .14);
}
/* тёмное какао для модульных переменных */
html body.dark-theme {
  --om-primary: var(--bk-or-500);
  --om-bg: var(--bk-dk-bg2);
  --om-card-bg: var(--bk-dk-surface);
  --om-border: var(--bk-dk-border);
  --om-text: var(--bk-dk-text);
  --om-text-muted: var(--bk-dk-text2);
  --om-input-bg: var(--bk-dk-bg2);
  --om-hover: var(--bk-dk-surface2);
  --tr-bg: transparent;
  --tr-card-bg: var(--bk-dk-surface);
  --tr-border: var(--bk-dk-border);
  --tr-text: var(--bk-dk-text);
  --tr-text-muted: var(--bk-dk-text2);
}
html body.dark-theme .object-management-container {
  --om-bg: var(--bk-dk-bg2);
  --om-card-bg: var(--bk-dk-surface);
  --om-border: var(--bk-dk-border);
  --om-text: var(--bk-dk-text);
  --om-text-muted: var(--bk-dk-text2);
}

/* ============================================================
   ВКЛАДКИ: главная рабочая поверхность
   (нейтрализует .tab-pane{#fff + dashed} из part3:16462)
   ============================================================ */
html body:not(.dark-theme) .tab-pane {
  background: #ffffff !important;
  border: var(--bk-bd) !important;
  border-radius: var(--bk-r-m) !important;
  box-shadow: var(--bk-shadow-sticker) !important;
}
html body.dark-theme .tab-pane {
  background: var(--bk-dk-surface) !important;
  border: 2px solid var(--bk-dk-border) !important;
  border-radius: var(--bk-r-m) !important;
  box-shadow: 8px 8px 0 rgba(0, 0, 0, .22) !important;
}
/* контент-область прозрачная — кремовое полотно видно вокруг стикера */
html body .main-content-area { background: transparent !important; }
@media (max-width: 768px) {
  html body:not(.dark-theme) .tab-content { background: transparent !important; }
  html body.dark-theme .tab-content { background: transparent !important; }
  html body .tab-pane { box-shadow: none !important; }
}

/* ============================================================
   САЙДБАР + НАВИГАЦИЯ
   ============================================================ */
html body:not(.dark-theme) .sidebar {
  background: linear-gradient(180deg, var(--bk-cr-50), var(--bk-cr-100)) !important;
  border-right: var(--bk-bd) !important;
}
html body.dark-theme .sidebar {
  background: linear-gradient(180deg, var(--bk-dk-bg2), var(--bk-dk-bg)) !important;
  border-right: 2px solid var(--bk-dk-border) !important;
}
html body .nav-group-header {
  font-family: var(--bk-font-b) !important;
  font-weight: 800 !important;
  border-radius: 12px;
}
html body:not(.dark-theme) .nav-group-header { color: var(--bk-co-600) !important; }
html body:not(.dark-theme) .nav-group-header:hover { background: var(--bk-cr-200) !important; color: var(--bk-co-900) !important; }
html body.dark-theme .nav-group-header { color: var(--bk-dk-text2) !important; }
html body.dark-theme .nav-group-header:hover { background: var(--bk-dk-surface2) !important; }
html body .custom-nav-links .nav-link {
  border-radius: 12px !important;
  font-weight: 600 !important;
}
html body:not(.dark-theme) .custom-nav-links .nav-link { color: var(--bk-co-600) !important; }
html body:not(.dark-theme) .custom-nav-links .nav-link:hover { background: var(--bk-cr-200) !important; color: var(--bk-co-900) !important; }
html body .custom-nav-links .nav-link.active,
html body .nav-group-items .nav-link.active {
  background: var(--bk-g-fire) !important;
  color: #ffffff !important;
  box-shadow: 3px 3px 0 rgba(52, 38, 27, .12) !important;
}
html body.dark-theme .custom-nav-links .nav-link { color: var(--bk-dk-text2) !important; }
html body.dark-theme .custom-nav-links .nav-link:hover { background: var(--bk-dk-surface2) !important; color: var(--bk-dk-text) !important; }
/* «ушко» сворачивания сайдбара */
html body .sidebar-toggle-btn { background: var(--bk-g-fire) !important; }

/* ---------- топбар ---------- */
html body .topbar-logo-text { font-family: var(--bk-font-d) !important; font-weight: 700 !important; letter-spacing: -.01em; }
html body:not(.dark-theme) .topbar-logo-copy { color: var(--bk-co-900) !important; }
html body .topbar-logo-crm { color: var(--bk-or-500) !important; }
html body:not(.dark-theme) .kopirka-mobile-header { background: var(--bk-cr-50) !important; border-bottom: var(--bk-bd); }
html body.dark-theme .kopirka-mobile-header { background: linear-gradient(135deg, var(--bk-dk-bg), var(--bk-dk-bg2)) !important; }

/* ============================================================
   КНОПКИ: пилюли (бьём и легаси-блок part3:16470 c orange+dashed)
   ============================================================ */
html body .btn {
  border-radius: 999px !important;
  font-weight: 800 !important;
  font-family: var(--bk-font-b) !important;
  border-style: solid !important;
  transition: transform .12s ease, box-shadow .12s ease, filter .12s ease;
}
html body .btn:hover { transform: translateY(-2px); }
html body .btn:active { transform: translateY(0); }
html body .btn-primary, html body .btn-warning {
  background: var(--bk-g-fire) !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: var(--bk-shadow-soft) !important;
}
html body .btn-success { background: var(--bk-green) !important; border-color: var(--bk-green) !important; color: #fff !important; }
html body .btn-info { background: var(--bk-teal) !important; border-color: var(--bk-teal) !important; color: #fff !important; }
html body .btn-danger { background: #fff !important; border: 2px solid var(--bk-red) !important; color: var(--bk-red) !important; }
html body .btn-danger:hover { background: var(--bk-red-soft) !important; }
html body .btn-secondary, html body .btn-light,
html body .btn-outline-secondary, html body .btn-outline-primary,
html body .btn-outline-warning, html body .btn-outline-success,
html body .btn-outline-info, html body .btn-outline-dark {
  background: #fff !important;
  border: 2px solid var(--bk-cr-300) !important;
  color: var(--bk-co-900) !important;
  box-shadow: var(--bk-shadow-sticker-sm) !important;
}
html body .btn-outline-success { color: #1d7c37 !important; }
html body .btn-outline-primary { color: var(--bk-or-600) !important; }
html body .btn-secondary:hover, html body .btn-light:hover,
html body .btn-outline-secondary:hover, html body .btn-outline-primary:hover,
html body .btn-outline-warning:hover { background: var(--bk-cr-200) !important; }
html body .btn-outline-danger { background: #fff !important; border: 2px solid var(--bk-red) !important; color: var(--bk-red) !important; }
html body .btn-outline-danger:hover { background: var(--bk-red-soft) !important; }
html body .btn-sm, html body .btn-group-sm > .btn { box-shadow: none !important; }
html body.dark-theme .btn-secondary, html body.dark-theme .btn-light,
html body.dark-theme .btn-outline-secondary, html body.dark-theme .btn-outline-primary,
html body.dark-theme .btn-outline-warning, html body.dark-theme .btn-outline-success,
html body.dark-theme .btn-outline-info, html body.dark-theme .btn-outline-dark {
  background: var(--bk-dk-surface) !important;
  border-color: var(--bk-dk-border) !important;
  color: var(--bk-dk-text) !important;
  box-shadow: none !important;
}
html body.dark-theme .btn-danger, html body.dark-theme .btn-outline-danger { background: transparent !important; }
/* om-кнопки (склад/объекты) */
html body .om-btn { border-radius: 999px !important; font-weight: 800 !important; }
html body .om-btn-primary { background: var(--bk-g-fire) !important; }

/* ============================================================
   ФОРМЫ (нейтрализует dashed-инпуты легаси)
   ============================================================ */
html body .form-control, html body .form-select, html body textarea.form-control {
  border-radius: var(--bk-r-s) !important;
  border: 2px solid var(--bk-cr-300) !important;
  font-family: var(--bk-font-b) !important;
  background-color: #fff;
}
html body .form-control:focus, html body .form-select:focus {
  border-color: var(--bk-or-500) !important;
  box-shadow: 0 0 0 4px rgba(237, 129, 40, .18) !important;
}
html body .form-check-input:checked { background-color: var(--bk-or-500) !important; border-color: var(--bk-or-500) !important; }
html body.dark-theme .form-control, html body.dark-theme .form-select,
html body.dark-theme textarea.form-control {
  background-color: var(--bk-dk-bg2) !important;
  border: 2px solid var(--bk-dk-border) !important;
  color: var(--bk-dk-text) !important;
}
html body.dark-theme .form-control::placeholder { color: var(--bk-co-400); }
/* form-floating: плейсхолдер ПРОЗРАЧНЫЙ (его роль играет плавающий лейбл) —
   иначе в тёмной теме плейсхолдер вылезал из-под лейбла и «налезал» (баг админки) */
html body .form-floating > .form-control::placeholder,
html body.dark-theme .form-floating > .form-control::placeholder,
html body .form-floating > .form-control-plaintext::placeholder { color: transparent !important; }

/* ============================================================
   КАРТОЧКИ / МОДАЛКИ / ТАБЛИЦЫ / БЕЙДЖИ
   ============================================================ */
html body:not(.dark-theme) .card, html body:not(.dark-theme) .white-block {
  background: #fff !important;
  border: var(--bk-bd) !important;
  border-radius: var(--bk-r-m) !important;
  box-shadow: var(--bk-shadow-sticker-sm) !important;
}
html body.dark-theme .card, html body.dark-theme .white-block {
  background: var(--bk-dk-surface) !important;
  border: 2px solid var(--bk-dk-border) !important;
  border-radius: var(--bk-r-m) !important;
  color: var(--bk-dk-text) !important;
}
html body .om-card {
  border: var(--bk-bd) !important;
  border-radius: 16px !important;
  box-shadow: var(--bk-shadow-sticker-sm) !important;
}
html body.dark-theme .om-card { border-color: var(--bk-dk-border) !important; box-shadow: none !important; }
html body .om-card-title { font-weight: 800 !important; }
html body .om-stat-card { border: var(--bk-bd) !important; border-radius: 16px !important; }
html body.dark-theme .om-stat-card { border-color: var(--bk-dk-border) !important; }
html body .om-stat-value { font-family: var(--bk-font-m) !important; font-variant-numeric: tabular-nums; }
html body .om-header h2 { font-family: var(--bk-font-d) !important; font-weight: 700 !important; letter-spacing: -.01em; }

html body .modal-content {
  border-radius: var(--bk-r-m) !important;
  border: var(--bk-bd) !important;
  border-top: var(--bk-bd) !important;
  box-shadow: var(--bk-shadow-sticker) !important;
}
html body .modal-header { border-bottom: 2px dashed var(--bk-cr-300) !important; }
html body .modal-footer { border-top: 2px dashed var(--bk-cr-300) !important; }
html body.dark-theme .modal-content {
  background: var(--bk-dk-surface) !important;
  border: 2px solid var(--bk-dk-border) !important;
  color: var(--bk-dk-text) !important;
  box-shadow: 8px 8px 0 rgba(0, 0, 0, .25) !important;
}
html body.dark-theme .modal-header, html body.dark-theme .modal-footer { border-color: var(--bk-dk-border) !important; }
html body.dark-theme .modal-title { color: var(--bk-or-300) !important; }

html body:not(.dark-theme) .table thead th {
  font-size: 11.5px !important;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--bk-co-400) !important;
  background: var(--bk-cr-50) !important;
  border-bottom: var(--bk-bd) !important;
}
html body:not(.dark-theme) .table td { border-color: var(--bk-cr-200); }
html body:not(.dark-theme) .table-striped > tbody > tr:nth-of-type(odd) > * { background-color: var(--bk-cr-50); box-shadow: none; }
html body:not(.dark-theme) .table-hover > tbody > tr:hover > * { background-color: var(--bk-cr-200) !important; box-shadow: none; }

html body .badge { border-radius: 999px !important; font-weight: 800 !important; }
html body:not(.dark-theme) .badge.bg-success { background: var(--bk-green-soft) !important; color: #1d7c37 !important; }
html body:not(.dark-theme) .badge.bg-danger { background: var(--bk-red-soft) !important; color: #b02e32 !important; }
html body:not(.dark-theme) .badge.bg-warning { background: var(--bk-amber-soft) !important; color: #9a6b08 !important; }
html body:not(.dark-theme) .badge.bg-info { background: var(--bk-teal-soft) !important; color: #0d7d72 !important; }
html body:not(.dark-theme) .badge.bg-secondary { background: var(--bk-cr-200) !important; color: var(--bk-co-600) !important; }
html body .badge.bg-primary { background: var(--bk-g-fire) !important; color: #fff !important; }

html body .alert { border-radius: 14px !important; border-width: 2px !important; }

/* ============================================================
   СКРОЛЛБАРЫ
   ============================================================ */
html body:not(.dark-theme)::-webkit-scrollbar-track,
html body:not(.dark-theme) ::-webkit-scrollbar-track { background: var(--bk-cr-100) !important; }
html body:not(.dark-theme)::-webkit-scrollbar-thumb,
html body:not(.dark-theme) ::-webkit-scrollbar-thumb {
  background: var(--bk-cr-300) !important;
  border-radius: 999px !important;
  border: 2px solid var(--bk-cr-100) !important;
}
html body:not(.dark-theme) ::-webkit-scrollbar-thumb:hover { background: var(--bk-or-300) !important; }
html body.dark-theme::-webkit-scrollbar-track,
html body.dark-theme ::-webkit-scrollbar-track { background: var(--bk-dk-bg2) !important; }
html body.dark-theme::-webkit-scrollbar-thumb,
html body.dark-theme ::-webkit-scrollbar-thumb { background: var(--bk-dk-border) !important; border-radius: 999px !important; }

/* ============================================================
   ТОЧЕЧНО: тёплые акценты модулей (вместо #FF6600-зоопарка)
   ============================================================ */
html body .wh-header, html body .oc-header { background: var(--bk-g-fire) !important; }
html body:not(.dark-theme) .hr-card, html body:not(.dark-theme) .hr-dash-card,
html body:not(.dark-theme) .hr-chart-container, html body:not(.dark-theme) .hr-trainee-card {
  border: var(--bk-bd) !important;
}
html body:not(.dark-theme) .ge-hall-card, html body:not(.dark-theme) .ge-equip-card {
  border: var(--bk-bd) !important;
}

/* ============================================================
   АДМИНКА (admin_panel.html: свои :root-переменные)
   ============================================================ */
body:not(.dark-theme) {
  --primary: var(--bk-or-500);
  --primary-dark: var(--bk-or-600);
  --primary-light: var(--bk-or-300);
  --primary-glow: rgba(237, 129, 40, .3);
  --bg-main: var(--bk-cr-100);
  --bg-card: #ffffff;
  --bg-section: var(--bk-cr-50);
  --text-main: var(--bk-co-900);
  --text-muted: var(--bk-co-600);
  --border-color: var(--bk-cr-300);
  --card-header-bg: linear-gradient(135deg, var(--bk-cr-200) 0%, var(--bk-or-300) 100%);
}
html body.dark-theme {
  --primary: var(--bk-or-500);
  --primary-dark: var(--bk-or-700);
  --primary-light: var(--bk-or-300);
  --bg-main: var(--bk-dk-bg);
  --bg-card: var(--bk-dk-surface);
  --bg-section: var(--bk-dk-bg2);
  --text-main: var(--bk-dk-text);
  --text-muted: var(--bk-dk-text2);
  --border-color: var(--bk-dk-border);
  --card-header-bg: linear-gradient(135deg, var(--bk-dk-surface2), var(--bk-dk-bg2));
}
html body .admin-header { background: var(--bk-g-fire) !important; }
html body .admin-header h1, html body .admin-header h2 { font-family: var(--bk-font-d) !important; font-weight: 700 !important; }
html body .section-card { border-radius: 16px !important; border: var(--bk-bd) !important; box-shadow: var(--bk-shadow-sticker-sm) !important; }
html body.dark-theme .section-card { border-color: var(--bk-dk-border) !important; box-shadow: none !important; }

/* ============================================================
   ПАНЕЛЬ ФРАНШИЗЫ (admin_panel_tenant.html: body.dark + свои vars;
   --accent НЕ трогаем — это цвет конкретного ИП из Jinja)
   ============================================================ */
body:not(.dark) {
  --bg: var(--bk-cr-100);
  --card: #ffffff;
  --ink: var(--bk-co-900);
  --muted: var(--bk-co-600);
  --line: var(--bk-cr-300);
}
html body.dark {
  --bg: var(--bk-dk-bg);
  --card: var(--bk-dk-surface);
  --ink: var(--bk-dk-text);
  --muted: var(--bk-dk-text2);
  --line: var(--bk-dk-border);
}

/* ============================================================
   ЛОГИН (login.html: хардкод #ff9800 → бренд)
   ============================================================ */
html body .login-form {
  background: #ffffff !important;
  border: var(--bk-bd) !important;
  border-radius: var(--bk-r-m) !important;
  box-shadow: var(--bk-shadow-sticker) !important;
}
html body .login-form label { color: var(--bk-co-600) !important; font-weight: 700; }
html body .page-content h2 {
  color: var(--bk-co-900) !important;
  font-family: var(--bk-font-d) !important;
  font-weight: 700 !important;
}
html body .pin-login-btn {
  background: var(--bk-g-fire) !important;
  border-color: transparent !important;
  border-radius: 999px !important;
  font-weight: 800 !important;
}
html body .fox-bubble { border: var(--bk-bd) !important; box-shadow: var(--bk-shadow-sticker-sm) !important; color: var(--bk-co-900) !important; }

/* ============================================================
   ВИДЖЕТ ЧАТА: только рамка под бренд (внутренности — инлайн, не трогаем)
   ============================================================ */
html body:not(.dark-theme) #darya-block { border-color: var(--bk-cr-300) !important; }

/* ============================================================
   МОБИЛЬНЫЙ ПАРИТЕТ: лёгкие тени, без двойных рамок
   ============================================================ */
@media (max-width: 768px) {
  /* ── МОБИЛКА: «жирная чёрная обводка» = жёсткие offset-тени (sticker 5px 5px 0)
     + 2px-канты карточек/кнопок. Убираем → мягкий тонкий пунктир.
     ВАЖНО про специфичность: десктоп-правила карточек = html body:not(.dark-theme) .card
     (0,2,2). Поэтому мобильные правила ТОЖЕ темо-скоупим (0,2,2), иначе не перебьют
     и тень/кант остаются — старый баг «обводка не ушла». ── */

  /* 1) долой жёсткие offset-тени со всего на мобиле */
  html body .btn, html body .om-btn, html body .modal-content,
  html body:not(.dark-theme) .card, html body:not(.dark-theme) .white-block,
  html body:not(.dark-theme) .om-card, html body:not(.dark-theme) .om-stat-card,
  html body:not(.dark-theme) [class*="-card"], html body:not(.dark-theme) [class*="-panel"],
  html body:not(.dark-theme) [class*="-add-btn"], html body:not(.dark-theme) [class*="-bar"] {
    box-shadow: none !important;
  }

  /* 2) карточки/панели/контейнеры — мягкий тонкий пунктир кремом (вместо жирного канта) */
  html body:not(.dark-theme) .card, html body:not(.dark-theme) .white-block,
  html body:not(.dark-theme) .om-card, html body:not(.dark-theme) .om-stat-card,
  html body:not(.dark-theme) .tab-pane, html body:not(.dark-theme) .panel,
  html body:not(.dark-theme) .panel-default, html body:not(.dark-theme) .list-group-item,
  html body:not(.dark-theme) .table-bordered, html body:not(.dark-theme) .table-bordered td,
  html body:not(.dark-theme) .table-bordered th,
  html body:not(.dark-theme) [class*="-card"], html body:not(.dark-theme) [class*="-panel"],
  html body:not(.dark-theme) [class*="-box"] {
    border-width: 1px !important;
    border-style: dashed !important;
    border-color: var(--bk-cr-300) !important;
  }
  html body.dark-theme .card, html body.dark-theme .white-block,
  html body.dark-theme .om-card, html body.dark-theme .om-stat-card,
  html body.dark-theme .tab-pane, html body.dark-theme .panel,
  html body.dark-theme .list-group-item, html body.dark-theme [class*="-card"],
  html body.dark-theme [class*="-panel"], html body.dark-theme [class*="-box"] {
    box-shadow: none !important;
    border-width: 1px !important;
    border-style: dashed !important;
    border-color: var(--bk-dk-border) !important;
  }

  /* 3) кнопки-пилюли — без канта вовсе (фон сам виден); убирает 3px-кольцо currentColor */
  html body .btn,
  html body [class*="-add-btn"], html body .om-btn,
  html body [class*="-btn-primary"], html body [class*="-btn-check"],
  html body [class*="-btn-help"], html body [class*="-btn-hint"] {
    border-color: transparent !important;
  }
  /* …но осмысленные outline/secondary-кнопки оставляем с мягким тонким кантом */
  html body .btn-outline-danger, html body .btn-danger { border-color: var(--bk-red) !important; }
  html body .btn-secondary, html body .btn-light,
  html body .btn-outline-secondary, html body .kb-add-btn-secondary {
    border-color: var(--bk-cr-300) !important;
  }
}

/* ============================================================
   ЛЕГАСИ-ДЕКОРАЦИИ ФОНА: ВЫКЛ (у бренда свои тихие радиальные блики;
   старые «плавные линии» дрались с какао-темой — фидбек юзера)
   ============================================================ */
html body .flowing-lines-container,
html body .mobile-animated-lines,
html body .header-overlay-line { display: none !important; }

/* ============================================================
   МАСКОТ КОПИК: подвал сайдбара + лоадер вкладок
   ============================================================ */
#bk-sidebar-kopik { display: flex; justify-content: center; padding: 2px 0 0; cursor: pointer; user-select: none; }
#bk-sidebar-kopik svg { opacity: .96; }
.bk-kopik-wrap { display: flex; flex-direction: column; align-items: center; gap: 7px; }
.bk-kopik-bubble {
  max-width: 200px;
  background: var(--bk-cr-50);
  border: 2px dashed var(--bk-cr-300);
  border-radius: 12px;
  padding: 7px 10px;
  font-size: 11.5px; line-height: 1.35; font-weight: 600;
  color: var(--bk-co-600); text-align: center;
  position: relative;
  animation: bk-bubble-in .35s ease;
}
.bk-kopik-bubble::after {
  content: ''; position: absolute; left: 50%; bottom: -7px;
  width: 12px; height: 12px; transform: translateX(-50%) rotate(45deg);
  background: var(--bk-cr-50);
  border-right: 2px dashed var(--bk-cr-300);
  border-bottom: 2px dashed var(--bk-cr-300);
}
@keyframes bk-bubble-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
body.dark-theme .bk-kopik-bubble { background: var(--bk-dk-bg2); border-color: var(--bk-dk-border); color: var(--bk-dk-text2); }
body.dark-theme .bk-kopik-bubble::after { background: var(--bk-dk-bg2); border-color: var(--bk-dk-border); }
.bk-loader { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.bk-loader-cap { font-weight: 700; font-size: .9rem; color: var(--bk-co-600); }
body.dark-theme .bk-loader-cap { color: var(--bk-dk-text2); }
.bk-loader-bar {
  width: 180px; height: 12px; border-radius: 999px;
  background: var(--bk-cr-200); border: 1px solid var(--bk-cr-300); overflow: hidden;
}
.bk-loader-bar i {
  display: block; height: 100%; width: 46%; border-radius: 999px;
  background: repeating-linear-gradient(45deg, var(--bk-or-300) 0 10px, var(--bk-or-500) 10px 20px);
  animation: bk-slide 1.1s linear infinite;
}
@keyframes bk-slide { from { transform: translateX(-30%); } to { transform: translateX(160%); } }
body.dark-theme .bk-loader-bar { background: var(--bk-dk-bg2); border-color: var(--bk-dk-border); }

/* ============================================================
   ДРОП-ЗОНЫ (зоны загрузки файлов) — добиваем серые легаси
   #ccc / #ddd / #ced4da / #c0c0c0 / #E2E8F0 → крем + огонь.
   Word/Excel/терминология не трогаем — фирменные цвета инструментов.
   ============================================================ */
html body .drop-zone,
html body .dropzone,
html body .sn-import-upload-zone,
html body .import-upload-zone,
html body .om-import-upload-zone,
html body .leaves-import-dropzone,
html body .reviews-import-dropzone,
html body .ti-drop-zone,
html body .oc-dropzone,
html body .ss-needs-dropzone,
html body .pdf-converter-pro .pdf-drop-zone-pro {
  background: var(--bk-cr-50) !important;
  border: 2px dashed var(--bk-or-300) !important;
  border-radius: var(--bk-r-m) !important;
  color: var(--bk-co-600) !important;
}
html body .drop-zone:hover, html body .drop-zone:focus, html body .drop-zone.dragover,
html body .dropzone:hover, html body .dropzone.dragover,
html body .sn-import-upload-zone:hover, html body .sn-import-upload-zone.dragover,
html body .import-upload-zone:hover, html body .import-upload-zone.dragover,
html body .om-import-upload-zone:hover, html body .om-import-upload-zone.dragover,
html body .leaves-import-dropzone:hover, html body .leaves-import-dropzone.dragover,
html body .reviews-import-dropzone:hover, html body .reviews-import-dropzone.dragover,
html body .ti-drop-zone:hover, html body .ti-drop-zone.dragover,
html body .oc-dropzone:hover, html body .oc-dropzone.dragover,
html body .ss-needs-dropzone:hover, html body .ss-needs-dropzone.dragover,
html body .pdf-converter-pro .pdf-drop-zone-pro:hover,
html body .pdf-converter-pro .pdf-drop-zone-pro.dragover {
  background: var(--bk-cr-100) !important;
  border-color: var(--bk-or-500) !important;
  color: var(--bk-co-900) !important;
}
html body .drop-zone:focus { box-shadow: 0 0 0 3px rgba(237, 129, 40, .22) !important; }

/* внутренности зон: счётчики, иконки, подписи */
html body .drop-zone .file-info,
html body #file-count { color: var(--bk-co-600) !important; }
html body .pdf-converter-pro .pdf-drop-zone-pro .drop-icon { color: var(--bk-or-500) !important; }
html body .pdf-converter-pro .pdf-drop-zone-pro .file-counter {
  background: var(--bk-cr-200) !important;
  color: var(--bk-co-900) !important;
}

/* тёмная тема: какао вместо серого графита */
html body.dark-theme .drop-zone,
html body.dark-theme .dropzone,
html body.dark-theme .sn-import-upload-zone,
html body.dark-theme .import-upload-zone,
html body.dark-theme .om-import-upload-zone,
html body.dark-theme .leaves-import-dropzone,
html body.dark-theme .reviews-import-dropzone,
html body.dark-theme .ti-drop-zone,
html body.dark-theme .oc-dropzone,
html body.dark-theme .ss-needs-dropzone,
html body.dark-theme .pdf-converter-pro .pdf-drop-zone-pro {
  background: var(--bk-dk-bg2) !important;
  border: 2px dashed rgba(246, 151, 63, .5) !important;
  color: var(--bk-dk-text2) !important;
}
html body.dark-theme .drop-zone:hover, html body.dark-theme .drop-zone:focus, html body.dark-theme .drop-zone.dragover,
html body.dark-theme .dropzone:hover, html body.dark-theme .dropzone.dragover,
html body.dark-theme .sn-import-upload-zone:hover, html body.dark-theme .sn-import-upload-zone.dragover,
html body.dark-theme .import-upload-zone:hover, html body.dark-theme .import-upload-zone.dragover,
html body.dark-theme .om-import-upload-zone:hover, html body.dark-theme .om-import-upload-zone.dragover,
html body.dark-theme .leaves-import-dropzone:hover, html body.dark-theme .leaves-import-dropzone.dragover,
html body.dark-theme .reviews-import-dropzone:hover, html body.dark-theme .reviews-import-dropzone.dragover,
html body.dark-theme .ti-drop-zone:hover, html body.dark-theme .ti-drop-zone.dragover,
html body.dark-theme .oc-dropzone:hover, html body.dark-theme .oc-dropzone.dragover,
html body.dark-theme .ss-needs-dropzone:hover, html body.dark-theme .ss-needs-dropzone.dragover,
html body.dark-theme .pdf-converter-pro .pdf-drop-zone-pro:hover,
html body.dark-theme .pdf-converter-pro .pdf-drop-zone-pro.dragover {
  background: var(--bk-dk-surface) !important;
  border-color: var(--bk-or-300) !important;
  color: var(--bk-dk-text) !important;
}
html body.dark-theme .drop-zone .file-info,
html body.dark-theme #file-count { color: var(--bk-or-300) !important; }
html body.dark-theme .pdf-converter-pro .pdf-drop-zone-pro .drop-icon { color: var(--bk-or-300) !important; }
html body.dark-theme .pdf-converter-pro .pdf-drop-zone-pro .file-counter {
  background: var(--bk-dk-surface2) !important;
  color: var(--bk-dk-text) !important;
}

/* ============================================================
   АДМИН-ЧИПЫ «Настройки системы»: их :hover красил шрифт белым,
   а фон оставался кремовым (наш) — нечитаемо. Ховер = огонь + белый.
   ============================================================ */
html body .admin-setting-btn:hover {
  background: var(--bk-g-fire) !important;
  color: #fff !important;
  border-color: transparent !important;
}
html body .admin-setting-btn:hover i { color: #fff !important; }
html body.dark-theme .admin-setting-btn:hover {
  background: var(--bk-g-fire) !important;
  color: #fff !important;
  border-color: transparent !important;
}

/* prefers-reduced-motion: не навязываем transform-анимации */
@media (prefers-reduced-motion: reduce) {
  html body .btn:hover { transform: none; }
}
