/**
 * @file: overrides.css
 * @description: Временные точечные перекрытия на период миграции (минимизировать).
 */

@layer overrides {
  /* ===== ВРЕМЕННАЯ СОВМЕСТИМОСТЬ НА ПЕРИОД МИГРАЦИИ ШАБЛОНОВ ===== */
  /* 1) Bootstrap утилиты (dark) */
  [data-theme="dark"] .text-dark:not(.bg-warning):not([class*="bg-warning"]):not(.bg-info):not([class*="bg-info"]),
  [data-theme="dark"] .text-black {
    color: var(--text-primary) !important;
  }

  /* Bootstrap muted/secondary — в dark должны быть читаемыми на surface */
  [data-theme="dark"] .text-muted {
    color: var(--text-muted) !important;
  }

  [data-theme="dark"] .text-secondary {
    color: var(--text-secondary) !important;
  }

  /* 2) «warning + text-dark» должно быть читабельным */
  [data-theme="dark"] .bg-warning.text-dark,
  [data-theme="dark"] .card-header.bg-warning.text-dark,
  [data-theme="dark"] .badge.bg-warning.text-dark {
    background-color: var(--warning) !important;
    color: var(--on-warning) !important;
  }

  [data-theme="dark"] .alert-warning.text-dark,
  [data-theme="dark"] .alert.alert-warning.text-dark {
    background-color: rgba(210, 153, 34, 0.22) !important;
    border-color: var(--warning) !important;
    color: #fcd34d !important;
  }

  [data-theme="dark"] .alert-warning.text-dark strong,
  [data-theme="dark"] .alert-warning.text-dark i.bi,
  [data-theme="dark"] .alert.alert-warning.text-dark strong,
  [data-theme="dark"] .alert.alert-warning.text-dark i.bi {
    color: #fcd34d !important;
  }

  /* 3) «primary + text-white» (например, заголовки) */
  [data-theme="dark"] .bg-primary.text-white,
  [data-theme="dark"] .card-header.bg-primary.text-white {
    background: var(--header-primary-bg) !important;
    color: var(--on-header-primary) !important;
  }

  /* УДАЛЕНО: color: inherit для дочерних элементов .bg-primary.text-white */
  /* Это правило вызывало наследование белого цвета для всех дочерних элементов */
  /* Вместо этого используем явные правила ниже для элементов внутри карточек */

  /* УДАЛЕНО: принудительный color для .event-car-tag — ломал контраст (светлый текст на светлом фоне) */
  /* Цвета тегов машин: токены --event-car-tag-* в variables.css + events.css */

  /* УДАЛЕНО: Агрессивные правила для всех элементов внутри карточек */
  /* Эти правила вызывали конфликты и перекрытие шрифта. Вместо этого используются специфичные правила в dark.css */
  /* В светлой теме таких правил нет, поэтому там все работает нормально */

  /* КРИТИЧЕСКОЕ: Перекрываем класс .text-white для элементов внутри card-body и event-card-body */
  /* Также перекрываем для всех элементов внутри .card, кроме .card-header (где белый текст уместен) */
  [data-theme="dark"] .card-body .text-white,
  [data-theme="dark"] .event-card-body .text-white,
  [data-theme="dark"] .card-body .text-white *,
  [data-theme="dark"] .event-card-body .text-white *,
  [data-theme="dark"] .card .text-white:not(.card-header):not(.card-header *):not(.event-card-header):not(.event-card-header *),
  [data-theme="dark"] .event-card .text-white:not(.card-header):not(.card-header *):not(.event-card-header):not(.event-card-header *),
  [data-theme="dark"] .championship-card .text-white:not(.card-header):not(.card-header *):not(.event-card-header):not(.event-card-header *),
  [data-theme="dark"] .standalone-race-card .text-white:not(.card-header):not(.card-header *):not(.event-card-header):not(.event-card-header *) {
    color: var(--text-primary) !important;
  }

}

