﻿/*
 * Цветовые схемы приложения.
 * Тема выбирается атрибутом data-theme на элементе <html>:
 *   dark | light | blue | pastel | midnight | forest
 *
 * Принцип: переменные --th-* задают семантические цвета, далее идут
 * переопределения hard-coded значений в app.css/personal-message.css
 * для всех заметных элементов (сайдбар, чаты, сообщения, ввод, настройки).
 */

/* ═══════════════════ DARK (по-умолчанию) ═══════════════════ */
:root,
:root[data-theme="dark"] {
    --th-bg-app:         #313338;
    --th-bg-rail:        #1e1f22;
    --th-bg-panel:       #2b2d31;
    --th-bg-panel-2:     #232428;
    --th-bg-input:       #1e1f22;
    --th-bg-input-2:     #383a40;
    --th-bg-modal:       #313338;
    --th-bg-chat-header: #313338;
    --th-bg-hover:       rgba(255, 255, 255, .06);
    --th-bg-active:      rgba(88, 101, 242, .25);

    --th-text:         #f2f3f5;
    --th-text-strong:  #ffffff;
    --th-text-muted:   #dcddde;
    --th-text-dim:     #b5bac1;
    --th-text-faded:   #949ba4;
    --th-text-time:    #72767d;

    --th-border:       #3f4147;
    --th-border-soft:  rgba(255, 255, 255, .06);
    --th-border-line:  #1e1f22;

    --th-accent:       #5865f2;
    --th-accent-hov:   #4752c4;
    --th-scrollbar:    #0f1012;

    --th-code-text:    #dcddde;
    --th-code-bg:      #1e1f22;

    /* Семантические (статусные) цвета — общие значения по умолчанию для всех тёмных тем.
       Светлые темы переопределяют их ниже для контраста. */
    --th-ok:           #3ba55d;
    --th-warn:         #faa61a;
    --th-danger:       #ed4245;

    /* Полупрозрачные overlay-тинты (ховеры/рамки/разделители). Заданы через color-mix
       от --th-text — поэтому автоматически адаптируются к любой теме: в тёмной это
       светлый тинт (≈ rgba(255,255,255,a)), в светлой — тёмный. Определены один раз
       в базовом :root и наследуются всеми темами. Имя --th-ov-NN ≈ непрозрачность NN%. */
    --th-ov-02: color-mix(in srgb, var(--th-text)  2%, transparent);
    --th-ov-03: color-mix(in srgb, var(--th-text)  3%, transparent);
    --th-ov-04: color-mix(in srgb, var(--th-text)  4%, transparent);
    --th-ov-05: color-mix(in srgb, var(--th-text)  5%, transparent);
    --th-ov-06: color-mix(in srgb, var(--th-text)  6%, transparent);
    --th-ov-07: color-mix(in srgb, var(--th-text)  7%, transparent);
    --th-ov-08: color-mix(in srgb, var(--th-text)  8%, transparent);
    --th-ov-09: color-mix(in srgb, var(--th-text)  9%, transparent);
    --th-ov-10: color-mix(in srgb, var(--th-text) 10%, transparent);
    --th-ov-12: color-mix(in srgb, var(--th-text) 12%, transparent);
    --th-ov-14: color-mix(in srgb, var(--th-text) 14%, transparent);
    --th-ov-15: color-mix(in srgb, var(--th-text) 15%, transparent);
    --th-ov-18: color-mix(in srgb, var(--th-text) 18%, transparent);
    --th-ov-20: color-mix(in srgb, var(--th-text) 20%, transparent);
}

/* ═══════════════════ WARM (тёплая бежевая) ═══════════════════ */
:root[data-theme="light"] {
    /* Лестница поверхностей с явным контрастом: канвас — тёплый беж, панели/карточки —
       белые (выделяются), инпуты — чуть темнее (утоплены). Раньше оттенки были слишком
       близки и блоки сливались с фоном. */
    --th-bg-app:         #e9e3d6;   /* канвас страницы */
    --th-bg-rail:        #4a3420;
    --th-bg-panel:       #ffffff;   /* карточки/панели — выделяются на канвасе */
    --th-bg-panel-2:     #f7f3ea;   /* приподнятые блоки */
    --th-bg-input:       #e1d9c8;   /* поля ввода — утоплены */
    --th-bg-input-2:     #d6ccb8;
    --th-bg-modal:       #ffffff;
    --th-bg-chat-header: #f7f3ea;
    --th-bg-hover:       rgba(200, 133, 26, .08);
    --th-bg-active:      rgba(200, 133, 26, .16);

    --th-text:         #2d1f0e;
    --th-text-strong:  #1a1208;
    --th-text-muted:   #3d2e1c;
    --th-text-dim:     #5e4a36;
    --th-text-faded:   #7c6450;
    --th-text-time:    #8c755e;

    --th-border:       #d4c9b5;
    --th-border-soft:  rgba(44, 31, 14, .08);
    --th-border-line:  #cfc4b0;

    --th-accent:       #c8851a;
    --th-accent-hov:   #a86d12;
    --th-scrollbar:    #c8b89a;

    --th-code-text:    #2d1f0e;
    --th-code-bg:      #e8e0cb;

    /* Статусные цвета чуть темнее — для читаемости на светлом фоне. */
    --th-ok:           #2e8b57;
    --th-warn:         #c87a12;
    --th-danger:       #d23a3d;
}

/* ═══════════════════ BLUE ═══════════════════ */
:root[data-theme="blue"] {
    --th-bg-app:         #1a2740;
    --th-bg-rail:        #11192a;
    --th-bg-panel:       #16223a;
    --th-bg-panel-2:     #14203a;
    --th-bg-input:       #0e1727;
    --th-bg-input-2:     #1f2c47;
    --th-bg-modal:       #1a2740;
    --th-bg-chat-header: #1a2740;
    --th-bg-hover:       rgba(255, 255, 255, .08);
    --th-bg-active:      rgba(78, 161, 255, .25);

    --th-text:         #e9eef7;
    --th-text-strong:  #ffffff;
    --th-text-muted:   #cfd9e8;
    --th-text-dim:     #9fb1cd;
    --th-text-faded:   #7e93b3;
    --th-text-time:    #6f84a4;

    --th-border:       #2a3f63;
    --th-border-soft:  rgba(255, 255, 255, .08);
    --th-border-line:  #0e1727;

    --th-accent:       #4ea1ff;
    --th-accent-hov:   #2f86eb;
    --th-scrollbar:    #0a1322;

    --th-code-text:    #cfd9e8;
    --th-code-bg:      #0e1727;
}

/* ═══════════════════ SAPPHIRE (сапфир + оружейный металл +
                          платина / персик + коричневый) ═══════ */
:root[data-theme="sapphire"] {
    --th-bg-app:         #2a3140;  /* gunmetal */
    --th-bg-rail:        #1c212c;  /* deeper gunmetal */
    --th-bg-panel:       #323a4d;  /* lighter gunmetal */
    --th-bg-panel-2:     #2e3645;
    --th-bg-input:       #1c212c;
    --th-bg-input-2:     #3a4257;
    --th-bg-modal:       #2a3140;
    --th-bg-chat-header: #2a3140;
    --th-bg-hover:       rgba(244, 161, 114, .10); /* peach hint */
    --th-bg-active:      rgba(244, 161, 114, .22); /* peach selection */

    --th-text:         #d8dde3;  /* platinum */
    --th-text-strong:  #ffffff;
    --th-text-muted:   #c0c5cd;
    --th-text-dim:     #9ca6b3;
    --th-text-faded:   #7a8597;
    --th-text-time:    #6b7585;

    --th-border:       #3e4658;
    --th-border-soft:  rgba(216, 221, 227, .08);
    --th-border-line:  #1c212c;

    --th-accent:       #f4a172;  /* peach orange */
    --th-accent-hov:   #e88451;
    --th-scrollbar:    #14181f;

    --th-code-text:    #c0c5cd;
    --th-code-bg:      #1c212c;
}

