/* Визуальный язык рабочего места: гамма схемы и доски решения. Красный акцент — действие и внимание,
   тёмно-серый текст, светлые плашки, статусы теми же цветами, что на доске. Имена классов сохранены. */
:root{font-family:"Segoe UI",Arial,Helvetica,sans-serif;color:#212121;background:#fafaf9;font-size:15px;line-height:1.5;
--focus:#1d4f91;--ink:#212121;--muted:#626262;--accent:#cf141f;--accent-dark:#b01722;--border:#d9d9d9;--paper:#fff;--soft:#f5f5f3;--pink:#fff1f0;--bad:#b01722;
--done:#1a6f3c;--done-bg:#eff8f2;--done-line:#a7d3b8;--work:#8a5200;--work-bg:#fdf6ea;--work-line:#e4c28d;--ask:#1d4f91;--ask-bg:#eff3fb;--ask-line:#bacce6;--wait:#5a5a5a;--wait-bg:#f5f5f3;--wait-line:#d4d4d4}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}
button{cursor:pointer;background:#fff;border:1px solid #c9c9c9;border-radius:6px;padding:9px 14px;color:var(--ink);transition:background .12s,border-color .12s}
button:hover{border-color:#8a8a8a;background:#fbfbfa}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
/* В одном ряду с обычной кнопкой малая не ниже её: разница в высоте читается как сбой. */
.panel .actions:has(>button:not(.icon):not(.linklike))>button.icon{padding-top:9px;padding-bottom:9px}
button.danger{color:var(--bad)}button:disabled{opacity:.45;cursor:default}button.icon{padding:5px 10px}a{color:var(--accent)}
input,textarea,select{background:#fff;color:var(--ink);border:1px solid #c9c9c9;border-radius:6px;padding:9px 11px;width:100%;margin:5px 0 10px}
input:focus,textarea:focus,select:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px #1d4f9115}
input[type=checkbox]{width:auto;margin:0 9px 0 0;accent-color:var(--accent)}input[type=radio]{width:auto;accent-color:var(--accent)}input[type=file]{font-size:13px}textarea{resize:vertical;min-height:96px}
label{display:block;font-weight:600;font-size:14px}label.check{font-weight:400;margin:8px 0;display:flex;align-items:flex-start}
h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-.02em;line-height:1.2}h2{font-size:20px;line-height:1.3}h3{font-size:16px}
.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,monospace}.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:12px;background:white;z-index:999;padding:8px}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
/* каркас: узкая светлая боковина с красной полосой сверху, как у схемы */
.shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}
.side{padding:0 18px 22px;background:#fff;border-right:1px solid var(--border);color:var(--ink);display:flex;flex-direction:column;gap:14px}
.side:before{content:"";display:block;height:8px;background:var(--accent);margin:0 -18px 16px}
.side-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}#side-toggle{display:none;font-size:18px;padding:4px 10px}.chip.ghost{border-style:dashed;color:var(--muted)}.brand{font-size:19px;font-weight:800;letter-spacing:-.01em}.brand span{display:block;font-size:11px;letter-spacing:.16em;font-weight:700;color:var(--accent);text-transform:uppercase;margin-top:3px}
.side button{background:#fff;color:var(--ink);border-color:var(--border);text-align:left}.side button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.project-list{display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}.project-list button{border:0;padding:9px 10px;border-radius:6px}.project-list button:hover{background:var(--soft)}.project-list button.selected{background:var(--pink);color:var(--accent-dark);font-weight:600}
.side-bottom{margin-top:auto;display:flex;flex-direction:column;gap:6px}.side-bottom .small{color:var(--muted)}
.workspace{max-width:1400px;width:100%;padding:26px 36px 90px;min-width:0}
.topline{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:12px}
.eyebrow{letter-spacing:.06em;font-size:12px;color:var(--accent);font-weight:700}
.tag{display:inline-flex;align-items:center;border:1px solid var(--wait-line);border-radius:10px;padding:3px 9px;font-size:12px;font-weight:600;letter-spacing:.01em;background:var(--wait-bg);color:var(--wait)}
.tag.done,.tag.ok{background:var(--done-bg);color:var(--done);border-color:var(--done-line)}.tag.warn{background:var(--work-bg);color:var(--work);border-color:var(--work-line)}.tag.bad{background:var(--pink);color:var(--accent-dark);border-color:#f0b5b5}.tag.ask{background:var(--ask-bg);color:var(--ask);border-color:var(--ask-line)}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hero{padding:28px;border-radius:8px;background:#fff;border:1px solid var(--border);border-top:3px solid var(--accent);margin-bottom:22px}.hero h1{max-width:650px}.hero p{max-width:740px}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{background:white;border:1px solid var(--border);border-radius:8px;padding:20px;min-width:0}.card h3{margin-bottom:7px}.card p:last-child{margin-bottom:0}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin:18px 0 20px}.tabs button{border:0;border-radius:0;background:transparent;padding:10px 14px;color:var(--muted);white-space:nowrap}.tabs button:hover{background:transparent;color:var(--ink)}.tabs button.active{color:var(--ink);border-bottom:3px solid var(--accent);font-weight:700}
.grid2{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:20px}.tasktextarea{min-height:160px}
.panel{background:white;padding:22px 24px;border:1px solid var(--border);border-radius:8px;margin-bottom:16px}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.result{white-space:pre-wrap;overflow-wrap:anywhere;min-height:80px;font-family:inherit;margin:14px 0;line-height:1.65}
.empty{padding:28px 12px;text-align:center;color:var(--muted)}.empty .circle{margin:0 auto 12px;width:44px;height:44px;border:1px solid var(--border);border-radius:50%;display:grid;place-items:center;font-size:20px;color:var(--accent)}
.notice{background:var(--soft);border-left:3px solid #9a9a9a;padding:12px 16px;margin:14px 0;border-radius:0 6px 6px 0;font-size:14px}.notice.warn{background:var(--work-bg);border-color:#d9a54a}.notice.bad{background:var(--pink);border-color:var(--accent)}
.compact{margin:0}.row{padding:14px 0;border-bottom:1px solid #ececea;position:relative}.row:last-child{border-bottom:0}.row-title{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}.file-label{overflow-wrap:anywhere}
.history{padding-left:22px;border-left:2px solid var(--border)}.history .row:before{content:"";position:absolute;left:-28px;top:23px;width:10px;height:10px;background:var(--accent);border-radius:50%}
details{margin-top:12px}summary{cursor:pointer;color:var(--ink);font-weight:600}pre.code{white-space:pre-wrap;word-break:break-word;background:var(--soft);padding:12px;border-radius:6px;font-size:12px;max-height:440px;overflow:auto}
dialog{max-width:760px;width:calc(100vw - 36px);border:1px solid var(--border);border-top:4px solid var(--accent);border-radius:8px;padding:26px;box-shadow:0 22px 80px #00000030;max-height:88vh}dialog::backdrop{background:#21212166}.modal-foot{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}
.login{max-width:470px;margin:10vh auto;background:#fff;border:1px solid var(--border);border-top:6px solid var(--accent);padding:36px;border-radius:8px}.login .brand{margin-bottom:26px}
#toast{position:fixed;bottom:22px;right:22px;z-index:999;max-width:460px;white-space:pre-wrap;border-radius:6px;background:#212121;color:#fff;padding:0;box-shadow:0 8px 28px #00000033}#toast.visible{padding:14px 18px}#toast.error{background:var(--accent-dark)}
.provider-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.statusline{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.kbd{font-size:12px;color:var(--muted);border:1px solid var(--border);padding:1px 5px;border-radius:4px}.busy-dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:#d9a54a;margin-right:6px}
.checks p{margin-bottom:6px}.spaced{margin-top:18px}.diff{display:grid;grid-template-columns:1fr 1fr;gap:13px}.hidden{display:none!important}.helptext{font-size:12.5px;color:var(--muted);margin:-4px 0 12px}
h1.editable{cursor:text;border-bottom:1px dashed transparent;padding:0 2px;margin-left:-2px;border-radius:2px;max-width:820px}h1.editable:hover{border-bottom-color:#b8b8b8}h1.editable:focus{outline:none;border-bottom-color:var(--accent);background:#fff9f9}
/* показ результатов */
.card-view{margin:10px 0}.card-view h4{margin:16px 0 6px;font-size:14px}dl.card{display:grid;grid-template-columns:minmax(150px,210px) 1fr;gap:6px 14px;margin:0;padding:0;border:0}dl.card dt{color:var(--muted);font-size:13px}dl.card dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.tw{overflow-x:auto}table.card{border-collapse:collapse;width:100%;font-size:13px}table.card th,table.card td{border:1px solid #e3e3e1;padding:6px 8px;text-align:left;vertical-align:top}table.card th{background:var(--soft);font-weight:600;font-size:12px}table.card a{color:var(--accent)}
/* путь задачи по шагам */
.rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:8px;margin:0 0 18px;overflow-x:auto;padding-bottom:2px;scroll-snap-type:x proximity}
.step{scroll-snap-align:start;min-height:84px;text-align:left;border:2px solid var(--soft);background:var(--soft);padding:10px 12px;border-radius:6px;display:flex;flex-direction:column;gap:4px;line-height:1.25;position:relative}
.step:hover{border-color:#b8b8b8;background:var(--soft)}.step .n{color:var(--accent);font-size:11px;font-weight:850;letter-spacing:.12em}.step b{font-size:14px}.step .st{font-size:11.5px;color:var(--muted)}
.step.current{background:#fff;border-color:var(--accent)}.step.done .n{color:var(--done)}.step.done .st{color:var(--done)}.step.locked{opacity:.6}.step.locked .st{color:var(--muted)}
.step.free{background:#fff;border-style:dashed;border-color:var(--border)}
.ws-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:20px;align-items:start}
/* Результат готов и ждёт решения: он занимает экран целиком, форма шага сворачивается
   в одну строку под ним. Читать ответ в узкой колонке рядом с анкетой невозможно. */
.ws-grid.decide{grid-template-columns:1fr}
.ws-grid.decide>.panel:first-child{order:2}
.card-view dl.card{grid-template-columns:minmax(150px,220px) 1fr}
/* Строка, у которой в значении таблица: подпись уходит наверх, таблица занимает ширину.
   Иначе подпись «Сущности» держит треть экрана пустой, а таблица жмётся в остаток. */
dl.card dd:has(>.tw){grid-column:1/-1}
dl.card dt:has(+dd>.tw){grid-column:1/-1;margin-top:12px;color:var(--muted,#626262);font-size:12px}
/* В боковой колонке значение оставалось шириной в одно слово: подпись съедала половину
   и текст вставал столбиком. В узком месте подпись идёт над значением, а не рядом. */
.ws-grid>.panel:last-child dl.card{grid-template-columns:1fr;gap:2px 0}
.ws-grid>.panel:last-child dl.card dt{font-size:12px;color:var(--muted,#626262);margin-top:10px}
.ws-grid>.panel:last-child dl.card dt:first-child{margin-top:0}
/* В узкой колонке таблица становится списком: три столбца там не помещаются. */
.ws-grid>.panel:last-child table.card.plain,
.ws-grid>.panel:last-child table.card.plain tbody,
.ws-grid>.panel:last-child table.card.plain tr{display:block}
.ws-grid>.panel:last-child table.card.plain td{display:block;width:auto!important;border:0;padding:0 0 2px}
.ws-grid>.panel:last-child table.card.plain tr{padding:8px 0;border-bottom:1px solid var(--line,#ededed)}
.ws-grid>.panel:last-child table.card.plain td:not(:first-child){color:var(--muted,#626262)}
.lead{color:#4d4d4d;font-size:14px;margin:6px 0 0;max-width:640px}
fieldset.group{border:0;border-top:1px solid var(--border);padding:12px 0 4px;margin:14px 0 0}fieldset.group legend{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);padding-right:10px}
.field{margin-bottom:6px}.field .lbl{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.field .req{font-size:11px;color:var(--muted);font-weight:400}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 10px}.chip{border:1px solid var(--border);background:#fff;border-radius:20px;padding:4px 10px;font-size:12.5px;color:var(--ink)}.chip:hover{border-color:var(--accent)}.chip.on{background:var(--pink);border-color:var(--accent);color:var(--accent-dark)}
.with-mic{position:relative}.with-mic textarea{padding-right:44px}.mic{position:absolute;right:8px;top:12px;width:30px;height:30px;padding:0;border-radius:50%;border-color:var(--border);font-size:15px;line-height:1}.mic.listening{background:var(--pink);border-color:var(--accent);animation:pulse 1s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 #cf141f55}100%{box-shadow:0 0 0 10px #cf141f00}}
.drop{border:2px dashed var(--border);border-radius:6px;padding:14px 16px;text-align:center;color:var(--muted);font-size:13.5px;margin:6px 0 12px;background:#fff;transition:border-color .12s,background .12s}.drop.over{border-color:var(--accent);background:var(--pink);color:var(--accent-dark)}.drop button{padding:4px 9px;font-size:13px}
.filelist{margin:0 0 12px;padding:0;list-style:none}.filelist li{display:flex;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px solid #f0f0ee;font-size:13.5px}.filelist li:last-child{border-bottom:0}.filelist .fs{color:var(--muted);font-size:12px}
.sticky-actions{padding:16px 0 4px;margin-top:8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--border)}
.next-hint{margin:12px 0 0;padding:11px 14px;border-left:3px solid var(--accent);background:var(--pink);font-size:13.5px}
.checkpoint{padding:12px 14px;border-radius:6px;background:var(--soft);font-size:13.5px;margin:10px 0 4px}.checkpoint.ok{background:var(--done-bg)}.checkpoint.no{background:var(--work-bg)}
.hint{font-size:12.5px;color:var(--muted)}
@media(max-width:1050px){.workspace{padding:22px}.grid2,.provider-grid,.ws-grid{grid-template-columns:1fr}.cards{grid-template-columns:1fr}}
@media(max-width:700px){.shell{grid-template-columns:1fr}.side{padding:0 14px 12px;border-right:0;border-bottom:1px solid var(--border)}.side:before{margin:0 -14px 12px}.side-bottom{flex-direction:row;flex-wrap:wrap}.project-list{max-height:140px;overflow:auto}
.workspace{padding:16px 14px 90px}.tabs{overflow:auto}#side-toggle{display:inline-block}.side:not(.open) #import-capsule,.side:not(.open) #project-search,.side:not(.open) .project-list,.side:not(.open) .side-bottom{display:none}.side{gap:8px}.side:before{margin-bottom:8px}.topline{flex-direction:column}.hero{padding:20px}.field-row,.diff{grid-template-columns:1fr}h1{font-size:23px}
.rail{grid-auto-columns:minmax(150px,70vw)}.panel{padding:16px}.sticky-actions{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--border);padding:10px 14px;margin:0;z-index:20}.sticky-actions .hint{display:none}dl.card{grid-template-columns:1fr}dl.card dt{margin-top:6px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* список строк объявленного представления */
.panel,.ws-grid>*,.card-view,.grid2>*{min-width:0}.src-list{list-style:none;margin:6px 0 0;padding:0}.src-row{padding:9px 0;border-bottom:1px solid #ececea}.src-row:last-child{border-bottom:0}.src-main{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;font-size:13.5px}.src-main .col-organization{font-weight:600}.src-main .col-sections{color:var(--muted);font-size:12.5px}.src-det{margin-top:4px;font-size:13px}.src-det summary{font-weight:400;color:var(--muted);font-size:12.5px}.src-det dl.card{margin-top:6px}.src-filter{margin:8px 0 4px;max-width:360px}.compact-dl{font-size:13.5px}.compact-dl dd{white-space:normal}.tag.done{background:var(--done-bg);color:var(--done);border-color:var(--done-line)}.tag.work{background:var(--work-bg);color:var(--work);border-color:var(--work-line)}.tag.wait{background:var(--wait-bg);color:var(--wait);border-color:var(--wait-line)}
@media(max-width:700px){.src-main{font-size:13px}}

.src-list{max-height:62vh;overflow:auto;padding-right:4px}.badge-btn{padding:0;border:0;background:transparent;cursor:pointer}.badge-btn .tag{cursor:pointer}.badge-btn:hover .tag{border-color:var(--accent)}.chip.pick{white-space:normal;text-align:left}
@media(max-width:700px){.src-list{max-height:none}}
/* зоны управления и конструктор процесса */
.zones{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}
.zone{background:#fff;border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:8px;padding:14px 16px;min-width:0}.zone h3{font-size:15px;margin:4px 0 8px}
.zl{list-style:none;margin:0;padding:0;font-size:13px}.zl li{padding:5px 0;border-bottom:1px solid #f0f0ee;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.zl li:last-child{border-bottom:0}
.step.add{background:#fff;border-style:dashed;border-color:var(--border)}.step.add .n{color:var(--muted)}
.tpl-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.card.tpl{border-top:3px solid var(--accent);padding:16px}.card.tpl h3{margin:6px 0 4px}
.pe-step{border:1px solid var(--border);border-radius:6px;margin:8px 0;padding:0 12px}.pe-step summary{padding:10px 0;font-weight:500}.pe-step summary .n{color:var(--accent);font-weight:800;font-size:11px;letter-spacing:.1em;margin-right:6px}.pe-body{padding:4px 0 12px}
#modal .chips{margin-bottom:10px}
@media(max-width:1050px){.zones{grid-template-columns:1fr 1fr}.tpl-cards{grid-template-columns:1fr}}
@media(max-width:700px){.zones{grid-template-columns:1fr}}

.linklike{border:0;background:transparent;padding:0;color:var(--accent);text-decoration:none;font:inherit;cursor:pointer;text-align:left}.linklike:hover{text-decoration:underline;background:transparent}.card.task h3{margin:0 0 6px;font-size:16px}.home-list{margin-top:18px}.hero .chip{margin:2px 0}

.hero.quick{padding:22px 24px}.hero.quick .lbl{font-size:18px;font-weight:700;display:block;margin-bottom:6px}.hero.quick textarea{min-height:84px;font-size:15px}.zones.z1{grid-template-columns:1fr}.zones.z2{grid-template-columns:1fr 1fr}.zones.z3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1050px){.zones.z3,.zones.z2{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.zones.z3,.zones.z2{grid-template-columns:1fr}}

.sum{margin:4px 0 6px;display:grid;gap:3px}.sum-row{font-size:13px}.sum-row .tag{margin-left:2px}.tbl-list{list-style:none;margin:8px 0 0;padding:0}.tbl-list li{display:flex;gap:8px;align-items:baseline;padding:6px 0;border-bottom:1px solid #ececea;font-size:13.5px}.tbl-list li:last-child{border-bottom:0}.tbl-list .tbl-del{margin-left:auto;color:var(--muted)}.tbl-add{display:grid;grid-template-columns:auto 1.4fr 1fr auto;gap:6px;margin-top:8px}.tbl-add input,.tbl-add select{min-width:0}@media(max-width:700px){.tbl-add{grid-template-columns:1fr 1fr}.tbl-add input{grid-column:span 2}}

.card-view dl.card{display:grid;grid-template-columns:minmax(130px,170px) minmax(0,1fr);gap:7px 14px;align-items:start}.card-view dl.card dt{font-size:12.5px;color:var(--muted);padding-top:2px}.card-view dl.card dd{min-width:0;font-size:14.5px;line-height:1.45}.card-view dl.card dt.grp{grid-column:1/-1;margin-top:12px;padding:6px 0 3px;border-bottom:1px solid var(--line);font:800 10.5px/1.3 system-ui,-apple-system,'Segoe UI',Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.card-view dl.card dt.grp:first-child{margin-top:2px}@media(max-width:700px){.card-view dl.card{grid-template-columns:1fr}.card-view dl.card dt{margin-top:4px}}

.zl li,.tbl-list li{overflow-wrap:anywhere;min-width:0}.tbl-list li strong{font-weight:600}

.put-found{font-size:12px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--accent)}.put-found:hover{border-color:var(--accent)}

.zone.wide{margin-top:14px}.notes-add{grid-template-columns:auto 1.6fr 1fr auto}.tbl-list .ntext{flex:1;min-width:0}@media(max-width:700px){.notes-add{grid-template-columns:1fr 1fr}.notes-add input{grid-column:span 2}}

.project-list button.archived{opacity:.62}.project-list button.archived:hover{opacity:1}

.lin{margin:10px 0}.lin p{margin:3px 0}

/* Роль шага: свёрнутая строка с полномочиями. Раскрывается, когда человек хочет знать,
   что этому шагу позволено, и не мешает, когда не хочет. */
.role{margin:6px 0 0}
.role>summary{cursor:pointer;list-style:none;display:flex;gap:8px;align-items:center}
.role>summary::-webkit-details-marker{display:none}
.role>summary:hover{opacity:.85}
.role dl{margin:8px 0 0}

/* Рабочая доска по внешнему макету v0.5. Стили наборов и служебных экранов сохранены. */
:root{background:#f5f5f3;--done:#212121;--done-bg:#f5f5f3;--done-line:#d9d9d9;--work:#626262;--work-bg:#f5f5f3;--work-line:#d9d9d9;--ask:#626262;--ask-bg:#f5f5f3;--ask-line:#d9d9d9}
[hidden]{display:none!important}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.desk-mobile-files{display:none}
@media(max-width:900px){.desk-mobile-files{display:block;padding-left:18px;margin:0 0 14px;overflow-wrap:anywhere}.desk-v05[data-pane=table] .side.open #desk-navigation{display:block;order:-2}.desk-v05[data-pane=table] .side.open .side-bottom{display:flex;order:-2}}
button{transition:none}button,input,textarea,select{min-width:0}button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.desk-v05{height:100dvh;min-height:0;grid-template-columns:228px minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden;font-size:14px;background:white}
.desk-v05:has(.desk-gate){grid-template-rows:minmax(0,1fr) auto}
.desk-v05 .side{grid-column:1;grid-row:1;padding:0;gap:0;background:#f5f5f3;min-height:0;min-width:0;overflow:hidden;border-right:1px solid #d9d9d9}
.desk-v05 .side:before{display:none}.desk-v05 .side-head{height:54px;min-height:54px;padding:0 18px;align-items:center}
.desk-v05 .brand{display:flex;align-items:center;gap:9px;font-size:18px;letter-spacing:-.5px;white-space:nowrap}.desk-v05 .brand:before{content:'';display:block;width:9px;height:23px;background:#cf141f;border-radius:2px}.desk-v05 .brand span{display:none}
.desk-v05 .linklike{border:0;background:transparent;box-shadow:none;color:#212121;padding:5px 7px;border-radius:3px;font-size:13px;text-decoration:none;min-height:30px;text-align:left}.desk-v05 .linklike:hover{text-decoration:underline;color:#cf141f}
#desk-library{margin:12px 13px 16px;color:#626262;width:max-content;max-width:calc(100% - 26px)}
#desk-navigation{padding:0 14px 14px;overflow:auto;max-height:60%;flex-shrink:0}#desk-navigation>button{display:block;width:100%;margin:6px 0;font-size:13px}.desk-v05 .project-list{max-height:220px;overflow:auto}.desk-v05 .project-list button{white-space:normal;overflow-wrap:anywhere}
#desk-table{flex:1;min-height:0;overflow:auto;padding:0 14px 16px;scrollbar-gutter:stable}.desk-table-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:6px}.desk-table-head button{font-size:13px}.desk-table-head .small{font-size:11px}
.desk-drop{border:1px dashed #d9d9d9;padding:12px 7px;border-radius:5px;margin-bottom:8px}.desk-drop p{font-size:12px;margin:3px 0}.desk-drop.compact{border:0;padding:0 5px}.desk-drop.compact p{font-size:11px}.desk-drop.over{border-color:#cf141f;background:#fff1f0}
.desk-files{list-style:none;padding:0;margin:0}.desk-files li{padding:12px 5px;border-bottom:1px solid #d9d9d9;overflow-wrap:anywhere;font-size:13px}.desk-files li>.linklike{font-size:13px;padding:0;font-weight:600;min-height:24px;line-height:1.5;white-space:normal;overflow-wrap:anywhere}.desk-files li>span{display:block;font-size:11px;line-height:1.5;margin-top:4px}
.desk-sources .tbl-list{font-size:12px;padding-left:0}.desk-sources .tbl-list li{padding:9px 4px}.desk-sources .tbl-add{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.desk-sources input,.desk-sources select{font-size:12px;margin:0}.desk-sources .helptext{display:none}.desk-add-source summary,.desk-notes summary,.desk-extra summary{font-size:12px;padding:10px 4px;cursor:pointer}.desk-notes .zone{padding:4px;border:0;background:transparent}.desk-notes .zone>h3,.desk-notes .eyebrow{display:none}.desk-notes .tbl-add{display:grid;grid-template-columns:1fr}.desk-extra .zone{padding:8px 4px;border:0;background:transparent;font-size:12px}.desk-extra h3{font-size:13px}.desk-extra .eyebrow{display:none}#desk-add-note{font-size:11px;padding:8px 4px}
.desk-v05 .side-bottom{margin-top:auto;padding:9px 14px;border-top:1px solid #d9d9d9;display:flex;flex-direction:column;gap:3px}.desk-v05 .side-bottom button{font-size:12px;background:transparent;padding:4px 7px;min-height:26px}.desk-v05 .side-bottom .tag{border:0;background:none;padding:0;font-size:11px;font-weight:400}.desk-v05 .side-bottom .tag:before{content:'●';color:#777;font-size:9px;margin-right:7px}.desk-service summary{font-size:11px;color:#626262;cursor:pointer;padding:3px 7px}.desk-service[open]{max-height:180px;overflow:auto}.desk-service button{width:100%}
.desk-v05 .workspace{grid-column:2;grid-row:1;padding:0;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:auto;background:#fff}
.desk-home-header,.desk-task-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;min-height:54px;height:54px;flex-shrink:0;border-bottom:1px solid #d9d9d9;gap:14px;margin:0;position:relative}.desk-home-header h1,.desk-task-header h1{font-size:19px;line-height:1.3;letter-spacing:-.3px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.desk-task-header>div:first-child{min-width:0;flex:1}.desk-task-header>div>.eyebrow{display:none}.desk-task-header>div>.small{font-size:10px;display:block;line-height:1.4}.desk-task-header>button{flex-shrink:0}
.desk-project-menu{order:3;flex-shrink:0;margin-top:0}.desk-project-menu>summary{list-style:none;font-size:20px;cursor:pointer;width:28px;text-align:center}.desk-project-menu>summary::-webkit-details-marker{display:none}.desk-menu-body{position:absolute;z-index:35;right:12px;top:50px;background:#fff;border:1px solid #d9d9d9;padding:12px;box-shadow:0 8px 25px #0002;max-width:calc(100vw - 28px);width:280px}.desk-menu-body .tabs,.desk-menu-body .actions{display:flex;flex-direction:column;align-items:stretch;border:0;gap:5px;margin:0}.desk-menu-body button{text-align:left;border:0;font-size:13px;padding:8px 10px}.desk-menu-body .tabs{overflow:visible}.desk-menu-body button[aria-selected=true]{color:#cf141f;background:#fff1f0}
.desk-welcome{padding:28px clamp(24px,7vw,88px);background:#f5f5f3;flex:1;min-width:0;overflow:auto}.desk-welcome>.eyebrow{font-size:10px;letter-spacing:1.2px;color:#626262;margin-bottom:6px}.desk-welcome h2{font-size:30px;letter-spacing:-.6px;line-height:1.25;margin-bottom:14px}.desk-welcome>.lead{font-size:14px;margin:0 0 20px;color:#626262;max-width:850px}.welcome-card{padding:18px 20px 14px;border:1px solid #d9d9d9;background:#fff;border-radius:9px}.welcome-card textarea{height:110px;min-height:100px;font-size:15px;margin:6px 0 14px;resize:vertical}.welcome-card label{font-size:14px}.welcome-card .actions button{font-size:13px;min-height:40px;padding:9px 13px}.home-templates{margin-top:12px}.home-templates>summary{font-size:12px;color:#626262;cursor:pointer}.home-templates .cards{margin-top:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.home-templates button{text-align:left}.home-templates button>span{display:block;margin-top:7px}
.desk-board #project-content{flex:1;min-height:0;display:flex;flex-direction:column}
/* Карта и разговор идут под доской, а не за её счёт: область задачи растёт по содержимому,
   и доска получает свою высоту. Сжатая до окна, она прятала поле шага под кнопкой уже на
   экране ноутбука. Место под картой и разговором даёт прокрутка рабочей области. */
@media(min-width:901px){.desk-board #project-content{flex:1 0 auto}}
.desk-board-grid{display:grid;grid-template-columns:minmax(0,1fr) 344px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:'path result' 'work result';min-height:0;min-width:0;flex:1}.desk-board-grid.without-path{grid-template-rows:minmax(0,1fr);grid-template-areas:'work result'}
.desk-board-grid>.panel{margin:0;border:0;border-radius:0;box-shadow:none;min-width:0;min-height:0}.desk-board-grid .desk-work{grid-area:work;padding:20px 25px;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.desk-board-grid .desk-result{grid-area:result;padding:0;border-left:1px solid #d9d9d9;overflow:auto;scrollbar-gutter:stable;background:#fff}.desk-work>.panel-header{padding:0;margin:0 0 17px;align-items:flex-start;border:0}.desk-work h2{font-size:22px;margin:6px 0 10px}.desk-work .eyebrow{font-size:11px;color:#626262;letter-spacing:0;text-transform:none}.desk-work .lead{font-size:13px;line-height:1.55;margin:7px 0;color:#626262}.desk-work>.panel-header>.tag{font-size:10px;max-width:90px;white-space:normal}.desk-work .field{margin-bottom:16px}.desk-work .lbl{font-size:13px}.desk-work .req{font-size:10px;font-weight:400;color:#626262}.desk-work .helptext{font-size:12px;margin:4px 0 8px}.desk-work .group{padding:0;border:0;border-top:1px solid #d9d9d9;margin:20px 0}.desk-work .group>legend{font-size:11px;letter-spacing:.5px;color:#626262;padding:0 7px 0 0}.desk-work textarea{font-size:14px;min-height:100px}.desk-work input,.desk-work select{font-size:13px}.desk-work .chip{font-size:12px;padding:5px 8px;border-radius:5px}.desk-work .sticky-actions{position:sticky;bottom:-20px;background:#fff;padding:16px 0 12px;box-shadow:none;border:0;z-index:3;gap:8px}.desk-work .sticky-actions button{font-size:13px}.desk-work .sticky-actions .hint{font-size:11px;line-height:1.4;max-width:100%;flex-basis:100%}.desk-work .checkpoint{font-size:12px;line-height:1.5;margin:0 0 16px;overflow-wrap:anywhere}.desk-work .desk-step-input{border-top:1px solid #d9d9d9;padding-top:10px;margin-bottom:15px}.desk-step-input>summary{font-size:12px;cursor:pointer}.desk-work .filelist{max-height:180px;overflow:auto}.desk-work .field-error{font-size:12px;color:#cf141f;margin:3px 0}.desk-work [aria-invalid=true]{border-color:#cf141f}.desk-work .notice{font-size:13px;overflow-wrap:anywhere}.desk-work .tpl-cards{grid-template-columns:minmax(0,1fr)}
.desk-rail{grid-area:path;display:flex;flex-wrap:wrap;overflow:visible;border-bottom:1px solid #d9d9d9;padding:16px 24px 12px;gap:10px;margin:0;background:#fff;align-items:stretch}.desk-rail .step{flex:1 1 92px;min-width:76px;max-width:180px;min-height:0;border:0;border-radius:0;padding:0;background:transparent;display:flex;flex-direction:column;gap:5px;box-shadow:none;text-align:left}.desk-rail .step>.n{width:100%;display:flex;flex-direction:column;gap:7px;white-space:normal;font-size:10px;letter-spacing:0;text-transform:none;color:#626262}.desk-stage{display:block;width:100%;padding-bottom:7px;border-bottom:2px solid #d9d9d9}.desk-step-number{width:21px;height:21px;border:1px solid #d9d9d9;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff;font-size:11px}.desk-rail .step.current{color:#cf141f;background:transparent}.desk-rail .step.current .desk-stage{border-color:#cf141f}.desk-rail .step.current .desk-step-number{background:#cf141f;border-color:#cf141f;color:white}.desk-rail .step.done .desk-step-number{border-color:#212121}.desk-rail .step b{font-size:12px;font-weight:500;line-height:1.4;white-space:normal;overflow-wrap:anywhere}.desk-rail .step .st{display:none}.desk-path-tools{margin-left:auto;align-self:start;position:relative}.desk-path-tools>summary{font-size:11px;cursor:pointer;color:#626262}.desk-path-tools[open]>div{position:absolute;right:0;z-index:20;min-width:195px;padding:12px;background:white;border:1px solid #d9d9d9;box-shadow:0 6px 22px #0002}.desk-path-tools .step{margin:10px 0;max-width:none;min-width:0}.desk-path-tools .step .n{display:none}
.result-goal{padding:18px 21px 15px;border-bottom:1px solid #d9d9d9}.result-goal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.result-goal h2{font-size:15px;margin:0}.result-goal p{font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.result-goal .small{font-size:11px;color:#626262}.result-goal button{font-size:11px}.desk-result>.panel-header{padding:18px 21px 0;display:flex;gap:6px;flex-wrap:wrap;border:0;margin:0 0 12px}.desk-result>.panel-header h2{font-size:15px;margin:0}.desk-result #run-state .tag{font-size:10px}.desk-result #live-result,.desk-result #next-hint{padding:0 20px 15px;min-width:0}.desk-result .empty{font-size:13px;text-align:left;padding:12px 0}.desk-result .empty .circle{display:none}.desk-result .empty .small{display:block;font-size:13px;margin-top:8px}.desk-result .card-view,.desk-result #live-result>.result{max-height:280px;overflow:auto;min-width:0}.desk-result .card-view .card{padding:0}.desk-result .card-view dt,.desk-result .card-view dd{font-size:12px;overflow-wrap:anywhere}.desk-result .card-view .grp{font-size:11px}.desk-result #live-result>.actions{position:sticky;bottom:0;background:#fff;padding:12px 0 7px;gap:7px;z-index:2}.desk-result .actions button{font-size:12px;padding:7px 9px}.desk-result .tag{white-space:normal}.desk-result summary{font-size:12px}.desk-result .code{font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere}.desk-result .desk-next{font-size:12px;line-height:1.6;color:#626262}.desk-result #desk-next-step{font-size:12px;white-space:normal;text-align:left;width:100%}.desk-result .tw{max-width:100%;overflow:auto}
.desk-gate{grid-column:1/-1;grid-row:2;display:flex;align-items:center;gap:18px;min-width:0;min-height:56px;padding:8px 20px;background:#fafafa;border:0;border-top:1px solid #d9d9d9;border-radius:0;margin:0;z-index:10}.desk-gate>.eyebrow{display:none}.desk-gate h3{font-size:12px;font-weight:400;margin:0;flex-shrink:0}.desk-gate>p{font-size:11px;line-height:1.35;margin:0;color:#626262;max-width:260px}.desk-gate .actions{margin-left:auto;gap:8px;flex-wrap:wrap}.desk-gate button{font-size:12px;padding:7px 10px}.desk-gate #export-save{display:none}.desk-gate #export-docx{background:#fff;color:#212121;border-color:#d9d9d9}.desk-gate #save-template{order:5;border:0;background:transparent}.desk-pane-tabs{display:none}.desk-other-tab #project-content{padding:20px 24px;overflow:auto}.desk-v05:not(.desk-board) .workspace>h1,.desk-v05:not(.desk-board) .workspace>.panel,.desk-v05:not(.desk-board) .workspace>.lead{margin:20px 24px}
dialog{max-width:min(1000px,calc(100vw - 32px));width:min(820px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #d9d9d9;border-radius:8px;padding:24px}dialog .modal-foot{position:sticky;bottom:-24px;background:white;padding:16px 0;margin-top:16px;border-top:1px solid #d9d9d9;z-index:5}dialog .field-row{min-width:0}dialog .code{white-space:pre-wrap;overflow-wrap:anywhere}dialog .result{white-space:pre-wrap}dialog select[multiple]{min-height:80px}#toast{max-width:min(540px,calc(100vw - 30px));font-size:13px;bottom:70px}
.desk-release-tools{position:relative}.desk-release-tools>summary{font-size:12px;cursor:pointer}.desk-release-tools[open] #export-save{display:block;position:absolute;right:0;bottom:30px;min-width:180px;padding:12px;background:#fff;border:1px solid #d9d9d9;box-shadow:0 5px 18px #0002}.desk-task-header{flex-direction:row;align-items:center}
@media(max-width:1150px) and (min-width:901px){.desk-v05{grid-template-columns:200px minmax(0,1fr)}.desk-board-grid{grid-template-columns:minmax(0,1fr) 310px}.desk-board-grid .desk-work{padding:18px}.desk-rail{padding:14px 18px}.desk-gate>p{display:none}.desk-gate .actions{gap:5px}.desk-gate button{padding:7px}.desk-v05 .brand{font-size:16px}}
@media(max-width:900px){
  .desk-v05{height:auto;min-height:100dvh;display:flex;flex-direction:column;overflow:visible}.desk-v05 .side{display:flex;overflow:visible;border-right:0;border-bottom:1px solid #d9d9d9}.desk-v05 .side-head{height:48px;min-height:48px;padding:0 16px}.desk-v05 #side-toggle{display:block}.desk-v05 .brand{font-size:17px}#desk-library{display:none}#desk-navigation{max-height:55vh;padding-bottom:12px}.desk-v05 .project-list{display:flex;flex-direction:column;max-height:30vh}.desk-v05 .side:not(.open) #desk-navigation{display:none}.desk-v05 .side #desk-table,.desk-v05 .side .side-bottom{display:none}.desk-v05 .side.open .side-bottom{display:flex}.desk-v05 .workspace{overflow:visible;min-height:0;display:block}.desk-home-header,.desk-task-header{min-height:52px;height:auto;padding:10px 16px;gap:9px}.desk-task-header h1{font-size:16px;white-space:normal;overflow-wrap:anywhere}.desk-task-header>div>.small{font-size:10px}.desk-task-header>button{font-size:11px}.desk-task-header>div:first-child{min-width:0}.desk-home-header h1{font-size:17px}.desk-project-menu .desk-menu-body{top:100%;right:8px}.desk-welcome{padding:22px 16px;overflow:visible}.desk-welcome h2{font-size:25px}.welcome-card{padding:15px}.welcome-card textarea{min-height:150px;height:165px}.welcome-card .actions{gap:7px}.welcome-card .actions button{font-size:12px;min-height:40px}.desk-welcome>.lead{font-size:13px}.home-templates .cards{grid-template-columns:1fr}.desk-pane-tabs{display:flex;gap:0;position:sticky;top:0;z-index:15;background:#fff;border-bottom:1px solid #d9d9d9;padding:0 12px}.desk-pane-tabs button{flex:1;border:0;border-bottom:2px solid transparent;border-radius:0;padding:11px 8px;font-size:13px;background:transparent}.desk-pane-tabs button[aria-pressed=true]{color:#cf141f;border-color:#cf141f}.desk-board-grid,.desk-board-grid.without-path{display:flex;flex-direction:column;overflow:visible}.desk-rail{padding:14px 16px;gap:10px;overflow:visible}.desk-rail .step{flex:1 1 80px;max-width:none;min-width:70px}.desk-path-tools{flex-basis:100%}.desk-path-tools[open]>div{left:0;right:auto}.desk-board-grid .desk-work{padding:20px 16px;overflow:visible;min-width:0}.desk-board-grid .desk-result{border-left:0;overflow:visible;min-width:0}.desk-work h2{font-size:21px}.desk-work .sticky-actions{bottom:0;padding:12px 0;flex-wrap:wrap}.desk-work .sticky-actions button{font-size:12px}.desk-v05[data-pane=work] .desk-result{display:none}.desk-v05[data-pane=result] .desk-work,.desk-v05[data-pane=result] .desk-rail{display:none}.desk-v05[data-pane=table] .desk-board-grid{display:none}.desk-v05[data-pane=table] .side #desk-table{display:block;order:3;max-height:none;overflow:visible;padding:15px 16px}.desk-v05[data-pane=table] .side{display:contents}.desk-v05[data-pane=table] .side-head{order:-2;background:#f5f5f3}.desk-v05[data-pane=table] .workspace{order:-1}.desk-v05[data-pane=table] #desk-navigation{display:none}.desk-v05[data-pane=table] #desk-table{order:0}.desk-v05[data-pane=table] .side-bottom{display:none}.desk-gate{display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px;position:static;margin-top:auto}.desk-gate h3{font-size:12px;flex-basis:100%}.desk-gate>p{display:block;font-size:11px;max-width:none}.desk-gate .actions{margin:0;width:100%;gap:6px}.desk-gate button{font-size:11px;padding:8px;min-height:38px}.desk-gate #document-composition{font-size:11px}.desk-gate #save-template{margin-left:auto}.desk-result #live-result,.desk-result #next-hint{padding:0 16px 16px}.desk-result .card-view,.desk-result #live-result>.result{max-height:none}.desk-result .actions{flex-wrap:wrap}.desk-result>.panel-header{padding:18px 16px 0}.result-goal{padding:16px}.result-goal-head h2{font-size:16px}.desk-other-tab #project-content{padding:16px}.desk-v05 .field-row{grid-template-columns:1fr}.desk-v05 .grid2{grid-template-columns:1fr}.desk-v05 .tbl-add{grid-template-columns:1fr}.desk-v05 .src-main{display:flex;flex-wrap:wrap}.desk-v05 pre,.desk-v05 .code{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.desk-v05 .tw{max-width:100%;overflow:auto}.desk-v05 .checks{grid-template-columns:1fr}dialog{padding:18px;max-width:calc(100vw - 20px);width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}dialog .field-row{grid-template-columns:1fr}dialog .modal-foot{bottom:-18px}#toast{bottom:15px}
}
@media(max-width:900px){.desk-task-header{flex-direction:row;align-items:center}.desk-task-header>div:first-child{width:auto;text-align:left}.desk-rail .step{flex-basis:96px;min-width:90px}.desk-gate{order:4}.desk-v05[data-pane=table] .side #desk-table{order:0}.desk-gate .actions{gap:4px}}

/* Новые компоненты и широкий режим принятия результата из 40492d5. */
.desk-v05 .brand{font-size:17px;white-space:normal}.desk-v05 .brand:before{flex-shrink:0}
.desk-v05 .side-bottom>.small{font-size:10px;line-height:1.5;margin:5px 7px}
.desk-board-grid{grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:'path result' 'work result' 'extras result'}
.desk-board-grid.without-path{grid-template-rows:minmax(0,1fr);grid-template-areas:'work result'}
.desk-board-grid>.desk-details{grid-area:extras;border-top:1px solid #d9d9d9;padding:10px 24px;margin:0;max-height:45vh;overflow:auto;font-size:12px;min-width:0}
.desk-details>.zones{grid-template-columns:1fr}.desk-details .zone{padding:12px;min-width:0}.desk-details .zone h3{font-size:14px}.desk-details .zone.wide{margin:12px 0 0}.desk-details .zone .eyebrow{font-size:11px}
.desk-details .small{font-size:12px}.desk-details>summary{cursor:pointer}
.desk-work .role{font-size:12px;line-height:1.5;overflow-wrap:anywhere}.desk-work .role .tag{font-size:10px}.desk-work .role dl{grid-template-columns:110px minmax(0,1fr)}
.desk-work .ask{font-size:24px}.desk-work .more{font-size:13px}.desk-work #start-question{min-height:135px}
.is-start .desk-result>#live-result,.is-start .desk-result>#run-state,.is-start .desk-result>#next-hint{display:none}
.desk-rail .step .st{display:block;font-size:10px;line-height:1.4;color:#626262}
/* Действие у файла — не второе имя файла: правило имени сильнее и перебивало этот вид. */
.desk-files li>.linklike.desk-method{font-size:11px;font-weight:400;margin-top:5px;color:var(--accent)}
.desk-sources .tbl-list li{display:block;overflow-wrap:anywhere;line-height:1.55}
.desk-sources .tbl-list li>.tag{display:inline-block;white-space:normal;word-break:normal;overflow-wrap:normal;margin:0 4px 4px 0}
.desk-sources .tbl-list li>a{display:block;margin:3px 0}
.desk-sources .tbl-list li>.muted{display:block}
.desk-sources .tbl-list li>button{display:inline-block;margin:5px 4px 0 0;vertical-align:middle}
.desk-notes .notes-add{grid-template-columns:1fr}.desk-notes .zone h3{font-size:13px}.desk-notes .zone>h3{display:block}
.desk-gate>p{max-width:280px}.desk-release-tools[open]>div{position:absolute;right:0;bottom:28px;min-width:210px;padding:10px;background:white;border:1px solid #d9d9d9;box-shadow:0 5px 18px #0002;display:grid;gap:5px;z-index:25}
.desk-release-tools[open] #export-save{position:static;display:block;min-width:0;padding:8px;box-shadow:none;border:1px solid #d9d9d9}
.desk-release-tools button{width:100%;text-align:left}
.desk-board-grid.is-decision{display:flex;flex-direction:column;overflow:auto}
.desk-board-grid.is-decision>.desk-rail{order:0;flex-shrink:0}
.desk-board-grid.is-decision>.desk-result{order:1;flex-shrink:0;overflow:visible;border-left:0;padding-bottom:6px}
.desk-board-grid.is-decision>.desk-work{order:2;flex-shrink:0;overflow:visible;border-top:1px solid #d9d9d9}
.desk-board-grid.is-decision>.desk-details{order:3;flex-shrink:0;max-height:none;overflow:visible}
.is-decision .desk-result .card-view,.is-decision .desk-result #live-result>.result{max-height:none;overflow:visible}
.is-decision .desk-result .card-view .card{grid-template-columns:minmax(140px,220px) minmax(0,1fr);gap:8px 20px}
.is-decision .desk-result .card-view dt,.is-decision .desk-result .card-view dd{font-size:14px}
.is-decision .result-goal{background:#fafafa;padding:10px 21px}.is-decision .result-goal h2{font-size:13px}.is-decision .result-goal p{font-size:12px;margin:3px 0}
.is-decision .desk-result>.panel-header h2{font-size:21px}.is-decision .desk-result #live-result>.actions{position:static}.is-decision .desk-result .actions button{padding:10px 14px;font-size:13px}
.desk-result .lin{font-size:12px;overflow-wrap:anywhere}
@media(max-width:900px){
 .desk-board-grid>.desk-details{padding:12px 16px;max-height:none;overflow:visible}
 .desk-v05[data-pane=result] .desk-details,.desk-v05[data-pane=table] .desk-details{display:none}
 .desk-board-grid.is-decision{overflow:visible}.is-decision .desk-result .card-view .card{grid-template-columns:minmax(0,1fr)}
 .desk-v05[data-pane=work] .desk-board-grid.is-decision>.desk-result{display:none}
 .desk-v05[data-pane=result] .desk-board-grid.is-decision>.desk-work,.desk-v05[data-pane=result] .desk-board-grid.is-decision>.desk-rail{display:none}
 .desk-v05[data-pane=table] .desk-board-grid.is-decision{display:none}
 .desk-work .role dl{grid-template-columns:1fr}.desk-gate>p{max-width:none}
 .desk-v05[data-pane=table] .side.open #desk-navigation{display:block;order:-2}
 .desk-v05[data-pane=table] .side.open .side-bottom{display:flex;order:-2}
}
/* Полоса доли в строке результата: длина полосы — это доля, ничего сверх данных. */
.bar{flex:0 0 clamp(90px,22%,220px);height:10px;border-radius:2px;overflow:hidden;align-self:center;line-height:0}
.bar>svg{display:block;width:100%;height:10px}
.bar .bar-bg{fill:#ededed}
.bar .bar-fill{fill:var(--accent,#b01722)}
.src-row .src-main{align-items:center}
@media (max-width:620px){.bar{flex-basis:100%;margin-top:4px}}

/* Картина данных: карточка полосы доклада, а не график из библиотеки. Один шрифт, один
   акцент, прямые подписи значений, тонкая линия перед происхождением. */
.chart-card{margin:0 0 18px;padding:0;border:1px solid #e3e3e3;border-radius:8px;overflow:hidden;background:#fff}
.chart{display:block;font-family:inherit}
.chart text{font-family:inherit}
.ch-head{font-size:19px;font-weight:700;fill:#1a1a1a}
.ch-sub{font-size:12.5px;fill:#626262}
.ch-leg{font-size:11.5px;fill:#444}
.ch-lab{font-size:13px;fill:#1a1a1a}
.ch-val{font-size:13px;font-weight:700;fill:#1a1a1a;font-variant-numeric:tabular-nums}
.ch-delta{font-size:12px;font-weight:700;fill:#626262;font-variant-numeric:tabular-nums}
.ch-delta.up{fill:#b01722}
.ch-delta.down{fill:#3a7d44}
.ch-rest{font-size:11.5px;fill:#626262}
.ch-src{font-size:11px;fill:#8a8a8a}
.ch-note{font-size:11px;fill:#626262}
.chart-card.drawn{padding:14px}
.chart-card.drawn svg{display:block;width:100%;height:auto}
.ch-cap{font-size:12px;color:#626262;margin-top:8px}
ul.plain{margin:6px 0;padding-left:18px}
ul.plain>li{margin:3px 0;line-height:1.5}

/* Как шла работа: ход читается сверху вниз — зачем, что вышло, что увидел. */
.work-session{margin-bottom:18px}
.work-moves{list-style:none;margin:0;padding:0}
.work-move{border-left:3px solid var(--accent,#b01722);padding:10px 0 10px 14px;margin:0 0 14px}
.work-move.bad{border-left-color:#d9a54a}
.work-why{font-size:14px;line-height:1.5;color:#1a1a1a}
.work-why>.n{display:inline-block;font-size:11px;letter-spacing:.4px;color:#626262;margin-right:8px;text-transform:uppercase}
.work-facts{margin:4px 0 6px}
.work-out{margin:6px 0}
.work-out>summary{font-size:12px;cursor:pointer;color:#626262}
.work-out pre.code{max-height:320px;overflow:auto;margin:6px 0 0}
.work-out>summary>.peek{color:#8a8a8a;font-weight:400;margin-left:8px}
.work-say{margin:4px 0 12px}
/* Ход работы — не пункт в меню «⋯»: когда работа идёт, за ним и приходят. */
.desk-go-work{margin-left:auto;margin-right:8px;font-size:12px;padding:6px 10px;border:1px solid #d9d9d9;border-radius:6px;background:#fff;cursor:pointer;white-space:nowrap}
.desk-go-work.on{border-color:var(--accent,#b01722);color:var(--accent,#b01722)}
.work-expect{margin:2px 0 4px}
.work-session.received{border-left:3px solid #9a9a9a}
.work-session.received .work-move{border-left-color:#9a9a9a}
/* Картинка, сделанная работой: её смотрят, а не скачивают, чтобы понять, что это. */
.mat-pic{margin:8px 0;padding:8px;border:1px solid #e3e3e3;border-radius:6px;background:#fff;max-width:760px}
.mat-pic>img{display:block;width:100%;height:auto}

/* Три глубины: ответ, шаги словами, внутренности. Открывается ответом. */
.work-answer{border-left:3px solid var(--accent,#b01722);padding:2px 0 2px 16px;margin:14px 0 18px}
.work-answer>h3{font-size:13px;letter-spacing:.4px;text-transform:uppercase;color:#626262;margin:0 0 6px;font-weight:600}
.work-answer>p{font-size:16px;line-height:1.6;margin:0 0 8px;color:#1a1a1a}
.work-steps>summary,.work-about>summary{font-size:13px;cursor:pointer;color:#626262;padding:6px 0}
.work-steps{margin-top:6px}
.work-move{border-left:2px solid #e3e3e3;padding:8px 0 8px 14px;margin:0 0 10px}
.work-move.bad{border-left-color:#d9a54a}
.work-move.quiet{border-left-color:#ededed;color:#8a8a8a}
.work-why{font-size:14px;line-height:1.5;color:#1a1a1a}
.work-why>.n{display:inline-block;min-width:20px;font-size:11px;color:#9a9a9a;margin-right:6px}
.work-found{font-size:13px;line-height:1.5;color:#3a3a3a;margin:4px 0 0}
.work-back{font-size:12px;color:#b01722;margin:4px 0 0}
/* Что приложение сделало само — первое, что видит человек на задаче. */
.work-top{border-left:3px solid var(--accent,#b01722)}
.work-top.live{border-left-color:#d9a54a}
.work-answer-text{font-size:16px;line-height:1.6;color:#1a1a1a;margin:6px 0 8px}
/* Толкование хода даёт приложение, отметка исполнения — факт. Их не смешиваем. */
.work-fact{font-size:11px;margin-left:6px}
.work-fact.ok{color:#3a7d44}
.work-fact.no{color:#b01722}
/* Недоступно — не неудача: серым, как обычная пометка, а не тревогой. */
.work-fact.off{color:#6b6b6b}
.desk-work-top{padding:16px 25px 0}
.desk-work-top .panel{margin:0}
.work-caveats{font-size:12px;letter-spacing:.4px;text-transform:uppercase;color:#626262;margin:14px 0 6px;font-weight:600}
.desk-made{margin:0 0 6px;color:#626262}
.desk-made .linklike{color:var(--accent,#b01722)}
/* Вопрос работы — не заметка на полях: человек должен видеть, что его ждут. */
.work-asks{border-left:3px solid #d9a54a;padding:2px 0 2px 16px;margin:14px 0 18px}
.work-asks>h3{font-size:13px;letter-spacing:.4px;text-transform:uppercase;color:#a07019;margin:0 0 6px;font-weight:600}
.work-asks textarea{min-height:60px}
/* Что задача от меня ждёт — видно из списка, без открытия. */
.task-state{font-size:12.5px;line-height:1.45;margin:4px 0 0;color:#626262}
.task-state.ask{color:#a07019;font-weight:600}
.task-state.live{color:#a07019}
.task-state.done{color:#3a7d44}

/* Ход, которым работа ходила в источники: список вкладок с исходом каждой. Открытая
   страница читается как источник — заголовок и узел, а не адрес во всю строку. */
.work-move.open{border-left-color:#7a7a7a}
.work-pages{margin:6px 0 0}
.work-pages>ul{margin:4px 0 0;padding:0;list-style:none}
.work-pages>ul>li{font-size:13px;line-height:1.6;color:#1a1a1a}
.work-pages a{color:#1a1a1a;text-decoration:underline;text-decoration-color:#c9c9c9;text-underline-offset:2px}
.work-pages a:hover{text-decoration-color:#b01722}
.work-pages .work-fact{margin-right:6px}
.work-fact.ask{color:#a8791f}
.work-need{font-size:13px;line-height:1.5;color:#a8791f;margin:6px 0 0}
.work-allow{margin:6px 0 0}
.work-allow .linklike{font-size:13px}
/* «Выяснить по источникам» рядом с пустым местом: предложение, а не требование. */
.find-gap{margin-left:8px;font-size:12px}
/* Вывод работы стоит рядом с записью, но отдельно от неё: это не то, что написал
   человек, и не решение — решение он примет сам. */
.note-found{margin:4px 0 2px 0;padding:6px 10px;border-left:2px solid var(--wait-line,#e3e3e3);background:var(--wait-bg,#f6f6f6);border-radius:0 4px 4px 0;font-size:13px;line-height:1.5}
.note-found .tag{margin-right:6px}
/* «В работе у приложения» — спокойный факт, а не тревога: красным здесь звать некуда. */
.work-move.open .work-back{color:#626262}
/* Обоснование хода: объясняет название, а не заменяет его — потому и тише. */
.work-said{font-size:13px;line-height:1.5;color:#626262;margin:3px 0 0}.work-said>span+.said-at::before{content:'· '}.work-said>details+.said-at{display:block;margin-top:2px}
.work-accept{margin-top:12px}.work-accept>p{margin:0 0 6px}
/* Ожидание ответа: спокойная строка состояния, а не поток служебного текста. */
.result.waiting{background:var(--wait-bg,#f6f6f6);border:1px solid var(--line,#e3e3e3);border-radius:6px;padding:12px 14px}
.result.waiting>p{margin:0}
.result.waiting details{margin:8px 0 0}
.result.waiting summary{font-size:12px;color:#626262;cursor:pointer}
/* Таблица, записанная в поле строками: колонки видно глазами, а не по стойкам.
   Ширины заданы, а не выведены из содержимого: одна длинная подпись в первом столбце
   растягивала его на полтаблицы, а соседний столбец переносился по два слова. */
table.card.plain{border-collapse:collapse;width:100%;table-layout:fixed}
table.card.plain td{border-bottom:1px solid var(--line,#ededed);padding:7px 12px 7px 0;vertical-align:top;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
table.card.plain td:first-child{font-weight:600}
table.card.plain tr:last-child td{border-bottom:0}
table.card.plain[data-cols="2"] td:first-child{width:32%}
table.card.plain[data-cols="3"] td:first-child{width:24%}
table.card.plain[data-cols="3"] td:nth-child(2){width:28%}
table.card.plain[data-cols="4"] td{width:25%}
/* Шапка у поля-таблицы: колонки названы подсказкой самого вопроса, и читатель видит их
   именами, а не догадывается по порядку. Подпись тихая — строки важнее шапки. */
table.card.plain th{border-bottom:1px solid var(--line,#ededed);padding:0 12px 5px 0;text-align:left;font-size:11px;font-weight:600;color:var(--muted,#626262);background:none;text-transform:none;vertical-align:bottom}
/* В узкой колонке результата строки такой таблицы раскладываются столбиком: там шапка
   стоит над одной ячейкой и врёт. Её не показываем — значения и так подписаны местом. */
.ws-grid>.panel:last-child table.card.plain thead{display:none}
.card-view dd p.val{margin:0 0 4px}
/* Что работа сделала на странице до чтения: нажала, вписала, прокрутила. */
.work-did{font-size:12px;line-height:1.5;color:#626262;margin:2px 0 0 22px}
/* На телефоне название занимает свою строку: кнопки не сжимают его до одной
   буквы. Статус и объяснение хода читаются последовательно, без узких колонок. */
@media(max-width:900px){
  .desk-v05 .desk-task-header{flex-wrap:wrap;align-items:center;justify-content:flex-start}
  .desk-v05 .desk-task-header .desk-go-work{margin-left:0}.desk-v05 .desk-task-header .desk-project-menu{margin-left:auto}
  .desk-v05 .desk-task-header>div:first-child{flex:1 0 100%;width:100%}
  .work-session .panel-header{flex-direction:column;gap:8px}
  .work-session .compact-dl{grid-template-columns:minmax(0,1fr);gap:4px}
  .work-session .compact-dl dt:not(:first-child){margin-top:8px}
}
/* Один ритм у результата, вопроса и оснований. Служебная подпись не спорит
   с самим ответом; объяснения остаются второй глубиной чтения. */
.work-session h2{margin:0;line-height:1.35}
.work-session .work-answer>h3,.work-session .work-asks>h3{font-size:14px;letter-spacing:0;text-transform:none}
.work-session .work-answer>p.small{font-size:13px;line-height:1.5;color:var(--muted)}
.work-session .work-say{gap:8px 12px;margin:16px 0 20px}
.work-session details>summary{padding-block:4px}
.work-session .work-about{margin-top:12px}
.work-session .notice>p{margin:8px 0 0}

/* Находка относится к записи, но читается отдельным блоком, а не сжимается в строке кнопок. */
.notes-list>li{display:block;padding:12px 0;line-height:1.55}
.notes-list>li>.ntext{overflow-wrap:anywhere}
.notes-list>li>.badge-btn{margin:4px 6px}
.notes-list>li>.find-note,.notes-list>li>.tbl-del{margin-top:7px}
.notes-list .note-found{margin:10px 0 4px;padding:10px 12px}
.note-found-status{margin:0 0 7px;color:var(--muted);font-size:12px;line-height:1.5}
.note-found-text{margin:0 0 8px;white-space:pre-wrap;overflow-wrap:anywhere}
.note-found-stale{margin:0 0 8px;font-weight:600;color:var(--text)}
.note-found .note-open-work{display:block;max-width:100%;white-space:normal;text-align:left;margin-top:8px}
.note-found details{margin-top:8px}
.work-session.work-selected{outline:2px solid var(--accent);outline-offset:3px;scroll-margin-top:18px}
@media(max-width:700px){.notes-list>li>.tag{white-space:normal}.notes-list .note-found{padding:10px}.note-open-work{min-height:40px}}

.work-answer .work-answer-text{white-space:pre-wrap}

/* Карта исследования: дерево работ и веток с предметами; обновляется без мигания. */
.desk-map .map-counts{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
/* Действия карты — ссылки: видно, что на них нажимают, и край совпадает с текстом. */
.desk-v05 .desk-map .linklike{color:var(--accent);padding:0;min-height:0}.desk-v05 .desk-map .linklike:hover{color:var(--accent-dark)}
.desk-v05 .work-session .linklike{color:var(--accent)}.desk-v05 .work-session .linklike:hover{color:var(--accent-dark)}
.desk-v05 .linklike.note-open-work,.desk-v05 .linklike.find-note,.desk-v05 .linklike.find-gap{color:var(--accent);padding:2px 0;min-height:0}
.map-tree,.map-branches{list-style:none;margin:0;padding:0}
.map-branches{margin:.4rem 0 0 1.1rem;padding-left:.8rem;border-left:2px solid var(--line,#d9dde3)}
.map-work{padding:.55rem .7rem;border:1px solid var(--line,#d9dde3);border-radius:.6rem;margin:.45rem 0;background:var(--panel,#fff)}
.map-work.live{border-color:var(--warn,#c98a1a)}.map-work.you{border-color:#e0a3a8}
.map-head{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.map-head .linklike{margin-left:auto}
.map-q{margin:.3rem 0 .15rem;font-weight:600}
.map-now{font-size:.92em;color:var(--muted,#5a6270)}
.map-more{margin-top:.25rem}
.map-subjects{margin:.35rem 0 .2rem;padding-left:1.1rem}
.map-subjects li{margin:.2rem 0}
.map-subjects li.is-new{background:var(--new,#fff6d8);border-radius:.3rem;padding:.1rem .3rem}
.map-answer{display:block;margin-top:.15rem;color:var(--ok,#2a6b3a)}
.map-tools,.work-point{display:flex;gap:.9rem;flex-wrap:wrap;margin:.3rem 0 .1rem}
.tag.map-new{background:var(--new,#fff6d8);color:var(--ink,#1c2430)}
.tag.live{background:#fdf6ea;color:#8a5200;border:1px solid #f0d9a8}
.map-note{margin:.5rem 0 0}
.work-checks{margin:.4rem 0}
.work-check.no{color:var(--accent-dark,#8a2a2a)}
.work-check.ok{color:inherit}.work-check.was{color:var(--muted)}.work-checks-was{margin-top:8px}
.work-check-answer{margin:.15rem 0 .3rem;color:var(--ink,#1c2430);font-size:.95em}
.map-about{font-size:.92em;margin:.1rem 0 .15rem}
.map-notes{margin:.2rem 0 .5rem}
.map-note{margin:.3rem 0}
.map-note-works{display:flex;gap:.8rem;flex-wrap:wrap;margin:.1rem 0}
.map-note-found{margin:.1rem 0 .2rem}
.map-budget{margin:.2rem 0 .4rem;display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.map-requests{margin:.2rem 0 .4rem}
.req{margin:.2rem 0}
.req.no{color:var(--accent-dark,#8a2a2a)}

/* Стиль строкой (style="…") браузер запрещает: у окна свои правила, style-src 'self', и
   оформление молча не применялось — на живом экземпляре 20.09 это было 18 отказов подряд,
   а отступы родословной пропадали. Те же значения теперь классами и разметкой. */
.lin[data-level]{border-left:2px solid var(--line);padding-left:10px}
.lin[data-level="1"]{margin-left:14px}
.lin[data-level="2"]{margin-left:28px}
.lin[data-level="3"]{margin-left:42px}
.lin[data-level="4"]{margin-left:56px}
.lin[data-level="5"]{margin-left:70px}
.lin[data-level="6"]{margin-left:84px}
.lin[data-level="7"]{margin-left:98px}
.lin[data-level="8"]{margin-left:112px}
.gap-above{margin-top:8px}
.block-gap{display:block;margin-top:8px}
.gap-before{margin-left:6px}
.plain-label{font-weight:400}

/* Заключение проверяющего по одному выводу работы: судит отдельный агент, а не приложение. */
.map-verdict{margin:.3rem 0}

/* Текст методики и прежних её редакций: длинные строки переносятся, а не уезжают за край. */
pre.wrap{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9em;margin:.4rem 0;padding:.5rem;background:var(--soft,#f4f4f5);border-radius:6px}
/* Реплика приложения в разговоре — не реплика человека. */
.talk-app{color:#5a5a5a}
/* Согласие одной строкой: галочка и подпись рядом, а не столбиком. */
label.inline{display:flex;align-items:center;gap:8px;font-weight:400}
label.inline input{width:auto;margin:0}
/* Выбор с пояснением в две строки: кружок стоит у названия, а не посередине. */
label.inline.choice{align-items:flex-start}label.inline.choice>input{margin-top:4px}
/* Стадии исследования: пройденное, текущее и то, до чего работа не дошла. */
.work-stages{margin:10px 0 14px}
.stages{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.stages .stage{flex:1 1 160px;min-width:150px;border:1px solid #e3e3e3;border-radius:6px;padding:8px 10px;background:#fbfbfb}
.stages .stage.done{border-color:#cfe0d3;background:#f6fbf7}
.stages .stage.now{border-color:#b01722;background:#fff}
.stages .stage.wait{opacity:.65}
.stage-mark{display:inline-block;width:14px;color:#6b6b6b}
.stages .stage.done .stage-mark{color:#3a7d44}
.stages .stage.now .stage-mark{color:#b01722}
.stage-art{font-size:12px;margin-top:4px}
/* Дословная цитата под утверждением: видно, что это чужие слова, а не наши. */
.work-quote{margin:4px 0 4px 0;padding:4px 10px;border-left:3px solid #d8d8d8;color:#333;font-size:13px}

/* Обзор работы остаётся первым, разговор занимает место по необходимости. */
.desk-talk .talk-compose{display:flex;gap:14px;align-items:flex-end}
.desk-talk .talk-compose label{flex:1;min-width:0;margin:0}
.desk-talk .talk-compose textarea{display:block;min-height:64px;margin:6px 0 0;resize:vertical;font-weight:400}
.desk-talk .talk-compose button{flex-shrink:0;margin-bottom:0}
.talk-history{margin-bottom:16px}
.talk-history>summary{font-weight:600;cursor:pointer}
.review-status{border-left:3px solid #d4d8dd;padding:9px 12px;margin:10px 0;background:#f6f7f8;border-radius:0 6px 6px 0;font-size:13px;line-height:1.5}
.review-status p{margin:4px 0 0}
.review-status details{margin-top:6px}
.review-status summary{cursor:pointer;color:#59616b}
.review-attention{border-color:#c68b23;background:#fff9ee}
@media(max-width:700px){
 .desk-map>.panel-header{display:block}
 .desk-map .map-counts{margin-top:10px;line-height:1.5}
 .desk-talk .talk-compose{display:block}
 .desk-talk .talk-compose button{margin-top:10px}
}

.review-summary{margin:8px 0;color:#535e69;font-size:13px;line-height:1.5}

/* Разделы оснований результата шли каждый своей карточкой — шесть независимых мест,
   которые открываются по одному. Общая рамка собирает их в один блок; раскрытие и
   содержимое каждого раздела внутри не меняются. Тем же видом оформлены соседние
   сворачиваемые блоки: сказанное работе и «чего данные не дают». */
.work-proof,.work-gaps{border:1px solid var(--border,#d9d9d9);border-radius:8px;padding:4px 14px;margin:14px 0}
.work-proof>summary,.work-gaps>summary{font-size:13px;font-weight:600;cursor:pointer;padding:10px 0}
.work-gaps .work-caveats{margin:0}
.work-proof .work-checks{border-top:1px solid var(--border,#d9d9d9);margin:0;padding:10px 0}
.work-proof .work-checks:first-of-type{border-top:0}
/* Длинное указание свёрнуто до первой мысли: протокол — второй слой экрана, не первый. */
.said-long>summary{cursor:pointer}

/* Начать работу — первое, за чем приходят: кнопки стоят отдельно, а не слипшимся блоком
   внутри списка задач. */
#new-project,#import-capsule{display:block;box-sizing:border-box;width:calc(100% - 26px);margin:0 13px 10px;font-size:13px}
#new-project{margin-top:12px}
/* Граница между принесённым человеком и найденным работой: не прячем, а называем. */
.desk-files-divider{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 5px;margin-top:2px;border-top:1px dashed #c9c9c9}
.desk-files-divider button{font-size:12px}
/* Разговор копится ходами и без предела высоты толкал поле вопроса вниз, пока сам не
   занимал весь экран. Прежние ходы остаются доступны той же прокруткой, в своей рамке. */
.talk-rows{max-height:340px;overflow:auto;padding-right:4px}

/* Поле адреса и кнопка рядом: кнопка по своему содержимому, а не во всю оставшуюся ширину. */
.proxy-row{display:flex;gap:10px;align-items:center}
.proxy-row input{flex:1;min-width:0}
.proxy-row button{flex:0 0 auto;width:auto}
/* экран агентов: карточка на агента — чем думает, с каким усилием, по каким поручениям */
.agents-intro p{max-width:860px}.agent-kind{margin-top:6px}
.kind-switch{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}
.kind-switch button{border:0;border-radius:0;padding:7px 14px;background:#fff}.kind-switch button+button{border-left:1px solid var(--border)}
.kind-switch button.on{background:var(--pink);color:var(--accent-dark);font-weight:700}
.agent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.agent-card{background:#fff;border:1px solid var(--border);border-top:3px solid var(--border);border-radius:8px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;min-width:0}
.agent-card.own{border-top-color:var(--accent)}
.agent-card header{display:flex;justify-content:space-between;align-items:center;gap:12px}
.agent-card header h3{margin:0;font-size:17px}.agent-card header .tag{white-space:nowrap;flex-shrink:0}.agent-about{margin:-6px 0 0}
.agent-row{display:flex;flex-direction:column;gap:6px;min-width:0}
.agent-row>label,.agent-lbl{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--muted)}.agent-row select{margin:0}

.effort-chips{display:flex;flex-wrap:wrap;gap:6px}.effort-chips{gap:5px}.effort-chips .chip{padding:4px 9px;font-size:12px}
.agent-source,.agent-hint{margin:0}.agent-hint{color:var(--work)}.agent-model-about{margin:0}
.agent-prompts{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;border-top:1px solid #ececea;padding-top:10px;font-size:13.5px;margin-top:auto}
.desk-v05 .agent-prompts .linklike,.agent-prompts .linklike,.desk-v05 .agent-source .linklike,.agent-source .linklike{color:var(--accent);padding:2px 0;min-height:0;font-size:inherit}
.desk-v05 .agent-source .linklike:hover,.agent-source .linklike:hover{text-decoration:underline;color:var(--accent-dark)}
.desk-v05 .agent-prompts .linklike:hover,.agent-prompts .linklike:hover{text-decoration:underline;color:var(--accent-dark)}
.model-rows{margin:4px 0 8px}.model-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid #ececea}.model-row:last-child{border-bottom:0}
.model-row code{font-size:12px;color:var(--muted);background:var(--soft);padding:1px 6px;border-radius:4px;overflow-wrap:anywhere}
.model-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;min-height:32px}.model-head h3{margin:0}
.add-model{margin:4px 0 6px}.add-model summary{cursor:pointer;color:var(--accent);font-size:14px}.add-model[open]{background:var(--soft);border-radius:8px;padding:12px 14px}
.new-efforts{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;margin:0 0 10px}.new-efforts label.check{margin:0}
.agent-kind{margin-top:8px}.kind-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.kind-state{margin:8px 0 0}
.kind-switch button{min-width:92px}
.model-kind{margin-top:18px}.model-kind:first-of-type{margin-top:10px}.model-kind h3{margin:0 0 6px}
.model-group{margin:10px 0 4px}.model-group-title{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--muted);margin-bottom:2px}
.model-name{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}.model-empty{padding:8px 0}
.model-head{margin-top:0}
@media(max-width:1050px){.agent-grid{grid-template-columns:1fr}}
@media(max-width:560px){.agent-card header{flex-wrap:wrap}.model-row{flex-direction:column}}
.agent-models ul.model-rows,ul.plain.model-rows{list-style:none;padding-left:0}
/* Поле внутри подписи не наследует её жирность: подпись — заголовок поля, а вписанное — текст. */
label input,label textarea,label select{font-weight:400}
/* Служебные экраны — подключения, обслуживание, агенты, справка: страница с полями, заголовок
   и панели на одной линии, а не у края окна. */
.desk-v05.is-page .workspace{padding:22px 28px 72px}
.desk-v05.is-page .workspace>h1,.desk-v05.is-page .workspace>.panel,.desk-v05.is-page .workspace>.lead,.desk-v05.is-page .workspace>.notice{margin:0 0 16px}
.desk-v05.is-page .workspace>.agent-grid{margin:0 0 16px}
.desk-v05.is-page .topline{margin-bottom:18px}
@media(max-width:900px){.desk-v05.is-page .workspace{padding:16px 16px 56px}}

/* Карта и разговор на доске — карточки с полями, как на странице работы: скруглённая рамка
   вплотную к краю рабочей области выглядела обрезанной. */
.desk-board #project-content>.desk-map,.desk-board #project-content>.desk-talk{margin:16px 24px}
@media(max-width:900px){.desk-board #project-content>.desk-map,.desk-board #project-content>.desk-talk{margin:12px 16px}}

/* Постановка исследования — рабочее место аналитика: сначала то, что решить, потом паспорт,
   вопросы, гипотезы и источники. Цвета состояний — те же, что на доске. */
.frame-ws{max-width:1120px}
.frame-ws .panel h3{margin-bottom:6px}
.frame-head .frame-question{font-size:21px;line-height:1.35;margin:6px 0 8px}
.frame-state{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:14px;margin:0 0 12px;padding:5px 12px;border-radius:14px;border:1px solid var(--wait-line);background:var(--wait-bg);color:var(--wait)}
.frame-state .dot{width:8px;height:8px;border-radius:50%;background:currentColor}
.frame-state.ok{background:var(--done-bg);color:var(--done);border-color:var(--done-line)}
.frame-state.warn{background:var(--work-bg);color:var(--work);border-color:var(--work-line)}
.frame-state.wait{background:var(--ask-bg);color:var(--ask);border-color:var(--ask-line)}
.frame-origin{margin:0 0 12px}.frame-origin summary{font-size:13px;color:var(--muted);cursor:pointer}
.frame-pick{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin-left:auto}.frame-pick select{width:auto;max-width:320px;margin:0}
.frame-decide{border-color:var(--ask-line);border-top:3px solid var(--ask)}
.frame-decide .decision{border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin:12px 0;background:#fff}
.frame-decide .decision h4{margin:0 0 10px;font-size:16px}
.frame-decide .options{display:grid;gap:6px;margin-bottom:10px}
.frame-decide .option{display:grid;grid-template-columns:auto 26px minmax(0,1fr);align-items:start;gap:8px;font-weight:400;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;cursor:pointer}
.frame-decide .option:hover{border-color:#8a8a8a}
.frame-decide .option:has(input:checked){border-color:var(--accent);background:var(--pink)}
.frame-decide .option input{margin:4px 0 0}
.frame-decide .option .n{font-weight:700;color:var(--muted)}
.frame-decide .effect,.frame-decide .recommend{font-size:14px;margin:6px 0}
.frame-decide .recommend{background:var(--soft);border-left:3px solid var(--ask-line);padding:8px 12px;border-radius:0 6px 6px 0}
.frame-decide .own{font-weight:400}.frame-decide .own textarea{min-height:52px}
.pp{display:grid;gap:0}
.pp-row{display:grid;grid-template-columns:minmax(150px,230px) minmax(0,1fr) auto;gap:6px 16px;padding:8px 0;border-bottom:1px solid #ececea;align-items:baseline}
.pp-row:last-child{border-bottom:0}
.pp-label{font-size:13px;color:var(--muted);padding-top:2px}
.pp-value{font-size:14.5px;line-height:1.5;min-width:0;overflow-wrap:anywhere}.pp-value ul.plain{margin:0;padding-left:18px}
.pp-meta{display:flex;align-items:center;justify-content:flex-end;gap:10px;white-space:nowrap}
.pp-group{font:800 10.5px/1.3 system-ui,-apple-system,'Segoe UI',Arial,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);padding:14px 0 4px;border-bottom:1px solid var(--border)}
.pp-group:first-child{padding-top:2px}
.pp-none{font-style:italic}
.origin{display:inline-block;font-size:11.5px;font-weight:600;border-radius:10px;padding:2px 8px;border:1px solid var(--wait-line);background:var(--wait-bg);color:var(--wait)}
.origin.human{background:var(--done-bg);color:var(--done);border-color:var(--done-line)}
.origin.given{background:var(--ask-bg);color:var(--ask);border-color:var(--ask-line)}
.origin.work{background:var(--work-bg);color:var(--work);border-color:var(--work-line)}
.origin.none{background:#fff;color:var(--muted);border-style:dashed}
.warn-text{color:var(--work)}
.fq{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid #ececea}
.fq:last-of-type{border-bottom:0}
.fq-n{font-weight:800;font-size:18px;color:var(--accent);padding-top:1px}
.fq-text{font-size:15px;font-weight:600;margin:0 0 4px}.fq-body p.small{margin:2px 0;font-size:13px}
.table-wrap{overflow-x:auto;margin:8px 0}
.hyp-matrix,.src-registry{border-collapse:collapse;width:100%;font-size:13.5px;min-width:720px}
.hyp-matrix th,.src-registry th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;border-bottom:1px solid var(--border);padding:6px 10px 6px 0;vertical-align:bottom}
.hyp-matrix td,.src-registry td{border-bottom:1px solid #ececea;padding:8px 10px 8px 0;vertical-align:top;overflow-wrap:anywhere}
.hyp-matrix td.hq{font-weight:800;color:var(--accent);white-space:nowrap}
.hs{display:inline-block;font-size:12px;font-weight:600;border-radius:10px;padding:2px 8px;border:1px solid var(--wait-line);background:var(--wait-bg);color:var(--wait);white-space:nowrap}
.hs.ok{background:var(--done-bg);color:var(--done);border-color:var(--done-line)}.hs.bad{background:var(--pink);color:var(--accent-dark);border-color:#f0b5b5}.hs.now{background:var(--work-bg);color:var(--work);border-color:var(--work-line)}.hs.none{background:#fff;color:var(--muted);border-style:dashed}
.frame-add{margin-top:10px}.frame-add summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:14px}.frame-add label{font-weight:400;margin-top:8px}
.frame-said{list-style:none;padding:0;margin:0 0 10px}.frame-said li{padding:7px 0;border-bottom:1px solid #ececea;font-size:14px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.frame-said .dl{font-size:12px;font-weight:600;border-radius:10px;padding:1px 8px;margin-left:auto}
.frame-said .dl.ok{background:var(--done-bg);color:var(--done)}.frame-said .dl.now{background:var(--ask-bg);color:var(--ask)}.frame-said .dl.wait{background:var(--work-bg);color:var(--work)}
.frame-ask{border-left:3px solid var(--ask-line);padding:6px 12px;margin:10px 0;background:var(--soft);border-radius:0 6px 6px 0}.frame-ask p{margin:0 0 4px}
.frame-card{border:1px solid var(--border);border-left:4px solid var(--ask);border-radius:8px;padding:12px 16px;margin:10px 0 14px;background:#fff}
.frame-card.ok{border-left-color:var(--done)}.frame-card.warn{border-left-color:var(--work)}
.frame-card .work-answer-text{font-size:15px;font-weight:600;margin:4px 0}
label.check.frame-first{margin:0 6px;font-size:13px;color:var(--muted);align-items:center}
@media(max-width:700px){
  .pp-row{grid-template-columns:1fr;gap:2px}.pp-meta{flex-direction:row;align-items:center;justify-content:flex-start;gap:8px}
  .fq{grid-template-columns:36px minmax(0,1fr)}
  .frame-head .frame-question{font-size:18px}
  .frame-pick{margin-left:0;width:100%}.frame-pick select{max-width:100%;width:100%}
  .frame-said .dl{margin-left:0}
}
.stage-docs{margin-top:6px}
.stage-doc{max-height:70vh;overflow:auto;font-size:14px;line-height:1.5}
.stage-doc h3,.stage-doc h4{margin:14px 0 6px}
.stage-doc ul{margin:4px 0 4px 18px;padding:0}
.stage-doc li{margin:3px 0}
.stage-table{border-collapse:collapse;width:100%;font-size:13px;margin:6px 0 10px}.stage-table th,.stage-table td{border:1px solid var(--border);padding:4px 7px;text-align:left;vertical-align:top}.stage-table th{background:var(--soft)}
/* Путь человека схемой: шаг — плашка, трудность — красным курсивом, развилка — дорожки рядом. */
.jmap{margin:6px 0 12px;font-size:13px;line-height:1.35}.jstep{border:1px solid var(--ask-line);background:var(--ask-bg);border-radius:6px;padding:5px 9px}
.jwho{color:var(--muted)}.jrisk{color:var(--bad);font-style:italic}.jlegend{color:var(--muted);font-size:12px;margin:0 0 6px}.jarrow{text-align:center;color:#5f7896;font-size:11px;line-height:14px;margin:1px 0}
/* Граф поля: узлы по видам, по щелчку — только связи узла. */
.field-graph-box{margin:6px 0 4px;border:1px solid var(--border);border-radius:6px;background:#fff;overflow:auto;-webkit-overflow-scrolling:touch}.field-graph-box svg{display:block;max-width:100%;height:auto;margin:0 auto}
.field-graph-box .gedge.lbl-dup.hit{display:inline}
.field-graph-hint{display:none;margin:2px 0 4px}
/* На узком экране граф — в натуральную величину с прокруткой вбок: уменьшенный до ширины телефона
   он нечитаем; связи таблицей — под ним. */
@media (max-width:700px){.field-graph-box svg{max-width:none;margin:0}.field-graph-hint{display:block}}
.field-graph-box .gnode{cursor:pointer}.field-graph-box .gnode:focus{outline:none}.field-graph-box .gnode.on rect{stroke-width:3.2}.field-graph-box .dim{opacity:.14}
.jroute+.jroute{margin-top:12px;padding-top:10px;border-top:1px dashed var(--work-line)}.jroute-h{font-weight:600;color:var(--work);margin-bottom:6px}.jalso{color:var(--muted);font-size:12px;margin-top:2px}
.jfork{display:grid;gap:8px;align-items:start}.jfork-2{grid-template-columns:repeat(2,minmax(0,1fr))}.jfork-3{grid-template-columns:repeat(3,minmax(0,1fr))}.jfork-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:640px){.jfork-3,.jfork-4{grid-template-columns:repeat(2,minmax(0,1fr))}}.jlane-h{border:1px solid var(--work-line);background:var(--work-bg);color:var(--work);font-weight:600;text-align:center;border-radius:6px;padding:2px 6px;margin-bottom:4px}
.stage-ver{font-size:12px;margin-top:6px}
.stage-decide{margin-top:8px}
.stage-decide textarea{width:100%;box-sizing:border-box;font-size:13px}
/* По шагам: решение над обзором стадий, ещё не начатые стадии — короткой строкой. */
.work-stages.step .stages{align-items:flex-start}
.work-stages.step .stage.wait{flex:1 1 140px;min-height:0;padding:6px 8px}
.work-stages.step .stage.wait .stage-art{font-size:11px}
.stage-wait{margin:12px 0}
/* Работа по шагам: ряд шагов и «что сейчас» — одно место, куда смотреть. */
.step-panel{border-left:4px solid #b01722}
.stepper{list-style:none;margin:8px 0 14px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.step-cell{flex:1 1 170px;display:flex;gap:10px;align-items:flex-start;border:1px solid #e3e3e3;border-radius:8px;padding:10px 12px;background:#fbfbfb}
.step-cell .step-num{flex:0 0 26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;background:#e9e9e9;color:#666}
.step-cell.done{background:#f6fbf7;border-color:#cfe0d3}
.step-cell.done .step-num{background:#3a7d44;color:#fff}
.step-cell.now{background:#fff;border:2px solid #b01722}
.step-cell.now .step-num{background:#b01722;color:#fff}
.step-cell.wait{opacity:.6}
.step-now h3{margin:4px 0 8px;font-size:18px}
.linklike.small{font-size:12px;padding:0;border:0;background:none;color:#b01722;text-decoration:underline;cursor:pointer}
.step-cell.next{background:#fff;border:2px dashed #b01722;opacity:1}
.step-cell.next .step-num{background:#fff;color:#b01722;border:2px solid #b01722}
/* Длинные адреса и имена файлов переносятся, а не вылезают за край узкого экрана. */
.work-session,.step-panel,.stage-doc,.frame-ws,#modal-body{overflow-wrap:anywhere;word-break:break-word}
.work-session a,.work-session code{overflow-wrap:anywhere}
/* Состояния работы по шагам — свои цвета: ждёт вас, идёт, остановлена, согласовано. */
.tag.state-you{background:#fde8ea;color:#a0101a;border:1px solid #f3c2c6}
.tag.state-run{background:#fdf6ea;color:#8a5200;border:1px solid #f0d9a8}
.tag.state-stop{background:#efefed;color:#4a4a4a;border:1px solid #d9d9d9}
.tag.state-done{background:#eff8f2;color:#1a6f3c;border:1px solid #cfe6d6}
.step-cell.you{background:#fff;border:2px solid #b01722;opacity:1}
.step-cell.you .step-num{background:#b01722;color:#fff}
.step-cell.run{background:#fffaf1;border:2px solid #d9a54a;opacity:1}
.step-cell.run .step-num{background:#d9a54a;color:#fff;animation:step-pulse 1.6s ease-in-out infinite}
.step-cell.stop{background:#f3f3f1;border:2px solid #9a9a9a;opacity:1}
.step-cell.stop .step-num{background:#4a4a4a;color:#fff}
@keyframes step-pulse{50%{opacity:.45}}
.work-session .step-panel{margin-top:14px}
.step-now .stage-decide{max-width:860px}
.step-now .stage-decide textarea{min-height:64px}
/* Ссылки у каждого хода — тихие: красным остаётся только главное действие. */
.work-point .linklike{color:#6b6b6b;font-size:12.5px;padding:2px 0;min-height:0}
.work-point .linklike:hover{color:#b01722}
.work-point{gap:2px 16px}
/* Окно документа шага: одна прокрутка, удобная строка, служебное — тише. */
#modal .stage-doc{max-height:none;overflow:visible;max-width:72ch;font-size:15px;line-height:1.6}
#modal .stage-doc>p.doc-stamp{text-align:right}
#modal .stage-doc>p.doc-stamp,#modal .stage-doc>p.doc-stamp strong{font-weight:400}
#modal .stage-doc>p.doc-stamp>span{display:inline-block;padding:2px 10px;border:1px solid #d9d9d9;border-radius:4px;font-size:13px;color:#555}
#modal .stage-doc>p.doc-title em{font-style:normal;font-size:16px;font-weight:600}
#modal .stage-doc>p.doc-meta{font-size:13px;color:#6b6b6b;clear:both}
.doc-nav{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;margin:-4px 0 14px;font-size:13px}
.doc-versions{display:inline-flex;gap:4px;align-items:center;color:#6b6b6b}
.doc-versions button{min-height:0;padding:2px 10px;font-size:12px}
.doc-versions button.on{border-color:#b01722;color:#b01722;font-weight:600}
.doc-foot-actions{display:flex;gap:8px;margin-right:auto;flex-wrap:wrap}
/* Блок решения под документом на экране — кнопки решения в низу окна не повторяются. */
dialog.doc-modal.decide-in-view .doc-foot-main,dialog.doc-modal.decide-in-view .doc-note{display:none}
/* Почему подпись закрыта — своей строкой над кнопками, а не в ячейке размером с кнопку. */
.sign-why{flex:1 1 100%;grid-column:1/-1;align-self:center}
.doc-decide{margin-top:18px;padding-top:14px;border-top:1px solid #e3e3e3}
.doc-decide h3{font-size:15px;margin:0 0 8px}
@media(max-width:700px){
  .stepper{gap:4px}
  .step-cell{flex:1 1 100%;padding:6px 10px;gap:8px}
  .step-cell .step-num{flex-basis:22px;height:22px;font-size:12px}
  .step-cell>div{display:flex;flex-wrap:wrap;gap:0 8px;align-items:baseline}
  .step-now h3{font-size:16px}
  .work-session .panel-header h2{font-size:17px}
  .step-now .stage-decide .actions{flex-direction:column;align-items:stretch}
  .step-now .stage-decide .actions button{width:100%}
  .work-checks table.card thead{display:none}
  .work-checks table.card tr,.work-checks table.card td{display:block}
  .work-checks table.card tr{padding:8px 0;border-bottom:1px solid #ececea}
  #modal .stage-doc{font-size:14px}
}
.desk-v05 .work-session .work-point .linklike,.work-session .work-point button.linklike{color:#6b6b6b;font-size:12.5px;padding:2px 0;min-height:0}
.desk-v05 .work-session .work-point .linklike:hover{color:#b01722}
#modal .stage-doc>p:nth-child(2) em{font-weight:500;font-size:15px;color:#333;line-height:1.5}
/* Левое меню: название задачи — в две строки (текущей — в три), полное — в подсказке;
   «найдено работой» и «Материалы →» — одной строкой; низ меню — компактной строкой. */
.desk-v05 .project-list button{display:block;flex-shrink:0;overflow:hidden;font-size:13px;line-height:1.35;padding:7px 10px;text-align:left;min-height:0}
.desk-v05 .project-list .project-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.desk-v05 .project-list button.selected .project-title{-webkit-line-clamp:3}
.desk-files-divider{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.desk-files-divider .linklike{white-space:nowrap;padding:0;min-height:0}
.desk-v05 .side-bottom{flex-direction:row;flex-wrap:wrap;align-items:center;gap:2px 14px}
#desk-table{padding-bottom:28px}
.desk-v05 .side-bottom>button,.desk-v05 .side-bottom>details{width:auto;flex:0 0 auto;margin:0}
.desk-v05 .side-bottom>details[open]{flex-basis:100%}
.desk-files li>.linklike{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.desk-v05 .side-bottom{padding:8px 12px;gap:2px 8px}
/* Второй круг: остановка — «ваш ход» янтарём; ячейка с документом открывается целиком;
   без тройной вложенности рамок; навигация по шагам в окне документа. */
/* Цвета состояний на всё приложение: красный — ждёт вас (и остановленная работа: её продолжает
   человек), янтарь — идёт сама, зелёный — готово или согласовано. */
.tag.state-stop{background:#fde8ea;color:#a0101a;border:1px solid #f3c2c6}
.step-cell.stop{background:#fff;border:2px solid #b01722}
.step-cell.stop .step-num{background:#b01722;color:#fff}
.step-cell .nw{white-space:nowrap}
.step-cell.has-doc{cursor:pointer}
.step-cell.has-doc:hover{border-color:#b01722}
.work-session .step-panel{border:0;padding:0;box-shadow:none;background:transparent}
.work-session .eyebrow,.frame-ws .eyebrow{color:#6b6b6b}
.doc-nav{justify-content:space-between;border-bottom:1px solid #eee;padding-bottom:8px}
.doc-vers-row{margin:-6px 0 12px;font-size:13px}

@media(max-width:700px){
  .desk-v05 #new-project{background:#fff;color:#b01722;border:1px solid #e3e3e3}
  .step-cell.you .linklike{display:none}
}
.step-cell .step-doc{color:#b01722;text-decoration:underline}
.work-moves .moves-sep{list-style:none;margin:16px 0 6px;padding:6px 0;border-bottom:1px solid #e3e3e3;font-size:13px;color:#444}
.work-moves .moves-sep:first-child{margin-top:4px}
.work-moves .moves-sep .linklike{font-size:12.5px}
.tab-badge{display:inline-block;margin-left:6px;padding:0 6px;border-radius:9px;background:#fde8ea;color:#a0101a;font-size:11px;font-weight:600}
.tab-badge.run{background:#fff4e0;color:#8a5a00}
.tab-badge.run::before{content:'';display:inline-block;width:6px;height:6px;margin-right:4px;border-radius:50%;background:#d98a00;vertical-align:middle;animation:step-pulse 1.4s ease-in-out infinite}

.stage-diff{font-size:14px;line-height:1.55;max-width:80ch}
.stage-diff .diff-add{background:#eaf6ee;border-left:3px solid #3a7d44;padding:3px 8px;margin:2px 0}
.stage-diff .diff-del{background:#fbeaea;border-left:3px solid #b01722;padding:3px 8px;margin:2px 0;text-decoration:line-through;color:#7a2a2a}
.stage-diff .diff-same{color:#8a8a8a;font-size:12.5px;padding:2px 8px;font-style:italic}
.stage-comment-hint{display:block;margin:6px 0 4px}
.stage-comment-hint .linklike{font-size:inherit;padding:0;min-height:0}

/* Одна красная кнопка на экран — решение шага. Остальное красным не спорит с ним. */
#new-project:not(.primary){background:#fff;color:var(--accent-dark);border:1px solid #e3e3e3}
.desk-files li>.linklike.desk-method{color:var(--muted)}
.desk-files li:hover>.linklike.desk-method,.desk-files li>.linklike.desk-method:focus{color:var(--accent)}
.desk-v05 .desk-map .linklike{color:#555}
.desk-v05 .desk-map .linklike:hover,.desk-v05 .desk-map .linklike:focus{color:var(--accent-dark)}
.stage-comment-hint{font-weight:400;color:var(--muted)}
.stage-decide>.actions+.actions,.doc-decide .actions+.actions{margin-top:12px}
/* Имя файла не рвётся на отдельный «!» и посреди слова без нужды. */
.desk-files li>.linklike{overflow-wrap:anywhere;word-break:normal}
#start-panel.busy>h2,#start-panel.busy>#start-question,#start-panel.busy>details.more{display:none}
#start-panel.busy{padding-top:12px;padding-bottom:12px}
/* Окно документа — один лист: текст на всю ширину окна, без пустой полосы справа. */
#modal:has(.stage-doc){width:min(780px,calc(100vw - 32px))}
#modal .stage-doc{max-width:none}
.doc-versions{gap:6px;flex-wrap:wrap}
.doc-versions button{min-height:30px;padding:3px 12px;font-size:13px}
.doc-versions button.on{background:#212121;color:#fff;border-color:#212121}
.doc-ok{color:var(--done,#1b6e3a);font-size:12px;margin-left:4px;white-space:nowrap}
#modal .stage-doc>p.doc-stamp>span{text-transform:none;letter-spacing:0;font-size:13px}
/* Вкладки задачи — один ряд, выбранная подчёркнута; метка «ждёт вас» не двигает соседей. */
.desk-tabs{display:flex;gap:6px;margin-left:auto;margin-right:8px;align-items:center}
.desk-tabs .desk-go-work{margin:0}
.desk-tabs .desk-go-work.on{border-color:var(--accent-dark);color:var(--accent-dark);font-weight:600;box-shadow:inset 0 -3px 0 var(--accent-dark)}
.desk-brief{font-size:12px;margin-right:8px;white-space:nowrap}
@media (max-width:700px){
  .desk-v05 .desk-task-header .desk-tabs{order:3;width:100%;margin:6px 0 0}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work{flex:1;text-align:center;font-size:13px;padding:7px 4px}
}
#modal-title:focus{outline:none}
@media (max-width:700px){
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work{white-space:normal;min-width:0;line-height:1.25}
  .desk-v05 .desk-task-header .desk-tabs .tab-badge{display:block;margin:2px auto 0;width:max-content}
}
@media (max-width:700px){
  /* Шапка задачи на телефоне: название — строкой, «Поручение» и «⋯» — одной строкой, вкладки — ниже. */
  .desk-v05 .desk-task-header{flex-wrap:wrap}
  .desk-v05 .desk-task-header>div:first-child{flex-basis:100%}
  .desk-v05 .desk-task-header .desk-brief{order:1;margin:0}
  .desk-v05 .desk-task-header .desk-project-menu{order:2;margin-left:auto}
}
/* Редкое действие при открытой задаче — тихой строкой, не второй кнопкой сверху. */
#import-capsule.quiet{border:0;background:transparent;color:var(--muted);text-align:left;font-size:12px;padding:0 13px;min-height:0;margin-bottom:12px}
#import-capsule.quiet:hover{color:var(--accent-dark)}
/* Развилка решения шага: «всё верно» и «нужно поправить» рядом, на узком — «всё верно» первым. */
.stage-fork{display:grid;grid-template-columns:1fr;gap:14px;margin-top:10px}
.stage-fork .fork-h{font-weight:600;font-size:13px;margin-bottom:6px}
.stage-fork .fork-ok,.stage-fork .fork-fix{border:1px solid #e3e3e3;border-radius:8px;padding:12px 14px;background:#fff}
.stage-fork .fork-ok{border-color:#e0a3a8;background:#fffafa}
.stage-fork .fork-ok p{margin:8px 0 0}
.stage-fork .fork-fix .actions{margin-top:8px}
@media (min-width:900px){.step-now .stage-fork{grid-template-columns:minmax(240px,1fr) 2fr;align-items:start}}
/* Место под метку на вкладке работы занято всегда: ряд вкладок не сдвигается, когда метка
   появляется или пропадает. На телефоне вкладки одной высоты. */
@media (max-width:700px){.desk-v05 .desk-task-header .desk-tabs .desk-go-work{min-height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center}}
/* Окно документа: кнопки низа не ломаются по буквам; на телефоне — главная строкой на всю
   ширину, остальные — одной строкой под ней, «Закрыть» — значком в углу. */
dialog .modal-foot button{white-space:nowrap;flex-shrink:0}
.doc-x{display:none}
@media (max-width:700px){
  dialog.doc-modal .doc-x{display:block;position:sticky;top:0;margin:-6px -6px 0 auto;float:right;border:0;background:#fff;font-size:20px;line-height:1;min-height:0;padding:6px 10px;z-index:3}
  dialog.doc-modal #modal-cancel{display:none}
  dialog.doc-modal .modal-foot{flex-wrap:wrap}
  dialog.doc-modal .doc-foot-actions{flex:1 1 100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin:0}
  dialog.doc-modal .doc-foot-main{grid-column:1/-1}
  dialog.doc-modal .doc-foot-actions button{white-space:normal;padding:8px 6px;font-size:13px}
  #modal .stage-doc>p.doc-stamp>span{font-size:12px}
}
#modal .stage-doc h5{font-size:14px;margin:16px 0 4px;color:#333}
.board-more{margin:10px 0 0;padding:0 4px}
.board-more .linklike{color:#555}
.notice.done{background:#eff8f2;border-color:#cfe6d6}
.step-state .actions{margin:8px 0 4px}
.step-state p.small{margin:6px 0 0}
.frame-term ol.readings{margin:4px 0 6px 20px;padding:0}
.frame-term ol.readings li{margin:2px 0}
.src-registry th{white-space:nowrap}
.frame-ws table td{word-break:normal;overflow-wrap:break-word}
#modal .stage-doc>p:nth-child(2) em{font-size:14px;font-weight:400;color:#555}
.doc-vers-row{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
/* Левое меню: имя файла — строкой с многоточием (полное — в подсказке); «Взять требования из
   методики» — только у файла под рукой: одиннадцать одинаковых строк были главным шумом слева. */
.desk-files li>.linklike:not(.desk-method){display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.desk-files li>.desk-method{display:none}
.desk-files li:is(:hover,:focus-within)>.desk-method{display:inline-block}
.doc-ok{color:#1a6f3c}
.frame-state.ok{color:#1a6f3c}
.tag.done,.tag.ok{background:#eff8f2;color:#1a6f3c;border-color:#cfe6d6}
@media (max-width:700px){
  /* Телефон: «Новая задача» при открытой задаче — в меню ☰; у пройденных и будущих шагов —
     только название и ✓, подробности — у текущего. «Согласовать» ближе к первому экрану. */
  .desk-v05 .side:not(.open) #new-project:not(.primary){display:none}
  .step-cell.done>div>.small:not(.step-doc),.step-cell.wait>div>.small{display:none}
  .step-cell.done,.step-cell.wait{padding-top:6px;padding-bottom:6px}
}
/* Раскрывающиеся блоки ленты — одного вида: рамка, как у «Чего данные не дают». */
.work-session>details.work-steps,.work-session>details.work-about{border:1px solid var(--border,#d9d9d9);border-radius:8px;padding:4px 14px;margin:10px 0}
/* Вкладки задачи — вкладками, а не кнопками в рамках: выбранная подчёркнута по низу шапки. */
@media (min-width:701px){
  .desk-tabs{align-self:stretch;gap:2px}
  .desk-tabs .desk-go-work{border:0;border-radius:0;background:transparent;color:var(--muted);padding:0 12px;font-size:13px;height:100%}
  .desk-tabs .desk-go-work:hover{color:var(--ink)}
  .desk-tabs .desk-go-work.on{color:var(--ink);font-weight:700;box-shadow:inset 0 -3px 0 var(--accent)}
}
/* Таблицы ленты не рвут слова по буквам; выписка с расхождением — обычным цветом, красное —
   только слово «Расхождение»; пауза задачи — серой плашкой: ничего не идёт. */
.work-session table.card td,.work-session table.card th,.stage-doc table td{word-break:normal;overflow-wrap:break-word}
.work-checks table.card td:last-child{white-space:nowrap;width:1%}
.work-check.no{color:var(--ink)}
.notice.paused{background:#f3f3f1;border-color:#9a9a9a}
#modal .stage-doc h5{font-size:13px;font-weight:700;color:#1c1c1c;border-bottom:1px solid #e3e3e3;padding-bottom:4px;margin:22px 0 8px}
@media (max-width:700px){
  /* Вкладки задачи на телефоне — вкладками: главная навигация не слабее нижнего ряда. */
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work{border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;color:var(--muted);box-shadow:none}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work.on{border-bottom-color:var(--accent);color:var(--ink);font-weight:700}
  .desk-pane-tabs button[aria-pressed=true]{color:var(--ink);border-color:#9a9a9a}
  /* Окно документа: заголовок с ✕ закреплён сверху и не закрывает текст. */
  dialog.doc-modal #modal-title{position:sticky;top:-18px;background:#fff;z-index:3;margin:-18px -18px 8px;padding:14px 48px 10px 18px;border-bottom:1px solid #eee}
  dialog.doc-modal .doc-x{display:block;position:absolute;right:8px;top:50%;transform:translateY(-50%);float:none;margin:0;border:0;background:transparent;font-size:20px;line-height:1;min-height:0;padding:6px 10px}
  dialog.doc-modal .doc-foot-actions{grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}
  dialog.doc-modal .doc-foot-actions button{white-space:nowrap}
  #modal .stage-doc>p.doc-stamp>span{white-space:nowrap;font-size:11px}
}
/* Красный — только решение шага: остальное серым или чёрным. */
.step-cell.done .step-doc{color:var(--ink)}
.desk-v05 .eyebrow{color:var(--muted)}
.desk-v05 .work-session .linklike{color:#555}
.desk-v05 .work-session .linklike:hover{color:var(--accent-dark)}
.pp-group{color:var(--muted)}
.stage-fork .fork-ok{border-color:#e3e3e3;background:#fff}
.step-now .stage-decide{max-width:none}
.stage-fork{align-items:stretch}
.tab-badge.none{visibility:hidden}
.tab-badge{min-width:52px;text-align:center}
@media (min-width:701px){
  .desk-tabs .desk-go-work.on{box-shadow:none;position:relative}
  .desk-tabs .desk-go-work.on::after{content:'';position:absolute;left:12px;right:12px;bottom:0;height:3px;background:var(--accent)}
  .desk-brief{margin-left:12px;padding-left:16px;border-left:1px solid #e3e3e3;color:var(--muted)}
}
.desk-task-header>div>.small{font-size:12px}

/* На сенсорном экране наведения нет: ссылка методики у файлов видна всегда. */
@media (hover:none){.desk-files li>.desk-method{display:inline-block}}

/* Реестр источников на «Постановке»: ширина столбцов по смыслу, а не по случайному содержимому. */
.src-registry{table-layout:fixed}
.src-registry th:nth-child(1){width:24%}
.src-registry th:nth-child(2),.src-registry th:nth-child(4){width:32%}
.src-registry th:nth-child(3){width:12%}
.src-registry td:nth-child(3){overflow-wrap:anywhere}

/* Шаг в ячейке «Ответ» открывается, как документ шага. */
.step-cell.has-doc[data-goto-answer]{cursor:pointer}
.received-stage-documents .step-cell{text-align:left;color:var(--ink);min-width:180px}
.received-stage-documents .step-cell>div{display:flex;flex-direction:column;gap:4px;min-width:0;align-items:flex-start}
.received-stage-documents .step-cell strong,.received-stage-documents .step-cell .small{display:block}
.received-stage-documents .step-cell .step-doc{color:var(--muted)}
.fork-fix textarea{width:100%;margin:6px 0}
.fork-fix label.inline{display:flex;gap:6px;align-items:flex-start;margin:2px 0 6px}

@media (max-width:700px){
  /* Финиш на телефоне: развилка сразу под заголовком, документы — под ней. */
  .step-now:has(>.stage-fork){display:flex;flex-direction:column}
  .step-now:has(>.stage-fork)>h3{order:1}
  .step-now:has(>.stage-fork)>p{order:2}
  .step-now:has(>.stage-fork)>.stage-fork{order:3}
  .step-now:has(>.stage-fork)>.actions{order:4}
  /* Главная кнопка не уже соседних: на узком экране вес задаёт ширина. */
  .step-now .actions button,.stage-fork button{width:100%}
  /* Низ окна документа: главная кнопка строкой, остальные — одним рядом. */
  dialog.doc-modal .doc-foot-actions{grid-template-columns:repeat(3,1fr)}
  dialog.doc-modal .doc-foot-actions button{white-space:normal;padding:8px 4px}
}
/* «Не заданы: …» после согласования паспорта — перечень ссылками, без полей кнопок у запятых. */
.pp-unsaid .pp-value .linklike{padding:0;margin:0;min-height:0;border:0;font-size:inherit;color:var(--muted);text-decoration:underline dotted;text-underline-offset:3px}
.pp-unsaid .pp-value .linklike:hover{color:var(--accent)}

/* «Добавить свою гипотезу» — не главное действие: чёрным, как остальные свёртки. */
.frame-add summary{color:var(--ink)}
@media (max-width:700px){
  /* Флажки — под палец. Над развилкой финиша — зазор от кнопок документа. */
  input[type=checkbox]{width:18px;height:18px}
  .step-now .stage-fork{margin-top:12px}
}

/* Способ работы и сохранённое основание используют ту же ширину на узком экране. */
.scenario-picker{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;font-size:.9rem}.scenario-picker select{max-width:100%;min-width:0;width:auto}.work-method{margin:.2rem 0 1rem}.work-foundation{margin-top:.65rem}.work-foundation li p{margin:.35rem 0}.work-foundation li{margin-bottom:.9rem}@media(max-width:640px){.scenario-picker{width:100%}.scenario-picker select{flex:1;min-width:10rem}.work-foundation summary{overflow-wrap:anywhere}}

.scenario-choice{flex:1 1 320px;min-width:0;max-width:100%}
.scenario-choice .helptext{margin:6px 0 0}

/* Выбор подхода и согласование этапов предшествуют запуску и имеют свои пояснения. */
.welcome-card{max-width:1000px}
.welcome-card .welcome-input-actions{margin:0 0 22px;gap:12px}
.welcome-setup{border-top:1px solid #e6e6e3;padding:22px 0 0}
.welcome-setup h3{font-size:18px;letter-spacing:-.2px;margin:0 0 16px}
.scenario-options{border:0;padding:0;margin:0;min-width:0}
.scenario-options legend{padding:0;font-size:14px;font-weight:600;margin-bottom:4px}
.setup-help{font-size:13px;line-height:1.5;color:var(--muted);margin:0}
.scenario-options>.setup-help{margin:0 0 12px;max-width:680px}
.scenario-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.welcome-card label.scenario-card{display:grid;grid-template-columns:18px minmax(0,1fr);gap:10px;align-items:start;padding:13px 15px;border:1px solid #d9dedf;border-radius:8px;background:#fff;cursor:pointer;font-weight:400;margin:0;transition:background .12s,border-color .12s}
.scenario-card:hover{background:#f8f9fa;border-color:#a9b5bf}
.welcome-card label.scenario-card.selected{border-color:#63829a;background:#f2f6f9;box-shadow:inset 0 0 0 1px #63829a}
.scenario-card input[type=radio]{width:16px;height:16px;padding:0;margin:3px 0 0;accent-color:#345c7c;flex:none}
.scenario-card-title{display:block;font-size:14px;font-weight:600;margin-bottom:3px}
.scenario-card-summary{display:block;font-size:12.5px;line-height:1.5;color:var(--muted)}
.stage-choice{margin:18px 0 0;padding:15px 17px;border:1px solid #e1e3e3;border-radius:8px;background:#f8f8f6}
.welcome-card .stage-choice label.frame-first{margin:0;gap:10px;font-size:14px;font-weight:600;color:var(--ink);align-items:start;cursor:pointer}
.stage-choice input[type=checkbox]{margin:3px 0 0;width:16px;height:16px;accent-color:#345c7c;flex:none}
.stage-choice>.setup-help{margin:6px 0 0 26px;max-width:720px}
.welcome-start{display:flex;align-items:center;gap:18px;flex-wrap:wrap;border-top:1px solid #e6e6e3;margin:22px 0 0;padding:18px 0 4px}
.welcome-start>button{font-size:14px;font-weight:600;min-height:44px;padding:10px 22px}
.welcome-start>.setup-help{max-width:420px}
@media(max-width:720px){
  .welcome-card .welcome-input-actions{gap:8px;margin-bottom:18px}
  .welcome-setup{padding-top:18px}
  .welcome-setup h3{font-size:17px;margin-bottom:14px}
  .scenario-cards{grid-template-columns:1fr;gap:8px}
  .welcome-card label.scenario-card{padding:12px;gap:9px}
  .stage-choice{padding:13px;margin-top:14px}
  .welcome-start{align-items:stretch;gap:10px;padding-top:16px;margin-top:18px}
  .welcome-start>button{width:100%}
  .welcome-start>.setup-help{width:100%;text-align:center}
}

/* Окно действия: та же иерархия на старте, в исследовании и при передаче. */
dialog:not(.doc-modal){width:min(760px,calc(100vw - 32px));border-top:1px solid var(--border);border-radius:12px;box-shadow:0 18px 64px #15202b30}
dialog #modal-title{font-size:22px;line-height:1.3;margin-bottom:18px;letter-spacing:-.01em}
dialog .modal-content>label,dialog .modal-content>.field,dialog .modal-content>.field-row{margin-bottom:16px}
dialog .modal-content label{font-size:14px;line-height:1.4}
dialog .modal-content label>input:not([type=checkbox]):not([type=radio]),dialog .modal-content label>select,dialog .modal-content label>textarea{margin:7px 0 0;font-weight:400;min-height:42px}
dialog .modal-content label>textarea{min-height:92px}
dialog .modal-content>.modal-lead{font-size:14px;color:var(--muted);line-height:1.55;margin-bottom:20px}
dialog .modal-foot{gap:10px;align-items:center;flex-wrap:wrap}
dialog .modal-foot button{min-height:42px;max-width:100%;white-space:normal}
dialog input:focus,dialog textarea:focus,dialog select:focus{border-color:var(--focus);outline:none;box-shadow:0 0 0 3px #1d4f9115}
dialog :focus-visible{outline:2px solid var(--focus);outline-offset:2px}
dialog input[type=checkbox],dialog input[type=radio]{accent-color:var(--ask)}
.goal-examples{padding:16px;background:#f7f8f9;border:1px solid #e0e3e6;border-radius:8px;margin:20px 0}
.goal-examples.over{border-color:var(--ask);background:var(--ask-bg)}
.goal-examples-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.goal-examples-head h3{margin:0;font-size:16px}.goal-examples-head button{font-size:13px;min-height:38px}
.goal-examples .helptext{margin:10px 0 14px;line-height:1.5}
.goal-file-empty{font-size:13px;color:var(--muted);padding:12px 0;margin:0 0 10px;border-top:1px solid #e2e5e8}
.goal-file-list{max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.goal-file{display:flex;align-items:center;gap:8px;padding:10px;background:#fff;border:1px solid #e0e3e6;border-radius:6px;min-width:0}
.goal-file label{display:flex;gap:10px;align-items:flex-start;flex:1;min-width:0}.goal-file label input{flex:none;margin:4px 0 0}
.goal-file label span{min-width:0;overflow-wrap:anywhere}.goal-file strong{font-size:13px;font-weight:600}.goal-file small{display:block;font-size:12px;color:var(--muted);margin-top:3px}
.goal-file button{flex:none;border:0;background:transparent;color:var(--muted)}
.goal-more summary{font-size:14px;font-weight:600;cursor:pointer}.goal-more .field-row{margin-top:14px}
.goal-scope{font-size:12px;line-height:1.5;margin:16px 0 0;color:var(--muted)}
.quick-result-summary{font-size:13px;color:var(--muted);margin:12px 0 0}.start-retry p{margin:8px 0}.start-retry button{margin-top:6px}
@media(max-width:640px){
  dialog:not(.doc-modal){width:calc(100vw - 20px);padding:18px}
  dialog #modal-title{font-size:20px;margin-bottom:16px}
  dialog .modal-content .field-row{grid-template-columns:1fr;gap:14px}
  dialog .modal-foot{justify-content:stretch;gap:8px}
  dialog .modal-foot button{flex:1;font-size:13px;padding:10px;min-width:0}
  .goal-examples{padding:12px;margin:18px 0}.goal-examples-head{gap:10px}.goal-examples-head button{width:100%}
  .goal-file-list{max-height:180px}
}

.goal-current{margin:12px 0 0;font-size:13px;line-height:1.5}.goal-current dt{font-weight:600;margin-top:8px}.goal-current dd{margin:2px 0;overflow-wrap:anywhere}
#pending-user-actions{position:fixed;bottom:1rem;right:1rem;z-index:90;max-width:min(36rem,calc(100vw - 2rem));background:var(--paper,#fff);box-shadow:0 2px 14px #0003;padding:1rem}
#pending-user-actions[hidden]{display:none}
.prepared-files{margin-bottom:20px}.prepared-file-list{list-style:none;padding:0;margin:12px 0}.prepared-file-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line,#ddd)}.prepared-file-list li>div{min-width:0}.prepared-file-list strong{display:block;overflow-wrap:anywhere}.prepared-file-list .muted{display:block;margin-top:4px}.prepared-file-list button{flex-shrink:0}.prepared-file-history{margin-top:12px}.prepared-file-history summary{cursor:pointer}
/* Итерация вида 1. Стол задачи до начала работы: вопрос → как будет идти работа → кнопки. */
.start-setup{display:grid;gap:12px;margin:18px 0 4px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:#fafaf8}
.start-setup .scenario-choice{display:grid;gap:4px;margin:0}
.start-setup .scenario-picker{display:grid;grid-template-columns:auto minmax(12rem,24rem);align-items:center;justify-content:start;gap:12px;width:auto}
.start-setup .scenario-picker>span{font-weight:600}
.start-setup .scenario-picker select{width:100%;min-width:0}
.start-setup .helptext{margin:0;color:var(--muted)}
.start-setup .frame-first{margin:0}
@media (max-width:640px){.start-setup{padding:12px}.start-setup .scenario-picker{grid-template-columns:1fr;gap:6px}}
/* Стол: файлы плотнее, источник читается строкой, а не красной ссылкой-тревогой. */
.desk-files li{padding:8px 4px}
.desk-sources .tbl-list li>a{color:var(--text,#212121);text-decoration:underline;text-decoration-color:#bdbdbd;text-underline-offset:2px}
.desk-sources .tbl-list li>a:hover{color:var(--accent)}
.desk-sources .tbl-list li>button.icon{font-size:12px;padding:2px 8px;min-height:24px}
/* «Постановка»: пояснение отделено от кнопок. */
.frame-note{margin-top:12px}
/* Плашка фонового действия — под шапкой справа, не поверх полей ввода внизу. */
#pending-user-actions{top:64px;bottom:auto;right:16px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px}
#pending-user-actions>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media (max-width:640px){#pending-user-actions{top:auto;bottom:0;left:0;right:0;max-width:none;border-radius:0}}
/* Итерация вида 2. «Материалы»: рисунок — превью, а не полотно во всю ширину. */
.mat-pic{max-width:420px}
.mat-pic>img{width:100%;height:auto;max-height:280px;object-fit:contain}
/* «Агенты»: общий выбор исполнителя отделён от моделей ролей. */
.executor-controls{margin:0 0 20px;padding-bottom:18px;border-bottom:1px solid var(--border)}
.executor-controls-h{margin:0 0 12px;font-size:17px}
.agent-kind .kind-line{margin-top:4px}
/* Итерация вида 3. Вкладка работы: начать работу — тем же блоком, что на столе задачи. */
.start-work .start-setup{margin-top:0}
.start-work .actions{flex-direction:column;align-items:flex-start;gap:8px;margin-top:14px}
.start-work .actions .hint{display:block;max-width:62em;color:var(--muted);font-size:13px;line-height:1.5}
/* Ввод текста: диктовка у каждого поля, файл — у полей задачи (composer.js). Кнопки — в правом
   верхнем углу поля, одинаково на всех экранах; текст их не заходит под них. */
.with-mic textarea{padding-right:12px}
.composer{position:relative;display:block}
.composer>textarea{display:block;width:100%;padding-right:46px}
.composer.with-files>textarea{padding-right:82px}
.composer-tools{position:absolute;top:7px;right:7px;display:flex;gap:6px;z-index:1}
.composer .composer-tools .composer-btn{width:30px;height:30px;min-height:0;min-width:0;padding:0;margin:0;border-radius:50%;border:1px solid var(--border);background:#fff;display:inline-flex;align-items:center;justify-content:center;color:#626262;box-shadow:none}
.composer .composer-tools .composer-btn svg{width:16px;height:16px;fill:currentColor}
.composer .composer-tools .composer-btn:hover,.composer .composer-tools .composer-btn:focus-visible{color:var(--accent);border-color:var(--accent)}
.composer .composer-tools .composer-mic.off{opacity:.5}
.composer .composer-tools .composer-mic.listening{background:#fde8ea;border-color:var(--accent);color:var(--accent);animation:pulse 1s infinite}
.composer .composer-tools .composer-btn.busy{opacity:.5;cursor:progress}
.composer.over>textarea{border-color:var(--accent);background:#fff8f8;outline:2px dashed var(--accent);outline-offset:-5px}
dialog .modal-content label>.composer>textarea{min-height:92px}
/* «Распознавание речи»: адрес и ключ — во всю ширину, модель и язык — рядом. */
.transcription-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,12rem) minmax(0,6rem);gap:12px 14px;margin:14px 0 6px}
.transcription-grid label{display:grid;gap:6px;margin:0}
.transcription-grid .tr-url{grid-column:1}
.transcription-grid .tr-key{grid-column:1 / -1}
@media (max-width:640px){.transcription-grid{grid-template-columns:1fr 1fr}.transcription-grid .tr-url,.transcription-grid .tr-key{grid-column:1 / -1}}
/* Итерация вида 5. Внутри панели способ работы — без второй рамки. */
.start-work .start-setup{border:0;background:none;padding:0}
/* Телефон: подписи вкладок шапки на одной высоте — метка работы в углу кнопки, а не строкой
   под текстом; скрытая метка места не занимает. Зоны стола — переключателем, а не вторым
   рядом вкладок того же вида. */
@media (max-width:700px){
  /* Метка работы на вкладке — точкой в углу: слово «идёт» на узкой вкладке наезжало на подпись. */
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work{position:relative}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work .tab-badge{position:absolute;top:6px;right:6px;margin:0;min-width:0;width:8px;height:8px;padding:0;border-radius:50%;font-size:0;line-height:0;overflow:hidden;background:var(--accent)}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work .tab-badge.run{background:#d98a00}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work .tab-badge.run::before{display:none}
  .desk-v05 .desk-task-header .desk-tabs .desk-go-work .tab-badge.none{display:none}
}
@media (max-width:900px){
  .desk-pane-tabs{gap:4px;padding:8px 12px;border-bottom:1px solid #e3e3e3}
  .desk-pane-tabs button{border:0;border-radius:8px;padding:7px 8px;background:#f2f2f0;color:#555}
  .desk-pane-tabs button[aria-pressed=true]{background:#fff;color:var(--ink,#212121);box-shadow:0 0 0 1px #cfcfcf;border:0}
}
/* Итерация вида 6. «Отправить» с набранным текстом — рамкой, не второй красной заливкой. */
#talk-send.ready{border-color:var(--accent);color:var(--accent)}
/* Итерация вида 6 — ровность. Ссылки-действия выглядят ссылками и стоят вровень с текстом
   (без отступа слева); один цвет выбора на всех экранах — сине-серый, красный остаётся
   сигналом главного действия. */
.desk-v05 .linklike{color:#345c7c;padding-left:0;padding-right:0}
.desk-v05 .linklike:hover,.desk-v05 .linklike:focus-visible{text-decoration:underline;text-underline-offset:2px}
input[type=checkbox],input[type=radio]{accent-color:#345c7c}
.inline.choice input[type=radio],.inline.choice input[type=checkbox],label.check input[type=checkbox]{flex:none;width:16px;height:16px;margin-top:3px}
.kind-switch button.on{background:#eef3f7;color:#345c7c}
.chip.on{background:#eef3f7;border-color:#345c7c;color:#345c7c}
.history .row:before{background:#9a9a9a}
/* Ряды кнопок и подсказки под ними — с одинаковым зазором. */
.actions+.actions{margin-top:10px}
.actions+.hint,.actions+p.small,.actions+p.helptext{margin-top:10px}
/* Навигация окна документа: середина строго по центру. */
.doc-nav{display:grid;grid-template-columns:1fr auto 1fr}
.doc-nav>span:last-child{text-align:right}
/* Таблица гипотез: заголовки не ломаются посреди слова. */
.hyp-matrix th{white-space:nowrap}
@media (max-width:700px){#talk-text{min-height:84px}}
/* Надиктованное, которому не нашлось поля: карточка внизу справа, выше полосы всплывающих
   сообщений — они её не закрывают. На широком экране поля ввода вверху остаются открыты; на
   узком карточка — полосой внизу и закрывает нижнюю часть экрана, пока её не закроют. */
.late-text{position:fixed;right:16px;bottom:150px;z-index:60;width:min(420px,calc(100vw - 32px));background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.14);padding:14px 16px}
.late-text h3{margin:0 0 4px;font-size:15px}
.late-text .late-body{margin:8px 0 10px;max-height:min(30vh,320px);overflow:auto;white-space:pre-wrap;border:1px solid var(--border);border-radius:4px;padding:8px 10px;font-size:14px;line-height:1.45;user-select:text}
.late-text .actions{align-items:center}
/* Низ окна документа шага: главная выгрузка и «Другие форматы» — меню вверх от кнопки. */
.doc-more{position:relative}
.doc-more>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border:1px solid var(--border);border-radius:4px;background:#fff;font-size:14px;white-space:nowrap}
.doc-more>summary::-webkit-details-marker{display:none}
.doc-more>summary::after{content:"▾";margin-left:6px;font-size:11px;color:#777}
.doc-more-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:5;display:flex;flex-direction:column;gap:6px;min-width:260px;padding:8px;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.12)}
.doc-more-menu button{justify-content:flex-start;text-align:left;white-space:nowrap}
@media (max-width:700px){.late-text{left:16px;right:16px;width:auto;bottom:96px}.late-text .late-body{max-height:24vh}}
/* Низ окна документа на узком экране: решение — на всю ширину, ниже ровный ряд; подписи не
   рвутся посреди слова; «Другие форматы» — того же вида, что соседние кнопки. */
@media (max-width:700px){
  dialog.doc-modal .doc-foot-actions{grid-template-columns:repeat(auto-fit,minmax(104px,1fr))}
  dialog.doc-modal .doc-foot-actions button,dialog.doc-modal .doc-more>summary{overflow-wrap:normal;word-break:normal;hyphens:manual;font-size:13px;font-weight:400;padding:8px 6px;justify-content:center;text-align:center;min-height:40px;height:100%}
  dialog.doc-modal .doc-more>summary{display:flex;align-items:center;white-space:normal}
  .doc-more-menu{left:auto;right:0}
}
.doc-more>summary{font-weight:400}
/* Добавление файлов — кнопкой и перетаскиванием, без системного поля выбора файла. */
.mat-add{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:14px;border:1px dashed var(--border);border-radius:6px;margin:6px 0 4px}
.mat-add.over{border-color:var(--accent);background:var(--pink)}
.file-pick{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:4px 0 12px}
/* «Обслуживание»: действия сгруппированы по смыслу. */
.service-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px 28px}
.service-groups h3{margin:0 0 4px;font-size:15px}
.service-groups .actions{margin-top:8px}
/* Шапка карты: счётчики — строкой, действия — отдельной строкой ссылок. */
.desk-map .map-counts{flex-direction:column;align-items:flex-end;gap:2px}
.desk-map .map-count-line{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;color:#555}
.desk-map .map-head-actions{display:flex;gap:4px 14px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:700px){.desk-map .map-counts{align-items:flex-start}.desk-map .map-head-actions{justify-content:flex-start}}
/* Переключатель зон стола на телефоне: выбранное — цветом выбора, как во всём приложении. */
@media (max-width:900px){
  .desk-pane-tabs button{background:transparent;color:#555}
  .desk-pane-tabs button[aria-pressed=true]{background:#eef3f7;color:#345c7c;box-shadow:0 0 0 1px #345c7c;font-weight:600}
}
/* Метки в шапке панели не переносятся по слогам. */
.panel-header .tag{white-space:nowrap}
/* Погашенное сообщение не занимает места и не видно, даже если текст не успели убрать. */
#toast:not(.visible){display:none}
/* Итерация вида 11. Одна краска для всех ссылок-действий: на карте, в работе, на столе и в
   «Агентах» прежние частные правила красили их серым (как текст) или красным (как главную
   кнопку). Размеры остаются свои. */
.desk-v05 .desk-map .linklike,.desk-v05 .work-session .linklike,.desk-v05 .work-session .work-point .linklike,.work-point .linklike,.board-more .linklike,.desk-made .linklike,.desk-files li>.linklike.desk-method,.desk-files li:hover>.linklike.desk-method,.linklike.small,.desk-v05 .agent-prompts .linklike,.agent-prompts .linklike,.desk-v05 .agent-source .linklike,.agent-source .linklike,.desk-v05 .linklike.note-open-work,.desk-v05 .linklike.find-note,.desk-v05 .linklike.find-gap{color:#345c7c}
.desk-v05 .desk-map .linklike:hover,.desk-v05 .work-session .linklike:hover,.work-point .linklike:hover,.desk-v05 .work-session .work-point .linklike:hover,.board-more .linklike:hover,.desk-made .linklike:hover,.linklike.small:hover,.agent-prompts .linklike:hover,.agent-source .linklike:hover{color:#24425a;text-decoration:underline;text-underline-offset:2px}
/* «Отправить» с набранным текстом — тёмной рамкой, не цветом главной кнопки. */
#talk-send.ready{border-color:#212121;color:#212121}
/* Колонки «Подключений» и «Обслуживания»: промежуток задаёт сетка, а не сумма отступов. */
.grid2>.panel,.provider-grid>.panel{margin-bottom:0}
.grid2,.provider-grid{margin-bottom:16px}
.reply-files .tag .linklike{margin-left:6px}
.reply-files:empty{display:none}
/* Плашка фонового действия — внизу слева от рабочей области: справа вверху она закрывала
   шапку правой колонки, справа внизу — место всплывающих сообщений. */
@media (min-width:1151px){#pending-user-actions{top:auto;bottom:16px;right:auto;left:244px}}
@media (min-width:901px) and (max-width:1150px){#pending-user-actions{top:auto;bottom:16px;right:auto;left:216px}}
@media (min-width:641px) and (max-width:900px){#pending-user-actions{top:auto;bottom:16px;right:auto;left:16px}}
/* Кнопка, чьё действие идёт: не бледная, с вращающимся знаком. */
button.working:disabled{opacity:1;cursor:progress}
button.working::after{content:"";display:inline-block;width:10px;height:10px;margin-left:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-1px;animation:desk-spin .8s linear infinite}
@keyframes desk-spin{to{transform:rotate(360deg)}}
/* Пояснения в карточках решения — одного кегля. */
dialog .modal-content label.small{font-size:12px;font-weight:400}
@media (max-width:700px){.frame-head .actions .primary{width:100%}}
@media (max-width:700px){
  .hyp-matrix,.src-registry{min-width:0}
  .hyp-matrix thead,.src-registry thead{display:none}
  .hyp-matrix tr,.src-registry tr{display:block;border:1px solid var(--border);border-radius:6px;padding:8px 10px;margin-bottom:10px}
  .hyp-matrix td,.src-registry td{display:block;border:0;padding:3px 0;white-space:normal}
  .hyp-matrix td[data-label]::before,.src-registry td[data-label]::before{content:attr(data-label);display:block;font-size:12px;color:#6b6b6b}
}
/* Паспорт на телефоне: пустое поле — одной строкой «название · не сказано · задать». */
@media (max-width:700px){
  .pp-row:has(.pp-none){display:flex;align-items:baseline;gap:4px 10px;flex-wrap:wrap}
  .pp-row:has(.pp-none) .pp-label{flex:1 1 60%;min-width:0}
  .pp-row:has(.pp-none) .pp-value{flex:none;font-size:12px}
  .pp-row:has(.pp-none) .pp-meta{flex:none}
}
/* «Другие форматы» — того же вида и высоты, что соседние кнопки: в низу окна и под результатом. */
.doc-foot-actions{align-items:stretch}
.doc-more{display:flex}
.doc-more>summary{flex:1;justify-content:center;font:inherit;border:1px solid #c9c9c9;border-radius:6px;padding:9px 14px;min-height:0;background:#fff;color:var(--ink)}
dialog .modal-foot .doc-more>summary{min-height:42px}
.doc-more>summary:hover{border-color:#9a9a9a}
@media (max-width:700px){dialog.doc-modal .doc-more>summary{font-size:13px;padding:10px 6px}}
/* Под результатом: строка решения, ряд скачивания и указание — с одинаковыми зазорами;
   «Другие форматы» — той же высоты, что соседние кнопки; подзаголовок без капса. */
.work-accept{margin-bottom:12px}
.work-downloads{align-items:stretch}
.work-say{margin-top:12px}
.work-caveats{text-transform:none;letter-spacing:0;font-size:13px}

/* Графический отчёт: отбор вывода и рисунков. */
dialog.graphic-modal{width:min(980px,calc(100vw - 32px))}
.graphic-editor fieldset{border:1px solid #d9d9d9;border-radius:8px;padding:12px 16px;margin:16px 0;min-width:0}
.graphic-editor .graphic-choice{display:flex;align-items:flex-start;gap:12px;margin:0;padding:10px 0;font-weight:400}
.graphic-editor .graphic-choice+.graphic-choice{border-top:1px solid #ececec}
.graphic-editor .graphic-choice input{width:auto;flex:0 0 auto;margin-top:4px}
.graphic-editor .graphic-choice>span{min-width:0;display:flex;flex-direction:column;gap:2px}
.graphic-editor .graphic-choice-text{white-space:pre-wrap;line-height:1.5}
.graphic-editor .graphic-figure{padding:6px 0 12px}
.graphic-editor .graphic-figure+.graphic-figure{border-top:1px solid #ececec}
.graphic-editor .graphic-figure-settings{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:12px;margin-left:28px}
.graphic-editor .graphic-figure-settings label{font-size:13px;color:var(--muted)}
dialog .graphic-editor .graphic-figure-settings textarea[data-graphic-title]{min-height:44px;height:44px;resize:none}
.graphic-editor .graphic-order-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0}
.graphic-editor .graphic-order-moves{display:flex;gap:6px;flex:0 0 auto}
.graphic-editor .graphic-order-moves button{min-width:40px}
.graphic-editor .graphic-short summary,.graphic-editor details>summary{cursor:pointer;font-weight:600;margin:12px 0 8px}
.graphic-editor .graphic-short-toggle{display:flex;gap:10px;align-items:center;font-weight:400}
.graphic-editor .graphic-short-toggle input{width:auto}
.graphic-editor #graphic-preview{border:1px solid #ececec;border-radius:8px;padding:16px;background:#fff}
.graphic-editor #graphic-preview svg{max-width:100%;height:auto}
.graphic-modal .modal-foot{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
@media(max-width:600px){.graphic-editor .graphic-figure-settings{grid-template-columns:minmax(0,1fr);margin-left:0}.graphic-modal .modal-foot button{flex:1 1 calc(50% - 8px);margin:0}.graphic-modal .modal-foot #graphic-download{flex-basis:100%;order:-1}}
.graphic-editor .graphic-more{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin:8px 0 4px}
.graphic-editor .graphic-plan{margin:0 0 8px 28px}
@media(max-width:600px){.graphic-editor .graphic-plan{margin-left:0}}
/* Каталог источников. */
.catalog-filters{display:flex;gap:10px;margin:16px 0}.catalog-filters input{flex:1;min-width:0}.catalog-filters select{flex:0 1 auto;width:auto;max-width:45%}.catalog-items{max-height:45vh;overflow:auto;border-top:1px solid var(--line,#ddd)}.catalog-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:12px 0;border-bottom:1px solid var(--line,#ddd)}.catalog-row>div:first-child{min-width:0}.catalog-row a{overflow-wrap:anywhere}.catalog-row .actions{flex-shrink:0}.catalog-hidden{opacity:.6}.catalog-add{display:grid;gap:10px;padding:12px 0}.catalog-add label{display:grid;gap:4px}.catalog-remember{display:block;font-size:12px;font-weight:400;margin:8px 0}.tbl-add .catalog-remember{grid-column:1/-1;margin:2px 0 0}.catalog-open-row{margin-bottom:10px}@media(max-width:600px){.catalog-filters,.catalog-row{flex-direction:column}.catalog-filters select{width:100%;max-width:none}.catalog-row .actions{margin-top:4px}}
