/* Стили для выпадающего списка */
.select {
    position: relative;
    display: inline-block;
    /* Убираем z-index у родителя - это критично! */
    z-index: auto;
}

/* Контейнер form-group не должен создавать контекст наложения */
.form-group {
    position: relative; /* Если нужно для позиционирования label */
    z-index: auto; /* Сбрасываем z-index */
}

/* Если у селекта есть класс, начинающийся с w (например w30) */
.select[class*="w"] {
    min-width: unset !important;
    max-width: unset !important;
}

.select[class*="w"] .select-select,
.select[class*="w"] .select-options {
    min-width: unset !important;
    max-width: unset !important;
    width: 100%;
}

/* Стиль для выбранного элемента выпадающего списка */
.select-select {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px;
    border: 1px solid var(--form-control-border);
    border-radius: 15px;
    background-color: var(--form-control-bg);
    color: var(--form-control-tx);
    cursor: pointer;
    min-width: 150px;
    max-width: 550px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    position: relative;
    z-index: 2; /* Небольшой z-index для поля */
}

/* Стиль для стрелки выпадающего списка */
.select-arrow {
    margin-left: 10px;
    border: solid transparent;
    border-width: 5px 5px 0 5px;
    border-top-color: var(--text-primary);
    transition: transform 0.2s;
    position: relative;
    z-index: 3; /* Чуть выше поля */
}

/* Поворот стрелки при открытом выпадающем списке */
.select.open .select-arrow {
    transform: rotate(180deg);
}

/* Стили для выпадающего списка опций */
.select-options {
    display: none;
    position: absolute;
    background-color: var(--bg-secondary);
    border: 1px solid var(--form-control-border);
    border-radius: 15px;
    width: 100%;
    min-width: 150px;
    max-width: 550px;
    /* ОЧЕНЬ ВАЖНО: большой z-index для выпадающего списка */
    z-index: 1000;
    max-height: 400px;
    overflow-y: auto;
    text-align: left;
    color: var(--text-primary);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    /* Отступ от поля */
    margin-top: 4px;
    /* Убеждаемся, что элементы внутри кликабельны */
    pointer-events: auto;
}

/* Стиль для каждой опции в выпадающем списке */
.select-option {
    padding: 10px;
    cursor: pointer;
    text-align: left;
    /* Наследует z-index от .select-options */
}

/* Стиль для выбранной опции */
.select-option.selected {
    background-color: var(--table-tr-select-bg);
    color: var(--text-primary);
}

/* Стиль для опции при наведении */
.select-option:hover {
    background-color: var(--select-options-select-bg);
}

/* Стиль для обертки количества (если используется) */
.select-count-wrap {
    display: inline-flex;
    align-items: center;
}

.select-count-bracket {
    color: var(--text-secondary);
    font-size: 14px;
}

.select-count-number {
    color: var(--btn-primary);
    font-weight: bold;
    margin: 0 2px;
    font-size: 80%;
}

/* ===== КРИТИЧЕСКИ ВАЖНЫЕ ПРАВИЛА ДЛЯ ОТКРЫТОГО СОСТОЯНИЯ ===== */

/* Когда селект открыт */
.select.open {
    /* Создаем новый контекст наложения для открытого селекта */
    z-index: 1001; /* Выше, чем закрытые селекты */
}

.select.open .select-select {
    border-bottom-left-radius: 0; /* Опционально: скругляем только верхние углы */
    border-bottom-right-radius: 0;
    z-index: 1002; /* Чуть выше контейнера */
}

.select.open .select-options {
    display: block;
    /* Максимальный z-index, чтобы быть поверх всего */
    z-index: 1003;
}

/* Гарантия, что открытый селект будет поверх закрытых */
.select.open ~ .select {
    z-index: 1; /* Понижаем z-index соседних селектов */
}

.select.open ~ .select .select-options {
    z-index: 1; /* Их выпадающие списки тоже понижаем */
}

/* Для случая, если селекты находятся в разных form-group */
.form-group:has(.select.open) {
    z-index: 1002; /* Поднимаем всю группу с открытым селектом */
}

.form-group:has(.select.open) ~ .form-group {
    z-index: 1; /* Опускаем соседние группы */
}
