/* meetings.css · экран «Встречи» (срез 1). Только свои классы; общие — в styles.css. */
.page-tabs { display: flex; align-items: center; gap: 12px; margin: 0 0 18px; flex-wrap: wrap; }
.page-tabs .seg button, .page-tabs .seg a { padding: 7px 14px; }
.page-tabs .seg button:disabled { color: var(--fg-faint); cursor: not-allowed; }
.page-tabs .seg a:hover:not(.active) { background: var(--paper-mute); color: var(--fg); }
.filters { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: -6px 0 14px; }
.filters .field { padding: 6px 10px; min-width: 220px; }
.filters .field.grow { flex: 1 1 240px; min-width: 200px; }
.filters .spacer { flex: 1; }
.btn.icon-only { padding: 4px 6px; display: inline-flex; align-items: center; }
.filters .btn.icon-only { padding: 6px 8px; }
.pop-empty { padding: 10px 10px 4px; font-size: var(--fs-sm); color: var(--fg-soft); }
.pop-empty .sub { display: block; font-size: var(--fs-xs); color: var(--fg-label); margin-top: 3px; }
.found { font-size: var(--fs-xs); color: var(--fg-label); display: inline-flex; gap: 8px; align-items: center; white-space: nowrap; }
.found[hidden] { display: none; }
.found b { color: var(--fg); font-weight: 600; }
.lnk { border: none; background: transparent; padding: 0; font: inherit; color: var(--info); cursor: pointer; text-decoration: underline dotted; }
.bulk { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 12px; margin: -4px 0 10px; background: var(--info-bg); border: 1px solid #C7D2FE; border-radius: var(--radius); font-size: var(--fs-sm); animation: jd-in var(--dur-base) var(--ease-out); }
.bulk[hidden] { display: none; }
.bulk .bulk-n { font-weight: 600; color: var(--info); margin-right: 4px; white-space: nowrap; }
.bulk .spacer { flex: 1; }
.th-sort { border: none; background: transparent; padding: 0; font: inherit; color: inherit; cursor: pointer; text-transform: inherit; letter-spacing: inherit; }
.th-sort:hover { color: var(--fg); }
.th-sep { color: var(--fg-faint); }
.th-sort-sub { text-transform: none; letter-spacing: 0; font-weight: 500; color: var(--fg-label); }
.th-wrap { display: inline-flex; align-items: center; gap: 4px; }
.th-filter { border: none; background: transparent; padding: 2px; display: inline-flex; color: var(--fg-faint); cursor: pointer; border-radius: 4px; }
.th-filter:hover:not(:disabled) { color: var(--fg); background: var(--paper-mute); }
.th-filter.on { color: var(--info); }
.th-filter:disabled { opacity: .35; cursor: not-allowed; }
#list-card .tbl { table-layout: fixed; min-width: 760px; }
#list-card .tbl col.c-sel { width: 36px; }
#list-card .tbl col.c-date { width: 124px; }
#list-card .tbl col.c-ppl { width: 18%; }
#list-card .tbl col.c-proj { width: 148px; }
#list-card .tbl col.c-st { width: 124px; }
#list-card .tbl col.c-thr { width: 150px; }
#list-card .tbl col.c-act { width: 110px; }
@media (max-width: 900px) { #list-card .tbl { table-layout: auto; min-width: 600px; } #list-card .tbl col.c-ppl { width: 0; } }
#list-card .tbl tbody td { padding: 10px 12px; }
#list-card .tbl thead th { padding: 11px 12px; }
#list-card .tbl td.c-sel, #list-card .tbl th.c-sel { padding-left: 14px; padding-right: 0; }
#list-card .tbl input[type=checkbox] { width: 14px; height: 14px; margin: 0; accent-color: var(--fg); cursor: pointer; display: block; }
#list-card .tbl tbody td.hide-sm, #list-card .tbl thead th.hide-sm { overflow: hidden; }
#list-card .tbl td.nowrap, #list-card .tbl th.nowrap { white-space: nowrap; }
#list-card .job-row.sel > td { background: var(--info-bg); }
#list-card .job-row .row-actions { opacity: 0; gap: 4px; }
#list-card .job-row:hover .row-actions, #list-card .job-row.open .row-actions, #list-card .job-row:focus-within .row-actions { opacity: 1; }
#list-card .mt-name { font-size: 13.5px; font-weight: 500; color: var(--fg); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
#list-card .mt-sub { font-size: var(--fs-xs); color: var(--fg-label); margin-top: 2px; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
#list-card .mt-sub.orig { font-family: var(--font-mono); font-size: 11px; color: var(--fg-faint); }
#list-card .job-row.open .mt-name, #list-card .job-row.open .mt-sub { -webkit-line-clamp: unset; }
#list-card .job-name-cell { align-items: flex-start; }
#list-card .job-name-cell > span:last-child { min-width: 0; }
#list-card .job-caret { margin-top: 3px; }
#list-card .tfoot td { font-size: var(--fs-sm); color: var(--fg-soft); background: var(--paper-mute); border-top: 1px solid var(--border-faint); }
#list-card .tfoot b { font-weight: 600; color: var(--fg); }
.jd-list { margin: 0; padding-left: 16px; font-size: 12.5px; color: var(--fg-soft); }
.jd-list li + li { margin-top: 3px; }
.jd-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
/* ── Единый язык блока «Встречи» ─────────────────────────────────────
   Две формы на весь блок. Сущность (проект, направление, имя в окне) —
   тег .tg — компонент всей панели, живёт в styles.css (см. там «Тег
   проекта»); здесь только контейнер .tgs. Состояние (протокол, задачи,
   оплата, «скрыто», «спор») — пилюля .st со скруглением 999, всегда со
   значком, цвет — смысл. Участники в строке — текст через запятую, не
   облако рамок. */
.tgs { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }

.st { display: inline-flex; align-items: center; gap: 4px; height: 22px; padding: 0 7px 0 6px; border-radius: var(--radius-pill);
      border: none; background: var(--idle-bg); color: var(--idle); font-family: var(--font-sans); font-size: var(--fs-xs); font-weight: 500;
      font-variant-numeric: tabular-nums; white-space: nowrap; cursor: default; text-transform: none; letter-spacing: 0; }
.st svg { flex: none; }
.st.ok { background: var(--ok-bg); color: var(--ok); }
.st.warn { background: var(--warn-bg); color: var(--warn); }
.st.err { background: var(--err-bg); color: var(--err); }
.st.info { background: var(--info-bg); color: var(--info); }
.st.idle { background: var(--idle-bg); color: var(--idle); }
.st.off { background: transparent; color: var(--fg-faint); }
.st.btn-like { cursor: pointer; }
.st.btn-like:hover { box-shadow: 0 0 0 1px currentColor inset; }
.st:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }
.sts { display: inline-flex; gap: 3px; align-items: center; }
/* подсказка первой пилюли в колонке прижата к левому краю, а не к центру —
   иначе уезжает под столбец слева (тултип общий, [data-tip] в styles.css) */
.sts .st[data-tip]:first-child::after { left: 0; transform: translateX(0) translateY(3px); }
.sts .st[data-tip]:first-child:hover::after, .sts .st[data-tip]:first-child:focus-visible::after { transform: translateX(0); }
.sts .st[data-tip]:first-child::before { left: 12px; }

.ppl { font-size: 12.5px; color: var(--fg-soft); line-height: 1.5; }
.pp { border: none; background: transparent; padding: 0; font: inherit; color: inherit; cursor: pointer;
      border-bottom: 1px solid transparent; transition: color var(--dur-fast), border-color var(--dur-fast); }
.pp:hover { color: var(--fg); border-bottom-color: var(--fg-faint); }
/* не привязан к контакту — пунктирное подчёркивание и приглушённый цвет */
.pp.loose { color: var(--fg-muted); border-bottom: 1px dashed var(--fg-faint); }
/* отмечен как фильтр — жирный, привязка тут ни при чём */
.pp.on { color: var(--fg); font-weight: 600; }
.pp-sep { color: var(--fg-faint); }
.pp-more { color: var(--fg-label); font-family: var(--font-mono); font-size: 11px; cursor: default; }

/* колонка «Проект»: тег и строка-причина под ним */
.pj-cell { display: flex; flex-direction: column; gap: 3px; align-items: flex-start; min-width: 0; }
.pj-why { font-size: 11px; color: var(--fg-label); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

/* колонка «Нити»: названия-ссылки, по одной в строку */
.thr-list { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.thr-lnk { font-size: 12.5px; color: var(--fg-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
           border-bottom: 1px solid transparent; align-self: flex-start; max-width: 100%; }
.thr-lnk:hover { color: var(--info); border-bottom-color: var(--info); }
.thr-none { font-size: 12px; color: var(--fg-faint); }

/* раскрытая строка: шапка из тегов, две колонки — содержание слева, обработка справа */
.xh { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 2px 0 8px; }
.xh .why { font-size: var(--fs-xs); color: var(--fg-label); margin-left: 4px; }
.xg { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 14px 28px; margin-top: 12px; align-items: start; }
@media (max-width: 760px) { .xg { grid-template-columns: 1fr; } }
.xcol { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.xs { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.xs .k { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--fg-label);
         display: flex; align-items: center; gap: 8px; }
.xs .v { font-size: 12.5px; color: var(--fg-muted); overflow-wrap: anywhere; }
.xs .mn-block .jd-desc { margin-bottom: 0; }
.xs .jd-actions { margin-top: 6px; }
.xfoot { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; align-items: center; padding-top: 12px; border-top: 1px solid var(--border-faint); }
.xfoot .sp { flex: 1; }

/* Экран «Встречи» и его вкладки шире остальной панели: таблицы с
   восемью колонками в 1060px не помещаются, справа оставалось поле. */
#meetings-root, #projects-root, #tasks-root, #dir-root, #dp-root, #threads-root, #ms-root { max-width: none; }
#fpop { position: fixed; z-index: 45; width: 300px; top: 0; left: 0; }
.pop-menu { display: flex; flex-direction: column; gap: 1px; }
.pop-menu button { display: flex; align-items: center; gap: 8px; text-align: left; padding: 7px 10px; border: none; background: transparent; border-radius: var(--radius-sm); font-size: var(--fs-sm); cursor: pointer; width: 100%; }
.pop-menu button:hover:not(:disabled) { background: var(--paper-mute); }
.pop-menu button:disabled { color: var(--fg-faint); cursor: not-allowed; }
.pop-menu button svg { color: var(--fg-muted); flex: none; }
.pop-menu button:disabled svg { color: var(--fg-faint); }
.pop-menu .cnt { margin-left: auto; font-family: var(--font-mono); font-size: 10.5px; color: var(--fg-label); }
.pop-menu .saved-row .th-filter { flex: none; width: auto; padding: 4px; display: inline-flex; }
.pop-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 8px 2px; border-top: 1px solid var(--border-faint); margin-top: 6px; font-size: var(--fs-xs); }
.pop-foot .field { flex: 1; margin: 0; }
#fpop .field { margin: 2px 6px 6px; padding: 5px 9px; min-width: 0; display: flex; }
#fpop .field input { font-size: var(--fs-sm); }
.tp-name { font-size: var(--fs-h2); font-weight: 600; padding: 0 10px; line-height: 1.3; }
.tp-sub { font-size: var(--fs-xs); color: var(--fg-label); padding: 3px 10px 0; }
.pop-actions { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 10px 6px; }
.pop-actions .btn.sm { padding: 5px 9px; }
.pop-chip { padding: 8px 10px 2px; }
.saved-row { display: flex; align-items: center; gap: 4px; }
.saved-row > button:first-child { flex: 1; min-width: 0; }
.saved-row .nm { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.saved-row .cnt { white-space: nowrap; max-width: 45%; overflow: hidden; text-overflow: ellipsis; }
.doc-modal { background: var(--paper); border-radius: var(--radius-lg); box-shadow: var(--shadow-modal); width: min(920px, 94vw); max-height: 92vh; display: flex; flex-direction: column; overflow: hidden; }
.doc-bar { display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--paper-card); border-bottom: 1px solid var(--border); }
.doc-bar .t { font-weight: 600; font-size: var(--fs-sm); }
.doc-bar .s { color: var(--fg-label); font-size: var(--fs-xs); }
.doc-bar .sp { flex: 1; }
.doc-scroll { overflow: auto; padding: 22px; }
.tr-doc { max-width: 720px; margin: 0 auto; background: var(--paper-card); padding: 28px 36px; border-radius: var(--radius-lg); border: 1px solid var(--border); }
.tr-doc h2 { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--fg-label); margin: 18px 0 8px; }
.tr-doc h2:first-child { margin-top: 0; }
.tr-doc h3 { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--fg-label); margin: 18px 0 8px; }
.tr-doc p { margin: 0 0 8px; font-size: var(--fs-sm); line-height: 1.55; }
.tr-doc ul { margin: 0 0 8px; padding-left: 18px; font-size: var(--fs-sm); }
.tr-doc ul li + li { margin-top: 4px; }
.tr-doc .tr-meta { display: flex; gap: 14px; flex-wrap: wrap; font-size: var(--fs-xs); color: var(--fg-label); margin-bottom: 14px; }

/* --- срез 2: проекты и участники --- */
/* тег проекта — .tg (см. выше): fact / rule / guess / none / warn */
.pop-note.prop { background: var(--info-bg); border-radius: var(--radius-sm); padding: 8px 10px; color: var(--fg-soft); }
.pop-note.warn { background: var(--warn-bg); border-radius: var(--radius-sm); padding: 8px 10px; color: var(--warn); }
.pop-foot.col { flex-direction: column; align-items: stretch; gap: 6px; }
.check-line.gen { align-items: flex-start; }
.gen-stat { padding: 0 10px 6px; font-size: var(--fs-xs); color: var(--fg-label); }
/* Тумблеры имён у кандидата «один из участников»: отмеченное имя — как
   активный тег списка, снятое — как обычный чип. Отступ слева равняет их
   по подписи строки, а не по её флажку. */
.who { display: flex; flex-wrap: wrap; gap: 5px; padding: 0 10px 4px 30px; }
.gen-stat.who-stat { padding-left: 30px; }
.gen-stat .warn { color: var(--warn); }
/* имена-тумблеры — .tg с aria-pressed (см. выше) */
/* Отказ в окне обобщения — кнопка того же веса, что «Создать правило»,
   окрашенная как пауза в «Работах»: заливка янтарём, белый текст. */
.btn.warn { background: var(--warn-dot); color: var(--fg-on-ink); }
.btn.warn:hover { background: var(--warn); }

/* --- вкладки «Проекты» и «Участники» --- */
#pj-card .tbl, #sp-card .tbl { table-layout: fixed; min-width: 760px; }
/* Реестр проектов (редизайн 19.09.2026, по образцу /directions): имя —
   ссылка на встречи проекта, слаг и описание второй строкой; «Привязки» —
   пилюли .st; «Правило» — сводка-кнопка, она же раскрывает строку; встречи
   за 90 дней — полоска доли; действия проявляются, а не выскакивают. */
#pj-card .tbl { min-width: 860px; }
#pj-card .tbl col.c-pj-name { width: 27%; }
#pj-card .tbl col.c-pj-rules { width: 230px; }
#pj-card .tbl col.c-pj-n { width: 150px; }
#pj-card .tbl col.c-pj-act { width: 96px; }
/* Колонка «В нитях» в реестре проектов: тумблер решает, разбирает ли Клерк
   встречи проекта на нити (срез встреч 8a — раньше эти тумблеры стояли
   отдельным блоком на экране нитей). */
#pj-card .tbl col.c-pj-thr { width: 78px; }
#pj-card .tbl th.thr-th, #pj-card .tbl td.thr-td { text-align: center; }
.thr-cell { display: inline-flex; }
.thr-cell .switch { margin-top: 0; }
#pj-card .tbl tbody tr.job-row td { vertical-align: top; padding-top: 12px; padding-bottom: 12px; }
#pj-card .tbl tbody td.num { white-space: nowrap; }
#pj-card .job-row { cursor: default; }
#pj-card .job-name-cell { display: flex; align-items: flex-start; max-width: 100%; }
#pj-card .job-name-cell > span { min-width: 0; flex: 1; }
#pj-card .pname { display: inline-block; font-size: 13.5px; font-weight: 500; color: var(--fg); line-height: 1.4;
                  transition: color var(--dur-fast) var(--ease-out); }
#pj-card .pname:hover { color: var(--info); }
#pj-card .pname:focus-visible { outline: 2px solid var(--info); outline-offset: 2px; border-radius: 3px; }
#pj-card .psub { display: flex; gap: 8px; align-items: baseline; min-width: 0; max-width: 100%; }
#pj-card .psub .pj-slug { flex: none; }
#pj-card .psub .about { min-width: 0; font-size: var(--fs-xs); color: var(--fg-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#pj-card .pbind { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
#pj-card .pbind .st > span { overflow: hidden; text-overflow: ellipsis; max-width: 150px; }
#pj-card .pbind .st.idle { background: var(--paper-mute); color: var(--fg-muted); }
#pj-card .pbind-none { color: var(--fg-faint); font-family: var(--font-mono); font-size: var(--fs-xs); }
#pj-card .prule { display: inline-flex; align-items: flex-start; gap: 6px; padding: 2px 6px 2px 0; border: none; background: transparent;
                  font: inherit; font-size: var(--fs-sm); color: var(--fg-soft); text-align: left; cursor: pointer; border-radius: 4px; max-width: 100%;
                  transition: color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out); }
