

/* Start:/local/templates/personal/css/lk-components.css?1777066132171554*/
/* ==========================================================================
   lk-components.css
   Общий каталог переиспользуемых компонентов ЛК АПМО.
   Каждый модуль новой темы добавляет сюда свою секцию.

   Зависит от: lk-tokens.css (все значения берутся через var(--lk-...)).
   Подключать ПОСЛЕ lk-tokens.css и lk.css.

   Оглавление:
     0. CORE (кнопки .lk-btn*, иконки .lk-ico*, карточки .lk-card*)
     1. Notification Bell  — /local/include/notification_bell.php
     2. Profile / Мои устройства — /local/include/profile_subscriptions.php
     3. Profile / CalDAV — /local/include/profile_caldav.php
     4. Календарь занятости ЛК — /local/include/calendar_page.php
     5. Расписание вебинаров ЛК — /local/include/webinar_schedule_page.php
     6. Рассылки — /local/include/broadcast_page.php
     7. Палата (Вопросы) — /lichnyy-kabinet/voprosy/index.php

   Обновление Phase 2 (2026-04-22): все брендовые цвета (#1976d2, #2196f3,
   #0077ff, #2563eb, #e53935, #c62828, #2e7d32, #28a745 и т.п.) заменены на
   токены var(--lk-c-primary|danger|success). Добавлена секция 0. CORE —
   единые классы .lk-btn*, .lk-ico* (локальные SVG) и .lk-card*.
   Все 7 модулей теперь визуально единообразны.
   ========================================================================== */

/* ══════════════════════════════════════════════════════════
   0. CORE  —  единый «контрактный слой» ЛК АПМО
   ──────────────────────────────────────────────────────────
   Общие кнопки (.lk-btn*), локальные SVG-иконки (.lk-ico*)
   и базовые карточки (.lk-card). Используется всеми модулями
   ЛК независимо от их BEM-префиксов (.ntf-*, .bc-*, .caldav-*…).
   Все значения — через токены из lk-tokens.css.
   ══════════════════════════════════════════════════════════ */

/* ── Кнопки ───────────────────────────────────────────── */
.lk-btn,
.lk-btn:focus {
    -webkit-appearance: none;
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    border: 1px solid transparent;
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink, #0F172A);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms), color var(--lk-transition, 180ms), box-shadow var(--lk-transition, 180ms);
}
.lk-btn:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
}
.lk-btn:disabled,
.lk-btn[aria-disabled="true"] {
    opacity: .55;
    cursor: not-allowed;
    box-shadow: none;
}

