/* Экран «Админка и модерация»: AdminNav, AdminHeader, виджеты, формы и таблицы панели — поверх фундамента style.css.
   Разметка и правила перенесены из Flarum admin (AdminNav.less, AdminHeader.less, DashboardPage.less,
   UsersListPage.less, PermissionsPage.less, FormSectionGroup.less) — MIT, Stichting Flarum / Toby Zerner. */

/* ============================== Каркас (AdminPage) ========================= */
.App-container > .adm.full-bleed:first-child { margin-top: 0; }
.adm {
  --admin-pane-width: 250px;
  --adm-pad: 30px;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  margin-bottom: calc(0px - var(--app-bottom-padding, 0px));
}
.adm__main { min-width: 0; }
.adm__body { padding: 0 var(--adm-pad) 40px; }

@media (min-width: 992px) {
  /* Подвал на страницах админки скрыт — рейка навигации тянется до низа окна */
  .adm { grid-template-columns: var(--admin-pane-width) minmax(0, 1fr); min-height: calc(100vh - var(--header-height)); }
  .adm__nav {
    position: sticky;
    top: var(--header-height);
    height: calc(100vh - var(--header-height));
    overflow-y: auto;
    padding-bottom: 40px;
    background: var(--body-bg);
    scrollbar-width: thin;
  }
  /* Линия-разделитель рейки рисуется фоном всей сетки: тянется на всю высоту страницы, а не только окна */
  .adm {
    background: linear-gradient(var(--control-bg), var(--control-bg)) no-repeat calc(var(--admin-pane-width) - 1px) 0 / 1px 100%;
  }
  .adm__nav { box-shadow: inset -1px 0 0 var(--control-bg); }
}

/* ================================= AdminNav ================================ */
.adm-nav { position: relative; }
.adm-nav__toggle.btn { display: none; }

@media (min-width: 992px) {
  .adm-nav .adm-nav__list.drop {
    position: static;
    display: block;
    min-width: 0;
    max-height: none;
    margin: 0;
    padding: 0;
    overflow: visible;
    background: none;
    box-shadow: none;
    border-radius: 0;
    transform: none !important;
  }
}
.adm-nav .adm-nav__list > .adm-nav__title {
  margin: 25px 0 8px 15px;
  font-size: var(--font-size-sm);
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted-color);
}
.adm-nav .adm-nav__list > .adm-nav__title:first-child { margin-top: 20px; }
.adm-nav .adm-nav__list.drop > li > a {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 10px 10px 10px 15px;
  border-radius: 0;
  background: none;
  color: var(--text-color);
  font-size: var(--font-size);
  font-weight: 400;
  line-height: 20px;
  white-space: normal;
  overflow: visible;
  text-decoration: none;
  transition: background-color var(--transition), color var(--transition);
}
.adm-nav .adm-nav__list.drop > li > a:hover { background: var(--control-bg); color: var(--text-color); }
.adm-nav .adm-nav__list.drop > li > a:focus-visible { outline-offset: -2px; }
.adm-nav .adm-nav__list.drop > li.active > a { background: none; color: var(--primary-color); }
.adm-nav .adm-nav__list.drop > li.active > a:hover { background: var(--control-bg); color: var(--primary-color); }
.adm-nav__ic { display: inline-flex; justify-content: center; width: 25px; flex-shrink: 0; padding-top: 2px; }
.adm-nav .adm-nav__list .ic { width: 16px; height: 16px; color: inherit; }
.adm-nav__tx { display: flex; flex-direction: column; min-width: 0; }
.adm-nav__label { font-size: var(--font-size); }
.adm-nav__descr { padding-top: 1px; font-size: var(--font-size-sm); line-height: 16px; color: var(--muted-color); white-space: normal; }
.adm-nav__list > li.active .adm-nav__label { font-weight: 700; }