#pj-card .prule:hover { color: var(--fg); background: var(--paper-mute); }
#pj-card .prule:focus-visible { outline: 2px solid var(--info); outline-offset: 1px; }
#pj-card .prule[aria-expanded="true"] { color: var(--fg); }
#pj-card .prule .dexp { flex: none; margin-top: 3px; display: inline-block; color: var(--fg-muted);
                        transition: transform var(--dur-fast) var(--ease-out); }
#pj-card .prule[aria-expanded="true"] .dexp { transform: rotate(180deg); }
#pj-card .prule .l { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; }
#pj-card .prule .l.dim { color: var(--fg-muted); font-family: var(--font-mono); font-size: var(--fs-xs); }
#pj-card .prule .l .k { color: var(--fg-label); font-size: var(--fs-xs); margin-right: 4px; }
#pj-card .pr-note { display: block; margin-top: 4px; }
#pj-card .dbar { display: inline-flex; align-items: center; gap: 10px; justify-content: flex-end; font-variant-numeric: tabular-nums; }
#pj-card .dbar i { display: inline-block; width: 56px; height: 4px; border-radius: 2px; background: var(--border-strong); position: relative; overflow: hidden; }
#pj-card .dbar i::after { content: ""; position: absolute; inset: 0; width: var(--w, 0%); background: var(--c, var(--idle-dot)); border-radius: 2px; }
#pj-card .dbar .n { min-width: 2ch; text-align: right; }
#pj-card .dtot { display: block; margin-top: 2px; font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--fg-faint); }
#pj-card .thr-cell .switch { margin-top: 2px; }
#pj-card td.pf-cell { padding: 0; }
/* раскрытая строка: пустое состояние редактора правил и сегмент вида */
#pj-card .jd-note { font-size: var(--fs-sm); color: var(--fg-soft); }
#pj-card .jd-note .sub { display: block; font-size: var(--fs-xs); color: var(--fg-label); margin-top: 2px; }
#pj-card .pj-form { align-items: center; }
#pj-card .seg-sm { border-radius: var(--radius-sm); }
#pj-card .seg-sm button { padding: 4px 10px; font-size: var(--fs-xs); line-height: 18px; }
#pj-card .seg-sm button:focus-visible { outline: 2px solid var(--info); outline-offset: -2px; }
#pj-card .pj-form .field.grow { flex: 1 1 220px; min-width: 180px; padding: 5px 10px; }
#pj-card .pj-form .field.grow[hidden] { display: none; }
/* заголовок группы: имя направления — ссылка на его страницу */
.dgrp-name a:hover { color: var(--info); }
.dgrp-name a:focus-visible { outline: 2px solid var(--info); outline-offset: 2px; border-radius: 3px; }
/* строка-форма проекта: подписи над полями, вторая полоса — календарь, счёт, режим */
.dform.pf { gap: 10px 12px; }
.dform.pf .lf { display: flex; flex-direction: column; gap: 4px; flex: 1 1 200px; min-width: 160px; }
.dform.pf .lf.w2 { flex-basis: 260px; }
.dform.pf .lf .k { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--fg-label); }
.dform.pf .lf .field { display: flex; }
.dform.pf .brk { flex-basis: 100%; height: 0; }
.dform.pf .check-row { align-self: flex-end; padding-bottom: 7px; }
.dform.pf .acts { display: inline-flex; gap: 10px; align-items: center; align-self: flex-end; padding-bottom: 2px; }
/* «Встречи без проекта» — не проект, строки в реестре ей нет: подвал карточки. */
.pj-foot { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 12px 16px;
  border-top: 1px solid var(--border-faint); background: var(--paper-mute); }
