/* ==========================================================================
   Grozny Viewer Plugin Compatibility Layer
   Синхронизация компонентов плагина с темой Metodshkola
   ========================================================================== */

/* 1. Buttons Unification */
/* Применяем градиенты и цветовой контраст только к основным кнопкам, чтобы не ломать кнопки 'danger', 'ghost' и 'secondary' */
.gea-btn-primary, .gea-cod-btn-primary, .gea-ref-btn-primary {
    background: var(--ms-primary-gradient) !important;
    border: none !important;
    color: var(--ms-btn-text) !important;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
}

.gea-btn-primary:hover, .gea-cod-btn-primary:hover, .gea-ref-btn-primary:hover:not(:disabled) {
    transform: translateY(-2px) !important;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25) !important;
}

/* Общие формы и скругления для всех кнопок плагина */
.gea-btn, .gea-cod-btn, .gea-ref-btn {
    border-radius: 8px !important;
    font-family: inherit !important;
    font-weight: 600 !important;
    transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* 2. Cards & Widgets (Glassmorphism) */
.gea-table-widget, .gea-form-card, .gea-import-card, .gea-cod-crud-wrap, .gea-cod-stat-card, .gea-ref-content {
    background: rgba(255, 255, 255, 0.7) !important;
    backdrop-filter: blur(12px) !important;
    border: 1px solid rgba(255, 255, 255, 0.4) !important;
    border-radius: 16px !important;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.03) !important;
}

/* 3. Inputs & Forms */
.gea-search-input, .gea-form-group input, .gea-form-group select, .gea-cod-search-wrap input, .gea-ref-field input, .gea-ref-field select {
    border-radius: 10px !important;
    border: 1px solid #e2e8f0 !important;
    background: #fff !important;
    transition: 0.2s !important;
    padding: 10px 15px !important;
}

.gea-search-input:focus, .gea-form-group input:focus, .gea-ref-field input:focus, .gea-ref-field select:focus {
    border-color: var(--ms-primary) !important;
    box-shadow: 0 0 0 4px rgba(16, 185, 129, 0.1) !important;
}

/* 4. Layout Sync (Grozny-specific overrides) */
.gea-frontend-toolbar, .gea-cod-toolbar, .gea-ref-toolbar {
    background: transparent !important;
    border-bottom: 2px solid rgba(0,0,0,0.03) !important;
    padding: 15px 20px !important;
}

.gea-cod-header, .gea-frontend-header, .gea-ref-header {
    background: var(--ms-header-bg) !important;
}

/* 5. Icons & Typography */
.gea-frontend, .gea-cod-wrap, .gea-ref-wrap {
    font-family: 'Inter', -apple-system, sans-serif !important;
}

/* ==========================================================================
   7. Задача 13 (grozny-viewer, wizard.css) — насыщенные плашки-бейджи
   с белым текстом (оценки 5/4/3/2, проценты, явка) нуждаются в стабильно
   тёмном/насыщенном фоне в обеих схемах. Токены --ms-success/--ms-danger/
   --ms-warning/--ms-info в тёмной схеме высветлены (расчёт на текст/иконку
   НА тёмном фоне), а не на подложку с белым текстом — поэтому для таких
   плашек заведена отдельная палитра, сохраняющая прежние цвета wizard.css.
   Трек прогресс-бара (--gea-track) — тоже пара light/dark, которая раньше
   жила как захардкоженный fallback внутри самого плагина.
   ========================================================================== */
:root {
    --gea-badge-green: #16a34a;
    --gea-badge-blue:  #2563eb;
    --gea-badge-amber: #f59e0b;
    --gea-badge-red:   #dc2626;
    --gea-track: #f1f5f9;
}
body.ms-dark-mode {
    --gea-badge-green: #15803d;
    --gea-badge-blue:  #1d4ed8;
    --gea-badge-amber: #b45309;
    --gea-badge-red:   #b91c1c;
    --gea-track: #334155;
}

/* Dark Mode Support for Plugin */
body.ms-dark-mode .gea-table-widget,
body.ms-dark-mode .gea-form-card,
body.ms-dark-mode .gea-ref-content {
    background: rgba(30, 41, 59, 0.8) !important;
    color: #f1f5f9 !important;
    border-color: rgba(255,255,255,0.05) !important;
}

