/* ==========================================================================
   Минимальный слой сетки и компонентов.

   Реализует ровно то подмножество классов Bootstrap 5, которое использует
   сайт (~90 штук). Имена классов совместимы с Bootstrap: если понадобится
   полноценный фреймворк, достаточно подключить его вместо этого файла и
   ничего не менять в шаблонах.

   Смысл замены: полный Bootstrap — это ~230 КБ CSS и ~80 КБ JS, из которых
   сайт использует единицы процентов. Для проекта, где LCP влияет на позиции,
   такой обмен невыгоден.
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, sans-serif;
}

img, svg { max-width: 100%; height: auto; }

/* --- Контейнер ------------------------------------------------------------ */
.container {
  width: 100%;
  max-width: 1140px;
  margin-inline: auto;
  padding-inline: 1rem;
}

/* --- Сетка ---------------------------------------------------------------- */
.row {
  display: flex;
  flex-wrap: wrap;
  margin-inline: calc(var(--gx, 1.5rem) / -2);
}
.row > * {
  flex: 0 0 auto;
  width: 100%;
  max-width: 100%;
  padding-inline: calc(var(--gx, 1.5rem) / 2);
  margin-top: var(--gy, 0);
}
.row { margin-top: calc(var(--gy, 0) * -1); }

.g-2 { --gx: .5rem;  --gy: .5rem; }
.g-3 { --gx: 1rem;   --gy: 1rem; }
.gy-4 { --gy: 1.5rem; }

.col-1  { width: 8.3333%; }  .col-2  { width: 16.6667%; }
.col-3  { width: 25%; }      .col-4  { width: 33.3333%; }
.col-5  { width: 41.6667%; } .col-6  { width: 50%; }
.col-7  { width: 58.3333%; } .col-8  { width: 66.6667%; }
.col-9  { width: 75%; }      .col-10 { width: 83.3333%; }
.col-11 { width: 91.6667%; } .col-12 { width: 100%; }

@media (min-width: 768px) {
  .col-md-1  { width: 8.3333%; }  .col-md-2  { width: 16.6667%; }
  .col-md-3  { width: 25%; }      .col-md-4  { width: 33.3333%; }
  .col-md-5  { width: 41.6667%; } .col-md-6  { width: 50%; }
  .col-md-7  { width: 58.3333%; } .col-md-8  { width: 66.6667%; }
  .col-md-9  { width: 75%; }      .col-md-10 { width: 83.3333%; }
  .col-md-11 { width: 91.6667%; } .col-md-12 { width: 100%; }
}
@media (min-width: 992px) {
  .col-lg-1  { width: 8.3333%; }  .col-lg-2  { width: 16.6667%; }
  .col-lg-3  { width: 25%; }      .col-lg-4  { width: 33.3333%; }
  .col-lg-5  { width: 41.6667%; } .col-lg-6  { width: 50%; }
  .col-lg-7  { width: 58.3333%; } .col-lg-8  { width: 66.6667%; }
  .col-lg-9  { width: 75%; }      .col-lg-10 { width: 83.3333%; }
  .col-lg-11 { width: 91.6667%; } .col-lg-12 { width: 100%; }
}