.pj-foot .check-row { align-items: center; }
.pj-foot .check-sub { color: var(--fg-label); font-size: var(--fs-xs); }
.pj-foot-note { font-size: var(--fs-xs); color: var(--fg-label); margin-left: auto; max-width: 40ch; }
.pj-slug { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--fg-faint); }
.pj-rule { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size: var(--fs-sm); }
.pj-rule .cnt { color: var(--warn); font-size: var(--fs-xs); }
.pj-rule .rm { margin-left: auto; }
.pj-form { display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.sp-alias { font-family: var(--font-mono); font-size: var(--fs-xs); color: var(--fg-faint); }
.mt-name .st, #sp-card .mono-dim + .st { margin-left: 6px; vertical-align: middle; }
/* Имя из contact_lost: не привязка, а улика, ждущая импорта — пилюля
   .st.warn, а не спокойная серая «скрыто»: строка требует действия. */
/* Участники (редизайн 19.09.2026): чипы-отборы, имя и контакт — ссылки,
   «Привязать» вместо прочерка, действия видны всегда, на телефоне — меню «⋯». */
.sp-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
.sp-chips .tg { height: 26px; padding: 0 11px; }
.sp-chips .tg b { font-family: var(--font-mono); font-weight: 500; font-size: 11px; color: var(--fg-label); }
.sp-chips [aria-pressed="true"] b { color: var(--fg-on-ink); opacity: .7; }
#sp-card .tbl tbody td { padding: 9px 18px; }
#sp-card .tbl col.c-sp-contact { width: 30%; }
#sp-card .tbl col.c-sp-n { width: 84px; }
#sp-card .tbl col.c-sp-last { width: 120px; }
#sp-card .tbl col.c-sp-act { width: 148px; }
#sp-card .sp-name { font-size: 13.5px; font-weight: 500; color: var(--fg); text-decoration: none; }
#sp-card .sp-name:hover { color: var(--info); text-decoration: underline; text-underline-offset: 3px; }
#sp-card tr.noise .sp-name { color: var(--fg-muted); }
#sp-card .sp-name + .st { margin-left: 6px; vertical-align: middle; }
#sp-card .sp-contact { color: var(--fg); text-decoration: none; }
#sp-card .sp-contact:hover { color: var(--info); text-decoration: underline; text-underline-offset: 3px; }
#sp-card .sp-bind { border: none; background: none; padding: 0; font: inherit; font-size: var(--fs-sm); color: var(--info); cursor: pointer;
                    text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 3px; transition: text-decoration-color var(--dur-fast); }
