/* ============================================================
 * SECTIONS - AUTH
 * ============================================================ */

.auth-modal-new {
    position: fixed;
    inset: 0;
    background: radial-gradient(circle at 100px -200px, #FFFFFF 31%, #82B7DC 99%, #82B7DC 100%);
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    z-index: 3000;
    padding: 20px;
    overflow-y: auto;
    padding-top: 60px;
}

.auth-modal-new.active {
    display: flex;
}

.auth-modal-new-content {
    width: 100%;
    max-width: 400px;
    padding: 40px 24px;
    border-radius: 28px;
    background: transparent;
    animation: slideUpAuth 0.5s ease;
}

.auth-modal-backdrop {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.auth-header {
    text-align: center;
    margin-bottom: 28px;
    padding-bottom: 0;
    border-bottom: none;
}

.auth-logo-container {
    display: flex;
    justify-content: center;
    margin-bottom: 20px;
}

.auth-logo {
    width: 55px;
    height: 55px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    box-shadow: none;
    margin-bottom: 12px;
}

.auth-logo-img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.auth-logo-fallback {
    font-size: 36px;
    display: none;
}

.auth-title {
    font-size: 20px;
    font-weight: 300;
    color: #1C1C1C;
    letter-spacing: 2px;
    font-family: 'Cormorant Garamond', serif;
    margin-top: 20px;
}

.auth-title sup {
    font-size: 18px;
    vertical-align: super;
}

.auth-subtitle {
    font-size: 20px;
    color: #000000;
    margin: 0;
    font-weight: 300;
    letter-spacing: 0.2px;
    font-family: 'Jost', sans-serif;
}

.auth-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 30px;
}

.auth-instruction {
    background: transparent;
    border: none;
    border-radius: 12px;
    padding: 16px 4px;
    margin-left: 20px;
}

.auth-dots {
    display: flex;
    justify-content: left;
    gap: 2px;
    padding: 4px 2px;
    margin-top: -6px;
}

.instruction-link {
    color: #000000;
    text-decoration: underline;
    font-family: 'Jost', sans-serif;
    font-weight: 400;
    transition: all 0.2s;
}

.instruction-link:hover {
    text-decoration: underline;
    color: #114185;
}

.instruction-title {
    font-size: 15px;
    font-weight: 600;
    color: #000000;
    letter-spacing: 0.6px;
    font-family: 'Jost', sans-serif;
    margin-left: -20px;
}

.instruction-list {
    list-style: decimal;
}

.instruction-list li {
    font-size: 15px;
    color: #000000;
    line-height: 1.5;
    font-family: 'Jost', sans-serif;
    font-weight: 400;
}

.auth-btn-primary,
.auth-btn-secondary {
    width: 100%;
    padding: 14px 14px;
    border-radius: 16px;
    cursor: pointer;
    font-weight: 600;
    font-size: 15px;
    font-family: 'Jost', sans-serif;
    transition: all 0.3s;
    border: 2px solid #114185;
}

.auth-btn-primary {
    background: #3366A9;
    color: #FFFFFF;
    box-shadow: 0 4px 16px rgba(17, 65, 133, 0.2);
}

.auth-btn-primary:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 8px 24px rgba(17, 65, 133, 0.3);
}

.auth-btn-primary:active:not(:disabled) {
    transform: translateY(0);
}

.auth-btn-primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.auth-btn-secondary {
    background: transparent;
    color: #114185;
}

.auth-btn-secondary:hover {
    background: rgba(17, 65, 133, 0.05);
    transform: translateY(-1px);
}

.auth-btn-secondary:active {
    transform: translateY(0);
}

.auth-message {
    padding: 12px 14px;
    border-radius: 8px;
    display: none;
    font-size: 13px;
    font-weight: 500;
    animation: slideDown 0.3s ease;
}

.auth-message.success {
    display: block;
    background: var(--success-soft);
    color: var(--success);
    border: 1px solid var(--success-line);
}

.auth-message.error {
    display: block;
    background: var(--error-soft);
    color: var(--error);
    border: 1px solid var(--error-line);
}

#modal-auth-btn {
    width: 100%;
    border: none;
    color: var(--white);
    cursor: pointer;
    transition: all 0.2s;
    font-family: 'Jost', sans-serif;
    padding: 13px 20px;
    font-size: 15px;
    font-weight: 600;
    border-radius: 16px;
}

#modal-auth-btn:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 4px 20px rgba(17, 65, 133, 0.25);
}

#modal-auth-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

#modal-auth-message {
    margin-top: 16px;
    padding: 12px 14px;
    border-radius: var(--radius-sm);
    display: none;
    font-size: 13px;
    font-weight: 500;
    animation: slideDown 0.2s ease;
}

#modal-auth-message.success {
    display: block;
    background: var(--success-soft);
    color: var(--success);
    border: 1px solid var(--success-line);
}

#modal-auth-message.error {
    display: block;
    background: var(--error-soft);
    color: var(--error);
    border: 1px solid var(--error-line);
}

/* Старая модалка авторизации */
.auth-modal {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(4px);
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 2000;
}

.auth-modal.active {
    display: flex;
}

.auth-modal-content {
    background: var(--bg-main);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 32px;
    max-width: 400px;
    width: 90%;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

.auth-modal h2 {
    font-size: 26px;
    font-weight: 600;
    color: var(--primary);
    margin-bottom: 12px;
    letter-spacing: -0.5px;
}

.auth-modal > p {
    color: var(--text-secondary);
    font-size: 15px;
    margin-bottom: 4px;
}

.modal-subtitle {
    color: var(--text-muted);
    font-size: 13px;
    margin-bottom: 24px;
}

.auth-modal .auth-form {
    background: transparent;
    padding: 0;
    border: none;
    box-shadow: none;
}

.auth-modal .form-input {
    background: var(--bg-input);
    border: 1px solid var(--border);
    color: var(--text);
    padding: 12px 14px;
    border-radius: var(--radius-sm);
    font-family: 'Cormorant Garamond', serif;
    font-size: 13px;
    width: 100%;
    transition: all 0.2s;
}

.auth-modal .form-input:focus {
    border-color: var(--border-active);
    box-shadow: 0 0 0 3px rgba(17, 65, 133, 0.1);
    outline: none;
}

.auth-modal .hint {
    margin-top: 10px;
    padding: 12px;
    background: var(--bg-primary-light);
    border-left: 3px solid var(--primary);
    font-size: 12px;
    line-height: 1.6;
    color: var(--text-secondary);
    border-radius: 4px;
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: 500;
    color: var(--text);
    font-size: 13px;
}

@media (max-width: 768px) {
    .auth-subtitle {
        font-size: 18px;
    }
}

/* ============================================================
 * SECTIONS - CHAT
 * ============================================================ */

#chat-section {
    padding: 0;
    display: none !important;
    flex-direction: column;
    height: 100%;
    position: relative;
    min-height: 0;
    overflow: hidden;
}

#chat-section.active {
    display: flex !important;
}

#chat-section .chat-messages {
    padding: 24px 20px 12px;
}

@media (max-width: 768px) {
    #chat-section .chat-messages {
        padding: 70px 24px 12px;
    }
}

.chat-container {
    flex: 1;
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: visible;
    position: relative;
    min-height: 0;
}

.chat-container.full-width .examples-section {
    display: none !important;
}

.chat-container.full-width .chat-messages {
    flex: 1;
    min-height: 0;
}

.chat-container.full-width .input-wrapper {
    width: 100%;
    max-width: 100%;
    padding: 0 20px 20px;
}

@media (max-width: 768px) {
    .chat-container {
        min-height: 0;
    }

    .chat-messages {
        padding: 20px 24px 12px;
        min-height: 0;
    }
}

.chat-messages {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 24px 20px 12px;
    min-height: 0;
    -webkit-overflow-scrolling: touch;
}

.message {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    animation: msgIn 0.25s ease;
    padding: 6px 0;
}

.message.user {
    flex-direction: row-reverse;
}

.message.system {
    display: none !important;
}

.message > :is(p, .msg) {
    max-width: 72%;
    padding: 12px 16px;
    border-radius: var(--radius);
    line-height: 1.6;
    word-wrap: break-word;
    font-size: 15px;
    white-space: pre-wrap;
    font-family: 'Jost', sans-serif;
    font-weight: 400;
}

@media (max-width: 768px) {
    .message > :is(p, .msg) {
        max-width: 88%;
        /* На телефоне текст на пункт крупнее: 15px читались мелко. */
        font-size: 16px;
    }
}

.message.user > :is(p, .msg) {
    background: var(--user-bubble);
    color: var(--white);
    border-bottom-right-radius: 4px;
    box-shadow: 0 2px 8px rgba(17, 65, 133, 0.15);
}

.message.assistant > :is(p, .msg) {
    background: transparent;
    color: var(--text);
    border: none;
    border-bottom-left-radius: 4px;
    max-width: 80%;
}

@media (max-width: 768px) {
    .message.assistant > :is(p, .msg) {
        max-width: 92%;
    }
}

.message.system > :is(p, .msg) {
    background: transparent;
    color: var(--text-muted);
    font-size: 13px;
    padding: 8px 16px;
    border: 1px solid var(--border);
    border-radius: 20px;
    max-width: 100%;
}

/* --- Разметка внутри сообщения -------------------------------------
   Ответ приходит с разметкой (**важное**, списки, «## заголовок») и
   разбирается в теги, см. Utils.renderRichText в app.js. Отступы здесь
   скромные: пузырь узкий, и типографика «как в статье» в нём выглядит
   рыхло. --- */

.message > .msg {
    /* Переносы строк теперь дают сами абзацы и <br>, pre-wrap добавил бы
       поверх них пустые строки. */
    white-space: normal;
}

.message .msg-p {
    margin: 0;
}

.message .msg-p + *,
.message .msg-ul + *,
.message .msg-ol + * {
    margin-top: 10px;
}

.message .msg-h {
    margin: 0;
    font-size: 1em;
    font-weight: 600;
    font-family: 'Jost', sans-serif;
}

.message .msg-h + * {
    margin-top: 6px;
}

.message .msg-ul,
.message .msg-ol {
    margin: 0;
    padding-left: 20px;
}

.message .msg-ul li,
.message .msg-ol li {
    margin: 0;
}

.message .msg-ul li + li,
.message .msg-ol li + li {
    margin-top: 4px;
}

.message .msg strong {
    font-weight: 600;
}

.message.loading p {
    background: var(--ai-bubble);
    border: 1px solid var(--border);
    border-bottom-left-radius: 4px;
    padding: 14px 20px;
    display: flex;
    align-items: center;
    gap: 0;
}

.input-actions-inline {
    display: flex;
    gap: 4px;
    align-items: flex-end;
    padding-right: 4px;
    flex-shrink: 0;
    margin-bottom: 2px;
}

/* ------------------------------------------------------------
 * Живая строка прогресса: «✻ Смотрю остатки на складе… (12с · 3 шага)».
 * Заполняется из /api/chat/progress/<id>, см. addLoading() и
 * renderLoadingSteps() в app.js. Раньше здесь был пузырь с точками и
 * растущий список шагов — список накапливался и уезжал вверх, хотя
 * пользователю важно только текущее действие и то, что процесс идёт.
 * ------------------------------------------------------------ */

