/* Правки поверх style.min.css. Базовый файл не редактировать. */

/* Этап 4: пустой счётчик (0 товаров) не показываем */
.footer-mob__btn .pin:empty {
    display: none;
}

/* Этап 2: наименование-ссылка наследует стиль заголовка строки */
.catalog-row__title {
    color: inherit;
    text-decoration: none;
    display: block;
}
/* Строка категории целиком ведёт в карточку: зона клика ссылки-наименования растянута
   на строку (одна <a> — работают Ctrl/средний клик), кнопки строки — поверх неё */
.catalog-row {
    position: relative;
    transition: background-color .2s;
}
.catalog-row__title::after {
    content: '';
    position: absolute;
    inset: 0;
}
.catalog-row__col6 {
    position: relative;
    z-index: 1;
}
.catalog-row:hover {
    background-color: #f7f7f7;
}
.catalog-row:hover .catalog-row__title {
    color: #eea501;
}

/* Этап 2: направление сортировки (стрелка рисуется через ::after, см. style.min.css .catalog-table__sort:after) */
.catalog-table__sort._desc::after {
    transform: rotate(180deg);
}

/* Фидбек этапа 2: админский HTML в превью — параграфы наследуют размер, абзацы разделяются */
.catalog-info__desc p,
.catalog-main .text18 p {
    font-size: inherit;
    line-height: inherit;
}
.catalog-info__desc p + p,
.catalog-main .text18 p + p,
.ceo .text p + p,
.ceo .text ul,
.ceo .text ol {
    margin-top: .75em;
}

/* Пагинация категории: страховка от расползания за контейнер (много страниц) */
.pagination ul {
    flex-wrap: wrap;
    row-gap: .5em;
}
/* На мобильном длинная пагинация (8+ страниц) сжимается до «1 … текущая … N»:
   промежуточные номера (_mid из jbi.partials.category.pagination) скрываются */
@media screen and (max-width: 576px) {
    .pagination--mob-short li._mid {
        display: none;
    }
}

/* Страховка от горизонтальной прокрутки (виновником была широкая пагинация — починена
   onEachSide(0) + flex-wrap выше; правило оставлено как общая защита). Намеренно на .m-page,
   не на html: overflow-x:clip на html прервал бы пропагацию overflow с body на viewport
   и мог сломать sticky у .header-bottom. Перекрывает вёрсточный hidden порядком подключения. */
.m-page {
    overflow-x: clip;
}

/* Этап 3: модалки форм заказа/запроса цены/доставки (order/query/delivery) —
   классы вёрстки .fg/.modal есть, недостающее — подсветка ошибок и товар в шапке модалки заказа */
/* Дефолтный .modal__dialog вёрстки — 62.5em (1000px, под контентные модалки);
   формы-столбики на нём выглядят огромными. Габарит — как у модалки заказа боевого (613px). */
.modal-order .modal__dialog {
    width: 38.25em;
}
.modal-order .fg textarea {
    height: auto;
    min-height: 6em;
    padding-top: 1em;
    padding-bottom: 1em;
}
.modal-order__product {
    justify-content: space-between;
    align-items: center;
    gap: 1em;
    flex-wrap: wrap;
}
.modal-order [data-form-submit] {
    width: 100%;
}
.red_input_error {
    border-color: #ea1111 !important;
    color: #ea1111;
}
.red_input_error::placeholder {
    color: #ea1111;
}
.form-error {
    margin-top: .75em;
    color: #ea1111;
}

/* Маркировка товара в H1 карточки — переносится на новую строку целиком,
   а не рвётся по дефисам; сверхдлинная (шире строки) переносится внутри как обычно. */
.product-info h1 .item-marking {
    display: inline-block;
    max-width: 100%;
}
/* Название категории в H1 карточки — мелкой строкой над маркировкой (в дизайне H1 = только маркировка). */
.product-info h1 .item-prefix {
    display: block;
    font-size: .5em;
    line-height: 140%;
    letter-spacing: 0;
    font-weight: 400;
    color: #939393;
    margin-bottom: .25em;
}

