/* theme-overrides.css - тёмная тема для классов, которые всё ещё живут в extra_css отдельных страниц.
   Файл подключается последним, поэтому перебивает CSS уровня страницы. Цвета выражены токенами. */

/* --- Статьи, воронка, карусель --- */
body[data-theme="dark"] .funnel-article-card {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
  box-shadow: var(--ui-shadow-md);
}

body[data-theme="dark"] .funnel-article-card:hover {
  border-color: var(--ui-accent-ring);
  box-shadow: var(--ui-shadow-lg);
}

body[data-theme="dark"] .funnel-article-title {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .funnel-article-card.special-minimal:hover {
  background: var(--ui-surface-2);
  color: var(--ui-text-1);
}

body[data-theme="dark"] #articles-container .article-card,
body[data-theme="dark"] .article-card,
body[data-theme="dark"] .carousel-article-card {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
  box-shadow: var(--ui-shadow-md);
}

body[data-theme="dark"] .article-preview,
body[data-theme="dark"] .carousel-preview {
  color: var(--ui-text-2);
}

body[data-theme="dark"] .article-tag {
  background: var(--ui-accent-soft);
  color: var(--ui-text-1);
  border-color: var(--ui-border-strong);
}

body[data-theme="dark"] .article-tag.text-secondary {
  color: var(--ui-text-2);
  background: var(--ui-surface-3);
}

body[data-theme="dark"] .articles-hero {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  box-shadow: var(--ui-shadow-lg);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .articles-hero .lead,
body[data-theme="dark"] .articles-hero .display-4 {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .hero-bg-gradient {
  background: radial-gradient(circle at 20% 20%, var(--ui-accent-ring), transparent 60%),
              radial-gradient(circle at 80% 10%, var(--ui-accent-soft), transparent 55%);
  opacity: 0.9;
}

body[data-theme="dark"] .fade-ellipsis:after {
  display: none;
}

body[data-theme="dark"] .card-text.fade-ellipsis {
  text-align: justify;
}

/* --- Настройки шрифта в статье --- */
body[data-theme="dark"] #article-font-controls {
  background: var(--ui-surface-2);
  border-color: var(--ui-border);
}

body[data-theme="dark"] #article-font-controls label {
  color: var(--ui-text-2);
}

body[data-theme="dark"] #article-font-controls select.form-select,
body[data-theme="dark"] #fontSelect,
body[data-theme="dark"] #fontSizeSelect {
  background: var(--ui-surface-inset);
  border-color: var(--ui-border-strong);
  color: var(--ui-text-1);
}

body[data-theme="dark"] #article-font-controls select.form-select:focus {
  background: var(--ui-surface-1);
  border-color: var(--ui-accent);
  box-shadow: 0 0 0 3px var(--ui-accent-ring);
}

