/* Local Bootstrap 5-compatible subset used by the MVP shell. */
:root{--bs-primary:#0d6efd;--bs-border:#dee2e6;--bs-bg:#fff;--bs-text:#212529}*{box-sizing:border-box}body{margin:0;background:#f8f9fa;color:var(--bs-text);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.5}a{color:var(--bs-primary);text-decoration:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:.75rem;padding-left:.75rem}@media(min-width:576px){.container{max-width:540px}}@media(min-width:768px){.container{max-width:720px}}@media(min-width:992px){.container{max-width:960px}}@media(min-width:1200px){.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}.col-12,.col-md-6,.col-lg-4{width:100%;padding:0 .75rem}@media(min-width:768px){.col-md-6{width:50%}}@media(min-width:992px){.col-lg-4{width:33.333333%}}.card{background:var(--bs-bg);border:1px solid var(--bs-border);border-radius:.375rem}.card-body{padding:1rem}.btn{display:inline-block;padding:.375rem .75rem;border:1px solid transparent;border-radius:.375rem;cursor:pointer;font-size:1rem}.btn-primary{color:#fff;background:var(--bs-primary);border-color:var(--bs-primary)}.btn-outline-primary{color:var(--bs-primary);background:transparent;border-color:var(--bs-primary)}.navbar-brand{font-size:1.25rem;font-weight:600}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pb-5{padding-bottom:3rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mb-2{margin-bottom:.5rem!important}.float-end{float:right}.justify-content-center{justify-content:center}.text-muted{color:#6c757d}.d-flex{display:flex}.gap-2{gap:.5rem}.w-100{width:100%}label{display:block;font-weight:500}input:where(:not([type=checkbox]):not([type=radio])),textarea,select{display:block;width:100%;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:.375rem;font:inherit}

/* ============================================================
   Fix-ui-01. Недостающая часть субсета Bootstrap 5.
   Шаблоны опираются на эти классы; без них ломались сетка
   админ-панели, таблицы, значки, поля форм и группы ввода.
   Цвета берутся из токенов site.css с запасным значением —
   порядок подключения (bootstrap.min.css идёт первым) не даёт
   опереться на них без fallback.
   ============================================================ */

/* --- сетка: остальные колонки и гуттеры --- */
.col{flex:1 0 0%;padding:0 .75rem}
.col-auto{flex:0 0 auto;width:auto;padding:0 .75rem}
.col-sm-4,.col-sm-6,.col-sm-8,.col-md-4,.col-md-8,.col-lg-3,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8{width:100%;padding:0 .75rem}
@media(min-width:576px){.col-sm-4{width:33.333333%}.col-sm-6{width:50%}.col-sm-8{width:66.666667%}}
@media(min-width:768px){.col-md-4{width:33.333333%}.col-md-8{width:66.666667%}}
@media(min-width:992px){.col-lg-3{width:25%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}}
.row>*{margin-top:var(--bs-gutter-y,0)}
.g-2{--bs-gutter-y:.5rem}
.g-3{--bs-gutter-y:1rem}
.g-4{--bs-gutter-y:1.5rem}

/* --- заголовочные утилиты --- */
.h1,.h2,.h3,.h4,.h5,.h6{margin-top:0;margin-bottom:.5rem;font-weight:600;line-height:1.2}
.h1{font-size:2rem}.h2{font-size:1.6rem}.h3{font-size:1.4rem}
.h4{font-size:1.2rem}.h5{font-size:1.1rem}.h6{font-size:1rem}
.display-6{font-size:1.9rem;font-weight:400;line-height:1.2}
small,.small{font-size:.875em}

/* --- отступы --- */
.m-0{margin:0!important}
.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}
.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}
.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}
.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}
.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}
.mt-4{margin-top:1.5rem!important}
.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}
.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-auto{margin-left:auto!important}
.my-3{margin-top:1rem!important;margin-bottom:1rem!important}
.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}
.p-0{padding:0!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}
.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}
.px-2{padding-left:.5rem!important;padding-right:.5rem!important}
.pt-2{padding-top:.5rem!important}

