/* ═══════════════════════════════════════════════════════════════════════
 * theme-commanddeck.css — Command Deck overlay
 *
 * Активна только при :root[data-theme="cd"]. Опт-ин через ?theme=cd в URL,
 * после чего localStorage.ts_theme = "cd" и приложение остаётся в этой
 * теме до явного выхода (?theme=default или toggleTheme()).
 *
 * Здесь только переопределение токенов и пара точечных правок.
 * Базовая раскладка/компоненты — из styles.css.
 * ═══════════════════════════════════════════════════════════════════════ */

:root[data-theme="cd"] {
  /* ── Палитра Command Deck ─────────────────────────────────────── */
  --cd-lime: #e4f222;
  --cd-lime-hover: #d4e217;
  --cd-indigo: #5e6ad2;
  --cd-emerald: #27a644;
  --cd-crimson: #eb5757;
  --cd-cyan: #02b8cc;
  --cd-onyx: #08090a;
  --cd-charcoal: #0f1011;
  --cd-obsidian: #161718;
  --cd-graphite: #23252a;
  --cd-iron: #323334;
  --cd-steel: #383b3f;
  --cd-slate: #62666d;
  --cd-fog: #8a8f98;
  --cd-mist: #d0d6e0;
  --cd-platinum: #e5e5e6;
  --cd-snow: #f7f8f8;

  /* ── Mapping в --color-* (основная палитра приложения) ─────────── */
  --color-primary: var(--cd-lime);
  --color-primary-hover: var(--cd-lime-hover);
  --color-primary-soft: rgba(228, 242, 34, 0.12);
  --color-accent: var(--cd-lime);
  --color-accent-soft: rgba(228, 242, 34, 0.14);
  --color-accent-ring: rgba(228, 242, 34, 0.32);

  --color-text: var(--cd-snow);
  --color-text-muted: var(--cd-fog);
  --color-text-faint: var(--cd-slate);

  --color-border: var(--cd-graphite);
  --color-border-strong: var(--cd-iron);

  --color-surface: var(--cd-charcoal);
  --color-surface-2: var(--cd-obsidian);
  --color-surface-app: var(--cd-onyx);
  --color-weekend: var(--cd-onyx);

  --color-sidebar-bg: var(--cd-charcoal);
  --color-sidebar-border: var(--cd-graphite);
  --color-sidebar-text: var(--cd-snow);
  --color-sidebar-muted: var(--cd-fog);

  --color-success: var(--cd-emerald);
  --color-success-soft: rgba(39, 166, 68, 0.12);
  --color-danger: var(--cd-crimson);
  --color-danger-soft: rgba(235, 87, 87, 0.12);
  --color-warning: var(--cd-lime);
  --color-warning-soft: rgba(228, 242, 34, 0.12);
  --color-violet: var(--cd-indigo);
  --color-violet-soft: rgba(94, 106, 210, 0.14);
  --color-slate-soft: var(--cd-obsidian);

  /* Радиусы — компактнее, как в Linear */
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-pill: 9999px;

  /* Тени темнее */
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.4);
  --shadow-lg: 0 8px 32px rgba(8, 9, 10, 0.6);
  --shadow-toast: 0 8px 24px rgba(0, 0, 0, 0.5);

  --skeleton-1: var(--cd-obsidian);
  --skeleton-2: var(--cd-graphite);

  --row-hover: var(--cd-obsidian);
  --row-hover-we: var(--cd-obsidian);
  --row-hover-name: var(--cd-graphite);
  --row-hover-total: var(--cd-graphite);

  /* ── Mapping в --rd-* (login redesign-палитра) ─────────────────── */
  --rd-primary: var(--cd-lime);
  --rd-primary-hover: var(--cd-lime-hover);
  --rd-primary-soft: rgba(228, 242, 34, 0.12);
  --rd-accent: var(--cd-lime);
  --rd-accent-glow: rgba(228, 242, 34, 0.10);
  --rd-text: var(--cd-snow);
  --rd-text-muted: var(--cd-fog);
  --rd-text-faint: var(--cd-slate);
  --rd-text-meta: var(--cd-slate);
  --rd-surface: var(--cd-charcoal);
  --rd-surface-2: var(--cd-obsidian);
  --rd-border: var(--cd-graphite);
  --rd-border-strong: var(--cd-iron);
  --rd-success: var(--cd-emerald);
  --rd-danger: var(--cd-crimson);
  --rd-radius-sm: 4px;
  --rd-radius-md: 6px;
  --rd-radius-lg: 8px;
  --rd-radius-xl: 12px;
  --rd-shadow-card: 0 2px 4px rgba(0, 0, 0, 0.4);
  --rd-shadow-md: 0 4px 14px rgba(0, 0, 0, 0.5);
  --rd-shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.6);
  --rd-shadow-primary: 0 0 0 1px rgba(228, 242, 34, 0.4), 0 2px 4px rgba(0, 0, 0, 0.4);

  /* Шрифты: Manrope ≈ Inter (gumanist grotesque), IBM Plex Mono ≈ JetBrains.
     Локальные .woff2 уже есть в /ui/fonts/fonts.css. */
  --rd-font-display: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --rd-font-ui: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --rd-font-mono: 'IBM Plex Mono', ui-monospace, Menlo, Monaco, 'Cascadia Code', monospace;

  font-feature-settings: "cv01", "ss03";
}

/* ── Светлый CD: shadcn brutalist (chalk + graphite + hairline) ───
   Полностью монохромная палитра — никакого lime в светлом режиме.
   Структура держится на 1px hairline-бордерах #e5e5e5, primary-action
   = solid black, типографика Geist (fallback Inter). */
:root[data-theme="cd"][data-cd-mode="light"] {
  /* Базовые токены — инвертируем под chalk/graphite */
  --cd-charcoal: #ffffff;     /* card surface (chalk) */
  --cd-obsidian: #f2f2f2;     /* mist — muted surface */
  --cd-graphite: #e5e5e5;     /* hairline — structural color */
  --cd-iron: #a1a1a1;         /* ash */
  --cd-steel: #737373;        /* concrete — secondary text */
  --cd-snow: #0a0a0a;         /* graphite — primary text */
  --cd-mist: #737373;
  --cd-fog: #737373;
  --cd-platinum: #171717;     /* carbon — inverted surface */

  /* CTA и акценты — solid graphite, никакого lime */
  --color-primary: #0a0a0a;
  --color-primary-hover: #171717;
  --color-primary-soft: #f2f2f2;
  --color-accent: #0a0a0a;
  --color-accent-soft: rgba(10, 10, 10, 0.06);
  --color-accent-ring: rgba(10, 10, 10, 0.18);

  /* Soft-цвета не сваливаемся в chromatic — все на mist */
  --color-success-soft: #f2f2f2;
  --color-danger-soft: #f2f2f2;
  --color-warning-soft: #f2f2f2;
  --color-violet-soft: #f2f2f2;
  --color-slate-soft: #f2f2f2;

  --row-hover: #f7f7f7;
  --row-hover-we: #f2f2f2;
  --row-hover-name: #ededed;
  --row-hover-total: #ededed;

  /* Шкала радиусов shadcn: 4/10/14/26/9999 */
  --radius-sm: 4px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 14px;
  --radius-pill: 9999px;
  --rd-radius-sm: 4px;
  --rd-radius-md: 10px;
  --rd-radius-lg: 14px;
  --rd-radius-xl: 14px;

  /* Тени — system-wide убраны, разделение через 1px hairline */
  --shadow-sm: 0 0 0 1px #e5e5e5;
  --shadow-md: 0 0 0 1px #e5e5e5;
  --shadow-lg: 0 0 0 1px #e5e5e5;
  --shadow-toast: 0 0 0 1px #e5e5e5;
  --rd-shadow-card: 0 0 0 1px #e5e5e5;
  --rd-shadow-md: 0 0 0 1px #e5e5e5;
  --rd-shadow-lg: 0 0 0 1px #e5e5e5;
  --rd-shadow-primary: 0 0 0 1px #0a0a0a;

  /* Шрифт унифицирован с тёмной CD: Manrope */
  --rd-font-display: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --rd-font-ui: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --rd-font-mono: 'IBM Plex Mono', ui-monospace, Menlo, Monaco, 'Cascadia Code', monospace;
}

/* Точечный override: var(--cd-onyx) как «фон страницы» → chalk #ffffff. */
:root[data-theme="cd"][data-cd-mode="light"] body,
:root[data-theme="cd"][data-cd-mode="light"] #app,
:root[data-theme="cd"][data-cd-mode="light"] .main,
:root[data-theme="cd"][data-cd-mode="light"] .content,
:root[data-theme="cd"][data-cd-mode="light"] .topbar,
:root[data-theme="cd"][data-cd-mode="light"] .leaflet-container {
  background: #ffffff;
}
:root[data-theme="cd"][data-cd-mode="light"] body {
  color: #0a0a0a;
  font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  letter-spacing: -0.011em;
}
:root[data-theme="cd"][data-cd-mode="light"] h1,
:root[data-theme="cd"][data-cd-mode="light"] h2,
:root[data-theme="cd"][data-cd-mode="light"] h3 {
  letter-spacing: -0.025em;
}
:root[data-theme="cd"][data-cd-mode="light"] ::-webkit-scrollbar-track {
  background: #f2f2f2;
}
:root[data-theme="cd"][data-cd-mode="light"] table.timesheet-table tbody td.weekend,
:root[data-theme="cd"][data-cd-mode="light"] table.timesheet-table tbody td.col-weekend {
  background: #f2f2f2;
}
:root[data-theme="cd"][data-cd-mode="light"] .cell-input:focus {
  background: #ffffff;
  outline: none;
  box-shadow: 0 0 0 2px #0a0a0a;
}
:root[data-theme="cd"][data-cd-mode="light"] .ec-we {
  background: #f2f2f2;
}
:root[data-theme="cd"][data-cd-mode="light"] #login-screen,
:root[data-theme="cd"][data-cd-mode="light"] #force-change-screen {
  background: #ffffff;
}

/* Login-кнопка: solid black с белым текстом, без lime */
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-btn,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #fcp-btn,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-2fa-btn {
  background: #0a0a0a;
  color: #ffffff;
  box-shadow: none;
}
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-btn:hover,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #fcp-btn:hover,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-2fa-btn:hover {
  background: #171717;
  color: #ffffff;
  box-shadow: none;
}

/* Primary-кнопка и lime-акценты в UI: на свет — solid black */
:root[data-theme="cd"][data-cd-mode="light"] .btn-primary {
  background: #0a0a0a;
  color: #ffffff;
  border-color: #0a0a0a;
}
:root[data-theme="cd"][data-cd-mode="light"] .btn-primary:hover {
  background: #171717;
  color: #ffffff;
}

/* Активная подсветка theme-switch в светлом: graphite кружок на mist */
:root[data-theme="cd"][data-cd-mode="light"] .theme-switch button.active {
  background: #ffffff;
  color: #0a0a0a;
  box-shadow: 0 0 0 1px #e5e5e5;
}

/* ── Базовый фон/типографика ───────────────────────────────────── */
:root[data-theme="cd"] body {
  background: var(--cd-onyx);
  color: var(--cd-snow);
  font-family: var(--rd-font-ui);
  -webkit-font-smoothing: antialiased;
}

/* ── Login screen: lime-CTA с тёмным текстом, контраст ──────────── */
:root[data-theme="cd"] #login-screen,
:root[data-theme="cd"] #force-change-screen {
  background:
    radial-gradient(ellipse 540px 380px at 14% 8%, rgba(228, 242, 34, 0.06), transparent 60%),
    radial-gradient(ellipse 640px 460px at 86% 92%, rgba(94, 106, 210, 0.06), transparent 60%),
    linear-gradient(180deg, var(--cd-onyx) 0%, var(--cd-charcoal) 100%);
}
:root[data-theme="cd"] .login-card #login-btn,
:root[data-theme="cd"] .login-card #fcp-btn,
:root[data-theme="cd"] .login-card #login-2fa-btn {
  color: var(--cd-onyx);
  font-weight: 600;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 1px 2px rgba(0, 0, 0, 0.4);
}
:root[data-theme="cd"] .login-card #login-btn:hover,
:root[data-theme="cd"] .login-card #fcp-btn:hover,
:root[data-theme="cd"] .login-card #login-2fa-btn:hover {
  background: var(--cd-lime-hover);
  color: var(--cd-onyx);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.3),
    0 4px 12px rgba(228, 242, 34, 0.18);
}

