/* Общий слой staff-форм: lk_violet/onboarding --ob-* примитивы.
   Источник значений — onboarding.css; здесь самодостаточно, без индиго-гочи Silicon. */
:root{
  --ob-primary:#6C47F6; --ob-primary-50:#f4f1fe; --ob-primary-text:#4b32a8;
  --ob-primary-hover:#5a3ad4; --ob-primary-disabled:#cbc5e6;
  --ob-success:#22c55e; --ob-success-50:#ecfdf5;
  --ob-warning:#f59e0b; --ob-warning-50:#fffbeb;
  --ob-danger:#ef4444;  --ob-danger-50:#fef2f2;
  --ob-text:#0b0f19; --ob-muted:#6b7280; --ob-soft:#9ca3af; --ob-border:#e5e7eb;
  --ob-card-bg:#fff; --ob-shadow-sm:0 1px 2px rgba(0,0,0,.04),0 1px 3px rgba(0,0,0,.06);
  --ob-r-input:10px; --ob-r-card:12px;
}
.ob-card{background:var(--ob-card-bg);border:1px solid var(--ob-border);border-radius:var(--ob-r-card);
  padding:20px;box-shadow:var(--ob-shadow-sm);margin-bottom:18px}
.ob-card h5{margin:0 0 3px;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ob-primary-text)}
.ob-card .ob-hint{font-size:12px;color:var(--ob-soft);margin:0 0 16px}
.ob-input,.ob-select{border:1.5px solid var(--ob-border);border-radius:var(--ob-r-input);
  padding:11px 14px;font-size:14px;background:#fff;color:var(--ob-text);width:auto}
.ob-input:focus,.ob-select:focus{outline:0;border-color:var(--ob-primary);
  box-shadow:0 0 0 4px rgba(108,71,246,.12)}
.ob-input.has-error,.ob-select.has-error{border-color:var(--ob-danger);box-shadow:0 0 0 4px rgba(239,68,68,.12)}
.ob-select.full{width:100%}
.ob-btn{border:0;border-radius:var(--ob-r-input);padding:10px 18px;font-size:14px;font-weight:600;
  cursor:pointer;display:inline-flex;gap:7px;align-items:center;line-height:1.2}
.ob-btn-primary{background:var(--ob-primary);color:#fff}
.ob-btn-primary:hover{background:var(--ob-primary-hover)}
.ob-btn-primary:disabled{background:var(--ob-primary-disabled);cursor:not-allowed}
.ob-btn-outline{background:#fff;color:var(--ob-text);border:1.5px solid var(--ob-border)}
.ob-btn-ghost{background:transparent;color:var(--ob-danger);padding-left:4px}
.ob-banner{display:flex;gap:8px;align-items:center;font-size:12.5px;padding:10px 13px;border-radius:10px}
.ob-banner.is-info{background:var(--ob-primary-50);color:var(--ob-primary-text)}
.ob-banner.is-warning{background:var(--ob-warning-50);color:#92660b}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}

/* ===== расширение для рестайла (P1–P5) ===== */
/* кнопки: размеры и варианты */
.ob-btn-sm{padding:6px 12px;font-size:13px}
.ob-btn-danger{background:var(--ob-danger);color:#fff}
.ob-btn-danger:hover{background:#dc2626}
.ob-btn-block{display:flex;width:100%;justify-content:center}
.ob-btn-outline-primary{background:#fff;color:var(--ob-primary);border:1.5px solid var(--ob-primary)}
.ob-btn-outline-primary:hover{background:var(--ob-primary-50)}

/* badges */
.ob-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--ob-primary-50);color:var(--ob-primary-text)}
.ob-badge-success{background:var(--ob-success-50);color:#15803d}
.ob-badge-muted{background:#eef1f6;color:var(--ob-muted)}

/* таблицы */
.ob-table{width:100%;border-collapse:collapse}
.ob-table th{background:var(--ob-primary-50);color:var(--ob-primary-text);font-size:12px;font-weight:700;text-align:left;padding:10px 12px;border-bottom:1px solid var(--ob-border)}
.ob-table td{padding:10px 12px;border-bottom:1px solid var(--ob-border);font-size:13.5px}
.ob-table tbody tr:hover{background:var(--ob-primary-50)}

/* вкладки */
.ob-tabs{display:flex;gap:4px;border-bottom:1px solid var(--ob-border);margin-bottom:16px}
.ob-tabs .ob-tab{padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--ob-muted);border:0;border-bottom:2px solid transparent;background:none;cursor:pointer;text-decoration:none}
.ob-tabs .ob-tab.active{color:var(--ob-primary-text);border-bottom-color:var(--ob-primary)}

/* хлебные крошки */
.ob-breadcrumb{display:flex;flex-wrap:wrap;gap:6px;font-size:12.5px;list-style:none;padding:0;margin:0 0 14px}
.ob-breadcrumb a{color:var(--ob-primary);text-decoration:none}
.ob-breadcrumb a:hover{text-decoration:underline}
.ob-breadcrumb .active{color:var(--ob-muted)}
.ob-breadcrumb li+li::before{content:"/";color:var(--ob-soft);margin-right:6px}

/* заголовок карточки */
.ob-card-header{margin:-20px -20px 16px;padding:14px 20px;border-bottom:1px solid var(--ob-border);font-weight:700;font-size:14px}

/* списки */
.ob-list{list-style:none;margin:0;padding:0}
.ob-list-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--ob-border)}
.ob-list-item:last-child{border-bottom:0}

/* алерты */
.ob-alert{display:flex;gap:8px;align-items:flex-start;padding:11px 13px;border-radius:10px;font-size:13px}
.ob-alert-info{background:var(--ob-primary-50);color:var(--ob-primary-text)}
.ob-alert-success{background:var(--ob-success-50);color:#15803d}
.ob-alert-warning{background:var(--ob-warning-50);color:#92660b}
.ob-alert-danger{background:var(--ob-danger-50);color:#b91c1c}
.ob-alert-muted{background:#f6f7f9;color:var(--ob-muted)}

/* поля формы (хелперы) */
.ob-field{margin-bottom:16px}
.ob-label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--ob-text)}
.ob-help{font-size:12px;color:var(--ob-soft);margin-top:5px}
.ob-check{display:flex;align-items:center;gap:8px}
.ob-check-input{width:17px;height:17px;accent-color:var(--ob-primary)}
.ob-check-label{font-size:13.5px}

/* стат-карточки */
.ob-stat{background:var(--ob-primary-50);border:1px solid #e7e1fb;border-radius:var(--ob-r-card);padding:14px}
.ob-stat-num{font-size:26px;font-weight:700;color:var(--ob-primary)}
.ob-stat-lbl{font-size:12px;color:var(--ob-muted)}

/* пагинация */
.ob-pagination{display:flex;gap:4px;justify-content:center;list-style:none;padding:0;margin:18px 0 0}
.ob-page-link{display:inline-flex;min-width:34px;height:34px;align-items:center;justify-content:center;padding:0 10px;border:1px solid var(--ob-border);border-radius:8px;color:var(--ob-text);text-decoration:none;font-size:13.5px}
.ob-page-link:hover{background:var(--ob-primary-50);color:var(--ob-primary-text)}
.ob-pagination .active .ob-page-link{background:var(--ob-primary);color:#fff;border-color:var(--ob-primary)}

/* ШИМ: инпуты, которым классы form-control/form-select/form-check-input
   проставляет BootstrapFormMixin (academy/forms_manage.py) — стилизуем без правки Python.
   Действует только на страницах, где подключён forms.css. */
.form-control,.form-select{border:1.5px solid var(--ob-border);border-radius:var(--ob-r-input);padding:11px 14px;font-size:14px;color:var(--ob-text);background-color:#fff}
.form-control:focus,.form-select:focus{outline:0;border-color:var(--ob-primary);box-shadow:0 0 0 4px rgba(108,71,246,.12)}
.form-check-input:checked{background-color:var(--ob-primary);border-color:var(--ob-primary)}
.form-check-input:focus{box-shadow:0 0 0 4px rgba(108,71,246,.12)}

/* ===== staff-авторинг: лейаут стэк-форм (scope = поддерево base_manage + явный .ob-manage) =====
   Чинит корень «поля на поля»: глобальный .ob-input/.form-control НЕ имел width →
   number-инпуты схлопывались, нативный спиннер лез на значение, текст обрезался.
   Глобальные правила (.ob-input{width:auto}, .form-control shim) НЕ трогаем —
   rating_config / rating-app / onboarding остаются без изменений. */
.ob-manage .ob-input,
.ob-manage .ob-select,
.ob-manage .form-control,
.ob-manage .form-select,
.ob-manage textarea{width:100%;box-sizing:border-box}
.ob-manage select[multiple]{min-height:120px}
/* компактные числовые поля (баллы оценки кейса) — не растягивать на всю карточку */
.ob-manage .rc-num{width:96px;box-sizing:border-box}

/* инлайн-чекбокс в стэк-форме: чекбокс + подпись в одну строку
   (формы без BootstrapFormMixin рендерят голый чекбокс под блочным лейблом) */
.ob-manage .ob-check{display:flex;align-items:center;gap:9px;margin-bottom:16px}
.ob-manage .ob-check input[type=checkbox]{width:18px;height:18px;flex:0 0 auto;accent-color:var(--ob-primary);box-sizing:border-box}
.ob-manage .ob-check label{margin:0;font-size:13.5px;font-weight:600;color:var(--ob-text)}

/* критерии рубрики — адаптивная 12-колоночная сетка вместо инлайн-флекса «поля на поля» */
.crit-row{border:1px solid var(--ob-border);border-radius:var(--ob-r-card);padding:14px 16px;
  margin-bottom:12px;background:#fff}
.crit-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px 14px;align-items:end}
.crit-c{min-width:0}
.crit-c-name{grid-column:span 6}
.crit-c-desc{grid-column:span 6}
.crit-c-num{grid-column:span 3}
.crit-lbl{display:block;font-size:11px;font-weight:600;color:var(--ob-muted);
  margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em}
.crit-grid .ob-input{width:100%;box-sizing:border-box}
.ob-manage .crit-grid .rc-num{width:100%}            /* в сетке числа заполняют свою колонку, не 96px */
.crit-del{display:inline-flex;align-items:center;gap:6px;margin-top:12px;
  font-size:12.5px;font-weight:600;color:var(--ob-danger);cursor:pointer}
.crit-del input[type=checkbox]{width:16px;height:16px;accent-color:var(--ob-danger);box-sizing:border-box}
@media(max-width:860px){.crit-c-name,.crit-c-desc{grid-column:span 12}.crit-c-num{grid-column:span 6}}
@media(max-width:520px){.crit-c-num{grid-column:span 12}}