/* ═══════════════════ MIDNIGHT (почти чёрная, фиолетовый акцент) ═ */
:root[data-theme="midnight"] {
    --th-bg-app:         #0c0c14;
    --th-bg-rail:        #050509;
    --th-bg-panel:       #12121f;
    --th-bg-panel-2:     #0e0e1a;
    --th-bg-input:       #08080f;
    --th-bg-input-2:     #181828;
    --th-bg-modal:       #0c0c14;
    --th-bg-chat-header: #0c0c14;
    --th-bg-hover:       rgba(168, 132, 255, .08);
    --th-bg-active:      rgba(168, 132, 255, .22);

    --th-text:         #e7e2ff;
    --th-text-strong:  #ffffff;
    --th-text-muted:   #c8c2e8;
    --th-text-dim:     #9b95c0;
    --th-text-faded:   #6e6a90;
    --th-text-time:    #555176;

    --th-border:       #232140;
    --th-border-soft:  rgba(168, 132, 255, .08);
    --th-border-line:  #050509;

    --th-accent:       #a884ff;
    --th-accent-hov:   #8a64f0;
    --th-scrollbar:    #050509;

    --th-code-text:    #c8c2e8;
    --th-code-bg:      #08080f;
}

/* ═══════════════════ CUSTOM (своя тема — стартовые значения, дальше
                          переопределяются <style id="bimflow-custom-theme">) ═══ */
:root[data-theme="custom"] {
    --th-bg-app:         #313338;
    --th-bg-rail:        #1e1f22;
    --th-bg-panel:       #2b2d31;
    --th-bg-panel-2:     #232428;
    --th-bg-input:       #1e1f22;
    --th-bg-input-2:     #383a40;
    --th-bg-modal:       #313338;
    --th-bg-chat-header: #313338;
    --th-bg-hover:       rgba(255, 255, 255, .06);
    --th-bg-active:      rgba(88, 101, 242, .25);

    --th-text:         #f2f3f5;
    --th-text-strong:  #ffffff;
    --th-text-muted:   #dcddde;
    --th-text-dim:     #b5bac1;
    --th-text-faded:   #949ba4;
    --th-text-time:    #72767d;

    --th-border:       #3f4147;
    --th-border-soft:  rgba(255, 255, 255, .06);
    --th-border-line:  #1e1f22;

    --th-accent:       #5865f2;
    --th-accent-hov:   #4752c4;
    --th-scrollbar:    #0f1012;

    --th-code-text:    #dcddde;
    --th-code-bg:      #1e1f22;
}

/* ═══════════════════ MIST (светлая, чуть темнее обычной светлой) ═══════ */
:root[data-theme="mist"] {
    --th-bg-app:         #e9ebef;  /* light grey */
    --th-bg-rail:        #c8ccd2;  /* medium grey */
    --th-bg-panel:       #dadde2;
    --th-bg-panel-2:     #d2d5db;
    --th-bg-input:       #dee0e6;
    --th-bg-input-2:     #d0d3da;
    --th-bg-modal:       #eef0f3;
    --th-bg-chat-header: #e9ebef;
    --th-bg-hover:       rgba(15, 20, 30, .07);
    --th-bg-active:      rgba(88, 101, 242, .18);

    --th-text:         #1c1d22;
    --th-text-strong:  #060607;
    --th-text-muted:   #34363c;
    --th-text-dim:     #4f5258;
    --th-text-faded:   #6c7079;
    --th-text-time:    #80848e;

    --th-border:       #b6bac1;
    --th-border-soft:  rgba(15, 20, 30, .08);
    --th-border-line:  #c0c4ca;

    --th-accent:       #5865f2;
    --th-accent-hov:   #4752c4;
    --th-scrollbar:    #a4a8b0;

    --th-code-text:    #1c1d22;
    --th-code-bg:      #d2d5db;
}


/* ════════════════════════════════════════════════════════════
   Применение переменных к ключевым поверхностям.
   ════════════════════════════════════════════════════════════ */

[data-theme] body { background: var(--th-bg-app); color: var(--th-text); }

/* ── App shell ──────────────────────────────────────────────── */
[data-theme] .app-shell    { background: var(--th-bg-app); }
[data-theme] .app-content  { background: var(--th-bg-app); }

/* ── Левый рейл (серверы) ───────────────────────────────────── */
[data-theme] .app-rail              { background: var(--th-bg-rail); }
/* Иконки рейла в покое сливаются с панелью (тот же --th-bg-rail), чтобы
   выделялся только сам символ/инициалы; круглая «таблетка» проявляется
   на hover/active за счёт акцента ниже. */