.message.loading {
    flex-direction: column;
    align-items: flex-start;
}

.loading-line {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 2px 0;
    /* Тот же шрифт и кегль, что у сообщений (.message p) — строка стоит
       с ними в одной колонке и не должна выглядеть чужой. */
    font-family: 'Jost', sans-serif;
    font-size: 15px;
    line-height: 1.6;
    color: var(--text-secondary);
    animation: fadeInStep 0.25s ease-out;
}

/* Пульсирующая точка. Рисуется CSS, а не символом в тексте: так она
   ровно круглая в любой теме и шрифте, и не требует таймера в JS. */
.loading-glyph {
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    /* baseline-выравнивание строки тянуло бы точку вниз — компенсируем. */
    align-self: center;
    border-radius: 50%;
    background: var(--primary);
    animation: glyphPulse 1.3s ease-in-out infinite;
}

.loading-status {
    /* Текст шага приходит с сервера и может быть любой длины —
       переносим, а не обрезаем: обрезанное действие ничего не сообщает. */
    min-width: 0;
}

.loading-meta {
    flex-shrink: 0;
    /* ⚠️ Было var(--text-muted) — в тёмной теме это почти фон, счётчик не
       читался. Берём тот же цвет, что у самой строки, и приглушаем
       прозрачностью: контраст остаётся достаточным в обеих темах. */
    color: var(--text-secondary);
    opacity: 0.75;
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    /* Цифры одной ширины: иначе строка дёргается на каждой секунде. */
    font-variant-numeric: tabular-nums;
}

@keyframes glyphPulse {
    0%, 100% { opacity: 1;    transform: scale(1); }
    50%      { opacity: 0.35; transform: scale(0.7); }
}

@keyframes fadeInStep {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Пользователь отключил анимации в системе — символ просто стоит. */
@media (prefers-reduced-motion: reduce) {
    .loading-glyph,
    .loading-line {
        animation: none;
        opacity: 1;
    }
}

/* ============================================================
 * SECTIONS - EXAMPLES
 * ============================================================ */

.examples-section {
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 40px 24px 20px;
    background: transparent;
    border-radius: 0;
    border: none;
    margin: 0;
    animation: none;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    position: relative;
    padding-bottom: 20px;
    overflow: visible;
    max-height: none;
}

@media (max-width: 768px) {
    .examples-section {
        padding: 40px 24px 20px;
    }
}

.examples-section.hidden {
    display: none !important;
}

.divider-line {
    width: 327px;
    height: auto;
    margin: 0 auto;
    display: block;
}

@media (max-width: 768px) {
    .divider-line {
        width: 327px;
        height: auto;
        margin: 0 auto;
    }
}

.examples-section .help-grid {
    display: flex;
    flex-direction: column;
    padding: 0px 0px 0px;
    gap: 12px;
    margin: 0;
    flex: none;
    align-content: center;
    width: 100%;
    max-width: 327px;
    position: relative;
    overflow: visible;
}

@media (max-width: 768px) {
    .examples-section .help-grid {
        flex-direction: column;
        padding: 0px 0px 0px;
        gap: 12px;
        margin-bottom: 0;
        width: 100%;
        max-width: 327px;
        overflow: visible;
    }
}

.help-card-wrapper {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    transform: translateY(0);
    opacity: 1;
    position: relative;
    overflow: visible;
}

@media (max-width: 768px) {
    .help-card-wrapper {
        width: 100%;
        overflow: visible;
    }
}

.help-card-wrapper:nth-child(1) {
    order: 1;
}

.help-card-wrapper:nth-child(2) {
    order: 2;
}

.help-grid.examples-active .help-card-wrapper:nth-child(1) {
    transform: translateY(-160px);
    z-index: 20;
}

.help-grid.examples-active .help-card-wrapper:nth-child(2) {
    opacity: 0;
    pointer-events: none;
    max-height: 0;
    margin: 0;
    transform: scale(0.95);
}

.help-grid.tips-active .help-card-wrapper:nth-child(2) {
    transform: translateY(-180px);
    z-index: 20;
}

.help-grid.tips-active .help-card-wrapper:nth-child(1) {
    opacity: 0;
    pointer-events: none;
    max-height: 0;
    margin: 0;
    transform: scale(0.95);
}

.examples-title {
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin: 0;
}

.examples {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}

@media (max-width: 768px) {
    .examples {
        grid-template-columns: 1fr;
    }
}

.example-btn {
    padding: 10px 12px;
    background: var(--white);
    color: var(--text-secondary);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 12px;
    font-weight: 400;
    transition: all 0.2s;
    text-align: left;
    line-height: 1.4;
    font-family: 'Cormorant Garamond', serif;
}

.example-btn:hover {
    background: var(--bg-hover);
    border-color: var(--primary);
    color: var(--primary);
    transform: translateY(-1px);
}

.btn-all-features {
    width: 100%;
    max-width: 327px;
    padding: 12px 16px;
    background: transparent;
    border: 1px solid #AAAAAA;
    color: #AAAAAA;
    border-radius: 12px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 400;
    transition: all 0.2s;
    font-family: 'Jost', sans-serif;
    margin: 0;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    transform: translateY(var(--button-offset, 0px));
    margin-top: calc(220px + var(--button-offset, 0px));
    opacity: 1;
    pointer-events: auto;
}

@media (max-width: 768px) {
    .btn-all-features {
        border-color: #AAAAAA;
        color: #AAAAAA;
    }
}

.btn-all-features:hover {
    background: rgba(170, 170, 170, 0.1);
    border-color: #999999;
    color: #999999;
}

@media (max-width: 768px) {
    .btn-all-features:hover {
        background: rgba(170, 170, 170, 0.1);
        border-color: #999999;
        color: #999999;
    }
}

.btn-all-features:active {
    transform: scale(0.98);
}

/* ============================================================
 * SECTIONS - TABLES
 * ============================================================ */

.message.assistant-table {
    justify-content: flex-start;
    margin: 20px 0;
    animation: msgIn 0.25s ease;
}

.table-scroll {
    overflow-x: auto;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    max-width: 100%;
}

.data-table {
    width: 100%;
    border-collapse: collapse;
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    min-width: 400px;
}

.data-table thead {
    background: rgba(17, 65, 133, 0.1);
}

.data-table th {
    padding: 12px 14px;
    text-align: left;
    font-weight: 600;
    color: var(--primary);
    white-space: nowrap;
    border-bottom: 1px solid var(--border);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.data-table tbody tr {
    border-bottom: 1px solid var(--border);
    transition: background 0.15s;
}

.data-table tbody tr:hover {
    background: var(--bg-hover);
}

.data-table tbody tr:last-child {
    border-bottom: none;
}

.data-table td {
    padding: 11px 14px;
    color: var(--text);
}

.data-table tbody tr:nth-child(even) {
    background: rgba(255, 255, 255, 0.5);
}

/* ---- Сворачиваемые группы в таблице --------------------------------------
 * Строка-заголовок группы (контрагент или товар) + её строки. Группировка
 * включается во фронтенде только когда первая колонка реально повторяется —
 * см. groupTableRows() в app.js.
 * ------------------------------------------------------------------------ */

.data-table tbody tr.table-group-header,
.data-table tbody tr.table-group-header:nth-child(even) {
    /* Заголовок группы не должен попадать в «зебру»: иначе одни группы
       выглядят выделенными, другие нет, и структура читается хуже. */
    background: rgba(17, 65, 133, 0.06);
}

.data-table tbody tr.table-group-header:hover {
    background: rgba(17, 65, 133, 0.1);
}

.data-table td.table-group-title {
    padding: 10px 14px;
}

.table-group-toggle {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-weight: 600;
    color: var(--primary);
    cursor: pointer;
    text-align: left;
}

.table-group-toggle:hover {
    text-decoration: underline;
}

.table-group-count {
    color: var(--text-muted, #7a869a);
    font-size: 12px;
    margin-left: 6px;
}

.data-table td.table-group-total {
    font-weight: 600;
    color: var(--primary);
    white-space: nowrap;
}

.data-table tbody tr.table-group-row td:first-child {
    /* Значение группы уже написано в заголовке — в строках оно пустое,
       и эта колонка работает как отступ. */
    border-left: 2px solid var(--border);
}

/* ============================================================
 * SECTIONS - FILE CARD (файл, сгенерированный агентом в чате)
 * ============================================================ */

/* Компактная карточка: действия одного цвета, сохранение различается значком. */
.message.assistant-file {
    justify-content: flex-start;
    margin: var(--space-2) 0;
    animation: msgIn var(--motion) ease;
}

.file-card {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-1) var(--space-2);
    box-sizing: border-box;
    border-radius: var(--ui-radius);
    border: var(--hairline) solid var(--border);
    background: var(--bg-card);
    max-width: var(--chat-file-width);
    width: 100%;
}
.file-card-icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--icon-size);
    height: var(--icon-size);
    font-size: var(--icon-size);
    line-height: 1;
}
.file-type-icon { color: var(--primary); }
.file-type-icon::before {
    content: '';
    display: block;
    width: 100%;
    height: 100%;
    background: currentColor;
    mask: var(--file-type-icon) center / contain no-repeat;
}
.file-card-icon-img { width: 100%; height: 100%; object-fit: contain; }
.file-card-info { flex: 1; min-width: 0; }
.file-card-name {
    font-family: var(--font-sans);
    font-size: var(--font-label);
    font-weight: 500;
    line-height: 1.4;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.file-card-size {
    font-family: var(--font-sans);
    font-size: var(--font-caption);
    line-height: 1.4;
    color: var(--text-secondary);
}
.file-card-download-btn, .file-card-save-btn {
    flex-shrink: 0;
    width: var(--control-compact);
    height: var(--control-compact);
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-main);
    color: var(--primary);
    border: none;
    border-radius: var(--radius-pill);
    cursor: pointer;
    transition: background-color var(--motion);
}
.file-card-download-icon, .file-card-save-icon { display: none; }
.file-card-download-btn::before, .file-card-save-btn::before {
    content: '';
    flex-shrink: 0;
    width: var(--space-5);
    height: var(--space-5);
    background: currentColor;
    mask: var(--file-action-icon) center / contain no-repeat;
}
.file-card-download-btn { --file-action-icon: url('/static/images/icons/report-download.svg'); }
.file-card-save-btn { --file-action-icon: url('/static/images/icons/save.svg'); }
/* Та же геометрия галочки, что в выборе сотрудников, под кнопку 40 px. */
.file-card-save-btn.is-saved::before {
    mask: none;
    background: none;
    width: var(--space-2);
    height: var(--space-4);
    border-right: calc(var(--hairline) * 2) solid currentColor;
    border-bottom: calc(var(--hairline) * 2) solid currentColor;
    transform: translateY(-15%) rotate(45deg);
}
.file-card-download-btn:hover, .file-card-save-btn:hover { background: var(--bg-hover); }
.file-card-save-btn.is-saved { cursor: default; background: var(--bg-main); }
.file-card-save-btn:disabled { opacity: 1; }
.file-card-save-btn.is-locked { opacity: var(--chat-file-locked-opacity); cursor: not-allowed; }
@media (max-width: 768px) { .file-card { max-width: 100%; } }

