/* Палитра взята с svoya-sistema.ru: это один и тот же инструмент в руках
   одного человека, и переключаться между разными оформлениями незачем. */
:root{
  --bg:#0B0F14; --panel:#131A22; --panel-2:#0F151C;
  --line:rgba(230,237,243,.10); --line-2:rgba(230,237,243,.06);
  --ink:#E6EDF3; --ink-2:#A7B4C2; --ink-3:#6C7B8B;
  --acc:#FFB020; --bad:#FF6B5A; --good:#57E08A;
  --pad:clamp(14px,3vw,28px);
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.5 -apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  -webkit-text-size-adjust:100%}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--acc)}
h1{font-size:clamp(22px,3vw,30px);margin:0 0 4px;letter-spacing:-.02em}
h2{font-size:17px;margin:26px 0 10px;color:var(--ink-2);font-weight:600}
h3{font-size:16px;margin:0}
.wrap{max-width:1500px;margin:0 auto;padding:18px var(--pad) 70px}
.narrow{max-width:420px;margin:0 auto;padding:12vh 20px 60px}
.muted{color:var(--ink-3)}
.small{font-size:13.5px}

/* ---------- шапка ---------- */
/* Полоса шапки тянется во всю ширину окна, а её содержимое сидит в той же
   колонке, что и страница. Без этого на широком мониторе содержимое уезжало
   в середину (max-width: 1500px), а название и меню оставались у левого края -
   выглядело как съехавшая вёрстка. Проверено на окне 2293 px. */
/* Боковой отступ задаётся ВНУТРИ колонки, а не снаружи - как у .wrap.
   Если его повесить на саму полосу, колонка центруется в уже суженной
   области и содержимое шапки расходится с заголовком страницы ровно на
   величину отступа. */
.top{padding:0;border-bottom:1px solid var(--line-2);background:var(--panel-2)}
.top-in{max-width:1500px;margin:0 auto;padding:12px var(--pad);
  display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:-.01em}
.top nav{display:flex;gap:4px;flex-wrap:wrap}
.top nav a{padding:7px 12px;border:1px solid transparent;font-size:14.5px}
.top nav a.on{border-color:var(--line);background:var(--panel)}
.top nav a.add{color:var(--acc);border-color:var(--line)}
.me{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:13.5px}
.me a{color:var(--ink-3)}
.linkish{background:none;border:0;color:var(--ink-3);cursor:pointer;font:inherit;font-size:13.5px;padding:0}
.linkish:hover{color:var(--acc)}

.flash{margin:0;padding:0;font-size:14.5px;border-bottom:1px solid var(--line-2)}
.flash-in{max-width:1500px;margin:0 auto;padding:11px var(--pad)}
.flash.ok{background:rgba(87,224,138,.10);color:var(--good)}
.flash.bad{background:rgba(255,107,90,.10);color:var(--bad)}

/* ---------- формы ---------- */
label{display:block;font-size:13px;color:var(--ink-3);margin:0 0 5px;letter-spacing:.02em}
input,select,textarea{width:100%;padding:10px 12px;background:var(--panel-2);
  border:1px solid var(--line);color:var(--ink);font:inherit;border-radius:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--acc);outline-offset:-2px;border-color:transparent}