@media (max-width: 991.98px) {
  .adm__nav { padding: 15px var(--adm-pad) 0; }
  .adm-nav__toggle.btn { display: flex; width: 100%; justify-content: flex-start; }
  .adm-nav__toggle .btn__label { flex: 1; min-width: 0; text-align: left; }
  .adm-nav .adm-nav__list.drop { left: 0; right: auto; min-width: 100%; max-height: 70vh; }
  .adm-nav .adm-nav__list.drop > li > a { padding: 8px 15px; }
  .adm-nav .adm-nav__list.drop > li.active > a { background: var(--control-bg); }
  .adm-nav .adm-nav__list > .adm-nav__title,
  .adm-nav .adm-nav__list > .adm-nav__title:first-child { margin: 10px 15px 4px; }
  .adm-hd { margin-top: 15px; }
}
@media (min-width: 768px) and (max-width: 991.98px) {
  .adm-nav__toggle.btn { width: auto; min-width: 260px; }
  .adm-nav .adm-nav__list.drop { min-width: 320px; }
}
@media (max-width: 767.98px) {
  .adm { --adm-pad: 15px; }
  /* style.css на телефоне ставит html { overflow-x: hidden }: тогда overflow body не переходит к окну,
     body становится контейнером прокрутки и position: sticky (шапка, строка групп, панель сохранения) не липнет.
     Горизонтальную прокрутку и так гасит overflow-x у body, перешедший к окну. */
  html:has(.adm) { overflow-x: visible; }
}

/* =============================== AdminHeader =============================== */
.adm-hd {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 15px 20px;
  margin-bottom: 20px;
  padding: 20px var(--adm-pad);
  background: var(--control-bg);
}
.adm-hd__tx { flex: 1 1 320px; min-width: 0; }
.adm-hd__title {
  display: flex;
  align-items: center;
  gap: 15px;
  margin: 0 0 8px;
  font-size: var(--font-size-xl);
  font-weight: 400;
  line-height: 1.3;
  color: var(--muted-color);
}
.adm-hd__title .ic { width: 20px; height: 20px; flex-shrink: 0; }
.adm-hd__descr { margin: 0; color: var(--control-color); }
.adm-hd__acts { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; }
.adm-hd__acts form { margin: 0; }
.adm-hd .crumbs { margin: 0 0 6px; }
@media (max-width: 767.98px) {
  .adm-hd__title { font-size: var(--font-size-lg); gap: 10px; }
  .adm-hd__acts { width: 100%; }
}
/* Правый край содержимого админки совпадает с краем содержимого шапки сайта (контейнер + его отступ);
   фон AdminHeader при этом остаётся во всю ширину. 100cqw — ширина .adm без полосы прокрутки. */
@media (min-width: 992px) {
  .adm { container-type: inline-size; }
  .adm__body,
  .adm-hd { padding-right: max(var(--adm-pad), calc((100cqw - min(var(--container-width), 100cqw)) / 2 + var(--container-padding))); }
}

/* ============================ Виджеты (Widget) ============================== */
.adm-widget {
  margin-bottom: 20px;
  padding: 20px;
  border-radius: var(--border-radius);
  background: var(--control-bg);
  color: var(--text-color);
}
.adm-widget__title { margin: 0 0 15px; font-size: var(--font-size-md); font-weight: 600; line-height: 1.4; color: var(--heading-color); }
.adm-widget__foot { margin: 15px 0 0; font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-widget__foot b { color: var(--text-color); }
.adm-widget .inp, .adm-widget .sel, .adm-widget .txa { --form-control-bg: var(--body-bg); --form-control-color: var(--text-color); }
.adm-dot { display: inline-block; width: 3px; height: 3px; margin: 0 8px; border-radius: 50%; background: var(--muted-more-color); vertical-align: middle; }

.adm-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 20px; }
@media (min-width: 1100px) {
  .adm-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .adm-cols--aside { grid-template-columns: minmax(0, 1fr) 300px; gap: 0 40px; }
}