#sp-card .sp-bind:hover { text-decoration-color: currentColor; }
#sp-card .sp-bind:disabled { color: var(--fg-label); cursor: not-allowed; text-decoration: none; }
#sp-card .sp-bind svg { vertical-align: -2px; margin-right: 4px; }
#sp-card td.num.sp-last { white-space: nowrap; color: var(--fg-soft); }
#sp-card .row-actions { visibility: visible; opacity: .45; transition: opacity var(--dur-fast) var(--ease-out); }
#sp-card tr:hover .row-actions, #sp-card tr:focus-within .row-actions { opacity: 1; }
#sp-card .btn.ghost.sm.icon-only { width: 30px; height: 30px; padding: 0; justify-content: center; }
#sp-card .sp-more { display: none; }
#sp-card .th-sort.on { color: var(--fg); }
#sp-card .sp-foot { padding: 12px 18px 14px; font-size: var(--fs-sm); color: var(--fg-label); border-top: 1px solid var(--border-faint); }
#sp-card .sp-foot b { color: var(--fg-soft); font-weight: 500; }
.sp-hint { margin: 12px 0 0; }
#sp-hint-long { margin-top: 8px; }
#fpop .sp-menu button.danger, #fpop .sp-menu button.danger svg { color: var(--err); }
#fpop .pop-list.pop-menu .cnt { color: var(--fg-label); }
@media (max-width: 760px) {
  #projects-root .block-head { flex-wrap: wrap; }
  #projects-root .block-head .field { min-width: 0; flex: 1 1 120px; }
  #sp-card .tbl { min-width: 0; table-layout: fixed; }
  #sp-card .tbl col.c-sp-last, #sp-card .tbl .sp-last, #sp-card .tbl th.th-last { display: none; }
  #sp-card .tbl col.c-sp-contact { width: 34%; }
  #sp-card .tbl col.c-sp-n { width: 60px; }
  #sp-card .tbl col.c-sp-act { width: 48px; }
  #sp-card .row-actions > *:not(.sp-more) { display: none; }
  #sp-card .sp-more { display: inline-flex; }
  #sp-card .row-actions { opacity: 1; }
  #sp-card .tbl thead th, #sp-card .tbl tbody td { padding-left: 12px; padding-right: 12px; }
  #sp-card .sp-alias, #sp-card .sp-name, #sp-card .sp-contact { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
  #sp-card .st.warn span { display: none; }
}
#pj-card .row-actions { opacity: 0; transition: opacity var(--dur-fast) var(--ease-out); }
#pj-card tr:hover .row-actions, #pj-card tr:focus-within .row-actions { opacity: 1; }

