/* ============================================================================
   ПАНЕЛЬ МАСТЕРА — бэкапы, место платформы, обновление, файлы сервера.

   Подключается после deos.css и только уточняет то, что там уже названо.
   Своих цветов, отступов и скруглений здесь нет: всё берётся из переменных
   дизайн-кода.

   Списков своего вида здесь не заводится. Дни бэкапов, компании и их место
   показаны таблицей-сеткой, прошлые сборки — сворачиваемым списком, пары
   «название — значение» — общим списком фактов. Ряд карточек вместо строк
   был ошибкой и убран.
   ========================================================================= */

/* ── ПОЛОСА ЗАНЯТОГО МЕСТА.
   Одна на весь раздел: и диск установки, и предел компании отвечают на
   один вопрос — сколько занято из сколького. Вид взят у полосы квоты на
   сводке (`.dash-quota` в deos.css): мера та же, и узнавать её заново на
   другом экране не приходится. Классы свои: общий файл оформления этот
   раздел не правит, а числа берутся из шкалы, поэтому полоса повторяет
   вид сводки, а не её точные пиксели. */
.ms-disk-l {
  display: flex; justify-content: space-between; gap: var(--sp-100);
  margin-bottom: var(--sp-050);
  font-size: var(--fs-s); line-height: var(--lh-s); color: var(--ink2);
}
.ms-disk-t {
  height: var(--sp-075);
  border-radius: var(--r-full);
  background: var(--field2);
  border: var(--bw) solid var(--line);
  overflow: hidden;
}
.ms-disk-f { height: 100%; background: var(--acc); border-radius: var(--r-full); }
.ms-disk-n {
  margin-top: var(--sp-050);
  font-size: var(--fs-s); line-height: var(--lh-s); color: var(--ink3);
}
/* Место кончается — предупреждение, а не тревога: программа работает и
   так, но следующий бэкап может не поместиться. Красного здесь нет: он
   означал бы, что уже случилась беда. */
.ms-disk.tight .ms-disk-f { background: var(--warn); }
.ms-disk.tight .ms-disk-l { color: var(--warn-ink); }

/* ── ЗАГОЛОВОК ЧАСТИ ОКНА. Разделяет поля разворачивания компании на
   смысловые части. Отступ сверху — из шкалы, а не число по месту. */
.ms-sec { margin-top: var(--sp-250); }

/* ── УЗКОЕ ПОЛЕ. Название платформы — короткая строка, и растянутое на
   всю ширину карточки поле обещает длинный текст, которого не будет. */
.ms-narrow { max-width: 320px; }

/* ── ОБНОВЛЕНИЕ: ЧЕМ ЗАНЯТ ЭКРАН.
   Полоса о ходе установки. Слабый фирменный фон, а не предупреждение и не
   тревога: идущая установка — это обычный ход дела, и красить её цветом
   состояния значило бы обещать беду там, где её нет. Строка стоит там же,
   где встанет ответ, — иначе взгляд после перезапуска ищет его на новом
   месте. */
.ms-work {
  background: var(--acc-weak);
  color: var(--acc-ink);
  font-weight: var(--fw-med);
}

/* ── ВЫВОД ИСПОЛНИТЕЛЯ.
   То, что напечатал update.sh, показывается как есть: человеку нужно
   видеть, на каком шаге всё встало. Переносы сохраняются (`pre-wrap`) —
   без них пять шагов установки слипаются в один абзац, — а длинные пути
   рвутся по любому месту, иначе коробка растягивается шире карточки.

   Высота ограничена: неудачное обновление печатает сотни строк, и раздел
   превращался бы в один длинный свиток, в котором не видно ни списка
   прошлых сборок, ни кнопок. Внутренняя коробка объявляет свой отступ в
   `--pad` и считает через него скругление — по закону вложенного
   скругления. */
.ms-out {
  --pad: var(--gap);
  max-height: 320px;
  padding: var(--sp-150);
  border: var(--bw) solid var(--line);
  border-radius: calc(var(--r-l) - var(--pad));
  background: var(--field2);
  font-size: var(--fs-s); line-height: var(--lh-s); color: var(--ink2);
  white-space: pre-wrap; overflow-wrap: anywhere;
  /* Прокрутка объявлена здесь, а не общим списком в deos.css: этот раздел
     общий файл оформления не правит, а без прокрутки ограничение высоты
     просто отрезало бы конец вывода — то самое место, где сказана
     причина. */
  overflow: auto;
}

/* ── ФАЙЛЫ СЕРВЕРА: выбор корня и путь.
   Полоса шапки карточки (`.card-head`) уточняется двумя вещами: ряд
   переносится на узком окне и держит больший зазор — сегмент, крошки и
   кнопка возврата иначе слипаются в одно пятно. */
.ms-place { flex-wrap: wrap; gap: var(--sp-150); }

/* Крошки пути — надписи, а не кнопки: ряд кнопок читался бы как набор
   действий, а это одно действие с разной глубиной. Коробка объявляет
   центрирование сама: общий блок центрирования лежит в deos.css, и этого
   класса там нет. */
.ms-crumbs {
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-050);
  font-size: var(--fs-s); line-height: var(--lh-s);
}
.ms-crumb {
  display: inline-flex; align-items: center; justify-content: center;
  height: var(--h-btn-sm);
  padding: 0 var(--sp-100);
  border: 0; background: none;
  border-radius: var(--r-s);
  font: inherit; color: var(--acc-ink);
  cursor: pointer;
}
.ms-crumb:not(.here):hover { background: var(--acc-weak); }
/* Место, где стоим, нажимать незачем: оно уже открыто. Отсюда и отсутствие
   подсветки под указателем — она обещала бы переход, которого не будет. */
.ms-crumb.here { color: var(--ink); font-weight: var(--fw-semi); cursor: default; }
.ms-crumb-sep { color: var(--ink3); }

/* ── ТАБЛИЦА ФАЙЛОВ. Строка целиком ведёт внутрь папки или предлагает
   выгрузить файл, поэтому у неё палец, а не стрелка. */
/* Имя записи в обходе папок — кнопка, а не строка целиком. Строка
   таблицы в программе не нажимается; нажимается то, что названо
   действием, и здесь это имя: папку открывают, файл выгружают. */
.ms-name {
  overflow-wrap: anywhere; text-align: left;
  border: 0; background: none; padding: 0; cursor: pointer;
  font: inherit; color: var(--acc-ink);
}
.ms-name:hover { text-decoration: underline; }
.ms-name.dir { font-weight: var(--fw-med); }