/* Бренд-метка на login */
:root[data-theme="cd"] .login-card .lg,
:root[data-theme="cd"] .brand-mark {
  background: var(--cd-lime);
  color: var(--cd-onyx);
}

/* ── Sidebar ───────────────────────────────────────────────────── */
:root[data-theme="cd"] .sidebar {
  background: var(--cd-charcoal);
  border-right: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .sidebar-header,
:root[data-theme="cd"] .sidebar-nav,
:root[data-theme="cd"] .sidebar-footer {
  background: transparent;
}
:root[data-theme="cd"] .nav-item {
  color: var(--cd-mist);
  border-radius: var(--radius-md);
}
:root[data-theme="cd"] .nav-item > .ic {
  color: var(--cd-slate);
}
:root[data-theme="cd"] .nav-item:hover {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .nav-item:hover > .ic {
  color: var(--cd-snow);
}
:root[data-theme="cd"] .nav-item.active {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
  font-weight: 510;
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
}
:root[data-theme="cd"] .nav-item.active > .ic {
  color: var(--cd-lime);
}

/* ── Topbar ────────────────────────────────────────────────────── */
:root[data-theme="cd"] .topbar {
  background: var(--cd-onyx);
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .topbar h1 {
  color: var(--cd-snow);
  font-weight: 510;
  letter-spacing: -0.01em;
}
:root[data-theme="cd"] .topbar p {
  color: var(--cd-fog);
}

/* ── Кнопки ────────────────────────────────────────────────────── */
:root[data-theme="cd"] .btn-primary,
:root[data-theme="cd"] button.btn-primary {
  background: var(--cd-lime);
  color: var(--cd-onyx);
  border: 1px solid var(--cd-lime);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
}
:root[data-theme="cd"] .btn-primary:hover,
:root[data-theme="cd"] button.btn-primary:hover {
  background: var(--cd-lime-hover);
  border-color: var(--cd-lime-hover);
  color: var(--cd-onyx);
}
:root[data-theme="cd"] .btn-secondary,
:root[data-theme="cd"] .btn-ghost {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
}
:root[data-theme="cd"] .btn-secondary:hover,
:root[data-theme="cd"] .btn-ghost:hover {
  background: var(--cd-graphite);
  color: var(--cd-snow);
}

/* ── Карточки/панели/формы ─────────────────────────────────────── */
:root[data-theme="cd"] .card,
:root[data-theme="cd"] .panel,
:root[data-theme="cd"] .stat-card,
:root[data-theme="cd"] .ec-hero {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  box-shadow: var(--shadow-md);
}
:root[data-theme="cd"] input,
:root[data-theme="cd"] select,
:root[data-theme="cd"] textarea {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
  border-color: var(--cd-graphite);
}
:root[data-theme="cd"] input:focus,
:root[data-theme="cd"] select:focus,
:root[data-theme="cd"] textarea:focus {
  border-color: var(--cd-lime);
  box-shadow: 0 0 0 3px rgba(228, 242, 34, 0.18);
}

/* ── Таблицы (табель/журнал) ───────────────────────────────────── */
:root[data-theme="cd"] table.list-table thead th,
:root[data-theme="cd"] table.timesheet-table thead th {
  background: var(--cd-obsidian);
  color: var(--cd-fog);
  border-bottom: 1px solid var(--cd-graphite);
  font-family: var(--rd-font-mono);
  font-size: 11px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
:root[data-theme="cd"] table.list-table tbody td,
:root[data-theme="cd"] table.timesheet-table tbody td {
  border-bottom: 1px solid var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] table.list-table tbody tr:hover td,
:root[data-theme="cd"] table.timesheet-table tbody tr:hover td {
  background: var(--cd-obsidian);
}

/* Цифры моноширинно везде, где это уместно */
:root[data-theme="cd"] .id-mono,
:root[data-theme="cd"] .mono,
:root[data-theme="cd"] td.num,
:root[data-theme="cd"] .stat-value,
:root[data-theme="cd"] .total,
:root[data-theme="cd"] code,
:root[data-theme="cd"] kbd {
  font-family: var(--rd-font-mono);
}

/* ═══════════════════════════════════════════════════════════════════════
 * ITER 2 — приближение к мокапу на ключевых экранах.
 * Текст не подменяем — только визуал.
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── LOGIN: тёмная карточка a-la Command Deck ─────────────────────── */
:root[data-theme="cd"] #login-screen .login-card,
:root[data-theme="cd"] #force-change-screen .login-card {
  background: var(--cd-charcoal);
  border: none;
  box-shadow:
    inset 0 0 0 1px var(--cd-graphite),
    0 2px 4px rgba(0, 0, 0, 0.4),
    0 4px 32px rgba(8, 9, 10, 0.6);
  border-radius: 12px;
  padding: 36px 32px 32px;
  max-width: 380px;
}
/* Логотип: подменяем PNG (МЛСТ-эмблема) на CSS-нарисованный lime-квадрат с буквой M.
   `content: url(...)` перебивает src у img в Chromium/Firefox — фон lime становится виден
   полностью, а внутри стоит моно-«M» onyx, как в мокапе Command Deck. */
:root[data-theme="cd"] .login-card .login-logo {
  content: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'><rect width='64' height='64' rx='12' fill='%23e4f222'/><text x='32' y='44' text-anchor='middle' font-family='SF Mono,Menlo,IBM Plex Mono,monospace' font-size='32' font-weight='700' fill='%2308090a'>M</text></svg>");
  width: 56px;
  height: 56px;
  border-radius: 12px;
  background: transparent;
  padding: 0;
  margin: 0 0 24px 0;
  display: block;
  filter: none;
  object-fit: contain;
  box-shadow: 0 8px 24px rgba(228, 242, 34, 0.32);
}
:root[data-theme="cd"] .login-card h1 {
  color: var(--cd-snow);
  font-size: 24px;
  font-weight: 400;
  letter-spacing: -0.264px;
  line-height: 1.2;
  margin: 0 0 6px;
}
:root[data-theme="cd"] .login-card .subtitle {
  color: var(--cd-fog);
  font-size: 14px;
  margin: 0 0 24px;
}
:root[data-theme="cd"] .login-card .form-group {
  margin-bottom: 14px;
}
:root[data-theme="cd"] .login-card .form-group label {
  display: block;
  font-family: var(--rd-font-ui);
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  font-weight: 510;
  color: var(--cd-mist);
  margin-bottom: 6px;
}
:root[data-theme="cd"] .login-card .form-group input,
:root[data-theme="cd"] .login-card .pwd-wrap input,
:root[data-theme="cd"] #login-2fa-code {
  width: 100%;
  background: var(--cd-steel);
  border: none;
  border-radius: 6px;
  padding: 10px 12px;
  color: var(--cd-snow);
  font-family: var(--rd-font-ui);
  font-size: 14px;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
  transition: box-shadow 0.12s;
}
:root[data-theme="cd"] .login-card .form-group input:focus,
:root[data-theme="cd"] .login-card .pwd-wrap input:focus,
:root[data-theme="cd"] #login-2fa-code:focus {
  outline: none;
  box-shadow:
    inset 0 0 0 1px var(--cd-indigo),
    0 0 0 3px rgba(94, 106, 210, 0.18);
}
:root[data-theme="cd"] .login-card .pwd-toggle {
  color: var(--cd-fog);
}
:root[data-theme="cd"] .login-card .pwd-toggle:hover {
  color: var(--cd-lime);
}
/* CTA Login — lime с тенью */
:root[data-theme="cd"] .login-card #login-btn,
:root[data-theme="cd"] .login-card #fcp-btn,
:root[data-theme="cd"] .login-card #login-2fa-btn {
  width: 100%;
  background: var(--cd-lime);
  color: var(--cd-onyx);
  border: none;
  border-radius: 6px;
  padding: 10px 16px;
  font-family: var(--rd-font-ui);
  font-size: 14px;
  font-weight: 510;
  margin-top: 12px;
  box-shadow:
    0 5px 2px rgba(0, 0, 0, 0.01),
    0 3px 2px rgba(0, 0, 0, 0.04),
    0 1px 1px rgba(0, 0, 0, 0.07),
    0 0 1px rgba(0, 0, 0, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.25);
}
/* «— или —» разделитель: превращаем в горизонтальную тонкую линию с текстом */
:root[data-theme="cd"] .login-card > div[style*="text-align:center"][style*="margin-top:14px"] {
  position: relative;
  display: flex !important;
  align-items: center;
  gap: 12px;
  margin: 20px 0 8px !important;
  font-family: var(--rd-font-mono);
  font-size: 10px !important;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--cd-slate) !important;
}
:root[data-theme="cd"] .login-card > div[style*="text-align:center"][style*="margin-top:14px"]::before,
:root[data-theme="cd"] .login-card > div[style*="text-align:center"][style*="margin-top:14px"]::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--cd-graphite);
}
/* Ghost-кнопки TG/MAX — pill с тонкой обводкой */
:root[data-theme="cd"] .login-card #login-tg-btn,
:root[data-theme="cd"] .login-card #login-max-btn,
:root[data-theme="cd"] .login-card #login-code-btn {
  width: 100%;
  background: transparent;
  color: var(--cd-snow);
  border: 1px solid var(--cd-iron);
  border-radius: 9999px;
  padding: 9px 16px;
  font-family: var(--rd-font-ui);
  font-size: 14px;
  font-weight: 400;
  margin-top: 8px;
}
:root[data-theme="cd"] .login-card #login-tg-btn:hover,
:root[data-theme="cd"] .login-card #login-max-btn:hover,
:root[data-theme="cd"] .login-card #login-code-btn:hover {
  background: var(--cd-obsidian);
  border-color: var(--cd-steel);
}
:root[data-theme="cd"] .login-card #login-tg-btn svg,
:root[data-theme="cd"] .login-card #login-max-btn svg {
  color: var(--cd-snow);
}
/* footer-build-version убран — был «MLST · COMMAND DECK · BUILD CD-1»
   как технический штамп из mock'a. Если когда-нибудь понадобится —
   подключить с реальной версией. */
/* 2FA-блок */
:root[data-theme="cd"] #login-2fa {
  background: var(--cd-obsidian) !important;
  border: 1px solid var(--cd-graphite) !important;
  border-radius: 8px !important;
}