textarea{min-height:76px;resize:vertical}
.row{display:grid;gap:14px;margin-bottom:14px}
.row.c2{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.row.c3{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.btn{display:inline-block;padding:11px 20px;background:var(--acc);color:#14181D;
  border:0;font:inherit;font-weight:700;cursor:pointer}
.btn:hover{opacity:.9;color:#14181D}
.btn.ghost{background:none;color:var(--ink);border:1px solid var(--line);font-weight:500}
.btn.ghost:hover{border-color:var(--acc);color:var(--acc)}
.btn.danger{background:none;color:var(--bad);border:1px solid var(--line);font-weight:500}
.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:18px}
fieldset{border:1px solid var(--line);padding:16px;margin:0 0 16px}
legend{color:var(--ink-3);font-size:13px;padding:0 8px}
.err{color:var(--bad);font-size:13.5px;margin:0 0 12px}

/* ---------- списки «Сегодня» ---------- */
.lane{border:1px solid var(--line);background:var(--panel);margin-bottom:8px;
  display:flex;gap:14px;align-items:flex-start;padding:13px 16px;flex-wrap:wrap}
.lane .nm{font-weight:600;min-width:200px;flex:1 1 220px}
.lane .act{flex:2 1 320px;color:var(--ink-2);font-size:14.5px}
.lane .when{font-size:13px;color:var(--ink-3);white-space:nowrap}
.lane.hot{border-left:3px solid var(--bad)}
.lane .tag{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);
  border:1px solid var(--line);padding:3px 8px;white-space:nowrap}
.empty{color:var(--ink-3);padding:14px 0;font-size:14.5px}
.count{color:var(--ink-3);font-weight:400;font-size:14px}

/* ---------- доска ---------- */
/* align-items: stretch, а НЕ flex-start. При flex-start каждая колонка была
   высотой только по своим карточкам: в «Кандидате» их одиннадцать, в «Написал»
   три - и, прокрутив вниз, человек видел слева карточки, а справа пустоту.
   Бросить было некуда, приходилось сначала листать наверх.
   Теперь все колонки одной высоты, и цель для переноса есть на любом уровне. */
/* Доска занимает высоту экрана, а не высоту своего содержимого. До 14.10.2026
   было наоборот: доска росла вниз вместе с самой длинной колонкой, её полоса
   горизонтальной прокрутки оказывалась ниже сгиба, и чтобы добраться до правых
   колонок, надо было сперва уехать в самый низ страницы.
   Точную высоту ставит board_controller по месту доски на экране - здесь запас
   на случай, если разметка приехала, а скрипт нет. */
.board{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;align-items:stretch;
  max-height:calc(100dvh - 200px);overscroll-behavior-x:contain}
/* Полосы прокрутки красим сами: по умолчанию они светлые и на тёмной доске
   выглядят как чужая деталь. Только здесь, без color-scheme на весь документ -
   тот заодно перекрасил бы выпадающие списки. */
.board,.col-body{scrollbar-color:var(--ink-3) transparent}
/* Пока доску тащат мышью, текст не выделяем - иначе вместо прокрутки
   получается синее выделение поперёк всех колонок. */
.board.panning{cursor:grabbing;user-select:none}
.wrap.tight{padding-bottom:18px}
.col{flex:0 0 268px;background:var(--panel-2);border:1px solid var(--line-2);min-height:120px;
  display:flex;flex-direction:column;max-height:100%}
.col h3{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);
  padding:11px 13px;border-bottom:1px solid var(--line-2);display:flex;justify-content:space-between}
.col.over{outline:2px dashed var(--acc);outline-offset:-2px}
/* Вертикальная прокрутка переехала со страницы внутрь колонки: доска теперь
   ростом с экран, и длинный «Кандидат» листается сам по себе.
   min-height:0 обязателен. Без него flex-ребёнок не даёт себя сжать ниже
   содержимого, колонка распирает доску, и overflow-y не включается вовсе. */
.col-body{padding:9px;display:flex;flex-direction:column;gap:9px;flex:1;
  min-height:0;overflow-y:auto}
.card{background:var(--panel);border:1px solid var(--line);padding:11px 12px;cursor:grab}
.card:active{cursor:grabbing}
.card.dragging{opacity:.4}
.card .cn{font-weight:600;font-size:14.5px;display:block;margin-bottom:3px}
.card .cm{font-size:12.5px;color:var(--ink-3);margin-bottom:6px}
.card .ca{font-size:13px;color:var(--ink-2)}
.card .cd{font-size:12px;margin-top:5px;color:var(--ink-3)}
.card .cd.hot{color:var(--bad)}