/* ===== КРИТИЧЕСКОЕ: ЦВЕТ ТЕКСТА КНОПОК В ТЕМНОЙ ТЕМЕ ===== */
/* Правила ВНЕ слоя имеют приоритет над всеми слоями, включая Bootstrap */
/* Кнопки с цветным фоном должны иметь белый текст для контраста */

[data-theme="dark"] .btn-success,
[data-theme="dark"] .btn.btn-success,
[data-theme="dark"] a.btn-success,
[data-theme="dark"] a.btn.btn-success,
[data-theme="dark"] a.btn.btn-success.btn-sm,
[data-theme="dark"] button.btn-success,
[data-theme="dark"] button.btn.btn-success {
  --bs-btn-color: #ffffff;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-active-color: #ffffff;
  color: #ffffff !important;
}

[data-theme="dark"] .btn-success *,
[data-theme="dark"] .btn-success i,
[data-theme="dark"] .btn-success i.bi,
[data-theme="dark"] .btn-success span,
[data-theme="dark"] a.btn.btn-success *,
[data-theme="dark"] a.btn.btn-success i,
[data-theme="dark"] a.btn.btn-success i.bi,
[data-theme="dark"] a.btn.btn-success span {
  color: #ffffff !important;
}

/* btn-secondary в темной теме тоже должен иметь белый текст */
[data-theme="dark"] .btn-secondary,
[data-theme="dark"] .btn.btn-secondary,
[data-theme="dark"] a.btn-secondary,
[data-theme="dark"] a.btn.btn-secondary,
[data-theme="dark"] a.btn.btn-secondary.btn-sm,
[data-theme="dark"] button.btn-secondary,
[data-theme="dark"] button.btn.btn-secondary {
  --bs-btn-color: #ffffff;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-active-color: #ffffff;
  color: #ffffff !important;
}

[data-theme="dark"] .btn-secondary *,
[data-theme="dark"] .btn-secondary i,
[data-theme="dark"] .btn-secondary i.bi,
[data-theme="dark"] .btn-secondary span,
[data-theme="dark"] a.btn.btn-secondary *,
[data-theme="dark"] a.btn.btn-secondary i,
[data-theme="dark"] a.btn.btn-secondary i.bi,
[data-theme="dark"] a.btn.btn-secondary span {
  color: #ffffff !important;
}

/* badge bg-secondary: контраст на card-header и других тёмных поверхностях */
[data-theme="dark"] .badge.bg-secondary {
  background-color: var(--secondary) !important;
  border: 1px solid var(--border-color);
  color: #000 !important;
}

/* btn-primary в темной теме тоже должен иметь белый текст */
[data-theme="dark"] .btn-primary,
[data-theme="dark"] .btn.btn-primary,
[data-theme="dark"] a.btn-primary,
[data-theme="dark"] a.btn.btn-primary,
[data-theme="dark"] a.btn.btn-primary.btn-sm,
[data-theme="dark"] button.btn-primary,
[data-theme="dark"] button.btn.btn-primary {
  --bs-btn-color: #ffffff;
  --bs-btn-hover-color: #ffffff;
  --bs-btn-active-color: #ffffff;
  color: #ffffff !important;
}

[data-theme="dark"] .btn-primary *,
[data-theme="dark"] .btn-primary i,
[data-theme="dark"] .btn-primary i.bi,
[data-theme="dark"] .btn-primary span,
[data-theme="dark"] a.btn.btn-primary *,
[data-theme="dark"] a.btn.btn-primary i,
[data-theme="dark"] a.btn.btn-primary i.bi,
[data-theme="dark"] a.btn.btn-primary span {
  color: #ffffff !important;
}

/* alert-warning в тёмной теме: вне @layer, перекрывает Bootstrap text-dark и bg-warning-subtle */
[data-theme="dark"] .alert.alert-warning,
[data-theme="dark"] .alert.alert-warning.no-toast {
  background-color: rgba(210, 153, 34, 0.28) !important;
  border-color: var(--warning) !important;
  color: #fde68a !important;
}

