/* Пульт поверх ui2 (дизайн-система AnySkills, вид Vuexy).
   Здесь только раскладки страниц пульта и несколько деталей, которых
   в ui2 нет. Цвета, шрифты, кнопки, карточки, метки — из ui2 как есть. */

.min-w-0{min-width:0}
.tabular{font-variant-numeric:tabular-nums}
.cell-title{color:var(--bs-heading-color);font-weight:var(--fw-medium,500)}
.cell-sub{color:var(--bs-secondary-color);font-size:.8125rem}
.page-subtitle{color:var(--bs-secondary-color);margin-top:.25rem;max-width:72ch}
.btn .ic{width:1.125rem;height:1.125rem;margin-right:.375rem;flex:none}
.btn-sm .ic{width:1rem;height:1rem;margin-right:.25rem}
.btn-icon .ic{margin:0}
.card-title .ic{width:1.25rem;height:1.25rem;margin-right:.5rem;vertical-align:-3px}

/* ── верхняя панель ─────────────────────────────────────────────── */
.navbar-end{display:flex;align-items:center;gap:1rem;margin-left:auto;min-width:0}
.navbar-host{display:inline-flex;align-items:center;gap:.5rem;color:var(--bs-secondary-color);
  font-size:.8125rem;white-space:nowrap}
.navbar-projects .form-select{display:inline-flex;align-items:center;gap:.375rem;max-width:14rem;min-width:10rem;text-align:left}
.navbar-projects .form-select .ic{width:1rem;height:1rem;flex:none;color:var(--bs-secondary-color)}
.pult-filter{width:17rem;padding:0}
.pult-filter-list{max-height:min(60vh,26rem);overflow:auto;padding:.375rem 0}
.pult-check{display:flex;align-items:center;gap:.625rem;cursor:pointer}
.pult-check .form-check-input{margin:0;flex:none}
.pult-filter-foot{display:flex;justify-content:space-between;gap:.5rem;padding:.625rem .75rem;
  border-top:1px solid var(--bs-border-color)}

/* ── итог действия ──────────────────────────────────────────────── */
.pult-toast{display:flex;gap:.75rem;align-items:flex-start;margin-bottom:1.5rem}
.pult-toast .ic{width:1.25rem;height:1.25rem;flex:none;margin-top:.0625rem}

/* ── главная ────────────────────────────────────────────────────── */
.pult-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem;margin-bottom:1.5rem}
.pult-stat{color:inherit;text-decoration:none;min-width:0}
.pult-stat .card-body{display:flex;gap:1rem;align-items:center}
.pult-stat .avatar .ic{width:1.5rem;height:1.5rem}
.pult-stat-sub{color:var(--bs-secondary-color);font-size:.8125rem;margin-top:.125rem;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pult-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;align-items:start;
  margin-bottom:1.5rem}
