
/* =============================================
   LIGHT THEME — Auditara (default / :root)
   ============================================= */
:root {
  color-scheme: light;
  /* Surfaces */
  --bg:       #f1f5f9;
  --card:     #ffffff;
  --surface:  #f8fafc;
  --surface-2:#f1f5f9;
  /* Text */
  --fg:     #1e293b;
  --fg-2:   #0f172a;
  --muted:  #64748b;
  --muted-2:#94a3b8;
  --muted-3:#7c8fa6;
  --muted-4:#8e9eb5;
  --muted-5:#e2e8f0;
  /* Синоніми, які вже вживалися в стилях, але ніде не були визначені.
     Без визначення й без запасного значення властивість просто відкидається:
     поля вводу лишалися без тла, а текст брав колір батька. Значення не
     вигадані — це ті самі кольори палітри під іншими іменами. */
  --text:     var(--fg);
  --text-1:   var(--fg);
  --fg-muted: var(--muted);
  --input-bg: var(--surface);
  /* Brand */
  --brand:    #6366f1;
  --brand-2:  #4f46e5;
  --brand-bg: #eef2ff;
  --tab-active-label: #1e1b4b;
  --tpl-card-bg:           var(--card);
  --tpl-card-border:       var(--border-2);
  --tpl-cat-bg:            rgba(99,102,241,.12);
  --tpl-cat-color:         var(--brand-2);
  --tpl-tag-bg:            var(--surface);
  --tpl-tag-color:         var(--text);
  --tpl-btn-hover:         rgba(99,102,241,.2);
  --tpl-btn-danger-bg:     rgba(239,68,68,.1);
  --tpl-btn-danger-color:  #dc2626;
  --tpl-btn-danger-hover:  rgba(239,68,68,.2);
  /* Border */
  --border:   #e2e8f0;
  --border-2: #cbd5e1;
  /* Warning */
  --warning-bg:     #fffbeb;
  --warning-border: #fcd34d;
  --warning-text:   #92400e;
  /* Shadow */
  --shadow-sm:      0 1px 2px rgba(0,0,0,.06);
  --shadow-md:      0 8px 24px rgba(0,0,0,.10);
  --shadow-lg:      0 24px 60px rgba(0,0,0,.13);
  --shadow-overlay: rgba(15,23,42,.45);
  /* Status colors */
  --c-pending-bg:  #fffbeb;  --c-pending:  #d97706;
  --c-info-bg:     #fef2f2;  --c-info:     #dc2626;
  --c-uploaded-bg: #eff6ff;  --c-uploaded: #2563eb;
  --c-review-bg:   #f5f3ff;  --c-review:   #7c3aed;
  --c-accepted-bg: #f0fdf4;  --c-accepted: #16a34a;
  --c-rejected-bg: #fef2f2;  --c-rejected: #dc2626;
  --c-orange-bg:   #fff7ed;  --c-orange:   #ea580c;
  --c-red-bg:      #fef2f2;  --c-red:      #dc2626;
  /* Progress */
  --progress-bg: #e2e8f0;
  /* UI tokens */
  --ui-bg:       #f1f5f9;
  --ui-surface:  #ffffff;
  --ui-text:     #1e293b;
  --ui-muted:    #64748b;
  --ui-primary:  #6366f1;
  --ui-border:   rgba(0,0,0,.08);
  --ui-shadow-sm:0 1px 2px rgba(0,0,0,.06);
  --ui-shadow-lg:0 12px 30px rgba(0,0,0,.1);
  /* Table */
  --tbl-border:      #e2e8f0;
  --tbl-border-head: #c7d2fe;
  --tbl-bg-head:     #eef2ff;
  --tbl-color-head:  #4f46e5;
  --tbl-bg-row:      #ffffff;
  --tbl-bg-row-alt:  #f8fafc;
  --tbl-bg-hover:    #f1f5f9;
  --tbl-color-row:   #1e293b;
  --tbl-color-muted: #64748b;
  --tbl-shadow:      0 4px 16px rgba(0,0,0,.06);
  /* DATEV table */
  --datev-border:      #e2e8f0;
  --datev-border-head: #c7d2fe;
  --datev-bg-head:     #eef2ff;
  --datev-color-head:  #4f46e5;
  --datev-bg-row:      #ffffff;
  --datev-bg-row-alt:  #f8fafc;
  --datev-bg-hover:    #f1f5f9;
  --datev-color-row:   #1e293b;
}

/* =============================================
   DARK THEME — Auditara
   Переключается через data-theme="dark" на <html>
   ============================================= */

[data-theme="dark"] {
  color-scheme: dark;

  /* Surfaces */
  --bg:       #0f1117;
  --card:     #1a1d27;
  --surface:  #1e2130;
  --surface-2:#252838;

  /* Text */
  --fg:     #e2e8f0;
  --fg-2:   #f1f5f9;
  --muted:  #94a3b8;
  --muted-2:#64748b;
  --muted-3:#7c8fa6;
  --muted-4:#8e9eb5;
  --muted-5:#334155;

  /* Brand */
  --brand:    #6366f1;
  --brand-2:  #818cf8;
  --brand-bg: #1e1b4b;
  --tab-active-label: #fff;
  --tpl-card-bg:           #1e2235;
  --tpl-card-border:       rgba(255,255,255,.08);
  --tpl-cat-bg:            rgba(99,102,241,.15);
  --tpl-cat-color:         #818cf8;
  --tpl-tag-bg:            rgba(255,255,255,.05);
  --tpl-tag-color:         #e2e8f0;
  --tpl-btn-hover:         rgba(99,102,241,.28);
  --tpl-btn-danger-bg:     rgba(239,68,68,.12);
  --tpl-btn-danger-color:  #f87171;
  --tpl-btn-danger-hover:  rgba(239,68,68,.25);

  /* Border */
  --border:   #2d3148;
  --border-2: #323654;
  /* Warning */
  --warning-bg:     #2d2500;
  --warning-border: #854d0e;
  --warning-text:   #fde68a;

  /* Shadow */
  --shadow-sm:      0 1px 2px rgba(0,0,0,.3);
  --shadow-md:      0 8px 24px rgba(0,0,0,.4);
  --shadow-lg:      0 24px 60px rgba(0,0,0,.5);
  --shadow-overlay: rgba(0,0,0,.7);

  /* Status colors — чуть приглушённее для тёмного фона */
  --c-pending-bg:  #2d2008;  --c-pending:  #fbbf24;
  --c-info-bg:     #2d0a0a;  --c-info:     #f87171;
  --c-uploaded-bg: #0a1628;  --c-uploaded: #60a5fa;
  --c-review-bg:   #1a0f3d;  --c-review:   #a78bfa;
  --c-accepted-bg: #052e16;  --c-accepted: #4ade80;
  --c-rejected-bg: #2d0a0a;  --c-rejected: #f87171;
  --c-orange-bg:   #2d1200;  --c-orange:   #fb923c;
  --c-red-bg:      #2d0a0a;  --c-red:      #f87171;

  /* Progress */
  --progress-bg: #2d3148;

  /* UI tokens */
  --ui-bg:       #0f1117;
  --ui-surface:  #1a1d27;
  --ui-text:     #e2e8f0;
  --ui-muted:    #94a3b8;
  --ui-primary:  #6366f1;
  --ui-border:   rgba(255,255,255,.07);
  --ui-shadow-sm:0 1px 2px rgba(0,0,0,.3);
  --ui-shadow-lg:0 12px 30px rgba(0,0,0,.4);

  /* Table */
  --tbl-border:      #2d3148;
  --tbl-border-head: #3d3f6e;
  --tbl-bg-head:     #1e1b4b;
  --tbl-color-head:  #818cf8;
  --tbl-bg-row:      #1a1d27;
  --tbl-bg-row-alt:  #1e2130;
  --tbl-bg-hover:    #252838;
  --tbl-color-row:   #e2e8f0;
  --tbl-color-muted: #94a3b8;
  --tbl-shadow:      0 4px 16px rgba(0,0,0,.3);

  /* DATEV table */
  --datev-border:      #2d3148;
  --datev-border-head: #3d3f6e;
  --datev-bg-head:     #1e1b4b;
  --datev-color-head:  #818cf8;
  --datev-bg-row:      #1a1d27;
  --datev-bg-row-alt:  #1e2130;
  --datev-bg-hover:    #252838;
  --datev-color-row:   #e2e8f0;
}

/* ---- Общие переопределения для тёмной темы ---- */

[data-theme="dark"] body {
  background: var(--bg);
  color: var(--fg);
}

[data-theme="dark"] .card,
[data-theme="dark"] .surface,
[data-theme="dark"] .section-card,
[data-theme="dark"] .security-card,
[data-theme="dark"] .nav-card {
  background: var(--card) !important;
  border-color: var(--border) !important;
  color: var(--fg) !important;
}

[data-theme="dark"] .nav-card.is-active {
  background: #1e1b4b !important;
}