/* ============================================================
 * SECTIONS - НАСТРОЙКИ (раздел "Настройки" — чекбокс "Только аналитик")
 * ============================================================ */

.settings-page {
    max-width: 640px;
    margin: 0 auto;
    padding: 24px 20px;
}

.settings-page-title {
    font-family: 'Jost', sans-serif;
    font-size: 20px;
    font-weight: 600;
    color: var(--text);
    margin: 0 0 20px;
}

.settings-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    padding: 16px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--bg-hover);
}

.settings-row-info {
    flex: 1;
    min-width: 0;
}

.settings-row-title {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: var(--text);
    margin-bottom: 4px;
}

.settings-row-desc {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    line-height: 1.5;
    color: var(--text-muted);
}

/* Переключатель — минимальный стилизованный checkbox без сторонних либ */
.settings-toggle {
    position: relative;
    display: inline-block;
    width: 42px;
    height: 24px;
    flex-shrink: 0;
    margin-top: 2px;
}

.settings-toggle input {
    opacity: 0;
    width: 0;
    height: 0;
}

/* Ползунок на время сохранения настройки (см. initSettingsUI() в app.js). */
.settings-toggle input:disabled + .settings-toggle-slider {
    cursor: not-allowed;
    opacity: 0.45;
}

.settings-toggle-slider {
    position: absolute;
    inset: 0;
    background: var(--border);
    border-radius: 999px;
    cursor: pointer;
    transition: background-color 0.15s;
}

.settings-toggle-slider::before {
    content: "";
    position: absolute;
    width: 18px;
    height: 18px;
    left: 3px;
    top: 3px;
    background: var(--white, #fff);
    border-radius: 50%;
    transition: transform 0.15s;
}

.settings-toggle input:checked + .settings-toggle-slider {
    background: var(--primary);
}

.settings-toggle input:checked + .settings-toggle-slider::before {
    transform: translateX(18px);
}

.settings-toggle input:disabled + .settings-toggle-slider {
    opacity: 0.6;
    cursor: default;
}

/* ============================================================
 * SECTIONS - ВСЕ ВОЗМОЖНОСТИ
 * ============================================================ */

.features-page {
    max-width: 900px;
    margin: 0 auto;
    padding: 24px 20px 40px;
}

.features-page-title {
    font-family: 'Jost', sans-serif;
    font-size: 24px;
    font-weight: 600;
    color: var(--text);
    margin: 0 0 10px;
}

.features-page-subtitle {
    font-family: 'Jost', sans-serif;
    font-size: 14px;
    line-height: 1.6;
    color: var(--text-muted);
    margin: 0 0 24px;
    max-width: 640px;
}

.features-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
}

@media (max-width: 768px) {
    .features-grid {
        grid-template-columns: 1fr;
    }
}

.feature-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
    text-align: left;
    padding: 18px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--bg-card);
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s;
    font-family: 'Jost', sans-serif;
}

.feature-card:hover {
    background: var(--bg-hover);
    border-color: var(--primary);
}

.feature-card-icon {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: var(--bg-hover);
    flex-shrink: 0;
}

.feature-card-icon img {
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.feature-card-title {
    font-size: 15px;
    font-weight: 600;
    color: var(--text);
}

.feature-card-desc {
    font-size: 13px;
    line-height: 1.5;
    color: var(--text-muted);
}

/* ============================================================
 * SECTIONS - ПОМОЩЬ
 * ============================================================ */

/* Стили раздела — web/static/help.css. */

/* ============================================================
 * SECTIONS - ACTION CARD (предложенное агентом изменение МойСклад,
 * ждёт "Подтвердить"/"Отклонить" — см. addPendingActionCard в app.js)
 * ============================================================ */

.message.assistant-action {
    justify-content: flex-start;
    margin: 12px 0;
    animation: msgIn 0.25s ease;
}

.action-card {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    background: var(--bg-hover);
    max-width: 380px;
}

.action-card-info {
    min-width: 0;
}

.action-card-info:empty {
    display: none;
}

.action-card-status {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    color: var(--text-muted);
}

.action-card-status.is-confirmed {
    color: var(--success);
}

.action-card-status.is-rejected,
.action-card-status.is-failed {
    color: var(--error);
}

.action-card-buttons {
    display: flex;
    gap: 8px;
}

.action-card-btn {
    font-family: 'Jost', sans-serif;
    font-size: 12px;
    font-weight: 500;
    border: none;
    border-radius: 8px;
    padding: 7px 14px;
    cursor: pointer;
    transition: transform 0.15s, opacity 0.15s;
}

.action-card-btn:hover {
    transform: translateY(-1px);
    opacity: 0.9;
}

.action-card-btn:active {
    transform: translateY(0);
}

.action-card-btn:disabled {
    opacity: 0.6;
    cursor: default;
    transform: none;
}

.action-card-confirm {
    background: var(--primary);
    color: var(--white, #fff);
}

.action-card-reject {
    background: transparent;
    color: var(--text-muted);
    border: 1px solid var(--border);
}

@media (max-width: 768px) {
    .action-card {
        max-width: 100%;
    }
}

/* ============================================================
 * SECTIONS - PROFILE
 * ============================================================ */

#profile-section {
    align-items: flex-start;
    justify-content: flex-start;
    padding: 0;
    overflow-y: auto;
    display: none !important;
    flex-direction: column;
}

#profile-section.active {
    display: flex !important;
}

.profile-container {
    width: 100%;
    max-width: 500px;
    animation: slideUp 0.3s ease;
    padding: 20px;
    margin-top: 0;
}

.profile-header {
    text-align: center;
    margin-bottom: 32px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--border);
}

.profile-avatar {
    font-size: 48px;
    margin-bottom: 12px;
    display: block;
}

.profile-header h2 {
    font-size: 26px;
    font-weight: 600;
    color: var(--primary);
    letter-spacing: -0.5px;
    margin: 0;
}

.profile-info {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 28px;
}

.info-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    font-size: 13px;
}

.info-row:not(:last-child) {
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.info-label {
    color: var(--text-secondary);
    font-weight: 500;
}

.info-value {
    color: var(--text);
    font-weight: 600;
    text-align: right;
    max-width: 50%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.profile-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 16px;
}

#profile-logout-btn {
    padding: 13px 20px;
    background: transparent;
    border: 1px solid var(--error-line);
    color: var(--error);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-weight: 500;
    font-size: 14px;
    transition: all 0.2s;
    font-family: 'Jost', sans-serif;
}

#profile-logout-btn:hover {
    background: var(--error-soft);
    border-color: var(--error-line-hover);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px var(--error-soft);
}

#profile-logout-btn:active {
    transform: translateY(0);
}

#profile-message {
    padding: 12px 14px;
    border-radius: var(--radius-sm);
    display: none;
    font-size: 13px;
    font-weight: 500;
}

#profile-message.success {
    display: block;
    background: var(--success-soft);
    color: var(--success);
    border: 1px solid var(--success-line);
}

#profile-message.error {
    display: block;
    background: var(--error-soft);
    color: var(--error);
    border: 1px solid var(--error-line);
}

@media (max-width: 768px) {
    .profile-container {
        max-width: 100%;
        padding: 70px 24px 20px;
    }
    
    .info-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }
    
    .info-value {
        text-align: left;
        max-width: 100%;
        white-space: normal;
    }
    
    .profile-header {
        margin-bottom: 24px;
        padding-bottom: 20px;
    }
    
    .profile-avatar {
        font-size: 40px;
        margin-bottom: 10px;
    }
    
    .profile-header h2 {
        font-size: 22px;
    }
}

/* ============================================================
 * SECTIONS - EMPTY PAGES
 * ============================================================ */

.empty-page-container {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 20px;
    height: 100%;
}

.empty-page-content {
    text-align: center;
    animation: slideUp 0.3s ease;
}

.empty-page-content h2 {
    font-size: 32px;
    font-weight: 600;
    color: var(--primary);
    margin: 0 0 16px 0;
    letter-spacing: -0.5px;
}

@media (max-width: 768px) {
    .empty-page-content h2 {
        font-size: 24px;
    }
}

.empty-page-content p {
    font-size: 18px;
    color: var(--text-secondary);
    margin: 0;
    font-weight: 400;
}

@media (max-width: 768px) {
    .empty-page-content p {
        font-size: 16px;
    }
}

#profile-section,
#reports-section,
#settings-section,
#all-features-section,
#help-section {
    font-family: 'Jost', sans-serif;
}

#help-section {
    padding: 0;
    display: none !important;
    flex-direction: column;
    height: 100%;
    overflow-y: auto;
}

#help-section.active {
    display: flex !important;
}

@media (max-width: 768px) {
    /* Отступы задаёт .help-root (help.css) — как у «Профиля». */
    #help-section {
        padding: 0;
    }
}

/* ============================================================
 * SECTIONS - REPORTS
 * ============================================================ */

#reports-section {
    display: none !important;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    padding: 0;
    overflow-y: auto;
}

#reports-section.active {
    display: flex !important;
}

.reports-container {
    width: 100%;
    max-width: 1100px;
    box-sizing: border-box;
    /* На широком экране колонка по центру (см. «DESKTOP ADAPTATIONS»), как в прототипе. */
    padding: 40px 32px;
    animation: slideUp 0.3s ease;
}

/* Заголовок — как у «Компании»: крупный, цвета бренда. */
.reports-title {
    margin: 0 0 var(--space-4, 16px);
    font-family: var(--font-sans, 'Jost', sans-serif);
    font-size: var(--font-page, 40px);
    font-weight: 500;
    line-height: 1.06;
    color: var(--primary);
}

/* Шапка по макету: название и шестерёнка в первой строке, подзаголовок и
   «+ Создать задачу» — во второй (TasksPage.renderTeamButton / renderCreate). */
.reports-top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin: 0 0 var(--space-2); }
.reports-top .reports-title { margin: 0; min-width: 0; overflow-wrap: anywhere; }
/* Подзаголовок и «+ Создать задачу» — одной строкой и на телефоне (макет). */
.reports-head { min-height: var(--control-compact); display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin: 0 0 var(--space-4); }
.reports-head:has(> .reports-sub:empty):has(> .reports-actions:empty) { display: none; }
.reports-sub { margin: 0; min-width: 0; font-size: var(--font-caption); color: var(--text-secondary); }
.reports-actions { flex-shrink: 0; margin-left: auto; }
.reports-actions:empty, .reports-actions[hidden] { display: none; }
.reports-actions .tasks-btn.is-primary {
    min-height: var(--control-compact);
    padding: var(--space-2) var(--space-3);
    font-size: var(--font-label);
}
@media (max-width: 768px) {
    .reports-actions .tasks-btn.is-primary { font-size: var(--font-caption); }
}
.reports-team {
    display: inline-flex; align-items: center; gap: var(--space-1);
    min-height: var(--control-compact); padding: 0 var(--space-2); box-sizing: border-box;
    border: 0; border-radius: var(--ui-radius); background: transparent;
    color: var(--text-secondary); font: inherit; font-size: var(--font-label); font-weight: 700; cursor: pointer;
}
.reports-team:hover { background: var(--bg-card); color: var(--primary); }
.reports-team:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.reports-team[hidden] { display: none; }

