/* custom.css — мигрирован в SCSS-тему (_overrides.scss → main.css). Тонкий слой для ручных правок. */

/* ===== Многоуровневое меню навигации (hover-флайауты) =====
   Разметка — src/Web/Layout/Partials/_nav.php:
   li.nav-item.dropdown > ul.dropdown-menu, вложенные li.dropdown-submenu.
   Открытие — чистый CSS, без Bootstrap dropdown-JS (клик по пункту ведёт
   по ссылке). Поведение повторяет старое Yii2-меню NavigatorWidget. */

/* Десктоп: открытие по наведению, подменю выпадают сбоку */
@media (min-width: 992px) {
    .sns-navbar .nav-item.dropdown > .dropdown-menu {
        margin-top: 0; /* без зазора — меню не схлопывается на пути курсора */
    }

    .sns-navbar .nav-item.dropdown:hover > .dropdown-menu,
    .sns-navbar .nav-item.dropdown:focus-within > .dropdown-menu {
        display: block;
    }

    .sns-navbar .dropdown-submenu {
        position: relative;
    }

    .sns-navbar .dropdown-submenu > .dropdown-menu {
        position: absolute;
        top: 0;
        left: 100%;
        margin: 0;
        display: none;
    }

    .sns-navbar .dropdown-submenu:hover > .dropdown-menu,
    .sns-navbar .dropdown-submenu:focus-within > .dropdown-menu {
        display: block;
    }

    /* Сенсорный экран без hover: подменю раскрывает js/main.js первым касанием (класс .sns-open) */
    .sns-navbar .nav-item.dropdown.sns-open > .dropdown-menu,
    .sns-navbar .dropdown-submenu.sns-open > .dropdown-menu {
        display: block;
    }

    /* Стрелка вправо у пунктов с подменю — прижата к ВЕРХНЕЙ строке
       названия. `float: right` (было раньше) «уезжает» вниз при переносе
       длинного названия раздела на 2-3 строки: float пристыковывается к
       той строке текста, на которой браузер обработал ::after (в конце
       контента — то есть к последней строке), а не к первой. Flex с
       align-items:flex-start фиксирует стрелку на верхней строке всегда,
       независимо от того, сколько строк займёт название. */
    .sns-navbar .dropdown-submenu > .dropdown-toggle {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 0.5rem;
    }

    .sns-navbar .dropdown-submenu > .dropdown-toggle::after {
        transform: rotate(-90deg);
        flex-shrink: 0;
        margin-top: 0.35em; /* оптическая центровка каретки по высоте первой строки */
    }

    /* Длинное название раздела — переносится на несколько строк вместо
       того, чтобы вылезать за край экрана у глубоко вложенных флайаутов
       (Bootstrap по умолчанию держит .dropdown-item на одной строке —
       white-space:nowrap — у растянутого дерева ivecom.ru это уводит
       текст за пределы viewport). Ширина меню ограничена, чтобы перенос
       вообще случался, а не растягивал строку до бесконечности. */
    .sns-navbar .dropdown-menu {
        max-width: 260px;
    }

    .sns-navbar .dropdown-item {
        white-space: normal;
    }

    /* Флайаут, не помещающийся вправо на экране (на любой глубине, в
       любом дропдауне навбара) — разворачивается влево. Класс ставит
       js/nav-flyout.js при mouseenter/focus, измеряя реальную ширину
       подменю (заменяет прежний хардкод по фиксированной глубине
       вложенности, который решал только конкретный случай «Фургон» в
       «Каталоге» и не спас бы, например, «Инфо», если там когда-нибудь
       появятся вложенные пункты — см. CLAUDE-IVECOM-DESIGN.md). */
    .sns-navbar .dropdown-submenu > .dropdown-menu.dropdown-menu-flip-left {
        left: auto;
        right: 100%;
        top: 1.5rem;
    }
}

/* Мобильный offcanvas: всё дерево показано статично с отступами */
@media (max-width: 991.98px) {
    .sns-navbar .dropdown-menu {
        display: block;
        position: static;
        border: 0;
        box-shadow: none;
        padding-left: 1rem;
        margin: 0;
    }

    .sns-navbar .nav-link.dropdown-toggle::after {
        display: none;
    }
}

/* ===== Сайдбар: collapse-дерево разделов/страниц (_aside.php) ===== */