/* --- срез 3: блок «Протокол» --- */
.mn-block { display: flex; flex-direction: column; gap: 8px; }
.mn-body { font-size: var(--fs-sm); }
.mn-body > *:first-child { margin-top: 0; }
.mn-body > *:last-child { margin-bottom: 0; }
.mn-edit { width: 100%; min-height: 50vh; resize: vertical; border: 1px solid var(--border);
           border-radius: var(--radius); padding: 12px 14px; background: var(--paper-card);
           color: var(--fg); font-family: var(--font-mono); font-size: var(--fs-xs); line-height: 1.6; }
.mn-edit:focus { outline: none; border-color: var(--fg-label); }

/* нити в раскрытой строке (срез 8) */
.thr-cell { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.thr-switch .check-label { font-weight: 400; color: var(--fg-soft); }
.thr-switch input:disabled + .switch-track { opacity: .45; }

/* ── Реестр проектов: заголовки групп по направлению (срез 1) ─────────── */
#pj-card .tbl tbody tr.dgrp td { background: var(--paper-mute);
  border-bottom: 1px solid var(--border-faint); padding: 7px 12px; }
#pj-card .tbl tbody tr.dgrp:hover td { background: var(--paper-mute); }
.dgrp td > .dgrp-in { display: flex; align-items: center; gap: 10px; }
.dgrp-btn { display: inline-flex; align-items: center; gap: 8px; border: none;
  background: transparent; padding: 0; cursor: pointer; }
