html, body{
  font-family: var(--crm-font);
}
body.crm-admin-page,
body.crm-report-page,
body.crm-auth-page,
body.crm-public-page,
body.crm-doc-page{
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.crm-admin-page *, .crm-report-page *, .crm-auth-page *, .crm-public-page *, .crm-doc-page *{ box-sizing: border-box; }
.crm-admin-page h1, .crm-report-page h1, .crm-auth-page h1, .crm-public-page h1, .crm-doc-page h1{
  font-size: clamp(28px, 2.1vw, 38px);
  line-height: 1.12;
  letter-spacing: -.02em;
  margin: 0 0 12px;
}
.crm-admin-page h2, .crm-report-page h2, .crm-doc-page h2, .crm-public-page h2{
  font-size: clamp(20px, 1.3vw, 24px);
  line-height: 1.18;
  letter-spacing: -.015em;
}
.crm-admin-page h3, .crm-report-page h3, .crm-doc-page h3, .crm-public-page h3{
  font-size: 15px;
  line-height: 1.3;
  letter-spacing: -.01em;
}
.crm-admin-page p, .crm-report-page p, .crm-auth-page p, .crm-public-page p, .crm-doc-page p,
.crm-admin-page li, .crm-report-page li, .crm-public-page li, .crm-doc-page li{
  line-height: 1.58;
}

/* Утилита: скрытие элемента (замена инлайнового style="display:none").
   !important нужен, чтобы перебить составные селекторы вроде
   `.modal .field{display:grid}`. Показ элемента — только снятием класса
   (classList.remove/toggle), НЕ через element.style.display. */
.is-hidden{ display: none !important; }
