/* ============================================================================
 * gr-vendor-overrides.css — ВРЕМЕННЫЕ заплатки под сторонние виджеты (Этап 1).
 * ============================================================================
 * Зачем: select2/select2-bootstrap/datepicker несут свои BS3-литералы (#66afe9,
 * #5897fb, #3875d7, #337ab7, #ffdb99…) и не знают про --gr-*.
 *
 * Регистрация: отдельный бандл `GrVendorOverridesAsset` (`depends = [GrLayoutAsset]`),
 * подключён через `CustomAsset::depends` → покрывает публичные layout'ы, iframe-виджет (W7)
 * и админку, НЕ притягивая CSS/JS select2/datepicker туда, где их нет. Порядок: `ClientAsset`
 * (→Select2) и view-регистрации datepicker идут раньше layout'а, поэтому CSS виджетов всегда
 * до этого файла → перекрытие каскадом. **`!important` здесь нет ни одного.**
 *
 * TEMP(Phase 3): весь файл снимается, когда Фаза 3 соберёт BS5 Sass с
 * $theme-colors из --gr-* (и --bs-*-rgb): темы виджетов начнут читать --bs-* сами.
 * ------------------------------------------------------------------------- */

/* --- select2 4.x: геометрия одиночного селекта под поле формы (OBS01) ----------
 * ВАЖНО (подтверждено runtime-каскадом): этот файл — #7, а vendor `select2.css`
 * (#11, `/assets/…/css/select2.css`) и тема `select2-krajee-bs5.css` грузятся
 * ПОЗЖЕ. При РАВНОЙ специфичности выигрывает поздний vendor (баг default:
 * outer оставался 28px, rendered line-height 28px, arrow top:1px). Компенсация:
 *   • base `.select2-selection--single` — добавляем класс контейнера `.select2`
 *     → 0-3-0 (vendor base 0-2-0), оставаясь НИЖЕ focus/open (теперь 0-5-0, см.
 *     блок QA-004 ниже), чтобы покой не перебивал акцентный контур;
 *   • внутренние `__rendered`/`__arrow` — 0-4-0 (vendor 0-3-0); это ДРУГОЙ элемент
 *     (не `.select2-selection`), с focus/open не конфликтует.
 * Базовая высота = метрика поля `calc(1.42857143em + .75rem + 2px)` = 34px
 * (токен --gr-line-height-base; `.form-control` на этой странице: font-size
 * .875rem, padding .375rem .75rem, line-height 1.42857143, border 1px → 34px).
 * Нейтральная рамка --bs-border-color, радиус --gr-radius-btn. Внутренняя
 * геометрия у тем РАЗНАЯ:
 *   • default — верт. паддинга нет → rendered/arrow 32px (`calc(…без 2px)`);
 *   • krajee-bs5 — тема держит padding `.375rem 1.5rem .375rem .5rem` → content
 *     20px, поэтому `line-height` токена ставим на РОДИТЕЛЕ, а rendered
 *     `line-height: inherit` (НЕ явный токен — иначе перебьёт наследование и
 *     сломает sm/lg, где vendor `.input-sm/-lg … .select2-selection--single` 0-4-0
 *     оставляет 1.5). Фиксированной height у rendered нет (overflow). Стрелка у
 *     темы `display:none` (шеврон — фоновая SVG), правило не нужно.
 * `!important` нет. `--single` не затрагивает multiple (теги). */

/* default: без вертикального паддинга — внутренности заполняют content (32px). */
.select2.select2-container--default .select2-selection--single {
    height: calc(var(--gr-line-height-base) * 1em + .75rem + 2px);
    border-color: var(--bs-border-color);
    border-radius: var(--gr-radius-btn);
}
.select2.select2-container--default .select2-selection--single .select2-selection__rendered {
    height: calc(var(--gr-line-height-base) * 1em + .75rem);
    line-height: calc(var(--gr-line-height-base) * 1em + .75rem);
}
.select2.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: calc(var(--gr-line-height-base) * 1em + .75rem);
    top: 0;
}

/* krajee-bs5: padding темы сохраняем; line-height — на родителе (токен),
 * rendered наследует (см. разбор каскада sm/lg в комментарии выше). */
.select2.select2-container--krajee-bs5 .select2-selection--single {
    height: calc(var(--gr-line-height-base) * 1em + .75rem + 2px);
    border-color: var(--bs-border-color);
    border-radius: var(--gr-radius-btn);
    line-height: var(--gr-line-height-base);
}
.select2.select2-container--krajee-bs5 .select2-selection--single .select2-selection__rendered {
    line-height: inherit;
}

