/*==============================
 Themes
==============================*/
:root {
  /* Слой бренда. Живёт отдельно от токенов Figma и одинаков в обеих
     темах: сам бренд между светлой и тёмной не меняется, значит и то,
     что лежит поверх него, менять нельзя. Три значения, настраиваются
     вместе — эксперт задаст свои, и их увидят его клиенты.
     Решение Андрея 08.10, те же три заводятся и в Figma. */
  --brand: #3934FA;
  --brand-text: #FFFFFF;
  --brand-icon: #FFFFFF;

  /* Набор «Theme» — отдельный от бренда и от смысловых токенов.
     Нужен там, где цвет несёт собственный смысл и должен быть заметным:
     графики, диаграммы, разметка значений. Из общей палитры такие цвета
     не берём — там они приглушённые и на графике сливаются.
     Одинаковы в светлой и тёмной теме. Решение Андрея 09.10;
     набор будет расти, значения приходят из Figma, раздел Theme. */
  /* Типографика: стили Figma, набор Lg (12.10). Два размера шкалы:
     Lg от 768, Sm до 767 — переопределение ниже по файлу. Промежуточных
     значений нет сознательно: один перелом.

     D1 — дисплейный стиль для маркетинга и крупных чисел.
     H1–H5 — заголовки, P1–P3 — текст, Small и Micro — мелкое. */
  --fs-d1: 48px;    --lh-d1: 1.2;
  --fs-h1: 28px;    --lh-h1: 1.2;
  --fs-h2: 24px;    --lh-h2: 1.4;
  --fs-h3: 20px;    --lh-h3: 1.4;
  --fs-h4: 16px;    --lh-h4: 1.4;
  --fs-h5: 14px;    --lh-h5: 1.4;
  --fs-p1: 16px;    --lh-p1: 1.4;
  --fs-p2: 15px;    --lh-p2: 1.4;
  --fs-p3: 14px;    --lh-p3: 1.4;
  --fs-small: 13px; --lh-small: 1.4;
  --fs-micro: 12px; --lh-micro: 1.4;
  /* Межбуквенный интервал у всех стилей отрицательный: системный шрифт
     шире фигмовского, и без сжатия текст выглядит разреженным.
     Чем крупнее стиль, тем плотнее (правка 12.10). */
  --ls-d1: -0.03em;
  --ls-h1: -0.02em;
  --ls-h2: -0.02em;
  --ls-h3: -0.02em;
  --ls-h4: -0.02em;
  --ls-h5: -0.02em;
  --ls-p1: -0.01em;
  --ls-p2: -0.01em;
  --ls-p3: -0.01em;
  --ls-small: -0.01em;
  --ls-micro: -0.01em;
  /* Прежние имена: hero — это D1, big — H4. Оставлены, чтобы старые
     правила не поехали; новые правила их не используют. */
  --fs-hero: var(--fs-d1);  --lh-hero: var(--lh-d1);
  --fs-big: var(--fs-h4);   --lh-big: var(--lh-h4);

  --theme-body-id: #3934FA;
  --theme-orange: #FF5938;
  --theme-red: #E36323;
  --theme-yellow: #FFB73A;
  --theme-purple: #8755E9;
  --theme-green: #49BA61;
  --brand_1: var(--brand);
  --brand_1_disabled: var(--brand);
  --brand_2: #FD82C6;
  --brand_3: #69D77D; 
  --brand_main: linear-gradient(90deg, #FE4E50 0%, #FE6E4E 100%);
  /* Ссылки сейчас красятся брендом. Оставалось старое значение 3834F9,
     то есть ссылки жили на прошлом бренде — переведено на переменную.
     Отдельный вопрос: ссылка должна быть брендом или акцентным токеном;
     решается вместе с раскладкой. */
  --link_1: var(--brand);
  /* Цвета состояний — из иконок статусов (макет 23.09). */
  --status_ok: #00C147;
  --status_alert: #FF5C5C;
  --status_warn: #FFAE00;
  --status_warn_text: #FF8C00;
  --status_info: #99A0AD;
  --green_1: #62D062;
  --red_1: #FF4034;
  --br-0: 30px;
  --br-1: 25px;
  --br-2: 20px;
  --br-3: 15px;
  --br-4: 10px;
  --br-5: 5px;
}

/* Старые имена остались, но значения теперь берутся из смысловых
   токенов Figma. Так переводится весь файл разом, без правки семисот
   обращений, и видно соответствие: что чем стало.

   Уровни 0–2 — это поверхности, они легли один в один. Уровни 3–6
   поверхностями не были: в системе фоны кончаются на bg/quartiary,
   а эти значения использовались как рамки, подписи и иконки —
   поэтому они разложены по ролям, а не по номеру.

   Тёмная тема больше не задаётся вручную: она приходит из токенов
   вместе со светлой (решение Андрея 08.10). */
:root, .light {
  --level_0: var(--bg-primary);
  --level_05: var(--bg-secondary);
  --level_1: var(--bg-tertiary);
  --level_2: var(--bg-quartiary);
  --level_3: var(--border-secondary);
  --level_4: var(--border-primary);
  --level_5: var(--text-tertiary);
  --level_6: var(--text-secondary);
  --level_100: var(--bg-black-solid);
  --text_1: var(--text-primary);
  --text_2: var(--text-tertiary);
  --text_3: var(--text-secondary);
  --link_1_hover: var(--text-primary-hover);
  --link_2: var(--text-primary-hover);
  --link_2_hover: var(--text-tertiary-hover);
  /* Текст на кнопке — из слоя бренда: кнопка брендовая, и цвет поверх
     неё не должен переворачиваться вместе с темой. */
  --btn-text: var(--brand-text);
  --icon: var(--icon-tertiary);
  --shadow_1: rgba(25, 28, 31, 0.1) 0px 3px 8px 0px;
  --focus: var(--border-primary);
} 

/* Тёмная тема: те же ссылки повторяются здесь — и это не копипаста.
   Подстановка var() вычисляется там, где переменная ОБЪЯВЛЕНА, а не
   там, где используется. Класс темы стоит на body, то есть ниже :root,
   поэтому объявленный в :root алиас --level_0: var(--bg-primary)
   навсегда берёт светлое значение. Чтобы он увидел тёмное, его нужно
   объявить внутри .dark заново. Проверено на стенде 09.10: без этого
   блока тёмная тема оставалась светлой. */
.dark {
  --level_0: var(--bg-primary);
  --level_05: var(--bg-secondary);
  --level_1: var(--bg-tertiary);
  --level_2: var(--bg-quartiary);
  --level_3: var(--border-secondary);
  --level_4: var(--border-primary);
  --level_5: var(--text-tertiary);
  --level_6: var(--text-secondary);
  --level_100: var(--bg-black-solid);
  --text_1: var(--text-primary);
  --text_2: var(--text-tertiary);
  --text_3: var(--text-secondary);
  --link_1_hover: var(--text-primary-hover);
  --link_2: var(--text-primary-hover);
  --link_2_hover: var(--text-tertiary-hover);
  --btn-text: var(--brand-text);
  --icon: var(--icon-tertiary);
  --focus: var(--border-primary);
  --shadow_1: 0px 5px 20px rgba(0, 0, 0, .35);
}

/*==============================
  Common styles
==============================*/
html {
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
}

html,
body {
  height: 100%;
}

/* Фон до того, как на body появится класс темы, — без белой вспышки
   в тёмной теме. #000 — --level_0 тёмной темы. */
@media (prefers-color-scheme: dark) {
  html {
    background-color: #000000;
  }
}

body {
  min-width: 375px;
  /* Системный шрифт: берём тот, что основной у человека в системе.
     На маке это SF, на Windows — Segoe, на Android — Roboto. Своих
     шрифтов не подключаем: `system-ui` сначала, остальное — запасные
     имена для старых браузеров, где его нет. */
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', 'Roboto Rouble', sans-serif;
  font-weight: 400;
  background-color: var(--level_0);
  -webkit-font-smoothing: antialiased;
  display: flex;
  flex-direction: column;
  height: auto;
  min-height: 100vh;
}

.footer {
  margin-top: auto;
}

button {
  padding: 0;
  border: none;
  background-color: transparent;
  transition: 250ms ease;
  transition-property: background-color, border-color, box-shadow;
  cursor: pointer;
}

button:focus {
  outline: 0; 
  box-shadow: none;
  border: 0;
}

a {
  color: var(--link_1);
  text-decoration: none;
  transition: 250ms ease;
  transition-property: background-color, border-color, box-shadow;
}

a:hover,
a:active,
a:focus {
  outline: none;
  text-decoration: none;
}

input,
textarea,
select {
  padding: 0;
  margin: 0;
  border-radius: 0;
  -webkit-appearance: none;
  -moz-appearance: none;
  -ms-appearance: none;
  appearance: none;
  box-shadow: none;
  transition: 250ms ease;
  transition-property: color, background-color, border-color, box-shadow;
}

input:focus,
textarea:focus,
select:focus {
  outline: none;
}

select::-ms-expand {
  display: none;
}

input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

input[type=number] {
  -moz-appearance: textfield;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Выделение текста. Было белым на белом — то есть выделения не видно
   вовсе. Берём токен подсветки: он же работает и в тёмной теме,
   а прежние #fff и #222227 в ней выглядели инородно (правка 16.10). */
::-moz-selection {
  background: var(--bg-warning-primary-hover);
  color: var(--text-primary);
  text-shadow: none;
}

::selection {
  background: var(--bg-warning-primary-hover);
  color: var(--text-primary);
  text-shadow: none;
}

::-webkit-input-placeholder {
  color: #c0c0c0;
  opacity: 1;
}

::-moz-placeholder {
  color: #c0c0c0;
  opacity: 1;
}

:-moz-placeholder {
  color: #c0c0c0;
  opacity: 1;
}

:-ms-input-placeholder {
  color: #c0c0c0;
  opacity: 1;
}

:focus {
  outline: -webkit-focus-ring-color auto 0px;
}

/* Полоса прокрутки страницы — системная. Прежние стили рисовали тёмную
   дорожку 16px с серым ползунком поверх светлой страницы. */

.tab-content {
  width: 100%;
}

.tab-content>.tab-pane {
  display: none;
}

.tab-content>.active {
  display: block;
}

.fade {
  transition: opacity 250ms linear;
}

@media screen and (prefers-reduced-motion: reduce) {
  .fade {
    transition: none;
  }
}

.fade:not(.show) {
  opacity: 0;
}

.collapse:not(.show) {
  display: none;
}

.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  transition: height 250ms ease;
}

@media screen and (prefers-reduced-motion: reduce) {
  .collapsing {
    transition: none;
  }
}

:focus-visible {
  outline: 0px dotted;
}

.row--grid {
  margin-right: -10px;
  margin-left: -10px;
}

.row--grid .col-6,
.row--grid .col-12 {
  padding-left: 10px;
  padding-right: 10px;
}

@media (min-width: 991px) {
  .row--grid {
    margin-right: -15px;
    margin-left: -15px;
  }

  .row--grid .col-6,
  .row--grid .col-12 {
    padding-left: 15px;
    padding-right: 15px;
  }
}

.row--sidebar {
  margin-right: -10px;
  margin-left: -10px;
}

.row--sidebar .col-6,
.row--sidebar .col-12 {
  padding-left: 10px;
  padding-right: 10px;
}

.table-responsive {
  display: block;
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: -ms-autohiding-scrollbar;
}

.owl-stage {
  display: flex;
  align-items: stretch;
}

.owl-carousel .owl-item {
  -webkit-transform: none;
}

.owl-carousel .owl-nav button.owl-next, .owl-carousel .owl-nav button.owl-prev, .owl-carousel button.owl-dot {display: none;}

h1,
h2,
h3,
h4,
h5,
h6,
p {
  color: var(--text_1);
}

/*==============================
  Bottom Panel Exclude
==============================*/
.b-panel {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 999;
}

.b-panel-1 {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  background-color: var(--level_1);
  border-top-left-radius: 20px;
  border-top-right-radius: 20px;
  padding: 0 20px 0 20px;
  box-shadow: var(--shadow_1);
}

.b-panel span {
  color: var(--text_2);
}

.b-panel .buttons {
  display: flex;
  flex-direction: row;
}

.b-panel .buttons button {
  margin-left: 20px;
}

@media (max-width: 990px) {
  .b-panel-1 {
    padding: 0 10px 0 10px;
  }

  .b-panel span {
    display: none;
  }

  .b-panel .buttons {
    width: 100%;
  }

  .b-panel .buttons .btn-primary {
    width: 100%;
    margin-left: 20px;
  }
}

/*==============================
  Form
==============================*/
.field-icon {
  float: right;
  position: absolute;
  right: 15px;
  top: 20px;
  cursor: pointer;
  z-index: 3;
  opacity: .7;
}

.visibility {
  width: 20px;
  height: 20px;
  transition: 250ms ease;
  background: transparent url("../img/icons/Eye.svg") no-repeat center/20px auto;
  border: 0;
  display: block;
}

.visibility-off {
  width: 20px;
  height: 20px;
  transition: 250ms ease;
  background: transparent url("../img/icons/Eye-off.svg") no-repeat center/20px auto;
  border: 0;
  display: block;
}

.floating-label-1 {
  width: 100%;
  height: 60px;
  border-radius: var(--br-3);
  background: var(--level_1) url("../img/arrow.svg") no-repeat center right;
  background-size: 50px 20px;
  margin-bottom: 20px;
}

.multiselect {
  width: 100%;
}

.multiselect-native-select {
  display: block;
  height: 100%;
  width: 100%;
}

.multiselect-selected-text {
  display: block;
  color: var(--text_1);
  height: 60px;
  width: 100%;
  padding-top: 30px;
  padding-left: 15px;
  text-align: left;
}

.floating-label-2 {
  position: absolute;
  margin: 8px 0 0 15px;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  color: var(--text_2);
}

/* Подписи полей — в одну строку, длинное обрезается многоточием.
   15px отступ слева + 50px под стрелку списка справа. */
.floating-label-1 {
  position: relative;
}

.floating-label-2 {
  max-width: calc(100% - 65px);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.floating-label-1 .btn-group {
  width: 100%;
}

.dropdown-menu.show {
  background-color: var(--level_0);
  width: calc(100% + 2px);
  border: 0;
  border-radius: var(--br-2);
  overflow: hidden;
  margin-left: -1px;
  box-shadow: var(--shadow_1);
  padding: 5px;
}

body.dark .dropdown-menu.show {
  background-color: var(--level_1);
  width: calc(100% + 2px);
  border: 0;
  border-radius: var(--br-2);
  overflow: hidden;
  margin-left: -1px;
  box-shadow: var(--shadow_1);
  padding: 5px;
}

.multiselect-container .multiselect-option,
.multiselect-container .multiselect-group,
.multiselect-container .multiselect-all {
  color: var(--text_1);
}

/* На телефоне длинные подписи («Лактоза и молоко», «Моллюски
   и ракообразные») раздували список шире кнопки, и у правого
   фильтра он уезжал за край экрана (найдено владельцем 21.10).
   Список остаётся прижатым к левому краю своей кнопки, но дальше
   экрана не растёт, а подписи переносятся. */
@media only screen and (max-width: 990px) {
  .dropdown-menu.show,
  body.dark .dropdown-menu.show {
    width: auto;
    min-width: calc(100% + 2px);
    max-width: calc(100vw - 40px);
    left: 0;
    right: auto;
  }

  .multiselect-option.dropdown-item {
    white-space: normal;
  }
}

.multiselect-option.dropdown-item {
  background-color: var(--level_0);
  border-radius: var(--br-3);
  margin-bottom: 2px;
  padding: 10px 20px 3px 20px;
}

.dropdown-item {
  color: var(--text_1);
  background-color: var(--level_05);
}

body.dark .multiselect-option.dropdown-item, body.dark .dropdown-item {
  background-color: var(--level_1);
}

.dropdown-item:hover,
.dropdown-item .active:hover,
.multiselect-option:hover {
  color: var(--text_1);
  background-color: var(--level_1);
}

body.dark .dropdown-item:hover,
body.dark .dropdown-item .active:hover,
body.dark .multiselect-option:hover {
  background-color: var(--level_05)
}

.floating-label-1 .btn-group .active {
  color: var(--text_1);
  background-color: var(--level_05);
}

.form-check-label {
  padding: 1px 0 0 7px;
}

/* Отметки чёрные, а не брендовые (решение Андрея 10.10): бренд
   настраиваемый, а чекбокс — служебный элемент, он не должен
   перекрашиваться вместе с ним. В тёмной теме «чёрный» становится
   светлым — пара приходит из токена bg/black-solid. */
.form-check-input:checked {
  background-color: var(--bg-black-solid);
  border-color: var(--bg-black-solid);
}

/* Отметка 20×20, скругление 8 — в общей шкале такого нет, это размер
   самого элемента управления (макет 10.10). */
.floating-label-1 .form-check-input:checked[type=checkbox],
.product-1 .form-check-input:checked[type=checkbox],
.product-2 .form-check-input:checked[type=checkbox] {
  width: 20px;
  height: 20px;
  text-align: center;
  transition: 250ms ease;
  border: 0;
  border-radius: 8px;
}

/* Невыбранный — прозрачный, только светлая рамка (компонент Func Icons). */
.floating-label-1 .form-check-input:not(:checked)[type=checkbox],
.product-1 .form-check-input:not(:checked)[type=checkbox],
.product-2 .form-check-input:not(:checked)[type=checkbox] {
  width: 20px;
  height: 20px;
  background-color: transparent;
  border: 1px solid var(--border-secondary);
  border-radius: 8px;
}

/* Отметка выбранного пункта в списке. Цвет — icon/secondary: в самой
   картинке вписан брендовый синий, поэтому красим её маской, а не
   фоном (правка 12.10). Селектор с `body` нарочно: ниже по файлу
   лежит правило тёмной темы для радио, и при равной силе оно
   выигрывало бы. */
body .floating-label-1 .form-check-input:checked[type=radio] {
  width: 20px;
  height: 20px;
  text-align: center;
  transition: 250ms ease;
  background-color: var(--icon-secondary);
  background-image: none;
  -webkit-mask: url("../img/checkmark.svg") no-repeat center / 20px auto;
          mask: url("../img/checkmark.svg") no-repeat center / 20px auto;
  border: 0;
}

.floating-label-1 .form-check-input:not(:checked)[type=radio] {
  width: 20px;
  height: 20px;
  background-color: transparent;
  border: 0;
}

.multiselect-container .multiselect-option.active:not(.multiselect-active-item-fallback),
.multiselect-container .multiselect-group.active:not(.multiselect-active-item-fallback),
.multiselect-container .multiselect-all.active:not(.multiselect-active-item-fallback),
.multiselect-container .multiselect-option:not(.multiselect-active-item-fallback):active,
.multiselect-container .multiselect-group:not(.multiselect-active-item-fallback):active,
.multiselect-container .multiselect-all:not(.multiselect-active-item-fallback):active {
  background-color: var(--level_05);
  color: var(--text_1);
}

.floating-label {
  position: relative;
  margin-bottom: 20px;
  width: 100%;
}

.floating-input,
.floating-select {
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  display: block;
  padding: 21px 15px 0px 15px;
  width: 100%;
  height: 60px;
  background-color: var(--level_1);
  border: none;
  border: 1px solid var(--level_1);
  border-radius: var(--br-3);
  color: var(--text_1);
}

.floating-input_search svg {
  position: absolute;
  top: 20px;
  left: 15px;
}

.floating-input.search {
  padding: 0px 15px 0px 45px;
  background: var(--level_1);
  background-size: 50px 20px;
}

.floating-input.search::placeholder {
  color: var(--text_3);
}

.floating-input:focus,
.floating-select:focus {
  outline: none;
  border: 1px solid var(--focus);
}

.floating-input:focus.error,
.floating-input.error {
  border: 1px solid var(--red_1);
}

div.error {
  margin-top: -12px;
  margin-bottom: 20px;
}

.error-text {
  color: var(--red_1);
  font-size: 13px;
}

.common-form-error,
.common-form-success-message {
  margin-top: 20px;
  margin-bottom: 20px;
}

.success-text {
  color: var(--green_1);
  font-size: 16px;
}

.floating-label label {
  color: var(--text_2);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  position: absolute;
  max-width: calc(100% - 30px);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
  left: 15px;
  top: 18px;
  transition: 250ms ease all;
  -moz-transition: 250ms ease all;
  -webkit-transition: 250ms ease all;
}

.floating-input:focus~label,
.floating-input:not(:placeholder-shown)~label {
  top: 9px;
  font-size: 13px;
  line-height: 140%;
  color: var(--text_2);
}

.floating-select:focus~label,
.floating-select:not([value=""]):valid~label {
  top: 9px;
  font-size: 13px;
  line-height: 140%;
  color: var(--text_2);
}

.floating-select {
  background: var(--level_1) url("../img/arrow.svg") no-repeat center right;
  background-size: 50px 20px;
  cursor: pointer;
}

.floating-label-3 {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  height: 60px;
  border-radius: var(--br-3);
  background-color: var(--level_1);
  margin-bottom: 20px;
  padding-left: 15px;
  color: var(--text_1);
}

.floating-label-3 .form-check-label {
  width: auto;
  cursor: pointer;
  padding-top: 7px;
}

.floating-label-3.field-missing {
  box-shadow: inset 0 0 0 1px var(--red_1);
}

.floating-label-3 .form-check-input {
  width: 20px;
  height: 20px;
  cursor: pointer;
  margin-top: -1px;
}

.half {
  width: calc(50% - 10px);
}

@media (max-width: 990px) {
  .half {
    width: 100%;
  }
}

/* active state */
.floating-input:focus~.bar:before,
.floating-input:focus~.bar:after,
.floating-select:focus~.bar:before,
.floating-select:focus~.bar:after,
.floating-textarea:focus~.bar:before,
.floating-textarea:focus~.bar:after,
{
width: 100%;
}

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

.floating-textarea {
  min-height: 120px;
  padding: 26px 15px 0px 15px;
  overflow: hidden;
  overflow-x: hidden;
  height: auto;
}

/* active state */
.floating-input:focus~,
.floating-select:focus~ {
  -webkit-animation: inputHighlighter 0.3s ease;
  -moz-animation: inputHighlighter 0.3s ease;
  animation: inputHighlighter 0.3s ease;
}

/*==============================
  Shopping List, макет 21.10

  Раскладка пачки клиента: слева закреплённая колонка, справа
  содержимое 600 с вертикальным ритмом 20 — те же `.client-main`
  и `.client-content`, что у «Фокуса», «Питания», параметров
  и исключений. Своё здесь только содержимое боковой колонки:
  категории продуктов вместо разделов клиента.
==============================*/
.shopping-nav__total {
  display: flex;
  flex-direction: column;
  gap: 2px;
  /* Вровень с навигацией ниже: у неё поле 20. */
  padding: 15px 20px 0;
}

.shopping-nav__products {
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  letter-spacing: var(--ls-h4);
  font-weight: 500;
  color: var(--text-secondary);
}

.shopping-nav__weight {
  font-size: var(--fs-p3);
  line-height: var(--lh-p3);
  letter-spacing: var(--ls-p3);
  color: var(--text-disabled);
}

.shopping-categories {
  display: flex;
  flex-direction: column;
  padding: 15px 20px 0;
}

.shopping-category {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 0 0;
  text-decoration: none;
  color: var(--text_1);
}

.shopping-category:hover {
  color: var(--text_1);
  text-decoration: none;
}

.shopping-category__row {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

/* Навигация набрана основным размером 16, как в макете: четырнадцать
   рядом с шестнадцатью в списке читалось как сноска, а это
   полноценная навигация по странице. */
.shopping-category__title {
  font-size: var(--fs-p1);
  line-height: var(--lh-p1);
  letter-spacing: var(--ls-p1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Счётчик мельче названия: он подпись к нему, а не второй пункт. */
.shopping-category__count {
  flex: 0 0 auto;
  font-size: var(--fs-p3);
  line-height: var(--lh-p3);
  color: var(--text_2);
}

/* Полоса заполнения: светлая дорожка во всю ширину, тёмная часть —
   доля отмеченных продуктов категории. */
.shopping-category__bar {
  display: block;
  height: 2px;
  border-radius: 2px;
  background-color: var(--level_2);
}

.shopping-category__bar-fill {
  display: block;
  height: 100%;
  border-radius: 2px;
  background-color: var(--text_1);
  transition: width 250ms ease;
}

/* Группы внутри вкладки стоят в том же вертикальном ритме, что
   и блоки страницы: спейсер 20. Вместе с собственным отступом
   заголовка это даёт 45 между секциями — столько же, сколько
   от полосы вкладок до первого заголовка. Прежде панель была
   обычным блоком, и между группами набегало только 25: первый
   заголовок отбивался иначе, чем остальные. */
.shopping__panel {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* «Очистить» в листе навигации — основное действие экрана, поэтому
   выше обычной кнопки и во всю ширину. Подпись не переносится
   и не жмётся иконкой. */
/* Высота обычная, 40 — замерено по макету 22.10. Подпись
   не переносится: с иконкой она занимает почти всю ширину. */
.client-menu .shopping__clear {
  white-space: nowrap;
}

/* Лист — колонка с прокруткой, и при длинном списке категорий
   флекс сжимал детей по высоте: кнопка «Очистить» получалась
   ниже своих 40, а крестик — овалом (QA 23.10). Содержимое
   листа всегда своего размера, лишнее уезжает в прокрутку. */
.client-menu > * {
  flex-shrink: 0;
}

/* Крестик листа навигации: круглая кнопка 50 в правом верхнем углу.
   Размер замерен по макету 22.10 — круг там 50 в поперечнике, это
   `.btn-l`; ширину задаём сами, у кнопок задана только высота.
   Правило общее для обоих листов: разделов клиента и категорий
   списка покупок. */
.client-menu .client-menu__close {
  flex: 0 0 50px;
  align-self: flex-end;
  width: 50px;
  padding: 0;
  border-radius: 50%;
  margin: 0;
}

/* Заголовок группы — компонент: сверху 25, снизу ноль. Расстояние
   до следующего блока задаёт зазор колонки, а поля самих секций
   обнуляет `.client-content > *`. */
.shopping-group__title {
  /* Сверху 25 — собственный отступ компонента, снизу 20 — тот же
     шаг, что между блоками: строки идут вплотную друг к другу,
     и без него заголовок прилипал к первой (замер 22.10). */
  margin: 25px 0 20px;
  font-size: var(--fs-p1);
  line-height: var(--lh-p1);
  letter-spacing: var(--ls-p1);
  font-weight: 500;
  color: var(--text_1);
  /* Якорь подскролла: заголовок не упирается в верх окна. */
  scroll-margin-top: 20px;
}

/* Скрытая вкладка остаётся в разметке — на ней живут отметки. */
.is-hidden {
  display: none;
}

/* На телефоне боковой колонки нет — как и у остальных страниц пачки.
   Название и «Очистить» уходят в шапку и в лист за тремя точками
   (макет 22.10), поэтому строка заголовка в содержимом прячется. */
@media only screen and (max-width: 990px) {
  /* Двумя классами нарочно: `.focus__title-row` объявлен ниже
     по файлу, и при равном весе выигрывал он — заголовок
     и «Очистить» оставались в содержимом, дублируя шапку. */
  .focus__title-row.shopping__head {
    display: none;
  }

  /* В листе навигации свои поля: он занимает экран целиком,
     а не стоит плашкой. */
  .client-menu .shopping-nav__total,
  .client-menu .shopping-categories {
    padding-left: 0;
    padding-right: 0;
  }

  .client-menu .shopping-categories {
    padding-bottom: 20px;
  }
}

.product-2 {
  width: 100%;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  border-bottom: 1px solid var(--level_2);
}

.product-2 input {
  width: 20px;
  height: 20px;
  cursor: pointer;
  /* Ботстрап ставит `.form-check-input` верхнее поле 0,3rem — оно
     и сдвигало галку вниз: сверху 16, снизу 13 при строке 49
     (замер 22.10). Строка выравнивает детей по центру сама. */
  margin-top: 0;
}

/* Высота строки собиралась из трёх слагаемых: 40 у подписи, верхнее
   поле 10 и нижнее поле 8, которое ботстрап ставит любому `label`.
   Из-за них содержимое сидело ниже середины — сверху 16, снизу 13
   (замер 22.10). Теперь высота задана целиком, поля сняты,
   и всё стоит по центру; общая высота строки прежняя. */
.product-2 label {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: 48px;
  margin-bottom: 0;
  padding: 0 0 0 15px;
  color: var(--text_1);
  cursor: pointer;
  font-size: 16px;
}

.product-2 .name {
  color: var(--text_1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.product-2 .value {
  color: var(--text_1);
  white-space: nowrap;
}

.right-sidebar {
  position: sticky;
  top: 20px;
  height: 300px;
}

.result-banner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-top: 0px;
  padding: 30px 30px 5px 30px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
  color: var(--text_1);
  text-align: left;
}

.result-banner span {
  width: 100%;
  text-align: left;
}

.result-banner .title {
  font-size: 13px;
  line-height: 140%;
  color: var(--text_2);
  margin-bottom: 5px;
}

.result-banner .value {
  font-size: 16px;
  line-height: 140%;
  color: var(--text_1);
  margin-bottom: 15px;
}

.result-banner .value.summ {
  font-size: 24px;
  font-weight: 600;
  line-height: 140%;
}

/* Панель чисел КБЖУ на экранах ценности (макет 22.09).
   Прежние плашки общего балла и балансов убраны вместе с расчётом. */
.nutrition-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
  padding-bottom: 40px;
}

/* Плашка по макету 22.09 — 280 пикселей. У колонки сетки свои отступы
   по 15 пикселей с каждой стороны, поэтому колонка шире плашки на 30:
   если поставить 280 колонке, плашка выходит 250 и «клетчатка N г»
   налезает на проценты. */
/* На узком экране порядок по макету: сначала числа КБЖУ, потом графики,
   потом кнопка. Колонка и панель растворяются (display: contents), чтобы
   плашки и кнопка стали элементами той же строки, что и графики,
   и их можно было расставить через order. */
@media (max-width: 1199px) {
  .right-sidebar--nutrition,
  .right-sidebar--nutrition .nutrition-panel {
    display: contents;
  }

  .right-sidebar--nutrition .nutrition-panel__cell,
  .right-sidebar--nutrition .nutrition-panel > .btn-primary {
    /* ширина колонки минус её отступы: строка сетки шире контейнера
       на эти же 30 пикселей */
    flex: 0 0 calc(100% - 30px);
    max-width: calc(100% - 30px);
    margin: 0 15px 12px;
  }

  .right-sidebar--nutrition .nutrition-panel__cell {
    order: -1;
  }

  /* отбивка от графиков под виджетом */
  .right-sidebar--nutrition .nutrition-panel__cell:last-of-type {
    margin-bottom: 32px;
  }

  .right-sidebar--nutrition .nutrition-panel > .btn-primary {
    order: 1;
    margin-bottom: 40px;
  }
}

@media (min-width: 1200px) {
  .right-sidebar--nutrition {
    flex: 0 0 310px;
    max-width: 310px;
    /* панель выше прежнего виджета, фиксированная высота её обрезала */
    height: auto;
  }
}

.nutrition-panel__cell {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 4px 12px;
  padding: 16px 20px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
}

.nutrition-panel__label {
  grid-column: 1 / -1;
  font-size: 15px;
  line-height: 125%;
  /* Gray 500 по макету */
  color: var(--level_5);
}

.nutrition-panel__value {
  font-size: 24px;
  line-height: 125%;
  color: var(--text_1);
  /* число и подпись стоят в одну строку, как в макете */
  white-space: nowrap;
}

.nutrition-panel__value small {
  display: inline-block;
  margin-left: 8px;
  font-size: 15px;
  color: var(--level_5);
  /* подпись переносится целиком: иначе «клетчатка» и «40,8 г»
     оказывались на разных строках */
  white-space: nowrap;
}

.nutrition-panel__share {
  font-size: 24px;
  line-height: 125%;
  color: var(--text_1);
  text-align: right;
}


/*==============================
  Privacy
==============================*/
.privacy {
  padding-bottom: 80px;
}

.policy-subtitle {
  width: 100%;
  margin-top: 16px;
  margin-bottom: 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--level_4);
}

.personal__legal-note {
  margin-top: 16px;
  font-size: 12px;
  line-height: 1.4;
  color: var(--level_4);
}

.personal__legal-note a {
  color: var(--text_2);
}

.privacy h3 {
  padding: 30px 0 20px 0;
}

.privacy a {
  color: var(--link_1);
}

.privacy-ul {
  color: var(--text_1);
}

.privacy-ul li {
  padding: 0 0 10px 30px;
  background: transparent url("../img/checkmark.svg") no-repeat 0px 0px/20px 20px;
}

.privacy-table {
  width: 100%;
  margin: 16px 0 24px;
  border-collapse: collapse;
  font-size: 14px;
  color: var(--text_1);
}

.privacy-table th,
.privacy-table td {
  padding: 10px 12px;
  border: 1px solid var(--level_2);
  text-align: left;
  vertical-align: top;
}

.privacy-table thead th {
  background-color: var(--level_05);
  font-weight: 500;
}

@media (max-width: 575px) {
  .privacy-table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
}

/*==============================
  Complete
==============================*/
.complete {
  display: flex;
  flex-direction: row;
  justify-content: start;
  align-items: flex-start;
}

.complete .chat-message {
  background-color: var(--brand_1);
  color: var(--btn-text);
  border-radius: var(--br-2);
  margin-left: 15px;
  padding: 15px 20px;
  font-size: 18px;
}

.cssanimation,
.cssanimation span {
  animation-duration: .5s;
  animation-fill-mode: both;
}

.cssanimation span {
  display: inline-block
}

.fadeInBottom {
  animation-name: fadeInBottom
}

@keyframes fadeInBottom {
  from {
    opacity: 0;
    transform: translateY(100%);
  }

  to {
    opacity: 1
  }
}

/*==============================
  Recommendation
==============================*/
.recommendation {
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: start;
  align-items: flex-start;
  margin-bottom: 10px;
}

.recommendation li {
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: start;
  align-items: flex-end;
}

.recommendation li .chat-message-text {
  background-color: var(--level_1);
  color: var(--level_100);
  border-radius: var(--br-0);
  margin: 0 0 5px 50px;
  padding: 15px 20px;
  font-size: 16px;
  max-width: 500px;
}

.chat-message-1 img {
  display: none;
}

.chat-message-1:last-child img {
  display: block;
}

.chat-message-1:last-child .chat-message-text {
  margin: 0 0 5px 10px;
}

/*==============================
  Chat
==============================*/
.chat-title {
  position: fixed;
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  padding: 10px 0 0 0;
  height: 40px;
  width: 100%;
}

.chat-title h4 {
  padding: 10px 0 0 15px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--text_1);
  font-size: 20px;
  font-weight: 600;
}

@media (max-width: 375px) {
  .chat-title h4 {
    padding: 8px 0 0 0px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--text_1);
    font-size: 20px;
    font-weight: 600;
  }
}

.chat-title span {
  display: block;
  font-size: 15px;
  color: var(--text_2);
  padding: 5px 0 0 0;
}

.sidebar.chat-sidebar {
  background-color: var(--level_1);
  width: 220px;
}

.chat__nav-items {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  position: relative;
  padding: 0;
  width: 100%;
  padding: 0 10px;
}

.chat__nav-item-wrapper {
  width: 200px;
  margin-bottom: 10px;
  background-color: var(--level_1);
  border: 0;
  border-radius: var(--br-2);
}

.chat__nav-item-wrapper:hover {
  background-color: var(--level_2);
}

.chat__nav-item-wrapper.chat-active, .chat__nav-item-wrapper.chat-active:hover {
  background-color: var(--level_0);
}

.chat-active.active-1 {border: 0}

.chat__nav-item {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding: 10px 15px;
  color: var(--level_100);
}

.chat__nav-owner {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 80%;
  padding: 0;
  gap:10px;
}

.chat__nav-name {
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.chat__nav-item img {
  width: 30px;
  height: 30px;
  border-radius: var(--br-4);
}

.chat__nav-info {
  padding: 5px 0 0 0;
}

.badge {
  min-width: 20px;
  max-width: 40px;
  text-align: center;
  line-height: 20px;
  padding: 0 5px;
  font-size: 13px;
  font-weight: 400;
  color: var(--btn-text);
  border-radius: var(--br-4);
  background: var(--brand_main);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.chat {
  width: 100%;
  height: calc(100vh - 190px);
  min-height: 100%;
  padding: 0;
  margin: 0 auto;
  overflow-y: scroll;
  transform: rotate(180deg);
  direction: rtl;
}

.chat__wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column-reverse;
  flex-direction: column-reverse;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  
}

.chat__message {
  font-size: 16px;
  padding: 10px 20px;
  color: var(--level_100);
  max-width: 100%;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
  position: relative;
  margin: 15px 0;
  transform: rotate(180deg);
  direction: ltr;
  display: flex;
  flex-direction: row;
  justify-content: start;
  align-items: flex-start;
  gap: 20px;
}

.chat__message-avatar {
  background-color: var(--level_2);
  width: 45px;
  height: 45px;
  padding: 0px;
  border-radius: var(--br-3);
  overflow: hidden;
}

.chat__message-avatar-text,
.chat__message-avatar-text:hover {
  width: 45px;
  line-height: 45px;
  text-align: center;
  color: var(--level_6);
  font-size: 18px;
  font-weight: 600;
}

.chat__message-avatar img {
  max-width: 45px;
  border-radius: var(--br-3);
}

.chat__message-author {
  font-size: 18px;
}

.chat__message-author span {
  font-size: 13px;
  color: var(--level_6);
  padding: 0 0 0 10px;
}

.chat__form {
  width: 55%;
  position: fixed;
  z-index: 100;
  bottom: 30px;
}
@media (max-width: 1200px) {
  .chat__form {
    width: 70%;
  }
}
@media (max-width: 992px) {
  .chat__form {
    width: 91%;
  }
}
@media (max-width: 990px) {
  .chat__form {
    width: 92%;
  }
}
@media (max-width: 576px) {
  .chat__form {
    width: 93%;
  }
}

.chat__form-wrapper {
  min-width: 100%;
  min-height: 65px;
  margin: 0;
  padding: 0;
  background: var(--level_1);
  border-radius: var(--br-3);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

.chat__form-wrapper textarea {
  min-width: 100%;
  height: 60px;
  background-color: transparent;
  font-size: 17px;
  color: var(--level_100);
}

.chat__form-wrapper textarea::placeholder {
  color: var(--level_6);
  opacity: .6;
}

.chat__form-wrapper button {
 position: absolute;
 right: 15px;
}

.auto-expand {
  width: 100%;
  max-width: 100%;
  font-size: 15px;
  border-radius: var(--br-2);
  padding: 18px 60px 18px 25px;
  transition: all 250ms ease;
  resize: none;
  border: 0;
  
  &:focus {
    outline: 0;
  }
}

.icon {
  width: 20px;
  height: 20px;
  fill: var(--icon);
}

/*==============================
  Buttons
==============================*/

.btn-primary {
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--btn-text);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  position: relative;
  z-index: 2;
  font-weight: 400;
  margin: 15px 0px;
  padding: 0 15px;
  transition: 250ms ease;
  white-space: nowrap;
  border: 0;
}

.btn-primary:hover {
  background-color: var(--brand_1);
  color: var(--btn-text);
  opacity: 1;
  transform: scale3d(1.02, 1.02, 1.02);
  outline: 0; 
  box-shadow: none;
  border: 0;
}

.btn-primary:focus {
  background-color: var(--brand_1);
  color: var(--btn-text);
  transform: scale3d(.99, .99, .99);
  outline: 0; 
  box-shadow: none;
  border: 0;
}

.btn-primary:active {
  background-color: var(--brand_1);
  color: var(--btn-text);
  outline: 0; 
  box-shadow: none;
  border: 0;
}

.btn-primary:disabled,
.btn-primary[disabled],
.btn-primary[disabled]:hover,
.btn-primary[disabled]:visited,
.btn-primary[disabled]:active {
  background-color: var(--brand_1_disabled);
  cursor: not-allowed;
  pointer-events: none;
  color: rgba(255, 255, 255, 0.2);
  transform: none;
}

.btn-secondary {
  border-radius: var(--br-3);
  background-color: var(--level_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  position: relative;
  z-index: 2;
  font-weight: 400;
  margin: 15px 0px;
  padding: 0 15px;
  transition: 250ms ease;
  white-space: nowrap;
  border: 0;
}

.btn-secondary:hover {
  background-color: var(--level_1);
  color: var(--text_1);
  opacity: 1;
  transform: scale3d(1.02, 1.02, 1.02);
  outline: 0; 
  box-shadow: none;
  border: 0;
}

.btn-secondary:focus {
  background-color: var(--level_1);
  color: var(--text_1);
  transform: scale3d(.99, .99, .99);
  outline: none;
  box-shadow: none;
  border: 0;
}

.btn-secondary:active {
  background-color: var(--level_1);
  color: var(--text_1);
  outline: 0; 
  box-shadow: none; 
  border: 0;
}

.btn-outline {
  border-radius: var(--br-3);
  background-color: var(--level_0);
  border: 1px solid var(--level_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  position: relative;
  z-index: 2;
  font-weight: 400;
  margin: 15px 0px;
  padding: 0 15px;
  transition: 250ms ease;
  white-space: nowrap;
}

.btn-outline:hover {
  color: var(--text_1);
  transform: scale3d(1.02, 1.02, 1.02);
  outline: 0; 
  box-shadow: none;
}

.btn-outline:focus {
  color: var(--text_1);
  transform: scale3d(.99, .99, .99);
  outline: 0; 
  box-shadow: none;
}

.btn-outline:active {
  color: var(--text_1);
  outline: 0; 
  box-shadow: none;
}

.btn-icon-m {
  padding: 0 10px;
}
.icon-text-button svg {
  margin-right: 10px;
}

.btn-full {
  width: 100%;
}

.btn-s {
  height: 30px;
  /* У низкой кнопки общий радиус 15 съедает почти всю высоту —
     в макетах у неё 10 (решение Андрея 08.10). */
  border-radius: var(--br-4);
}

.btn-m {
  height: 40px;
}

.btn-l {
  height: 50px;
}

.btn-xl {
  height: 60px;
  padding: 0 25px;
}

/*==============================
  Dialog
==============================*/
.dialog {
  width: auto;
  max-width: 500px;
  max-height: calc(100% - 40px);
  padding: 30px 30px 20px 30px;
  position: fixed;
  z-index: 999;
  bottom: 20px;
  right: 20px;
  backdrop-filter: blur(30px);
  background-color: var(--level_1);
  border: 1px solid #333333;
  border-radius: var(--br-2);
  text-align: left;
  display: flex;
  flex-direction: column;
}

.dialog-top {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.dialog-body {
  display: flex;
  flex-direction: column;
  padding: 10px 0 0 0;
}

.dialog-bottom {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
}

.dialog-bottom a {
  margin-left: 20px;
}

.close-dialog {
  position: absolute;
  top: -0px;
  right: 15px;
  margin-left: 15px;
}

@media (max-width: 576px) {
  .dialog {
    left: 20px;
  }
}

.dialog-hide {
  display: none;
}

/*==============================
  Autofill
==============================*/
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
  border: inherit;
  -webkit-text-fill-color: var(--text_1);
  -webkit-box-shadow: inherit;
  transition: background-color 5000s ease-in-out 0s;
  font-size: inherit;
}

input:-webkit-autofill::first-line {
  font-size: 16px;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', 'Roboto Rouble', sans-serif;
  font-weight: 400;
}

/*==============================
  Header
==============================*/
.header {
  display: block;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: auto;
  height: 70px;
  background-color: var(--level_0);
  border-bottom: 0;
  z-index: 101;
}

.header__content {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 100%;
  width: 100%;
  position: relative;
  padding: 0 30px 0 15px;
}

@media (max-width: 1200px) {
  .header__content {
    padding: 0 15px 0 15px;
  }
}

@media (max-width: 576px) {
  .header__logo h3 {
    padding-right: 90px;
  }
}

.header__logo {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  height: 70px;
  width: auto;
  color: var(--text_1);
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
}

.header__logo a {
  color: var(--text_1);
  max-width: 180px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.header__logo img {
  width: 100px;
  height: auto;
  display: block;
}

.header__actions {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: center;
  width: auto;
  margin-left: auto;
  margin-right: 0px;
  gap:30px;
}

@media (max-width: 992px) {
  .header__actions {
    margin-right: 0px;
  }
}

.header__action .icon {
  background-color: var(--level_0);
  width: 20px;
  height: 20px;
}

.header__action .avatar {
  background-color: var(--level_2);
  width: 40px;
  height: 40px;
  padding: 0px;
  border-radius: var(--br-0);
}

.avatar .avatar-text,
.avatar .avatar-text:hover {
  width: 100%;
  line-height: 40px;
  text-align: center;
  color: #666666;
  font-size: 18px;
  font-weight: 600;
}

.counter {
  margin-top: -15px;
  margin-left: -15px;
  width: 15px;
  height: 15px;
}

.counter.hide {
  display: none;
}

.ring-container {
  position: relative;
}

.circle {
  width: 5px;
  height: 5px;
  background-color: var(--brand_1);
  border-radius: 50%;
  position: absolute;
  top: 5px;
  left: 5px;
}

.ringring {
  border: 3px solid var(--brand_1);
  -webkit-border-radius: 30px;
  height: 15px;
  width: 15px;
  position: absolute;
  left: 0px;
  top: 0px;
  -webkit-animation: pulsate 1.5s ease-out;
  -webkit-animation-iteration-count: infinite;
  opacity: 0.0
}

@-webkit-keyframes pulsate {
  0% {
    -webkit-transform: scale(0.1, 0.1);
    opacity: 0.0;
  }

  50% {
    opacity: 1.0;
  }

  100% {
    -webkit-transform: scale(1.2, 1.2);
    opacity: 0.0;
  }
}

.header__nav-chat {
  display: block;
  position: relative;
}

.header__nav-chat .badge {
  display: block;
  margin-top: 2px;
}

@media (max-width: 575px) {
  .header__nav-chat .badge {
    display: block;
    margin-top: -20px;
  }
}

.header__action:hover .header__drop {
  pointer-events: auto;
  opacity: 1;
  z-index: 99;
  margin-top: 0;
}

.header__action-btn {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 40px;
  width: 100%;
  cursor: pointer;
}

.header__action-btn span {
  display: none;
}

.header__action-btn svg {
  transition: fill 250ms ease;
}

.header__action-btn span:hover {
  color: var(--link_2_hover);
}

.header__btn {
  position: absolute;
  width: 20px;
  height: 20px;
  display: block;
  right: 15px;
  top: 24px;
}

.header__btn span {
  position: absolute;
  right: 0;
  width: 20px;
  height: 2px;
  background-color: var(--text_1);
  border-radius: var(--br-5);
  transition: 250ms ease;
}

.header__btn span:first-child {
  top: 2px;
}

.header__btn span:nth-child(2) {
  top: 10px;
  width: 20px;
}

.header__btn span:last-child {
  top: 18px;
  width: 20px;
}

.header__btn:hover span {
  background-color: var(--brand_1);
}

.header__btn--active span {
  background-color: var(--brand_1);
}

.header__btn--active span:first-child {
  transform: rotate(-45deg);
  top: 10px;
}

.header__btn--active span:nth-child(2) {
  opacity: 0;
  width: 0;
}

.header__btn--active span:last-child {
  width: 20px;
  transform: rotate(45deg);
  top: 10px;
}

/* Меню под аватаром — макет 10.10. Карточка со скруглением 25, поля 20,
   сверху почта строкой, ниже пункты с линейными иконками. Разделителей
   между пунктами нет. */
.header__drop {
  position: absolute;
  top: 55px;
  right: 20px;
  background-color: var(--bg-primary);
  padding: 20px;
  border-radius: var(--br-1);
  width: 240px !important;
  pointer-events: none;
  opacity: 0;
  z-index: -1;
  transition: 250ms ease;
  margin-top: -5px;
  box-shadow: var(--shadow_1);
}

/* Почта — подпись, а не пункт: не нажимается и приглушена. Стиль тот же,
   что у заголовка группы в боковом меню (правка 10.10): 13/140
   и text/tertiary. Так обе служебные подписи интерфейса выглядят
   одинаково. */
.header__drop-email {
  display: block;
  padding: 0 0 8px;
  margin-bottom: 8px;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  color: var(--text-tertiary);
  word-break: break-all;
}

/* Пункт меню по компоненту Menu Item: подложка со скруглением,
   при наведении она светлеет. Цвет текста при этом не меняется —
   состояние показывает фон. */
.header__drop-item {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 16px;
  margin: 0 -16px;
  border-radius: var(--br-3);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-primary);
  transition: background-color 250ms ease;
}

.header__drop-item:hover {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
  text-decoration: none;
}

.header__drop-item:active {
  background-color: var(--bg-tertiary);
}

/* Недоступный пункт: гаснут и подпись, и иконка. */
.header__drop-item--disabled {
  color: var(--text-disabled);
  pointer-events: none;
}

.header__drop-item--disabled .header__drop-icon {
  background-color: var(--icon-disabled);
}

/* Иконка красится маской — как в геймификаторе: файл из библиотеки
   подключается без правки, цвет приходит из CSS и меняется вместе
   с темой. */
.header__drop-icon {
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  background-color: var(--icon-tertiary);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

/* Иконка при наведении не меняется: состояние показывает подложка. */

@media (min-width: 400px) {
  .header__action {
    margin-left: 0px;
  }

  .header__action:first-child {
    margin-left: 0;
  }
}

.header__action--signin {
  width: auto;
  padding-left: 20px;
}

@media (min-width: 576px) {
  .header__action--signin {
    width: auto;
    padding-left: 20px;
  }

  .header__action--signin:hover a span,
  .header__action--signin:hover button span {
    color: var(--link_2_hover);
  }

  .header__action--signin:hover a svg,
  .header__action--signin:hover button svg {
    fill: var(--brand_1);
  }

  .header__action-btn span {
    display: block;
    white-space: nowrap;
    color: var(--link_2);
    font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
    margin-right: 10px;
    transition: color 250ms ease;
  }

  .header__action .icon {
    display: none;
  }

  .header__content {
    /*padding: 0 30px 0 30px;*/
  }

  .header__search {
    padding: 0 30px;
  }

  .header__search button {
    right: 75px;
  }

  .header__search button.close {
    right: 30px;
  }

  .header__btn {
    right: 30px;
  }

  .header__drop {
    width: 260px;
  }
}

@media (min-width: 991px) {
  .header__action {
    margin-left: 0px;
  }

  .header__action--signin {
    padding-left: 30px;
  }
}

@media (min-width: 1200px) {
  .header {
    position: relative;
    padding-left: 240px;
  }

  .header--mobile {
    display: none;
  }

  .header__logo,
  .header__btn,
  .header__btn-1 {
    display: none;
  }

  .header__actions {
    margin-right: 0px;
  }

  .header__action--search {
    display: none;
  }

  .header__action--cart .header__drop {
    display: block;
  }

  .header__search {
    position: relative;
    top: auto;
    left: auto;
    width: 320px;
    padding: 0;
    border: none;
    background-color: transparent;
  }

  .header__search input {
    padding: 0 60px 0 20px;
    width: 100%;
  }

  .header__search button {
    right: 20px;
  }

  .header__search button.close {
    display: none;
  }

  .header__search--active {
    top: auto;
  }

  .header__nav {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    margin-right: 60px;
  }

  .header__nav--user {
    display: inline-flex;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    width: auto;
    margin-left: auto;
    margin-right: 0px;
  }

  .header__nav a,
  .header__nav--user a {
    font-size: 16px;
    color: var(--text_1);
    margin-right: 30px;
  }

  .header__nav a:last-child,
  .header__nav--user a:last-child {
    color: var(--text_1);
    margin-right: 30px;
  }

  .header__nav a:hover,
  .header__nav--user a:hover {
    color: var(--brand_1);
  }

  .header__all {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    width: 100%;
    background-color: rgba(255, 255, 255, 0.1);
    color: #c0c0c0;
    font-size: 13px;
    font-weight: 400;

    margin-bottom: 15px;
    height: 24px;
    border-radius: 8px 8px 0 0;
  }

  .header__all:hover {
    color: var(--brand_1);
  }
}

@media (max-width: 990px) {
  .header__action .username {
    display: none;
  }
}

/*==============================
  Header-1
==============================*/
.header-1 {
  display: block;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: auto;
  height: 70px;
  background-color: transparent;
  border-bottom: 0;
  z-index: 101;
}

.header-content {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  height: 100%;
  width: 100%;
  position: relative;
  padding-right: 30px;
  padding-left: 15px;
}

.close-button {
  position: fixed;
  right: 20px;
  top: 0px;
}

.nav-button {
  position: fixed;
  right: 80px;
  top: 0px;
}

@media (max-width: 576px) {
  .close-button {
    position: fixed;
    right: 10px;
    top: 0px;
  }

  .nav-button {
    position: fixed;
    right: 60px;
    top: 0px;
  }
}

/*==============================
  Sidebar
==============================*/
.sidebar {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  background-color: var(--level_1);
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 101;
  /* По макету 220 и контент сдвинут ровно на столько же (.main слева 220).
     Было 180 — меню оказывалось уже своей колонки на 40 px. */
  width: 220px;
  transform: translateX(-100%);
  transition: transform 250ms ease;
  border-right: 0;
}

.sidebar__logo {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  height: 70px;
  width: 280px;
}

.sidebar__logo-chat {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  height: 70px;
  width: 220px;
}

.sidebar__logo-text {
  padding: 0;
  color: var(--text_1);
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--text_1);
  transition: transform 250ms ease;
}

.sidebar__logo-text:hover {
  color: var(--text_1);
}

.sidebar__logo.ml {
  padding-left: 20px;
}

.sidebar__logo img {
  width: auto;
  height: 50px;
  display: block;
  color: var(--text_1);
}

.sidebar__nav {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  position: relative;
  padding: 0px;
  width: 100%;
}

.sidebar__nav-link {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  color: var(--link_2);
  padding: 10px 20px 10px 20px;
  transition: 250ms ease;
  position: relative;
  width: 100%;
}

.sidebar__nav-link svg {
  fill: #c0c0c0;
  width: 22px;
  height: auto;
  transition: fill 250ms;
  margin-right: 12px;
  margin-bottom: 2px;
}

.sidebar__nav-link svg:last-child {
  width: 16px;
  margin-right: 0;
  margin-top: 3px;
  margin-left: 2px;
  margin-bottom: 0;
}

/* Наведение в боковом меню — подложка bg/tertiary (компонент Nav Item,
   макет 10.10). Цвет подписи и иконки при этом не меняется: состояние
   показывает фон, как у пунктов меню под аватаром. */
.sidebar__nav-link:hover {
  /* Фон самого меню — bg/tertiary, поэтому подложка наведения должна
     быть его парой, а не им же: ставил тот же токен, и ховера не было
     видно вовсе (правка 10.10). В наборе для этого есть готовая пара
     bg/tertiary-hover — минимальный шаг вниз по той же шкале. */
  background-color: var(--bg-tertiary-hover);
}

.sidebar__nav-link--active,
.sidebar__nav-link[aria-expanded="true"] {
  color: var(--btn-text);
  background-color: var(--brand_1);
}

.sidebar__nav-link--active:hover,
.sidebar__nav-link[aria-expanded="true"]:hover {
  color: var(--btn-text);
  background-color: var(--brand_1);
}

.sidebar__nav-link--active svg,
.sidebar__nav-link[aria-expanded="true"] svg {
  fill: var(--brand_1);
}

.sidebar__nav-link--active:hover svg,
.sidebar__nav-link[aria-expanded="true"]:hover svg {
  fill: var(--brand_1);
}

.sidebar__nav-link[aria-expanded="true"] {
  margin-bottom: 15px;
}

.sidebar__nav-link--active {
  cursor: default;
}

.sidebar__nav-item {
  width: 100%;
  display: block;
  position: relative;
}

.sidebar__nav-item:last-child {
  margin-bottom: 0;
}

.sidebar__menu {
  padding: 0;
  display: block;
  width: 100%;
  text-align: left;
  overflow: hidden;
  background-color: #222227;
  transition: 250ms ease;
  height: auto;
}

.sidebar__menu--scroll {
  height: 165px;
  overflow: hidden;
}

.sidebar__menu li {
  padding: 0;
  margin-bottom: 15px;
  position: relative;
}

.sidebar__menu li:before {
  content: '';
  position: absolute;
  display: block;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background-color: var(--brand_1);
  top: 50%;
  left: 25px;
  margin-top: -2px;
}

.sidebar__menu li:last-child {
  margin-bottom: 0;
  padding-bottom: 20px;
}

.sidebar__menu li:last-child:before {
  top: 11px;
}

.sidebar__menu li:first-child {
  margin-top: 0;
  padding-top: 20px;
}

.sidebar__menu li:first-child:before {
  top: 31px;
}

.sidebar__menu a {
  font-size: 14px;
  color: var(--text_1);
  display: block;
  font-weight: 400;
}

.sidebar__menu a:hover {
  color: var(--brand_1);
}

.sidebar__menu a.active {
  color: var(--text_1);
  cursor: default;
}

.sidebar--active {
  transform: translateX(0);
}

@media (min-width: 375px) {
  .sidebar__logo {
    padding: 0 20px;
    color: var(--text_1);
  }

  .sidebar__nav-link {
    margin-left: 0px;
  }

  .sidebar__menu li {
    padding: 0px;
  }

  .sidebar__menu li:before {
    left: 0px;
  }
}

@media (min-width: 1200px) {
  .sidebar {
    transform: translateX(0);
  }

  .sidebar__nav {
    max-height: calc(100vh - 332px);
  }
}

@media (max-width: 576px) {
  .sidebar__logo.ml {
    padding-left: 15px;
  }

  .sidebar__nav-link {
    padding: 10px 20px 10px 15px;
  }
}

/*==============================
  Day Item
==============================*/
.list-title {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.sidebar.day {
  background-color: var(--level_0);
  width: 320px;
}

.day-items {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  position: relative;
  padding: 0 20px 0 20px;
  width: 100%;
}

.nav-item {
  width: 100%;
  max-width: 280px;
  margin-bottom: 10px;
  background-color: var(--level_1);
  border: 1px solid var(--level_1);
  border-radius: var(--br-3);
}

.day-item {
  display: flex;
  flex-direction: row;
  width: 100%;
  padding: 15px;
  color: var(--text_1);
}

.active-1 {
  border: 1px solid var(--focus);
}

.day-item img {
  display: block;
  width: 40px;
  height: 40px;
  border-radius: var(--br-4);
}

.day-item div {
  display: block;
  padding: 0px 0px 0px 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.day-item span {
  display: block;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  color: var(--text_2);
}

/* Карточка рецепта — компонент Recipe Card Big, макет 23.09.
   Числа сняты из Figma через API, а не на глаз: десктоп — контейнер 20,
   между блоками 20, внутри заголовка 10; мобильный — контейнер 20
   сверху и 10 по бокам, текст сдвинут внутрь ещё на 10, поэтому белые
   плашки шире текста. */
.day-item-full {
  width: 100%;
  margin-bottom: 80px;
  background-color: var(--level_1);
  border-radius: var(--br-1);
}

.day-item-full img, .day-item-full video {
  display: block;
  width: 100%;
  border-radius: var(--br-1);
}

.day-item-full .day-content {
  border-bottom-left-radius: var(--br-1);
  border-bottom-right-radius: var(--br-1);
  padding: 20px;
}

/* «Завтрак» и «~20 минут» */
.day-item-full .day-content > span {
  margin-bottom: 10px;
  padding-bottom: 0;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--level_4);
}

/* строка времени отбита от плашки на 20, как блоки между собой */
.day-item-full .day-content > h3 + span {
  margin-bottom: 20px;
}

.day-item-title {
  margin: 0 0 10px;
  padding: 0;
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  font-weight: 500;
  line-height: var(--lh-h2);
  color: var(--text_1);
}

@media (max-width: 990px) {
  .day-item-full .day-content {
    padding: 20px 10px;
  }

  .day-item-full .day-content > span,
  .day-item-full .day-content > h3,
  .day-item-full .day-content > p:not(.nutrition-card__note) {
    padding-left: 10px;
    padding-right: 10px;
  }
}

.description-title {
  font-size: 20px;
  margin: 30px 0 20px 0;
}

.day-item-full span {
  display: block;
  color: var(--text_2);
  padding-bottom: 10px;
}

/* Состав рецепта: строки по 40, между ними 15, разделитель Gray 100 */
.day-composition {
  margin: 0 0 20px;
  padding: 20px;
  border-radius: var(--br-2);
  background-color: var(--level_0);
}

.day-tr {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin: 10px 0 10px 0;
  padding: 10px 0 10px 0;
  border-bottom: 1px solid var(--level_2);
}

.day-composition .day-tr {
  margin: 0;
  padding: 15px 0;
  border-bottom: 1px solid var(--level_1);
}

.day-composition .day-tr:first-child {
  padding-top: 0;
}

.day-composition .day-tr:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}

/* .day-item-full img задаёт радиус 25 всем картинкам карточки —
   у фото продукта в макете 10. */
.day-item-full .day-tr__image,
.day-tr__image {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: var(--br-4);
  background-color: var(--level_0);
}

.day-tr .title {
  flex: 1 1 auto;
}

.day-tr .value {
  flex: 0 0 auto;
  color: var(--text_2) !important;
}

/* Подсказка о возможной непереносимости: второй строкой под названием
   продукта, оранжевым. Не плашка с фоном — она стояла бы в составе
   рядом с каждым седьмым продуктом и перетягивала внимание с самой
   еды. Оранжевый здесь предупреждение, а не ошибка: продукт человеку
   не запрещён, его нужно проверить на упаковке. */
.day-tr__warning,
.recipe-line__warning {
  display: block;
  margin-top: 2px;
  font-size: 13px;
  line-height: 1.3;
  font-weight: 400;
  letter-spacing: 0;
  color: var(--status_warn_text) !important;
}

.day-composition .day-tr .title,
.day-composition .day-tr .value {
  padding-bottom: 0;
  font-size: var(--fs-h4);
  letter-spacing: var(--ls-h4);
  font-weight: 500;
  line-height: var(--lh-h4);
  color: var(--text_1) !important;
}

/* Плашка КБЖУ. Десктоп: четыре колонки, подпись и число 18.
   Мобильный: калории на всю ширину, число 24. */
.nutrition-card {
  margin: 0;
  padding: 20px;
  border-radius: var(--br-2);
  background-color: var(--level_0);
}

.nutrition-card__row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}

.nutrition-card__item {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* .day-item-full span красит любой span в серый и вешает отступ снизу —
   внутри плашки отступы и цвет задаём сами. */
.nutrition-card span {
  padding-bottom: 0;
}

.nutrition-card .nutrition-card__label {
  font-size: 18px;
  line-height: 140%;
  /* Gray 500 */
  color: var(--level_5);
}

.nutrition-card .nutrition-card__value {
  font-size: 18px;
  line-height: 140%;
  color: var(--text_1);
  white-space: nowrap;
}

/* сноски «N г/кг» и «Клетчатка N г» в макете тёмные, не серые */
.nutrition-card .nutrition-card__hint {
  margin-top: 10px;
  font-size: 13px;
  line-height: 140%;
  color: var(--text_1);
}

@media (max-width: 990px) {
  .nutrition-card {
    padding: 15px;
  }

  .nutrition-card__row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 15px;
  }

  .nutrition-card__item--calories {
    grid-column: 1 / -1;
  }

  .nutrition-card .nutrition-card__label {
    font-size: 15px;
  }

  .nutrition-card .nutrition-card__value {
    font-size: 24px;
    font-weight: 500;
  }

  .nutrition-card .nutrition-card__hint {
    margin-top: 5px;
  }
}

/* Шаги приготовления: блок сдвинут на 10 внутрь, между абзацами 10. */
.day-item-full .day-content > p:not(.nutrition-card__note) {
  margin: 0 0 10px;
  padding: 0 10px;
}

.day-item-full .day-content > .day-composition + p {
  margin-top: 10px;
}

/* Подпись под плашкой: на фоне страницы, с отступом 20 по бокам. */
.nutrition-card__note {
  margin: 10px 0 20px;
  padding: 0 20px;
  font-size: 13px;
  line-height: 140%;
  color: var(--level_4);
}

.day-tr span {
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  color: var(--text_1);
}

.day-item-full .day-buttons {
  display: flex;
  flex-direction: row;
  margin-bottom: 0;
  padding-bottom: 0;
}

.day-item-full .day-buttons a {
  margin-bottom: 0;
  padding-bottom: 0;
}

/*.day-item-full .day-buttons button:first-child {
  margin: 20px 10px 0 0;
}
.day-item-full .day-buttons button:last-child {
  margin: 20px 0 0 10px;
}*/
.toolbar {
  display: flex;
  flex-direction: row;
  padding: 0;
  margin: 0;
}

.toolbar a,
.toolbar a img {
  margin-right: 10px;
}

@media (max-width: 576px) {
  .toolbar {
    display: flex;
    flex-direction: column;
    padding: 0;
    margin: 0;
  }

  .toolbar a {
    margin: 0 0 20px 0;
  }
}

@media (min-width: 1200px) {
  .sidebar {
    transform: translateX(0);
  }

  .sidebar__nav {
    max-height: calc(100vh - 332px);
  }
}

/*==============================
  Player
==============================*/
.player {
  position: fixed;
  z-index: 102;
  bottom: 0;
  left: 0;
  width: 100%;
  background-color: #16151a;
  padding: 20px 15px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  border-top: 1px solid #222227;
  transform: translateY(100%);
  transition: transform 250ms ease;
}

.player__cover {
  width: 100%;
  max-width: 90px;
}

.player__cover img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: var(--br-3);
  margin-bottom: 10px;
}

.player__track {
  font-size: 16px;
  line-height: 24px;
  display: block;
  width: 100%;
  text-align: center;
  font-weight: 400;
  color: #c0c0c0;
  margin-bottom: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.player__track b {
  font-weight: 600;
  color: var(--text_1);
}

.player__content {
  width: 100%;
}

.player__btn {
  position: fixed;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  background-color: #16151a;
  border-radius: 12px 12px 0 0;
  height: 40px;
  width: 90px;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  z-index: 103;
  color: var(--text_1);
  font-size: 14px;
  border: 1px solid #222227;
  border-bottom: none;
}

.player__btn svg {
  width: 18px;
  height: auto;
  fill: var(--brand_1);
  margin-right: 8px;
}

.player--active {
  transform: translateY(0);
}

@media (min-width: 1200px) {
  .player {
    width: 278px;
    padding: 20px 30px;
    transform: translateY(0);
  }

  .player__btn {
    display: none;
  }
}

.plyr__control {
  padding: 0;
}

.plyr__control svg {
  width: 24px;
  height: 24px;
  transition: fill 250ms ease;
}

.plyr__control:hover {
  background-color: transparent !important;
}

.plyr__control:hover svg {
  fill: var(--brand_1);
}

.plyr__controls {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
}

.plyr__actions {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
}

.plyr__actions button {
  margin: 0 5px;
}

.plyr__tooltip {
  background-color: #222227;
  box-shadow: none;
  color: var(--text_1);
  font-size: 14px !important;
}

.plyr__tooltip:before {
  border-top-color: #222227;
}

.plyr__wrap {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  margin-top: 10px;
}

.plyr__time {
  margin-left: 10px;
  color: #c0c0c0;
  font-size: 14px;
  line-height: 100%;
}

.plyr__volume {
  margin-right: auto;
}

.plyr__progress {
  width: 100%;
}

.plyr--audio .plyr__controls {
  padding: 0;
  color: var(--text_1);
  background-color: transparent;
}

.plyr--full-ui input[type="range"] {
  color: var(--brand_1);
}

/*==============================
  Main
==============================*/
.main {
  position: relative;
  margin-top: 70px;
  padding: 20px 0 60px;
}

.main-form {
  margin-bottom: 120px;
}

.main__title {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  /* Нижнего отступа у заголовка нет: в компоненте его тоже нет,
     а расстояние до ряда карточек задаёт сама секция (правка 10.10).
     С ним под заголовком набегало лишних десять пикселей. */
  margin-bottom: 0;
  margin-top: 80px;
}

.main-title {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 40px;
  margin-top: 80px;
}

.main-title-1 {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  margin-bottom: 20px;
  margin-top: 80px;
}

.main-title-1.no-header,
.main-title.no-header {
  /* margin-top: 40px; */
}

.main-form h4 {
  padding-bottom: 10px;
}

.main-form form {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  justify-content: space-between;
  position: relative;
  width: 100%;
  border: 0;
}

.main-form-chart {
  padding-bottom: 40px;
}

.mtradio {
  /*justify-content: start;*/
  margin-top: 40px !important;
}

@media (max-width: 990px) {
  .mtradio {
    /* margin-top: 0px!important; */
  }

  .row--grid {
    margin-bottom: 60px;
  }

  .main {
    padding: 0;
  }
}

.mtradio h2 {
  margin-right: 20px;
}

h1,
.main__title h1 {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  font-weight: 500;
  color: var(--text_1);
  font-size: var(--fs-h1);
  letter-spacing: var(--ls-h1);
  line-height: var(--lh-h1);
  margin: 0px 20px 0px 0px;
  position: relative;
}

.main__title h1 b {
  font-weight: 600;
}

.main__title h1 a {
  color: var(--text_1);
}

.main__title h1 a:hover {
  color: var(--brand_1);
}

.main__title h2 {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  font-weight: 500;
  color: var(--text_1);
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  line-height: var(--lh-h2);
  margin: 0px 20px 0px 0px;
  position: relative;
}

.main__title h2 svg {
  width: 26px;
  height: auto;
  fill: var(--brand_1);
  margin-right: 10px;
}

.main__title h2 b {
  font-weight: 600;
}

.main__title h2 a {
  color: var(--text_1);
}

.main__title h2 a:hover {
  color: var(--brand_1);
}

.main__title h3 {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  font-weight: 500;
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  color: var(--text_1);
  margin-bottom: 0;
  line-height: var(--lh-h2);
  position: relative;
}

.main__title p {
  display: block;
  width: 100%;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: 26px;
  color: #c0c0c0;
  margin-top: 20px;
  margin-bottom: 0;
}

.main__title p b {
  font-weight: 600;
}

.main__title p a {
  color: var(--brand_1);
  text-decoration: underline;
}

.main__title p a:hover {
  text-decoration: none;
}

.main__title ol {
  padding-left: 0;
  list-style: none;
  counter-reset: li;
  margin-bottom: 0;
}

.main__title ol ol {
  padding-left: 15px;
  margin-top: 10px;
}

.main__title ol ol ol {
  margin-top: 10px;
  margin-bottom: 10px;
}

.main__title ol ol ol li {
  margin-top: 5px;
}

.main__title ol h4 {
  font-size: 16px;
  color: var(--text_1);
  display: inline-block;
  margin-bottom: 0;
  margin-top: 20px;
  font-weight: 600;
}

.main__title ol li {
  font-size: 16px;
  line-height: 24px;
  color: #c0c0c0;
  position: relative;
}

.main__title ol li b {
  font-weight: 600;
  color: #c0c0c0;
}

.main__title ol li a {
  color: #eb5757;
}

.main__title ol li a:hover {
  color: #eb5757;
  text-decoration: underline;
}

.main__title ol li:last-child {
  margin-bottom: 0;
}

.main__title ol li:before {
  counter-increment: li;
  content: counters(li, ".") ". ";
}

.main__title--page {
  margin-bottom: 0;
  margin-top: 50px;
}

/* Кнопка раздела «Все дни» — макет 21.09: светлая пилюля, тёмный текст,
   шеврон справа. */
/* Таблетка в строке заголовка: светлая по умолчанию, чёрная
   модификатором `--dark`. Один компонент на все заголовки —
   недели, дня и карточки клиента (правка 22.10). */
.main__link {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  /* Внутри квадрата иконки 24×24 сам шеврон занимает только середину,
     поэтому справа поле меньше, чем слева. */
  gap: 5px;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text_1);
  font-weight: 400;
  background-color: var(--level_1);
  padding: 10px 10px 10px 15px;
  border-radius: 999px;
  /* Своих полей у таблетки нет: расстояние задаёт строка заголовка. */
  margin: 0;
  text-decoration: none;
  white-space: nowrap;
}

.main__link--dark {
  background-color: var(--black-solid);
  color: var(--level_0);
}

/* Шеврон — иконка Андрея Arrow-right.svg, цвет наследуется от текста. */
.main__link svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: none;
}

.main__link:hover {
  color: var(--btn-text);
  background-color: var(--brand_1);
}

/* цвет шеврона наследуется от текста — отдельного правила не нужно */

.main__carousel-wrap {
  position: relative;
  margin-top: 20px;
}

.main__carousel .owl-dots {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 20px;
  position: relative;
}

.main__carousel .owl-dot {
  margin-right: 10px;
}

.main__carousel .owl-dot:last-child {
  margin-right: 0;
}

.main__carousel .owl-dot span {
  display: block;
  height: 4px;
  width: 10px;
  border-radius: var(--br-5);
  background-color: #c0c0c0;
  transition: 0.5s ease;
}

.main__carousel .owl-dot.active span {
  width: 20px;
  background-color: var(--brand_1);
}

.main__nav {
  display: none;
}

/* все карточки помещаются — стрелки не нужны (см. main.js, Carousel) */
.main__carousel-wrap--fits .main__nav {
  display: none !important;
}

/* Край следующей карточки: карусель уже окна показа ровно на столько,
   сколько должно выглядывать вместе с зазором. Карточки при этом целые,
   поэтому перелистывание работает (см. main.js, Carousel). */
.main__carousel.peek {
  /* --carousel-shrink считает main.js: столько нужно отнять, чтобы
     из-за края выглядывало ровно 48 px (28 на телефоне) */
  width: calc(100% - var(--carousel-shrink, 76px));
}

.main__carousel.peek .owl-stage-outer {
  /* до правого края экрана: карточка обрезается окном, а не колонкой.
     --carousel-window ставит main.js; без него — прежнее поведение,
     обрезка по колонке. */
  width: var(--carousel-window, calc(100% + 76px));
  overflow: hidden;
}

@media (max-width: 990px) {
  .main__carousel.peek {
    width: calc(100% - var(--carousel-shrink, 48px));
  }

  .main__carousel.peek .owl-stage-outer {
    width: var(--carousel-window, calc(100% + 48px));
  }
}

/* Стрелка «вперёд» выезжает на 20 px из последней помещающейся карточки,
   а не лежит на выглядывающей: карусель уже контейнера на
   --carousel-shrink, поэтому отсчитываем от него. */
.main__carousel-wrap:not(.main__carousel-wrap--fits) .main__nav--next {
  right: calc(var(--carousel-shrink, 76px) - 20px);
}

.main__list {
  margin-top: 20px;
}

.main__list--dashbox {
  margin-top: 0;
}

.main__list--dashbox .single-item__title {
  max-width: 80px;
}

.main__list--dashbox .single-item__time {
  font-size: 12px;
}

.main__filter {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  margin-top: 20px;
  padding-bottom: 20px;
  padding-top: 20px;
  background-color: #16151a;
  position: relative;
}

.main__filter:before {
  content: '';
  position: absolute;
  display: block;
  left: -15px;
  right: -15px;
  width: auto;
  top: 0;
  border-top: 1px solid #222227;
  border-bottom: 1px solid #222227;
  bottom: 0;
  background-color: #16151a;
}

.main__filter-wrap {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  position: relative;
  z-index: 2;
  padding: 0 20px;
}

.main__filter-search {
  position: relative;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  margin-bottom: 10px;
}

.main__filter-search input {
  width: 100%;
  height: 40px;
  background-color: #222227;
  color: var(--text_1);
  font-size: 14px;
  border-radius: var(--br-4);
  border: none;
  padding: 0 60px 0 20px;
}

.main__filter-search input:focus {
  border-color: #222227;
}

.main__filter-search button {
  position: absolute;
  right: 20px;
  top: 0;
  height: 40px;
  width: auto;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}

.main__filter-search button svg {
  width: 20px;
  height: auto;
  fill: #c0c0c0;
  transition: 250ms ease;
}

.main__filter-search button:hover svg {
  fill: var(--brand_1);
}

.main__load {
  width: 160px;
  height: 50px;
 border-radius: var(--br-4);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 400;
  margin: 30px auto 0;
}

.main__load:hover {
  color: var(--brand_1);
  background-color: #222227;
}

.main__tabs {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  width: 100%;
  margin-top: 10px;
}

.main__tabs li {
  margin-top: 15px;
  margin-right: 15px;
}

.main__tabs li:last-child {
  margin-right: 0;
}

.main__tabs a {
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: auto;
  color: #c0c0c0;
  font-size: 17px;
}

.main__tabs a span {
  font-size: 15px;
  font-weight: 600;
  margin-right: 3px;
  margin-top: 3px;
  color: #c0c0c0;
  transition: color 250ms ease;
}

.main__tabs a:hover {
  color: var(--text_1);
}

.main__tabs a.active {
  color: var(--text_1);
}

.main__tabs a.active span {
  color: var(--brand_1);
}

.main__table {
  width: 100%;
  min-width: 520px;
  border-spacing: 0;
}

.main__table thead {
  border-bottom: 1px solid #222227;
}

.main__table thead th {
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  color: #c0c0c0;
  font-weight: 400;
  padding: 0 10px 20px 0;
  line-height: var(--lh-p3);
  margin-bottom: 0;
  border: none;
}

.main__table thead th a {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  color: #c0c0c0;
}

.main__table thead th a svg {
  width: 20px;
  height: auto;
  fill: #c0c0c0;
  transition: fill 250ms ease;
}

.main__table thead th a:hover {
  color: var(--text_1);
}

.main__table thead th a:hover svg {
  fill: var(--brand_1);
}

.main__table thead th a.active {
  color: var(--text_1);
}

.main__table thead th a.active svg {
  width: 16px;
  fill: var(--brand_1);
}

.main__table tbody tr {
  border-bottom: none;
  background-color: transparent;
  border-top: 1px solid #222227;
}

.main__table tbody td {
  padding: 0;
  background-color: transparent;
  border: 0px solid transparent;
}

.main__table tbody td:first-child .main__table-text {
  border-radius: 12px 0 0 12px;
}

.main__table tbody td:last-child .main__table-text,
.main__table tbody td:last-child .main__table-btns {
  border-radius: 0 12px 12px 0;
}

.main__table tbody td .main__table-text {
  background-color: transparent;
  padding: 15px 20px 15px 0;
}

.main__table-text {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  color: #c0c0c0;
  font-weight: 400;
  line-height: 30px;
  padding: 20px;
  white-space: nowrap;
}

.main__table-text svg {
  width: 18px;
  height: auto;
  transition: fill 250ms ease;
  fill: #c0c0c0;
  margin-right: 5px;
}

.main__table-text a {
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  color: var(--text_1);
}

.main__table-text a:hover {
  color: var(--brand_1);
}

.main__table-text--number a {
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: 22px;
  border-bottom: 2px dashed var(--brand_1);
}

.main__table-text--price {
  font-weight: 600;
  color: #c0c0c0;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
}

.main__table-text--red {
  color: #eb5757;
}

.main__table-text--red svg {
  fill: #eb5757;
}

.main__table-text--green {
  color: var(--brand_1);
}

.main__table-text--green svg {
  fill: var(--brand_1);
}

.main__table-text--grey {
  color: #c0c0c0;
}

.main__table-img {
  width: 100px;
  height: auto;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  background-color: transparent;
  border-radius: var(--br-4);
  overflow: hidden;
  padding: 15px 20px 15px 0;
}

.main__table-img img {
  width: 100%;
  height: auto;
  border-radius: var(--br-4);
}

@media (min-width: 400px) {
  .main__list--dashbox .single-item__title {
    max-width: 110px;
  }
}

@media (min-width: 576px) {
  .main {
    padding: 20px 15px 50px;
  }

  .main__list--dashbox .single-item__title {
    max-width: 150px;
  }

  .main__list--dashbox .single-item__time {
    font-size: 14px;
  }

  .main__filter:before {
    left: -30px;
    right: -30px;
  }
}

@media (min-width: 991px) {
  .main {
    padding: 30px 15px 70px;
  }

  .main__title {
    margin-top: 80px;
    margin-bottom: 0;
  }

  .main__title h1 {
    font-size: var(--fs-h1);
  letter-spacing: var(--ls-h1);
  font-weight: 500;
  }

  .main__title h2 {
    font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  font-weight: 500;
  }

  .main__title h2 svg {
    width: 30px;
  }

  .main__title p:last-child {
    margin-bottom: 10px;
  }

  .main__title--sidebar {
    margin-bottom: 10px;
  }

  .main__carousel .owl-dots {
    margin-top: 30px;
  }

  .main__list {
    margin-top: 30px;
  }

  .main__list--dashbox {
    margin-top: 0;
  }

  .main__filter {
    padding: 0;
    flex-direction: row;
    align-items: center;
    margin-top: 30px;
    height: 70px;
  }

  .main__filter-wrap {
    padding: 0;
  }

  .main__load {
    margin: 40px auto 0;
  }

  .main__tabs li {
    margin-top: 20px;
    margin-right: 20px;
  }

  .main__tabs li:last-child {
    margin-right: 0;
  }

  .main__filter-search {
    margin-bottom: 0;
    width: 180px;
    margin-right: 30px;
  }

  .main__filter-search input {
    width: 180px;
  }
}

@media (min-width: 992px) {
  .main__filter-search {
    margin-bottom: 0;
    width: 250px;
  }

  .main__filter-search input {
    width: 250px;
  }

  .main__title--sidebar {
    margin-top: 30px;
  }

  .main__list--dashbox .single-item__title {
    max-width: 200px;
  }
}

@media (min-width: 1200px) {
  .main {
    /* Слева ширина меню плюс 40: меню 220, поле страницы 40. */
    padding: 0 40px 70px 260px;
    margin-top: 0;
  }

  .main.day {
    padding: 0 40px 70px 360px;
    margin-top: 0;
  }

  .nosb {
    padding: 0px !important;
  }

  .main__carousel .owl-dots {
    justify-content: center;
    padding-right: 20px;
  }

  .main__nav {
    position: absolute;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    width: 40px;
    height: 40px;
    padding: 0 10px 0 10px;
    right: 0;
    top: calc(50% - 40px);
    z-index: 2;
    background-color: var(--level_1);
    border: 1px solid var(--level_0);
    border-radius: var(--br-4);
  }

  .main__nav svg {
    width: 30px;
    height: auto;
    fill: none;
    stroke: var(--text_1);
    transition: fill 250ms ease;
  }

  .main__nav:hover svg {
    fill: none;
    stroke: var(--brand_1);
  }

  .main__nav--prev {
    left: -20px;
  }

  .main__nav--next {
    right: -20px;
  }

  .main__nav--hero {
    top: calc(50% - 40px);
  }

  .main__nav--hero svg {
    fill: none;
    stroke: white;
  }

  .main__nav--hero.main__nav--prev {
    left: 0px;
  }

  .main__nav--hero.main__nav--next {
    right: 0px;
  }

  .main__nav--hero:hover svg {
    fill: none;
    stroke: var(--brand_1);
  }

  .main__filter {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 99;
    background-color: var(--text_1);
    border: none;
  }

  .main__filter-search {
    margin-bottom: 0;
    width: 220px;
  }

  .main__filter-search input {
    width: 220px;
  }
}

/*==============================
  Breadcrumb
==============================*/
.breadcrumb {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
}

.breadcrumb__item {
  font-size: 14px;
  color: #c0c0c0;
  transition: 250ms ease;
  position: relative;
  margin-right: 34px;
}

.breadcrumb__item:before {
  content: '';
  position: absolute;
  left: 100%;
  top: 1px;
  bottom: 0;
  width: 34px;
  background: url("../img/breadcrumb.svg") no-repeat center/16px auto;
}

.breadcrumb__item:hover {
  color: #c0c0c0;
}

.breadcrumb__item:last-child {
  margin-right: 0;
}

.breadcrumb__item:last-child:before {
  display: none;
}

.breadcrumb__item--active {
  cursor: default;
  margin-right: 0;
}

.breadcrumb__item--active:before {
  display: none;
}

.breadcrumb__item--active:hover {
  color: #c0c0c0;
}

.breadcrumb a {
  color: #c0c0c0;
}

.breadcrumb a:hover {
  color: var(--brand_1);
}

@media (min-width: 1200px) {
  .breadcrumb {
    margin-top: 25px;
  }

  .breadcrumb--hidden-desk {
    display: none;
  }
}

/*==============================
  Profile
==============================*/
.profile {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  background-color: #16151a;
  padding: 20px 20px 0;
  border-radius: var(--br-4);
  position: relative;
  margin-top: 20px;
  border: 1px solid #222227;
}

.profile__tabs {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  overflow: hidden;
  width: 100%;
}

.profile__tabs li {
  margin-right: 20px;
}

.profile__tabs li:last-child {
  margin-right: 0;
}

.profile__tabs a {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  height: 40px;
  color: #c0c0c0;
  position: relative;
  font-size: 14px;
}

.profile__tabs a:hover {
  color: var(--text_1);
}

.profile__tabs a:before {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  display: block;
  background-color: var(--brand_1);
  transition: 250ms ease;
  transform: translateY(2px);
  opacity: 0;
  border-radius: 2px 2px 0 0;
}

.profile__tabs a.active {
  color: var(--text_1);
  cursor: default;
}

.profile__tabs a.active:before {
  opacity: 1;
  transform: translateY(0);
}

.profile__logout {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: auto;
  position: absolute;
  top: 20px;
  right: 20px;
}

.profile__logout span {
  display: none;
  font-size: 16px;
  color: #c0c0c0;
  margin-right: 10px;
  transition: 250ms ease;
}

.profile__logout svg {
  fill: #c0c0c0;
  width: 24px;
  height: auto;
  transition: fill 250ms ease;
}

.profile__logout:hover span {
  color: var(--text_1);
}

.profile__logout:hover svg {
  fill: var(--brand_1);
}

.profile__user {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-bottom: 20px;
}

.profile__meta {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
}

.profile__meta h3 {
  color: var(--text_1);
  display: block;
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 7px;
  line-height: 100%;
}

.profile__meta span {
  color: #c0c0c0;
  font-size: 12px;
  line-height: 100%;
}

.profile__avatar {
  display: block;
  position: relative;
  width: 40px;
  cursor: pointer;
  overflow: hidden;
  border-radius: var(--br-4);
  margin-right: 15px;
}

.profile__avatar img {
  width: 100%;
}

@media (min-width: 991px) {
  .profile {
    margin-top: 30px;
    padding: 0 20px;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }

  .profile__tabs {
    border-bottom: none;
    margin-bottom: 0;
    width: auto;
    margin-right: auto;
  }

  .profile__tabs li {
    margin-right: 30px;
  }

  .profile__tabs li:last-child {
    margin-right: 0;
  }

  .profile__tabs a {
    align-items: center;
    height: 70px;
    font-size: 16px;
  }

  .profile__user {
    margin-bottom: 0;
    margin-right: 60px;
  }

  .profile__logout {
    position: relative;
    top: auto;
    right: auto;
  }

  .profile__logout span {
    display: block;
  }
}

/*==============================
  Hero
==============================*/
.hero {
  display: block;
  width: 100%;
}

/* for slider */
.hero-container {
  padding: 0px 0 40px 0;
}

.hero .owl-dots {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 0px;
  position: relative;
  padding-top: 30px;
}

.hero .owl-dot {
  margin-right: 10px;
}

.hero .owl-dot:last-child {
  margin-right: 0;
}

.hero .owl-dot span {
  display: block;
  height: 4px;
  width: 10px;
  border-radius: var(--br-5);
  background-color: var(--text_1);
  transition: 0.5s ease;
}

.hero .owl-dot.active span {
  width: 20px;
  background-color: var(--brand_1);
}

.hero .owl-stage-outer {
  border-radius: var(--br-3);
}

/* Баннер без кнопки: нижний отступ обычно даёт блок кнопок, без него
   текст прилипает к краю карточки. */
.hero__slide--no-btn {
  padding-bottom: 32px;
}

.hero__slide {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: auto;
  border-radius: var(--br-2);
  overflow: hidden;
  position: relative;
  background-color: var(--level_1);
}

.hero__title {
  position: relative;
  z-index: 2;
  color: var(--text_1);
  padding-top: 30px;
  line-height: 110%;
  text-align: left;
  font-size: 28px;
}

.hero__text {
  position: relative;
  z-index: 2;
  color: var(--text_1);
  font-size: 18px;
  line-height: 120%;
  margin-bottom: 0;
  margin-top: 10px;
  padding: 0 20px;
  opacity: .7;
  text-align: center;
}

.main-title-1 .hero__text {
  padding: 0;
  text-align: left;
}

.hero__text-common {
  position: relative;
  z-index: 2;
  color: var(--text_1);
  font-size: 18px;
  line-height: 120%;
  margin-bottom: 0;
  margin-top: 10px;
  padding: 0;
  opacity: .7;
  text-align: left;
}

.center {
  text-align: center;
}

.hero__btns {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
  margin: 5px 0 20px 0;
}

.hero__btns a {
  margin-right: 15px;
}

.hero__btns a:last-child {
  margin-right: 0;
}

@media (min-width: 576px) {
  .hero__slide {
    min-height: auto;
  }

  .hero__title {
    font-size: 24px;
  }
}

@media (min-width: 991px) {
  .hero .owl-dots {
    margin-top: 00px;
  }

  .hero__slide {
    padding: 40px;
  }

  .hero__title {
    font-size: 30px;
  }
}

@media (min-width: 1200px) {
  .hero {
    margin-top: 20px;
  }

  .hero .owl-dots {
    margin-top: 0;
    margin-bottom: 30px;
    padding-right: 20px;
    z-index: 2;
  }

  .hero .owl-dot span {
    background-color: var(--brand_1);
  }

  .hero .owl-dot.active span {
    background-color: var(--text_1);
  }

  .hero__title {
    font-size: 36px;
  }

  .hero__text {
    font-size: 17px;
    line-height: 28px;
  }

  .hero__btn {
    margin-top: 40px;
  }

  .hero__slide {
    padding: 30px 40px 30px 40px;
  }
}

/*==============================
  Banner M
==============================*/
.banner-m-container {
  padding: 20px 0 40px 0;
}

.banner-m__slide {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  height: auto;
  border-radius: var(--br-2);
  overflow: hidden;
  position: relative;
  background-color: var(--level_1);
  padding: 20px;
}

.banner-m__text {
  width: 100%;
  color: var(--text_1);
  font-size: 18px;
  line-height: 120%;
  margin: 0 15px 0 10px;
  margin-bottom: 0;
}

.banner-m__btns {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: auto;
}

.banner-m__btns a {
  margin: 0 15px 0 0;
}

.banner-m__btns a:last-child {
  margin: 0;
}

@media (min-width: 576px) {}

@media (min-width: 991px) {}

@media (min-width: 992px) {}

@media (min-width: 1200px) {}

/*==============================
Pricing
==============================*/
.pricing__title {
  dispaly: flex;
  flex-direction: row;
  justify-content: center;
  text-align: center;
  margin: 20px 0 40px 0;}
.pricing__table {
  -webkit-transition: -webkit-transform .5s;
  transition: -webkit-transform .5s;
  -o-transition: transform .5s;
  transition: transform 5.s;
  transition: transform .5s, -webkit-transform .5s; }
.pricing__row {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  @media only screen and (max-width: 990px) {
    .pricing__row {
      display: block; } }

.pricing__col {
  -webkit-box-flex: 1;
      -ms-flex: 1 1;
          flex: 1 1; }
  @media only screen and (max-width: 990px) {
    .pricing__col {
      padding: 36px 36px 36px 36px;
      background: var(--level_100);
      border-radius: var(--br-0); } 
      body.dark .pricing__col {background: var(--level_1); } }
  .pricing__col:first-child {
    -webkit-box-flex: 0;
        -ms-flex: 0 0 350px;
            flex: 0 0 350px; }
    @media only screen and (max-width: 1179px) {
      .pricing__col:first-child {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 220px;
                flex: 0 0 220px; } }
    @media only screen and (max-width: 1023px) {
      .pricing__col:first-child {
        -webkit-box-flex: 0;
            -ms-flex: 0 0 130px;
                flex: 0 0 130px; } }
    @media only screen and (max-width: 847px) {
      .pricing__col:first-child {
        display: none; } }

      body.dark .pricing__col:nth-child(3) .pricing__parameter {
        border-bottom: 1px solid var(--level_2); }
  
  .pricing__col:not(:first-child) {
    padding-bottom: 36px;
    text-align: center; }
    @media only screen and (max-width: 990px) {
      .pricing__col:not(:first-child) {
        text-align: left; } }
    .pricing__col:not(:first-child) .pricing__body {
      padding-top: 0px; }
    .pricing__col:not(:first-child) .pricing__parameter {
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      text-align: center; }
    .pricing__col:not(:first-child) .pricing__label {
      display: none; }
      @media only screen and (max-width: 990px) {
        .pricing__col:not(:first-child) .pricing__label {
          display: block; } }
  @media only screen and (max-width: 990px) {
    .pricing__col:not(:last-child) {
      margin-bottom: 16px; }
    .pricing__col:not(:first-child) .pricing__parameter {
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: start;
      text-align: left; } }

.col__1 { 
  border-radius: var(--br-0); }
.col__2 {
  border-radius: var(--br-0); }
.col__3 {
  background: var(--level_100); 
  border-radius: var(--br-1); }
  @media only screen and (max-width: 990px) {
    .col__3 {
      background: var(--level_100); 
      border-radius: 36px 36px 36px 36px; } }
  body.dark .col__3 {
    background: var(--level_1); }
.col__4 { 
  border-radius: var(--br-0); }

.pricing__head {
  min-height: 284px;
  padding: 36px 36px 0 36px; }
  @media only screen and (max-width: 1023px) {
    .pricing__head {
      padding: 36px 36px 0 36px; } }
  @media only screen and (max-width: 990px) {
    .pricing__head {
      min-height: auto;
      padding: 0; } }

.pricing__more {
  display: none; }
  @media only screen and (max-width: 990px) {
    .pricing__more {
      display: block;
      position: absolute;
      right: 48px; 
      width: 24px;
      height: 24px; 
      margin-top: -36px;
      background: transparent url("../img/Plus.svg") no-repeat center/24px auto; }
      .pricing__more.active {
        -webkit-transform: rotate(45deg);
            -ms-transform: rotate(45deg);
                transform: rotate(45deg); } }

.pricing__package {
  color: var(--level_100);
  margin-bottom: 8px; }

.pricing__description {
  white-space: nowrap;
  color: var(--level_100);
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 20px; }

.pricing__cost {
  color: var(--level_100);
  position: relative;
  display: inline-block;
  margin-top: 16px; }
  @media only screen and (max-width: 990px) {
    .pricing__cost {
      margin-left: 0px; } }

.pricing__price { 
  color: var(--level_100);}

.pricing__sign {
  position: absolute;
  top: 0px;
  left: calc(100% + 10px);
  color: var(--level_100);
  font-size: 24px;}

.pricing__note {
  color: var(--level_6);
  line-height: 20px;
  margin: 7px 0 10px 0;}


@media only screen and (min-width: 767px) {
  .pricing__list {
    display: block !important; } }

@media only screen and (max-width: 990px) {
  .pricing__list {
    display: none;
    padding-top: 24px; }
    .pricing__list.visible {
      display: block; } }

.pricing__parameter {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  height: 64px;
  border-bottom: 1px solid #E6E8EC; }
  body.dark .pricing__parameter {
    border-bottom: 1px solid var(--level_1); }

.pricing__label {
  text-align: left;
  margin-right: auto;
  color: var(--level_100);}
  @media only screen and (max-width: 1023px) {
    .pricing__label {
      margin-right: 16px; } }
  @media only screen and (max-width: 990px) {
    .pricing__label {
      margin-right: auto;
      padding-left: 0px; } }

.pricing__hint {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  width: 24px;
  height: 24px;
  background: transparent url("../img/Plus.svg") no-repeat center/24px auto;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  margin: 0 24px;
  cursor: pointer; }
  @media only screen and (max-width: 1023px) {
    .pricing__hint {
      display: none; } }
  .pricing__hint:hover .pricing__tooltip {
    visibility: visible;
    opacity: 1; }

.pricing__tooltip {
  color: var(--level_100);
  text-align: left;
  position: absolute;
  top: 50%;
  left: calc(100% + 20px);
  min-width: 260px;
  padding: 16px 20px;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
  border-radius: var(--br-3);
  background: var(--level_100);
  -webkit-box-shadow: 0px 10px 50px rgba(203, 206, 220, 0.5);
          box-shadow: 0px 10px 50px rgba(203, 206, 220, 0.5);
  font-size: 15px;
  visibility: hidden;
  opacity: 0;
  -webkit-transition: all .2s;
  -o-transition: all .2s;
  transition: all .2s; }
  .pricing__tooltip:before {
    content: "";
    position: absolute;
    right: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    width: 0px;
    height: 0px;
    border-style: solid;
    border-width: 7px 7px 7px 0;
    border-color: transparent #FFFFFF transparent transparent; }
  body.dark .pricing__tooltip {
    background: var(--level_1);
    -webkit-box-shadow: 0 4px 12px rgba(20, 20, 22, 0.1);
            box-shadow: 0 4px 12px rgba(20, 20, 22, 0.1); }
    body.dark .pricing__tooltip:before {
      width: 0px;
      height: 0px;
      border-style: solid;
      border-width: 6px 6px 6px 0;
      border-color: transparent var(--level_1); transparent transparent; }

.pricing__check {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  .pricing__check .icon {
    width: 14px;
    height: 14px;
    fill: var(--green_1); }

.pricing__minus {
  opacity: 0;
  padding: 0 2px;
  font-size: 18px;
  font-weight: 600;
  color: var(--level_6); }

.pricing__btn {
  padding: 16px 0; 
  max-height: 60px;
  transition: all .5s; }
.pricing__btn:hover {
  webkit-transform: scale(1.05);
  -ms-transform: scale(1.05);
      transform: scale(1.05); }
  .pricing__btn .btn {
    padding: 10px 15px;
    color: var(--level_100);
    border-radius: var(--br-3); }
  .pricing__btn .btn_brand {
    background: var(--brand_1); }
  .pricing__btn .btn_secondary {
    background: var(--level_3); }
@media only screen and (max-width: 990px) {
  .pricing__btn {
    padding: 12px 0 0 0; } 
.pricing__btn a {
  white-space: nowrap; 
  overflow: hidden;
  text-overflow: ellipsis;} }

/*==============================
  Tariff
==============================*/
.tariff__banner {
  background-color: var(--level_1);
  border-radius: var(--br-2);
  padding: 15px 20px 10px 20px;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
}
.tariff__text {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  padding-left: 20px;
}
.tariff__text h5 {
  font-size: 18px;
  margin: 10px 0 10px 0;
}
.tariff__text p {
  color: var(--green_1);
}
.tariff__text p.tariff__off {color: var(--red_1);}
.tariff__buttons {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  margin: 5px 0 20px 0;
}
.tariff__buttons button {
  width: calc(50% - 10px);
}
.tariff__history {
  padding: 15px 0 0 0;
}
.modal-history .modal__close {
  top: 0px;
  right: 20px;
}
.history__group {padding: 20px 0; }
.history__line {
  color: var(--level_100);
  max-width:600px;
  padding: 5px 0;
  display: flex;
  flex-direction: row;
}
.history__date, .history__method {
  width: 25%;
  padding: 6px 15px 0 0;
}
.history__status {
  color: var(--green_1);
  border: 1px solid var(--green_1);
  border-radius: var(--br-3);
  padding: 5px 10px;
  max-height: 40px;
}
.history__status.panding {
  color: var(--red_1);
  border: 1px solid var(--red_1);
}
.history__value {
  text-align: left;
  margin-left: auto;
  padding-top: 6px;
}

/*==============================
  Album
==============================*/
.album {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  margin-top: 20px;
  width: 100%;
}

.album__cover {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  border-radius: var(--br-3);
  position: relative;
  overflow: hidden;
  width: 100%;
  background-color: #000;
}

.album__cover img {
  width: 100%;
  display: block;
  position: relative;
  z-index: 1;
  opacity: 1;
  transition: 250ms ease;
}

.album__cover a {
  position: absolute;
  z-index: 2;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 56px;
  height: 56px;
  top: 50%;
  left: 50%;
  margin: -28px 0 0 -28px;
  border-radius: var(--br-3);
  background-color: #222227;
  transform: scale(0.8);
  opacity: 0;
  transition: 250ms ease;
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.album__cover a svg {
  fill: #fff;
  width: 24px;
  height: auto;
  margin: 1px 0 0 1px;
  transition: fill 250ms ease;
}

.album__cover a:hover svg {
  fill: var(--brand_1);
}

.album__cover:hover img {
  opacity: 0.6;
  transform: scale(1.08);
}

.album__cover:hover a {
  opacity: 1;
  transform: scale(1);
}

.album__cover:hover .album__stat {
  opacity: 1;
  transform: scale(1);
}

.album__title {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  margin-top: 5px;
}

.album__title h3 {
  display: block;
  width: 100%;
  color: var(--text_1);
  font-size: 16px;
  font-weight: 400;
  margin-bottom: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.album__title h3 a {
  color: var(--text_1);
}

.album__title h3 a:hover {
  color: var(--brand_1);
}

.album__title span {
  display: block;
  width: 100%;
  color: #c0c0c0;
  font-size: 14px;
  font-weight: 400;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.album__title span a {
  color: #c0c0c0;
}

.album__title span a:hover {
  color: var(--brand_1);
}

.album__stat {
  position: absolute;
  z-index: 2;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  bottom: 20px;
  left: 0;
  right: 0;
  color: var(--text_1);
  font-size: 12px;
  transform: scale(0.8);
  opacity: 0;
  transition: 250ms ease;
}

.album__stat span {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-right: 15px;
}

.album__stat span:last-child {
  margin-right: 0;
}

.album__stat svg {
  width: 14px;
  height: auto;
  fill: #fff;
  margin-right: 5px;
}

@media (min-width: 991px) {
  .album {
    margin-top: 30px;
  }

  .album--sidebar {
    margin-top: 20px;
  }

  .album__stat {
    font-size: 13px;
  }

  .album__stat span {
    margin-right: 20px;
  }

  .album__stat span:last-child {
    margin-right: 0;
  }

  .album__stat svg {
    width: 16px;
  }
}

/*==============================
  Releases
==============================*/
.release {
  margin-top: 20px;
  border: 1px solid #222227;
  background-color: #16151a;
  padding: 20px;
  border-radius: var(--br-3);
  position: release;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
}

.release__cover {
  display: block;
  position: relative;
  width: 100%;
  border-radius: var(--br-3);
  overflow: hidden;
}

.release__cover img {
  width: 100%;
}

.release__list {
  position: relative;
  height: 330px;
  width: 100%;
  overflow: hidden;
  padding-right: 14px;
  margin-top: 20px;
}

.release__stat {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  color: #c0c0c0;
  font-size: 14px;
  transition: 250ms ease;
  width: 100%;
  margin-top: 15px;
}

.release__stat span {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-right: 20px;
}

.release__stat span:last-child {
  margin-right: 0;
}

.release__stat svg {
  width: 20px;
  height: auto;
  fill: var(--brand_1);
  margin-right: 5px;
}

.release__buy {
  width: 100%;
  height: 50px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 500;
  padding: 0 25px;
  margin-top: 15px;
}

.release__buy svg {
  fill: #fff;
  width: 28px;
  height: auto;
  margin-right: 7px;
}

.release__buy:hover {
  background-color: #222227;
  color: var(--text_1);
}

@media (min-width: 991px) {
  .release {
    flex-direction: row;
    margin-bottom: 10px;
  }

  .release__list {
    margin-top: 0;
    width: calc(100% - 250px);
  }

  .release__content {
    width: 230px;
    margin-right: 20px;
  }
}

@media (min-width: 1200px) {
  .release__list {
    width: calc(100% - 310px);
    height: 388px;
  }

  .release__content {
    width: 290px;
  }
}

/*==============================
  Store-item
==============================*/
.store-item {
  margin-top: 20px;
  border: 1px solid #222227;
  background-color: #16151a;
  padding: 20px;
  border-radius: var(--br-3);
  position: release;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
}

.store-item__cover {
  display: block;
  position: release;
  width: 100%;
  border-radius: var(--br-3);
  overflow: hidden;
}

.store-item__cover img {
  width: 100%;
}

.store-item__description {
  position: relative;
  width: 100%;
  margin-top: 20px;
}

.store-item__buy {
  width: 100%;
  height: 50px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 500;
  padding: 0 25px;
  margin-top: 15px;
}

.store-item__buy svg {
  fill: #fff;
  width: 28px;
  height: auto;
  margin-right: 7px;
}

.store-item__buy:hover {
  background-color: #222227;
  color: var(--text_1);
}

.store-item__content {
  width: 100%;
  display: block;
}

.store-item__carousel {
  position: relative;
  width: 100%;
}

.store-item__carousel .owl-dots {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
  margin-top: 20px;
  position: relative;
}

.store-item__carousel .owl-dot {
  margin-right: 10px;
}

.store-item__carousel .owl-dot:last-child {
  margin-right: 0;
}

.store-item__carousel .owl-dot span {
  display: block;
  height: 4px;
  width: 10px;
  border-radius: var(--br-5);
  background-color: #c0c0c0;
  transition: 0.5s ease;
}

.store-item__carousel .owl-dot.active span {
  width: 20px;
  background-color: var(--brand_1);
}

@media (min-width: 991px) {
  .store-item {
    flex-direction: row;
  }

  .store-item__description {
    margin-top: 0;
    width: calc(100% - 250px);
  }

  .store-item__content {
    width: 230px;
    margin-right: 20px;
  }
}

@media (min-width: 1200px) {
  .store-item__description {
    width: calc(100% - 310px);
  }

  .store-item__content {
    width: 290px;
  }
}

/*==============================
  Artist
==============================*/
.artist {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  height: 100%;
  position: relative;
}

.artist__cover {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  border-radius: var(--br-2);
  position: relative;
  overflow: hidden;
  width: 100%;
}

.artist__cover img {
  width: 100%;
  display: block;
  position: relative;
  z-index: 1;
}

.artist__title {
  z-index: 3;
  color: var(--text_1);
  font-size: 16px;
  margin-bottom: 0;
  text-align: left;
  width: auto;
  height: auto;
  text-overflow: ellipsis;
  transition: color 250ms ease;
  margin: 15px 15px 15px 15px;
  font-weight: 400;
}

.artist:hover .artist__cover:before {
  opacity: 0.3;
}

.artist:hover .artist__title {
  color: var(--brand_1);
}

@media (min-width: 991px) {
  .artist {
    margin-top: 0px;
  }
}

/*==============================
  Event
==============================*/
.event {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  margin-top: 20px;
  width: 100%;
  border-radius: var(--br-3);
  position: relative;
  overflow: hidden;
  padding: 20px;
  height: 300px;
}

.event:before {
  content: '';
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 100%);
  opacity: 0.6;
  transition: opacity 250ms ease;
  z-index: 1;
}

.event__date {
  position: relative;
  z-index: 2;
  font-size: 18px;
  font-weight: 400;
  color: var(--text_1);
}

.event__time {
  position: relative;
  z-index: 2;
  font-size: 14px;
  color: #c0c0c0;
  font-weight: 400;
  margin-bottom: 20px;
}

.event__title {
  position: relative;
  z-index: 2;
  font-weight: 400;
  color: var(--text_1);
  font-size: 24px;
  margin-bottom: 5px;
  width: 100%;
}

.event__title a {
  color: var(--text_1);
}

.event__title a:hover {
  color: var(--brand_1);
}

.event__address {
  position: relative;
  z-index: 2;
  font-size: 14px;
  color: var(--text_1);
  line-height: 24px;
  margin-bottom: 0;
  width: 100%;
}

.event__ticket {
  position: absolute;
  top: 20px;
  left: 20px;
  min-width: 130px;
  height: 40px;
  border-radius: var(--br-3);
  background-color: #222227;
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  z-index: 2;
  font-weight: 500;
  padding: 0 15px;
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.event__ticket svg {
  width: 18px;
  height: auto;
  margin-right: 7px;
  fill: var(--brand_1);
  transition: fill 250ms ease;
}

.event__ticket:hover {
  color: var(--text_1);
  background-color: var(--brand_1);
  border-color: var(--brand_1);
}

.event__ticket:hover svg {
  fill: #fff;
}

.event__out {
  position: absolute;
  top: 20px;
  left: 20px;
  min-width: 120px;
  height: 40px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  z-index: 2;
  font-weight: 500;
  padding: 0 15px;
}

.event:hover:before {
  opacity: 0.8;
}

@media (min-width: 991px) {
  .event {
    margin-top: 30px;
    height: 320px;
  }

  .event__title {
    font-size: 26px;
  }
}

/*==============================
  Single
==============================*/
.single-item {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid #222227;
  height: 58px;
}

.single-item:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: none;
  height: 48px;
}

.single-item__number {
  color: #c0c0c0;
  font-size: 22px;
  min-width: 20px;
  width: auto;
  font-weight: 400;
}

.single-item__rate {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 14px;
  color: #c0c0c0;
  width: 24px;
  margin-right: 10px;
}

.single-item__rate svg {
  fill: var(--brand_1);
  width: 20px;
  height: auto;
}

.single-item__rate--red svg {
  fill: #eb5757;
}

.single-item__cover {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  border-radius: var(--br-4);
  overflow: hidden;
  transition: 250ms ease;
}

.single-item__cover img {
  width: 48px;
  height: auto;
  opacity: 1;
  transition: opacity 250ms ease;
  position: relative;
}

.single-item__cover svg {
  position: absolute;
  opacity: 0;
  fill: #fff;
  width: 24px;
  height: auto;
  margin: 1px 0 0 1px;
  transition: 250ms ease;
}

.single-item__cover svg:last-child {
  opacity: 0;
}

.single-item__cover:hover svg {
  fill: var(--brand_1);
}

.single-item__cover.active {
  background-color: #000;
}

.single-item__cover.active img {
  opacity: 0.35;
}

.single-item__cover.active svg {
  fill: var(--brand_1);
}

.single-item__cover.pause svg {
  opacity: 1;
}

.single-item__cover.pause svg:last-child {
  opacity: 0;
}

.single-item__cover.play svg {
  opacity: 0;
}

.single-item__cover.play svg:last-child {
  opacity: 1;
}

.single-item__title {
  display: inline-flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  margin-left: 15px;
  margin-right: auto;
}

.single-item__title h4 {
  display: block;
  width: 100%;
  color: var(--text_1);
  font-size: 16px;
  line-height: 24px;
  font-weight: 400;
  margin-bottom: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.single-item__title h4 a {
  color: var(--text_1);
}

.single-item__title h4 a:hover {
  color: var(--brand_1);
}

.single-item__title span {
  display: block;
  width: 100%;
  color: #c0c0c0;
  font-size: 14px;
  line-height: 24px;
  font-weight: 400;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
}

.single-item__title span a {
  color: #c0c0c0;
}

.single-item__title span a:hover {
  color: var(--brand_1);
}

.single-item__time {
  margin-left: 15px;
  font-size: 13px;
  color: #c0c0c0;
}

.single-item__time--live {
  background-color: #eb5757;
  color: var(--text_1);
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 24px;
  padding: 0 12px;
  border-radius: var(--br-4);
  font-size: 12px;
  font-weight: 400;
}

.single-item__add {
  margin-left: 15px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 32px;
  height: 32px;
  border-radius: var(--br-4);
  background-color: rgba(37, 165, 106, 0.15);
}

.single-item__add svg {
  width: 18px;
  height: auto;
  fill: var(--brand_1);
}

.single-item__add:hover {
  background-color: rgba(37, 165, 106, 0.3);
}

.single-item__export {
  margin-left: 15px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 32px;
  height: 32px;
  border-radius: var(--br-4);
  background-color: rgba(128, 81, 212, 0.15);
}

.single-item__export svg {
  width: 18px;
  height: auto;
  fill: var(--brand);
}

.single-item__export:hover {
  background-color: rgba(128, 81, 212, 0.3);
}

.single-item:hover .single-item__cover {
  background-color: #222227;
}

.single-item:hover .single-item__cover img {
  opacity: 0.35;
}

.single-item:hover .single-item__cover svg {
  opacity: 1;
}

.single-item:hover .single-item__cover svg:last-child {
  opacity: 0;
}

.single-item:hover .single-item__cover.play svg {
  opacity: 0;
}

.single-item:hover .single-item__cover.play svg:last-child {
  opacity: 1;
}

/*==============================
  Post
==============================*/
.post {
  position: relative;
  margin-top: 20px;
  border-radius: var(--br-3);
  width: 100%;
  overflow: hidden;
  background-color: #222227;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  height: calc(100% - 20px);
}

.post__img {
  display: block;
  width: 100%;
  position: relative;
  background-color: #000;
}

.post__img:before {
  content: '';
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 100%);
  opacity: 0.1;
  transition: opacity 250ms ease;
  z-index: 2;
}

.post__img img {
  width: 100%;
  position: relative;
  z-index: 1;
}

.post__img:hover:before {
  opacity: 0.3;
}

.post__video {
  position: absolute;
  top: 20px;
  left: 20px;
  z-index: 3;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 40px;
  border-radius: var(--br-3);
  background-color: #222227;
  font-weight: 500;
  font-size: 14px;
  color: var(--text_1);
  padding: 0 15px;
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.post__video svg {
  fill: var(--brand_1);
  width: 24px;
  height: auto;
  margin-right: 7px;
  transition: fill 250ms ease;
}

.post__video:hover {
  background-color: var(--brand_1);
  color: var(--text_1);
  border-color: var(--brand_1);
}

.post__video:hover svg {
  fill: #fff;
}

.post__content {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  padding: 20px;
  background-color: #222227;
  border-radius: 0 0 12px 12px;
  height: 100%;
  position: relative;
}

.post__category {
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 28px;
  min-width: 70px;
  width: auto;
  color: var(--text_1);
  font-size: 13px;
  background-color: #2f80ed;
  border-radius: var(--br-4);
  padding: 0 15px;
  margin-bottom: 20px;
  position: absolute;
  bottom: 100%;
  left: 20px;
  z-index: 2;
}

.post__category:hover {
  color: var(--text_1);
  background-color: var(--brand_1);
}

.post__title {
  display: block;
  font-weight: 400;
  font-size: 24px;
  line-height: 140%;
  color: var(--text_1);
  margin-bottom: 20px;
  overflow: hidden;
  width: 100%;
}

.post__title a {
  color: var(--text_1);
  display: block;
}

.post__title a:hover {
  color: var(--brand_1);
}

.post__meta {
  margin-top: auto;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  height: 20px;
}

.post__date {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 13px;
  color: #c0c0c0;
}

.post__date svg {
  fill: #fff;
  width: 16px;
  height: auto;
  margin-right: 5px;
}

.post__comments {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 13px;
  color: #c0c0c0;
}

.post__comments svg {
  fill: #fff;
  width: 16px;
  height: auto;
  margin-right: 5px;
}

@media (min-width: 991px) {
  .post {
    margin-top: 30px;
    height: calc(100% - 30px);
  }
}

/*==============================
  Live
==============================*/

.live {
  display: flex;
  height: 100%;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  position: relative;
  overflow: hidden;
  background-color: var(--level_1);
  border-radius: var(--br-2);
}

.live__cover {
  width: 100%;
  border-radius: var(--br-2);
  overflow: hidden;
  position: relative;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}

.live__cover {
  /* Пропорция задаётся заранее: у video размер известен только после
     загрузки постера, и до этого карточка рисовалась обрезанной,
     а потом прыгала. */
  aspect-ratio: 1 / 1;
}

.live__cover img, .live__cover video {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  transition: 250ms ease;
}

/* Для браузеров без aspect-ratio (Safari до 15) — прежний приём с отступом. */
@supports not (aspect-ratio: 1 / 1) {
  .live__cover {
    height: 0;
    padding-top: 100%;
  }

  .live__cover img, .live__cover video {
    position: absolute;
    top: 0;
    left: 0;
  }
}

.live__cover svg {
  position: absolute;
  display: block;
  fill: #fff;
  width: 46px;
  height: auto;
  transition: 250ms ease;
  z-index: 3;
  transform: scale(0.8);
  opacity: 0;
}

.live__value {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  position: absolute;
  bottom: 20px;
  left: 20px;
  z-index: 3;
  pointer-events: none;
  height: 28px;
  width: auto;
  padding: 0 15px;
  border-radius: var(--br-4);
  background-color: rgba(34, 34, 39, 0.8);
  color: var(--text_1);
  font-size: 12px;
  font-weight: 400;
}

/* Бейдж «Новый» — макет 21.09: белая пилюля 20px высотой со светлым
   кольцом, текст капителью. Ширина по содержимому (в макете 54). */
.live__status {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  position: absolute;
  top: 15px;
  left: 15px;
  z-index: 3;
  pointer-events: none;
  height: 20px;
  width: auto;
  padding: 0 8px;
  border-radius: 10px;
  background: var(--level_0);
  box-shadow: 0 0 0 1.5px var(--level_2);
  color: var(--text_1);
  font-size: 13px;
  font-weight: 400;
  font-variant: small-caps;
  /* в макете буквы стоят плотнее — системный шрифт шире фигмовского */
  letter-spacing: -0.02em;
  line-height: 1;
}

.live__title {
  font-size: 16px;
  font-weight: 400;
  color: var(--text_1);
  padding: 15px 20px 0 20px;
  width: 100%;
  word-wrap: break-word;
  transition: color 250ms ease;
}

.live__subtitle {
  color: var(--text_2);
  font-size: 14px;
  font-weight: 400;
  padding: 0px 20px 0 20px;
  margin-top: auto;
}

.live__title a {
  color: var(--link_2);
}

.live:hover .live__cover:before {
  opacity: 0.3;
}

.live:hover .live__cover svg {
  opacity: 1;
  transform: scale(1);
}

.live:hover .live__title {
  color: var(--link_2_hover);
}

.live:hover .live__title a {
  color: var(--link_2_hover);
}

/*==============================
  Replace
==============================*/
/* Иконка замены — из набора, маской: так она одного вида
   и на главной, и на карточке дня. */
.replace__button-icon {
  width: 20px;
  height: 20px;
  background-color: var(--bg-black-solid);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.replace__button {
  position: absolute;
	z-index: 999;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  padding: 5px;
  width: 30px;
  height: 30px;
  right: 15px;
  top: 15px;
  background: rgba(255, 255, 255, 0.6);
  border-radius: 10px;
}
.replace__button:hover {
  background: rgba(255, 255, 255, 1);
  transform: scale3d(1.02, 1.02, 1.02);
}
.replace__group {
  width: 100%;
  overflow: hidden;
  padding: 30px 0 0 0;
}
.btn-replace {
  margin: 0 0 20px 20px;
}

/*==============================
  Product
==============================*/
.product {
  position: relative;
  margin-top: 20px;
  border-radius: var(--br-2);
  width: 100%;
  overflow: hidden;
  background-color: #222227;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  padding: 0px;
}

.product__img {
  width: 100%;
  border-radius: var(--br-2);
  overflow: hidden;
  position: relative;
}

.product__img:before {
  content: '';
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #000 0%, rgba(0, 0, 0, 0) 100%);
  opacity: 0;
  transition: opacity 250ms ease;
  z-index: 2;
}

.product__img img {
  width: 100%;
  display: block;
  position: relative;
  z-index: 1;
}

.product__img:hover:before {
  opacity: 0.3;
}

.product__img:hover .product__add {
  transform: scale(1);
  opacity: 1;
}

.product__add {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 48px;
  height: 48px;
  top: 50%;
  left: 50%;
  margin: -24px 0 0 -24px;
  border-radius: var(--br-3);
  background-color: #222227;
  transform: scale(0.8);
  opacity: 0;
  transition: 250ms ease;
  transition-property: opacity, transform;
  z-index: 3;
  border: 1px solid rgba(255, 255, 255, 0.05);
}

.product__add svg {
  fill: #fff;
  width: 24px;
  height: auto;
  transition: fill 250ms ease;
}

.product__add:hover svg {
  fill: var(--brand_1);
}

.product__title {
  display: block;
  width: 100%;
  font-size: 17px;
  font-weight: 400;
  color: var(--text_1);
  margin-bottom: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
  margin-top: 15px;
}

.product__title a {
  color: var(--text_1);
}

.product__title a:hover {
  color: var(--brand_1);
}

.product__price {
  font-size: 16px;
  color: #c0c0c0;
  margin-top: 5px;
  display: block;
  width: 100%;
  font-weight: 400;
}

.product__new {
  font-size: 14px;
  color: #eb5757;
  position: absolute;
  bottom: 20px;
  right: 20px;
  font-weight: 600;
}

@media (min-width: 991px) {
  .product {
    margin-top: 30px;
  }
}

/*==============================
  Partners
==============================*/
.partners {
  margin-top: 60px;
}

.partners__img img {
  -webkit-filter: grayscale(1);
  filter: grayscale(1);
  opacity: 0.7;
  transition: 250ms;
}

.partners__img:hover img {
  -webkit-filter: grayscale(0);
  filter: grayscale(0);
  opacity: 1;
}

@media (min-width: 991px) {
  .partners {
    margin-top: 70px;
  }
}

/*==============================
  Stats
==============================*/
.stats {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  position: relative;
  margin-top: 20px;
  padding: 20px;
  border-radius: var(--br-3);
  background-color: #16151a;
  width: 100%;
  border: 1px solid #222227;
}

.stats span {
  font-size: 20px;
  line-height: 100%;
  font-weight: 400;
  color: var(--text_1);
  margin-bottom: 0;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-end;
}

.stats span a {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 13px;
  color: var(--text_1);
  margin-left: 10px;
  line-height: 100%;
  border-bottom: 2px dashed var(--brand_1);
}

.stats span a svg {
  width: 14px;
  height: auto;
  fill: var(--brand_1);
  position: relative;
  bottom: auto;
  right: auto;
  transition: 250ms ease;
}

.stats span a:hover {
  color: var(--brand_1);
}

.stats span a:hover svg {
  fill: var(--brand_1);
}

.stats p {
  font-size: 14px;
  color: #c0c0c0;
  margin-bottom: 0;
  margin-top: 20px;
  font-weight: 400;
  line-height: 100%;
}

.stats p b {
  font-size: 20px;
  font-weight: 500;
}

.stats p a {
  color: #c0c0c0;
}

.stats p a:hover {
  color: var(--brand_1);
}

.stats svg {
  position: absolute;
  bottom: 15px;
  right: 20px;
  fill: var(--brand_1);
  width: 30px;
  height: auto;
}

.stats__form {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  position: relative;
  width: 100%;
  margin-top: 10px;
}

.stats__form input {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 24px;
  background-color: transparent;
  color: var(--text_1);
  font-size: 18px;
  border: none;
  padding: 0 50px 0 0;
}

.stats__form button {
  position: absolute;
  z-index: 2;
  right: 0;
  top: 0;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: flex-end;
  height: 24px;
  color: var(--brand_1);
  font-size: 14px;
  text-transform: uppercase;
  font-weight: 500;
}

.stats__form button svg {
  position: relative;
  width: 18px;
  height: auto;
  top: auto;
  bottom: auto;
  right: auto;
  left: auto;
  transition: fill 250ms ease;
}

.stats__form button:hover {
  color: var(--text_1);
}

.stats__form button:hover svg {
  fill: var(--brand_1);
}

.stats--green svg {
  fill: var(--brand_1);
}

.stats--purple svg {
  fill: var(--brand);
}

@media (min-width: 991px) {
  .stats {
    margin-top: 30px;
  }
}

/*==============================
  Dashbox
==============================*/
.dashbox {
  background-color: #16151a;
  margin-top: 20px;
  border-radius: var(--br-3);
  overflow: hidden;
  border: 1px solid #222227;
}

.dashbox__title {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  padding: 20px;
  border-bottom: 1px solid #222227;
}

.dashbox__title h3 {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  color: var(--text_1);
  font-weight: 400;
  font-size: 20px;
  line-height: 100%;
  margin-bottom: 0;
}

.dashbox__title h3 svg {
  fill: var(--brand_1);
  margin-right: 10px;
  width: 22px;
  height: auto;
}

.dashbox__title h3 span {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 18px;
  min-width: 18px;
  color: var(--text_1);
  padding: 0 5px;
  border-radius: var(--br-5);
  font-size: 10px;
  pointer-events: none;
  background-color: var(--brand_1);
  margin-bottom: auto;
  margin-left: 5px;
}

.dashbox__wrap {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
}

.dashbox__more {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  font-size: 13px;
  margin-left: 15px;
  color: #c0c0c0;
}

.dashbox__more:hover {
  color: var(--brand_1);
}

.dashbox__refresh {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 22px;
  height: 30px;
}

.dashbox__refresh svg {
  fill: #c0c0c0;
  width: 18px;
  height: auto;
  transition: fill 250ms ease;
}

.dashbox__refresh:hover svg {
  fill: var(--brand_1);
}

.dashbox__table-wrap {
  position: relative;
  display: block;
  width: 100%;
  overflow: auto;
  padding: 20px 20px 5px;
}

.dashbox__table-scroll {
  width: 100%;
  display: block;
}

.dashbox__list-wrap {
  padding: 20px;
  position: relative;
  display: block;
  width: 100%;
}

.dashbox__scroll {
  position: relative;
  max-height: 320px;
  width: 100%;
  overflow: hidden;
  padding-right: 14px;
}

.dashbox__note {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
  padding-bottom: 10px;
  margin-bottom: 10px;
  border-bottom: 1px solid #222227;
  height: 58px;
}

.dashbox__note:last-child {
  height: 48px;
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.dashbox__note svg {
  width: 20px;
  height: auto;
  margin-right: 10px;
  fill: #c0c0c0;
}

.dashbox__note p {
  color: #c0c0c0;
  font-size: 16px;
  line-height: 20px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
  width: calc(100% - 30px);
  display: block;
  margin-bottom: 0;
  font-weight: 400;
}

.dashbox__note p a {
  color: var(--text_1);
  text-decoration: underline;
}

.dashbox__note p a:hover {
  color: var(--text_1);
  text-decoration: none;
}

.dashbox__note span {
  padding: 0;
  font-size: 13px;
  color: #c0c0c0;
  position: relative;
  background-color: transparent;
  top: auto;
  left: auto;
  display: block;
  width: 100%;
  margin-top: 5px;
}

.dashbox__note--succ svg {
  fill: var(--brand_1);
}

.dashbox__note--fail svg {
  fill: #eb5757;
}

.dashbox__note--info svg {
  fill: #c0c0c0;
}

.dashbox__note--gift svg {
  fill: var(--brand);
}

@media (min-width: 991px) {
  .dashbox {
    margin-top: 30px;
  }
}

/*==============================
  Feature
==============================*/
.feature {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  position: relative;
  overflow: hidden;
  margin-top: 20px;
  padding-bottom: 20px;
  border-bottom: 1px solid #222227;
}

.feature__icon {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 46px;
  height: 46px;
  border-radius: var(--br-3);
  background-color: rgba(37, 165, 106, 0.15);
}

.feature__icon svg {
  fill: var(--brand_1);
  width: auto;
  height: 26px;
}

.feature__icon--purple {
  background-color: rgba(128, 81, 212, 0.15);
}

.feature__icon--purple svg {
  fill: var(--brand);
}

.feature__icon--red {
  background-color: rgba(235, 87, 87, 0.15);
}

.feature__icon--red svg {
  fill: #eb5757;
}

.feature__icon--blue {
  background-color: rgba(47, 128, 237, 0.15);
}

.feature__icon--blue svg {
  fill: #2f80ed;
}

.feature__title {
  font-size: 18px;
  font-weight: 400;
  color: var(--text_1);
  margin-bottom: 0;
  margin-left: 15px;
}

.feature__text {
  display: block;
  width: 100%;
  font-size: 16px;
  line-height: 26px;
  color: #c0c0c0;
  margin-bottom: 0;
  margin-top: 15px;
}

.feature--last {
  border-bottom: none;
  padding-bottom: 0;
}

@media (min-width: 991px) {
  .feature {
    margin-top: 30px;
    padding-bottom: 0;
    border-bottom: none;
  }
}

@media (min-width: 1200px) {
  .feature {
    margin-top: 40px;
  }
}

/*==============================
  Step
==============================*/
.step {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  position: relative;
  overflow: hidden;
  width: 100%;
  margin-top: 20px;
  padding: 20px;
  border-radius: var(--br-3);
  background-color: #16151a;
  border: 1px solid #222227;
}

.step__number {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  border-radius: var(--br-3);
  width: 46px;
  height: 46px;
  line-height: 100%;
  font-weight: 500;
  font-size: 20px;
  color: var(--brand_1);
  background-color: rgba(37, 165, 106, 0.15);
}

.step__title {
  font-size: 18px;
  font-weight: 400;
  color: var(--text_1);
  margin-bottom: 0;
  margin-left: 15px;
}

.step__text {
  display: block;
  width: 100%;
  font-size: 16px;
  line-height: 26px;
  color: #c0c0c0;
  margin-bottom: 0;
  margin-top: 15px;
}

@media (min-width: 991px) {
  .step {
    margin-top: 30px;
  }
}

/*==============================
  Plan
==============================*/
.plan {
  display: block;
  margin-top: 20px;
  padding: 20px;
  border-radius: var(--br-3);
  background-color: #16151a;
  position: relative;
  overflow: hidden;
  border: 1px solid #222227;
}

.plan--red .plan__title {
  color: #eb5757;
}

.plan--red .plan__list li.green svg {
  fill: #eb5757;
}

.plan--red .plan__btn {
  color: #eb5757;
}

.plan--red .plan__btn:hover {
  background-color: #eb5757;
}

.plan--green .plan__title {
  color: var(--brand_1);
}

.plan--purple .plan__title {
  color: var(--brand);
}

.plan--purple .plan__list li.green svg {
  fill: var(--brand);
}

.plan--purple .plan__btn {
  color: var(--brand);
}

.plan--purple .plan__btn:hover {
  background-color: var(--brand);
}

.plan__title {
  position: relative;
  z-index: 2;
  font-size: 18px;
  color: var(--text_1);
  line-height: 100%;
  display: block;
  font-weight: 500;
  margin-bottom: 15px;
}

.plan__list {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
}

.plan__list li {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-bottom: 15px;
  font-size: 16px;
  color: #c0c0c0;
}

.plan__list li:last-child {
  margin-bottom: 0;
}

.plan__list li svg {
  width: 20px;
  height: auto;
  margin-right: 10px;
}

.plan__list li.red svg {
  fill: #c0c0c0;
}

.plan__list li.green {
  color: var(--text_1);
}

.plan__list li.green svg {
  fill: var(--brand_1);
}

.plan__price {
  position: relative;
  z-index: 2;
  font-weight: 500;
  font-size: 32px;
  color: var(--text_1);
  margin-bottom: 20px;
  padding-bottom: 15px;
  border-bottom: 1px solid #222227;
  display: block;
  line-height: 100%;
}

.plan__price span {
  font-size: 16px;
}

.plan__btn {
  width: 100%;
  min-width: 140px;
  height: 50px;
  border-radius: var(--br-3);
  background-color: #222227;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--brand_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 500;
  margin-top: 20px;
}

.plan__btn:hover {
  color: var(--text_1);
  background-color: var(--brand_1);
}

@media (min-width: 991px) {
  .plan {
    margin-top: 30px;
  }

  .plan__btn {
    margin-top: 30px;
  }
}

/*==============================
  Contacts
==============================*/
.contacts__list {
  margin-top: 20px;
}

.contacts__list li {
  margin-bottom: 15px;
}

.contacts__list li:last-child {
  margin-bottom: 0;
}

.contacts__list a {
  font-size: 16px;
  color: var(--text_1);
  font-weight: 400;
}

.contacts__list a:hover {
  color: var(--brand_1);
}

.contacts__social {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  width: 100%;
}

.contacts__social a {
  margin-top: 20px;
  margin-right: 15px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 30px;
  height: 30px;
  position: relative;
  transition-property: all;
}

.contacts__social a svg {
  width: 100%;
  height: auto;
}

.contacts__social a:last-child {
  margin-right: 0;
}

.contacts__social a:hover {
  opacity: 1 !important;
  -webkit-filter: grayscale(0) !important;
  filter: grayscale(0) !important;
}

.contacts__social:hover a {
  opacity: 0.7;
  -webkit-filter: grayscale(0.7);
  filter: grayscale(0.7);
}

@media (min-width: 991px) {
  .contacts__social {
    margin-top: 10px;
  }
}

/*==============================
  Cart
==============================*/
.cart {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  background-color: #16151a;
  width: 100%;
  padding: 0;
  border: 1px solid #222227;
  border-radius: var(--br-2);
  min-height: 400px;
  margin-top: 20px;
}

.cart__table {
  width: 100%;
  min-width: 600px;
}

.cart__table th {
  font-size: 14px;
  font-weight: 400;
  color: #c0c0c0;
  line-height: 100%;
  padding: 0 20px 10px 0;
}

.cart__table th:last-child {
  width: 24px;
  padding: 0 0 10px 0;
}

.cart__table td {
  font-size: 16px;
  font-weight: 400;
  color: var(--text_1);
  padding: 10px 20px 10px 0;
}

.cart__table td a {
  color: var(--text_1);
  font-weight: 400;
}

.cart__table td a:hover {
  color: var(--brand_1);
}

.cart__table td:last-child {
  width: 24px;
  padding: 10px 0;
}

.cart__table td:first-child {
  width: 100px;
}

.cart__img {
  width: 100px;
  height: auto;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  background-color: transparent;
  border-radius: var(--br-4);
  overflow: hidden;
}

.cart__img img {
  width: 100px;
  height: auto;
}

.cart__delete {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 18px;
  height: 18px;
}

.cart__delete svg {
  fill: #c0c0c0;
  width: 18px;
  height: auto;
  transition: 250ms ease;
}

.cart__delete:hover svg {
  fill: var(--brand_1);
}

.cart__price {
  font-size: 16px;
  color: #c0c0c0;
  font-weight: 500;
}

.cart__price span {
  font-weight: 400;
  font-size: 12px;
  text-decoration: line-through;
  margin-left: 5px;
  color: #eb5757;
}

.cart__info {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: flex-end;
  flex-wrap: wrap;
  width: 100%;
  margin-top: 10px;
  padding: 10px 20px 20px;
}

.cart__total {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
}

.cart__total p {
  font-size: 14px;
  color: #c0c0c0;
  margin-bottom: 10px;
}

.cart__total span {
  font-size: 28px;
  color: var(--text_1);
  line-height: 100%;
  font-weight: 500;
}

.cart__systems {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 24px;
  color: #c0c0c0;
  width: 100%;
  margin-top: 20px;
}

.cart__systems i {
  margin-right: 15px;
}

.cart__systems i:last-child {
  margin-right: 0;
}

.cart__promo {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  position: relative;
  width: 100%;
  margin-top: 20px;
}

.cart__promo .sign__btn {
  width: 80px;
  margin: 0;
  height: 40px;
  border-radius: var(--br-3);
}

.cart__promo .sign__input {
  width: calc(100% - 90px);
  height: 40px;
}

.cart__amount {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  background-color: #222227;
  height: 36px;
  border-radius: var(--br-3);
  padding: 0 10px;
}

.cart__amount input {
  width: 30px;
  height: 36px;
  border: none;
  text-align: center;
  background-color: transparent;
  font-size: 16px;
  color: var(--text_1);
  pointer-events: none;
}

.cart__amount button {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 36px;
}

.cart__amount button svg {
  width: 18px;
  height: auto;
  fill: #c0c0c0;
  transition: fill 250ms ease;
}

.cart__amount button:hover svg {
  fill: var(--brand_1);
}

.cart__table-wrap {
  position: relative;
  display: block;
  width: 100%;
  overflow: auto;
  padding: 20px 20px 10px;
}

.cart__table-scroll {
  width: 100%;
  display: block;
}

@media (min-width: 991px) {
  .cart {
    margin-top: 30px;
  }

  .cart__table-wrap {
    padding: 25px 20px 10px;
  }

  .cart__table th {
    padding: 0 20px 15px 0;
  }

  .cart__table th:last-child {
    padding: 0 0 15px 0;
  }

  .cart__total {
    order: 1;
  }

  .cart__systems {
    margin-top: 0;
    width: auto;
    order: 2;
    margin-right: auto;
    margin-left: 20px;
  }

  .cart__promo {
    width: 250px;
    margin-top: 0;
    order: 3;
  }
}

@media (min-width: 1200px) {
  .cart__systems {
    margin-left: 40px;
  }
}

/*==============================
  Article
==============================*/
.article {
  display: block;
  position: relative;
  width: 100%;
  margin-top: 20px;
}

.article--page {
  margin-top: 0;
}

.article__category {
  display: inline-flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 30px;
  min-width: 70px;
  width: auto;
  color: var(--text_1);
  font-size: 13px;
  background-color: #2f80ed;
  border-radius: var(--br-4);
  padding: 0 15px;
}

.article__category:hover {
  color: var(--text_1);
  background-color: var(--brand_1);
}

.article__date {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 13px;
  color: #c0c0c0;
  height: 30px;
}

.article__date svg {
  fill: #fff;
  width: 16px;
  height: auto;
  margin-right: 5px;
}

.article__place {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  font-size: 14px;
  color: #c0c0c0;
  min-height: 30px;
  width: 100%;
  margin-bottom: 10px;
}

.article__place svg {
  fill: #fff;
  width: 18px;
  height: auto;
  margin-right: 5px;
}

.article__place:hover {
  color: var(--brand_1);
}

.article__content {
  position: relative;
}

.article__content img {
  display: block;
  width: 100%;
  height: auto;
  margin-bottom: 20px;
  border-radius: var(--br-3);
}

.article__content iframe {
  display: block;
  width: 100%;
  height: 240px;
  margin-bottom: 20px;
  border-radius: var(--br-3);
  border: none;
}

.article__content h1,
.article__content h2,
.article__content h3,
.article__content h4,
.article__content h5,
.article__content h6 {
  font-weight: 400;
  color: var(--text_1);
  margin-bottom: 15px;
  line-height: 140%;
}

.article__content h1:last-child,
.article__content h2:last-child,
.article__content h3:last-child,
.article__content h4:last-child,
.article__content h5:last-child,
.article__content h6:last-child {
  margin-bottom: 0;
}

.article__content h1 {
  font-size: 30px;
}

.article__content h2 {
  font-size: 28px;
}

.article__content h3 {
  font-size: 24px;
}

.article__content h4 {
  font-size: 22px;
}

.article__content h5 {
  font-size: 18px;
}

.article__content h6 {
  font-size: 16px;
}

.article__content p {
  display: block;
  font-size: 16px;
  line-height: 26px;
  font-weight: 400;
  color: #c0c0c0;
  margin-bottom: 20px;
}

.article__content p b {
  font-weight: 600;
}

.article__content p a {
  color: var(--brand_1);
  text-decoration: underline;
}

.article__content p a:hover,
.article__content p a:focus {
  color: var(--brand_1);
  text-decoration: none;
}

.article__content p:last-child {
  margin-bottom: 0;
}

.article__content blockquote {
  display: block;
  position: relative;
  padding: 0 0 0 20px;
  font-size: 16px;
  line-height: 28px;
  color: var(--text_1);
  font-weight: 400;
  margin-bottom: 20px;
}

.article__content blockquote:before {
  content: '';
  position: absolute;
  display: block;
  top: 2px;
  bottom: 2px;
  left: 0;
  width: 3px;
  background-color: var(--brand_1);
  border-radius: var(--br-5);
}

.article__content blockquote:last-child {
  margin-bottom: 0;
}

.article__content ul {
  margin-bottom: 20px;
  display: block;
}

.article__content ul li {
  font-size: 16px;
  line-height: 28px;
  font-weight: 400;
  color: #c0c0c0;
  padding-left: 20px;
  position: relative;
}

.article__content ul li:before {
  content: '';
  position: absolute;
  display: block;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background-color: var(--brand_1);
  left: 0;
  top: 50%;
  margin-top: -2px;
}

.article__content ul:last-child {
  margin-bottom: 0;
}

.article__meta {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  width: 100%;
  margin-bottom: 20px;
}

.article__price {
  font-size: 30px;
  line-height: 100%;
  color: var(--text_1);
  display: block;
  width: 100%;
  font-weight: 500;
  margin-bottom: 15px;
}

.article__amount {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  background-color: #222227;
  height: 36px;
  border-radius: var(--br-3);
  padding: 0 10px;
  margin-bottom: 20px;
}

.article__amount input {
  width: 30px;
  height: 36px;
  border: none;
  text-align: center;
  background-color: transparent;
  font-size: 16px;
  color: var(--text_1);
  pointer-events: none;
}

.article__amount button {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 24px;
  height: 36px;
}

.article__amount button svg {
  width: 18px;
  height: auto;
  fill: #c0c0c0;
  transition: fill 250ms ease;
}

.article__amount button:hover svg {
  fill: var(--brand_1);
}

.article__buy {
  width: 180px;
  height: 50px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 500;
  padding: 0 25px;
  margin-bottom: 20px;
}

.article__buy svg {
  fill: #fff;
  width: 28px;
  height: auto;
  margin-right: 7px;
}

.article__buy:hover {
  background-color: #222227;
  color: var(--brand_1);
}

.article__artist {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  margin-bottom: 20px;
}

.article__artist img {
  height: auto;
  width: 200px !important;
  margin-right: 20px;
  border-radius: var(--br-3);
}

.article__artist div {
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
}

.article__artist div h1 {
  margin-bottom: 0;
}

.article__artist div span {
  font-size: 14px;
  color: #c0c0c0;
  display: block;
  margin-bottom: 20px;
}

@media (min-width: 576px) {
  .article__content iframe {
    height: 280px;
  }
}

@media (min-width: 991px) {
  .article {
    margin-top: 30px;
  }

  .article--page {
    margin-top: 0;
  }

  .article__content h1 {
    font-size: 36px;
  }

  .article__content h2 {
    font-size: 32px;
  }

  .article__content h3 {
    font-size: 28px;
  }

  .article__content h4 {
    font-size: 24px;
  }

  .article__content h5 {
    font-size: 20px;
  }

  .article__content h6 {
    font-size: 18px;
  }

  .article__content iframe {
    height: 400px;
  }

  .article__meta {
    margin-bottom: 25px;
  }

  .article__place {
    margin-bottom: 0;
    width: auto;
  }

  .article__artist {
    flex-direction: row;
  }

  .article__artist img {
    margin-bottom: 0 !important;
  }

  .article__artist div {
    width: calc(100% - 220px);
  }

  .article__artist div span {
    margin-bottom: 30px;
  }
}

@media (min-width: 1200px) {
  .article--page {
    margin-top: 30px;
  }

  .article__content iframe {
    height: 460px;
  }
}

/*==============================
  Share
==============================*/
.share {
  margin-top: 10px;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  width: 100%;
}

.share__link {
  margin-top: 20px;
  margin-right: 20px;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  padding: 0 15px;
  height: 30px;
  border-radius: var(--br-4);
  color: var(--text_1);
  font-size: 14px;
  background-color: var(--brand_1);
}

.share__link svg {
  fill: #fff;
  margin-right: 10px;
  margin-top: 1px;
}

.share__link:last-child {
  margin-right: 0;
}

.share__link--fb {
  background-color: #3b5998;
}

.share__link--tw {
  background-color: #55acee;
}

.share__link--vk {
  background-color: #4c6c91;
}

.share__link:hover {
  background-color: var(--brand_1);
  color: var(--text_1);
}

/*==============================
  Comments
==============================*/
.comments {
  margin-top: 50px;
  padding-top: 50px;
  border-top: 1px solid #222227;
}

.comments__title {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  margin-bottom: 30px;
}

.comments__title h4 {
  color: var(--text_1);
  font-weight: 400;
  font-size: 24px;
  line-height: 100%;
  margin-bottom: 0;
  position: relative;
}

.comments__title span {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: auto;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: var(--br-5);
  background-color: var(--brand_1);
  font-size: 12px;
  color: var(--text_1);
  font-weight: 400;
  margin-left: 10px;
}

.comments__title--tabs li {
  position: relative;
  margin-right: 20px;
}

.comments__title--tabs li:last-child {
  margin-right: 0;
}

.comments__title--tabs a {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  opacity: 0.5;
  transition: opacity 250ms linear;
}

.comments__title--tabs a:hover {
  opacity: 1;
}

.comments__title--tabs a.active {
  opacity: 1;
  cursor: default;
}

.comments__autor {
  display: block;
  position: relative;
  padding-left: 55px;
  margin-bottom: 20px;
}

.comments__avatar {
  position: absolute;
  top: 0;
  left: 0;
  width: 40px;
  border-radius: var(--br-4);
}

.comments__name {
  display: block;
  font-size: 16px;
  color: var(--text_1);
  line-height: 20px;
  font-weight: 400;
}

.comments__time {
  display: block;
  font-size: 12px;
  color: #c0c0c0;
  line-height: 20px;
  font-weight: 400;
}

.comments__text {
  display: block;
  margin-bottom: 0;
  color: #c0c0c0;
  font-size: 16px;
  line-height: 26px;
  padding: 20px 0;
  position: relative;
  border-top: 1px solid #222227;
  border-bottom: 1px solid #222227;
}

.comments__text b {
  font-weight: 600;
}

.comments__text a {
  color: var(--brand_1);
}

.comments__text a:hover {
  color: var(--brand_1);
  text-decoration: underline;
}

.comments__text span {
  display: block;
  margin-bottom: 20px;
  padding: 20px;
  position: relative;
  min-height: 80px;
  border-radius: var(--br-3);
  color: #c0c0c0;
  background-color: #222227;
}

.comments__item {
  margin-bottom: 20px;
  display: block;
  background-color: #16151a;
  border: 1px solid #222227;
  padding: 20px;
  border-radius: var(--br-3);
}

.comments__item--answer,
.comments__item--quote {
  margin-left: 20px;
}

.comments__actions {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: center;
  padding: 20px 0 0;
  position: relative;
}

.comments__actions button {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-right: 20px;
  height: 20px;
}

.comments__actions button span {
  font-size: 12px;
  color: #c0c0c0;
  text-transform: uppercase;
  transition: color 250ms ease;
  display: none;
}

.comments__actions button svg {
  width: 16px;
  height: auto;
  fill: #c0c0c0;
  transition: fill 250ms ease;
}

.comments__actions button:hover span {
  color: var(--text_1);
}

.comments__actions button:hover svg {
  fill: var(--brand_1);
}

.comments__actions button:last-child {
  margin-right: 0;
}

.comments__actions button:last-child svg {
  width: 18px;
}

.comments__rate {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  position: absolute;
  left: 0;
  top: 20px;
}

.comments__rate button {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: #c0c0c0;
  font-size: 14px;
  margin-right: 24px;
  position: relative;
  height: 20px;
}

.comments__rate button svg {
  width: 16px;
  height: auto;
  opacity: 0.6;
  transition: 250ms ease;
  margin-top: 1px;
}

.comments__rate button:last-child {
  margin-right: 0;
}

.comments__rate button:last-child svg {
  margin-left: 8px;
  fill: #eb5757;
  width: 16px;
}

.comments__rate button:first-child svg {
  margin-right: 8px;
  fill: var(--brand_1);
  width: 16px;
}

.comments__rate button:first-child:before {
  content: '';
  position: absolute;
  display: block;
  left: 100%;
  margin-left: 12px;
  width: 1px;
  height: 16px;
  background-color: #222227;
  top: 50%;
  transform: translateY(-50%);
}

.comments__rate button:hover {
  color: var(--text_1);
}

.comments__rate button:hover svg {
  opacity: 1;
}

.comments__form {
  border-radius: var(--br-3);
  padding: 20px;
  border: 1px solid #222227;
  background-color: #16151a;
  margin-top: 30px;
}

.comments__form .row {
  margin-left: -10px;
  margin-right: -10px;
}

.comments__form .col-12 {
  padding-left: 10px;
  padding-right: 10px;
}

.comments__form .sign__btn {
  margin: 0;
}

@media (min-width: 576px) {
  .comments__actions button span {
    display: block;
    margin-left: 6px;
  }

  .comments__form .sign__btn {
    width: 180px;
  }
}

@media (min-width: 991px) {
  .comments {
    margin-top: 60px;
    padding-top: 60px;
  }

  .comments__item--answer,
  .comments__item--quote {
    margin-left: 30px;
  }

  .comments__title--tabs li {
    margin-right: 30px;
  }

  .comments__title--tabs li:last-child {
    margin-right: 0;
  }
}

/*==============================
  Footer
==============================*/
.footer {
  background-color: var(--level_0);
  padding: 30px 0 20px;
  position: relative;
  overflow: hidden;
}

.footer__logo {
  margin-top: 60px;
}

.footer__logo img {
  width: 100px;
  height: auto;
}

.footer__tagline {
  margin-top: 15px;
  display: block;
  font-size: 14px;
  line-height: 24px;
  color: #c0c0c0;
  margin-bottom: 0;
}

.footer__links {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  margin-top: 5px;
}

.footer__links a {
  display: inline-flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-top: 10px;
  color: #c0c0c0;
  font-size: 16px;
}

.footer__links a svg {
  width: 20px;
  height: auto;
  fill: var(--brand_1);
  margin-right: 10px;
}

.footer__links a:hover {
  color: var(--brand_1);
}

.footer__social {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  width: 100%;
}

.footer__social a {
  margin-top: 20px;
  margin-right: 15px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 30px;
  height: 30px;
  position: relative;
  transition-property: all;
}

.footer__social a svg {
  width: 100%;
  height: auto;
}

.footer__social a:last-child {
  margin-right: 0;
}

.footer__social a:hover {
  opacity: 1 !important;
  -webkit-filter: grayscale(0) !important;
  filter: grayscale(0) !important;
}

.footer__social:hover a {
  opacity: 0.6;
  -webkit-filter: grayscale(0.6);
  filter: grayscale(0.6);
}

.footer__content {
  border-top: 1px solid var(--level_1);
  display: flex;
  justify-content: space-between;
}

.footer__wrap {
  border-top: 1px solid var(--level_1);
  padding-top: 16px;
}

.footer__policy-nav {
  display: flex;
  align-items: center;
  padding: 8px 0;
  font-size: 14px;
  line-height: 1.4;
}

.footer__policy-nav a {
  color: var(--text_2);
  margin-right: 16px;
}

.footer__policy-nav a:last-child {
  margin-right: 0;
}

.footer__policy-nav a:hover {
  color: var(--brand_1);
}

.footer__legal {
  font-size: 12px;
  line-height: 1.4;
  color: var(--level_4);
  padding: 6px 0;
}

.footer__bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  line-height: 1.4;
  color: var(--level_4);
  padding: 6px 0;
}

@media (max-width: 990px) {
  .footer__policy-nav {
    flex-direction: column;
    align-items: flex-start;
  }
  .footer__policy-nav a {
    margin-right: 0;
    margin-bottom: 8px;
  }
  .footer__policy-nav a:last-child {
    margin-bottom: 0;
  }
}

.footer__copyright {
  display: block;
  font-size: 15px;
  color: var(--text_3);
  margin-top: 20px;
}

.footer__copyright a {
  color: var(--text_1);
}

.footer__copyright a:hover {
  color: var(--brand_1);
}

.footer__info {
  display: block;
  font-size: 13px;
  color: var(--text_3);
  margin-top: 20px;
  opacity: 0.6;
}

.footer__title {
  display: block;
  margin-top: 30px;
  font-size: 16px;
  color: var(--text_1);
  margin-bottom: 15px;
}

.footer__nav {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
}

.footer__nav a {
  font-size: 15px;
  line-height: 24px;
  margin-bottom: 10px;
  color: #c0c0c0;
}

.footer__nav a:last-child {
  margin-bottom: 0;
}

.footer__nav a:hover {
  color: var(--brand_1);
}

@media (min-width: 576px) {
  .footer {
    padding: 30px 15px 20px;
  }
}

@media (min-width: 991px) {
  .footer {
    padding: 20px 15px 25px;
  }

  .footer__content {
    padding-top: 25px;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    width: 100%;
  }

  .footer__logo {
    margin-top: 50px;
  }

  .footer__title {
    margin-top: 50px;
  }

  .footer__social {
    width: auto;
    order: 2;
  }

  .footer__social a {
    margin-top: 0;
  }

  .footer__copyright {
    margin-top: 0;
    order: 1;
  }
}

@media (min-width: 1200px) {
  .footer {
    /* по той же линии, что и содержимое страницы */
    padding-left: 260px;
    padding-right: 40px;
  }

  .footer.wide {
    padding-left: 40px;
    padding-right: 40px;
  }

  .footer.day {
    padding-left: 360px;
    padding-right: 40px;
  }

  .footer.wide {
    padding-left: 40px;
    padding-right: 40px;
  }

  .footer__social {
    display: inline-flex;
    width: auto;
  }
}

/*==============================
  Sign
==============================*/
.sign {
  display: block;
  position: relative;
  margin-bottom: 80px;
}

.mb-0 {
  margin-bottom: 0px;
}

.sign .hero__title {
  margin: 50px 0 40px 0;
}

.sign .hero__title.mb0 {
  margin: 50px 0 0 0;
}

.sign__content {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: auto;
  padding: 0;
}

.sign__form {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  justify-content: space-between;
  position: relative;
  width: 100%;
  border: 0;
}

.sign__form--contacts,
.sign__form--profile,
.sign__form--cart {
  margin-top: 20px;
  max-width: 100%;
  padding: 20px 20px 5px;
  align-items: flex-start;
}

.sign__form--contacts .sign__btn,
.sign__form--profile .sign__btn,
.sign__form--cart .sign__btn {
  margin: 0 0 15px;
}

.sign__form--contacts .row,
.sign__form--profile .row,
.sign__form--cart .row {
  margin-left: -10px;
  margin-right: -10px;
}

.sign__form--contacts .col-12,
.sign__form--profile .col-12,
.sign__form--cart .col-12 {
  padding-left: 10px;
  padding-right: 10px;
}

.sign__form--profile .sign__btn {
  margin: 5px 0 15px;
}

.sign__logo {
  display: block;
  margin-bottom: 30px;
}

.sign__logo a {
  max-width: 100%;
  width: auto;
}

.sign__logo img {
  width: 100px;
}

.sign__title {
  font-size: 16px;
  font-weight: 500;
  color: var(--text_1);
  margin-bottom: 20px;
}

.sign__label {
  font-weight: 400;
  font-size: 14px;
  color: #c0c0c0;
  margin-bottom: 5px;
  padding-left: 20px;
}

.sign__label b {
  font-weight: 600;
  color: var(--text_1);
}

.sign__input {
  background-color: #222227;
  border: 1px solid transparent;
  border-radius: var(--br-3);
  height: 46px;
  position: relative;
  color: var(--text_1);
  font-size: 16px;
  width: 100%;
  padding: 0 20px;
}

.sign__input:focus {
  border-color: var(--brand_1);
}

.sign__select {
  background: url("../img/arrow2.svg") no-repeat center right 20px #222227;
  background-size: 18px auto;
  border: 1px solid transparent;
  border-radius: var(--br-3);
  height: 46px;
  position: relative;
  color: var(--text_1);
  font-size: 16px;
  width: 100%;
  padding: 0 20px;
  cursor: pointer;
}

.sign__select:focus {
  border-color: var(--brand_1);
}

.sign__textarea {
  background-color: #222227;
  border: 1px solid transparent;
  border-radius: var(--br-3);
  height: 144px;
  position: relative;
  color: var(--text_1);
  font-size: 16px;
  width: 100%;
  padding: 15px 20px;
  resize: none;
}

.sign__textarea:focus {
  border-color: var(--brand_1);
}

.sign__group {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-end;
  flex-wrap: wrap;
  position: relative;
  margin: 10px 0 10px 0;
  width: 100%;
}

.sign__group--row .sign__label {
  padding-left: 0;
}

.sign__group--checkbox {
  width: 100%;
  text-align: left;
}

.sign__group--checkbox input:not(:checked),
.sign__group--checkbox input:checked {
  position: absolute;
  left: -9999px;
}

.sign__group--checkbox input:not(:checked)+label,
.sign__group--checkbox input:checked+label {
  font-size: 15px;
  color: var(--text_2);
  font-weight: normal;
  position: relative;
  cursor: pointer;
  padding-left: 35px;
  line-height: 1.4;
  margin: 0;
}

.sign__group--checkbox input:not(:checked)+label a,
.sign__group--checkbox input:checked+label a {
  color: var(--text_3);
}

.sign__group--checkbox input:not(:checked)+label a:hover,
.sign__group--checkbox input:checked+label a:hover {
  color: var(--text_2);
}

.sign__group--checkbox input:not(:checked)+label:before,
.sign__group--checkbox input:checked+label:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 20px;
  height: 20px;
  box-sizing: border-box;
  background-color: var(--level_0);
  border: 2px solid var(--level_3);
  border-radius: var(--br-5);
}

.sign__group--checkbox input:not(:checked)+label:after,
.sign__group--checkbox input:checked+label:after {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 20px;
  height: 20px;
  text-align: center;
  transition: 250ms ease;
  background: #4557ED url("../img/checkmark_white.svg") no-repeat center/20px auto;
  border-radius: var(--br-5);
}

.sign__group--checkbox input:not(:checked)+label:after {
  opacity: 0;
  transform: scale(0);
}

.sign__group--checkbox input:checked+label:after {
  opacity: 1;
  transform: scale(1);
}

.sign__group--checkbox label::-moz-selection {
  background: transparent;
  color: #c0c0c0;
}

.sign__group--checkbox label::selection {
  background: transparent;
  color: #c0c0c0;
}

.sign__btn {
  width: 100%;
  height: 60px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 16px;
  position: relative;
  z-index: 2;
  font-weight: 400;
  margin: 15px auto;
}

.sign__text {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;
  font-size: 16px;
  line-height: 140%;
  width: 100%;
  margin-top: 20px;
  text-align: center;
}

.divider {
  display: block;
  width: 100%;
  height: 1px;
  margin: 10px 0 30px 0;
  border: 1px solid var(--level_1);
}

.sign__social {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  margin-bottom: 15px;
  margin-top: 15px;
}

.sign__social-1 {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  margin-bottom: 15px;
}

.sign__social-1 a img {
  position: absolute;
  left: 15px;
}

.sign__social a {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 60px;
  width: 100%;
  border-radius: var(--br-3);
  color: var(--text_1);
  font-size: 16px;
  margin-bottom: 20px;
  background-color: var(--level_0);
  border: 1px solid var(--level_1);
}

.sign__social a svg {
  height: auto;
  fill: #fff;
  transition: 250ms ease;
}

.sign__social a.fb {
  background-color: var(--level_1);
}

.sign__social a.fb svg {
  width: 10px;
}

.sign__social a.gl {
  background-color: var(--level_1);
}

.sign__social a.gl svg {
  width: 18px;
}

.sign__social a.tw {
  background-color: var(--level_1);
}

.sign__social a.tw svg {
  width: 20px;
}

.sign__social a:hover {
  background-color: transparent;
}

.sign__social a:hover.fb svg {
  fill: #3b5999;
}

.sign__social a:hover.gl svg {
  fill: #df4a32;
}

.sign__social a:hover.tw svg {
  fill: #1da1f2;
}

.sign__value {
  font-size: 24px;
  color: var(--text_1);
  display: block;
  font-weight: 500;
  margin-left: 10px;
}

.sign__radio {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  width: 100%;
  margin-top: 5px;
}

.sign__radio li {
  position: relative;
  overflow: hidden;
  margin-bottom: 10px;
}

.sign__radio li:last-child {
  margin-bottom: 0;
}

.sign__radio input:not(:checked),
.sign__radio input:checked {
  position: absolute;
  left: -9999px;
}

.sign__radio label {
  display: block;
  margin: 0;
  position: relative;
  font-weight: 400;
  cursor: pointer;
  font-size: 16px;
  color: #c0c0c0;
  line-height: 24px;
  padding-left: 32px;
  transition: 250ms ease;
}

.sign__radio label:before {
  content: '';
  display: block;
  position: absolute;
  width: 20px;
  height: 20px;
  border: 6px solid #222227;
  background-color: transparent;
  border-radius: 50%;
  left: 0;
  top: 2px;
  transition: 250ms ease;
}

.sign__radio label:hover {
  color: var(--text_1);
}

.sign__radio input:checked+label {
  color: var(--text_1);
}

.sign__radio input:checked+label:before {
  border-color: var(--brand_1);
}

@media (min-width: 576px) {
  .sign__form {
    padding: 0px;
  }

  .sign__form--contacts,
  .sign__form--profile,
  .sign__form--cart {
    padding: 20px 20px 5px;
  }

  .sign__logo {
    margin-bottom: 40px;
  }
}

@media (min-width: 991px) {

  .sign__form--contacts,
  .sign__form--profile {
    margin-top: 30px;
  }

  .sign__form--contacts .sign__btn,
  .sign__form--profile .sign__btn {
    margin: 10px 0 15px;
  }

  .sign__form--cart {
    margin-top: 30px;
  }

  .sign__form--cart .sign__btn {
    margin-top: 10px;
  }

  .sign__content {
    padding: 0;
  }
}

@media (min-width: 992px) {
  .sign__form--profile .sign__btn {
    width: 180px;
  }
}

.banner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-top: 0px;
  padding: 20px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
  color: var(--text_1);
  text-align: center;
}

.banner-steps {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-top: 0px;
  padding: 30px 30px 15px 30px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
  color: var(--text_1);
  text-align: left;
}

.banner-steps {
  font-size: 18px;
  font-weight: 500;
  line-height: 130%;
}

.custom-counter {
  margin: 0;
  padding: 0;
  list-style-type: none;
}

.custom-counter li {
  counter-increment: step-counter;
  margin-bottom: 15px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
}

.custom-counter .stephere::before {
  content: counter(step-counter);
  margin-right: 15px;
  height: 40px;
  width: 45px;
  background-color: var(--brand_1);
  color: var(--btn-text);
  padding: 8px 10px 0 16px;
  border-radius: var(--br-2);
}

.custom-counter .stepany::before {
  content: counter(step-counter);
  margin-right: 15px;
  height: 40px;
  width: 45px;
  background-color: var(--level_0);
  color: var(--text_3);
  padding: 8px 10px 0 16px;
  border-radius: var(--br-2);
}

.stepany {
  color: var(--text_3);
}

.stephere {
  color: var(--text_1);
}

.join-banner {
  padding-top: 20px;
}

.join-banner h3 {
  padding-top: 10px;
}

.sign__banner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-top: 120px;
  padding: 40px 20px 20px 20px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
  color: var(--text_1);
  text-align: center;
}

.sign__banner.chart {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin-top: 0px;
  padding: 20px;
  background-color: var(--level_1);
  border-radius: var(--br-2);
}

.sign__banner img {
  margin-bottom: 20px;
}

.sign__banner a h2 {
  color: var(--link_2);
  transition: 250ms ease;
}

.sign__banner a h2:hover {
  color: var(--link_2_hover);
}

@media (max-width: 1200px) {

  .sign__banner,
  .sign__banner.chart {
    margin-top: 0px;
  }
}

.result-indicator {
  display: block;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background-color: var(--brand_1);
  margin: 20px 0 20px 0;
}

/*==============================
  Page 404
==============================*/
.page-404 {
  display: block;
  position: relative;
}

.page-404__wrap {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: auto;
  padding: 20px 0 0;
}

.page-404__content {
  background-color: #16151a;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  border-radius: var(--br-3);
  padding: 20px;
  position: relative;
  width: 100%;
  max-width: 420px;
  border: 1px solid #222227;
}

.page-404__title {
  position: relative;
  color: var(--text_1);
  line-height: 100%;
  font-size: 100px;
  margin-bottom: 10px;
  font-weight: 500;
}

.page-404__text {
  text-align: center;
  display: block;
  width: 100%;
  color: #c0c0c0;
  font-size: 16px;
  line-height: 24px;
  margin-bottom: 30px;
}

.page-404__btn {
  width: 100%;
  height: 50px;
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  color: var(--text_1);
  font-size: 14px;
  position: relative;
  z-index: 2;
  text-transform: uppercase;
  font-weight: 500;
  margin: 0 auto;
}

.page-404__btn:hover {
  color: var(--text_1);
  background-color: #222227;
}

@media (min-width: 576px) {
  .page-404__content {
    padding: 40px;
  }
}

@media (min-width: 991px) {
  .page-404__wrap {
    padding: 30px 0 0;
  }
}

/*==============================
  Modal
==============================*/
.modal {
  position: relative;
  display: block;
  background-color: var(--level_1);
  border-radius: var(--br-2);
  border: 1px solid var(--level_1);
  margin: 40px auto;
  width: 100%;
  max-width: 960px;
  min-width: 375px;
  padding: 20px;
  overflow: hidden;
}

.modal__icon {
  display: none;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  position: absolute;
  bottom: 15px;
  right: 15px;
  pointer-events: none;
  opacity: 0.35;
}

.modal__icon svg {
  width: 70px;
  height: auto;
  fill: #c0c0c0;
}

.modal__icon--green svg {
  fill: var(--brand_1);
}

.modal__icon--red svg {
  fill: #eb5757;
}

.modal__icon--purple svg {
  fill: var(--brand);
}

.modal h3 {
  width: 100%;
  padding-bottom: 20px;
}

.modal--form {
  padding: 20px 20px 5px;
}

.modal--info {
  background-color: var(--level_1);
  padding: 20px;
  border-radius: var(--br-2);
  border: 1px solid var(--level_2);
}

.modal--info .modal__icon {
  display: flex;
}

.modal--info .sign__text {
  padding-right: 70px;
}

.modal .mfp-close {
  display: none;
}

.modal__close {
  position: absolute;
  top: 30px;
  right: 40px;
}

@media (max-width: 990px) {
  .close-button.modal__close {
    position: absolute;
    top: 0px;
    right: 20px;
  }
}

.modal__close svg {
  fill: #c0c0c0;
  opacity: 0.6;
  transition: 0.5s ease;
  height: auto;
  width: 24px;
}

.modal__close:hover svg {
  opacity: 1;
  fill: var(--level_5);
}

@media (min-width: 991px) {
  .modal {
    padding: 40px;
  }

  .modal__icon {
    bottom: 30px;
    right: 30px;
  }

  .modal--form {
    padding: 60px;
  }

  .modal--form .modal__close {
    top: 30px;
    right: 40px;
  }

  .modal--form .sign__btn {
    margin-top: 30px;
  }

  .modal--info {
    padding: 40px 40px 20px;
  }

  .modal--info .modal__close {
    top: 30px;
    right: 40px;
  }
}

.mfp-bg {
  background: rgba(0, 0, 0, 0.65);
}

/* Окно без анимации: подложка и само окно появляются сразу.
   В базовом стиле магнифика у подложки opacity 0.8 — вместе с
   полупрозрачным фоном затемнение получалось двойным, поэтому
   прозрачность задаётся только цветом. */
.modal-plain.mfp-bg {
  opacity: 1;
  transition: none;
}

.modal-plain.mfp-wrap .mfp-content,
.modal-plain .zoom-anim-dialog {
  opacity: 1;
  transform: none;
  transition: none;
}

.mfp-container {
  padding: 0 15px !important;
}

.my-mfp-zoom-in .zoom-anim-dialog {
  opacity: 0;
  transition: all 0.4s ease-in-out;
  transform: scale(0.8);
}

.my-mfp-zoom-in.mfp-ready .zoom-anim-dialog {
  opacity: 1;
  transform: scale(1);
}

.my-mfp-zoom-in.mfp-ready.mfp-bg {
  opacity: 1;
}

.my-mfp-zoom-in.mfp-removing .zoom-anim-dialog {
  transform: scale(0.8);
  opacity: 0;
}

.my-mfp-zoom-in.mfp-removing.mfp-bg {
  opacity: 0;
}

.my-mfp-zoom-in.mfp-bg {
  opacity: 0;
  transition: opacity 0.4s ease-out;
}

.mfp-iframe-scaler iframe {
  border-radius: var(--br-3);
  box-shadow: none;
  background-color: #16151a;
}

.mfp-iframe-holder .mfp-close {
  color: transparent;
  transition: opacity 0.4s;
}

.mfp-iframe-holder .mfp-close:before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 30px;
  height: 44px;
  background: url("../img/close.svg") no-repeat center;
  background-size: 30px auto;
}

.mfp-iframe-holder .mfp-content {
  max-width: 910px;
}

.mfp-figure::after {
  box-shadow: none;
  background-color: #222227;
}

.mfp-fade.mfp-bg {
  opacity: 0;
  transition: all 0.4s ease-in-out;
}

.mfp-fade.mfp-bg.mfp-ready {
  opacity: 1;
}

.mfp-fade.mfp-bg.mfp-ready .mfp-content {
  opacity: 1;
}

.mfp-fade.mfp-bg.mfp-removing {
  opacity: 0;
}

.mfp-fade.mfp-bg.mfp-removing .mfp-content {
  opacity: 0;
}

.mfp-fade.mfp-wrap .mfp-content {
  opacity: 0;
  transition: all 0.4s ease-in-out;
}

.mfp-fade.mfp-wrap.mfp-ready .mfp-content {
  opacity: 1;
}

.mfp-fade.mfp-wrap.mfp-removing .mfp-content {
  opacity: 0;
}

/*==============================
  Slider radio
==============================*/
.slider-radio {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  background-color: var(--level_0);
  padding: 5px 0;
  border-radius: var(--br-3);
  margin-top: 10px;
  position: relative;
  width: auto;
  z-index: 2;
}

.slider-radio label {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 35px;
  padding: 0 15px;
  font-size: 16px;
  color: var(--link_2);
  margin-bottom: 0;
  cursor: pointer;
  border-radius: var(--br-3);
  margin: 0 5px;
  position: relative;
  z-index: 100;
  transition: color 250ms;
  font-weight: 400;
}

.slider-radio label:hover {
  color: var(--link_2_hover);
}

.slider-radio .sliding-piece {
  border-radius: var(--br-3);
  background-color: var(--brand_1);
  z-index: 99;
}

.slider-radio input[type=radio]:checked+label {
  color: var(--btn-text);
  background-color: var(--brand_1);
}

@media (min-width: 991px) {
  .slider-radio {
    margin-left: 0;
    margin-top: 0;
    width: auto;
  }
}

/*==============================
  Select2
==============================*/
.select2-container {
  width: auto !important;
  margin-right: 30px;
}

.select2-container .select2-selection--single {
  height: 40px;
  background-color: var(--level_1);
  border-radius: 0;
  border: none;
}

.select2-container .select2-selection--single .select2-selection__rendered {
  line-height: 40px;
  color: var(--text_1);
  padding: 0 18px 0 0;
  font-size: 14px;
  font-weight: 400;
  transition: 250ms ease;
}

.select2-container .select2-selection--single[aria-expanded="true"] {
  background-color: transparent;
}

.select2-container .select2-selection--single:hover .select2-selection__rendered {
  color: var(--brand_1);
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 20px;
  width: 18px;
  top: 10px;
  right: 0;
  background: url("../img/arrow.svg") no-repeat center right;
  background-size: 18px auto;
  margin-top: 1px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
  display: none;
}

.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
  background-color: var(--brand_1);
  color: var(--text_1);
  white-space: nowrap;
}

.select2-container--default .select2-results__option--selected {
  color: var(--text_1);
  background-color: var(--brand_1);
  cursor: default;
}

.select2-container--default .select2-results__option[aria-selected="true"] {
  background-color: transparent;
  color: var(--brand_1);
  cursor: default;
}

.select2-container--default .select2-results__option--highlighted[aria-selected] {
  background-color: transparent;
  color: var(--brand_1);
}

.select2-results__option {
  padding: 0 0;
  font-size: 14px;
  font-weight: 400;
  color: var(--text_1);
  height: 40px;
  line-height: 40px;
  transition: 250ms ease;
}

.select2-dropdown {
  border-left: none;
  border-right: none;
  border-bottom: none;
  border-top: none;
  border-radius: 12px !important;
  min-width: 180px;
  padding: 5px 0 5px 15px;
  background-color: #222227;
}

.select2-container--open .select2-dropdown--below {
  border-bottom-left-radius: 12px;
  border-bottom-right-radius: 12px;
}

.select2-container--open .select2-dropdown--above {
  border-top-left-radius: 12px;
  border-top-right-radius: 12px;
}

/* Полоса дней недели на главной — навигация в «Питание» (макет 21.09).
   Сегодняшний день — тёмная «пилюля»: название дня белым сверху, число
   в белом круге снизу. Остальные дни — название сверху, число в круге
   с тонкой светлой обводкой. */
.week-nav {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  max-width: 460px;
  /* левый край пилюли — вровень с заголовком раздела */
  margin: 0;
}

/* Полоса дней ближе к заголовку раздела, чем к шапке: сверху отступ
   больше, снизу меньше. У заголовков разделов свой отступ сверху 80 px,
   поэтому у первого после полосы он уменьшен. */
.week-nav-section {
  margin-top: 32px;
}

.week-nav-section {
  /* у секций общий отступ снизу 60 px — полосе дней он велик */
  margin-bottom: 0;
}

/* .mtradio задаёт 40 px через !important, поэтому и здесь !important */
.week-nav-section + .row--grid .main__title,
.week-nav-section + .row--grid .main__title.mtradio {
  margin-top: 24px !important;
}

/* На телефоне семь дней не помещались в ширину экрана: полоса вылезала
   на 63 px, и страницу можно было утянуть вбок. Пилюли уже и без зазора,
   расстояние раздаётся поровну. */
@media (max-width: 990px) {
  .week-nav {
    gap: 0;
    justify-content: space-between;
    max-width: none;
  }

  .week-nav__day {
    width: 44px;
    padding: 12px 2px 2px;
    border-radius: 22px;
  }

  .week-nav__date {
    width: 40px;
    height: 40px;
    border-radius: 20px;
  }
}

.week-nav__day {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  width: 48px;
  height: 80px;
  /* по макету: до названия дня примерно шестая часть высоты */
  padding: 13px 3px 3px;
  border-radius: 24px;
  text-decoration: none;
  color: var(--text_2);
}

.week-nav__name {
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
}

.week-nav__date {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 42px;
  height: 42px;
  border-radius: 21px;
  border: 1px solid var(--level_1);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text_2);
}

.week-nav__day--today {
  background-color: var(--text_1);
}

.week-nav__day--today .week-nav__name {
  color: var(--level_0);
}

.week-nav__day--today .week-nav__date {
  background-color: var(--level_0);
  border-color: transparent;
  color: var(--text_1);
}

/* Якорь дня на странице «Питание»: места не занимает, но при переходе
   день не прячется под шапкой. */
.day-anchor {
  display: block;
  height: 0;
  scroll-margin-top: 80px;
}

/*==============================
  Scrollbar-track
==============================*/
.scrollbar-track-y {
  background: #222227 !important;
  top: 0px !important;
  bottom: 0px !important;
  height: auto !important;
  width: 4px !important;
  border-radius: 4px !important;
  right: 0px !important;
  overflow: hidden;
}

.scrollbar-thumb-y {
  background: var(--brand_1) !important;
  width: 4px !important;
  border-radius: 4px !important;
}

.scrollbar-track-x {
  background: #222227 !important;
  left: 0px !important;
  right: 0px !important;
  height: 4px !important;
  width: auto !important;
  border-radius: 4px !important;
  bottom: 0px !important;
  overflow: hidden;
}

.scrollbar-thumb-x {
  background: var(--brand_1) !important;
  height: 4px !important;
  border-radius: 4px !important;
}

/*==============================
  Theme Switch
==============================*/

.switch-wrapper {
  position: fixed;
  z-index: 999;
  bottom: 10px;
  left:10px;
}

.switch {
  display: inline-block;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  cursor: pointer;
  margin: 0 20px 0 0;
}

.switch__input {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0; 
}

.switch__in {
  position: relative;
  display: inline-block;
  border: 0
  border-radius: 25px;
  transition: all .2s; 
}

.switch__box {
  position: relative;
  display: block;
  width: 45px;
  height: 45px;
  background: transparent;
  border-radius: 25px;
  transition: all .2s; 
}

.switch__icon {
  position: absolute;
  top: 25px;
  -webkit-transform: translateY(-50%);
          transform: translateY(-50%);
  font-size: 0;
  transition: opacity .2s; 
}

.switch__icon .icon {
  width: 20px;
  height: 20px;
  fill: var(--level_6); 
}

.switch__icon_light {
  left: 15px; 
}

.switch__icon_dark {
  left: 15px;
  opacity: 0; 
}

.switch__input:checked + .switch__in {
  border-color: transparent; 
}

.switch__input:checked + .switch__in .switch__box {
  background: transparent; 
}

.switch__input:checked + .switch__in .switch__box:before {
  width: 10px;
  height: 20px;
  -webkit-transform: translate(50px, -50%);
          transform: translate(50px, -50%);
  border-radius: var(--br-1);
}

.switch__input:checked + .switch__in .switch__icon_light {
  opacity: 0; 
}

.switch__input:checked + .switch__in .switch__icon_dark {
  opacity: 1; 
}

@media (hover: hover) {
  .switch:hover {
    opacity: 1; } 
}

/* Заголовок секции формы (макет «Параметры клиента», 2026-09-18).
   Во всю ширину: форма — flex-сетка. */
.form-section {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 24px 0 16px;
  /* Заголовок секции формы — H3 (решение 12.10). */
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--text_1);
}

.form-section:first-child {
  margin-top: 0;
}

.form-section__icon {
  flex: 0 0 20px;
}

/* Пояснение варианта в выпадающем списке анкеты активности —
   мелкой серой строкой под названием. */
.option-title {
  display: block;
}

.option-hint {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  line-height: 140%;
  color: var(--text_2);
  white-space: normal;
}

/* Подсказка «Выберите …» — текст поля, пока ничего не выбрано, а не
   вариант ответа: в выпадающем списке её не показываем (макет 18.09). */
.multiselect-container .option-placeholder {
  display: none !important;
}

/*=======================  Кабинет эксперта: «Мои клиенты»
==============================*/
/* Таблица «Мои клиенты» по макету 10.10. Колонок десять, горизонтального
   скролла нет: второй, третий и предпоследний столбцы тянутся, остальные
   не шире 100 и при нехватке места ужимаются. Контейнер — серая подложка
   с полем 5, строки белые, как в макете. */
.clients {
  margin-bottom: 80px;
  padding: 5px;
  border-radius: var(--br-3);
  background-color: var(--bg-secondary);
}

.clients__scroll {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.clients__row {
  display: grid;
  grid-template-columns:
    minmax(0, 100px)
    minmax(90px, 1fr)
    minmax(90px, 1fr)
    repeat(5, minmax(0, 100px))
    minmax(90px, 1fr)
    24px;
  align-items: center;
  gap: 20px;
  padding: 14px 20px;
  border-radius: var(--br-4);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  text-decoration: none;
  transition: background-color .25s ease;
}

.clients__row:hover {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
}

.clients__row--head,
.clients__row--head:hover {
  padding: 10px 20px;
  background-color: transparent;
}

.clients__row--head .clients__cell {
  font-size: 14px;
  line-height: 140%;
  color: var(--text-tertiary);
}

.clients__cell {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
  font-size: 15px;
  line-height: 140%;
  color: var(--text-primary);
}

/* Клиенты сети: колонок четыре, перехода в карточку нет — значит нет
   и столбца под карандаш. Правило то же: второй, третий и последний
   тянутся, первый по 100. */
/* Пять колонок, макет 19.10: регистрация, партнёр, его код
   и два счётчика клиентов. Счётчики уже имени и кода — в них
   числа, а не текст. */
.clients--network .clients__row {
  grid-template-columns:
    minmax(0, 100px)
    minmax(120px, 1.4fr)
    minmax(100px, 1.2fr)
    minmax(80px, 1fr)
    minmax(80px, 1fr);
}

/* Зелёное и красное рядом: сколько ветка приносит и сколько
   в ней простаивает, видно не читая. */
.clients__cell--active {
  color: var(--text-success-primary);
}

.clients__cell--inactive {
  color: var(--text-error-primary);
}

/* Шапку подсветка не трогает. Общее правило для неё стоит выше,
   а это — с двумя классами, то есть сильнее, и перекрывало его:
   при наведении на заголовок таблицы партнёров он белел (найдено
   владельцем 20.10). В «Моих клиентах» такого правила нет, поэтому
   там всё было в порядке. */
.clients--network .clients__row:not(.clients__row--head):hover {
  background-color: var(--bg-primary);
}

/* Дата регистрации — подсказка, а не содержание: цвет приглушённый. */
.clients__cell--date {
  color: var(--text-tertiary);
}

.clients__cell--goal {
  overflow: hidden;
  text-overflow: ellipsis;
}

.clients__hint {
  font-size: 14px;
  line-height: 140%;
  color: var(--text-tertiary);
}

/* Нормы ещё считаются: вместо числа часы. */
.clients__pending {
  width: 20px;
  height: 20px;
  color: var(--icon-tertiary);
}

.clients__cell--arrow {
  align-items: flex-end;
}

.clients__pencil {
  width: 24px;
  height: 24px;
  color: var(--icon-tertiary);
  transition: color .25s ease;
}

.clients__row:hover .clients__pencil {
  color: var(--text-primary);
}

.clients__status {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
}

.clients__status svg {
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
}

.clients__status--ok {
  color: var(--text-badge-green);
}

/* Подписки ещё не было — человек только зарегистрировался.
   Цвет предупреждения, вторичный — как в компоненте Hint Text. */
.clients__status--wait {
  color: var(--text-warning-secondary);
}

/* Подписка была и кончилась — эксперту это сигнал к действию. */
.clients__status--off {
  color: var(--text-badge-red);
}

.clients__empty {
  margin: 20px 0 80px;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-tertiary);
}

/*==============================
  Пачка «Клиент»
==============================*/

/* Размеры сняты с макета 9163:6282. Колонка содержимого 600 и
   центрируется по всей странице, меню стоит слева поверх неё.
   Между блоками 20, у заголовков секций сверху 25 — тот же ритм,
   что на главной. */
.client-main {
  /* Ширина обязательна: тело страницы — флекс-колонка, а поля `auto`
     у флекс-элемента отменяют растягивание, и колонка сжималась
     по содержимому. На страницах с формами это было незаметно,
     а на исключениях она села по ширине поля поиска (замер 12.10). */
  width: 100%;
  /* 600 — это ширина содержимого, а не колонки с полями: поля по 15
     съедали их из тех же шестисот, и страница была уже макета
     (замер владельца 12.10). */
  max-width: 630px;
  margin: 0 auto;
  /* снизу место под прибитую панель сохранения */
  padding: 40px 15px 120px;
}

/* Поле только для чтения: значение того же цвета, что подпись,
   и шеврон приглушён. Иначе выключенное поле читается как обычное,
   и человек пробует его править (макет Form/Input-select). */
.floating-input:disabled,
.floating-select:disabled,
.floating-input[readonly],
.floating-select[readonly],
.floating-input-1:disabled,
.floating-select-1:disabled {
  color: var(--text-disabled);
  -webkit-text-fill-color: var(--text-disabled);
  opacity: 1;
}

.floating-label:has(.floating-input:disabled)::after,
.floating-label-1:has(.floating-select-1:disabled)::after {
  opacity: .4;
}

/* Ритм страницы: между блоками 20. Отступ стоит на колонке
   содержимого, а не на обёртке: у обёртки один ребёнок, и зазор
   между её детьми ничего не давал — на страницах пачки ритм
   был потерян. */
.client-content {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Расстояния между блоками задаёт только зазор колонки. Свои поля
   у блоков складывались с ним: под заголовками набегало полсотни
   вместо двадцати.

   Селектор нарочно с предком: при равной силе выигрывает правило ниже
   по файлу, и `.entry-cards { margin: 30px 0 0 }` возвращало себе
   верхнее поле — под «Факторами программы» снова набегало пятьдесят
   (правка 12.10). */
.client-main .client-content > *,
main .modal-page > * {
  margin-top: 0;
  margin-bottom: 0;
}

.client-sidebar {
  position: fixed;
  top: 10px;
  left: 10px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  width: 220px;
  padding-bottom: 15px;
  border-radius: var(--br-2);
  background-color: var(--bg-primary);
}

/* Два класса, а не один: у `.btn-dark` ниже по файлу свой
   `margin: 15px 0`, и при равной силе он забирал левое поле —
   кнопка стояла левее пунктов меню. */
.client-sidebar .client-sidebar__back {
  align-self: flex-start;
  gap: 5px;
  /* По левому краю вровень с пунктами меню: у списка поле 10,
     значит и у кнопки слева 10. */
  margin: 15px 10px 0;
}

/* «Круглая кнопка» у нас значит скругление 999 — так и в заголовках
   разделов, и у «Вернуться» (уточнение 12.10). */
.focus__section-title .btn-dark {
  border-radius: 999px;
  /* Своих полей у кнопки в строке заголовка нет: у `.btn-dark`
     в базе стоит `margin: 15px 0`, и эти пятнадцать снизу читались
     как второй отступ под заголовком — расстояние задаёт спейсер
     страницы или секции (правка 12.10). */
  margin: 0;
}

.client-sidebar__back .btn-icon {
  margin-left: -2px;
}

.client-sidebar__user {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 15px 20px;
}

.client-sidebar__name {
  font-size: var(--fs-h4);
  letter-spacing: var(--ls-h4);
  font-weight: 500;
  line-height: var(--lh-h4);
  color: var(--text-secondary);
}

.client-sidebar__email {
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: var(--lh-p3);
  color: var(--text-disabled);
}

/* Переходы по разделам. Активный пункт — белая плашка с рамкой,
   а не брендовая заливка, как в главном меню: это навигация внутри
   карточки, и она не должна спорить с основной. */
.client-nav {
  display: flex;
  flex-direction: column;
  padding: 15px 10px 0;
}

.client-nav__link {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 15px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: var(--br-2);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-secondary);
  text-decoration: none;
  transition: border-color 250ms ease, background-color 250ms ease;
}

/* Наведение показывает рамка, а не фон — как у карточек
   (цвета из макета 12.10). */
.client-nav__link:hover {
  border-color: var(--border-secondary);
  color: var(--text-secondary);
  text-decoration: none;
}

.client-nav__link--active,
.client-nav__link--active:hover {
  border-color: var(--border-primary-solid);
  background-color: var(--bg-primary);
}

/* Иконки заливные, красятся маской: цвет один во всех состояниях —
   icon/primary (макет 12.10). */
.client-nav__icon {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  background-color: var(--icon-primary);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}



.client-nav__text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Шапка и лист разделов нужны только на телефоне. */
.client-head,
.client-menu {
  display: none;
}

/* Иконка внутри кнопки: 24, маской, цветом текста кнопки. Нужна
   «Вернуться», «Ценность недели» и другим кнопкам со стрелкой. */
.btn-icon {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  background-color: currentColor;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

/* Заголовок страницы и заголовки секций. */
/* Первый заголовок страницы — H1, заголовки секций ниже — H3
   (разметка владельца 12.10). */
.focus__title {
  margin: 0;
  font-size: var(--fs-h1);
  letter-spacing: var(--ls-h1);
  line-height: var(--lh-h1);
  font-weight: 500;
  color: var(--text-primary);
}

/* Строка заголовка страницы: сам заголовок и действие справа.
   Та же раскладка, что у строки секции, но без верхнего отступа —
   у h1 расстояние задаёт зазор колонки. На узком экране действие
   уходит под заголовок. */
.focus__title-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 20px;
}

.focus__title-row .focus__title {
  flex: 1 1 auto;
  min-width: 0;
}

/* Между секциями 40: двадцать даёт спейсер страницы (зазор колонки)
   и двадцать — спейсер самой секции. Под заголовком своих отступов
   нет, там снова работает зазор колонки (уточнение 12.10). */
.focus__section-title {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  padding-top: 20px;
}

.focus__section-title h2 {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  line-height: var(--lh-h3);
  font-weight: 500;
  color: var(--text-primary);
}

/* Карточка клиента: та же «Cards Button», что на главной, — плашка
   80 с бейджем 60 внутри. */
.focus__person {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 14px;
  padding: 10px;
  border-radius: var(--br-1);
  background-color: var(--bg-secondary);
}

.focus__person-img {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 80px;
  width: 80px;
  height: 80px;
}

.focus__person-text {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.focus__person-name {
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  line-height: var(--lh-h3);
  font-weight: 500;
  color: var(--text-primary);
}

.focus__person-contacts {
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: var(--lh-p3);
  color: var(--text-disabled);
}

/* Виджет на главной — отдельный этаж. Своих отбивок у него нет
   совсем: расстояние задают спейсеры страницы (правка 12.10).
   Прежде здесь стояли свои 20 сверху и снизу, и они складывались
   со спейсерами. */

/* Бутстрап рисует вокруг нажатой кнопки кольцо тенью и подменяет
   фон на свой. В нашей системе состояние нажатия показывает слой
   поверх цвета, поэтому кольцо гасим — оно читается как лишняя
   обводка. Видимый фокус с клавиатуры оставляем. */
.btn:focus,
.btn:active,
.btn.active,
.btn-primary:focus,
.btn-primary:active,
.btn-secondary:focus,
.btn-secondary:active,
.btn-dark:focus,
.btn-dark:active,
button:focus,
button:active,
a.btn-primary:focus,
a.btn-secondary:focus,
a.btn-dark:focus {
  box-shadow: none;
  outline: none;
}

/* Клавиатурный фокус виден: это не то же самое, что нажатие мышью. */
/* Нажатая кнопка у бутстрапа ловит кольцо через `:active:focus` —
   три класса, и наш сброс в два ему проигрывал. Поэтому гасим тем же
   сочетанием: именно оно видно в момент клика (правка 12.10). */
.btn:active:focus,
.btn.active:focus,
.btn-primary:active:focus,
.btn-primary.active:focus,
.btn-secondary:active:focus,
.btn-secondary.active:focus,
.btn-dark:active:focus,
.btn-dark.active:focus,
.btn-outline:active:focus,
.btn-outline.active:focus {
  box-shadow: none;
}

.btn:focus-visible,
button:focus-visible,
a.btn-primary:focus-visible,
a.btn-secondary:focus-visible,
a.btn-dark:focus-visible {
  outline: 2px solid var(--border-primary);
  outline-offset: 2px;
}

/* Кроме селектов: плагин сам ставит фокус на свою кнопку, когда
   открывает список, и браузер считает это фокусом с клавиатуры —
   вокруг поля появлялась серая обводка даже при щелчке мышью.
   Открытое состояние и так видно по самому списку (правка 12.10). */
.multiselect:focus,
.multiselect:focus-visible {
  outline: none;
}

/* Кнопка в заголовке секции формы: прижата к правому краю. */
/* Два класса нарочно: у .btn-dark свои поля 15 сверху и снизу,
   и правило в один класс ему проигрывало — кнопка прилипала
   к заголовку вместо правого края. */
.form-section .form-section__action {
  margin: 0 0 0 auto;
  gap: 5px;
  text-decoration: none;
}

.form-section__action:hover {
  text-decoration: none;
  color: var(--text-white);
}

/* Окно «Что делает цель»: текст длинный, поэтому окно ограничено
   по высоте и прокручивается внутри. Без этого низ просто обрезался. */
/* Окно «Что делает цель» берёт разметку окна замены, а у того ниже
   по файлу своя высота и `overflow: hidden`: при равной силе они
   выигрывали, и длинный текст обрезался без прокрутки. Поэтому здесь
   два класса — правила окна замены их не перебивают. */
.modal.modal-goals {
  height: auto;
  max-height: calc(100vh - 80px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

/* Тело окна замены — флекс-колонка без прокрутки: там прокручивается
   только ряд карточек. Здесь прокручивается само окно, поэтому тело
   обычный поток. */
.modal-goals .modal-replace__body {
  display: block;
  overflow: visible;
}

/* Крестик остаётся на месте при прокрутке содержимого. Подложки
   у шапки нет: белая полоса обрезала текст по верхнему краю и читалась
   как рамка (правка 12.10). Сам крестик виден — у него своя плашка. */
.modal-goals .modal-replace__header {
  position: sticky;
  top: 0;
  z-index: 2;
  background-color: transparent;
}

/* Окно «Что делает цель», макет 16.10.

   Узкое — 600 вместо тысячи: строка в тысячу пикселей для сплошного
   текста слишком длинная, глаз теряет начало следующей. Поля по 40.
   Вертикальный ритм один на всё содержимое — десять; два заголовка
   с иконками получают сверху 25, потому что открывают разделы. */
.modal-goals.modal-replace {
  max-width: 600px;
}

.modal-goals .modal-replace__body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 0 40px 40px;
}

/* Заголовок раздела: иконка и текст в строке, как в остальных
   разделах кабинета. */
.modal-goals__section {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  /* Над заголовком 35: двадцать пять своих плюс десять от ритма
     колонки. Под заголовком — только ритм, десять: заголовок
     принадлежит тексту под собой, а не над (правка 16.10). */
  padding-top: 25px;
}

.modal-goals__icon {
  display: block;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  background-color: var(--icon-disabled);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

/* Поле снизу и ширину во всю строку снимаем: у заголовков в окнах
   свой общий стиль (`.modal h3`), из-за которого строка заголовка
   становилась на двадцать выше текста — и иконка, выровненная по
   центру строки, оказывалась ниже букв (правка 16.10). */
.modal-goals__section h3 {
  width: auto;
  padding: 0;
  margin: 0;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  line-height: var(--lh-h3);
  font-weight: 500;
  color: var(--text-primary);
}

.modal-goals .modal-replace__body h4 {
  margin: 0;
  /* Те же 35 над заголовком, что и у разделов с иконкой. */
  padding: 25px 0 0;
  font-size: var(--fs-h4);
  letter-spacing: var(--ls-h4);
  line-height: var(--lh-h4);
  font-weight: 500;
  color: var(--text-primary);
}

.modal-goals .modal-replace__body p {
  margin: 0;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-secondary);
}

/* На узком экране сорок по бокам съедают треть строки: окно и так
   во весь экран, поля берём общие для окон — двадцать. */
@media (max-width: 990px) {
  .modal-goals .modal-replace__body {
    padding: 0 20px 20px;
  }
}

/* Страницы-окна (ценность, список покупок) живут по тем же правилам,
   что и разделы пачки: колонка 600 и ритм 20. Отличие одно —
   вместо меню слева крестик в углу. */
.modal-page {
  display: flex;
  flex-direction: column;
  gap: 20px;
  /* См. `.client-main`: 600 содержимого плюс поля по 15. */
  max-width: 630px;
  margin: 0 auto;
  padding: 40px 15px 80px;
}

/* Виджет программы, макет 9864:13388. Одна строка высотой 40:
   метка 20, текст 14, действие справа. Скругление 25.

   Поля зависят от состояния: без действия — 10 со всех сторон,
   с кнопкой — справа и по вертикали 5, высоту держит сама кнопка. */
/* Высота 40 в любом состоянии. Знак 20 посередине даёт поля по 10
   сверху и снизу — столько же слева (правка 12.10). */
.programm-widget {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  /* Виджет подрос с 40 до 50: в прежнем размере его не замечали
     (правка 16.10). Поля по 10 со всех сторон: кнопка 30 в строке 50
     сама встаёт по центру, и сверху с боков получается ровно десять. */
  height: 50px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 999px;
  background-color: var(--bg-primary);
}

.programm-widget[hidden] {
  display: none;
}

/* Знак 30×30 из набора, со своей подложкой. Слева от него поле 10
   в любом состоянии. Своих отступов у кнопки больше нет: в строке 50
   кнопка 30 отбита десяткой сама, как и знак. */
.programm-widget__mark {
  display: block;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
}

.programm-widget__title {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--fs-h5);
  letter-spacing: var(--ls-h5);
  font-weight: 500;
  line-height: var(--lh-h5);
}

/* Не удалось: градиент от оранжевого к красному, текст белый. */
.programm-widget--failed,
.programm-widget--blocked {
  background-image: linear-gradient(264.57deg, #F87171 0%, #F38744 100%);
}

/* Нужна оплата: лаймовый градиент. */
.programm-widget--awaiting {
  background-image: linear-gradient(264.57deg, #65A30D 0%, #84CC16 100%);
}

.programm-widget--failed .programm-widget__title,
.programm-widget--blocked .programm-widget__title,
.programm-widget--awaiting .programm-widget__title {
  color: var(--text-white);
}

/* На цветной плашке кнопка белая с тёмным текстом: чёрная на красном
   и зелёном не читается как действие, а сливается с фоном (макет
   19.10). Сам факт «это кнопка» несёт слово, а не значок — значок
   в круге приняли за украшение и не нажимали. */
.programm-widget--failed .programm-widget__retry,
.programm-widget--blocked .programm-widget__retry,
.programm-widget--awaiting .programm-widget__retry,
.programm-widget--awaiting .programm-widget__pay {
  background-color: var(--bg-primary);
  color: var(--text-primary);
}

.programm-widget--failed .programm-widget__retry:hover,
.programm-widget--blocked .programm-widget__retry:hover,
.programm-widget--awaiting .programm-widget__retry:hover,
.programm-widget--awaiting .programm-widget__pay:hover {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
}

/* Идёт сборка: белая плашка с бегущей рамкой.

   Рамка в два пикселя — градиент orange-300 → orange-100, и угол
   градиента крутится: светлое пятно обходит периметр за секунду
   и так без остановки, пока идёт сборка. Так виджет показывает
   движение, а не просто стоит подсвеченным (правка 16.10).

   Собрано двумя слоями фона: нижний — конический градиент по рамке,
   верхний — заливка плашки по внутренней области. Обычным `border`
   градиент не задать, а `border-image` не скругляется.

   Угол анимируется через `@property`: без него браузер считает
   `--widget-angle` обычной строкой и плавного перехода не выходит.
   Где `@property` не поддержан, рамка останется неподвижной
   и просто градиентной — это приемлемо. */
@property --widget-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

.programm-widget--running {
  border-width: 2px;
  border-color: transparent;
  background-color: transparent;
  background-image:
    linear-gradient(var(--bg-primary), var(--bg-primary)),
    conic-gradient(from var(--widget-angle),
      var(--orange-100) 0%,
      var(--orange-300) 50%,
      var(--orange-100) 100%);
  background-origin: border-box;
  background-clip: padding-box, border-box;
  animation: programm-widget-spin 1s linear infinite;
}

@keyframes programm-widget-spin {
  to {
    --widget-angle: 360deg;
  }
}

/* Человеку, выключившему анимацию в системе, рамка просто светится. */
@media (prefers-reduced-motion: reduce) {
  .programm-widget--running {
    animation: none;
  }
}

.programm-widget--running .programm-widget__title {
  color: var(--text-tertiary);
}

/* Готово: текст приглушён — внимания не требует. */
.programm-widget--ready .programm-widget__title {
  color: var(--text-disabled);
}

/* Кнопка действия в виджете. Высота 30 — как у плашки «Оплатить»
   рядом; ширина по тексту. Круглый значок вместо слов читался
   как украшение (приёмка 18.10). */
.programm-widget__retry {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  height: 30px;
  padding: 0 15px;
  border: 0;
  border-radius: var(--br-3);
  background-color: var(--bg-black-solid);
  color: var(--text-white);
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
  white-space: nowrap;
}

.programm-widget__retry:hover {
  background-color: var(--bg-black-solid-hover, var(--bg-black-solid));
}

.programm-widget__retry[hidden] {
  display: none;
}

.programm-widget__retry-icon {
  width: 24px;
  height: 24px;
  background-color: var(--text-white);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.programm-widget__pay {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  height: 30px;
  padding: 0 10px;
  border-radius: var(--br-3);
  background-color: var(--bg-tertiary);
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
  color: var(--text-primary);
  text-decoration: none;
}

.programm-widget__pay:hover {
  background-color: var(--bg-tertiary-hover);
  color: var(--text-primary);
  text-decoration: none;
}


/* График веса: подложка Gray 50 с полем 5, скругление 15. */
.focus__chart {
  padding: 5px;
  border-radius: var(--br-3);
  background-color: var(--bg-secondary);
}

.focus__chart .history-chart {
  width: 100%;
  height: 300px;
  padding: 24px;
}

/* Нижняя панель сохранения: прилипает к низу колонки, над кнопкой
   стоит плашка состояния программы. Одна и та же в параметрах
   и исключениях. */
/* Панель прибита к низу окна, а не к потоку страницы. Липкой она
   быть не может: на исключениях список раскладывает isotope
   абсолютом, высота контейнера считается не сразу, и панель
   оказывалась посреди продуктов. */
/* Сама панель прозрачная и ничего не рисует: она только держит
   виджет и плашку с кнопкой друг над другом с зазором 5. Белая
   подложка с тенью — у плашки, виджет лежит выше неё (макет
   Bottom Toolbar 12.10). */
.save-bar {
  position: fixed;
  left: 50%;
  bottom: max(15px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  width: calc(100% - 30px);
  max-width: 600px;
  z-index: 50;
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-top: 20px;
}

.save-bar__plate {
  /* Поля со всех сторон одинаковые — 15 (правка 12.10). Сверху
     и снизу столько давал не контейнер, а собственный отступ чёрной
     кнопки; теперь он снят, и число одно на все стороны. */
  padding: 15px;
  border-radius: var(--br-1);
  background-color: var(--bg-primary);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
}

/* На телефоне панель прибита к нижнему краю экрана, а поле под
   кнопкой увеличено до 25: иначе кнопка чата ложится поверх неё. */
@media (max-width: 990px) {
  .save-bar {
    bottom: 0;
  }

  .save-bar__plate {
    padding-bottom: calc(25px + env(safe-area-inset-bottom));
  }
}

.save-bar .btn-dark {
  /* Высоту и скругление задаёт сама кнопка: размер M и обычный радиус.
     Ни того, ни другого здесь местными правилами не переопределяем
     (правка 12.10). */
  /* Отступы задаёт подложка, у кнопки своих нет: у `.btn-dark`
     в базе стоит `margin: 15px 0`, и он складывался с полем. */
  margin: 0;
}

/* Исключения внутри пачки клиента: колонка узкая, продукты идут
   в два столбца с зазором 10 — в макете карточка 295 при колонке 600.
   Поля колонок сетки для этого сужены с 15 до 5. */
/* Ряды бутстрапа внутри колонки пачки. Колонка — флексовая, и ряд
   с отрицательными полями она сжимает обратно до шестисот, а поля
   колонок внутри остаются: содержимое становилось уже на 24 и после
   загрузки заметно съезжало (разбор 12.10). Поэтому у обычных рядов
   полей нет вовсе, а сетка продуктов берёт свои десять шириной
   и не даёт себя сжать. */
.client-page .client-content > .row:not(.grid) {
  margin-left: 0;
  margin-right: 0;
}

/* Сетка продуктов сюда не попадает: у её колонок поля — это зазор
   между карточками (по 5 с каждой стороны), и обнулять их нельзя. */
.client-page .client-content > .row:not(.grid) > [class*="col"] {
  padding-left: 0;
  padding-right: 0;
}

.client-page .grid {
  flex: 0 0 auto;
  width: calc(100% + 10px);
  margin-left: -5px;
  margin-right: -5px;
}

.client-page .grid .element-item {
  flex: 0 0 50%;
  max-width: 50%;
  padding-left: 5px;
  padding-right: 5px;
}

@media (max-width: 990px) {
  .client-page .grid .element-item {
    flex: 0 0 100%;
    max-width: 100%;
  }
}

/* Карточка рецепта. Макет 9062:4793: фото квадратом во всю ширину,
   тело с полем 20 и зазором 20, состав белым блоком, шаги с номерами
   в квадратах и линией между ними. */
.recipe-card {
  overflow: hidden;
  border-radius: var(--br-2);
  background-color: var(--bg-tertiary);
}

.recipe-card__media {
  position: relative;
  aspect-ratio: 1 / 1;
  border-radius: var(--br-2);
  overflow: hidden;
}

/* Кнопка замены на фото: полупрозрачная белая с размытием, 40,
   скругление 15, в десяти от верхнего правого угла (макет). */
/* Два класса нарочно: `replace__button` нужен скрипту, который
   подгружает замены, а его размеры (30×30 в пятнадцати от края)
   не подходят — у карточки кнопка 40 в десяти. */
.recipe-card .recipe-card__replace {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--br-3);
  background-color: rgba(255, 255, 255, .5);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  transition: background-color 250ms ease;
}

.recipe-card .recipe-card__replace:hover {
  background-color: rgba(255, 255, 255, .8);
}

.recipe-card__replace-icon {
  width: 24px;
  height: 24px;
  background-color: var(--bg-black-solid);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.recipe-card__media img,
.recipe-card__media video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.recipe-card__body {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 20px;
}

.recipe-card__title {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.recipe-card__meal,
.recipe-card__time {
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--text-disabled);
}

.recipe-card__name {
  margin: 0;
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  line-height: var(--lh-h2);
  font-weight: 500;
  color: var(--text-primary);
}

.recipe-card__note {
  margin: 0;
  padding: 0 20px;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  color: var(--text-disabled);
}

/* Состав: белый блок, строки через тонкую линию. */
/* Сколько порций готовим: подпись слева, переключатель справа.
   Плашка белая, как состав под ней, — это часть карточки рецепта,
   а не отдельный экран (макет 22.10). */
.portions {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  padding: 10px 10px 10px 20px;
  border-radius: var(--br-2);
  background-color: var(--bg-primary);
}

.portions__title {
  font-size: var(--fs-p1);
  line-height: var(--lh-p1);
  letter-spacing: var(--ls-p1);
  color: var(--text_1);
}

/* Переключатель тот же, что в настройке недели, но без своей
   белой плашки: он и так лежит на белом. */
.portions__stepper {
  padding: 0;
  background-color: transparent;
  box-shadow: none;
}

.recipe-card__composition {
  display: flex;
  flex-direction: column;
  gap: 15px;
  padding: 20px;
  border-radius: var(--br-2);
  background-color: var(--bg-primary);
}

.recipe-line {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  font-size: 18px;
  line-height: 140%;
  color: var(--text-secondary);
}

/* Линия между строками, но не после последней. */
.recipe-line + .recipe-line {
  padding-top: 15px;
  border-top: 1px solid var(--border-tertiary);
}

.recipe-line__image {
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  border-radius: var(--br-4);
  object-fit: cover;
}

.recipe-line__title {
  flex: 1 1 auto;
  min-width: 0;
}

.recipe-line__value {
  flex: 0 0 auto;
  text-align: right;
  white-space: nowrap;
}

/* Шаги: номер в белом квадрате 40, текст 16, между шагами линия
   от номера к номеру. */
.recipe-steps {
  margin: 0;
  padding: 10px 0;
  list-style: none;
}

.recipe-step {
  position: relative;
  display: flex;
  flex-direction: row;
  gap: 15px;
  padding-bottom: 20px;
}

.recipe-step:last-child {
  padding-bottom: 0;
}

.recipe-step__number {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 40px;
  width: 40px;
  height: 40px;
  border-radius: var(--br-3);
  background-color: var(--bg-primary);
  font-size: 14px;
  line-height: 140%;
  color: var(--text-secondary);
}

/* Линия идёт от номера вниз до следующего шага. У последнего её нет. */
.recipe-step:not(:last-child)::before {
  content: '';
  position: absolute;
  top: 40px;
  left: 20px;
  bottom: 0;
  width: 1px;
  background-color: var(--border-tertiary);
}

.recipe-step__text {
  flex: 1 1 auto;
  min-width: 0;
  padding-top: 5px;
  font-size: 16px;
  line-height: 140%;
  color: var(--text-secondary);
}

@media (max-width: 990px) {
  .recipe-card__body {
    padding: 20px 10px;
  }

  .recipe-card__title {
    padding: 0 10px;
  }

  .recipe-line {
    font-size: 16px;
  }
}

/* Карточка графика: подложка с полем 5, как у динамики веса. */
.compound-card {
  padding: 5px;
  border-radius: var(--br-3);
  background-color: var(--bg-secondary);
}

.compound-card .compound-chart {
  width: 100%;
  padding: 20px;
}

.compound-note {
  margin: 0;
  padding: 0 20px;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  color: var(--text-disabled);
}

/* Переключение дней недели: семь равных долей на серой подложке,
   активный день — чёрная пилюля (макет 11.10). */
/* Полоса вкладок. Вкладок бывает от одной до семи: схлопнутые дни
   стоят в одной подписью «Пн, Ср, Пт». Полоса всегда занимает всю
   ширину, а вкладки делят её поровну — сколько бы их ни было, две
   или семь (решение владельца 22.10). Поэтому строка с равными
   долями, а не сетка из семи колонок: семь было жёстко вшито.

   Длинная подпись в свою долю не лезет — обрезается многоточием,
   а не растягивает вкладку за счёт соседей. */
.day-tabs {
  display: flex;
  gap: 0;
  padding: 5px;
  border-radius: 999px;
  background-color: var(--bg-tertiary);
}

.day-tab {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 0;
  min-width: 0;
  padding: 0 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  height: 40px;
  border-radius: 999px;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-primary);
  text-decoration: none;
  transition: background-color 250ms ease, color 250ms ease;
}

.day-tab:hover {
  background-color: var(--bg-tertiary-hover);
  color: var(--text-primary);
  text-decoration: none;
}

.day-tab--active,
.day-tab--active:hover {
  background-color: var(--bg-black-solid);
  color: var(--text-white);
}

/* День без программы: виден, но ведёт в никуда. */
.day-tab--empty {
  color: var(--text-disabled);
}

/* На телефоне равные доли не держат длинную подпись: «Пн, Вт, Чт»
   просит 81 точку, а доля при пяти вкладках даёт 70, и буквы по краям
   обрезались (QA 23.10). Поэтому на узком экране вкладка берёт
   по содержимому, а полоса прокручивается вбок. */
@media only screen and (max-width: 990px) {
  .day-tabs {
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  .day-tabs::-webkit-scrollbar {
    display: none;
  }

  .day-tab {
    /* Основа по содержимому, остаток делится поровну: полоса
       заполнена целиком, а длинная подпись не режется. При
       `0 0 auto` вкладки сбивались влево и справа оставалась
       пустая дорожка (QA 23.10). */
    flex: 1 1 auto;
    min-width: auto;
  }
}

.day-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Плашка КБЖУ. Серая подложка с полем 5, внутри четыре белые ячейки
   сеткой 2×2 с зазором 5. Макет 10170:25290. */
.summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
  padding: 5px;
  border-radius: var(--br-1);
  background-color: var(--bg-tertiary);
}

.summary__cell {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  gap: 10px;
  padding: 10px 15px;
  border-radius: var(--br-2);
  background-color: var(--bg-primary);
}

.summary__label {
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
  color: var(--text-tertiary);
}

.summary__value {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  gap: 5px;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  line-height: var(--lh-h3);
  font-weight: 500;
  color: var(--text-primary);
}

.summary__value small {
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  font-weight: 400;
  color: var(--text-disabled);
}

/* Подпись и число стоят колонкой, доля — справа по нижнему краю. */
.summary__cell {
  flex-wrap: wrap;
}

.summary__label {
  flex: 1 0 100%;
}

.summary__value {
  flex: 1 1 auto;
  min-width: 0;
}

.summary__share {
  flex: 0 0 auto;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  line-height: var(--lh-h3);
  font-weight: 500;
  color: var(--text-primary);
}

/* На телефоне доли убираем: в узкой ячейке они не помещаются рядом
   с числом и уточнением (макет 12.10). */
@media (max-width: 990px) {
  .summary__share {
    display: none;
  }
}

/* Узкое десктопное окно: колонка центрируется по всему экрану,
   а меню стоит слева поверх — они наезжали друг на друга. Пока места
   на оба не хватает, колонка стоит правее меню, а не по центру. */
@media (min-width: 991px) and (max-width: 1130px) {
  .client-main {
    margin-left: 240px;
    margin-right: auto;
  }
}

@media (max-width: 990px) {
  .client-sidebar {
    display: none;
  }

  .client-main {
    padding-top: 0;
  }

  .client-head {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 15px;
    padding: 15px;
  }

  .client-head__title {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1 1 auto;
  }

  .client-head__name {
    margin: 0;
    font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
    line-height: var(--lh-h3);
    font-weight: 500;
    color: var(--text-primary);
  }

  .client-head__contacts {
    font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
    line-height: var(--lh-small);
    color: var(--text-disabled);
  }

  /* Кнопки шапки — размер M и круглые: 40 в высоту и столько же
     в ширину, иконка 24 по центру (правка 12.10). Прежде у них
     не было ни высоты, ни ширины, и они расплывались по содержимому. */
  .client-head__back,
  .client-head__more {
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    /* у `.btn-secondary` в базе стоит `margin: 15px 0` — в строке шапки
       он добавлял ей тридцать пикселей высоты */
    margin: 0;
    padding: 0;
    border-radius: 999px;
  }

  .client-head__back .btn-icon,
  .client-head__more .btn-icon {
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
  }

  /* Лист разделов: открывается по трём точкам и занимает экран
     целиком — в макете это отдельный экран, а не выпадашка. */
  .client-menu {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 300;
    display: flex;
    flex-direction: column;
    gap: 20px;
    width: 100%;
    height: 100%;
    padding: 15px;
    background-color: var(--bg-primary);
    overflow-y: auto;
  }

  .client-menu[hidden] {
    display: none;
  }

  .client-menu__close {
    align-self: flex-end;
  }

  .client-menu__user {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 0 10px;
  }

}

/* Пустое состояние раздела: иконка, объяснение, при необходимости
   кнопка. Высоту не задаём — блок встаёт по содержимому, а не
   растягивается на экран. */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 120px 20px;
  text-align: center;
}

.empty-state__icon {
  width: 48px;
  height: 48px;
  color: var(--icon-tertiary);
}

.empty-state__text {
  margin: 0;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-tertiary);
}

/* Счётчик под заголовком: нужен, когда таблица свёрнута в карточки
   и длины списка не видно. */
.main-title__count {
  display: none;
  /* во всю ширину, чтобы встать под заголовком: у .main-title
     направление строкой и перенос разрешён */
  width: 100%;
  font-size: 15px;
  line-height: 140%;
  color: var(--text-tertiary);
}

/* Вход в кабинет эксперта с главной. На десктопе есть пункт меню,
   поэтому карточка только на узком экране (макет 23.09). */
.expert-card {
  display: none;
}

@media (max-width: 990px) {
  .expert-card {
    display: flex;
    flex-direction: column;
    gap: 4px;
    /* по макету плашка лежит в секции с отступами 15 сверху и снизу */
    margin: 15px 0;
    padding: 15px;
    border-radius: var(--br-2);
    background-color: var(--level_05);
    text-decoration: none;
  }

  .expert-card__label {
    font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
    line-height: var(--lh-small);
    color: var(--text_1);
  }

  /* Под плашкой идёт полоса дней. В макете между ними 35: своя нижняя
     отбивка секции с плашкой 15 плюс верхняя у полосы 20. Отступы
     соседей схлопываются, поэтому ставим сразу 35. */
  .expert-card + .week-nav-section {
    margin-top: 35px;
  }

  .expert-card__value {
    font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
    font-weight: 500;
    line-height: var(--lh-h2);
    color: var(--text_1);
  }
}

/*==============================
  Нотификации
==============================*/
/* Правый верхний угол, поверх шапки. Складываются столбиком, новые
   снизу (макет 23.09). */
.notify {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}

.notify__item {
  display: flex;
  flex-direction: row;
  /* в макете и иконка, и крестик выровнены по центру плашки —
     даже когда текст в несколько строк */
  align-items: center;
  gap: 10px;
  width: 300px;
  padding: 15px 10px 15px 15px;
  border-radius: var(--br-2);
  background-color: var(--level_0);
  box-shadow: var(--shadow_1);
  pointer-events: auto;
}

.notify__icon {
  flex: 0 0 auto;
}

.notify__text {
  flex: 1 1 auto;
  margin: 0;
  font-size: 14px;
  line-height: 140%;
  color: var(--status_info);
}

.notify__item--success .notify__text {
  color: var(--text_1);
}

.notify__item--warning .notify__text {
  color: var(--status_warn_text);
}

.notify__item--error .notify__text {
  color: var(--status_alert);
}

.notify__close {
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  padding: 5px;
  border: 0;
  border-radius: var(--br-3);
  background-color: var(--level_1);
  cursor: pointer;
}

.notify__close img {
  display: block;
  width: 20px;
  height: 20px;
}

@media (max-width: 990px) {
  .notify {
    top: 10px;
    right: 10px;
    left: 10px;
  }

  .notify__item {
    width: auto;
  }
}

/* Правая колонка в карточке клиента у эксперта (макет 23.09). */
.right-sidebar--client {
  display: flex;
  flex-direction: column;
  gap: 20px;
  height: auto;
}

.client-widget {
  padding: 5px;
  border-radius: var(--br-3);
  background-color: var(--level_1);
}

.client-widget__title {
  margin: 0;
  padding: 10px;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--text_1);
}

.client-widget__list {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.client-widget__item {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border-radius: var(--br-4);
  background-color: var(--level_0);
  color: var(--text_1);
  text-decoration: none;
}

.client-widget__item:hover {
  color: var(--text_1);
  background-color: var(--level_05);
}

.client-widget__name {
  flex: 1 1 auto;
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
}

.client-widget__arrow {
  opacity: .4;
}

.client-widget__item:hover .client-widget__arrow {
  opacity: 1;
}

/* Пояснение под кнопкой сохранения: что случится после нажатия. */
.form-note {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin: 10px 0 20px;
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: var(--lh-p3);
  color: var(--text_1);
}

.form-note img {
  flex: 0 0 14px;
}

/* Виджет «Обновить программу» в карточке клиента (макет 24.09). */
.client-widget--rebuild {
  padding: 20px;
}

.client-widget--rebuild .client-widget__title {
  padding: 0;
  margin-bottom: 10px;
}

.client-widget__text {
  margin: 0 0 20px;
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
  color: var(--text_1);
}

.client-widget--rebuild .btn-primary[disabled] {
  background-color: var(--brand_1);
  opacity: .45;
}

/* С 990 таблица превращается в карточки: десять колонок в такую ширину
   не помещаются, а горизонтального скролла мы не хотим. До 768 карточки
   идут в два столбца, ниже — в один. Разметка та же, подписи полей
   берутся из data-label.

   Размеры сняты с макета «Клиенты адаптив» (402 px): карточка с полем 5
   и скруглением 15, белая плашка норм вписана в это поле со скруглением
   10, текст шапки отступает от края карточки на 15 — то есть 5 поля
   плюс 10 у самих строк. */
@media (max-width: 990px) {
  .clients {
    padding: 0;
    background-color: transparent;
  }

  .clients__scroll {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
  }

  .clients__row {
    position: relative;
    display: flex;
    flex-direction: column;
    /* у строки выравнивание по центру — в колонке это центрировало бы
       текст по горизонтали */
    align-items: stretch;
    gap: 0;
    padding: 5px;
    border-radius: var(--br-3);
    background-color: var(--bg-tertiary);
  }

  .clients__row:hover {
    background-color: var(--bg-tertiary);
  }

  /* Шапка таблицы в карточках не нужна: подписи стоят у каждого поля.
     Правило идёт после .clients__row, иначе display: flex его перебьёт. */
  .clients__row--head {
    display: none;
  }

  .main-title__count {
    display: block;
  }

  .clients__cell--date {
    order: -2;
    flex-direction: row;
    gap: 4px;
    padding: 10px 10px 0;
    font-size: 13px;
  }

  .clients__cell--date::before {
    content: attr(data-label);
  }

  .clients__cell--name {
    order: -1;
    gap: 0;
    /* справа место под кнопку карандаша: 40 кнопка плюс поля */
    padding: 6px 60px 0 10px;
    /* Имя H2, цель H3 (разметка 12.10). */
    font-size: var(--fs-h2);
    line-height: var(--lh-h2);
    letter-spacing: var(--ls-h2);
    font-weight: 500;
  }

  .clients__cell--goal {
    order: 0;
    padding: 2px 10px 0;
    font-size: var(--fs-h3);
    line-height: var(--lh-h3);
    letter-spacing: var(--ls-h3);
    font-weight: 500;
  }

  .clients__cell--payment {
    order: 1;
    padding: 4px 10px 14px;
  }

  /* В карточке сети норм нет, поэтому белой плашки тоже: карточка
     короткая — дата, имя, кто привёл, оплата. */
  .clients__cell--partner {
    order: 0;
    flex-direction: row;
    gap: 4px;
    padding: 2px 10px 0;
    font-size: 15px;
    color: var(--text-tertiary);
  }

  .clients__cell--partner::before {
    content: attr(data-label) ':';
  }

  .clients--network .clients__row {
    padding-bottom: 5px;
  }

  /* Карточка партнёра, макет 19.10: дата серым, имя крупно, код
     под именем обычным текстом, ниже белая плашка с двумя
     счётчиками. Подпись «Код партнёра» в карточке не нужна —
     код узнаётся по виду, а строка короче. */
  .clients--network .clients__cell--partner {
    order: 0;
    padding: 0 10px 12px;
    font-size: 16px;
    line-height: 19px;
    color: var(--text-primary);
  }

  .clients--network .clients__cell--partner::before {
    content: none;
  }

  .clients__cell--count {
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: 10px;
    padding: 7px 16px;
    background-color: var(--bg-primary);
    font-size: 16px;
    line-height: 19px;
  }

  .clients__cell--count::before {
    content: attr(data-label);
    color: var(--text-primary);
  }

  .clients__cell--active {
    order: 2;
    padding-top: 12px;
    border-top-left-radius: var(--br-4);
    border-top-right-radius: var(--br-4);
  }

  .clients__cell--inactive {
    order: 3;
    padding-bottom: 12px;
    border-bottom-left-radius: var(--br-4);
    border-bottom-right-radius: var(--br-4);
  }

  /* Белая плашка норм: пять строк подряд, скругления только у первой
     и последней. Шаг строки 33 — это 19 строки плюс по 7 сверху и снизу. */
  .clients__cell--stat {
    order: 3;
    flex-direction: row;
    justify-content: space-between;
    align-items: baseline;
    gap: 10px;
    padding: 7px 16px;
    background-color: var(--bg-primary);
    font-size: 16px;
    line-height: 19px;
  }

  .clients__cell--stat::before {
    content: attr(data-label);
    color: var(--text-primary);
  }

  .clients__cell--stat-first {
    order: 2;
    border-top-left-radius: var(--br-4);
    border-top-right-radius: var(--br-4);
  }

  .clients__cell--stat-last {
    order: 4;
    border-bottom-left-radius: var(--br-4);
    border-bottom-right-radius: var(--br-4);
  }

  /* Карандаш в правом верхнем углу: белая кнопка 40×40 со скруглением 15,
     отступ от края карточки 15 (5 поля плюс 10). */
  .clients__cell--arrow {
    position: absolute;
    top: 10px;
    right: 10px;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: var(--br-3);
    background-color: var(--bg-primary);
  }
}

@media (max-width: 990px) {
  .clients__scroll {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Список замен в окне: подгружается при открытии, поэтому без карусели —
   простая прокрутка вбок работает и с одним вариантом, и с двадцатью. */
.replace__list {
  display: flex;
  flex-direction: row;
  gap: 20px;
  overflow-x: auto;
  padding-bottom: 10px;
}

/* Карточка внутри варианта замены — обычный блок. Прежнее правило
   задавало ей flex-basis 240px; теперь она лежит в колоночном контейнере,
   и это стало фиксированной ВЫСОТОЙ — текст под фотографией обрезался
   overflow: hidden, и карточка выглядела как одна картинка. */
.replace__list .live {
  flex: 0 0 auto;
}

.replace__list .live__cover img {
  display: block;
  width: 100%;
  height: 160px;
  object-fit: cover;
  border-radius: var(--br-2);
}

.replace__loading,
.replace__empty {
  margin: 0 0 20px;
  font-size: var(--fs-p2);
  letter-spacing: var(--ls-p2);
  line-height: var(--lh-p2);
  color: var(--level_5);
}

/*==============================
  Recipe Switch Loader
==============================*/

.preloader-overlay {
  position: fixed;
  top: 100px;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: var(--level_1);
  display: flex;
  justify-content: start;
  align-items: start;
  z-index: 9999;
}

.preloader-content {
  padding: 0 0 0 48px;
  display: flex;
  flex-direction: column;
  align-items: center;
  color: var(--level_100);
}

.spinner {
  width: 140px;
  height: 140px;
  margin: 16px auto 24px 0;
  animation: spin 3s linear infinite;
}

@keyframes spin {
  100% { transform: rotate(360deg); }
}

.preloader-text-container {
  text-align: left;
}

.preloader-text-container p {
  display: flex;
  align-items: center;
  font-size: 1.1rem;
  color: var(--level_100);
  margin: 15px 0;
  opacity: 1; 
  transition: opacity 0.3s ease;
}

.preloader-text-container p::before {
  content: "";
  display: inline-block;
  margin-right: 16px;
  width: 24px;
  height: 24px;
  border-radius: 12px;
  background: var(--level_3) url("../img/checkmark_white.svg") no-repeat center center;
  background-size: 16px 16px;
  opacity: 0.2;
  transition: opacity 0.3s ease, color 0.3s ease;
}

.preloader-text-container p.complete::before {
  opacity: 1;
  color: #ffffff;
  background-color: var(--brand_1);
}

/*==============================
  Редизайн главной — макеты 06.10.2026
==============================*/

/* Размеры и отступы сняты из Figma (узел 9402-7935), не на глаз.
   Цвета текста в макете — #030712 и #9CA3AF, у нас в переменных #000000
   и #777777. Здесь оставлены переменные, чтобы не ломать тёмную тему;
   расхождение вынесено отдельным вопросом. */

/* ---- боковое меню ---- */

/* Селекторы в три класса не для красоты: выше в файле лежат
   `.sidebar__nav-link svg` и `.sidebar__nav-link svg:last-child`, и они
   перебили бы правила в один класс — иконка стала бы 16 px и серой.
   Иконка в пункте одна, то есть она же и last-child. */
.sidebar__nav .sidebar__nav-link .sidebar__nav-icon {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  /* в макете между иконкой и текстом 15 */
  margin: 0 15px 0 0;
  fill: none;
  stroke-width: 1.5;
  /* Иконка светлее подписи — icon/tertiary (правка 10.10): вровень
     с текстом она давала грязь. У активного пункта цвет наследуется
     от подписи, то есть остаётся белым на брендовой подложке. */
  color: var(--icon-tertiary);
  transition: none;
}

.sidebar__nav .sidebar__nav-link--active .sidebar__nav-icon,
.sidebar__nav .sidebar__nav-link[aria-expanded="true"] .sidebar__nav-icon {
  color: inherit;
}

/* Пункт меню по макету: высота 42 = 10 + 22 + 10. */
.sidebar .sidebar__nav-link {
  padding: 10px 20px;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
}

/* Заголовок группы «Клиенты»: 13/18.2, отступы 20 сверху и 8 снизу,
   слева 15 — он сдвинут левее пунктов. */
.sidebar__nav-group {
  width: 100%;
  padding: 20px 20px 8px 15px;
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  color: var(--text-tertiary);
  list-style: none;
}

/* Раздела «Клиенты сети» ещё нет: пункт виден, но никуда не ведёт. */
.sidebar__nav-link--soon,
.sidebar__nav-link--soon:hover {
  cursor: default;
  color: var(--text_2);
}

.sidebar__nav-soon {
  margin-left: auto;
  padding: 2px 8px;
  border-radius: 999px;
  background-color: var(--level_1);
  color: var(--text_2);
  font-size: 12px;
  line-height: 150%;
}

/* ---- полоса дней и карточки-входы ---- */

/* Обёртка нужна только ради порядка: на телефоне карточки идут выше
   полосы дней, на десктопе ниже. Две копии блока в разметке — худший
   вариант: они разъезжаются при первой же правке. */
.today-head {
  display: flex;
  flex-direction: column;
}

.today-head .week-nav-section { order: 1; }
.today-head .entry-cards { order: 2; }

/* Заголовок страницы основного меню — H1, как и в пачке (разметка
   12.10). Прежде здесь стоял `hero__title` — класс лендинга с полем
   сверху 30: из-за него заголовок стоял ниже кнопки, хотя строка
   выравнена по центру. */
.main__title h1.main__page-title,
.main-title .main__page-title {
  padding-top: 0;
  font-size: var(--fs-h1);
  letter-spacing: var(--ls-h1);
  font-weight: 500;
  line-height: var(--lh-h1);
}

/* Под заголовком страницы ряд карточек стоит на двадцати, а не на
   тридцати: тридцать — расстояние от полосы дней на главной. */
.main__title + .entry-cards {
  margin-top: 20px;
}

/* ---- карточки-входы ---- */

/* Четыре карточки в ряд: 1428 контейнера минус три зазора по 20
   дают 342 на карточку (макет 09.10). */
.entry-cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin: 30px 0 0;
}

/* Две карточки вместо четырёх — на «Фокусе». Правило стоит после
   базового: наоборот база его перебивала, и карточек оставалось
   четыре. На телефоне в одну колонку. */
.entry-cards--pair {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 990px) {
  .entry-cards--pair {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Карточка 342×80: поле 10, плашка 60, зазор до текста 14. */
.entry-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 14px;
  padding: 10px;
  height: 80px;
  border-radius: var(--br-1);
  background-color: var(--bg-secondary);
  text-decoration: none;
  transition: background-color 250ms ease;
}

/* Наведение у всех карточек одинаковое — рамка border/tertiary,
   фон не меняется (правило Андрея 09.10). Само правило ниже,
   в общем блоке для .live, .entry-card и .expert-card. */
.entry-card:hover {
  text-decoration: none;
}

/* Плашка 80×80, скругление 20, бренд на 20 %. Цвет берётся из --brand,
   в самой картинке он впечатан — перекрасить переменной её нельзя,
   см. задачу про белую метку в бэклоге. */
/* Плашка 60×60, внутри иконка 40×40. Было 80 — уменьшено 09.10. */
.entry-card__icon {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 0 0 60px;
  width: 60px;
  height: 60px;
  border-radius: var(--br-2);
}

/* На десктопе внутри плашки лежит готовая картинка из макета, она же
   задаёт и фон, поэтому сама плашка прозрачная. Иконка из спрайта
   остаётся для телефона — там плашка белая и рисунок другой. */
.entry-card__picture {
  display: block;
  width: 60px;
  height: 60px;
  border-radius: var(--br-2);
}

.entry-card__glyph {
  display: none;
}

.entry-card__text {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}

.entry-card__title {
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-primary);
}

.entry-card__subtitle {
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: var(--lh-p3);
  color: var(--text-tertiary);
}

/* ---- карточки кабинета на телефоне ---- */

.expert-cards {
  display: none;
}

/* ---- карточки контента ---- */

/* Карточка 25, изображение внутри 20, поля у карточки нет: по макету
   фотография лежит во всю ширину, а её собственное скругление работает
   на нижних углах и под бейджем. */
.live {
  border-radius: var(--br-1);
  background-color: var(--level_05);
}

.live .live__cover {
  border-radius: var(--br-2);
}

/* Текст карточки: сверху 15, по бокам и снизу 20, между строк 8. */
.live .live__title {
  padding: 15px 20px 0;
  line-height: 140%;
}

.live .live__subtitle {
  padding: 8px 20px 20px;
  line-height: 140%;
}

/* Бейдж «Новый» и кнопка замены стоят в 15 от края изображения. */
/* Бейдж — пилюля без рамки, цвета из токенов набора badge
   (компонент Shortcut, макет 10.10). По умолчанию белый с тёмным
   текстом; модификаторы дают остальные сочетания. */
.live .live__status {
  top: 15px;
  left: 15px;
  box-shadow: none;
  border-radius: 999px;
  background-color: var(--bg-primary);
  color: var(--text-primary);
}

.live__status--soon {
  background-color: var(--bg-badge-yellow);
  color: var(--text-badge-yellow);
}

.live__status--new {
  background-color: var(--text-badge-green);
  color: var(--text-white);
}

.live__status--count {
  background-color: var(--bg-primary);
  color: var(--text-tertiary);
}

/* Шеврон тот же, что на страницах пачки: иконка из набора маской,
   а не нарисованная в разметке. */
.main__link .btn-icon {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  background-color: currentColor;
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

/* Отклик у всех кнопок один — плёнка поверх цвета (правка 10.10),
   поэтому здесь цвета просто не меняются. Прежде таблетка
   на наведении становилась брендовой. */
.main__link:not(.main__link--dark):hover {
  background-color: var(--level_1);
  color: var(--text_1);
}

@media (max-width: 990px) {
  /* На телефоне входы идут строками во всю ширину и выше полосы дней,
     а список покупок стоит первым — порядок в разметке десктопный. */
  .today-head .entry-cards { order: 1; }
  .today-head .week-nav-section { order: 2; }

  /* Карточки строками во всю ширину, зазор 10 (макет 09.10). Плашка
     и иконка те же, что на десктопе: 60 и 40 — компонент один,
     меняется только состояние подложки. */
  .entry-cards {
    grid-template-columns: 1fr;
    gap: 10px;
    margin: 10px 0 0;
  }

  /* Модификатор теперь по имени иконки — карточка стала общим
     компонентом, и класс складывается из него. */
  /* На неделе питания на телефоне оставляем два входа — исключения
     и список покупок: параметры и рекомендации есть в шапке, а ряд
     из четырёх карточек занимал экран целиком (правка 12.10). */
  .entry-cards--week .entry-card--settings-01,
  .entry-cards--week .entry-card--chat-bubble {
    display: none;
  }

  .entry-card--cart        { order: 1; }
  .entry-card--file-minus  { order: 2; }
  .entry-card--settings-01 { order: 3; }
  .entry-card--chat-bubble { order: 4; }

  /* Две карточки кабинета в ряд: высота 94, зазор 10. */
  .expert-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin: 10px 0 0;
  }

  /* Высота по содержимому: текст плюс поля, без заданного минимума
     (правка 12.10). */
  .expert-card {
    gap: 4px;
    margin: 0;
    padding: 15px 20px;
    border-radius: var(--br-1);
  }

  .expert-card__label {
    font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
    line-height: var(--lh-p1);
  }

  /* Число в карточке на телефоне — H2, а не H3: оно главное
     в карточке (правка 12.10). */
  .expert-card__value {
    font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
    font-weight: 500;
    line-height: var(--lh-h2);
  }

  .expert-card--soon .expert-card__value {
    font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
    color: var(--text-tertiary);
  }
}

/* ---- полоса дней: размеры из Figma ---- */

/* Контейнер полосы: поле 8, зазор 12, скругление 25. Ширина по содержимому
   семи пилюль: 7×40 + 6×12 + 16 = 368, в макете 373 — дни с широкими
   названиями чуть шире. */
.week-nav-section .week-nav {
  gap: 12px;
  padding: 8px;
  max-width: 373px;
  border-radius: var(--br-1);
}

/* Пилюля дня 40×73, поле сверху 8, скругление круглое. */
.week-nav-section .week-nav__day {
  width: 40px;
  height: 73px;
  padding: 8px 2px 2px;
  border-radius: 999px;
  gap: 4px;
  justify-content: flex-start;
}

.week-nav-section .week-nav__name {
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
}

/* Внутри — не круг, а пилюля 36×41 с числом 18 Medium. */
.week-nav-section .week-nav__date {
  width: 36px;
  height: 41px;
  border-radius: 999px;
  border: none;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
}

/* ---- заголовок раздела ---- */

/* 24/33.6 Medium, отступ сверху 30, до карточек 20. */
.main__title h2 {
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  line-height: var(--lh-h2);
  font-weight: 500;
}

/* ---- кнопка замены и бейдж на карточке ---- */

/* Кнопка 40×40, скругление 15, полупрозрачный белый фон. */
.live .replace__button {
  width: 40px;
  height: 40px;
  top: 15px;
  right: 15px;
  border-radius: var(--br-3);
  background-color: rgba(255, 255, 255, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
}

.live .replace__button img {
  width: 20px;
  height: 20px;
}

/* При наведении кнопка замены перестаёт просвечивать (макет 10.10). */
.live .replace__button {
  transition: background-color 250ms ease;
}

.live .replace__button:hover {
  background-color: var(--bg-primary);
  transform: none;
}

/* Бейдж «Новый»: белая пилюля без кольца, текст 13 обычным регистром. */
.live .live__status {
  height: 20px;
  padding: 0 8px;
  border-radius: 100px;
  background: var(--level_0);
  box-shadow: none;
  font-size: 13px;
  font-variant: normal;
  letter-spacing: normal;
  color: var(--text_2);
}

@media (max-width: 990px) {
  /* На телефоне полоса дней тянется во всю ширину — семь пилюль
     в 375 px иначе не помещаются. */
  .week-nav-section .week-nav {
    max-width: none;
    padding: 8px 0;
  }
}

/* ---- ритм секций и шапка ---- */

/* По макету заголовок раздела отбит сверху на 30, а до карточек 20.
   Раньше было 80 и 10 — разделы стояли вдвое реже. Заголовок встречается
   только в слайдерах и пустом состоянии, то есть на страницах «Сегодня»,
   «Питание», «Активность» и «Баланс»: лендинга правка не касается.

   !important здесь не прихоть: выше в файле у `.mtradio` и у правила
   «заголовок после полосы дней» уже стоит !important, и без него они
   перебьют эти значения. Это место — кандидат на вычистку вместе
   с переходом на токены. */
.main .main__title,
.main .main__title.mtradio {
  /* Вертикальный ритм страницы (10.10): между секциями 55 —
     это спейсер 30, общий для всей страницы, плюс 25 собственного
     верхнего отступа заголовка. От заголовка до содержимого — 20. */
  margin-top: 30px !important;
  padding-top: 25px;
  margin-bottom: 20px;
}

.week-nav-section + .row--grid .main__title,
.week-nav-section + .row--grid .main__title.mtradio {
  margin-top: 30px !important;
}

/* Под заголовком секции со слайдером было 40 вместо 20: свои 20 добавляла
   обёртка карусели. Отступы заголовка и обёртки не схлопывались — они
   лежат в разных колонках сетки, а колонка это флекс-элемент, внутри
   которого отступы наружу не выходят. Расстояние задаёт только заголовок.
   Окно замены не затронуто: там нет сетки `.row`. */
.row .main__carousel-wrap {
  margin-top: 0;
}

/* Заголовок страницы живёт по тому же правилу, что и заголовок секции:
   30 спейсера, 25 своего отступа сверху, 20 до содержимого. Прежде
   у него было 80 сверху и 40 снизу, и страницы кабинета стояли иначе,
   чем главная. */
.main .main-title {
  margin-top: 30px;
  padding-top: 25px;
  margin-bottom: 20px;
  gap: 4px;
}

.main .main-title .hero__title {
  padding-top: 0;
}

/* На телефоне сверху меньше: шапка и так занимает экран, и 55 над
   заголовком читались как провал (правка 12.10). */
@media (max-width: 990px) {
  .main .main-title {
    margin-top: 0;
    padding-top: 20px;
  }
}

/* Аватар в шапке: круглый, 40×40, на светло-сером. Буква — обычным
   начертанием 16, как в макете, а не полужирным 18. */
.header__action .avatar {
  background-color: var(--level_1);
  border-radius: 100px;
}

.header__action .avatar .avatar-text {
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  font-weight: 400;
  color: var(--text_1);
}

/* ---- тёмная тема для новых блоков ---- */

/* На телефоне плашка иконки белая. В тёмной теме --level_0 — чёрный,
   и плашка слилась бы с карточкой: обе почти чёрные. Берём на тон выше. */
@media (max-width: 990px) {
  .dark .entry-card__icon {
    background-color: var(--level_2);
  }
}

/* Картинки плашек на десктопе нарисованы под светлый фон. В тёмной теме
   они остаются светло-голубыми пятнами — это заметно, но лучше, чем
   невидимые иконки. Правильное решение — второй набор картинок,
   вынесено вопросом. */

/* Карточка дня на страницах недели — то же правило, что и у карточек
   рецептов: сама карточка 25, изображение внутри 20. */
.day-item-full img,
.day-item-full video {
  border-radius: var(--br-2);
}

/* ---- кликабельная карточка и наведение ---- */

/* Ссылка-подложка: закрывает карточку целиком. Прозрачная, поэтому
   на вид ничего не меняет, но кликается всё поле, а не фото с заголовком.
   Кнопка замены лежит выше (z-index 999) и перехватывает клик сама. */
/* Ссылка растянута на всю карточку, включая фотографию. Было z-index 1,
   столько же, сколько у картинки внутри обложки, — при равном уровне
   выигрывает тот, кто ниже в разметке, то есть картинка. Нажатие
   по фото не срабатывало (правка 10.10).

   Второй уровень ставит ссылку выше фотографии, но ниже бейджа (3)
   и кнопки замены (999) — они остаются кликабельными и видимыми. */
.live__link {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
}

/* Отступ кнопки замены — 10 от верхнего и правого края. */
.live .replace__button {
  top: 10px;
  right: 10px;
}

/* Наведение: рамка на два шага темнее фона карточки. Шкала уровней
   устроена так, что это работает в обеих темах — в светлой --level_2
   темнее фона, в тёмной светлее, то есть рамка видна и там и там.

   Рамка прозрачная по умолчанию: иначе на наведении карточка меняла бы
   размер на два пикселя и строка карточек подрагивала. */
.live,
.entry-card,
.expert-card {
  border: 1px solid transparent;
  transition: border-color 250ms ease;
}

.live:hover,
.entry-card:hover,
.expert-card:hover {
  border-color: var(--border-tertiary);
}

/*==============================
  Окно замены рецепта — макеты 06.10.2026
==============================*/

/* Окно 1000 в ширину, скругление 25, белое. На десктопе занимает высоту
   экрана целиком, содержимое прокручивается внутри. */
.modal-replace {
  width: 100%;
  max-width: 1000px;
  min-width: 375px;
  margin: 0 auto;
  padding: 0;
  background-color: var(--level_0);
  border: none;
  border-radius: var(--br-1);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

/* Шапка окна: полоса 80 с полем 20, в ней только кнопка закрытия справа. */
.modal-replace__header {
  display: flex;
  justify-content: flex-end;
  flex: 0 0 auto;
  padding: 20px;
}

.modal-replace .modal-replace__close {
  /* Старое правило .modal__close ставит кнопку абсолютом в угол окна —
     здесь она лежит в шапке потоком, поэтому позиционирование снимаем. */
  position: static;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 10px;
  border: none;
  border-radius: var(--br-3);
  background-color: var(--level_1);
  color: var(--text_1);
  transition: background-color 250ms ease;
}

.modal-replace .modal-replace__close:hover {
  background-color: var(--level_2);
}

.modal-replace .modal-replace__close svg {
  width: 20px;
  height: 20px;
  fill: currentColor;
  /* у .modal__close svg стоит прозрачность 0.6 — крестик был бы блёклым */
  opacity: 1;
}

/* Содержимое: поля 40 по бокам, 80 снизу. Сверху полоса с крестиком уже
   дала 80, поэтому здесь верхнего отступа нет. */
.modal-replace__body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 0 40px 80px;
}

.modal-replace__title {
  margin: 0 0 20px;
  font-size: var(--fs-h2);
  letter-spacing: var(--ls-h2);
  font-weight: 500;
  line-height: var(--lh-h2);
  color: var(--text_1);
}

/* Вариант замены: карточка и под ней кнопка, между ними 10. */
.replace-option {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.replace-option__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  padding: 10px 15px;
  border-radius: var(--br-3);
  background-color: var(--text_1);
  color: var(--level_0);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  text-decoration: none;
  transition: background-color 250ms ease;
}

.replace-option__button:hover {
  background-color: var(--brand_1);
  color: var(--btn-text);
  text-decoration: none;
}

/* Пустое состояние: иконка, под ней текст, всё по центру. */
.replace__empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 40px 0;
  margin: 0;
}

.replace__empty[hidden] {
  display: none;
}

.replace__empty-icon {
  width: 48px;
  height: 48px;
  fill: currentColor;
  color: var(--level_2);
}

.replace__empty-text {
  margin: 0;
  max-width: 520px;
  text-align: center;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--text_2);
}

/* Список вариантов: три в ряд с зазором 20, при нехватке места
   прокручивается вбок. */
.replace__group {
  padding: 0;
}

.replace__list {
  display: flex;
  flex-direction: row;
  gap: 20px;
  overflow-x: auto;
  padding-bottom: 10px;
}

.replace__list .replace-option {
  flex: 0 0 345px;
}

/* Фотография заполняет квадратную рамку, как на карточках «Сегодня».
   Прежнее height: auto ломало пропорцию: карточки с разными снимками
   получались разной высоты. */
.replace__list .live__cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Высоту держит сама обложка, а не картинка внутри. С заглушкой
   у картинки есть поле в четверть ширины, и при height: 100%
   карточка вытягивалась на весь экран — высота считалась от
   содержимого, а содержимое от высоты. */
/* Курсор протяжки: размеры карточек живут ниже, в блоке
   «окно замены: размеры и прокрутка». */
.replace__list {
  cursor: grab;
}

.replace__list.is-dragging {
  cursor: grabbing;
  user-select: none;
}

/* Снимок нельзя утащить мышью: иначе браузер начинает своё
   перетаскивание картинки, а ряд остаётся на месте. */
.replace__list img {
  -webkit-user-drag: none;
  user-select: none;
}

/* Заглушка — не фотография: её нельзя кадрировать, иначе от рисунка
   остаётся середина. Вписываем целиком и даём поля. */
.live__cover--placeholder img {
  object-fit: contain;
  padding: 25%;
  background-color: var(--level_1);
}

/* Размеры окна заданы ниже, в блоке «окно замены: размеры и прокрутка»:
   держать их в двух местах — верный способ получить спорящие правила. */

/*==============================
  Состояния наведения — правила 06.10.2026
==============================*/

/* Значения взяты из набора токенов: bg/black-solid и его hover.
   В тёмной теме чёрная кнопка становится светлой, поэтому «на шаг
   светлее» там превращается в «на шаг темнее» — пара значений та же,
   что в токенах. */
/* Чёрная кнопка берёт цвет из токенов: там уже есть пара для тёмной
   темы, где «чёрная» становится светлой. */
:root {
  --black-solid: var(--bg-black-solid);
  --black-solid-hover: var(--bg-black-solid-hover);
}

/* То же правило подстановки, что и у остальных алиасов выше. */
.dark {
  --black-solid: var(--bg-black-solid);
  --black-solid-hover: var(--bg-black-solid-hover);
}

/* Чёрная кнопка — такой же вариант, как основная и вторичная,
   поэтому у неё свой класс. Два места, где она появилась раньше класса,
   перечислены рядом, пока у них свои размеры и раскладка. */
.btn-dark,
.main__link--dark,
.replace-option__button {
  background-color: var(--black-solid);
  color: var(--level_0);
}

/* Остальное у чёрной кнопки общее с другими вариантами. */
.btn-dark {
  border-radius: var(--br-3);
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  font-weight: 400;
  position: relative;
  z-index: 2;
  margin: 15px 0px;
  padding: 0 15px;
  transition: 250ms ease;
  white-space: nowrap;
  border: 0;
}

.btn-dark:hover,
.main__link--dark:hover,
.replace-option__button:hover {
  background-color: var(--black-solid-hover);
  color: var(--level_0);
}

/* Пункты меню: при наведении фон на шаг темнее фона самого меню.
   Активный пункт не трогаем — он уже брендовый. */
.sidebar .sidebar__nav-link:hover {
  background-color: var(--level_1);
  color: var(--text_1);
}

.sidebar .sidebar__nav-link--active:hover {
  background-color: var(--brand_1);
  color: var(--btn-text);
}

/* Переход цвета у пункта меню убран: класс активного ставит сервер,
   анимировать нечего, а при наличии перехода первая отрисовка давала
   заметное перетекание цвета. */
.sidebar .sidebar__nav-link {
  transition: background-color 250ms ease;
}

/* Плашка иконки на карточке-входе: картинки теперь без фона, значит
   фон задаётся здесь и его можно менять вместе с брендом. */
.entry-card__icon {
  background-color: rgba(56, 52, 249, 0.2);
}

.entry-card .entry-card__picture {
  width: 48px;
  height: 48px;
  border-radius: 0;
}

@media (max-width: 990px) {
  /* На телефоне плашка белая и меньше — картинка в ней 24. */
  .entry-card__icon {
    background-color: var(--level_0);
  }

  .dark .entry-card__icon {
    background-color: var(--level_2);
  }
}

/* ---- окно замены: размеры и прокрутка ---- */

/* Высота окна одинаковая в обоих состояниях — и со списком вариантов,
   и с «ничего не нашлось». Если бы высота зависела от содержимого,
   окно прыгало бы в момент, когда список подгрузился. */
.modal-replace {
  height: 740px;
  max-height: calc(100vh - 80px);
  margin: 40px auto;
  border-radius: var(--br-1);
}

/* Тело окна не прокручивается само: прокручивается только список
   вариантов, и только вбок. */
.modal-replace__body {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.modal-replace__title {
  flex: 0 0 auto;
}

/* Список занимает всю оставшуюся высоту. min-height нужен, иначе
   флексовый ребёнок не даёт себя сжать и выдавливает кнопки за окно. */
.replace__group {
  flex: 1 1 auto;
  min-height: 0;
  /* Карточки должны уходить под край окна, а не обрезаться по полю:
     прокрутка во всю ширину, а отступ слева и справа даёт padding.

     width: auto обязателен. Выше в файле у блока стоит width: 100%,
     и с ним отрицательные поля не расширяют блок, а сдвигают его влево:
     ширина остаётся прежней, правый край уезжает внутрь — карточки
     обрезались, не доходя до края окна. */
  width: auto;
  margin: 0 -40px;
}

.replace__list {
  padding: 0 40px 10px;
  /* Карточки по содержимому, а не во всю высоту окна: с квадратным
     фото растяжка давала пустое поле под названием в пол-экрана. */
  align-items: flex-start;
}

.replace__list .replace-option {
  flex: 0 0 345px;
}

.replace__list .live {
  height: auto;
  width: 100%;
}

/* Фото квадратное, как на карточке рецепта. Высоту задаёт пропорция,
   а не число: иначе при другой ширине карточки снимок обрежется
   не так, как в макете. */
.replace__list .live__cover {
  flex: 0 0 auto;
  width: 100%;
  aspect-ratio: 1 / 1;
  height: auto;
  overflow: hidden;
  border-radius: var(--br-2);
}

.replace__list .live__cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.replace__list .live__cover--placeholder img {
  object-fit: contain;
  padding: 20%;
}

/* Высоту карточке задаёт окно, а не снимок. На невысоком экране
   квадратное фото 345 вместе с названием и кнопкой не влезало
   в окно, и «Выбрать» уходила под нижний край — заменить рецепт
   было нечем (QA 22.10, ноутбук 1440×700). Снимок в этом случае
   кадрируется: пропорция важна, но не ценой кнопки. На высоком
   экране остаётся прежний квадрат. */
.replace__list .live__cover {
  max-height: min(345px, 40vh);
}

/* Пустое состояние занимает ту же площадь и стоит по центру. */
.replace__empty {
  flex: 1 1 auto;
  justify-content: center;
}

/* Когда замен не нашлось, заголовок скрываем — по макету его там нет.
   И прячем пустой список: он тоже растягивался, делил свободную высоту
   с текстом пополам, и текст вставал в середину верхней половины окна,
   а не окна целиком. */
.modal-replace--empty .modal-replace__title,
.modal-replace--empty .replace__group {
  display: none;
}

@media (max-width: 1199px) {
  .modal-replace__body {
    padding: 0 15px 40px;
  }

  .modal-replace__header {
    padding: 15px;
  }

  /* На телефоне окно во весь экран с полем 20 со всех сторон
     (правка 12.10). Поля задаёт только само окно: у контейнера
     magnific свои пятнадцать по бокам, и ширина складывалась
     из двух мест — окно вылезало вправо и вниз. */
  .mfp-container {
    padding: 0 !important;
  }

  .modal-replace,
  .modal.modal-goals {
    width: calc(100vw - 40px);
    /* 100vh на телефоне считается вместе с панелями браузера, и низ
       окна уходил под них. dvh считает видимую часть; строка выше —
       запасной вариант для старых браузеров. */
    height: calc(100vh - 40px);
    height: calc(100dvh - 40px);
    max-height: none;
    max-width: none;
    /* Нижняя граница ширины с десктопа здесь мешает: на экране 390
       окно получало 375 вместо 350, и правое поле уходило в минус —
       слева было двадцать, справа минус пять (найдено владельцем
       17.10). Поля задаёт только margin. */
    min-width: 0;
    margin: 20px;
  }

  .replace__group {
    margin: 0 -15px;
  }

  .replace__list {
    padding: 0 15px 10px;
  }

  .replace__list .replace-option {
    flex: 0 0 280px;
  }
}

/* ---- высота карточки и отступы текста ---- */

/* Разбор 06.10 в браузере показал настоящую причину «лишнего отступа
   снизу»: у подписи стоял margin-bottom 16 — дефолт бутстрапа для <p>.
   Он и добавлял воздух под текстом, сколько бы мы ни правили padding.
   У названия та же история: margin-bottom 8 у <h3>.

   Поведение, к которому пришли:
   — карточки в ряду одной высоты, тянутся под самую высокую;
   — название прижато к верху текстового блока;
   — подпись прижата к низу, и под ней ровно 20;
   — свободное место, если название короткое, уходит между названием
     и подписью — тогда подписи соседних карточек стоят на одной линии.

   На стенде с настоящими стилями это даёт карточку 452 — ровно столько
   же, сколько в макете. */
.live {
  height: 100%;
}

.live .live__title {
  margin-bottom: 0;
}

.live .live__subtitle {
  margin-top: auto;
  margin-bottom: 0;
  padding: 8px 20px 20px;
}

/* Кнопка «Выбрать» — по центру карточки по горизонтали. */
.replace__list .replace-option__button {
  align-self: center;
}

/* ---- экран ожидания при замене рецепта ---- */

/* Ожидание показывается внутри того же окна, а не поверх всего экрана:
   окно остаётся на месте и не меняет размер, поэтому переход к ожиданию
   не дёргает страницу. Раньше панель была fixed во весь экран — и само
   окно при этом пропадало из виду.

   position: absolute считается от .modal — у него position: relative. */
.preloader-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  background-color: var(--level_0);
  border-radius: var(--br-1);
}

.preloader-overlay .preloader-content {
  padding: 0;
  gap: 30px;
  align-items: center;
}

.preloader-overlay .preloader-text-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ---- экран ожидания: по макету 10024-17004 ---- */

/* Иконка вместо крутящегося логотипа: он из макета убран. */
.preloader-overlay .preloader-icon {
  width: 48px;
  height: 48px;
  fill: currentColor;
  color: var(--level_2);
}

.preloader-overlay .preloader-content {
  gap: 60px;
}

/* Шаги — блок, выровненный по левому краю, сам стоит по центру.
   Текст у всех трёх начинается с одной линии: место под галочку
   занято всегда, даже когда её не видно. */
.preloader-overlay .preloader-text-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
  text-align: left;
}

.preloader-overlay .preloader-text-container p {
  margin: 0;
  gap: 12px;
  font-size: 16px;
  line-height: 140%;
  color: var(--text_2);
}

/* Галочка: чёрный круг с вырезанным знаком. До выполнения шага
   место занято, но ничего не нарисовано. */
.preloader-overlay .preloader-text-container p::before {
  content: "";
  display: block;
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  margin: 0;
  border-radius: 0;
  background: url("../img/icons/check-circle.svg") no-repeat center / 24px 24px;
  opacity: 0;
  transition: opacity 200ms ease;
}

.preloader-overlay .preloader-text-container p.complete::before {
  opacity: 1;
  background-color: transparent;
}

.preloader-overlay .preloader-text-container p.complete {
  color: var(--text_1);
}

/*==============================
  Шапка: ссылки разделов — макет 09.10
==============================*/

/* Быстрый переход с любой страницы. Цвета — смысловые токены:
   новые правила литералов не содержат. */
.header__links {
  display: flex;
  align-items: center;
  gap: 24px;
  margin-right: 24px;
}

.header__link {
  color: var(--text-secondary);
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  white-space: nowrap;
  transition: color 250ms ease;
}

.header__link:hover {
  color: var(--text-primary);
}

.header__link.active {
  color: var(--text-primary);
}

/* На телефоне ссылки прячем: там те же разделы живут карточками
   на «Сегодня» и в меню под аватаром. */
@media (max-width: 991px) {
  .header__links {
    display: none;
  }
}

/* Подложка карточки-входа без картинки: место под иконку, которая
   придёт с выгрузкой набора. */
.entry-card__icon--empty {
  width: 60px;
  height: 60px;
  border-radius: var(--br-2);
  background-color: var(--bg-quartiary);
  flex-shrink: 0;
}

/*==============================
  Геймификатор: бейдж с иконкой — макеты 10.10.2026
==============================*/

/* Бейдж 60×60, внутри иконка 40×40. Подложка — цветной SVG из набора,
   иконка — тот же файл библиотеки, покрашенный градиентом «White 80».

   Красим маской, а не правкой файлов: иконок в библиотеке больше тысячи,
   и у каждой свой зашитый цвет. Маска берёт из файла только форму,
   цвет приходит из CSS. Новая иконка подключается без редактирования. */
.gamificator {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 60px;
  width: 60px;
  height: 60px;
  background-image: url("/img/badges/badge-10-grey.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
}

/* Градиент из стиля Figma «White 80»: белый 20% снизу к белому 100%
   сверху. Маска вырезает из него форму иконки. */
.gamificator__icon {
  width: 40px;
  height: 40px;
  background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, #FFFFFF 100%);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

/* Форма бейджа и цвет задаются модификаторами: файл один на сочетание,
   имена по схеме badge-<сторон>-<цвет>. Серый — состояние «не сделано». */
.gamificator--4  { background-image: url("/img/badges/badge-4-grey.svg"); }
.gamificator--5  { background-image: url("/img/badges/badge-5-grey.svg"); }
.gamificator--6  { background-image: url("/img/badges/badge-6-grey.svg"); }
.gamificator--7  { background-image: url("/img/badges/badge-7-grey.svg"); }
.gamificator--8  { background-image: url("/img/badges/badge-8-grey.svg"); }
.gamificator--10 { background-image: url("/img/badges/badge-10-grey.svg"); }

/*==============================
  Кнопки: слой состояния — решение 10.10.2026
==============================*/

/* Наведение и нажатие показывает полупрозрачная плёнка поверх кнопки,
   а не второй цвет. Причина: брендовый цвет будет задаваться в рантайме,
   под каждого эксперта, и вычислить его оттенок заранее нельзя —
   ни препроцессором, ни парой токенов. Плёнка работает с любым цветом,
   включая тот, которого мы ещё не видели.

   Плёнка сделана внутренней тенью, а не псевдоэлементом. Первая версия
   была на ::after с position: relative — и сломала крестик в раскладке
   simplex: он объявлен `position: fixed`, а правило кнопок стояло ниже
   и при равном весе перебило его на relative. Крестик уехал за левый
   край. Внутренняя тень не трогает позиционирование вообще и так же
   обрезается скруглением. */

/* Осветляется только чёрная кнопка — ей некуда темнеть. Все остальные,
   включая брендовую, затемняются (правка 10.10). Плотность вдвое меньше
   первой версии: на плотном цвете шесть процентов читаются как нажатие,
   двенадцать — как другой цвет. */
.btn-dark:hover,
.main__link--dark:hover,
.replace-option__button:hover {
  box-shadow: inset 0 0 0 100vmax rgba(255, 255, 255, 0.06);
}

.btn-dark:active,
.main__link--dark:active,
.replace-option__button:active {
  box-shadow: inset 0 0 0 100vmax rgba(255, 255, 255, 0.1);
}

/* Брендовая — затемняется, как и светлые. */
.btn-primary:hover {
  box-shadow: inset 0 0 0 100vmax rgba(0, 0, 0, 0.06);
}

.btn-primary:active {
  box-shadow: inset 0 0 0 100vmax rgba(0, 0, 0, 0.1);
}

/* Светлые — вторичная и с рамкой. На светлом фоне тот же процент
   заметнее, поэтому здесь плотность ниже. */
.btn-secondary:hover,
.btn-outline:hover,
.main__link:not(.main__link--dark):hover {
  box-shadow: inset 0 0 0 100vmax rgba(0, 0, 0, 0.03);
}

.btn-secondary:active,
.btn-outline:active,
.main__link:not(.main__link--dark):active {
  box-shadow: inset 0 0 0 100vmax rgba(0, 0, 0, 0.05);
}

/* Прежние ховеры отменяем: смена фона вторым цветом и увеличение
   на два процента. Состояние теперь показывает только плёнка. */
.btn-primary:hover,
.btn-secondary:hover,
.btn-outline:hover,
.btn-dark:hover,
.main__link:hover,
.replace-option__button:hover {
  transform: none;
}

.btn-secondary:hover {
  background-color: var(--bg-tertiary);
}

.btn-dark:hover,
.main__link--dark:hover,
.replace-option__button:hover {
  background-color: var(--black-solid);
}

/* У неактивной кнопки плёнки нет вовсе. */
.btn-primary[disabled],
.btn-primary[disabled]:hover,
.btn-secondary[disabled],
.btn-secondary[disabled]:hover,
.btn-outline[disabled],
.btn-outline[disabled]:hover,
.btn-dark[disabled],
.btn-dark[disabled]:hover {
  box-shadow: none;
}

/* Модификатор «круглая» стоит в самом конце файла намеренно: радиус
   объявлен и у вариантов кнопок, и у малого размера, а при равном весе
   селекторов выигрывает тот, что ниже. Стоял выше — и чёрная кнопка
   с этим модификатором оставалась со скруглением 15.

   Радиус больше половины высоты даёт пилюлю при любом размере, поэтому
   модификатор один на все. */
.btn-round {
  border-radius: 999px;
}

/* Поле со стороны иконки меньше на 5: иконка сама по себе отбита
   внутренними пустотами, и с одинаковыми полями кнопка выглядит
   перекошенной. Правило общее для всех кнопок с иконкой. */
/* Зазор между текстом и иконкой. Кнопка — флекс-контейнер, поэтому
   перенос строки в разметке между текстом и иконкой схлопывается
   в ничто: без `gap` иконка прилипает к последней букве (правка 16.10). */
.btn-icon-right {
  padding-right: 10px;
  gap: 5px;
}

.btn-icon-left {
  padding-left: 10px;
  gap: 5px;
}

/*==============================
  Баланс дня: карточки нутриентов — макет 10.10.2026
==============================*/

/* Шкалы палитры приходят генератором в tokens.css: прежде восемь
   значений лежали здесь руками, скопированные из Figma глазами
   (10.10). Сверено при переносе 16.10 — все совпали. */

/* Отступ сверху даёт заголовок внутри секции — он такой же, как
   у остальных секций главной. Снизу нужен свой: ряд карточек низкий,
   и без него «Активность» вставала вплотную (правка 10.10). Это
   padding, а не margin: соседние margin схлопываются, и отступ
   не появился бы. */
.balance {
  /* Сверх общего ритма: значки стоят плотным рядом и без этого
     склеиваются со следующей секцией. 30 к 55 ритма — итого 85
     до заголовка «Активность сегодня». */
  padding-bottom: 30px;
}

.balance-row {
  display: flex;
  flex-wrap: wrap;
  /* Группы отбиты пустой ячейкой, поэтому между карточками внутри
     группы хватает двенадцати: прежние сорок были нужны, когда ряд
     шёл сплошной лентой без разделителей (макет 17.10). */
  gap: 12px;
  margin-top: 20px;
}


/* Карточка 60×80, пилюлей. Заливка и тень — значения из Figma,
   не из токенов: в смысловом наборе такой пары нет, а градиенты
   подобраны под сам компонент (макет 17.10).

   Тень цветная и мягкая — 0 5 15 при 15% — поэтому карточка
   не прилипает к белому фону. */
.balance-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 60px;
  height: 80px;
  padding: 0;
  border: 0;
  border-radius: 30px;
  background-image: linear-gradient(180deg, #4CEB78 0%, #14A341 100%);
  box-shadow: 0 5px 15px rgba(43, 212, 95, 0.15);
  color: var(--text-white);
  font-size: var(--fs-small);
  letter-spacing: var(--ls-small);
  line-height: var(--lh-small);
  font-weight: 500;
  cursor: pointer;
  /* Та же пружина, что у нажатия на кнопках. */
  transition: scale var(--duration-spring) var(--ease-spring);
}

.balance-card--ng {
  background-image: linear-gradient(180deg, #FFA87F 0%, #E02629 100%);
  box-shadow: 0 5px 15px rgba(242, 56, 58, 0.15);
}

.balance-card__icon {
  display: block;
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  background-color: var(--b-w-white);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.balance-card__code {
  display: block;
}

/* Наведение уводит карточку внутрь, а не наружу: то же движение,
   что у кнопок при нажатии, только здесь поводом служит наведение
   (решение владельца 17.10). Прежний рост на 8% выталкивал карточку
   из ряда и наезжал на соседей. */
.balance-card:hover {
  scale: var(--press-scale);
}

@media (prefers-reduced-motion: reduce) {
  .balance-card:hover {
    scale: none;
  }
}


/* Подсказка: название сверху, процент крупно. Появляется над карточкой,
   хвостик снизу по центру. */
/* Выше бокового меню: у него 101, и подсказка у левого края уходила
   под него. */
.balance-popover {
  position: absolute;
  z-index: 200;
  min-width: 180px;
  padding: 20px;
  border-radius: var(--br-1);
  background-color: var(--bg-primary);
  box-shadow: var(--shadow_1);
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 250ms ease, transform 250ms ease;
}

.balance-popover--visible {
  opacity: 1;
  transform: translateY(0);
}

.balance-popover::after {
  content: "";
  position: absolute;
  bottom: -7px;
  left: 50%;
  width: 14px;
  height: 14px;
  margin-left: -7px;
  background-color: var(--bg-primary);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
}

.balance-popover__title {
  display: block;
  font-size: var(--fs-p1);
  letter-spacing: var(--ls-p1);
  line-height: var(--lh-p1);
  color: var(--text-primary);
}

.balance-popover__value {
  display: block;
  margin-top: 12px;
  font-size: var(--fs-h3);
  letter-spacing: var(--ls-h3);
  font-weight: 500;
  line-height: var(--lh-h3);
  color: var(--text-primary);
}

.balance-popover__value b {
  font-weight: 500;
}

/* Раздел «Баланс»: день за днём. Между днями расстояние меньше, чем
   между секциями на главной — это один список, а не разные разделы. */
.balance--day {
  margin-top: 40px;
}

.balance__summary {
  margin: 0;
  font-size: var(--fs-p3);
  letter-spacing: var(--ls-p3);
  line-height: var(--lh-p3);
  color: var(--text-tertiary);
}

.balance--day .balance-row {
  margin-top: 15px;
}

@media (max-width: 990px) {
  .balance {
    margin-top: 40px;
  }

  .balance-row {
    gap: 8px;
  }
}

/*==============================
  Поля: наведение и шеврон (правка 12.10)
==============================*/

/* Наведение такое же, как у карточек: появляется рамка
   border/tertiary, фон не меняется. У полей рамка уже есть —
   она цвета подложки, поэтому ничего не дёргается. */
.floating-input,
.floating-select {
  transition: border-color 250ms ease;
}

.floating-input:hover,
.floating-select:hover {
  border-color: var(--border-tertiary);
}

/* У обёртки селекта рамки не было вовсе — добавляем прозрачную,
   иначе при наведении поле подрастало бы на два пикселя. */
.floating-label-1,
.floating-label-3 {
  border: 1px solid transparent;
  transition: border-color 250ms ease;
}

.floating-label-1:hover,
.floating-label-3:hover {
  border-color: var(--border-tertiary);
}

/* Лестница состояний рамки у полей и селектов (правка 16.10):

   | состояние | рамка |
   |---|---|
   | покой | цвет подложки, рамки не видно |
   | наведение | border/secondary |
   | нажатие и фокус | border/primary |

   Два правила, которые легко потерять:

   **Наведение на нажатое или сфокусированное не осветляет рамку.**
   Курсор при нажатии почти всегда над полем, а после клика поле
   остаётся сфокусированным под тем же курсором — без явных пар
   `:active:hover` и `:focus:hover` ховер перебивал бы оба.

   **Фокус держится до снятия.** Пока курсор в поле, рамка тёмная,
   даже если мышь ушла в сторону.

   Порядок правил значим: при равной специфичности побеждает
   последнее, поэтому они идут после ховера. */
.floating-input:hover,
.floating-select:hover {
  border-color: var(--border-secondary);
}

.floating-label-1:hover,
.floating-label-3:hover {
  border-color: var(--border-secondary);
}

/* Пока список открыт, обёртка стоит над соседями и не пружинит.

   Нашлось 16.10: при нажатии на селект обёртка уезжает в масштаб
   и возвращается пружиной за 0,45 с. Всё это время браузер держит
   её на отдельном слое, и раскрытый вверх список оказывался под
   соседними кнопками — «О целях» и «Сменить email» секунду висели
   поверх списка. Поднимаем обёртку и гасим на это время анимацию:
   зумить открытый список незачем. */
.floating-label-1:has(.show),
.floating-label-3:has(.show) {
  position: relative;
  z-index: 1001;
  scale: none;
  transition: none;
}

.floating-input:active,
.floating-input:active:hover,
.floating-input:focus,
.floating-input:focus:hover,
.floating-select:active,
.floating-select:active:hover,
.floating-select:focus,
.floating-select:focus:hover,
.floating-label-1:active,
.floating-label-1:active:hover,
.floating-label-1:focus-within,
.floating-label-1:focus-within:hover,
.floating-label-3:active,
.floating-label-3:active:hover,
.floating-label-3:focus-within,
.floating-label-3:focus-within:hover {
  border-color: var(--border-primary);
}

/* Шеврон селекта рисуем своим слоем, а не фоном: фоновую картинку
   не перевернуть, а она должна смотреть вверх, пока список открыт.
   Заодно он красится токеном — в самой картинке цвет был вписан. */
.floating-label-1 {
  background-image: none;
}

.floating-label-1::after {
  content: '';
  position: absolute;
  top: 50%;
  right: 15px;
  width: 20px;
  height: 20px;
  margin-top: -10px;
  background-color: var(--icon-tertiary);
  -webkit-mask-image: url("../img/icons/line/chevron-down.svg");
          mask-image: url("../img/icons/line/chevron-down.svg");
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
  transition: transform 250ms ease;
  pointer-events: none;
}

/* Список открыт — шеврон смотрит вверх. Признак открытия плагин
   ставит на внутреннюю обёртку, поэтому смотрим на потомка. */
.floating-label-1:has(.show)::after {
  transform: rotate(180deg);
}

/*==============================
  Типографика: шкала Sm и стили текста (12.10)
==============================*/

/* До 767 включительно действует набор Sm. Меняются только заголовки:
   текст, Small и Micro остаются как на вебе — на ступень меньше они
   читались мелко (правка 12.10). Межстрочные те же. Любое правило,
   написанное через токены, подхватывает это само. */
@media (max-width: 990px) {
  :root {
    --fs-d1: 40px;
    --fs-h1: 24px;
    --fs-h2: 20px;
    --fs-h3: 16px;
    --fs-h4: 14px;
    --fs-h5: 13px;
  }
}

/* Стили текста как классы: ими размечаются страницы, когда владелец
   говорит «этот заголовок H2». Начертание и цвет в стиль не входят —
   они свои у каждого места. */
.t-d1    { font-size: var(--fs-d1); line-height: var(--lh-d1); letter-spacing: var(--ls-d1); font-weight: 500; }
.t-h1    { font-size: var(--fs-h1); line-height: var(--lh-h1); letter-spacing: var(--ls-h1); font-weight: 500; }
.t-h2    { font-size: var(--fs-h2); line-height: var(--lh-h2); letter-spacing: var(--ls-h2); font-weight: 500; }
.t-h3    { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); font-weight: 500; }
.t-h4    { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); font-weight: 500; }
.t-h5    { font-size: var(--fs-h5); line-height: var(--lh-h5); letter-spacing: var(--ls-h5); font-weight: 500; }
.t-p1    { font-size: var(--fs-p1); line-height: var(--lh-p1); letter-spacing: var(--ls-p1); }
.t-p2    { font-size: var(--fs-p2); line-height: var(--lh-p2); letter-spacing: var(--ls-p2); }
.t-p3    { font-size: var(--fs-p3); line-height: var(--lh-p3); letter-spacing: var(--ls-p3); }
.t-small { font-size: var(--fs-small); line-height: var(--lh-small); letter-spacing: var(--ls-small); }
.t-micro { font-size: var(--fs-micro); line-height: var(--lh-micro); letter-spacing: var(--ls-micro); }

/*==============================
  Отметка в чекбоксе и радио: цвет по теме (правка 12.10)
==============================*/

/* Плашка отметки красится токеном `bg/black-solid`, и в тёмной теме
   он светлый. Сама галочка приходит картинкой из бутстрапа, а в ней
   цвет вписан белым — на светлой плашке её не видно вовсе.
   По макету это `icon/white`: белый в светлой теме и чёрный в тёмной.
   В картинку токен не подставить, поэтому в тёмной теме подменяем
   саму картинку. Компонент один на все экраны: исключения, список
   покупок, анкета, списки фильтров. */
body.dark .form-check-input:checked[type=checkbox] {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e");
}

body.dark .form-check-input:checked[type=radio] {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23000'/%3e%3c/svg%3e");
}

/* Блок приглашения, макет 16.10.

   Одна разметка в двух местах: в модальном окне по кнопке и вместо
   пустого состояния раздела. Поэтому блок центрируется сам и не
   завязан на окружение. */
.invite {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  max-width: 360px;
  margin: 0 auto;
  padding: 40px 0;
  text-align: center;
}

.invite__title {
  margin: 0;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: var(--ls-h3);
  /* Вес как у заголовков шкалы: это и есть заголовок блока,
     а 600 выбивался из остальных (правка 16.10). */
  font-weight: 500;
  color: var(--text-primary);
}

/* QR отдаёт сервер в SVG: он не мылится ни на экране, ни в печати.

   Белая подложка под кодом — не украшение. Код чёрный, и в тёмной теме
   он сливался с фоном (найдено владельцем 16.10). Перекрашивать модули
   в белый нельзя: инвертированный QR читают не все сканеры, а человек
   наводит камеру один раз и второй попытки обычно не делает. Поэтому
   в любой теме код остаётся чёрным на белом — меняется только то,
   что под ним видно подложку. Такой же код уходит и в буфер обмена. */
.invite__qr {
  display: block;
  width: 320px;
  height: 320px;
  max-width: 100%;
  padding: 10px;
  border-radius: var(--br-2);
  background-color: var(--b-w-white);
}

/* Кнопки во всю ширину блока: в макете они равной длины и стоят
   друг под другом, а не в ряд.

   Свои отступы у кнопок снимаем: у `.btn` они заданы в теме, и зазор
   между парой получался 25 вместо десяти — те же грабли, что с
   `.btn-dark { margin: 15px 0 }`. Расстояние держит только flex. */
.invite .btn {
  width: 100%;
  margin: 0;
}

/* Кнопки стоят парой: между ними 10, а не общие 20 блока. */
.invite__copy-image {
  margin-bottom: -10px !important;
}

.invite__link {
  font-size: var(--fs-p3);
  line-height: var(--lh-p3);
  color: var(--text-link, #2563EB);
  word-break: break-all;
}

/* На узком экране заголовок и кнопка встают в колонку, а QR
   сжимается до ширины экрана. */
@media only screen and (max-width: 990px) {
  .invite {
    padding: 20px 0;
  }

  .invite__qr {
    width: 280px;
    height: 280px;
  }

}

/* Кто пригласил — на странице регистрации по партнёрской ссылке.
   Сам токен человеку ни о чём не говорит, а имя объясняет,
   почему он здесь. */
.invite-note {
  margin-bottom: 20px;
  font-size: var(--fs-p2);
  line-height: var(--lh-p2);
  letter-spacing: var(--ls-p2);
  color: var(--text-secondary);
}

/* Пометка демонстрационного клиента, макет 16.10. Жёлтая, перед именем:
   без неё эксперт через неделю примет тестовую строку за живую
   регистрацию и будет ждать от неё оплаты. */
/* Имя в ячейке переносится на две строки, и бейдж оставался
   на своей с висящим справа отступом (QA 17.10). Ставим его
   над именем намеренно, а не по воле переноса. */
.clients__cell--name {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
}

.badge-demo {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 100px;
  background-color: #EAB308;
  color: var(--text-white);
  font-size: var(--fs-small);
  line-height: 1.5;
  letter-spacing: var(--ls-small);
  white-space: nowrap;
  vertical-align: baseline;
}

/*==============================
  Нажатие: лёгкий зум внутрь
==============================*/

/* Отклик на нажатие — не подсветка, а движение самого элемента.

   Параметры сняты с образца (template-saal.vercel.app), который
   прислал владелец 16.10, и взяты как есть: нажатие короткое
   и быстрое, возврат — пружинный, с едва заметным перелётом.
   Отсюда две разные пары «время + кривая»:

   | фаза | время | кривая |
   |---|---|---|
   | нажали | 0,2 с | cubic-bezier(.22, 1, .36, 1) |
   | отпустили | 0,45 с | linear(...) — пружина с перелётом до 1,094 |

   Перелёт — то, из-за чего эффект читается живым: элемент
   возвращается не в размер, а чуть дальше и оседает обратно.

   Масштаб задаём свойством `scale`, а не `transform`: у половины
   наших компонентов трансформация уже занята — стрелки, галочки,
   сдвиги на ховере, — и перезапись `transform` их бы сломала. */
:root {
  --duration-press: 0.2s;
  --ease-press: cubic-bezier(0.22, 1, 0.36, 1);
  --duration-spring: 0.45s;
  --ease-spring: linear(
    0, 0.058, 0.196, 0.372, 0.553, 0.717, 0.853, 0.957, 1.028, 1.071,
    1.091, 1.094, 1.086, 1.072, 1.055, 1.038, 1.023, 1.011, 1.002,
    0.996, 0.992, 0.991, 0.991, 0.992, 1
  );
  /* Глубина нажатия. У крупных объектов те же три процента смотрятся
     размашисто: чем больше элемент, тем заметнее один и тот же
     коэффициент в пикселях. Поэтому у карточек и строк таблиц своя,
     более мелкая величина (правка владельца 16.10). */
  --press-scale: 0.97;
  --press-scale-card: 0.99;
}

/* Класс вешается на что угодно, а заодно включён у тех компонентов,
   где нажатие и так подразумевается: не хочется проставлять его
   руками в полусотне шаблонов.

   Поля ввода и селекты участвуют обёрткой, а не сами: подпись у них
   лежит отдельным элементом поверх, и при зуме одного поля она
   оставалась на месте — поле уезжало из-под собственной подписи
   (найдено владельцем 16.10). Обёртка зумится целиком. */
.press,
.btn-dark,
.btn-primary,
.btn-secondary,
.btn-outline,
.filter-button,
.day-tab,
.programm-widget__retry,
.programm-widget__pay,
.product-1,
.entry-card,
.replace-option,
.clients__row,
.floating-label,
.floating-label-1,
.main__link,
.main__nav,
.replace__button,
.modal__close,
.header__link,
.header__drop-item,
.header__action-btn,
.cookie-consent__btn,
.empty-state__action,
.invite__copy-link,
.invite__copy-image,
.client-head__back,
.client-head__more,
.client-sidebar__back,
.client-menu__close,
.sidebar__nav-link,
.chat__nav-item,
.day-item,
.live,
.expert-card,
.join-banner,
.week-setup__meal {
  transition:
    scale var(--duration-spring) var(--ease-spring),
    color var(--duration-press) var(--ease-press),
    background-color var(--duration-press) var(--ease-press),
    border-color var(--duration-press) var(--ease-press),
    box-shadow var(--duration-press) var(--ease-press),
    opacity var(--duration-press) var(--ease-press);
}

/* Крупным объектам — своя глубина. Переменная переопределяется
   на самом элементе, поэтому правило нажатия остаётся одно. */
.product-1,
.entry-card,
.replace-option,
.clients__row,
.floating-label,
.floating-label-1,
.floating-label-3,
.press--card,
.sidebar__nav-link,
.chat__nav-item,
.day-item,
.live,
.expert-card,
.join-banner,
.week-setup__meal {
  --press-scale: var(--press-scale-card);
}

/* Выключенное не отзывается: нажатие на недоступную кнопку не должно
   выглядеть удачным. Элементы, открывающие меню, тоже пропускаем —
   там за нажатием следует раскрытие, и два движения спорят. */
.press:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.btn-dark:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.btn-primary:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.btn-secondary:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.btn-outline:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.filter-button:active:not(:disabled, [aria-disabled="true"], [aria-haspopup]),
.day-tab:active:not(.day-tab--empty),
.programm-widget__retry:active:not(:disabled),
.programm-widget__pay:active,
.product-1:active,
.entry-card:active,
.replace-option:active,
.clients__row:active,
.floating-label:active,
.floating-label-1:active,
.main__link:active:not([aria-disabled="true"]),
.main__nav:active:not(:disabled, [aria-disabled="true"]),
.replace__button:active,
.modal__close:active,
.header__link:active,
.header__drop-item:active,
.header__action-btn:active:not([aria-haspopup]),
.cookie-consent__btn:active,
.empty-state__action:active,
.invite__copy-link:active,
.invite__copy-image:active,
.client-head__back:active,
.client-head__more:active:not([aria-haspopup]),
.client-sidebar__back:active,
.client-menu__close:active,
.sidebar__nav-link:active,
.chat__nav-item:active,
.day-item:active,
.live:active,
.expert-card:active,
.join-banner:active,
a.week-setup__meal:active {
  transition-duration: var(--duration-press);
  transition-timing-function: var(--ease-press);
  scale: var(--press-scale);
}

/* Полоса загрузки страницы: появляется по клику на внутреннюю ссылку
   и живёт до смены страницы. Нужна потому, что страница собирается
   на сервере и ответа ждать до секунды, а отклик должен быть сразу
   (bod-knowledge findings/page-speed.md). */
.nav-progress {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  width: 0;
  height: 2px;
  background-color: var(--text_1);
  transition: width 600ms ease-out;
  pointer-events: none;
}

/* Кнопка, пока идёт запрос. Нажатие уже случилось, ответа ещё нет:
   без этого человек жмёт второй раз и считает, что не сработало.
   Класс ставит общий обработчик форм — одно место на все кнопки
   сохранения (bod-knowledge ui/response-time.md). */
.is-busy {
  opacity: 0.65;
  pointer-events: none;
  cursor: progress;
}

/* Нажатая ссылка остаётся нажатой, пока грузится новая страница:
   `:active` отпускается вместе с кнопкой мыши, и на быстром клике
   отклика не видно вовсе (QA 22.10). */
.is-navigating {
  transition-duration: var(--duration-press);
  transition-timing-function: var(--ease-press);
  scale: var(--press-scale);
}

/* Кто выключил анимации в системе, тому движения не показываем вовсе:
   полоса не ползёт, нажатая ссылка не уменьшается — остаётся приглушение
   цветом. Прежде правило не покрывало ни полосу, ни этот класс,
   и при выключенных анимациях всё двигалось по-прежнему (QA 23.10). */
@media (prefers-reduced-motion: reduce) {
  .nav-progress {
    transition: none;
  }

  .is-navigating {
    scale: none;
    opacity: 0.7;
  }
}

/* Кто выключил анимации в системе — тому только цветовой отклик. */
@media (prefers-reduced-motion: reduce) {
  .press:active,
  .btn-dark:active,
  .btn-primary:active,
  .btn-secondary:active,
  .btn-outline:active,
  .filter-button:active,
  .day-tab:active,
  .programm-widget__retry:active,
  .programm-widget__pay:active,
  .product-1:active,
  .entry-card:active,
  .replace-option:active,
  .clients__row:active,
  .floating-label:active,
  .floating-label-1:active,
  .is-navigating,
  .main__link:active,
  .main__nav:active,
  .replace__button:active,
  .modal__close:active,
  .header__link:active,
  .header__drop-item:active,
  .header__action-btn:active,
  .cookie-consent__btn:active,
  .empty-state__action:active,
  .invite__copy-link:active,
  .invite__copy-image:active,
  .client-head__back:active,
  .client-head__more:active,
  .client-sidebar__back:active,
  .client-menu__close:active,
  .sidebar__nav-link:active,
  .chat__nav-item:active,
  .day-item:active,
  .live:active,
  .expert-card:active,
  .join-banner:active,
  a.week-setup__meal:active {
    scale: none;
  }
}

/* Два действия справа от заголовка недели: ссылка в ценность
   и чёрная кнопка настройки. Своя обёртка, потому что сам
   заголовок разносит детей по краям (`space-between`), и третий
   ребёнок повис бы посередине. */
.main__title-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 20px;
}

/* На телефоне две таблетки рядом не помещаются: вместе с зазором
   им нужно 373 при 345 доступных. Пусть лучше вторая уйдёт на свою
   строку, чем в каждой текст встанет в две строки (замер на 375). */
.main__title-actions .main__link {
  white-space: nowrap;
}

/*==============================
  Окно «Настроить неделю», макет 21.10

  Семь строк, в каждой — день недели, переключатель варианта дня
  плана и ряд фотографий блюд этого варианта. Колонка та же, что
  у списка покупок: 600 содержимого (`.modal-page`).
==============================*/
.week-setup {
  display: flex;
  flex-direction: column;
  /* Между днями 40, внутри дня 20 — замер по макету. */
  gap: 40px;
}

/* Подсказка объясняет, зачем повторять день, а не чем это грозит:
   градиент снят с макета, в токенах градиентов нет вовсе. */
.week-setup__hint {
  display: flex;
  align-items: flex-start;
  gap: 15px;
  /* Плашка по макету 75 высотой: две строки по 22,4 и поля по 15.
     Слева и справа 20 — иконка начинается ровно под заголовком. */
  padding: 15px 20px;
  border-radius: var(--br-2);
  background: linear-gradient(90deg, #F0F3F1 0%, #F0F3F1 55%, #ECF2E8 80%, #EDE9DB 100%);
}

.dark .week-setup__hint {
  background: linear-gradient(90deg, #171717 0%, #171717 55%, #19201A 80%, #20201A 100%);
}

.week-setup__hint-icon {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  margin-top: 1px;
  background-color: var(--text_2);
  -webkit-mask-position: center;
          mask-position: center;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: contain;
          mask-size: contain;
}

.week-setup__hint-text {
  margin: 0;
  font-size: var(--fs-p1);
  line-height: var(--lh-p1);
  letter-spacing: var(--ls-p1);
  color: var(--text-secondary);
}

.week-setup__day {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.week-setup__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
}

.week-setup__day-title {
  margin: 0;
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: var(--ls-h2);
  font-weight: 500;
  color: var(--text_1);
}

.week-setup__picker {
  display: flex;
  align-items: center;
  gap: 15px;
}

.week-setup__picker-label {
  font-size: var(--fs-p2);
  line-height: var(--lh-p2);
  letter-spacing: var(--ls-p2);
  color: var(--text_2);
}

/* Переключатель: белая плашка, по краям круглые кнопки, посередине
   номер варианта. Номера постоянные, листается по кругу. */
.week-stepper {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 4px;
  border-radius: var(--br-1);
  background-color: var(--bg-primary);
  box-shadow: var(--shadow_1);
}

.week-stepper__btn {
  flex: 0 0 40px;
  width: 40px;
  padding: 0;
  border-radius: 50%;
  /* У `.btn-secondary` поля 15 сверху и снизу — в плашке они
     растили её с 48 до 78 (замер на стенде). */
  margin: 0;
}

/* Стрелка вправо — та же «влево», повёрнутая: отдельной в наборе нет. */
.week-stepper__btn--next .icon {
  transform: rotate(180deg);
}

.week-stepper__value {
  min-width: 30px;
  text-align: center;
  font-size: var(--fs-p1);
  line-height: var(--lh-p1);
  color: var(--text_1);
}

/* Ряд фотографий заполняет всю ширину колонки. Снимков столько,
   сколько у человека приёмов пищи — от трёх до шести, — поэтому
   ширина не задаётся: карточки делят строку поровну. */
.week-setup__meals {
  display: flex;
  gap: 12px;
}

/* Снимок — ссылка на рецепт в дне своего варианта. У варианта
   без дней недели страницы дня нет, и тогда это просто `div`:
   правила общие, различается только тег. */
.week-setup__meal {
  display: block;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  border-radius: var(--br-2);
  background-color: var(--level_1);
  aspect-ratio: 1 / 1;
}

@supports not (aspect-ratio: 1 / 1) {
  .week-setup__meal {
    height: 0;
    padding-top: calc(100% / 1);
    position: relative;
  }

  .week-setup__meal img {
    position: absolute;
    top: 0;
    left: 0;
  }
}

.week-setup__meal img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* На телефоне подпись переключателя не помещается рядом с днём:
   день остаётся строкой, переключатель уходит под него. Граница
   та же, что у остальной мобильной вёрстки, — 990. */
@media only screen and (max-width: 990px) {
  .week-setup__head {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  .week-setup__picker {
    width: 100%;
    justify-content: space-between;
  }
}