/* Задача 2 (/payment): блок «Дополнительно» — в макете нет готового класса
   для списка с иконками-галочками (в jbi/about.html «Продуманная логистика» — обычный <ul>),
   верстаем список с check.svg сами. */
.check-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1em;
}
.check-list li {
    display: flex;
    align-items: flex-start;
    gap: .75em;
}
.check-list img {
    flex-shrink: 0;
    margin-top: .2em;
}

/* Задача 4 (/projects): виджет карты (существующий стек, resources/js/widgets/projects_map.js)
   в макете geography.html на месте карты — статичная картинка без класса/размеров;
   высота перенесена из старого стека (resources/views/partials/projects_map.blade.php использовало
   .projects__map без готового jbi-стиля), радиус — под остальные блоки jbi. */
.done-projects__map .projects__map {
    height: 30em;
    border-radius: .75em;
    overflow: hidden;
}
@media screen and (max-width: 1200px) {
    .done-projects__map .projects__map {
        height: 22em;
    }
}
@media screen and (max-width: 576px) {
    .done-projects__map .projects__map {
        height: 18em;
    }
}

/* Задача 6 (/delivery): фотографии доставки из старого стека (/img/delivery/*.jpg) —
   в макете таких фото нет, верстаем простой сеткой grid4 на существующей утилите. */
.delivery-photos img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: .75em;
}

/* /delivery (04.10.2026): макета нет — страница собрана из блоков jbi. Цвета — vars.scss
   ($bg #f0f0f0, $primary #fc0, $black #333). Вопросы — готовый .qa-card (_ui.scss, JS в a-global.js),
   здесь только плотнее, чем в базовом размере, и белые карточки на серой панели. */