[data-theme="dark"] .alert.alert-warning strong,
[data-theme="dark"] .alert.alert-warning i.bi,
[data-theme="dark"] .alert.alert-warning.no-toast strong,
[data-theme="dark"] .alert.alert-warning.no-toast i.bi {
  color: #fde68a !important;
}

/* ===== Командные карточки: усиленное визуальное разделение ===== */
/* Размещено в overrides.css, чтобы гарантированно перекрывать theme-правила .card/.card-body */
[data-theme="light"] .team-app-list .team-app-h,
[data-theme="dark"] .team-app-list .team-app-h {
  border-left-width: 6px !important;
}

[data-theme="light"] .team-app-list .team-app-h {
  border-color: #c3cedf !important;
  border-left-color: #4f6689 !important;
  background: #edf2fb !important;
  box-shadow: none !important;
}

[data-theme="light"] .team-app-list .team-app-h:nth-child(even) {
  background: #e5ecf8 !important;
}

[data-theme="light"] .team-app-list .team-app-h .card-body {
  background: #f8fbff !important;
  color: #1b2433 !important;
}

[data-theme="dark"] .team-app-list .team-app-h {
  border-color: #4a5d7a !important;
  border-left-color: #89aee0 !important;
  background: #1e2a3a !important;
  box-shadow: none !important;
}

[data-theme="dark"] .team-app-list .team-app-h:nth-child(even) {
  background: #223146 !important;
}

[data-theme="dark"] .team-app-list .team-app-h .card-body {
  background: #162131 !important;
  color: var(--text-primary) !important;
}

[data-theme="light"] .team-app-list .team-app-h:hover,
[data-theme="dark"] .team-app-list .team-app-h:hover {
  transform: translateY(-2px) !important;
}

/* ===== Cookie consent banner: поверх нижних виджетов и кликабельность ===== */
#cookie-consent-banner {
  display: none;
  z-index: var(--z-cookie-banner) !important;
  pointer-events: none;
  padding-bottom: env(safe-area-inset-bottom, 0px);
}

#cookie-consent-banner .overlay-surface__content {
  align-items: stretch !important;
  background-clip: padding-box;
  background-color: var(--overlay-bg) !important;
  border-color: var(--overlay-border) !important;
  color: var(--overlay-text) !important;
  flex-direction: column !important;
  gap: 0.75rem !important;
  line-height: 1.35;
  pointer-events: auto;
}

#cookie-consent-banner .overlay-surface__content > .flex-grow-1 {
  min-width: 0;
  overflow-wrap: anywhere;
}

#cookie-consent-banner .overlay-surface__content > .flex-grow-1,
#cookie-consent-banner .overlay-surface__content > .flex-grow-1 * {
  color: var(--overlay-text) !important;
  opacity: 1 !important;
}

#cookie-consent-banner .overlay-surface__content > .d-flex.gap-2 {
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  min-width: 0;
}

#cookie-consent-banner .overlay-surface__content > .d-flex.gap-2 .btn {
  flex: 0 1 auto;
  min-width: max-content;
  white-space: normal !important;
}

@media (max-width: 575.98px) {
  #cookie-consent-banner {
    padding: 0.5rem !important;
    padding-bottom: calc(0.5rem + env(safe-area-inset-bottom, 0px)) !important;
  }

  #cookie-consent-banner .overlay-surface__content > .d-flex.gap-2 {
    justify-content: stretch !important;
  }

  #cookie-consent-banner .overlay-surface__content > .d-flex.gap-2 .btn {
    flex: 1 1 100%;
  }
}

/* Opaque backgrounds for fixed / overlay alerts (not inline hints) */
.alert-overlay,
[data-overlay="true"],
.alert.position-fixed {
  background-color: var(--overlay-bg) !important;
  border-color: var(--overlay-border) !important;
  color: var(--overlay-text) !important;
  box-shadow: var(--overlay-shadow);
}

