/* transcript·me — дизайн-система.
   Принципы: 8px-сетка, type-scale 1.25, один акцент (индиго) + нейтральные slate,
   мягкие карточки, WCAG-контраст, mobile-first. */

:root {
  /* палитра в тонах Yandex Cloud Console: воздушный светлый фон, лазурно-синий акцент,
     холодные серо-голубые нейтрали, крупные мягкие скругления */
  --c-bg: #f4f6fa;
  --c-surface: #ffffff;
  --c-border: #e2e7ee;
  --c-border-strong: #c2cdda;  /* контуры кнопок и сетки таблиц — заметно темнее фона */
  --c-text: #21252b;
  --c-text-2: #5c6570;
  --c-text-3: #949eab;
  --c-primary: #1478f0;       /* лазурный «облачный» синий (ссылки, акценты) */
  --c-primary-600: #0e63cc;
  --c-primary-soft: #e7f1fe;
  /* кнопки — небесно-голубой как в консоли Яндекса (фидбек владельца 13.07) */
  --c-btn: #3d9bf5;
  --c-btn-hover: #2489ec;
  --c-success: #15803d;
  --c-success-soft: #e8f7ee;
  --c-warn: #8a6116;
  --c-warn-soft: #fff4d6;
  --c-danger: #c22929;
  --c-danger-soft: #fdeaea;
  --c-live: #dc2626;
  --radius: 16px;
  --radius-sm: 10px;
  --shadow: 0 1px 2px rgba(30,40,60,.04), 0 4px 18px rgba(30,40,60,.05);
  --shadow-lg: 0 8px 40px rgba(30,40,60,.14);
  --font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

* { box-sizing: border-box; }
.ic { display: inline-block; vertical-align: -.18em; flex: none; }
h2 .ic, h3 .ic { vertical-align: -.12em; color: var(--c-primary); }
[hidden] { display: none !important; }  /* class display:flex иначе перебивает скрытие */
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--c-bg); color: var(--c-text);
  font: 15px/1.55 var(--font);
}
a { color: var(--c-primary); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.55rem; margin: 0 0 .25rem; letter-spacing: -.02em; }
h2 { font-size: 1.1rem; margin: 0 0 .75rem; letter-spacing: -.01em; }
h3 { font-size: 1rem; margin: 0; }
p { margin: .4rem 0; }
small, .muted { color: var(--c-text-2); }
.faint { color: var(--c-text-3); }
/* --- типографическая иерархия: заголовок (тёмный) > описание (приглушённое) > плейсхолдер (светлый) --- */
input, select, textarea { color: var(--c-text); }           /* введённое пользователем — основной цвет */
::placeholder { color: var(--c-text-3); opacity: 1; }        /* подсказка в поле — заметно светлее описаний */
.card > p.faint { color: var(--c-text-2); }                  /* описание карточки — читаемое, не сливается с полями */

/* ---------- каркас ---------- */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255,255,255,.92); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--c-border);
}
.nav-inner {
  max-width: calc(72rem + 2 * var(--board-grow, 0px)); margin: 0 auto; padding: 0 1rem;
  display: flex; align-items: center; gap: 1rem; height: 56px;
}
.brand { display: flex; align-items: center; gap: .5rem; font-weight: 700;
         font-size: 1rem; color: var(--c-text); letter-spacing: -.02em; }