/* ---------- карточка компании ---------- */
.head{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-bottom:6px}
.head .grow{flex:1 1 320px}
.grid2{display:grid;gap:22px;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));align-items:start}
.panel{border:1px solid var(--line);background:var(--panel);padding:16px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:7px 16px;font-size:14.5px}
.kv dt{color:var(--ink-3);font-size:13px}
.kv dd{margin:0}
.log{list-style:none;margin:0;padding:0}
.log li{border-bottom:1px solid var(--line-2);padding:10px 0;font-size:14.5px}
.log li:last-child{border-bottom:0}
.log .meta{color:var(--ink-3);font-size:12.5px;margin-bottom:3px;display:flex;gap:10px;align-items:center}
.pill{display:inline-block;padding:3px 9px;border:1px solid var(--line);font-size:12px;color:var(--ink-2)}
table{width:100%;border-collapse:collapse;font-size:14.5px}
th{text-align:left;font-size:12.5px;color:var(--ink-3);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:10px;border-bottom:1px solid var(--line-2)}
tr:hover td{background:var(--panel)}

/* ---------- вход ---------- */
.gate h1{margin-bottom:18px}
.gate .row{margin-bottom:16px}
.gate .btn{width:100%}
.code{font-size:26px;letter-spacing:.36em;text-align:center;font-family:ui-monospace,Consolas,monospace}
.secret{font-family:ui-monospace,Consolas,monospace;font-size:15px;letter-spacing:.08em;
  background:var(--panel-2);border:1px solid var(--line);padding:12px;word-break:break-all;margin:10px 0}

@media (max-width:640px){
  .lane{gap:8px}
  .lane .nm{flex-basis:100%}
  .me{width:100%;margin-left:0}
}

/* ---------- квадратный код второго фактора ---------- */
/* Белая подложка обязательна: сканеры читают тёмное по светлому, а на
   чёрном фоне сайта код просто не возьмётся. */
.qr{
  background:#fff;padding:14px;display:inline-block;margin:14px 0;line-height:0;
}
.qr svg{width:min(216px,60vw);height:auto;display:block}
ol.steps{padding-left:20px;line-height:1.75;color:var(--ink-2);margin:10px 0 4px}
ol.steps b{color:var(--ink)}
details summary{cursor:pointer;padding:6px 0}

.warn{border-left:3px solid var(--acc);padding:10px 14px;background:var(--panel-2);
  color:var(--ink-2);max-width:46ch;margin:4px 0 14px}

/* ---------- глазок у поля пароля ---------- */
/* Кнопка лежит поверх правого края поля, поэтому полю добавляется отступ
   справа - иначе длинный пароль уезжает под неё. */
.peek{ position: relative; }
.peek input{ padding-right: 92px; }
.peek-btn{
  position: absolute; right: 1px; top: 1px; bottom: 1px; width: 88px;
  background: none; border: 0; border-left: 1px solid var(--line);
  color: var(--ink-3); font: inherit; font-size: 12.5px; cursor: pointer;
  letter-spacing: .04em;
}
.peek-btn:hover{ color: var(--acc); }
.peek-btn.is-on{ color: var(--acc); }
.peek-btn.is-on span::after{ content: "·"; }

/* Анкета с сайта в карточке. Сводка приходит готовым многострочным текстом -
   переносы строк сохраняем как есть, разметки в ней нет и быть не должно. */
.anketa{border-top:1px solid var(--line-2);margin-top:10px;padding-top:8px}
.anketa:first-of-type{border-top:0}
.anketa > summary{font-size:14.5px}
.anketa-sum{display:flex;gap:10px 26px;flex-wrap:wrap;margin:8px 0 10px}
.anketa-sum b{display:block;font-size:17px}
.anketa-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:14.5px;line-height:1.55;
  background:var(--panel-2);border:1px solid var(--line-2);padding:12px 14px;margin:0;max-height:520px;overflow:auto}
pre.anketa-text{font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