[data-theme="light"] .alert-overlay,
[data-theme="light"] [data-overlay="true"],
[data-theme="light"] .alert.position-fixed {
  background-color: var(--overlay-bg) !important;
  color: var(--overlay-text) !important;
}

[data-theme="dark"] .alert-overlay,
[data-theme="dark"] [data-overlay="true"],
[data-theme="dark"] .alert.position-fixed {
  background-color: var(--overlay-bg) !important;
  color: var(--overlay-text) !important;
}

/* ===== Cookie consent banner: контраст в темной теме ===== */
[data-theme="dark"] #cookie-consent-banner .overlay-surface__content {
  background-color: var(--overlay-bg) !important;
  border-color: var(--border-dark) !important;
  color: var(--text-primary) !important;
}

[data-theme="dark"] #cookie-consent-banner .overlay-surface__content .alert-link,
#cookie-consent-banner .overlay-surface__content a:not(.btn) {
  color: var(--primary) !important;
  text-decoration: underline;
}

/* ===== Rating view toggle: контраст активной кнопки в dark theme ===== */
[data-theme="dark"] .pilot-cards-page .view-toggle-container a.view-toggle-btn.active,
[data-theme="dark"] .pilot-cards-page .view-toggle-container a.view-toggle-btn.active:visited,
[data-theme="dark"] .rating-page .view-toggle-container a.view-toggle-btn.active,
[data-theme="dark"] .rating-page .view-toggle-container a.view-toggle-btn.active:visited {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  opacity: 1 !important;
}

/* ===== Pagination: контраст активной страницы (форум, категории, списки) ===== */
[data-theme="dark"] .pagination .page-item.active .page-link,
[data-theme="dark"] .pagination .page-item.active .page-link:visited,
[data-theme="dark"] .pagination .page-item.active .page-link:hover,
[data-theme="dark"] .pagination .page-item.active .page-link:focus,
[data-theme="light"] .pagination .page-item.active .page-link,
[data-theme="light"] .pagination .page-item.active .page-link:visited,
[data-theme="light"] .pagination .page-item.active .page-link:hover,
[data-theme="light"] .pagination .page-item.active .page-link:focus {
  background-color: var(--primary) !important;
  border-color: var(--primary) !important;
  color: var(--on-primary) !important;
  -webkit-text-fill-color: var(--on-primary) !important;
  opacity: 1 !important;
}

/* ===== Badge links: контраст на цветной заливке (форум, карточки) ===== */
[data-theme="dark"] a.badge.bg-primary,
[data-theme="dark"] a.badge.bg-primary:visited,
[data-theme="dark"] a.badge.bg-primary:hover,
[data-theme="dark"] a.badge.bg-primary:focus,
[data-theme="dark"] a.badge.bg-success,
[data-theme="dark"] a.badge.bg-success:visited,
[data-theme="dark"] a.badge.bg-success:hover,
[data-theme="dark"] a.badge.bg-success:focus,
[data-theme="dark"] a.badge.bg-danger,
[data-theme="dark"] a.badge.bg-danger:visited,
[data-theme="dark"] a.badge.bg-danger:hover,
[data-theme="dark"] a.badge.bg-danger:focus,
[data-theme="dark"] a.badge.bg-info,
[data-theme="dark"] a.badge.bg-info:visited,
[data-theme="dark"] a.badge.bg-info:hover,
[data-theme="dark"] a.badge.bg-info:focus,
[data-theme="dark"] a.badge.icon-light,
[data-theme="dark"] a.badge.icon-light:visited,
[data-theme="dark"] a.badge.icon-light:hover,
[data-theme="dark"] a.badge.icon-light:focus {
  color: var(--on-primary) !important;
  -webkit-text-fill-color: var(--on-primary) !important;
}