.dgrp-caret { display: inline-flex; color: var(--fg-faint);
  transition: transform var(--dur-fast) var(--ease-out); }
.dgrp.closed .dgrp-caret { transform: rotate(-90deg); }
.dgrp-name { font-weight: 600; font-size: var(--fs-sm); }
.dgrp-meta { font-size: var(--fs-xs); color: var(--fg-label);
  font-variant-numeric: tabular-nums; margin-left: auto; }
.dgrp.none .dgrp-name { color: var(--fg-soft); font-weight: 500; }
/* архивное направление: привязки живы, но группа гаснет и уезжает в конец */
.dgrp.off .dgrp-name, .dgrp.off .dgrp-meta { color: var(--fg-faint); }

/* выбор направления в раскрытой строке проекта */
.dpick { display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--border-strong); background: var(--paper-card);
  border-radius: var(--radius-tag); padding: 4px 10px; font-size: var(--fs-sm);
  cursor: pointer; }
.dpick:hover { border-color: #C8C3BA; }
.jd-wrap .jd-dir { display: flex; align-items: center; gap: 10px;
  margin-bottom: 10px; flex-wrap: wrap; }
.jd-wrap .jd-dir .k { font-size: var(--fs-label);
  letter-spacing: var(--tracking-label); text-transform: uppercase;
  color: var(--fg-label); }

@media (prefers-reduced-motion: reduce) {
  .dgrp-caret, #pj-card .prule, #pj-card .prule .dexp, #pj-card .pname, #pj-card .row-actions { transition: none; }
}
@media (prefers-reduced-motion: reduce) { #dir-card .dexp, #dir-card .dname, #dir-card .drule { transition: none; } }

/* ── Направления: реестр (срез 1 роадмапа направлений; редизайн 19.09.2026) ──
   Имя — ссылка на страницу, слаг и описание второй строкой; проекты —
   теги .tg (lib/tag.js); правило — кнопка-сводка, она же раскрывает
   редактор; встречи за 90 дней — число с полоской доли от максимума. */
#dir-card .tbl col.c-dir-name { width: 26%; }
#dir-card .tbl col.c-dir-rules { width: 230px; }
#dir-card .tbl col.c-dir-recent { width: 150px; }
#dir-card .tbl col.c-dir-act { width: 72px; }
#dir-card .tbl tbody td { vertical-align: top; padding-top: 12px; padding-bottom: 12px; }
#dir-card .tbl tbody td.num { white-space: nowrap; }
#dir-card .job-name-cell { align-items: flex-start; }
#dir-card .job-name-cell > .ddot { margin-top: 6px; }
#dir-card .job-name-cell > span:last-child { min-width: 0; }
#dir-card .dname { display: inline-block; font-size: 13.5px; font-weight: 500; color: var(--fg); line-height: 1.4;
                   transition: color var(--dur-fast) var(--ease-out); }
#dir-card .dname:hover { color: var(--info); }
#dir-card .dname:focus-visible { outline: 2px solid var(--info); outline-offset: 2px; border-radius: 3px; }
#dir-card .dsub { display: flex; gap: 8px; align-items: baseline; min-width: 0; }
#dir-card .dsub .about { font-size: var(--fs-xs); color: var(--fg-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#dir-card .dproj { display: inline-flex; flex-wrap: wrap; gap: 6px; align-items: center; }
#dir-card .drule { display: inline-flex; align-items: flex-start; gap: 6px; padding: 2px 6px 2px 0; border: none; background: transparent;
                   font: inherit; font-size: var(--fs-sm); color: var(--fg-soft); text-align: left; cursor: pointer; border-radius: 4px; max-width: 100%;
                   transition: color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out); }