/* ── SIDEBAR: brand-mark на месте логотипа ─────────────────────────── */
:root[data-theme="cd"] .sidebar {
  width: 232px;
  background: var(--cd-charcoal);
  border-right: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .sidebar-header {
  padding: 14px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .sidebar-header .logo {
  content: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'><rect width='28' height='28' rx='6' fill='%23e4f222'/><text x='14' y='20' text-anchor='middle' font-family='SF Mono,Menlo,IBM Plex Mono,monospace' font-size='15' font-weight='700' fill='%2308090a'>M</text></svg>");
  width: 28px;
  height: 28px;
  padding: 0;
  background: transparent;
  border-radius: 6px;
  filter: none;
  object-fit: contain;
}
:root[data-theme="cd"] .sidebar-header .titles {
  flex: 1;
  min-width: 0;
}
:root[data-theme="cd"] .sidebar-header .titles h2 {
  font-size: 13px;
  font-weight: 510;
  color: var(--cd-snow);
  line-height: 1.2;
  letter-spacing: 0;
  margin: 0;
}
:root[data-theme="cd"] .sidebar-header .titles p {
  font-family: var(--rd-font-mono);
  font-size: 10px;
  color: var(--cd-fog);
  margin: 2px 0 0;
  letter-spacing: 0.5px;
}
:root[data-theme="cd"] .sidebar-collapse-btn {
  color: var(--cd-fog);
  background: transparent;
}
:root[data-theme="cd"] .sidebar-collapse-btn:hover {
  color: var(--cd-snow);
  background: var(--cd-obsidian);
}

/* ── CD HOME / EMP layout (mock «Command Deck UI») ────────────────
   Все классы префиксованы `cd-` чтобы изолировать от базовых правил
   styles.css. Активируются ТОЛЬКО на CD-стенде. */
:root[data-theme="cd"] .cd-hero-h1 {
  font-size: 44px; font-weight: 300; letter-spacing: -0.6px;
  color: var(--cd-snow); margin: 4px 0 6px; line-height: 1.15;
}
:root[data-theme="cd"] .cd-hero-sub {
  font-size: 15px; color: var(--cd-fog); margin-bottom: 26px; line-height: 1.6;
}
:root[data-theme="cd"] .cd-hero-sub b { color: var(--cd-mist); font-weight: 510; }
:root[data-theme="cd"] .cd-stats-row {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
  margin-bottom: 24px;
}
:root[data-theme="cd"] .cd-stat {
  background: var(--cd-charcoal);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
  border-radius: 12px; padding: 18px 20px;
}
:root[data-theme="cd"] .cd-stat .label {
  font-size: 13px; color: var(--cd-fog); margin-bottom: 12px;
  display: flex; align-items: center; gap: 8px;
}
:root[data-theme="cd"] .cd-stat .value {
  font-size: 30px; font-weight: 400; letter-spacing: -0.35px;
  color: var(--cd-snow); line-height: 1; margin-bottom: 8px;
}
:root[data-theme="cd"] .cd-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 1px 6px; border-radius: 2px;
  font-family: var(--rd-font-mono); font-size: 11px; font-weight: 510;
}
:root[data-theme="cd"] .cd-pill.up { color: var(--cd-emerald); background: rgba(39,166,68,0.12); }
:root[data-theme="cd"] .cd-pill.down { color: var(--cd-crimson); background: rgba(235,87,87,0.12); }
:root[data-theme="cd"] .cd-pill.warn { color: var(--cd-lime); background: rgba(228,242,34,0.12); }
:root[data-theme="cd"] .cd-pill.muted { color: var(--cd-fog); background: var(--cd-obsidian); }
:root[data-theme="cd"] .cd-stat .ago { color: var(--cd-fog); margin-left: 6px; font-size: 12px; }
:root[data-theme="cd"] .cd-grid-2 {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 24px;
}
@media (max-width: 900px) {
  :root[data-theme="cd"] .cd-stats-row { grid-template-columns: repeat(2, 1fr); }
  :root[data-theme="cd"] .cd-grid-2 { grid-template-columns: 1fr; }
}
:root[data-theme="cd"] .cd-panel {
  background: var(--cd-charcoal);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
  border-radius: 12px; padding: 22px;
  margin-bottom: 24px;
}
:root[data-theme="cd"] .cd-panel-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 18px;
}
:root[data-theme="cd"] .cd-panel-title {
  font-size: 16px; font-weight: 510; color: var(--cd-snow);
}
:root[data-theme="cd"] .cd-panel-sub { font-size: 13px; color: var(--cd-fog); margin-top: 2px; }
:root[data-theme="cd"] .cd-activity-row {
  display: grid; grid-template-columns: 10px 1fr auto; gap: 12px;
  padding: 10px 0; align-items: start;
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .cd-activity-row:last-child { border-bottom: none; }
:root[data-theme="cd"] .cd-activity-row .dot6 {
  width: 6px; height: 6px; border-radius: 50%; background: var(--cd-lime);
  margin-top: 7px;
}
:root[data-theme="cd"] .cd-activity-row .dot6.indigo { background: var(--cd-indigo); }
:root[data-theme="cd"] .cd-activity-row .dot6.emerald { background: var(--cd-emerald); }
:root[data-theme="cd"] .cd-activity-row .dot6.crimson { background: var(--cd-crimson); }
:root[data-theme="cd"] .cd-activity-row .dot6.lime { background: var(--cd-lime); }
:root[data-theme="cd"] .cd-activity-row .dot6.cyan { background: var(--cd-cyan); }
:root[data-theme="cd"] .cd-activity-row .text { font-size: 13px; color: var(--cd-mist); line-height: 1.5; }
:root[data-theme="cd"] .cd-activity-row .text b { color: var(--cd-snow); font-weight: 510; }
:root[data-theme="cd"] .cd-activity-row .text .id {
  font-family: var(--rd-font-mono); font-size: 12px; color: var(--cd-fog);
}
:root[data-theme="cd"] .cd-activity-row .time {
  font-family: var(--rd-font-mono); font-size: 11px; color: var(--cd-slate);
  white-space: nowrap;
}
:root[data-theme="cd"] .cd-progress {
  display: grid; gap: 14px;
}
:root[data-theme="cd"] .cd-progress .row { display: block; }
:root[data-theme="cd"] .cd-progress .row .top {
  display: flex; justify-content: space-between; margin-bottom: 6px;
}
:root[data-theme="cd"] .cd-progress .row .name {
  font-size: 13px; color: var(--cd-snow); font-weight: 510;
}
:root[data-theme="cd"] .cd-progress .row .pct {
  font-family: var(--rd-font-mono); font-size: 12px; color: var(--cd-fog);
}
:root[data-theme="cd"] .cd-progress .row .bar {
  height: 6px; background: var(--cd-obsidian); border-radius: 3px; overflow: hidden;
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
}
:root[data-theme="cd"] .cd-progress .row .bar > i {
  display: block; height: 100%; background: var(--cd-lime);
}
:root[data-theme="cd"] .cd-progress .row .bar > i.emerald { background: var(--cd-emerald); }
:root[data-theme="cd"] .cd-progress .row .bar > i.cyan { background: var(--cd-cyan); }
:root[data-theme="cd"] .cd-progress .row .bar > i.crimson { background: var(--cd-crimson); }
:root[data-theme="cd"] .cd-filter-row {
  display: flex; gap: 8px; align-items: center; margin-bottom: 18px; flex-wrap: nowrap;
}

:root[data-theme="cd"] .cd-chip {
  padding: 5px 10px; background: var(--cd-obsidian);
  box-shadow: inset 0 0 0 1px var(--cd-graphite); border-radius: 6px;
  font-size: 13px; color: var(--cd-mist); cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
}
:root[data-theme="cd"] .cd-chip .lbl { color: var(--cd-fog); font-size: 12px; }

/* CD-light: переопределяем под shadcn */
:root[data-theme="cd"][data-cd-mode="light"] .cd-stat,
:root[data-theme="cd"][data-cd-mode="light"] .cd-panel {
  background: #ffffff; box-shadow: 0 0 0 1px #e5e5e5;
}
:root[data-theme="cd"][data-cd-mode="light"] .cd-pill.up { color: #166534; background: rgba(22,101,52,0.08); }
:root[data-theme="cd"][data-cd-mode="light"] .cd-pill.warn { color: #0a0a0a; background: #f2f2f2; }
:root[data-theme="cd"][data-cd-mode="light"] .cd-pill.muted { color: #737373; background: #f2f2f2; }
:root[data-theme="cd"][data-cd-mode="light"] .cd-progress .row .bar { background: #f2f2f2; box-shadow: inset 0 0 0 1px #e5e5e5; }
:root[data-theme="cd"][data-cd-mode="light"] .cd-progress .row .bar > i { background: #0a0a0a; }
:root[data-theme="cd"][data-cd-mode="light"] .cd-chip { background: #ffffff; box-shadow: inset 0 0 0 1px #e5e5e5; color: #0a0a0a; }

/* ── Карточка сотрудника (CD mock) ──────────────────────────────── */
:root[data-theme="cd"] .cd-emp-head {
  display: flex; gap: 24px; padding: 24px;
  background: var(--cd-charcoal);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
  border-radius: 12px; margin-bottom: 20px;
  align-items: flex-start; flex-wrap: wrap;
}
:root[data-theme="cd"] .cd-emp-avatar {
  width: 88px; height: 88px; border-radius: 12px;
  background: var(--cd-graphite); color: var(--cd-snow);
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; font-weight: 510;
  box-shadow: inset 0 0 0 1px var(--cd-steel);
  flex-shrink: 0; overflow: hidden;
}
:root[data-theme="cd"] .cd-emp-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
:root[data-theme="cd"] .cd-emp-info { flex: 1; min-width: 220px; }
:root[data-theme="cd"] .cd-emp-name {
  font-size: 28px; font-weight: 400; letter-spacing: -0.35px;
  color: var(--cd-snow); margin: 0 0 4px; line-height: 1.2;
}
:root[data-theme="cd"] .cd-emp-pos {
  font-size: 14px; color: var(--cd-fog); margin: 0 0 14px;
}
:root[data-theme="cd"] .cd-emp-pos .id-mono {
  font-family: var(--rd-font-mono); color: var(--cd-lime); font-size: 12px;
}
:root[data-theme="cd"][data-cd-mode="light"] .cd-emp-pos .id-mono { color: #0a0a0a; }
:root[data-theme="cd"] .cd-emp-meta { display: flex; gap: 8px; flex-wrap: wrap; }
:root[data-theme="cd"] .cd-emp-meta .badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 8px; border-radius: 2px;
  font-family: var(--rd-font-mono); font-size: 11px;
  color: var(--cd-mist); background: var(--cd-obsidian);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
}
:root[data-theme="cd"] .cd-emp-meta .badge .d6 { width: 6px; height: 6px; border-radius: 50%; background: var(--cd-fog); }
:root[data-theme="cd"] .cd-emp-meta .badge.green { color: var(--cd-emerald); }
:root[data-theme="cd"] .cd-emp-meta .badge.green .d6 { background: var(--cd-emerald); }
:root[data-theme="cd"] .cd-emp-meta .badge.indigo { color: var(--cd-indigo); }
:root[data-theme="cd"] .cd-emp-meta .badge.indigo .d6 { background: var(--cd-indigo); }
:root[data-theme="cd"] .cd-emp-meta .badge.cyan { color: var(--cd-cyan); }
:root[data-theme="cd"] .cd-emp-meta .badge.cyan .d6 { background: var(--cd-cyan); }
:root[data-theme="cd"] .cd-emp-meta .badge.crimson { color: var(--cd-crimson); }
:root[data-theme="cd"] .cd-emp-meta .badge.crimson .d6 { background: var(--cd-crimson); }
:root[data-theme="cd"] .cd-emp-actions { display: flex; gap: 8px; flex-shrink: 0; flex-wrap: wrap; }
:root[data-theme="cd"] .cd-grid-emp {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 20px;
}
@media (max-width: 900px) { :root[data-theme="cd"] .cd-grid-emp { grid-template-columns: 1fr; } }
:root[data-theme="cd"] .cd-data-row {
  display: grid; grid-template-columns: 150px 1fr; gap: 16px;
  padding: 10px 0; border-bottom: 1px solid var(--cd-graphite);
  align-items: center;
}
:root[data-theme="cd"] .cd-data-row:last-child { border-bottom: none; }
:root[data-theme="cd"] .cd-data-row .k { font-size: 13px; color: var(--cd-fog); }
:root[data-theme="cd"] .cd-data-row .v { font-size: 13px; color: var(--cd-snow); }
:root[data-theme="cd"] .cd-data-row .v.mono { font-family: var(--rd-font-mono); }
:root[data-theme="cd"] .cd-data-row .v.indigo { color: var(--cd-indigo); }
:root[data-theme="cd"][data-cd-mode="light"] .cd-data-row .v.indigo { color: #0a0a0a; }
:root[data-theme="cd"] .cd-timeline-row {
  display: grid; grid-template-columns: 120px 14px 1fr; gap: 16px; padding: 10px 0;
}
:root[data-theme="cd"] .cd-timeline-row .when {
  font-family: var(--rd-font-mono); font-size: 11px; color: var(--cd-fog);
}
:root[data-theme="cd"] .cd-timeline-row .rail { position: relative; }
:root[data-theme="cd"] .cd-timeline-row .rail::before {
  content: ""; position: absolute; left: 6px; top: 18px; width: 1px; bottom: -14px;
  background: var(--cd-graphite);
}
:root[data-theme="cd"] .cd-timeline-row:last-child .rail::before { display: none; }
:root[data-theme="cd"] .cd-timeline-row .rail::after {
  content: ""; position: absolute; left: 0; top: 4px; width: 12px; height: 12px;
  border: 2px solid var(--cd-lime); border-radius: 50%; background: var(--cd-onyx);
}
:root[data-theme="cd"][data-cd-mode="light"] .cd-timeline-row .rail::after { border-color: #0a0a0a; background: #ffffff; }
:root[data-theme="cd"] .cd-timeline-row.indigo .rail::after { border-color: var(--cd-indigo); }
:root[data-theme="cd"] .cd-timeline-row.emerald .rail::after { border-color: var(--cd-emerald); }
:root[data-theme="cd"] .cd-timeline-row.crimson .rail::after { border-color: var(--cd-crimson); }
:root[data-theme="cd"] .cd-timeline-row .what { font-size: 13px; color: var(--cd-mist); line-height: 1.5; }
:root[data-theme="cd"] .cd-timeline-row .what b { color: var(--cd-snow); font-weight: 510; }
:root[data-theme="cd"] .cd-timeline-row .what .id { font-family: var(--rd-font-mono); font-size: 11px; color: var(--cd-fog); }

/* Collapsed: дублируем критичные правила под CD, иначе селектор
   ':root[data-theme=cd] .sidebar' выигрывает по специфичности и
   sidebar не сжимается до 64px. */
:root[data-theme="cd"] .sidebar.collapsed { width: 64px; }
:root[data-theme="cd"] .sidebar.collapsed .sidebar-header { padding: 10px 8px; }
:root[data-theme="cd"] .sidebar.collapsed .sidebar-header .logo,
:root[data-theme="cd"] .sidebar.collapsed .sidebar-header .titles { display: none; }
:root[data-theme="cd"] .sidebar.collapsed .sidebar-nav { padding: 6px 8px; }
:root[data-theme="cd"] .sidebar.collapsed .nav-group-label { display: none; }
:root[data-theme="cd"] .sidebar.collapsed .nav-item {
  justify-content: center;
  padding: 9px 0;
  gap: 0;
}
:root[data-theme="cd"] .sidebar.collapsed .nav-item > span:not(.ic) { display: none; }
:root[data-theme="cd"] .sidebar.collapsed .nav-item .badge-count { display: none !important; }
:root[data-theme="cd"] .sidebar.collapsed .sidebar-footer { padding: 10px 6px; gap: 6px; }
:root[data-theme="cd"] .sidebar.collapsed .user-info { display: none !important; }
:root[data-theme="cd"] .sidebar.collapsed .btn-logout,
:root[data-theme="cd"] .sidebar.collapsed .theme-toggle {
  justify-content: center;
  padding: 8px 0;
  gap: 0;
}
:root[data-theme="cd"] .sidebar.collapsed .btn-logout > span:not(.ic),
:root[data-theme="cd"] .sidebar.collapsed .theme-toggle > span:not(.ic) { display: none; }
:root[data-theme="cd"] .sidebar-nav {
  padding: 12px 8px;
}
:root[data-theme="cd"] .nav-group-label {
  font-family: var(--rd-font-ui);
  font-size: 11px;
  font-weight: 510;
  color: var(--cd-fog);
  text-transform: none;
  letter-spacing: 0;
  padding: 12px 10px 6px;
}
:root[data-theme="cd"] .nav-item {
  padding: 6px 10px;
  font-size: 13px;
  font-weight: 400;
  gap: 10px;
  margin-bottom: 1px;
}
:root[data-theme="cd"] .nav-item > .ic svg {
  width: 16px;
  height: 16px;
  stroke-width: 1.8;
}

/* ── TOPBAR: тонкая crumb-полоса ───────────────────────────────────── */
:root[data-theme="cd"] .topbar {
  height: auto;
  min-height: 56px;
  padding: env(safe-area-inset-top) 24px 0;
  background: var(--cd-onyx);
  border-bottom: 1px solid var(--cd-graphite);
}
@media (max-width: 768px) {
  :root[data-theme="cd"] .topbar {
    padding: calc(env(safe-area-inset-top) + 6px) 12px 8px;
    gap: 6px;
    align-items: center;
  }
  :root[data-theme="cd"] #topbar-actions {
    flex: 0 1 auto;
    margin-top: 0;
    margin-left: auto;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
  }
  :root[data-theme="cd"] #topbar-actions .btn,
  :root[data-theme="cd"] #topbar-actions .btn-sm {
    padding: 5px 9px;
    font-size: 11px;
    border-radius: 6px;
    line-height: 1.2;
  }
  :root[data-theme="cd"] .topbar .topbar-head { gap: 8px; }
  :root[data-theme="cd"] .topbar h1 { font-size: 14px; line-height: 1.25; }
  :root[data-theme="cd"] .topbar p { font-size: 11px; }
}
:root[data-theme="cd"] .topbar-title h1,
:root[data-theme="cd"] #page-title {
  font-size: 14px;
  font-weight: 510;
  color: var(--cd-snow);
  letter-spacing: 0;
  line-height: 1.3;
}
:root[data-theme="cd"] .topbar-title p,
:root[data-theme="cd"] #page-subtitle {
  font-size: 12px;
  color: var(--cd-fog);
  margin-top: 1px;
}
:root[data-theme="cd"] .menu-toggle,
:root[data-theme="cd"] .cmdk-toggle {
  width: 30px;
  height: 30px;
  border-radius: 6px;
  background: var(--cd-obsidian);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
  color: var(--cd-mist);
}
:root[data-theme="cd"] .menu-toggle:hover,
:root[data-theme="cd"] .cmdk-toggle:hover {
  background: var(--cd-graphite);
  color: var(--cd-snow);
}

/* ── ГЛОБАЛЬНЫЕ КНОПКИ ─────────────────────────────────────────────
   Унификация под кнопку «Войти» на login: радиус 8, padding 11×18,
   font 14/510. Все .btn / .btn-primary / .btn-secondary одной формы;
   отличаются только цветом фона. */
:root[data-theme="cd"] .btn {
  background: var(--cd-obsidian);
  color: var(--cd-mist);
  border: 1px solid var(--cd-graphite);
  border-radius: 2px;
  padding: 11px 18px;
  font-size: 14px;
  font-weight: 510;
  letter-spacing: -0.1px;
  min-height: 40px;
  box-shadow: none;
}
/* Острые углы у всех .btn (кроме pill-кнопок свитчера темы и floating-FAB). */
:root[data-theme="cd"] .btn,
:root[data-theme="cd"] .btn-primary,
:root[data-theme="cd"] .btn-secondary,
:root[data-theme="cd"] .btn-danger,
:root[data-theme="cd"] .btn-edit,
:root[data-theme="cd"] .btn-sm,
:root[data-theme="cd"] .btn-icon,
:root[data-theme="cd"] .btn-logout,
:root[data-theme="cd"] .theme-toggle { border-radius: 2px !important; }
:root[data-theme="cd"] .btn:hover {
  background: var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .btn-primary {
  background: var(--cd-lime);
  color: var(--cd-onyx);
  border-color: var(--cd-lime);
  font-weight: 510;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 1px 2px rgba(0, 0, 0, 0.2);
}
:root[data-theme="cd"] .btn-primary:hover {
  background: var(--cd-lime-hover);
  border-color: var(--cd-lime-hover);
  color: var(--cd-onyx);
}
:root[data-theme="cd"] .btn-secondary {
  background: var(--cd-obsidian);
  color: var(--cd-mist);
  border-color: var(--cd-graphite);
}
:root[data-theme="cd"] .btn-secondary:hover {
  background: var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .btn-link,
:root[data-theme="cd"] .btn-link:visited {
  background: transparent;
  border: none;
  color: var(--cd-fog);
}
:root[data-theme="cd"] .btn-link:hover {
  color: var(--cd-lime);
  background: transparent;
}
:root[data-theme="cd"] .btn-sm {
  padding: 7px 14px;
  font-size: 13px;
  min-height: 32px;
  border-radius: 8px;
}

/* На CD-стенде переключатель темы циклирует data-cd-mode (light ↔ dark).
   sidebar-кнопка и login-кнопка работают одинаково (toggleTheme()). */

/* CD-light: input/textarea/select — белый фон, 1px hairline, нормальный
   placeholder (без слияния с фоном, как в CD-dark с lime-серым). */
:root[data-theme="cd"][data-cd-mode="light"] .login-card .form-group input,
:root[data-theme="cd"][data-cd-mode="light"] .login-card .pwd-wrap input,
:root[data-theme="cd"][data-cd-mode="light"] #login-2fa-code,
:root[data-theme="cd"][data-cd-mode="light"] input[type="text"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="password"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="number"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="email"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="tel"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="search"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="date"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="time"],
:root[data-theme="cd"][data-cd-mode="light"] select,
:root[data-theme="cd"][data-cd-mode="light"] textarea {
  background: #ffffff !important;
  color: #0a0a0a !important;
  border: 1px solid #e5e5e5 !important;
  box-shadow: none !important;
}
:root[data-theme="cd"][data-cd-mode="light"] input::placeholder,
:root[data-theme="cd"][data-cd-mode="light"] textarea::placeholder {
  color: #a1a1a1 !important;
}
/* Ещё более специфичный fallback на случай если что-то перебивает выше */
:root[data-theme="cd"][data-cd-mode="light"] body input,
:root[data-theme="cd"][data-cd-mode="light"] body select,
:root[data-theme="cd"][data-cd-mode="light"] body textarea {
  background: #ffffff !important;
  background-color: #ffffff !important;
  color: #0a0a0a !important;
}
:root[data-theme="cd"][data-cd-mode="light"] input:focus,
:root[data-theme="cd"][data-cd-mode="light"] textarea:focus,
:root[data-theme="cd"][data-cd-mode="light"] select:focus {
  outline: none !important;
  box-shadow: 0 0 0 2px #0a0a0a !important;
  border-color: #0a0a0a !important;
}

/* Sidebar footer кнопки на CD-light — text/border видимы на белом */
:root[data-theme="cd"][data-cd-mode="light"] .btn-logout {
  color: #0a0a0a !important;
  border: 1px solid #e5e5e5 !important;
  background: transparent !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .btn-logout:hover {
  background: #f2f2f2 !important;
  color: #0a0a0a !important;
  border-color: #c8ccd2 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .btn-logout > .ic { color: #0a0a0a !important; }

/* В CD-light режиме инвертируем стилизацию login-кнопки на light-bg */
:root[data-theme="cd"][data-cd-mode="light"] .login-theme-toggle {
  background: #ffffff;
  border-color: #e5e5e5;
  color: #0a0a0a;
}
:root[data-theme="cd"][data-cd-mode="light"] .login-theme-toggle:hover {
  background: #f2f2f2;
  border-color: #0a0a0a;
}

/* Иконки login-toggle на CD: показываем "следующую тему" — если сейчас dark,
   видна ☀; если light, видна 🌙. Стандартное правило в styles.css проверяет
   :root[data-theme="dark"] — на CD-стенде это не срабатывает. */
:root[data-theme="cd"]:not([data-cd-mode="light"]) .login-theme-toggle .theme-ic-sun {
  display: inline-flex;
}
:root[data-theme="cd"]:not([data-cd-mode="light"]) .login-theme-toggle .theme-ic-moon {
  display: none;
}

/* ── ИНПУТЫ + СЕЛЕКТЫ глобально ──────────────────────────────────── */
:root[data-theme="cd"] input[type="text"],
:root[data-theme="cd"] input[type="number"],
:root[data-theme="cd"] input[type="email"],
:root[data-theme="cd"] input[type="search"],
:root[data-theme="cd"] input[type="tel"],
:root[data-theme="cd"] input[type="password"],
:root[data-theme="cd"] input[type="date"],
:root[data-theme="cd"] select,
:root[data-theme="cd"] textarea {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
  border: 1px solid var(--cd-graphite);
  border-radius: 6px;
}
:root[data-theme="cd"] input::placeholder,
:root[data-theme="cd"] textarea::placeholder {
  color: var(--cd-slate);
}
:root[data-theme="cd"] input:focus,
:root[data-theme="cd"] select:focus,
:root[data-theme="cd"] textarea:focus {
  border-color: var(--cd-lime);
  box-shadow: 0 0 0 3px rgba(228, 242, 34, 0.18);
}

/* ── BADGES (используется на дашборде и в карточке) ──────────────── */
:root[data-theme="cd"] .badge {
  background: var(--cd-obsidian) !important;
  color: var(--cd-mist) !important;
  border-radius: 2px;
  padding: 2px 8px;
  font-family: var(--rd-font-mono);
  font-size: 11px;
  font-weight: 500;
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
}
:root[data-theme="cd"] .badge.badge-green,
:root[data-theme="cd"] .badge-green {
  background: rgba(39, 166, 68, 0.12) !important;
  color: var(--cd-emerald) !important;
  box-shadow: none;
}
/* Бейдж «отмечено сегодня: X/Y» в карточке бригады — фиксированная ширина */
:root[data-theme="cd"] .brig-card-badges .badge {
  display: inline-flex;
  align-items: center;
  min-width: 196px;
  justify-content: center;
  text-align: center;
}
/* Счётчик «N чел.» — компактный, без min-width, в одну строку с кнопкой */
:root[data-theme="cd"] .brig-card-badges {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
}
:root[data-theme="cd"] .brig-card-badges .badge.badge-count {
  min-width: 0;
  padding: 4px 10px;
}
/* ФИО сотрудников в таблице бригады — lime/yellow акцент */
:root[data-theme="cd"] .brig-emp-fio {
  color: var(--cd-lime);
}
/* ТБН и Часы — отдельные колонки только в CD на desktop; на мобиле — мета */
@media (min-width: 769px) {
  :root[data-theme="cd"] .brig-tbn-col   { display: table-cell !important; }
  :root[data-theme="cd"] .brig-hours-col { display: table-cell !important; }
  :root[data-theme="cd"] .brig-tbn-meta   { display: none !important; }
  :root[data-theme="cd"] .brig-hours-meta { display: none !important; }
  /* Ширины колонок в таблице отметки: ФИО шире, Объект/Статус уже */
  :root[data-theme="cd"] .brig-mark-table { table-layout: fixed; width: 100%; }
  :root[data-theme="cd"] .brig-mark-table th:nth-child(1),
  :root[data-theme="cd"] .brig-mark-table td:nth-child(1) { width: 33%; min-width: 240px; }
  :root[data-theme="cd"] .brig-mark-table th.brig-tbn-col,
  :root[data-theme="cd"] .brig-mark-table td.brig-tbn-col { width: 110px; }
  :root[data-theme="cd"] .brig-mark-table th.brig-hours-col,
  :root[data-theme="cd"] .brig-mark-table td.brig-hours-col { width: 80px; }
  :root[data-theme="cd"] .brig-mark-table th:nth-child(4),
  :root[data-theme="cd"] .brig-mark-table td:nth-child(4) { width: 17%; }
  :root[data-theme="cd"] .brig-mark-table th:nth-child(5),
  :root[data-theme="cd"] .brig-mark-table td:nth-child(5) { width: 16%; }
}
:root[data-theme="cd"] .badge.badge-blue,
:root[data-theme="cd"] .badge-blue {
  background: rgba(94, 106, 210, 0.14) !important;
  color: var(--cd-indigo) !important;
  box-shadow: none;
}
:root[data-theme="cd"] .badge.badge-gray,
:root[data-theme="cd"] .badge-gray {
  background: var(--cd-obsidian) !important;
  color: var(--cd-mist) !important;
}
:root[data-theme="cd"] .badge.badge-yellow,
:root[data-theme="cd"] .badge-yellow {
  background: rgba(228, 242, 34, 0.14) !important;
  color: var(--cd-lime) !important;
  box-shadow: none;
}

/* ── DASHBOARD: .card как panel в стиле CD ───────────────────────── */
:root[data-theme="cd"] .card {
  background: var(--cd-charcoal);
  border: none;
  box-shadow:
    inset 0 0 0 1px var(--cd-graphite),
    0 2px 4px rgba(0, 0, 0, 0.4);
  border-radius: 12px;
}
:root[data-theme="cd"] .card-body {
  color: var(--cd-snow);
}
:root[data-theme="cd"] .card-title,
:root[data-theme="cd"] .card h2,
:root[data-theme="cd"] .card h3 {
  font-size: 17px;
  font-weight: 510;
  color: var(--cd-snow);
  letter-spacing: 0;
}

/* ── ТАБЛИЦА ТАБЕЛЯ ──────────────────────────────────────────────── */
:root[data-theme="cd"] .timesheet-wrapper {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 12px;
  overflow: hidden;
}
:root[data-theme="cd"] table.timesheet-table {
  background: transparent;
}
:root[data-theme="cd"] table.timesheet-table thead th {
  background: var(--cd-obsidian);
  color: var(--cd-fog);
  border-bottom: 1px solid var(--cd-graphite);
  font-family: var(--rd-font-mono);
  font-size: 10px;
  font-weight: 510;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  text-align: center;
}
:root[data-theme="cd"] table.timesheet-table th.col-name {
  text-align: left;
  background: var(--cd-obsidian);
}
:root[data-theme="cd"] table.timesheet-table th.col-total {
  background: var(--cd-obsidian);
}
:root[data-theme="cd"] table.timesheet-table tbody td {
  border-bottom: 1px solid var(--cd-graphite);
  background: var(--cd-charcoal);
  color: var(--cd-snow);
  text-align: center;
  padding: 8px 4px;
}
:root[data-theme="cd"] table.timesheet-table tbody td.col-name {
  text-align: left;
}
:root[data-theme="cd"] table.timesheet-table tbody td.weekend,
:root[data-theme="cd"] table.timesheet-table tbody td.col-weekend {
  background: var(--cd-onyx);
  color: var(--cd-slate);
}
:root[data-theme="cd"] table.timesheet-table tbody td.col-total {
  background: var(--cd-obsidian);
  font-family: var(--rd-font-mono);
  font-weight: 510;
  color: var(--cd-snow);
}
:root[data-theme="cd"] .cell-input {
  background: transparent;
  border: 1px solid transparent;
  color: var(--cd-snow);
  font-family: var(--rd-font-mono);
  font-weight: 500;
  text-align: center;
  border-radius: 4px;
}
:root[data-theme="cd"] .cell-input:hover {
  background: var(--cd-obsidian);
  border-color: var(--cd-graphite);
}
:root[data-theme="cd"] .cell-input:focus {
  outline: none;
  background: var(--cd-onyx);
  border-color: var(--cd-lime);
  box-shadow: 0 0 0 2px rgba(228, 242, 34, 0.18);
}

/* Маркировка спецсимволами (О=отпуск, Н=невыход, Б=больничный, К=командировка) */
:root[data-theme="cd"] .cell-input.cell-vacation { color: var(--cd-lime); background: rgba(228, 242, 34, 0.08); }
:root[data-theme="cd"] .cell-input.cell-absent   { color: var(--cd-crimson); background: rgba(235, 87, 87, 0.10); }
:root[data-theme="cd"] .cell-input.cell-sick     { color: var(--cd-cyan); background: rgba(2, 184, 204, 0.10); }
:root[data-theme="cd"] .cell-input.cell-trip,
:root[data-theme="cd"] .cell-input.cell-business { color: var(--cd-indigo); background: rgba(94, 106, 210, 0.12); }

/* ── EMPLOYEE CARD: hero (.ecm) + информационные поля (.ec-field) ──── */
:root[data-theme="cd"] .ecm {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 12px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.03) inset;
  padding: 22px;
}
:root[data-theme="cd"] .ecm-name {
  font-size: 28px;
  font-weight: 510;
  line-height: 1.15;
  letter-spacing: -0.336px;
  color: var(--cd-snow);
}
:root[data-theme="cd"] .ecm-sub {
  color: var(--cd-fog);
  font-size: 14px;
}
:root[data-theme="cd"] .ecm-rule {
  background: var(--cd-graphite);
}
:root[data-theme="cd"] .ecm-photo-cap {
  color: var(--cd-slate);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 12px;
}
:root[data-theme="cd"] .ecm-ava {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 12px;
}
:root[data-theme="cd"] .ecm-ava-ph {
  color: var(--cd-fog);
  font-weight: 510;
}
@media (max-width: 768px) {
  :root[data-theme="cd"] .ecm-name { font-size: 24px; }
}

:root[data-theme="cd"] .ec-chip {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 4px;
  font-family: var(--rd-font-mono);
  font-size: 11px;
  color: var(--cd-mist);
  padding: 3px 8px;
}
:root[data-theme="cd"] .ec-chip a { color: inherit; }
:root[data-theme="cd"] .ec-hero-chips { gap: 6px; }

:root[data-theme="cd"] .ec-field {
  border-bottom: 1px solid var(--cd-graphite);
  padding: 13px 2px;
}
:root[data-theme="cd"] .ec-field:last-child { border-bottom: none; }
:root[data-theme="cd"] .ec-field-label {
  color: var(--cd-fog);
  font-size: 13px;
}
:root[data-theme="cd"] .ec-field-val {
  color: var(--cd-snow);
  font-weight: 510;
  font-size: 13px;
}
:root[data-theme="cd"] .ec-field-val a { color: var(--cd-snow); }
:root[data-theme="cd"] .ec-field-val .text-gray { color: var(--cd-slate); font-weight: 400; }

:root[data-theme="cd"] .inline-field-display {
  border-radius: 4px;
  padding: 2px 6px;
  margin: -2px -6px;
  transition: background-color 0.12s;
}
:root[data-theme="cd"] .inline-field-display:hover {
  background: var(--cd-obsidian);
  box-shadow: inset 0 0 0 1px var(--cd-graphite);
}

/* специальности (.spec-list / .spec-item) */
:root[data-theme="cd"] .spec-item {
  border-bottom: 1px solid var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .spec-item:last-child { border-bottom: none; }
:root[data-theme="cd"] .spec-name { color: var(--cd-snow); }
:root[data-theme="cd"] .spec-item-x {
  color: var(--cd-fog);
  background: transparent;
}
:root[data-theme="cd"] .spec-item-x:hover {
  background: rgba(235, 87, 87, 0.14);
  color: var(--cd-crimson);
}

/* утилитарные классы карточки */
:root[data-theme="cd"] .text-gray { color: var(--cd-fog); }
:root[data-theme="cd"] .error-msg {
  background: rgba(235, 87, 87, 0.12);
  border: 1px solid rgba(235, 87, 87, 0.4);
  color: #ffb3b3;
  border-radius: 8px;
  padding: 12px 14px;
}

/* ── ОБЩИЙ ФОН ПРИЛОЖЕНИЯ ────────────────────────────────────────── */
:root[data-theme="cd"] #app,
:root[data-theme="cd"] .main,
:root[data-theme="cd"] .content {
  background: var(--cd-onyx);
  color: var(--cd-snow);
}

/* ── СКРОЛЛБАРЫ ──────────────────────────────────────────────────── */
:root[data-theme="cd"] ::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
:root[data-theme="cd"] ::-webkit-scrollbar-track { background: var(--cd-onyx); }
:root[data-theme="cd"] ::-webkit-scrollbar-thumb {
  background: var(--cd-graphite);
  border-radius: 4px;
}
:root[data-theme="cd"] ::-webkit-scrollbar-thumb:hover { background: var(--cd-iron); }

/* ═══════════════════════════════════════════════════════════════════════
 * Расширение покрытия: модалки, Cmd+K, тосты, графики, журнал-календари,
 * фильтр-чипы, sticky-thead, bulk-bar, dashboard-карточки.
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── Modal ───────────────────────────────────────────────────────── */
:root[data-theme="cd"] .modal-overlay {
  background: rgba(8, 9, 10, 0.72);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
:root[data-theme="cd"] .modal {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 12px;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.04) inset;
  color: var(--cd-snow);
}
:root[data-theme="cd"] .modal-header {
  border-bottom-color: var(--cd-graphite);
  background: transparent;
}
:root[data-theme="cd"] .modal-header h3 {
  color: var(--cd-snow);
  font-weight: 510;
  letter-spacing: -0.2px;
}
:root[data-theme="cd"] .modal-close {
  color: var(--cd-fog);
}
:root[data-theme="cd"] .modal-close:hover {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .modal-body { color: var(--cd-mist); }
:root[data-theme="cd"] .modal label { color: var(--cd-fog); font-weight: 510; }
:root[data-theme="cd"] .modal-footer {
  border-top-color: var(--cd-graphite);
  background: var(--cd-obsidian);
}
:root[data-theme="cd"] .emp-pick {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 6px;
}
:root[data-theme="cd"] .emp-pick .emp-name { color: var(--cd-snow); }
:root[data-theme="cd"] .emp-pick .emp-meta { color: var(--cd-fog); }

/* ── Cmd+K palette ───────────────────────────────────────────────── */
:root[data-theme="cd"] .cmdk-overlay {
  background: rgba(8, 9, 10, 0.78);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
:root[data-theme="cd"] .cmdk {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 12px;
  box-shadow: 0 32px 80px rgba(0, 0, 0, 0.7);
}
:root[data-theme="cd"] .cmdk-input {
  background: var(--cd-charcoal) !important;
  color: var(--cd-snow) !important;
  border-bottom: 1px solid var(--cd-graphite) !important;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: -0.2px;
}
:root[data-theme="cd"] .cmdk-input::placeholder { color: var(--cd-fog); }
:root[data-theme="cd"] .cmdk-input:focus {
  border-color: var(--cd-graphite) !important;
  box-shadow: none !important;
}
:root[data-theme="cd"] .cmdk-section {
  color: var(--cd-slate);
  font-weight: 600;
  font-size: 10px;
  letter-spacing: 0.1em;
}
:root[data-theme="cd"] .cmdk-item:hover,
:root[data-theme="cd"] .cmdk-item.selected {
  background: var(--cd-obsidian);
}
:root[data-theme="cd"] .cmdk-item.selected {
  box-shadow: inset 3px 0 0 var(--cd-lime);
}
:root[data-theme="cd"] .cmdk-item-label { color: var(--cd-snow); }
:root[data-theme="cd"] .cmdk-item-meta { color: var(--cd-fog); }
:root[data-theme="cd"] .cmdk-item mark.hl,
:root[data-theme="cd"] .cmdk-item .hl {
  background: rgba(228, 242, 34, 0.18);
  color: var(--cd-lime);
  padding: 0 2px;
  border-radius: 2px;
}
:root[data-theme="cd"] .cmdk-empty { color: var(--cd-fog); }
:root[data-theme="cd"] .cmdk-hint {
  background: var(--cd-obsidian);
  border-top: 1px solid var(--cd-graphite);
  color: var(--cd-fog);
}
:root[data-theme="cd"] .cmdk-hint kbd {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
  font-family: var(--rd-font-mono);
  border-radius: 4px;
  padding: 1px 6px;
  font-size: 11px;
}

/* ── Toasts ──────────────────────────────────────────────────────── */
:root[data-theme="cd"] .toast {
  background: var(--cd-charcoal);
  color: var(--cd-snow);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
  box-shadow: var(--shadow-toast);
  font-weight: 510;
}
:root[data-theme="cd"] .toast-success {
  background: rgba(39, 166, 68, 0.18);
  border-color: rgba(39, 166, 68, 0.45);
  color: #6ee7a4;
}
:root[data-theme="cd"] .toast-error {
  background: rgba(235, 87, 87, 0.18);
  border-color: rgba(235, 87, 87, 0.45);
  color: #ffb3b3;
}

/* ── Sticky thead в списках ──────────────────────────────────────── */
:root[data-theme="cd"] table.list-table thead th {
  background: var(--cd-charcoal);
  color: var(--cd-fog);
  border-bottom: 1px solid var(--cd-graphite);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
:root[data-theme="cd"] table.list-table tbody td {
  border-bottom-color: var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] table.list-table tbody tr:hover {
  background: var(--cd-obsidian);
}

/* ── Карточка (.card / .card-body / .card-header) ────────────────── */
:root[data-theme="cd"] .card,
:root[data-theme="cd"] .panel {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 10px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.03) inset;
}
:root[data-theme="cd"] .card-header {
  background: transparent;
  border-bottom: 1px solid var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .card-header h2,
:root[data-theme="cd"] .card-header h3 {
  color: var(--cd-snow);
  font-weight: 510;
  letter-spacing: -0.2px;
}
:root[data-theme="cd"] .card-body { color: var(--cd-mist); }

/* ── Графики (SVG bar-chart / pie / легенда) ─────────────────────── */
:root[data-theme="cd"] .chart-wrap {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .bar-chart text { fill: var(--cd-fog); font-family: var(--rd-font-mono); font-size: 10px; }
:root[data-theme="cd"] .bar-chart .axis-line,
:root[data-theme="cd"] .bar-chart line { stroke: var(--cd-graphite); }
:root[data-theme="cd"] .bar-chart .bar-g rect { fill: var(--cd-lime); }
:root[data-theme="cd"] .bar-chart .bar-g.weekend rect { fill: var(--cd-indigo); }
:root[data-theme="cd"] .bar-chart .bar-g:hover rect { opacity: 0.78; }
:root[data-theme="cd"] .chart-legend { color: var(--cd-fog); }
:root[data-theme="cd"] .chart-legend-item { color: var(--cd-mist); font-family: var(--rd-font-mono); font-size: 11px; font-weight: 500; }
:root[data-theme="cd"] .chart-swatch { border-radius: 2px; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05) inset; }
:root[data-theme="cd"] .pie-legend .chart-legend-item { color: var(--cd-mist); }

/* ── Журнал-календари (emp-cal-card / ec-cell-*) ─────────────────── */
:root[data-theme="cd"] .emp-cal-card {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
  padding: 12px;
}
:root[data-theme="cd"] .emp-cal-head { border-bottom: 1px solid var(--cd-graphite); color: var(--cd-snow); }
:root[data-theme="cd"] .emp-cal-fio { color: var(--cd-snow); font-weight: 510; letter-spacing: -0.1px; }
:root[data-theme="cd"] .emp-cal-stats {
  font-family: var(--rd-font-mono);
  font-size: 11px;
  color: var(--cd-fog);
  border-top: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .ec-weekdays {
  color: var(--cd-slate);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}
:root[data-theme="cd"] .ec-d {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
  font-family: var(--rd-font-mono);
  border-radius: 4px;
}
:root[data-theme="cd"] .ec-we { background: var(--cd-onyx); color: var(--cd-slate); }
:root[data-theme="cd"] .ec-today { outline: 1px solid var(--cd-lime); outline-offset: -1px; }
:root[data-theme="cd"] .ec-empty {
  background: transparent;
  border: 1px dashed var(--cd-graphite);
}
:root[data-theme="cd"] .ec-cell {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 4px;
  font-family: var(--rd-font-mono);
  color: var(--cd-mist);
}
:root[data-theme="cd"] .ec-cell.ec-cell-work {
  background: rgba(39, 166, 68, 0.16);
  border-color: rgba(39, 166, 68, 0.45);
  color: #6ee7a4;
}
:root[data-theme="cd"] .ec-cell.ec-cell-off { background: var(--cd-obsidian); color: var(--cd-fog); }
:root[data-theme="cd"] .ec-cell.ec-cell-off-plan { background: var(--cd-obsidian); color: var(--cd-slate); }
:root[data-theme="cd"] .ec-cell.ec-cell-vac {
  background: rgba(228, 242, 34, 0.12);
  border-color: rgba(228, 242, 34, 0.45);
  color: var(--cd-lime);
}
:root[data-theme="cd"] .ec-cell.ec-cell-sick {
  background: rgba(235, 87, 87, 0.14);
  border-color: rgba(235, 87, 87, 0.45);
  color: #ffb3b3;
}
:root[data-theme="cd"] .ec-cell.ec-cell-nn {
  background: var(--cd-crimson);
  border-color: #c83a3a;
  color: var(--cd-snow);
  font-weight: 700;
}
:root[data-theme="cd"] .ec-cell.ec-cell-n {
  background: rgba(39, 166, 68, 0.28);
  border-color: var(--cd-emerald);
  color: #6ee7a4;
  font-weight: 700;
}
:root[data-theme="cd"] .ec-cell.ec-cell-rv {
  background: rgba(39, 166, 68, 0.20);
  border-color: var(--cd-emerald);
  color: #6ee7a4;
  font-weight: 600;
}
:root[data-theme="cd"] .ec-cell.ec-cell-do {
  background: rgba(94, 106, 210, 0.22);
  border-color: var(--cd-indigo);
  color: #c0c7ff;
  font-weight: 600;
}
:root[data-theme="cd"] .ec-cell.ec-cell-other {
  background: var(--cd-obsidian);
  border-color: var(--cd-iron);
}
:root[data-theme="cd"] .ec-cell.ec-cell-miss {
  background: rgba(235, 87, 87, 0.08);
  border-style: dashed;
  border-color: rgba(235, 87, 87, 0.4);
  color: #ffb3b3;
}

/* ── Filter-chips ────────────────────────────────────────────────── */
:root[data-theme="cd"] .filter-chips {
  border-bottom-color: var(--cd-graphite);
  background: var(--cd-charcoal);
}
:root[data-theme="cd"] .filter-chip {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 9999px;
  color: var(--cd-mist);
  font-size: 12px;
}
:root[data-theme="cd"] .filter-chip-label { color: var(--cd-fog); font-weight: 600; }
:root[data-theme="cd"] .filter-chip-value { color: var(--cd-snow); }
:root[data-theme="cd"] .filter-chip-x {
  background: transparent;
  color: var(--cd-fog);
  border-radius: 9999px;
}
:root[data-theme="cd"] .filter-chip-x:hover {
  background: rgba(235, 87, 87, 0.22);
  color: #ffb3b3;
}

/* ── Bulk-bar (#emp-bulk-bar) ────────────────────────────────────── */
:root[data-theme="cd"] #emp-bulk-bar {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 9999px;
  color: var(--cd-snow);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.6);
}

/* ── Skeleton-блоки ──────────────────────────────────────────────── */
:root[data-theme="cd"] .skeleton-row,
:root[data-theme="cd"] .skeleton-line,
:root[data-theme="cd"] .skeleton {
  background: linear-gradient(90deg, var(--cd-charcoal) 0%, var(--cd-graphite) 50%, var(--cd-charcoal) 100%);
}

/* ── Status badges (.status-*) ───────────────────────────────────── */
:root[data-theme="cd"] .status-do { background: rgba(94, 106, 210, 0.18); color: #c0c7ff; border-color: rgba(94, 106, 210, 0.4); }
:root[data-theme="cd"] .status-rv { background: rgba(39, 166, 68, 0.18); color: #6ee7a4; border-color: rgba(39, 166, 68, 0.4); }

/* ── Sidebar-backdrop (mobile) ───────────────────────────────────── */
:root[data-theme="cd"] .sidebar-backdrop {
  background: rgba(8, 9, 10, 0.72);
  backdrop-filter: blur(6px);
}

/* ── ec-* статусные элементы ─────────────────────────────────────── */
:root[data-theme="cd"] .ec-stat { color: var(--cd-mist); font-family: var(--rd-font-mono); font-size: 11px; }
:root[data-theme="cd"] .ec-stat-n  { color: #6ee7a4; }
:root[data-theme="cd"] .ec-stat-nn { color: #ffb3b3; }
:root[data-theme="cd"] .ec-stat-work { color: #6ee7a4; }
:root[data-theme="cd"] .ec-stat-vac  { color: var(--cd-lime); }
:root[data-theme="cd"] .ec-stat-sick { color: #ffb3b3; }
:root[data-theme="cd"] .ec-stat-off  { color: var(--cd-fog); }

/* ═══════════════════════════════════════════════════════════════════════
 * Расширение 2: журнал-события, бригады, расписания, отчёты, пользователи,
 * рабочие объекты, пароль-инпуты, empty/error/spinner, pie-chart.
 * ═══════════════════════════════════════════════════════════════════════ */

/* ── Журнал-события (.jm-ev-*, .jfilter-*) ──────────────────────── */
:root[data-theme="cd"] .jm-ev-card {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
  color: var(--cd-snow);
}
:root[data-theme="cd"] .jm-ev-head {
  border-bottom: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
}
:root[data-theme="cd"] .jm-ev-dt {
  color: var(--cd-fog);
  font-family: var(--rd-font-mono);
  font-size: 11px;
}
:root[data-theme="cd"] .jm-ev-fio,
:root[data-theme="cd"] .jm-ev-name { color: var(--cd-snow); font-weight: 510; }
:root[data-theme="cd"] .jm-ev-meta { color: var(--cd-fog); font-size: 12px; }
:root[data-theme="cd"] .jm-ev-lbl {
  color: var(--cd-fog);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}
:root[data-theme="cd"] .jm-ev-line { border-color: var(--cd-graphite); color: var(--cd-mist); }
:root[data-theme="cd"] .jm-ev-actions { border-top: 1px solid var(--cd-graphite); }
:root[data-theme="cd"] .jfilter-row { background: var(--cd-charcoal); }
:root[data-theme="cd"] .jfilter-cell { color: var(--cd-mist); }

/* ── Бригада (.brig-*, .brigade-*) ───────────────────────────────── */
:root[data-theme="cd"] .brig-card-header {
  background: var(--cd-charcoal);
  border-bottom: 1px solid var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .brig-card-name { color: var(--cd-snow); font-weight: 510; }
:root[data-theme="cd"] .brig-card-count {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-lime);
  font-family: var(--rd-font-mono);
  border-radius: 9999px;
  padding: 1px 8px;
  font-size: 11px;
}
:root[data-theme="cd"] .brig-card-badges { color: var(--cd-fog); }
:root[data-theme="cd"] .brig-card-toggle { color: var(--cd-fog); }
:root[data-theme="cd"] .brig-card-toggle:hover { color: var(--cd-snow); }
:root[data-theme="cd"] .brig-emp {
  background: none;
  border: none;
  border-radius: 0;
}
:root[data-theme="cd"] .brig-emp-fio { color: var(--cd-snow); }
:root[data-theme="cd"] .brig-emp-meta { color: var(--cd-fog); font-size: 12px; }
:root[data-theme="cd"] .brig-row-marked {
  background: rgba(39, 166, 68, 0.10);
  border-color: rgba(39, 166, 68, 0.35);
}
:root[data-theme="cd"] .brig-marked-banner {
  background: rgba(39, 166, 68, 0.14);
  border: 1px solid rgba(39, 166, 68, 0.4);
  color: #6ee7a4;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 13px;
}
:root[data-theme="cd"] .brigade-footer,
:root[data-theme="cd"] .brig-footer-top {
  background: var(--cd-charcoal);
  border-top: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
}
:root[data-theme="cd"] .brig-submit-btn {
  background: var(--cd-lime) !important;
  color: var(--cd-onyx) !important;
  font-weight: 510;
  border-radius: 6px;
  box-shadow: 0 4px 12px rgba(228, 242, 34, 0.22);
}
:root[data-theme="cd"] .brig-submit-btn:hover {
  background: var(--cd-lime-hover) !important;
}
:root[data-theme="cd"] .brig-obj,
:root[data-theme="cd"] .brig-st,
:root[data-theme="cd"] .off-brig-obj {
  background: var(--cd-obsidian) !important;
  border: 1px solid var(--cd-graphite) !important;
  color: var(--cd-snow) !important;
}
:root[data-theme="cd"] .b-dept,
:root[data-theme="cd"] .b-view,
:root[data-theme="cd"] .brig-one {
  color: var(--cd-mist);
}

/* ── Расписания (.sched-*) ───────────────────────────────────────── */
:root[data-theme="cd"] .sched-grid {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .sched-weekdays {
  color: var(--cd-slate);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .sched-cell {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-mist);
  font-family: var(--rd-font-mono);
}
:root[data-theme="cd"] .sched-day-h { color: var(--cd-snow); font-weight: 510; }
:root[data-theme="cd"] .sched-day-num { color: var(--cd-mist); font-family: var(--rd-font-mono); }
:root[data-theme="cd"] .sched-empty {
  background: transparent;
  border: 1px dashed var(--cd-graphite);
  color: var(--cd-fog);
}

/* ── Планы (.plan-work / .plan-off / .plan-tag) ──────────────────── */
:root[data-theme="cd"] .plan-work {
  background: rgba(39, 166, 68, 0.18);
  color: #6ee7a4;
  border: 1px solid rgba(39, 166, 68, 0.4);
}
:root[data-theme="cd"] .plan-off {
  background: var(--cd-obsidian);
  color: var(--cd-fog);
  border: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .plan-tag {
  background: rgba(94, 106, 210, 0.18);
  color: #c0c7ff;
  border: 1px solid rgba(94, 106, 210, 0.4);
  border-radius: 4px;
  font-family: var(--rd-font-mono);
  font-size: 11px;
  white-space: nowrap;
  padding: 3px 8px;
}

/* ── Отчёты (.rep-*) ─────────────────────────────────────────────── */
:root[data-theme="cd"] .rep-big-num {
  font-family: var(--rd-font-mono);
  color: var(--cd-snow);
  font-weight: 510;
  letter-spacing: -1px;
  font-size: 26px;
}
:root[data-theme="cd"] .rep-bullets { color: var(--cd-mist); }
:root[data-theme="cd"] .rep-warn-pill {
  background: rgba(235, 87, 87, 0.18);
  color: #ffb3b3;
  border: 1px solid rgba(235, 87, 87, 0.4);
  border-radius: 2px;
  padding: 1px 8px;
  font-size: 11px;
  font-weight: 600;
}

/* ── Pie / KPI карточки в дашборде ───────────────────────────────── */
:root[data-theme="cd"] .pie-wrap {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .cli-label { color: var(--cd-fog); font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; }
:root[data-theme="cd"] .cli-val { color: var(--cd-snow); font-family: var(--rd-font-mono); font-weight: 510; }

/* ── Пользователи (.users-table, .u-*, .imp-user) ────────────────── */
:root[data-theme="cd"] .users-table {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .users-table th {
  background: var(--cd-charcoal);
  color: var(--cd-fog);
  border-bottom: 1px solid var(--cd-graphite);
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
:root[data-theme="cd"] .users-table td {
  border-bottom-color: var(--cd-graphite);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .users-table tbody tr:hover { background: var(--cd-obsidian); }
:root[data-theme="cd"] .u-bulk,
:root[data-theme="cd"] .u-view {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 9999px;
  color: var(--cd-snow);
}
:root[data-theme="cd"] .imp-user {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 6px;
  color: var(--cd-mist);
}

/* ── Рабочие объекты (.wo-*) ─────────────────────────────────────── */
:root[data-theme="cd"] .wo-aligned,
:root[data-theme="cd"] .aligned-list {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .wo-status {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  border-radius: 0;
  color: var(--cd-mist);
  font-family: var(--rd-font-mono);
  font-size: 11px;
  padding: 2px 8px;
}
:root[data-theme="cd"] .wo-move {
  color: var(--cd-fog);
  cursor: grab;
  border-radius: 0;
}
:root[data-theme="cd"] .wo-move:hover { color: var(--cd-snow); }

/* ── Документы (.doc-actions) ────────────────────────────────────── */
:root[data-theme="cd"] .doc-actions {
  background: var(--cd-charcoal);
  border-top: 1px solid var(--cd-graphite);
  border-radius: 0 0 12px 12px;
}
/* В users-table .doc-actions — это просто flex-обёртка для кнопок действий
   (Войти как / Изменить / Удалить), а не футер карточки документа. Фон и
   бордер CD-темы там лишний — выглядит как подложка под кнопками. */
:root[data-theme="cd"] .users-table .doc-actions {
  background: transparent;
  border-top: none;
  border-radius: 0;
  padding: 0;
}
/* .doc-create — это flex-контейнер (justify-content:flex-end), а не сама
   кнопка. Lime-фон применяется к .btn-primary внутри через --color-primary. */
:root[data-theme="cd"] .doc-create {
  background: transparent;
  padding: 0;
}

/* ── Apply-all (быстрая раздача отметок) ─────────────────────────── */
:root[data-theme="cd"] .apply-all-row {
  background: var(--cd-obsidian);
  border-top: 1px solid var(--cd-graphite);
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .apply-all-btn {
  background: var(--cd-lime) !important;
  color: var(--cd-onyx) !important;
  border-radius: 6px;
  font-weight: 510;
}
:root[data-theme="cd"] .apply-all-obj,
:root[data-theme="cd"] .apply-all-st {
  background: var(--cd-charcoal) !important;
  border: 1px solid var(--cd-graphite) !important;
  color: var(--cd-snow) !important;
}
/* Apply-all: всё в одну строку на десктопе (Объект растягивается, Отметка узкая) */
@media (min-width: 769px) {
  :root[data-theme="cd"] .apply-all-row { flex-wrap: nowrap !important; align-items: center; }
  :root[data-theme="cd"] select.apply-all-obj { flex: 1 1 auto !important; min-width: 0 !important; height: 36px; }
  :root[data-theme="cd"] select.apply-all-st  { flex: 0 0 180px !important; }
  :root[data-theme="cd"] .apply-all-btn       { flex: 0 0 auto !important; white-space: nowrap; }
}

/* ── Пароль-инпуты (.pwd-wrap, .pwd-toggle) ──────────────────────── */
:root[data-theme="cd"] .pwd-wrap input {
  padding-right: 38px;
}
:root[data-theme="cd"] .pwd-toggle {
  color: var(--cd-fog);
  background: transparent;
}
:root[data-theme="cd"] .pwd-toggle:hover { color: var(--cd-snow); }

/* ── Поиск-палитра (search-results) ──────────────────────────────── */
:root[data-theme="cd"] .search-results {
  background: var(--cd-charcoal);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.5);
}
:root[data-theme="cd"] .search-result-item {
  color: var(--cd-mist);
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .search-result-item:hover,
:root[data-theme="cd"] .search-result-item.selected {
  background: var(--cd-obsidian);
  color: var(--cd-snow);
}
:root[data-theme="cd"] .search-result-item.selected {
  box-shadow: inset 3px 0 0 var(--cd-lime);
}

/* ── Empty state / error / spinner ───────────────────────────────── */
:root[data-theme="cd"] .empty-state {
  color: var(--cd-fog);
  background: transparent;
  border: 1px dashed var(--cd-graphite);
  border-radius: 8px;
  padding: 24px;
  text-align: center;
}
:root[data-theme="cd"] .error-msg {
  background: rgba(235, 87, 87, 0.14);
  border: 1px solid rgba(235, 87, 87, 0.4);
  color: #ffb3b3;
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 13px;
}
:root[data-theme="cd"] .spinner {
  border-top-color: var(--cd-lime) !important;
  border-right-color: var(--cd-graphite) !important;
  border-bottom-color: var(--cd-graphite) !important;
  border-left-color: var(--cd-graphite) !important;
}

/* ── Tabs (.tabs, .tab-btn, .tab-pane) ───────────────────────────── */
:root[data-theme="cd"] .tabs {
  border-bottom: 1px solid var(--cd-graphite);
}
:root[data-theme="cd"] .tab-btn {
  background: transparent;
  color: var(--cd-fog);
  border: none;
  border-bottom: 2px solid transparent;
  font-weight: 510;
  font-size: 13px;
  letter-spacing: -0.1px;
  padding: 10px 14px;
}
:root[data-theme="cd"] .tab-btn:hover { color: var(--cd-snow); }
:root[data-theme="cd"] .tab-btn.active {
  color: var(--cd-snow);
  border-bottom-color: var(--cd-lime);
}

/* ── Badges (.badge / .badge-count) ──────────────────────────────── */
:root[data-theme="cd"] .badge-count {
  background: var(--cd-obsidian);
  border: 1px solid var(--cd-graphite);
  color: var(--cd-lime);
  font-family: var(--rd-font-mono);
  border-radius: 2px;
  font-size: 11px;
  padding: 1px 8px;
  min-width: 60px;
  min-height: 18px;
  justify-content: center;
}
/* CD-light: монохром, без lime */
:root[data-theme="cd"][data-cd-mode="light"] .badge-count {
  background: #f2f2f2;
  border-color: #e5e5e5;
  color: #0a0a0a;
}
:root[data-theme="cd"] .badge-do {
  background: rgba(94, 106, 210, 0.18);
  color: #c0c7ff;
  border: 1px solid rgba(94, 106, 210, 0.4);
}
:root[data-theme="cd"] .badge-rv {
  background: rgba(39, 166, 68, 0.18);
  color: #6ee7a4;
  border: 1px solid rgba(39, 166, 68, 0.4);
}

/* ── Topbar actions / icon-кнопки ────────────────────────────────── */
:root[data-theme="cd"] .menu-toggle,
:root[data-theme="cd"] .cmdk-toggle {
  color: var(--cd-fog);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
}
:root[data-theme="cd"] .menu-toggle:hover,
:root[data-theme="cd"] .cmdk-toggle:hover {
  color: var(--cd-snow);
  background: var(--cd-obsidian);
  border-color: var(--cd-graphite);
}

/* ── Чекбоксы / radio в dark mode ────────────────────────────────── */
:root[data-theme="cd"] input[type="checkbox"],
:root[data-theme="cd"] input[type="radio"] {
  accent-color: var(--cd-lime);
}
/* Кастомный чекбокс — чтобы галочка чётко читалась на lime-фоне */
:root[data-theme="cd"] input[type="checkbox"] {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  border: 1px solid var(--cd-iron);
  border-radius: 3px;
  background: var(--cd-charcoal);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  position: relative;
  flex-shrink: 0;
}
:root[data-theme="cd"] input[type="checkbox"]:checked {
  background: var(--cd-lime);
  border-color: var(--cd-lime);
}
:root[data-theme="cd"] input[type="checkbox"]:checked::after {
  content: "";
  width: 10px;
  height: 6px;
  border-left: 2px solid var(--cd-onyx);
  border-bottom: 2px solid var(--cd-onyx);
  transform: rotate(-45deg) translate(1px, -1px);
}
:root[data-theme="cd"] input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--cd-indigo);
  outline-offset: 2px;
}

/* ── Leaflet карта (объекты): тёмный slate-tile ──────────────────── */
:root[data-theme="cd"] .leaflet-container {
  background: var(--cd-onyx);
  border: 1px solid var(--cd-graphite);
  border-radius: 8px;
}
:root[data-theme="cd"] .leaflet-tile-pane {
  filter: invert(0.92) hue-rotate(180deg) brightness(0.95) contrast(0.92);
}
:root[data-theme="cd"] .leaflet-control-attribution {
  background: var(--cd-charcoal) !important;
  color: var(--cd-fog) !important;
  border-top: 1px solid var(--cd-graphite);
  font-size: 10px;
}
:root[data-theme="cd"] .leaflet-control-zoom a {
  background: var(--cd-charcoal) !important;
  color: var(--cd-snow) !important;
  border-color: var(--cd-graphite) !important;
}
:root[data-theme="cd"] .leaflet-popup-content-wrapper,
:root[data-theme="cd"] .leaflet-popup-tip {
  background: var(--cd-charcoal) !important;
  color: var(--cd-snow) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}

/* ── Indicator «CD · TEST» (test-стенд) ──────────────────────────── */
:root[data-theme="cd"] #cd-theme-indicator,
:root[data-theme="cd"] .cd-theme-indicator {
  background: var(--cd-lime);
  color: var(--cd-onyx);
  border-radius: 9999px;
  padding: 4px 10px;
  font-family: var(--rd-font-mono);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  box-shadow: 0 4px 12px rgba(228, 242, 34, 0.32);
}

/* ═══════════════════════════════════════════════════════════════════════
 * CD-LIGHT: Indigo Ink акцент + статусные бейджи
 * Заменяет lime (#e4f222) на Indigo Ink (#4f46e5) для всех ролей:
 * nav-active, primary-кнопки, focus-ring, progress, underline, tab-active,
 * checkbox/radio accent-color, дот-маркеры, прогресс-бары, тайм-лайн, иконки.
 * Все правила scope'нуты под :root[data-theme="cd"][data-cd-mode="light"].
 * ═══════════════════════════════════════════════════════════════════════ */

/* ─── 1. Переменные акцента под Indigo Ink ─────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] {
  --cd-lime: #4f46e5 !important;
  --cd-lime-hover: #4338ca !important;
  --color-primary: #4f46e5 !important;
  --color-primary-hover: #4338ca !important;
  --color-primary-soft: rgba(79, 70, 229, 0.08) !important;
  --color-accent: #4f46e5 !important;
  --color-accent-soft: rgba(79, 70, 229, 0.10) !important;
  --color-accent-ring: rgba(79, 70, 229, 0.28) !important;
  --rd-primary: #4f46e5 !important;
  --rd-primary-hover: #4338ca !important;
  --rd-primary-soft: rgba(79, 70, 229, 0.10) !important;
  --rd-accent: #4f46e5 !important;
  --rd-accent-glow: rgba(79, 70, 229, 0.10) !important;
}

/* ─── 2. Login / login-card / brand-mark ───────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-btn,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #fcp-btn,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-2fa-btn {
  background: #0a0a0a !important;
  color: #ffffff !important;
  border: 1px solid #0a0a0a !important;
  box-shadow: none !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-btn:hover,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #fcp-btn:hover,
:root[data-theme="cd"][data-cd-mode="light"] .login-card #login-2fa-btn:hover {
  background: #333333 !important;
  border-color: #333333 !important;
  color: #ffffff !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .login-card .lg,
:root[data-theme="cd"][data-cd-mode="light"] .brand-mark {
  background: #0a0a0a !important;
  color: #ffffff !important;
}

/* ─── 3. Primary buttons (.btn-primary, .brig-submit-btn, .apply-all-btn) */
:root[data-theme="cd"][data-cd-mode="light"] .btn-primary,
:root[data-theme="cd"][data-cd-mode="light"] button.btn-primary {
  background: #0a0a0a !important;
  color: #ffffff !important;
  border: 1px solid #0a0a0a !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .btn-primary:hover,
:root[data-theme="cd"][data-cd-mode="light"] button.btn-primary:hover {
  background: #333333 !important;
  border-color: #333333 !important;
  color: #ffffff !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .brig-submit-btn {
  background: #0a0a0a !important;
  color: #ffffff !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .brig-submit-btn:hover {
  background: #333333 !important;
  color: #ffffff !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .apply-all-btn {
  background: #0a0a0a !important;
  color: #ffffff !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .apply-all-btn:hover {
  background: #333333 !important;
  color: #ffffff !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .btn-link:hover {
  color: #4f46e5 !important;
}

/* ─── 4. Sidebar: nav-item.active ──────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .nav-item.active > .ic {
  color: #4f46e5 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .nav-item.active {
  box-shadow: inset 3px 0 0 #4f46e5, inset 0 0 0 1px #e5e5e5 !important;
}

/* ─── 5. Inputs / textarea / select — focus-ring на Indigo Ink ──────── */
:root[data-theme="cd"][data-cd-mode="light"] input:focus,
:root[data-theme="cd"][data-cd-mode="light"] textarea:focus,
:root[data-theme="cd"][data-cd-mode="light"] select:focus {
  outline: none !important;
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.22) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] body input:focus,
:root[data-theme="cd"][data-cd-mode="light"] body select:focus,
:root[data-theme="cd"][data-cd-mode="light"] body textarea:focus {
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.22) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .cell-input:focus {
  background: #ffffff !important;
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.32) !important;
  outline: none !important;
}

/* ─── 6. Checkbox / radio accent ───────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] input[type="checkbox"],
:root[data-theme="cd"][data-cd-mode="light"] input[type="radio"] {
  accent-color: #4f46e5 !important;
}

/* ─── 7. Progress bars (.cd-progress) ──────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .cd-progress .row .bar > i {
  background: #0a0a0a !important;
}

/* ─── 8. Activity dots / timeline ──────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .cd-activity-row .dot6 {
  background: #4f46e5 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .cd-timeline-row .rail::after {
  border-color: #4f46e5 !important;
  background: #ffffff !important;
}

/* ─── 9. Tabs underline ────────────────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .tab-btn.active {
  color: #0a0a0a !important;
  border-bottom-color: #4f46e5 !important;
}

/* ─── 10. Spinner ──────────────────────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .spinner {
  border-top-color: #4f46e5 !important;
  border-right-color: #e5e5e5 !important;
  border-bottom-color: #e5e5e5 !important;
  border-left-color: #e5e5e5 !important;
}

/* ─── 11. Command palette / search-results selected marker ─────────── */
:root[data-theme="cd"][data-cd-mode="light"] .cmdk-item.selected {
  box-shadow: inset 3px 0 0 #4f46e5 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .cmdk-item mark.hl,
:root[data-theme="cd"][data-cd-mode="light"] .cmdk-item .hl {
  background: rgba(79, 70, 229, 0.14) !important;
  color: #4f46e5 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .search-result-item.selected {
  box-shadow: inset 3px 0 0 #4f46e5 !important;
}

/* ─── 12. Charts: bar-chart основной цвет столбца ──────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .bar-chart .bar-g rect {
  fill: #4f46e5 !important;
}

/* ─── 13. Calendar today outline + vacation cell ───────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .ec-today {
  outline: 1px solid #4f46e5 !important;
  outline-offset: -1px;
}
:root[data-theme="cd"][data-cd-mode="light"] .ec-cell.ec-cell-vac {
  background: rgba(79, 70, 229, 0.10) !important;
  border-color: rgba(79, 70, 229, 0.40) !important;
  color: #3730a3 !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .ec-stat-vac {
  color: #4f46e5 !important;
}

/* ─── 14. Cell-input vacation marker ───────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .cell-input.cell-vacation {
  color: #4f46e5 !important;
  background: rgba(79, 70, 229, 0.08) !important;
}

/* ─── 15. CD-pill warn / brig-card-count / badge-count ─────────────── */
:root[data-theme="cd"][data-cd-mode="light"] .cd-pill.warn {
  color: #4f46e5 !important;
  background: rgba(79, 70, 229, 0.10) !important;
}
:root[data-theme="cd"][data-cd-mode="light"] .brig-card-count {
  color: #4f46e5 !important;
}

/* ─── 16. Test-stand indicator chip ────────────────────────────────── */
:root[data-theme="cd"][data-cd-mode="light"] #cd-theme-indicator,
:root[data-theme="cd"][data-cd-mode="light"] .cd-theme-indicator {
  background: #4f46e5 !important;
  color: #ffffff !important;
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.28) !important;
}

/* ═══════════════════════════════════════════════════════════════════════
 * СТАТУСНЫЕ БЕЙДЖИ — палитра типов отметок (Б/В/НВ/ОВ/К/НН/Н/ОТ/УД/У/ДО/ОЖ)
 * Базовая разметка предполагает class="badge badge-<lowercase-code>".
 * Сбрасываем box-shadow от базового .badge, чтобы рамка была видна.
 * ═══════════════════════════════════════════════════════════════════════ */

/* Б — Больничный */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-b {
  background: #fde8d4 !important;
  color: #7a3a08 !important;
  border: 1px solid #f5c98a !important;
  box-shadow: none !important;
}

/* В — Выходной день */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-v {
  background: #eceef2 !important;
  color: #3a3f4a !important;
  border: 1px solid #d4d8e0 !important;
  box-shadow: none !important;
}

/* НВ — Доп. выходные (неоплачиваемые) */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-nv {
  background: #f1f0e8 !important;
  color: #4a4634 !important;
  border: 1px solid #d8d4be !important;
  box-shadow: none !important;
}

/* ОВ — Доп. выходные (оплачиваемые) */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-ov {
  background: #e6ecf0 !important;
  color: #2f4858 !important;
  border: 1px solid #c4d2dc !important;
  box-shadow: none !important;
}

/* К — Командировка */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-k {
  background: #dde7f8 !important;
  color: #1d3a7a !important;
  border: 1px solid #b6c8e8 !important;
  box-shadow: none !important;
}

/* НН — Невыход по невыясненным причинам */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-nn {
  background: #fadbe0 !important;
  color: #8a1a2b !important;
  border: 1px solid #f0b4be !important;
  box-shadow: none !important;
}

/* Н — Ночные часы */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-n {
  background: #e3def8 !important;
  color: #2e2473 !important;
  border: 1px solid #c4bcec !important;
  box-shadow: none !important;
}

/* ОТ — Отпуск основной */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-ot {
  background: #d5ecdc !important;
  color: #1f5a3a !important;
  border: 1px solid #a8d6b8 !important;
  box-shadow: none !important;
}

/* УД — Отпуск учебный (неоплачиваемый) */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-ud {
  background: #e0eef5 !important;
  color: #1f4a66 !important;
  border: 1px solid #b8d6e6 !important;
  box-shadow: none !important;
}

/* У — Отпуск учебный (оплачиваемый) */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-u {
  background: #d2e7f4 !important;
  color: #0f4a70 !important;
  border: 1px solid #a4cce0 !important;
  box-shadow: none !important;
}

/* ДО — Отпуск неоплачиваемый по соглашению */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-do {
  background: #ede4d8 !important;
  color: #4f3a1a !important;
  border: 1px solid #d4c0a0 !important;
  box-shadow: none !important;
}

/* ОЖ — Отпуск по уходу за ребёнком */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-oj {
  background: #f7dbeb !important;
  color: #7a1a5a !important;
  border: 1px solid #e8b4d0 !important;
  box-shadow: none !important;
}

/* ═══════════════════════════════════════════════════════════════════════
 * Стандартные семантические бейджи (.badge-blue/green/yellow/red/do/rv)
 * Согласованы по тону с палитрой статусов выше: pastel-bg + dark text + 1px
 * рамка, без неоновой яркости. Покрывают и .badge.badge-X и просто .badge-X.
 * ═══════════════════════════════════════════════════════════════════════ */

:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-blue,
:root[data-theme="cd"][data-cd-mode="light"] .badge-blue {
  background: #dde7f8 !important;
  color: #1d3a7a !important;
  border: 1px solid #b6c8e8 !important;
  box-shadow: none !important;
}

:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-green,
:root[data-theme="cd"][data-cd-mode="light"] .badge-green {
  background: #d5ecdc !important;
  color: #1f5a3a !important;
  border: 1px solid #a8d6b8 !important;
  box-shadow: none !important;
}

:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-yellow,
:root[data-theme="cd"][data-cd-mode="light"] .badge-yellow {
  background: #fde8d4 !important;
  color: #7a3a08 !important;
  border: 1px solid #f5c98a !important;
  box-shadow: none !important;
}

:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-red,
:root[data-theme="cd"][data-cd-mode="light"] .badge-red {
  background: #fadbe0 !important;
  color: #8a1a2b !important;
  border: 1px solid #f0b4be !important;
  box-shadow: none !important;
}

/* .badge-do (Отгул) — пересекается с кодом ДО; даём тёплый bisque */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-do,
:root[data-theme="cd"][data-cd-mode="light"] .badge-do {
  background: #ede4d8 !important;
  color: #4f3a1a !important;
  border: 1px solid #d4c0a0 !important;
  box-shadow: none !important;
}

/* .badge-rv (Работа в выходной) — насыщенный изумруд по тону ОТ */
:root[data-theme="cd"][data-cd-mode="light"] .badge.badge-rv,
:root[data-theme="cd"][data-cd-mode="light"] .badge-rv {
  background: #d5ecdc !important;
  color: #1f5a3a !important;
  border: 1px solid #a8d6b8 !important;
  box-shadow: none !important;
}

/* CD-light: убрать border-bottom у .jfilter-row — лишние полосы в журнале */
:root[data-theme="cd"][data-cd-mode="light"] .jfilter-row { border-bottom: none !important; background: transparent !important; }