.pult-grid-wide{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.pult-grid .card-header .btn .ic{margin:0 0 0 .125rem}
.pult-row{display:flex;align-items:center;gap:1rem}
.pult-row>.min-w-0{flex:1}
.pult-row .avatar .ic{width:1.125rem;height:1.125rem}
.pult-time{color:var(--bs-secondary-color);font-size:.8125rem;width:5.75rem;flex:none}
.pult-4lines{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.pult-2lines{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pult-alert{border:1px solid rgba(var(--bs-danger-rgb),.35)}
.pult-done-btn{flex:none}

/* ── список и карточка (решения) ────────────────────────────────── */
.pult-filters{margin-bottom:1.5rem}
.pult-filters .form-select{width:auto;min-width:10rem}
.pult-filters input[type=search]{flex:1 1 14rem;min-width:0;max-width:24rem}
.pult-split{display:grid;grid-template-columns:minmax(18rem,26rem) minmax(0,1fr);gap:1.5rem;align-items:start}
.pult-list{position:sticky;top:calc(var(--navbar-height, 4rem) + 1.5rem);
  max-height:calc(100vh - var(--navbar-height, 4rem) - 3rem);overflow:auto}
.pult-list .pult-row{align-items:flex-start}
.pult-list .pult-row .badge{margin-top:.125rem}
.pult-list .is-active{background:rgba(var(--bs-primary-rgb),.1)}
.pult-list .is-active .cell-title{color:var(--bs-primary-text-emphasis)}
.pult-q{display:inline-grid;place-items:center;width:1rem;height:1rem;border-radius:50%;
  background:rgba(var(--bs-info-rgb),.16);color:var(--bs-info-text-emphasis);font-size:.6875rem;font-weight:600}
.pult-detail-head{flex-direction:column;align-items:flex-start;gap:.5rem}
.pult-detail-head .card-title{font-size:1.125rem;line-height:1.4}
.pult-detail>.card-body{padding-top:.5rem}
.pult-tabs{margin-bottom:1rem;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.pult-tabs .nav-link{white-space:nowrap}
/* Полоса вкладок прокручивается вбок, и её overflow срезал бы рамку
   фокуса сверху и снизу: рамка рисуется внутрь. */
.pult-tabs .nav-link:focus-visible{outline:2px solid var(--bs-primary);outline-offset:-2px;
  border-radius:var(--bs-border-radius);box-shadow:none}
.pult-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.pult-back{display:none;align-items:center;gap:.25rem;font-size:.875rem;text-decoration:none}
.pult-back .ic{width:1rem;height:1rem}
.pult-prose{color:var(--bs-heading-color);line-height:1.6;max-width:72ch;overflow-wrap:anywhere}
.pult-prose .pult-gap{height:.75rem}
.pult-was,.pult-now{display:grid;grid-template-columns:4rem minmax(0,1fr);gap:.75rem;
  padding:.5rem .75rem;border-radius:var(--bs-border-radius);margin:.25rem 0}
.pult-was{background:rgba(var(--bs-danger-rgb),.07)}
.pult-now{background:rgba(var(--bs-success-rgb),.08)}
.pult-was span,.pult-now span{font-size:.75rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.04em;padding-top:.1875rem;color:var(--bs-secondary-color)}
.pult-details{margin-top:1rem}
.pult-details summary{color:var(--bs-primary-text-emphasis);cursor:pointer;font-size:.875rem}
.pult-code{background:var(--bs-tertiary-bg);border-radius:var(--bs-border-radius);padding:.75rem 1rem;
  margin:.5rem 0 0;font-size:.75rem;white-space:pre-wrap;overflow-wrap:anywhere;max-height:24rem;overflow:auto}
.pult-answer{border-radius:var(--bs-border-radius);padding:.75rem 1rem;margin-bottom:1rem;white-space:pre-line;
  color:var(--bs-heading-color)}
.pult-answer-primary{background:rgba(var(--bs-primary-rgb),.08)}
.pult-answer-secondary{background:var(--bs-tertiary-bg)}
.pult-answer-label{font-size:.75rem;font-weight:600;color:var(--bs-secondary-color);margin-bottom:.25rem}
.pult-inwork{display:flex;align-items:center;gap:.5rem;color:var(--bs-success-text-emphasis);
  font-size:.875rem;margin-bottom:.75rem}
.pult-inwork .ic{width:1rem;height:1rem}
.pult-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.pult-next{margin-left:auto}
.pult-empty{text-align:center;padding:3rem 1.5rem}
.pult-empty .avatar{margin:0 auto 1rem}
.pult-empty .avatar .ic{width:1.75rem;height:1.75rem}
.pult-empty h3{font-size:1.0625rem;margin-bottom:.25rem}
.pult-empty p{color:var(--bs-secondary-color);margin-bottom:1rem}


/* ── задачи ─────────────────────────────────────────────────────── */
.pult-add{display:grid;grid-template-columns:12rem minmax(0,1fr) auto auto;gap:1rem;align-items:end}
.pult-add .form-label{margin-bottom:.25rem}
.pult-add-prio{margin:0 0 .5rem;display:flex;gap:.5rem;align-items:center}
.pult-add-prio .form-check-input{margin:0}
.pult-group{display:flex;align-items:baseline;gap:.75rem;background:var(--bs-tertiary-bg);
  padding-top:.625rem;padding-bottom:.625rem}
.pult-task{display:flex;gap:.875rem;align-items:flex-start}
.pult-task>.min-w-0{flex:1}
.pult-task-text{color:var(--bs-heading-color);line-height:1.5;overflow-wrap:anywhere}
.pult-task-meta{display:flex;flex-wrap:wrap;gap:.375rem .5rem;align-items:center;margin-top:.25rem}
.pult-tick{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;margin-top:.0625rem;padding:0;
  border:1.5px solid var(--bs-border-color);border-radius:50%;background:transparent;color:transparent;
  transition:border-color .15s,color .15s,background .15s;cursor:pointer}
.pult-tick .ic{width:.875rem;height:.875rem;margin:0}
.pult-tick:hover,.pult-tick:focus-visible{border-color:var(--bs-success);color:var(--bs-success)}
.pult-tick.is-done{border-color:transparent;background:rgba(var(--bs-success-rgb),.16);color:var(--bs-success-text-emphasis);cursor:default}

/* ── лента ──────────────────────────────────────────────────────── */
.pult-entry{display:flex;gap:1rem;align-items:flex-start}
.pult-entry>.min-w-0{flex:1}
.pult-entry .pult-time{width:3rem;padding-top:.125rem}
.pult-entry-head{display:flex;flex-wrap:wrap;gap:.375rem .5rem;align-items:center;margin-bottom:.25rem}
.pult-entry-text{color:var(--bs-heading-color);line-height:1.55;white-space:pre-line;overflow-wrap:anywhere}
.pult-more summary{list-style:none;cursor:pointer}
.pult-more summary::-webkit-details-marker{display:none}
.pult-more[open] summary{display:none}
.pult-more-link{display:inline-block;margin-top:.25rem;color:var(--bs-primary-text-emphasis);font-size:.875rem}
.pult-commits,.pult-did{margin:.375rem 0 0;padding-left:1.125rem;color:var(--bs-body-color);font-size:.875rem}
.pult-commits li,.pult-did li{margin:.125rem 0;overflow-wrap:anywhere}

/* ── агенты ─────────────────────────────────────────────────────── */
.pult-agents{display:grid;grid-template-columns:repeat(auto-fill,minmax(22rem,1fr));gap:1.5rem}
.pult-agent{display:flex;flex-direction:column}
.pult-agent .card-body{flex:1}
.pult-agent .avatar .ic{width:1.375rem;height:1.375rem}
.pult-agent .card-title{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.pult-agent .card-title a{color:inherit;text-decoration:none}
.pult-agent .card-title a:hover{color:var(--bs-primary-text-emphasis)}
.pult-agent .card-subtitle{color:var(--bs-secondary-color);font-size:.875rem;margin-top:.125rem}
.pult-what{color:var(--bs-heading-color);margin-bottom:1rem;line-height:1.5}
.pult-kv{grid-template-columns:7.5rem minmax(0,1fr);font-size:.875rem;margin:0}
.pult-live{display:inline-flex;align-items:center;gap:.375rem}
.pult-crumb{display:inline-flex;align-items:center;gap:.25rem;font-size:.875rem;text-decoration:none;margin-bottom:.5rem}
.pult-crumb .ic{width:1rem;height:1rem}
.pult-actions form{display:inline-flex;margin:0}
.page-actions form{display:inline-flex;margin:0}
.pult-chat{display:flex;flex-direction:column;gap:1rem;max-height:70vh;overflow:auto;padding-right:.25rem}
.pult-chat-empty{padding:1.5rem 0;text-align:center}
.pult-msg{max-width:min(46rem,88%);padding:.75rem 1rem;border-radius:1rem}
.pult-msg.is-mine{align-self:flex-end;background:rgba(var(--bs-primary-rgb),.1);border-bottom-right-radius:.25rem}
.pult-msg.is-theirs{align-self:flex-start;background:var(--bs-tertiary-bg);border-bottom-left-radius:.25rem}
.pult-msg.is-typing{color:var(--bs-secondary-color);font-style:italic}
.pult-msg-who{font-size:.75rem;font-weight:600;color:var(--bs-secondary-color);margin-bottom:.125rem}
.pult-msg-text{color:var(--bs-heading-color);white-space:pre-line;line-height:1.55;overflow-wrap:anywhere}
.pult-msg-when{font-size:.75rem;color:var(--bs-secondary-color);margin-top:.25rem}
.pult-chat-form{display:flex;gap:.75rem;align-items:flex-end}
.pult-chat-form textarea{flex:1}


/* ── Рассылка и каналы: мост к токенам ui2 ──────────────────────────
   Их разметка (rassylka_view, kanaly_view) писалась на токенах старого
   пульта и классах rv-*, kv-*. Логику не трогаем: здесь старые имена
   переменных отданы токенам ui2, а голые кнопки, поля и таблицы внутри
   .rv/.kv получают вид дизайн-системы. */
.rv,div.kv{
  --bg:var(--bs-body-bg);--surface:var(--paper);--surface-2:var(--bs-tertiary-bg);
  --text:var(--bs-heading-color);--muted:var(--bs-secondary-color);--border:var(--bs-border-color);
  --accent:var(--bs-primary);--ok:var(--bs-success);--warn:var(--bs-warning-text-emphasis);
  --danger:var(--bs-danger);--on-accent:var(--primary-contrast,#fff);--radius:var(--bs-border-radius-lg,.5rem);
  --mono:var(--bs-font-monospace);--space:8px;
  color:var(--bs-body-color);font-size:.9375rem}
.rv button,.kv button,.kv a.button{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;
  min-height:2.375rem;padding:.4375rem 1.125rem;font:inherit;font-size:.9375rem;font-weight:500;
  border:0;border-radius:var(--bs-border-radius);cursor:pointer;text-decoration:none;
  background:rgba(var(--bs-secondary-rgb),.16);color:var(--bs-secondary-text-emphasis);
  transition:background .15s,box-shadow .15s}
.rv button:hover,.kv button:hover{background:rgba(var(--bs-secondary-rgb),.24)}
.rv button.primary,.kv button.primary,.kv a.button.primary{background:var(--bs-primary);color:var(--primary-contrast,#fff);
  box-shadow:0 .125rem .375rem rgba(var(--bs-primary-rgb),.3)}
.rv button.primary:hover,.kv a.button.primary:hover{background:var(--bs-primary);filter:brightness(.95)}
.rv button:disabled{opacity:.55;cursor:default}
.rv input,.rv select,.rv textarea{font:inherit;color:var(--bs-body-color);background:var(--paper);
  border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius)}
.rv a,div.kv a{color:var(--bs-primary-text-emphasis)}
.rv .dim,.kv .dim{color:var(--bs-secondary-color)}
.rv .tag,.kv .tag{font-size:.75rem;color:var(--bs-secondary-color)}
.rv .flag,.kv .flag{color:var(--bs-warning-text-emphasis);font-size:.8125rem}
.rv .flag.bad,.kv .flag.bad{color:var(--bs-danger)}
.rv .flag.ok,.kv .flag.ok{color:var(--bs-success)}
/* .kv у ui2 — сетка «ключ-значение» (patterns.css): корень каналов
   её унаследовал бы и сжался в колонку 12rem. */
div.kv{display:block}
.kv-sub{overflow-wrap:anywhere}
.kv table{border-collapse:collapse;width:100%;font-size:.875rem}
.kv th,.kv td{text-align:left;padding:.5rem .75rem;border-top:1px solid var(--bs-border-color)}
.kv th{color:var(--bs-secondary-color);font-weight:600;font-size:.75rem;border-top:0}
.kv td.num,.kv th.num{text-align:right;font-variant-numeric:tabular-nums}

/* ── проекты, совещания, входы ──────────────────────────────────── */
.pult-table{margin:0}
.pult-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--bs-secondary-color);
  font-weight:600;white-space:nowrap}
.pult-table td{vertical-align:middle}
.pult-metrics td{vertical-align:top;white-space:nowrap}
.pult-metrics td:first-child{white-space:normal;min-width:12rem}
.pult-big{font-size:1.125rem;font-weight:600;color:var(--bs-heading-color)}
.pult-spark polyline{fill:none;stroke:var(--bs-primary);stroke-width:1.5}
.pult-issues{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.375rem}
.pult-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1.5rem;align-items:start}
.pult-doors{display:grid;grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));gap:1.5rem}
.pult-door.is-off{opacity:.7}
.pult-pick-list{margin:1rem calc(-1 * var(--bs-card-spacer-x, 1.5rem)) calc(-1 * var(--bs-card-spacer-y, 1.5rem))}
.pult-add-meeting{grid-template-columns:minmax(0,1fr) 12rem 11rem auto}
.pult-q-item{display:flex;gap:1rem;align-items:flex-start;padding-top:1.25rem;padding-bottom:1.25rem}
.pult-q-item.is-decided .pult-q-text{color:var(--bs-secondary-color)}
.pult-q-num{flex:none;width:1.75rem;height:1.75rem;border-radius:50%;display:grid;place-items:center;
  background:rgba(var(--bs-primary-rgb),.1);color:var(--bs-primary-text-emphasis);font-size:.8125rem;font-weight:600}
.pult-q-text{font-size:1rem;line-height:1.45}
.pult-mat{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.875rem}
.pult-mat .ic{width:1rem;height:1rem}
.pult-mat form{display:inline-flex;margin:0}
.pult-inline{display:inline-flex;gap:.5rem;align-items:center;margin:0}
.pult-inline .form-select{width:auto}
.pult-grow{field-sizing:content;min-height:2.5rem;max-height:16rem;resize:vertical}
.pult-two{display:grid;grid-template-columns:1fr 1fr;gap:1rem}

/* ── планшет и телефон ──────────────────────────────────────────── */
@media (max-width:1199.98px){
  .pult-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:991.98px){
  .pult-grid,.pult-grid-wide{grid-template-columns:minmax(0,1fr)}
  .navbar-host{display:none}
  .pult-add,.pult-add-meeting{grid-template-columns:minmax(0,1fr)}
  /* Список и карточка — два экрана: без выбора виден список, с выбором
     (?c=) только карточка и ссылка «Все заявки». Первая заявка, которую
     на компьютере открывает сама страница, на телефоне не показывается. */
  .pult-split{grid-template-columns:minmax(0,1fr)}
  .pult-list{position:static;max-height:none}
  .pult-split:not(.has-pick) .pult-detail{display:none}
  .pult-split.has-pick .pult-list{display:none}
  .pult-split:not(.has-pick) .pult-list .is-active{background:none;box-shadow:none}
  .pult-split:not(.has-pick) .pult-list .is-active .cell-title{color:var(--bs-heading-color)}
  .pult-back{display:inline-flex}
  /* Открыта карточка: вкладки, фильтр и пояснение уходят, карточка
     начинается сразу под заголовком, назад — ссылкой «Все заявки». */
  .pult-picked .pult-dec-top,.pult-picked .page-subtitle{display:none}
  .pult-next{display:none}
}
@media (max-width:575.98px){
  .pult-stats{gap:1rem}
  .pult-stat .card-body{flex-direction:column;align-items:flex-start;gap:.25rem}
  .pult-stat .avatar{display:none}
  .pult-stat .card-body{padding:1rem}
  .pult-stat-sub{white-space:normal}
  .pult-filters .form-select{flex:1 1 45%;min-width:0}
  .pult-filters input[type=search]{flex:1 1 0;max-width:none}
  .navbar-projects .form-select{max-width:9rem;min-width:0}
  /* Вкладки не влезают: край гаснет, показывая, что полоса едет вбок. */
  .pult-tabs{-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
  .pult-row .cell-title.text-truncate{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .pult-time{width:auto}
  .pult-log{flex-wrap:wrap;gap:.25rem .75rem}
  .pult-log>.min-w-0{flex-basis:100%;order:3}
  .pult-actions .btn{flex:1 1 auto}
  .pult-agents{grid-template-columns:minmax(0,1fr)}
  .pult-entry{flex-wrap:wrap;gap:.25rem .75rem}
  .pult-entry .pult-time{width:auto}
  .pult-entry>.min-w-0{flex-basis:100%}
  .pult-msg{max-width:100%}
  .pult-chat-form{flex-direction:column;align-items:stretch}
  .page-header{flex-wrap:wrap}
  .pult-two{grid-template-columns:minmax(0,1fr)}
  .pult-cards,.pult-doors{grid-template-columns:minmax(0,1fr)}
}
.pult-badge-link{display:inline-flex;max-width:100%;white-space:normal;align-items:center;gap:.125rem;text-decoration:none;font-size:.8125rem}
.pult-badge-link .ic{width:.875rem;height:.875rem}
.pult-badge-link:hover{filter:brightness(.95)}

/* ── вход и доступы ─────────────────────────────────────────────── */
.pult-auth-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem 1rem;background:var(--bs-body-bg)}
.pult-auth-page main{width:100%;max-width:26rem}
.pult-auth .card-body{padding:2rem}
.pult-auth-brand{display:flex;align-items:center;gap:.625rem;font-weight:600;font-size:1.125rem;
  color:var(--bs-heading-color);margin-bottom:1.5rem}
.pult-auth-title{font-size:1.375rem;font-weight:500;margin-bottom:1rem}
.pult-auth .form-check{display:flex;gap:.5rem;align-items:center}
.pult-auth .form-check-input{margin:0}
.pult-me{border:0;cursor:pointer;padding:0}
.pult-me:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}
.pult-me-menu{min-width:14rem}
.pult-me-menu .dropdown-item{display:flex;align-items:center;gap:.5rem}
.pult-me-menu .dropdown-item .ic{width:1.125rem;height:1.125rem}
.pult-me-menu form{margin:0}
.pult-add-person{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 12rem auto}
.pult-invite{border:1px solid rgba(var(--bs-primary-rgb),.35)}
@media (max-width:991.98px){.pult-add-person{grid-template-columns:minmax(0,1fr)}}
.pult-auth .form-check{padding-left:0}
.pult-me-menu .dropdown-header{text-transform:none;letter-spacing:0;font-size:inherit}
/* Свёрнутое меню: кнопка у логотипа видна только под мышью, иначе в узкой
   полосе она ложится поверх знака «П». */
@media (min-width:1200px){
  [data-nav="compact"] .app-menu:is(:not(:hover), .is-hover-locked) .app-brand-toggle{display:none}
}