/* ── Вариант: primary (заливка брендом) ─── */
.lk-btn--primary {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: var(--lk-c-primary, #0051AC);
}
.lk-btn--primary:hover:not(:disabled) {
    background: var(--lk-c-primary-600, #004695);
    border-color: var(--lk-c-primary-600, #004695);
}

/* ── Вариант: secondary (outline) ─── */
.lk-btn--secondary {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    border-color: var(--lk-c-line-2, #CBD5E1);
}
.lk-btn--secondary:hover:not(:disabled) {
    background: var(--lk-c-surface-2, #F1F5F9);
    border-color: var(--lk-c-ink-4, #94A3B8);
}

/* ── Вариант: danger (удаление/отвязка) ─── */
.lk-btn--danger {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-danger, #B91C1C);
    border-color: var(--lk-c-danger-bg, #FEE2E2);
}
.lk-btn--danger:hover:not(:disabled) {
    background: var(--lk-c-danger-bg, #FEE2E2);
    border-color: var(--lk-c-danger, #B91C1C);
}
.lk-btn--danger-solid {
    background: var(--lk-c-danger, #B91C1C);
    color: #fff;
    border-color: var(--lk-c-danger, #B91C1C);
}
.lk-btn--danger-solid:hover:not(:disabled) {
    background: #8B1414;
    border-color: #8B1414;
}

/* ── Вариант: ghost (текстовая ссылка-кнопка) ─── */
.lk-btn--ghost {
    background: transparent;
    color: var(--lk-c-primary, #0051AC);
    border-color: transparent;
}
.lk-btn--ghost:hover:not(:disabled) {
    background: var(--lk-c-primary-50, #E8F0FB);
}

/* ── Вариант: icon (квадратная иконочная) ─── */
.lk-btn--icon {
    min-height: 36px;
    min-width: 36px;
    padding: 0;
    border-radius: var(--lk-r-sm, 8px);
}
.lk-btn--icon-sm {
    min-height: 32px;
    min-width: 32px;
    padding: 0;
    border-radius: var(--lk-r-xs, 6px);
}

/* ── Размеры ─── */
.lk-btn--sm { min-height: 32px; padding: 0 var(--lk-sp-3, 12px); font-size: var(--lk-fs-xs, 12px); }
.lk-btn--lg { min-height: 48px; padding: 0 var(--lk-sp-6, 24px); font-size: var(--lk-fs-md, 16px); }

/* ── Блочная (full-width) ─── */
.lk-btn--block { width: 100%; display: flex; }


/* ══════════════════════════════════════════════════════════
   Локальные SVG-иконки (.lk-ico)
   ──────────────────────────────────────────────────────────
   Все иконки — inline data:image/svg+xml, никаких внешних
   сетей или emoji-фолбэков. Цвет наследуется через currentColor.
   ══════════════════════════════════════════════════════════ */

.lk-ico {
    display: inline-block;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    vertical-align: middle;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
}
.lk-ico--sm { width: 16px; height: 16px; }
.lk-ico--md { width: 20px; height: 20px; }
.lk-ico--lg { width: 24px; height: 24px; }
.lk-ico--xl { width: 32px; height: 32px; }

/* Desktop / monitor */
.lk-ico--desktop {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='2' y='3' width='20' height='14' rx='2'/><path d='M8 21h8M12 17v4'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='2' y='3' width='20' height='14' rx='2'/><path d='M8 21h8M12 17v4'/></svg>");
}
/* Mobile phone */
.lk-ico--phone {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='5' y='2' width='14' height='20' rx='2'/><path d='M12 18h0'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='5' y='2' width='14' height='20' rx='2'/><path d='M12 18h0'/></svg>");
}
/* Trash */
.lk-ico--trash {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6'/></svg>");
}
/* Chat bubble */
.lk-ico--chat {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000'><path d='M12 2C6.48 2 2 5.82 2 10.5c0 2.3 1.06 4.39 2.8 5.95L4 22l5.78-3.06c.72.1 1.46.16 2.22.16 5.52 0 10-3.82 10-8.6S17.52 2 12 2z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23000'><path d='M12 2C6.48 2 2 5.82 2 10.5c0 2.3 1.06 4.39 2.8 5.95L4 22l5.78-3.06c.72.1 1.46.16 2.22.16 5.52 0 10-3.82 10-8.6S17.52 2 12 2z'/></svg>");
}
/* Plus */
.lk-ico--plus {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>");
}
/* Sync / refresh */
.lk-ico--sync {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M23 4v6h-6M1 20v-6h6'/><path d='M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M23 4v6h-6M1 20v-6h6'/><path d='M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15'/></svg>");
}
/* Close (×) */
.lk-ico--close {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'><path d='M18 6 6 18M6 6l12 12'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'><path d='M18 6 6 18M6 6l12 12'/></svg>");
}
/* Check (галка) */
.lk-ico--check {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M20 6 9 17l-5-5'/></svg>");
}
/* Settings (gear) */
.lk-ico--gear {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='3'/><path d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='3'/><path d='M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z'/></svg>");
}
/* Bell (on) — для случаев без собственного SVG */
.lk-ico--bell {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0'/></svg>");
}
/* Arrow left (назад) */
.lk-ico--arrow-left {
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M19 12H5M12 19l-7-7 7-7'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M19 12H5M12 19l-7-7 7-7'/></svg>");
}


/* ══════════════════════════════════════════════════════════
   Карточки (.lk-card)
   ══════════════════════════════════════════════════════════ */

.lk-card {
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line, #E2E8F0);
    border-radius: var(--lk-r-md, 12px);
    padding: var(--lk-sp-5, 20px);
    box-shadow: var(--lk-sh-1, 0 1px 2px rgba(15,23,42,.06), 0 1px 3px rgba(15,23,42,.05));
}
.lk-card--lg { padding: var(--lk-sp-6, 24px); }
.lk-card--sm { padding: var(--lk-sp-4, 16px); }

.lk-card__title {
    margin: 0 0 var(--lk-sp-3, 12px);
    font-size: var(--lk-fs-lg, 18px);
    font-weight: 700;
    color: var(--lk-c-ink, #0F172A);
    line-height: var(--lk-lh-tight, 1.25);
}
.lk-card__sub {
    margin: 0 0 var(--lk-sp-4, 16px);
    font-size: var(--lk-fs-sm, 14px);
    color: var(--lk-c-ink-3, #64748B);
    line-height: var(--lk-lh, 1.5);
}
.lk-card__actions {
    margin-top: var(--lk-sp-4, 16px);
    display: flex;
    gap: var(--lk-sp-2, 8px);
    flex-wrap: wrap;
}





/* ==========================================================================
   1. NOTIFICATION BELL
   Используется в: /local/include/notification_bell.php
   ========================================================================== */

/* ── Shell ─────────────────────────────────────────── */
.ntf-bell {
    position: fixed;
    top: 16px;
    right: 24px;
    z-index: 9990;
    font-family: var(--lk-ff, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif);
}

/* ── Кнопка-колокольчик ────────────────────────────── */
.ntf-bell__btn {
    position: relative;
    width: var(--lk-target, 44px);
    height: var(--lk-target, 44px);
    border-radius: 50%;
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line, #e2e8f0);
    box-shadow: var(--lk-sh-1, 0 2px 8px rgba(0,0,0,.10));
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: box-shadow var(--lk-transition, .2s), transform var(--lk-transition, .15s), border-color var(--lk-transition, .15s);
}
.ntf-bell__btn:hover {
    box-shadow: var(--lk-sh-2, 0 4px 16px rgba(0,0,0,.15));
    transform: scale(1.05);
    border-color: var(--lk-c-line-2, #cbd5e1);
}
.ntf-bell__btn:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
}
.ntf-bell__btn svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: var(--lk-c-ink-2, #334155);
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ── Бейдж со счётчиком ──────────────────────────────
   Важно: background задаётся ДВАЖДЫ — сначала жёсткий hex,
   потом var() с fallback. Это защита на случай, если
   lk-tokens.css не успел подключиться (или в конфликте
   с другим кешированным CSS). */
.ntf-bell__badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 20px;
    height: 20px;
    line-height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    background: #dc2626;
    background: var(--lk-c-danger, #dc2626);
    color: #fff !important;
    font-size: 12px;
    font-weight: 700;
    text-align: center;
    display: none;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(220, 38, 38, .45);
    font-variant-numeric: tabular-nums;
    z-index: 2;
    pointer-events: none;
}
.ntf-bell__badge.visible { display: block; }

/* ── Dropdown ──────────────────────────────────────── */
.ntf-dropdown {
    display: none;
    position: absolute;
    top: 52px;
    right: 0;
    width: 380px;
    max-height: 520px;
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line, #e2e8f0);
    border-radius: var(--lk-r-md, 12px);
    box-shadow: var(--lk-sh-3, 0 8px 32px rgba(0,0,0,.15));
    overflow: hidden;
    flex-direction: column;
    color: var(--lk-c-ink, #0f172a);
}
.ntf-dropdown.open { display: flex; }

.ntf-dropdown__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px 10px;
    flex-shrink: 0;
}
.ntf-dropdown__title {
    font-size: var(--lk-fs-md, 15px);
    font-weight: 600;
    color: var(--lk-c-ink, #0f172a);
}
.ntf-dropdown__mark-all {
    font-size: var(--lk-fs-xs, 12px);
    color: var(--lk-c-primary, #0051AC);
    cursor: pointer;
    border: none;
    background: none;
    padding: 4px 6px;
    border-radius: var(--lk-r-xs, 4px);
    transition: background var(--lk-transition, .15s);
}
.ntf-dropdown__mark-all:hover { background: var(--lk-c-primary-50, #e8f0fb); }
.ntf-dropdown__mark-all:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
}

/* ── Фильтры по категориям ─────────────────────────── */
.ntf-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0 16px 12px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--lk-c-line, #e2e8f0);
}

.ntf-filter {
    padding: 4px 10px;
    border: 1px solid var(--lk-c-line, #e2e8f0);
    border-radius: var(--lk-r-pill, 16px);
    background: var(--lk-c-surface, #fff);
    font-size: 11.5px;
    color: var(--lk-c-ink-2, #334155);
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--lk-transition, .15s), color var(--lk-transition, .15s), border-color var(--lk-transition, .15s);
    user-select: none;
    flex-shrink: 0;
    min-height: 26px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    line-height: 1;
}
.ntf-filter:hover { background: var(--lk-c-surface-2, #f1f5f9); color: var(--lk-c-ink, #0f172a); }
.ntf-filter.active {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: var(--lk-c-primary, #0051AC);
}
.ntf-filter__count {
    display: inline-block;
    min-width: 14px;
    height: 16px;
    line-height: 16px;
    padding: 0 4px;
    border-radius: 8px;
    background: rgba(15, 23, 42, .08);
    color: var(--lk-c-ink, #0f172a);
    font-size: 10px;
    font-weight: 600;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.ntf-filter.active .ntf-filter__count {
    background: rgba(255, 255, 255, .28);
    color: #fff;
}

/* ── Список уведомлений ────────────────────────────── */
.ntf-dropdown__list {
    flex: 1;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    max-height: 400px;
}
.ntf-dropdown__empty {
    padding: 40px 20px;
    text-align: center;
    color: var(--lk-c-ink-4, #94a3b8);
    font-size: var(--lk-fs-sm, 14px);
}

/* ── Элемент уведомления ───────────────────────────── */
.ntf-item {
    display: flex;
    gap: 10px;
    padding: 12px 18px;
    cursor: pointer;
    transition: background var(--lk-transition, .15s);
    border-bottom: 1px solid var(--lk-c-line, #e2e8f0);
    text-decoration: none;
    color: inherit;
}
.ntf-item:hover   { background: var(--lk-c-surface-2, #f5f7fa); }
.ntf-item--unread { background: var(--lk-c-primary-50, #f0f7ff); }
.ntf-item--unread:hover { background: var(--lk-c-primary-50, #e3f0fd); filter: brightness(.98); }

.ntf-item__icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    line-height: 1;
}
/* Подложки иконок по категориям — семантические бейдж-фоны */
.ntf-item__icon--palata_new_ticket,
.ntf-item__icon--palata_reply,
.ntf-item__icon--palata_status     { background: var(--lk-c-warn-bg, #fff3e0); }
.ntf-item__icon--webinar_reminder,
.ntf-item__icon--webinar_start,
.ntf-item__icon--calendar_reminder { background: var(--lk-c-info-bg, #e3f2fd); }
.ntf-item__icon--syup_reminder,
.ntf-item__icon--syup_overdue,
.ntf-item__icon--syup_weekly       { background: var(--lk-c-danger-bg, #fce4ec); }
.ntf-item__icon--broadcast         { background: var(--lk-c-success-bg, #e8f5e9); }

.ntf-item__body { flex: 1; min-width: 0; }
.ntf-item__title {
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 600;
    color: var(--lk-c-ink, #0f172a);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ntf-item__msg {
    font-size: var(--lk-fs-xs, 12px);
    color: var(--lk-c-ink-3, #64748b);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.4;
}

.ntf-item--expanded .ntf-item__title {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
}
.ntf-item--expanded .ntf-item__msg {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    line-height: 1.45;
}

.ntf-item__expand {
    font-size: 11px;
    color: var(--lk-c-primary, #0051AC);
    cursor: pointer;
    margin-top: 3px;
    display: inline-block;
    user-select: none;
}
.ntf-item__expand:hover { text-decoration: underline; }
.ntf-item--expanded .ntf-item__expand { display: none; }

.ntf-item__open-link {
    display: none;
    margin-top: 8px;
    padding: 6px 14px;
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border: none;
    border-radius: var(--lk-r-sm, 6px);
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    text-decoration: none;
    line-height: 1.4;
    transition: background var(--lk-transition, .15s);
}
.ntf-item__open-link:hover { background: var(--lk-c-primary-600, #004695); color: #fff; }
.ntf-item__open-link:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
}
.ntf-item--expanded .ntf-item__open-link { display: inline-block; }

.ntf-item__time {
    flex-shrink: 0;
    font-size: 11px;
    color: var(--lk-c-ink-4, #94a3b8);
    padding-top: 2px;
    font-variant-numeric: tabular-nums;
}
.ntf-item__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lk-c-primary, #0051AC);
    flex-shrink: 0;
    margin-top: 4px;
    display: none;
}
.ntf-item--unread .ntf-item__dot { display: block; }

/* ── Анимация колокольчика ──────────────────────────── */
@keyframes ntf-ring {
    0%   { transform: rotate(0); }
    15%  { transform: rotate(14deg); }
    30%  { transform: rotate(-14deg); }
    45%  { transform: rotate(8deg); }
    60%  { transform: rotate(-8deg); }
    75%  { transform: rotate(3deg); }
    100% { transform: rotate(0); }
}
.ntf-bell__btn.ringing svg { animation: ntf-ring 0.6s ease-in-out; }
@media (prefers-reduced-motion: reduce) {
    .ntf-bell__btn.ringing svg { animation: none; }
}

/* ── Push-подписка (баннер сверху списка) ───────────── */
.ntf-push-bar {
    display: none;
    padding: 10px 18px;
    border-bottom: 1px solid var(--lk-c-line, #e2e8f0);
    background: var(--lk-c-warn-bg, #fffde7);
    flex-shrink: 0;
}
.ntf-push-bar.visible { display: flex; align-items: center; gap: 10px; }
.ntf-push-bar__text {
    flex: 1;
    font-size: var(--lk-fs-xs, 12px);
    color: var(--lk-c-ink-2, #334155);
    line-height: 1.35;
}
.ntf-push-bar__btn {
    padding: 6px 14px;
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border: none;
    border-radius: var(--lk-r-sm, 6px);
    font-size: var(--lk-fs-xs, 12px);
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background var(--lk-transition, .15s);
}
.ntf-push-bar__btn:hover { background: var(--lk-c-primary-600, #004695); }
.ntf-push-bar__btn:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
}
.ntf-push-bar__btn--done {
    background: var(--lk-c-success, #15803D);
    cursor: default;
}
.ntf-push-bar__btn--done:hover { background: var(--lk-c-success, #15803D); }
.ntf-push-bar__close {
    background: none;
    border: none;
    color: var(--lk-c-ink-3, #64748b);
    font-size: 18px;
    cursor: pointer;
    padding: 0 6px;
    line-height: 1;
    border-radius: var(--lk-r-xs, 4px);
    transition: background var(--lk-transition, .15s), color var(--lk-transition, .15s);
}
.ntf-push-bar__close:hover { background: rgba(15, 23, 42, .06); color: var(--lk-c-ink, #0f172a); }

/* ── Мобильная адаптация ───────────────────────────── */
@media (max-width: 600px) {
    .ntf-bell { top: 10px; right: 10px; }
    .ntf-dropdown { width: calc(100vw - 20px); right: -10px; max-height: 70vh; }
    .ntf-dropdown__list { max-height: calc(70vh - 100px); }
}

/* ══════════════════════════════════════════════════════════
   2. Profile — Мои устройства (notification_bell-связанный блок)
   ══════════════════════════════════════════════════════════ */
.sub-device-row {
  display: flex; align-items: center; gap: 14px; width: 100%;
}
.sub-device-icon {
  width: 40px; height: 40px; border-radius: 10px; background: #f1f5f8;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.sub-device-icon svg { width: 22px; height: 22px; fill: var(--lk-c-primary); }
.sub-device-body { flex: 1; min-width: 0; }
.sub-device-tag {
  display: inline-block; font-size: 11px; font-weight: 600;
  color: var(--lk-c-primary); background: var(--lk-c-primary-50);
  padding: 2px 8px; border-radius: 4px; margin-left: 6px;
}
.sub-device-meta { font-size: 12px; color: #aaa; margin-top: 2px; }
.sub-device-delete {
  border: none; background: none; cursor: pointer;
  padding: 8px; border-radius: 6px; color: var(--lk-c-danger); flex-shrink: 0;
}
.sub-device-delete:hover { background: #fff0f0; }
.sub-device-delete svg { width: 18px; height: 18px; }
.personal-cabinet__card--current {
  border: 2px solid var(--lk-c-primary) !important; background: #f5f9ff !important;
}

/* --- далее из того же модуля --- */
.max-bot-linked {
  display: flex; align-items: center; gap: 14px; width: 100%;
}
.max-bot-icon {
  width: 48px; height: 48px; border-radius: 12px; background: var(--lk-c-primary);
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.max-bot-icon svg { width: 28px; height: 28px; fill: #fff; }
.max-bot-body { flex: 1; min-width: 0; }
.max-bot-tag {
  display: inline-block; font-size: 11px; font-weight: 600;
  color: #fff; background: var(--lk-c-success);
  padding: 2px 8px; border-radius: 4px; margin-left: 6px;
}
.max-bot-tag--pending {
  background: #ffc107; color: #333;
}
.max-bot-meta { font-size: 12px; color: #aaa; margin-top: 2px; }
.max-bot-actions { margin-top: 16px; display: flex; gap: 10px; flex-wrap: wrap; }
.max-bot-btn {
  padding: 10px 24px; border: none; border-radius: 8px;
  font-size: 14px; font-weight: 500; cursor: pointer; text-decoration: none;
  display: inline-block; text-align: center;
}
.max-bot-btn--primary { background: var(--lk-c-primary); color: #fff; }
.max-bot-btn--primary:hover { background: var(--lk-c-primary-600); }
.max-bot-btn--danger { background: #fff; color: var(--lk-c-danger); border: 1px solid #eee; }
.max-bot-btn--danger:hover { background: #fff0f0; }
.max-bot-btn--secondary { background: #f1f5f8; color: #333; }
.max-bot-btn--secondary:hover { background: #e5eaf0; }
.max-bot-verify-form { margin-top: 12px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.max-bot-verify-input {
  width: 140px; padding: 10px 14px; border: 1px solid #ddd; border-radius: 8px;
  font-size: 16px; letter-spacing: 4px; text-align: center;
}
.max-bot-verify-input:focus { border-color: var(--lk-c-primary); outline: none; }

/* ══════════════════════════════════════════════════════════
   3. Profile — CalDAV-блок
   ══════════════════════════════════════════════════════════ */

/* Старая версия profile_caldav.css (содержимое ниже — после миграции удалить файл): */
/* /local/include/profile_caldav.css
 * Блок «Внешние календари» в профиле адвоката. Сдержанный стиль
 * под ЛК APMO, совместим с десктопной шириной и мобильным ЛК.
 */

.caldav-block {
    margin: 32px 0 24px;
    padding: 20px 24px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    font-family: inherit;
}
.caldav-head {
    display: flex; align-items: flex-start; justify-content: space-between;
    gap: 16px; margin-bottom: 16px; flex-wrap: wrap;
}
.caldav-title {
    margin: 0 0 4px; font-size: 18px; font-weight: 700; color: #111827;
}
.caldav-sub {
    margin: 0; font-size: 13px; color: #6b7280; line-height: 1.5; max-width: 620px;
}
.caldav-add-btn {
    padding: 9px 16px; border: 0; background: var(--lk-c-primary); color: #fff;
    border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer;
    white-space: nowrap;
}
.caldav-add-btn:hover { background: var(--lk-c-primary-600); }

.caldav-list { display: flex; flex-direction: column; gap: 10px; }
.caldav-empty, .caldav-loading {
    padding: 18px; text-align: center; color: #9ca3af; font-size: 14px;
    border: 1px dashed #e5e7eb; border-radius: 8px;
}
.caldav-item {
    padding: 12px 14px; border: 1px solid #e5e7eb; border-radius: 8px;
    background: #fafafa; transition: background .2s;
}
.caldav-item--auth { border-color: #fbbf24; background: #fffbeb; }
.caldav-item--err  { border-color: #fca5a5; background: #fef2f2; }
.caldav-item--busy { opacity: .6; pointer-events: none; }

.caldav-item__row1 { display: flex; align-items: center; gap: 12px; }
.caldav-item__swatch {
    width: 12px; height: 12px; border-radius: 50%; flex: 0 0 12px;
}
.caldav-item__main  { flex: 1; min-width: 0; }
.caldav-item__name  { font-size: 14px; font-weight: 600; color: #111827;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.caldav-item__sub   { font-size: 12px; color: #6b7280; margin-top: 2px; }
.caldav-item__actions { display: flex; gap: 6px; flex: 0 0 auto; }
.caldav-btn-s {
    width: 32px; height: 32px; border: 1px solid #e5e7eb; background: #fff;
    border-radius: 6px; font-size: 14px; cursor: pointer; line-height: 1;
    color: #4b5563; transition: background .15s;
}
.caldav-btn-s:hover { background: #f3f4f6; }
.caldav-remove:hover { color: var(--lk-c-danger); border-color: #fca5a5; }
.caldav-item__row2 {
    margin-top: 8px; padding-left: 24px; font-size: 11px; color: #9ca3af;
}
.caldav-item__err { color: var(--lk-c-danger); }

/* ===== Модалка мастера ===== */

.caldav-modal {
    position: fixed; inset: 0; z-index: 10000;
    display: flex; align-items: center; justify-content: center;
}
.caldav-modal[hidden] { display: none; }
.caldav-modal__backdrop {
    position: absolute; inset: 0; background: rgba(17, 24, 39, .55);
}
.caldav-modal__box {
    position: relative; width: min(520px, 92vw);
    max-height: 86vh; overflow: auto;
    background: #fff; border-radius: 12px; padding: 20px 22px 18px;
    box-shadow: 0 20px 48px rgba(0,0,0,.25);
}
.caldav-modal__head {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 12px;
}
.caldav-modal__head h4 { margin: 0; font-size: 17px; font-weight: 700; color: #111827; }
.caldav-modal__x {
    width: 32px; height: 32px; border: 0; background: transparent;
    font-size: 22px; cursor: pointer; color: #6b7280; line-height: 1;
    border-radius: 6px;
}
.caldav-modal__x:hover { background: #f3f4f6; color: #111827; }

.caldav-field { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.caldav-field > span { font-size: 12px; font-weight: 600; color: #374151; }
.caldav-field input, .caldav-field select {
    padding: 9px 11px; border: 1px solid #d1d5db; border-radius: 7px;
    font-size: 14px; font-family: inherit; background: #fff;
}
.caldav-field input:focus, .caldav-field select:focus {
    outline: none; border-color: var(--lk-c-primary);
    box-shadow: 0 0 0 3px rgba(37,99,235,.2);
}
.caldav-hint {
    margin: -6px 0 12px; font-size: 12px; color: #6b7280; line-height: 1.45;
    padding: 8px 10px; background: #f9fafb; border-radius: 6px;
    border-left: 3px solid #d1d5db;
}
.caldav-hint-inline { color: #6b7280; font-size: 11px; margin-top: 2px; }

.caldav-actions {
    display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px;
}
.caldav-btn {
    padding: 8px 14px; border-radius: 7px; font-size: 14px; font-weight: 600;
    cursor: pointer; border: 1px solid transparent;
}
.caldav-btn--primary   { background: var(--lk-c-primary); color: #fff; }
.caldav-btn--primary:hover    { background: var(--lk-c-primary-600); }
.caldav-btn--primary:disabled { background: #93c5fd; cursor: not-allowed; }
.caldav-btn--secondary { background: #fff; color: #374151; border-color: #d1d5db; }
.caldav-btn--secondary:hover { background: #f3f4f6; }

/* ===== Список календарей в шаге 2 ===== */

.caldav-cal-list {
    max-height: 320px; overflow: auto; border: 1px solid #e5e7eb; border-radius: 8px;
    padding: 4px;
}
.caldav-cal-row {
    display: flex; align-items: center; gap: 10px; padding: 8px 10px;
    cursor: pointer; border-radius: 6px; user-select: none;
}
.caldav-cal-row:hover { background: #f3f4f6; }
.caldav-cal-row input[type="radio"] { flex: 0 0 16px; }
.caldav-cal-swatch {
    width: 10px; height: 10px; border-radius: 50%; flex: 0 0 10px;
}
.caldav-cal-name { font-size: 14px; color: #111827; font-weight: 500;
    flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.caldav-cal-desc { font-size: 11px; color: #9ca3af; flex: 0 0 auto; }

/* ===== Занят / ошибка ===== */

.caldav-err {
    margin-top: 12px; padding: 10px 12px; background: #fef2f2;
    border: 1px solid #fca5a5; border-radius: 7px; color: var(--lk-c-danger);
    font-size: 13px; line-height: 1.45;
}
.caldav-busy {
    margin-top: 12px; padding: 10px 12px; background: #eff6ff;
    border: 1px solid #bfdbfe; border-radius: 7px; color: var(--lk-c-primary-600);
    font-size: 13px; display: flex; align-items: center; gap: 8px;
}
.caldav-spinner {
    display: inline-block; width: 14px; height: 14px;
    border: 2px solid #bfdbfe; border-top-color: var(--lk-c-primary); border-radius: 50%;
    animation: caldav-spin .8s linear infinite;
}
@keyframes caldav-spin { to { transform: rotate(360deg); } }

/* ===== Mobile ===== */

@media (max-width: 640px) {
    .caldav-block { padding: 0; margin: 24px 0; }
    .caldav-head { flex-direction: column; align-items: stretch; }
    .caldav-add-btn { width: 100%; }
    .caldav-modal__box { padding: 16px 14px; max-height: 92vh; }
}

/* ══════════════════════════════════════════════════════════
   3b. Profile — фикс разъехавшихся полей (Phase 2, 2026-04-22)
   ──────────────────────────────────────────────────────────
   Снимаем собственную рамку и тень у .caldav-block, чтобы он
   визуально совпал с секциями «Мои устройства и уведомления»
   и «Мессенджер MAX» (те не имеют внешней рамки, только
   заголовок + внутренние карточки). Кнопка «+ Подключить»
   приводится к единому стилю .lk-btn--primary.
   ══════════════════════════════════════════════════════════ */

.caldav-block {
    margin: var(--lk-sp-8, 32px) 0 var(--lk-sp-6, 24px);
    padding: 0;
    background: transparent;
    border: none;
    box-shadow: none;
    border-radius: 0;
}
.caldav-head {
    margin-bottom: var(--lk-sp-4, 16px);
    padding-bottom: var(--lk-sp-3, 12px);
    border-bottom: 1px solid var(--lk-c-line, #E2E8F0);
}
.caldav-title {
    font-size: var(--lk-fs-md, 16px);
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
}

/* Кнопка «+ Подключить» — приведение к .lk-btn--primary */
.caldav-add-btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border: 1px solid var(--lk-c-primary, #0051AC);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    gap: var(--lk-sp-2, 8px);
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.caldav-add-btn:hover { background: var(--lk-c-primary-600, #004695); border-color: var(--lk-c-primary-600, #004695); }
.caldav-add-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* Кнопка «Подписать это устройство» / .max-bot-btn-* — через .lk-btn контракт */
.max-bot-btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.max-bot-btn--primary {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: var(--lk-c-primary, #0051AC);
}
.max-bot-btn--primary:hover { background: var(--lk-c-primary-600, #004695); border-color: var(--lk-c-primary-600, #004695); }
.max-bot-btn--danger {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-danger, #B91C1C);
    border-color: var(--lk-c-danger-bg, #FEE2E2);
}
.max-bot-btn--danger:hover { background: var(--lk-c-danger-bg, #FEE2E2); border-color: var(--lk-c-danger, #B91C1C); }
.max-bot-btn--secondary {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    border-color: var(--lk-c-line-2, #CBD5E1);
}
.max-bot-btn--secondary:hover { background: var(--lk-c-surface-2, #F1F5F9); border-color: var(--lk-c-ink-4, #94A3B8); }
.max-bot-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* ══════════════════════════════════════════════════════════
   4. Календарь занятости ЛК  — /local/include/calendar_page.php
   ──────────────────────────────────────────────────────────
   Модуль v2 (2026-04-22): полностью переведён на токены
   (никакого хардкода цветов), inline-<style> из PHP вычищен,
   inline style="..." в разметке убран (легенда, размеры,
   состояние видимости — через модификаторы классов).
   Поддерживает мобильный портретный WebView (≤600px) без
   горизонтального оверфлоу.
   ══════════════════════════════════════════════════════════ */

/* ── Контейнер ─────────────────────────────────────────── */
.lk-cal {
    max-width: 900px;
    margin: 0 auto;
    font-family: var(--lk-ff);
    box-sizing: border-box;
}
.lk-cal *, .lk-cal *::before, .lk-cal *::after { box-sizing: border-box; }

/* ── Заголовок ─────────────────────────────────────────── */
.lk-cal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--lk-sp-5, 20px);
    flex-wrap: wrap;
    gap: var(--lk-sp-3, 12px);
}
.lk-cal__title {
    font-size: var(--lk-fs-xl, 22px);
    font-weight: 700;
    color: var(--lk-c-ink, #0F172A);
}
.lk-cal__controls {
    display: flex;
    align-items: center;
    gap: var(--lk-sp-2, 8px);
    flex-wrap: wrap;
}

/* ── Переключатель «Месяц / Список» ────────────────────── */
.lk-cal__view-switch {
    display: inline-flex;
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    overflow: hidden;
}
.lk-cal__view-btn {
    min-height: 36px;
    padding: 0 var(--lk-sp-4, 14px);
    border: none;
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: background var(--lk-transition, 180ms), color var(--lk-transition, 180ms);
}
.lk-cal__view-btn:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.lk-cal__view-btn.active {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
}
.lk-cal__view-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* ── Навигация по месяцам ──────────────────────────────── */
.lk-cal__nav {
    display: flex;
    align-items: center;
    gap: var(--lk-sp-3, 12px);
    margin-bottom: var(--lk-sp-4, 16px);
}
.lk-cal__nav-btn {
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-family: inherit;
    font-size: var(--lk-fs-lg, 18px);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.lk-cal__nav-btn:hover {
    background: var(--lk-c-surface-2, #F1F5F9);
    border-color: var(--lk-c-ink-4, #94A3B8);
}
.lk-cal__nav-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }
.lk-cal__month-label {
    font-size: var(--lk-fs-md, 17px);
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
    min-width: 180px;
    text-align: center;
}
.lk-cal__today-btn {
    min-height: 36px;
    padding: 0 var(--lk-sp-3, 12px);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: background var(--lk-transition, 180ms);
}
.lk-cal__today-btn:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.lk-cal__today-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* ── Легенда ──────────────────────────────────────────── */
.lk-cal__legend {
    display: flex;
    gap: var(--lk-sp-4, 16px);
    margin-bottom: var(--lk-sp-4, 16px);
    flex-wrap: wrap;
}
.lk-cal__legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--lk-fs-sm, 13px);
    color: var(--lk-c-ink-2, #334155);
}
.lk-cal__legend-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--lk-c-ink-4, #94A3B8);
}
.lk-cal__legend-dot--court    { background: #EF4444; }   /* суд    — красный   */
.lk-cal__legend-dot--meeting  { background: #3B82F6; }   /* встреча — синий    */
.lk-cal__legend-dot--deadline { background: #F97316; }   /* дедлайн — оранж.  */
.lk-cal__legend-dot--webinar  { background: #8B5CF6; }   /* вебинар — фиолет. */
.lk-cal__legend-dot--personal { background: #22C55E; }   /* личное — зелёный */
.lk-cal__legend-dot--syup     { background: #FF5722; }   /* СЮП    — терракот */
.lk-cal__legend-dot--bup      { background: #009688; }   /* БЮП    — бирюза  */

/* ── Сетка месяца ─────────────────────────────────────── */
.lk-cal__grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    border: 1px solid var(--lk-c-line, #E2E8F0);
    border-radius: var(--lk-r-md, 12px);
    overflow: hidden;
    background: var(--lk-c-surface, #fff);
}
.lk-cal__dow {
    padding: 10px 4px;
    text-align: center;
    font-size: var(--lk-fs-xs, 12px);
    font-weight: 600;
    color: var(--lk-c-ink-4, #94A3B8);
    background: var(--lk-c-surface-2, #F1F5F9);
    border-bottom: 1px solid var(--lk-c-line, #E2E8F0);
    text-transform: uppercase;
}
.lk-cal__day {
    min-height: 80px;
    padding: 6px;
    border-right: 1px solid var(--lk-c-line, #E2E8F0);
    border-bottom: 1px solid var(--lk-c-line, #E2E8F0);
    cursor: pointer;
    transition: background var(--lk-transition, 150ms);
    position: relative;
    display: flex;
    flex-direction: column;
}
.lk-cal__day:nth-child(7n) { border-right: none; }
.lk-cal__day:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.lk-cal__day.other-month { background: var(--lk-c-bg, #F8FAFC); }
.lk-cal__day.other-month .lk-cal__day-num { color: var(--lk-c-line-2, #CBD5E1); }
.lk-cal__day.today { background: var(--lk-c-primary-50, #E8F0FB); }
.lk-cal__day.today .lk-cal__day-num {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-radius: 50%;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.lk-cal__day.selected {
    background: var(--lk-c-primary-50, #E8F0FB);
    box-shadow: inset 0 0 0 2px var(--lk-c-primary, #0051AC);
}
.lk-cal__day-num {
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 500;
    color: var(--lk-c-ink, #0F172A);
    margin-bottom: 4px;
}

/* ── Тепловая карта занятости (сетка 4×4 по часам) ────── */
/* Ряд 1: Н (00-08),  8,  9, 10                          */
/* Ряд 2: 11,         12, 13, 14                         */
/* Ряд 3: 15,         16, 17, 18                         */
/* Ряд 4: 19,         20, 21, Н (22-24)                  */
.lk-cal__heatmap {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(4, 10px);
    gap: 1px;
    margin-top: auto;
    border-radius: 2px;
    overflow: hidden;
    background: var(--lk-c-line, #E2E8F0);
}
.lk-cal__heatmap-s {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--lk-c-surface-2, #F1F5F9);
    min-width: 0;
    user-select: none;
    font-size: 9px;
    line-height: 1;
    font-weight: 700;
    color: transparent;    /* в пустых слотах цифра невидима */
    overflow: hidden;
}
.lk-cal__heatmap-s.busy {
    color: #fff;
    text-shadow: 0 0 1px rgba(0, 0, 0, .5);
}
.lk-cal__heatmap-night { font-size: 9px; }
.lk-cal__day.other-month .lk-cal__heatmap { opacity: .25; }

/* ── Список событий дня (под сеткой) ──────────────────── */
.lk-cal__day-detail {
    margin-top: var(--lk-sp-4, 16px);
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line, #E2E8F0);
    border-radius: var(--lk-r-md, 12px);
    padding: var(--lk-sp-4, 16px);
    display: none;
}
.lk-cal__day-detail.visible { display: block; }
.lk-cal__day-detail-title {
    font-size: var(--lk-fs-md, 16px);
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
    margin-bottom: var(--lk-sp-3, 12px);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--lk-sp-2, 8px);
}
.lk-cal__event-card {
    display: flex;
    gap: var(--lk-sp-3, 12px);
    padding: 10px 12px;
    border-radius: var(--lk-r-sm, 8px);
    margin-bottom: var(--lk-sp-2, 8px);
    background: var(--lk-c-surface-2, #F1F5F9);
    border-left: 4px solid transparent;
    transition: background var(--lk-transition, 150ms);
}
.lk-cal__event-card:hover { background: var(--lk-c-surface-2, #E2E8F0); }
.lk-cal__event-card[data-source="personal"] { border-left-color: var(--lk-c-primary, #0051AC); }
.lk-cal__event-card[data-source="syup"]     { border-left-color: #FF5722; }
.lk-cal__event-card[data-source="bup"]      { border-left-color: #009688; }
.lk-cal__event-card[data-source="webinar"]  { border-left-color: #8B5CF6; }
.lk-cal__event-time {
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 600;
    color: var(--lk-c-ink-2, #334155);
    min-width: 50px;
    flex-shrink: 0;
}
.lk-cal__event-body { flex: 1; min-width: 0; }
.lk-cal__event-title {
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 500;
    color: var(--lk-c-ink, #0F172A);
    margin-bottom: 2px;
}
.lk-cal__event-subtitle {
    font-size: var(--lk-fs-xs, 12px);
    color: var(--lk-c-ink-4, #94A3B8);
}
.lk-cal__event-actions {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
}
.lk-cal__event-btn {
    width: 28px;
    height: 28px;
    min-height: 28px;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--lk-c-ink-4, #94A3B8);
    font-family: inherit;
    font-size: 14px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background var(--lk-transition, 150ms), color var(--lk-transition, 150ms);
}
.lk-cal__event-btn:hover { background: var(--lk-c-line, #E2E8F0); color: var(--lk-c-ink-2, #334155); }
.lk-cal__event-btn.delete:hover {
    background: var(--lk-c-danger-bg, #FEE2E2);
    color: var(--lk-c-danger, #B91C1C);
}
.lk-cal__no-events {
    text-align: center;
    padding: var(--lk-sp-5, 20px);
    color: var(--lk-c-ink-4, #94A3B8);
    font-size: var(--lk-fs-sm, 14px);
}
.lk-cal__no-events--big { padding: var(--lk-sp-10, 40px); }

/* ── Режим «Список» ───────────────────────────────────── */
.lk-cal__list { display: none; }
.lk-cal__list.visible { display: block; }
.lk-cal__list-group { margin-bottom: var(--lk-sp-4, 16px); }
.lk-cal__list-date {
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
    margin-bottom: var(--lk-sp-2, 8px);
    padding: 8px 12px;
    background: var(--lk-c-surface-2, #F1F5F9);
    border-radius: var(--lk-r-sm, 8px);
}
.lk-cal__list-date.today-date {
    background: var(--lk-c-primary-50, #E8F0FB);
    color: var(--lk-c-primary, #0051AC);
}
.lk-cal__list-date.past-date { opacity: .85; }

.lk-cal__list-today {
    background: var(--lk-c-primary-50, #E8F0FB);
    border: 1px solid #BFDBFE;
    border-radius: var(--lk-r-md, 10px);
    padding: 10px 12px 12px;
    margin-bottom: var(--lk-sp-4, 18px);
}
.lk-cal__list-today-header {
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 700;
    color: var(--lk-c-primary, #0051AC);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: var(--lk-sp-2, 8px);
}
.lk-cal__list-today-header::before { content: '•'; font-size: 22px; line-height: 0; }

/* ── Архив (сворачиваемый блок прошлых событий) ───────── */
.lk-cal__archive {
    margin-top: var(--lk-sp-6, 24px);
    padding-top: 14px;
    border-top: 1px dashed var(--lk-c-line, #E2E8F0);
}
.lk-cal__archive-btn {
    width: 100%;
    min-height: 40px;
    padding: 12px 14px;
    background: var(--lk-c-surface-2, #F1F5F9);
    border: 1px solid var(--lk-c-line, #E2E8F0);
    border-radius: var(--lk-r-md, 10px);
    color: var(--lk-c-ink-2, #334155);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    transition: background var(--lk-transition, 150ms);
}
.lk-cal__archive-btn:hover { background: var(--lk-c-line, #E2E8F0); }
.lk-cal__archive-content { margin-top: 10px; opacity: .9; }
.lk-cal__archive-content.hidden { display: none; }

/* ── Пустое состояние (нет актуальных событий) ────────── */
.lk-cal__no-active {
    text-align: center;
    color: var(--lk-c-ink-3, #64748B);
    padding: 28px var(--lk-sp-4, 16px);
    font-size: var(--lk-fs-sm, 14px);
    background: var(--lk-c-surface-2, #F1F5F9);
    border-radius: var(--lk-r-md, 10px);
    margin-bottom: var(--lk-sp-4, 16px);
}

/* ── Кнопка «+ Добавить» ──────────────────────────────── */
.lk-cal__add-btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border: 1px solid var(--lk-c-primary, #0051AC);
    border-radius: var(--lk-r-sm, 8px);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.lk-cal__add-btn:hover {
    background: var(--lk-c-primary-600, #004695);
    border-color: var(--lk-c-primary-600, #004695);
}
.lk-cal__add-btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }
/* Компактный вариант (внутри карточки «Детали дня») */
.lk-cal__add-btn--sm {
    min-height: 30px;
    padding: 0 var(--lk-sp-3, 10px);
    font-size: var(--lk-fs-xs, 12px);
}

/* ── Модалка ──────────────────────────────────────────── */
.lk-cal__overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(15, 23, 42, .4);
    z-index: var(--lk-z-drawer, 9999);
    display: none;
    align-items: center;
    justify-content: center;
}
.lk-cal__overlay.visible { display: flex; }
.lk-cal__modal {
    background: var(--lk-c-surface, #fff);
    border-radius: var(--lk-r-lg, 16px);
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    overflow-y: auto;
    padding: var(--lk-sp-6, 24px);
    box-shadow: var(--lk-sh-3);
}
.lk-cal__modal h3 {
    font-size: var(--lk-fs-lg, 18px);
    font-weight: 700;
    color: var(--lk-c-ink, #0F172A);
    margin: 0 0 var(--lk-sp-5, 20px);
}
.lk-cal__form-group { margin-bottom: var(--lk-sp-4, 16px); }
.lk-cal__form-group label {
    display: block;
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 500;
    color: var(--lk-c-ink-2, #334155);
    margin-bottom: 6px;
}
.lk-cal__form-group input,
.lk-cal__form-group select,
.lk-cal__form-group textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 14px);
    color: var(--lk-c-ink, #0F172A);
    background: var(--lk-c-surface, #fff);
    transition: border-color var(--lk-transition, 180ms), box-shadow var(--lk-transition, 180ms);
}
.lk-cal__form-group input:focus,
.lk-cal__form-group select:focus,
.lk-cal__form-group textarea:focus {
    outline: none;
    border-color: var(--lk-c-primary, #0051AC);
    box-shadow: var(--lk-sh-focus);
}
.lk-cal__form-group textarea { resize: vertical; min-height: 70px; }
.lk-cal__form-row { display: flex; gap: var(--lk-sp-3, 12px); }
.lk-cal__form-row .lk-cal__form-group { flex: 1; }
.lk-cal__form-check {
    display: flex;
    align-items: center;
    gap: var(--lk-sp-2, 8px);
    margin-bottom: var(--lk-sp-4, 16px);
}
.lk-cal__form-check input[type="checkbox"] {
    width: 18px;
    height: 18px;
    accent-color: var(--lk-c-primary, #0051AC);
}
.lk-cal__form-check label {
    font-size: var(--lk-fs-sm, 14px);
    color: var(--lk-c-ink-2, #334155);
    margin: 0;
}
.lk-cal__modal-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    margin-top: var(--lk-sp-5, 20px);
    flex-wrap: wrap;
}

/* ── Кнопки модалки ───────────────────────────────────── */
.lk-cal__btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    border: 1px solid transparent;
    border-radius: var(--lk-r-sm, 8px);
    font-family: inherit;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.lk-cal__btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }
.lk-cal__btn--primary {
    background: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
    color: #fff;
}
.lk-cal__btn--primary:hover {
    background: var(--lk-c-primary-600, #004695);
    border-color: var(--lk-c-primary-600, #004695);
}
.lk-cal__btn--secondary {
    background: var(--lk-c-surface, #fff);
    border-color: var(--lk-c-line-2, #CBD5E1);
    color: var(--lk-c-ink-2, #334155);
}
.lk-cal__btn--secondary:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.lk-cal__btn--danger {
    background: var(--lk-c-danger-bg, #FEE2E2);
    border-color: var(--lk-c-danger-bg, #FEE2E2);
    color: var(--lk-c-danger, #B91C1C);
}
.lk-cal__btn--danger:hover {
    background: #FECACA;
    border-color: #FECACA;
}
/* Состояние «Удалить» в левом краю футера модалки
   (было inline style="margin-right:auto" — теперь через класс). */
.lk-cal__btn--delete { margin-right: auto; }

/* ── Подсказки длительности («30м / 1ч / 1.5ч…») ──────── */
.lk-cal__dur-hints {
    display: flex;
    gap: 6px;
    margin-top: 6px;
    flex-wrap: wrap;
}
.lk-cal__dur-hint {
    padding: 4px 10px;
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    border-radius: 6px;
    background: var(--lk-c-surface-2, #F1F5F9);
    color: var(--lk-c-ink-2, #334155);
    font-family: inherit;
    font-size: var(--lk-fs-xs, 12px);
    cursor: pointer;
    transition: background var(--lk-transition, 150ms), border-color var(--lk-transition, 150ms), color var(--lk-transition, 150ms);
}
.lk-cal__dur-hint:hover {
    background: var(--lk-c-primary-50, #E8F0FB);
    border-color: var(--lk-c-primary, #0051AC);
    color: var(--lk-c-primary-600, #004695);
}
.lk-cal__dur-hint.active {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: var(--lk-c-primary, #0051AC);
}

/* ── Загрузка / спиннер ───────────────────────────────── */
.lk-cal__loading {
    text-align: center;
    padding: var(--lk-sp-10, 40px);
    color: var(--lk-c-ink-4, #94A3B8);
}
.lk-cal__spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--lk-c-line, #E2E8F0);
    border-top-color: var(--lk-c-primary, #0051AC);
    border-radius: 50%;
    animation: lkcal-spin .8s linear infinite;
    margin: 0 auto var(--lk-sp-3, 12px);
}
@keyframes lkcal-spin { to { transform: rotate(360deg); } }

/* ── Утилита скрытия (замена inline style="display:none") ── */
.lk-cal .is-hidden { display: none !important; }

/* ── Адаптив: 768px (узкая раскладка) ─────────────────── */
@media (max-width: 768px) {
    .lk-cal__day { min-height: 56px; padding: 4px; }
    .lk-cal__day-num { font-size: var(--lk-fs-xs, 12px); }
    .lk-cal__header { flex-direction: column; align-items: flex-start; }
    .lk-cal__form-row { flex-direction: column; gap: 0; }
}

/* ── Адаптив: ≤600px (мобильный WebView, фикс оверфлоу) ──
   Симптом: «Сегодня» уезжала за правый край экрана. Сумма
   ширины .lk-cal__nav (‹ 66 + 180 + ›66 + «Сегодня»78 + 3×12
   gap ≈ 422px) превышала viewport 360-414. Решение:
   flex-wrap + order:10 для «Сегодня» — переносится на
   отдельную строку во всю ширину. Никакого горизонтального
   скролла и «хвоста» за правым краем быть не должно. */
@media (max-width: 600px) {
    .lk-cal {
        max-width: 100%;
        padding-left: 4px;
        padding-right: 4px;
    }
    .lk-cal__header   { width: 100%; gap: var(--lk-sp-2, 8px); }
    .lk-cal__controls { width: 100%; flex-wrap: wrap; gap: var(--lk-sp-2, 8px); }
    .lk-cal__view-switch { flex: 0 0 auto; }
    .lk-cal__add-btn     { flex: 1 1 auto; }

    .lk-cal__nav {
        flex-wrap: wrap;
        gap: var(--lk-sp-2, 8px);
        width: 100%;
        max-width: 100%;
    }
    .lk-cal__nav-btn {
        width: 36px; min-width: 36px;
        padding: 0;
        flex: 0 0 36px;
    }
    .lk-cal__month-label {
        min-width: 0;
        flex: 1 1 0;
        font-size: var(--lk-fs-sm, 15px);
        text-align: center;
    }
    .lk-cal__today-btn {
        flex: 1 1 100%;
        order: 10;                    /* уходит на отдельную строку под стрелками */
        min-height: 36px;
        padding: 0 var(--lk-sp-3, 12px);
    }
}


/* ══════════════════════════════════════════════════════════
   5. Расписание вебинаров ЛК
   ══════════════════════════════════════════════════════════ */
.ws-page { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px 16px; }
.ws-title { font-size: 22px; font-weight: 600; margin-bottom: 24px; color: #1a1a1a; }
.ws-section { margin-bottom: 32px; }
.ws-section__title { font-size: 16px; font-weight: 600; color: #333; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid var(--lk-c-primary); }
.ws-section__title--archive { border-color: #9e9e9e; cursor: pointer; user-select: none; }
.ws-section__title--archive::after { content: ' \25BC'; font-size: 12px; }
.ws-section__title--archive.open::after { content: ' \25B2'; }
.ws-empty { color: #888; font-size: 14px; padding: 16px 0; }

.ws-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 16px 20px; margin-bottom: 12px; transition: box-shadow 0.2s; }
.ws-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
.ws-card--past { opacity: 0.75; }
.ws-card__header { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ws-card__date { font-size: 13px; font-weight: 500; color: var(--lk-c-primary); white-space: nowrap; }
.ws-card__date--past { color: #888; }
.ws-card__type { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: #e3f2fd; color: var(--lk-c-primary-600); font-weight: 500; }
.ws-card__type--replay { background: #f3e5f5; color: #7b1fa2; }
.ws-card__name { font-size: 15px; font-weight: 500; margin: 8px 0 4px; color: #1a1a1a; line-height: 1.4; }
.ws-card__lecturer { font-size: 13px; color: #666; }
.ws-card__actions { margin-top: 12px; display: flex; gap: 10px; align-items: center; }

/* ── WS-кнопки: единый контракт Phase 2, контрастно на белой карточке ── */
.ws-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    min-height: 40px;
    padding: 0 var(--lk-sp-4, 16px);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 600;
    line-height: 1;
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: background var(--lk-transition, 180ms), color var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
    text-decoration: none;
    white-space: nowrap;
}
/* Ожидать — outline-primary (белый фон, синяя рамка и текст) */
.ws-btn--subscribe {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
}
.ws-btn--subscribe:hover {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
}
/* ✓ Ожидаю — filled-success (зелёный фон с явной рамкой) */
.ws-btn--subscribed {
    background: var(--lk-c-success, #15803D);
    color: #fff;
    border-color: var(--lk-c-success, #15803D);
}
.ws-btn--subscribed:hover {
    background: var(--lk-c-danger, #B91C1C);
    border-color: var(--lk-c-danger, #B91C1C);
    color: #fff;
}
/* Смотреть (LIVE) — filled-primary */
.ws-btn--watch {
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: var(--lk-c-primary, #0051AC);
}
.ws-btn--watch:hover {
    background: var(--lk-c-primary-600, #004695);
    border-color: var(--lk-c-primary-600, #004695);
}
.ws-btn--disabled { opacity: 0.5; pointer-events: none; }
/* Показать ещё — secondary outline */
.ws-btn--more {
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink, #0F172A);
    border-color: var(--lk-c-border, #CBD5E1);
    margin: 16px auto;
    display: block;
    padding: 0 var(--lk-sp-6, 24px);
}
.ws-btn--more:hover {
    background: var(--lk-c-surface-2, #F8FAFC);
    border-color: var(--lk-c-ink-3, #94A3B8);
}

.ws-badge-live { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--lk-c-danger); }
.ws-badge-live::before { content: ''; width: 8px; height: 8px; background: var(--lk-c-danger); border-radius: 50%; animation: ws-pulse 1.5s infinite; }
@keyframes ws-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }

.ws-archive-list { display: none; }
.ws-archive-list--open { display: block; }
.ws-back { display: inline-flex; align-items: center; gap: 6px; color: var(--lk-c-primary); font-size: 14px; font-weight: 500; text-decoration: none; margin-bottom: 16px; }
.ws-back:hover { text-decoration: underline; }

/* ══════════════════════════════════════════════════════════
   6. Рассылки (broadcast)
   ══════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════
   Рассылки — страница ЛК оператора
   ══════════════════════════════════════════ */
.bc-page {
    max-width: 960px;
    margin: 0 auto;
    padding: 20px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
    color: #333;
}
.bc-page h1 {
    font-size: 22px;
    font-weight: 700;
    margin: 0 0 24px;
}

/* ── Форма создания ─────────────────── */
.bc-form {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 12px;
    padding: 24px;
    margin-bottom: 32px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.bc-form__title {
    font-size: 16px;
    font-weight: 600;
    margin: 0 0 18px;
    color: #1a1a1a;
}
.bc-field {
    margin-bottom: 16px;
}
.bc-field label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: #555;
    margin-bottom: 5px;
}
.bc-field input[type="text"],
.bc-field textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    box-sizing: border-box;
    transition: border-color 0.15s;
}
.bc-field input[type="text"]:focus,
.bc-field textarea:focus {
    border-color: var(--lk-c-primary);
    outline: none;
}
.bc-field textarea { resize: vertical; min-height: 80px; }

.bc-field__hint {
    font-size: 11px;
    color: #999;
    margin-top: 3px;
}

/* ── Выбор аудитории ─────────────────── */
.bc-audience {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}
.bc-audience__btn {
    padding: 7px 16px;
    border: 1px solid #ddd;
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s;
    color: #555;
}
.bc-audience__btn:hover { background: #f5f5f5; }
.bc-audience__btn.active {
    background: var(--lk-c-primary);
    color: #fff;
    border-color: var(--lk-c-primary);
}

/* ── Панель групп ─────────────────── */
.bc-groups {
    display: none;
    flex-wrap: wrap;
    gap: 6px;
    padding: 12px;
    background: #fafafa;
    border: 1px solid #eee;
    border-radius: 8px;
    margin-bottom: 12px;
    max-height: 200px;
    overflow-y: auto;
}
.bc-groups.visible { display: flex; }
.bc-groups label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}
.bc-groups label:hover { background: #f0f7ff; }
.bc-groups label.checked { background: #e3f0fd; border-color: #90caf9; }
.bc-groups label input { display: none; }
.bc-group-count { color: #999; font-size: 11px; }

/* ── Поиск пользователей ─────────────────── */
.bc-users-search {
    display: none;
    margin-bottom: 12px;
}
.bc-users-search.visible { display: block; }
.bc-users-search input {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    box-sizing: border-box;
}
.bc-users-results {
    max-height: 180px;
    overflow-y: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    margin-top: 6px;
    background: #fff;
    display: none;
}
.bc-users-results.visible { display: block; }
.bc-user-item {
    padding: 8px 12px;
    cursor: pointer;
    font-size: 13px;
    border-bottom: 1px solid #f5f5f5;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.bc-user-item:hover { background: #f0f7ff; }
.bc-user-item__email { color: #999; font-size: 11px; }

/* Выбранные пользователи — теги */
.bc-selected-users {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-top: 8px;
}
.bc-user-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    background: #e3f0fd;
    border-radius: 12px;
    font-size: 12px;
    color: var(--lk-c-primary-600);
}
.bc-user-tag__remove {
    cursor: pointer;
    font-size: 14px;
    color: #999;
    line-height: 1;
    margin-left: 2px;
}
.bc-user-tag__remove:hover { color: var(--lk-c-danger); }

/* ── Кнопка отправки ─────────────────── */
.bc-submit {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
}
.bc-submit__btn {
    padding: 10px 28px;
    background: var(--lk-c-primary);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.bc-submit__btn:hover { background: var(--lk-c-primary-600); }
.bc-submit__btn:disabled { background: #bbb; cursor: not-allowed; }
.bc-submit__status { font-size: 13px; color: #666; }
.bc-submit__status--ok { color: var(--lk-c-success); font-weight: 500; }
.bc-submit__status--err { color: var(--lk-c-danger); }

/* ── Таблица истории ─────────────────── */
.bc-history {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.bc-history__title {
    font-size: 16px;
    font-weight: 600;
    padding: 18px 24px 12px;
    color: #1a1a1a;
}
.bc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.bc-table th {
    text-align: left;
    padding: 10px 16px;
    background: #fafafa;
    color: #777;
    font-weight: 500;
    font-size: 12px;
    border-bottom: 1px solid #eee;
}
.bc-table td {
    padding: 12px 16px;
    border-bottom: 1px solid #f5f5f5;
    vertical-align: top;
}
.bc-table tr:last-child td { border-bottom: none; }
.bc-table tr:hover td { background: #f9fbfd; }

.bc-table__title { font-weight: 500; color: #333; }
.bc-table__msg {
    color: #777;
    font-size: 12px;
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bc-table__badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
}
.bc-table__badge--all      { background: #e8f5e9; color: var(--lk-c-success); }
.bc-table__badge--group    { background: #e3f2fd; color: var(--lk-c-primary-600); }
.bc-table__badge--users    { background: #fff3e0; color: #e65100; }
.bc-table__badge--registry { background: #f3e5f5; color: #7b1fa2; }
.bc-table__badge--bulk     { background: #fce4ec; color: var(--lk-c-danger); }

/* ── Блок задания (bulk) ─────────────────── */
.bc-bulk {
    display: none;
    margin-bottom: 12px;
}
.bc-bulk.visible { display: block; }

.bc-bulk__upload {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: #fff8f0;
    border: 2px dashed #ffcc80;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s;
}
.bc-bulk__upload:hover { border-color: #ff9800; background: #fff3e0; }
.bc-bulk__upload.dragging { border-color: #e65100; background: #ffe0b2; }

.bc-bulk__upload-icon {
    width: 40px; height: 40px; flex-shrink: 0;
    background: #fff3e0; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
}
.bc-bulk__upload-text { font-size: 13px; color: #555; line-height: 1.4; }
.bc-bulk__upload-text b { color: #e65100; }

.bc-bulk__file-input { display: none; }

.bc-bulk__status { margin-top: 10px; font-size: 13px; color: #666; }
.bc-bulk__status--loading { color: var(--lk-c-primary); }
.bc-bulk__status--error   { color: var(--lk-c-danger); }

/* Превью задания */
.bc-bulk__preview {
    display: none;
    margin-top: 12px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
.bc-bulk__preview.visible { display: block; }

.bc-bulk__preview-header {
    padding: 10px 14px;
    background: #fafafa;
    font-size: 13px;
    font-weight: 500;
    border-bottom: 1px solid #eee;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.bc-bulk__preview-count { color: #e65100; font-weight: 700; }

.bc-bulk__preview-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.bc-bulk__preview-table th {
    text-align: left;
    padding: 8px 12px;
    background: #f5f5f5;
    color: #777;
    font-weight: 500;
    font-size: 11px;
    border-bottom: 1px solid #eee;
}
.bc-bulk__preview-table td {
    padding: 7px 12px;
    border-bottom: 1px solid #f5f5f5;
    max-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bc-bulk__preview-scroll {
    max-height: 250px;
    overflow-y: auto;
}

.bc-bulk__reset {
    padding: 5px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 11px;
    cursor: pointer;
    color: #666;
}
.bc-bulk__reset:hover { background: #f5f5f5; }

/* Отчёт */
.bc-bulk__report {
    display: none;
    margin-top: 16px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
.bc-bulk__report.visible { display: block; }

.bc-bulk__report-header {
    padding: 12px 16px;
    background: #e8f5e9;
    font-size: 14px;
    font-weight: 600;
    color: var(--lk-c-success);
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}
.bc-bulk__report-stat { display: flex; align-items: center; gap: 4px; font-size: 13px; }
.bc-bulk__report-stat b { font-size: 16px; }
.bc-bulk__report-stat--err { color: var(--lk-c-danger); }

.bc-bulk__report-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.bc-bulk__report-table th {
    text-align: left;
    padding: 8px 12px;
    background: #fafafa;
    color: #777;
    font-weight: 500;
    font-size: 11px;
    border-bottom: 1px solid #eee;
}
.bc-bulk__report-table td {
    padding: 7px 12px;
    border-bottom: 1px solid #f5f5f5;
}
.bc-bulk__report-scroll {
    max-height: 350px;
    overflow-y: auto;
}
.bc-bulk__report-row--ok td { background: #f9fef9; }
.bc-bulk__report-row--err td { background: #fff8f8; }

.bc-bulk__channel {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 500;
    margin-right: 3px;
}
.bc-bulk__channel--bell { background: #e3f2fd; color: var(--lk-c-primary-600); }
.bc-bulk__channel--push { background: #e8f5e9; color: var(--lk-c-success); }

/* ── Блок реестра ─────────────────── */
.bc-registry {
    display: none;
    margin-bottom: 12px;
}
.bc-registry.visible { display: block; }

.bc-registry__upload {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: #fafafa;
    border: 2px dashed #ddd;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s;
}
.bc-registry__upload:hover { border-color: #90caf9; background: #f5faff; }
.bc-registry__upload.dragging { border-color: var(--lk-c-primary); background: #e3f2fd; }

.bc-registry__upload-icon {
    width: 40px; height: 40px; flex-shrink: 0;
    background: #e8f5e9; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
}
.bc-registry__upload-text { font-size: 13px; color: #555; line-height: 1.4; }
.bc-registry__upload-text b { color: var(--lk-c-primary); }

.bc-registry__file-input { display: none; }

.bc-registry__status {
    margin-top: 10px;
    font-size: 13px;
    color: #666;
}
.bc-registry__status--loading { color: var(--lk-c-primary); }
.bc-registry__status--error   { color: var(--lk-c-danger); }

/* Результат парсинга */
.bc-registry__result {
    display: none;
    margin-top: 12px;
    padding: 14px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
}
.bc-registry__result.visible { display: block; }

.bc-registry__stats {
    display: flex;
    gap: 16px;
    margin-bottom: 10px;
    font-size: 13px;
}
.bc-registry__stat {
    display: flex;
    align-items: center;
    gap: 5px;
}
.bc-registry__stat-num {
    font-weight: 700;
    font-size: 18px;
}
.bc-registry__stat-num--ok    { color: var(--lk-c-success); }
.bc-registry__stat-num--miss  { color: #e65100; }
.bc-registry__stat-num--total { color: #555; }

.bc-registry__found-list,
.bc-registry__notfound-list {
    max-height: 150px;
    overflow-y: auto;
    font-size: 12px;
    margin-top: 8px;
    padding: 8px;
    background: #fafafa;
    border-radius: 6px;
    display: none;
}
.bc-registry__found-list.visible,
.bc-registry__notfound-list.visible { display: block; }

.bc-registry__toggle {
    font-size: 12px;
    color: var(--lk-c-primary);
    cursor: pointer;
    margin-top: 4px;
    display: inline-block;
}
.bc-registry__toggle:hover { text-decoration: underline; }

.bc-registry__person {
    padding: 3px 0;
    border-bottom: 1px solid #f0f0f0;
    display: flex;
    justify-content: space-between;
}
.bc-registry__person:last-child { border-bottom: none; }
.bc-registry__person-id { color: #999; font-size: 11px; }

.bc-registry__notfound-item {
    padding: 2px 0;
    color: var(--lk-c-danger);
}

.bc-registry__reset {
    margin-top: 10px;
    padding: 6px 16px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 12px;
    cursor: pointer;
    color: #666;
}
.bc-registry__reset:hover { background: #f5f5f5; }

.bc-table__empty {
    padding: 40px;
    text-align: center;
    color: #aaa;
    font-size: 14px;
}

/* ── Пагинация ─────────────────── */
.bc-pager {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 16px;
}
.bc-pager__btn {
    padding: 5px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 13px;
    cursor: pointer;
    color: #555;
}
.bc-pager__btn:hover { background: #f5f5f5; }
.bc-pager__btn.active { background: var(--lk-c-primary); color: #fff; border-color: var(--lk-c-primary); }
.bc-pager__btn:disabled { opacity: 0.4; cursor: not-allowed; }

@media (max-width: 600px) {
    .bc-page { padding: 12px; }
    .bc-form { padding: 16px; }
    .bc-audience { flex-wrap: wrap; }
    .bc-table { font-size: 12px; }
    .bc-table th, .bc-table td { padding: 8px 10px; }
}

/* ══════════════════════════════════════════════════════════
   7. Палата (Вопросы — /lichnyy-kabinet/voprosy/)
   ══════════════════════════════════════════════════════════ */
.palata { max-width: 960px; margin: 0 auto 40px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif; }
    .palata-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; flex-wrap:wrap; gap:12px; }
    .palata-header__title { font-size:22px; font-weight:700; color:#1a1a1a; }
    .palata-header__sub { font-size:13px; color:#888; margin-top:2px; }

    /* Фильтры */
    .palata-filters { display:flex; gap:6px; flex-wrap:wrap; }
    .palata-filter { padding:6px 14px; border:1px solid #e0e0e0; border-radius:20px; background:#fff; font-size:13px; color:#555; cursor:pointer; transition:all 0.2s; user-select:none; }
    .palata-filter:hover { background:#f5f5f5; }
    .palata-filter.active { background:var(--lk-c-primary); color:#fff; border-color:var(--lk-c-primary); }
    .palata-filter__count { display:inline-block; min-width:16px; height:16px; line-height:16px; padding:0 4px; margin-left:4px; border-radius:8px; background:rgba(0,0,0,0.12); font-size:11px; font-weight:600; text-align:center; }
    .palata-filter.active .palata-filter__count { background:rgba(255,255,255,0.3); }

    /* Форма нового тикета */
    .palata-compose { background:#fff; border:1px solid #e0e0e0; border-radius:12px; padding:20px; margin-bottom:24px; box-shadow:0 1px 4px rgba(0,0,0,0.04); }
    .palata-compose__label { font-size:14px; font-weight:600; color:#333; margin-bottom:10px; }
    .palata-compose__textarea { width:100%; min-height:80px; max-height:200px; padding:12px 14px; border:1px solid #ddd; border-radius:8px; font-size:14px; font-family:inherit; resize:vertical; outline:none; transition:border-color 0.2s; box-sizing:border-box; }
    .palata-compose__textarea:focus { border-color:var(--lk-c-primary); }
    .palata-compose__footer { display:flex; justify-content:space-between; align-items:center; margin-top:10px; }
    .palata-compose__hint { font-size:12px; color:#aaa; }
    .palata-compose__send { padding:10px 28px; background:var(--lk-c-primary); color:#fff; border:none; border-radius:8px; font-size:14px; font-weight:500; cursor:pointer; transition:background 0.2s; }
    .palata-compose__send:hover { background:var(--lk-c-primary-600); }
    .palata-compose__send:disabled { background:#bbb; cursor:default; }

    /* Список тикетов */
    .palata-list { display:flex; flex-direction:column; gap:12px; }
    .palata-empty { text-align:center; padding:60px 20px; color:#aaa; font-size:15px; }

    /* Карточка тикета */
    .palata-card { background:#fff; border:1px solid #e8e8e8; border-radius:12px; overflow:hidden; box-shadow:0 1px 3px rgba(0,0,0,0.03); transition:border-color 0.2s; }
    .palata-card:hover { border-color:#ccc; }
    .palata-card--new { border-left:3px solid #ff9800; }
    .palata-card--in_progress { border-left:3px solid var(--lk-c-primary); }
    .palata-card--answered { border-left:3px solid #43a047; }
    .palata-card--closed { border-left:3px solid #999; }

    .palata-card__head { display:flex; align-items:center; gap:10px; padding:14px 18px; cursor:pointer; flex-wrap:wrap; }
    .palata-card__head:hover { background:#fafafa; }
    .palata-card__name { font-weight:600; font-size:14px; color:#333; }
    .palata-card__date { font-size:12px; color:#aaa; }
    .palata-card__preview { flex:1; font-size:13px; color:#777; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:100px; }
    .palata-card__status { padding:2px 10px; border-radius:12px; font-size:11px; font-weight:600; margin-left:auto; white-space:nowrap; }
    .palata-card__status--new { background:#fff3e0; color:#e65100; }
    .palata-card__status--in_progress { background:#e3f2fd; color:var(--lk-c-primary-600); }
    .palata-card__status--answered { background:#e8f5e9; color:var(--lk-c-success); }
    .palata-card__status--closed { background:#f5f5f5; color:#777; }
    .palata-card__replies-count { font-size:11px; color:#999; white-space:nowrap; }

    /* Развёрнутое тело тикета */
    .palata-card__body { display:none; border-top:1px solid #f0f0f0; }
    .palata-card__body.open { display:block; }

    /* Переписка */
    .palata-thread { padding:16px 18px; max-height:400px; overflow-y:auto; }
    .palata-msg { margin-bottom:12px; display:flex; flex-direction:column; }
    .palata-msg--lawyer { align-items:flex-start; }
    .palata-msg--operator { align-items:flex-end; }
    .palata-msg__bubble { max-width:80%; padding:10px 14px; border-radius:12px; font-size:14px; line-height:1.45; word-break:break-word; white-space:pre-wrap; }
    .palata-msg--lawyer .palata-msg__bubble { background:#f5f7fa; color:#333; border-bottom-left-radius:4px; }
    .palata-msg--operator .palata-msg__bubble { background:#e3f2fd; color:#1a1a1a; border-bottom-right-radius:4px; }
    .palata-msg__meta { font-size:11px; color:#aaa; margin-top:3px; padding:0 4px; }
    .palata-msg--first .palata-msg__bubble { background:#fff8e1; border-left:3px solid #ff9800; border-radius:4px 12px 12px 4px; }

    /* Форма ответа в тикете */
    .palata-reply { display:flex; gap:8px; padding:12px 18px; border-top:1px solid #f0f0f0; background:#fafafa; }
    .palata-reply textarea { flex:1; padding:10px 12px; border:1px solid #ddd; border-radius:8px; font-size:13px; font-family:inherit; resize:none; min-height:40px; max-height:100px; outline:none; }
    .palata-reply textarea:focus { border-color:var(--lk-c-primary); }
    .palata-reply button { padding:10px 20px; background:var(--lk-c-primary); color:#fff; border:none; border-radius:8px; font-size:13px; cursor:pointer; white-space:nowrap; align-self:flex-end; }
    .palata-reply button:hover { background:var(--lk-c-primary-600); }

    /* Действия оператора */
    .palata-card__actions { display:flex; gap:6px; padding:10px 18px; border-top:1px solid #f0f0f0; background:#fafafa; flex-wrap:wrap; }
    .palata-card__btn { padding:5px 12px; border:1px solid #ddd; border-radius:6px; background:#fff; font-size:12px; color:#555; cursor:pointer; transition:all 0.15s; }
    .palata-card__btn:hover { background:#f5f5f5; border-color:#bbb; }
    .palata-card__btn--active { background:var(--lk-c-primary); color:#fff; border-color:var(--lk-c-primary); }
    .palata-card__btn--danger { color:var(--lk-c-danger); }
    .palata-card__btn--danger:hover { background:#fef0f0; border-color:var(--lk-c-danger); }
    .palata-closed-notice { padding:12px 18px; text-align:center; color:#999; font-size:13px; border-top:1px solid #f0f0f0; background:#fafafa; }

/* ══════════════════════════════════════════════════════════
   8. UNIFY  —  приведение всех модульных кнопок к единому
              размеру/радиусу/паддингам (Phase 2, 2026-04-22)
   ──────────────────────────────────────────────────────────
   Цвет у всех этих кнопок уже один (var(--lk-c-primary)),
   но форма и габариты отличались от модуля к модулю. Этот
   блок выравнивает физические размеры, ничего не ломая.
   ══════════════════════════════════════════════════════════ */

/* ── Рассылки: основная кнопка «Отправить рассылку» ────── */
.bc-submit__btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-6, 24px);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    background: var(--lk-c-primary, #0051AC);
    border: 1px solid var(--lk-c-primary, #0051AC);
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms);
}
.bc-submit__btn:hover:not(:disabled) {
    background: var(--lk-c-primary-600, #004695);
    border-color: var(--lk-c-primary-600, #004695);
}
.bc-submit__btn:disabled {
    background: var(--lk-c-ink-4, #94A3B8);
    border-color: var(--lk-c-ink-4, #94A3B8);
    cursor: not-allowed;
    opacity: .7;
}
.bc-submit__btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* ── Рассылки: чипсы выбора аудитории ──────────────────── */
.bc-audience__btn {
    min-height: 36px;
    padding: 0 var(--lk-sp-4, 16px);
    border-radius: var(--lk-r-sm, 8px);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 500;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms), color var(--lk-transition, 180ms);
}
.bc-audience__btn:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.bc-audience__btn.active {
    background: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
    color: #fff;
}
.bc-audience__btn:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

/* ── Рассылки: кнопка «сброс» задания и reset-реестра ──── */
.bc-bulk__reset,
.bc-registry__reset,
.bc-pager__btn {
    min-height: 32px;
    padding: 0 var(--lk-sp-4, 16px);
    border-radius: var(--lk-r-sm, 8px);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-xs, 12px);
    font-weight: 500;
    cursor: pointer;
    transition: background var(--lk-transition, 180ms);
}
.bc-bulk__reset:hover,
.bc-registry__reset:hover,
.bc-pager__btn:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.bc-pager__btn.active {
    background: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
    color: #fff;
}

/* ── Палата: чипсы фильтров, кнопки в карточках ────────── */
.palata-filter {
    min-height: 32px;
    padding: 0 var(--lk-sp-4, 14px);
    border-radius: var(--lk-r-pill, 999px);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-xs, 13px);
    font-weight: 500;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    transition: background var(--lk-transition, 180ms), border-color var(--lk-transition, 180ms), color var(--lk-transition, 180ms);
}
.palata-filter:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.palata-filter.active {
    background: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
    color: #fff;
}
.palata-filter:focus-visible { outline: none; box-shadow: var(--lk-sh-focus); }

.palata-card__btn {
    min-height: 30px;
    padding: 0 var(--lk-sp-3, 12px);
    border-radius: var(--lk-r-sm, 8px);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    background: var(--lk-c-surface, #fff);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-xs, 12px);
    font-weight: 500;
    cursor: pointer;
    transition: background var(--lk-transition, 180ms);
}
.palata-card__btn:hover { background: var(--lk-c-surface-2, #F1F5F9); border-color: var(--lk-c-ink-4, #94A3B8); }

/* ── Палата: кнопка «Отправить/Ответить» ───────────────── */
.palata-compose__send,
.palata-reply button {
    min-height: 40px !important;
    padding: 0 var(--lk-sp-6, 24px) !important;
    border-radius: var(--lk-r-sm, 8px) !important;
    background: #0051AC !important;                              /* жёсткий fallback на случай, если --lk-c-primary не загрузится */
    background: var(--lk-c-primary, #0051AC) !important;
    border: 1px solid var(--lk-c-primary, #0051AC) !important;
    color: #fff !important;
    font-size: var(--lk-fs-sm, 14px) !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    opacity: 1 !important;                                       /* блокируем браузерное затемнение :disabled */
}
.palata-compose__send:hover,
.palata-reply button:hover {
    background: var(--lk-c-primary-600, #004695) !important;
    border-color: var(--lk-c-primary-600, #004695) !important;
}
/* Явный видимый disabled-state: пустой textarea не должен делать кнопку «невидимой». */
.palata-compose__send:disabled,
.palata-compose__send[disabled],
.palata-reply button:disabled,
.palata-reply button[disabled] {
    background: #94A3B8 !important;
    border-color: #94A3B8 !important;
    color: #fff !important;
    opacity: 1 !important;
    cursor: default !important;
}

/* ── Календарь: все виды кнопок — единый габарит ───────── */
.lk-cal__btn--primary,
.lk-cal__add-btn {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-primary, #0051AC);
    border: 1px solid var(--lk-c-primary, #0051AC);
    color: #fff;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    cursor: pointer;
    transition: background var(--lk-transition, 180ms);
}
.lk-cal__btn--primary:hover,
.lk-cal__add-btn:hover { background: var(--lk-c-primary-600, #004695); border-color: var(--lk-c-primary-600, #004695); }
.lk-cal__btn--secondary {
    min-height: 40px;
    padding: 0 var(--lk-sp-5, 20px);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
}
.lk-cal__btn--secondary:hover { background: var(--lk-c-surface-2, #F1F5F9); }

.lk-cal__view-btn,
.lk-cal__nav-btn,
.lk-cal__today-btn {
    min-height: 36px;
    padding: 0 var(--lk-sp-4, 14px);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #fff);
    border: 1px solid var(--lk-c-line-2, #CBD5E1);
    color: var(--lk-c-ink-2, #334155);
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 500;
    cursor: pointer;
}
.lk-cal__view-btn:hover,
.lk-cal__nav-btn:hover,
.lk-cal__today-btn:hover { background: var(--lk-c-surface-2, #F1F5F9); }
.lk-cal__view-btn.active {
    background: var(--lk-c-primary, #0051AC);
    border-color: var(--lk-c-primary, #0051AC);
    color: #fff;
}

/* ── Вебинарное расписание: «Смотреть / Ожидаю» ────────── */
.ws-subscribe-btn,
.ws-watch-btn {
    min-height: 36px;
    padding: 0 var(--lk-sp-4, 16px);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-sm, 13px);
    font-weight: 600;
    line-height: 1;
    border: 1px solid var(--lk-c-primary, #0051AC);
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--lk-sp-2, 8px);
    transition: background var(--lk-transition, 180ms);
}
.ws-subscribe-btn:hover,
.ws-watch-btn:hover { background: var(--lk-c-primary-600, #004695); border-color: var(--lk-c-primary-600, #004695); }
.ws-subscribe-btn.waiting {
    background: var(--lk-c-success, #15803D);
    border-color: var(--lk-c-success, #15803D);
}
.ws-subscribe-btn.waiting:hover {
    background: #0d5a2b;
    border-color: #0d5a2b;
}

/* ══════════════════════════════════════════════════════════════════
   9. BACK-LINK UNIFY  —  единая кнопка «← назад», v3 2026-04-22 17:45
   ──────────────────────────────────────────────────────────────────
   Один визуальный вид ссылки «назад» во ВСЕХ разделах ЛК:
     • текст в PHP — ТОЛЬКО слово «назад» (без «← …», без «Личный
       кабинет»); стрелка ← рисуется CSS-ом через ::before;
     • на :hover стрелка сдвигается на -4px влево (анимация 180ms);
     • синяя текст-ссылка без фона, без рамки, без капсулы.
   Покрывает три класса разметки:
     • .lk-back                                  (рекомендуемый)
     • .ws-back                                  (расписание вебинаров ЛК)
     • .personal-cabinet__return-btn[--main-page] (БЮП, СЮП, /vebinary/, popup-ы)
   ══════════════════════════════════════════════════════════════════ */

/* 9.1. Универсальный контракт текст-ссылки. !important перебивает
       секцию 8 UNIFY (min-height: 40px, padding 0 24px), если она
       случайно зацепит эти же классы. */
.lk-back,
.ws-back,
a.personal-cabinet__return-btn,
a.personal-cabinet__return-btn--main-page {
    display: inline-flex !important;
    align-items: center;
    gap: var(--lk-sp-2, 6px);
    margin: 0 0 var(--lk-sp-4, 16px) 0;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    color: #0051AC !important;
    color: var(--lk-c-primary, #0051AC) !important;
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 500;
    line-height: 1.3;
    text-decoration: none !important;
    cursor: pointer;
    transition: color 180ms ease;
    min-height: auto !important;
    min-width: 0 !important;
}
.lk-back:hover,
.ws-back:hover,
a.personal-cabinet__return-btn:hover,
a.personal-cabinet__return-btn--main-page:hover {
    color: #004695 !important;
    color: var(--lk-c-primary-600, #004695) !important;
    background: transparent !important;
    text-decoration: none !important;
}
.lk-back:focus-visible,
.ws-back:focus-visible,
a.personal-cabinet__return-btn:focus-visible,
a.personal-cabinet__return-btn--main-page:focus-visible {
    outline: none;
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.25));
    border-radius: var(--lk-r-xs, 4px);
}

/* 9.2. Стрелка — CSS ::before. Анимируется на :hover. transform:translateX(0)
       в базовом состоянии обязателен, иначе transition не поймёт исходное
       значение. !important — на случай вложенных var-правил. */
.lk-back::before,
.ws-back::before,
a.personal-cabinet__return-btn::before,
a.personal-cabinet__return-btn--main-page::before {
    content: "←" !important;
    display: inline-block !important;
    font-size: 1.05em;
    line-height: 1;
    transform: translateX(0);
    transition: transform 180ms ease-out !important;
    will-change: transform;
}
.lk-back:hover::before,
.ws-back:hover::before,
a.personal-cabinet__return-btn:hover::before,
a.personal-cabinet__return-btn--main-page:hover::before {
    transform: translateX(-4px) !important;
}
.lk-back:active::before,
.ws-back:active::before,
a.personal-cabinet__return-btn:active::before,
a.personal-cabinet__return-btn--main-page:active::before {
    transform: translateX(-6px) !important;
}

/* 9.3. Убираем старую PNG-стрелку у легаси-кнопок БЮП/СЮП/vebinary/popup-ов. */
a.personal-cabinet__return-btn > img,
a.personal-cabinet__return-btn--main-page > img { display: none !important; }

/* 9.4. Обёртка .personal-cabinet__top-items не должна навязывать
       собственного фона/рамки/отступов, если внутри именно return-btn. */
.personal-cabinet__top-items:has(> a.personal-cabinet__return-btn) {
    margin: 0 0 var(--lk-sp-3, 12px) 0;
    padding: 0;
    background: transparent;
    border: 0;
    display: flex;
    align-items: center;
    gap: 16px;
}

/* 9.5. reduced-motion: отключаем сдвиг стрелки пользователям,
       которые в ОС попросили уменьшить анимации. */
@media (prefers-reduced-motion: reduce) {
    .lk-back::before,
    .ws-back::before,
    a.personal-cabinet__return-btn::before,
    a.personal-cabinet__return-btn--main-page::before { transition: none !important; }
    .lk-back:hover::before,
    .ws-back:hover::before,
    a.personal-cabinet__return-btn:hover::before,
    a.personal-cabinet__return-btn--main-page:hover::before { transform: none !important; }
}

/* ══════════════════════════════════════════════════════════
   10. Profile — CalDAV-карточки (структура «по образу MAX-бота», 2026-04-22)
   ──────────────────────────────────────────────────────────
   До: блок «Внешние календари» имел собственную рамку, заголовок
   с «плавающей» кнопкой «+ Подключить» справа, плоский список
   .caldav-item без карточек.
   После: тот же шаблон, что и «Мессенджер MAX» —
     заголовок .personal-cabinet__title → тонкий border-bottom →
     описание → карточки .personal-cabinet__card (каждая подписка —
     карточка с body и блоком действий ВНУТРИ) →
     снизу кнопка «+ Подключить календарь».
   ══════════════════════════════════════════════════════════ */

/* 10.1. Оверрайд прежних правил .caldav-block / .caldav-head /
         .caldav-title / .caldav-sub. Блок теперь обёрнут в
         .personal-cabinet__container и использует его токеновую
         типографику + border-bottom под заголовком. */
.personal-cabinet__container.caldav-block {
    margin-top: var(--lk-sp-8, 30px);
    padding: 0;
    background: transparent;
    border: none;
    box-shadow: none;
    border-radius: 0;
}

/* 10.2. Карточка подписки: body + actions внутри одной .personal-cabinet__card. */
.caldav-card {
    display: block;
    position: relative;
    transition: opacity var(--lk-transition, 180ms);
}
.caldav-card--busy { opacity: .55; pointer-events: none; }

/* Состояния карточки: тонкая левая акцент-полоса */
.caldav-card--auth { box-shadow: inset 3px 0 0 0 #F59E0B; }
.caldav-card--err  { box-shadow: inset 3px 0 0 0 var(--lk-c-danger, #B91C1C); }

/* 10.3. Body-row карточки: цветной маркер + текстовая колонка */
.caldav-linked {
    display: flex;
    align-items: flex-start;
    gap: var(--lk-sp-3, 12px);
    width: 100%;
}
.caldav-card .caldav-item__swatch {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex: 0 0 14px;
    margin-top: 5px;
    box-shadow: 0 0 0 2px rgba(0, 0, 0, .04);
}
.caldav-body { flex: 1; min-width: 0; }

/* 10.4. Статусный бейдж (по аналогии с .max-bot-tag) */
.caldav-tag {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    color: #fff;
    background: var(--lk-c-success, #15803D);
    padding: 2px 8px;
    border-radius: 4px;
    margin-left: 6px;
    vertical-align: middle;
    white-space: nowrap;
}
.caldav-tag--warn { background: #F59E0B; color: #1F2937; }
.caldav-tag--err  { background: var(--lk-c-danger, #B91C1C); color: #fff; }

/* 10.5. Мета-строка карточки (по аналогии с .max-bot-meta) */
.caldav-meta {
    font-size: 12px;
    color: #6B7280;
    margin: 4px 0 0;
    line-height: 1.45;
    word-break: break-word;
}
.caldav-meta--err { color: var(--lk-c-danger, #B91C1C); }

/* 10.6. Action-row ВНУТРИ карточки (по аналогии с .max-bot-actions).
         Класс отличается от модального .caldav-actions, чтобы правило
         justify-content: flex-end из модалки сюда не попадало. */
.caldav-card-actions {
    margin-top: var(--lk-sp-4, 16px);
    display: flex;
    gap: var(--lk-sp-2, 10px);
    flex-wrap: wrap;
}
.caldav-card-actions .max-bot-btn { font-size: 13px; }

/* 10.7. «+ Подключить календарь» — та же синяя ссылка-кнопка,
         но теперь отдельной строкой под списком (не плавает справа). */
#caldavAddRow {
    display: flex;
    justify-content: flex-start;
}

/* 10.8. Mobile */
@media (max-width: 640px) {
    .caldav-card-actions { gap: 8px; }
    .caldav-card-actions .max-bot-btn { flex: 1 1 auto; }
    #caldavAddRow .caldav-add-btn { width: 100%; justify-content: center; }
}

/* ══════════════════════════════════════════════════════════════════
   11. BROADCAST  —  страница «Рассылки» в ЛК оператора.
   Перенесено из inline-<style> в broadcast_page.php (2026-04-22 17:45).
   Brand-цвета через var(--lk-..., fallback) — двойная hex-подстраховка.
   ══════════════════════════════════════════════════════════════════ */

/* 11.1. Контейнер страницы */
.bc-page {
    max-width: 960px;
    margin: 0 auto;
    padding: 20px;
    font-family: var(--lk-ff, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif);
    color: #333;
}
.bc-page h1 {
    font-size: 22px;
    font-weight: 700;
    margin: 0 0 24px;
}

/* 11.2. Форма создания рассылки */
.bc-form {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 12px;
    padding: 24px;
    margin-bottom: 32px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.bc-form__title {
    font-size: 16px;
    font-weight: 600;
    margin: 0 0 18px;
    color: #1a1a1a;
}
.bc-field { margin-bottom: 16px; }
.bc-field label {
    display: block;
    font-size: 13px;
    font-weight: 500;
    color: #555;
    margin-bottom: 5px;
}
.bc-field input[type="text"],
.bc-field textarea {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    box-sizing: border-box;
    transition: border-color 0.15s;
}
.bc-field input[type="text"]:focus,
.bc-field textarea:focus {
    border-color: #0051AC;
    border-color: var(--lk-c-primary, #0051AC);
    outline: none;
}
.bc-field textarea { resize: vertical; min-height: 80px; }
.bc-field__hint {
    font-size: 11px;
    color: #999;
    margin-top: 3px;
}

/* 11.3. Выбор аудитории */
.bc-audience {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}
.bc-audience__btn {
    padding: 7px 16px;
    border: 1px solid #ddd;
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
    cursor: pointer;
    transition: all 0.15s;
    color: #555;
}
.bc-audience__btn:hover { background: #f5f5f5; }
.bc-audience__btn.active {
    background: #0051AC;
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: #0051AC;
    border-color: var(--lk-c-primary, #0051AC);
}

/* 11.4. Панель групп */
.bc-groups {
    display: none;
    flex-wrap: wrap;
    gap: 6px;
    padding: 12px;
    background: #fafafa;
    border: 1px solid #eee;
    border-radius: 8px;
    margin-bottom: 12px;
    max-height: 200px;
    overflow-y: auto;
}
.bc-groups.visible { display: flex; }
.bc-groups label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    font-size: 12px;
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}
.bc-groups label:hover { background: #f0f7ff; }
.bc-groups label.checked { background: #e3f0fd; border-color: #90caf9; }
.bc-groups label input { display: none; }
.bc-group-count { color: #999; font-size: 11px; }

/* 11.5. Поиск пользователей */
.bc-users-search {
    display: none;
    margin-bottom: 12px;
}
.bc-users-search.visible { display: block; }
.bc-users-search input {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid #ddd;
    border-radius: 8px;
    font-size: 14px;
    box-sizing: border-box;
}
.bc-users-results {
    max-height: 180px;
    overflow-y: auto;
    border: 1px solid #eee;
    border-radius: 8px;
    margin-top: 6px;
    background: #fff;
    display: none;
}
.bc-users-results.visible { display: block; }
.bc-user-item {
    padding: 8px 12px;
    cursor: pointer;
    font-size: 13px;
    border-bottom: 1px solid #f5f5f5;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.bc-user-item:hover { background: #f0f7ff; }
.bc-user-item__email { color: #999; font-size: 11px; }

/* Выбранные пользователи — теги */
.bc-selected-users {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-top: 8px;
}
.bc-user-tag {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    background: #e3f0fd;
    border-radius: 12px;
    font-size: 12px;
    color: #004695;
    color: var(--lk-c-primary-600, #004695);
}
.bc-user-tag__remove {
    cursor: pointer;
    font-size: 14px;
    color: #999;
    line-height: 1;
    margin-left: 2px;
}
.bc-user-tag__remove:hover {
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

/* 11.6. Кнопка отправки */
.bc-submit {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
}
.bc-submit__btn {
    padding: 10px 28px;
    background: #0051AC;
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.bc-submit__btn:hover {
    background: #004695;
    background: var(--lk-c-primary-600, #004695);
}
.bc-submit__btn:disabled { background: #bbb; cursor: not-allowed; }
.bc-submit__status { font-size: 13px; color: #666; }
.bc-submit__status--ok {
    color: #15803D;
    color: var(--lk-c-success, #15803D);
    font-weight: 500;
}
.bc-submit__status--err {
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

/* 11.7. История рассылок — таблица */
.bc-history {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.bc-history__title {
    font-size: 16px;
    font-weight: 600;
    padding: 18px 24px 12px;
    color: #1a1a1a;
}
.bc-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.bc-table th {
    text-align: left;
    padding: 10px 16px;
    background: #fafafa;
    color: #777;
    font-weight: 500;
    font-size: 12px;
    border-bottom: 1px solid #eee;
}
.bc-table td {
    padding: 12px 16px;
    border-bottom: 1px solid #f5f5f5;
    vertical-align: top;
}
.bc-table tr:last-child td { border-bottom: none; }
.bc-table tr:hover td { background: #f9fbfd; }

.bc-table__title { font-weight: 500; color: #333; }
.bc-table__msg {
    color: #777;
    font-size: 12px;
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bc-table__badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
}
.bc-table__badge--all      { background: #e8f5e9; color: #15803D; color: var(--lk-c-success, #15803D); }
.bc-table__badge--group    { background: #e3f2fd; color: #004695; color: var(--lk-c-primary-600, #004695); }
.bc-table__badge--users    { background: #fff3e0; color: #e65100; }
.bc-table__badge--registry { background: #f3e5f5; color: #7b1fa2; }
.bc-table__badge--bulk     { background: #fce4ec; color: #B91C1C; color: var(--lk-c-danger, #B91C1C); }

/* 11.8. Блок задания (bulk) */
.bc-bulk {
    display: none;
    margin-bottom: 12px;
}
.bc-bulk.visible { display: block; }

.bc-bulk__upload {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: #fff8f0;
    border: 2px dashed #ffcc80;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s;
}
.bc-bulk__upload:hover { border-color: #ff9800; background: #fff3e0; }
.bc-bulk__upload.dragging { border-color: #e65100; background: #ffe0b2; }

.bc-bulk__upload-icon {
    width: 40px; height: 40px; flex-shrink: 0;
    background: #fff3e0; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
}
.bc-bulk__upload-text { font-size: 13px; color: #555; line-height: 1.4; }
.bc-bulk__upload-text b { color: #e65100; }

.bc-bulk__file-input { display: none; }

.bc-bulk__status { margin-top: 10px; font-size: 13px; color: #666; }
.bc-bulk__status--loading {
    color: #0051AC;
    color: var(--lk-c-primary, #0051AC);
}
.bc-bulk__status--error {
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

/* Превью задания */
.bc-bulk__preview {
    display: none;
    margin-top: 12px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
.bc-bulk__preview.visible { display: block; }

.bc-bulk__preview-header {
    padding: 10px 14px;
    background: #fafafa;
    font-size: 13px;
    font-weight: 500;
    border-bottom: 1px solid #eee;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.bc-bulk__preview-count { color: #e65100; font-weight: 700; }

.bc-bulk__preview-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.bc-bulk__preview-table th {
    text-align: left;
    padding: 8px 12px;
    background: #f5f5f5;
    color: #777;
    font-weight: 500;
    font-size: 11px;
    border-bottom: 1px solid #eee;
}
.bc-bulk__preview-table td {
    padding: 7px 12px;
    border-bottom: 1px solid #f5f5f5;
    max-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.bc-bulk__preview-scroll {
    max-height: 250px;
    overflow-y: auto;
}

.bc-bulk__reset {
    padding: 5px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 11px;
    cursor: pointer;
    color: #666;
}
.bc-bulk__reset:hover { background: #f5f5f5; }

/* Отчёт bulk */
.bc-bulk__report {
    display: none;
    margin-top: 16px;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
.bc-bulk__report.visible { display: block; }

.bc-bulk__report-header {
    padding: 12px 16px;
    background: #e8f5e9;
    font-size: 14px;
    font-weight: 600;
    color: #15803D;
    color: var(--lk-c-success, #15803D);
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
}
.bc-bulk__report-stat { display: flex; align-items: center; gap: 4px; font-size: 13px; }
.bc-bulk__report-stat b { font-size: 16px; }
.bc-bulk__report-stat--err {
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

.bc-bulk__report-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}
.bc-bulk__report-table th {
    text-align: left;
    padding: 8px 12px;
    background: #fafafa;
    color: #777;
    font-weight: 500;
    font-size: 11px;
    border-bottom: 1px solid #eee;
}
.bc-bulk__report-table td {
    padding: 7px 12px;
    border-bottom: 1px solid #f5f5f5;
}
.bc-bulk__report-scroll {
    max-height: 350px;
    overflow-y: auto;
}
.bc-bulk__report-row--ok td { background: #f9fef9; }
.bc-bulk__report-row--err td { background: #fff8f8; }

.bc-bulk__channel {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 10px;
    font-weight: 500;
    margin-right: 3px;
}
.bc-bulk__channel--bell { background: #e3f2fd; color: #004695; color: var(--lk-c-primary-600, #004695); }
.bc-bulk__channel--push { background: #e8f5e9; color: #15803D; color: var(--lk-c-success, #15803D); }

/* 11.9. Блок реестра */
.bc-registry {
    display: none;
    margin-bottom: 12px;
}
.bc-registry.visible { display: block; }

.bc-registry__upload {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    background: #fafafa;
    border: 2px dashed #ddd;
    border-radius: 10px;
    cursor: pointer;
    transition: all 0.15s;
}
.bc-registry__upload:hover { border-color: #90caf9; background: #f5faff; }
.bc-registry__upload.dragging {
    border-color: #0051AC;
    border-color: var(--lk-c-primary, #0051AC);
    background: #e3f2fd;
}

.bc-registry__upload-icon {
    width: 40px; height: 40px; flex-shrink: 0;
    background: #e8f5e9; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
}
.bc-registry__upload-text { font-size: 13px; color: #555; line-height: 1.4; }
.bc-registry__upload-text b {
    color: #0051AC;
    color: var(--lk-c-primary, #0051AC);
}

.bc-registry__file-input { display: none; }

.bc-registry__status {
    margin-top: 10px;
    font-size: 13px;
    color: #666;
}
.bc-registry__status--loading {
    color: #0051AC;
    color: var(--lk-c-primary, #0051AC);
}
.bc-registry__status--error {
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

/* Результат парсинга */
.bc-registry__result {
    display: none;
    margin-top: 12px;
    padding: 14px;
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
}
.bc-registry__result.visible { display: block; }

.bc-registry__stats {
    display: flex;
    gap: 16px;
    margin-bottom: 10px;
    font-size: 13px;
}
.bc-registry__stat {
    display: flex;
    align-items: center;
    gap: 5px;
}
.bc-registry__stat-num {
    font-weight: 700;
    font-size: 18px;
}
.bc-registry__stat-num--ok    { color: #15803D; color: var(--lk-c-success, #15803D); }
.bc-registry__stat-num--miss  { color: #e65100; }
.bc-registry__stat-num--total { color: #555; }

.bc-registry__found-list,
.bc-registry__notfound-list {
    max-height: 150px;
    overflow-y: auto;
    font-size: 12px;
    margin-top: 8px;
    padding: 8px;
    background: #fafafa;
    border-radius: 6px;
    display: none;
}
.bc-registry__found-list.visible,
.bc-registry__notfound-list.visible { display: block; }

.bc-registry__toggle {
    font-size: 12px;
    color: #0051AC;
    color: var(--lk-c-primary, #0051AC);
    cursor: pointer;
    margin-top: 4px;
    display: inline-block;
}
.bc-registry__toggle:hover { text-decoration: underline; }

.bc-registry__person {
    padding: 3px 0;
    border-bottom: 1px solid #f0f0f0;
    display: flex;
    justify-content: space-between;
}
.bc-registry__person:last-child { border-bottom: none; }
.bc-registry__person-id { color: #999; font-size: 11px; }

.bc-registry__notfound-item {
    padding: 2px 0;
    color: #B91C1C;
    color: var(--lk-c-danger, #B91C1C);
}

.bc-registry__reset {
    margin-top: 10px;
    padding: 6px 16px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 12px;
    cursor: pointer;
    color: #666;
}
.bc-registry__reset:hover { background: #f5f5f5; }

.bc-table__empty {
    padding: 40px;
    text-align: center;
    color: #aaa;
    font-size: 14px;
}

/* 11.10. Пагинация */
.bc-pager {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 16px;
}
.bc-pager__btn {
    padding: 5px 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    background: #fff;
    font-size: 13px;
    cursor: pointer;
    color: #555;
}
.bc-pager__btn:hover { background: #f5f5f5; }
.bc-pager__btn.active {
    background: #0051AC;
    background: var(--lk-c-primary, #0051AC);
    color: #fff;
    border-color: #0051AC;
    border-color: var(--lk-c-primary, #0051AC);
}
.bc-pager__btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* 11.11. Mobile */
@media (max-width: 600px) {
    .bc-page { padding: 12px; }
    .bc-form { padding: 16px; }
    .bc-audience { flex-wrap: wrap; }
    .bc-table { font-size: 12px; }
    .bc-table th, .bc-table td { padding: 8px 10px; }
}


/* ══════════════════════════════════════════════════════════════════
   12. UTILITIES — общие вспомогательные классы модулей ЛК.
       Вводятся в ходе fullbuild-миграции 2026-04-22.
       Заменяют inline style="display:none", style="color:...",
       style="text-align:center" и т.п.
   ══════════════════════════════════════════════════════════════════ */

/* 12.1. Глобальный .is-hidden — перекрывает .lk-cal .is-hidden выше.
   Используется всеми модулями: broadcast, palata, notification-bell,
   profile-subscriptions, webinar-schedule. */
.is-hidden { display: none !important; }

/* 12.2. Инвалидное поле формы (MAX-бот verify code, каледарь и т.п.) */
.is-invalid {
    border-color: var(--lk-c-danger, #cc3333) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--lk-c-danger, #cc3333) 15%, transparent) !important;
}

/* 12.3. Блокировка скролла body при открытом dropdown колокольчика. */
.ntf-body-locked {
    overflow: hidden !important;
}

/* ══════════════════════════════════════════════════════════════════
   12.4. Broadcast — утилитарные классы
   ══════════════════════════════════════════════════════════════════ */
.bc-muted  { color: var(--lk-c-ink-mute, #71757a); }
.bc-center { text-align: center; }
.bc-small  { font-size: var(--lk-fs-xs, 12px); }

.bc-stat--delivered { color: var(--lk-c-success, #16a34a); font-weight: 600; }
.bc-stat--push      { color: var(--lk-c-primary, #0051AC); font-weight: 600; }
.bc-stat--failed    { color: var(--lk-c-danger,  #cc3333); font-weight: 600; }

.bc-access-denied {
    padding: 40px;
    text-align: center;
    color: var(--lk-c-ink-mute, #999);
    font-size: var(--lk-fs-sm, 14px);
}

/* ══════════════════════════════════════════════════════════════════
   12.5. Palata — утилитарные классы
   ══════════════════════════════════════════════════════════════════ */
.palata-access-denied {
    padding: 40px;
    text-align: center;
    color: var(--lk-c-ink-mute, #999);
    font-size: var(--lk-fs-sm, 14px);
}

/* ══════════════════════════════════════════════════════════════════
   12.6. Профиль — «Мои устройства» / «Мессенджер MAX» /
         вспомогательные элементы.
   ══════════════════════════════════════════════════════════════════ */
.profile-section {
    margin-top: 30px;
}

.profile-actions {
    margin-top: var(--lk-sp-4, 16px);
}

.profile-hint {
    margin: 0 0 16px;
    color: var(--lk-c-ink-mute, #71757a);
    font-size: var(--lk-fs-sm, 14px);
    line-height: 1.5;
}
.profile-hint--sm {
    margin: 0 0 16px;
    font-size: var(--lk-fs-xs, 13px);
    line-height: 1.5;
}

.profile-center-card {
    text-align: center;
}

.profile-error-msg {
    margin: 4px 0 0;
    color: var(--lk-c-danger, #cc3333);
    font-size: var(--lk-fs-xs, 12px);
}

.personal-cabinet__card-title--small-muted {
    font-size: var(--lk-fs-xs, 13px);
    color: var(--lk-c-ink-mute, #999);
}

/* «Мои устройства» — строка устройства */
.sub-device-title {
    margin: 0;
}
.sub-device-platform {
    color: var(--lk-c-ink-mute, #71757a);
    font-weight: normal;
}

/* «Мессенджер MAX» */
.max-bot-title        { margin: 0; }
.max-bot-title-tight  { margin: 0 0 6px; }

.max-bot-icon-wrap {
    display: flex;
    justify-content: center;
    margin-bottom: 12px;
}
.max-bot-icon--centered {
    margin: 0 auto;
}

.max-bot-actions--centered {
    justify-content: center;
}

/* ══════════════════════════════════════════════════════════════════
   12.7. Скрытие формы при редактировании (используется broadcast).
   Дублирует .is-hidden, но оставлена как семантический алиас для
   JS-селекторов (не ломать обратную совместимость).
   ══════════════════════════════════════════════════════════════════ */
.bc-form-wrap.is-hidden,
.bc-form-wrap[hidden] { display: none !important; }
/* ═══════════════════════════════════════════════
   N. Dashboard Map — секция карты МО (append by apply-all.sh 20260423-133306)
   ═══════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════════════
   Секция N. Dashboard / Map
   Дописывается в /local/templates/personal/css/lk-components.css
   в самый низ, СТРОГО используя токены из lk-tokens.css.
   Никаких хардкодных hex — только var(--lk-..., fallback).
   ══════════════════════════════════════════════════════════════════ */

.mo-map-widget {
    display: flex;
    flex-direction: column;
    gap: var(--lk-sp-4, 16px);
    padding: var(--lk-sp-4, 16px);
    font-family: var(--lk-ff, -apple-system, system-ui, sans-serif);
    color: var(--lk-c-ink, #0F172A);
}

.mo-map-widget__back {
    display: flex;
    gap: var(--lk-sp-2, 8px);
}

.mo-map-widget__header h1 {
    margin: 0 0 var(--lk-sp-1, 4px) 0;
    font-size: var(--lk-fs-h1, 24px);
    font-weight: 700;
}

.mo-map-widget__subtitle {
    margin: 0;
    color: var(--lk-c-ink-2, #475569);
    font-size: var(--lk-fs-sm, 14px);
}

/* ── Панель управления ──────────────────────────────────────── */
.mo-map-widget__controls {
    display: flex;
    flex-direction: column;
    gap: var(--lk-sp-3, 12px);
    padding: var(--lk-sp-4, 16px);
}

.mo-map-widget__control-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--lk-sp-2, 8px);
    align-items: center;
}

.mo-map-widget__label {
    font-size: var(--lk-fs-sm, 14px);
    color: var(--lk-c-ink-2, #475569);
    font-weight: 500;
}

.mo-map-widget__input {
    min-height: 40px;
    padding: 0 12px;
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #FFFFFF);
    color: var(--lk-c-ink, #0F172A);
    font-family: var(--lk-ff, -apple-system, system-ui, sans-serif);
    font-size: var(--lk-fs-sm, 14px);
}

.mo-map-widget__input:focus {
    outline: none;
    border-color: var(--lk-c-primary, #0051AC);
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.2));
}

/* ── Табы (направление) ─────────────────────────────────────── */
.mo-map-widget__tabs {
    display: inline-flex;
    gap: 0;
    padding: 4px;
    background: var(--lk-c-surface-2, #F1F5F9);
    border-radius: var(--lk-r-md, 10px);
}

.mo-map-widget__tab {
    min-height: 32px;
    padding: 0 16px;
    border: none;
    background: transparent;
    color: var(--lk-c-ink-2, #475569);
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    cursor: pointer;
    border-radius: var(--lk-r-sm, 8px);
    transition: background var(--lk-transition, 150ms), color var(--lk-transition, 150ms);
}

.mo-map-widget__tab:hover:not(.is-active) {
    color: var(--lk-c-ink, #0F172A);
}

.mo-map-widget__tab.is-active {
    background: var(--lk-c-surface, #FFFFFF);
    color: var(--lk-c-primary, #0051AC);
    box-shadow: var(--lk-sh-1, 0 1px 2px rgba(0,0,0,.05));
}

/* ── Canvas (SVG + легенда) ─────────────────────────────────── */
.mo-map-widget__body {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 180px;
    gap: var(--lk-sp-3, 12px);
    padding: var(--lk-sp-4, 16px);
    min-height: 400px;
}

@media (max-width: 720px) {
    .mo-map-widget__body {
        grid-template-columns: 1fr;
    }
}

.mo-map-widget__canvas {
    overflow: hidden;
    border-radius: var(--lk-r-md, 10px);
    background: var(--lk-c-surface-2, #F8FAFC);
}

.mo-map-widget__canvas svg {
    width: 100%;
    height: auto;
    display: block;
}

/* ── Районы: базовый стиль и градации ───────────────────────── */
svg.mo-map .mo-dist {
    fill: var(--lk-c-surface, #FFFFFF);
    stroke: var(--lk-c-border, #CBD5E1);
    stroke-width: 0.6;
    cursor: pointer;
    transition: fill var(--lk-transition, 150ms),
                stroke-width var(--lk-transition, 150ms);
}

svg.mo-map .mo-dist.is-hover,
svg.mo-map .mo-dist:hover {
    stroke: var(--lk-c-primary, #0051AC);
    stroke-width: 1.4;
}

svg.mo-map .mo-dist.is-out-of-scope {
    fill: var(--lk-c-surface-2, #F1F5F9);
    stroke: var(--lk-c-border, #E2E8F0);
    cursor: not-allowed;
    opacity: 0.45;
}

svg.mo-map .mo-dist.intensity-0 { fill: var(--lk-c-surface, #FFFFFF); }
svg.mo-map .mo-dist.intensity-1 { fill: var(--lk-c-primary-050, #E0ECF8); }
svg.mo-map .mo-dist.intensity-2 { fill: var(--lk-c-primary-100, #B9D3EC); }
svg.mo-map .mo-dist.intensity-3 { fill: var(--lk-c-primary-300, #5B95D0); }
svg.mo-map .mo-dist.intensity-4 { fill: var(--lk-c-primary, #0051AC); }

/* ── Легенда ────────────────────────────────────────────────── */
.mo-map-widget__legend {
    display: flex;
    flex-direction: column;
    gap: var(--lk-sp-2, 8px);
    padding: var(--lk-sp-3, 12px);
    background: var(--lk-c-surface-2, #F8FAFC);
    border-radius: var(--lk-r-md, 10px);
    align-self: flex-start;
}

.mo-map-widget__legend-title {
    font-size: var(--lk-fs-sm, 14px);
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
}

.mo-map-widget__legend-scale {
    display: flex;
    gap: 2px;
}

.legend-dot {
    flex: 1;
    height: 18px;
    border-radius: 2px;
}

.legend-dot--0 { background: var(--lk-c-surface, #FFFFFF); border: 1px solid var(--lk-c-border, #CBD5E1); }
.legend-dot--1 { background: var(--lk-c-primary-050, #E0ECF8); }
.legend-dot--2 { background: var(--lk-c-primary-100, #B9D3EC); }
.legend-dot--3 { background: var(--lk-c-primary-300, #5B95D0); }
.legend-dot--4 { background: var(--lk-c-primary, #0051AC); }

.mo-map-widget__legend-labels {
    display: flex;
    justify-content: space-between;
    font-size: var(--lk-fs-xs, 12px);
    color: var(--lk-c-ink-2, #475569);
}

/* ── Tooltip (hover) ────────────────────────────────────────── */
.mo-map-widget__tooltip {
    position: absolute;
    z-index: var(--lk-z-tooltip, 1070);
    padding: 8px 12px;
    background: var(--lk-c-ink, #0F172A);
    color: var(--lk-c-surface, #FFFFFF);
    border-radius: var(--lk-r-sm, 8px);
    font-size: var(--lk-fs-xs, 12px);
    line-height: 1.5;
    pointer-events: none;
    box-shadow: var(--lk-sh-2, 0 4px 12px rgba(0,0,0,.12));
    max-width: 280px;
}

/* ── Popup (клик) ───────────────────────────────────────────── */
.mo-map-widget__popup {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: var(--lk-z-modal, 1050);
    min-width: 320px;
    max-width: 90vw;
    padding: var(--lk-sp-4, 16px);
    background: var(--lk-c-surface, #FFFFFF);
    border-radius: var(--lk-r-lg, 12px);
    box-shadow: var(--lk-sh-3, 0 8px 24px rgba(0,0,0,.15));
    border: 1px solid var(--lk-c-border, #E2E8F0);
}

.mo-map-widget__popup[hidden] { display: none; }

.mo-map-widget__popup-title {
    margin-bottom: var(--lk-sp-3, 12px);
    font-size: var(--lk-fs-lg, 18px);
    font-weight: 700;
    color: var(--lk-c-ink, #0F172A);
    padding-right: 32px; /* под кнопку закрытия */
}

.mo-map-widget__popup-close {
    position: absolute;
    top: 8px;
    right: 8px;
}

.mo-map-widget__popup-metrics {
    display: grid;
    gap: var(--lk-sp-2, 8px);
}

.mo-popup-metric {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    border-bottom: 1px solid var(--lk-c-border, #E2E8F0);
}

.mo-popup-metric:last-child { border-bottom: none; }

.mo-popup-metric__label {
    color: var(--lk-c-ink-2, #475569);
    font-size: var(--lk-fs-sm, 14px);
}

.mo-popup-metric__value {
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
    font-size: var(--lk-fs-sm, 14px);
}

/* ── Таблица под картой ─────────────────────────────────────── */
.mo-map-widget__table {
    padding: var(--lk-sp-4, 16px);
}

.mo-map-widget__table-wrap {
    overflow-x: auto;
}

.mo-map-widget__table table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--lk-fs-sm, 14px);
}

.mo-map-widget__table thead th {
    padding: 8px 12px;
    text-align: left;
    color: var(--lk-c-ink-2, #475569);
    font-weight: 600;
    border-bottom: 2px solid var(--lk-c-border, #E2E8F0);
    white-space: nowrap;
}

.mo-map-widget__table tbody td {
    padding: 8px 12px;
    border-bottom: 1px solid var(--lk-c-border, #F1F5F9);
}

.mo-map-widget__table tbody tr:hover {
    background: var(--lk-c-surface-2, #F8FAFC);
}

.mo-map-widget__table .is-loading,
.mo-map-widget__table .is-error {
    text-align: center;
    padding: 32px 16px;
    color: var(--lk-c-ink-2, #475569);
}

.mo-map-widget__table .is-error {
    color: var(--lk-c-danger, #B91C1C);
}

/* ── Placeholder (нет карты) ────────────────────────────────── */
.mo-map-widget__placeholder {
    padding: var(--lk-sp-6, 32px);
    background: var(--lk-c-surface-2, #F8FAFC);
    border: 2px dashed var(--lk-c-border, #CBD5E1);
    border-radius: var(--lk-r-md, 10px);
    text-align: center;
    color: var(--lk-c-ink-2, #475569);
    line-height: 1.6;
}

.mo-map-widget__placeholder code {
    background: var(--lk-c-surface, #FFFFFF);
    padding: 2px 6px;
    border-radius: 4px;
    font-family: var(--lk-ff-mono, ui-monospace, monospace);
    font-size: 0.9em;
}

/* ── Футер ──────────────────────────────────────────────────── */
.mo-map-widget__footer {
    padding: var(--lk-sp-3, 12px);
    color: var(--lk-c-ink-3, #94A3B8);
    font-size: var(--lk-fs-xs, 12px);
}

.mo-map-widget__footer a {
    color: var(--lk-c-ink-2, #475569);
    text-decoration: underline;
}

.mo-map-widget__footer a:hover {
    color: var(--lk-c-primary, #0051AC);
}

/* Спец-категории (Мособлсуд, Москва) в таблице показателей карты */
.mo-map-widget__table tr[data-district-code="MOS_OBL_SUD"] td,
.mo-map-widget__table tr[data-district-code="MOSCOW"] td,
.mo-map-widget__table tr[data-district-code="OTHER_RF"] td {
    font-style: italic;
    color: var(--lk-c-ink-2, #64748B);
}
.mo-map-widget__table tr[data-district-code="MOS_OBL_SUD"] td:first-child::before,
.mo-map-widget__table tr[data-district-code="MOSCOW"] td:first-child::before,
.mo-map-widget__table tr[data-district-code="OTHER_RF"] td:first-child::before {
    content: '⚖ ';
    margin-right: 4px;
    color: var(--lk-c-primary, #0051AC);
}

/* Маркер спец-категории на карте (Мособлсуд и т.п.) */
svg.mo-map g.mo-marker {
    cursor: pointer;
}
svg.mo-map g.mo-marker .mo-marker__circle {
    transition: stroke-width 120ms ease-out, fill 120ms ease-out, r 120ms ease-out;
}
svg.mo-map g.mo-marker .mo-marker__circle {
    fill: var(--lk-c-primary, #0051AC);
    stroke: #FFFFFF;
    stroke-width: 2;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.25));
}
svg.mo-map g.mo-marker .mo-marker__icon {
    fill: #FFFFFF;
    font-size: 14px;
    font-weight: 700;
    pointer-events: none;
    user-select: none;
}
svg.mo-map g.mo-marker.is-hover .mo-marker__circle,
svg.mo-map g.mo-marker:hover .mo-marker__circle {
    fill: var(--lk-c-primary-600, #004695);
    stroke-width: 3;
}

/* ══════════════════════════════════════════════════════════
   HOTFIX 2026-04-24 v3: popup карты МО. Без ::before-backdrop,
   кнопка закрытия гарантированно сверху. Масштаб под ландшафт.
   ══════════════════════════════════════════════════════════ */

/* База: аккуратное модальное окно вместо прилипшего к центру */
.mo-map-widget__popup {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(420px, 92vw);
    max-width: 420px;
    max-height: calc(100vh - 40px);        /* всегда помещается, даже в ландшафте */
    padding: 20px 24px;
    background: var(--lk-c-surface, #FFFFFF);
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: 14px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
    z-index: 1050;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
.mo-map-widget__popup[hidden] { display: none; }

/* Кнопка закрытия — явно поверх всего содержимого */
.mo-map-widget__popup-close,
#mo-popup-close {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 36px;
    height: 36px;
    padding: 0;
    border: none;
    background: transparent;
    border-radius: 50%;
    cursor: pointer;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--lk-c-ink-2, #64748B);
    transition: background 120ms, color 120ms;
}
.mo-map-widget__popup-close:hover,
#mo-popup-close:hover {
    background: var(--lk-c-surface-2, #F1F5F9);
    color: var(--lk-c-ink, #0F172A);
}
.mo-map-widget__popup-close::before,
#mo-popup-close::before {
    content: '×';
    font-size: 26px;
    line-height: 1;
    font-weight: 300;
}
/* Скрыть любую внутреннюю иконку, чтобы крестик ::before был чистым */
.mo-map-widget__popup-close .lk-ico,
#mo-popup-close .lk-ico { display: none; }

/* Заголовок — чуть отступ справа под кнопку */
.mo-map-widget__popup-title,
#mo-popup-title {
    padding-right: 40px;
    margin-bottom: 12px;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.3;
}

/* ─── Мобильный (≤720px портрет и ландшафт) ─── */
@media (max-width: 720px) {
    .mo-map-widget__popup {
        /* Bottom-sheet, но без перекрытия кнопки закрытия */
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        transform: none;
        width: 100%;
        max-width: 100%;
        /* В ландшафте viewport-h = 400px → не больше 90% */
        max-height: 90vh;
        border-radius: 16px 16px 0 0;
        padding: 16px 20px 24px;
    }
    .mo-map-widget__popup-close,
    #mo-popup-close {
        /* Крупнее, чтобы палец не промахивался */
        width: 44px;
        height: 44px;
        top: 6px;
        right: 6px;
    }
    .mo-map-widget__popup-close::before,
    #mo-popup-close::before { font-size: 30px; }
}

/* ─── Очень низкий viewport (ландшафт телефонов) ─── */
@media (max-height: 500px) {
    .mo-map-widget__popup {
        max-height: calc(100vh - 20px);
        padding: 12px 18px;
    }
    .mo-map-widget__popup-title,
    #mo-popup-title {
        font-size: 16px;
        margin-bottom: 8px;
    }
}

/* На тач-устройствах скрываем tooltip (hover не стреляет) */
@media (hover: none) {
    .mo-map-widget__tooltip { display: none !important; }
}


/* ══════════════════════════════════════════════════════════
   HOTFIX 2026-04-24 v3b: tooltip-hardening.
   Предотвращает «зависание» tooltip на touch-устройствах.
   ══════════════════════════════════════════════════════════ */
.mo-map-widget__tooltip {
    pointer-events: none;          /* не ловит свои mouseenter */
    user-select: none;
    z-index: 1040;
}
/* На touch-only устройствах tooltip отключён полностью */
@media (hover: none), (pointer: coarse) {
    .mo-map-widget__tooltip { display: none !important; }
}

/* ══════════════════════════════════════════════════════════
   HOTFIX 2026-04-24 v4: сортировка таблицы + пресеты периода.
   ══════════════════════════════════════════════════════════ */

/* Кликабельные заголовки + стрелочки */
.mo-map-widget__table thead th[data-sort] {
    cursor: pointer;
    user-select: none;
    position: relative;
    padding-right: 22px;
    transition: background 120ms;
}
.mo-map-widget__table thead th[data-sort]:hover {
    background: var(--lk-c-surface-2, #F1F5F9);
}
.mo-map-widget__table thead th[data-sort]::after {
    content: '';
    position: absolute;
    right: 6px;
    top: 50%;
    width: 0;
    height: 0;
    transform: translateY(-50%);
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 5px solid var(--lk-c-ink-2, #64748B);
    opacity: 0.25;
}
.mo-map-widget__table thead th.is-sort-asc::after {
    border-top: 0;
    border-bottom: 5px solid var(--lk-c-primary, #0051AC);
    opacity: 1;
}
.mo-map-widget__table thead th.is-sort-desc::after {
    border-top: 5px solid var(--lk-c-primary, #0051AC);
    opacity: 1;
}

/* Чипсы-пресеты периода */
.mo-preset-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.mo-preset {
    padding: 4px 12px;
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: 999px;
    background: var(--lk-c-surface, #FFFFFF);
    color: var(--lk-c-ink-2, #64748B);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: border-color 120ms, background 120ms, color 120ms;
    white-space: nowrap;
}
.mo-preset:hover {
    border-color: var(--lk-c-primary, #0051AC);
    color: var(--lk-c-primary, #0051AC);
}
.mo-preset.is-active {
    background: var(--lk-c-primary, #0051AC);
    color: #FFFFFF;
    border-color: var(--lk-c-primary, #0051AC);
}

/* Строка итогов в таблице карты */
.mo-map-widget__table tr.mo-totals {
    background: var(--lk-c-surface-2, #F1F5F9);
    border-top: 2px solid var(--lk-c-primary, #0051AC);
}
.mo-map-widget__table tr.mo-totals td {
    padding-top: 12px;
    padding-bottom: 12px;
    font-weight: 600;
}

/* ══════════════════════════════════════════════════════════
   HOTFIX 2026-04-24 v5: метрики popup карты — nowrap на мобиле
   ──────────────────────────────────────────────────────────
   Симптом: «5 189 ₽» в строке Начислено разлеталось на «51 89»
   из-за flexbox-default flex-shrink:1. value был сжат, ₽
   обрезан, разделитель тысяч (NBSP) на узком экране ушёл на
   следующую строку. Лечится явным flex: 0 0 auto + nowrap
   на value и flex: 1 1 auto + min-width: 0 на label.
   ══════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
    .mo-map-widget__popup .mo-popup-metric {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        justify-content: space-between !important;
        align-items: baseline !important;
        gap: 8px !important;
        padding: 10px 0 !important;
        width: 100%;
    }
    .mo-map-widget__popup .mo-popup-metric__label {
        flex: 1 1 auto !important;
        min-width: 0 !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        font-size: 14px !important;
        color: var(--lk-c-ink-2, #475569);
    }
    .mo-map-widget__popup .mo-popup-metric__value {
        flex: 0 0 auto !important;
        white-space: nowrap !important;
        text-align: right !important;
        font-size: 15px !important;
        font-weight: 600 !important;
        word-spacing: -1px;
        color: var(--lk-c-ink, #0F172A);
    }
    .mo-map-widget__popup {
        padding-left: 14px !important;
        padding-right: 14px !important;
    }
}

/* ══════════════════════════════════════════════════════════
   HOTFIX 2026-04-24 v6: popup ровно по ширине viewport
   ──────────────────────────────────────────────────────────
   Симптом v5: popup на мобиле выехал за правый край,
   значения «34 522 ₽» обрезались до «34 522», БЮП «20» → «2».
   Корень: left:0 + right:0 + width:100% без box-sizing
   = сумма width(100%) + padding(28px) растягивает за viewport.
   Исправление: box-sizing: border-box + сохранить
   left:0 + width:100% БЕЗ right:0.
   ══════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
    .mo-map-widget__popup {
        box-sizing: border-box !important;
        left: 0 !important;
        right: auto !important;
        width: 100vw !important;
        max-width: 100vw !important;
        margin: 0 !important;
        overflow-x: hidden !important;   /* лучше показать обрезание чем горизскролл */
    }
    .mo-map-widget__popup .mo-popup-metric {
        box-sizing: border-box !important;
        max-width: 100% !important;
    }
    .mo-map-widget__popup .mo-popup-metric__value {
        /* Гарантия видимости значения справа */
        padding-right: 4px !important;
        margin-right: 0 !important;
        max-width: 60% !important;       /* если число гигантское — оно перенесётся, а не обрежется */
        overflow: visible !important;
    }
}

/* Столбец «Просрочка ₽» в таблице карты — акцентируем цветом */
.mo-map-widget__table .col-overdue {
    color: var(--lk-c-danger, #B91C1C);
    font-weight: 500;
    text-align: right;
}
.mo-map-widget__table tr.mo-totals .col-overdue {
    font-weight: 700;
}

/* ── Раскрытая строка района (список адвокатов) ─────────────── */
.mo-map-widget__table tr[data-district-code]:not(.mo-totals) { cursor: pointer; }
.mo-map-widget__table tr.is-expanded > td:first-child {
    border-left: 3px solid var(--lk-c-primary, #0051AC);
}
.mo-map-widget__table tr.mo-expanded > td {
    background: var(--lk-c-surface-2, #F8FAFC);
    padding: 14px 18px;
    border-top: none;
    border-bottom: 1px solid var(--lk-c-border, #E2E8F0);
}
.mo-expanded__title {
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--lk-c-ink-2, #475569);
}
.mo-expanded__loading,
.mo-expanded__empty,
.mo-expanded__err {
    padding: 4px 0;
    font-size: 13px;
    color: var(--lk-c-ink-4, #94A3B8);
}
.mo-expanded__err { color: var(--lk-c-danger, #B91C1C); }
.mo-expanded__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 4px;
}
.mo-expanded__lawyer {
    padding: 6px 0;
    font-size: 13px;
    line-height: 1.5;
    border-bottom: 1px dashed var(--lk-c-border, #E2E8F0);
}
.mo-expanded__lawyer:last-child { border-bottom: none; }
.mo-expanded__name {
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
}
.mo-expanded__reg {
    color: var(--lk-c-ink-3, #64748B);
    font-size: 12px;
}
.mo-expanded__metric {
    color: var(--lk-c-primary, #0051AC);
    font-weight: 500;
}
.mo-expanded__overdue {
    color: var(--lk-c-danger, #B91C1C);
    font-weight: 500;
}
@media (max-width: 720px) {
    .mo-map-widget__table tr.mo-expanded > td { padding: 12px 12px; }
    .mo-expanded__lawyer { font-size: 12.5px; }
}
/* ══════════════════════════════════════════════════════════
   Reestr SYUP — секция CSS, append в lk-components.css
   Двe части:
     A. .syup-reg* — публичная страница /advokaty-palaty/reestr-syup/
     B. .syup-imp* — админская /lichnyy-kabinet/otchety/registry/
   ══════════════════════════════════════════════════════════ */

/* ── A. Публичный реестр ───────────────────────────────────── */
.syup-reg {
    max-width: 1100px;
    margin: 0 auto;
    padding: var(--lk-sp-4, 16px);
    font-family: var(--lk-ff, system-ui);
    color: var(--lk-c-ink, #0F172A);
}
.syup-reg__header h1 {
    margin: 0 0 var(--lk-sp-1, 4px) 0;
    font-size: var(--lk-fs-h1, 26px);
    font-weight: 700;
}
.syup-reg__sub {
    margin: 0 0 var(--lk-sp-4, 16px);
    color: var(--lk-c-ink-2, #475569);
    font-size: var(--lk-fs-sm, 14px);
}
.syup-reg__filters {
    display: grid;
    gap: var(--lk-sp-3, 12px);
    margin-bottom: var(--lk-sp-4, 16px);
}
.syup-reg__filter-row {
    display: flex;
    align-items: center;
    gap: var(--lk-sp-2, 8px);
    flex-wrap: wrap;
}
.syup-reg__label {
    font-size: var(--lk-fs-sm, 14px);
    color: var(--lk-c-ink-2, #475569);
    font-weight: 500;
    min-width: 130px;
}
.syup-reg__input {
    flex: 1 1 240px;
    min-height: 40px;
    padding: 0 12px;
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    background: var(--lk-c-surface, #FFFFFF);
    font-size: var(--lk-fs-sm, 14px);
}
.syup-reg__input:focus {
    outline: none;
    border-color: var(--lk-c-primary, #0051AC);
    box-shadow: var(--lk-sh-focus, 0 0 0 3px rgba(0,81,172,.2));
}
.syup-reg__summary {
    margin-bottom: var(--lk-sp-3, 12px);
    color: var(--lk-c-ink-2, #475569);
    font-size: 14px;
}
.syup-reg__loading,
.syup-reg__empty,
.syup-reg__error {
    padding: 32px 16px;
    text-align: center;
    color: var(--lk-c-ink-2, #475569);
}
.syup-reg__error { color: var(--lk-c-danger, #B91C1C); }
.syup-reg__list {
    display: grid;
    gap: var(--lk-sp-3, 12px);
}
.syup-reg__card {
    padding: var(--lk-sp-3, 14px) var(--lk-sp-4, 18px);
    background: var(--lk-c-surface, #FFFFFF);
    border: 1px solid var(--lk-c-border, #E2E8F0);
    border-radius: var(--lk-r-md, 10px);
    transition: border-color 120ms;
}
.syup-reg__card:hover {
    border-color: var(--lk-c-primary, #0051AC);
}
.syup-reg__card-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin-bottom: 6px;
}
.syup-reg__name {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: var(--lk-c-ink, #0F172A);
}
.syup-reg__reg {
    font-size: 13px;
    color: var(--lk-c-ink-3, #64748B);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.syup-reg__org {
    color: var(--lk-c-ink-3, #64748B);
    font-size: 13px;
    margin-bottom: 8px;
    line-height: 1.45;
}
.syup-reg__districts {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}
.syup-reg__chip {
    display: inline-block;
    padding: 2px 8px;
    background: var(--lk-c-primary-050, #E0ECF8);
    color: var(--lk-c-primary-600, #004695);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 500;
}
.syup-reg__chip--empty {
    background: var(--lk-c-surface-2, #F1F5F9);
    color: var(--lk-c-ink-3, #94A3B8);
    font-style: italic;
}
.syup-reg__pager {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 4px;
    margin: var(--lk-sp-4, 16px) 0;
}
.syup-reg__page {
    min-width: 36px;
    min-height: 36px;
    padding: 0 10px;
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: var(--lk-r-sm, 6px);
    background: var(--lk-c-surface, #FFFFFF);
    color: var(--lk-c-ink-2, #475569);
    font-size: 14px;
    cursor: pointer;
}
.syup-reg__page:hover {
    border-color: var(--lk-c-primary, #0051AC);
    color: var(--lk-c-primary, #0051AC);
}
.syup-reg__page.is-active {
    background: var(--lk-c-primary, #0051AC);
    color: #FFFFFF;
    border-color: var(--lk-c-primary, #0051AC);
}
.syup-reg__page-more {
    display: inline-block;
    padding: 8px 12px;
    color: var(--lk-c-ink-3, #94A3B8);
    font-size: 13px;
}
.syup-reg__footer {
    margin-top: var(--lk-sp-6, 24px);
    padding-top: var(--lk-sp-3, 12px);
    border-top: 1px solid var(--lk-c-border, #E2E8F0);
    color: var(--lk-c-ink-3, #94A3B8);
    font-size: 12px;
    text-align: center;
}
.syup-reg__footer a {
    color: var(--lk-c-ink-2, #475569);
    text-decoration: underline;
}

/* ── B. Админский импортёр ─────────────────────────────────── */
.syup-imp {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--lk-sp-4, 16px);
    font-family: var(--lk-ff, system-ui);
    color: var(--lk-c-ink, #0F172A);
}
.syup-imp__header h1 {
    margin: 0 0 4px;
    font-size: var(--lk-fs-h1, 24px);
    font-weight: 700;
}
.syup-imp__sub {
    margin: 0 0 var(--lk-sp-4, 16px);
    color: var(--lk-c-ink-2, #475569);
    font-size: 14px;
}
.syup-imp__sub code {
    background: var(--lk-c-surface-2, #F1F5F9);
    padding: 1px 6px;
    border-radius: 4px;
    font-family: var(--lk-ff-mono, ui-monospace, monospace);
    font-size: 12px;
}
.syup-imp__toolbar {
    display: flex;
    align-items: center;
    gap: var(--lk-sp-3, 12px);
    padding: var(--lk-sp-3, 14px);
    margin-bottom: var(--lk-sp-3, 12px);
}
.syup-imp__hint {
    color: var(--lk-c-ink-3, #94A3B8);
    font-size: 12px;
}
.syup-imp__loading,
.syup-imp__empty,
.syup-imp__error {
    padding: 24px;
    text-align: center;
    color: var(--lk-c-ink-2, #475569);
}
.syup-imp__error { color: var(--lk-c-danger, #B91C1C); }
.syup-imp__summary {
    padding: var(--lk-sp-4, 16px);
    margin-bottom: var(--lk-sp-3, 12px);
}
.syup-imp__summary h3 {
    margin: 0 0 12px;
    font-size: 16px;
    font-weight: 600;
}
.syup-imp__statgrid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 8px 16px;
    margin: 0;
}
.syup-imp__statgrid dt {
    font-size: 13px;
    color: var(--lk-c-ink-2, #475569);
}
.syup-imp__statgrid dd {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
}
.syup-imp__cnt--add    { color: var(--lk-c-success, #15803D); }
.syup-imp__cnt--remove { color: var(--lk-c-danger,  #B91C1C); }
.syup-imp__cnt--update { color: var(--lk-c-primary, #0051AC); }
.syup-imp__cnt--orphan { color: #C2410C; }
.syup-imp__pct {
    font-size: 13px;
    color: var(--lk-c-ink-3, #94A3B8);
    margin-left: 4px;
}
.syup-imp__tables {
    display: grid;
    gap: var(--lk-sp-3, 12px);
    margin-bottom: var(--lk-sp-4, 16px);
}
.syup-imp__group {
    background: var(--lk-c-surface, #FFFFFF);
    border: 1px solid var(--lk-c-border, #E2E8F0);
    border-radius: var(--lk-r-md, 10px);
    padding: var(--lk-sp-3, 14px);
}
.syup-imp__group summary {
    cursor: pointer;
    font-weight: 600;
    font-size: 15px;
    padding: 4px 0;
    user-select: none;
}
.syup-imp__group--add    summary { color: var(--lk-c-success, #15803D); }
.syup-imp__group--remove summary { color: var(--lk-c-danger,  #B91C1C); }
.syup-imp__group--update summary { color: var(--lk-c-primary, #0051AC); }
.syup-imp__group--orphan summary { color: #C2410C; }
.syup-imp__tablewrap {
    margin-top: var(--lk-sp-3, 12px);
    overflow-x: auto;
}
.syup-imp__table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.syup-imp__table th {
    text-align: left;
    padding: 6px 10px;
    background: var(--lk-c-surface-2, #F8FAFC);
    color: var(--lk-c-ink-2, #475569);
    font-weight: 600;
    border-bottom: 1px solid var(--lk-c-border, #E2E8F0);
}
.syup-imp__table td {
    padding: 6px 10px;
    border-bottom: 1px solid var(--lk-c-border, #F1F5F9);
    vertical-align: top;
}
.syup-imp__empty-cell {
    text-align: center;
    color: var(--lk-c-ink-3, #94A3B8);
    font-style: italic;
}
.syup-imp__apply {
    padding: var(--lk-sp-4, 16px);
}
.syup-imp__apply h3 {
    margin: 0 0 12px;
    font-size: 16px;
}
.syup-imp__warn {
    padding: 10px 14px;
    background: #FEF3C7;
    border: 1px solid #FCD34D;
    color: #92400E;
    border-radius: var(--lk-r-sm, 8px);
    margin-bottom: 12px;
    font-size: 13px;
}
.syup-imp__reason {
    width: 100%;
    padding: 10px 14px;
    border: 1px solid var(--lk-c-border, #CBD5E1);
    border-radius: var(--lk-r-sm, 8px);
    font-family: var(--lk-ff, system-ui);
    font-size: 14px;
    resize: vertical;
    min-height: 60px;
}
.syup-imp__reason.is-required {
    border-color: var(--lk-c-danger, #B91C1C);
}
.syup-imp__apply-actions {
    display: flex;
    gap: var(--lk-sp-3, 12px);
    align-items: center;
    margin-top: 12px;
    flex-wrap: wrap;
}
.syup-imp__apply-status {
    font-size: 13px;
    color: var(--lk-c-ink-2, #475569);
}
.syup-imp__apply-status.is-error   { color: var(--lk-c-danger,  #B91C1C); }
.syup-imp__apply-status.is-ok      { color: var(--lk-c-success, #15803D); }
.syup-imp__apply-status.is-loading { color: var(--lk-c-primary, #0051AC); }

/* ══════════════════════════════════════════════════════════
   N. История заявлений — кнопка «Скачать бланк»
   Единый контракт Phase 2: .lk-btn .lk-btn--secondary .lk-btn--sm
   + иконка .lk-ico .lk-ico--download (download-arrow, 24×24).
   ══════════════════════════════════════════════════════════ */

/* ── Иконка download (маскированный SVG) ───────────────────── */
.lk-ico--download {
    mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/><polyline points='7 10 12 15 17 10'/><line x1='12' y1='15' x2='12' y2='3'/></svg>");
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/><polyline points='7 10 12 15 17 10'/><line x1='12' y1='15' x2='12' y2='3'/></svg>");
}

/* ── Кнопка «Скачать бланк» внутри карточки истории ───────── */
.personal-cabinet__blank-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
}
.personal-cabinet__blank-btn .lk-ico {
    flex: 0 0 auto;
}
.personal-cabinet__blank-form {
    display: inline-block;
    margin: 0;
}

/* End */
/* /local/templates/personal/css/lk-components.css?1777066132171554 */