.delivery-intro { max-width: 46em; }
.delivery-nav__item {
    display: flex;
    flex-direction: column;
    padding: 1.5em 1.75em;
    border-radius: .75em;
    background-color: #f0f0f0;
    border-left: .25em solid #fc0;
    color: #333;
    transition: background-color .2s;
}
.delivery-nav__item:hover { background-color: #e8e8e8; }
.delivery-nav__item:focus-visible { outline: 2px solid #333; outline-offset: 2px; }
.delivery-method { scroll-margin-top: 6em; }
.delivery-method__top { align-items: start; }
.delivery-method__info { max-width: 38em; }
.delivery-faq {
    display: grid;
    grid-template-columns: calc(33.33% - 1.25em) calc(66.67% - .625em);
    gap: 1.875em;
    padding: 2.5em;
    border-radius: 1.25em;
    background-color: #f0f0f0;
}
.delivery-faq__list { display: grid; gap: .5em; }
.delivery-faq .qa-card { padding: 0 1.75em; border-radius: .75em; }
.delivery-faq .qa-card__show { min-height: 4.5em; padding: 1em 0; }
.delivery-faq .qa-card__hidden { margin-top: 0; padding: 1.25em 0 1.5em; }
.delivery-faq .qa-card__hidden .text { max-width: 44em; }

@media screen and (max-width: 992px) {
    .delivery-faq { grid-template-columns: 100%; gap: 1.25em; padding: 1.5em; }
}
@media screen and (max-width: 576px) {
    .delivery-nav { gap: .5em; }
    .delivery-nav__item { padding: 1em 1.25em; }
    .delivery-faq { padding: 1em .75em; border-radius: .75em; }
    .delivery-faq .qa-card { padding: 0 1em; }
    .delivery-faq .qa-card__show { min-height: 3.5em; padding: .875em 0; }
    .delivery-faq .qa-card__title { font-size: 1em; line-height: 130%; }
    .delivery-faq .qa-card__btn { width: 1.75em; margin-left: .75em; }
}

/* Финальное ревью этапа 5 (F1): админский html_content некоторых страниц (напр. privacy)
   приносит старую обёртку <section class="conf"><div class="container">…</div></section> —
   вложенный .container (см. resources/jbi/scss/_global.scss: max-width/padding) даёт двойные
   боковые отступы внутри jbi-.text.container. Гасим точечно, не трогая базовый .container. */
.text .container {
    max-width: none;
    padding-left: 0;
    padding-right: 0;
    width: auto;
}

/* V3 (ревью): вертикальный ритм .text (grid100gap(1.25em) в resources/jbi/scss/pages/1-text.scss,
   .5em на ≤992px) действует только на прямых потомков — старый контент вложен на уровень глубже
   (section.conf > .container > .conf__inner > h1.conf__title + .conf__text > p×114), поэтому
   абзацы слипались, а под H1 не было отступа. Даём тем же обёрткам ту же ритмику миксина
   (grid, 100% колонка, тот же gap на тех же брейкпоинтах). .text h1 (resources/jbi/scss/components/_text.scss)
   уже стилизует H1 как .h1 независимо от classes="conf__title display1" (display1 в jbi не описан
   и ничего не переопределяет) — отдельно дублировать не нужно. */
.text .conf__inner,
.text .conf__text {
    display: grid;
    grid-template-columns: 100%;
    gap: 1.25em;
}
.text .conf__title {
    margin-bottom: .5em;
}
@media screen and (max-width: 992px) {
    .text .conf__inner,
    .text .conf__text {
        gap: .5em;
    }
}

/* Отступ до подвала: в вёрстке его даёт класс _last у последнего блока страницы
   (a-index.scss: 5em, ≤576px — 3.75em). Запасной вариант на случай, когда последним оказался
   блок без _last (условный блок не вывелся, общий partial) — 04.10.2026 так было на /contacts. */
.content > .m-section:last-child { padding-bottom: 5em; }
@media screen and (max-width: 576px) {
    .content > .m-section:last-child { padding-bottom: 3.75em; }
}

/* Плитки категорий (.product-card: каталог, дети категории, выдача поиска) — до 8 в ряд, а в
   названиях бывают длинные слова («противофильтрационного»): переносим по слогам (lang="ru"
   в layout), где словаря переносов нет — разрываем слово, чтобы не вылезало за плитку. */
.product-card > .text16 {
    hyphens: auto;
    -webkit-hyphens: auto;
    /* переносить только действительно длинные слова (от 13 букв), «фундаментные» — целиком */
    hyphenate-limit-chars: 13 6 6;
    overflow-wrap: break-word;
}

/* Выдача поиска (04.10.2026): горизонтальные карточки поверх .product-card4 (e-favourite.scss) —
   маленькое фото слева, маркировка/артикул/категория справа; фото почти всегда общее для
   категории, поэтому большое поле под ним было пустотой. */
/* сжимаем только ряды: ширина колонок grid3 в вёрстке рассчитана под стандартный зазор */
.search-results { row-gap: .75em; }
.product-card4--row {
    display: grid;
    grid-template-columns: 5.5em minmax(0, 1fr);
    gap: 1em;
    align-items: center;
    padding: .875em 2.75em .875em .875em;
}
.product-card4--row .product-card4__img {
    padding-bottom: 0;
    height: 5.5em;
    margin-bottom: 0;
}
.product-card4--row .product-card4__body { min-width: 0; }
.product-card4--row .product-card4__body .h5 { overflow-wrap: break-word; }
.product-card4--row .product-card4__tag { max-width: 100%; }
.product-card4--row .product-card4__tag span { -webkit-line-clamp: 2; line-clamp: 2; }
@media screen and (max-width: 576px) {
    .product-card4--row { grid-template-columns: 4.5em minmax(0, 1fr); gap: .75em; }
    .product-card4--row .product-card4__img { height: 4.5em; }
    /* на телефоне вёрстка масштабирует базовый шрифт (~22px при 390px) — маркировка ≈19px, как на десктопе */
    .product-card4--row .product-card4__body .h5 { font-size: .85em; }
}

/* Слайдеры .slider («С этим товаром смотрят» на карточке, команда на /about): вёрстка писалась
   под Swiper ≤6 с классом .swiper-container, а подключён Swiper 8, где overflow:hidden получает
   только .swiper — следующие карточки вылезали справа за сетку (так и в макете). На компьютере и
   планшете обрезаем по контейнеру (ширина 100% + 1.25em — правый отступ последней карточки);
   на телефоне край следующей карточки до края экрана оставлен — подсказка, что ряд листается. */
@media screen and (min-width: 577px) {
    .slider .swiper-container { overflow: hidden; }
}

/* Таб «Предложения» (приёмка E1 п.10, 04.10.2026).
   Компьютер: значение в ячейке таблицы — по левому краю. Общий .prop-item (d-project.scss)
   выравнивает значение вправо под пунктир «название … значение», а в таблице название скрыто —
   длинный стандарт («ГОСТ 9561-76, шифр 93-1336») в две строки прижимался вправо. */
@media screen and (min-width: 993px) {
    .delivery-row .prop-item__desc { text-align: left; }
}
/* Телефон: вёрстка масштабирует базовый шрифт (~22px при 390px) — заголовок «Доставка: город»
   (h2) и цены строк (1.75em ≈ 39px) были огромными. Заголовок — в одну строку для большинства
   городов, цена строки — мельче цены основного блока, «По запросу» — мелкой строкой, как
   «Цена по запросу» в основном блоке карточки. */
@media screen and (max-width: 576px) {
    .delivery__title { font-size: 1.125em; }
    .delivery-row .delivery-row__price.h6 { font-size: 1.125em; }
    .delivery-row .delivery-row__price._on-request { font-size: .8125em; font-weight: 600; }
}

/* Корзина /estimate (E5, 05.10.2026; спека docs/superpowers/specs/2026-10-05-jbi-estimate-design.md):
   список + форма слева, итоги справа (sticky); строки — горизонтальные карточки. */
.estimate__grid { display: grid; grid-template-columns: minmax(0, 1fr) 22.5em; gap: 1.25em; align-items: start; }
.estimate__aside { position: sticky; top: var(--estimate-sticky-top, 7.5em); }
.estimate-total .prop-item + .prop-item { margin-top: .5em; }
.estimate-total__btn { width: 100%; }
.estimate [hidden] { display: none !important; }
.estimate__nav { display: flex; align-items: center; justify-content: space-between; gap: 1em; margin-bottom: .75em; }
/* плашка «цены ориентировочные» над списком (07.10.2026) */
.estimate__prices-note { display: flex; align-items: flex-start; gap: .625em; margin-bottom: 1.25em; padding: .875em 1em; border-radius: .75em; background-color: #fff8dc; }
.estimate__prices-note > div { line-height: 1.4; }
.estimate__prices-note img { width: 1.25em; flex-shrink: 0; margin-top: .0625em; }
.estimate__notice { margin-bottom: .75em; padding: .75em 1em; border-radius: .75em; background-color: #fff3c2; }
.estimate__list { display: grid; gap: .75em; }
.estimate__loader { justify-content: center; padding: 2.5em 0; }
.estimate-row {
    position: relative;
    display: grid;
    grid-template-columns: 1.5em 5em minmax(0, 1fr) 6.5em 8.5em 6.5em 8em 8em 1.5em;
    gap: 1em;
    align-items: center;
    padding: .875em 1em;
    border: 1px solid #dfdfdf;
    border-radius: .75em;
}
.estimate-row__img img { width: 5em; height: 5em; object-fit: contain; display: block; }
.estimate-row__info { min-width: 0; display: grid; gap: .25em; justify-items: start; }
.estimate-row__title { overflow-wrap: break-word; }
.estimate-row__changed { color: #69be15; }
.estimate-row__sum { text-align: right; white-space: nowrap; }
.estimate-row__delete { width: 1.5em; height: 1.5em; padding: 0; background: none; border: 0; cursor: pointer; }
.estimate-row__delete img { width: 100%; }
.estimate-row__confirm {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: flex-end; gap: .75em;
    padding: 0 1em; border-radius: .75em; background-color: rgba(255, 255, 255, .96);
    /* выше чекбокса строки: у .m-check input z-index 2, у label:before — 1 */
    z-index: 3;
}
.estimate-row__confirm span { margin-right: auto; }
@media screen and (max-width: 1440px) {
    .estimate__grid { grid-template-columns: 100%; }
    .estimate__aside { position: static; order: 2; }
    .estimate__main { display: contents; }
    /* позиции → итоги → форма */
    .estimate__prices-note, .estimate__nav, .estimate__notice, .estimate__list { order: 1; }
    .estimate-form { order: 3; }
}
@media screen and (max-width: 992px) {
    .estimate-row {
        grid-template-columns: 1.5em 4.5em minmax(0, 1fr) 1.5em;
        grid-template-areas: "check img info del" "price price weight weight" "calc calc sum sum";
    }
    .estimate-row__check { grid-area: check; } .estimate-row__img { grid-area: img; }
    .estimate-row__info { grid-area: info; } .estimate-row__delete { grid-area: del; align-self: start; }
    .estimate-row__supplier { display: none; }
    .estimate-row__price { grid-area: price; } .estimate-row__weight { grid-area: weight; text-align: right; }
    .estimate-row__calc { grid-area: calc; } .estimate-row__sum { grid-area: sum; }
    .estimate-row__img img { width: 4.5em; height: 4.5em; }
    .estimate-row__confirm { flex-wrap: wrap; justify-content: flex-start; padding: 1em; }
}

.estimate-form__head { display: flex; align-items: center; justify-content: space-between; gap: 1em; flex-wrap: wrap; }
.estimate-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75em 1.25em; }
.estimate-form__ways { display: flex; gap: 1.5em; }
.estimate-files__btn { display: inline-flex; align-items: center; gap: .5em; cursor: pointer; }
.estimate-files__list { display: grid; gap: .5em; }
.estimate-files__item { display: flex; align-items: center; gap: .75em; padding: .5em .75em; border: 1px solid #dfdfdf; border-radius: .5em; }
.estimate-files__item._error { border-color: #ea1111; }
.estimate-files__err { color: #ea1111; }
.estimate-files__del { margin-left: auto; background: none; border: 0; cursor: pointer; }
@media screen and (max-width: 576px) {
    .estimate-form__grid { grid-template-columns: 100%; }
}
/* радио способа получения: в теме нет состояния :checked у .m-radio */
.estimate-form__ways .m-radio label:before { border-radius: 50%; }
.estimate-form__ways .m-radio input:checked + label:before { border-color: #fc0; background-image: radial-gradient(circle, #fc0 0 .4em, #fff .45em); background-size: 100% 100%; }
/* вторая кнопка отправки в конце формы — только в одну колонку */
.estimate-form__submit { display: none; }
@media screen and (max-width: 1440px) { .estimate-form__submit { display: block; } }


/* E5: шапка вошедшего клиента — число новых документов на кнопке «Кабинет»;
   тот же бейдж — число позиций сметы на значке корзины (пустая смета — без бейджа) */
.header-lk__show { position: relative; }
.header-cart__badge:empty { display: none; }
.header-lk__badge,
.header-cart__badge {
    min-width: 1.25em;
    height: 1.25em;
    padding: 0 .375em;
    margin-left: 0;
    position: absolute;
    top: -.5em;
    right: -.5em;
    white-space: nowrap;
    border-radius: .625em;
    background: #fc0;
    color: #333;
    font-size: .75em;
    font-weight: 600;
    line-height: 1.25em;
    text-align: center;
}

/* непустое избранное — сердечко шапки залито серым, без бейджа (не спорит с жёлтым бейджем сметы) */
.header-favourite._filled path { fill: #939393; }
.header-favourite._filled:hover path { fill: #333; }

/* добавление в смету/избранное — значок коротко «подпрыгивает» (класс ставит popHeaderIcons, e-category.js) */
@keyframes header-pop {
    40% { transform: scale(1.3); }
}
._pop { animation: header-pop .3s ease-out; }
@media (prefers-reduced-motion: reduce) {
    ._pop { animation: none; }
}

/* E5: сообщения после перехода (jbi.partials.flash) */
.flash-message {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1em;
    margin-top: 1.25em;
    padding: .875em 1.25em;
    border-radius: .375em;
}
.flash-message._success { background: #ebffd7; }
.flash-message._error { background: #fff3c2; color: #ea1111; }
.flash-message__close {
    flex-shrink: 0;
    display: flex;
    padding: .25em;
    background: none;
    border: 0;
    cursor: pointer;
}

/* E5: вход и пароли — узкая карточка формы */
.auth__card {
    max-width: 27.5em;
    margin: 2.5em auto 0;
    padding: 2.5em;
    border: 1px solid #dfdfdf;
    border-radius: .5em;
}
.auth__form {
    display: flex;
    flex-direction: column;
    gap: .75em;
}
.auth__btn { width: 100%; margin-top: .5em; }
.auth__link { align-self: center; color: #333; text-decoration: underline; text-underline-offset: .2em; }
.auth__link:hover { text-decoration: none; }
.auth__hint a { color: #333; text-decoration: underline; }
.auth-pass { position: relative; }
.auth-pass input { padding-right: 3em; }
.auth-pass-toggle {
    position: absolute;
    top: 0;
    right: 0;
    height: 3.3125em;
    width: 3em;
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: 0;
    cursor: pointer;
}
.auth-pass-toggle[aria-pressed="true"] path,
.auth-pass-toggle[aria-pressed="true"] circle { stroke: #333; }
.auth-message { text-align: center; margin-top: 1.5em; }
.auth-message__icon { display: block; margin: 0 auto; }
@media screen and (max-width: 576px) {
    .auth__card { margin-top: 1.25em; padding: 1.5em 1em; border: 0; }
}

/* E5: кабинет — сетка «меню слева» (решение 05.10.2026); на планшете/телефоне меню-вкладки над содержимым */
.cabinet__grid {
    display: grid;
    grid-template-columns: 17.5em minmax(0, 1fr);
    grid-template-areas: "org main" "nav main" "help main";
    grid-template-rows: auto auto 1fr;
    column-gap: 2.5em;
    row-gap: 1.25em;
    align-items: start;
    margin-top: 1.25em;
}
.cabinet-org { grid-area: org; padding: 1.25em; background: #f0f0f0; border-radius: .5em; overflow-wrap: anywhere; }
.cabinet-nav { grid-area: nav; display: flex; flex-direction: column; border: 1px solid #dfdfdf; border-radius: .5em; padding: .5em 0; }
.cabinet-help { grid-area: help; padding: 1.25em; border: 1px solid #dfdfdf; border-radius: .5em; }
.cabinet__main { grid-area: main; min-width: 0; }
.cabinet-nav__item {
    display: flex;
    align-items: center;
    gap: .5em;
    width: 100%;
    padding: .625em 1.25em;
    color: #333;
    text-decoration: none;
    background: none;
    border: 0;
    border-left: 3px solid transparent;
    text-align: left;
    cursor: pointer;
}
.cabinet-nav__item:hover { background: #f0f0f0; }
.cabinet-nav__item._active { border-left-color: #fc0; font-weight: 600; }
.cabinet-nav__count { font-size: .875em; }
.cabinet-nav__badge {
    white-space: nowrap;
    min-width: 1.5em;
    padding: 0 .3em;
    border-radius: .75em;
    background: #fc0;
    font-size: .75em;
    font-weight: 600;
    line-height: 1.5em;
    text-align: center;
}
.cabinet-nav__logout { margin: .5em 0 0; padding-top: .5em; border-top: 1px solid #dfdfdf; }
.cabinet-help a { color: #333; }
.cabinet-props { margin: 0; }
.cabinet-props__row { display: grid; grid-template-columns: 10em minmax(0, 1fr); gap: 1em; padding: .875em 0; border-bottom: 1px solid #dfdfdf; }
.cabinet-props__row._gap { margin-top: 1.25em; border-top: 1px solid #dfdfdf; }
.cabinet-props dd { margin: 0; overflow-wrap: anywhere; }
.cabinet-link { color: #333; text-decoration: underline; text-underline-offset: .2em; }
.cabinet-props__value + .cabinet-link { margin-left: .5em; }
.cabinet-link._ml0 { margin-left: 0; }
.cabinet-link:hover { text-decoration: none; }
@media screen and (max-width: 992px) {
    .cabinet__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "nav" "main" "org" "help"; grid-template-rows: none; }
    .cabinet-nav { flex-direction: row; overflow-x: auto; border: 0; border-bottom: 1px solid #dfdfdf; border-radius: 0; padding: 0; scrollbar-width: none; }
    .cabinet-nav__item { width: auto; white-space: nowrap; border-left: 0; border-bottom: 3px solid transparent; padding: .625em 1em; }
    .cabinet-nav__item._active { border-bottom-color: #fc0; }
    .cabinet-nav__logout { margin: 0 0 0 auto; padding: 0; border: 0; }
    .cabinet__grid._index .cabinet-org { display: none; }
}
@media screen and (max-width: 576px) {
    .cabinet-nav__item { padding: .625em .25em; }
    .cabinet-nav__item { gap: .25em; }
    .cabinet-nav__item .text16 { font-size: 13px; }
    .cabinet-nav__count { font-size: 12px; }
    .cabinet-props__row { grid-template-columns: minmax(0, 1fr); gap: .25em; }
}

/* E5: кабинет — фильтры (нативные select в стиле полей jbi) */
.cabinet-filter { display: flex; flex-wrap: wrap; gap: .75em; }
.cabinet-filter__field { width: 15em; max-width: 100%; }
.cabinet-filter select {
    width: 100%;
    height: 3.125em;
    padding: 0 2.5em 0 1em;
    border: 1px solid #dfdfdf;
    border-radius: .375em;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1.5 5 5 5-5' fill='none' stroke='%23333' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 1em center;
    color: #333;
    font: inherit;
    appearance: none;
    cursor: pointer;
}
.cabinet-filter select:disabled { opacity: .6; cursor: progress; }
.cabinet-reset { display: inline-block; margin-bottom: .75em; }

/* E5: заказы — карточки счетов */
.invoice-list__head,
.invoice-card__head {
    display: grid;
    grid-template-columns: 1.3fr 1fr 1fr 1.3fr;
    gap: 1em;
    align-items: center;
}
.invoice-list__head { padding: 0 1.25em .5em; }
.invoice-card { margin-top: .5em; border: 1px solid #dfdfdf; border-radius: .5em; border-left: 4px solid #dfdfdf; }
.invoice-card._success { border-left-color: #69be15; }
.invoice-card._danger { border-left-color: #ea1111; }
.invoice-card__head { padding: 1em 1.25em; }
.invoice-card__num { padding: 0; background: none; border: 0; color: #333; cursor: pointer; text-align: left; }
.invoice-card__num:hover { text-decoration: underline; }
.invoice-card__status { display: flex; align-items: center; gap: .5em; }
.invoice-card__dot { width: .625em; height: .625em; border-radius: 50%; background: #939393; flex-shrink: 0; }
.invoice-card._success .invoice-card__dot { background: #69be15; }
.invoice-card._danger .invoice-card__dot { background: #ea1111; }
.invoice-card__toggle { margin-left: auto; display: flex; padding: .25em; background: none; border: 0; cursor: pointer; transition: transform .2s; }
.invoice-card._open .invoice-card__toggle { transform: rotate(180deg); }
.invoice-card__mob-label { display: none; }
.invoice-card__body { padding: 0 1.25em 1.25em; border-top: 1px solid #dfdfdf; }
.invoice-manager { display: flex; align-items: center; gap: .75em; padding: 1em 0; }
.invoice-manager__avatar { width: 3em; height: 3em; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.invoice-manager__avatar._initials { display: flex; align-items: center; justify-content: center; background: #fff3c2; font-weight: 600; }
.invoice-products__row { display: grid; grid-template-columns: 2em minmax(0, 1fr) 7em 5em 5.5em 8em; gap: .75em; padding: .5em 0; border-bottom: 1px solid #f0f0f0; }
.invoice-products__name { overflow-wrap: anywhere; }
[data-invoices-more]._loading img { animation: cabinet-spin 1s linear infinite; }
@keyframes cabinet-spin { to { transform: rotate(360deg); } }
@media screen and (max-width: 992px) {
    .invoice-list__head { display: none; }
    .invoice-card__head { grid-template-columns: 1fr 1fr; }
    .invoice-card__mob-label { display: block; }
}
@media screen and (max-width: 576px) {
    .invoice-products__row._head { display: none; }
    .invoice-products__row { grid-template-columns: repeat(4, auto); justify-content: space-between; }
    .invoice-products__row > div:first-child { display: none; }
    .invoice-products__name { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
    .invoice-card__toggle { transition: none; }
    [data-invoices-more]._loading img { animation: none; }
}

/* E5: документы — группы по кварталам, строки, плашка выбора */
.doc-group + .doc-group { margin-top: 1.5em; }
.doc-group__title { padding-bottom: .5em; border-bottom: 1px solid #dfdfdf; }
.doc-row {
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr) auto;
    gap: .75em;
    align-items: center;
    padding: .75em 0;
    border-bottom: 1px solid #f0f0f0;
}
.doc-row__info { overflow-wrap: anywhere; }
.doc-row__actions { display: flex; align-items: center; gap: 1em; }
.doc-row__new { padding: .125em .5em; border-radius: .25em; background: #ebffd7; color: #333; }
.doc-row__error { grid-column: 3 / -1; margin-top: 0; }
[data-doc-download]._loading { pointer-events: none; color: #939393; }
.doc-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 30;
    padding: 1em 0;
    background: #fff;
    box-shadow: 0 -2px 12px rgba(51, 51, 51, .12);
}
.doc-bar__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75em 1.5em; }
.doc-bar__actions { display: flex; align-items: center; gap: .75em; }
.doc-bar__close { display: flex; padding: .5em; background: none; border: 0; cursor: pointer; }
.doc-bar__progress { flex: 1 1 18em; display: flex; align-items: center; gap: 1em; }
.doc-bar__track { flex: 1; height: .5em; border-radius: .25em; background: #f0f0f0; overflow: hidden; }
.doc-bar__fill { width: 0; height: 100%; background: #fc0; transition: width .3s; }
.doc-bar__error { flex-basis: 100%; margin-top: 0; }
@media screen and (max-width: 576px) {
    .doc-row { grid-template-columns: auto minmax(0, 1fr); }
    .doc-row__icon { display: none; }
    .doc-row__actions { grid-column: 2; }
    .doc-row__error { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
    .doc-bar__fill { transition: none; }
}
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media screen and (max-width: 992px) {
    /* над нижним меню .footer-mob */
    .doc-bar { bottom: 4.25em; }
}
.doc-bar__actions[hidden], .doc-bar__progress[hidden] { display: none; }
.cabinet__main._with-bar { padding-bottom: 7em; }
@media screen and (max-width: 576px) {
    .cabinet__main._with-bar { padding-bottom: 9em; }
}

/* E3.3: ссылки в тексте страниц из админки (согласие, политика) — подчёркнуты, иначе не отличить от текста */
.m-section .text a { text-decoration: underline; text-underline-offset: .2em; }
.m-section .text a:hover { text-decoration: none; }

/* «Нужна помощь?» без фото сотрудника (26.10.2026): у макета снизу не было отступа — там стояло фото */
@media screen and (max-width: 992px) {
    .help__inner { padding-bottom: 2.5em; }
}
@media screen and (max-width: 576px) {
    .help__inner { padding-bottom: 1.75em; }
}

/* Блок менеджера в карточке: сетка на две кнопки, единственный мессенджер — на всю ширину (Telegram выключен 30.10.2026) */
.manager__social-item:only-child { grid-column: 1 / -1; }
