/** Кабинеты владельца и клиента: работа с ноутбука, светлая тема, плотная сетка. */
body.app-console {
  max-width: 1040px;
  margin: 0 auto;
  padding: var(--space-5) var(--space-4) var(--space-6);
}
.app-header {
  display: flex; align-items: center; gap: var(--space-4);
  padding-bottom: var(--space-4); margin-bottom: var(--space-5);
  border-bottom: 1px solid var(--line);
}
.app-header h1 { font-size: var(--text-xl); margin: 0; }
.app-header .sub { color: var(--text-muted); font-size: var(--text-sm); }

.login-wrap { max-width: 400px; margin: 10vh auto; }

.panel { margin-bottom: var(--space-5); }
.panel > h2 {
  font-size: var(--text-sm); text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-muted); margin: 0 0 var(--space-3);
}

.kv { display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-4); font-size: var(--text-sm); }
.kv dt { color: var(--text-muted); }
.kv dd { margin: 0; font-weight: 600; }

/* Выданная ссылка показывается ОДИН раз — оформляем так, чтобы это было очевидно. */
.issued {
  border: 2px dashed var(--ok);
  background: color-mix(in srgb, var(--ok) 8%, transparent);
  border-radius: var(--radius-md); padding: var(--space-4);
}
.issued code {
  display: block; word-break: break-all; font-family: var(--font-numeric);
  font-size: var(--text-sm); background: var(--bg-sunken);
  padding: var(--space-3); border-radius: var(--radius-sm); margin: var(--space-3) 0;
}
.qr { display: block; margin: var(--space-3) auto; image-rendering: pixelated; width: 220px; height: 220px; }

.steps { counter-reset: step; display: grid; gap: var(--space-3); padding: 0; margin: 0; list-style: none; }
.steps li {
  display: grid; grid-template-columns: 32px 1fr; gap: var(--space-3); align-items: start;
}
.steps li::before {
  counter-increment: step; content: counter(step);
  display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%;
  background: var(--team-a); color: #fff; font-weight: 800; font-size: var(--text-sm);
}
.steps li[data-done="true"]::before { background: var(--ok); content: "✓"; }
.steps li h3 { margin: 0 0 2px; font-size: var(--text-md); }
.steps li p { margin: 0; color: var(--text-muted); font-size: var(--text-sm); }

/*
 * Уведомление кабинета прибито к низу ОКНА, а не к концу страницы.
 * Было: #notice — последний элемент разметки; на 1280×800 кнопка «Сохранить» оказывалась на
 * y=1145, а сообщение о результате — на y=1806, то есть на 613 px ниже видимой области, и
 * гасло через шесть секунд. И «Адрес сохранён», и «Вставьте ключ» уходили в никуда.
 */
#notice {
  position: fixed;
  left: 50%; bottom: 24px; transform: translateX(-50%);
  z-index: 50; width: min(560px, calc(100vw - 32px));
  box-shadow: var(--shadow-raised);
  background: var(--bg-raised);
}
#notice[hidden] { display: none; }