/* Ограниченная колонка: одинаковая ширина файлов и задач сотрудников. */
.report-list, .tasks-list, .tasks-controls,
#reports-meta:not(:empty), #reports-pagination:not(:empty) {
    width: 100%;
    max-width: var(--reports-list-width);
    box-sizing: border-box;
    margin-inline: auto;
}
.report-list { display: grid; gap: var(--space-2); margin-top: var(--space-4); }
.report-row {
    display: grid; grid-template-columns: var(--control-compact) minmax(0, 1fr) auto; align-items: start; gap: var(--space-2);
    padding: var(--space-3); box-sizing: border-box;
    background: var(--bg-card); border-radius: var(--ui-radius);
}
.report-row-icon {
    flex-shrink: 0; display: grid; place-items: center;
    width: var(--control-compact); height: var(--control-compact);
    border-radius: var(--ui-radius-small); background: var(--bg-main);
}
.report-row-icon.file-type-icon::before { width: var(--icon-size); height: var(--icon-size); }
.report-row-icon img { width: var(--icon-size); height: var(--icon-size); display: block; }
.report-row-body { flex: 1 1 auto; min-width: 0; }
.report-row-name {
    margin: 0; padding: 0; border: 0; background: none; cursor: pointer; text-align: left;
    font: inherit; font-size: var(--font-label); font-weight: 500; line-height: 1.3;
    color: var(--text); overflow-wrap: anywhere;
}
.report-row-name:hover { color: var(--primary); }
.report-row-meta { margin: 0; font-size: var(--font-caption); color: var(--text-secondary); }
.report-row-actions { display: flex; gap: var(--space-1); flex-shrink: 0; }
.report-row-actions button {
    display: grid; place-items: center; width: var(--control-compact); height: var(--control-compact);
    border: 0; border-radius: var(--radius-pill); background: var(--bg-main); color: var(--primary); cursor: pointer;
}
.report-row-actions button svg { width: var(--space-5); height: var(--space-5); }
.report-row-actions button:hover { background: var(--bg-hover); }
.report-row-actions button.is-danger:hover { color: var(--error); background: var(--error-soft); }
.report-comment { grid-column: 2 / -1; margin-top: 0; font-size: var(--font-caption); color: var(--text-secondary); }
.report-comment-preview { margin: 0; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; }
.report-comment.is-long:not(.is-expanded) .report-comment-preview { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.report-comment-controls { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.report-comment-controls button {
    padding: 0; min-height: var(--space-6); border: none; background: none;
    color: var(--primary); font: inherit; cursor: pointer; text-align: left;
}
.report-comment textarea {
    display: block; width: 100%; box-sizing: border-box; margin-top: var(--space-2);
    padding: var(--space-2); border: var(--hairline) solid var(--border); border-radius: var(--ui-radius-small);
    background: var(--bg-main); color: var(--text); font: inherit; resize: vertical;
}
.report-comment textarea[hidden], .report-comment-controls[hidden],
.report-comment-controls button[hidden], .report-comment[hidden], .report-comment-preview[hidden] { display: none; }
.report-comment-status { display: block; margin-top: var(--space-1); }
.report-comment-status:empty { display: none; }
.report-comment textarea:focus, .report-comment textarea:focus-visible { outline: none; box-shadow: none; }
.report-comment-status.is-error { color: var(--error); }
@media (max-width: 768px) {
    .reports-container { padding: var(--space-4, 16px); }
    .reports-title { font-size: 32px; }
    .report-row { grid-template-columns: var(--icon-size) minmax(0, 1fr) auto; }
    .report-row-icon { width: var(--icon-size); height: var(--control-compact); background: none; }
    .report-row-actions { gap: 0; }
    .report-comment { grid-column: 1 / -1; }
}

.report-comment button:focus-visible, .report-row-actions button:focus-visible,
.report-row-name:focus-visible { outline: none; box-shadow: var(--shadow-focus); }

/* Экран входа и мастер первой настройки живут в web/static/login.css —
   целиком, вместе с кнопками и карточками: с остальным приложением они
   не делят ни одного класса. */


/* Общие строки «название — значение» (раздел «Профиль»). */
.info-label {
    font-weight: 500;
    color: var(--text-secondary);
    font-size: 13px;
    white-space: nowrap;
}

.info-value {
    color: var(--text);
    font-size: 13px;
    text-align: right;
}


/* ============================================================
 * DESKTOP ADAPTATIONS (main-content на широких экранах)
 * На мобильном многие блоки чата/профиля жёстко ограничены
 * узкими шириной ~327px и прижаты влево — на десктопе это
 * оставляет огромное пустое пространство справа. Здесь только
 * расширяем/центрируем эти блоки для широких экранов, не трогая
 * мобильную вёрстку (медиа-запрос ниже срабатывает только от 769px).
 * ============================================================ */

@media (min-width: 769px) {

    /* --- Профиль и отчёты: центрируем вместо прижатия к левому краю --- */
    #profile-section,
    #reports-section {
        align-items: center;
    }

    .profile-container {
        max-width: 560px;
    }

    /* На всю ширину, как «Компания» (.co-root) — по макету дизайнера. */
    .reports-container {
        max-width: calc(var(--entry-max) + var(--space-3) * 4);
        padding: calc(var(--space-3) * 2);
    }

    /* --- Чат: стартовый экран (подсказки, разделитель, кнопка "Все возможности") --- */
    .divider-line {
        width: 420px;
    }

    .examples-section .help-grid,
    .btn-all-features {
        max-width: 420px;
    }

    /* --- Ширина колонки чата.
       ⚠️ ОДНО значение на сообщения и на поле ввода. Раньше их было два
       (900px и 640px), и поле ввода заметно не дотягивало до края таблиц в
       ответах агента — выглядело как съехавшая вёрстка. Таблицы «кто что
       купил» и остатки по складам широкие, поэтому колонка тоже шире. --- */
    .chat-container.full-width .input-wrapper,
    .input-wrapper {
        max-width: var(--chat-width);
        width: 100%;
        margin-left: auto;
        margin-right: auto;
    }

    /* ⚠️ Колонка сообщений НЕ ограничивается max-width, а растягивается на
       всю ширину с симметричными отступами. Причина — полоса прокрутки:
       она рисуется у правого края САМОГО прокручиваемого элемента, и при
       max-width висела бы вплотную к тексту, посреди экрана. Теперь
       прокручивается вся ширина, полоса уходит к правому краю окна, а
       содержимое всё так же стоит колонкой шириной --chat-width. */
    #chat-section .chat-messages,
    .chat-messages {
        max-width: none;
        width: 100%;
        /* ⚠️ Полоса прокрутки съедает ширину справа, и колонка сообщений
           уезжала бы влево на её половину относительно поля ввода (у него
           полосы нет). both-edges резервирует место с обеих сторон — центр
           колонки совпадает с центром поля ввода. Там, где свойство не
           поддерживается, вёрстка просто остаётся прежней. */
        scrollbar-gutter: stable both-edges;
        padding-left: max(32px, calc((100% - var(--chat-width)) / 2));
        padding-right: max(32px, calc((100% - var(--chat-width)) / 2));
    }

    #chat-section .chat-messages {
        padding-top: 24px;
        padding-bottom: 12px;
    }

    .chat-container.full-width .input-wrapper {
        padding: 8px 12px;
        margin-bottom: 16px;
    }

    /* --- Затемнение по краям прокрутки: содержимое растворяется в фоне,
       а не обрывается ровной линией у шапки и над полем ввода.
       ⚠️ Сделано маской самой колонки сообщений, а не полоской-градиентом
       поверх неё: полоску пришлось бы привязывать к высоте поля ввода, а
       оно растёт вместе с текстом — и затемнение уезжало бы. Маска всегда
       совпадает с краями области прокрутки. --- */
    .chat-messages {
        -webkit-mask-image: linear-gradient(
            to bottom,
            transparent 0,
            #000 36px,
            #000 calc(100% - 28px),
            transparent 100%
        );
        mask-image: linear-gradient(
            to bottom,
            transparent 0,
            #000 36px,
            #000 calc(100% - 28px),
            transparent 100%
        );
    }

    /* --- Пузыри сообщений: ограничиваем абсолютной шириной, чтобы не растягивались на весь экран --- */
    .message > :is(p, .msg) {
        max-width: min(72%, 760px);
    }

    .message.assistant > :is(p, .msg) {
        max-width: min(82%, 820px);
    }

    /* --- Логотип в шапке: на десктопе его роль уже выполняет логотип в
       боковой панели, в шапке он только занимает место. На мобильном
       сайдбар скрыт, поэтому там логотип остаётся. --- */
    .header-logo {
        display: none;
    }

    /* --- Шапка на десктопе почти пуста: логотипа нет, шестерёнки нет,
       бургер скрыт при открытом сайдбаре. Оставшиеся 60px высоты — просто
       пустая полоса над чатом, поэтому схлопываем её до высоты кнопки
       «назад». Разделительная линия под шапкой убрана там же. --- */
    .app-header {
        height: auto;
        min-height: 0;
        padding: 8px 30px 0;
    }

    .deviding-line {
        display: none;
    }
}
/* ============================================================
 * SIDEBAR - Кнопки мессенджеров (Telegram / Max)
 * ============================================================ */

/* Блок «Мобильная версия» стоит внизу боковой панели, сразу над
   разделительной полосой футера (см. .sidebar-footer в main.css). */
.sidebar-mobile {
    padding: 0 12px;
    margin-bottom: 12px;
}

.sidebar-mobile-title {
    margin-bottom: 8px;
    font-family: 'Jost', sans-serif;
    font-size: 11px;
    font-weight: 500;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: var(--text-muted);
}

.sidebar-messengers {
    display: flex;
    gap: 8px;
}

/* ⚠️ На телефоне блока нет вовсе: человек уже сидит с телефона, и
   предлагать ему «открыть мобильную версию» бессмысленно — кнопки только
   занимают место в и без того узкой панели. Скрываем весь блок вместе с
   заголовком, а не только кнопки, иначе остался бы висеть заголовок. */
@media (max-width: 768px) {
    .sidebar-mobile {
        display: none;
    }
}