.brand:hover { text-decoration: none; }
.brand .logo {
  width: 28px; height: 28px; border-radius: 8px; flex: none;
  background: linear-gradient(135deg, #1478f0, #55a4ff);
  display: grid; place-items: center; color: #fff; font-size: .82rem; font-weight: 800;
}
.nav-links { display: flex; gap: .25rem; margin-left: .5rem; flex: 1; }
.nav-links a {
  padding: .4rem .75rem; border-radius: 8px; color: var(--c-text-2); font-weight: 500;
}
.nav-links a:hover { background: var(--c-bg); text-decoration: none; color: var(--c-text); }
.nav-links a.active { color: var(--c-primary); background: var(--c-primary-soft); }
.verify-banner { background: var(--c-warn-soft); color: var(--c-warn); border-bottom: 1px solid #f0d37a;
                 padding: .5rem 1rem; text-align: center; font-size: .82rem; }
/* плашка «заканчиваются минуты» — красная, сверху на всех страницах */
.lowbal-banner { background: #fdecec; color: #b42323; border-bottom: 1px solid #f3c6c6;
                 padding: .5rem 1rem; text-align: center; font-size: .85rem; font-weight: 600; }
:root[data-theme="dark"] .lowbal-banner { background: #3a1d1d; color: #ff9d9d; border-color: #5a2a2a; }
.nav-user { display: flex; align-items: center; gap: .6rem; }
.nav-email { display: inline-flex; align-items: center; gap: .35rem; max-width: 15rem; overflow: hidden;
             text-overflow: ellipsis; white-space: nowrap; font-size: .82rem; color: var(--c-text-2); }
.nav-email:hover { color: var(--c-text); text-decoration: none; }
@media (max-width: 700px) { .nav-email { display: none; } }
.page { max-width: calc(72rem + 2 * var(--board-grow, 0px)); margin: 0 auto; padding: 1.5rem 1rem 4rem; }
.page-head { display: flex; align-items: flex-end; justify-content: space-between;
             gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap; }

/* ---------- карточки и сетки ---------- */
.card {
  background: var(--c-surface); border: 1px solid var(--c-border);
  border-radius: var(--radius); box-shadow: var(--shadow); padding: 1.25rem;
}
.card + .card { margin-top: 1rem; }
.card.accent { border-color: #d3e3f8; background: linear-gradient(180deg, #f2f7fd, #fff 55%); }
.grid { display: grid; gap: 1rem; }
/* внутри ЛЮБОГО грида отступы даёт gap — сосед-margin сдвигал бы карточки колонок вниз
   «ступенькой» (главная, тарифы, паки докупки, live-доска и любые будущие *grid*) */
[class*="grid"] > .card + .card, .live-board > .card + .card { margin-top: 0; }
.grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
/* лендинг: кнопки карточек выровнены по нижнему краю */
.grid.cols-3 > .card { display: flex; flex-direction: column; }
/* поля формы не «сливаются»: ровный вертикальный ритм задаёт gap */
.grid.cols-3 > .card > form { display: flex; flex-direction: column; flex: 1 0 auto; gap: .55rem; }
/* внутренние ряды формы: селекты делят одну строку поровну, отступ даёт gap формы */
.grid.cols-3 > .card > form > .actions:not(:last-of-type) { margin-top: 0; }
.grid.cols-3 > .card > form > .actions select { flex: 1 1 8rem; min-width: 0; }
/* главное действие карточки — во всю ширину, по нижнему краю (один уровень у всех карточек) */
.grid.cols-3 > .card > form > .actions:last-of-type .btn { width: 100%; justify-content: center; }
.grid.cols-3 > .card > form > .actions:last-of-type,
.grid.cols-3 > .card > .actions { margin-top: auto; }
@media (max-width: 860px) { .grid.cols-3, .grid.cols-2 { grid-template-columns: 1fr; }
                            .grid.cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .grid.cols-4 { grid-template-columns: 1fr; } }
.stat-num { font-size: 1.8rem; font-weight: 700; letter-spacing: -.02em; }

/* ---------- формы ---------- */
label { display: block; font-weight: 600; font-size: .82rem; margin: .9rem 0 .3rem; }
label .hint, .field-hint { font-weight: 400; color: var(--c-text-3); font-size: .82rem; }
/* input:not([type]) — поля без атрибута type (инлайн-редакторы таблиц: .tm-name,
   .pm-name и т.п.) браузер считает text, но под селектор [type=text] они НЕ попадают
   и оставались с квадратной браузерной рамкой (фидбек владельца 13.07) */
input[type=text], input[type=url], input[type=search], input[type=email], input[type=password],
input:not([type]), textarea, select {
  width: 100%; padding: .55rem .7rem; font: inherit; color: var(--c-text);
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-sm);
  transition: border-color .15s, box-shadow .15s;
}
input:focus, textarea:focus, select:focus {
  outline: none; border-color: var(--c-primary);
  box-shadow: 0 0 0 3px rgba(20,120,240,.15);
}
textarea { resize: vertical; min-height: 4.5rem; }
select { width: auto; }
input[type=file] { font: inherit; }

.btn {
  display: inline-flex; align-items: center; gap: .45rem; cursor: pointer;
  padding: .55rem 1.05rem; border: 1px solid transparent; border-radius: var(--radius-sm);
  background: var(--c-btn, var(--c-primary)); color: #fff; font: inherit; font-weight: 600;
  transition: background .15s, transform .05s;
  white-space: nowrap;
}
.btn:hover { background: var(--c-btn-hover, var(--c-primary-600)); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .55; cursor: default; }
.btn.secondary { background: var(--c-surface); color: var(--c-text); border-color: var(--c-border-strong); }
.btn.secondary:hover { background: var(--c-primary-soft); border-color: var(--c-primary); color: var(--c-primary); }
.btn.secondary:hover { background: #e2e6fd; }
.btn.ghost { background: var(--c-surface); color: var(--c-text); border-color: var(--c-border-strong); }
.btn.ghost:hover { background: var(--c-bg); color: var(--c-text); }
.btn.danger { background: var(--c-surface); color: var(--c-danger); border-color: var(--c-border-strong); }
.btn.danger:hover { background: var(--c-danger-soft); }
.btn.live { background: var(--c-live); }
.btn.live:hover { background: #b91c1c; }
.btn.sm { padding: .35rem .7rem; font-size: .82rem; }

/* закладки внутри форм (плейбук) */
.form-tabs { display: inline-flex; gap: 2px; padding: 3px; margin-bottom: 1rem; width: fit-content;
             background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 99px; }
.ftab { background: none; border: none; cursor: pointer; font: inherit; font-weight: 600;
        padding: .4rem 1rem; border-radius: 99px; color: var(--c-text-2); }
.ftab:hover { color: var(--c-text); }
.ftab.active { background: var(--c-primary); color: #fff; }

.form-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.form-row > div { flex: 1; min-width: 14rem; }
.actions { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin-top: 1rem; }
.inline-form { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.inline-form input[type=text], .inline-form input[type=url], .inline-form input[type=search] { flex: 1; min-width: 14rem; width: auto; }

/* ---------- бейджи, статусы ---------- */
.badge {
  display: inline-flex; align-items: center; gap: .3rem;
  font-size: .75rem; font-weight: 600; padding: .14rem .55rem; border-radius: 99px;
  background: var(--c-bg); color: var(--c-text-2); vertical-align: middle;
}
.badge.primary { background: var(--c-primary-soft); color: var(--c-primary); }
.badge.success { background: var(--c-success-soft); color: var(--c-success); }
.badge.warn { background: var(--c-warn-soft); color: var(--c-warn); }
.badge.danger { background: var(--c-danger-soft); color: var(--c-danger); }
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: none; }
.dot.live { background: var(--c-live); animation: pulse 1.3s infinite; }
.dot.idle { background: var(--c-text-3); }
@keyframes pulse { 50% { opacity: .35; } }

/* ---------- таблицы ---------- */
/* базовый стиль ВСЕХ таблиц — по образцу списка задач (просьба владельца 23.07):
   шапка чётко выражена (подложка + граница), строчная разметка с зеброй */
table { border-collapse: separate; border-spacing: 0; width: 100%;
        border: 1px solid var(--c-border-strong);
        border-radius: var(--radius-sm); overflow: hidden; }
th { text-align: left; font-size: .78rem; text-transform: uppercase; letter-spacing: .04em;
     color: var(--c-text-2); font-weight: 700; padding: .45rem .55rem;
     background: color-mix(in srgb, var(--c-text) 7%, var(--c-bg));
     border-bottom: 2px solid var(--c-border-strong); }
td { padding: .45rem .55rem; border-top: 1px solid var(--c-border-strong); vertical-align: middle; font-size: .9rem; }
tr:nth-child(even) td { background: color-mix(in srgb, var(--c-text) 4%, transparent); }
tr:hover td { background: color-mix(in srgb, var(--c-primary) 7%, transparent); }

/* ---------- прогресс ---------- */
.bar { width: 100%; max-width: 26rem; height: 10px; background: var(--c-border);
       border-radius: 99px; overflow: hidden; }
.bar > div { height: 100%; background: linear-gradient(90deg, #1478f0, #55a4ff);
             border-radius: 99px; transition: width .4s; }
#progressCard .bar { max-width: none; }
.prog-head { display: flex; justify-content: flex-start; align-items: center;
             gap: .6rem; margin-bottom: .5rem; }
/* процент операции — синяя пилюля, не липнет к названию (владелец 26.07);
   один стиль для этапов обработки, сборки протокола и сводки */
#progPct:not(:empty), .pct-pill { background: var(--c-primary-soft); color: var(--c-primary);
  font-weight: 700; font-size: .82rem; padding: .1rem .6rem; border-radius: 99px;
  font-variant-numeric: tabular-nums; white-space: nowrap; }
.prog-head b { font-weight: 600; }
.prog-meta { margin-top: .55rem; font-size: .82rem; }
/* зона загрузки файла (drag&drop) */
.dropzone { display: flex; flex-direction: column; align-items: center; justify-content: center;
            gap: .5rem; text-align: center; padding: 2.6rem 1rem; cursor: pointer;
            border: 2px dashed var(--c-border); border-radius: var(--radius);
            background: var(--c-bg); transition: border-color .15s, background .15s; }
.dropzone:hover, .dropzone.over { border-color: var(--c-primary); background: var(--c-primary-soft); }
.dz-icon { font-size: 2.2rem; line-height: 1; }
/* строка с чекбоксом в формах (повестка/задачи) */
.chk-row { display: flex; align-items: center; gap: .5rem; font-weight: 500;
           margin: 1rem 0 .3rem; cursor: pointer; }
.chk-row input { width: auto; margin: 0; }

/* ---------- модальные окна ---------- */
dialog {
  border: none; border-radius: var(--radius); box-shadow: var(--shadow-lg);
  padding: 0; width: min(44rem, calc(100vw - 2rem)); max-height: calc(100vh - 4rem);
  background: var(--c-surface); color: var(--c-text);
}
dialog::backdrop { background: rgba(22,24,29,.45); backdrop-filter: blur(2px); }
.dialog-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 1.25rem; border-bottom: 1px solid var(--c-border);
  position: sticky; top: 0; background: var(--c-surface); z-index: 1;
}
.dialog-body { padding: .25rem 1.25rem 1.25rem; overflow-y: auto; }
.dialog-close { background: none; border: none; font-size: 1.3rem; cursor: pointer;
                color: var(--c-text-3); line-height: 1; padding: .25rem; }
.dialog-close:hover { color: var(--c-text); }
/* компактный диалог подтверждения (не «огромный поп-ап») + кнопки */
dialog.confirm { width: min(26rem, calc(100vw - 2rem)); }
.dialog-actions { display: flex; gap: .5rem; justify-content: flex-end; padding: .25rem 1.25rem 1.25rem; }

/* ---------- канбан-доска задач ---------- */
.board-bar { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; }
.kanban { display: flex; gap: .75rem; align-items: flex-start; overflow-x: auto; padding-bottom: .6rem; }
/* пустой проект: доска/список всё равно тянутся до низа экрана (запрос владельца 16.07) */
.kanban, .tasklist.card { min-height: calc(100vh - 21rem); }
/* всплывашка над кнопкой «В Google Docs»: сообщение не распирает строку действий */
.copy-bubble { position: absolute; z-index: 300; max-width: 26rem; font-size: .8rem;
  background: var(--c-text); color: var(--c-bg); padding: .45rem .7rem;
  border-radius: var(--radius-sm); box-shadow: var(--shadow-lg); }
.copy-bubble.err { background: var(--c-danger); color: #fff; }
.kcol { flex: 0 0 16rem; background: var(--c-bg); border: 1px solid var(--c-border);
        border-radius: var(--radius); padding: .6rem; display: flex; flex-direction: column; }
.kcol-head { display: flex; align-items: center; justify-content: space-between;
             font-weight: 600; font-size: .9rem; margin-bottom: .5rem; }
.kcol-x { background: none; border: none; cursor: pointer; color: var(--c-text-3);
          font-size: .9rem; padding: .1rem .35rem; border-radius: 6px; }
.kcol-x:hover { color: var(--c-danger); background: var(--c-danger-soft); }
.kcards { display: flex; flex-direction: column; gap: .5rem; min-height: 1.5rem; }
.kcards.drag-over { outline: 2px dashed var(--c-primary); outline-offset: 2px; border-radius: var(--radius-sm); }
.kcard { background: var(--c-surface); border: 1px solid var(--c-border);
         border-radius: var(--radius-sm); padding: .55rem .6rem; box-shadow: var(--shadow); cursor: grab; }
.kcard.dragging { opacity: .45; cursor: grabbing; }
.kcard-title { font-size: .9rem; line-height: 1.35; }
.kcard-src { display: inline-flex; align-items: center; gap: .25rem; font-size: .75rem; margin-top: .3rem; }
.kcard-actions { display: flex; gap: .35rem; align-items: center; margin-top: .45rem; }
.kcard-actions select { flex: 1; padding: .2rem .35rem; font-size: .78rem; }
.kcard-x { background: none; border: none; cursor: pointer; color: var(--c-text-3);
           padding: .25rem; border-radius: 6px; display: inline-flex; }
.kcard-x:hover { color: var(--c-danger); background: var(--c-danger-soft); }
.kadd input { margin-top: .5rem; padding: .4rem .5rem; font-size: .85rem; }
.kcol-add { flex: 0 0 13rem; display: flex; flex-direction: column; gap: .4rem; padding: .6rem;
            border: 1px dashed var(--c-border); border-radius: var(--radius); }
/* служебная стадия «Архив» — ВСЕГДА видна (в неё перетаскивают «выполнено»),
   а её КАРТОЧКИ скрыты, пока не включён чекбокс «показывать архивные задачи».
   Поиск НЕ лезет в архив, если галочка не стоит. */
.kcol.karchive { background: #f2f3f7; border-style: dashed; }
.kcol.karchive .kcard { display: none; }
body.show-archive .kcol.karchive .kcard { display: block; }
/* переключатель вида + список задач */
.seg-toggle { display: inline-flex; gap: 2px; padding: 3px; background: var(--c-bg);
              border: 1px solid var(--c-border-strong); border-radius: 99px; flex: none; }
.seg-toggle button { border: none; background: none; cursor: pointer; font: inherit; font-weight: 600;
                     font-size: .82rem; padding: .3rem .8rem; border-radius: 99px; color: var(--c-text-2);
                     display: inline-flex; align-items: center; gap: .3rem; }
.seg-toggle button.active { background: var(--c-primary); color: #fff; }
.tlist { width: 100%; }
/* явные границы: полная сетка ячеек + рамка вокруг таблицы, шапка на подложке */
.tlist { border: 1px solid var(--c-border-strong); }
.tlist th, .tlist td { border-right: 1px solid var(--c-border-strong); border-bottom: 1px solid var(--c-border-strong); }
.tlist th:last-child, .tlist td:last-child { border-right: none; }
.tlist tr:last-child td { border-bottom: none; }
.tlist th { text-align: left; font-size: .8rem; color: var(--c-text-2); padding: .45rem .55rem;
            background: var(--c-bg); }
.tlist td { padding: .45rem .55rem; vertical-align: middle; font-size: .9rem; }
/* чересстрочная подсветка — глазу проще вести строку по широкой таблице */
.tlist tr:nth-child(even) td { background: color-mix(in srgb, var(--c-text) 4%, transparent); }
/* вторичный текст в списке (описания, меты) — контрастнее, чем плейсхолдеры */
.tlist td .faint { color: var(--c-text-2); }
.tlist select { padding: .2rem .4rem; font-size: .82rem; }
.tlist .tarchive { display: none; }
body.show-archive .tlist .tarchive { display: table-row; }
/* вкладка «Задачи» на live + содержание на карточках */
.task-target { background: var(--c-bg); border: 1px solid var(--c-border);
               border-radius: var(--radius-sm); padding: .6rem .7rem; }
.task-target select, .task-target input[type=text] { width: 100%; }
.task-edit { border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: .5rem .6rem; margin: .4rem 0; }
.task-edit textarea { width: 100%; margin-top: .3rem; font-size: .85rem; min-height: 2.6rem; }
.kcard-note { font-size: .8rem; color: var(--c-text-2); margin-top: .3rem; white-space: pre-wrap; }
/* редактируемый заголовок стадии (клик → правка) */
.kcol-title { font: inherit; font-weight: 600; font-size: .9rem; width: 100%; border: 1px solid transparent;
              background: none; border-radius: 6px; padding: .15rem .3rem; color: var(--c-text); }
.kcol-title:hover { border-color: var(--c-border); }
.kcol-title:focus { border-color: var(--c-primary); background: #fff; outline: none; }
.kcol-count { flex: none; padding: 0 .15rem; }
/* срок + мета на карточке */
.kcard-meta { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-top: .4rem; }
.kdue { display: inline-flex; align-items: center; gap: .25rem; font-size: .75rem; font-weight: 600;
        color: var(--c-text-2); background: var(--c-bg); border: 1px solid var(--c-border);
        padding: .08rem .4rem; border-radius: 99px; }
/* карточка задачи (модалка) — две колонки срок/стадия */
.tf-row { display: flex; gap: 1rem; flex-wrap: wrap; }
.tf-row > div { flex: 1; min-width: 9rem; }
#taskForm label { display: block; font-size: .82rem; font-weight: 600; color: var(--c-text-2); margin: .7rem 0 .25rem; }
#taskForm > label:first-of-type { margin-top: 0; }

/* ---------- live-страница: дашборд на один экран ---------- */
/* топ-блок встречи — единая рамка, 3 строки */
.live-topbar { padding: 1rem 1.2rem 1.1rem; margin-bottom: .85rem;
               display: flex; flex-direction: column; gap: .85rem; }
.live-topbar h1 { font-size: 1.3rem; margin: 0; }
.lt-head { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; }
.live-topbar .statebar { margin: 0; }
/* контролы: безопасные слева (.lt-actions), опасная «Очистить» — отдельно справа */
.lt-controls { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
               justify-content: space-between; }
.lt-actions { display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; }
/* крупнее тач-таргеты у мелких кнопок топбара (ближе к 44px) */
.lt-controls .btn.sm, .lt-controls .eng select { min-height: 2.4rem; }
.lt-controls #clearBtn { min-height: 2.4rem; padding-inline: 1rem; }
.suflor .chk input[type=checkbox] { width: 1.1rem; height: 1.1rem; }
.eng { display: inline-flex; align-items: center; gap: .35rem; margin: 0;
       font-size: .82rem; font-weight: 600; color: var(--c-text-2); }
.eng select { width: auto; padding: .35rem .5rem; font-size: .82rem; }
/* «Дальше» в блоке действия */
.now-next { margin-top: .5rem; padding-top: .45rem; border-top: 1px dashed var(--c-border);
            font-size: .9rem; font-weight: 500; color: var(--c-text); }
.now-next .now-label { margin-bottom: .1rem; }
/* строка поиска сценария + Отменить */
.pick-head { display: flex; gap: .5rem; align-items: center; }
.pick-head input { flex: 1; }

.live-board { display: grid; gap: .75rem; align-items: start; position: relative;
              grid-template-columns: minmax(0, 1.6fr) minmax(14rem, 1fr); }
/* внутри грида доски отступы даёт gap: без этого «Транскрипт» (второй .card в строке)
   получает margin-top и стоит не в один уровень с «Протоколами» */
.live-board > .card + .card { margin-top: 0; }
/* Суфлёр, шапка встречи и баннер бота — полноширными строками сверху; Протоколы и Транскрипт — рядом снизу */
.live-board > .suflor, .live-board > .live-topbar, .live-board > .bot-banner { grid-column: 1 / -1; }
/* ручка ШИРИНЫ (.board-resizer) на live видима — «не могу регулировать ширину»,
   владелец 23.07; прячем только старые колоночные разделители */
.live-board .col-resizer { display: none; }
.live-board { position: relative; }
.board-resizer { position: absolute; top: 0; bottom: 0; right: -11px; width: 14px; cursor: ew-resize;
                 display: flex; align-items: center; justify-content: center; z-index: 3; }
.board-resizer::after { content: ""; width: 4px; height: 46px; border-radius: 99px;
                        background: var(--c-border); transition: background .15s; }
.board-resizer:hover::after { background: var(--c-primary); }
@media (max-width: 700px) { .board-resizer { display: none; } }
.live-board > * { min-height: 0; }                 /* чтобы работали внутренние скроллы */
/* блоки над транскриптом и транскрипт — c регулируемой высотой (тянуть за нижний угол) */
.panel-tabs { height: 30rem; min-height: 14rem; resize: vertical; }
/* высоту Суфлёра тянем угловым грипом (нативный resize не работает на grid-span 1/-1) */
.suflor { height: 30rem; min-height: 14rem; position: relative; }
.suflor-vresize { position: absolute; right: 2px; bottom: 2px; width: 18px; height: 18px; z-index: 3;
                  cursor: ns-resize; border-radius: 4px; opacity: .5;
                  background: linear-gradient(135deg, transparent 0 44%, var(--c-text-3) 44% 52%,
                              transparent 52% 66%, var(--c-text-3) 66% 74%, transparent 74%); }
.suflor-vresize:hover { opacity: 1; background-color: var(--c-bg); }
@media (max-width: 700px) { .suflor-vresize { display: none; } }   /* на мобиле высота auto — ручка не нужна */
.transcript { height: 30rem; min-height: 8rem; resize: vertical; }
/* разделитель ширины между Суфлёром и панелью */
.col-resizer { align-self: stretch; cursor: col-resize; border-radius: 99px;
               background: var(--c-border); transition: background .15s; min-height: 6rem; }
.col-resizer:hover { background: var(--c-primary); }
.card .scroll { overflow-y: auto; min-height: 0; flex: 1; margin-top: .25rem; }

.transcript, .panel-tabs, .suflor { display: flex; flex-direction: column;
                                     min-height: 0; overflow: hidden; }
.transcript h2, .panel-tabs h2 { flex: none; }

/* вкладочная панель (журнал / саммари) */
.panel-tabs { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
/* вкладки — сегментный переключатель (очевиднее) */
.panel-tabs .tabs { display: inline-flex; align-self: flex-start; gap: 2px; padding: 3px; flex: none;
                    background: var(--c-bg); border: 1px solid var(--c-border-strong); border-radius: 99px;
                    margin-bottom: .5rem; }
.panel-tabs .tab { background: none; border: none; cursor: pointer; font: inherit; font-weight: 600;
                   padding: .35rem .95rem; border-radius: 99px; color: var(--c-text-2); }
.panel-tabs .tab:hover { color: var(--c-text); }
.panel-tabs .tab.active { background: var(--c-primary); color: #fff; }
.panel-tabs .tab.dot-new::after { content: " ●"; color: var(--c-live); font-size: .7em;
                                  vertical-align: middle; }
.pane-actions { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: .55rem; }
.pane-head { font-size: .82rem; font-weight: 600; color: var(--c-text-2); margin: .1rem 0 .4rem; }
.protocol-bar { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center;
                margin: 0 0 .6rem; padding: .5rem .6rem; border: 1px solid var(--c-border);
                border-radius: var(--radius-sm); background: var(--c-primary-soft); }
/* подпись полосы («Протокол:», «Запись:», «Задачи:») — жирный заголовок раздела */
.pb-label { font-weight: 700; color: var(--c-text); font-size: .82rem;
            text-transform: uppercase; letter-spacing: .04em; margin-right: .2rem; }
/* группа ссылок протокола: прозрачна для раскладки меню, но hidden уважается */
#protoLinks { display: contents; }
#protoLinks[hidden] { display: none; }
.suflor-main .reminders { margin: 0; }
.suflor-main > * { min-height: 5rem; }   /* «Действие» и «Не забудьте» всегда на одном уровне */
/* ссылка для второго экрана — служебная полоса в подвале топбара, подальше от «Очистить» */
.sharebar { display: flex; align-items: center; gap: .5rem; flex-wrap: nowrap;
            font-size: .8rem; padding-top: .7rem; border-top: 1px solid var(--c-border); }
.sharebar > .faint { display: inline-flex; align-items: center; gap: .3rem; flex: none; }
.sharebar a { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sharebar #copyLink { flex: none; }

/* онбординг-подсказка над топбаром (сворачивается, помнит скрытие) */
.onboard { position: relative; margin-bottom: .85rem; border-color: #d9dcfd;
           background: linear-gradient(180deg, #fbfbff, #fff); }
.onboard-title { display: flex; align-items: center; gap: .4rem; font-weight: 700;
                 font-size: 1rem; margin-bottom: .5rem; }
.onboard-steps { margin: 0; padding-left: 1.4rem; display: grid; gap: .5rem; }
.onboard-steps li { font-size: .9rem; line-height: 1.5; }
.onboard-steps b { font-weight: 600; }
.onboard-x { position: absolute; top: .5rem; right: .6rem; background: none; border: none;
             font-size: 1.15rem; line-height: 1; cursor: pointer; color: var(--c-text-3);
             padding: .25rem .4rem; border-radius: var(--radius-sm); }
.onboard-x:hover { color: var(--c-text); background: var(--c-bg); }
.kbd { display: inline-block; padding: .05rem .45rem; border-radius: 99px;
       background: var(--c-bg); border: 1px solid var(--c-border); font-weight: 600;
       font-size: .82rem; color: var(--c-text-2); white-space: nowrap; }

/* режим просмотра (второй экран, ?view=1): прячем вторичные контролы, ссылку, онбординг
   и таб «Управление». Микрофон ОСТАВЛЯЕМ — запись можно начать с любого устройства. */
body.viewer .lt-controls .eng,
body.viewer #stopBot,
body.viewer #clearBtn,
body.viewer .sharebar,
body.viewer #onboard,
body.viewer .mtab[data-msec="controls"] { display: none !important; }

/* суфлёр на всю высоту левой колонки */
.suflor { display: flex; flex-direction: column; min-height: 0; }
.suflor-body { overflow: hidden auto; min-height: 0; flex: 1; margin-top: .5rem; }
.suflor-foot { margin-top: .5rem; }
.spacer { flex: 1; }

/* «тихий live» (этап 2, #40915): на десктопе панели (сводка/задачи/журнал) и
   ассистент скрыты, пока не нажата «Панель»; суфлёр занимает всю ширину.
   Мобильная раскладка [data-msec] управляет секциями сама — её не трогаем. */
@media (min-width: 701px) {
  body:not(.show-panels) .live-board > .panel-tabs,
  body:not(.show-panels) .live-board > .assist-card { display: none; }
  body:not(.show-panels) .live-board { grid-template-columns: minmax(0, 1fr); }
}

/* нижняя мобильная навигация — по умолчанию скрыта (десктоп её не видит) */
.mtabbar { display: none; }

@media (max-width: 700px) {
  /* доска: вертикальный стек, без ресайза */
  .live-board { display: block; height: auto; min-height: 0; }
  .suflor, .panel-tabs, .transcript { height: auto; resize: none; margin-top: 0; }
  .col-resizer { display: none; }

  /* фиксированная нижняя навигация из 4 иконок */
  /* вкладки разделов закреплены СВЕРХУ (под глобальной навигацией) — быстро переключаться */
  .mtabbar { display: flex; position: sticky; top: 55px; z-index: 40; gap: 2px; padding: 3px;
             background: var(--c-surface); border: 1px solid var(--c-border); border-radius: 99px;
             box-shadow: var(--shadow); margin-bottom: .85rem; }
  .mtab { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 1px;
          padding: .3rem 0; border: none; background: none; cursor: pointer; border-radius: 99px;
          color: var(--c-text-2); font: inherit; font-size: .66rem; font-weight: 600; min-height: 44px; }
  .mtab .ic { color: currentColor; }
  .mtab[aria-current="true"] { background: var(--c-primary); color: #fff; }
  /* тач-таргеты 44px на телефоне */
  .lt-controls .btn.sm, .lt-controls .eng select, .lt-controls #clearBtn { min-height: 44px; }
  .toast-undo { min-height: 44px; }

  /* показываем только активную секцию доски (display:flex — сохраняем внутренний скролл) */
  .live-board[data-msec] > .suflor,
  .live-board[data-msec] > .panel-tabs,
  .live-board[data-msec] > .assist-card,
  .live-board[data-msec] > .transcript { display: none; }
  .live-board[data-msec="suflor"]     > .suflor     { display: flex; height: auto; }
  /* ассистент (#40409) на мобиле живёт во вкладке Суфлёра — под ним */
  .live-board[data-msec="suflor"]     > .assist-card { display: block; }
  .live-board[data-msec="panel"]      > .panel-tabs { display: flex; height: auto; }
  .live-board[data-msec="transcript"] > .transcript { display: flex; height: auto; }
  .card .scroll, .suflor-body { max-height: calc(100vh - 14rem); }

  /* топбар: заголовок, статус и Микрофон видны ВСЕГДА (запись можно запустить с любого
     экрана); вторичные контролы и ссылка — только в секции «Управление» */
  .live-topbar .eng, .live-topbar #stopBot,
  .live-topbar #clearBtn, .live-topbar .sharebar { display: none; }
  body.msec-controls .live-topbar .eng { display: inline-flex; }
  body.msec-controls .live-topbar #stopBot,
  body.msec-controls .live-topbar #clearBtn { display: inline-flex; }
  body.msec-controls .live-topbar .sharebar { display: flex; }
  /* шапка теперь дитя доски: доску НЕ прячем целиком — секцию выбирает [data-msec] (suflor/panel/transcript скрыты) */
  /* Микрофон на мобиле — крупная кнопка во всю ширину шапки (главное действие) */
  #micBtn { width: 100%; justify-content: center; min-height: 2.8rem; }

  /* в «Управление»: контролы столбцом, опасная «Очистить» отдельно снизу справа */
  .live-topbar { padding: .85rem .95rem 1rem; gap: .7rem; }
  .lt-controls { flex-direction: column; align-items: stretch; gap: .6rem; }
  .lt-actions { justify-content: flex-start; }
  .lt-controls #clearBtn { align-self: flex-end; margin-top: .15rem; }
  .sharebar { flex-wrap: wrap; }
  .sharebar a { flex: 1 0 100%; }
}
.seg { margin: .4rem 0; display: flex; gap: .6rem; }
.seg .tc { color: var(--c-text-3); font-size: .82rem; font-variant-numeric: tabular-nums;
           flex: none; padding-top: .15rem; }
.seg .wall { flex: none; font-size: .75rem; padding-top: .2rem; font-variant-numeric: tabular-nums; }
.seg.partial { color: var(--c-text-3); font-style: italic; }
.statusline { color: var(--c-text-3); font-size: .82rem; margin: .35rem 0; }
.statebar { display: flex; gap: 1.1rem; align-items: center; flex-wrap: wrap;
            font-size: .82rem; color: var(--c-text-2); }
.statebar b { color: var(--c-text); font-weight: 600; }
.statebar .sb-sep { width: 1px; height: 1.1em; background: var(--c-border); flex: none; }
@media (max-width: 560px) { .statebar .sb-sep { display: none; } }

/* источник записи: компактная полоса */
.srcbar { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; padding: .7rem .9rem; }
.srcbar select { flex: 1; min-width: 9rem; }

/* суфлёр — герой сайдбара */
.suflor { border-color: #d9dcfd; background: linear-gradient(180deg, #fbfbff, #fff); }
.suflor-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.suflor-head h2 { margin: 0; }
/* заметный чип с именем подключённого скрипта */
.script-pill { background: var(--c-primary); color: #fff; font-weight: 600; font-size: .82rem;
               padding: .28rem .7rem; border-radius: 99px; max-width: 22rem;
               overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* цель встречи — наверху суфлёра, компактно (макс 2 строки) */
.pb-goal { font-size: .82rem; color: var(--c-text-2); margin: 0 0 .5rem; font-weight: 500;
           display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* панель поиска/смены скрипта — прямо под кнопкой в шапке */
.pick-panel { margin: .1rem 0 .3rem; padding: .6rem .7rem; border: 1px solid var(--c-border);
              border-radius: var(--radius-sm); background: var(--c-bg); }
/* этапы под «Не забудьте» */
.suflor-left .stages { margin: .2rem 0 0; }
/* комментарий и кнопки во вкладке «Протоколы» */
.sum-comment { font-size: .82rem; margin-bottom: .55rem; }
#paneSummary { overflow-x: hidden; }
.sum-result-head { display: flex; align-items: center; justify-content: space-between;
                   gap: .5rem; margin: .25rem 0 .4rem; }
.sum-result-head .pane-head { margin: 0; }
/* шапка протокола: при прокрутке длинного протокола заголовок и кнопки остаются на месте */
.panel-tabs .proto-head { position: sticky; top: 0; z-index: 3;
                          background: var(--c-surface); padding-bottom: .5rem; }
.panel-tabs .proto-head .protocol-bar { margin-bottom: 0; }   /* отступ берёт на себя сама шапка */
/* суфлёр: действие+детали слева, «не забудьте» справа */
.suflor-main { display: grid; grid-template-columns: 1.5fr 1fr; gap: .6rem; align-items: stretch; }
@media (max-width: 1180px) { .suflor-main { grid-template-columns: 1fr; } }
/* раскладка суфлёра: слева Действие+«Не забудьте» стопкой, справа — чек-лист */
.suflor-grid { display: grid; gap: .5rem; align-items: start;
               grid-template-columns: minmax(0, var(--sl, 1.3fr)) 7px minmax(0, var(--sr, 1fr)) 7px minmax(0, var(--sa, 1fr)); }
.suflor-agenda { min-width: 0; }
.suflor-divider { align-self: stretch; cursor: col-resize; display: flex;
                  align-items: center; justify-content: center; }
.suflor-divider::after { content: ""; width: 3px; height: 70%; min-height: 4rem;
                         border-radius: 99px; background: var(--c-border); transition: background .15s; }
.suflor-divider:hover::after { background: var(--c-primary); }
@media (max-width: 1180px) { .suflor-grid { grid-template-columns: 1fr; }
                             .suflor-divider { display: none; } }
.suflor-left { display: flex; flex-direction: column; gap: .55rem; min-width: 0; }
/* чек-лист: своя регулируемая высота, без горизонтального скролла */
.suflor-right { min-width: 0; overflow-x: hidden; }  /* разделитель-ползунок служит границей колонок */
.suflor-right .checklist .q { white-space: normal; overflow-wrap: anywhere; }
@media (max-width: 1180px) { .suflor-right, .suflor-agenda { border-left: none; padding-left: 0;
                border-top: 1px solid var(--c-border); padding-top: .5rem; } }
.now { padding: .8rem .95rem; border-radius: var(--radius-sm);
       background: var(--c-primary-soft); border: 1px solid #d9dcfd; }
.now-label { display: block; font-size: .75rem; text-transform: uppercase; letter-spacing: .06em;
             font-weight: 700; color: var(--c-primary); margin-bottom: .2rem; }
.now-act { font-size: 1.3rem; font-weight: 700; line-height: 1.2; letter-spacing: -.01em;
           color: var(--c-text); }
.now-detail { font-size: .9rem; line-height: 1.4; color: var(--c-text-2); margin-top: .3rem; }
.now-text { font-size: 1rem; line-height: 1.4; color: var(--c-text); font-weight: 500; }
.now.flash { animation: nowflash 1.2s ease; }
@keyframes nowflash {
  0% { box-shadow: 0 0 0 0 rgba(79,70,229,.45); border-color: var(--c-primary); }
  100% { box-shadow: 0 0 0 12px rgba(79,70,229,0); border-color: #d9dcfd; }
}
.chk { display: inline-flex; align-items: center; gap: .3rem; margin: 0;
       font-weight: 400; font-size: .82rem; }
.wind-line { font-size: .82rem; margin: .15rem 0 .4rem; }

/* быстрые команды суфлёра */
.quick { display: flex; gap: .4rem; flex-wrap: wrap; margin: .5rem 0; }
.qbtn { display: flex; flex-direction: column; align-items: center; gap: .15rem;
        min-width: 4.2rem; padding: .45rem .35rem; cursor: pointer; font: inherit;
        font-size: 1.1rem; line-height: 1; border: 1px solid var(--c-border);
        border-radius: var(--radius-sm); background: #fff; transition: background .12s, border-color .12s; }
.qbtn span { font-size: .75rem; color: var(--c-text-2); font-weight: 600; }
.qbtn:hover { background: var(--c-primary-soft); border-color: #d9dcfd; }
.qbtn:disabled, .qbtn.busy { opacity: .5; cursor: default; }

/* напоминания «Не забудьте» */
.reminders { background: var(--c-warn-soft); border: 1px solid #f5dfb8;
             border-radius: var(--radius-sm); padding: .5rem .7rem; margin: .4rem 0; }
.rem-title { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em;
             font-weight: 700; color: var(--c-warn); margin-bottom: .2rem; }
.reminders ul { margin: 0; padding-left: 1.1rem; }
.reminders li { font-size: .82rem; margin: .12rem 0; }

/* теги и поиск скриптов */
.tagbar { display: flex; gap: .3rem; flex-wrap: wrap; margin: .45rem 0; }
.tagchip { cursor: pointer; font: inherit; font-size: .75rem; font-weight: 600;
           padding: .12rem .55rem; border-radius: 99px; border: 1px solid var(--c-border);
           background: var(--c-bg); color: var(--c-text-2); }
.tagchip:hover { border-color: var(--c-primary); color: var(--c-primary); }
.tagchip.on { background: var(--c-primary); border-color: var(--c-primary); color: #fff; }
.pb-list { max-height: 13rem; overflow-y: auto; margin-top: .35rem; }
.pb-item { padding: .4rem .55rem; border-radius: var(--radius-sm); cursor: pointer; font-size: .82rem; }
.pb-item:hover { background: var(--c-primary-soft); }
.pb-item b { font-weight: 600; }

.coach-card { padding: .55rem .8rem; border-radius: var(--radius-sm); margin: .4rem 0;
              font-size: .82rem; background: var(--c-bg); border: 1px solid var(--c-border); }
.coach-card b { display: block; font-size: .75rem; text-transform: uppercase; letter-spacing: .04em;
                margin-bottom: .12rem; color: var(--c-text-2); }
.coach-card.offer { background: var(--c-success-soft); border-color: #c4ecd2; }
.coach-card.offer b { color: var(--c-success); }
.coach-card.obj { background: var(--c-warn-soft); border-color: #f5dfb8; }
.coach-card.obj b { color: var(--c-warn); }
.coachlog { max-height: 24rem; overflow-y: auto; }
.coach-entry { background: #fffdf3; border: 1px solid #efe7c2; border-radius: var(--radius-sm);
               padding: .55rem .75rem; margin: .45rem 0; font-size: .82rem; white-space: pre-wrap; }
.coach-entry small { color: var(--c-text-3); display: block; margin-bottom: .15rem; }
.coach-line { line-height: 1.4; margin-top: .18rem; }

.stages { display: flex; flex-wrap: wrap; gap: .35rem; margin: .25rem 0 .6rem; }
.stages .st { font-size: .82rem; padding: .18rem .6rem; border-radius: 99px;
              background: var(--c-bg); color: var(--c-text-2); border: 1px solid var(--c-border); }
.stages .st.active { background: var(--c-primary); border-color: var(--c-primary);
                     color: #fff; font-weight: 600; }
.checklist-head { font-size: .82rem; margin-bottom: .25rem; }
.checklist .q { font-size: .82rem; padding: .14rem 0; color: var(--c-text-2); }
.checklist .q.clickable { cursor: pointer; padding: .32rem .4rem; border-radius: 6px; margin: 0 -.35rem; }
/* фраза «что сказать сейчас» — заметной цитатой (киллер-фича суфлёра) */
#sufSay { font-weight: 600; margin-top: .4rem; padding: .4rem .55rem;
  background: var(--c-primary-soft); border-left: 3px solid var(--c-primary); border-radius: 6px; }
/* быстрые команды суфлёра — компактный ряд кнопок */
.quick-cmds { display: flex; flex-wrap: wrap; gap: .3rem; margin: .55rem 0 .2rem; }
.quick-cmds .btn { font-size: .78rem; padding: .3rem .52rem; }
/* «Не забудьте»: ярлык типа напоминания (возражение/оффер/вопрос/повестка) */
.rem-tag { display: inline-block; font-size: .68rem; text-transform: uppercase; letter-spacing: .04em;
  padding: 0 .35rem; margin-right: .35rem; border-radius: 4px; background: var(--c-border); color: var(--c-text-2); }
.rem-objection .rem-tag { background: var(--c-danger-soft); color: var(--c-danger); }
.rem-offer .rem-tag { background: var(--c-success-soft); color: var(--c-success); }
.rem-question .rem-tag { background: var(--c-primary-soft); color: var(--c-primary); }
/* номер пункта повестки — заметный, LLM ссылается на пункты по номерам */
.agno { color: var(--c-text-3); font-weight: 600; }
/* индикатор «суфлёр думает…» — мягкий пульс, виден при авто-обновлении и быстрых командах */
.thinking { animation: thinkpulse 1.1s ease-in-out infinite; }
@keyframes thinkpulse { 50% { opacity: .35; } }
/* тосты: событие видно сразу, не надо искать строку статуса в ленте */
#toasts { position: fixed; right: 1rem; bottom: 4.2rem; z-index: 1000; display: grid; gap: .4rem; }
.toast { background: var(--c-text); color: var(--c-bg); padding: .5rem .8rem; border-radius: var(--radius-sm);
  font-size: .85rem; box-shadow: var(--shadow); max-width: 20rem; opacity: .96; transition: opacity .4s, transform .4s; }
.toast.out { opacity: 0; transform: translateY(.4rem); }
/* фокус-режим: на встрече виден ТОЛЬКО суфлёр + шапка — протоколы/транскрипт скрыты
   (прогрессивное раскрытие; на мобильном секции и так переключаются нижними вкладками) */
@media (min-width: 701px) {
  body.focus-mode .panel-tabs, body.focus-mode .card.transcript, body.focus-mode .col-resizer { display: none; }
}
/* a11y: видимый фокус на кликабельных пунктах чек-листа (клавиатурная навигация) */
.checklist .q.clickable:focus-visible { outline: 2px solid var(--c-primary); outline-offset: 1px; }
/* значок темы: свои SVG-иконки, переключение чистым CSS по data-theme (без JS-перерисовки) */
.theme-toggle .th-sun { display: none; }
[data-theme="dark"] .theme-toggle .th-sun { display: inline-flex; }
[data-theme="dark"] .theme-toggle .th-moon { display: none; }
.checklist .q.clickable:hover { background: var(--c-primary-soft); }
.checklist .q.done { color: var(--c-success); }
.checklist .q.done::before { content: "✓ "; }
.checklist .q.next { font-weight: 600; color: var(--c-primary); }
.checklist .q.next::before { content: "→ "; }
.checklist .q.todo::before { content: "○ "; color: var(--c-text-3); }

/* тарифы */
.tariff-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: .8rem; }
.tariff-card { display: flex; flex-direction: column; gap: .5rem; }
.tariff-current { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-soft); }
.tariff-featured { border-color: var(--c-primary); }
.tariff-name { font-weight: 700; font-size: 1.1rem; display: flex; align-items: center; gap: .4rem; }
.tariff-price { font-size: 1.3rem; font-weight: 700; }
.tariff-feats { margin: 0; padding-left: 1.1rem; display: grid; gap: .3rem; font-size: .9rem; }
.tariff-card form, .tariff-card .btn { margin-top: auto; }

.summary-box { background: var(--c-bg); border: 1px solid var(--c-border);
               border-radius: var(--radius-sm); padding: .9rem 1rem; white-space: pre-wrap;
               font-size: .9rem; }
.summary-box:empty { display: none; }   /* пока протокол не собран — не показываем пустой бокс */

/* ---------- плейбуки ---------- */
.pb-card { position: relative; }
.pb-meta { color: var(--c-text-3); font-size: .82rem; margin: .25rem 0 .75rem; }
.hit { margin: .35rem 0; font-size: .9rem; }

/* тулбар списка плейбуков: поиск + переключатель вида */
.pb-toolbar { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap;
              margin: 1.5rem 0 .75rem; }
.pb-toolbar #pbSearch { flex: 1; min-width: 12rem; max-width: 24rem; }
.view-toggle { display: flex; border: 1px solid var(--c-border); border-radius: var(--radius-sm);
               overflow: hidden; }
.view-toggle button { border: none; background: #fff; padding: .45rem .7rem; cursor: pointer;
                      font-size: 1rem; color: var(--c-text-2); }
.view-toggle button.active { background: var(--c-primary); color: #fff; }

/* режим «список»: компактные строки в одну колонку */
#pbGrid.as-list { grid-template-columns: 1fr; }
.as-list .pb-card .inline-form,
.as-list .pb-card .pb-meta { display: none; }
.as-list .pb-card .actions { margin-top: .4rem; }
.as-list .pb-card { padding: .7rem 1rem; }
.as-list .pb-card h3 { font-size: .9rem; }

.pb-card.flash { animation: cardflash 1.6s ease; }
@keyframes cardflash {
  0% { box-shadow: 0 0 0 2px var(--c-primary); }
  100% { box-shadow: var(--shadow); }
}

/* автокомплит тегов */
.tags-input { position: relative; }
.tag-suggest { position: relative; z-index: 5; margin-top: -2px; background: #fff;
               border: 1px solid var(--c-border); border-radius: var(--radius-sm);
               box-shadow: var(--shadow); max-height: 11rem; overflow: auto; }
.ts-item { padding: .4rem .6rem; cursor: pointer; font-size: .9rem; }
.ts-item:hover, .ts-item.on { background: var(--c-primary-soft); }

/* тост (в т.ч. с действием «Отменить» для необратимых операций — паттерн Telegram) */
.toast { position: fixed; left: 50%; bottom: 1.5rem; transform: translate(-50%, 1rem);
         display: flex; align-items: center; gap: .6rem;
         background: var(--c-text); color: #fff; padding: .55rem .7rem .55rem 1rem; border-radius: 99px;
         box-shadow: var(--shadow-lg); font-size: .9rem; opacity: 0;
         transition: opacity .25s, transform .25s; z-index: 100; max-width: calc(100vw - 1.5rem); }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.toast-msg { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.toast-count { flex: none; font-variant-numeric: tabular-nums; opacity: .7; font-size: .82rem;
               min-width: 1.5rem; text-align: right; }
.toast-undo { flex: none; background: transparent; border: none; color: #fff; font: inherit;
              font-weight: 700; cursor: pointer; padding: .35rem .8rem; border-radius: 99px;
              display: inline-flex; align-items: center; gap: .35rem; min-height: 2.2rem; }
.toast-undo:hover { background: rgba(255,255,255,.16); }
@media (max-width: 640px) {
  .toast { left: .75rem; right: .75rem; transform: translateY(1rem); max-width: none; }
  .toast.show { transform: translateY(0); }
  .toast-msg { white-space: normal; }
}

@media (max-width: 640px) {
  .page { padding: 1rem .75rem 3rem; }
  .nav-links a { padding: .4rem .5rem; font-size: .9rem; }
  .page-head { flex-direction: column; align-items: stretch; }
}

/* панель повестки (требуется сценарием) */
.agenda-panel { background: var(--c-warn-soft); border: 1px solid #f0dcc0;
                border-radius: var(--radius-sm); padding: .7rem .8rem; margin-bottom: .6rem; }
.agenda-head { display: flex; align-items: center; gap: .4rem; font-weight: 600;
               font-size: .9rem; margin-bottom: .4rem; }
.req-badge { font-size: .75rem; font-weight: 600; color: var(--c-warn); background: #fff;
             border: 1px solid #f0dcc0; border-radius: 99px; padding: .05rem .45rem; margin-left: auto; }

/* повестка в отдельной закладке */
.agenda-view ul { margin: .3rem 0; padding-left: 1.2rem; }
.agenda-view li { margin: .35rem 0; }

/* баннер подключения бота */
.bot-banner { display: flex; align-items: center; gap: .7rem; padding: .7rem 1rem; margin-bottom: .75rem;
              border-radius: var(--radius); border: 1px solid #cdd9fb; background: var(--c-primary-soft);
              color: var(--c-primary); font-weight: 600; position: relative; overflow: hidden; }
.bot-banner.ok  { background: var(--c-success-soft); border-color: #bfe3cc; color: var(--c-success); }
.bot-banner.err { background: var(--c-danger-soft);  border-color: #f3c6c6; color: var(--c-danger); }
.bot-spin { width: 16px; height: 16px; border-radius: 50%; border: 2px solid currentColor;
            border-right-color: transparent; animation: spin .8s linear infinite; flex: none; }
.bot-banner.ok .bot-spin, .bot-banner.err .bot-spin { display: none; }
@keyframes spin { to { transform: rotate(360deg); } }
.bot-bar { position: absolute; left: 0; bottom: 0; height: 3px; width: 100%; }
.bot-bar > div { height: 100%; width: 35%; background: var(--c-primary); border-radius: 99px;
                 animation: botbar 1.4s ease-in-out infinite; }
.bot-banner.ok .bot-bar, .bot-banner.err .bot-bar { display: none; }
@keyframes botbar { 0% { margin-left: -35%; } 100% { margin-left: 100%; } }

/* ---------- переключатель темы (верхнее меню) ---------- */
.theme-toggle { background: none; border: 1px solid var(--c-border-strong); border-radius: 99px;
  cursor: pointer; font-size: .95rem; line-height: 1; padding: .35rem .5rem; margin-left: .25rem;
  color: var(--c-text-2); flex: none; }
.theme-toggle:hover { border-color: var(--c-primary); }

/* ---------- тёмная тема ---------- */
:root[data-theme="dark"] {
  --c-bg: #0f1115;
  --c-surface: #171a21;
  --c-border: #2a2f3a;
  --c-border-strong: #444d5e;
  --c-text: #e7e9ee;
  --c-text-2: #a3abba;
  --c-text-3: #767e8d;
  --c-primary: #6ea8fe;
  --c-primary-600: #5b93f0;
  --c-primary-soft: #1d2942;
  --c-success: #4ade80;
  --c-success-soft: #16291d;
  --c-warn: #fbbf24;
  --c-warn-soft: #2a2113;
  --c-danger: #f87171;
  --c-danger-soft: #2a1717;
  --c-live: #f87171;
  --shadow: 0 1px 2px rgba(0,0,0,.4), 0 4px 16px rgba(0,0,0,.45);
  --shadow-lg: 0 10px 44px rgba(0,0,0,.6);
}
:root[data-theme="dark"] .nav { background: rgba(17,20,27,.92); }
:root[data-theme="dark"] .card.accent { background: linear-gradient(180deg, #1b2030, #171a21); border-color: #2c3550; }
:root[data-theme="dark"] .suflor { background: linear-gradient(180deg, #1b2030, #171a21); border-color: #2c3550; }
:root[data-theme="dark"] .onboard { background: linear-gradient(180deg, #1b2030, #171a21); border-color: #2c3550; }
:root[data-theme="dark"] tr:hover td { background: #1c2029; }
:root[data-theme="dark"] .kcol.karchive { background: #12141a; }
:root[data-theme="dark"] .btn.secondary { background: #20253033; }
:root[data-theme="dark"] .btn.secondary:hover { background: #2a3142; }
:root[data-theme="dark"] .coach-entry { background: #211f17; border-color: #3a3522; }
:root[data-theme="dark"] code { background: #20242d; }
:root[data-theme="dark"] .toast { background: #20242d; }
/* нативные выпадашки и пикеры (select, календарь, время, спиннеры) в тёмной теме —
   рендерим тёмными, иначе всплывающий список select светлый и «выбивается» из темы */
:root[data-theme="dark"] input,
:root[data-theme="dark"] select,
:root[data-theme="dark"] textarea { color-scheme: dark; }

/* ---------- date-input в общем стиле (шрифт + единый вид) ---------- */
input[type=date], input[type=time] {
  width: 100%; padding: .55rem .7rem; font: inherit; color: var(--c-text);
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-sm);
  transition: border-color .15s, box-shadow .15s; min-height: 2.6rem;
}
input[type=date]:focus, input[type=time]:focus {
  outline: none; border-color: var(--c-primary); box-shadow: 0 0 0 3px rgba(20,120,240,.15);
}
input[type=date]::-webkit-calendar-picker-indicator { cursor: pointer; opacity: .6; }
input[type=date]::-webkit-calendar-picker-indicator:hover { opacity: 1; }

/* ---------- «светофор» сроков задач (как в Bitrix24, мягко) ---------- */
.kdue.due-over { color: var(--c-danger); background: transparent; border-color: transparent; }
td.due-over { color: var(--c-danger); }
.kdue.due-today { color: var(--c-warn); background: transparent; border-color: transparent; }
td.due-today { color: var(--c-warn); }
td.due-over, td.due-today { font-weight: 700; }

/* ---------- вкладки (админка и пр.) ---------- */
.tabs { display: inline-flex; gap: 2px; padding: 3px; background: var(--c-bg);
  border: 1px solid var(--c-border-strong); border-radius: 99px; margin-bottom: 1rem; flex-wrap: wrap; }
.tabs button { border: none; background: none; cursor: pointer; font: inherit; font-weight: 600;
  font-size: .9rem; padding: .4rem 1rem; border-radius: 99px; color: var(--c-text-2); }
.tabs button.active { background: var(--c-primary); color: #fff; }
.tabpane[hidden] { display: none !important; }

/* ---------- интеграции (админка) ---------- */
.intg-status { font-size: .85rem; }
.intg-items { max-height: 16rem; overflow-y: auto; border: 1px solid var(--c-border); border-radius: var(--radius-sm); }
.intg-item { padding: .3rem .6rem; border-bottom: 1px solid var(--c-border); font-size: .85rem;
  color: var(--c-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.intg-item:last-child { border-bottom: none; }
/* выпадающий поиск проектов Б24 (экран проектов) */
.pm-drop { position: fixed; z-index: 300; background: var(--c-surface); border: 1px solid var(--c-border);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-lg); max-height: 16rem; overflow-y: auto;
  min-width: 12rem; overscroll-behavior: contain; }
.pm-drop-item { padding: .35rem .6rem; font-size: .85rem; cursor: pointer; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.pm-drop-item:hover { background: var(--c-primary); color: #fff; }

/* ---------- кнопка-карандаш «переименовать встречу» ---------- */
.title-edit { background: none; border: none; cursor: pointer; color: var(--c-text-3);
  padding: .1rem .25rem; margin-left: .35rem; border-radius: 6px; vertical-align: middle; }
.title-edit:hover { color: var(--c-primary); background: var(--c-bg); }
body.viewer .title-edit { display: none; }

/* ---------- ссылка на встречу (бот) — заметный чип в шапке ---------- */
.meet-link { display: inline-flex; align-items: center; gap: .35rem; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  padding: .25rem .7rem; border: 1px solid var(--c-primary); border-radius: 99px;
  color: var(--c-primary); font-weight: 600; font-size: .85rem; flex: none; }
.meet-link:hover { background: var(--c-primary); color: #fff; text-decoration: none; }

/* ---------- структурный редактор чек-листа и скрипта (сценарии, /prep) ---------- */
.ql-rows { display: flex; flex-direction: column; gap: .35rem; }
.ql-row { display: flex; align-items: flex-start; gap: .3rem; background: #fff;
  border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: .25rem .45rem; }
.ql-row:focus-within { border-color: var(--c-primary); }
.ql-row.dragging { opacity: .6; border-color: var(--c-primary); box-shadow: var(--shadow-lg); }
.ql-row.ql-removed { display: none; }
.ql-grip { cursor: grab; color: var(--c-text-3); user-select: none; touch-action: none;
  letter-spacing: -3px; padding: .35rem .15rem 0; flex: none; }
.ql-grip:active { cursor: grabbing; }
.ql-num { min-width: 1.4rem; text-align: right; color: var(--c-text-3);
  font-size: .78rem; flex: none; padding-top: .42rem; }
/* поля без собственных рамок — рамка у всей строки; textarea растут по содержимому */
.ql-row textarea { border: none; background: transparent; width: auto; display: block;
  margin: 0; padding: .3rem .35rem; font-size: .9rem; font-family: inherit;
  line-height: 1.4; resize: none; overflow: hidden; min-height: 30px; }
.ql-row textarea:focus { outline: none; background: var(--c-primary-soft); border-radius: 6px;
  box-shadow: none; border: none; }
.ql-label { flex: 0 0 32%; font-weight: 600; }
.ql-text { flex: 1 1 auto; min-width: 0; }
.ql-del { border: none; background: none; color: var(--c-text-3); cursor: pointer;
  font-size: 1.05rem; line-height: 1; padding: .35rem .35rem .15rem; border-radius: 6px; flex: none; }
.ql-del:hover { color: var(--c-danger); background: var(--c-danger-soft); }
.ql-foot { display: flex; justify-content: space-between; align-items: center; margin-top: .55rem; }
.ql > textarea { font-family: ui-monospace, "JetBrains Mono", Consolas, monospace; font-size: .84rem; }
@media (max-width: 640px) {
  /* на телефоне «суть» и формулировка — друг под другом, ряд остаётся одним пунктом */
  .ql-row { flex-wrap: wrap; }
  .ql-label { flex: 1 1 calc(100% - 5rem); }
  .ql-text { flex: 1 1 100%; order: 5; }
}

/* авторастущие обычные поля (цель встречи и т.п.) */
textarea.grow { resize: none; overflow: hidden; }
/* панель «есть несохранённые изменения» в диалоге */
.dlg-guard { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center;
  background: var(--c-warn-soft, #fff7e6); border: 1px solid #eed9a6;
  border-radius: var(--radius-sm); padding: .55rem .7rem; margin-bottom: .8rem;
  font-size: .9rem; }
/* инлайн-полоска отмены удаления пункта (в модальном диалоге глобальный тост недоступен) */
.ql-undo { display: flex; align-items: center; gap: .6rem; font-size: .86rem;
  color: var(--c-text-2); background: var(--c-bg); border: 1px dashed var(--c-border);
  border-radius: var(--radius-sm); padding: .4rem .6rem; }
.ql-undo-count { color: var(--c-text-3); font-size: .78rem; min-width: 1.6rem; }
.ql-undo .toast-undo { margin-left: auto; }

/* ---------- окно «Вид протокола» (#40051) ---------- */
.proto-dlg{border:none;border-radius:var(--radius);box-shadow:var(--shadow-lg);
  padding:0;max-width:32rem;width:92vw}
.proto-dlg::backdrop{background:rgba(20,30,50,.35)}
.proto-opts{display:grid;gap:.4rem;margin:.4rem 0 .9rem}
.proto-opt{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;text-align:left;
  border:1px solid var(--c-border);background:var(--c-surface);border-radius:var(--radius-sm);
  padding:.45rem .65rem;cursor:pointer;font:inherit}
.proto-opt:hover{border-color:var(--c-primary);background:var(--c-primary-soft)}
/* замечание владельца (#40051): без жирного «в лоб» — умеренный вес и мельче */
.proto-opt b{font-size:.86rem;font-weight:600}
.proto-opt .faint{font-size:.76rem}
.proto-custom{border-top:1px solid var(--c-border);padding-top:.7rem}
.proto-custom textarea{width:100%;resize:vertical}
.proto-cat{display:block;text-align:right;font-size:.78rem;margin-top:.5rem}

/* область единого списка записей: без внутренних ползунков (замечание владельца
   23.07) — первые 15 строк + «Показать все», высота фиксируется JS-ом от прыжков */
.rec-scroll { overflow-x: auto; border: 1px solid var(--c-border-strong);
  border-radius: var(--radius-sm); }
/* скруглённые углы у списка (владелец 23.07): рамка-контейнер обрезает углы,
   внутренние края таблицы без двойных линий */
.rec-scroll .rec-table { border-collapse: collapse; border: none; }
.rec-scroll th { border-top: none; }
.rec-scroll th:first-child, .rec-scroll td:first-child { border-left: none; }
.rec-scroll th:last-child, .rec-scroll td:last-child { border-right: none; }
.rec-scroll tr:last-child td { border-bottom: none; }
.rec-more { display: block; margin: .6rem auto 0; }

/* заметный фильтр списка записей (владелец 23.07) */
.rec-filter { display: flex; align-items: center; gap: .45rem; min-width: 20rem;
  border: 1.5px solid var(--c-primary); border-radius: var(--radius-sm);
  background: var(--c-surface); padding: .1rem .6rem; color: var(--c-primary); }
.rec-filter input { border: none; background: none; outline: none; flex: 1;
  padding: .38rem 0; box-shadow: none; }
.rec-filter:focus-within { box-shadow: 0 0 0 3px var(--c-primary-soft); }
@media (max-width: 700px) { .rec-filter { min-width: 0; width: 100%; } }

/* ---------- мультизагрузка файлов (#40595) ---------- */
.up-list { list-style: none; margin: .8rem 0 0; padding: 0; display: grid; gap: .35rem; }
.up-list li { display: flex; align-items: center; gap: .7rem; border: 1px solid var(--c-border);
              border-radius: var(--radius-sm); padding: .45rem .7rem; font-size: .88rem; }
.up-name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
a.up-name { color: var(--c-primary); }
.up-st { margin-left: auto; color: var(--c-text-2); white-space: nowrap; }
.up-st.err { color: var(--c-danger); }
.up-x { border: none; background: none; cursor: pointer; color: var(--c-text-3); font-size: .9rem; }
.up-x:hover { color: var(--c-danger); }

/* ---------- суфлёр 2.0: мгновенная отработка возражения (#40407) ---------- */
.obj-alert { border: 1px solid #f3c6c6; background: var(--c-danger-soft);
             border-radius: var(--radius-sm); padding: .6rem .75rem; margin: .6rem 0;
             display: grid; gap: .3rem; }
.obj-head { display: flex; align-items: center; gap: .45rem; font-weight: 700;
            font-size: .8rem; letter-spacing: .04em; color: var(--c-danger); }
.obj-head .badge { font-weight: 600; letter-spacing: normal; }
.obj-close { background: none; border: none; cursor: pointer; color: var(--c-text-3);
             font-size: .95rem; line-height: 1; padding: .1rem .25rem; }
.obj-close:hover { color: var(--c-text); }
.obj-quote { font-size: .8rem; }
.obj-reply { font-size: .92rem; font-weight: 600; }
:root[data-theme="dark"] .obj-alert { border-color: #5a2a2a; }

/* ---------- риалтайм-ассистент встречи (#40409) ---------- */
.live-board > .assist-card { grid-column: 1 / -1; }
.assist-card { padding: .8rem 1rem; }
.assist-head { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; }
.assist-head h2 { margin: 0; font-size: 1.02rem; display: inline-flex; align-items: center; gap: .4rem; }
.assist-voice { font-size: .82rem; color: var(--c-text-2); display: inline-flex;
                align-items: center; gap: .35rem; cursor: pointer; }
.assist-log { display: grid; gap: .55rem; height: 16rem; overflow-y: auto; margin: .6rem 0;
              resize: vertical; min-height: 6rem; border: 1px solid var(--c-border);
              border-radius: var(--radius-sm); padding: .55rem .7rem;
              align-content: start; }
/* пока вопросов нет — компактная плашка-подсказка */
.assist-log:has(.assist-empty:only-child) { height: auto; resize: none; border: none; padding: 0; }
.assist-item { display: grid; gap: .25rem; }
.assist-q { font-weight: 600; font-size: .88rem; }
.assist-q .badge { font-weight: 500; }
.assist-a { font-size: .88rem; white-space: pre-wrap; background: var(--c-bg);
            border: 1px solid var(--c-border); border-radius: var(--radius-sm);
            padding: .5rem .7rem; }
.assist-form { display: flex; gap: .5rem; }
.assist-form input { flex: 0 1 30rem; min-width: 12rem; }

/* ---------- каталог AI-навыков (#40411) ---------- */
.skill-list{display:grid;gap:.4rem;margin-top:.5rem}
.skill-row{display:flex;align-items:flex-start;gap:.6rem;border:1px solid var(--c-border);
  border-radius:var(--radius-sm);padding:.55rem .7rem;cursor:pointer}
.skill-row:hover{border-color:var(--c-primary)}
.skill-row input{width:1.05rem;height:1.05rem;margin-top:.15rem;flex:none}
.skill-txt{display:flex;flex-direction:column;gap:.1rem}
.skill-name{font-weight:600;font-size:.9rem}
.skill-row .faint{font-size:.8rem}

/* единый ресайзер ширины страницы (ручка у правого края, как у доски задач) */
.page-resizer { position: absolute; top: 0; bottom: 0; right: -11px; width: 14px; cursor: ew-resize;
                display: flex; align-items: center; justify-content: center; z-index: 5; }
.page-resizer::after { content: ""; width: 4px; height: 46px; border-radius: 99px;
                       background: var(--c-border); transition: background .15s; }
.page-resizer:hover::after { background: var(--c-primary); }
@media (max-width: 700px) { .page-resizer { display: none; } }

/* страница никогда не скроллится вбок: широкий контент (таблицы, доска) крутится
   в СВОИХ контейнерах overflow-x:auto, а не выталкивает документ */
html, body { overflow-x: hidden; }
/* вкладки разной высоты (сводка/протокол/транскрипт) меняют наличие полосы
   прокрутки окна — без резерва под неё страница «дёргается» вбок (владелец 26.07) */
html { scrollbar-gutter: stable; }
/* мобильный навбар ОДНОЙ строкой: логотип без текста, пункты со своей прокруткой,
   «Выйти» иконкой — ничего не переносится и не наезжает на баннеры (правка 23.07) */
@media (max-width: 700px) {
  .nav-inner { flex-wrap: nowrap; gap: .5rem; }
  .brand-txt, .logout-txt { display: none; }
  .nav-user { gap: .35rem; }
  .nav-user form .btn { padding: .4rem .5rem; }
  .nav-links { overflow-x: auto; flex-wrap: nowrap; min-width: 0; margin-left: 0;
               -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .nav-links::-webkit-scrollbar { display: none; }
  .nav-links a { padding: .4rem .55rem; white-space: nowrap; }
}

/* мобильные вкладки-«пилюли» (запись, загрузка, вид доски): одна строка со своей
   прокруткой вместо переноса подписей на две строчки */
@media (max-width: 700px) {
  .tabs, .seg-toggle { display: flex; flex-wrap: nowrap; max-width: 100%; overflow-x: auto;
                       -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .tabs::-webkit-scrollbar, .seg-toggle::-webkit-scrollbar { display: none; }
  .tabs button, .seg-toggle button { flex: none; white-space: nowrap; }
  /* полоса «Задачи:» на записи: каждое поле на всю ширину (перебиваем inline flex:1) */
  .task-target > input[type=text] { flex: 1 1 100% !important; }
  /* шапки карточек с кнопками (h2-строка): кнопки переносятся под заголовок,
     а не вылезают за край карточки */
  .card > h2 { flex-wrap: wrap; }
  .card > h2 > span { flex-wrap: wrap; max-width: 100%; }
}

/* ---------- комбо с поиском (combo.js): попап списка под полем ---------- */
.combo-pop { position: fixed; z-index: 9999; max-height: 260px; overflow: auto;
  background: var(--c-card, #fff); border: 1px solid var(--c-border, #d8dbe6);
  border-radius: 8px; box-shadow: 0 8px 28px rgba(20, 22, 30, .18); font-size: .9rem; }
.combo-it { padding: .35rem .6rem; cursor: pointer; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis; }
.combo-it:hover, .combo-it.active { background: var(--c-accent-soft, #eef0fe); }

/* ---------- меню «Скачать» (details.menu): кнопка + выпадающий список ---------- */
details.menu { position: relative; display: inline-block; }
details.menu > summary { list-style: none; cursor: pointer; user-select: none; }
details.menu > summary::-webkit-details-marker { display: none; }
details.menu > summary::after { content: " ▾"; font-size: .75em; opacity: .65; }
details.menu > .menu-pop { position: absolute; z-index: 60; top: calc(100% + 4px); left: 0;
  min-width: 11rem; background: var(--c-card, #fff); border: 1px solid var(--c-border, #d8dbe6);
  border-radius: 8px; box-shadow: 0 8px 28px rgba(20, 22, 30, .18); padding: .25rem;
  display: flex; flex-direction: column; }
details.menu > .menu-pop a { padding: .4rem .6rem; border-radius: 6px; color: inherit;
  text-decoration: none; font-size: .88rem; white-space: nowrap;
  display: flex; gap: .45rem; align-items: center; }
details.menu > .menu-pop a:hover { background: var(--c-accent-soft, #eef0fe); }
details.menu > .menu-pop .menu-sep { border-top: 1px solid var(--c-border, #d8dbe6); margin: .25rem 0; }

/* ---------- мобильная адаптация: телефоны (13.07, этап «мобильные экраны») ---------- */
.tbl-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
@media (max-width: 640px) {
  /* формы над задачами из протокола (live/файл): каждое поле на всю ширину */
  .task-target > * { flex: 1 1 100%; min-width: 0; }
  /* построчные поля задач: снимаем настольные max-width — поля переносятся на всю строку */
  .task-edit input[type=text], .task-edit select, .task-edit input[type=date] { max-width: none !important; flex: 1 1 8rem; }
  /* списки-таблицы: горизонтальный скролл своей областью, а не всей страницей */
  .tasklist { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .tasklist .tlist { min-width: 640px; }
  .tbl-scroll .tm-table { min-width: 680px; }
  /* панель доски и bulk-панель: элементы на всю ширину, кнопки в ряд по месту */
  .board-bar input[type=search], .board-bar form.inline-form, .board-bar select { flex: 1 1 100%; max-width: none !important; }
  #tlistBulk input[type=text], #tlistBulk select { flex: 1 1 100%; max-width: none !important; }
  /* канбан: колонки полной ширины экрана, горизонтальная прокрутка по одной */
  .kanban { scroll-snap-type: x mandatory; }
  .kanban .kcol { min-width: min(86vw, 20rem); scroll-snap-align: start; }
}

/* ---------- полиш в стиле облачной консоли (13.07, по референсу владельца) ---------- */
/* фон страницы: лёгкая голубизна сверху, тает в базовый серый к середине экрана */
body { background: linear-gradient(180deg, #eaf1fa 0, var(--c-bg) 26rem); }
:root[data-theme="dark"] body { background: linear-gradient(180deg, #141b2a 0, var(--c-bg) 26rem); }
/* карточки с заголовком: нежный градиент сверху, тает к середине (как у .card.accent) */
.card:has(> h2:first-child) { background: linear-gradient(180deg, #f2f7fd, var(--c-surface) 55%); }
:root[data-theme="dark"] .card:has(> h2:first-child) {
  background: linear-gradient(180deg, #1b2030, var(--c-surface) 55%); }
.card > h2:first-child { display: flex; align-items: center; gap: .5rem; }
/* кружок-иконка в шапке карточки (белый круг с пиктограммой справа, как в консоли) */
.card > h2 .ico-badge { margin-left: auto; width: 2.3rem; height: 2.3rem; border-radius: 50%;
  background: var(--c-surface); border: 1px solid var(--c-border); box-shadow: var(--shadow);
  display: inline-flex; align-items: center; justify-content: center; color: var(--c-primary);
  flex: none; }

/* тарифы — градиентные шапки как у карточек с заголовком (просьба владельца 13.07) */
.tariff-card { background: linear-gradient(180deg, #f2f7fd, var(--c-surface) 55%); }
:root[data-theme="dark"] .tariff-card { background: linear-gradient(180deg, #1b2030, var(--c-surface) 55%); }
@media (max-width: 640px) {
  /* мобайл: строки «израсходовано … из …» и даты переносятся, не сжимая заголовок */
  .prog-head { flex-wrap: wrap; row-gap: .15rem; }
}

/* ровные строки сопоставлений (проекты Б24/трекера, «Команда» и т.п.):
   текущее значение | селект фиксированной ширины | кнопки — колонки не «прыгают» */
.map-cells { display: flex; align-items: center; justify-content: flex-end; gap: .45rem; }
.map-cells .pmcur { flex: 1; min-width: 0; text-align: right;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.map-cells select { width: 14rem; flex: none; padding: .3rem .4rem; }
.map-cells .btn { flex: none; }
.map-cells .pmunlink { width: 2.2rem; justify-content: center; }
.map-cells .pmunlink.ph { visibility: hidden; }   /* место под «×» резервируем всегда */
.intg-projmap table { width: 100%; }

/* админка: пользователи длинными карточками (владелец 26.07) — без гориз. прокрутки */
.usr-list { display: flex; flex-direction: column; gap: .6rem; }
.usr-card { border: 1px solid var(--c-border-strong); border-radius: var(--radius-sm);
            padding: .6rem .8rem; background: var(--c-surface); }
.usr-head { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: .45rem; }
.usr-mail { font-weight: 700; }
.usr-controls { display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.usr-chip { display: inline-flex; align-items: center; gap: .4rem; padding: .25rem .6rem;
            border: 1px solid var(--c-border); border-radius: 99px; background: var(--c-bg);
            font-size: .85rem; white-space: nowrap; }
.usr-chip .chk { margin: 0; font-weight: 500; }
.usr-chip-l { color: var(--c-text-3); font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }

/* шестерёнка «ещё разделы» подсвечивается на своих страницах */
.nav-more-on { color: var(--c-primary); border-color: var(--c-primary); }

/* центр поддержки: кнопка «?» в навбаре + чат ИИ-помощника */
#supportMenu > summary { display: inline-flex; }
#supportMenu > summary::after { content: none; }   /* круглая кнопка — без стрелки */
.sup-msg { padding: .5rem .75rem; border-radius: 10px; max-width: 92%;
  white-space: pre-wrap; font-size: .9rem; line-height: 1.45; }
.sup-q { align-self: flex-end; background: var(--c-btn, var(--c-primary)); color: #fff; }
.sup-a { align-self: flex-start; background: var(--c-bg); }

/* меню-действия bulk-панели списка задач: без выбранных задач кнопка «выключена» */
/* «выключено» без блёклой рамки (замечание владельца 24.07): контур остаётся
   чётким как у активных, приглушается только текст */
.act-menu > summary.btn-off { cursor: default; color: var(--c-text-3); }
.btn:disabled { opacity: 1; color: var(--c-text-3); }
.btn:disabled:not(.secondary):not(.ghost):not(.danger) { opacity: .55; color: #fff; }

/* строки задач из протокола (live/файл): ровные колонки полей во всех строках
   (фидбек владельца 13.07); на мобиле поля по-прежнему на всю ширину */
@media (min-width: 641px) {
  .task-edit input[data-tt] { flex: 1 1 12rem !important; min-width: 10rem; }
  .task-edit input[data-ta] { width: 11rem !important; max-width: 11rem !important; flex: none; }
  .task-edit input[data-td] { width: 8.8rem !important; max-width: 8.8rem !important; flex: none; }
  .task-edit select[data-tp] { width: 12rem !important; max-width: 12rem !important; flex: none; }
}

/* шапка записи: группа и участники — кликабельные чипы (не «портянка» текста) */
.rec-chips { display: flex; gap: .5rem; flex-wrap: wrap; margin: 0; }
.rec-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .25rem .7rem;
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: 99px;
  color: var(--c-text); text-decoration: none; font-size: .85rem; max-width: 100%; }
.rec-chip:hover { border-color: var(--c-primary); text-decoration: none; }
.rec-chip b { max-width: 18rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rec-chip .ic:last-child { color: var(--c-text-3); }

/* недоступные поля привязок (объект уже связан): приглушённые, курсор запрета */
input:disabled, select:disabled { background: var(--c-bg); color: var(--c-text-3); cursor: not-allowed; }

/* подсветка кнопки «Микрофон» при продолжении встречи */
@keyframes tm-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(61,155,245,.55); } 55% { box-shadow: 0 0 0 9px rgba(61,155,245,0); } }
.mic-btn.pulse { animation: tm-pulse 1.2s ease-out 4; }

/* планировщик «Сегодня» (этап 3, #40915) */
.plan-day { font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--c-text-3); margin: .7rem 0 .25rem; }
.plan-day.first { margin-top: .3rem; }
.plan-row { display: flex; align-items: center; gap: .6rem; padding: .45rem .55rem;
  border: 1px solid var(--c-border); border-radius: var(--radius-sm); margin-top: .35rem;
  background: var(--c-surface); }
.plan-row:hover { border-color: var(--c-border-strong); }
.plan-time { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 3rem; }
.plan-title { flex: 1; min-width: 0; display: flex; align-items: center; gap: .45rem; flex-wrap: wrap; }
.plan-sub { font-size: .78rem; display: inline-flex; align-items: center; gap: .2rem; }
.plan-note { font-size: .78rem; color: var(--c-warn); }
.plan-side { display: flex; align-items: center; gap: .45rem; flex-shrink: 0; }
.plan-bot { display: inline-flex; align-items: center; gap: .3rem; font-size: .8rem; cursor: pointer;
  border: 1px solid var(--c-border); border-radius: 999px; padding: .18rem .6rem; color: var(--c-text-3);
  user-select: none; }
.plan-bot input { position: absolute; opacity: 0; pointer-events: none; width: 0; height: 0; }
.plan-bot.on { border-color: var(--c-primary); color: var(--c-primary);
  background: color-mix(in srgb, var(--c-primary) 8%, transparent); }
@media (max-width: 640px) {
  .plan-row { flex-wrap: wrap; }
  .plan-side { width: 100%; justify-content: flex-end; }
}

/* список участников встречи в диалоге планирования (#41069) */
.plan-ppl:hover { background: color-mix(in srgb, var(--c-primary) 6%, transparent); }
.plan-ppl:has(input:checked) { background: color-mix(in srgb, var(--c-primary) 9%, transparent); }

/* второй экран (?view=1): владельцу/админу возвращаем «Остановить запись» (#41085) */
body.viewer.viewer-owner #stopBot { display: inline-flex !important; }

/* мастер выбора режима на входе (#41111) */
.wiz-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin-top: .5rem; }
.wiz-card { display: flex; flex-direction: column; gap: .5rem; padding: 1.3rem 1.2rem; cursor: pointer;
  border: 2px solid var(--c-border); border-radius: var(--radius); background: var(--c-surface);
  transition: border-color .15s, box-shadow .15s, transform .05s; position: relative; }
.wiz-card:hover { border-color: var(--c-border-strong); }
.wiz-card.sel { border-color: var(--c-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-primary) 15%, transparent); }
.wiz-card input { position: absolute; opacity: 0; pointer-events: none; }
.wiz-ic { width: 48px; height: 48px; border-radius: 12px; display: grid; place-items: center; color: #fff;
  background: linear-gradient(135deg, var(--c-primary), color-mix(in srgb, var(--c-primary) 55%, #fff)); }
.wiz-card b { font-size: 1.05rem; }
.wiz-list { font-size: .82rem; color: var(--c-text-2); line-height: 1.9; margin-top: .2rem; }
.wiz-list svg { color: var(--c-primary); vertical-align: -.15em; }
@media (max-width: 820px) { .wiz-grid { grid-template-columns: 1fr; } }

/* минимальный навбар: пункт-меню «Ещё» выглядит как ссылка навбара (#41109) */
.nav-more { position: relative; }
.nav-more > summary { list-style: none; cursor: pointer; padding: .4rem .75rem; border-radius: 8px;
  color: var(--c-text-2); font-weight: 500; user-select: none; }
.nav-more > summary::-webkit-details-marker { display: none; }
.nav-more > summary:hover { background: var(--c-bg); color: var(--c-text); }
.nav-more > summary.active { color: var(--c-primary); background: var(--c-primary-soft); }
.nav-more[open] > summary { background: var(--c-bg); color: var(--c-text); }
.nav-more .menu-pop { left: 0; right: auto; min-width: 12rem; }