[data-theme="dark"] a.badge.bg-secondary,
[data-theme="dark"] a.badge.bg-secondary:visited,
[data-theme="dark"] a.badge.bg-secondary:hover,
[data-theme="dark"] a.badge.bg-secondary:focus {
  color: #000000 !important;
  -webkit-text-fill-color: #000000 !important;
}

[data-theme="dark"] a.badge.bg-warning,
[data-theme="dark"] a.badge.bg-warning:visited,
[data-theme="dark"] a.badge.bg-warning:hover,
[data-theme="dark"] a.badge.bg-warning:focus {
  color: var(--on-warning) !important;
  -webkit-text-fill-color: var(--on-warning) !important;
}

[data-theme="dark"] a.badge.icon-light i.bi,
[data-theme="dark"] a.badge.icon-light .bi {
  color: inherit !important;
}

/* История опыта пилота: название этапа в card-body */
[data-theme="dark"] .card-body .history-item .history-item-title {
  color: var(--text-primary) !important;
}

/* ===== Dark theme: повышенная видимость чекбоксов (не form-switch) ===== */
[data-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"],
[data-bs-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"] {
  background-color: #1f2733 !important;
  border-color: #9fb3cc !important;
  box-shadow: 0 0 0 1px rgba(159, 179, 204, 0.35) !important;
}

[data-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:hover,
[data-bs-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:hover {
  border-color: #c3d4e8 !important;
  box-shadow: 0 0 0 2px rgba(195, 212, 232, 0.28) !important;
}

[data-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:focus,
[data-bs-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:focus {
  border-color: #79a7ff !important;
  box-shadow: 0 0 0 0.25rem rgba(121, 167, 255, 0.35) !important;
}

[data-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:checked,
[data-bs-theme="dark"] .form-check:not(.form-switch) .form-check-input[type="checkbox"]:checked {
  background-color: #2f7dff !important;
  border-color: #6ea1ff !important;
  box-shadow: 0 0 0 1px rgba(110, 161, 255, 0.45) !important;
}

[data-theme="dark"] .form-check:not(.form-switch) .form-check-input.is-valid[type="checkbox"],
[data-bs-theme="dark"] .form-check:not(.form-switch) .form-check-input.is-valid[type="checkbox"] {
  border-color: #6ea1ff !important;
}

/* Native select popup: Windows Chrome игнорирует color-scheme для списка option */
[data-theme="dark"] .form-select option,
[data-theme="dark"] select:not([multiple]):not([size]) option,
[data-theme="dark"] .form-select optgroup,
[data-theme="dark"] select:not([multiple]):not([size]) optgroup {
  background-color: var(--native-select-option-bg) !important;
  color: var(--native-select-option-color) !important;
}

[data-theme="dark"] .form-select option:checked,
[data-theme="dark"] select:not([multiple]):not([size]) option:checked {
  background-color: var(--native-select-option-selected-bg) !important;
  color: var(--native-select-option-color) !important;
}

/* ===== THEME SWITCHER (вне слоёв — перекрывает global link color и Bootstrap) ===== */
.navbar .theme-switcher__option,
.navbar-nav .theme-switcher__option {
  opacity: 1 !important;
  filter: none !important;
  text-decoration: none !important;
}

.navbar .theme-switcher__option:not(.active),
.navbar-nav .theme-switcher__option:not(.active) {
  background: var(--theme-switcher-idle-bg) !important;
  border: 2px solid var(--theme-switcher-idle-border) !important;
  color: var(--theme-switcher-idle-text) !important;
}

.navbar .theme-switcher__option:not(.active):hover,
.navbar .theme-switcher__option:not(.active):focus-visible,
.navbar-nav .theme-switcher__option:not(.active):hover,
.navbar-nav .theme-switcher__option:not(.active):focus-visible {
  background: var(--theme-switcher-hover-bg) !important;
  border-color: var(--theme-switcher-hover-border) !important;
  color: var(--theme-switcher-hover-text) !important;
}

.navbar .theme-switcher__option.active,
.navbar-nav .theme-switcher__option.active {
  background: var(--theme-switcher-active-bg) !important;
  border: 2px solid var(--theme-switcher-active-border) !important;
  color: var(--theme-switcher-active-text) !important;
}

.navbar .theme-switcher__option.active:hover,
.navbar .theme-switcher__option.active:focus-visible,
.navbar-nav .theme-switcher__option.active:hover,
.navbar-nav .theme-switcher__option.active:focus-visible {
  background: var(--theme-switcher-active-hover-bg) !important;
  border-color: var(--theme-switcher-active-hover-border) !important;
  color: var(--theme-switcher-active-hover-text) !important;
}

.navbar .theme-switcher__option .theme-switcher__icon,
.navbar .theme-switcher__option .theme-switcher__label,
.navbar .theme-switcher__option .theme-switcher__mark,
.navbar-nav .theme-switcher__option .theme-switcher__icon,
.navbar-nav .theme-switcher__option .theme-switcher__label,
.navbar-nav .theme-switcher__option .theme-switcher__mark {
  color: inherit !important;
}

@media (max-width: 991.98px) {
  .navbar .theme-switcher {
    padding-inline: 1rem;
  }
}

/* ===== Модальные окна: непрозрачная подложка в тёмной теме ===== */
/* Зачем: var(--bg-secondary) был циклическим токеном → прозрачный фон у .modal-content и др. */
[data-theme="dark"] .modal-content,
[data-theme="dark"] .modal-header,
[data-theme="dark"] .modal-footer,
[data-theme="dark"] .modal-body {
  background-color: var(--surface-2, #11161d) !important;
  background-clip: padding-box;
  color: var(--text-primary) !important;
}

[data-theme="dark"] .modal-content {
  border: 1px solid var(--border-color) !important;
  box-shadow: var(--shadow-lg);
}

[data-theme="dark"] .modal-header,
[data-theme="dark"] .modal-footer {
  border-color: var(--border-color) !important;
}

[data-theme="dark"] .modal-backdrop.show {
  --bs-backdrop-opacity: 0.72;
  background-color: #000 !important;
}

/* ===== Каталог команд: контраст названия на цветном заголовке (dark) ===== */
@layer overrides {
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header {
    background: linear-gradient(135deg, rgba(31, 36, 43, 0.95) 0%, rgba(17, 22, 29, 0.95) 100%) !important;
    border-left-color: var(--primary) !important;
  }

  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .card-title,
  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .card-title a,
  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .card-title a:visited,
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header .card-title,
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header .card-title a,
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header .card-title a:visited {
    color: var(--team-header-title-color, var(--text-primary)) !important;
    -webkit-text-fill-color: var(--team-header-title-color, var(--text-primary)) !important;
    text-shadow: var(--team-header-title-shadow, none);
    text-decoration: none;
    opacity: 1 !important;
  }

  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .card-title a:hover,
  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .card-title a:focus,
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header .card-title a:hover,
  html[data-theme="dark"] .team-catalog .team-card:not([data-rank]) .team-header .card-title a:focus {
    color: var(--team-header-title-color, #ffffff) !important;
    -webkit-text-fill-color: var(--team-header-title-color, #ffffff) !important;
    opacity: 0.92 !important;
  }

  html[data-theme="dark"] .team-catalog .team-card[data-rank] .team-header .team-tag {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
  }
}

/* ===== NAVBAR BRAND (вне слоёв — перекрывает global link color в dark theme) ===== */
html[data-theme="dark"] .navbar.bg-primary .navbar-brand,
html[data-theme="dark"] .navbar.navbar-expand-lg.navbar-dark.bg-primary .navbar-brand {
  color: #ffcc02 !important;
}

html[data-theme="dark"] .navbar.bg-primary .navbar-brand:hover,
html[data-theme="dark"] .navbar.navbar-expand-lg.navbar-dark.bg-primary .navbar-brand:hover {
  color: #ffd84a !important;
}