/* Тёмный список селекторов обязан ПОВТОРЯТЬ светлый из § 3 «Inputs & Forms».
   Пока он был у́же, поля, попавшие в светлое правило и не попавшие сюда
   (`.gea-form-group select`, `.gea-cod-search-wrap input`), оставались белыми
   с белой подписью: `background: #fff !important` темы перебивало любое
   правило плагина без `!important`. Плагин чинил это точечно у себя
   (V1.123.3), но первопричина здесь — расхождение двух списков. */
body.ms-dark-mode .gea-search-input,
body.ms-dark-mode .gea-form-group input,
body.ms-dark-mode .gea-form-group select,
body.ms-dark-mode .gea-cod-search-wrap input,
body.ms-dark-mode .gea-ref-field input,
body.ms-dark-mode .gea-ref-field select {
    background: #0f172a !important;
    color: #fff !important;
    border-color: #334155 !important;
}

/* Список опций у нативного `select` рисует ОС, а не страница: без явного фона
   на самих `option` в Windows выпадающий список остаётся светлым, и выбранная
   строка теряется на нём белым по белому. */
body.ms-dark-mode .gea-form-group select option,
body.ms-dark-mode .gea-ref-field select option {
    background: #0f172a;
    color: #fff;
}

/* ==========================================================================
   6. SweetAlert2 — модалки в токенах «Аэро» (тема 2.0.4)
   swal2 рендерится в конце <body>, поэтому body.ms-dark-mode применяется и
   значения токенов автоматически становятся тёмными.
   ========================================================================== */