body[data-theme="dark"] .article-content blockquote,
body[data-theme="dark"] .markdown-content blockquote {
  background: var(--ui-surface-2);
  border-left-color: var(--ui-accent);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .article-content li,
body[data-theme="dark"] .markdown-content li {
  color: var(--ui-text-1);
}

/* --- Задания и навигация назад --- */
body[data-theme="dark"] .task-card {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  box-shadow: var(--ui-shadow-md);
}

body[data-theme="dark"] .task-title {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .back-btn {
  background: var(--ui-surface-2);
  border-color: var(--ui-border-strong);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .back-btn:hover {
  background: var(--ui-surface-3);
  color: var(--ui-text-1);
}

/* --- Генератор своего курса --- */
body[data-theme="dark"] .custom-course-page .course-card {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  box-shadow: var(--ui-shadow-md);
}

body[data-theme="dark"] .custom-course-page .btn.btn-outline-dark,
body[data-theme="dark"] .custom-course-page .btn.btn-outline-dark.btn-sm {
  color: var(--ui-text-1);
  border-color: var(--ui-border-strong);
}

body[data-theme="dark"] .custom-course-page .btn.btn-outline-dark:hover {
  background: var(--ui-accent-soft);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .wizard-step {
  background: var(--ui-surface-3);
  color: var(--ui-text-1);
  border-color: var(--ui-border-strong);
}

body[data-theme="dark"] .wizard-step.active {
  background: var(--ui-accent);
  color: var(--ui-text-on-accent);
}

/* --- Подтверждение, тарифы, генерация --- */
body[data-theme="dark"] .pricing-modal-content,
body[data-theme="dark"] .generation-panel {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
  box-shadow: var(--ui-shadow-md);
}

/* Карточка подтверждения лежит внутри другой карточки — на ступень светлее */
body[data-theme="dark"] .confirm-card {
  background: var(--ui-surface-2);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .generation-panel .progress {
  background: var(--ui-surface-3);
}

/* Только информационные алерты: успех должен оставаться зелёным, ошибка — красной */
body[data-theme="dark"] .generation-panel .alert-info {
  background: var(--ui-accent-soft);
  border-color: var(--ui-accent-ring);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .confirm-box {
  background: var(--ui-surface-2);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .confirm-box .text-muted {
  color: var(--ui-text-2) !important;
}

body[data-theme="dark"] .pricing-card {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
  box-shadow: var(--ui-shadow-lg);
}

body[data-theme="dark"] .pricing-card .pricing-description,
body[data-theme="dark"] .pricing-card .pricing-features {
  color: var(--ui-text-2);
}

body[data-theme="dark"] .pricing-card .pricing-features li {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .pricing-card.popular {
  border-color: var(--ui-accent);
  box-shadow: var(--ui-shadow-accent);
}

body[data-theme="dark"] .pricing-card .popular-badge {
  background: var(--ui-accent-soft);
  color: var(--ui-accent);
}

/* --- Документация и чат --- */
body[data-theme="dark"] .docs-nav {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .docs-nav a {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .docs-nav a:hover {
  color: var(--ui-accent);
}

body[data-theme="dark"] .docs-code {
  background: var(--ui-surface-inset);
  border-color: var(--ui-border);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .chat-messages {
  border: 1px solid var(--ui-border);
  color: var(--ui-text-1);
}

/* --- Описание курса --- */
body[data-theme="dark"] .course-description {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .course-description-fade {
  background: linear-gradient(to bottom, transparent, var(--ui-surface-1));
}

body[data-theme="dark"] .course-description-expand {
  background: linear-gradient(to bottom, transparent, var(--ui-surface-1));
  color: var(--ui-accent);
}

/* --- FAQ --- */
/* Страница FAQ переведена на токены — тёмные патчи для .faq-* больше не нужны. */

/* Иконку-стрелку аккордеона Bootstrap нельзя выразить токеном - только инверсией. */
body[data-theme="dark"] .accordion-button::after {
  filter: invert(1);
}

body[data-theme="dark"] .btn-close {
  filter: invert(1) grayscale(1) brightness(1.8);
}

/* --- Форум --- */
/* Поверхности, заголовки и текст форума полностью описаны токенами в forum.css,
   поэтому тёмных патчей здесь больше нет: они перебивали hover-состояния. */

body[data-theme="dark"] .breadcrumb,
body[data-theme="dark"] .breadcrumb a {
  color: var(--ui-text-2);
}

body[data-theme="dark"] .post-attachments .card {
  background: var(--ui-surface-1);
  border-color: var(--ui-border);
}

body[data-theme="dark"] .forum-wip-bg {
  background: var(--ui-surface-1);
  border: 1px solid var(--ui-border);
  box-shadow: var(--ui-shadow-lg);
}

body[data-theme="dark"] .forum-wip-title {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .forum-wip-subtitle {
  color: var(--ui-text-2);
}

body[data-theme="dark"] .forum-dot {
  background: var(--ui-text-3);
}

body[data-theme="dark"] .forum-dot:nth-child(2) {
  background: var(--ui-text-2);
}

body[data-theme="dark"] .forum-dot:nth-child(3) {
  background: var(--ui-text-1);
}

body[data-theme="dark"] .forum-wip-btn {
  background: var(--ui-surface-2);
  color: var(--ui-text-1);
  border: 1px solid var(--ui-border);
}

body[data-theme="dark"] .forum-wip-btn:hover,
body[data-theme="dark"] .forum-wip-btn:focus {
  background: var(--ui-accent-soft);
  color: var(--ui-accent);
}

/* --- Достижения --- */
/* Страница достижений переведена на токены; патч .achievement-card перебивал
   состояния .received/.locked, поэтому блок удалён. */

/* --- Редактор Toast UI --- */
body[data-theme="dark"] .toastui-editor-defaultUI {
  background: var(--ui-surface-1);
  border-color: var(--ui-border);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-toolbar {
  background: var(--ui-surface-2);
  border-bottom: 1px solid var(--ui-border);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-toolbar button {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-toolbar button:hover,
body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-toolbar button:focus {
  background: var(--ui-accent-soft);
}

body[data-theme="dark"] .toastui-editor-contents {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .toastui-editor-contents code {
  background: var(--ui-surface-3);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .toastui-editor-contents hr {
  border-top-color: var(--ui-border);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-md-preview {
  background: var(--ui-surface-inset);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-md-textarea,
body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-ww-container,
body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-contents p,
body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-contents li {
  color: var(--ui-text-1);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-md-textarea {
  background: var(--ui-surface-inset);
}

body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-ww-container,
body[data-theme="dark"] .toastui-editor-defaultUI .toastui-editor-ww-container .toastui-editor-contents {
  background: var(--ui-surface-inset);
}

/* --- Комментарии --- */
body[data-theme="dark"] #comments-container .admin-reply,
body[data-theme="dark"] #comments-container .mentor-comment,
body[data-theme="dark"] #comments-container .admin-comment {
  background-color: var(--ui-surface-2) !important;
  border-color: var(--ui-accent-ring) !important;
  color: var(--ui-text-1);
}

body[data-theme="dark"] #comment-form textarea,
body[data-theme="dark"] .comment-form textarea,
body[data-theme="dark"] .comment-form input,
body[data-theme="dark"] .comment-form .form-control {
  background-color: var(--ui-surface-inset);
  border-color: var(--ui-border-strong);
  color: var(--ui-text-1);
}

body[data-theme="dark"] #comment-form textarea::placeholder,
body[data-theme="dark"] .comment-form textarea::placeholder {
  color: var(--ui-text-3);
}

/* --- Прочее --- */
body[data-theme="dark"] .course-filter-select {
  background-color: var(--ui-surface-inset);
  border-color: var(--ui-border-strong);
  color: var(--ui-text-1);
}

body[data-theme="dark"] .card-img-top.img-hover-effect,
body[data-theme="dark"] .card-img-top .img-hover-effect {
  filter: invert(1);
}

body[data-theme="dark"] .preloader {
  background: var(--ui-bg-solid);
}

/* Сброс рамки у десктопной обёртки навбара */
body[data-theme="dark"] .navbar .d-none.d-lg-flex.w-100.justify-content-between.align-items-center {
  border: none !important;
  box-shadow: none !important;
}
