/* =====================================================================
   PROFOTBOR CABINET v1 — рамка кабинета рекрутёра
   Правила — docs/DESIGN.md, «Дизайн-долг»; решение — D-040; задача — 060.

   Файл рамки, а не системы: здесь живут компоненты, общие для пяти
   экранов кабинета без собственных эталонов (кандидаты, назначения,
   настройки, хранилище, вход) — шапка с навигацией, заголовок, таблица,
   форма, строка ошибки, коробка со ссылкой. Прецедент — home.css:
   отдельный файл рядом с ui-kit.css, а не правка кита или house.css.

   Перекраска, а не переделка: фон один — --bg страницы — везде, кроме
   коробки со ссылкой (у неё своя заливка и сегодня); ни таблица, ни
   форма не получают отдельного «листа», которого не было в разметке.

   Цвета только токенами (значения — house.css, кабинет всегда на
   поверхности «дом», data-surface="house" на <html>). Ни одного нового
   имени токена. Системный шрифт — веб-шрифты в кабинет не идут (D-040).
   ===================================================================== */

.cabinet {
  margin: 0;
  min-height: 100vh;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}
.cabinet *, .cabinet *::before, .cabinet *::after { box-sizing: border-box; }

/* .btn из ui-kit.css рассчитан на кнопку во всю ширину экрана кандидата
   (width:100%); в кабинете кнопка — по содержанию, как сегодня. Тот же
   приём, что у .btn--inline в home.css, но здесь кнопка не одна — общий
   сброс для всей рамки, а не именной модификатор на одну кнопку. */
.cabinet .btn { display: inline-flex; width: auto; padding: 0 20px; text-decoration: none; }

/* ---------- шапка с навигацией ---------------------------------------- */

/* Плоская, без своего фона — как в сегодняшней разметке (border-bottom и
   ничего больше): перекраска не добавляет то, чего не было. */
.cabinet__bar {
  border-bottom: 1px solid var(--line);
}
.cabinet__nav {
  max-width: 48rem;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 20px;
  min-height: 56px;
  padding: 10px var(--pad);
}
.cabinet__nav a {
  color: var(--accent-ink);
  text-decoration: none;
  font-weight: 600;
}
/* Кнопка выхода/копирования — .btn из ui-kit.css, фокус у неё уже есть. */
.cabinet__nav a:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}
.cabinet__logout { margin-left: auto; }

/* ---------- тело экрана ------------------------------------------------ */

.cabinet__main {
  max-width: 48rem;
  margin: 0 auto;
  padding: 28px var(--pad) 48px;
}
.cabinet__main > .h1 { margin-bottom: var(--gap); }

/* Подзаголовок раздела (Settings.cshtml) — эталон 09-cabinet-frame.html
   его не демонстрировал (в трёх показанных состояниях его не было),
   поэтому в контракт Задачи 060 не попал; добавлено здесь тем же
   приёмом, что .doc h2 в ui-kit.css, — вопрос синхронизации с эталоном
   у DESIGNER, блокирующим не является. */
.cabinet h2 { font-size: 17px; font-weight: 700; margin: 28px 0 10px; }

/* Рамка формы — тот же приём, что сегодня даёт браузерный fieldset,
   только цветом дома: обводка, без своей заливки. Фон везде один — --bg
   страницы, поэтому текст внутри (в т.ч. строка ошибки) остаётся именно
   на --bg, а не проваливается на отдельный «лист». */
.cabinet__panel {
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
  padding: var(--pad);
  margin-top: 24px;
}
.cabinet__panel-title {
  margin: 0 0 var(--gap);
  font-weight: 700;
}

/* ---------- таблица данных --------------------------------------------- */

/* Без своей рамки и заливки — как сегодняшняя таблица, только цвет.
   Обёртка даёт горизонтальную прокрутку самой таблице, а не странице —
   правило «нет горизонтальной прокрутки страницы» действует и в кабинете. */
.cabinet__table-scroll { overflow-x: auto; margin-top: var(--gap); }
.cabinet__table { width: 100%; border-collapse: collapse; }
.cabinet__table th, .cabinet__table td {
  text-align: left;
  padding: 9px 10px;
  white-space: nowrap;
  border-bottom: 1px solid var(--line);
}
.cabinet__table thead th {
  font-size: var(--text-meta);
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--ink-3);
  border-bottom: 1px solid var(--line-strong);
}
.cabinet__table tbody tr:last-child td { border-bottom: 0; }

/* ---------- форма -------------------------------------------------------- */

/* Сброс нативного fieldset: рамку и отступ несёт .cabinet__panel. */
.cabinet__form { border: 0; padding: 0; margin: 0; }
.cabinet__form label {
  display: block;
  margin: 14px 0 4px;
  font-size: var(--text-meta);
  color: var(--ink-2);
}
.cabinet__form label:first-of-type { margin-top: 0; }
.cabinet__form input,
.cabinet__form select {
  display: block;
  width: 100%;
  max-width: 320px;
  min-height: 40px;
  padding: 0 10px;
  font: inherit;
  color: var(--ink);
  background: var(--surface);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius);
}
.cabinet__form input:focus-visible,
.cabinet__form select:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 2px;
}
.cabinet__form .btn { margin-top: 18px; }

/* ---------- строка ошибки ------------------------------------------------ */

/* Просто текст цветом --danger на --bg (расчёт — в карточке задачи):
   перекраска сохраняет исходное оформление кабинета, где ошибка — строка,
   а не плашка. */
.cabinet__error { color: var(--danger); margin: 14px 0 0; }

/* ---------- коробка со ссылкой ------------------------------------------- */

.cabinet__link-box {
  background: var(--surface-2);
  border-radius: var(--radius);
  padding: var(--pad);
  margin: var(--gap) 0;
  word-break: break-all;
}
