/* Общая база дизайн-системы (issue #17: страниц стало три — чат, логин,
   админка): вендоренные шрифты дизайна 1.0 + палитра «NP prototype
   SystemDesign» (см. docs/design-inheritance.md). Правки токенов — только здесь. */

/* ===== Шрифты — вендоренные из дизайн-кода 1.0 (Аверин), cyrillic+latin ===== */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/inter-400-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/inter-400-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/inter-500-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url("/fonts/inter-500-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/inter-600-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/inter-600-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/jbmono-400-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url("/fonts/jbmono-400-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/jbmono-600-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url("/fonts/jbmono-600-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* Дизайн-система Финч Корп 2: вариативный Inter (ось wght 100–900) — 700/800
   нужны бренду и заголовкам макета, статичный Inter выше их не имеет. Своё
   имя семейства, чтобы не смешаться со статичными гарнитурами. SIL OFL 1.1,
   @fontsource-variable/inter 5.2.5. */
@font-face{font-family:'Inter Var';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/inter-var-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter Var';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/inter-var-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* Терминальный моно сессии и реестра «Финч Корп» (docs/finch-session-mockup.html, слово
   владельца 16.09.2026: круглый рисунок, как SF Mono в Terminal; JetBrains Mono отвергнут как
   тонкий и угловатый). Geist Mono 1.701, SIL OFL 1.1, вариативный (ось wght 100–900): кириллица,
   латиница и знаки рамок, стрелок и ₽ отдельными подмножествами. */
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Geist Mono';font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-sym.woff2") format('woff2');unicode-range:U+20A0-20CF,U+2190-21FF,U+2500-257F,U+25A0-25FF;}
@font-face{font-family:'Geist Mono';font-style:italic;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-italic-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Geist Mono';font-style:italic;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-italic-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Geist Mono';font-style:italic;font-weight:100 900;font-display:swap;src:url("/fonts/geistmono-var-italic-sym.woff2") format('woff2');unicode-range:U+20A0-20CF,U+2190-21FF,U+2500-257F,U+25A0-25FF;}
/* Шрифты темы «Финч Корп» (issue #551) — переменные (ось wght 400–800, один
   файл на все начертания), вендорены из макета finch-corp-mockup; грузятся
   только когда страница их запрашивает (тема выбрана). SIL OFL 1.1. */
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/onest-var-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Onest';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/onest-var-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/unbounded-var-cyr.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Unbounded';font-style:normal;font-weight:400 800;font-display:swap;src:url("/fonts/unbounded-var-lat.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

/* ===== Токены — палитра «NP prototype SystemDesign» (дизайн 1.0) =====
   Темы (issue #93): :root — базовые токены, поверх них единственная тема
   «Финч Корп» [data-theme="finch"] (графит) и её белый вариант
   [data-tone="light"]. Прежние тёмная D-A и терминальная T-D сняты вместе с
   выбором темы: все пользователи на Финч Корп.
   Блоки тем переопределяют ТОЛЬКО токены — стилей по темам на страницах нет.
   Атрибут ставит inline-гард в <head> каждой страницы (localStorage
   nk2_theme), синхронизацию с PG делает rail.js по /api/me. */
/* Приложение не масштабируется — ни двойным тапом, ни щипком (слово владельца
   19.09.2026: «по двойному тапу на чаты не должно быть зума, вообще зума не
   должно быть унаследовано от веба»). Три замка, потому что ни один не
   работает везде: meta viewport с user-scalable=no слушает WKWebView
   контейнера, но не Safari; touch-action без pinch-zoom снимает и щипок, и
   двойной тап там, где meta проигнорирован; обработчик gesture* в rail.js
   добивает жест в самом WebKit. Страницы, которым нужен свой зум (просмотр
   файла), ставят touch-action: none и ведут жест сами. */
html { touch-action: pan-x pan-y; }

:root {
  --navy:#1B2D5B; --navy-deep:#111D3E; --blue:#2B6FCB;
  --orange:#EFA01E; --orange-deep:#D98B15;
  --ink:#141928; --ink-2:#262C3D; --ink-3:#3A4155; --ink-4:#515870;
  --muted:#6B738A; --faint:#8E95A9; --ghost:#B4B9C8;
  --bg:#F5F6F9; --card:#fff;
  --line:#ECEEF3; --line-strong:#D5D8E1; --line-row:#E7E9F0;
  --green:#1A9D5C; --green-bg:#E8F7EF; --green-line:#C6E7D2;
  /* Глубокий зелёный: --green рассчитан на ПОЛОТНО, и на заливке своего
     пузыря (--bub-own) галочка «прочитано» давала 2.52:1 (#683). В тёмных
     темах заливка сама тёмная, и там --green-deep равен --green. Код ждал
     этот токен и раньше — .m-card-btns .yes:hover брал его с фолбэком. */
  --green-deep:#12783F;
  --amber:#C67A10; --amber-bg:#FEF0D5; --amber-line:#FADCA3;
  --red:#D63B3B; --red-deep:#B42318; --red-bg:#FCEAEA; --red-line:#F4D4D4;
  --shadow-card:0 1px 3px rgba(17,29,62,.08),0 1px 2px rgba(17,29,62,.04);
  --shadow-pop:0 4px 12px rgba(17,29,62,.08),0 1px 2px rgba(17,29,62,.04);
  --mono:'JetBrains Mono',ui-monospace,monospace;

  /* — Семантика поверх палитры (issue #93) — всё, что темы красят иначе — */
  --font:'Inter',system-ui,-apple-system,sans-serif;
  --on-accent:#fff;                      /* текст/иконки на акцентных заливках */
  --on-solid:#fff;                       /* текст на заливке кнопок --btn-solid/--btn-grad/--accent-grad */
  --code-bg:var(--bg);                   /* фон код-блоков (терминальная — глубже) */
  --bub:var(--bg);                       /* пузырь сообщения пользователя */
  --bub-own:#CFDCF0;                     /* свой пузырь раздела «Сообщения» (#442) */
  --bub-own-line:#CFDCF0;                /* его рамка — отдельным токеном, см. ниже */
  /* Служебный текст НА своём пузыре (время, «изм.», галочка, #683): заливка
     своя, и общий --muted читается на ней по-разному. В светлой теме пузырь
     светлый и метку надо темнить, в тёмных — наоборот; поэтому цвет выбирает
     тема, а не раздел. */
  --bub-own-meta:var(--ink-4);
  --blue-bg:#EDF2FA; --blue-line:#CFDCF0;/* голубые выделения (chips admin/hitl) */
  --overlay:rgba(17,29,62,.55);          /* фон модального оверлея */
  /* QR страницы «Установить на телефон» (#652). Один на оба тона намеренно:
     по ISO/IEC 18004 код — тёмные модули на светлой подложке, инверсию камера
     читать не обязана, и графитовый тон не должен перекрашивать код в светлый
     по тёмному. */
  --qr-ink:#000; --qr-paper:#fff;
  /* Сцена страницы «Установить на телефон» (#793): нарисованные корпус
     телефона и ноутбука, камера iPhone, отметки нажатий, просмотр снимков,
     плашки адреса поверх снимков реальных экранов. Как у QR — тоном не
     переопределяются: это цвета железа и замеры пикселей снимков (плашки —
     по README снимков: фон и текст адресной строки Chrome, листа сканера,
     диалога установки, плашки Safari, листа «Поделиться», окна «На экран
     „Домой“»), а не интерфейс портала. */
  --inst-black:#000; --inst-white:#fff; --inst-glyph:#1b1b1b;
  --inst-lime:#d4f34a; --inst-lime-soft:rgba(212,243,74,.28); --inst-lime-halo:rgba(212,243,74,.22);
  --inst-lime-fade:rgba(212,243,74,.08); --inst-lime-glow:0 0 6px rgba(212,243,74,.7);
  --inst-phone:linear-gradient(160deg,#3a3a3f,#17171a 45%,#25252a); --inst-phone-key:#2c2c30;
  --inst-phone-shadow:inset 0 0 0 1px rgba(255,255,255,.10),0 0 0 1px #0b0b0c,0 40px 90px rgba(0,0,0,.45),0 10px 28px rgba(0,0,0,.3);
  --inst-tap:rgba(255,255,255,.55); --inst-tap-ring:rgba(255,255,255,.85);
  --inst-tap-shadow:0 0 0 1px rgba(0,0,0,.25),0 4px 14px rgba(0,0,0,.35);
  --inst-cam-yellow:#ffd60a; --inst-cam-ink:#1a1a1a; --inst-cam-mode:#8a8a8a;
  --inst-cam-dot:radial-gradient(circle,#fff 0 30%,#1a8cff 32%);
  --inst-wait:rgba(8,8,8,.72); --inst-wait-ink:#e8e8e8; --inst-wait-sub:#9a9a9a;
  --inst-mini:#111; --inst-mini-shadow:0 8px 20px rgba(0,0,0,.25); --inst-mini-shadow-hover:0 10px 26px rgba(0,0,0,.3);
  --inst-screen-shadow:0 14px 34px rgba(0,0,0,.35);
  --inst-zoom:rgba(0,0,0,.55);
  --inst-lb:rgba(0,0,0,.82); --inst-lb-shadow:0 0 0 1px rgba(255,255,255,.12),0 30px 80px rgba(0,0,0,.6);
  --inst-lb-ink:#eee; --inst-lb-sub:#9a9a9a; --inst-lb-btn:rgba(255,255,255,.12); --inst-lb-btn-hover:rgba(255,255,255,.2);
  --inst-lap:radial-gradient(110% 70% at 50% 38%,#4b4239 0%,#2b251f 52%,#120f0c 100%);
  --inst-lap-vignette:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(0,0,0,.45));
  --inst-lid:#0b0b0c; --inst-lid-rim:#2e2e32; --inst-scr:#0d0d0d; --inst-base:linear-gradient(#c9ccd2,#8a8d94);
  --inst-lap-code:#1e1e1e; --inst-lap-code-ink:#ececec;
  --inst-m-chrome:#404040; --inst-m-chrome-ink:#fff; --inst-m-dim:#161616; --inst-m-dim-ink:#595959;
  --inst-m-dialog:#faf8ff; --inst-m-dialog-ink:#40434b; --inst-m-scan:#f0f4f9; --inst-m-scan-ink:#444746;
  --inst-m-safari:#1e1e1e; --inst-m-safari-ink:#f4f4f4; --inst-m-add:#fff; --inst-m-add-ink:#c5c5c7;
  --inst-m-share:rgba(214,208,203,.72); --inst-m-share-ink:#756d65;
  --inst-m-sharefull:rgba(225,224,223,.72); --inst-m-sharefull-ink:#7f7d79;
  --focus:0 0 0 3px rgba(43,111,203,.12);        /* focus-ring полей */
  --focus-card:0 0 0 2px rgba(43,111,203,.14);   /* выделение активной карточки */
  --btn-grad:linear-gradient(135deg,#2B6FCB,#1B2D5B); /* CTA-кнопки */
  --btn-solid:#1B2D5B; --btn-solid-hover:#111D3E;     /* плоские navy-кнопки */
  --accent-grad:linear-gradient(135deg,#EFA01E,#D98B15); /* оранжевые CTA/аватары */
  --tile-bg:#1B2D5B; --tile-ink:#fff;    /* бренд-плитка с логотипом */
  --shadow-btn:0 2px 8px rgba(43,111,203,.28);
  --shadow-btn-orange:0 2px 8px rgba(239,160,30,.30);
  --halo-orange:0 0 0 2px rgba(239,160,30,.14);
  --halo-waiting:0 0 0 2.5px rgba(239,160,30,.3);
  --glow-hero:0 0 0 4px rgba(239,160,30,.14),0 4px 14px rgba(239,160,30,.28);
  --shadow-soft:0 1px 3px rgba(17,29,62,.06);
  --shadow-hover:0 4px 12px rgba(17,29,62,.10);
  /* Радиусы (терминальная тема обнуляет все) */
  --r-xs:5px; --r-sm:8px; --r-md:10px; --r-lg:12px; --r-xl:14px;
  --r-bub:18px 18px 6px 18px; --r-composer:20px; --r-pill:9999px; --r-round:50%;
  /* Рельса (/rail.js) и «тёмный угол» */
  --rail-bg:var(--navy-deep);
  --rail-line:rgba(255,255,255,.08);
  --rail-tile:rgba(255,255,255,.10);
  --rail-ink:rgba(255,255,255,.62);
  --rail-ink-strong:#fff;
  --rail-hover:rgba(255,255,255,.08);
  --rail-active:rgba(255,255,255,.14);
  --rail-co:rgba(255,255,255,.55);
  --rail-co-line:rgba(255,255,255,.16);
  /* Navy-колонка (чаты / вызовы агента) */
  --col-bg:var(--navy);
  --col-ink:rgba(255,255,255,.75);
  --col-ink-strong:#fff;
  --col-ink-dim:rgba(255,255,255,.55);
  --col-cap:rgba(255,255,255,.38);
  --col-faint:rgba(255,255,255,.45);
  --col-dim:rgba(255,255,255,.32);
  --col-hover:rgba(255,255,255,.07);
  --col-active:rgba(255,255,255,.11);
  --col-line:rgba(255,255,255,.24);
  /* Колонка переписок «Сообщений» (#659). --col-meta — время и превью
     прочитанной строки: .62 от яркого текста колонки даёт ≥4.5:1 во всех
     четырёх темах, в т.ч. на активной строке (--col-dim .32 давал 2.7:1,
     --col-faint .45 — 4.15:1). --ava-* — аватары: оттенок ставит JS по логину
     (--h), тема держит насыщенность и светлоту подложки (s/l) и буквы (is/il). */
  --col-meta:rgba(255,255,255,.62);
  /* Точка присутствия в строке списка (#689). Свой токен, а не --green: тот
     рассчитан на ПОЛОТНО и в светлой теме тёмный (#1A9D5C), а колонка тёмная
     во всех четырёх темах — на ней он гас. Значение одно на все темы ровно
     потому, что подложка у него всегда одна. */
  --col-on:#3FB950;
  --ava-s:42%; --ava-l:31%; --ava-is:90%; --ava-il:87%;
  /* Имя автора в пузыре группы (#683) — тот же оттенок (--h), что у аватара,
     но своя светлота: буквы аватара (--ava-i*) рассчитаны на его ЦВЕТНУЮ
     подложку и на белом пузыре нечитаемы, а подложка (--ava-l) на тёмном
     пузыре сливается с ним. Поэтому у имени собственная пара s/l в каждой
     теме; тема без цветных аватаров может задать плоский --who-ink. */
  /* 30%, а не 36%: светлота считана по худшему оттенку палитры AVA_HUES —
     бирюзовому 177, который на белом пузыре при 36% давал 4.03:1. */
  --who-s:52%; --who-l:30%;
  /* --glyph здесь НЕ задан: ::before композера без него не рендерится вовсе —
     глиф «>» существует только в терминальной теме */
}

/* ===== Тема «Финч Корп» — finch (issue #551): графит по дизайн-системе Финча
   (bg #121215, линии #24252E, акцент лайм #D6FF3F), Onest для текста, Unbounded
   для заголовков, JetBrains Mono для служебного; радиусы 0, тени → рамки, один
   акцент вместо orange и blue. Графит для dark/terminal Pavel отклонял —
   здесь он вернулся решением владельца 06.09.2026 как палитра ОТДЕЛЬНОЙ темы.
   Единственная тема-режим: на странице чата под html[data-theme="finch"]
   живёт реестр сессий и лента как в Claude Code (web/index.html), остальные
   страницы — только эти токены. ===== */
/* Остров звонка в шапке портала (#1222, messages.css) — тёмный в обоих
   тонах: берёт весь тёмный набор на себя, светлый тон висит только на html. */
[data-theme="finch"] .cap-isl,
[data-theme="finch"] {
  color-scheme: dark;
  /* Терминал сессии и реестра (docs/finch-session-mockup.html): одна моно-гарнитура, один кегль.
     Полотно — #1a1a1a панели, а не подложка #0d0d0d: слово владельца 16.09 «на темной режет глаз».
     Иерархия — яркостью: --term-fg текст, --term-bright жирное, --term-dim итоги, --term-faint
     служебное. Веса моно — замер штанги к высоте строчных против SF Mono в терминале, как у Inter. */
  --term:'Geist Mono',ui-monospace,Menlo,monospace;
  --term-bg:#1a1a1a; --term-fg:#cacaca; --term-bright:#ececec; --term-dim:#8f8f8f; --term-faint:#666666;
  --term-rule:#303030; --term-band:#242424; --term-code:#b3c47e; --term-shine:#f7ffd6;
  --fw-term: 350; --fw-term-bold: 630;
  /* Два начертания текста зоны Claude Code (реестр, лента, вкладки «Сессии / Агенты»): вес
     Inter, при котором штанга к высоте строчных равна SF Mono Regular/Bold в терминале
     (Core Text, 18 pt, Retina, сглаживание macOS; замер 17.09). Светлый текст на тёмном
     macOS утолщает сильнее, поэтому у тёмного тона числа выше. */
  --fw-text: 450; --fw-bold: 705;
  /* Дизайн-система Финч Корп 2 (макет docs/finch-topbar-mockup.html, по
     гайдлайнам macOS): Inter вместо Onest/SF — один шрифт в макете, продукте
     и CI; мягкие скругления HIG вместо нулевых; материалы с размытием и тени
     вместо рамок; --ts — множитель всех кеглей (по умолчанию 112%). Значения
     сняты с макета; менять — сначала в макете. */
  --ts: 1.125;
  --font:'Inter Var','Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  --display:'Inter Var','Inter',-apple-system,system-ui,sans-serif;
  --accent:#d4f34a;                      /* лайм — единый акцент */
  --sel:rgba(255,255,255,.075);          /* выделение строки списка */
  --sel-active:rgba(255,255,255,.15);    /* курсор активного списка — реестр, агенты (#736) */
  --hover:rgba(255,255,255,.045);        /* наведение на строку */
  --mat:rgba(30,30,30,.78);              /* материал поповера/меню */
  --mat-line:rgba(255,255,255,.09);
  --mat-drawer:rgba(24,24,24,.9);        /* материал дровера */
  --drawer-line:rgba(255,255,255,.08);   /* волосяная линия дровера (левый край) */
  --mat-toast:rgba(36,36,36,.82);        /* материал баннера */
  --ring:0 0 0 3px rgba(212,243,74,.38); /* кольцо фокуса */
  /* Монограммы людей — пары макета (finch-topbar-mockup .av1….av6): приглушённый
     фон и буквы того же тона. В светлой тоне свои пары. */
  --av-bg1:#3b4417; --av-tx1:#d4f34a;
  --av-bg2:#4a3517; --av-tx2:#f0a83c;
  --av-bg3:#1e3d23; --av-tx3:#63c26a;
  --av-bg4:#432424; --av-tx4:#d98080;
  --av-bg5:#20313f; --av-tx5:#72b0d4;
  --av-bg6:#332a45; --av-tx6:#a992dd;
  --head-bg:linear-gradient(#141414,#101010);
  --head-line:rgba(255,255,255,.07);
  --tool-ink:#b4b4b4; --tool-hover:rgba(255,255,255,.08); --tool-on:rgba(255,255,255,.12);
  --seg-track:rgba(255,255,255,.06); --seg-on:#3b3b3b;
  --seg-shadow:0 1px 2px rgba(0,0,0,.45),inset 0 .5px 0 rgba(255,255,255,.12);
  --line2:#343434;
  --navy:#ececec;
  --navy-deep:#0a0a0a;
  --blue:#d4f34a;
  --orange:#d4f34a; --orange-deep:#c4e33a;
  --ink:#ececec; --ink-2:#9a9a9a; --ink-3:#8a8a8a; --ink-4:#6b6b6b;
  --muted:#9a9a9a; --faint:#7c7c7c; --ghost:#555555;
  --bg:#0d0d0d; --card:#1a1a1a; --panel-2:#1e1e1e;
  --line:#2a2a2a; --line-strong:#343434; --line-row:#232323;
  --green:#63c26a; --green-bg:rgba(99,194,106,.12); --green-line:rgba(99,194,106,.3); --green-deep:var(--green);
  --amber:#f0a83c; --amber-bg:rgba(240,168,60,.12); --amber-line:rgba(240,168,60,.35);
  --red:#ff8f86; --red-deep:#e5534b; --red-bg:rgba(229,83,75,.12); --red-line:rgba(229,83,75,.35);
  /* Сплошные кнопки звонка (Принять / Отклонить / Завершить, #1062): насыщенные
     заливки под белый значок. --red и --green тёмного тона светлые (под текст
     на графите) — белый на них 2,2:1. Здесь значок 4,3:1 и 3,5:1. */
  --call-red:#E5372E; --call-green:#1A9D5C; --call-on:#FFFFFF;
  /* Полоса звонка на телефоне (#1226), одна в обоих тонах: белый текст —
     5,0:1 на зелёном (разговор) и 4,8:1 на сером (ждём и итог); --call-green
     дал бы 3,5:1. Цвет — решение владельца 06.10.2026, доска «Звонок на
     телефоне». */
  --call-bar-a:#157F49; --call-bar-b:#0F6B57; --call-bar-wait-a:#6F736C; --call-bar-wait-b:#5A5E58;
  --shadow-card:0 0 0 .5px rgba(0,0,0,.6),0 1px 2px rgba(0,0,0,.3);
  --shadow-pop:0 0 0 .5px rgba(0,0,0,.8),0 16px 40px rgba(0,0,0,.5);
  --shadow-drawer:-10px 0 30px rgba(0,0,0,.28);
  --shadow-toast:0 0 0 .5px rgba(0,0,0,.7),0 14px 36px rgba(0,0,0,.45);
  --on-accent:#101010;
  --on-solid:#101010;
  /* Модалка по центру страницы (#newChat макета): затемнение всего экрана,
     поле поиска, строки списка, подвал. */
  --scrim:rgba(0,0,0,.55); --shadow-modal:0 24px 64px rgba(0,0,0,.6);
  --mdl-field:#131313; --mdl-field-focus:#454545; --mdl-hover:#232323; --mdl-on:#242a16;
  --mdl-foot:#1b1b1b; --mdl-chip:#262626; --mdl-chip-hover:#2f2f2f; --mdl-off:#2c2c2c;
  /* Значки источника в тостах (.appIco макета): свой градиент и глиф, из лайма
     и янтаря палитры они не выводятся. */
  --ico-msg:#e2fb6a; --ico-msg-2:#b9d92e; --ico-msg-tx:#1a2004;
  --ico-ask:#f7bd5e; --ico-ask-2:#e0952a; --ico-ask-tx:#2a1a02;
  /* Стопка баннеров: две выглядывающие подложки (.toast.stacked макета). */
  --toast-peek-1:rgba(58,58,58,.92); --toast-peek-2:rgba(46,46,46,.8);
  /* Подпись раздела профиля и палитры (.psec, .etitle макета). */
  --sec-cap:#7c7c7c;
  /* Кольцо счётчика на кнопке шапки (.htools .cnt макета). */
  --cnt-ring:#121212;
  --composer-bg:#181818; --composer-line:#2c2c2c; --kbd-line:#2c2c2c;   /* .nbox и .status kbd макета */
  --composer-shadow: inset 0 1px 0 rgba(255,255,255,.03), 0 8px 24px rgba(0,0,0,.35);   /* .nbox макета литералами, как в макете */
  --composer-focus-line:#4a4a4a; --composer-focus-shadow: 0 0 0 3px rgba(212,243,74,.12), 0 8px 24px rgba(0,0,0,.35);   /* .nbox:focus-within макета */
  --code-bg:#1e1e1e;
  --bub:#262626;
  --bub-own:#33401A; --bub-own-line:#33401A; --bub-own-meta:#9DB06A;
  --blue-bg:rgba(212,243,74,.08); --blue-line:rgba(212,243,74,.3);
  --overlay:rgba(0,0,0,.5);
  --focus:0 0 0 3px rgba(212,243,74,.38);
  --focus-card:0 0 0 1px rgba(212,243,74,.55);
  --btn-grad:#d4f34a;
  --btn-solid:#d4f34a; --btn-solid-hover:#dcf76a;
  --accent-grad:#d4f34a;
  --tile-bg:#262626; --tile-ink:#d4f34a;
  --shadow-btn:none; --shadow-btn-orange:none;
  --halo-orange:0 0 0 3px rgba(212,243,74,.16);
  --halo-waiting:0 0 0 3px rgba(240,168,60,.2);
  --glow-hero:none;
  --shadow-soft:0 1px 2px rgba(0,0,0,.3); --shadow-hover:0 4px 14px rgba(0,0,0,.35);
  /* шкала скруглений macOS HIG (макет) */
  --r-xs:6px; --r-sm:8px; --r-md:10px; --r-lg:14px; --r-xl:18px;
  --r-bub:18px; --r-composer:18px; --r-pill:9999px; --r-round:50%;
  --on-media:#FFFFFF;                    /* текст и значки поверх снимка или подложки --overlay (мессенджер) */
  --media-scrim:rgba(0,0,0,.86);         /* подложка просмотра файла на весь окно — тёмная в обеих тонах, как в Telegram для macOS */
  --doc-page:#FFFFFF; --doc-ink:#3A3A3C; /* лист мини-превью документа в ленте (мессенджер) — бумага в обеих тонах */
  --dgap:0px; --dr:var(--r-lg);         /* дровер вплотную к краю окна; левые углы скруглены 14px, как .drawer макета (Артур, 15.09.2026) */
  --top-h:56px;                          /* шапка без рейки (rail.js, .fn-top) */
  --rail-bg:#101010;
  --rail-line:rgba(255,255,255,.07);
  /* нижний таб-бар телефона — плавающее стекло (материалы iOS 26/27) */
  --tabbar-glass:rgba(44,44,44,.74);
  --tabbar-line:rgba(255,255,255,.14);
  --tabbar-hi:rgba(255,255,255,.20);
  --tabbar-shadow:0 10px 26px rgba(0,0,0,.34), 0 2px 6px rgba(0,0,0,.22);
  --rail-tile:rgba(255,255,255,.10);
  --rail-ink:#b4b4b4;
  --rail-ink-strong:#ffffff;
  --rail-hover:rgba(255,255,255,.08);
  --rail-active:rgba(255,255,255,.12);
  --rail-co:rgba(255,255,255,.55);
  --rail-co-line:rgba(255,255,255,.1);
  --col-bg:#141414;
  --col-ink:rgba(236,236,236,.78);
  --col-ink-strong:#ececec;
  --col-ink-dim:rgba(236,236,236,.55);
  --col-cap:#7c7c7c;
  --col-faint:rgba(236,236,236,.45);
  --col-dim:rgba(236,236,236,.32);
  --col-hover:rgba(255,255,255,.045);
  --col-active:rgba(255,255,255,.075);
  --col-line:rgba(255,255,255,.08);
  --col-meta:rgba(236,236,236,.62);
  --ava-s:20%; --ava-l:22%; --ava-is:60%; --ava-il:80%;
  --who-s:45%; --who-l:72%;
  --glyph:'❯ ';
  /* Окно просмотра файла (#721, web/fview.css) — по гайдлайнам macOS: материал
     заголовка и тулбара с размытием, «светофор», кольцо фокуса 3px акцентом.
     Своими токенами, а не общими: у темы радиусы 0 и тени-рамки, а окно поверх
     чата обязано отделяться от ленты тенью и скруглением, как окно ОС. */
  --fv-r:12px; --fv-r-sm:7px;
  --fv-bg:#141418;                       /* поле содержимого окна */
  --fv-mat:rgba(33,34,40,.84);           /* материал заголовка, тулбара и вкладок */
  --fv-line:rgba(242,242,236,.09);       /* внутренние линии окна */
  --fv-edge:rgba(242,242,236,.13);       /* кромка окна */
  --fv-shadow:0 0 0 .5px rgba(0,0,0,.85),0 24px 64px rgba(0,0,0,.55),0 6px 18px rgba(0,0,0,.35);
  --fv-shadow-idle:0 0 0 .5px rgba(0,0,0,.75),0 12px 34px rgba(0,0,0,.42);
  --fv-ring:0 0 0 3px rgba(214,255,63,.45);
  --fv-hover:rgba(242,242,236,.07);
  --fv-press:rgba(242,242,236,.12);
  --fv-btn-hover:rgba(242,242,236,.17);
  --fv-seg:rgba(242,242,236,.06);        /* подложка сегмента и поля поиска */
  --fv-seg-on:#3A3B44;                   /* выбранный сегмент, активная вкладка листа */
  --fv-seg-shadow:rgba(0,0,0,.45);
  --fv-light-close:#FF5F57; --fv-light-zoom:#28C840;
  --fv-light-off:#4A4B53;                /* кружки неактивного окна и «свернуть» */
  --fv-light-glyph:rgba(0,0,0,.6);
  --fv-grid-cell:#121216; --fv-grid-head:#1C1D23; --fv-grid-line:#2A2B33;
  --fv-zebra:rgba(242,242,236,.025);
  --fv-hit:rgba(214,255,63,.2);          /* найденное */
  --fv-hit-cur:rgba(214,255,63,.55);     /* текущее найденное */
  --fv-paper:#FFFFFF;                    /* подложка страниц документа и картинок */
  --fv-page-shadow:0 0 0 1px rgba(0,0,0,.5),0 6px 22px rgba(0,0,0,.4);
  --fv-video-bg:#000000;
  /* Экран входа (web/login.html): матовое стекло поверх картины дыма. С
     18.09.2026 экран идёт за тоном устройства («чтобы анимация логина учитывала
     тему устройства») — светлая пара этих токенов ниже, в блоке
     [data-tone="light"]; прежнее «только тёмный фон» (15.09.2026) отменено. */
  --lg-glass:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.012) 38%,rgba(255,255,255,.03)),rgba(14,14,14,.56);
  --lg-rim:linear-gradient(180deg,rgba(255,255,255,.26),rgba(255,255,255,.06) 32%,rgba(255,255,255,.03) 68%,rgba(255,255,255,.12));
  --lg-sheen:rgba(255,255,255,.1);       /* блик стекла под указателем */
  --lg-rim-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);   /* кромка — только рамка 1px */
  --lg-shadow:0 40px 100px rgba(0,0,0,.55),0 10px 30px rgba(0,0,0,.35);
  --lg-halo:rgba(13,13,13,.9);           /* ореол знака над дымом */
  --lg-gate-glow:0 18px 54px rgba(212,243,74,.3),0 0 0 7px rgba(255,255,255,.045),0 0 0 8px rgba(255,255,255,.07),0 3px 10px rgba(0,0,0,.5);
  --lg-gate-press:inset 0 0 0 99px rgba(0,0,0,.05);
  --lg-lime:linear-gradient(180deg,#e3fb72 0%,#d4f34a 55%,#c4e43b 100%);   /* капсула «Войти» */
  --lg-lime-inset:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -2px 6px rgba(0,0,0,.1);
  --lg-lime-sweep:rgba(255,255,255,.6);  /* пробегающий блик капсулы */
  --lg-go-shadow:0 2px 6px rgba(0,0,0,.25);
  --lg-btn:linear-gradient(180deg,#def965 0%,#d4f34a 52%,#c7e63d 100%);
  --lg-btn-shadow:inset 0 1px 0 rgba(255,255,255,.5),inset 0 -1px 0 rgba(0,0,0,.14),0 10px 26px rgba(212,243,74,.16),0 1px 2px rgba(0,0,0,.4);
  --lg-field:rgba(0,0,0,.36); --lg-field-focus:rgba(0,0,0,.5); --lg-field-line:rgba(255,255,255,.08);
  --lg-field-inset:inset 0 1px 2px rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,.045);
  --lg-soft:rgba(255,255,255,.06);       /* подложка кружка «показать пароль» */
  /* Дровер мессенджера «Жидкое стекло» (прототип F, слово владельца 22.09.2026): стекло, кромка, обои, счётчик без звука; раздел web/messages.css */
  --lgd-ink: #ececec;
  --lgd-ink-2: #9a9a9a;
  --lgd-faint: #8e8e8e;
  --lgd-ghost: #555555;
  --lgd-icon: #8a8a8a;
  --lgd-ph: #b0b0b0;
  --lgd-sub-fill: #b6b6b6;
  --lgd-green: #63c26a;
  --lgd-red: #ff8f86;
  --lgd-bub: #242424;
  --lgd-bub-own: #33401a;
  --lgd-bub-own-meta: #9db06a;
  --lgd-dock: #171717;
  --lgd-drawer-line: rgba(255, 255, 255, .08);
  --lgd-shadow-drawer: -10px 0 30px rgba(0, 0, 0, .28);
  --lgd-wall: #131411;
  --lgd-fill: rgba(255, 255, 255, .12);
  --lgd-fill-u: rgba(255, 255, 255, .14);
  --lgd-fill-thick: rgba(30, 30, 30, .78);
  --lgd-rim-a: rgba(255, 255, 255, .34);
  --lgd-rim-b: rgba(255, 255, 255, .04);
  --lgd-rim-c: rgba(255, 255, 255, .16);
  --lgd-glow: rgba(255, 255, 255, .10);
  --lgd-glow-press: rgba(255, 255, 255, .22);
  --lgd-hover: rgba(255, 255, 255, .08);
  --lgd-press: rgba(255, 255, 255, .14);
  --lgd-sel: rgba(255, 255, 255, .10);
  --lgd-sep: rgba(255, 255, 255, .08);
  --lgd-thumb: rgba(255, 255, 255, .16);
  --lgd-thumb-sh: 0 1px 3px rgba(0, 0, 0, .35);
  --lgd-tint-sh: 0 8px 20px rgba(212, 243, 74, .22), 0 2px 6px rgba(0, 0, 0, .3);
  --lgd-solid: #2b2b2b;
  --lgd-fill-hc: rgba(44, 44, 44, .94);
  --lgd-hc-line: rgba(255, 255, 255, .62);
  --lgd-pill: rgba(23, 23, 23, .62);
  --lgd-ring-c: rgba(212, 243, 74, .6);
  --lgd-ring-soft: rgba(212, 243, 74, .2);
  --lgd-drop-scrim: rgba(0, 0, 0, .28);
  --lgd-mute-bg: #3a3a3a;
  --lgd-mute-ink: #b9b9b9;
  --lgd-on-accent: #14180a;
  --lgd-push-sh: -14px 0 34px rgba(0, 0, 0, .2);
  /* Лента и лоток дока (ТЗ — liquid-glass.html: .m .pic .t, .thumb .tp/.qx) — одинаковы в обоих тонах */
  --lgd-img-veil: rgba(0, 0, 0, .5);  /* #1167: плашка времени на снимке — как blurServiceColor Telegram, 50 % в тёмной */
  --lgd-up-veil: rgba(0, 0, 0, .4);
  --lgd-on-img: #fff;
  --lgd-chip-sh: 0 1px 4px rgba(0, 0, 0, .3);
}

/* ===== «Финч Корп» · белая — data-tone="light" поверх data-theme="finch" =====
   Светлая пара макета: белое полотно, системные серые #1C1C1E/#55555A, линии
   #E5E5EA, акцент на белом — олива #4A6B00 (лайм там не читается), заливки-
   акценты графитовые с белым текстом, материалы светлые с тем же размытием. */
[data-theme="finch"][data-tone="light"] {
  --fw-text: 435; --fw-bold: 680;
  --term-bg:#FBFBFA; --term-fg:#1C1C1E; --term-bright:#000000; --term-dim:#6B6B70; --term-faint:#A8A8AD;
  --term-rule:#E3E3E7; --term-band:#EFEFEC; --term-code:#4D5E12; --term-shine:#A9D12A;
  --fw-term: 390; --fw-term-bold: 660;
  --on-media:#FFFFFF;
  --media-scrim:rgba(0,0,0,.86);
  --doc-page:#FFFFFF; --doc-ink:#3A3A3C;
  color-scheme: light;
  --accent:#4A6B00;
  --sel:rgba(0,0,0,.06);
  --sel-active:rgba(0,0,0,.1);
  --hover:rgba(0,0,0,.035);
  --mat:rgba(250,250,250,.84);
  --mat-line:rgba(0,0,0,.08);
  --mat-drawer:rgba(252,252,250,.92);
  --drawer-line:rgba(0,0,0,.08);
  --mat-toast:rgba(252,252,252,.86);
  --ring:0 0 0 3px rgba(74,107,0,.28);
  --head-bg:linear-gradient(#FBFBF9,#F4F4F1);
  --head-line:rgba(0,0,0,.08);
  --tool-ink:#55555A; --tool-hover:rgba(0,0,0,.06); --tool-on:rgba(0,0,0,.09);
  --seg-track:rgba(0,0,0,.05); --seg-on:#FFFFFF;
  --seg-shadow:0 1px 2px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.06);
  --line2:#D8D8DC;
  --navy:#1C1C1E;
  --navy-deep:#F5F5F2;
  --blue:#4A6B00;
  --orange:#4A6B00; --orange-deep:#3D5900;
  --ink:#1C1C1E; --ink-2:#55555A; --ink-3:#636366; --ink-4:#636366;
  --muted:#55555A; --faint:#636366; --ghost:#AEAEB2;
  --bg:#FFFFFF; --card:#FFFFFF; --panel-2:#F7F7F4;
  --line:#E5E5EA; --line-strong:#D8D8DC; --line-row:#EDEDF0;
  --green:#248A3D; --green-bg:#EEF7F1; --green-line:#CFE6D8; --green-deep:#1B6E30;
  --amber:#A35F00; --amber-bg:#FBEBD3; --amber-line:#F0D3A6;
  --red:#D70015; --red-deep:#B00012; --red-bg:#FDECEC; --red-line:#F5C9CC;
  --call-red:#D70015; --call-green:#248A3D; --call-on:#FFFFFF;
  --shadow-card:0 0 0 .5px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05);
  --shadow-pop:0 0 0 .5px rgba(0,0,0,.12),0 12px 32px rgba(0,0,0,.14);
  --shadow-drawer:-10px 0 30px rgba(0,0,0,.06);
  --shadow-toast:0 0 0 .5px rgba(0,0,0,.1),0 12px 32px rgba(0,0,0,.14);
  --on-accent:#FFFFFF;
  /* Заливки-акценты — фирменный лайм, как в тёмной теме: графит лишал светлую
     тему цвета. Лайм годится только как ЗАЛИВКА с тёмным текстом (--on-solid);
     текстом и тонкой линией на белом остаётся олива --accent. */
  --on-solid:#1C1C1E;
  --scrim:rgba(0,0,0,.18); --shadow-modal:0 24px 64px rgba(0,0,0,.18);
  --mdl-field:#F7F7F4; --mdl-field-focus:#B4C38F; --mdl-hover:rgba(0,0,0,.04); --mdl-on:#EEF4DF;
  --mdl-foot:#F7F7F4; --mdl-chip:#F2F2F7; --mdl-chip-hover:#E5E5EA; --mdl-off:#F2F2F7;
  --ico-msg:#8CB31C; --ico-ask:#E0A040;
  --toast-peek-1:rgba(232,232,235,.96); --toast-peek-2:rgba(220,220,224,.9);
  --sec-cap:#6E6E73;
  --cnt-ring:#F6F6F3;
  --composer-bg:#FFFFFF; --composer-line:#D8D8DC; --kbd-line:#D8D8DC;
  --composer-shadow: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px rgba(0,0,0,.06);
  --composer-focus-line:#B4C38F; --composer-focus-shadow: 0 0 0 3px rgba(74,107,0,.14), 0 8px 24px rgba(0,0,0,.06);
  --av-bg1:#EAF2D3; --av-tx1:#3E5A00;
  --av-bg2:#FBEBD3; --av-tx2:#8A5000;
  --av-bg3:#DDF1E0; --av-tx3:#1E7A34;
  --av-bg4:#F8E1E1; --av-tx4:#B3261E;
  --av-bg5:#DCEBF5; --av-tx5:#0A5E99;
  --av-bg6:#ECE5F7; --av-tx6:#6A4BB0;
  --code-bg:#F7F7F4;
  --bub:#F2F2F7;
  /* палитра эмодзи (html[data-tone="light"] .epick topbar-макета): панель живёт
     в <body>, вне корня мессенджера, и берёт белую пару отсюда (messages.css) */
  --epick-bg:#F7F7F4; --epick-border:#D8D8DC; --epick-line:#E5E5EA;
  --epick-tx:#1C1C1E; --epick-tx-3:#636366; --epick-focus:#C7C7CC;
  --epick-cell-hover:#F2F2F7; --epick-tabs:#F7F7F4; --epick-tab-hover:#EDEDED; --epick-tab-on:#E7EFD6;
  --epick-shadow:0 16px 40px rgba(0,0,0,.16);
  --bub-own:#E7EFD6; --bub-own-line:#E7EFD6; --bub-own-meta:#56681F;
  --blue-bg:#F2F6E6; --blue-line:#D5E2B0;
  --overlay:rgba(0,0,0,.25);
  --focus:0 0 0 3px rgba(74,107,0,.28);
  --focus-card:0 0 0 1px rgba(74,107,0,.5);
  --btn-grad:#D4F34A;
  --btn-solid:#D4F34A; --btn-solid-hover:#C5E736;
  --accent-grad:#D4F34A;
  --tile-bg:#1C1C1E; --tile-ink:#D6FF3F;
  --halo-orange:0 0 0 3px rgba(74,107,0,.14);
  --halo-waiting:0 0 0 3px rgba(163,95,0,.18);
  --shadow-soft:0 1px 2px rgba(0,0,0,.06); --shadow-hover:0 4px 14px rgba(0,0,0,.1);
  --rail-bg:#F6F6F3;
  --rail-line:rgba(0,0,0,.08);
  --tabbar-glass:rgba(255,255,255,.80);
  --tabbar-line:rgba(0,0,0,.08);
  --tabbar-hi:rgba(255,255,255,.60);
  --tabbar-shadow:0 10px 26px rgba(0,0,0,.14), 0 2px 6px rgba(0,0,0,.08);
  --rail-tile:rgba(28,28,30,.08);
  --rail-ink:#55555A;
  --rail-ink-strong:#1C1C1E;
  --rail-hover:rgba(0,0,0,.06);
  --rail-active:rgba(0,0,0,.09);
  --rail-co:rgba(28,28,30,.55);
  --rail-co-line:rgba(0,0,0,.1);
  --col-bg:#F7F7F4;
  --col-ink:rgba(28,28,30,.78);
  --col-ink-strong:#1C1C1E;
  --col-ink-dim:rgba(28,28,30,.60);
  --col-cap:#636366;
  --col-faint:rgba(28,28,30,.55);
  --col-dim:rgba(28,28,30,.45);
  --col-hover:rgba(0,0,0,.035);
  --col-active:rgba(0,0,0,.06);
  --col-line:rgba(0,0,0,.08);
  --col-meta:rgba(28,28,30,.62);
  --col-on:#248A3D;
  --ava-s:40%; --ava-l:90%; --ava-is:45%; --ava-il:32%;
  --who-s:50%; --who-l:32%;
  /* Окно просмотра файла (#721) в белом тоне: те же роли, светлые материалы
     macOS — белое поле, серые линии системной шкалы, тень мягче. */
  --fv-bg:#FFFFFF;
  --fv-mat:rgba(246,246,244,.86);
  --fv-line:rgba(0,0,0,.08);
  --fv-edge:rgba(0,0,0,.1);
  --fv-shadow:0 0 0 .5px rgba(0,0,0,.14),0 24px 64px rgba(0,0,0,.18),0 6px 18px rgba(0,0,0,.08);
  --fv-shadow-idle:0 0 0 .5px rgba(0,0,0,.12),0 12px 34px rgba(0,0,0,.12);
  --fv-ring:0 0 0 3px rgba(74,107,0,.28);
  --fv-hover:rgba(0,0,0,.05);
  --fv-press:rgba(0,0,0,.09);
  --fv-btn-hover:rgba(0,0,0,.12);
  --fv-seg:rgba(0,0,0,.05);
  --fv-seg-on:#FFFFFF;
  --fv-seg-shadow:rgba(0,0,0,.14);
  --fv-light-off:#D1D1D6;
  --fv-light-glyph:rgba(0,0,0,.5);
  --fv-grid-cell:#FFFFFF; --fv-grid-head:#F5F5F2; --fv-grid-line:#E5E5EA;
  --fv-zebra:rgba(0,0,0,.02);
  --fv-hit:rgba(212,243,74,.45);
  --fv-hit-cur:rgba(74,107,0,.88);         /* текущее — олива: текст на нём белый (--on-accent) */
  --fv-page-shadow:0 0 0 1px rgba(0,0,0,.08),0 6px 22px rgba(0,0,0,.1);
  /* Экран входа (web/login.html) в белом тоне: картину дыма шейдер отдаёт
     негативом — белое полотно, тёмные пряди, — стекло формы над ней светлое,
     тени мягче, а заливки-акценты, как и всюду в светлой паре, оливковые с
     белым текстом: лайм на белом не читается. */
  --lg-glass:linear-gradient(180deg,rgba(255,255,255,.74),rgba(255,255,255,.52) 38%,rgba(255,255,255,.64)),rgba(250,250,248,.5);
  --lg-rim:linear-gradient(180deg,rgba(255,255,255,.95),rgba(0,0,0,.05) 32%,rgba(0,0,0,.04) 68%,rgba(255,255,255,.62));
  --lg-sheen:rgba(255,255,255,.55);
  --lg-shadow:0 40px 100px rgba(0,0,0,.18),0 10px 30px rgba(0,0,0,.1);
  --lg-halo:rgba(255,255,255,.92);       /* ореол знака над светлым дымом */
  --lg-gate-glow:0 18px 54px rgba(74,107,0,.18),0 0 0 7px rgba(255,255,255,.5),0 0 0 8px rgba(255,255,255,.72),0 3px 10px rgba(0,0,0,.14);
  --lg-lime:linear-gradient(180deg,#5C8500 0%,#4A6B00 55%,#3D5900 100%);   /* капсула «Войти» */
  --lg-lime-inset:inset 0 1px 0 rgba(255,255,255,.28),inset 0 -2px 6px rgba(0,0,0,.14);
  --lg-lime-sweep:rgba(255,255,255,.42);
  --lg-go-shadow:0 2px 6px rgba(0,0,0,.18);
  --lg-btn:linear-gradient(180deg,#5C8500 0%,#4A6B00 52%,#3D5900 100%);
  --lg-btn-shadow:inset 0 1px 0 rgba(255,255,255,.25),inset 0 -1px 0 rgba(0,0,0,.18),0 10px 26px rgba(74,107,0,.18),0 1px 2px rgba(0,0,0,.14);
  --lg-field:rgba(255,255,255,.66); --lg-field-focus:#FFFFFF; --lg-field-line:rgba(0,0,0,.1);
  --lg-field-inset:inset 0 1px 2px rgba(0,0,0,.06),0 1px 0 rgba(255,255,255,.5);
  --lg-soft:rgba(0,0,0,.05);
  /* Дровер мессенджера «Жидкое стекло» (прототип F, слово владельца 22.09.2026) — светлая пара; раздел web/messages.css */
  --lgd-ink: #1c1c1e;
  --lgd-ink-2: #55555a;
  --lgd-faint: #636366;
  --lgd-ghost: #aeaeb2;
  --lgd-icon: #6e6e73;
  --lgd-accent-fill: #3f5c00;
  --lgd-green: #248a3d;
  --lgd-red: #d70015;
  --lgd-bub: #ffffff;
  --lgd-bub-own: #e4f2b8;
  --lgd-bub-own-meta: #56681f;
  --lgd-dock: #fbfbfa;
  --lgd-drawer-line: rgba(0, 0, 0, .08);
  --lgd-shadow-drawer: -10px 0 30px rgba(0, 0, 0, .06);
  --lgd-wall: radial-gradient(110% 55% at 105% 105%, rgba(74, 107, 0, .05), transparent 60%), #eef0e6;
  --lgd-fill: rgba(255, 255, 255, .62);
  --lgd-fill-u: rgba(255, 255, 255, .70);
  --lgd-fill-thick: rgba(250, 250, 250, .84);
  --lgd-rim-a: rgba(255, 255, 255, 1);
  --lgd-rim-b: rgba(255, 255, 255, .35);
  --lgd-rim-c: rgba(255, 255, 255, .8);
  --lgd-glow: rgba(255, 255, 255, .75);
  --lgd-glow-press: rgba(255, 255, 255, 1);
  --lgd-hover: rgba(0, 0, 0, .05);
  --lgd-press: rgba(0, 0, 0, .09);
  --lgd-sel: rgba(0, 0, 0, .06);
  --lgd-sep: rgba(0, 0, 0, .08);
  --lgd-thumb: #ffffff;
  --lgd-thumb-sh: 0 1px 3px rgba(0, 0, 0, .12), 0 0 0 .5px rgba(0, 0, 0, .05);
  --lgd-tint-sh: 0 8px 20px rgba(74, 107, 0, .22), 0 2px 6px rgba(0, 0, 0, .1);
  --lgd-solid: #ffffff;
  --lgd-fill-hc: rgba(255, 255, 255, .96);
  --lgd-hc-line: rgba(0, 0, 0, .6);
  --lgd-pill: rgba(255, 255, 255, .7);
  --lgd-ring-c: rgba(74, 107, 0, .5);
  --lgd-ring-soft: rgba(74, 107, 0, .16);
  --lgd-drop-scrim: rgba(255, 255, 255, .3);
  --lgd-mute-bg: #e5e5ea;
  --lgd-mute-ink: #55555a;
  --lgd-on-accent: #fff;
  /* Лента и лоток дока (ТЗ — liquid-glass.html: .m .pic .t, .thumb .tp/.qx) — одинаковы в обоих тонах */
  --lgd-img-veil: rgba(0, 0, 0, .25);  /* #1167: 25 % в светлой */
  --lgd-up-veil: rgba(0, 0, 0, .4);
  --lgd-on-img: #fff;
  --lgd-chip-sh: 0 1px 4px rgba(0, 0, 0, .3);
}

/* Выделение текста — UA-дефолт на графите нечитаем */
[data-theme="finch"] ::selection { background: var(--accent); color: var(--on-accent); }
[data-theme="finch"][data-tone="light"] ::selection { background: #E4F2B8; color: var(--ink); }

/* ===== Мобильный брейкпоинт (issue #364) — ОДИН на весь фронт: ≤768px.
   Ниже него rail.js перестраивает раму (нижняя навигация, полноширинный
   верхний бар, navy-колонка — шторкой); страницы добирают своё в собственных
   @media (max-width: 768px). Здесь — только общее всем страницам. */
@media (max-width: 768px) {
  /* iOS Safari авто-зумит страницу при фокусе поля с font-size < 16px.
     !important осознанно: это единственный способ перебить шрифты полей всех
     тринадцати страниц одним правилом, не трогая их десктопный вид. */
  input, select, textarea { font-size: calc(16px*var(--ts,1)) !important; }

  /* Общий вид «пояснение» (issue #888): нейтральное пояснение на экранах
     сотрудников помечается классом nk-expl; на узком экране оно — одна строка,
     остальное — по круглой «?» у правого края этой строки (кнопку ставит
     rail.js только тем, кто в строку не влез; повторное нажатие сворачивает).
     На широком правил нет — вид как был. Предупреждения, ошибки, подтверждения
     действий, туры и инструкции в nk-expl НЕ помечаются (CLAUDE.md).
     Свёртку включает класс nk-clamp, который rail.js ставит только видимому
     блоку; :not([hidden]) и страховка — гоча #23: авторский display перебил бы
     атрибут hidden или display:none страницы. -webkit-box, а не nowrap: в части пояснений есть <br>. */
  .nk-expl.nk-clamp:not([hidden]):not(.open) {
    display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
  }
  .nk-expl[hidden] { display: none !important; }
  .nk-expl.nk-has-q { position: relative; padding-right: 34px; }
  /* Поле нажатия «?» — 32px и у свёрнутой строки: свёртка режет всё за
     пределами блока (overflow:hidden), поэтому строка с кнопкой сама становится
     32px высотой через line-height (текст по центру). Паддинг не годится —
     в нижний паддинг просвечивает вторая строка. Раскрытое — обычный интервал. */
  .nk-expl.nk-has-q.nk-clamp:not([hidden]):not(.open) { line-height: 32px; }
  .nk-expl-q {
    position: absolute; right: 0; top: 0; width: 32px; height: 32px;
    margin-top: calc((1lh - 32px) / 2); padding: 0; border: 0; background: transparent;
    color: var(--muted); cursor: pointer; font: inherit; line-height: inherit;
  }
  .nk-expl-q::before {
    content: "?"; display: inline-flex; align-items: center; justify-content: center;
    width: 18px; height: 18px; border-radius: 50%; border: 1px solid currentColor;
    font-size: calc(11px*var(--ts,1)); font-weight: 600;
  }
}

/* ===== Компоненты ДС Финч Корп 2 =====
   Язык макета docs/finch-topbar-mockup.html (macOS HIG) для экранов, которых
   в макете нет: настройки, файлы, агенты, интеграции, админка, журнал, логин и
   прочие служебные страницы. Правила ОБЛАСТНЫЕ — только внутри контейнеров
   этих страниц (.wrap, .box), поэтому реестр и лента index.html и дровер
   мессенджера (.nkmsg-ovl) их не видят. Префикс html[data-theme="finch"]
   поднимает специфичность над page-level <style> страниц, которые подключают
   ui.css раньше себя. Только токены — хардкода цветов нет.
   Размеры — сетка макета: отступы 24/12, контролы 28–30px, кегль 13px×--ts. */

/* — страница и заголовок — */
html[data-theme="finch"] .wrap { padding-top: 22px; }
html[data-theme="finch"] :is(.wrap, .box) { accent-color: var(--accent); }
html[data-theme="finch"] :is(.wrap .zone > b, .ptitle, .ihead h1, .apidocs-title) {
  font: 700 calc(22px*var(--ts,1))/1.2 var(--font); letter-spacing: -.3px; color: var(--ink);
}
html[data-theme="finch"] .ptitle::after { content: none; }

/* — вкладки страниц → сегментированный контрол (.ftabs макета) — */
html[data-theme="finch"] :is(.wrap .zone nav, .wrap .ptabs, .wrap .seg:not(.cell)) {
  display: inline-flex; gap: 0; padding: 2px;
  background: var(--seg-track); border: 1px solid var(--seg-track); border-radius: var(--r-sm);
  border-bottom: 1px solid var(--seg-track); flex-wrap: wrap;
}
/* отступы — только у вкладок страницы; сегмент внутри строки или шапки
   таблицы (.seg) встаёт по месту, без воздуха сверху и снизу */
html[data-theme="finch"] :is(.wrap .zone nav, .wrap .ptabs) { margin-top: 12px; margin-bottom: 18px; }
/* Шапка админ-зоны не уезжает при прокрутке (слово владельца 18.09.2026 по
   записи экрана журнала: «чтобы при скролле Администрирование не уезжало
   вверх а было зафиксировано»). Липнет под верхней полосой .fn-top; свой
   padding-top вместо отступа .wrap — чтобы при прилипании фон закрывал зазор,
   а в покое вид не менялся ни на пиксель. --zone-h пишет страница, у которой
   под шапкой есть своя липкая колонка (журнал). */
html[data-theme="finch"] .wrap > .zone {
  /* На телефоне шапка выше на верхнюю безопасную зону (#828) — липкий
     заголовок раздела отсчитывается от её нижней кромки, иначе прилипал бы
     под часами и уезжал под шапку. */
  position: sticky; top: calc(var(--top-h, 56px) + var(--sa-t, env(safe-area-inset-top, 0px))); z-index: 20;
  margin-top: -22px; padding-top: 22px; background: var(--bg);
}
html[data-theme="finch"] :is(.wrap .zone nav a, .wrap .ptabs button, .wrap .seg:not(.cell) button) {
  padding: 3px 14px; margin: 0; border: 0; border-radius: 6px; line-height: 18px;
  font: 500 calc(13px*var(--ts,1)) var(--font); color: var(--ink-2); background: transparent;
  text-decoration: none; cursor: pointer;
}
html[data-theme="finch"] :is(.wrap .zone nav a, .wrap .ptabs button, .wrap .seg:not(.cell) button):hover { color: var(--ink); }
html[data-theme="finch"] :is(.wrap .zone nav a.active, .wrap .ptabs button.active, .wrap .seg:not(.cell) button.on) {
  color: var(--ink); background: var(--seg-on); box-shadow: var(--seg-shadow); font-weight: 500;
}
/* отдельный сегментированный контрол (переключатель «Текст» и подобные) */
html[data-theme="finch"] .ds-seg {
  display: inline-flex; padding: 2px; background: var(--seg-track);
  border: 1px solid var(--seg-track); border-radius: var(--r-sm);
}
html[data-theme="finch"] .ds-seg button {
  padding: 3px 16px; border: 0; border-radius: 6px; line-height: 18px; cursor: pointer;
  font: 500 calc(13px*var(--ts,1)) var(--font); color: var(--ink-2); background: transparent;
}
html[data-theme="finch"] .ds-seg button:hover { color: var(--ink); }
html[data-theme="finch"] .ds-seg button.on { color: var(--ink); background: var(--seg-on); box-shadow: var(--seg-shadow); }
html[data-theme="finch"] .ds-seg + .thnote { display: block; margin-top: 8px; }

/* — подписи групп: строчными, как в сайдбарах macOS — */
html[data-theme="finch"] :is(.wrap, .box) :is(.eyebrow, .grp .cap, .thead .eyebrow, .dcap, .sect, .grouph, #toc .g) {
  font: 600 calc(11px*var(--ts,1)) var(--font); letter-spacing: 0; text-transform: none; color: var(--faint);
}
html[data-theme="finch"] .wrap .eyebrow { margin: 22px 0 8px 2px; }

/* — карточки и группы: сгруппированный блок macOS — */
html[data-theme="finch"] .wrap :is(.card, .create, .formbox, .aform, .panel, .costs, .uhead, .uacts) {
  background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: none;
}
html[data-theme="finch"] .wrap .card { padding: 16px 18px; }
html[data-theme="finch"] .wrap .card h2 { font: 600 calc(14px*var(--ts,1)) var(--font); color: var(--ink); letter-spacing: -.1px; }
html[data-theme="finch"] .wrap :is(.hint, .intro, .card .hint) { color: var(--ink-2); }

/* — поля ввода — */
html[data-theme="finch"] :is(.wrap, .box) :is(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]), select, textarea) {
  min-height: 30px; height: auto; padding: 5px 10px; border: 1px solid var(--line-strong);
  border-radius: var(--r-sm); background: var(--bg); color: var(--ink);
  font: calc(13px*var(--ts,1))/1.35 var(--font); box-shadow: none; outline: none;
}
html[data-theme="finch"] :is(.wrap, .box) :is(input:not([type=checkbox]):not([type=radio]), select, textarea):focus {
  border-color: var(--line-strong); box-shadow: var(--ring);
}
html[data-theme="finch"] :is(.wrap, .box) :is(input, select, textarea):disabled { opacity: .55; }
html[data-theme="finch"] :is(.wrap, .box) :is(input, textarea)::placeholder { color: var(--faint); }
html[data-theme="finch"] :is(.wrap, .box) label > span { font: 500 calc(12px*var(--ts,1)) var(--font); color: var(--ink-2); }

/* — кнопки: основная (графит/лайм), вторичная, опасная — */
html[data-theme="finch"] :is(.wrap, .box) :is(button.save, .create button, button.btn:not(.ghost):not(.danger):not(.sm), .abtn.primary, .submit, :is(button, a).add:not(.ghost), .newagent, .dl, form > button[type=submit]) {
  height: 30px; min-height: 30px; padding: 0 14px; border: 0; border-radius: var(--r-sm);
  background: var(--btn-solid); color: var(--on-solid); box-shadow: none; filter: none;
  font: 500 calc(13px*var(--ts,1)) var(--font); cursor: pointer; text-decoration: none;
}
html[data-theme="finch"] :is(.wrap, .box) :is(button.save, .create button, button.btn:not(.ghost):not(.danger):not(.sm), .abtn.primary, .submit, :is(button, a).add:not(.ghost), .newagent, .dl, form > button[type=submit]):hover {
  background: var(--btn-solid-hover); color: var(--on-solid); filter: none;
}
html[data-theme="finch"] :is(.wrap, .box) :is(button.plain, button.btn.ghost, button.btn.sm, .abtn:not(.primary), .add.ghost, .key-row button, .pw-note button, .more button, .acts button:not(.save), button.del, .msrv-status button, .msrv-acts button, .slot .edit button, button.sk-del) {
  height: 28px; min-height: 28px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--seg-track); color: var(--ink); box-shadow: none;
  font: 500 calc(12.5px*var(--ts,1)) var(--font); cursor: pointer;
}
html[data-theme="finch"] :is(.wrap, .box) :is(button.plain, button.btn.ghost, button.btn.sm, .abtn:not(.primary), .add.ghost, .key-row button, .pw-note button, .more button, .acts button:not(.save), button.del, .msrv-status button, .msrv-acts button, .slot .edit button, button.sk-del):hover {
  background: var(--tool-on); color: var(--ink); border-color: var(--line-strong);
}
html[data-theme="finch"] :is(.wrap, .box) :is(button.btn.danger, .abtn.danger, button.del:hover, button.del.arm, .key-row button:hover, .key-row button.arm, .acts button.danger:hover, button.btn.arm, button.sk-del:hover, button.sk-del.arm) {
  color: var(--red); border-color: var(--red-line); background: var(--red-bg);
}
html[data-theme="finch"] :is(.wrap, .box) button:disabled { opacity: .5; cursor: default; }

/* — таблицы как списки macOS — */
html[data-theme="finch"] .wrap table { border-collapse: collapse; }
html[data-theme="finch"] .wrap :is(th, thead th) {
  font: 600 calc(11px*var(--ts,1)) var(--font); letter-spacing: 0; text-transform: none;
  color: var(--faint); background: transparent; border-bottom: 1px solid var(--line); padding: 7px 12px;
}
html[data-theme="finch"] .wrap td { border-bottom: 1px solid var(--line-row); padding: 7px 12px; }
html[data-theme="finch"] .wrap tr:last-child td { border-bottom: 0; }
html[data-theme="finch"] .wrap tbody tr:hover td, html[data-theme="finch"] .wrap tr.row:hover td { background: var(--hover); }
/* #752: правило било сразу по карточке и по обёртке таблицы, и overflow: hidden
   гасил горизонтальный скролл — регресс #118 у .tbl («Последние ходы» журнала
   уезжали колонкой «Метки» за край и были недостижимы), а на /integrations/access
   ещё и у матрицы доступа, где страница сама просит overflow-x: auto и держит
   sticky-колонку логинов. Обрезка под радиус остаётся: auto обрезает так же, как
   hidden. Отдельный overflow-y не пишем — рядом с overflow-x: auto он вычисляется
   в auto сам (так работал и фикс #118). */
html[data-theme="finch"] .wrap :is(.card, .tbl):has(> table) { padding: 0; overflow-x: auto; border-radius: var(--r-md); }

/* — строки списков (файлы, интеграции, ключи) — */
html[data-theme="finch"] .wrap :is(.lrow, .item, .tok, .key-row, .base-row) { border-bottom-color: var(--line-row); }
html[data-theme="finch"] .wrap :is(.lrow, .item):hover { background: var(--hover); }

/* — чипы и бейджи: только форма, цвет оставляем варианту — */
html[data-theme="finch"] :is(.wrap, .box) :is(.chip, .pill, .badge, .off-chip) {
  border-radius: var(--r-pill); border-color: transparent; padding: 1px 8px;
  font: 500 calc(11px*var(--ts,1)) var(--font); letter-spacing: 0; text-transform: none;
}

/* — плашки состояний и пустые состояния — */
html[data-theme="finch"] :is(.wrap, .box) :is(.msg, .status, .nokey, .key-note, .pw-note, .err, .lock-note) { border-radius: var(--r-md); }
html[data-theme="finch"] .wrap :is(.empty, .empty-note, .ag-empty, .none) {
  color: var(--ink-3); font-size: calc(13px*var(--ts,1)); text-align: center; padding: 28px 16px;
}
html[data-theme="finch"] .wrap :is(.empty, .ag-empty) b { color: var(--ink); font-weight: 600; }

/* — код и моно — */
html[data-theme="finch"] :is(.wrap, .box) code { border-radius: 6px; }

/* — служебные экраны «Администрирования»: одна контент-колонка — */
/* Все вкладки хаба (пользователи, журнал, изменения в 1С, обезличивание,
   интеграции, модель) держат одну ширину: иначе сегменты сверху прыгают
   по горизонтали при переходе 1180 → 1080 → 900. */
html[data-theme="finch"] .wrap:has(.zone nav) { max-width: 1080px; }
/* карточка-реестр с полосой фильтров или одной таблицей — без внутреннего
   поля: строки идут от края до края, как список macOS в сгруппированном блоке */
html[data-theme="finch"] .wrap .card:is(:has(> .bar), :has(> .tbl):not(:has(> :not(.tbl, .more, .morebar)))) {
  padding: 0; overflow: hidden;
}
html[data-theme="finch"] .wrap .card > .bar {
  padding: 10px 12px; gap: 8px; border-bottom: 1px solid var(--line);
}
html[data-theme="finch"] .wrap :is(.card, .create) > .eyebrow:first-child { margin-top: 0; }
html[data-theme="finch"] .wrap .costs { overflow: hidden; }
html[data-theme="finch"] .wrap .costs > .bar { padding: 10px 12px; border-bottom: 1px solid var(--line); }
/* «← к списку» — ссылка акцентом, как в макете */
html[data-theme="finch"] .wrap :is(a, button).back { color: var(--accent); }
html[data-theme="finch"] .wrap :is(a, button).back:hover { color: var(--ink); }
/* данные в строках — Inter с табличными цифрами, моно остаётся только коду */
html[data-theme="finch"] .wrap :is(td.date, td.num, td.when, .uhead .date, .bar .note, td .note, .hrow time, .edit .when, td.obj .onum, .ik) {
  font-family: var(--font); font-variant-numeric: tabular-nums; letter-spacing: 0;
}
html[data-theme="finch"] .wrap td.num { color: var(--ink-2); }
html[data-theme="finch"] .wrap :is(.cap2, .osl-exc .cap2) {
  font: 600 calc(11px*var(--ts,1)) var(--font); letter-spacing: 0; text-transform: none; color: var(--faint);
}

/* ── Монограммы (Финч Корп 2) ─────────────────────────────────────────────
   Один вид аватара на всех экранах: цвет — класс .av1….av6 (хэш логина, тот же,
   что в мессенджере), буквы — 40% диаметра и НЕ умножаются на --ts: круг от
   масштаба текста не растёт, и буквы 112% распирали его (замечание Артура
   14.09.2026). Диаметр каждого аватара задаёт --av-d рядом с его width. */
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av1 { --ava-bg: var(--av-bg1); --ava-ink: var(--av-tx1); }
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av2 { --ava-bg: var(--av-bg2); --ava-ink: var(--av-tx2); }
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av3 { --ava-bg: var(--av-bg3); --ava-ink: var(--av-tx3); }
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av4 { --ava-bg: var(--av-bg4); --ava-ink: var(--av-tx4); }
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av5 { --ava-bg: var(--av-bg5); --ava-ink: var(--av-tx5); }
html[data-theme="finch"] body :is(.nkmsg, .nkmsg-fwd, .nkmsg-ctx, .nkmsg-toasts, .fn-top, .tb-menu, .pf-head) .av6 { --ava-bg: var(--av-bg6); --ava-ink: var(--av-tx6); }
html[data-theme="finch"] body .pf-head .pf-ava { --av-d: 56px; background: var(--ava-bg, var(--av-bg5)); color: var(--ava-ink, var(--av-tx5)); }
html[data-theme="finch"] body .pf-head .pf-ava {
  font-size: calc(var(--av-d) * .4); font-weight: 600; letter-spacing: 0; line-height: 1; text-transform: uppercase;
}

/* ── Вход в мессенджер (issue #870) ──────────────────────────────────────
   Общий виджет web/msgr-connect.js: карточка request_credentials в ленте
   (.mc-hitl — поля .creds-form, кнопки .hitl-btns) и раздел «Мессенджеры» в
   Настройках (.mc-page — карточка .wrap .card). QR — тёмным по светлому в
   обоих тонах, как на /install. Веса селекторов строки чата выше голых
   правил страниц по label/input (.creds-form input, label > span). */
.mc { display: grid; gap: 10px; min-width: 0; }
.mc .mc-form { display: grid; gap: 10px; min-width: 0; }
/* В карточке ленты .creds-form уже 440px: QR и шаги рядом там не помещались —
   шаги ломались по слову. Шире только форма, поля и список — прежней ширины. */
.mc-hitl .mc-form { max-width: 600px; }
.mc-hitl .mc-form > :is(label, .mc-list) { max-width: 440px; }
.mc .mc-note, .mc .mc-count { font-size: calc(12px*var(--ts,1)); color: var(--ink-3); }
.mc .mc-err { font-size: calc(13px*var(--ts,1)); color: var(--red); }
.mc .mc-who { font-size: calc(13px*var(--ts,1)); color: var(--ink-2); }
.mc .mc-who b { font-weight: 600; color: var(--ink); }
.mc .mc-seg { justify-self: start; }
.mc-hitl .mc-seg { display: inline-flex; }
.mc-hitl .mc-seg button {
  height: auto; padding: 1px 1.2ch; border: 1px solid var(--line-strong); border-radius: 0;
  background: none; color: var(--ink-3); font: calc(12px*var(--ts,1)) var(--mono); cursor: pointer;
}
.mc-hitl .mc-seg button + button { border-left: 0; }
.mc-hitl .mc-seg button.on { color: var(--ink); background: var(--line); }
.mc .mc-qrbox { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 14px 18px; }
.mc .mc-qr { flex: none; min-width: 120px; min-height: 120px; line-height: 0; border-radius: var(--r-sm); overflow: hidden; }
.mc .mc-qr svg { display: block; }
.mc .qr-paper { fill: var(--qr-paper); }
.mc .qr-ink { fill: var(--qr-ink); }
.mc .mc-col { flex: 1 1 200px; min-width: 0; display: grid; gap: 8px; align-content: start; }
.mc .mc-steps { margin: 0; padding-left: 1.3em; display: grid; gap: 4px; font-size: calc(13px*var(--ts,1)); color: var(--ink-2); }
.mc .mc-open {
  justify-self: start; padding: 5px 12px; border: 1px solid var(--line-strong); border-radius: var(--r-sm);
  color: var(--ink); text-decoration: none; font-size: calc(13px*var(--ts,1));
}
.mc .mc-list {
  max-height: 264px; overflow: auto; overscroll-behavior: contain;
  border: 1px solid var(--line-strong); border-radius: var(--r-sm);
}
.mc .mc-row {
  display: flex; flex-direction: row; align-items: center; gap: 10px; flex: none; min-width: 0;
  margin: 0; padding: 6px 10px; cursor: pointer; font-size: calc(13px*var(--ts,1)); color: var(--ink);
}
.mc .mc-row + .mc-row { border-top: 1px solid var(--line); }
.mc .mc-row:hover { background: var(--hover, var(--line)); }
.mc .mc-row > input[type=checkbox] {
  flex: none; width: 15px; height: 15px; min-height: 0; margin: 0; padding: 0;
  border: 0; box-shadow: none; background: none; accent-color: var(--accent);
}
.mc .mc-row > .mc-nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: inherit; color: inherit; }
.mc .mc-row > .mc-tp { flex: none; font-size: calc(11.5px*var(--ts,1)); color: var(--ink-3); }
.mc .mc-list > .mc-empty { padding: 14px 10px; font-size: calc(13px*var(--ts,1)); color: var(--ink-3); }
.mc-page .mc-acts { margin-top: 2px; }
/* Плашка статуса в Настройках: длинная строка (аккаунт и закрытые чаты)
   переносится сама, а «Закрыть чаты» и «Отключить» стоят справа одним рядом. */
.status > .mc-status { flex: 1 1 14ch; min-width: 0; }
.status > .mc-status small { display: inline-block; }
/* карточка в ленте Финч Корп — терминальный слой карточек разрешения */
html[data-theme="finch"] .mc-hitl :is(.mc-note, .mc-count, .mc-list > .mc-empty, .mc-row > .mc-tp, .mc-who) { color: var(--term-dim); }
html[data-theme="finch"] .mc-hitl :is(.mc-steps, .mc-row) { color: var(--term-fg); }
html[data-theme="finch"] .mc-hitl .mc-who b { color: var(--term-bright); }
html[data-theme="finch"] .mc-hitl :is(.mc-list, .mc-qr, .mc-open) { border-radius: 0; }
html[data-theme="finch"] .mc-hitl :is(.mc-list, .mc-open, .mc-seg button) { border-color: var(--term-faint); }
html[data-theme="finch"] .mc-hitl .mc-row + .mc-row { border-top-color: var(--term-rule); }
html[data-theme="finch"] .mc-hitl .mc-seg button { color: var(--term-dim); }
html[data-theme="finch"] .mc-hitl .mc-seg button.on { color: var(--term-bright); background: var(--term-band); }
html[data-theme="finch"] .mc-hitl .mc-open { color: var(--term-fg); }
html[data-theme="finch"] .mc-page .mc-list { background: var(--bg); border-color: var(--line); }

