/* Сброс, базовые элементы, типографика, фокус, отключённые элементы.
   Часть CRM аренды. ПОРЯДОК ПОДКЛЮЧЕНИЯ ВАЖЕН: правила ниже перекрывают правила выше.
   Свёрнуто из 01-base-v1.css и типографики 03-components-v1 / 09-portfolio-v2.
   Поведение из CODEX-NOTES §7 сохранено: :focus-visible, button:disabled, курсоры. */

* {
  box-sizing: border-box;
}

html {
  background: var(--night);
}

body {
  margin: 0;
  /* Земля с виньеткой: слой частиц (DES-6) ложится поверх неё, не под панели. */
  background: var(--ground);
  background-attachment: fixed;
  color: var(--pearl);
  font-family: var(--font-ui);
  font-size: var(--text-15);
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}

/* Табличные цифры по всей системе: суммы не «прыгают» между строками.
   Шорткат font: сбрасывает это свойство — в новых правилах он не применяется. */
.money,
.metric-value,
table,
input,
output,
time {
  font-variant-numeric: tabular-nums;
}

button,
input,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

button {
  cursor: pointer;
}

button:disabled {
  cursor: wait;
  opacity: var(--state-disabled);
}

a {
  color: var(--lavender);
}

/* --- Видимый фокус на всём интерактивном. Амбра ≥ 9.3:1 к любой поверхности. --- */
button,
a,
input,
select,
textarea,
summary,
[tabindex] {
  outline-offset: var(--focus-offset);
}

button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: var(--focus-width) solid var(--focus);
  outline-offset: var(--focus-offset);
}

/* Сам <dialog> получает фокус при showModal, но не является органом управления:
   рамка должна быть на кнопке или поле внутри, а не вокруг всего листа. */
dialog:focus,
dialog:focus-visible {
  outline: none;
}

/* В прокручиваемых контейнерах смещение рамки обрезалось краем — рисуем внутрь. */
.table-wrap :focus-visible,
.nav :focus-visible,
.sc-windows :focus-visible {
  outline-offset: -1px;
}

::selection {
  background: var(--state-active);
  color: var(--pearl);
}

:root {
  scrollbar-color: var(--border-strong) transparent;
  scrollbar-width: thin;
}

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-thumb {
  background: var(--border-strong);
  border-radius: var(--radius-pill);
}

::placeholder {
  color: var(--mist);
}

/* --- Типографика. Шкала 14 / 15 / 16 / 18 / 20 / 24 / 34 / 48 (01-tokens.css).
       Минимум на экране — 14px: правило CONVENTIONS §8 для пользователей
       старше 40–50 лет. --- */
h1 {
  font-size: var(--text-h1);
  line-height: 1.18;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 8px 0 10px;
}

h2 {
  font-size: var(--text-h2);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin: 0;
}

/* Подзаголовок панели сравнялся с основным текстом по кеглю (16px, решение
   владельца п. 57), поэтому уровень держит вес: 700 против 400 у текста. */
h3 {
  font-size: var(--text-h3);
  font-weight: 700;
  line-height: 1.35;
  margin: 0;
}

p {
  margin: 8px 0;
}

small {
  font-size: var(--text-13);
}

strong,
b {
  font-weight: 650;
}

.muted {
  color: var(--mist);
}

/* Надзаголовок остаётся в разметке JS до переписывания heading() — здесь он приглушён. */
.eyebrow,
.nav-label {
  font-size: var(--text-aux);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 700;
  color: var(--mist);
}

.eyebrow.light {
  color: var(--lavender);
}

.footnote {
  font-size: var(--text-13);
  color: var(--mist);
  margin-top: 15px;
  max-width: 72ch;
}

.initial,
.loading {
  padding: 60px;
  color: var(--mist);
}

.loading {
  padding: 50px;
  text-align: center;
}

@keyframes enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@keyframes drawer-in {
  from {
    opacity: 0;
    transform: translateX(28px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
