@font-face {
  font-family: "IBM Plex Sans";
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url("IBMPlexSans-Regular.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url("IBMPlexSans-Medium.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url("IBMPlexSans-SemiBold.woff2") format("woff2");
}

:root {
  --font-sans: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
  --iks-ease: cubic-bezier(0, 0, 0.58, 1);
}

/* Вне @layer правило перебивает утилиты unfold, поэтому исключения заданы без классов Tailwind:
   поле с ошибкой (aria-invalid и группа .errors из unfold/widgets.py) держит свой красный контур,
   поиск (form[role="search"], командная строка) гасит контур у поля и рисует его на обёртке. */
:focus-visible:not([aria-invalid]):not(.errors *):not(form[role="search"] *):not(#search-input-command, #command-submit) {
  outline: 2px solid #000;
  outline-offset: 2px;
}

/* Unfold красит фокус через box-shadow и ring-утилиты, кольцо дизайн-системы одно. */
:focus-visible,
input:focus,
select:focus,
textarea:focus {
  box-shadow: none;
}

button,
a,
input,
select,
textarea {
  transition-property: color, background-color, border-color, outline-color;
  transition-duration: 150ms;
  transition-timing-function: var(--iks-ease);
}

/* Главная кнопка: компонент button.html несёт data-iks-variant (core/templates/unfold/components).
   Остальные bg-primary-600 (панель действий, полоски строк, кнопка фильтра) чернеть не должны. */
[data-iks-variant="primary"]:not(:disabled):hover {
  background-color: #000;
}

/* Подзаголовок блока внутри раздела карточки (core/templates/admin/includes/fieldset.html):
   мельче и тише заголовка раздела, чтобы блоки читались его частями. */
.iks-subgroup-title {
  margin: 0 0 8px 12px;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-base-500);
}

/* Уведомления админки (static/iks/toast.js, core/templates/unfold/helpers/messages.html).
   Классы Tailwind недоступны: styles.css unfold собран только из классов его шаблонов. */
[data-iks-toasts] {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 100;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 360px;
  max-width: calc(100vw - 32px);
}

[data-iks-toast] {
  --toast-50: var(--color-base-50);
  --toast-200: var(--color-base-200);
  --toast-700: var(--color-base-700);
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--toast-200);
  background-color: var(--toast-50);
  color: var(--toast-700);
}

[data-iks-toast="debug"] {
  --toast-50: var(--color-blue-50);
  --toast-200: var(--color-blue-200);
  --toast-700: var(--color-blue-700);
}

[data-iks-toast="success"] {
  --toast-50: var(--color-green-50);
  --toast-200: var(--color-green-200);
  --toast-700: var(--color-green-700);
}

[data-iks-toast="warning"] {
  --toast-50: var(--color-orange-50);
  --toast-200: var(--color-orange-200);
  --toast-700: var(--color-orange-700);
}

[data-iks-toast="error"] {
  --toast-50: var(--color-red-50);
  --toast-200: var(--color-red-200);
  --toast-700: var(--color-red-700);
}

[data-iks-toast-body] {
  flex: 1;
  min-width: 0;
}

[data-iks-toast-title] {
  margin: 0;
  font-weight: 600;
}

[data-iks-toast-text] {
  margin: 0;
  overflow-wrap: anywhere;
}

[data-iks-toast-text] a {
  text-decoration: underline;
}

[data-iks-toast-close] {
  display: flex;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  cursor: pointer;
}