#dir-card .drule:hover { color: var(--fg); background: var(--paper-mute); }
#dir-card .drule:focus-visible { outline: 2px solid var(--info); outline-offset: 1px; }
#dir-card .drule[aria-expanded="true"] { color: var(--fg); }
#dir-card .drule .dexp { flex: none; margin-top: 3px; }
#dir-card .drule .l { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; }
#dir-card .drule .l.dim { color: var(--fg-muted); font-family: var(--font-mono); font-size: var(--fs-xs); }
#dir-card .drule .l .k { color: var(--fg-label); font-size: var(--fs-xs); margin-right: 4px; }
#dir-card .dbar { display: inline-flex; align-items: center; gap: 10px; justify-content: flex-end; font-variant-numeric: tabular-nums; }
#dir-card .dbar i { display: inline-block; width: 64px; height: 4px; border-radius: 2px; background: var(--border-strong); position: relative; overflow: hidden; }
#dir-card .dbar i::after { content: ""; position: absolute; inset: 0; width: var(--w, 0%); background: var(--c, var(--idle-dot)); border-radius: 2px; }
#dir-card .dbar .n { min-width: 2ch; text-align: right; }
#dir-card .dexp { display: inline-block; color: var(--fg-muted); transition: transform .15s; }
#dir-card [aria-expanded="true"] .dexp { transform: rotate(180deg); }
#dir-card .tbl .dr-note { display: block; white-space: nowrap; font-size: var(--fs-xs); margin-top: 2px; }
/* редактор правил в раскрытой строке: пустое состояние с пояснением и
   сегмент «Один из / Все» вместо системного select */