.swal2-popup {
    border-radius: var(--ms-radius-card, 14px) !important;
    background: var(--ms-surface, #fff) !important;
    color: var(--ms-text-main, #17241e) !important;
    font-family: 'Inter', -apple-system, sans-serif !important;
    box-shadow: var(--ms-shadow-md, 0 10px 30px rgba(15, 23, 42, 0.12)) !important;
}
.swal2-title { color: var(--ms-text-main, #17241e) !important; font-weight: 700 !important; }
.swal2-html-container, .swal2-content { color: var(--ms-text-muted, #5f6f68) !important; }
.swal2-actions { gap: 8px !important; }

/* Кнопки — !important подавляет инлайновый confirmButtonColor из вызовов Swal.fire */
.swal2-styled.swal2-confirm {
    background: var(--ms-primary-gradient, #10b981) !important;
    color: var(--ms-btn-text, #fff) !important;
    border-radius: var(--ms-radius-ctl, 10px) !important;
    box-shadow: none !important;
}
.swal2-styled.swal2-cancel {
    background: var(--ms-surface-2, #f8faf9) !important;
    color: var(--ms-text-main, #17241e) !important;
    border: 1px solid var(--ms-border, #e6ebe8) !important;
    border-radius: var(--ms-radius-ctl, 10px) !important;
}
.swal2-styled.swal2-deny {
    background: var(--ms-danger, #ef4444) !important;
    color: #fff !important;
    border-radius: var(--ms-radius-ctl, 10px) !important;
}
.swal2-styled:focus { box-shadow: 0 0 0 3px var(--ms-primary-soft, rgba(16, 185, 129, 0.16)) !important; }

/* Поля ввода в модалках */
.swal2-input, .swal2-select, .swal2-textarea, .swal2-file {
    border-radius: var(--ms-radius-ctl-sm, 9px) !important;
    border: 1px solid var(--ms-border, #e6ebe8) !important;
    background: var(--ms-surface, #fff) !important;
    color: var(--ms-text-main, #17241e) !important;
    box-shadow: none !important;
}
.swal2-input:focus, .swal2-select:focus, .swal2-textarea:focus {
    border-color: var(--ms-primary, #10b981) !important;
    box-shadow: 0 0 0 3px var(--ms-primary-soft, rgba(16, 185, 129, 0.16)) !important;
}

/* ================================================================
   [gea_data_requests] — модуль сбора информации (плагин V1.64.0)
   Тёмный режим модуля живёт здесь по регламенту: плагин отвечает за
   структуру, тема — за покраску.
   ================================================================ */

body.ms-dark-mode {
    --gdr-border:      #334155;
    --gdr-text:        #e2e8f0;
    --gdr-text-muted:  #94a3b8;
    --gdr-bg-card:     #1e293b;
    --gdr-bg-subtle:   #0f172a;
    --gdr-bg-hover:    #263449;

    --gdr-ok-bg:   rgba(16, 185, 129, .16);  --gdr-ok-fg:   #6ee7b7;
    --gdr-warn-bg: rgba(245, 158, 11, .16);  --gdr-warn-fg: #fcd34d;
    --gdr-bad-bg:  rgba(239, 68, 68, .16);   --gdr-bad-fg:  #fca5a5;
    --gdr-info-bg: rgba(59, 130, 246, .16);  --gdr-info-fg: #93c5fd;
    --gdr-gray-bg: rgba(148, 163, 184, .16); --gdr-gray-fg: #cbd5e1;
}

body.ms-dark-mode .gea-dr__search,
body.ms-dark-mode .gea-dr__picker select,
body.ms-dark-mode .gea-dr-field input,
body.ms-dark-mode .gea-dr-field select,
body.ms-dark-mode .gea-dr-field textarea {
    background: #0f172a !important;
    color: #e2e8f0 !important;
    border-color: #334155 !important;
}

body.ms-dark-mode .gea-dr-drawer__backdrop { background: rgba(2, 6, 23, .7); }
body.ms-dark-mode .gea-dr-table tr.is-overdue td { background: rgba(239, 68, 68, .12); }
body.ms-dark-mode .gea-dr-row--invalid { background: rgba(239, 68, 68, .12); }

/* ==========================================================================
   8. Иконки действий в таблицах (тема 2.2.0)

   Плагин раскрашивает кнопки строки в пять независимых цветов, причём
   хардкодом (registry.css: #0ea5e9, #14b8a6, #f59e0b, #ef4444) — вопреки
   собственному правилу «жёсткие HEX запрещены». В таблице на 60 тысяч строк
   это пять конкурирующих сигналов, где красный не значит «опасно».

   Приводим к одной шкале: спокойный нейтральный по умолчанию, акцент только
   под курсором, красный — исключительно у необратимого действия.
   ========================================================================== */
.gea-reg-act,
.gea-reg-act-edit,
.gea-reg-act-transfer,
.gea-reg-act-status,
.gea-reg-act-promote {
    color: var(--ms-text-muted) !important;
    border-radius: var(--ms-radius-ctl-sm, 9px) !important;
}

/* Кнопки действий подписаны цветными эмодзи (👤 ✏️ 🔄 ❌ 🗑), а не иконочным
   шрифтом, поэтому свойство color на них не действует — приглушаем фильтром.
   Под курсором эмодзи возвращает свой цвет: строка, с которой сейчас работают,
   должна читаться. Настоящее решение — заменить эмодзи на иконки Phosphor
   в самом плагине; до тех пор это лучшее, что может сделать покрасочный слой. */
.gea-reg-act {
    filter: grayscale(0.9) opacity(0.75);
    transition: filter 0.2s, background 0.2s !important;
}

.gea-reg-act:hover,
.gea-reg-act:focus-visible {
    filter: none;
}

.gea-reg-act-edit:hover,
.gea-reg-act-transfer:hover,
.gea-reg-act-status:hover,
.gea-reg-act-promote:hover {
    background: var(--ms-primary-soft) !important;
    color: var(--ms-primary) !important;
}

/* Удаление — единственное необратимое действие, только оно красное */
.gea-reg-act-danger {
    color: var(--ms-text-muted) !important;
}

.gea-reg-act-danger:hover {
    background: rgba(239, 68, 68, .12) !important;
    color: var(--ms-danger) !important;
}

/* ==========================================================================
   9. Компактная плотность для компонентов плагина (тема 2.2.0)
   Токены --ms-kpi-h / --ms-spark-h уже переопределены в style.css и доходят
   сюда через CSS-мост; здесь — отступы, которые токенами не выражены.
   ========================================================================== */
body.ms-density-compact .gea-table-widget,
body.ms-density-compact .gea-form-card,
body.ms-density-compact .gea-import-card,
body.ms-density-compact .gea-ref-content {
    padding: 14px !important;
}

body.ms-density-compact .gea-toolbar {
    padding-top: 8px;
    padding-bottom: 8px;
    gap: 8px;
}

body.ms-density-compact .gea-btn,
body.ms-density-compact .gea-cod-btn,
body.ms-density-compact .gea-ref-btn {
    padding: 6px 12px !important;
}

/* KPI-плитки в компактном режиме.
   Мост --gea-kpi-h сюда не доходит: exam-results.css задаёт свои 148px уже
   после него. Переопределяем переменную на контейнере сетки — правило плагина
   остаётся прежним, меняется только значение, которое оно читает. */
body.ms-density-compact .gea-exam-kpi-grid,
body.ms-density-compact [class*="kpi-grid"] {
    --gea-kpi-h: 118px;
    gap: 10px !important;
}

body.ms-density-compact .gea-kpi {
    padding: 10px 12px 8px !important;
}