/* --- select2 4.x: активный/фокусный контур + ring (QA-004) ----------------------
 * Runtime-подтверждённый дефект QA-004 «Krajee open focus ring inconsistent»: тема
 * krajee-bs5 несёт СВОЙ открытый/фокусный контур
 *   `.select2-container--krajee-bs5.select2-container--open:not(.select2-container--disabled)
 *    .select2-selection,
 *    .select2-container--krajee-bs5:not(.select2-container--disabled)
 *    .select2-selection:focus { border-color:#86b7fe; box-shadow: 0 0 0 .25rem rgba(13,110,253,.25) }`
 * — специфичность 0-4-0, и файл грузится ПОЗЖЕ нашего (`select2.min.css` идёт после
 * `gr-vendor-overrides.css` в layout). При прежнем 0-4-0 выигрывал tie → в ОТКРЫТОМ
 * состоянии (class `--open`) проступал чужой синий ринг, хотя в фокусе был наш зелёный.
 * Поднимаем РОВНО на один класс — до 0-5-0: этого достаточно, чтобы tie выигрывался
 * нами, и `!important` не нужен. Гвард `:not(.select2-container--disabled)` зеркалит
 * vendor-гвард: у disabled-контейнера акцентного контура нет (его вид не трогаем).
 * Правило одно для обеих single-тем: у `default` своего open-ринга нет, для него
 * поведение не меняется. `!important` нет. */
.select2.select2-container.select2-container--focus:not(.select2-container--disabled) .select2-selection,
.select2.select2-container.select2-container--open:not(.select2-container--disabled) .select2-selection {
    border-color: var(--gr-accent);
    box-shadow: 0 0 0 var(--gr-focus-ring-width) var(--gr-focus-ring-color);
}

/* --- select2 4.x: подсветка результата / выбранное -----------------------------
 * Перечислены обе темы на 0-3-0 (как и темы: `…--default/…--krajee-bs5
 * .select2-results__option--highlighted[aria-selected]`); поздний файл выигрывает tie. */
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--krajee-bs5 .select2-results__option--highlighted[aria-selected] {
    background: var(--gr-accent);
    color: #fff;
}
.select2-selection--multiple .select2-selection__choice {
    background-color: var(--gr-accent);
    border-color: var(--gr-accent);
    background-image: none;
    color: #fff;
}

/* --- select2 4.x: подсветка совпавшего фрагмента ------------------------------
 * Аналог 3.5 `.select2-result-selectable .select2-match { text-decoration: underline }`
 * (этот CSS уходил вместе с bower-select2 3.5.4). Разметку `<span class="select2-match">`
 * формирует JS-шаблон (markMatch → highlightMatch). */
.select2-results__option .select2-match {
    text-decoration: underline;
}

/* Удалено в W6b: 3.5-only селекторы сняты вместе с движком bower-select2 3.5.4:
 * `.select2-choice`, `.select2-choices`, `.select2-container-active`,
 * `.select2-drop*`, `.select2-highlighted`, `.select2-result-label`,
 * `.select2-search-choice`. Замена — 4.x-блок выше. */

/* --- datepicker3: выбранный день / «сегодня» / выбранный месяц ---------------- */
.datepicker table tr td.active,
.datepicker table tr td.active.highlighted,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.highlighted:hover,
.datepicker table tr td.active:focus,
.datepicker table tr td.active.highlighted:focus,
.datepicker table tr td.active.focus,
.datepicker table tr td.active.highlighted.focus {
    background-color: var(--gr-accent);
    border-color: var(--gr-accent);
    color: #fff;
    text-shadow: none;
}
.datepicker table tr td.active.active,
.datepicker table tr td.active.highlighted.active,
.datepicker table tr td.active:active,
.datepicker table tr td.active.highlighted:active,
.datepicker table tr td.active.active.focus,
.datepicker table tr td.active.active:hover {
    background-color: var(--gr-accent-active);
    border-color: var(--gr-accent-active);
}
.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today:focus,
.datepicker table tr td.today.focused,
.datepicker table tr td.today:not(.disabled),
.datepicker table tr td.today:not(.disabled):hover,
.datepicker table tr td.today:not(.disabled):focus,
.datepicker table tr td.today.focused:not(.disabled) {
    background-color: var(--gr-accent);
    border-color: var(--gr-accent);
    color: #fff;
    text-shadow: none;
}
/* disabled «today» больше не оранжевый (vendor #ffdb99) — нейтрально-приглушённый.
 * Селектор с .disabled — чтобы перебить vendor `.today.disabled` (3 класса). */
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:active {
    background-color: var(--gr-surface-alt);
    border-color: var(--gr-surface-alt);
    color: var(--gr-muted);
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:focus,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
    background-color: var(--gr-accent);
    border-color: var(--gr-accent);
    color: #fff;
    text-shadow: none;
}

/* --- native checkbox / radio: брендовый акцент -------------------------------- */
input[type="checkbox"],
input[type="radio"] {
    accent-color: var(--gr-accent);
}