/* ⚠️ 2026-09-17: `sticky-top` полностью отключён (прямое ТЗ владельца:
   «сайдбар привязан к низу, убери все фиксы, пусть прокручивается
   вместе с текстом, как на обычном сайте»). Разметка (Razdel/Category/
   Tag/Group/Section View/view.php) несёт класс `.sticky-top` — вместо
   правки пяти файлов гасим поведение здесь одним правилом: обычный
   `position: static`, сайдбар — рядовая колонка, скроллится вместе со
   страницей, никакого прилипания к верху/низу.
   (Более ранняя правка того же дня — снятие internal overflow-скролла —
   потеряла смысл сама по себе вместе со sticky, но оставила полезный
   побочный эффект: карточка «Вопросы и обсуждение» (.sns-ask-or-discuss,
   AOS fade-up) была невидима — opacity:0 навсегда, — пока анимация
   слушала скролл ОКНА, а сайдбар скроллился сам в себе отдельным
   overflow-контейнером. Без sticky/overflow эта ловушка не воспроизводится
   в принципе.) */
.service-sidebar.sticky-top {
    position: static;
    top: auto;
}

/* Блоки сайдбара (Каталог/Информация/...) — светло-серые плашки-карточки
   с отступом между собой (2026-09-17, по ТЗ владельца), вместо прежней
   тонкой разделительной линии снизу. */
.main-aside .main-aside__widget {
    background: #f5f6f8;
    border-radius: 10px;
    padding: 1.25rem;
    margin-bottom: 1rem;
}

.main-aside .main-aside__widget:last-of-type {
    margin-bottom: 1rem;
}

.main-aside .aside-widget__header {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bs-secondary-color);
    margin-bottom: 0.75rem;
}

.main-aside .aside-widget__header a {
    color: inherit;
    text-decoration: none;
}

.main-aside .aside-widget__list .aside-widget__list {
    padding-left: 1rem; /* отступ вложенного уровня */
    margin-top: .25rem; /* розовые фоны активных родителя и потомка не сливаются */
}

.main-aside .aside-toggle {
    border: 0;
    background: none;
    padding: 0 0.35rem;
    color: var(--bs-secondary-color);
    line-height: 1;
}

.main-aside .aside-toggle .bi {
    display: inline-block;
    font-size: 0.75rem;
    transition: transform 0.2s ease;
}

.main-aside .aside-toggle:not(.collapsed) .bi {
    transform: rotate(90deg);
}

.main-aside .aside-widget__list .nav-link.active {
    font-weight: 600;
}

/* ===== Логотип в навбаре перед названием сайта (2026-09-17, хардкод) =====
   /img/logo_square.webp — public/img/, не asset-пайплайн. */
.navbar-brand-logo {
    height: 40px;
    width: auto;
    margin-right: .5rem;
    vertical-align: middle;
}

/* Подписи счётчиков на главной: #767676 на фоне #f9f9f9 даёт 4.31:1 (ниже 4.5), #6b6b6b — 5.0:1 (замер 2026-10-24) */
.hero .hero-stats .stat-item .stat-label,
.about .stats-row .stat-item .stat-label {
    color: #6b6b6b;
}

/* Активный пункт выпадающего меню навбара (слово владельца 2026-10-28): малиновый фон с тёмным шрифтом не читался —
   бледно-розовый фон, тёмно-малиновый жирный шрифт. Касается и «Каталога», и «Инфо», и вложенных подменю. */
.sns-navbar .dropdown-item.active,
.sns-navbar .dropdown-item:active {
    background-color: #fbe3ec;
    color: #7a0e38;
    font-weight: 600;
}

/* Активный пункт сайдбара — тот же бледно-розовый фон и тёмно-малиновый шрифт, что у выпадающего меню навбара (2026-10-28). */
.main-aside .aside-widget__list .nav-link.active {
    background-color: #fbe3ec;
    color: #7a0e38;
    border-radius: .375rem;
}

/* Наведение на активный пункт сайдбара: фон темнее, шрифт тёмно-малиновый глубже (2026-10-28). */
.main-aside .aside-widget__list .nav-link.active:hover,
.main-aside .aside-widget__list .nav-link.active:focus-visible {
    background-color: #f6c8d9;
    color: #5c0a2a;
}

/* Карточка вкладок: кнопка «Все обсуждения» — справа */
.sns-content-tabs .tab-pane[id$="-forum"] > .mt-3 {
    text-align: right;
}
/* Обсуждений нет: подпись слева, кнопка справа в одну строку */
.sns-content-tabs .tab-pane[id$="-forum"].show:has(> p.fst-italic) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .5em 1em;
}
.sns-content-tabs .tab-pane[id$="-forum"]:has(> p.fst-italic) > .mt-3 {
    margin-top: 0 !important;
}

