/* Оформление интерфейса: чёрный фон и стеклянные панели (ФТ-62, ФТ-63).

   Всё, что задаёт вид, — переменные: цвета, стекло, тени, радиусы, шрифты. Стиль
   заменяется правкой переменных, без правки разметки. Тема одна — тёмная.

   Смысловые цвета постоянны во всех экранах: --trust — закрыто и безопасно, --map —
   требует внимания, --ext — отказ или то, что уходит наружу, --step — процесс. Главный
   акцент — белый: на чёрном он читается лучше любого цвета. Внешних шрифтов нет:
   служба ставится и в закрытом контуре заказчика. */
:root{
  --paper:#000000;
  --surface:rgba(255,255,255,.045); --surface-2:rgba(255,255,255,.07); --surface-3:rgba(255,255,255,.11);
  --solid:#0B0B0D; --solid-2:#141417;
  --ink:#F5F5F7; --ink-2:#A6A6B0; --ink-3:#7E7E89;
  --rule:rgba(255,255,255,.08); --rule-strong:rgba(255,255,255,.16);
  --accent:#FFFFFF; --accent-ink:#000000; --accent-bg:rgba(255,255,255,.10);
  --trust:#5BE49B; --trust-bg:rgba(91,228,155,.10);
  --ext:#FF7A7A; --ext-bg:rgba(255,122,122,.11);
  --step:#82B8FF; --step-bg:rgba(130,184,255,.11);
  --map:#FFC857; --map-bg:rgba(255,200,87,.11);
  --glow-a:rgba(110,120,255,.34); --glow-b:rgba(60,190,255,.18); --glow-c:rgba(190,110,255,.18);
  --blur:blur(22px) saturate(160%);
  --edge:inset 0 1px 0 rgba(255,255,255,.07);
  --shadow-1:inset 0 1px 0 rgba(255,255,255,.06),0 10px 30px -14px rgba(0,0,0,.9);
  --shadow-2:inset 0 1px 0 rgba(255,255,255,.08),0 30px 80px -20px rgba(0,0,0,.95);
  --r-sm:8px; --r:16px; --r-lg:22px; --pill:999px;
  --sans:-apple-system,"SF Pro Text","Segoe UI Variable Text","Segoe UI","Inter",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"SF Mono","JetBrains Mono","Cascadia Mono",ui-monospace,Menlo,Consolas,monospace;
  color-scheme:dark;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--paper)}