/* StatusWidget: плитки показателей (значение 14/600 цветом текста, подпись 12px приглушённая, плитка control-bg) */
.adm-widget.adm-status { padding: 0; background: none; }
.adm-status__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.adm-status__item {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 8px 10px;
  border-radius: var(--border-radius);
  background: var(--control-bg);
}
.adm-status__label { font-size: var(--font-size-sm); line-height: 1.4; color: var(--muted-color); }
.adm-status__value { font-size: var(--font-size); font-weight: 600; line-height: 1.4; color: var(--text-color); font-variant-numeric: tabular-nums; }
.adm-status__value--alert { color: var(--error-color); }
.adm-status__tools { position: relative; flex-shrink: 0; }
.adm-status__tools .btn { --button-bg: var(--body-bg); }
.adm-status__tools .drop { min-width: 290px; }
@media (max-width: 767.98px) {
  .adm-hd .adm-status__tools .drop { left: 0; right: auto; max-width: calc(100vw - 2 * var(--adm-pad)); }
}
@media (max-width: 767.98px) {
  .adm-status__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Столбики активности */
.adm-chart { display: flex; align-items: stretch; gap: 6px; height: 150px; }
.adm-chart__col { display: flex; flex-direction: column; justify-content: flex-end; flex: 1; min-width: 0; }
.adm-chart__bar { display: block; min-height: 2px; border-radius: 2px 2px 0 0; background: var(--muted-more-color); transition: background-color var(--transition); }
.adm-chart__col:hover .adm-chart__bar { background: var(--muted-color-light); }
.adm-chart__lbl { margin-top: 6px; font-size: var(--font-size-xs); line-height: 1; text-align: center; color: var(--muted-color); font-variant-numeric: tabular-nums; }

.adm-kv { grid-template-columns: minmax(110px, 150px) minmax(0, 1fr); gap: 8px 15px; }

/* ================================= Секции ================================== */
.adm-section { margin-bottom: 30px; min-width: 0; }
.adm-section__hd { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 15px; margin-bottom: 10px; }
/* Заголовок секции — как .panel-title фундамента (15/600) */
.adm-section__hd h2 { margin: 0; font-size: var(--font-size-md); font-weight: 600; line-height: 1.4; color: var(--heading-color); }
.adm-section__hd .helpText,
.adm-section__hd p { flex-basis: 100%; margin: 0; font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-section__more { margin-left: auto; font-size: var(--font-size-sm); color: var(--link-color); }
a.adm-section__more:hover { text-decoration: underline; }
span.adm-section__more { color: var(--muted-color); }
.adm-section__acts { margin-left: auto; display: flex; gap: 5px; align-self: center; }

/* Простой список строк (заголовок + мета справа), разделение волосяной линией */
.adm-list { margin: 0; padding: 0; list-style: none; }
.adm-list > li {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 40px;
  padding: 8px 0;
  border-bottom: 1px solid var(--border-color);
}
.adm-list > li:last-child { border-bottom: 0; }
.adm-list__main { flex: 1; min-width: 0; color: var(--text-color); overflow-wrap: anywhere; }
a.adm-list__main:hover { color: var(--link-color); }
.adm-list__meta { font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-swatch { width: 10px; height: 10px; flex-shrink: 0; border-radius: 2px; background: var(--c); }

/* ===================== Таблица (UserListPage-grid, плотная) ================= */
.adm-tbl { background: transparent; border-radius: 0; overflow: visible; }
/* sr-only в ячейках позиционируется от прокручиваемой обёртки, а не от страницы */
.adm-tbl th,
.adm-tbl td { padding: 6px 16px; border-bottom: 0; }
.adm-tbl thead th {
  padding: 8px 16px;
  background: var(--control-bg);
  color: var(--text-color);
  font-size: var(--font-size-sm);
}
.adm-tbl thead th:first-child { border-top-left-radius: var(--border-radius); }
.adm-tbl thead th:last-child { border-top-right-radius: var(--border-radius); }
.adm-tbl tbody tr:nth-child(even) > td { background: var(--body-bg-light); }
.adm-tbl tbody tr:hover > td { background: var(--control-bg-light); }
.adm-tbl td { height: 44px; }
.adm-tbl td.muted { color: var(--muted-color); }
.adm-tbl .adm-tbl__act { width: 1%; padding: 0 8px; text-align: right; white-space: nowrap; }
.adm-tbl .adm-tbl__act form { display: inline; margin: 0; }
.adm-tbl td { vertical-align: middle; }
.adm-user { display: flex; align-items: center; gap: 8px; min-width: 0; white-space: nowrap; }
.adm-tbl .badge { vertical-align: baseline; }
.adm-ach__medal .medal { display: flex; }
/* Правые кнопки с тултипом: подсказка прижата к правому краю кнопки, иначе скрытый ::after раздвигает страницу */
.adm-tbl__act .tip[data-tip]::after,
.adm-cat__acts .tip[data-tip]::after,
.adm-list .tip[data-tip]::after { left: auto; right: 0; transform: none; }
.adm-tbl__act .tip[data-tip]::before,
.adm-cat__acts .tip[data-tip]::before,
.adm-list .tip[data-tip]::before { left: auto; right: 13px; margin-left: 0; }
.adm-tbl .adm-show-sm { display: none; }
@media (max-width: 767.98px) {
  .adm-tbl .adm-hide-sm { display: none; }
  .adm-tbl .adm-show-sm { display: inline-flex; }
  .adm-tbl th, .adm-tbl td { padding-left: 10px; padding-right: 10px; }
}
.adm-user .uname { font-weight: 700; }
.adm-tbl .chip--status { --tag-bg: var(--control-bg); --tag-color: var(--text-color); }

/* ============================ Тулбар над списком =========================== */
.adm-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 20px; margin-bottom: 16px; }
.adm-toolbar__total { margin: 0; color: var(--muted-color); }
.adm-toolbar__total b { color: var(--text-color); }
.adm-toolbar__form { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-left: auto; }
.adm-toolbar__form .inp-icon { width: 240px; }
.adm-toolbar__form .sel { width: auto; min-width: 170px; }
@media (max-width: 767.98px) {
  .adm-toolbar__form { width: 100%; margin-left: 0; }
  .adm-toolbar__form .inp-icon { flex: 1 1 100%; width: auto; }
  .adm-toolbar__form .sel { flex: 1; min-width: 0; }
}

/* ================================ Формы ==================================== */
.helpText { margin: 0; font-size: var(--font-size-sm); line-height: 1.5; color: var(--muted-color); }
.adm-help { margin-bottom: 15px; }
.adm-form { max-width: 600px; }
.adm-form .field:last-of-type { margin-bottom: 20px; }
.adm-cols--form > div > .adm-section { max-width: 640px; }
.adm-stack { min-width: 0; }
.adm-widget__text { margin: 0 0 15px; color: var(--muted-color); }
.adm-widget code, .adm-section code, .adm__body .alert code {
  padding: 1px 4px;
  border-radius: 3px;
  background: var(--code-bg);
  color: var(--code-color);
  font-family: var(--font-family-mono);
  font-size: .9em;
}
.adm-checklist { margin: 0; padding-left: 18px; color: var(--muted-color); }
.adm-checklist li + li { margin-top: 6px; }
.adm-cols--aside > .adm-stack > .adm-section { max-width: 600px; }
.adm-inline-form { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; align-items: end; gap: 0 10px; }
.adm-inline-form .field { margin-bottom: 0; }
@media (max-width: 767.98px) {
  .adm-inline-form { grid-template-columns: minmax(0, 1fr); gap: 12px; }
}
.adm-medals { margin: 8px 0 0; }
.adm-medals form { margin: 0; }
.adm-medal-btn { display: inline-flex; padding: 2px; border: 0; border-radius: 50%; background: none; cursor: pointer; }
.adm-medal-btn:hover .medal { opacity: .75; }
.adm-copy { display: flex; gap: 5px; }
.adm-copy .inp { flex: 1; min-width: 0; font-size: var(--font-size-sm); }
.adm-widget .alert { margin-bottom: 15px; }
.adm-warn { color: var(--warn); }
.adm-flags { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.adm-checks { display: flex; flex-wrap: wrap; gap: 0 25px; }
.adm-check-end { align-self: end; min-height: 36px; align-items: center; }
.adm-fieldset { margin-bottom: 0; }
.adm-fieldset > legend { margin-bottom: 8px; padding: 0; }
.adm-fieldset .field > label { font-weight: 400; color: var(--muted-color); }
.adm-txa-sm.txa { min-height: 70px; }

/* ================================ Модалки ================================== */
.adm-modal-preview { display: flex; align-items: center; gap: 10px; margin: 0 0 20px; }
.adm-modal-ft .btn--pri { order: 3; }
.adm-modal-ft .btn--ghost { order: 2; }
.adm-modal-ft .adm-modal-del { order: 1; margin-right: auto; }
.adm-modal-sub { border-top: 1px solid var(--body-bg); }
.adm-modal-sub .modal__bd { padding-top: 20px; }

/* ======================= GroupBar (PermissionsPage) ======================== */
.adm-groupbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 10px;
  list-style: none;
  border-radius: var(--border-radius);
  background: var(--control-bg);
}
.adm-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  width: 116px;
  min-height: 44px;
  padding: 10px 8px;
  border: 0;
  border-radius: var(--border-radius);
  background: transparent;
  color: var(--text-color);
  font: inherit;
  font-weight: 700;
  text-align: center;
  cursor: pointer;
  transition: background-color var(--transition);
}
.adm-group:hover { background: var(--control-bg-light); }
.adm-group__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--c, var(--body-bg));
  color: var(--contrast-color, var(--muted-color));
}
.adm-group__icon--sm { width: 20px; height: 20px; }
.adm-group__icon--sm .ic { width: 12px; height: 12px; }
.adm-group__name { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-group__meta { font-size: var(--font-size-xs); font-weight: 400; color: var(--muted-color); }
.adm-group__meta + .adm-group__meta { margin-top: -5px; }
.adm-group--add { color: var(--muted-color); font-weight: 400; }
.adm-group--add .adm-group__icon { background: var(--body-bg); }
.adm-group--add:hover { color: var(--link-color); }
@media (max-width: 767.98px) {
  .adm-group { width: calc(50% - 5px); }
}

/* ========================= PermissionGrid ================================= */
/* Таблица не прокручивается сама: страница скроллится целиком, строка групп прилипает под шапкой сайта. */
.adm-permsec { --perm-top: var(--header-height); }
.adm-perms { position: relative; margin: 0; }
.adm-permgrid { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; }
.adm-permgrid thead th:first-child { width: 240px; }
.adm-permgrid th,
.adm-permgrid td { padding: 5px; text-align: left; }
.adm-permgrid td { color: var(--muted-color); text-align: center; }
.adm-permgrid thead th {
  position: sticky;
  top: var(--perm-top);
  z-index: 2;
  padding: 10px 4px;
  vertical-align: bottom;
  background: var(--body-bg);
  box-shadow: inset 0 -1px 0 var(--muted-more-color);
  font-size: var(--font-size-sm);
  font-weight: 700;
  line-height: 1.25;
  color: var(--muted-color);
  text-align: center;
}
.adm-permgrid__group { display: inline-flex; flex-direction: column; align-items: center; gap: 5px; }
/* Длинные названия групп («Заблокирован») не рвём посреди слова: переносим по слогам */
.adm-permgrid__gname { overflow-wrap: normal; word-break: normal; hyphens: auto; font-size: 11px; }
.adm-permgrid tbody th {
  padding-right: 20px;
  font-weight: 400;
  color: var(--text-color);
}
.adm-permgrid .adm-permgrid__section th {
  padding-top: 20px;
  padding-bottom: 8px;
  font-weight: 700;
  color: var(--text-color);
}
.adm-permgrid__section th .ic { width: 14px; height: 14px; margin-right: 8px; color: var(--muted-color); vertical-align: -2px; }
.adm-permgrid .adm-permgrid__child th { padding-left: 27px; }
.adm-permgrid .adm-permgrid__child:hover > * { background: var(--control-body-bg-mix, var(--control-bg)); }
.adm-permgrid__child td,
.adm-permgrid__child th { border-top: 1px solid var(--border-color); }
.adm-permgrid__cell {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 30px;
  border-radius: var(--border-radius);
  cursor: pointer;
}
.adm-permgrid__cell:hover { background: var(--control-bg); }
.adm-permgrid__cell input { width: 16px; height: 16px; margin: 0; accent-color: var(--primary-color); cursor: pointer; }
/* Изменённая, но не сохранённая отметка */
.adm-permgrid__cell:has(input:checked:not([checked])),
.adm-permgrid__cell:has(input:not(:checked)[checked]) { box-shadow: inset 0 0 0 1px var(--primary-color); }
@media (pointer: coarse) {
  .adm-permgrid__cell { width: 44px; height: 44px; }
  .adm-permgrid__cell input { width: 20px; height: 20px; }
}

/* Узкие экраны: строка разрешения — подпись сверху, под ней ряд отметок по столбцам групп.
   В шапке остаются иконки групп (названия — в полосе групп выше и для скринридера). */
@media (max-width: 1199.98px) {
  .adm-permgrid,
  .adm-permgrid thead,
  .adm-permgrid tbody { display: block; }
  .adm-permgrid thead { position: sticky; top: var(--perm-top); z-index: 2; background: var(--body-bg); box-shadow: inset 0 -1px 0 var(--muted-more-color); }
  .adm-permgrid tr { display: grid; grid-template-columns: repeat(var(--cols, 9), minmax(0, 1fr)); }
  .adm-permgrid thead th { position: static; box-shadow: none; padding: 10px 0; background: none; }
  .adm-permgrid thead th:first-child,
  .adm-permgrid tbody th { grid-column: 1 / -1; width: auto; }
  .adm-permgrid thead th:first-child { display: none; }
  .adm-permgrid .adm-permgrid__child th { padding: 10px 0 0; border-top: 1px solid var(--border-color); }
  .adm-permgrid .adm-permgrid__section th { padding: 20px 0 8px; }
  .adm-permgrid__child td { padding: 2px 0 6px; border-top: 0; }
  .adm-permgrid__cell { width: 100%; max-width: 44px; height: 40px; }
  .adm-permgrid .adm-permgrid__child:hover > * { background: none; }
}
@media (max-width: 767.98px) {
  .adm-permsec { --perm-top: var(--header-height-phone); }
  .adm-permgrid__gname {
    position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }
  .adm-permgrid .adm-group__icon--sm { width: 26px; height: 26px; }
  .adm-permgrid .adm-group__icon--sm .ic { width: 14px; height: 14px; }
}

/* Панель сохранения — одна на таблицу, прилипает к низу окна */
.adm-savebar {
  position: relative;
  z-index: 3;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin-top: 15px;
  padding: 12px 0;
  background: var(--body-bg);
  box-shadow: 0 -1px 0 var(--muted-more-color);
}
.adm-savebar__status { display: flex; align-items: center; flex: 1 1 auto; margin: 0; color: var(--muted-color); }
.adm-savebar__dirty { display: inline-flex; align-items: center; gap: 8px; color: var(--text-color); }
.adm-savebar__dirty .ic { color: var(--primary-color); }
.adm-savebar__acts { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.adm-savebar__for { font-weight: 400; }
.adm-savebar__idle { display: none; }
.adm-savebar__clean { display: none; }
@supports selector(:has(*)) {
  .adm-savebar__btn,
  .adm-savebar__dirty { display: none; }
  .adm-savebar__idle { display: inline-flex; }
  .adm-savebar__clean { display: inline; }
  /* Пока изменений нет, панель стоит в конце таблицы; с изменениями прилипает к низу окна */
  .adm-permsec:has(.adm-permgrid td :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar { position: sticky; bottom: 0; }
  .adm-permsec:has(.adm-permgrid td :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__dirty { display: inline-flex; }
  .adm-permsec:has(.adm-permgrid td :is(input:checked:not([checked]), input:not(:checked)[checked])) :is(.adm-savebar__clean, .adm-savebar__idle) { display: none; }
  .adm-permsec:has(.adm-permgrid td:nth-child(2) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(2),
  .adm-permsec:has(.adm-permgrid td:nth-child(3) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(3),
  .adm-permsec:has(.adm-permgrid td:nth-child(4) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(4),
  .adm-permsec:has(.adm-permgrid td:nth-child(5) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(5),
  .adm-permsec:has(.adm-permgrid td:nth-child(6) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(6),
  .adm-permsec:has(.adm-permgrid td:nth-child(7) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(7),
  .adm-permsec:has(.adm-permgrid td:nth-child(8) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(8),
  .adm-permsec:has(.adm-permgrid td:nth-child(9) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(9),
  .adm-permsec:has(.adm-permgrid td:nth-child(10) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(10),
  .adm-permsec:has(.adm-permgrid td:nth-child(11) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(11),
  .adm-permsec:has(.adm-permgrid td:nth-child(12) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(12),
  .adm-permsec:has(.adm-permgrid td:nth-child(13) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(13),
  .adm-permsec:has(.adm-permgrid td:nth-child(14) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(14),
  .adm-permsec:has(.adm-permgrid td:nth-child(15) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(15),
  .adm-permsec:has(.adm-permgrid td:nth-child(16) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(16),
  .adm-permsec:has(.adm-permgrid td:nth-child(17) :is(input:checked:not([checked]), input:not(:checked)[checked])) .adm-savebar__btn:nth-child(17) { display: inline-flex; }
}
@media (max-width: 767.98px) {
  .adm-savebar { gap: 8px; }
  .adm-savebar__acts { flex: 1 1 100%; }
  .adm-savebar__acts .btn { flex: 1 1 auto; }
}

/* ========================= Разделы (Tags admin) ============================ */
.adm-cat { margin-bottom: 30px; }
.adm-cat__form {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(200px, 2fr) 90px auto;
  align-items: end;
  gap: 10px;
  padding: 15px 20px;
  border-radius: var(--border-radius) var(--border-radius) 0 0;
  background: var(--control-bg);
}
.adm-cat__form .field { margin: 0; }
.adm-cat__form .field > label { margin-bottom: 5px; font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-cat__form .inp { --form-control-bg: var(--body-bg); --form-control-color: var(--text-color); }
.adm-cat__name .inp { font-weight: 700; }
.adm-cat__acts { display: flex; gap: 5px; }
.adm-cat__acts .btn:not(.adm-del) { --button-bg: var(--body-bg); --button-bg-hover: hsl(212.63 20% 6%); --button-bg-active: hsl(212.63 20% 3%); }
.adm-del.btn { color: var(--muted-color); }
.adm-del.btn:hover, .adm-del.btn:focus-visible { color: var(--error-color); }
.adm-cat__empty { margin: 0; padding: 15px 20px; color: var(--muted-color); border-bottom: 1px solid var(--border-color); }
@media (max-width: 767.98px) {
  .adm-cat__form { grid-template-columns: minmax(0, 1fr) 90px; padding: 15px; }
  .adm-cat__descr { grid-column: 1 / -1; grid-row: 2; }
  .adm-cat__acts { grid-column: 1 / -1; }
  .adm-cat__acts .btn--pri { flex: 1; }
}

.adm-taglist { margin: 0; padding: 0; list-style: none; }
.adm-taglist__item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  border-bottom: 1px solid var(--border-color);
  transition: background-color var(--transition);
}
.adm-taglist__item:hover { background: var(--control-body-bg-mix); }
.adm-taglist__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  border-radius: var(--border-radius);
  background: var(--c);
  color: var(--contrast-color);
}
.adm-taglist__info { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.adm-taglist__name { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; font-weight: 700; }
.adm-taglist__name a { color: var(--text-color); }
.adm-taglist__name a:hover { color: var(--link-color); }
.adm-taglist__descr { font-size: var(--font-size-sm); color: var(--muted-color); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-taglist__stats { font-size: var(--font-size-sm); color: var(--muted-color); white-space: nowrap; }
@media (max-width: 767.98px) {
  .adm-taglist__item { flex-wrap: wrap; padding: 10px 15px; }
  .adm-taglist__info { flex-basis: calc(100% - 44px); }
  .adm-taglist__descr { white-space: normal; }
  .adm-taglist__stats { margin-left: 44px; }
  .adm-taglist__item .btn { margin-left: auto; }
}
.adm-prefixes { margin-top: 40px; }
.adm-prefixes .adm-list form { margin: 0; }
.adm-color.inp { width: 56px; padding: 4px; cursor: pointer; }
.adm-help--lead { margin-bottom: 20px; max-width: 80ch; }
.adm-section__count { font-size: var(--font-size-sm); color: var(--muted-color); white-space: nowrap; }
.adm-section__acts { align-items: center; flex-wrap: wrap; }
.adm-section__acts form { margin: 0; }
@media (max-width: 767.98px) {
  .adm__body .tabs {
    padding-right: 32px;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent);
  }
}

/* =========================== Списки строк ================================== */
.adm-list--rich > li { align-items: flex-start; padding: 12px 0; }
.adm-list--rich > li > .btn,
.adm-list--rich > li > form,
.adm-list--rich > li > .chip { margin-top: 4px; }
.adm-list--rich .adm-list__meta { margin-top: 2px; }
.adm-list--rich .chip { margin-left: 4px; }
.adm-list__title { font-weight: 700; color: var(--text-color); }
.adm-list__title:hover { color: var(--link-color); }
.adm-list__excerpt { margin-top: 2px; color: var(--muted-color); overflow-wrap: anywhere; }
.adm-list--log > li { padding: 10px 0; }
.adm-list .uname { font-weight: 700; }
.adm-list > li > form { margin: 0; flex-shrink: 0; }
.adm-threads__list { min-width: 0; }
.adm-hd .adm-bubble { position: static; margin-left: 2px; }

/* ================================= Жалобы ================================== */
.adm-reports { display: flex; flex-direction: column; gap: 15px; }
.adm-report { border-radius: var(--border-radius); background: var(--control-bg); }
.adm-report__hd { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 10px 12px; padding: 15px 20px 0; }
.adm-report__who { flex: 1 1 260px; min-width: 0; }
.adm-report__title { margin: 0; font-size: var(--font-size); font-weight: 400; line-height: 1.5; color: var(--text-color); }
.adm-report__title .uname { font-weight: 700; }
.adm-report__meta { font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-report__meta a { color: var(--muted-color); text-decoration: underline; }
.adm-report__meta a:hover { color: var(--link-color); }
.adm-report__labels { display: flex; flex-wrap: wrap; gap: 5px; }
.adm-report__labels .chip { --tag-bg: var(--body-bg); --tag-color: var(--text-color); }
.adm-report__bd { padding: 12px 20px 15px 64px; }
.adm-report__details { margin: 0 0 10px; color: var(--text-color); font-size: var(--font-size-post); line-height: 1.6; }
.adm-report__quote.bb-quote { margin: 0; background: var(--body-bg); }
.adm-report__quote .bb-quote-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.adm-report__quote .bb-quote-head .ic { color: var(--muted-color); }
.adm-report__quote .q-jump { margin-left: auto; }
.adm-report__resolution { display: flex; align-items: flex-start; gap: 8px; margin-top: 10px; color: var(--muted-color); }
.adm-report__resolution .ic { margin-top: 2px; color: var(--switch-on-color); }
.adm-report__resolution b { color: var(--text-color); }
.adm-report__ft { display: flex; flex-direction: column; gap: 10px; padding: 12px 20px 15px 64px; border-top: 1px solid var(--body-bg); }
.adm-report__ft .inp { --form-control-bg: var(--body-bg); --form-control-color: var(--text-color); }
.adm-report__target { margin-left: auto; }
@media (max-width: 767.98px) {
  .adm-report__hd { padding: 15px 15px 0; }
  .adm-report__bd, .adm-report__ft { padding-left: 15px; padding-right: 15px; }
  .adm-report__ft .actions .btn { flex: 1 1 auto; }
  .adm-report__target { margin-left: 0; }
}

/* ============================= Достижения ================================== */
.adm-section__icon-title { display: inline-flex; align-items: center; gap: 8px; }
.adm-section__icon-title .ic { color: var(--muted-color); }
.adm-ach .adm-ach__medal { width: 1%; padding-right: 0; }
.adm-ach__name b { display: block; color: var(--text-color); }
.adm-ach__descr { display: block; max-width: 60ch; font-size: var(--font-size-sm); color: var(--muted-color); }
.adm-tbl.adm-ach td { padding-top: 8px; padding-bottom: 8px; }

/* ======================= Правки после сверки со скриншотами ================ */
/* Обычная кнопка на поверхности control-bg получает фон страницы, иначе её не видно */
.adm-hd .btn:not(.btn--pri):not(.btn--danger):not(.btn--link),
.adm-widget .btn:not(.btn--pri):not(.btn--danger):not(.btn--link):not(.btn--ghost),
.adm-groupbar .btn,
.adm-report .btn:not(.btn--pri):not(.btn--danger):not(.btn--link) {
  --button-bg: var(--body-bg);
  --button-bg-hover: hsl(212.63 20% 6%);
  --button-bg-active: hsl(212.63 20% 3%);
}
.adm-cols { align-items: start; }
.adm-cols--aside .adm-kv { grid-template-columns: minmax(90px, 120px) minmax(0, 1fr); }
.adm-cols--aside > aside .grid-2 { grid-template-columns: minmax(0, 1fr); gap: 0; }
.adm-inline-form + .adm-help { margin-top: 15px; margin-bottom: 0; }
.adm-group { width: 124px; }
.adm-group__name { white-space: normal; overflow-wrap: anywhere; line-height: 1.3; }
.adm-group--add { width: auto; min-width: 124px; }
.adm-tbl.adm-ach { table-layout: fixed; min-width: 720px; }
.adm-ach th:nth-child(1) { width: 52px; }
.adm-ach th:nth-child(3) { width: 150px; }
.adm-ach th:nth-child(4) { width: 70px; }
.adm-ach th:nth-child(5) { width: 120px; }
.adm-ach th:nth-child(6) { width: 130px; }
.adm-ach th:nth-child(7) { width: 60px; }
.adm-ach .adm-ach__medal { width: auto; }
.adm-ach__descr { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-kv dd { min-width: 0; overflow-wrap: anywhere; }
/* Длинные значения (адреса) — подпись над значением */
.adm-kv.adm-kv--stack { grid-template-columns: minmax(0, 1fr); gap: 0; }
.adm-kv--stack dt { font-size: var(--font-size-sm); }
.adm-kv--stack dd { margin-bottom: 8px; }
.adm-kv--stack dd:last-child { margin-bottom: 0; }
.adm-kv dd.mono { font-size: 13px; }
.adm-section__hd:has(+ .adm-form),
.adm-section__hd:has(+ .adm-inline-form) { margin-bottom: 18px; }
@media (min-width: 1100px) {
  .adm-cols--form { grid-template-columns: minmax(0, 1fr) 300px; gap: 0 40px; }
}
.tbl-wrap + .adm-help, .empty + .adm-help { margin-top: 15px; }
.adm-section__hd h2 .cnt { font-variant-numeric: tabular-nums; }
.adm-section .empty { padding: 30px 15px; }