.messenger-btn {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 6px;
    border-radius: 10px;
    border: 1px solid var(--border, #E5E9F0);
    background: var(--bg-card, #FFFFFF);
    color: var(--text-secondary, #5A6A7E);
    font-family: 'Jost', sans-serif;
    font-size: 13px;
    font-weight: 500;
    line-height: 1;
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.messenger-btn .messenger-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.messenger-btn .messenger-icon svg {
    display: block;
}

.messenger-btn .messenger-icon img {
    display: block;
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.messenger-btn:hover {
    background: var(--bg-hover, #F0F4FF);
    border-color: var(--border-active, #82B7DC);
    color: var(--primary, #3366A9);
}

body.dark-theme .messenger-btn {
    background: #1E2736;
    border-color: var(--border);
    color: var(--text-secondary);
}

body.dark-theme .messenger-btn:hover {
    background: var(--bg-hover);
    border-color: var(--primary);
    color: var(--primary);
}
/* ===== Сотрудники в мессенджерах (TeamPanel в app.js) =====
   Карточка #profile-team-card в разделе «Профиль»; видна только владельцу. */
.team-entry {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px 16px;
    font-family: 'Jost', sans-serif;
}
.team-entry-usage { font-size: 13px; color: var(--text-secondary, #5A6A7E); }
.team-entry-btn {
    padding: 7px 14px; border-radius: 8px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 13px; font-weight: 500;
    border: 1px solid var(--primary, #3366A9);
    background: none; color: var(--primary, #3366A9);
}
.team-entry-btn:hover { background: var(--primary, #3366A9); color: #FFFFFF; }
body.dark-theme .team-entry-btn:hover { color: #0F1419; }

/* Переключатель внутри карточки профиля: рамку и фон даёт сама .info-card. */
.info-card .settings-row { padding: 0; border: none; background: none; }

.team-overlay {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background: var(--scrim);
}
.team-modal {
    width: min(520px, 100%);
    max-height: calc(var(--app-height) - 32px);
    overflow-y: auto;
    padding: 20px;
    border-radius: 14px;
    background: var(--bg-main);
    color: var(--text);
    font-family: 'Jost', sans-serif;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
}
body.dark-theme .team-modal { background: var(--bg-main); }
.team-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.team-title { font-size: var(--space-5); line-height: var(--text-title-lh); font-weight: 600; }
.team-close {
    border: none; background: none; cursor: pointer;
    font-size: 22px; line-height: 1; color: var(--text-muted, #8A97A8);
}
.team-usage { font-size: 13px; color: var(--text-muted, #8A97A8); margin-bottom: 14px; }
.team-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.team-row {
    display: flex; flex-direction: column; gap: 6px;
    padding: 10px 12px; border-radius: 10px;
    border: 1px solid var(--border, #E5E9F0);
}
.team-name { font-size: 14px; font-weight: 500; overflow-wrap: anywhere; }
.team-owner {
    margin-left: 8px; padding: 1px 6px; border-radius: 6px;
    font-size: 11px; font-weight: 500;
    background: var(--bg-hover, #F0F4FF); color: var(--primary, #3366A9);
}
.team-links { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.team-chip { font-size: 12px; color: var(--text-secondary, #5A6A7E); }
.team-chip.is-disabled { color: #C0392B; }
.team-unlink {
    border: none; background: none; padding: 0; cursor: pointer;
    font-family: inherit; font-size: 12px; color: var(--text-muted, #8A97A8);
    text-decoration: underline;
}
.team-unlink:hover { color: #C0392B; }
.team-empty { font-size: 13px; color: var(--text-muted, #8A97A8); }
.team-invite {
    display: flex; flex-direction: column; gap: 8px;
    margin-bottom: 14px; padding: 12px; border-radius: 10px;
    background: var(--bg-hover, #F0F4FF);
}
body.dark-theme .team-invite { background: #232D3D; }
.team-invite-note { font-size: 12px; color: var(--text-secondary, #5A6A7E); }
.team-invite-line { display: flex; align-items: center; gap: 8px; }
.team-invite-label { width: 64px; flex-shrink: 0; font-size: 12px; font-weight: 500; }
.team-invite-url {
    flex: 1; min-width: 0; padding: 6px 8px; border-radius: 8px;
    border: 1px solid var(--border, #E5E9F0);
    background: var(--bg-card, #FFFFFF); color: inherit;
    font-family: ui-monospace, monospace; font-size: 12px;
}
body.dark-theme .team-invite-url { background: var(--bg-input); }
.team-copy, .team-invite-btn {
    padding: 7px 12px; border-radius: 8px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 13px; font-weight: 500;
    border: 1px solid var(--primary, #3366A9);
}
.team-copy { background: none; color: var(--primary, #3366A9); white-space: nowrap; }
.team-invite-btn { width: 100%; background: var(--primary, #3366A9); color: #FFFFFF; }
.team-invite-btn:disabled { opacity: 0.6; cursor: default; }
.team-error { margin-bottom: 12px; font-size: 13px; color: #C0392B; }

/* ===== Раздел «Компания» (CompanySection в app.js) ===== */
/* width: 100% обязательно: секция центрирует содержимое, и без него страница
   сжималась до ширины одной карточки — сетка складывала их в столбик. */
.company-page { width: 100%; max-width: 960px; }
.company-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; margin-bottom: 16px;
}
.company-head .settings-page-title { margin: 0; overflow-wrap: anywhere; }
.company-settings-btn {
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0; width: 36px; height: 36px; padding: 0;
    border-radius: 10px; border: 1px solid var(--border);
    background: var(--bg-card); color: var(--text-secondary);
    cursor: pointer; transition: color 0.2s ease, border-color 0.2s ease;
}
.company-settings-btn:hover { color: var(--primary); border-color: var(--primary); }
/* display: inline-flex выше перебил бы атрибут hidden (кнопка только владельцу). */
.company-settings-btn[hidden] { display: none; }
.company-settings-btn svg { transition: transform 0.3s ease; }
.company-settings-btn:hover svg { transform: rotate(45deg); }

.company-periods {
    display: inline-flex; gap: 4px; padding: 4px; margin-bottom: 16px;
    border-radius: 10px; border: 1px solid var(--border); background: var(--bg-card);
}
.company-period {
    padding: 6px 14px; border: none; border-radius: 7px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 13px; font-weight: 500;
    background: none; color: var(--text-secondary);
}
.company-period:hover { color: var(--text); }
.company-period.is-active { background: var(--primary); color: #FFFFFF; }
body.dark-theme .company-period.is-active { color: #0F1419; }

.company-dashboard {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px;
}
/* На десктопе — всегда один ряд из трёх карточек, на телефоне — столбик. */
@media (min-width: 769px) {
    .company-dashboard { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.company-card {
    display: flex; flex-direction: column; gap: 6px;
    padding: 18px; border-radius: var(--radius);
    border: 1px solid var(--border); background: var(--bg-card);
    font-family: 'Jost', sans-serif;
}
.company-card-label {
    font-size: 12px; font-weight: 600; letter-spacing: 0.3px;
    text-transform: uppercase; color: var(--primary);
}
.company-card-value {
    font-size: clamp(20px, 2vw, 26px); font-weight: 600; color: var(--text);
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums; margin-bottom: 4px;
}
.company-card-row {
    display: flex; justify-content: space-between; gap: 12px;
    font-size: 13px; color: var(--text-secondary);
}
.company-card-row-value { color: var(--text); font-weight: 500; font-variant-numeric: tabular-nums; }
.company-delta { margin-top: 6px; font-size: 12px; color: var(--text-muted); }
.company-delta.is-up { color: #2E9E5B; }
.company-delta.is-down { color: #C0392B; }
body.dark-theme .company-delta.is-up { color: #5CCB8A; }
body.dark-theme .company-delta.is-down { color: #F07A6A; }

/* Подпись системы, когда их несколько (МойСклад, 1С) — на всю ширину сетки. */
.company-source-title {
    grid-column: 1 / -1;
    margin-top: 6px;
    font-family: 'Jost', sans-serif; font-size: 14px; font-weight: 600;
    color: var(--text-secondary);
}

.company-state {
    grid-column: 1 / -1;
    display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
    padding: 18px; border-radius: var(--radius);
    border: 1px dashed var(--border); color: var(--text-muted);
    font-family: 'Jost', sans-serif; font-size: 13px;
}
.company-state.is-error { color: #C0392B; }
body.dark-theme .company-state.is-error { color: #F07A6A; }
.company-retry {
    padding: 5px 12px; border-radius: 8px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 12px;
    border: 1px solid var(--primary); background: none; color: var(--primary);
}

.company-settings-form { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.company-settings-label { font-size: 13px; font-weight: 500; }
.company-settings-input {
    padding: 9px 12px; border-radius: 8px;
    border: 1px solid var(--border); background: var(--bg-input, var(--bg-card));
    color: var(--text); font-family: 'Jost', sans-serif; font-size: 14px;
}
.company-settings-input:focus { outline: none; border-color: var(--primary); }
.company-settings-hint { font-size: 12px; color: var(--text-muted); margin-bottom: 6px; }

/* ===== Мобильный чат без шапки =====
   В чате на телефоне от шапки остаётся только бургер (он position: fixed,
   см. .burger-btn в main.css). Логотип и разделительная линия убраны, а
   сообщения растворяются в фоне у верхнего края, чтобы текст не лез под
   кнопку. Как и на десктопе, это маска самой ленты, а не полоска поверх.
   Класс .chat-active ставит switchSection в app.js. */
/* ⚠️ Заменено «Компактной шапкой» (shell.css, решение 17.10.2026): в чате на
   телефоне снова видно название чата — в шапке рядом с бургером, с тенью. */

/* ===== Раздел «Отчёты»: вкладки, лимит, мини-FAQ, страницы =====
   (ReportsManager.initTabs / renderMeta / renderPagination в app.js) */

/* У .report-list и др. свой display — без этого атрибут hidden
   бы не срабатывал. */
#reports-section [hidden] { display: none !important; }

.reports-tabs-row {
    padding-bottom: var(--space-2); margin-bottom: calc(var(--space-3) * 2);
    border-bottom: var(--hairline) solid var(--border);
}
.reports-tabs {
    display: inline-flex; gap: 0; padding: calc(var(--hairline) * 4);
    max-width: 100%; overflow-x: auto; scrollbar-width: none;
    border-radius: var(--ui-radius); background: var(--bg-card);
}
.reports-tabs::-webkit-scrollbar { display: none; }
.reports-tab {
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    height: calc(var(--space-3) * 3); padding: var(--space-2) var(--space-3);
    border: 0; border-radius: var(--ui-radius); cursor: pointer;
    font: inherit; font-size: var(--font-caption); font-weight: 400;
    white-space: nowrap; background: transparent; color: var(--text-secondary);
    transition: background var(--motion), color var(--motion);
}
.reports-tab:hover { color: var(--text); }
.reports-tab.is-active { background: var(--primary); color: var(--on-primary); }
body.dark-theme .reports-tab.is-active { color: var(--on-primary); }

.reports-meta {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px;
    margin-bottom: 12px;
    font-family: var(--font-sans); font-size: var(--font-caption); color: var(--text-secondary);
}
.reports-meta:empty { display: none; }
.reports-meta-note { color: var(--warning-text); font-weight: 500; }
body.dark-theme .reports-meta-note { color: var(--warning-text); }

.reports-faq {
    max-width: 640px; padding: 22px 24px;
    border-radius: 12px; border: 1px solid var(--border); background: var(--bg-card);
    font-family: 'Jost', sans-serif; color: var(--text-secondary); font-size: 14px; line-height: 1.5;
}
.reports-faq-title { font-size: 17px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.reports-faq-lead { margin: 0 0 14px; }
.reports-faq-steps {
    margin: 0 0 16px; padding: 0; list-style: none; counter-reset: faq-step;
    display: flex; flex-direction: column; gap: 12px;
}
.reports-faq-steps li {
    position: relative; padding-left: 38px; counter-increment: faq-step;
}
.reports-faq-steps li::before {
    content: counter(faq-step);
    position: absolute; left: 0; top: -1px;
    display: flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; border-radius: 50%;
    background: var(--bg-hover); color: var(--primary);
    font-size: 13px; font-weight: 600;
}
.reports-faq-steps strong { color: var(--text); font-weight: 500; }
.reports-faq-facts {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px;
    margin: 0 0 18px; padding-top: 14px; border-top: 1px solid var(--border);
}
.reports-faq-facts dt { font-size: 12px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.reports-faq-facts dd { margin: 0; font-size: 13px; }
.reports-faq-btn {
    padding: 9px 18px; border-radius: 9px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 14px; font-weight: 500;
    border: none; background: var(--primary); color: #FFFFFF;
}
body.dark-theme .reports-faq-btn { color: #0F1419; }
.reports-faq-btn:hover { opacity: 0.9; }
.reports-faq--soon .reports-faq-lead { margin: 0; }

.reports-empty-state {
    max-width: var(--reports-empty-width); margin: calc(var(--space-4) * 2) auto;
    color: var(--text-secondary); font-family: var(--font-sans); font-size: var(--font-base); line-height: var(--reports-line-height);
}
.reports-empty-icon { display: grid; place-items: center; width: var(--control-height); height: var(--control-height); margin-bottom: var(--space-4); }
.reports-empty-icon img { width: calc(var(--space-4) * 2); height: calc(var(--space-4) * 2); }
body.dark-theme .reports-empty-icon img { filter: invert(1); }
.reports-empty-title { margin: 0 0 var(--space-3); font-size: var(--reports-title-size); line-height: var(--text-section-lh); font-weight: 500; color: var(--text); }
.reports-empty-lead { margin: 0; }
.reports-empty-steps { padding-left: calc(var(--space-3) * 2); margin: calc(var(--space-3) * 2) 0; }
.reports-empty-steps li { padding-left: calc(var(--hairline) * 4); margin: var(--space-3) 0; font-size: var(--font-label); }
.reports-empty-btn {
    min-height: var(--control-height); padding: var(--space-3) var(--space-4); border: 0; border-radius: var(--ui-radius);
    background: var(--primary); color: var(--on-primary); font: inherit; font-size: var(--font-label); font-weight: 500; cursor: pointer;
}
.reports-empty-btn:hover { background: var(--primary-light); }
.reports-storage-note { margin: var(--space-4) 0; font-size: var(--font-caption); line-height: var(--reports-line-height); color: var(--text-secondary); }

.reports-pagination {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 6px; margin-top: 16px;
}
.reports-pagination:empty { display: none; }
.reports-page-btn {
    min-width: 34px; height: 34px; padding: 0 10px; border-radius: 8px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 14px; font-variant-numeric: tabular-nums;
    border: 1px solid var(--border); background: var(--bg-card); color: var(--text);
}
.reports-page-btn:hover:not(:disabled):not(.is-active) { border-color: var(--primary); color: var(--primary); }
.reports-page-btn.is-active { background: var(--primary); border-color: var(--primary); color: #FFFFFF; cursor: default; }
body.dark-theme .reports-page-btn.is-active { color: #0F1419; }
.reports-page-btn:disabled { opacity: 0.4; cursor: default; }
.reports-page-gap { padding: 0 2px; color: var(--text-muted); }

@media (max-width: 768px) {
    .reports-tabs { padding: calc(var(--hairline) * 2); }
    .reports-tab { height: calc(var(--space-4) * 2); padding: var(--space-1) calc(var(--space-2) - var(--hairline)); font-size: var(--text-overline); }
    .reports-faq { padding: 18px 16px; }
    .reports-empty-state { margin-block: calc(var(--space-3) * 2); }
}

/* ===== «Профиль» → Отчёты по расписанию (SchedulesPanel в app.js) ===== */
#profile-schedules { display: flex; flex-direction: column; gap: 10px; font-family: 'Jost', sans-serif; }
.schedule-empty { margin: 0; font-size: 13px; line-height: 1.5; color: var(--text-secondary); }
.schedule-row {
    display: flex; flex-direction: column; gap: 4px;
    padding: 12px 14px; border-radius: 10px;
    border: 1px solid var(--border); background: var(--bg-main);
}
.schedule-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 12px; }
.schedule-title { font-size: 14px; font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.schedule-when { font-size: 13px; color: var(--primary); font-weight: 500; }
.schedule-status, .schedule-last { font-size: 12px; color: var(--text-secondary); }
.schedule-status.is-muted { color: var(--text-muted); }
.schedule-status.is-info { color: var(--primary); }
.schedule-status.is-warn { color: #B45309; }
.schedule-last.is-error { color: #C0392B; }
body.dark-theme .schedule-status.is-warn { color: #F2B45A; }
body.dark-theme .schedule-last.is-error { color: #F07A6A; }
.schedule-prompt {
    margin-top: 2px; font-size: 12px; line-height: 1.45; color: var(--text-muted);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.schedule-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.schedule-btn {
    padding: 5px 11px; border-radius: 7px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 12px; font-weight: 500;
    border: 1px solid var(--border); background: var(--bg-card); color: var(--text);
}
.schedule-btn:hover:not(:disabled) { border-color: var(--primary); color: var(--primary); }
.schedule-btn.is-danger:hover:not(:disabled) { border-color: #C0392B; color: #C0392B; }
.schedule-btn:disabled { opacity: 0.45; cursor: default; }
.schedule-footer {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px;
    margin-top: 2px;
}
.schedule-usage { font-size: 12px; color: var(--text-muted); }
/* ===== «Подписка»: интеграции и смена тарифа (SubscriptionPanel в app.js) ===== */
.subscription-integrations {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--border);
}

.subscription-subtitle {
    margin-bottom: 8px;
    font-size: var(--text-small);
    color: var(--text-secondary);
}

.subscription-row {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: 10px 0;
}

.subscription-row + .subscription-row { border-top: 1px solid var(--border); }

.subscription-mark {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: var(--bg-primary-light);
    color: var(--primary);
    font-weight: 700;
    overflow: hidden;
}

.subscription-mark:has(img) { background: none; }
.subscription-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }

.subscription-text { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; }
.subscription-name { font-weight: 600; color: var(--text); }
.subscription-note { font-size: var(--text-small); color: var(--text-secondary); }
.subscription-empty { font-size: 14px; color: var(--text-secondary); }

/* Удаление — действие с последствиями для всего аккаунта, поэтому красное
   и только по подтверждению (см. SubscriptionPanel.disconnect). */
.subscription-remove {
    flex-shrink: 0;
    padding: 6px 12px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--error-line);
    background: none;
    color: var(--error);
    font: inherit;
    font-size: var(--text-small);
    font-weight: 500;
    cursor: pointer;
}

.subscription-remove:hover { background: var(--error-soft); }
.subscription-remove:disabled { opacity: 0.5; cursor: default; }

/* Под строкой 1С: промокод и кнопка в банк. */
.subscription-pay-box { display: flex; flex-direction: column; gap: 8px; padding: 4px 0 12px 44px; }
.subscription-pay-line { display: flex; gap: 8px; flex-wrap: wrap; }
.subscription-promo {
    flex: 1 1 180px; min-width: 0; padding: 7px 10px; border-radius: 8px;
    border: 1px solid var(--border); background: var(--bg-input); color: var(--text); font: inherit;
}
.subscription-note.is-error { color: var(--error); }

/* «Оплатить 1С» — действие, а не удаление: основной цвет, а не красный. */
.subscription-remove.subscription-pay { border-color: var(--primary); color: var(--primary); }
.subscription-remove.subscription-pay:hover { background: var(--bg-primary-light); }

.subscription-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: 14px;
}

.subscription-actions[hidden] { display: none; }

.schedule-add {
    padding: 7px 14px; border-radius: 8px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 13px; font-weight: 500;
    border: 1px solid var(--primary); background: none; color: var(--primary);
}
.schedule-add:hover { background: var(--primary); color: #FFFFFF; }
body.dark-theme .schedule-add:hover { color: #0F1419; }
.schedule-add[disabled] { opacity: 0.6; cursor: default; }

/* ⚠️ «Авторизован» — это ИНФОРМАЦИЯ рядом с кнопкой, а не сама кнопка.
   Кнопка остаётся рабочей: человеку, который уже вошёл, нужно не войти
   ещё раз, а перейти в кабинет. Значок «✓ Авторизован» — та же зелёная
   метка, что у статуса подписки выше (.badge-active). */
.cabinet-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.cabinet-actions .badge[hidden] { display: none; }

/* ===== «Профиль» → часовой пояс, «Отчёты», «Сигналы» (ProfileSettings в app.js) ===== */
.delivery-note { margin: -4px 0 12px; font-family: 'Jost', sans-serif; font-size: 12px; line-height: 1.5; color: var(--text-muted); }
.delivery-form { display: flex; flex-direction: column; gap: 8px; font-family: 'Jost', sans-serif; }
.delivery-row { display: flex; flex-wrap: wrap; gap: 10px 12px; }
.delivery-field { display: flex; flex-direction: column; gap: 4px; min-width: 96px; }
.delivery-form[data-kind="timezone"] .delivery-field { min-width: min(320px, 100%); }
.delivery-label { font-size: 11px; font-weight: 600; letter-spacing: 0.3px; text-transform: uppercase; color: var(--text-muted); }
.delivery-select {
    padding: 7px 10px; border-radius: 8px; cursor: pointer;
    border: 1px solid var(--border); background: var(--bg-input, var(--bg-card)); color: var(--text);
    font-family: 'Jost', sans-serif; font-size: 14px;
}
.delivery-select:focus { outline: none; border-color: var(--primary); }
.delivery-hint { font-size: 12px; color: var(--text-secondary); }
.delivery-status { min-height: 16px; font-size: 12px; color: var(--text-muted); }
.delivery-status.is-error { color: #C0392B; }
body.dark-theme .delivery-status.is-error { color: #F07A6A; }

/* ===== «Профиль»: шапка, вкладки, панели =====
   Разметка — index.html (#profile-section), вкладки — selectProfileTab в app.js. */
#profile-section [hidden] { display: none !important; }

@media (min-width: 769px) {
    .profile-container { max-width: 680px; }
}

.profile-hero {
    display: flex; align-items: center; gap: 16px;
    margin-bottom: 20px; font-family: 'Jost', sans-serif;
}
.profile-hero .profile-avatar {
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    width: 56px; height: 56px; margin: 0; border-radius: 50%;
    background: var(--bg-primary-light, var(--bg-hover)); color: var(--primary);
    font-size: 20px; font-weight: 600; letter-spacing: 0.5px;
}
.profile-hero-text { min-width: 0; }
.profile-hero-text h2 {
    margin: 0; font-size: 22px; font-weight: 600; line-height: 1.25;
    color: var(--text); overflow-wrap: anywhere;
}
.profile-hero-meta { margin-top: 2px; font-size: 13px; color: var(--text-secondary); }
.profile-hero-meta:empty { display: none; }

.profile-tabs {
    display: flex; gap: 4px; padding: 4px; margin-bottom: 16px;
    border-radius: 12px; border: 1px solid var(--border); background: var(--bg-card);
    overflow-x: auto; scrollbar-width: none;
}
.profile-tabs::-webkit-scrollbar { display: none; }
.profile-tab {
    flex: 1 0 auto; padding: 8px 14px; border: none; border-radius: 9px; cursor: pointer;
    font-family: 'Jost', sans-serif; font-size: 14px; font-weight: 500; white-space: nowrap;
    background: none; color: var(--text-secondary);
    transition: background 0.15s ease, color 0.15s ease;
}
.profile-tab:hover { color: var(--text); }
.profile-tab.is-active { background: var(--primary); color: #FFFFFF; }
body.dark-theme .profile-tab.is-active { color: #0F1419; }

.profile-pane { display: flex; flex-direction: column; gap: 14px; margin-bottom: 28px; }

/* Карточки внутри профиля не «подсвечиваются» при наведении: в них поля
   ввода и кнопки, и смена фона под курсором только отвлекает. */
#profile-section .info-card:hover { background: var(--bg-card); border-color: var(--border); }

.profile-subblock + .profile-subblock {
    margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border);
}
.profile-subtitle {
    display: flex; align-items: center; gap: 8px; margin: 0 0 4px;
    font-family: 'Jost', sans-serif; font-size: 14px; font-weight: 600; color: var(--text);
}
.profile-subblock .delivery-note { margin: 0 0 12px; }
.profile-soon {
    padding: 1px 7px; border-radius: 6px;
    font-size: 11px; font-weight: 500; text-transform: lowercase;
    background: var(--bg-hover); color: var(--text-secondary);
}

@media (max-width: 768px) {
    .profile-hero { gap: 12px; margin-bottom: 16px; }
    .profile-hero .profile-avatar { width: 48px; height: 48px; font-size: 18px; }
    .profile-hero-text h2 { font-size: 19px; }
    .profile-tab { flex: 0 0 auto; font-size: 13px; padding: 8px 12px; }
    /* На телефоне строки «Тариф / Статус» остаются в одну строку — они короткие. */
    #profile-section .info-row { flex-direction: row; align-items: center; }
    #profile-section .info-value { text-align: right; }
}

/* ===== «Компания» → сработавшие сигналы (CompanySection.renderSignals) ===== */
.company-signals { margin-top: 22px; font-family: 'Jost', sans-serif; }
.company-signals-title {
    margin: 0 0 10px; font-size: 13px; font-weight: 600;
    letter-spacing: 0.3px; text-transform: uppercase; color: var(--primary);
}
.company-signals-list { display: flex; flex-direction: column; gap: 10px; }
.company-signal {
    padding: 14px 16px; border-radius: var(--radius);
    border: 1px solid var(--border); background: var(--bg-card);
}
/* Новое срабатывание — с отметкой слева, чтобы его было видно среди прочих. */
.company-signal.is-new { border-left: 3px solid var(--primary); }
.company-signal-head {
    display: flex; flex-wrap: wrap; align-items: baseline;
    justify-content: space-between; gap: 2px 12px; margin-bottom: 4px;
}
.company-signal-title { font-size: 14px; font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.company-signal-at { font-size: 12px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.company-signal-text { margin: 0; font-size: 13px; line-height: 1.5; color: var(--text-secondary); }

/* Пример диалога в пустой карточке «Сигналы» («Профиль»). */
.schedule-example {
    margin-top: 10px; padding: 12px 14px; border-radius: 10px;
    background: var(--bg-main); border: 1px solid var(--border);
    display: flex; flex-direction: column; gap: 6px;
}
.schedule-example-title {
    font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
    text-transform: uppercase; color: var(--text-muted); margin-bottom: 2px;
}
.schedule-example-line { display: flex; gap: 8px; font-size: 12px; line-height: 1.45; }
.schedule-example-who { flex-shrink: 0; width: 68px; font-weight: 600; color: var(--primary); }
.schedule-example-what { color: var(--text-secondary); }

/* Подтверждения, предупреждения и сообщения используют поверхность остальных окон. */
.app-dialog-overlay {
    position: fixed; inset: 0; z-index: 6000;
    display: flex; align-items: center; justify-content: center;
    box-sizing: border-box; padding: var(--space-4); background: var(--scrim);
}
.app-dialog {
    box-sizing: border-box; width: min(var(--app-dialog-width), 100%);
    max-height: calc(100svh - var(--space-4) * 2); overflow-y: auto;
    padding: var(--space-5); border-radius: var(--ui-radius);
    background: var(--bg-main); color: var(--text);
    border: var(--hairline) solid var(--border);
    font-family: var(--font-sans); box-shadow: var(--shadow-card);
}
.app-dialog-title { font-size: var(--space-5); line-height: var(--text-title-lh); font-weight: 600; margin-bottom: var(--space-2); overflow-wrap: anywhere; }
.app-dialog-text { font-size: var(--font-label); line-height: var(--app-dialog-line-height); color: var(--text-secondary); white-space: pre-line; overflow-wrap: anywhere; }
.app-dialog-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-5); }
.app-dialog-btn {
    min-height: var(--control-height); padding: var(--space-2) var(--space-4); border-radius: var(--ui-radius); cursor: pointer;
    font: inherit; font-size: var(--font-label); font-weight: 500;
    border: var(--hairline) solid var(--border-dark); background: transparent; color: var(--text);
}
.app-dialog-btn:hover { background: var(--bg-hover); }
.app-dialog-btn.is-primary { border-color: transparent; background: var(--primary); color: var(--on-primary); }
.app-dialog-btn.is-primary:hover { background: var(--primary-light); }
.app-dialog-btn.is-danger { background: var(--error); color: var(--on-error); }
.app-dialog-btn.is-danger:hover { background: var(--error); }
.app-dialog-btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
/* ⚠️ Подтверждение поверх другого окна затемняет страницу один раз.
   Подложки остаются на месте: отмена возвращает исходное окно и его затемнение. */
body:has(> .app-dialog-overlay) > .pf-scrim,
body:has(> .app-dialog-overlay) > .team-overlay,
body:has(> .app-dialog-overlay) > .modal-overlay,
body > .app-dialog-overlay:has(~ .app-dialog-overlay) { background: transparent; }
@media (max-width: 768px) {
    .app-dialog:not(.tasks-dialog) { padding: var(--space-4); }
}

/* Карточка задач (core/bitrix_tasks.py): задача — блоком, поля — строками. */
.action-card.is-tasks { flex-direction: column; align-items: stretch; gap: var(--space-3, 12px); }
.task-card-list { display: flex; flex-direction: column; gap: var(--space-2, 8px); }
.task-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    border-radius: var(--radius, 10px);
    border: 1px solid var(--border);
    background: var(--bg-input, transparent);
}
.task-card-title { font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.task-card-row { display: flex; flex-wrap: wrap; gap: 4px 8px; font-size: var(--text-small, 13px); }
.task-card-label { color: var(--text-secondary); min-width: 150px; }
.task-card-value { color: var(--text); flex: 1 1 200px; overflow-wrap: anywhere; white-space: pre-line; }
.action-card.is-tasks { display: flex; max-width: 560px; }

/* Фильтры напротив вкладок, под основным действием раздела. */
.reports-tabs-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-2); width: 100%; margin-bottom: var(--space-4); }
.reports-tabs-row > .reports-tabs { margin-bottom: 0; }
.reports-header-filters { display: flex; justify-content: flex-end; margin-inline-start: auto; min-width: 0; }
.reports-header-filters[hidden] { display: none; }
.reports-header-filters .tasks-side { flex-wrap: wrap; justify-content: flex-end; }
.reports-filter { position: relative; }
.reports-filter-toggle { display: flex; align-items: center; gap: var(--space-2); list-style: none; color: var(--text-secondary); }
.reports-filter-toggle::-webkit-details-marker { display: none; }
.reports-filter-toggle svg { width: var(--icon-size); height: var(--icon-size); }
.reports-filter-toggle.is-active { color: var(--primary); background: var(--bg-primary-light); }
.reports-filter-panel { position: absolute; top: calc(100% + var(--space-2)); right: 0; z-index: var(--reports-filter-layer); width: var(--reports-filter-width); max-width: calc(100vw - var(--space-4) * 2); max-height: min(var(--reports-filter-height), var(--reports-filter-viewport)); overflow: auto; box-sizing: border-box; padding: var(--space-3); background: var(--bg-main); border: var(--hairline) solid var(--border); border-radius: var(--ui-radius); box-shadow: var(--shadow-card); }
.reports-filter-panel fieldset { min-width: 0; margin: 0 0 var(--space-3); padding: 0; border: 0; }
.reports-filter-panel legend { padding: 0; margin-bottom: var(--space-1); font-size: var(--font-caption); font-weight: 600; color: var(--text-secondary); }
.reports-filter-panel .tasks-check { margin: 0; min-height: var(--control-compact); box-sizing: border-box; }
.reports-filter-panel input { accent-color: var(--primary); }
.reports-filter-empty { margin: 0; padding: var(--space-4); color: var(--text-secondary); font-size: var(--font-label); }
.reports-header-filters .tasks-people-list, .reports-header-filters .tasks-sort-options { left: auto; right: 0; max-width: calc(100vw - var(--space-4) * 2); z-index: var(--reports-filter-layer); }
@media (max-width: 768px) { .reports-tabs-row > .reports-header-filters { flex-basis: 100%; } }

.reports-filter-panel fieldset:first-child .reports-filter-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.reports-filter-result { color: var(--text-secondary); }

/* Одинаковая прозрачная кнопка и компактное меню обеих вкладок. */
/* Общий слой полей задаёт подложку фокуса: для этой кнопки она прозрачна по решению владельца. */
.reports-filter-toggle, .reports-filter-toggle.is-active, .reports-filter-toggle:hover, .reports-filter-toggle:focus-visible { background: transparent !important; border-color: transparent; }
.reports-filter-panel .tasks-check { min-height: calc(var(--space-4) * 2); padding: var(--space-1); line-height: var(--text-title-lh); gap: var(--space-2); }
.reports-filter-panel .tasks-check span { min-width: 0; }
.reports-filter-panel fieldset:first-child .reports-filter-choices > :first-child { grid-column: 1 / -1; }
.reports-filter-panel .tasks-people-list { position: static; width: auto; max-height: none; padding: 0; border: 0; box-shadow: none; background: transparent; }
.tasks-pagination { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-4); }
@media (max-width: 768px) {
    .reports-filter-label { display: none; }
    .reports-filter-toggle { justify-content: center; width: var(--control-compact); height: var(--control-compact); padding: 0; box-sizing: border-box; }
}

/* Одинаковые круги с точкой: checkbox сохраняет множественный выбор. */
.reports-filter-panel input:is([type="checkbox"], [type="radio"]) { appearance: none; display: inline-grid; place-content: center; flex-shrink: 0; width: var(--reports-filter-choice-size); height: var(--reports-filter-choice-size); margin: 0; border: var(--hairline) solid var(--border-dark); border-radius: var(--radius-pill); background: transparent; cursor: pointer; }
.reports-filter-panel input:is([type="checkbox"], [type="radio"]):checked { border-color: var(--primary); }
.reports-filter-panel input:is([type="checkbox"], [type="radio"]):checked::after { content: ''; width: var(--space-2); height: var(--space-2); background: var(--primary); border-radius: var(--radius-pill); }
.tasks-filter-menu .reports-filter-panel:has(.tasks-filter-people) { display: flex; flex-direction: column; height: min(var(--reports-filter-height), calc(100dvh - var(--reports-filter-offset))); max-height: min(var(--reports-filter-height), calc(100dvh - var(--reports-filter-offset))); }
.tasks-filter-menu .reports-filter-panel > :not(.tasks-filter-people) { flex-shrink: 0; }
.tasks-filter-menu .tasks-filter-date { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.reports-filter-panel .tasks-filter-people { display: flex; flex-direction: column; min-height: var(--control-height); margin: var(--space-3) 0 0; flex: 1; }
.reports-filter-panel .tasks-people-search { flex-shrink: 0; box-sizing: border-box; width: 100%; min-width: 0; min-height: calc(var(--space-4) * 2); margin-bottom: var(--space-1); padding: var(--space-1) var(--space-2); border: 0; border-radius: var(--ui-radius-small); background: var(--bg-card); color: var(--text); font: inherit; font-size: var(--font-label); }
.reports-filter-panel .tasks-people-search::placeholder { color: var(--text-secondary); }
.reports-filter-panel .tasks-people-list { min-height: 0; overflow-y: auto; overscroll-behavior: contain; flex: 1; scrollbar-gutter: stable; }
.reports-filter-panel .tasks-check[hidden], .tasks-people-empty[hidden] { display: none; }
.tasks-people-empty { margin: var(--space-2); color: var(--text-secondary); font-size: var(--font-label); }
.tasks-filter-menu .tasks-filter-date .tasks-check { padding-inline: 0; gap: var(--space-1); }

/* Расписания — самостоятельная первая вкладка, существующие действия сохранены. */
.reports-scheduled { width: 100%; max-width: var(--reports-schedule-width); margin-inline: auto; }
.reports-scheduled #profile-schedules { display: grid; gap: var(--space-4); }
.reports-scheduled .schedule-row { border: 0; background: var(--bg-card); border-radius: var(--ui-radius); padding: var(--space-4); gap: var(--space-2); }
.reports-scheduled .schedule-head { gap: var(--space-2) var(--space-3); }
.reports-scheduled .schedule-title { font-size: var(--font-base); }
.reports-scheduled .schedule-when { font-size: var(--font-caption); }
.reports-scheduled .schedule-prompt { margin: 0; font-size: var(--font-label); line-height: var(--text-body-lh); color: var(--text-secondary); }
.reports-scheduled .schedule-actions { gap: var(--space-2); margin-top: var(--space-2); }
.reports-scheduled .schedule-btn { min-height: var(--control-compact); padding: var(--space-2) var(--space-3); border: 0; border-radius: var(--ui-radius); background: var(--bg-main); color: var(--primary); font: inherit; font-size: var(--font-caption); }
.reports-scheduled .schedule-btn.is-danger { color: var(--error); }
.reports-scheduled .schedule-footer { margin-top: var(--space-2); gap: var(--space-3); }
.reports-scheduled .schedule-empty { margin: var(--space-4) 0 0; font-size: var(--font-lead); color: var(--primary); }
.reports-schedule-window { margin-top: var(--space-5); color: var(--text-secondary); font-size: var(--font-label); }
.reports-schedule-window > summary { cursor: pointer; padding-block: var(--space-3); }
.reports-schedule-window .pf-card { margin-top: var(--space-2); }
.reports-schedule-actions { display: none; margin-left: auto; flex-shrink: 0; }
#reports-section:has(.reports-pane[data-pane="scheduled"]:not([hidden])) #reports-actions { display: none; }
#reports-section:has(.reports-pane[data-pane="scheduled"]:not([hidden])) .reports-schedule-actions { display: block; }
.reports-schedule-actions .tasks-btn { min-height: var(--control-compact); padding: var(--space-2) var(--space-3); border-radius: var(--ui-radius); font: inherit; font-size: var(--font-label); }
#profile-section #pf-notify { grid-row: auto; }
@media (max-width: 768px) {
    /* Все три названия видны: на телефоне компактный ряд без горизонтальной прокрутки. */
    #reports-section .reports-tabs { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); width: 100%; box-sizing: border-box; }
    #reports-section .reports-tab { white-space: normal; height: auto; min-height: var(--control-compact); padding: var(--space-1); line-height: var(--text-title-lh); }
    #reports-section .reports-tabs-row { flex-wrap: nowrap; }
    #reports-section .reports-tabs-row > .reports-tabs { flex: 1 1 auto; width: auto; }
    .reports-schedule-actions .tasks-btn { font-size: var(--font-caption); }
}

#reports-section:has(.reports-pane[data-pane="scheduled"]:not([hidden])) .reports-header-filters { display: none; }

.reports-scheduled .schedule-status.is-warn { color: var(--warning-text); }
.reports-scheduled .schedule-last.is-error { color: var(--error); }

#reports-section .reports-scheduled .schedule-empty-title { margin: var(--space-4) 0 0; color: var(--primary); font-size: var(--font-lead); font-weight: 600; }
#reports-section .reports-scheduled .schedule-empty { margin: 0; font-size: var(--font-label); color: var(--text-secondary); }

/* Кнопка добавления имеет ту же высоту, что создание задачи: не сдвигает ось вкладок. */
#reports-add-schedule { height: var(--control-compact); min-height: var(--control-compact); box-sizing: border-box; font-weight: 600; }
.reports-schedule-settings { display: none; }
#reports-section:has(.reports-pane[data-pane="scheduled"]:not([hidden])) #reports-team { display: none; }
#reports-section:has(.reports-pane[data-pane="scheduled"]:not([hidden])) .reports-schedule-settings { display: inline-flex; }
.reports-schedule-gear { width: var(--icon-size); height: var(--icon-size); background: currentColor; mask: url('/static/images/icons/gear.svg') center/contain no-repeat; -webkit-mask: url('/static/images/icons/gear.svg') center/contain no-repeat; }
.pf-modal .reports-schedule-window { margin: 0; }
.reports-scheduled .schedule-actions > .tasks-btn { min-height: var(--control-compact); box-sizing: border-box; }
.reports-scheduled .schedule-actions > .schedule-delete { margin-left: auto; width: var(--control-compact); height: var(--control-compact); padding: var(--space-2); border-radius: var(--radius-pill); color: var(--text-secondary); display: inline-flex; align-items: center; justify-content: center; }
.reports-scheduled .schedule-delete svg { width: var(--icon-size); height: var(--icon-size); }
.reports-scheduled .schedule-actions > .schedule-delete:hover { color: var(--error); }

/* Пустая служебная строка сотрудника сохраняет ось разделителя. */
#reports-section .reports-head { display: flex; }
/* Общая геометрия шапок: строка сигналов повторяет строку сотрудников.
   ⚠️ display:contents мобильной co-head иначе схлопывает отступ под sticky-шапкой. */
@media (max-width: 768px) {
    #company-root .co-head:not(.is-editing) > .co-top { margin-bottom: calc(var(--space-3) + var(--space-2)); }
    #company-root .co-head:not(.is-editing) > .co-signals { margin-top: 0; margin-bottom: var(--space-4); }
}
/* Фильтр занимает правый край той же строки, а не отдельный ряд над разделителем.
   Работает для обеих вкладок; не меняет состав и состояние фильтров. */
#reports-section .reports-tabs-row { display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; gap: var(--space-2); }
#reports-section .reports-tabs-row > .reports-tabs { min-width: 0; margin-bottom: 0; }
#reports-section .reports-tabs-row > .reports-header-filters { flex: 0 0 auto; margin-left: auto; }
@media (max-width: 768px) {
    #reports-section .reports-tabs-row { gap: var(--space-1); }
    #reports-section .reports-tabs-row > .reports-tabs { flex-shrink: 1; }
}


/* Ввод в общем окне приложения — без системного prompt браузера. */
.app-dialog-field { display: flex; flex-direction: column; gap: var(--space-2); font-size: var(--font-label); color: var(--text-secondary); }
.app-dialog-input { box-sizing: border-box; width: 100%; min-height: var(--control-height); padding: var(--space-2) var(--space-3); border: 0; border-radius: var(--ui-radius); background: var(--bg-card); color: var(--text); font: inherit; font-size: var(--font-base); outline: none; }
.app-dialog-error { margin-top: var(--space-2); color: var(--error); font-size: var(--font-label); }


/* Выбор вкладки Отчётов — company-segment-select из согласованного макета. */
.reports-tab.is-active { animation: reports-segment-select var(--section-select-duration) var(--section-motion-ease); }
@keyframes reports-segment-select {
    0% { transform: scale(var(--section-select-start)); background-color: var(--bg-card); }
    65% { transform: scale(var(--section-select-peak)); background-color: var(--primary); }
    100% { transform: scale(1); background-color: var(--primary); }
}
@media (prefers-reduced-motion: reduce) {
    .reports-tab { animation: none !important; transition: none; }
}


/* Цвет и фон корзины совпадают с сохранёнными отчётами. */
.reports-scheduled .schedule-actions > .schedule-delete { color: var(--primary); background: var(--bg-main); }
.reports-scheduled .schedule-actions > .schedule-delete:hover { color: var(--error); background: var(--error-soft); }
/* Пока стартовая история догружается, вместо пустого чата — честное состояние загрузки. */
.main-content.is-starting > :not(.app-start-state) { visibility: hidden; }
.app-start-state { position: absolute; inset: 0; display: grid; place-items: center; background: var(--bg-main); color: var(--text-secondary); font: inherit; font-size: var(--font-lead); }

.app-start-label { background: linear-gradient(100deg,var(--text-secondary),var(--text-secondary),var(--primary),var(--text-secondary),var(--text-secondary)); background-size: 200% 100%; background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: app-start-shimmer var(--app-start-cycle) linear infinite; }
@keyframes app-start-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .app-start-label { animation: none; background: none; -webkit-text-fill-color: currentColor; } }


/* Пояснение принадлежит той же колонке, что и сохранённые документы. */
.reports-storage-note { box-sizing: border-box; width: 100%; max-width: var(--pf-detail-width); margin: var(--space-4) auto 0; padding-top: var(--space-4); border-top: var(--hairline) solid var(--border); color: var(--text-secondary); font-size: var(--font-caption); }


/* Три вида отчётов используют одинаковые поверхности и наведение. */
.report-row, .reports-scheduled .schedule-row { background: var(--bg-sidebar); transition: background-color var(--motion); }
.report-row:hover, .reports-scheduled .schedule-row:hover { background: var(--bg-card); }
@media (prefers-reduced-motion: reduce) { .report-row, .reports-scheduled .schedule-row { transition: none; } }