[data-theme] .app-rail-item         { background: var(--th-bg-rail); color: var(--th-text); }
[data-theme] .app-rail-item--add,
[data-theme] .app-rail-item--bots   { background: var(--th-bg-rail); color: #3ba55d; }
[data-theme] .app-rail-item--add:hover,
[data-theme] .app-rail-item--bots:hover,
[data-theme] .app-rail-item--bots.app-rail-item--active { background: #3ba55d; color: #fff; border-radius: 16px; }
[data-theme] .app-rail-srv-gear     { background: var(--th-bg-panel); color: var(--th-text); }
[data-theme] .app-rail-srv-dropdown { background: var(--th-bg-panel); color: var(--th-text); }
[data-theme] .app-rail-srv-dd-item:hover { background: var(--th-accent); color: #fff; }

/* ── PM/Каналы: сайдбар со списком чатов ────────────────────── */
[data-theme] .pm-sidebar        { background: var(--th-bg-panel); }
[data-theme] .pm-sidebar-header { border-bottom-color: var(--th-border-line); }
[data-theme] .pm-sidebar-title  { color: var(--th-text-strong); }

[data-theme] .pm-friends-section-label { color: var(--th-text-faded); }
[data-theme] .pm-friends-section-label--toggle:hover { color: var(--th-text); }
[data-theme] .pm-friends-loading,
[data-theme] .pm-friends-empty   { color: var(--th-text-faded); }

[data-theme] .pm-friend-item       { color: var(--th-text-dim); }
[data-theme] .pm-friend-item:hover { color: var(--th-text); background: var(--th-bg-hover); }
[data-theme] .pm-friend-name       { color: inherit; }
[data-theme] .pm-friend-status     { color: var(--th-text-faded); }

/* ── PM/Каналы: основная область чата ───────────────────────── */
[data-theme] .pm-chat,
[data-theme] .pm-msgs,
[data-theme] .pm-msgs-loading,
[data-theme] .pm-msgs-empty,
[data-theme] .pm-placeholder,
[data-theme] .chat-empty-state,
[data-theme] .chat-loading,
[data-theme] .chat-no-msgs        { background: var(--th-bg-app); color: var(--th-text); }

[data-theme] .pm-chat-header      { background: var(--th-bg-chat-header, var(--th-bg-app)); border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-chat-header-name { color: var(--th-text-strong); }
[data-theme] .pm-chat-last-seen,
[data-theme] .pm-chat-typing      { color: var(--th-text-faded); }

/* Сообщения */
[data-theme] .pm-msg-author       { color: var(--th-text-strong); }
[data-theme] .pm-msg-author-other { color: var(--th-text-strong); }
/* Своё имя — зелёное во всех темах (тот же оттенок, что иконка "Мои боты"
   и зелёный аватар pm-avatar-green). Перебивает .pm-msg-author по specificity. */
[data-theme] .pm-msg-author--mine { color: #3ba55d; }
/* Имя бота — оранжевое (бэйдж BOT). Тоже override темы. */
[data-theme] .pm-msg-author--bot  { color: #f0a500; }
[data-theme] .pm-msg-time         { color: var(--th-text-time); }
[data-theme] .pm-msg-text         { color: var(--th-text-muted); }
[data-theme] .pm-msg-fwd          { color: var(--th-text-dim); }
[data-theme] .pm-msg-fwd b        { color: var(--th-text); }
[data-theme] .pm-msg-edited       { color: var(--th-text-time); }
[data-theme] .pm-msg-deleted      { color: var(--th-text-faded); }

/* Моноширинный текст в сообщениях (code-блок и inline `code`) */
[data-theme] .chat-code-block     { background: var(--th-code-bg); color: var(--th-code-text); }
[data-theme] .chat-code-block code { color: inherit; }
[data-theme] .chat-inline-code    { background: var(--th-code-bg); color: var(--th-code-text); }

/* Поле ввода в чате */
[data-theme] .pm-input-box        { background: var(--th-bg-input-2); }
[data-theme] .pm-input            { color: var(--th-text); caret-color: var(--th-text); }
[data-theme] .pm-input::placeholder { color: var(--th-text-faded); }
[data-theme] .pm-send-btn         { color: var(--th-text-dim); }
[data-theme] .pm-send-btn:hover:not(.pm-send-disabled) { color: var(--th-text); }

/* ── Файлы-вложения в чате ─────────────────────────────────── */
[data-theme] .msg-file-card       { background: var(--th-bg-panel); border-color: var(--th-border); }
[data-theme] .msg-file-name       { color: var(--th-text); }
[data-theme] .msg-file-size       { color: var(--th-text-faded); }
[data-theme] .msg-file-btn        { background: var(--th-bg-input-2); color: var(--th-text-dim); }
[data-theme] .msg-file-btn:hover  { background: var(--th-accent); color: #fff; }

/* Превью загружаемого файла */
[data-theme] .pm-file-pending-bar    { background: var(--th-bg-input); }
[data-theme] .pm-file-pending-name   { color: var(--th-text); }
[data-theme] .pm-file-pending-size,
[data-theme] .pm-file-pending-progress { color: var(--th-text-faded); }
[data-theme] .pm-file-upload-track   { background: var(--th-border); }

/* ── Модалки общего назначения ─────────────────────────────── */
[data-theme] .app-modal,
[data-theme] .app-create-srv-modal,
[data-theme] .app-srv-choice-box { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .app-modal-title    { color: var(--th-text-strong); }
[data-theme] .app-modal-hint     { color: var(--th-text-faded); }
[data-theme] .app-modal-label    { color: var(--th-text-dim); }
[data-theme] .app-modal-input    { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .app-modal-input::placeholder { color: var(--th-text-faded); }
[data-theme] .app-modal-btn:not(.app-modal-btn--primary):not(.app-modal-btn--danger) { background: var(--th-bg-input-2); color: var(--th-text); }
[data-theme] .app-modal-btn:not(.app-modal-btn--primary):not(.app-modal-btn--danger):hover { background: var(--th-border); }

/* Модал «Добавить сервер» (Создать / Вступить / Создать бота) */
[data-theme] .app-srv-choice-btn        { background: var(--th-bg-panel); }
[data-theme] .app-srv-choice-btn:hover  { background: var(--th-bg-panel-2); border-color: var(--th-accent); }
[data-theme] .app-srv-choice-label      { color: var(--th-text-strong); }
[data-theme] .app-srv-choice-hint       { color: var(--th-text-faded); }
[data-theme] .app-create-srv-img       { background: var(--th-bg-panel); border-color: var(--th-border); }

/* ── Settings modal (smod-*) ────────────────────────────────── */
[data-theme] .smod-backdrop      { background: rgba(0, 0, 0, .65); }
[data-theme] .smod-root          { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .smod-sidebar       { background: var(--th-bg-panel); color: var(--th-text); }
[data-theme] .smod-content       { background: var(--th-bg-modal); }

[data-theme] .smod-user-name        { color: var(--th-text-strong); }
[data-theme] .smod-username-display { color: var(--th-text-strong); }
[data-theme] .smod-section-title    { color: var(--th-text-strong); border-bottom-color: var(--th-border-soft); }
[data-theme] .smod-section-subtitle { color: var(--th-text-faded); }

[data-theme] .smod-search        { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .smod-search::placeholder { color: var(--th-text-faded); }
[data-theme] .smod-search-icon   { color: var(--th-text-faded); }

[data-theme] .smod-nav-item              { color: var(--th-text-dim); }
[data-theme] .smod-nav-item:hover        { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .smod-nav-item--active      { background: var(--th-bg-active); color: var(--th-text-strong); }
[data-theme] .smod-nav-section-label     { color: var(--th-text-faded); }
[data-theme] .smod-nav-sep               { background: var(--th-border-soft); }

[data-theme] .smod-field-group   { background: var(--th-bg-panel-2); }
[data-theme] .smod-label         { color: var(--th-text-faded); }
[data-theme] .smod-input,
[data-theme] .smod-select,
[data-theme] .smod-number-input  { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .smod-input::placeholder { color: var(--th-text-faded); }
[data-theme] .smod-input:disabled { color: var(--th-text-faded); }

[data-theme] .smod-toggle-row    { border-bottom-color: var(--th-border-soft); }
[data-theme] .smod-toggle-label  { color: var(--th-text); }
[data-theme] .smod-toggle-desc   { color: var(--th-text-faded); }

/* Звуки */
[data-theme] .smod-sound-row              { color: var(--th-text-dim); }
[data-theme] .smod-sound-row:hover        { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .smod-sound-row--active      { background: var(--th-bg-active); color: var(--th-text-strong); }
[data-theme] .smod-sound-preview          { color: var(--th-text-dim); }
[data-theme] .smod-sound-preview:hover    { background: var(--th-bg-hover); color: var(--th-text-strong); }

/* Сессии (устройства) */
[data-theme] .smod-sessions-loading { color: var(--th-text-faded); }
[data-theme] .smod-session-row      { background: var(--th-bg-input); border-color: var(--th-border-soft); }
[data-theme] .smod-session-row:hover { background: var(--th-bg-hover); }
[data-theme] .smod-session-icon     { color: var(--th-text-faded); }
[data-theme] .smod-session-name     { color: var(--th-text-strong); }
[data-theme] .smod-session-meta     { color: var(--th-text-faded); }
[data-theme] .smod-section-desc     { color: var(--th-text-faded); }
[data-theme] .smod-qr-hint          { color: var(--th-text-faded); }

/* Заблокированные */
[data-theme] .smod-blocked-row     { border-bottom-color: var(--th-border-soft); }
[data-theme] .smod-blocked-name    { color: var(--th-text); }

/* Кнопки в настройках */
[data-theme] .smod-btn:not(.smod-btn--primary):not(.smod-btn--danger)        { background: var(--th-bg-hover); color: var(--th-text); }
[data-theme] .smod-btn:not(.smod-btn--primary):not(.smod-btn--danger):hover  { background: var(--th-border); }
[data-theme] .smod-ghost-btn       { color: var(--th-text-dim); border-color: var(--th-border); }
[data-theme] .smod-ghost-btn:hover { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .smod-field-label     { color: var(--th-text-dim); }
[data-theme] .smod-userid          { color: var(--th-text-dim); background: var(--th-bg-input); }
[data-theme] .smod-close-btn       { color: var(--th-text-dim); background: var(--th-bg-hover); }
[data-theme] .smod-close-btn:hover { color: var(--th-text-strong); background: var(--th-border); }


/* ════════════════════════════════════════════════════════════
   ProfileMenu / UserStatusPopup
   ════════════════════════════════════════════════════════════ */

[data-theme] .usp-popup        { background: var(--th-bg-rail); border-color: var(--th-border); }
[data-theme] .usp-card         { background: var(--th-bg-panel); }
[data-theme] .usp-card-name    { color: var(--th-text-strong); }
[data-theme] .usp-sep          { background: var(--th-border-soft); }
[data-theme] .usp-item         { color: var(--th-text-muted); }
[data-theme] .usp-item:hover   { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .usp-submenu      { background: var(--th-bg-panel); border-top-color: var(--th-border-soft); }
[data-theme] .usp-subitem      { color: var(--th-text-dim); }
[data-theme] .usp-subitem:hover, [data-theme] .usp-subitem--active { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .usp-subitem-desc { color: var(--th-text-faded); }


/* ════════════════════════════════════════════════════════════
   UserContextMenu (правый клик)
   ════════════════════════════════════════════════════════════ */

[data-theme] .ctx-menu          { background: var(--th-bg-rail); border-color: var(--th-border); color: var(--th-text); }
[data-theme] .ctx-section-label { color: var(--th-text-faded); }
[data-theme] .ctx-divider       { background: var(--th-border-soft); }
[data-theme] .ctx-item          { color: var(--th-text-muted); }
[data-theme] .ctx-item--secret  { color: var(--th-text-dim); }


/* ════════════════════════════════════════════════════════════
   UserProfileModal
   ════════════════════════════════════════════════════════════ */

[data-theme] .user-profile-card    { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .user-profile-name    { color: var(--th-text-strong); }
[data-theme] .user-profile-about   { color: var(--th-text-muted); background: var(--th-bg-input); }
[data-theme] .user-profile-meta    { color: var(--th-text-faded); }
[data-theme] .user-profile-loading { color: var(--th-text-dim); }
[data-theme] .user-profile-close   { color: var(--th-text-dim); }


/* ════════════════════════════════════════════════════════════
   Bots
   ════════════════════════════════════════════════════════════ */

[data-theme] .bots-page              { background: var(--th-bg-app); color: var(--th-text); }
[data-theme] .bots-title             { color: var(--th-text-strong); }
[data-theme] .bots-back-btn          { color: var(--th-text-dim); }
[data-theme] .bots-back-btn:hover    { color: var(--th-text-strong); background: var(--th-bg-hover); }
[data-theme] .bots-card              { background: var(--th-bg-panel); }
[data-theme] .bots-card-name         { color: var(--th-text-strong); }
[data-theme] .bots-card-meta         { color: var(--th-text-dim); }
[data-theme] .bots-card-date         { color: var(--th-text-faded); }
[data-theme] .bots-card-about        { color: var(--th-text-muted); }
[data-theme] .bots-loading,
[data-theme] .bots-empty             { color: var(--th-text-faded); }
[data-theme] .bots-limit-badge       { color: var(--th-text-dim); background: var(--th-bg-input); border-color: var(--th-border); }
[data-theme] .bots-id-badge          { color: var(--th-text-faded); background: var(--th-bg-input); }
[data-theme] .bots-form-input        { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .bots-token-box         { background: var(--th-bg-panel); color: var(--th-text-muted); }
[data-theme] .bots-token-title       { color: var(--th-text-strong); }
[data-theme] .bots-token-value       { background: var(--th-bg-input); }


/* ════════════════════════════════════════════════════════════
   Голосовые / аудио в чате
   ════════════════════════════════════════════════════════════ */

[data-theme] .voice-player        { background: var(--th-bg-input); border-color: var(--th-border-soft); }
[data-theme] .voice-progress-wrap { background: var(--th-border); }
[data-theme] .voice-time          { color: var(--th-text-faded); }
[data-theme] .voice-preview-bar   { background: var(--th-bg-input); }
[data-theme] .voice-preview-label { color: var(--th-text-dim); }
[data-theme] .voice-rec-bar       { background: var(--th-bg-input); }
[data-theme] .voice-rec-timer     { color: var(--th-text); }


/* ════════════════════════════════════════════════════════════
   @-Mentions
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-mention-dropdown { background: var(--th-bg-panel); border-color: var(--th-border-soft); }
[data-theme] .pm-mention-item     { color: var(--th-text-muted); }
[data-theme] .pm-mention-item:hover,
[data-theme] .pm-mention-item--active { background: var(--th-bg-hover); }

[data-theme="light"]    .pm-mention      { background: rgba(200, 133, 26, .18); color: #8a5c0d; }
[data-theme="light"]    .pm-mention--me  { background: rgba(200, 133, 26, .28); color: #7a4e0a; }
[data-theme="light"]    .pm-mention--all { background: rgba(237, 66, 69, .15); color: #c93134; }
[data-theme="mist"]     .pm-mention      { background: rgba(88, 101, 242, .15); color: #4752c4; }
[data-theme="mist"]     .pm-mention--me  { background: rgba(244, 144, 12, .18); color: #b97300; }
[data-theme="mist"]     .pm-mention--all { background: rgba(237, 66, 69, .15); color: #c93134; }
[data-theme="blue"]     .pm-mention      { background: rgba(78, 161, 255, .25); color: #ffffff; }
[data-theme="sapphire"] .pm-mention      { background: rgba(86, 142, 220, .28); color: #b9d4ff; } /* sapphire blue */
[data-theme="sapphire"] .pm-mention--me  { background: rgba(244, 161, 114, .25); color: #ffd0b3; } /* peach */
[data-theme="midnight"] .pm-mention      { background: rgba(168, 132, 255, .25); color: #d4c2ff; }


/* ════════════════════════════════════════════════════════════
   Серверы — правая панель участников
   ════════════════════════════════════════════════════════════ */

[data-theme] .srv-members-panel        { background: var(--th-bg-panel); }
[data-theme] .srv-members-header       { color: var(--th-text-faded); }
[data-theme] .srv-member-item          { color: var(--th-text); }
[data-theme] .srv-member-item:hover    { background: var(--th-bg-hover); }
[data-theme] .srv-member-name          { color: var(--th-text-muted); }

/* Контекст участника */
[data-theme] .srv-member-ctx           { background: var(--th-bg-rail); border-color: var(--th-border); }
[data-theme] .srv-member-ctx-item      { color: var(--th-text-muted); }


/* ════════════════════════════════════════════════════════════
   CreateMeetingDialog
   ════════════════════════════════════════════════════════════ */

[data-theme] .meeting-dialog                  { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .meeting-dialog-header           { color: var(--th-text-strong); border-bottom-color: var(--th-border-soft); }
[data-theme] .meeting-dialog-section-title    { color: var(--th-text-dim); }
[data-theme] .meeting-dialog-search,
[data-theme] .meeting-dialog-link input       { background: var(--th-bg-input); border-color: var(--th-border); color: var(--th-text); }
[data-theme] .meeting-dialog-friend           { color: var(--th-text); }
[data-theme] .meeting-dialog-friend:hover     { background: var(--th-bg-hover); }
[data-theme] .meeting-dialog-friend-name      { color: var(--th-text); }
[data-theme] .meeting-dialog-loading,
[data-theme] .meeting-dialog-empty            { color: var(--th-text-faded); }
[data-theme] .meeting-dialog-hint             { color: var(--th-text-dim); }
[data-theme] .meeting-dialog-actions          { border-top-color: var(--th-border-soft); }


/* ════════════════════════════════════════════════════════════
   MeetingRoom
   ════════════════════════════════════════════════════════════ */

[data-theme] .meeting-room                  { background: var(--th-bg-rail); color: var(--th-text); }
[data-theme] .meeting-room-header           { background: var(--th-bg-panel); }
[data-theme] .meeting-room-title            { color: var(--th-text-strong); }
[data-theme] .meeting-room-id               { color: var(--th-text-faded); }
[data-theme] .meeting-room-count            { color: var(--th-text-faded); }
[data-theme] .meeting-room-status           { color: var(--th-text-faded); }
[data-theme] .meeting-tile                  { background: var(--th-bg-panel); color: var(--th-text); }
[data-theme] .meeting-tile-name             { color: var(--th-text); }
[data-theme] .meeting-chat-panel            { background: var(--th-bg-panel); border-left-color: var(--th-border-line); }
[data-theme] .meeting-chat-header           { color: var(--th-text-strong); border-bottom-color: var(--th-border-line); }
[data-theme] .meeting-chat-empty            { color: var(--th-text-faded); }
[data-theme] .meeting-chat-msg              { background: var(--th-bg-input); color: var(--th-text); }
[data-theme] .meeting-chat-msg-head         { color: var(--th-text-faded); }
[data-theme] .meeting-chat-input-row        { background: var(--th-bg-panel); border-top-color: var(--th-border-line); }
[data-theme] .meeting-chat-input            { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .meeting-chat-close-btn,
[data-theme] .meeting-chat-toggle-btn       { color: var(--th-text-dim); }
[data-theme] .meeting-toast                 { background: var(--th-bg-panel); color: var(--th-text); }
[data-theme] .meeting-join                  { background: var(--th-bg-rail); }
[data-theme] .meeting-join-card             { background: var(--th-bg-panel); color: var(--th-text); }


/* ════════════════════════════════════════════════════════════
   Опросы / голосования (poll)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-poll                  { background: var(--th-bg-input); border-color: var(--th-border); color: var(--th-text); }
[data-theme] .pm-poll-header           { color: var(--th-text-dim); }
[data-theme] .pm-poll-badge            { color: var(--th-text-dim); }
[data-theme] .pm-poll-progress         { color: var(--th-text-faded); }
[data-theme] .pm-poll-question         { color: var(--th-text); }
[data-theme] .pm-poll-desc             { color: var(--th-text-dim); }
[data-theme] .pm-poll-option:hover     { background: var(--th-bg-hover); }
[data-theme] .pm-poll-option-text      { color: var(--th-text); }
[data-theme] .pm-poll-option-pct       { color: var(--th-text-dim); }
[data-theme] .pm-poll-option-count     { color: var(--th-text-dim); }
[data-theme] .pm-poll-bar-track        { background: var(--th-border); }

/* Создание опроса */
[data-theme] .pm-poll-modal            { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .pm-poll-modal-title      { color: var(--th-text-strong); }
[data-theme] .pm-poll-field-label      { color: var(--th-text-dim); }
[data-theme] .pm-poll-input            { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .pm-poll-option-del       { color: var(--th-text-dim); border-color: var(--th-border); }
[data-theme] .pm-poll-toggle           { color: var(--th-text); }
[data-theme] .pm-poll-cancel           { color: var(--th-text-dim); border-color: var(--th-border); }
[data-theme] .pm-poll-cancel:hover:not(:disabled) { background: var(--th-bg-hover); }

/* Мини-плашка опроса в шапке закреплённых */
[data-theme] .pm-poll-pinned           { background: var(--th-bg-input); border-color: var(--th-border); color: var(--th-text); }
[data-theme] .pm-poll-pinned-label     { color: var(--th-text-dim); }
[data-theme] .pm-poll-pinned-question  { color: var(--th-text-strong); }


/* ════════════════════════════════════════════════════════════
   TODO-списки
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-todo                  { background: var(--th-bg-input); border-color: var(--th-border); }
[data-theme] .pm-todo-header           { color: var(--th-text-dim); }
[data-theme] .pm-todo-progress         { color: var(--th-text-faded); }
[data-theme] .pm-todo-item             { color: var(--th-text); }
[data-theme] .pm-todo-item:hover       { background: var(--th-bg-hover); }
[data-theme] .pm-todo-item--done .pm-todo-text { color: var(--th-text-faded); }
[data-theme] .pm-todo-count            { color: var(--th-text-dim); }


/* ════════════════════════════════════════════════════════════
   Закреплённые сообщения (pin button + panel)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-pin-header-btn        { color: var(--th-text-dim); }
[data-theme] .pm-pin-header-btn:hover,
[data-theme] .pm-pin-header-btn--active { color: var(--th-text-strong); background: var(--th-bg-hover); }
[data-theme] .pm-pin-header-btn--empty,
[data-theme] .pm-pin-header-btn--empty:hover { color: var(--th-text-faded); background: transparent; }

[data-theme] .pm-pinned-panel          { background: var(--th-bg-panel); border-color: var(--th-border-line); }
[data-theme] .pm-pinned-panel-header   { color: var(--th-text-dim); border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-pinned-panel-close    { color: var(--th-text-faded); }
[data-theme] .pm-pinned-panel-close:hover { color: var(--th-text); }
[data-theme] .pm-pinned-item           { border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-pinned-item-author    { color: var(--th-text-strong); }
[data-theme] .pm-pinned-item-time      { color: var(--th-text-faded); }
[data-theme] .pm-pinned-item-content   { color: var(--th-text-dim); }
[data-theme] .pm-pinned-item-unpin     { color: var(--th-text-faded); }
[data-theme] .pm-pinned-jump-btn       { border-color: var(--th-border); color: var(--th-accent); }
[data-theme] .pm-jump-overlay          { background: var(--th-bg-panel); border-color: var(--th-border); color: var(--th-text-dim); }


/* ════════════════════════════════════════════════════════════
   Иконки-кнопки в шапке чата (закреп / опрос / поиск / инфо)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-hdr-icon-btn          { color: var(--th-text-faded); }
[data-theme] .pm-hdr-icon-btn:hover    { color: var(--th-text-strong); background: var(--th-bg-hover); }
[data-theme] .pm-hdr-icon-btn--active  { color: var(--th-text-strong); background: var(--th-bg-active); }


/* ════════════════════════════════════════════════════════════
   Панель поиска по сообщениям (контейнер)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-search-panel          { background: var(--th-bg-panel); border-bottom-color: var(--th-border-line); }


/* ════════════════════════════════════════════════════════════
   Информация о чате (info-panel: фото / аудио / файлы / ссылки)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-info-panel            { background: var(--th-bg-panel); border-bottom-color: var(--th-border-line); }
[data-theme] .pm-info-panel-header     { border-bottom-color: var(--th-border-line); }
[data-theme] .pm-info-panel-title      { color: var(--th-text-strong); }
[data-theme] .pm-info-tabs             { border-bottom-color: var(--th-border-line); }
[data-theme] .pm-info-tab              { color: var(--th-text-dim); }
[data-theme] .pm-info-tab:hover        { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme] .pm-info-tab--active      { background: var(--th-bg-input); color: var(--th-text-strong); }
[data-theme] .pm-info-empty            { color: var(--th-text-dim); }
[data-theme] .pm-info-image            { background: var(--th-bg-input); }
[data-theme] .pm-info-row              { color: var(--th-text); border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-info-row-date         { color: var(--th-text-faded); }

/* Нативный <audio controls> в светлых темах рисуется бледно-серым и сливается
   с панелью того же оттенка. Кладём вокруг него рамку и контрастный фон —
   управление становится видимым. В тёмных темах аудио уже выделяется само. */
[data-theme="light"] .pm-info-row audio,
[data-theme="mist"]  .pm-info-row audio {
    width: 100%;
    border: 1px solid var(--th-border);
    border-radius: 24px;
    background: var(--th-bg-input);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}


/* ════════════════════════════════════════════════════════════
   Локальный поиск в списке чатов («Поиск по имени...» в PM-сайдбаре)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-local-search-bar    { background: var(--th-bg-input); border-color: var(--th-border); }
[data-theme] .pm-local-search-icon   { color: var(--th-text-faded); }
[data-theme] .pm-local-search-input  { color: var(--th-text); }
[data-theme] .pm-local-search-input::placeholder { color: var(--th-text-faded); }
[data-theme] .pm-local-search-clear  { color: var(--th-text-faded); }
[data-theme] .pm-local-search-clear:hover { color: var(--th-text); background: var(--th-bg-hover); }


/* ════════════════════════════════════════════════════════════
   Запросы в друзья (секция в сайдбаре PM)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-requests-section    { border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-requests-label      { color: var(--th-text-faded); }
[data-theme] .pm-request-item:hover  { background: var(--th-bg-hover); }
[data-theme] .pm-request-name        { color: var(--th-text); }


/* ════════════════════════════════════════════════════════════
   Модалка «Найти пользователя» (Add Friend)
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-modal-box           { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .pm-add-friend-modal    { background: var(--th-bg-modal); color: var(--th-text); }
[data-theme] .pm-add-friend-title    { color: var(--th-text-strong); }
[data-theme] .pm-add-friend-hint     { color: var(--th-text-faded); }
[data-theme] .pm-search-input        { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .pm-search-input::placeholder { color: var(--th-text-faded); }
[data-theme] .pm-search-btn:disabled { background: var(--th-border); color: var(--th-text-faded); }
[data-theme] .pm-search-result-name  { color: var(--th-text); }
[data-theme] .pm-start-chat-btn      { color: var(--th-text); border-color: var(--th-border); }
[data-theme] .pm-start-chat-btn:hover { background: var(--th-bg-hover); border-color: var(--th-text-faded); }


/* ════════════════════════════════════════════════════════════
   Поиск по сообщениям
   ════════════════════════════════════════════════════════════ */

[data-theme] .pm-search-panel-header   { border-bottom-color: var(--th-border-line); }
[data-theme] .pm-search-input          { background: var(--th-bg-input); color: var(--th-text); border-color: var(--th-border); }
[data-theme] .pm-search-clear-btn      { color: var(--th-text-faded); }
[data-theme] .pm-search-clear-btn:hover { color: var(--th-text); }
[data-theme] .pm-search-empty          { color: var(--th-text-faded); }
[data-theme] .pm-search-result-item    { border-bottom-color: var(--th-border-soft); }
[data-theme] .pm-search-result-item:hover { background: var(--th-bg-hover); }
[data-theme] .pm-search-result-author  { color: var(--th-text); }
[data-theme] .pm-search-result-time    { color: var(--th-text-faded); }


/* ════════════════════════════════════════════════════════════
   Скроллбар
   ════════════════════════════════════════════════════════════ */
[data-theme] *                              { scrollbar-color: var(--th-scrollbar) transparent; }
[data-theme] *::-webkit-scrollbar-thumb     { background-color: var(--th-scrollbar); }
[data-theme] *::-webkit-scrollbar-thumb:hover { background-color: var(--th-scrollbar); }


/* ════════════════════════════════════════════════════════════
   Точечные доводки тёплой темы
   ════════════════════════════════════════════════════════════ */

/* Рейл — тёплый коричневый, иконки на нём (фон сливается с самим рейлом) */
[data-theme="light"] .app-rail-item         { background: var(--th-bg-rail); color: #e0cdb8; }
[data-theme="light"] .app-rail-item:hover   { background: var(--th-accent); color: #fff; border-radius: 16px; }
[data-theme="light"] .app-rail-item--active { background: var(--th-accent); color: #fff; border-radius: 16px; }
[data-theme="light"] .app-rail-item--add,
[data-theme="light"] .app-rail-item--bots   { background: var(--th-bg-rail); color: #3ba55d; }
[data-theme="light"] .app-rail-sep          { background: rgba(255, 255, 255, .15); }
[data-theme="light"] .app-rail-srv-gear     { background: #5c4030; color: #e0cdb8; }
[data-theme="light"] .app-rail-srv-dropdown { background: #5c4030; color: #f0e0cc; }

[data-theme="light"] .app-modal-backdrop    { background: rgba(0, 0, 0, .4); }

/* Попап профиля и контекстное меню — переопределяем bg-rail на светлый */
[data-theme="light"] .usp-popup             { background: #fdf9f4; border-color: var(--th-border); }
[data-theme="light"] .usp-card              { background: #f0ebe0; }
[data-theme="light"] .usp-card-name         { color: var(--th-text-strong); }
[data-theme="light"] .usp-item              { color: var(--th-text-muted); }
[data-theme="light"] .usp-item:hover        { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme="light"] .usp-submenu           { background: #f0ebe0; border-top-color: var(--th-border-soft); }
[data-theme="light"] .usp-subitem           { color: var(--th-text-dim); }
[data-theme="light"] .usp-subitem:hover,
[data-theme="light"] .usp-subitem--active   { background: var(--th-bg-hover); color: var(--th-text-strong); }

[data-theme="light"] .ctx-menu              { background: #fdf9f4; border-color: var(--th-border); color: var(--th-text); }
[data-theme="light"] .ctx-item              { color: var(--th-text-muted); }
[data-theme="light"] .ctx-item:hover        { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme="light"] .ctx-section-label     { color: var(--th-text-faded); }
[data-theme="light"] .ctx-divider           { background: var(--th-border-soft); }

/* Контекстное меню в чате (правый клик на сообщении) */
[data-theme="light"] .pm-msg-ctx          { background: #fdf9f4; border: 1px solid var(--th-border); box-shadow: 0 8px 24px rgba(80,50,10,.18); }
[data-theme="light"] .pm-msg-ctx-item     { color: var(--th-text-muted); }
[data-theme="light"] .pm-msg-ctx-item:hover { background: var(--th-bg-hover); color: var(--th-text-strong); }
[data-theme="light"] .pm-msg-ctx-sep      { background: var(--th-border-soft); }

/* Стикер-пикер */
[data-theme="light"] .pm-sticker-picker    { background: #fdf9f4; border-color: var(--th-border); }
[data-theme="light"] .pm-sticker-cats      { border-bottom-color: var(--th-border-soft); }
[data-theme="light"] .pm-sticker-cat-btn:hover  { background: var(--th-bg-hover); }
[data-theme="light"] .pm-sticker-cat-btn--active { background: rgba(200,133,26,.14); }
[data-theme="light"] .pm-sticker-btn:hover { background: var(--th-bg-hover); }

/* Панель действий над сообщением (цитата/реакция/закреп…) */
[data-theme="light"] .pm-msg-actions        { background: #f0ebe0; border-color: var(--th-border); box-shadow: 0 2px 8px rgba(80,50,10,.15); }
[data-theme="light"] .pm-msg-action-btn     { color: #6b5540; }
[data-theme="light"] .pm-msg-action-btn:hover { color: #1a1208; background: rgba(200,133,26,.12); }

/* Кнопка прокрутки вниз */
[data-theme="light"] .chat-scroll-btn       { background: #f0ebe0; border-color: var(--th-border); color: #6b5540; box-shadow: 0 4px 12px rgba(80,50,10,.18); }
[data-theme="light"] .chat-scroll-btn:hover { background: var(--th-accent); border-color: var(--th-accent); color: #fff; }

/* Активный чат в сайдбаре — тёплый акцент с левой полоской */
[data-theme="light"] .pm-friend-active      { background: rgba(200, 133, 26, .14) !important; color: #1a1208 !important; border-left: 3px solid #c8851a !important; }

/* Переключатель */
[data-theme="light"] .smod-sw-track         { background: #c8b89a; }
[data-theme="light"] .smod-sw-track::after  { background: #fff; }

/* Поле ввода в чате */
[data-theme="light"] .pm-input-box          { border: 1px solid var(--th-border); background: #f0ece3; }

/* Пересланные сообщения */
[data-theme="light"] .pm-msg-fwd            { background: rgba(200, 133, 26, .09); color: #3d2e1c; border-left-color: #c8851a; }
[data-theme="light"] .pm-msg-fwd b          { color: #1a1208; }

/* Скроллбар */
[data-theme="light"] *                              { scrollbar-color: #c8b89a transparent; }
[data-theme="light"] *::-webkit-scrollbar-thumb     { background-color: #c8b89a; }

/* Дымка — серый светлый, те же доводки */
[data-theme="mist"] .app-rail-item        { background: var(--th-bg-rail); color: #060607; }
[data-theme="mist"] .app-rail-item:hover  { background: var(--th-accent); color: #fff; }
[data-theme="mist"] .app-rail-item--active { background: var(--th-accent); color: #fff; }
[data-theme="mist"] .app-rail-sep         { background: rgba(0, 0, 0, .12); }
[data-theme="mist"] .app-modal-backdrop   { background: rgba(0, 0, 0, .4); }
[data-theme="mist"] .pm-friend-active     { background: rgba(88, 101, 242, .18) !important; color: #060607 !important; }
[data-theme="mist"] .smod-sw-track        { background: #a4a8b0; }
[data-theme="mist"] .smod-sw-track::after { background: #fff; }
[data-theme="mist"] .pm-input-box         { border: 1px solid var(--th-border); }
[data-theme="mist"] .pm-msg-fwd           { background: rgba(88, 101, 242, .1); color: #2e3338; }
[data-theme="mist"] .pm-msg-fwd b         { color: #060607; }


/* ════════════════════════════════════════════════════════════
   Профиль пользователя (/profile/{id})
   ════════════════════════════════════════════════════════════ */

[data-theme] .prof-page              { background: var(--th-bg-app); }
[data-theme] .prof-loading-spinner   { border-color: var(--th-border); border-top-color: var(--th-accent); }
[data-theme] .prof-error             { color: var(--th-text-faded); }

[data-theme] .prof-header            { background: var(--th-bg-panel); }
[data-theme] .prof-banner            { background-image: linear-gradient(135deg, var(--th-accent) 0%, var(--th-accent-hov) 100%); }
[data-theme] .prof-av-wrap           { border-color: var(--th-bg-panel); background: var(--th-accent); }
[data-theme] .prof-username          { color: var(--th-text-strong); }
[data-theme] .prof-reg-date          { color: var(--th-text-faded); }
[data-theme] .prof-last-seen         { color: var(--th-text-faded); }
[data-theme] .prof-activity          { color: var(--th-text-dim); }
[data-theme] .prof-activity strong   { color: var(--th-text); }
[data-theme] .prof-msg-btn           { background: var(--th-accent); color: #fff; }
[data-theme] .prof-msg-btn:hover     { background: var(--th-accent-hov); }

[data-theme] .prof-card              { background: var(--th-bg-panel); }
[data-theme] .prof-card-title        { color: var(--th-text-faded); }
[data-theme] .prof-card-text         { color: var(--th-text-muted); }

[data-theme] .prof-server-item       { color: var(--th-text-muted); }
[data-theme] .prof-server-item:hover { background: var(--th-bg-hover); }
[data-theme] .prof-server-icon       { background: var(--th-accent); color: #fff; }

[data-theme] .prof-wall-disabled,
[data-theme] .prof-wall-empty        { color: var(--th-text-time); }
[data-theme] .prof-wall-input-wrap   { background: var(--th-bg-input); }
[data-theme] .prof-wall-input-av     { background: var(--th-accent); color: #fff; }
[data-theme] .prof-wall-textarea     { background: var(--th-bg-input-2); border-color: var(--th-border); color: var(--th-text); }
[data-theme] .prof-wall-textarea:focus { border-color: var(--th-accent); }
[data-theme] .prof-wall-counter      { color: var(--th-text-time); }
[data-theme] .prof-wall-send-btn     { background: var(--th-accent); color: #fff; }
[data-theme] .prof-wall-send-btn:hover:not(:disabled) { background: var(--th-accent-hov); }

[data-theme] .prof-wall-post         { background: var(--th-bg-panel-2); }
[data-theme] .prof-wall-post-av      { background: var(--th-accent); color: #fff; }
[data-theme] .prof-wall-post-author  { color: var(--th-text-strong); }
[data-theme] .prof-wall-post-author:hover { color: var(--th-accent); }
[data-theme] .prof-wall-post-date    { color: var(--th-text-time); }
[data-theme] .prof-wall-post-content { color: var(--th-text-muted); }
[data-theme] .prof-wall-del-btn      { color: var(--th-text-time); }

/* Карточка handle на странице профиля */
[data-theme] .prof-handle-card       { background: var(--th-bg-panel); }
[data-theme] .prof-handle-label      { color: var(--th-text-faded); }
[data-theme] .prof-handle-url        { color: var(--th-text-muted); }
[data-theme] .prof-handle-copy-btn,
[data-theme] .prof-handle-edit-icon  { color: var(--th-text-time); }
[data-theme] .prof-handle-copy-btn:hover,
[data-theme] .prof-handle-edit-icon:hover { color: var(--th-text-muted); background: var(--th-bg-hover); }
[data-theme] .prof-handle-hint       { color: var(--th-text-time); }
[data-theme] .prof-handle-base-url   { color: var(--th-text-time); }
[data-theme] .prof-handle-input      { background: var(--th-bg-input); border-color: var(--th-border); color: var(--th-text-muted); }
[data-theme] .prof-handle-input:focus { border-color: var(--th-accent); }
[data-theme] .prof-handle-cancel-btn { color: var(--th-text-time); }
[data-theme] .prof-handle-badge      { color: var(--th-text-time); }
[data-theme] .prof-handle-link       { color: var(--th-accent); }
[data-theme] .prof-handle-set-btn,
[data-theme] .prof-handle-save-btn   { background: var(--th-accent); }


/* ════════════════════════════════════════════════════════════
   Theme picker — мини-макет UI приложения
   (рейл с тремя точками + список с активной строкой + чат с
   входящим/исходящим бабблом и инпутом снизу)
   ════════════════════════════════════════════════════════════ */

.smod-theme-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 8px;
}
.smod-theme-card {
    position: relative;
    flex: 0 0 168px;
    border: 2px solid transparent;
    border-radius: 10px;
    padding: 10px;
    cursor: pointer;
    background: transparent;
    transition: border-color .15s, transform .15s;
    text-align: left;
    color: inherit;
    font: inherit;
}
.smod-theme-card:hover { transform: translateY(-1px); }
.smod-theme-card--active { border-color: #5865f2; }

.smod-tp {
    position: relative;
    height: 96px;
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    margin-bottom: 8px;
    border: 1px solid rgba(127, 127, 127, .2);
    background: var(--tp-app);
    color: var(--tp-text);
}
.smod-tp-rail {
    width: 18px;
    background: var(--tp-rail);
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 6px 0;
    gap: 4px;
    flex-shrink: 0;
}
.smod-tp-rail-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--tp-rail-dot, rgba(127, 127, 127, .35));
}
.smod-tp-rail-dot--accent {
    background: var(--tp-accent);
}
.smod-tp-side {
    width: 38px;
    background: var(--tp-panel);
    padding: 6px 5px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}
.smod-tp-side-row {
    height: 6px;
    border-radius: 3px;
    background: var(--tp-line, rgba(127, 127, 127, .25));
}
.smod-tp-side-row--active {
    background: var(--tp-accent);
    opacity: .85;
}
.smod-tp-main {
    flex: 1;
    background: var(--tp-app);
    padding: 7px 7px 6px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.smod-tp-bubble {
    height: 8px;
    border-radius: 4px;
    background: var(--tp-bubble-in);
    width: 80%;
}
.smod-tp-bubble--out {
    align-self: flex-end;
    background: var(--tp-accent);
    width: 60%;
    opacity: .9;
}
.smod-tp-bubble--short { width: 45%; }
.smod-tp-input {
    margin-top: auto;
    height: 10px;
    border-radius: 4px;
    background: var(--tp-input);
    border: 1px solid var(--tp-border, rgba(127, 127, 127, .25));
}

/* Цвета мини-макета для каждой темы */
.smod-tp--dark {
    --tp-rail: #1e1f22;
    --tp-panel: #2b2d31;
    --tp-app: #313338;
    --tp-text: #f2f3f5;
    --tp-accent: #5865f2;
    --tp-bubble-in: #383a40;
    --tp-input: #1e1f22;
    --tp-line: rgba(255,255,255,.12);
    --tp-rail-dot: rgba(255,255,255,.25);
}
.smod-tp--light {
    --tp-rail: #4a3420;
    --tp-panel: #ede8dc;
    --tp-app: #faf7f0;
    --tp-text: #2d1f0e;
    --tp-accent: #c8851a;
    --tp-bubble-in: #ffffff;
    --tp-input: #e8e2d5;
    --tp-line: rgba(44,31,14,.18);
    --tp-rail-dot: rgba(255,255,255,.3);
    --tp-border: rgba(44,31,14,.14);
}
.smod-tp--blue {
    --tp-rail: #11192a;
    --tp-panel: #16223a;
    --tp-app: #1a2740;
    --tp-text: #e9eef7;
    --tp-accent: #4ea1ff;
    --tp-bubble-in: #1f2c47;
    --tp-input: #0e1727;
    --tp-line: rgba(255,255,255,.15);
    --tp-rail-dot: rgba(255,255,255,.3);
}
.smod-tp--sapphire {
    --tp-rail: #1c212c;
    --tp-panel: #323a4d;
    --tp-app: #2a3140;
    --tp-text: #d8dde3;
    --tp-accent: #f4a172;          /* peach accent */
    --tp-bubble-in: #3a4257;
    --tp-input: #1c212c;
    --tp-line: rgba(216,221,227,.18);
    --tp-rail-dot: rgba(216,221,227,.3);
}
.smod-tp--midnight {
    --tp-rail: #050509;
    --tp-panel: #12121f;
    --tp-app: #0c0c14;
    --tp-text: #e7e2ff;
    --tp-accent: #a884ff;
    --tp-bubble-in: #181828;
    --tp-input: #08080f;
    --tp-line: rgba(168,132,255,.18);
    --tp-rail-dot: rgba(168,132,255,.4);
}
.smod-tp--mist {
    --tp-rail: #c8ccd2;
    --tp-panel: #dadde2;
    --tp-app: #e9ebef;
    --tp-text: #1c1d22;
    --tp-accent: #5865f2;
    --tp-bubble-in: #dee0e6;
    --tp-input: #dee0e6;
    --tp-line: rgba(0,0,0,.15);
    --tp-rail-dot: rgba(0,0,0,.3);
    --tp-border: rgba(0,0,0,.15);
}
/* «Своя» — превью использует живые --th-* переменные, чтобы карточка
   мгновенно отражала текущий пользовательский набор. */
.smod-tp--custom {
    --tp-rail: var(--th-bg-rail);
    --tp-panel: var(--th-bg-panel);
    --tp-app: var(--th-bg-app);
    --tp-text: var(--th-text);
    --tp-accent: var(--th-accent);
    --tp-bubble-in: var(--th-bg-input-2);
    --tp-input: var(--th-bg-input);
    --tp-line: var(--th-border-soft);
    --tp-rail-dot: var(--th-text-faded);
    --tp-border: var(--th-border);
}

.smod-theme-name {
    font-size: 14px;
    font-weight: 500;
}
.smod-theme-check {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #5865f2;
    color: #fff;
    display: none;
    align-items: center;
    justify-content: center;
}
.smod-theme-card--active .smod-theme-check { display: flex; }

/* ─── Font picker (Settings → Внешний вид) ─────────────────────────────── */
.smod-font-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 10px;
    margin-top: 8px;
}
.smod-font-card {
    position: relative;
    border: 2px solid transparent;
    background: rgba(255, 255, 255, 0.03);
    border-radius: 10px;
    padding: 12px 14px;
    cursor: pointer;
    text-align: left;
    color: inherit;
    transition: border-color .15s, background .15s;
}
    .smod-font-card:hover {
        background: rgba(255, 255, 255, 0.06);
    }
    .smod-font-card--active {
        border-color: #5865f2;
        background: rgba(88, 101, 242, 0.10);
    }

.smod-font-name {
    font-size: 13px;
    color: #80848e;
    margin-bottom: 4px;
    font-family: var(--app-font-family); /* подпись — текущим UI-шрифтом, чтобы не путать */
}
.smod-font-sample {
    font-size: 16px;
    color: #f2f3f5;
    line-height: 1.2;
}
.smod-font-card--active .smod-theme-check { display: flex; }

/* ─── Font size slider ─────────────────────────────────────────────────── */
.smod-font-size-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 8px;
}
.smod-font-size-btn {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: rgba(255, 255, 255, 0.04);
    color: #f2f3f5;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background .12s;
}
    .smod-font-size-btn:hover:not(:disabled) {
        background: rgba(88, 101, 242, 0.20);
    }
    .smod-font-size-btn:disabled {
        opacity: .4;
        cursor: default;
    }
.smod-font-size-range {
    flex: 1;
    accent-color: #5865f2;
    height: 4px;
}
.smod-font-size-val {
    min-width: 42px;
    text-align: right;
    color: #b5bac1;
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}
.smod-font-size-preview {
    margin-top: 12px;
    padding: 10px 12px;
    background: rgba(255, 255, 255, 0.04);
    border-radius: 8px;
    color: #dbdee1;
    line-height: 1.4;
}

/* ─── Custom theme editor (Settings → Внешний вид → Своя тема) ──────────── */
.smod-custom-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 8px 0 14px;
}
.smod-custom-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    border-radius: 6px;
    border: 1px solid var(--th-border, rgba(255, 255, 255, .12));
    background: var(--th-bg-input, rgba(255, 255, 255, .04));
    color: var(--th-text, #f2f3f5);
    font-size: 13px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}
.smod-custom-btn:hover {
    background: var(--th-bg-hover, rgba(255, 255, 255, .08));
    border-color: var(--th-accent, #5865f2);
}
.smod-custom-btn--primary {
    background: var(--th-accent, #5865f2);
    color: #fff;
    border-color: var(--th-accent, #5865f2);
}
.smod-custom-btn--primary:hover {
    background: var(--th-accent-hov, #4752c4);
    border-color: var(--th-accent-hov, #4752c4);
}
.smod-custom-btn--danger {
    color: #f04747;
    border-color: rgba(240, 71, 71, .4);
}
.smod-custom-btn--danger:hover {
    background: rgba(240, 71, 71, .12);
    border-color: #f04747;
}
.smod-custom-status {
    font-size: 12px;
    color: var(--th-text-faded, #949ba4);
    margin-bottom: 10px;
    min-height: 16px;
}
.smod-custom-status--error { color: #f04747; }
.smod-custom-status--ok    { color: #3ba55d; }

.smod-custom-group {
    margin-top: 14px;
}
.smod-custom-group-title {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--th-text-faded, #949ba4);
    margin-bottom: 6px;
}
.smod-custom-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 8px;
}
.smod-custom-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-radius: 6px;
    background: var(--th-bg-input, rgba(255, 255, 255, .04));
    border: 1px solid var(--th-border-soft, rgba(255, 255, 255, .06));
}
.smod-custom-row-label {
    flex: 1;
    font-size: 12px;
    color: var(--th-text, #f2f3f5);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.smod-custom-color {
    width: 28px;
    height: 28px;
    padding: 0;
    border: 1px solid var(--th-border, rgba(255, 255, 255, .12));
    border-radius: 5px;
    background: transparent;
    cursor: pointer;
    flex-shrink: 0;
}
.smod-custom-color::-webkit-color-swatch-wrapper { padding: 0; }
.smod-custom-color::-webkit-color-swatch { border: none; border-radius: 3px; }
.smod-custom-text {
    width: 100px;
    padding: 4px 6px;
    border-radius: 4px;
    border: 1px solid var(--th-border, rgba(255, 255, 255, .12));
    background: var(--th-bg-input-2, rgba(255, 255, 255, .04));
    color: var(--th-text, #f2f3f5);
    font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
    font-size: 11px;
}
.smod-custom-text:focus {
    outline: none;
    border-color: var(--th-accent, #5865f2);
}

/* ── Спойлер «Своя тема» ── */
.smod-spoiler {
    background: var(--th-bg-secondary, #2b2d31);
    border-radius: 8px;
    margin-bottom: 16px;
    overflow: hidden;
}
.smod-spoiler-header {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 16px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--th-text-faded, #96989d);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    text-align: left;
    transition: background 0.15s;
}
.smod-spoiler-header:hover {
    background: rgba(255,255,255,0.04);
}
.smod-spoiler-chevron {
    transition: transform 0.2s ease;
    flex-shrink: 0;
    opacity: 0.6;
}
.smod-spoiler-chevron--open {
    transform: rotate(180deg);
}
.smod-spoiler-body {
    padding: 0 16px 16px;
}

/* ═══════════════════ Нативные <select>/<option> и color-scheme ═══════════════════
 * Закрытый combobox наследует тему через классы (.corr-input, .abp-select и т.п.),
 * но раскрывающийся список <option> рисуется браузером в системных цветах —
 * на тёмной теме это белый список со светлым текстом (не виден). Принудительно
 * задаём фон/цвет опций из переменных темы и color-scheme, чтобы нативные
 * контролы (dropdown, скроллбары, date-picker) рисовались в нужной гамме. */
:root[data-theme="light"],
:root[data-theme="mist"] { color-scheme: light; }

:root,
:root[data-theme="dark"],
:root[data-theme="blue"],
:root[data-theme="sapphire"],
:root[data-theme="midnight"],
:root[data-theme="custom"] { color-scheme: dark; }

select { color-scheme: inherit; }
select option,
select optgroup {
    background: var(--th-bg-input);
    color: var(--th-text);
}
