/*
 * Copyright (c) 2026 Besnovatyj. Licensed under the MIT License.
 */

/*
 * Только то, без чего меню НЕ РАБОТАЕТ.
 *
 * Раскладку, цвета, отступы и типографику пунктов (.navbar-nav / .nav-item /
 * .nav-link / .dropdown-menu / .dropdown-item) задаёт Bootstrap и тема — здесь их
 * НЕ переопределяем. Ни одного класса, придуманного темой, тут тоже нет.
 *
 * Единственная причина существования файла: Bootstrap 5 намеренно не поддерживает
 * вложенные выпадающие меню («Multilevel dropdowns beyond Level 1 are not supported»),
 * а дерево меню в CMS может быть любой глубины. Ниже — минимум, который делает
 * третий и последующие уровни рабочими: позиционирование уровня и направление
 * каретки. Раскрытием и закрытием занимается frontend.js, состояние — стандартный
 * бутстраповский класс `.show` (правило `.dropdown-menu.show { display: block }`
 * уже есть в Bootstrap, дублировать не нужно).
 */

.dropdown-submenu {
    position: relative;
}

/*
 * Вложенный уровень выезжает вправо от родителя и прижимается к его верхней кромке.
 * `.dropdown-menu` у Bootstrap уже `position: absolute`, поэтому здесь только координаты.
 *
 * Ниже брейкпоинта раскрытия навбара Bootstrap переводит выпадашки в поток
 * (`.navbar-nav .dropdown-menu { position: static }`), и top/left молча
 * игнорируются: на узком экране уровни встают в общий столбец — как и нужно.
 */
.dropdown-submenu > .dropdown-menu {
    top: 0;
    left: 100%;
    margin-top: -0.125rem;
    margin-left: 0.125rem;
}

/*
 * Уровню не хватило места справа — раскрываем его влево от родителя.
 * Класс ставит frontend.js уже после открытия: до этого момента ширина уровня
 * неизвестна (он `display: none`), а значит и замерить выход за край экрана нечем.
 */
.dropdown-submenu > .dropdown-menu.dropdown-submenu-flip {
    left: auto;
    right: 100%;
    margin-left: 0;
    margin-right: 0.125rem;
}

/*
 * Каретка вложенного пункта смотрит вправо, а не вниз: уровень раскрывается вбок.
 * Значения — бутстраповские, из `.dropend .dropdown-toggle::after`; `border-top`
 * обязательно гасится, иначе к правой стрелке добавится нижняя.
 */
.dropdown-submenu > .dropdown-toggle::after {
    float: right;
    margin-top: 0.35em;
    margin-left: 0.5em;
    border-top: 0.3em solid transparent;
    border-right: 0;
    border-bottom: 0.3em solid transparent;
    border-left: 0.3em solid;
}