/* --- флексбокс и раскладка --- */
.d-block{display:block!important}
.d-inline{display:inline!important}
.d-inline-block{display:inline-block!important}
.d-grid{display:grid!important}
.flex-column{flex-direction:column!important}
.flex-wrap{flex-wrap:wrap!important}
.flex-grow-1{flex-grow:1!important}
.flex-shrink-0{flex-shrink:0!important}
.align-items-start{align-items:flex-start!important}
.align-items-center{align-items:center!important}
.align-items-end{align-items:flex-end!important}
.justify-content-between{justify-content:space-between!important}
.justify-content-end{justify-content:flex-end!important}
.gap-1{gap:.25rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}
.h-100{height:100%!important}
.text-center{text-align:center!important}
.text-end{text-align:right!important}
.border-top{border-top:1px solid var(--c-line,#e3e8ec)!important}

/* --- кнопки --- */
.btn{line-height:1.5;text-align:center;vertical-align:middle;user-select:none}
.btn:disabled,.btn.disabled{opacity:.65;pointer-events:none}
.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}
.btn-lg{padding:.5rem 1rem;font-size:1.125rem}
.btn-secondary{color:#fff;background:#5c6871;border-color:#5c6871}
.btn-success{color:#fff;background:var(--c-ok,#1a7f37);border-color:var(--c-ok,#1a7f37)}
.btn-danger{color:#fff;background:var(--c-danger,#b02a37);border-color:var(--c-danger,#b02a37)}
.btn-warning{color:#22303a;background:#ffc107;border-color:#ffc107}
.btn-outline-secondary{color:var(--c-ink-muted,#4c5964);border-color:var(--c-line-strong,#cfd7dd)}
.btn-outline-success{color:var(--c-ok,#1a7f37);border-color:var(--c-ok,#1a7f37)}
.btn-outline-danger{color:var(--c-danger,#b02a37);border-color:var(--c-danger,#b02a37)}
.btn-outline-warning{color:var(--c-warn,#9a6700);border-color:var(--c-warn,#9a6700)}
.btn-outline-secondary:hover,.btn-outline-success:hover,.btn-outline-danger:hover,.btn-outline-warning:hover{background:var(--c-surface-alt,#f7f9fa)}
.btn-link{color:var(--bs-primary);border-color:transparent;text-decoration:underline}
.btn-close{width:1rem;height:1rem;padding:.25rem;border:0;background:transparent;font-size:1rem;line-height:1;cursor:pointer}

/* --- карточки --- */
.card{display:flex;flex-direction:column;min-width:0}
.card-title{margin-bottom:.5rem;font-size:1.1rem;font-weight:600}

/* --- таблицы --- */
.table{width:100%;margin-bottom:1rem;border-collapse:collapse;vertical-align:top}
.table>thead{vertical-align:bottom}
.table th,.table td{padding:.5rem;border-bottom:1px solid var(--c-line,#e3e8ec);text-align:left}
.table th{font-weight:600}
.table-sm th,.table-sm td{padding:.25rem}
.table-hover tbody tr:hover{background:var(--c-surface-alt,#f7f9fa)}
.table-danger{background:var(--c-danger-soft,#f8d7da)}
.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* --- значки --- */
.badge{display:inline-block;padding:.35em .6em;border-radius:.25rem;font-size:.75em;font-weight:600;line-height:1;white-space:nowrap;color:#fff;background:#5c6871}
.text-bg-primary{color:#fff;background:var(--bs-primary)!important}
.text-bg-secondary{color:#fff;background:#5c6871!important}
.text-bg-success{color:#fff;background:var(--c-ok,#1a7f37)!important}
.text-bg-danger{color:#fff;background:var(--c-danger,#b02a37)!important}
.text-bg-warning{color:#22303a;background:#ffc107!important}
.text-bg-light{color:#22303a;background:var(--c-surface-alt,#f7f9fa)!important}
.bg-danger{background:var(--c-danger,#b02a37)!important;color:#fff}
.bg-secondary{background:#5c6871!important;color:#fff}
.text-danger{color:var(--c-danger,#b02a37)!important}
.text-warning{color:var(--c-warn,#9a6700)!important}
.text-success{color:var(--c-ok,#1a7f37)!important}

/* --- сообщения --- */
.alert{position:relative;padding:.75rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}
.alert-info{color:#055160;background:#cff4fc;border-color:#b6effb}
.alert-success{color:var(--c-ok,#1a7f37);background:var(--c-ok-soft,#d7f0dc);border-color:var(--c-ok,#1a7f37)}
.alert-warning{color:var(--c-warn,#9a6700);background:var(--c-warn-soft,#fff3cd);border-color:var(--c-warn,#9a6700)}
.alert-danger,.alert-error{color:var(--c-danger,#b02a37);background:var(--c-danger-soft,#f8d7da);border-color:var(--c-danger,#b02a37)}
.alert-dismissible{padding-right:2.5rem}
.alert-dismissible .btn-close{position:absolute;top:.5rem;right:.5rem}

/* --- формы --- */
.form-label{display:inline-block;margin-bottom:.25rem;font-weight:500}
.form-text{display:block;margin-top:.25rem;font-size:.875em;color:var(--c-ink-muted,#4c5964)}
.form-control,.form-select{display:block;width:100%;padding:.375rem .75rem;border:1px solid #ced4da;border-radius:.375rem;font:inherit;background:#fff}
.form-control:focus,.form-select:focus{outline:2px solid var(--bs-primary);outline-offset:1px}
.form-control-sm,.form-select-sm{padding:.25rem .5rem;font-size:.875rem}
.col-form-label-sm{font-size:.875rem}
.form-check{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}
.form-check-inline{display:inline-flex;margin-right:.75rem}
.form-check-input{width:1rem;height:1rem;margin:0;flex:0 0 auto;display:inline-block}
.form-check-label{display:inline;font-weight:400;margin:0}

/* --- группа ввода: поле + кнопка одной строкой ---
   Без этих правил input (width:100%) выдавливал кнопку «Найти»
   за пределы сайдбара — замечание владельца «Интерфейс 9». */
.input-group{position:relative;display:flex;flex-wrap:nowrap;align-items:stretch;width:100%}
.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}
.input-group>.btn{position:relative;flex:0 0 auto;z-index:2;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}