[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] select,
[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select {
  background: #252838 !important;
  border-color: var(--border) !important;
  color: var(--fg) !important;
}

[data-theme="dark"] input::placeholder,
[data-theme="dark"] textarea::placeholder {
  color: var(--muted) !important;
}

[data-theme="dark"] .form-label {
  color: var(--fg-2) !important;
}

/* Модальные окна */
[data-theme="dark"] .ds-modal,
[data-theme="dark"] .ds-modal-overlay {
  background: rgba(0,0,0,.7) !important;
}

[data-theme="dark"] .ds-modal {
  background: var(--card) !important;
  border-color: var(--border) !important;
  color: var(--fg) !important;
}

/* Dropdown */
[data-theme="dark"] .ds-dropdown {
  background: var(--card) !important;
  border-color: var(--border) !important;
}

[data-theme="dark"] .ds-dropdown-item {
  color: var(--fg) !important;
}

[data-theme="dark"] .ds-dropdown-item:hover {
  background: var(--surface-2) !important;
}

/* Таблицы */
[data-theme="dark"] .ds-list-head {
  background: var(--tbl-bg-head) !important;
  border-color: var(--tbl-border-head) !important;
  color: var(--tbl-color-head) !important;
}

[data-theme="dark"] .ds-row {
  background: var(--tbl-bg-row) !important;
  border-color: var(--tbl-border) !important;
  color: var(--tbl-color-row) !important;
}

[data-theme="dark"] .ds-row:hover {
  background: var(--tbl-bg-hover) !important;
}

[data-theme="dark"] .ds-row-cell {
  color: var(--tbl-color-muted) !important;
}

/* Тулбар фильтров */
[data-theme="dark"] .ds-toolbar {
  background: var(--card) !important;
  border-color: var(--border) !important;
}

[data-theme="dark"] .ds-filter-btn {
  background: var(--surface) !important;
  border-color: var(--border) !important;
  color: var(--muted-4) !important;
}

[data-theme="dark"] .ds-filter-btn.active {
  background: var(--brand-bg) !important;
  color: var(--brand-2) !important;
  border-color: var(--brand) !important;
}

/* Поиск */
[data-theme="dark"] .ds-search {
  background: var(--surface) !important;
  border-color: var(--border) !important;
}

[data-theme="dark"] .ds-search input {
  background: transparent !important;
  color: var(--fg) !important;
}

/* Чат */
[data-theme="dark"] .dok-chat-messages {
  background: var(--surface) !important;
}

[data-theme="dark"] .dok-msg-staff {
  background: #1e1b4b !important;
  color: var(--fg) !important;
}

[data-theme="dark"] .dok-msg-client {
  background: var(--surface-2) !important;
  color: var(--fg) !important;
}

/* Header */
[data-theme="dark"] .site-header {
  background: linear-gradient(180deg, #243060 0%, #1a2448 100%) !important;
  border-bottom-color: var(--border) !important;
}

/* Левая панель навигации дашборда */
[data-theme="dark"] .dash-left {
  border-right-color: var(--border) !important;
}

/* Toast */
[data-theme="dark"] .ds-toast {
  color: var(--fg) !important;
}

/* Статистика */
[data-theme="dark"] .ds-stats .ds-stat-card {
  background: var(--card) !important;
  border-color: var(--border) !important;
}

/* Scrollbar */
[data-theme="dark"] ::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
[data-theme="dark"] ::-webkit-scrollbar-track {
  background: var(--surface);
}
[data-theme="dark"] ::-webkit-scrollbar-thumb {
  background: var(--border-2);
  border-radius: 3px;
}

/* Левая навигация — заголовки карточек */
[data-theme="dark"] .nav-title {
  color: var(--fg) !important;
}
[data-theme="dark"] .nav-desc {
  color: var(--muted) !important;
}
[data-theme="dark"] .nav-card .nav-title {
  color: #e2e8f0 !important;
}
/* Welcome секция */
[data-theme="dark"] .dash-welcome,
[data-theme="dark"] .welcome-section {
  background: linear-gradient(135deg, #1e2130, #252838) !important;
  color: var(--fg) !important;
}
/* Stat cards */
[data-theme="dark"] .dok-counter,
[data-theme="dark"] .stat-card,
[data-theme="dark"] .overview-stat {
  background: var(--card) !important;
  border-color: var(--border) !important;
  color: var(--fg) !important;
}

/* Разделители */
[data-theme="dark"] hr,
[data-theme="dark"] .border-top,
[data-theme="dark"] .border-bottom {
  border-color: var(--border) !important;
}

/* Текстовые мутированные */
[data-theme="dark"] .text-muted,
[data-theme="dark"] .text-secondary {
  color: var(--muted) !important;
}

/* Кнопка переключения темы */
.theme-toggle {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--fg);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .2s ease;
  font-size: 1rem;
}

.theme-toggle:hover {
  background: var(--surface-2);
  transform: rotate(20deg);
}

/* ---- Nav cards ---- */
[data-theme="dark"] .nav-card {
  background: var(--card) !important;
  border-color: var(--border) !important;
}
[data-theme="dark"] .nav-card:hover {
  background: var(--surface-2) !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.3) !important;
}
[data-theme="dark"] .nav-card.is-active {
  background: linear-gradient(180deg, #1e1b4b, #1a1840) !important;
}
[data-theme="dark"] .nav-card .nav-title {
  color: var(--fg) !important;
}
[data-theme="dark"] .nav-card .nav-desc {
  color: var(--muted) !important;
}
[data-theme="dark"] .nav-card .nav-icon {
  color: var(--brand-2) !important;
}
[data-theme="dark"] .dashboard .nav-card {
  background: var(--card) !important;
}

/* ---- Filter buttons ---- */
[data-theme="dark"] .ds-filter-btn {
  background: var(--surface) !important;
  border-color: var(--border-2) !important;
  color: var(--muted-4) !important;
}
[data-theme="dark"] .ds-filter-btn:hover,
[data-theme="dark"] .ds-filter-btn.active {
  background: var(--brand-bg) !important;
  border-color: var(--brand-2) !important;
  color: var(--brand-2) !important;
}

/* ---- Search ---- */
[data-theme="dark"] .ds-search {
  background: var(--surface) !important;
  border-color: var(--border-2) !important;
}
[data-theme="dark"] .ds-search input {
  color: var(--fg) !important;
  background: transparent !important;
}
[data-theme="dark"] .ds-search i {
  color: var(--muted) !important;
}

/* ---- Chip ---- */
[data-theme="dark"] .chip {
  background: var(--surface) !important;
  border-color: var(--border) !important;
  color: var(--fg) !important;
}

/* ---- Site header ---- */
[data-theme="dark"] .site-header {
  background: linear-gradient(180deg, #243060 0%, #1a2448 100%) !important;
  border-bottom-color: #2d3148 !important;
}

/* ---- Nav cards (dashboard.css hardcoded #ffffff) ---- */
[data-theme="dark"] .nav-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .nav-card:hover {
  background: #252838 !important;
  box-shadow: 0 12px 28px rgba(0,0,0,0.3) !important;
}
[data-theme="dark"] .dash-left .nav-card.active {
  background: #1e1b4b !important;
  border-color: #6366f1 !important;
}
[data-theme="dark"] .nav-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .nav-desc {
  color: #94a3b8 !important;
}
[data-theme="dark"] .nav-icon {
  color: #818cf8 !important;
}
[data-theme="dark"] .nav-chevron {
  color: #64748b !important;
}

/* ---- Filter buttons (hardcoded в custom.css) ---- */
[data-theme="dark"] .ds-filter-btn {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #94a3b8 !important;
}
[data-theme="dark"] .ds-filter-btn:hover,
[data-theme="dark"] .ds-filter-btn.active {
  background: #1e1b4b !important;
  border-color: #6366f1 !important;
  color: #818cf8 !important;
}

/* ---- Search ---- */
[data-theme="dark"] .ds-search {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .ds-search input {
  background: transparent !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ds-search i {
  color: #64748b !important;
}

/* ---- dashboard.css hardcoded backgrounds ---- */
[data-theme="dark"] .dash-right .surface,
[data-theme="dark"] .dash-right .card,
[data-theme="dark"] .dash-right .widget {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .hero,
[data-theme="dark"] .surface.hero {
  background: linear-gradient(180deg, #1a1d2e 0%, #13151f 100%) !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .hero-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .hero-sub {
  color: #94a3b8 !important;
}
[data-theme="dark"] .overview-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- dokumente.css ---- */
[data-theme="dark"] .dok-badge-cancelled,
[data-theme="dark"] .dok-icon-cancelled,
[data-theme="dark"] .ds-badge-closed {
  background: #252838 !important;
  color: #94a3b8 !important;
}
[data-theme="dark"] .dok-chat-msg.system .dok-chat-bubble,
[data-theme="dark"] .ds-chat-msg.system .ds-chat-bubble {
  background: #1e2130 !important;
  color: #64748b !important;
}
[data-theme="dark"] .dok-chat-file-btn:hover {
  background: #252838 !important;
}
[data-theme="dark"] .ds-chat-textarea {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ds-modal-body,
[data-theme="dark"] .ds-panel {
  background: #1a1d27 !important;
}

/* ---- overview.css ---- */
[data-theme="dark"] .overview-section,
[data-theme="dark"] .overview-block {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- security.css ---- */
[data-theme="dark"] .security-card,
[data-theme="dark"] .security-section,
[data-theme="dark"] .security-block {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- einstellungen.css ---- */
[data-theme="dark"] .settings-card,
[data-theme="dark"] .settings-section,
[data-theme="dark"] .einst-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- custom.css ---- */
[data-theme="dark"] .site-header {
  background: linear-gradient(180deg, #243060 0%, #1a2448 100%) !important;
  border-bottom-color: #2d3148 !important;
}
[data-theme="dark"] .chip {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .strip-section,
[data-theme="dark"] .strip__item {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .trust {
  background: linear-gradient(180deg, #1a1d27, #161923) !important;
}
[data-theme="dark"] .faq details {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .meter {
  background: #2d3148 !important;
}

/* ---- register.css ---- */
[data-theme="dark"] #documents_btn,
[data-theme="dark"] #registration-card label#documents_btn.btn,
[data-theme="dark"] label#documents_btn.btn {
  background-color: #1e2130 !important;
  color: #818cf8 !important;
  border-color: #6366f1 !important;
}
[data-theme="dark"] #documents_btn:hover {
  background-color: #252838 !important;
  color: #a5b4fc !important;
}

/* ---- profil.css ---- */
[data-theme="dark"] .profil-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .modal {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- einstellungen.css ---- */
[data-theme="dark"] .einst-card,
[data-theme="dark"] .settings-block,
[data-theme="dark"] .pref-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- auth страницы (login, forgot password, reset) ---- */
[data-theme="dark"] .auth-card,
[data-theme="dark"] .auth-box,
[data-theme="dark"] .login-card,
[data-theme="dark"] .register-card,
[data-theme="dark"] .auth-form-wrap {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .auth-card label,
[data-theme="dark"] .login-card label {
  color: #94a3b8 !important;
}

/* ---- compliance.css ---- */
[data-theme="dark"] .rc-tier-badge.t1 {
  background: #252838 !important;
  color: #94a3b8 !important;
}
[data-theme="dark"] .rc-table tr:hover td {
  background: #252838 !important;
}
[data-theme="dark"] .rc-table td,
[data-theme="dark"] .rc-table th {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .rc-integrity,
[data-theme="dark"] .rc-integrity.check,
[data-theme="dark"] .rc-sealed-menu {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .rc-sealed-menu-item:hover {
  background: #252838 !important;
}
[data-theme="dark"] .rc-card,
[data-theme="dark"] [style*="card-bg"] {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .rc-tier-badge[style*="fefce8"],
[data-theme="dark"] .rc-tier-badge[style*="f0fdf4"],
[data-theme="dark"] .rc-tier-badge[style*="fff7ed"],
[data-theme="dark"] .rc-tier-badge[style*="fef2f2"] {
  background: #252838 !important;
  border-color: #3d3f6e !important;
}

/* ---- employee_profile.css ---- */
[data-theme="dark"] .ep-card,
[data-theme="dark"] .ep-section,
[data-theme="dark"] .ep-block,
[data-theme="dark"] .ep-edit-field .form-control {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-edit-field .form-control:disabled {
  background: #252838 !important;
  color: #64748b !important;
}
[data-theme="dark"] .wt-table tbody tr:hover {
  background: #252838 !important;
}
[data-theme="dark"] .wt-table,
[data-theme="dark"] .wt-row {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}

/* ---- team.css / team_table.css ---- */
[data-theme="dark"] .team-card,
[data-theme="dark"] .team-block,
[data-theme="dark"] .team-member {
  background: linear-gradient(135deg,rgba(99,102,241,.08) 0%,rgba(139,92,246,.06) 50%,rgba(168,85,247,.04) 100%) !important;
  backdrop-filter: blur(12px) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  border-color: rgba(99,102,241,.22) !important;
  box-shadow: 0 4px 24px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.06) !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-table-scroll::-webkit-scrollbar-track,
[data-theme="dark"] .team-table-top-scroll::-webkit-scrollbar-track {
  background: #1e2130 !important;
}
[data-theme="dark"] .team-search {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- header-mobile.css ---- */
[data-theme="dark"] .mobile-drawer,
[data-theme="dark"] .mobile-menu {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}

/* ---- PWA banner (base.html inline) ---- */
[data-theme="dark"] #pwa-push-banner {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] #pwa-push-dismiss {
  background: #252838 !important;
  color: #94a3b8 !important;
}

/* ---- overview_advisor.html inline styles ---- */
[data-theme="dark"] .overview-advisor-card,
[data-theme="dark"] [class*="overview"] > div[style*="background:#fff"] {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}

/* ---- session timeout modal (base.html inline) ---- */
[data-theme="dark"] #session-warning-modal > div,
[data-theme="dark"] #trial-modal > div,
[data-theme="dark"] #expired-modal > div {
  background: #1a1d27 !important;
  color: #e2e8f0 !important;
}

/* ---- Nav icon circles ---- */
[data-theme="dark"] .nav-icon {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
  box-shadow: 0 8px 20px rgba(99,102,241,0.25) !important;
  color: #818cf8 !important;
}
[data-theme="dark"] .nav-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .nav-desc {
  color: #94a3b8 !important;
}
[data-theme="dark"] .nav-chevron {
  color: #64748b !important;
}

/* ---- security-card (custom.css hardcoded) ---- */
[data-theme="dark"] .security-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3) !important;
}
[data-theme="dark"] .security-card:hover {
  box-shadow: 0 14px 34px rgba(0,0,0,0.4) !important;
}
[data-theme="dark"] .sec-icon {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
  box-shadow: 0 10px 20px rgba(99,102,241,0.25) !important;
}
[data-theme="dark"] .sec-icon i {
  color: #818cf8 !important;
}
[data-theme="dark"] .session-card-icon {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
}
[data-theme="dark"] .session-card-icon i {
  color: #818cf8 !important;
}
[data-theme="dark"] .sec-eyebrow {
  color: #64748b !important;
}
[data-theme="dark"] .sec-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .sec-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .sec-subtitle {
  color: #94a3b8 !important;
}
[data-theme="dark"] .sec-text {
  color: #94a3b8 !important;
}


/* ---- man-card frosted glass dark ---- */
[data-theme="dark"] .man-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3) !important;
}
/* ---- mandanten-card icons dark theme ---- */
[data-theme="dark"] .man-card-icon--clients {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
  box-shadow: 0 8px 18px rgba(99,102,241,0.25) !important;
}
[data-theme="dark"] .man-card-icon--clients i {
  color: #818cf8 !important;
}
[data-theme="dark"] .man-card-icon--belege {
  background: radial-gradient(circle at 30% 20%, #1a3a2a, #14291e) !important;
  box-shadow: 0 8px 18px rgba(34,197,94,0.2) !important;
}
[data-theme="dark"] .man-card-icon--belege i {
  color: #4ade80 !important;
}
[data-theme="dark"] .man-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .man-hero-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .man-hero-subtitle {
  color: #94a3b8 !important;
}
[data-theme="dark"] .man-metric-value {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .man-metric-label {
  color: #64748b !important;
}

/* ---- overview-icon / team-card (hardcoded gradient) ---- */
[data-theme="dark"] .overview-icon,
[data-theme="dark"] .team-card-header .overview-icon {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
  box-shadow: 0 10px 20px rgba(99,102,241,0.25) !important;
}
[data-theme="dark"] .overview-icon i,
[data-theme="dark"] .team-card-header .overview-icon i {
  color: #818cf8 !important;
}
[data-theme="dark"] .team-card-eyebrow {
  color: #64748b !important;
}
[data-theme="dark"] .team-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-card-description,
[data-theme="dark"] .team-metric-label {
  color: #94a3b8 !important;
}
[data-theme="dark"] .team-metric-value {
  color: #e2e8f0 !important;
}

/* ---- einst-icon / einst-card ---- */
[data-theme="dark"] .einst-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .einst-icon {
  background: radial-gradient(circle at 30% 20%, #2d2f5e, #1e1b4b) !important;
  box-shadow: 0 10px 20px rgba(99,102,241,0.25) !important;
}
[data-theme="dark"] .einst-icon i {
  color: #818cf8 !important;
}
[data-theme="dark"] .einst-eyebrow {
  color: #64748b !important;
}
[data-theme="dark"] .einst-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .einst-text {
  color: #94a3b8 !important;
}

/* ---- mf-btn (mandanten filters, no CSS file) ---- */
[data-theme="dark"] .mf-btn {
  background: #1e2130 !important;
  border: 1.5px solid #2d3148 !important;
  color: #94a3b8 !important;
}
[data-theme="dark"] .mf-btn:hover,
[data-theme="dark"] .mf-btn--active {
  background: #1e1b4b !important;
  border-color: #6366f1 !important;
  color: #818cf8 !important;
}

/* ---- mandanten search ---- */
[data-theme="dark"] #mandanten-search {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] #mandanten-search::placeholder {
  color: #64748b !important;
}

/* ---- country/staff filter selects ---- */
[data-theme="dark"] #filter-country,
[data-theme="dark"] #filter-staff {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- overview-card (overview.css hardcoded) ---- */
[data-theme="dark"] .overview-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3) !important;
}
[data-theme="dark"] .overview-card:hover {
  box-shadow: 0 14px 34px rgba(0,0,0,0.4) !important;
}
[data-theme="dark"] .overview-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .overview-subtitle {
  color: #94a3b8 !important;
}
[data-theme="dark"] .overview-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .overview-eyebrow {
  color: #64748b !important;
}
[data-theme="dark"] .overview-text,
[data-theme="dark"] .overview-desc {
  color: #94a3b8 !important;
}

/* ---- team-card (team.css hardcoded) ---- */
[data-theme="dark"] .team-card,
[data-theme="dark"] .team-card--full {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3) !important;
}

/* ---- team_table.css hardcoded borders ---- */
[data-theme="dark"] .team-table thead th:not(:last-child),
[data-theme="dark"] .team-table tbody td:not(:last-child) {
  border-right-color: #2d3148 !important;
}
[data-theme="dark"] .team-table tbody td {
  border-bottom-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-table thead th {
  border-bottom-color: #3d3f6e !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .team-table {
  box-shadow: 0 0 0 1px #2d3148 inset !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-search {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-search:focus {
  border-color: #6366f1 !important;
}
[data-theme="dark"] .no-records {
  color: #64748b !important;
}

/* ---- team_table mobile rows (hardcoded #fff, #fafbff) ---- */
[data-theme="dark"] .team-table tbody tr {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
}
[data-theme="dark"] .team-table tbody tr td.col-sticky-left {
  background: #1a1d27 !important;
  border-bottom-color: #2d3148 !important;
}
[data-theme="dark"] .team-table tbody tr td.col-sticky-left::after {
  color: #64748b !important;
}
[data-theme="dark"] .team-table tbody tr.mob-expanded td:not(.col-sticky-left):not(.col-sticky-right) {
  background: #1e2130 !important;
  border-bottom-color: #2d3148 !important;
}
[data-theme="dark"] .team-table tbody tr.mob-expanded td:not(.col-sticky-left):not(.col-sticky-right)::before {
  color: #64748b !important;
}
[data-theme="dark"] .team-table tbody tr.mob-expanded td.col-sticky-right {
  background: #1a1d27 !important;
  border-top-color: #2d3148 !important;
}

/* ---- dokumente светлые артефакты ---- */
[data-theme="dark"] .ds-list-wrap,
[data-theme="dark"] .ds-section,
[data-theme="dark"] .ds-panel,
[data-theme="dark"] .ds-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .ds-row {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .ds-row:nth-child(even) {
  background: #1e2130 !important;
}
[data-theme="dark"] .ds-row:hover {
  background: #252838 !important;
}
[data-theme="dark"] .ds-cell,
[data-theme="dark"] .ds-row-cell {
  color: #e2e8f0 !important;
  border-color: #2d3148 !important;
}

/* ---- team_table.css :root variables override ---- */
[data-theme="dark"] {
  --datev-border:      #2d3148 !important;
  --datev-border-head: #3d3f6e !important;
  --datev-bg-head:     #1e1b4b !important;
  --datev-color-head:  #818cf8 !important;
  --datev-bg-row:      #1a1d27 !important;
  --datev-bg-row-alt:  #1e2130 !important;
  --datev-bg-hover:    #252838 !important;
  --datev-color-row:   #e2e8f0 !important;
}

/* ---- team_table sticky columns hardcoded ---- */
[data-theme="dark"] thead .col-sticky-left,
[data-theme="dark"] thead .col-sticky-right {
  background: #1e1b4b !important;
}
[data-theme="dark"] .team-row:hover .col-sticky-left,
[data-theme="dark"] .team-row:hover .col-sticky-right,
[data-theme="dark"] .team-table tbody tr:nth-child(even):hover .col-sticky-left,
[data-theme="dark"] .team-table tbody tr:nth-child(even):hover .col-sticky-right {
  background: #252838 !important;
}
[data-theme="dark"] .team-name {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .team-email {
  color: #94a3b8 !important;
}

/* ---- table thead hardcoded backgrounds ---- */
[data-theme="dark"] .team-table thead th {
  background: #1e1b4b !important;
  color: #818cf8 !important;
  border-color: #3d3f6e !important;
}
[data-theme="dark"] thead .col-sticky-left,
[data-theme="dark"] thead .col-sticky-right {
  background: #1e1b4b !important;
}

/* ---- btn-outline в теле страницы (не в header) ---- */
[data-theme="dark"] .btn-outline,
[data-theme="dark"] a.btn-outline,
[data-theme="dark"] button.btn-outline {
  background: transparent !important;
  border-color: #6366f1 !important;
  color: #818cf8 !important;
}
[data-theme="dark"] .btn-outline:hover {
  background: #1e1b4b !important;
}

/* ---- dokumente modal chat (hardcoded) ---- */
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-messages {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-msg.staff .dok-chat-bubble,
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-msg.advisor .dok-chat-bubble {
  background: rgba(99,102,241,.2) !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-msg.client .dok-chat-bubble {
  color: #a7f3d0 !important;
}
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-input {
  border-color: #2d3148 !important;
  background: #1e2130 !important;
}
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-textarea {
  color: #e2e8f0 !important;
}
[data-theme="dark"] #dok-ticket-modal-body .dok-chat-actions {
  background: #1a1d27 !important;
  border-top-color: #2d3148 !important;
}
[data-theme="dark"] .dok-client-add-file-btn {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #94a3b8 !important;
}

/* ---- ds-btn-sm danger (light background) ---- */
[data-theme="dark"] .ds-btn-sm.danger {
  background: rgba(220,38,38,.15) !important;
  border-color: rgba(220,38,38,.3) !important;
  color: #f87171 !important;
}
[data-theme="dark"] .ds-btn-sm.danger:hover {
  background: rgba(220,38,38,.25) !important;
}

/* ---- ds-row артефакты — строки без фона ---- */
[data-theme="dark"] .ds-row {
  background: #1a1d27 !important;
  border-bottom-color: #2d3148 !important;
}
[data-theme="dark"] .ds-row-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ds-row-desc {
  color: #94a3b8 !important;
}

/* ---- ds-ticket-num, ds-badge hardcoded ---- */
[data-theme="dark"] .ds-ticket-num {
  background: transparent !important;
  color: #94a3b8 !important;
}
[data-theme="dark"] .ds-badge-under_review {
  background: #2d1f5e !important;
  color: #a78bfa !important;
}
[data-theme="dark"] .ds-badge-closed {
  background: #252838 !important;
  color: #94a3b8 !important;
}

/* ---- steuerkalender.css dark theme ---- */
[data-theme="dark"] .sk-badge-overdue {
  background: rgba(185,28,28,.2) !important;
  color: #f87171 !important;
}
[data-theme="dark"] .sk-badge-soon {
  background: rgba(133,77,14,.2) !important;
  color: #fbbf24 !important;
}
[data-theme="dark"] .sk-table td {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .sk-toggle-slider {
  background: #2d3148 !important;
}
[data-theme="dark"] .sk-toggle-slider:before {
  background: #94a3b8 !important;
}

/* ---- steuerkalender category badge colors ---- */
[data-theme="dark"] {
  --sk-cat-ust-bg: #0a1628; --sk-cat-ust-fg: #60a5fa;
  --sk-cat-lst-bg: #1e0a3d; --sk-cat-lst-fg: #c084fc;
  --sk-cat-soz-bg: #052e16; --sk-cat-soz-fg: #4ade80;
  --sk-cat-est-bg: #2d1200; --sk-cat-est-fg: #fb923c;
  --sk-cat-kst-bg: #2d0a0a; --sk-cat-kst-fg: #f87171;
  --sk-cat-gwb-bg: #2d2000; --sk-cat-gwb-fg: #fbbf24;
  --sk-cat-son-bg: #1e2130; --sk-cat-son-fg: #94a3b8;
}

/* ---- team badges hardcoded ---- */
[data-theme="dark"] .badge-active {
  background: #052e16 !important;
  color: #4ade80 !important;
  border-color: rgba(74,222,128,.2) !important;
}
[data-theme="dark"] .badge-inactive {
  background: #2d2000 !important;
  color: #fbbf24 !important;
}
[data-theme="dark"] .badge-blocked {
  background: #1e2130 !important;
  color: #94a3b8 !important;
}

/* ---- compliance.css hardcoded colors ---- */
[data-theme="dark"] .rc-tier-badge.t1 {
  background: #1e2130 !important;
  color: #94a3b8 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .rc-tier-badge.t2 {
  background: #0a1628 !important;
  color: #60a5fa !important;
  border-color: #1e3a5f !important;
}
[data-theme="dark"] .rc-tier-badge.t3 {
  background: #1e0a3d !important;
  color: #c084fc !important;
  border-color: #3b1f6e !important;
}
[data-theme="dark"] .rc-worm-badge {
  background: #052e16 !important;
  color: #4ade80 !important;
  border-color: rgba(74,222,128,.2) !important;
}
[data-theme="dark"] .rc-btn:hover {
  background: #1e1b4b !important;
}
[data-theme="dark"] .rc-btn.success:hover {
  background: #052e16 !important;
}
[data-theme="dark"] .rc-btn.purple:hover {
  background: #1e0a3d !important;
}
[data-theme="dark"] .rc-integrity,
[data-theme="dark"] .rc-integrity.check {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .rc-sealed-pkg {
  background: linear-gradient(135deg, #1e0a3d 0%, #0a1628 100%) !important;
}
[data-theme="dark"] .rc-sealed-header {
  background: #1a1d27 !important;
  border-color: #3b1f6e !important;
}
[data-theme="dark"] .rc-activity-chart-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] .rc-activity-chart-title i {
  color: #818cf8 !important;
}

/* ---- compliance chart canvas background ---- */
[data-theme="dark"] .rc-activity-chart-wrap canvas,
[data-theme="dark"] #rc-tc-chart,
[data-theme="dark"] #rc-activity-chart {
  background: #1a1d27 !important;
  border-radius: 8px;
}

/* ---- compliance icon classes dark theme ---- */
[data-theme="dark"] .rc-icon-red    { background: #2d0a0a !important; color: #f87171 !important; }
[data-theme="dark"] .rc-icon-orange { background: #2d1200 !important; color: #fb923c !important; }
[data-theme="dark"] .rc-icon-green  { background: #052e16 !important; color: #4ade80 !important; }
[data-theme="dark"] .rc-icon-green2 { background: #052e16 !important; color: #34d399 !important; }
[data-theme="dark"] .rc-icon-blue   { background: #0a1628 !important; color: #818cf8 !important; }
[data-theme="dark"] .rc-icon-blue2  { background: #0a1e2d !important; color: #38bdf8 !important; }
[data-theme="dark"] .rc-icon-indigo { background: #1e1b4b !important; color: #818cf8 !important; }
[data-theme="dark"] .rc-header-icon { background: #1e1b4b !important; color: #818cf8 !important; }

[data-theme="dark"] .dok-chat-msg.staff .dok-chat-bubble,
[data-theme="dark"] .ds-chat-msg.staff .ds-chat-bubble {
  background: rgba(99,102,241,.25) !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .dok-chat-msg.client .dok-chat-bubble,
[data-theme="dark"] .ds-chat-msg.client .ds-chat-bubble {
  background: rgba(34,197,94,.25) !important;
  color: #a7f3d0 !important;
}
[data-theme="dark"] .dok-chat-msg.system .dok-chat-bubble,
[data-theme="dark"] .ds-chat-msg.system .ds-chat-bubble {
  background: #1e2130 !important;
  color: #64748b !important;
}
[data-theme="dark"] .dok-chat-file-attach {
  background: #1e2130 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .dok-chat-file-attach span,
[data-theme="dark"] .dok-chat-file-attach .dok-chat-file-name {
  color: #e2e8f0 !important;
}

/* Force dark header */
html[data-theme="dark"] header.site-header,
html[data-theme="dark"] .site-header {
  background: linear-gradient(180deg, #243060 0%, #1a2448 100%) !important;
}

/* === Compliance audit filters dark fix === */
[data-theme="dark"] .rc-date-wrap,
[data-theme="dark"] .rc-fi,
[data-theme="dark"] label.rc-date-wrap {
  background: #252838 !important;
  border-color: #323654 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .rc-audit-notice {
  background: #2d1f00 !important;
  border-color: #854d0e !important;
  color: #fde68a !important;
}

[data-theme="dark"] input[type="text"].rc-fi {
  background: #252838 !important;
  border-color: #323654 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] input[type="text"].rc-fi::placeholder {
  color: #64748b !important;
}
  /* Warning */
  --warning-bg:     #fffbeb;
  --warning-border: #fde68a;
  --warning-text:   #92400e;

/* ---- employee_profile.css dark mode ---- */
[data-theme="dark"] .ep-stat-card {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-stat-val {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-stat-icon--blue   { background: #1e3a5f !important; }
[data-theme="dark"] .ep-stat-icon--orange { background: #3d2a1a !important; }
[data-theme="dark"] .ep-stat-icon--red    { background: #3d1a1a !important; }
[data-theme="dark"] .ep-stat-icon--green  { background: #1a3d2a !important; }
[data-theme="dark"] .ep-field-val {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-card-title {
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-hero-card,
[data-theme="dark"] .ep-profile-hero {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-edit-field select.form-control,
[data-theme="dark"] .ep-edit-field select {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-edit-field select option {
  background: #1a1d27 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .ep-footer-bar {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}

/* ---- security-modal dark mode ---- */
[data-theme="dark"] .security-modal-box {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .security-modal-box input,
[data-theme="dark"] .security-modal-box select,
[data-theme="dark"] .security-modal-box textarea {
  background: #252838 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .security-modal-box input::placeholder,
[data-theme="dark"] .security-modal-box textarea::placeholder {
  color: #64748b !important;
}
[data-theme="dark"] .security-modal-box label {
  color: #94a3b8 !important;
}
[data-theme="dark"] .security-modal-box .btn-light {
  background: #252838 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}

/* ---- client-action-menu (team) ---- */
.client-action-menu {
  background: #fff;
  border: 1.5px solid #e5e7eb;
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
  min-width: 200px;
  overflow: hidden;
}
.client-action-menu a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 16px;
  color: #374151;
  text-decoration: none;
  font-size: 0.875rem;
}
.client-action-menu a:hover { background: #f8fafc; }
[data-theme="dark"] .client-action-menu {
  background: #1e2130;
  border-color: #2d3148;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
}
[data-theme="dark"] .client-action-menu a { color: #e2e8f0; }
[data-theme="dark"] .client-action-menu a:hover { background: #2d3148; }

/* ---- client-action-menu links ---- */
.client-action-menu .cam-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 16px;
  color: #374151;
  text-decoration: none;
  font-size: 0.875rem;
}
.client-action-menu .cam-link:hover { background: #f8fafc; }
.client-action-menu .cam-link.danger { color: #dc2626; }
.client-action-menu .cam-link.danger:hover { background: #fef2f2; }
[data-theme="dark"] .client-action-menu .cam-link { color: #e2e8f0; }
[data-theme="dark"] .client-action-menu .cam-link:hover { background: #2d3148; }
[data-theme="dark"] .client-action-menu .cam-link.danger { color: #f87171; }
[data-theme="dark"] .client-action-menu .cam-link.danger:hover { background: rgba(220,38,38,0.15); }

/* ---- global-staff-menu ---- */
#global-staff-menu {
  background: #fff !important;
  border: 1.5px solid #e5e7eb;
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
  min-width: 200px;
  overflow: hidden;
}
#global-staff-menu a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 16px;
  color: #374151 !important;
  text-decoration: none;
  font-size: 0.875rem;
}
#global-staff-menu a:hover { background: #f8fafc; }
#global-staff-menu a.danger { color: #dc2626 !important; }
#global-staff-menu a.danger:hover { background: #fef2f2; }
[data-theme="dark"] #global-staff-menu {
  background: #1e2130 !important;
  border-color: #2d3148;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
}
[data-theme="dark"] #global-staff-menu a { color: #e2e8f0 !important; }
[data-theme="dark"] #global-staff-menu a:hover { background: #2d3148; }
[data-theme="dark"] #global-staff-menu a.danger { color: #f87171 !important; }
[data-theme="dark"] #global-staff-menu a.danger:hover { background: rgba(220,38,38,0.15); }

/* ── Lang dropdown ── */
.lang-menu-dropdown {
  background: linear-gradient(180deg, rgb(90,107,255) 0%, rgb(75,89,230) 100%) !important;
  border: 1px solid rgba(255,255,255,0.15) !important;
  box-shadow: 0 0 0 3px rgba(60,75,200,0.5), 0 12px 40px rgba(75,89,230,0.5) !important;
  outline: 2px solid rgba(50,65,180,0.4);
}
.lang-menu-dropdown a span {
  color: rgba(255,255,255,0.9) !important;
}
[data-theme="dark"] .lang-menu-dropdown {
  background: linear-gradient(180deg, #243060 0%, #1a2448 100%) !important;
  border: 1px solid rgba(255,255,255,0.1) !important;
  box-shadow: 0 0 0 3px rgba(20,30,70,0.5), 0 12px 40px rgba(0,0,0,0.5) !important;
  outline: 2px solid rgba(15,25,60,0.4);
}
[data-theme="dark"] .lang-menu-dropdown a span {
  color: rgba(255,255,255,0.85) !important;
}
.lang-menu-dropdown a:hover {
  background: rgba(255,255,255,0.15) !important;
}
[data-theme="dark"] .lang-menu-dropdown a:hover {
  background: rgba(255,255,255,0.1) !important;
}

/* ---- import_clients country buttons dark theme ---- */
[data-theme="dark"] #country-grid button {
  background: #1e2235 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] #country-grid button:hover {
  border-color: #4f46e5 !important;
  background: #252840 !important;
}
[data-theme="dark"] #country-grid button.selected,
[data-theme="dark"] #country-grid button[style*="border-color: rgb(79, 70, 229)"],
[data-theme="dark"] #country-grid button[style*="border-color:#4f46e5"],
[data-theme="dark"] #country-grid button[style*="border-color: #4f46e5"] {
  border-color: #4f46e5 !important;
  background: #1e1b4b !important;
  color: #a5b4fc !important;
}
[data-theme="dark"] #step-country .fmt-detected-box,
[data-theme="dark"] #step-country [style*="background:#eff6ff"] {
  background: #1e2235 !important;
  border-color: #2d3148 !important;
  color: #93c5fd !important;
}
[data-theme="dark"] .btn-light {
  background: #1e2235 !important;
  border-color: #2d3148 !important;
  color: #e2e8f0 !important;
}
[data-theme="dark"] .btn-light:hover {
  background: #252840 !important;
}
/* drop zone dark */
[data-theme="dark"] #drop-zone {
  background: #1a1d27 !important;
  border-color: #2d3148 !important;
}
[data-theme="dark"] #drop-zone:hover {
  border-color: #4f46e5 !important;
  background: #1e1b4b !important;
}
/* format detected banner */
[data-theme="dark"] #fmt-detected {
  background: #1e2a3a !important;
  border-color: #1e40af !important;
  color: #93c5fd !important;
}

/* ── Универсальный мобильный аккордеон для таблиц ── */
@media (max-width: 768px) {
  .mob-accordion thead th:nth-child(n+3):not(:last-child) { display: none !important; }
  /* Таблица переключается в block-режим на мобильном */
  .mob-accordion,
  .mob-accordion thead,
  .mob-accordion tbody,
  .mob-accordion tr,
  .mob-accordion td,
  .mob-accordion th { display: block !important; }
  .mob-accordion thead { display: none !important; }
  .mob-accordion tbody tr {
    cursor: pointer;
    border: 1px solid var(--border-2);
    border-radius: 8px;
    margin-bottom: 6px;
    padding: 8px 12px;
    background: var(--surface);
  }
  .mob-accordion tbody td { padding: 2px 0 !important; border: none !important; }
  .mob-accordion tbody td:nth-child(n+3):not(:last-child) { display: none !important; }
  .mob-accordion tbody td:last-child { text-align: right; padding-top: 6px !important; }
  .mob-accordion tbody tr.mob-expanded td:nth-child(n+3):not(:last-child) {
    display: flex !important;
    justify-content: space-between !important;
    align-items: center !important;
    padding: 4px 0 !important;
    gap: 8px;
  }
  .mob-accordion tbody tr.mob-expanded td:nth-child(n+3):not(:last-child)::before {
    content: attr(data-label);
    font-size: .75rem;
    color: #fff !important;
    white-space: nowrap;
    flex-shrink: 0;
    font-weight: 600;
  }
}

/* ── rc-tabs (global) ─────────────────────────────────────────────────────── */
.rc-tabs-wrap { border-bottom: 1px solid var(--border-2, #e2e8f0); margin-bottom: 20px; }
/* Смуга вкладок прокручується по горизонталі: на телефоні чотири вкладки
   «Фінансів» не вміщалися — «Експорт» обрізався і докрутити його було нічим
   (знайдено на проді 19.09.2026, екран 360px). Прокручується САМА стрічка, не
   сторінка; flex-shrink:0 не дає вкладкам стискатися замість прокрутки.
   Компонент спільний з секцією моніторингу — там та сама користь. */
.rc-tabs { display: flex; gap: 0; overflow-x: auto; overflow-y: hidden;
  scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.rc-tab { background:none; border:none; border-bottom:2px solid transparent; color:var(--muted); padding:10px 16px; font-size:.85rem; font-weight:600; cursor:pointer; margin-bottom:-1px; transition:color .15s,border-color .15s; display:inline-flex; flex-direction:column; align-items:center; line-height:1.2; flex: 0 0 auto; }
.rc-tab:hover { color:#4f46e5; }
.rc-tab.active { color:#4f46e5; border-bottom-color:#4f46e5; }
.rc-tab span:first-child { font-size:.88rem; font-weight:700; }
.rc-tab span:last-child { font-size:.72rem; opacity:.7; }

/* ── Секция Финансы/Бухгалтерия (finance_tabs.js) ── */
.fin-head { display:flex; align-items:center; gap:14px; margin-bottom:18px; }
.fin-icon { font-size:1.8rem; color:#c49020; }
.fin-title { font-size:1.4rem; font-weight:800; }
.fin-sub { font-size:.85rem; color:var(--muted); }
/* Точка входу в бухгалтерський регістр (окрема сторінка) */
.fin-ledger-entry { display:flex; align-items:center; gap:14px; padding:14px 18px; margin-bottom:18px;
  border:1px solid var(--border-2,#cbd5e1); border-radius:12px; background:var(--card,#fff);
  text-decoration:none; transition:border-color .15s, background .15s; }
.fin-ledger-entry:hover { border-color:#c49020; background:rgba(196,144,32,.04); }
.fin-ledger-ic { font-size:1.6rem; color:#c49020; }
.fin-ledger-txt { display:flex; flex-direction:column; flex:1; }
.fin-ledger-t { font-weight:700; font-size:.95rem; color:var(--fg,#1e293b); }
.fin-ledger-d { font-size:.8rem; color:var(--muted,#64748b); }
.fin-ledger-arrow { font-size:1rem; color:var(--muted,#64748b); }
/* «?» справки: сосед вкладки/карточки, не потомок — ссылка внутри <button>
   невалидна, и клик по ней переключал бы вкладку. */
/* Картка регістру = рамка рядка: всередині посилання на регістр і «Допомога»
   (посилання в посиланні невалідне, тому вони сусіди, а рамка — на рядку). */
.fin-ledger-row { display:flex; align-items:center; gap:10px; margin-bottom:18px; padding-right:16px;
  border:1px solid var(--border-2,#cbd5e1); border-radius:12px; background:var(--card,#fff);
  transition:border-color .15s, background .15s; }
.fin-ledger-row:hover { border-color:#c49020; background:rgba(196,144,32,.04); }
.fin-ledger-row .fin-ledger-entry { flex:1; margin-bottom:0; border:none; background:none; }
.fin-ledger-help { flex:0 0 auto; white-space:nowrap; }
.fin-tabq { position:relative; display:inline-flex; flex:0 0 auto; }
.fin-tabq .rc-tab { padding-right:24px; }
.fin-tabq .lgr-tab { padding-right:26px; }
.fin-tabq-btn { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px;
  border-radius:50%; border:1px solid var(--border-2,#cbd5e1); color:var(--muted,#64748b);
  background:var(--card,#fff); font-size:.8rem; line-height:1; text-decoration:none;
  transition:color .15s, border-color .15s; }
.fin-tabq-btn:hover, .fin-tabq-btn:focus-visible { color:#4f46e5; border-color:#4f46e5; }
.fin-tabq > .fin-tabq-btn { position:absolute; top:6px; right:3px; }

.fin-tab-pane { margin-top:4px; }
.fin-tab-pane.is-hidden { display:none; }
.fin-tab-pane.is-shown { display:block; }
.vat-reg-row { margin-top:10px; }
.metric-pos { color:#16a34a; }
.metric-neg { color:#dc2626; }
/* balance_history.js — вынос inline-style строк истории транзакций */
.bh-row { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }
.bh-left { min-width:0; }
.bh-title { font-weight:600; color:var(--fg); }
.bh-sub { font-size:.78rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis; }
.bh-right { text-align:right; white-space:nowrap; }
.bh-amt { font-weight:700; }
.bh-amt-pos { color:#16a34a; }
.bh-amt-neutral { color:var(--fg); }
.bh-eur { font-size:.78rem; color:var(--muted); }
/* Фактический расчёт в гривне: мельче евро и приглушённее — это справочная
   строка при основной сумме, а не вторая цена. Курс в title, чтобы не
   растягивать колонку. */
.bh-uah { font-size:.7rem; color:var(--muted); opacity:.75; }
.bh-msg { margin-top:8px; color:var(--muted); }
.bh-ic-pos { color:#16a34a; }
.bh-ic-muted { color:var(--muted); }
.bh-ic-file { opacity:.7; }
.is-dim { opacity:.4; }
.bh-pager { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:12px; }
.fin-card { background:var(--card, #161a26); border:1px solid var(--border-2, #2d3148); border-radius:12px; padding:18px 20px; margin-bottom:16px; }
.fin-card-title { font-size:1rem; font-weight:700; margin-bottom:6px; }
.fin-sub2 { font-size:.82rem; color:var(--muted); margin:0 0 12px; }
.fin-muted { color:var(--muted); font-size:.8rem; }
.fin-empty { padding:16px; color:var(--muted); font-size:.85rem; }
.fin-kpi { display:flex; align-items:baseline; gap:10px; margin-bottom:12px; }
.fin-kpi b { font-size:1.5rem; font-weight:800; color:#22c55e; }
/* Возвраты (сторно) и нетто-итог рядом с выручкой — для бухгалтера. */
.fin-kpi--refund b { color:#ef4444; }
.fin-kpi--net b    { color:var(--text,#e2e8f0); }
.fin-kpi--refund, .fin-kpi--net { display:inline-flex; margin-left:22px; }
.fin-link { color:#c49020; font-size:.82rem; text-decoration:none; }
/* Ссылки на PDF (счёт клиента + украинская копия) — столбиком, а не в строку:
   инлайном они переносились посреди подписи и налезали друг на друга. */
.fin-pdf-links { display:flex; flex-direction:column; align-items:flex-end; gap:4px; }
.fin-pdf-links .fin-link { white-space:nowrap; }

/* ── Доказательная база платежа (chargeback) ─────────────────────────────────
   Разворачивается под строкой оплаченного счёта. Нужна при споре с банком:
   ответить надо за 7–10 дней, а поддержка эквайера ищет транзакцию по RRN и
   order_id. Моноширинный шрифт обязателен — идентификаторы диктуют и
   переписывают, и «0/O», «1/l» на пропорциональном не различить. */
.fin-proof-btn { background:none; border:0; padding:0; cursor:pointer;
  white-space:nowrap; }
.fin-proof-row > td { background:var(--surface-2, rgba(127,127,127,.06));
  padding:10px 12px; }
.fin-proof-dl { display:grid; grid-template-columns:auto 1fr; gap:4px 14px;
  margin:0 0 8px; font-size:.82rem; }
.fin-proof-dl dt { color:var(--muted); }
.fin-proof-dl dd { margin:0; }
.fin-proof-dl code { font-size:.82rem; overflow-wrap:anywhere; }
/* На узком экране два столбца слипаются: подпись и значение в строку. */
@media (max-width:560px){
  .fin-proof-dl { grid-template-columns:1fr; gap:0 0; }
  .fin-proof-dl dd { margin:0 0 6px; }
}
.fin-nowrap { white-space:nowrap; }
.fin-table-wrap { overflow:auto; max-height:520px; }
.fin-table { width:100%; border-collapse:collapse; font-size:.85rem; }
.fin-table th { text-align:left; padding:8px; border-bottom:1px solid var(--border-2, #2d3148); color:var(--muted); font-weight:600; font-size:.78rem; }
.fin-table td { padding:8px; border-bottom:1px solid var(--border-2, #23283a); vertical-align:top; }
.fin-filter { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; margin:8px 0 14px; }
.fin-filter label { display:flex; flex-direction:column; font-size:.72rem; color:var(--muted); gap:3px; }
.fin-badge { display:inline-block; padding:2px 9px; border-radius:20px; font-size:.72rem; font-weight:600; background:rgba(148,163,184,.15); color:var(--muted); }
.fin-badge--ok { background:rgba(34,197,94,.15); color:#22c55e; }
.fin-badge--red { background:rgba(239,68,68,.15); color:#ef4444; }
/* Бейдж канала оплаты в списке инвойсов (Stripe/Wise/manual) */
.fin-chan { display:inline-flex; align-items:center; gap:4px; margin-top:3px; padding:1px 8px; border-radius:8px; font-size:.64rem; font-weight:700; text-transform:uppercase; letter-spacing:.02em; }
.fin-chan i { font-size:.72rem; }
.fin-chan--mono    { background:rgba(196,144,32,.16); color:#c49020; }
.fin-chan--paysera { background:rgba(34,197,94,.16);  color:#22c55e; }
.fin-chan--manual  { background:rgba(148,163,184,.16); color:var(--muted); }
/* legacy-классы (старі записи) — мапимо на нові кольори */
.fin-chan--stripe  { background:rgba(196,144,32,.16); color:#c49020; }
.fin-chan--wise    { background:rgba(34,197,94,.16);  color:#22c55e; }

/* ---- Комплаенс-документы: компактная адаптивная сетка плиток ---- */
.compliance-grid{
  display:grid;
  /* Колонки шире (было 280px, помещалось 3 в ряд): при трёх колонках и имя
     файла, и описание обрезались многоточием, и плитка не сообщала ничего.
     Ради читаемого описания жертвуем плотностью. */
  grid-template-columns:repeat(auto-fill,minmax(420px,1fr));
  gap:8px;
}
.compliance-tile{
  display:flex;align-items:flex-start;gap:10px;
  padding:10px 12px;
  border:1px solid var(--border);
  border-radius:8px;
  background:var(--surface-2,rgba(255,255,255,.02));
  min-width:0;
}
.compliance-tile__info{flex:1;min-width:0;}
.compliance-tile__name{
  font-size:.82rem;display:flex;align-items:center;gap:6px;
  /* имя не режем: по нему документ и опознают */
  overflow-wrap:anywhere;
}
.compliance-tile__hint{
  color:var(--muted);font-size:.75rem;line-height:1.35;margin-top:3px;
  /* Обрезка по строкам, а не по символам, — высота плиток ровная.
     Четыре строки, а не две: описания здесь отвечают на вопрос «что это за
     файл и зачем он», и на двух строках обрывались на середине мысли
     («орган може…», «включно з double opt-in для…») — то есть ровно там, где
     начиналось полезное. Полный текст всё равно доступен наведением: в
     разметке у плитки стоит title. */
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;
  line-clamp:4;overflow:hidden;
}
.compliance-tile__actions{flex:none;display:flex;gap:6px;padding-top:1px;}
.compliance-tile__actions .btn{padding:4px 8px;}
/* узкие экраны: одна колонка, описание целиком */
@media (max-width:700px){
  .compliance-grid{grid-template-columns:1fr;}
  .compliance-tile__hint{-webkit-line-clamp:6;line-clamp:6;}
}

/* ---- admin_monitoring.js: JS-генерируемая разметка → классы (строгий CSP) ---- */
/* служебные утилиты видимости (вместо el.style.display) */
.mon-hidden       { display:none !important; }
/* показ поверх базового display:none из .s-* классов (строгий CSP вместо el.style.display) */
.mon-show-block   { display:block !important; }
.mon-show-flex    { display:flex !important; }
/* строка «IP — счётчик» в топе брутфорса */
.mon-row-split    { display:flex; justify-content:space-between; padding:4px 0; border-bottom:1px solid rgba(127,127,127,.12); }

/* ── Інциденти ПД (TAB 6) ─────────────────────────────────────────────── */
.mon-breach-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.mon-breach-head-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
/* Кнопка «Зафіксувати інцидент» — акцентная (действие фиксации инцидента ПД должно
   бросаться в глаза): красная заливка, белый текст, иконка щита. */
.mon-breach-new-btn {
  display:inline-flex; align-items:center; gap:7px;
  font-size:.85rem; font-weight:700; line-height:1; white-space:nowrap;
  padding:9px 16px; border-radius:9px; cursor:pointer;
  color:#fff; background:#dc2626; border:1.5px solid #dc2626;
  box-shadow:0 2px 8px rgba(220,38,38,.28);
  transition:background .12s, box-shadow .12s, transform .05s;
}
.mon-breach-new-btn:hover { background:#b91c1c; border-color:#b91c1c; box-shadow:0 4px 14px rgba(220,38,38,.4); }
.mon-breach-new-btn:active { transform:translateY(1px); }
.mon-breach-new-btn i { font-size:1rem; }
.mon-breach-note { font-size:.82rem; color:var(--fg-muted); margin:6px 0 12px; line-height:1.5; }
.mon-breach-list { display:flex; flex-direction:column; gap:8px; }
.mon-breach-item { display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid rgba(127,127,127,.18); border-radius:10px; cursor:pointer; flex-wrap:wrap; }
.mon-breach-item:hover { background:rgba(127,127,127,.06); }
.mon-breach-badge { font-size:.72rem; font-weight:700; border-radius:999px; padding:2px 9px; text-transform:uppercase; }
.mon-breach-badge--open { background:rgba(239,68,68,.14); color:#dc2626; }
.mon-breach-badge--closed { background:rgba(74,222,128,.14); color:#16a34a; }
.mon-breach-badge--draft { background:rgba(245,158,11,.16); color:#b45309; }
.mon-breach-ref { font-weight:700; font-size:.86rem; }
.mon-breach-desc1 { flex:1; min-width:0; font-size:.85rem; color:var(--fg-muted); }
.mon-breach-art9 { font-size:.7rem; font-weight:700; color:#b45309; background:rgba(245,158,11,.15); border-radius:6px; padding:1px 6px; }
/* Backdrop breach-модалки ДОЛЖЕН быть выше sticky-шапки (.s-c0468810 = z-index:99999),
   иначе модалка уходит под шапку. Плюс скролл по вертикали для длинной формы. */
#breachBackdrop { z-index:100001; overflow-y:auto; }
#breachBackdrop.mon-show-flex { display:flex; }
/* .cron-modal (tf.css, грузится ПОСЛЕ theme.css) задаёт max-width:420px при равной
   специфичности перебивает — поэтому поднимаем специфичность двойным классом. */
.cron-modal.mon-breach-modal { max-width:900px; width:100%; max-height:90vh; overflow-y:auto; margin:auto; }
.mon-breach-form { display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; margin-top:8px; align-items:end; }
.mon-breach-lbl { display:flex; flex-direction:column; gap:5px; font-size:.8rem; font-weight:600; color:var(--fg); min-width:0; }
.mon-breach-full { grid-column:1 / -1; }
.mon-breach-check { flex-direction:row; align-items:center; gap:8px; padding-bottom:8px; }
.mon-breach-check input { width:auto; flex:none; }
.mon-breach-inp { background:var(--input-bg); color:var(--fg); border:1.5px solid rgba(127,127,127,.28); border-radius:8px; padding:7px 10px; font-size:.85rem; font-family:inherit; width:100%; }
.mon-breach-ta { min-height:70px; resize:vertical; }
.mon-breach-actions, .mon-breach-detail-acts { grid-column:1 / -1; display:flex; gap:10px; flex-wrap:wrap; margin-top:8px; align-items:center; }
/* Кнопки в панели инцидентов — самодостаточные стили (не зависят от базового .rc-btn) */
.mon-breach-actions .rc-btn, .mon-breach-detail-acts .rc-btn, .mon-breach-updform-acts .rc-btn {
  display:inline-flex; align-items:center; gap:7px;
  font-size:.86rem; font-weight:600; line-height:1;
  padding:9px 15px; border-radius:9px; cursor:pointer;
  border:1.5px solid rgba(127,127,127,.32);
  background:transparent; color:var(--fg);
  transition:background .12s, border-color .12s, transform .05s;
}
.mon-breach-actions .rc-btn:hover, .mon-breach-detail-acts .rc-btn:hover, .mon-breach-updform-acts .rc-btn:hover {
  background:rgba(127,127,127,.10); border-color:rgba(127,127,127,.5);
}
.mon-breach-actions .rc-btn:active, .mon-breach-detail-acts .rc-btn:active, .mon-breach-updform-acts .rc-btn:active { transform:translateY(1px); }
.mon-breach-actions .rc-btn i, .mon-breach-detail-acts .rc-btn i, .mon-breach-updform-acts .rc-btn i { font-size:.95rem; }
/* Первичная (Зафіксувати) — фирменный акцент */
.mon-breach-actions .rc-btn--primary, .mon-breach-detail-acts .rc-btn--primary, .mon-breach-updform-acts .rc-btn--primary {
  background:var(--brand); color:#fff; border-color:var(--brand);
}
.mon-breach-actions .rc-btn--primary:hover, .mon-breach-detail-acts .rc-btn--primary:hover, .mon-breach-updform-acts .rc-btn--primary:hover {
  background:var(--brand); border-color:var(--brand); filter:brightness(1.08);
}
.mon-breach-detail { display:flex; flex-direction:column; gap:8px; margin-top:8px; }
.mon-breach-fld { font-size:.86rem; line-height:1.5; }
.mon-breach-upds { margin-top:8px; border-top:1px solid rgba(127,127,127,.18); padding-top:8px; display:flex; flex-direction:column; gap:6px; }
.mon-breach-upd { font-size:.82rem; }
.mon-breach-tpl-note { font-size:.8rem; color:var(--fg-muted); line-height:1.5; background:rgba(245,158,11,.08); border:1px solid rgba(245,158,11,.25); border-radius:8px; padding:8px 11px; }
.mon-breach-updform { margin-top:10px; border-top:1px solid rgba(127,127,127,.18); padding-top:12px; display:flex; flex-direction:column; gap:8px; }
.mon-breach-updform-hint { font-size:.8rem; color:var(--fg-muted); line-height:1.4; }
.mon-breach-updform textarea { min-height:80px; resize:vertical; }
.mon-breach-updform-acts { display:flex; gap:10px; }
.mon-breach-export { margin-top:12px; border-top:1px solid rgba(127,127,127,.18); padding-top:12px; display:flex; flex-direction:column; gap:8px; }
.mon-breach-pre { white-space:pre-wrap; font-family:monospace; font-size:.8rem; line-height:1.5; background:rgba(127,127,127,.10); border:1px solid rgba(127,127,127,.20); border-radius:8px; padding:12px 14px; max-height:340px; overflow:auto; color:var(--fg); }
@media (max-width:560px){ .mon-breach-form { grid-template-columns:1fr; } }
.mon-mono         { font-family:monospace; }
.mon-num-danger   { color:#ef4444; }
.mon-num-warn     { color:#f59e0b; }
/* диск-заполнение: цвет по уровню (вместо el.style.background) */
.mon-fill-ok      { background:#22c55e; }
.mon-fill-warn    { background:#f59e0b; }
.mon-fill-danger  { background:#ef4444; }
/* nginx коды состояния */
.mon-codes        { display:flex; flex-wrap:wrap; gap:8px; }
.mon-code-pill    { padding:3px 9px; border-radius:6px; font-size:.8rem; font-weight:700; color:#fff; }
.mon-code-2xx     { background:#22c55e; }
.mon-code-3xx     { background:#3b82f6; }
.mon-code-4xx     { background:#f59e0b; }
.mon-code-5xx     { background:#ef4444; }
.mon-note-sm      { font-size:.72rem; margin-top:8px; }
.mon-eyebrow-sp   { margin-top:10px; }
.mon-row-split-sm { display:flex; justify-content:space-between; font-size:.8rem; padding:2px 0; }
.mon-path-muted   { font-family:monospace; opacity:.8; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mon-row-split-sm > b { flex-shrink:0; margin-left:8px; }
/* 7-дневные столбики активности */
.mon-bars         { display:flex; align-items:flex-end; gap:10px; height:140px; }
.mon-bar-col      { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; height:100%; justify-content:flex-end; }
.mon-bar-cap      { font-size:.7rem; }
.mon-bar-track    { width:100%; flex:1; display:flex; align-items:flex-end; background:rgba(127,127,127,.08); border-radius:5px; overflow:hidden; }
.mon-bar-fill     { width:100%; background:linear-gradient(180deg,#6366f1,#8b5cf6); border-radius:5px 5px 0 0; }
.mon-bar-day      { font-size:.68rem; }
/* таблицы: жирная ячейка, нумерический столбец, nowrap-действия */
.mon-cell-strong  { font-weight:600; }
.mon-cell-bold    { font-weight:700; }
.mon-cell-nowrap  { white-space:nowrap; }
.mon-cell-right   { text-align:right; }
.mon-cell-center  { text-align:center; }
.mon-cell-money   { text-align:right; color:#22c55e; font-weight:700; }
.mon-readonly     { font-size:.78rem; }
/* KPI числа разных размеров (вместо инлайн font-size) */
.mon-kpi-num--sm  { font-size:1rem; }
.mon-kpi-num--md  { font-size:1.4rem; }
.mon-kpi-num--lg  { font-size:1.6rem; }
/* env-сохранение: кнопки в ряд */
.mon-env-actions  { margin-top:12px; display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
.mon-btn-restart  { color:#f59e0b; border:1px solid rgba(245,158,11,.4); background:transparent; }
/* бухгалтеры: цветные кнопки блок/разблок/удалить */
.mon-btn-warn     { color:#f59e0b; border-color:rgba(245,158,11,.45); }
.mon-btn-ok       { color:#22c55e; border-color:rgba(34,197,94,.45); }
.mon-btn-danger   { color:#ef4444; border-color:rgba(239,68,68,.4); }
/* инвойсы: иконки просмотр/скачать */
.mon-inv-actions  { display:inline-flex; gap:12px; align-items:center; justify-content:center; }
/* legal: бейдж acceptance, текущая версия, require-кнопка */
.mon-badge-accept { font-size:.68rem; background:#f59e0b; color:#fff; border-radius:8px; padding:1px 7px; }
.mon-cur-mark     { color:#22c55e; font-size:.72rem; }
/* legal history iframe-превью */
.mon-hist-frame   { display:none; width:100%; height:320px; border:1.5px solid var(--border-2); border-radius:8px; background:#fff; margin-top:12px; }
.mon-hist-frame.is-shown { display:block; }
/* legal журнал: grant/revoke */
.mon-act-grant    { color:#22c55e; }
.mon-act-revoke   { color:#ef4444; }

/* ---- base.html: tfConfirm + showToast (строгий CSP, без inline style=) ---- */
.tfc-overlay   { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:1000001; display:flex; align-items:center; justify-content:center; }
.tfc-box       { background:var(--card,#1a1d27); border:1px solid var(--border-2,var(--border,#2d3148)); border-radius:16px; padding:28px 32px; max-width:440px; width:90%; box-shadow:0 8px 40px rgba(0,0,0,.4); }
.tfc-title     { font-size:1rem; font-weight:700; color:var(--fg,#e2e8f0); margin-bottom:8px; }
.tfc-msg       { font-size:.92rem; color:var(--muted,#94a3b8); margin-bottom:24px; line-height:1.5; }
.tfc-actions   { display:flex; gap:12px; justify-content:flex-end; }
/* Фон поля — var(--surface), а не неіснуюча var(--bg-2): та завжди падала на
   запасний #12141c, тож у світлій темі тут був темний текст на темному тлі. */
.tfc-input     { width:100%; margin:-12px 0 20px; padding:9px 12px; border-radius:8px; border:1.5px solid var(--border-2,var(--border,#2d3148)); background:var(--surface,#12141c); color:var(--fg,#e2e8f0); font-size:.9rem; box-sizing:border-box; }
.tfc-input:focus { outline:none; border-color:var(--brand,#6366f1); }
.tfc-btn       { padding:9px 20px; border-radius:8px; cursor:pointer; font-size:.9rem; }
.tfc-cancel    { border:1.5px solid var(--border-2,var(--border,#2d3148)); background:none; color:var(--fg,#e2e8f0); }
.tfc-ok        { border:none; color:#fff; font-weight:600; }
.tfc-ok--danger{ background:#ef4444; }
.tfc-ok--brand { background:var(--brand,#6366f1); }
/* тост: статичная раскладка в классе; цвета/анимация — через data-theme и CSSOM transform */
.tf-toast      { position:fixed; top:24px; left:50%; transform:translateX(calc(-50% + 120vw)); display:flex; align-items:center; gap:12px; padding:14px 22px; border-radius:14px; font-size:.95rem; font-weight:600; z-index:9999999; opacity:0; min-width:240px; max-width:440px; border:1.5px solid #e2e8f0; transition:transform .5s cubic-bezier(.22,1,.36,1), opacity .4s ease; box-shadow:0 14px 40px rgba(0,0,0,.16); color:#0f172a; }
[data-theme="dark"] .tf-toast { border-color:rgba(255,255,255,.08); box-shadow:0 14px 40px rgba(0,0,0,.5); color:#f1f5f9; }
.tf-toast-ic   { font-size:1.3rem; line-height:1; flex:0 0 auto; }
/* фон + левая кайма по типу */
.tf-toast--success { background:#f0fdf4; border-left:4px solid #22c55e; }
.tf-toast--error,
.tf-toast--danger  { background:#fff1f2; border-left:4px solid #ef4444; }
.tf-toast--warning { background:#fffbeb; border-left:4px solid #f59e0b; }
.tf-toast--info    { background:#eef2ff; border-left:4px solid #6366f1; }
[data-theme="dark"] .tf-toast--success { background:#052e16; }
[data-theme="dark"] .tf-toast--error,
[data-theme="dark"] .tf-toast--danger  { background:#2d0a0a; }
[data-theme="dark"] .tf-toast--warning { background:#1c1300; }
[data-theme="dark"] .tf-toast--info    { background:#1e1b4b; }

/* ---- translate_progress.html: показ/скрытие без inline style= ---- */
.tfprog-inline-form { display:inline; }
.tfprog-bar--done   { background:#22c55e !important; }   /* 100% — сплошной зелёный поверх градиента */
.tfprog-hidden      { display:none !important; }
.tfprog-actions-show{ display:flex !important; }

/* Карточка не должна «подпрыгивать» по ходу перевода. Скачки давали два места:
   • #tfProgHint — при завершении JS пишет туда s.error || '', то есть обычно
     ПУСТУЮ строку; абзац схлопывался с двух строк до нуля и всё уезжало вверх;
   • #tfProgTitle — «Перекладаємо документ …» → «Переклад готовий»: на узком
     экране это смена числа строк.
   Резервируем высоту заранее (как уже сделано для строки процентов). em, а не
   px — чтобы держалось при любом размере шрифта. Спиннер скрывается через
   display:none и тоже освобождал бы место, поэтому его габарит резервирует
   обёртка. */
#tfProgTitle { min-height:1.4em; }
#tfProgHint  { min-height:2.8em; }          /* две строки: «N стор. · ~X–Y сек.» */
@media (max-width:520px){
  /* На узком экране длинный заголовок («Перекладаємо документ …») переносится на
     две строки, а короткий («Переклад готовий») — на одну: замер дал скачок 22px.
     Подсказка там тоже длиннее. Резервируем по БОЛЬШЕМУ из состояний. */
  #tfProgTitle { min-height:2.8em; }
  #tfProgHint  { min-height:4.2em; }
}
.tfprog-spinner-slot { min-height:calc(3.5rem + 22px); }   /* размер спиннера + его margin-bottom */

/* ---- history.html: строка истории (раньше inline style=) ---- */
.tf-history-row { display:flex; gap:14px; align-items:center; padding:12px 14px; border:1px solid var(--border-2,var(--border)); border-radius:10px; background:var(--card,transparent); }
.tf-history-row.is-purged { opacity:.6; }
/* Телефон: дії переносяться під назву, а не стискають її до кількох літер. */
.tf-history-row { flex-wrap:wrap; }
.tf-history-row > .s-59eddc67 { flex:1 1 220px; }
/* Кнопки рядка (Відкрити / Виправити / XML / Видалити) на вузькому екрані — переносяться,
   а не вилазять за картку (390px, 15.10.2026). */
.tf-history-row > .s-a76d597a { flex-wrap:wrap; max-width:100%; min-width:0; }
@media (max-width: 480px) { .hist-tabs { flex-wrap: wrap; overflow-x: visible; } }
.tf-history-actions { flex-wrap:wrap; }
@media (max-width:480px){
  .tf-history-actions { width:100%; }
  .tf-history-actions .btn { white-space:normal; }
}
/* Уведомление об уже удалённом документе — нейтрально-серое (действие свершилось,
   не оранжевый «спасите PDF»). Перебивает оранжевый цвет expiring-стиля s-4ce2fa75. */
.tf-purged-note { color: var(--muted, #64748b) !important; }
/* Пагинация истории */
.tf-history-pager { display:flex; align-items:center; justify-content:center; gap:14px; margin-top:16px; }
.tf-history-pager-info { font-size:.85rem; color:var(--muted,#64748b); }

/* ---- balance.html: модалка оплаты (строгий CSP, без inline style=) ---- */
.tfpay-head      { display:flex; align-items:center; gap:12px; margin-bottom:6px; }
.tfpay-head-ic   { width:40px; height:40px; border-radius:10px; background:rgba(196,144,32,.12); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.tfpay-head-ic i { font-size:1.1rem; color:#c49020; }
.tfpay-head-h    { margin:0; font-size:1.05rem; font-weight:700; }
/* Ориентировочная сумма в гривне под ценой в евро. Мелко и приглушённо: это
   валюта расчёта, а не вторая цена — крупная цифра в гривне отпугивает
   клиента из ЕС, к которому обращена витрина. */
.tfpay-head-uah  { margin-top:2px; font-size:.75rem; color:var(--muted); }
.tfpay-choose-p  { margin:0 0 18px; }
/* кнопки выбора способа — общая раскладка */
.tfpay-opt       { width:100%; text-align:left; border-radius:12px; padding:16px 18px; position:relative; margin-bottom:12px; cursor:pointer; }
.tfpay-opt--card { border:1.5px solid var(--brd,#2d3148); margin-bottom:0; }
.tfpay-opt--disabled { background:rgba(255,255,255,.02); border:1.5px solid var(--brd,#2d3148); cursor:not-allowed; opacity:.55; }
.tfpay-badge     { position:absolute; top:-10px; right:16px; color:#fff; font-size:.68rem; font-weight:700; padding:2px 10px; border-radius:20px; letter-spacing:.04em; }
.tfpay-badge--rec  { background:#22c55e; }
.tfpay-badge--soon { background:var(--brd,#3a3f55); color:var(--muted); font-size:.66rem; letter-spacing:.03em; }
.tfpay-opt-row   { display:flex; align-items:center; gap:14px; }
.tfpay-opt-ic        { font-size:1.5rem; flex-shrink:0; }
.tfpay-opt-ic--bank  { color:#22c55e; }
.tfpay-opt-ic--muted { color:var(--muted); }
.tfpay-opt-t     { font-weight:700; font-size:.98rem; margin-bottom:2px; }
.tfpay-opt-h     { font-size:.82rem; color:var(--muted); line-height:1.4; }
/* шаг 2: назад + карта-контейнер */
.tfpay-back      { background:none; border:none; color:var(--muted); font-size:.85rem; cursor:pointer; padding:0; margin-bottom:14px; }
.tfpay-card-box  { margin-top:8px; border:1px solid var(--brd,#2d3148); border-radius:16px; padding:20px; background:rgba(255,255,255,.015); }
.tfpay-card-hd   { display:flex; align-items:center; gap:8px; margin-bottom:4px; }
.tfpay-card-hd i { color:#22c55e; font-size:1.1rem; }
.tfpay-card-hd-t { font-weight:700; font-size:1rem; }
.tfpay-card-hint { margin:0 0 16px; font-size:.86rem; }
/* ── Вкладки секции «Баланс» ──────────────────────────────────────────────── */
.tf-tabs         { display:flex; gap:4px; flex-wrap:wrap; margin:-4px 0 2px;
                   border-bottom:1px solid var(--brd,#23283a); padding-bottom:0; }
.tf-tab          { display:inline-flex; align-items:center; gap:7px;
                   padding:10px 16px; border:0; background:none; cursor:pointer;
                   color:var(--muted); font-size:.9rem; font-weight:600;
                   border-bottom:2px solid transparent; margin-bottom:-1px;
                   border-radius:8px 8px 0 0; transition:color .15s, background .15s; }
.tf-tab:hover    { color:var(--fg,#e6e8ef); background:rgba(255,255,255,.03); }
.tf-tab.is-active{ color:var(--fg,#e6e8ef); border-bottom-color:#6366f1; }
.tf-tab i        { font-size:1rem; }
/* Панель скрыта РАЗМЕТКОЙ, а не прозрачностью: скрытая вкладка не должна
   ловить фокус с клавиатуры и попадать в поиск по странице. */
.tf-pane         { display:none; }
.tf-pane.is-active { display:block; }
/* Внутри панели своя сетка: панели растянуты на всю ширину внешней сетки, и без
   этого карточки внутри легли бы в один столбец. */
/* align-items:start — иначе строка сетки берёт высоту самой ВЫСОКОЙ карточки,
   и короткая соседка растягивается до неё: под «Пройти підказки» рядом с
   «Мовою інтерфейсу» (13 кнопок) зияло пустое поле в пол-экрана. Со start
   каждая карточка занимает ровно свою высоту. Подбор соседей по высоте всё
   равно нужен — он убирает не пустоту внутри карточки, а рваный край
   колонок, — но пустоты чинятся здесь. */
.tf-pane > .security-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:start; }
@media (max-width:900px){
  .tf-pane > .security-grid { grid-template-columns:1fr; }
  .tf-tab      { padding:9px 12px; font-size:.84rem; }
}

/* ── Список выставленных счетов (секция «Баланс») ─────────────────────────── */
.tfinv-hint      { margin:0 0 14px; font-size:.86rem; }
.tfinv-list      { display:flex; flex-direction:column; gap:2px; }
/* Колонки фиксированной ширины у суммы и статуса: карточка растянута на всю
   сетку, и при auto-колонках сумма «плавала» бы по горизонтали от строки к
   строке (у одной 30.00, у другой 150.00) — глазу не за что зацепиться.
   Фиксированная колонка ставит их в один столбец. */
/* СЕТКА ОБЩАЯ ДЛЯ ВСЕХ СТРОК, а не своя у каждой. grid на самой строке даёт
   колонки по её собственному содержимому: у оплаченного счёта в действиях одна
   иконка, у неоплаченного две кнопки — и сумма со статусом разъезжались от
   строки к строке, глазу не за что зацепиться (видно на скриншоте 09.09.2026).
   Раскладываем строки как subgrid общего контейнера: колонки считаются ОДИН
   раз по самой широкой строке. */
.tfinv-list      { display:grid;
                   grid-template-columns:minmax(0,1fr) auto auto auto;
                   gap:2px; }
.tfinv-row       { display:grid; grid-column:1 / -1;
                   grid-template-columns:subgrid; align-items:center;
                   gap:8px 18px; padding:10px 14px; border-radius:10px;
                   border:1px solid var(--brd,#23283a); background:rgba(255,255,255,.015); }
.tfinv-row + .tfinv-row { margin-top:0; }
/* Жёсткой ширины больше нет: 150px под статус оставляли пустую полосу слева, а
   44px под действия физически не вмещали две текстовые кнопки — они наезжали
   на бейдж. Выравнивание теперь даёт subgrid, а не подобранные числа. */
.tfinv-sum       { text-align:right; }
.tfinv-st        { justify-self:start; }
.tfinv-act       { justify-self:end; display:flex; gap:8px; align-items:center;
                   justify-content:flex-end; flex-wrap:nowrap; }
/* Запасной вариант для браузеров без subgrid (Safari < 16): там строка сама
   себе сетка, и колонки держим минимумами. Хуже выравнивание, но не поломка. */
@supports not (grid-template-columns: subgrid) {
  .tfinv-list    { display:flex; flex-direction:column; }
  .tfinv-row     { grid-template-columns:minmax(0,1fr) auto auto auto; }
  .tfinv-sum     { min-width:92px; }
  .tfinv-st      { min-width:118px; }
}
.tfinv-num       { font-weight:700; font-size:.92rem; letter-spacing:.02em; }
.tfinv-meta      { font-size:.78rem; color:var(--muted); margin-top:2px; }
.tfinv-sum       { font-variant-numeric:tabular-nums; font-weight:700; font-size:.92rem; white-space:nowrap; }
.tfinv-badge     { display:inline-block; padding:3px 9px; border-radius:999px;
                   font-size:.72rem; font-weight:700; letter-spacing:.03em; white-space:nowrap; }
.tfinv-badge--paid { background:rgba(34,197,94,.14); color:#4ade80; }
.tfinv-badge--wait { background:rgba(148,163,184,.14); color:var(--muted); }
.tfinv-badge--fail { background:rgba(239,68,68,.12); color:#f87171; }

/* Кнопки строки — СВОИ, а не ds-btn-* из модалок. Те рассчитаны на футер
   диалога (padding 8/18, крупная пилюля) и в списке выглядели тяжелее самих
   счетов, перетягивая внимание с номера и суммы. btn-sm на них не действует:
   это отдельное семейство классов. */
.tfinv-btn       { display:inline-flex; align-items:center; justify-content:center;
                   gap:6px; padding:5px 12px; border-radius:8px;
                   font-size:.78rem; font-weight:600; line-height:1.4;
                   white-space:nowrap; cursor:pointer; text-decoration:none;
                   border:1px solid transparent; transition:background .15s,
                   border-color .15s, color .15s; }
.tfinv-btn:focus-visible { outline:2px solid #6366f1; outline-offset:2px; }
.tfinv-btn--pay  { background:#4f46e5; border-color:#4f46e5; color:#fff; }
.tfinv-btn--pay:hover { background:#4338ca; border-color:#4338ca; }
/* Отказ — вторичное действие, поэтому тише кнопки оплаты: сплошная заливка
   рядом с «Оплатити» читалась бы как равнозначный выбор. */
.tfinv-btn--drop { background:transparent; border-color:var(--brd,#23283a);
                   color:var(--muted); }
.tfinv-btn--drop:hover { border-color:#94a3b8; color:var(--fg,#e2e8f0); }
/* PDF — иконка без подписи, поэтому квадратная и с доступным именем в title. */
.tfinv-btn--pdf  { padding:5px 9px; background:transparent;
                   border-color:var(--brd,#23283a); color:var(--muted); }
.tfinv-btn--pdf:hover { border-color:#94a3b8; color:var(--fg,#e2e8f0); }
.tfinv-btn--pdf i { font-size:1rem; line-height:1; }
@media (max-width:720px){
  /* На узком экране колонки не помещаются: номер занимает всю строку, под ним
     сумма и статус, действия — справа. Иначе текст ломается переносами внутри
     ячеек. */
  .tfinv-list    { grid-template-columns:auto auto 1fr; }
  .tfinv-row     { row-gap:8px; }
  .tfinv-main    { grid-column:1 / -1; }
  .tfinv-sum     { text-align:left; }
  @supports not (grid-template-columns: subgrid) {
    .tfinv-row   { grid-template-columns:auto auto 1fr; }
    .tfinv-sum, .tfinv-st { min-width:0; }
  }
}
@media (max-width:560px){
  /* Узкий экран: две текстовые кнопки рядом с суммой и статусом в строку уже
     не встают — на 480px «Відмовитись» наезжала на бейдж (замерено в браузере).
     Отдаём действиям отдельную строку целиком: иначе они либо сжимаются до
     нечитаемого, либо переносят текст внутри себя. */
  .tfinv-list    { grid-template-columns:auto 1fr; }
  /* Действия — своей строкой и ПО ЛЕВОМУ краю, как номер, дата и сумма над
     ними: прижатые вправо, они висели бы отдельно от собственного счёта. */
  .tfinv-act     { grid-column:1 / -1; justify-self:stretch;
                   justify-content:flex-start; }
  @supports not (grid-template-columns: subgrid) {
    .tfinv-row   { grid-template-columns:auto 1fr; }
  }
}

/* iframe оплаты картой (hutko/ПУМБ; ранее Plata by mono).
   Страница эквайера приходит СВЕТЛОЙ, и это не настраивается: ни тема, ни
   состав методов, ни язык не управляются ни параметрами запроса, ни query
   страницы — всё зашито на стороне hutko (проверено 07.09.2026).
   Поэтому не пытаемся её перекрасить, а оформляем ОПРАВУ: светлая карточка
   на тёмной странице должна читаться как намеренная вставка платёжного
   провайдера, а не как сломанная вёрстка. */
.tfpay-card-frame     { margin-top:6px; }
.tfpay-mono-iframe    {
  width:100%;
  /* 780px: форма эквайера подстраивается под ЛЮБУЮ заданную высоту и лишнее
     скроллит внутри себя, поэтому «правильной» высоты у неё нет — есть та, при
     которой не появляется вторая полоса прокрутки рядом с полосой модалки.
     Замерено: при 460px список методов обрезался, при 780px помещается
     целиком. */
  min-height:780px;
  border:0;
  border-radius:12px;
  background:#fff;
  /* Светлый блок на тёмном фоне без границы выглядит вырезанным: мягкая
     рамка и тень отделяют его от страницы. */
  box-shadow:0 2px 14px rgba(0,0,0,.35);
  display:block;
}
.tfpay-pms       { display:flex; align-items:center; justify-content:center; gap:14px; margin-top:16px; padding-top:14px; border-top:1px solid var(--brd,#23283a); opacity:.7; }
.tfpay-pm-card   { font-size:1.35rem; }
.tfpay-pm-txt    { font-size:.78rem; font-weight:700; letter-spacing:.06em; color:var(--muted); }
.tfpay-note      { display:flex; align-items:center; justify-content:center; gap:6px; margin-top:14px; font-size:.76rem; color:var(--muted); }
/* загрузка / готово */
.tfpay-loading   { text-align:center; padding:40px 0; color:var(--muted); }
.tfpay-loading i { font-size:1.6rem; }
.tfpay-loading-t { margin-top:10px; }
.tfpay-done      { text-align:center; padding:30px 0; }
.tfpay-done-ic   { font-size:2.4rem; color:#22c55e; }
.tfpay-done-t    { margin-top:12px; font-weight:600; }
.tfpay-done-act  { margin-top:14px; }
.tfpay-link-btn  { background:none; border:none; color:var(--muted); font-size:.85rem; cursor:pointer; text-decoration:underline; }
/* строка реквизитов */
.tfpay-row       { display:flex; justify-content:space-between; gap:10px; padding:7px 0; border-bottom:1px solid var(--brd,#23283a); }
.tfpay-row-l     { font-size:.82rem; color:var(--muted); }
.tfpay-row-v     { font-size:.9rem; font-weight:600; }
.tfpay-row-v--mono { font-family:monospace; }

/* ---- balance.html: реквизиты банковского перевода (EPC-QR) ---- */
.tfpay-qr        { text-align:center; margin:4px 0 14px; }
.tfpay-qr img    { width:150px; height:150px; border:1px solid var(--brd,#23283a); border-radius:8px; padding:6px; background:#fff; }
.tfpay-qr-note   { font-size:.72rem; color:var(--muted); margin-top:6px; }
.tfpay-bank-h    { margin:0 0 4px; }
.tfpay-bank-h i  { color:#c49020; }
.tfpay-bank-hint { margin:0 0 14px; }
.tfpay-ref       { color:#c49020; }
.tfpay-bank-note { background:rgba(196,144,32,.08); border:1px solid rgba(196,144,32,.25); border-radius:8px; padding:9px 11px; margin-top:12px; font-size:.8rem; color:var(--muted); }
.tfpay-bank-note i { color:#c49020; }
.tfpay-bank-pdf  { margin-top:14px; text-align:center; }
.tfpay-bank-ok   { margin-top:10px; text-align:center; }
.tfpay-ok-btn    { background:none; border:none; color:var(--muted); font-size:.82rem; cursor:pointer; }

/* ---- translate.html: показ/скрытие + строки модалки подтверждения ---- */
.tf-show-inline-block { display:inline-block !important; }
.tf-show-flex         { display:flex !important; }
.tfconf-likely  { margin-top:8px; font-weight:600; color:var(--fg); }
.tfconf-actual { margin-top:6px; font-weight:600; }
.tfconf-reserve { margin-top:4px; color:var(--muted); font-size:.8rem; }
.tfconf-eta     { margin-top:6px; color:var(--muted); }
.tfconf-low     { margin-top:10px; color:#dc2626; }
.tfconf-lang    { margin-top:10px; padding:8px 10px; border-radius:8px;
                  background:color-mix(in srgb, #d97706 12%, transparent); color:var(--text); }
.tfconf-lang button { margin-top:6px; }
.tf-hint--ok    { color:#16a34a; }
.tf-hint--muted { color:var(--muted); }

/* ---- translate_result.html: попап редактуры сегмента (без inline style=) ---- */
.tfpop-reason   { color:#d97706; font-weight:600; margin-bottom:6px; }
.tfpop-airead   { color:var(--muted); margin-bottom:6px; font-size:.82rem; }
.tfpop-airead b { color:var(--fg); }
.tfpop-orig     { cursor:pointer; border:1px solid var(--border-2,var(--border)); background:transparent; color:var(--fg); border-radius:6px; padding:3px 10px; font-size:.8rem; margin-bottom:10px; display:inline-flex; align-items:center; gap:5px; }
.tfpop-variants-lbl { font-size:.78rem; color:var(--muted); margin-bottom:4px; }
.tfpop-variants { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.tfpop-alt      { cursor:pointer; border:1px solid var(--brand,#6366f1); background:transparent; color:var(--brand,#6366f1); border-radius:6px; padding:3px 10px; font-size:.82rem; }
.tfpop-custom-row { display:flex; gap:6px; }
.tfpop-input    { flex:1; min-width:0; border:1px solid var(--border-2,var(--border)); border-radius:6px; padding:4px 8px; background:var(--bg,transparent); color:var(--fg); font-size:.85rem; }
.tfpop-apply    { cursor:pointer; border:none; background:var(--brand,#6366f1); color:#fff; border-radius:6px; padding:4px 12px; font-size:.82rem; font-weight:600; }
/* drag-оверлей разделителя сравнения */
.tf-split-overlay { position:fixed; inset:0; z-index:99998; cursor:col-resize; display:none; }
.tf-split-overlay.is-dragging { display:block; }
/* статус сохранения */
.tf-save--dirty { color:#d97706; }
.tf-save--ok    { color:#16a34a; }
.tf-save--err   { color:#dc2626; }

/* ---- monitoring.html (тестовый модал selfcheck/smoke/pytest) ---- */
.mon-err        { color:var(--c-rejected,#dc2626); }
.mon-head       { font-weight:700; margin-bottom:8px; }
.mon-head--lg   { font-weight:700; margin-bottom:10px; }
.mon-test-row   { display:flex; justify-content:space-between; gap:12px; padding:7px 0; border-bottom:1px solid var(--border); }
.mon-test-right { text-align:right; }
.mon-stat-row   { display:flex; gap:18px; margin-bottom:10px; }
.mon-stat-row--wrap { display:flex; gap:18px; margin-bottom:10px; flex-wrap:wrap; }
.mon-test-item  { padding:6px 0; border-bottom:1px solid var(--border); font-size:.84rem; }
.mon-test-item--sm { padding:6px 0; border-bottom:1px solid var(--border); font-size:.82rem; }
.mon-pass       { color:#16a34a; }
.mon-err-inline { color:#dc2626; }

/* ---- mail_admin.html: показ/скрытие оверлеев + JS-разметка писем ---- */
.ma-show-flex   { display:flex !important; }
.ma-show-block  { display:block !important; }
/* список ящиков: действия */
.ma-box-actions { display:flex; gap:6px; margin-left:8px; }
.ma-btn-del     { color:#f87171; border:1.5px solid rgba(239,68,68,.3); background:rgba(239,68,68,.08); border-radius:8px; padding:4px 8px; }
/* список писем */
.ma-empty--err  { color:#f87171; }
.ma-row-dir     { display:flex; align-items:center; gap:5px; }
.ma-dir-in      { color:#4ade80; font-size:.7rem; flex-shrink:0; }
.ma-dir-out     { color:var(--brand); font-size:.7rem; flex-shrink:0; }
.ma-from-cell   { flex:1; min-width:0; }
.ma-count-badge { background:var(--brand); color:#fff; border-radius:999px; font-size:.7rem; font-weight:700; padding:1px 7px; flex-shrink:0; }
/* «Перекласти»: кнопка лише там, де є Translator API браузера (клас ставить mail_admin_translate.js) */
.ma-tr-btn { display:none; }
.ma-tr-ok .ma-tr-btn { display:inline-flex; }
.ma-tr-out { margin:10px 12px 12px; padding:10px 12px; border-left:3px solid var(--brand); border-radius:6px; background:rgba(99,102,241,.07); white-space:pre-wrap; font-size:.9rem; line-height:1.55; color:var(--fg); }
.ma-tr-out--err { border-left-color:#dc2626; }
.ma-tr-hd { font-size:.75rem; font-weight:600; color:var(--fg-muted); margin-bottom:6px; white-space:normal; }
.ma-del-x       { background:none; border:none; color:#f87171; cursor:pointer; font-size:.85rem; padding:2px 4px; flex-shrink:0; line-height:1; }
/* бейджи направления */
.ma-badge-out   { background:rgba(99,102,241,.12); border:1px solid rgba(99,102,241,.3); border-radius:6px; padding:2px 8px; font-size:.75rem; color:var(--brand); font-weight:600; }
.ma-badge-in    { background:rgba(74,222,128,.1); border:1px solid rgba(74,222,128,.25); border-radius:6px; padding:2px 8px; font-size:.75rem; color:#4ade80; font-weight:600; }
/* вложения */
.ma-attach      { display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:8px; border:1.5px solid var(--border-2); font-size:.78rem; color:var(--fg); text-decoration:none; margin:2px; }
.ma-attach-size { color:var(--fg-muted); }
.ma-attach-wrap { margin-top:8px; }
/* вирус-предупреждение */
.ma-virus       { background:rgba(239,68,68,.12); border:1.5px solid rgba(239,68,68,.3); border-radius:10px; padding:10px 14px; margin-bottom:12px; color:#dc2626; font-size:.83rem; font-weight:600; }
.ma-attach--blocked { opacity:.6; cursor:not-allowed; text-decoration:line-through; color:#dc2626; }
/* карточка письма (тред) */
.ma-card        { border:1.5px solid var(--border-2); border-radius:12px; margin-bottom:12px; overflow:hidden; }
.ma-card-hd     { background:var(--surface-2); padding:10px 14px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; border-bottom:1px solid var(--border-2); }
.ma-card-from   { font-size:.8rem; color:var(--fg-muted); }
.ma-card-from b { color:var(--fg); }
.ma-card-date   { font-size:.78rem; color:var(--fg-muted); margin-left:auto; }
.ma-card-acts   { display:flex; gap:4px; }
.ma-btn-reply   { background:rgba(99,102,241,.08); border:1.5px solid rgba(99,102,241,.25); border-radius:8px; padding:3px 8px; color:var(--brand); cursor:pointer; font-size:.75rem; }
.ma-btn-delmsg  { background:rgba(239,68,68,.08); border:1.5px solid rgba(239,68,68,.25); border-radius:8px; padding:3px 8px; color:#f87171; cursor:pointer; font-size:.75rem; }
.ma-card-attach { padding:8px 14px; border-bottom:1px solid var(--border-2); }
.ma-card-body   { padding:14px; font-size:.88rem; color:var(--fg); line-height:1.7; white-space:pre-wrap; }
.ma-thread-subj { font-weight:700; font-size:.95rem; color:var(--fg); margin-bottom:14px; }
/* одиночный просмотр */
.ma-view-hd     { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.ma-view-acts   { display:flex; gap:6px; flex-shrink:0; }
.ma-btn-reply--lg  { background:rgba(99,102,241,.08); border:1.5px solid rgba(99,102,241,.25); border-radius:8px; padding:4px 10px; color:var(--brand); cursor:pointer; font-size:.78rem; }
.ma-btn-delmsg--lg { background:rgba(239,68,68,.08); border:1.5px solid rgba(239,68,68,.25); border-radius:8px; padding:4px 10px; color:#f87171; cursor:pointer; font-size:.78rem; }
/* composer-чип вложения */
.ma-chip        { display:inline-flex; align-items:center; gap:4px; padding:3px 10px; border-radius:8px; background:var(--surface-2); border:1.5px solid var(--border-2); font-size:.78rem; color:var(--fg); }
.ma-chip-size   { color:var(--fg-muted); }
/* тост */
.ma-toast       { position:fixed; top:32px; left:50%; transform:translateX(-50%); color:#fff; padding:14px 32px; border-radius:12px; font-weight:700; font-size:1rem; z-index:99999; box-shadow:0 8px 32px rgba(0,0,0,.22); transition:opacity .4s; white-space:nowrap; pointer-events:none; }
.ma-toast--ok   { background:#16a34a; }
.ma-toast--err  { background:#dc2626; }

/* ---- finance_tabs.js: JS-генерируемая разметка финансов (строгий CSP) ---- */
.fin-cell-right   { text-align:right; }
.fin-cell-right-nw{ text-align:right; white-space:nowrap; }
.fin-inline-form  { display:inline; }
.fin-inline-form--ml { display:inline; margin-left:8px; }
.fin-btn-cancel   { color:#ef4444; }
/* Вкладка «Повернення коштів»: обоснование суммы (FIFO по лотам) + куда платить */
.fin-refund-lot   { font-size:.8rem; white-space:nowrap; }
.fin-refund-dim   { opacity:.65; font-size:.75rem; }
.fin-refund-ok    { color:#16a34a; font-weight:600; font-size:.8rem; }
.fin-refund-warn  { color:#ef4444; font-size:.75rem; }
.fin-refund-btns  { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.fin-exp-row      { display:flex; gap:8px; flex-wrap:wrap; align-items:end; margin:12px 0; }
.fin-exp-lbl      { display:block; font-size:.78rem; margin-bottom:3px; }
/* Год — по содержимому, а не во всю карточку.
   ⚠️ Селектор ДВОЙНОЙ намеренно: .tf-input задаёт width:100%, живёт в tf.css,
   а tf.css подключается в base.html ПОСЛЕ theme.css. При равной специфичности
   (один класс) побеждает более поздний файл, поэтому одиночный .fin-exp-year
   молча проигрывал. */
.fin-exp-year.fin-exp-year { width:auto; min-width:0; flex:0 0 auto; }
/* .fin-exp-month удалён вместе с выбором месяца — период задаётся датами. */
.fin-exp-btns     { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:8px; }
/* Подпись «Швидкий вибір» стоит в ряду кнопок, а не над полем: блочный
   вариант .fin-exp-lbl сбивал бы выравнивание по вертикали. */
.fin-exp-btns .fin-exp-lbl { display:inline; margin-bottom:0; }
/* Выбранный пресет периода. Без подсветки нажатие кнопки выглядело как
   «ничего не произошло» — даты меняются ниже по странице, взгляд туда не идёт.
   !important нужен, потому что [data-theme=dark] .btn-light сам объявлен с
   !important и иначе перебивал бы фон. */
.fin-exp-btns .btn-light.fin-exp-active,
[data-theme="dark"] .fin-exp-btns .btn-light.fin-exp-active {
  background: var(--brand, #6366f1) !important;
  border-color: var(--brand, #6366f1) !important;
  color: #fff !important;
}
.fin-exp-info     { font-size:.8rem; margin-top:10px; }
.fin-acct-row     { display:flex; gap:8px; margin-bottom:12px; }
.fin-acct-email   { max-width:280px; }

/* ---- translate.html: ряд из 3 селектов (язык-источник / язык-перевод / страна)
   Фикс: ровно 3 колонки на десктопе (раньше auto-fit minmax давал скачки 3→2
   и пустой 0px-трек на промежуточных ширинах). На узких экранах — в столбик. ---- */
.tf-lang-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 14px; }
@media (max-width: 640px) {
  .tf-lang-row { grid-template-columns: 1fr; }
}

/* ---- секция «Правове»: список юр-документов ---- */
.legal-doc-list { display:flex; flex-direction:column; gap:8px; margin-top:6px; }
.legal-doc-item {
  display:flex; align-items:center; gap:12px;
  padding:11px 14px; border:1px solid var(--border-2,var(--border));
  border-radius:10px; background:var(--card,transparent);
  color:var(--fg); text-decoration:none; transition:background .12s, border-color .12s;
}
.legal-doc-item:hover { background:rgba(99,102,241,.08); border-color:var(--brand,#6366f1); }
.legal-doc-ic   { font-size:1.15rem; color:var(--brand,#6366f1); flex-shrink:0; }
.legal-doc-name { flex:1; min-width:0; font-weight:600; font-size:.92rem; }
.legal-doc-ext  { font-size:.85rem; color:var(--muted); flex-shrink:0; }

/* ---- translate_result: перемикання режимів Документ/Перевірка ----
   (раніше показ робився через style.display='', що не знімало display:none
   із CSS-класу .s-* після виносу inline-стилів) ---- */
.tf-mode-hidden { display: none !important; }
/* Вкладка «Повернення коштів»: кликабельные строки + модалка кейса */
.fin-table--rows tbody tr.fin-row-click { cursor:pointer; transition:background .12s; }
.fin-table--rows tbody tr.fin-row-click:hover,
.fin-table--rows tbody tr.fin-row-click:focus-visible { background:var(--bg-3,rgba(255,255,255,.04)); outline:none; }
.fin-rf-box    { max-width:560px; }
.fin-rf-grid   { display:grid; grid-template-columns:max-content 1fr; gap:10px 16px; align-items:start; margin-bottom:20px; font-size:.88rem; }
.fin-rf-k      { color:var(--muted,#94a3b8); white-space:nowrap; line-height:1.45; }
/* Значения могут быть длинными (email, IBAN, ошибка reverse) — переносим, а не
   вылезаем за колонку. */
.fin-rf-grid > div:nth-child(even) { min-width:0; overflow-wrap:anywhere; line-height:1.45; }
.fin-rf-lot    { display:flex; gap:12px; align-items:baseline; justify-content:space-between; max-width:300px; }
.fin-rf-lbl    { display:block; font-size:.8rem; color:var(--muted,#94a3b8); margin-bottom:6px; }
.fin-rf-ref    { margin-bottom:20px; }
/* .tfc-input тянет margin:-12px под обычную модалку (там перед ним .tfc-msg с
   отступом 24px). Здесь .tfc-msg нет → поле наезжало на свой лейбл. */
.fin-rf-input  { margin:0 !important; }
.fin-rf-actions{ flex-wrap:wrap; }
.fin-rf-reject { border:1.5px solid #ef4444; background:none; color:#ef4444; }
.fin-rf-reject:hover { background:#ef4444; color:#fff; }
/* SEPA-кейс: IBAN-реквизит с кнопкой копирования + сумма к переводу. */
.fin-rf-iban   { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.fin-rf-iban code { font-size:.9rem; letter-spacing:.3px; word-break:break-all; }
.fin-rf-copy   { border:1px solid var(--border,#cbd5e1); background:none; color:inherit;
                 border-radius:6px; padding:2px 8px; cursor:pointer; line-height:1;
                 font-size:.95rem; flex:none; }
.fin-rf-copy:hover { background:var(--surface-2,rgba(148,163,184,.15)); }
.fin-rf-amount { margin-top:4px; }

/* Вкладки истории (Переклади / Кошториси) */
/* Смуга вкладок прокручується: без цього на телефоні (360px) вона не
   вміщалася й тягнула вбік УСЮ сторінку, а не себе. Знайдено
   19.09.2026 на секції «Фінанси», перевірено заміром по всіх стрічках. */
.hist-tabs { display: flex; gap: 4px; margin: 4px 0 18px;
  border-bottom: 1px solid var(--border); overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.hist-tabs > * { flex: 0 0 auto; }
.hist-tab {
  padding: 9px 16px; color: var(--muted); text-decoration: none; font-size: 0.92rem;
  border-bottom: 2px solid transparent; display: inline-flex; align-items: center; gap: 6px;
}
.hist-tab:hover { color: var(--fg); }
.hist-tab.is-active { color: var(--fg); border-bottom-color: var(--brand, #4b59e6); font-weight: 600; }

/* ── Выставление счёта по смете ───────────────────────────────────────────
   Форма живёт в модалке (data-sec-modal="modal-invoice"), поля — только те,
   что меняются от счёта к счёту; всё постоянное берётся из настроек. */
.inv-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 14px 12px; margin: 10px 0 4px; }
.inv-field { display: flex; flex-direction: column; gap: 4px;
  font-size: .85rem; color: var(--muted); }
/* Имя и адрес заказчика — во всю ширину: адрес пишут в две строки, и в
   колонке 190px он нечитаем. */
.inv-field--wide { grid-column: 1 / -1; }
.inv-lbl { display: block; line-height: 1.2; }
.inv-req { color: #dc2626; }
.inv-field input, .inv-field textarea, .inv-field select {
  padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--surface, transparent); color: var(--fg); font-size: .95rem;
  font-family: inherit; }
.inv-field textarea { resize: vertical; min-height: 3.4em; }
.inv-field small { color: var(--muted); font-size: .75rem; }
.inv-error { color: #dc2626; font-size: .85rem; margin: 8px 0 0; }
/* Предупреждение о трёхдневном хранении: выделено, потому что его пропуск
   стоит человеку документа — восстановить счёт после стирания нельзя. */
.inv-warn { border-left: 3px solid #d97706; padding: 8px 12px;
  background: rgba(217,119,6,.08); border-radius: 6px; }
/* Пометка «счёт уже выставлен» вместо кнопки у сметы. */
.tf-inv-done { display: inline-flex; align-items: center; gap: 5px;
  font-size: .82rem; color: var(--muted); white-space: nowrap; }
/* Дві картки-входи («Бухгалтерський регістр», «Бухгалтерська звітність») — поруч; < 900 одна під одною. */
.fin-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 22px; }
.fin-cards .fin-ledger-row { margin-bottom: 0; flex-direction: column; align-items: stretch; gap: 4px;
  padding: 4px 0 14px; }
.fin-cards .fin-ledger-entry { flex: 1 1 auto; padding: 16px 18px; }
.fin-cards .fin-ledger-help { align-self: flex-start; margin-left: 18px; }
@media (max-width: 1199px) { .fin-cards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 699px) { .fin-cards { grid-template-columns: 1fr; } }
