/* Новый интерфейс statsdesk (спека 2026-10-03). Дополняет app.css. */
.lead{margin:-8px 0 16px;max-width:760px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.cols .card{margin:0}
.lvl{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--ok)}
.lvl.yellow{background:var(--warn)}.lvl.red{background:var(--neg)}.lvl.none,.lvl.running,.lvl.failed{background:var(--muted)}
.lvl.failed{background:var(--neg)}
.dayhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.dayhead .what{font-size:16px;font-weight:500}
.rows li{display:flex;gap:10px;align-items:flex-start;padding:10px 18px;border-top:1px solid var(--border)}
.rows li:first-child{border-top:0}
.rows .why{display:block;font-size:13px;color:var(--muted)}
.rows .num{margin-left:auto;white-space:nowrap}
details.more summary{padding:10px 18px}
.grid-wrap{overflow:auto;max-height:70vh}
table.grid td{padding:0;border-right:1px solid var(--border)}
table.grid td>span{display:block;min-width:8ch;padding:7px 10px;white-space:pre;outline:0}
table.grid td>span{max-width:56ch;overflow:hidden;text-overflow:ellipsis}  /* длинное (ссылки) — многоточием */
table.grid td>span:focus{max-width:none;white-space:pre-wrap;word-break:break-all;overflow:visible}
table.grid td.ro>span{color:var(--muted)}
table.grid td.dirty{background:var(--warn-soft)}
table.grid td.bad{background:var(--neg-soft);box-shadow:inset 0 0 0 2px var(--neg)}
table.grid td.expr>span::before{content:"ƒ ";color:var(--muted)}
table.grid tr.del td{text-decoration:line-through;opacity:.55}
table.grid tr.new td{background:var(--ok-soft)}
table.grid th{position:sticky;top:0;background:var(--surface);z-index:1}
.gridbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}
@media (max-width:860px){.cols{grid-template-columns:minmax(0,1fr)}}
textarea.paste{min-height:160px}
.codeview{overflow:auto;max-height:78vh}
table.code{border-collapse:collapse;width:100%;font:13px/1.55 "Fira Code",ui-monospace,monospace}
table.code td{padding:0 12px;border:0;vertical-align:top}
table.code td.src{white-space:pre;tab-size:4}
table.code td.ln{width:1%;text-align:right;user-select:none;color:var(--muted);border-right:1px solid var(--border)}
table.code td.ln a{color:inherit;text-decoration:none}
table.code tr:target td{background:var(--warn-soft)}
table.code a.def{color:inherit;text-decoration:underline dotted;text-underline-offset:3px}
table.code mark{background:var(--warn-soft);color:inherit;box-shadow:0 0 0 1px var(--warn)}
.snip{margin:0 0 12px}.snip .more{padding:4px 12px}
.cells-pick{overflow:auto;max-height:24rem}.cells-pick label{display:block}

/* Справочники 2в: текст отказа у поля, поле-ячейка строки выгрузки, строка-пропуск «Разметки» */
.ferr{display:block;color:var(--neg);font-size:12.5px;margin-top:2px}
.cell-in{border:1px solid transparent;background:transparent;color:inherit;font:inherit;padding:3px 6px;border-radius:6px;min-width:9ch;width:100%}
.cell-in:hover{border-color:var(--border)}
.cell-in:focus{border-color:var(--fg);background:var(--surface);outline:none}
table.dl td{vertical-align:top}
.ref-app{border-top:1px solid var(--border);padding-top:8px;margin-top:8px}
tr.gap td{background:var(--warn-soft)}
.drop{display:block;border:2px dashed var(--border);border-radius:8px;padding:18px;margin-bottom:8px;text-align:center;cursor:pointer}
.drop:hover{border-color:var(--fg)}
table.code td{padding:1px 8px;font-family:var(--mono,monospace);white-space:pre-wrap}
table.code tr.bad td{background:var(--neg-soft)}
table.code tr.bad td.why{color:var(--neg)}

/* «Источники» (часть 4): узкий список кабинетов слева, карточка справа */
.srcs{display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,2.4fr);gap:14px;align-items:start}
.srcs .card{margin:0 0 14px}
.srcsys h3{margin:8px 0 4px}
ul.srccabs{list-style:none;margin:0 0 8px;padding:0}
ul.srccabs li{padding:2px 0}
ul.srccabs a.cur{font-weight:600}
.kfiles li{flex-wrap:wrap}.kfiles li>details{flex-basis:100%}
@media (max-width:860px){.srcs{grid-template-columns:minmax(0,1fr)}}