/* Примечания и новости под текстом (Layout/Partials/_notes_area.php): карточки как на asder.es */
.sns-notes {
    margin-top: 2em;
    padding: 0 1.5em;
    background-color: var(--bs-tertiary-bg);
    border-radius: .5em;
}
.sns-notes__card {
    position: relative;
    padding: 1em 0;
    border-bottom: 1px dotted var(--bs-border-color);
    cursor: pointer;
    transition: background-color .15s;
}
.sns-notes__card:last-child {
    border-bottom: none;
}
.sns-notes__card:hover .sns-notes__link {
    color: var(--bs-primary);
}
.sns-notes__card--media {
    display: flex;
    align-items: flex-start;
    gap: 1em;
}
.sns-notes__image {
    flex: 0 0 25%;
    max-width: 25%;
}
.sns-notes__image picture,
.sns-notes__image img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: .25em;
}
.sns-notes__body {
    flex: 1 1 0;
    min-width: 0;
}
.sns-notes__title {
    margin: 0 0 .3em;
    font-size: 1.1em;
}
.sns-notes__link {
    padding: 0;
    border: 0;
    background: none;
    text-align: left;
    font-weight: 600;
    color: var(--bs-body-color);
}
.sns-notes__link::after {
    content: "";
    position: absolute;
    inset: 0;
}
.sns-notes__link:focus-visible {
    outline: none;
}
.sns-notes__link:focus-visible::after {
    outline: 2px solid var(--bs-primary);
    outline-offset: -2px;
    border-radius: .25em;
}
.sns-notes__description {
    font-size: .95em;
}
.sns-notes__description p {
    margin-bottom: 0;
}
@media (max-width: 767.98px) {
    .sns-notes__image {
        flex-basis: 33%;
        max-width: 33%;
    }
}

/* Страница модели: одна колонка на всю ширину — фото, галерея, цены, текст (2026-10-31) */
.product-view { display: flex; flex-direction: column; gap: 1.5em; padding: 1.25em 0; }
.product-view__media { display: flex; flex-direction: column; gap: 1.5em; }
.product-view__photo img { display: block; width: 100%; height: auto; border-radius: .5em; }
.product-view__gallery .sns-gallery { margin: 0; padding: 0; }
.product-view__gallery .sns-gallery__title { font-size: 1.1rem; margin: 0 0 .75em; }
.product-view__price {
    padding: 1.25em 1.5em;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .5em;
    box-shadow: 0 .25em 1em rgba(0, 0, 0, .06);
    display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5em 2em;
}
.product-view__price-row { display: flex; align-items: baseline; gap: .75em; }
.product-view__price-label { color: #6c757d; font-size: .95em; }
.product-view__price-label, .product-view__price-row s, .product-view__price-new strong { white-space: nowrap; }
.product-view__price-old s { color: #6c757d; font-size: 1.2em; }
.product-view__price-new strong { font-size: 2em; line-height: 1.1; color: #7a0e38; }
.product-view__text .article-content__body { padding: 0 .5em; }
.product-view__gallery .sns-gallery > .row { display: grid; grid-template-columns: repeat(auto-fit, minmax(7em, 1fr)); gap: .5em; margin: 0; }
.product-view__gallery .sns-gallery > .row > .col { width: auto; max-width: none; padding: 0; margin: 0; }

/* Отзывы модели: карточки во всю ширину (2026-10-31) */
.product-reviews { margin: 0 0 1.5em; }
.product-reviews__title { font-size: 1.5rem; margin: 0 0 1em; }
.product-reviews__list { display: flex; flex-direction: column; gap: 1em; }
.product-review {
    padding: 1.25em 1.5em;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .5em;
    box-shadow: 0 .25em 1em rgba(0, 0, 0, .06);
}
.product-review__head { display: flex; align-items: center; gap: 1em; margin-bottom: .75em; }
.product-review__avatar {
    flex: 0 0 3.25em; width: 3.25em; height: 3.25em; overflow: hidden; border-radius: 50%;
    background: #e9e4e7;
}
.product-review__avatar img { display: block; width: 100%; height: 100%; object-fit: cover; }
.product-review__who { flex: 1 1 auto; min-width: 0; }
.product-review__name { display: block; font-size: 1.05em; }
.product-review__meta { display: flex; flex-wrap: wrap; gap: .1em 1em; color: #6c757d; font-size: .9em; }
.product-review__vote { flex: 0 0 auto; color: #f5a623; font-size: 1.15em; letter-spacing: .1em; white-space: nowrap; }
.product-review__title { font-size: 1.05rem; margin: 0 0 .4em; }
.product-review__text { line-height: 1.55; }
.product-reviews__more { margin-top: 1.25em; text-align: center; }