#dir-card .jd-note { font-size: var(--fs-sm); color: var(--fg-soft); }
#dir-card .jd-note .sub { display: block; font-size: var(--fs-xs); color: var(--fg-label); margin-top: 2px; }
#dir-card .pj-form { align-items: center; }
#dir-card .seg-sm { border-radius: var(--radius-sm); }
#dir-card .seg-sm button { padding: 4px 10px; font-size: var(--fs-xs); line-height: 18px; }
#dir-card .seg-sm button:focus-visible { outline: 2px solid var(--info); outline-offset: -2px; }
#dir-card .pj-who { font-size: var(--fs-xs); margin: 0 4px 0 -2px; }
#dir-card .tbl td .row-actions { opacity: 0; transition: opacity var(--dur-fast) var(--ease-out); }
#dir-card .tbl tr:hover td .row-actions { opacity: 1; }

/* строка-форма: название, описание, палитра */
.dform { display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
         padding: 14px 16px; border-top: 1px solid var(--border-faint);
         background: var(--paper-raised); }
.dform .field { padding: 6px 10px; }
.dform .field.grow { flex: 1 1 200px; min-width: 160px; }
.dform-note { flex-basis: 100%; font-size: var(--fs-xs); color: var(--fg-label); }
.swatches { display: inline-flex; gap: 6px; align-items: center; }
.sw { width: 22px; height: 22px; border-radius: 50%; border: 2px solid transparent;
      background: var(--c); cursor: pointer; padding: 0;
      box-shadow: 0 0 0 1px var(--border-strong) inset; }
.sw.on { border-color: var(--fg); }
.sw:focus-visible { outline: 2px solid var(--fg); outline-offset: 2px; }

/* подвал «В архиве»: тег направления (.tg rule) с числом проектов */
.darch { padding: 12px 16px; font-size: var(--fs-sm); color: var(--fg-muted);
         display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
         border-top: 1px solid var(--border-faint); }
.darch .tg { opacity: .7; }
.darch .tg a:hover { color: var(--info); }

@media (prefers-reduced-motion: reduce) {
  #dir-card .tbl td .row-actions { transition: none; }
}

/* очередь задач (срез 4) */
.tasks-tbl .tq-head td { background: var(--paper-mute); padding: 8px 12px; }
.tasks-tbl .tq-head .svc-name { margin-right: 8px; }
.tasks-tbl .tq-head .tq-gsel { margin-right: 8px; vertical-align: middle; }
.tasks-tbl .tq-noaddr { color: var(--warn); font-weight: 600; }
.tasks-tbl .tq-edit { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-top: 6px; }
.tasks-tbl .tq-edit .grow { flex: 1 1 220px; }
/* [hidden] иначе проигрывает собственному display:flex выше — без этого
   правила форма правки рендерилась бы открытой на каждой строке очереди
   (Критический дефект финального ревью среза 4). Форма выбора Todoist-
   проекта в шапке группы (класс на "tq" и "addr") ушла вместе с ручкой
   …/todoist ещё в срезе 5: трекер ставится на проекте, её CSS снят
   финальным ревью среза 5 как мёртвый код. */
.tasks-tbl .tq-edit[hidden] { display: none; }
.tasks-tbl .pp { cursor: default; }
.tasks-tbl .tq-row.failed .tq-what { color: var(--err); }
.tq-bulk { margin: 10px 12px 12px; }