/* --- Карточки ------------------------------------------------------------- */
.card {
  display: flex;
  flex-direction: column;
  background: var(--fc-card, #fff);
  color: var(--fc-ink, #16202c);
  border: 1px solid var(--fc-line, #e3e8ee);
  border-radius: .5rem;
}
.card-body { flex: 1 1 auto; padding: 1.25rem; }
.card-title { margin-bottom: .5rem; }
.card-text  { margin-bottom: 0; }
.h-100 { height: 100%; }

/* --- Формы ---------------------------------------------------------------- */
.form-label {
  display: block;
  margin-bottom: .35rem;
  font-weight: 500;
  font-size: .95rem;
}
.form-control, .form-select {
  display: block;
  width: 100%;
  padding: .5rem .75rem;
  font-size: 1rem;
  font-family: inherit;
  line-height: 1.5;
  color: inherit;
  background-color: var(--fc-card, #fff);
  border: 1px solid var(--fc-line-strong, #c7d0da);
  border-radius: .375rem;
  appearance: none;
}
.form-select {
  padding-right: 2.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%235b6b7c' stroke-width='2' d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .75rem center;
  background-size: 12px;
}
.form-control:focus, .form-select:focus {
  outline: 0;
  border-color: var(--fc-accent, #0b6b5e);
  box-shadow: 0 0 0 3px var(--fc-accent-ring, rgba(11, 107, 94, .15));
}
.form-control-lg { padding: .65rem .9rem; font-size: 1.15rem; }
.form-text { margin-top: .3rem; font-size: .85rem; color: var(--fc-muted, #5b6b7c); }

.form-check { position: relative; padding-left: 1.9rem; margin-bottom: .35rem; }
.form-check-input {
  position: absolute;
  left: 0;
  top: .2rem;
  width: 1.5rem;
  height: 1.5rem;
  margin: 0;
  accent-color: var(--fc-accent, #0b6b5e);
}
.form-check-label { cursor: pointer; }

fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
legend { padding: 0; }

/* --- Кнопки --------------------------------------------------------------- */
.btn {
  display: inline-block;
  padding: .5rem 1rem;
  font-size: 1rem;
  font-family: inherit;
  font-weight: 500;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  vertical-align: middle;
  cursor: pointer;
  user-select: none;
  background: transparent;
  border: 1px solid transparent;
  border-radius: .375rem;
  transition: background-color .12s ease, color .12s ease, border-color .12s ease;
}
.btn:focus-visible { outline: 2px solid var(--fc-accent, #0b6b5e); outline-offset: 2px; }
.btn-sm { padding: .3rem .7rem; font-size: .875rem; }

.btn-outline-primary   { color: var(--fc-accent, #0b6b5e); border-color: var(--fc-accent, #0b6b5e); }
.btn-outline-primary:hover,
.btn-outline-primary.active { background: var(--fc-accent, #0b6b5e); color: var(--fc-on-accent, #fff); }

.btn-outline-secondary { color: var(--fc-ink-soft, #33454f); border-color: var(--fc-line-strong, #c7d0da); }
.btn-outline-secondary:hover { background: var(--fc-surface-2, #eef2f6); color: var(--fc-ink, #16202c); }

.btn-group { display: inline-flex; }
.btn-group > .btn { border-radius: 0; flex: 1 1 auto; }
.btn-group > .btn:first-of-type { border-radius: .375rem 0 0 .375rem; }
.btn-group > .btn:last-of-type  { border-radius: 0 .375rem .375rem 0; }
.btn-group > .btn + .btn { margin-left: -1px; }

/* Радиокнопка, оформленная как кнопка. */
.btn-check {
  position: absolute;
  width: 1px; height: 1px;
  opacity: 0;
  pointer-events: none;
}
.btn-check:checked + .btn {
  background: var(--fc-accent, #0b6b5e);
  color: var(--fc-on-accent, #fff);
  border-color: var(--fc-accent, #0b6b5e);
}
.btn-check:focus-visible + .btn { outline: 2px solid var(--fc-accent, #0b6b5e); outline-offset: 2px; }

/* --- Шапка ---------------------------------------------------------------- */
.navbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  padding-block: .6rem;
}
.navbar-brand {
  text-decoration: none;
  color: inherit;
  margin-right: 1rem;
}
.navbar-toggler {
  margin-left: auto;
  padding: .35rem .6rem;
  background: transparent;
  border: 1px solid var(--fc-line-strong, #c7d0da);
  border-radius: .375rem;
  cursor: pointer;
}
.navbar-toggler-icon {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='%2316202c' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100%;
}
.navbar-nav {
  display: flex;
  flex-direction: column;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav-item { display: block; }
.nav-link {
  display: block;
  padding: .45rem .75rem;
  color: var(--fc-ink, #16202c);
  text-decoration: none;
}
.nav-link:hover { color: var(--fc-accent, #0b6b5e); }

.navbar-collapse { flex-basis: 100%; }
.collapse:not(.show) { display: none; }

@media (min-width: 992px) {
  .navbar-expand-lg .navbar-toggler { display: none; }
  .navbar-expand-lg .navbar-collapse {
    display: flex !important;
    flex-basis: auto;
    align-items: center;
  }
  .navbar-expand-lg .navbar-nav { flex-direction: row; }
  .d-lg-block { display: block; }
  .d-lg-none  { display: none; }
}
.me-auto { margin-right: auto; }

/* --- Выпадающее меню ------------------------------------------------------ */
.dropdown { position: relative; }
.dropdown-toggle::after {
  content: "";
  display: inline-block;
  margin-left: .4em;
  vertical-align: .15em;
  border-top: .3em solid;
  border-right: .3em solid transparent;
  border-left: .3em solid transparent;
}
.dropdown-menu {
  display: none;
  position: absolute;
  z-index: 1000;
  color: var(--fc-ink, #16202c);
  min-width: 9rem;
  margin-top: .25rem;
  padding: .3rem 0;
  list-style: none;
  background: var(--fc-card, #fff);
  border: 1px solid var(--fc-line, #e3e8ee);
  border-radius: .375rem;
  box-shadow: 0 6px 20px rgba(22, 32, 44, .12);
}
.dropdown-menu.show { display: block; }
.dropdown-menu-end { right: 0; }
.dropdown-item {
  display: block;
  padding: .4rem .9rem;
  color: var(--fc-ink, #16202c);
  text-decoration: none;
  white-space: nowrap;
}
.dropdown-item:hover { background: var(--fc-surface-2, #eef2f6); }
.dropdown-item.active { color: var(--fc-accent, #0b6b5e); font-weight: 600; }

/* --- Таблицы -------------------------------------------------------------- */
.table {
  width: 100%;
  margin-bottom: 1rem;
  border-collapse: collapse;
}
.table th, .table td {
  padding: .55rem .6rem;
  border-bottom: 1px solid var(--fc-line, #e3e8ee);
  text-align: left;
}
.table thead th { border-bottom-width: 2px; font-size: .9rem; }
.table-sm th, .table-sm td { padding: .35rem .5rem; }
.table-striped tbody tr:nth-child(odd) { background: var(--fc-surface, #f8fafb); }
.table .align-middle th, .table .align-middle td,
.table.align-middle th, .table.align-middle td { vertical-align: middle; }
.table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* --- Аккордеон ------------------------------------------------------------ */
.accordion { border: 1px solid var(--fc-line, #e3e8ee); border-radius: .5rem; overflow: hidden; }
.accordion-item + .accordion-item { border-top: 1px solid var(--fc-line, #e3e8ee); }
.accordion-header { margin: 0; }
.accordion-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  padding: .9rem 1.1rem;
  font-size: 1rem;
  font-family: inherit;
  text-align: left;
  color: inherit;
  background: var(--fc-card, #fff);
  border: 0;
  cursor: pointer;
}
.accordion-button::after {
  content: "";
  flex: 0 0 auto;
  width: .8rem; height: .8rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%235b6b7c' stroke-width='2' d='M2 5l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 100%;
  transition: transform .15s ease;
}
.accordion-button:not(.collapsed)::after { transform: rotate(180deg); }
.accordion-body { padding: 0 1.1rem 1rem; }
.accordion-collapse:not(.show) { display: none; }

/* --- Хлебные крошки ------------------------------------------------------- */
.breadcrumb {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
}
.breadcrumb-item + .breadcrumb-item::before {
  content: "/";
  padding: 0 .45rem;
  color: var(--fc-muted, #5b6b7c);
}
.breadcrumb-item a { text-decoration: none; }
.breadcrumb-item.active { color: var(--fc-muted, #5b6b7c); }

/* --- Плашки --------------------------------------------------------------- */
.alert { padding: 1rem 1.15rem; border: 1px solid transparent; border-radius: .5rem; }
.alert-light { background: var(--fc-surface, #f8fafb); border-color: var(--fc-line, #e3e8ee); }

/* --- Утилиты -------------------------------------------------------------- */
.m-0{margin:0}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.my-0{margin-block:0}
.mt-1{margin-top:.25rem}.mb-1{margin-bottom:.25rem}.my-1{margin-block:.25rem}
.mt-2{margin-top:.5rem}.mb-2{margin-bottom:.5rem}.my-2{margin-block:.5rem}
.mt-3{margin-top:1rem}.mb-3{margin-bottom:1rem}.my-3{margin-block:1rem}
.mt-4{margin-top:1.5rem}.mb-4{margin-bottom:1.5rem}.my-4{margin-block:1.5rem}
.mt-5{margin-top:3rem}.mb-5{margin-bottom:3rem}.my-5{margin-block:3rem}

.p-0{padding:0}.py-0{padding-block:0}
.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}
.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}
.px-3{padding-inline:1rem}

.d-none{display:none}.d-block{display:block}.d-flex{display:flex}
.d-inline-block{display:inline-block}
.gap-2{gap:.5rem}.gap-3{gap:1rem}

.text-center{text-align:center}.text-end{text-align:right}.text-start{text-align:left}
.text-uppercase{text-transform:uppercase}
.text-muted{color:var(--fc-muted,#5b6b7c)}
.text-decoration-none{text-decoration:none}
.fw-normal{font-weight:400}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}
.small{font-size:.875em}
.lead{font-size:1.1rem}

.w-100{width:100%}.w-auto{width:auto}
.border{border:1px solid var(--fc-line,#e3e8ee)}
.border-top{border-top:1px solid var(--fc-line,#e3e8ee)}
.border-bottom{border-bottom:1px solid var(--fc-line,#e3e8ee)}
.bg-white{background-color:var(--fc-card,#fff)}
.bg-light{background-color:var(--fc-surface,#f6f8fa)}
.sticky-top{position:sticky;top:0;z-index:1020}
.list-unstyled{list-style:none;padding-left:0;margin:0}
.link-secondary{color:var(--fc-muted,#5b6b7c)}
.link-secondary:hover{color:var(--fc-accent,#0b6b5e)}

.visually-hidden,
.visually-hidden-focusable:not(:focus):not(:focus-within) {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