body{
  margin:0;min-height:100vh;background:transparent;color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;
}
/* Под стеклом нужен свет: несколько размытых пятен и тонкая точечная сетка на чёрном. */
body::before,body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none}
body::before{
  background:
    radial-gradient(50vw 34vw at 92% -6%,var(--glow-a),transparent 64%),
    radial-gradient(40vw 34vw at -6% 38%,var(--glow-b),transparent 64%),
    radial-gradient(46vw 32vw at 58% 108%,var(--glow-c),transparent 64%);
}
body::after{
  background-image:radial-gradient(rgba(255,255,255,.07) 1px,transparent 1px);background-size:22px 22px;
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 70%);mask-image:linear-gradient(to bottom,#000,transparent 70%);
}
::selection{background:rgba(255,255,255,.22)}
h1,h2,h3,h4{margin:0;line-height:1.2;letter-spacing:-.02em}
a{color:var(--ink)}
.hide{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.mono{font-family:var(--mono)}
.muted{color:var(--ink-3)}
svg.i{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* Стекло: полупрозрачная панель, размытие того, что под ней, светлая кромка сверху. */
.shell,.card,.tile,.metric,.pipe,.panel,.qitem,.ws-block,.drop,.modal,.toast,.tabs{
  -webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
}

/* --- каркас ------------------------------------------------------------------------ */
.shell{position:sticky;top:0;z-index:20;background:rgba(0,0,0,.55);border-bottom:1px solid var(--rule)}
.shell-in{max-width:1200px;margin:0 auto;padding:0 24px;height:62px;display:flex;align-items:center;gap:18px}
body.wide .shell-in{max-width:1800px}
.logo{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;flex:none}
.mark{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:conic-gradient(from 210deg,#fff,#6b6b75,#fff,#9a9aa5,#fff);
  box-shadow:0 0 0 1px rgba(255,255,255,.18),0 0 22px rgba(255,255,255,.18)}
.mark i{display:block;width:12px;height:12px;border-radius:50%;background:#000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
.brand{font-weight:600;font-size:15px;letter-spacing:-.015em}
.nav{display:flex;gap:4px;margin-left:10px;padding:4px;border-radius:var(--pill);background:var(--surface);border:1px solid var(--rule)}
.nav a{display:flex;align-items:center;gap:7px;padding:6px 14px;border-radius:var(--pill);color:var(--ink-2);
  text-decoration:none;font-weight:500;font-size:13.5px;white-space:nowrap;transition:background .15s,color .15s}
.nav a:hover{color:var(--ink);background:var(--surface-2)}
.nav a[aria-current="page"]{background:var(--ink);color:#000}
.count{min-width:19px;height:19px;padding:0 6px;border-radius:10px;background:var(--map);color:#000;
  font-size:11px;font-weight:700;display:inline-grid;place-items:center}
.spacer{flex:1}
.chip{font-size:11.5px;font-family:var(--mono);color:var(--ink-2);border:1px solid var(--rule-strong);
  background:var(--surface);border-radius:var(--pill);padding:4px 11px;white-space:nowrap}

.app{max-width:1200px;margin:0 auto;padding:34px 24px 80px}
body.wide .app{max-width:1800px}

.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.page-head h1{font-size:30px;font-weight:650;letter-spacing:-.03em}
.page-head .sub{color:var(--ink-2);font-size:14px;margin-top:6px}
.page-head .spacer{flex:1}
.crumbs{font-size:13px;color:var(--ink-3);margin-bottom:8px}
.crumbs a{color:var(--ink-3);text-decoration:none}
.crumbs a:hover{color:var(--ink)}

/* --- кнопки и поля ------------------------------------------------------------------ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font:inherit;font-size:14px;font-weight:600;line-height:1;color:var(--accent-ink);background:var(--accent);
  border:1px solid var(--accent);border-radius:var(--pill);padding:11px 18px;cursor:pointer;white-space:nowrap;text-decoration:none;
  box-shadow:0 0 0 0 rgba(255,255,255,0);transition:box-shadow .15s,background .15s,border-color .15s,color .15s;
}
.btn:hover{box-shadow:0 0 24px rgba(255,255,255,.22)}
.btn.ghost{color:var(--ink);background:var(--surface-2);border-color:var(--rule-strong);font-weight:500}
.btn.ghost:hover{background:var(--surface-3);box-shadow:none}
.btn.quiet{color:var(--ink-2);background:transparent;border-color:transparent;font-weight:500}
.btn.quiet:hover{background:var(--surface-2);color:var(--ink);box-shadow:none}
.btn.danger{color:var(--ext);background:var(--ext-bg);border-color:rgba(255,122,122,.35)}
.btn.danger:hover{background:rgba(255,122,122,.18);box-shadow:none}
.btn.danger.solid{color:#000;background:var(--ext);border-color:var(--ext)}
.btn.sm{font-size:12.5px;padding:7px 12px}
.btn.icon{padding:9px}
.btn:disabled{opacity:.4;cursor:default;box-shadow:none}
input[type="password"],input[type="date"],input[type="month"],input[type="number"],input[type="email"],input[type="search"],input[type="text"],select,textarea{
  font:inherit;font-size:14px;color:var(--ink);background:var(--surface);
  border:1px solid var(--rule-strong);border-radius:12px;padding:10px 13px;transition:border-color .15s,box-shadow .15s;
}
input::placeholder,textarea::placeholder{color:var(--ink-3)}
select option{background:var(--solid-2);color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:rgba(255,255,255,.45)}
input:focus-visible,select:focus-visible,textarea:focus-visible,.btn:focus-visible,.tab:focus-visible,
.nav a:focus-visible,.row-link:focus-visible,.qitem:focus-visible,.mjump:focus-visible,.tile:focus-visible{
  outline:2px solid rgba(255,255,255,.85);outline-offset:2px;
}
.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

/* --- карточки, статусы, плашки ----------------------------------------------------- */
.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow-1);padding:20px 22px}
.card h3{font-size:15px;font-weight:600;margin-bottom:12px}

.status{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:600;letter-spacing:.01em;
  padding:4px 11px 4px 9px;border-radius:var(--pill);white-space:nowrap;background:var(--surface-2);color:var(--ink-2);
  border:1px solid var(--rule)}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.status.s-done{background:var(--trust-bg);color:var(--trust);border-color:rgba(91,228,155,.22)}
.status.s-review{background:var(--map-bg);color:var(--map);border-color:rgba(255,200,87,.24)}
.status.s-failed{background:var(--ext-bg);color:var(--ext);border-color:rgba(255,122,122,.24)}
.status.s-work{background:var(--step-bg);color:var(--step);border-color:rgba(130,184,255,.24)}
.status.s-work::before{animation:pulse 1.1s ease-in-out infinite}

.alert{display:flex;gap:12px;align-items:flex-start;border-radius:var(--r);padding:15px 17px;margin-bottom:18px;
  border:1px solid transparent;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.alert svg.i{margin-top:1px}
.alert b{display:block;font-weight:600;margin-bottom:2px}
.alert p{margin:0;font-size:14px}
.alert .acts{margin-top:12px}
.alert.warn{background:var(--map-bg);color:var(--map);border-color:rgba(255,200,87,.25)}
.alert.danger{background:var(--ext-bg);color:var(--ext);border-color:rgba(255,122,122,.25)}
.alert.info{background:var(--step-bg);color:var(--step);border-color:rgba(130,184,255,.22)}
.alert p,.alert .sub{color:var(--ink-2)}
.panel-note{font-size:13px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--rule);border-radius:12px;padding:9px 13px;margin:0 0 14px}
.panel-note.hot{background:var(--map-bg);color:var(--map);border-color:rgba(255,200,87,.22);font-weight:500}

.empty{text-align:center;padding:46px 20px;color:var(--ink-3)}
.empty svg.i{width:34px;height:34px;margin-bottom:10px;stroke-width:1.3}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}

.sk{background:linear-gradient(90deg,var(--surface),var(--surface-3),var(--surface));background-size:200% 100%;
  animation:shimmer 1.3s linear infinite;border-radius:8px;height:14px}
@keyframes shimmer{to{background-position:-200% 0}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

/* --- вход ---------------------------------------------------------------------------- */
.signin{max-width:440px;margin:9vh auto 0}
.signin .card{padding:34px 32px 28px;box-shadow:var(--shadow-2);border-color:var(--rule-strong);border-radius:var(--r-lg)}
.signin .mark{width:44px;height:44px;margin-bottom:22px}
.signin .mark i{width:17px;height:17px}
.signin h1{font-size:26px;font-weight:650;letter-spacing:-.03em;margin-bottom:8px}
.signin p{margin:0 0 24px;color:var(--ink-2);font-size:14px}
.signin label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin-bottom:7px;letter-spacing:.02em}
.signin input{width:100%;font-family:var(--mono);margin-bottom:14px}
.signin .btn{width:100%;padding:13px 18px}
.signin .fine{font-size:12.5px;color:var(--ink-3);margin-top:16px;display:flex;gap:8px;align-items:flex-start}
.signin .fine svg.i{width:15px;height:15px;margin-top:2px}
.error{color:var(--ext);font-size:13px;min-height:18px;margin-top:8px}

/* --- загрузка ------------------------------------------------------------------------- */
.drop{
  border:1px dashed rgba(255,255,255,.22);border-radius:var(--r-lg);background:var(--surface);
  padding:52px 24px;text-align:center;transition:border-color .15s,background .15s,box-shadow .15s;box-shadow:var(--edge);
}
.drop.over{border-color:rgba(255,255,255,.7);background:var(--surface-2);box-shadow:0 0 0 4px rgba(255,255,255,.06),0 0 60px rgba(255,255,255,.08)}
.drop .ring{width:60px;height:60px;border-radius:50%;background:var(--surface-2);color:var(--ink);border:1px solid var(--rule-strong);
  display:grid;place-items:center;margin:0 auto 16px;box-shadow:0 0 30px rgba(255,255,255,.08)}
.drop .ring svg.i{width:26px;height:26px}
.drop h2{font-size:21px;font-weight:600;margin-bottom:6px}
.drop p{margin:0 0 20px;color:var(--ink-2);font-size:14px}
.formats{margin-top:16px;font-size:12px;color:var(--ink-3);font-family:var(--mono);letter-spacing:.02em}
.upload-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:20px;align-items:start}
@media (max-width:900px){.upload-grid{grid-template-columns:1fr}}
.steps3{display:grid;gap:16px}
.step3{display:flex;gap:12px;align-items:flex-start}
.step3 .num{width:28px;height:28px;border-radius:50%;background:var(--surface-2);color:var(--ink);border:1px solid var(--rule-strong);
  display:grid;place-items:center;font-size:12px;font-weight:700;flex:none;font-family:var(--mono)}
.step3 b{display:block;font-size:14px}
.step3 span{font-size:13px;color:var(--ink-3)}
.uplist{margin-top:20px}
.uprow{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--rule)}
.uprow:first-of-type{border-top:none}
.uprow .name{flex:1;min-width:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.uprow .name small{display:block;font-weight:400;color:var(--ink-3);font-size:12px}

/* --- история документов --------------------------------------------------------------- */
.summary-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.tile{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:16px 18px;
  box-shadow:var(--shadow-1);text-align:left;font:inherit;color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.tile:hover{border-color:var(--rule-strong);background:var(--surface-2)}
.tile[aria-pressed="true"]{border-color:rgba(255,255,255,.6);background:var(--surface-2);box-shadow:var(--shadow-1),0 0 0 3px rgba(255,255,255,.07)}
.tile .k{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:6px;letter-spacing:.01em}
.tile .v{font-size:28px;font-weight:650;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input[type="search"]{flex:1;min-width:220px}
.table-card{padding:0;overflow:hidden}
.table{width:100%;border-collapse:collapse}
.table th{font-size:11.5px;font-weight:600;color:var(--ink-3);text-align:left;padding:12px 18px;letter-spacing:.04em;text-transform:uppercase;
  background:rgba(255,255,255,.025);border-bottom:1px solid var(--rule);white-space:nowrap}
.table td{padding:13px 18px;border-bottom:1px solid var(--rule);vertical-align:middle;font-size:14px}
.table tr:last-child td{border-bottom:none}
.table tbody tr{cursor:pointer;transition:background .12s}
.table tbody tr:hover td{background:rgba(255,255,255,.035)}
.row-link{font:inherit;font-weight:600;color:var(--ink);background:none;border:none;padding:0;cursor:pointer;text-align:left;word-break:break-all}
.cell-sub{display:block;font-family:var(--mono);font-size:11.5px;color:var(--ink-3);margin-top:2px}
.cell-note{color:var(--ink-2);font-size:13px;max-width:360px}
@media (max-width:760px){
  .table thead{display:none}
  .table,.table tbody,.table tr,.table td{display:block;width:100%}
  .table tr{border-bottom:1px solid var(--rule);padding:13px 15px}
  .table td{border:none;padding:2px 0}
  /* Статус, формат и дата — в одну строку под именем файла, пометка — ниже. */
  .table td:nth-child(2),.table td:nth-child(3),.table td:nth-child(4){display:inline-block;width:auto;margin:5px 10px 0 0;font-size:13px}
  .table td:first-child,.table td:last-child{display:block}
}

/* --- документ ------------------------------------------------------------------------- */
.doc-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.doc-title h1{font-size:28px;font-weight:650;letter-spacing:-.03em;word-break:break-all}
.meta{display:flex;gap:6px 14px;flex-wrap:wrap;color:var(--ink-3);font-size:13px;margin-top:8px;align-items:center}
.meta .mono{font-size:12px}

.pipe{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:4px 0 20px;
  background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);box-shadow:var(--shadow-1);overflow:hidden}
.pstep{position:relative;padding:14px 16px 14px 18px;border-right:1px solid var(--rule);opacity:.45}
.pstep:last-child{border-right:none}
.pstep .nm{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600}
.pstep .ms{font-family:var(--mono);font-size:12px;color:var(--ink-3);margin-top:3px;min-height:17px;padding-left:23px}
.dot{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--rule-strong);flex:none;background:transparent}
.pstep.done,.pstep.active,.pstep.warn,.pstep.wait{opacity:1}
.pstep.done .dot{border-color:var(--trust);background:var(--trust);box-shadow:inset 0 0 0 3px #0a0a0a,0 0 10px rgba(91,228,155,.6)}
.pstep.wait{background:var(--map-bg)}
.pstep.wait .dot{border-color:var(--map);background:var(--map);box-shadow:inset 0 0 0 3px #0a0a0a,0 0 10px rgba(255,200,87,.6)}
.pstep.active{background:var(--step-bg)}
.pstep.active .dot{border-color:var(--step);box-shadow:0 0 10px rgba(130,184,255,.6);animation:pulse 1s ease-in-out infinite}
.pstep.warn{background:var(--ext-bg)}
.pstep.warn .dot{border-color:var(--ext);background:var(--ext);box-shadow:inset 0 0 0 3px #0a0a0a,0 0 10px rgba(255,122,122,.6)}
@media (prefers-reduced-motion: reduce){.pstep.active .dot,.status.s-work::before,.sk{animation:none}}
@media (max-width:900px){.pipe{grid-template-columns:1fr}.pstep{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 15px;border-right:none;border-bottom:1px solid var(--rule)}.pstep:last-child{border-bottom:none}.pstep .ms{margin-top:0;padding-left:0;min-height:0}}

.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}
@media (max-width:1000px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.metric{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow-1);min-width:0}
.metric .k{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:6px;letter-spacing:.01em}
.metric .k svg.i{width:15px;height:15px}
.metric .v{font-size:30px;font-weight:650;margin:4px 0 4px;font-variant-numeric:tabular-nums;letter-spacing:-.03em;
  background:linear-gradient(180deg,#fff 30%,#9c9ca8);-webkit-background-clip:text;background-clip:text;color:transparent}
.metric .s{font-size:12.5px;color:var(--ink-2)}
.metric.good .v{background:none;color:var(--trust);text-shadow:0 0 24px rgba(91,228,155,.35)}
.types{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.tchip{font-size:11px;border-radius:var(--pill);padding:2px 8px;background:var(--trust-bg);color:var(--trust);font-weight:600;white-space:nowrap;
  border:1px solid rgba(91,228,155,.2)}

details.more{margin-bottom:22px}
details.more summary{cursor:pointer;font-size:13px;color:var(--ink-2);padding:6px 0;list-style:none;display:inline-flex;gap:6px;align-items:center}
details.more summary:hover{color:var(--ink)}
details.more summary::-webkit-details-marker{display:none}
details.more summary::before{content:"▸";font-size:11px;transition:transform .15s}
details.more[open] summary::before{transform:rotate(90deg)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--r);overflow:hidden;margin-top:8px}
.stats div{background:var(--solid);padding:11px 14px}
.stats .k{font-size:11.5px;color:var(--ink-3)}
.stats .v{font-family:var(--mono);font-size:13px;margin-top:2px;word-break:break-word}

/* --- вкладки и текст ------------------------------------------------------------------ */
.tabs{display:inline-flex;gap:4px;padding:4px;border-radius:var(--pill);background:var(--surface);border:1px solid var(--rule);
  overflow-x:auto;overflow-y:hidden;max-width:100%;margin-bottom:12px}
.tab{font:inherit;font-size:13.5px;font-weight:500;background:none;border:none;border-radius:var(--pill);
  color:var(--ink-2);padding:8px 16px;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.tab:hover{color:var(--ink);background:var(--surface-2)}
.tab[aria-selected="true"]{color:#000;background:var(--ink);font-weight:600}
.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:20px 22px;box-shadow:var(--shadow-1)}
.panel-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.panel-head .spacer{flex:1}
.switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2);cursor:pointer}
.switch input{width:16px;height:16px;margin:0;accent-color:#fff}

.unit{border-top:1px solid var(--rule);padding-top:18px;margin-top:18px}
.unit:first-child{border-top:none;padding-top:0;margin-top:0}
.unit-head{font-size:12.5px;color:var(--ink-3);margin-bottom:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.unit-head b{font-family:var(--mono);font-size:12.5px;color:var(--ink);font-weight:600;background:var(--surface-2);
  border:1px solid var(--rule);border-radius:6px;padding:1px 7px}
/* Текст разложен как на странице: строки, столбцы пробелами, таблица — табуляцией
   в один знак, ячейки дополнены пробелами до ширины столбца. Перенос строк разорвал
   бы столбцы, поэтому длинная строка уходит вправо, под прокрутку. */
.doctext{font-family:var(--mono);font-size:13.5px;line-height:1.95;white-space:pre;tab-size:1;overflow-x:auto;color:#E4E4EA}
.pii-raw{background:var(--map-bg);border-bottom:1.5px solid var(--map);border-radius:3px;padding:1px 2px;cursor:help;color:var(--ink)}
.tokchip{color:var(--trust);font-weight:600;background:var(--trust-bg);border:1px solid rgba(91,228,155,.22);border-radius:5px;padding:0 5px}
.lowconf{background:var(--ext-bg);color:var(--ext);border-radius:var(--pill);padding:1px 8px;font-size:12px}
.compare{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
.compare h4{font-size:11.5px;font-weight:600;color:var(--ink-3);margin-bottom:8px;display:flex;align-items:center;gap:6px;
  letter-spacing:.05em;text-transform:uppercase}
@media (max-width:900px){.compare{grid-template-columns:1fr}}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px;font-size:13px;color:var(--ink-3);align-items:center}

/* --- результат ------------------------------------------------------------------------ */
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;align-items:start}
.fcard{background:rgba(255,255,255,.03);border:1px solid var(--rule);border-radius:14px;padding:16px 18px;box-shadow:var(--edge)}
.fcard h4{font-size:13.5px;font-weight:600;color:var(--ink);margin-bottom:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fcard h4 .role{font-weight:500;color:var(--ink-3);font-size:12px}
.pairs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px 18px}
.pair .k{font-size:11.5px;color:var(--ink-3)}
.pair .v{font-family:var(--mono);font-size:13.5px;margin-top:2px;word-break:break-word}
.summary-line{font-size:14px;color:var(--ink-2);margin-bottom:16px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.kind{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#000;background:var(--ink);padding:3px 9px;border-radius:var(--pill)}

/* --- страница документа рядом с текстом ----------------------------------------------- */
/* По одному тексту ошибку распознавания не поймать: «5XQIJ2M» выглядит настоящим
   кодом, пока не посмотришь на оригинал. Колонка страницы прилипает к верху экрана. */
.sbs{display:grid;grid-template-columns:minmax(320px,1fr) minmax(0,1fr);gap:22px;align-items:start}
@media (max-width:900px){.sbs{grid-template-columns:1fr}}
.sbs .preview-box{position:sticky;top:76px;align-self:start}
.preview-box:empty{display:none}
.pv{border:1px solid var(--rule);border-radius:14px;background:rgba(255,255,255,.025);overflow:hidden}
.pv-bar{display:flex;align-items:center;gap:6px;padding:7px 9px;border-bottom:1px solid var(--rule);font-size:12.5px;color:var(--ink-3);background:rgba(255,255,255,.03)}
.pv-label{flex:1;font-weight:500}
.pv-pct{font-family:var(--mono);min-width:46px;text-align:center}
.pv-scroll{max-height:calc(100vh - 136px);overflow:auto;padding:12px}
.pv-scroll img.preview{width:100%;max-width:none;margin:0}
/* Страница и слой подсветки над ней масштабируются вместе: рамки заданы долями страницы. */
.pv-page{position:relative;width:100%}
.pv-ov{position:absolute;inset:0;pointer-events:none}
.pv-ov .ov{position:absolute;border-radius:2px;pointer-events:auto;cursor:pointer;mix-blend-mode:multiply;
  outline:1px solid transparent;outline-offset:1px}
.pv-ov .ov.m-service{background:rgba(70,140,255,.38);outline-color:rgba(40,100,220,.85)}
.pv-ov .ov.m-suggested{background:rgba(255,190,40,.45);outline-color:rgba(200,130,0,.9)}
.pv-ov .ov.m-operator{background:rgba(40,200,120,.40);outline-color:rgba(20,150,80,.9)}
.pv-ov .ov.m-off{background:transparent;box-shadow:none;outline:1px dashed rgba(90,90,90,.8)}
.pv-ov .ov.focus{outline:2px solid #111;outline-offset:2px}
/* Сама страница остаётся белой: так её видно, как на бумаге. */
.preview{width:100%;border-radius:6px;display:block;background:#fff;cursor:zoom-in;box-shadow:0 12px 40px -12px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.08)}
.zoom{position:fixed;inset:0;z-index:60;overflow:auto;background:rgba(0,0,0,.82);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  cursor:zoom-out;padding:24px;text-align:center}
.zoom img{max-width:none;width:auto;background:#fff;border-radius:6px;box-shadow:0 20px 80px rgba(0,0,0,.8)}
.zoom-note{color:var(--ink-2);font-size:12px;margin-top:12px}

/* --- очередь проверки ----------------------------------------------------------------- */
.review-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:1380px){.review-layout{grid-template-columns:1fr}}
.qlist{display:flex;flex-direction:column;gap:8px;position:sticky;top:76px}
@media (max-width:1380px){.qlist{position:static;flex-direction:row;overflow-x:auto;padding-bottom:4px}}
.qitem{text-align:left;font:inherit;cursor:pointer;background:var(--surface);color:var(--ink);
  border:1px solid var(--rule);border-radius:14px;padding:12px 14px;flex:none;box-shadow:var(--shadow-1);transition:border-color .15s,background .15s}
.qitem:hover{border-color:var(--rule-strong);background:var(--surface-2)}
.qitem[aria-current="true"]{border-color:rgba(255,255,255,.6);background:var(--surface-2);box-shadow:var(--shadow-1),0 0 0 3px rgba(255,255,255,.07)}
.qitem b{display:block;font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px}
.qitem span{display:block;font-size:12px;color:var(--ink-3);margin-top:2px}
.qitem .status{margin-top:8px}

.ws{display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1fr);gap:20px;align-items:start}
@media (max-width:900px){.ws{grid-template-columns:1fr}}
.ws-page{position:sticky;top:76px;align-self:start}
@media (max-width:900px){.ws-page,.sbs .preview-box{position:static}}
.ws-side{display:flex;flex-direction:column;gap:12px;min-width:0}
.ws-title b{display:block;font-size:18px;font-weight:650;letter-spacing:-.02em;word-break:break-all}
.ws-title span{font-size:12.5px;color:var(--ink-3)}
.ws-side .alert{margin:0}
.ws-block{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow-1)}
.ws-block h4{margin:0 0 8px;font-size:14px;font-weight:600}
.ws-block .panel-note{margin:0 0 10px}
.ws-label{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ws-label .badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--pill);background:var(--map-bg);color:var(--map);border:1px solid rgba(255,200,87,.22)}
.cands{padding:16px 18px}
.cands h4{margin:0 0 8px;font-size:14px}
.cand{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:baseline;padding:10px 6px;border-top:1px solid var(--rule);cursor:pointer;border-radius:8px}
.cand:hover{background:var(--surface-2)}
.cand input{margin:0;width:16px;height:16px;cursor:pointer;accent-color:#fff}
.cand-type{font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.cand-value{font-family:var(--mono);font-size:14px;word-break:break-all}
.cand-why{font-size:12px;color:var(--ink-3);white-space:nowrap}
@media (max-width:700px){.cand{grid-template-columns:auto 1fr}.cand-type,.cand-why{grid-column:2}}

/* Поле правки с подсветкой: под прозрачным полем лежит тот же текст с метками.
   Шрифт, отступы и перенос строк у обоих одинаковые — иначе подсветка разъедется. */
.editor{position:relative;border:1px solid var(--rule-strong);border-radius:12px;background:rgba(0,0,0,.35)}
.editor:focus-within{border-color:rgba(255,255,255,.5);box-shadow:0 0 0 3px rgba(255,255,255,.07)}
.editor .backdrop,.editor textarea{font-family:var(--mono);font-size:13.5px;line-height:1.7;padding:12px 14px;margin:0;border:0;
  white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word;letter-spacing:0;tab-size:1}
.editor .backdrop{position:absolute;inset:0;overflow:hidden;color:transparent;pointer-events:none}
/* Раскладка страницы: без переноса, табуляция в один знак — столбцы стоят ровно. */
.editor.paged .backdrop,.editor.paged textarea{white-space:pre;overflow-wrap:normal;word-wrap:normal;tab-size:1}
.editor.paged textarea{overflow-x:auto}
.editor textarea{position:relative;display:block;width:100%;min-height:460px;background:transparent;resize:vertical;
  color:var(--ink);caret-color:#fff;border-radius:12px;outline:none}
.backdrop mark{color:transparent;border-radius:3px}
.m-service{background:rgba(130,184,255,.26)}
.m-suggested{background:rgba(255,200,87,.30)}
.m-operator{background:rgba(91,228,155,.26)}
.m-off{background:transparent;box-shadow:inset 0 -2px 0 var(--ink-3)}
.legend{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;margin:0 0 10px}
.key-m{border-radius:var(--pill);padding:1px 8px;white-space:nowrap;color:var(--ink)}
.ws-tool{font-size:13px;color:var(--ink-2);margin-top:10px;min-height:24px}
/* Подпись над списком, кнопка — по нижнему краю списка: в узкой панели подпись
   переносилась, и кнопка, выровненная по центру подписи со списком, съезжала вверх. */
.ws-tool-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--ink-2)}
.ws-tool-row label{display:flex;flex-direction:column;gap:5px}
.ws-tool-row select{margin-left:0}
.ws-tool-row select,.ws-tool-row .btn{height:40px;box-sizing:border-box}
.lock{font-size:12px;color:var(--ink-3);border:1px dashed var(--rule-strong);border-radius:var(--pill);padding:2px 8px;white-space:nowrap}
/* ФТ-67: значение прочитала вторая модель — оператору стоит сверить его с изображением. */
.second-read{font-size:12px;color:var(--map);background:var(--map-bg);border-radius:var(--pill);padding:1px 8px;white-space:nowrap}
.second-read.disputed{color:var(--ext);background:var(--ext-bg)}
.second-read.public-hint{color:var(--trust);background:var(--trust-bg)}
.mrow{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--rule)}
.mrow.off .mjump{color:var(--ink-3)}
.mdot{width:9px;height:9px;border-radius:50%;flex:none}
.mdot.m-service{background:var(--step);box-shadow:0 0 8px rgba(130,184,255,.6)}
.mdot.m-suggested{background:var(--map);box-shadow:0 0 8px rgba(255,200,87,.6)}
.mdot.m-operator{background:var(--trust);box-shadow:0 0 8px rgba(91,228,155,.6)}
.mdot.m-off{background:transparent;box-shadow:inset 0 0 0 1.5px var(--ink-3)}
.mjump{flex:1;min-width:0;text-align:left;font:inherit;font-size:13px;background:none;border:none;color:var(--ink);cursor:pointer;padding:0;word-break:break-word}
.mjump:hover{text-decoration:underline}
.ws-foot{display:flex;gap:10px;align-items:center;flex-wrap:wrap;position:sticky;bottom:12px;z-index:2;
  background:rgba(10,10,12,.72);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);
  padding:10px 14px;border:1px solid var(--rule-strong);border-radius:var(--r);box-shadow:var(--shadow-2)}
.hint{font-size:12px;color:var(--ink-3)}
kbd{font-family:var(--mono);font-size:11px;border:1px solid var(--rule-strong);border-bottom-width:2px;border-radius:5px;padding:0 5px;background:var(--surface-2);color:var(--ink)}

.chat{display:flex;flex-direction:column;gap:18px;max-width:920px}
.msg .who{font-size:12.5px;color:var(--ink-2);display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:7px;font-weight:600}
.msg .who svg.i{width:15px;height:15px}
.msg .who .muted{font-weight:400}
.bubble{border:1px solid var(--rule);border-radius:var(--r);padding:14px 16px;background:rgba(255,255,255,.03);line-height:1.6;
  overflow-wrap:anywhere}
.msg.me .bubble{background:var(--surface-2);white-space:pre-wrap}
.msg.me .bubble details.more{margin:10px 0 0;white-space:normal}
.custom-skill{white-space:pre-wrap;color:var(--ink-2);font-size:13.5px;margin-top:6px}
.msg.ai .bubble{background:rgba(130,184,255,.05);border-color:rgba(130,184,255,.2)}
.md p{margin:0 0 10px}
.md p:last-child,.md ul:last-child,.md ol:last-child{margin-bottom:0}
.md h4{margin:14px 0 6px;font-size:15px}
.md h4:first-child{margin-top:0}
.md h4.h1{font-size:17px}
.md ul,.md ol{margin:0 0 10px;padding-left:22px}
.md li{margin:3px 0}
.md code{font-family:var(--mono);font-size:12.5px;background:var(--surface-3);border-radius:5px;padding:1px 5px}
.md pre{background:rgba(0,0,0,.4);border:1px solid var(--rule);border-radius:10px;padding:10px 12px;overflow:auto;margin:0 0 10px}
.md pre code{background:none;padding:0}
.md table{border-collapse:collapse;margin:6px 0 10px;font-size:13.5px;display:block;overflow-x:auto}
.md th,.md td{border:1px solid var(--rule-strong);padding:6px 10px;text-align:left;vertical-align:top}
.md th{background:var(--surface-2)}
.msg-tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.msg-note{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--map);margin-top:8px}
.msg-note svg.i{width:14px;height:14px}
.sent-request{border-bottom:1px solid var(--rule);padding-bottom:16px;margin-bottom:16px}
.sent-request .unit-head + .doctext{margin-bottom:10px}

/* --- всплывающие сообщения и окно подтверждения ---------------------------------------- */
.toasts{position:fixed;right:20px;top:78px;z-index:70;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 40px))}
.toast{display:flex;gap:10px;align-items:center;background:rgba(20,20,24,.78);color:var(--ink);border:1px solid var(--rule-strong);
  border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow-2);font-size:14px;animation:rise .18s ease-out}
.toast.bad{background:rgba(70,16,18,.82);border-color:rgba(255,122,122,.4);color:#FFD9D9}
.toast .btn{margin-left:auto}
@keyframes rise{from{transform:translateY(8px);opacity:0}}
.modal-back{position:fixed;inset:0;z-index:65;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  display:grid;place-items:center;padding:20px}
.modal{background:rgba(22,22,26,.8);border:1px solid var(--rule-strong);border-radius:var(--r-lg);box-shadow:var(--shadow-2);
  width:min(460px,100%);padding:24px 24px 20px}
.modal h3{font-size:18px;font-weight:650;margin-bottom:8px}
.modal p{margin:0 0 20px;color:var(--ink-2);font-size:14px}
.modal .acts{justify-content:flex-end}

.foot{margin-top:40px;font-size:12.5px;color:var(--ink-3);display:flex;gap:8px;align-items:center}
.foot svg.i{width:15px;height:15px;color:var(--trust)}

/* ФТ-62: от 360 пикселей. Шапка сначала теряет метку роли, затем навигация уходит
   в отдельную строку под логотипом; на телефоне сетки складываются в столбец. */
@media (max-width: 1000px){
  .shell .chip{display:none}
}
@media (max-width: 760px){
  .shell-in{height:auto;padding:10px 14px;flex-wrap:wrap;gap:8px}
  .nav{order:3;width:100%;margin:0;overflow-x:auto}
  .nav a{flex:1;justify-content:center}
  .toasts{top:118px;left:14px;right:14px;max-width:none}
}
@media (max-width: 560px){
  .brand{font-size:14px}
  .app{padding:20px 14px 60px}
  .page-head h1,.doc-title h1{font-size:23px}
  .metrics{grid-template-columns:1fr}
  .panel{padding:15px 14px}
  .card{padding:17px}
  .summary-row{grid-template-columns:repeat(2,1fr);gap:8px}
  .tile{padding:10px 13px}
  .tile .v{font-size:21px}
  .toolbar input[type="search"]{min-width:100%}
  .tabs{display:flex}
  .tab{flex:1;padding:8px 10px}
}

/* ===================================================================================
   Каркас продукта: боковая панель с разговорами и разделами, справа — экран.
   Как у Claude: новый чат сверху, история по датам, меню пользователя внизу.
   =================================================================================== */
:root{--side-w:272px;--thread-w:780px}
.center-screen{min-height:100vh;display:grid;place-items:center;padding:20px}
.center-screen.signin{display:block;max-width:440px;margin:9vh auto 0;min-height:0}
.signin form.card input{font-family:var(--sans)}
.signin .btn + .btn{margin-top:10px}
.connecting{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:30px 34px;min-width:300px}
.connecting .mark{animation:pulse 1.6s ease-in-out infinite}
.connecting p{margin:0;font-size:13px;max-width:360px}

.layout{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:10px;padding:14px 12px 12px;
  background:rgba(8,8,10,.72);border-right:1px solid var(--rule);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);z-index:30}
.side-top{display:flex;align-items:center;gap:8px;padding:2px 4px 6px}
.side-close{display:none;margin-left:auto}
.newchat{width:100%;justify-content:flex-start;padding:10px 14px}
.newchat svg.i{width:16px;height:16px}
.side-search{width:100%;font-size:13px;padding:8px 12px}
.chatlist{flex:1;overflow-y:auto;margin:0 -6px;padding:0 6px}
.cgroup{margin-bottom:12px}
.cgroup-title{font-size:11px;font-weight:600;color:var(--ink-3);letter-spacing:.05em;text-transform:uppercase;padding:6px 10px 4px}
.citem{position:relative;display:flex;align-items:center;border-radius:10px}
.citem a{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;color:var(--ink-2);
  text-decoration:none;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.citem:hover a,.citem[aria-current="page"] a{color:var(--ink);background:var(--surface-2)}
.citem[aria-current="page"] a{background:var(--surface-3)}
.cbusy{width:7px;height:7px;border-radius:50%;background:var(--step);flex:none;box-shadow:0 0 8px var(--step);animation:pulse 1.1s ease-in-out infinite}
.cmore{position:absolute;right:4px;opacity:0;background:none;border:none;color:var(--ink-2);padding:4px 6px;border-radius:8px;cursor:pointer}
.citem:hover .cmore,.cmore:focus-visible{opacity:1}
.cmore:hover{background:var(--surface-3);color:var(--ink)}
.cmenu{position:absolute;right:4px;top:34px;z-index:40;display:flex;flex-direction:column;min-width:150px;padding:5px;
  background:rgba(22,22,26,.95);border:1px solid var(--rule-strong);border-radius:12px;box-shadow:var(--shadow-2)}
.cmenu button,.me-menu button{display:flex;gap:8px;align-items:center;font:inherit;font-size:13.5px;text-align:left;background:none;border:none;
  color:var(--ink);padding:8px 10px;border-radius:8px;cursor:pointer}
.cmenu button:hover,.me-menu button:hover{background:var(--surface-3)}
.cmenu button.bad{color:var(--ext)}
.cmenu svg.i{width:15px;height:15px}
.side-empty{font-size:13px;color:var(--ink-3);padding:10px}
.side-nav{display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--rule);padding-top:8px}
.side-nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;color:var(--ink-2);text-decoration:none;font-size:13.5px;font-weight:500}
.side-nav a:hover{background:var(--surface-2);color:var(--ink)}
.side-nav a[aria-current="page"]{background:var(--surface-3);color:var(--ink)}
.side-nav svg.i{width:16px;height:16px}
.side-nav .count{margin-left:auto}
.me{position:relative;border-top:1px solid var(--rule);padding-top:8px}
.me-button{width:100%;display:flex;align-items:center;gap:10px;font:inherit;color:var(--ink);background:none;border:none;
  padding:8px;border-radius:12px;cursor:pointer;text-align:left}
.me-button:hover{background:var(--surface-2)}
.avatar{width:32px;height:32px;border-radius:50%;flex:none;display:grid;place-items:center;font-size:12px;font-weight:700;
  background:var(--ink);color:#000;letter-spacing:.02em}
.me-text{min-width:0;display:flex;flex-direction:column}
.me-text b{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-text small{font-size:11.5px;color:var(--ink-3)}
.me-menu{position:absolute;left:0;right:0;bottom:56px;display:flex;flex-direction:column;padding:5px;
  background:rgba(22,22,26,.96);border:1px solid var(--rule-strong);border-radius:12px;box-shadow:var(--shadow-2);z-index:40}
.side-back{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:25}
/* Проекты в панели (ФТ-78): короткий список над разговорами. */
.side-projects{display:flex;flex-direction:column;gap:2px}
.side-label{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600;color:var(--ink-3);
  letter-spacing:.05em;text-transform:uppercase;padding:2px 4px 2px 10px}
.side-label .btn.icon{padding:4px}
.side-label svg.i{width:14px;height:14px}
.projectlist{display:flex;flex-direction:column;gap:1px;max-height:180px;overflow-y:auto}
.projectlist a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:10px;color:var(--ink-2);text-decoration:none;
  font-size:13.5px;min-width:0}
.projectlist a span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.projectlist a:hover{background:var(--surface-2);color:var(--ink)}
.projectlist a.active{background:var(--surface-3);color:var(--ink)}
.projectlist svg.i{width:15px;height:15px;flex:none}

/* Экран проекта. */
.project-card{margin-bottom:16px}
.project-card h2{font-size:16px;font-weight:600;margin:0 0 12px}
.project-card textarea{width:100%;min-height:150px;resize:vertical;font:inherit;font-size:14px;line-height:1.55;margin-bottom:12px}
.project-card .fine{font-size:12px;color:var(--ink-3);margin:10px 0 0}
.project-files{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.project-file{display:flex;gap:10px;align-items:center;padding:9px 12px;border:1px solid var(--rule);border-radius:12px;
  background:var(--surface-2);font-size:13.5px;min-width:0}
.project-file b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.project-file svg.i{width:15px;height:15px;flex:none}
.pstate{display:inline-flex;gap:5px;align-items:center;font-size:12px;color:var(--step);white-space:nowrap}
.pstate.ok{color:var(--trust)}
.pstate.bad{color:var(--ext)}
.pstate svg.i{width:13px;height:13px}

.main{min-width:0;display:flex;flex-direction:column;min-height:100vh}
.topbar{display:none;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--rule);
  background:rgba(0,0,0,.55);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);position:sticky;top:0;z-index:20}
.topbar-title{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.banner{display:flex;gap:10px;align-items:center;margin:12px 24px 0;padding:10px 14px;border-radius:12px;font-size:13.5px;
  border:1px solid transparent}
.banner.warn{background:var(--map-bg);color:var(--map);border-color:rgba(255,200,87,.25)}
.banner.danger{background:var(--ext-bg);color:var(--ext);border-color:rgba(255,122,122,.25)}
.banner span{color:var(--ink)}
.main .app{width:100%}

/* --- чат --------------------------------------------------------------------------------- */
body.chatting .main .app{max-width:none;padding:0;flex:1;display:flex;min-height:0}
body.chatting .main{height:100vh}
.chat-screen{flex:1;display:flex;flex-direction:column;min-height:0;width:100%}
.thread{flex:1;overflow-y:auto;padding:28px 20px 12px}
.welcome{max-width:var(--thread-w);margin:14vh auto 22px;text-align:center}
.welcome .mark.big{width:54px;height:54px;margin:0 auto 22px}
.welcome .mark.big i{width:21px;height:21px}
.welcome h1{font-size:32px;font-weight:600;letter-spacing:-.03em;margin-bottom:12px}
.welcome p{color:var(--ink-2);font-size:14.5px;max-width:560px;margin:0 auto}
.msgs{max-width:var(--thread-w);margin:0 auto;display:flex;flex-direction:column;gap:22px}
.msg-skeleton{display:flex;flex-direction:column;gap:12px;padding-top:20px}
.msg.me{align-self:flex-end;max-width:min(85%,620px);display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.msg.me .bubble{background:var(--surface-3);border:1px solid var(--rule-strong);border-radius:18px 18px 6px 18px;padding:11px 15px;
  white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}
.msg.me.off{opacity:.55}
.msg-flag{font-size:12px;color:var(--ink-3)}
.skill-chip{display:inline-block;font-family:var(--mono);font-size:12px;font-weight:600;color:#000;background:var(--ink);
  border-radius:var(--pill);padding:1px 8px;margin-right:8px;white-space:nowrap}
.att-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.att{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:12px;border:1px solid var(--rule-strong);
  background:var(--surface-2);font-size:13px;max-width:100%}
.att .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:240px;font-weight:500}
.att small{display:inline-flex;align-items:center;gap:4px;color:var(--ink-3);font-size:11.5px;white-space:nowrap}
.att small svg.i{width:12px;height:12px}
.att svg.i{width:15px;height:15px}
.att.ok small{color:var(--trust)}
.att.wait{border-color:rgba(255,200,87,.35)}
.att.wait small{color:var(--map)}
.att.bad{border-color:rgba(255,122,122,.35)}
.att.bad small{color:var(--ext)}
.att.work small{color:var(--step)}
.spin{width:10px;height:10px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;animation:turn .8s linear infinite}
@keyframes turn{to{transform:rotate(360deg)}}
.confirm-card{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px;border-radius:14px;max-width:560px;
  background:var(--step-bg);border:1px solid rgba(130,184,255,.3);color:var(--step)}
.confirm-card b{display:block;color:var(--ink);font-size:13.5px}
.confirm-card p{margin:2px 0 0;font-size:12.5px;color:var(--ink-2)}
.confirm-card > div{flex:1;min-width:200px}
/* Вопрос автору по названиям (ФТ-99): строка на название, выбор «скрыть / показать». */
.context-card{align-items:flex-start}
.ctx-items{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.ctx-items li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ctx-name{font-weight:600;color:var(--ink);font-size:13.5px;overflow-wrap:anywhere}
.ctx-items small{color:var(--ink-3);font-size:12px}
.ctx-choice{display:inline-flex;gap:4px;margin-left:auto}
.ctx-choice .btn[aria-pressed="true"]{color:var(--ink);background:var(--surface-2);border-color:var(--rule-strong)}
.msg.ai{display:flex;gap:14px;align-items:flex-start}
.ai-mark{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;color:#000;
  background:conic-gradient(from 210deg,#fff,#9a9aa5,#fff,#c8c8d0,#fff);box-shadow:0 0 16px rgba(255,255,255,.18)}
.ai-mark svg.i{width:16px;height:16px}
.ai-body{flex:1;min-width:0;padding-top:3px}
.ai-skill{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--ink-3);margin-bottom:6px}
.ai-skill svg.i{width:13px;height:13px}
.msg.ai .md{line-height:1.65;font-size:15px;overflow-wrap:anywhere}
.msg.ai .md.as-written{background:rgba(91,228,155,.04);border:1px dashed rgba(91,228,155,.3);border-radius:12px;padding:10px 12px}
.msg.ai.failed .alert{margin:0}
.msg-actions{display:flex;gap:2px;align-items:center;flex-wrap:wrap;margin-top:8px;margin-left:-8px}
.msg-actions .btn{color:var(--ink-3)}
.msg-actions .btn:hover{color:var(--ink)}
.msg-actions .btn[aria-pressed="true"]{color:var(--trust)}
.msg-actions svg.i{width:15px;height:15px}
.usage{font-size:11.5px;color:var(--ink-3);font-family:var(--mono);margin-left:auto}
.dots{display:inline-flex;gap:5px;margin-right:10px;vertical-align:middle}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--ink-2);animation:pulse 1.2s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.2s}
.dots i:nth-child(3){animation-delay:.4s}
.thinking .ai-body{display:flex;align-items:center;flex-wrap:wrap;font-size:13.5px;padding-top:6px}
.wait-note{display:flex;gap:8px;align-items:center;justify-content:center;font-size:13px;color:var(--map)}
.wait-note svg.i{width:15px;height:15px}
.wait-note.bad{color:var(--ext)}
.file-card{display:flex;gap:12px;align-items:center;width:100%;max-width:520px;margin-top:10px;text-align:left;font:inherit;color:var(--ink);
  background:var(--surface-2);border:1px solid var(--rule-strong);border-radius:14px;padding:12px 14px;cursor:pointer}
.file-card:hover{background:var(--surface-3)}
.file-card.bad{color:var(--ext);cursor:default}
.fc-text{flex:1;min-width:0;display:flex;flex-direction:column}
.fc-text b{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fc-text small{display:flex;gap:5px;align-items:center;font-size:12px;color:var(--ink-3)}
.fc-text small svg.i{width:12px;height:12px}
.file-card:has(.fc-acts){cursor:default}
.file-card:has(.fc-acts):hover{background:var(--surface-2)}
.fc-acts{display:flex;gap:2px;flex:none}
.fc-acts svg.i{width:14px;height:14px}

/* Шаги и рассуждение Claude (ФТ-79): свёрнуто над ответом, раскрывается по щелчку. */
.ai-work{margin:0 0 10px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);max-width:620px}
.ai-work summary{display:flex;gap:8px;align-items:center;padding:8px 12px;font-size:12.5px;color:var(--ink-2);cursor:pointer;
  list-style:none;user-select:none}
.ai-work summary::-webkit-details-marker{display:none}
.ai-work summary::after{content:"";width:6px;height:6px;margin-left:auto;border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s}
.ai-work[open] summary::after{transform:rotate(45deg)}
.ai-work summary:hover{color:var(--ink)}
.ai-work summary svg.i{width:14px;height:14px}
.ai-thinking{border-top:1px solid var(--rule);padding:10px 14px;font-size:13px;line-height:1.6;color:var(--ink-2);
  white-space:pre-wrap;overflow-wrap:anywhere;max-height:340px;overflow-y:auto}
.ai-steps{list-style:none;margin:0;padding:8px 12px 10px;border-top:1px solid var(--rule);display:flex;flex-direction:column;gap:6px}
.ai-steps li{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:var(--ink-2)}
.ai-steps li svg.i{width:13px;height:13px;flex:none;margin-top:2px;color:var(--step)}
.ai-steps .step-text{color:var(--ink);overflow-wrap:anywhere}
.ai-steps.live{border:none;padding:8px 0 0;width:100%}
.ai-sources{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:10px}
.ai-sources-title{font-size:11px;font-weight:600;color:var(--ink-3);letter-spacing:.05em;text-transform:uppercase;margin-right:4px}
.source{display:inline-flex;gap:6px;align-items:center;max-width:260px;padding:4px 10px;border-radius:var(--pill);
  border:1px solid var(--rule-strong);background:var(--surface-2);color:var(--ink);text-decoration:none;font-size:12px}
.source:hover{background:var(--surface-3)}
.source span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.source small{color:var(--ink-3);white-space:nowrap}
.source svg.i{width:12px;height:12px;flex:none;color:var(--ink-3)}

/* Предпросмотр файла ответа (ФТ-80). */
.preview-modal{width:min(1000px,100%);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.preview-head{display:flex;gap:8px;align-items:center;margin-bottom:12px;min-width:0}
.preview-head h3{margin:0;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.preview-head svg.i{width:16px;height:16px;flex:none}
.preview-body{flex:1;min-height:0;overflow:auto}
.preview-frame{width:100%;height:72vh;border:1px solid var(--rule);border-radius:10px;background:#fff}
.preview-image{display:block;max-width:100%;margin:0 auto;border-radius:10px}
.preview-text{margin:0;font-family:var(--mono);font-size:12.5px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;
  background:rgba(0,0,0,.35);border:1px solid var(--rule);border-radius:10px;padding:12px 14px}
.preview-md{line-height:1.65;font-size:14.5px}
.preview-table{overflow:auto}
.preview-table table{border-collapse:collapse;font-size:13px}
.preview-table th,.preview-table td{border:1px solid var(--rule-strong);padding:5px 9px;text-align:left;vertical-align:top;white-space:nowrap}
.preview-table th{background:var(--surface-2);position:sticky;top:0}

.composer-wrap{position:relative;max-width:calc(var(--thread-w) + 40px);width:100%;margin:0 auto;padding:6px 20px 16px}
.composer-wrap.centered{margin-bottom:auto}
.chat-screen:has(.composer-wrap.centered) .thread{flex:0 0 auto}
.composer{background:rgba(22,22,26,.72);border:1px solid var(--rule-strong);border-radius:22px;padding:10px 12px 8px;
  box-shadow:var(--shadow-2);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);transition:border-color .15s,box-shadow .15s}
.composer:focus-within{border-color:rgba(255,255,255,.4)}
.composer.over{border-color:rgba(255,255,255,.75);box-shadow:0 0 0 4px rgba(255,255,255,.07),var(--shadow-2)}
.composer textarea{width:100%;border:none;background:transparent;resize:none;padding:6px 6px 4px;font-size:15px;line-height:1.5;
  max-height:40vh;min-height:30px;outline:none;box-shadow:none}
.composer textarea:focus,.composer textarea:focus-visible{border:none;outline:none}
.composer-files{display:flex;gap:6px;flex-wrap:wrap;padding:0 4px}
.composer-files:empty{display:none}
.composer-bar{display:flex;align-items:center;gap:8px}
.composer-bar .fine{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--ink-3)}
.composer-bar .fine svg.i{width:13px;height:13px;color:var(--trust)}
.btn.send{width:36px;height:36px;padding:0;border-radius:50%}
.btn.send svg.i{width:18px;height:18px}
/* Кнопка «Стоп» на месте отправки, пока Claude отвечает (ФТ-82). */
.btn.send.stop svg.i{fill:currentColor}
/* Исследование (ФТ-85) и выбор модели, effort и стиля (ФТ-84). */
.btn.research{gap:6px;color:var(--ink-3)}
.btn.research svg.i{width:14px;height:14px}
.btn.research.on{color:var(--step);background:var(--step-bg);border-color:rgba(130,184,255,.35)}
.chat-options{position:relative}
.chat-options > .btn{gap:6px;color:var(--ink-3);max-width:260px}
.chat-options > .btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-options > .btn svg.i{width:14px;height:14px;flex:none}
.options-menu{position:absolute;right:0;bottom:calc(100% + 8px);width:260px;z-index:16;padding:12px 14px;
  background:rgba(20,20,24,.97);border:1px solid var(--rule-strong);border-radius:14px;box-shadow:var(--shadow-2)}
.options-menu .field-label{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin:8px 0 4px}
.options-menu .field-label:first-child{margin-top:0}
.options-menu select{width:100%}
.options-menu .fine{font-size:12px;color:var(--map);margin:10px 0 0}
.options-menu .fine:empty{display:none}
/* Ответ потоком (ФТ-81): текст растёт, курсор мигает. */
.msg.ai.streaming .md{line-height:1.65;font-size:15px;overflow-wrap:anywhere}
.caret{display:inline-block;width:8px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:var(--ink-2);
  animation:pulse 1s ease-in-out infinite}
.live-thinking{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:var(--ink-3);margin:0 0 8px;
  overflow:hidden;max-height:3.4em}
.live-thinking svg.i{width:13px;height:13px;flex:none;margin-top:2px}
/* Варианты, правка, сноски, память, поиск и окно модели (ФТ-88 — ФТ-92). */
.msg.me .msg-tools{margin-top:0;gap:2px;color:var(--ink-3);opacity:0;transition:opacity .15s}
.msg.me:hover .msg-tools,.msg.me .msg-tools:focus-within,.msg.me .msg-tools:has(.versions){opacity:1}
.msg-tools .btn{color:var(--ink-3)}
.msg-tools .btn:hover{color:var(--ink)}
.msg-tools svg.i{width:14px;height:14px}
.versions{display:inline-flex;align-items:center;gap:0;font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.versions .btn{padding:2px 7px;font-size:15px;line-height:1}
.versions .btn:disabled{opacity:.35;cursor:default}
.edit-box{width:min(620px,100%);display:flex;flex-direction:column;gap:8px}
.edit-box textarea{width:100%;min-height:76px;resize:vertical;font:inherit;line-height:1.55;color:var(--ink);
  background:var(--surface-3);border:1px solid var(--rule-strong);border-radius:14px;padding:10px 14px}
.edit-box .acts{display:flex;gap:6px;align-items:center}
.edit-box .fine{font-size:12px;color:var(--ink-3)}
sup.cite{line-height:0}
sup.cite button{font:inherit;font-size:10.5px;font-weight:600;color:var(--step);background:var(--step-bg);
  border:1px solid rgba(130,184,255,.3);border-radius:6px;padding:1px 5px;margin:0 1px;cursor:pointer}
sup.cite button:hover{background:rgba(130,184,255,.22)}
.cite-quote{margin:0 0 14px;padding:10px 14px;border-left:3px solid var(--step);background:var(--surface-2);
  border-radius:0 10px 10px 0;font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.cite-page img{display:block;max-width:100%;margin:0 auto;border-radius:10px;border:1px solid var(--rule)}
.cite-page .sk{height:320px}
.memory-card{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:10px;padding:12px 14px;border-radius:14px;
  max-width:560px;background:var(--trust-bg);border:1px solid rgba(91,228,155,.3);color:var(--trust)}
.memory-card > div:not(.acts){flex:1;min-width:200px}
.memory-card b{display:block;color:var(--ink);font-size:13.5px}
.memory-card p{margin:2px 0 0;font-size:13px;color:var(--ink-2);overflow-wrap:anywhere}
.memory-card .acts{display:flex;gap:6px;align-items:center;margin:0}
.memory-notes{list-style:none;margin:14px 0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow-y:auto}
.memory-notes li{display:flex;gap:10px;align-items:center;padding:8px 8px 8px 12px;border:1px solid var(--rule);
  border-radius:10px;background:var(--surface);font-size:13.5px}
.memory-notes li > span{flex:1;min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}
.memory-notes li small{flex:none;font-size:11.5px}
.memory-add{display:flex;gap:8px;align-items:flex-end}
.memory-add textarea{flex:1;font:inherit;font-size:13.5px;color:var(--ink);background:var(--surface-2);
  border:1px solid var(--rule-strong);border-radius:10px;padding:8px 12px;resize:vertical}
.check{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink-2);cursor:pointer}
.options-menu .check{margin-top:12px}
.context-meter{font-size:11.5px;font-family:var(--mono);color:var(--ink-3);white-space:nowrap}
.context-meter.high{color:var(--map)}
a.hit{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:10px;color:var(--ink-2);text-decoration:none;font-size:13px}
a.hit:hover{background:var(--surface-2);color:var(--ink)}
a.hit b{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
a.hit span{overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
a.hit mark{background:rgba(255,200,87,.25);color:var(--ink);border-radius:3px;padding:0 1px}
.msg.flash .bubble,.msg.ai.flash .ai-body{animation:flash 2.4s ease-out}
@keyframes flash{0%,30%{box-shadow:0 0 0 2px rgba(255,200,87,.6);border-radius:14px}100%{box-shadow:0 0 0 2px transparent}}
.composer-note{min-height:18px;font-size:12.5px;color:var(--ink-3);text-align:center;margin-top:6px}
.composer-note .btn{padding:3px 8px}
.slash{position:absolute;left:20px;right:20px;bottom:calc(100% - 6px);max-height:320px;overflow-y:auto;z-index:15;padding:6px;
  background:rgba(20,20,24,.97);border:1px solid var(--rule-strong);border-radius:16px;box-shadow:var(--shadow-2)}
.slash-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:baseline;padding:9px 11px;border-radius:10px;cursor:pointer}
.slash-item[aria-selected="true"],.slash-item:hover{background:var(--surface-3)}
.slash-name{font-family:var(--mono);font-size:13px;font-weight:600}
.slash-desc{font-size:12.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slash-desc b{color:var(--ink);font-weight:600;margin-right:6px}
.slash-kind{font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}
.slash-hint{font-size:12.5px;color:var(--ink-3);padding:9px 11px}

/* --- окна ----------------------------------------------------------------------------------- */
.modal-back.confirm{z-index:80}
.modal.wide{width:min(760px,100%);max-height:88vh;overflow-y:auto}
.modal h3{display:flex;gap:8px;align-items:center}
.modal .field-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin:12px 0 6px}
.modal input[type="text"],.modal select{width:100%}
.modal .fine{font-size:12px;color:var(--ink-3);margin:8px 0 0}
.modal .acts{margin-top:18px}
.pw-row{display:flex;gap:8px}
.pw-row input{flex:1;font-family:var(--mono)}
.sent-block{border-top:1px solid var(--rule);padding:14px 0}
.sent-block .doctext{font-size:13px;line-height:1.8;max-height:320px;overflow:auto}
.help p{color:var(--ink-2);font-size:14px;margin:0 0 12px}
.help b{color:var(--ink)}
.help code{font-family:var(--mono);font-size:12.5px;background:var(--surface-3);border-radius:5px;padding:1px 5px}
.review-back{place-items:stretch;padding:2vh 2vw}
.review-modal{width:auto;max-width:1500px;margin:0 auto;max-height:96vh;overflow-y:auto;padding:16px 20px 20px}
.review-modal-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.review-modal .ws{margin-top:6px}
/* Полоса страниц документа над рабочей областью проверки: десятки страниц —
   номера с прокруткой, а не ряды вкладок. */
.ws-wrap{min-width:0}
.pnav{display:flex;align-items:center;gap:6px;margin:0 0 6px;min-width:0}
.pstrip{display:flex;gap:4px;overflow-x:auto;scrollbar-width:thin;padding:3px 2px;min-width:0;flex:1}
.pchip{flex:none;min-width:32px;height:30px;padding:0 6px;border-radius:8px;border:1px solid var(--rule-strong);
  background:rgba(255,255,255,.03);color:var(--ink-2);font:inherit;font-size:12.5px;font-variant-numeric:tabular-nums;cursor:pointer}
.pchip:hover:not(:disabled){border-color:rgba(255,255,255,.5);color:var(--ink)}
.pchip.on{background:var(--ink);color:#000;border-color:var(--ink);font-weight:600}
.pchip.warn{border-color:rgba(255,200,87,.65);color:#FFD27A;background:rgba(255,200,87,.08)}
.pchip.on.warn{background:#FFD27A;color:#000;border-color:#FFD27A}
.pchip.done{color:var(--trust);border-color:rgba(91,228,155,.3);background:rgba(91,228,155,.08);cursor:default;opacity:.7}
.pnav .pdoubt{flex:none;color:#FFD27A}
.pnav .pdoubt .i{width:14px;height:14px}
.pnav-note{font-size:12px;color:var(--ink-3);margin:0 0 12px 2px}
.review-modal .ws-page,.review-modal .ws-foot{position:static}

/* --- пользователи --------------------------------------------------------------------------- */
.table.users tbody tr{cursor:default}
.table.users tr.off td{opacity:.6}
.table.users select{padding:6px 10px;font-size:13px}
.acts-cell{text-align:right}
.acts-cell .btn{margin:2px 0 2px 4px}
.table-card:has(.users){overflow-x:auto}
.table.users td:first-child{min-width:150px}

/* --- узкие экраны: панель выезжает, лента во всю ширину --------------------------------------- */
@media (max-width: 900px){
  .layout{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:min(86vw,var(--side-w));transform:translateX(-102%);transition:transform .2s ease}
  body.side-open .side{transform:none}
  .side-close{display:inline-flex}
  .topbar{display:flex}
  body.chatting .main{height:100dvh}
  .banner{margin:10px 14px 0}
  .thread{padding:18px 14px 10px}
  .composer-wrap{padding:6px 12px 12px}
  .welcome{margin-top:8vh}
  .welcome h1{font-size:26px}
  .slash{left:12px;right:12px}
  .slash-item{grid-template-columns:auto minmax(0,1fr)}
  .slash-kind{display:none}
  .composer-bar .fine{display:none}
  .btn.research span,.chat-options > .btn span{display:none}
  .options-menu{right:-44px;width:min(260px,calc(100vw - 32px))}
}
@media (max-width: 560px){
  .msg.me{max-width:92%}
  .att .nm{max-width:150px}
  .usage{width:100%;margin:4px 0 0 8px}
}

/* Вложение в поле ввода: имя, размер, убрать. */
.attach-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 10px;border-radius:var(--pill);
  background:var(--surface-2);border:1px solid var(--rule-strong);max-width:100%;font-size:13px}
.attach-chip .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
.attach-chip svg.i{width:14px;height:14px}
.attach-chip small{color:var(--ink-3)}
.attach-chip .btn.icon{padding:2px 8px;font-size:15px}

/* Ширину экрана теперь задаёт не окно, а место справа от боковой панели: раскладки
   документа и проверки перестраиваются по ширине своей области (контейнерные запросы). */
.main .app{container-type:inline-size}
@container (max-width: 1180px){
  .ws{grid-template-columns:minmax(0,1fr)}
  .ws-page{position:static}
}
@container (max-width: 1080px){
  .review-layout{grid-template-columns:minmax(0,1fr)}
  .qlist{position:static;flex-direction:row;overflow-x:auto;padding-bottom:4px}
}
@container (max-width: 900px){
  .sbs,.compare,.upload-grid{grid-template-columns:minmax(0,1fr)}
  .sbs .preview-box{position:static}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@container (max-width: 640px){
  .pipe{grid-template-columns:1fr}
  .pstep{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 15px;border-right:none;border-bottom:1px solid var(--rule)}
  .pstep:last-child{border-bottom:none}
  .pstep .ms{margin-top:0;padding-left:0;min-height:0}
  .metrics{grid-template-columns:1fr}
}

/* --- команда и компания (ФТ-94, ФТ-95) ------------------------------------------------------ */
.admin-tabs{margin-bottom:18px}
.admin-tabs a.tab{text-decoration:none;display:inline-flex;align-items:center}
.admin-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.admin-actions input[type="search"]{min-width:220px}
.projectlist a .team-mark{margin-left:auto;flex:none;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:10.5px;color:var(--ink-3);border:1px solid var(--rule-strong);border-radius:var(--pill);padding:1px 7px}
.team-line{font-size:13px;color:var(--step);margin-top:4px}
.team-line:empty{display:none}
.team-layout{display:grid;grid-template-columns:minmax(200px,280px) minmax(0,1fr);gap:16px;align-items:start}
.team-list{display:flex;flex-direction:column;gap:2px;padding:8px}
.team-list a{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;color:var(--ink-2);text-decoration:none}
.team-list a:hover{background:var(--surface-2);color:var(--ink)}
.team-list a.active{background:var(--surface-3);color:var(--ink)}
.team-list a span{display:flex;flex-direction:column;min-width:0}
.team-list a b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.team-list small{font-size:12px;color:var(--ink-3)}
.team-detail{padding:18px 20px}
.team-detail h2{font-size:18px;margin:0}
.team-detail .table td,.team-detail .table th{padding-left:6px;padding-right:6px}
.member-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:16px}
.member-add input{flex:1;min-width:180px}
.team-detail .fine{font-size:12px;color:var(--ink-3);margin:10px 0 0}
.policy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.policy-card{padding:18px 20px}
.policy-card h2{font-size:16px;font-weight:600;margin:0 0 12px}
.policy-card .fine{font-size:12px;color:var(--ink-3);margin:0 0 8px}
.policy-card input[type="text"],.policy-card select,.policy-card textarea{width:100%}
.policy-card textarea{margin-top:8px;resize:vertical;font:inherit;font-size:13.5px}
.checks{display:flex;flex-direction:column;gap:8px}
.check.off{opacity:.55;cursor:default}
.table.usage-table td.num,.table.usage-table th:nth-child(n+2):nth-child(-n+4){text-align:right;font-variant-numeric:tabular-nums}
.table.usage-table tbody tr,.table.audit tbody tr{cursor:default}
.table.audit tr.off td{color:var(--ext)}
.small{font-size:12px}
.bar{height:8px;border-radius:var(--pill);background:var(--surface-3);overflow:hidden;min-width:90px}
.bar i{display:block;height:100%;background:var(--trust);border-radius:var(--pill)}
.bar.warn i{background:var(--map)}
.bar.full i{background:var(--ext)}
.metric.bad .v{color:var(--ext)}
.limit-note{display:flex;gap:8px;align-items:center;justify-content:center;font-size:12.5px;color:var(--map);margin-top:6px}
.limit-note.bad{color:var(--ext)}
.limit-note svg.i{width:14px;height:14px;flex:none}
@container (max-width: 900px){
  .team-layout,.policy{grid-template-columns:minmax(0,1fr)}
}
/* Документы из коннектора (ФТ-97). */
.attach-chip.linked{border-color:rgba(130,184,255,.35)}
.attach-chip.linked svg.i{color:var(--step)}
.connector-modal select{width:100%;margin-bottom:10px}
.connector-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.connector-bar .crumbs{display:flex;align-items:center;gap:2px;flex-wrap:wrap;color:var(--ink-3);flex:1;min-width:0}
.connector-bar input{min-width:200px}
.connector-items{display:flex;flex-direction:column;gap:4px;max-height:50vh;overflow-y:auto}
.connector-item{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;border:1px solid var(--rule);
  background:var(--surface);color:var(--ink);font:inherit;font-size:13.5px;text-align:left}
button.connector-item{cursor:pointer}
button.connector-item:hover{background:var(--surface-2)}
.connector-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.connector-item small{color:var(--ink-3);font-size:12px}
.connector-item svg.i{width:15px;height:15px;flex:none}
/* Картинка через судью (ФТ-96): ровно то, что уйдёт. */
.redacted-card{display:flex;flex-direction:column;gap:10px;margin:0 0 14px;padding:12px 14px;border-radius:14px;
  border:1px solid rgba(91,228,155,.3);background:var(--trust-bg)}
.redacted-card b{display:flex;gap:8px;align-items:center;color:var(--ink)}
.redacted-card p{margin:2px 0 0;font-size:12.5px;color:var(--ink-2)}
.redacted-frame{border:1px solid var(--rule);border-radius:10px;overflow:hidden;background:#000;max-height:60vh;overflow-y:auto}
.redacted-frame img{display:block;max-width:100%;margin:0 auto}
.redacted-frame .sk{height:220px}

/* --- Единый вид новых экранов (этап 4): флажки, формы политики, «Передано модели» --- */
input[type="checkbox"]{width:16px;height:16px;margin:0;accent-color:#fff;cursor:pointer;flex:none}
.policy-card .field-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-2);margin:16px 0 6px}
.policy-card h2 + .field-label,.policy-card .fine + .field-label{margin-top:0}
.policy-card .check{padding:3px 0;font-size:13.5px}
.policy-card .check:has(> input:checked){color:var(--ink)}
/* Просьба, ответ, инструкции, память и сводка — текст, а не вёрстка документа: переносятся. */
.sent-block .doctext.wrap{white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:hidden}
.memory-add{align-items:center}
@media (max-width:560px){
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric{padding:13px 14px}
  .metric .v{font-size:22px}
}