/* Страница бренда в духе monitor: плотная таблица, короткие окна поверх таблицы, переключатель вкл/выкл */
table.dense th{padding:7px 12px}
table.dense td{padding:6px 12px;vertical-align:middle}
table.dense tr.off td{color:var(--muted)}
table.dense td.wrap{max-width:720px}
.code-peek{margin:4px 0 0}.code-peek summary{font-size:12.5px}
.code-peek pre{margin:6px 0 0;padding:8px 10px;background:var(--soft);border-radius:6px;white-space:pre-wrap;max-height:22rem;overflow:auto}
.modal-back{position:fixed;inset:0;background:rgba(15,23,42,.38);display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px;z-index:20;overflow:auto}
.modal{width:min(560px,100%);margin:0;box-shadow:0 18px 50px rgba(15,23,42,.25)}
.modal h2{margin-bottom:4px}
.mform label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted);margin:10px 0}
.mform label.chk{flex-direction:row;align-items:center;gap:8px;color:var(--fg);font-size:14px}
.mform .field{width:100%;box-sizing:border-box}
.mbtns{margin:16px 0 0}
ul.kinds{list-style:none;padding:0;margin:10px 0}
ul.kinds li{padding:8px 0;border-top:1px solid var(--border)}
ul.kinds li:first-child{border-top:0}
.sw{border:1px solid var(--border);background:var(--soft);color:var(--muted);border-radius:999px;padding:1px 10px;font:inherit;font-size:12.5px;cursor:pointer}
.sw.on{background:var(--ok-soft);color:var(--ok);border-color:transparent}
.ico{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:15px;padding:2px 6px;border-radius:6px;text-decoration:none}
.ico:hover{color:var(--fg);background:var(--soft);text-decoration:none}
.redt{color:var(--neg);font-size:12.5px;display:block;white-space:nowrap}
.toast{position:fixed;right:20px;bottom:20px;background:var(--fg);color:var(--surface);padding:9px 14px;border-radius:8px;font-size:13.5px;z-index:30;opacity:0;transition:opacity .2s}
.toast.show{opacity:1}
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.mgrid label{margin:8px 0}
details.more>summary{padding:6px 0}
details.bulkbox:not([open]) ~ section .ck{display:none}
details.bulkbox{margin:0 0 10px}
table.mk select.cell-in{width:100%;min-width:15ch;border-color:var(--border);font-size:13px;padding:3px 4px}
table.mk th.pick{width:18%}
table.mk td.wrap{min-width:22ch}
table.mk tr.gap td.camp{box-shadow:inset 3px 0 0 var(--neg)}
table.mk tr.gap td{background:transparent}
.bar .search{flex:0 1 320px;min-width:200px}
.redt{font-family:"Fira Sans",system-ui,sans-serif;font-variant-numeric:normal}
.mform .redt{margin-top:2px}
ul.kinds li .muted{display:block}
table.dense tr.grp th{background:var(--soft);text-align:left;font-weight:600;padding:6px 12px}
.nw{white-space:nowrap}
table.dense td.client{min-width:16ch}
.modal.wide{width:min(780px,100%)}
.mform fieldset{border:0;padding:0;margin:10px 0;display:block}
.mform fieldset legend{padding:0;margin-bottom:4px}
table.colgrid td{padding:1px 6px}
table.colgrid td:first-child{width:45%}
table.colgrid label.chk{margin:0}
table.colgrid input.num{width:5ch;padding:2px 6px}
table.colgrid input.field{padding:3px 8px}
.mform label.chk.inline{display:inline-flex;margin:4px 14px 4px 0}
table.colgrid{width:100%}
.mform details.more{display:block}
.calcline h2.inline-h{margin:0 6px 0 0;font-size:16px}
.calcline .bar{margin-bottom:4px}
.calcline details.hod>summary{color:var(--muted);cursor:pointer;padding:4px 0}
.todo-item{margin:4px 0 16px}
.todo-item>p{margin:0 0 8px}
table.todo-rows td.r{text-align:right}
table.todo-rows details.inline form.note{position:absolute;right:24px;z-index:5;max-width:420px;text-align:left;white-space:normal}
table.todo-rows td.r>form,table.todo-rows td.r>details,table.todo-rows td.r>a{display:inline-block;vertical-align:top;margin-left:6px}
/* мастер «Новый бренд» и окно «+ источник» */
ul.picks{list-style:none;margin:8px 0;padding:0;max-width:640px}
ul.picks li{padding:6px 0;border-bottom:1px solid var(--border,#e5e7eb)}
fieldset.whose{border:0;padding:0;margin:4px 0 14px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
fieldset.whose legend{font-weight:600;margin-bottom:8px;width:100%}
label.pick2{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border,#d1d5db);border-radius:8px;padding:8px 18px;cursor:pointer;font-weight:600}
label.pick2:has(input:checked){border-color:var(--accent,#2563eb);background:var(--soft,#eff6ff)}
ul.addkinds{list-style:none;margin:8px 0 0;padding:0}
ul.addkinds li{margin:0 0 8px}
ul.addkinds a{display:block;border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:10px 12px;text-decoration:none}
ul.addkinds a:hover{border-color:var(--accent,#2563eb)}
ul.addkinds .sub{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.ok-note{background:var(--ok-soft);border:1px solid var(--ok);border-radius:8px;padding:9px 12px;margin-bottom:12px}
.ok-note .small{margin-top:4px;color:var(--warn)}
.modal.wide .mgrid.move{grid-template-columns:3fr 2fr;gap:0 16px;align-items:start}
.code-was{margin:4px 0 8px;padding:8px 10px;background:var(--soft);border-radius:6px;white-space:pre-wrap;word-break:break-all;max-height:20rem;overflow:auto;font-size:12px}
.form-will{margin:4px 0 8px;padding-left:18px}.form-will li{margin:3px 0}
/* «Выгрузки»: окно ✎ — «Как работает сейчас» (что делает код выгрузки) */
.xfacts{background:var(--soft);border:1px solid var(--border);color:var(--fg);border-radius:8px;padding:8px 12px;margin:8px 0 4px}
.xfacts h3{margin:0 0 4px}
.xfacts ul{margin:0;padding-left:16px}
.xfacts li{margin:2px 0}
.xfacts code{font-size:12px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:0 4px;white-space:nowrap}
