/* ============================================
  Coffee Evaluation Calculator - Dark Theme
  Все стили через CSS-переменные — минимализм
  ============================================ */

body.dark-theme {
    /* === Базовые цвета === */
    --bg-primary: #121212;
    --bg-secondary: #1E1E1E;
    --bg-card: #252525;
    --bg-input: #2C2C2C;
    --text-primary: #E0E0E0;
    --text-secondary: #B0B0B0;
    --text-light: #808080;
    --border-color: #333333;
    --shadow: rgba(0, 0, 0, 0.5);
    --shadow-hover: rgba(0, 0, 0, 0.7);

    /* === Кофейная палитра (инвертирована) === */
    --cream-dark: #2C2C2C;
    --cream-light: #1E1E1E;
    --cream-medium: #121212;
    --cream-white: #1A1A1A;
    --coffee-darkest: #8D6E63;
    --coffee-dark: #A1887F;
    --coffee-medium: #BCAAA4;
    --coffee-light: #D7CCC8;
    --coffee-lighter: #EFEBE9;
    --coffee-lightest: #FFFFFF;
    --accent: #D4A574;
    --accent-hover: #E6C29C;

    /* === Дополнительные переменные для dark-темы === */
    --header-bg: rgba(18, 18, 18, 0.5);
    --header-border: #333333;
    --pilot-bg: rgba(255, 255, 255, 0.06);
    --pilot-border: rgba(255, 255, 255, 0.1);
    --pilot-btn-color: rgba(224, 224, 224, 0.9);
    --pilot-btn-hover: rgba(255, 255, 255, 0.1);
    --pilot-small-border: rgba(255, 255, 255, 0.2);
    --pilot-small-hover: rgba(255, 255, 255, 0.4);
    --btn-theme-border: rgba(255, 255, 255, 0.2);
    --btn-theme-hover: rgba(255, 255, 255, 0.1);

    /* === Тёмные фоны UI === */
    --dark-bg: #3e2723;
    --dark-bg-hover: #4e342e;
    --dark-border: #5d4037;
    --dark-text: #E0E0E0;

    /* === Слайдеры === */
    --slider-bg: rgba(255, 255, 255, 0.03);
    --slider-track: #1E1E1E;
    --slider-fill: var(--coffee-dark);
    --slider-thumb: var(--coffee-medium);
    --slider-thumb-border: var(--coffee-dark);

    /* === Критические цвета === */
    --critical-red: #FF5252;
    --critical-red-dark: #D32F2F;
    --critical-red-darker: #B71C1C;
    --critical-red-light: #EF5350;
    --warning-orange: #FF9800;
    --warning-orange-light: #FFB74D;
    --warning-dark: #E65100;
    --warning-bg: #FFE0B2;
    --off-flavor-yellow: #ffd54f;

    /* === Цвета кружков (score) === */
    --score-red: #EF9A9A;
    --score-orange: #FFCC80;
    --score-green: #A5D6A7;

    /* === Ката === */
    --cata-label-bg: rgba(255, 255, 255, 0.08);
    --cata-label-hover: rgba(255, 255, 255, 0.15);
    --cata-border: #444;

    /* === Прочее === */
    --badge-shadow: rgba(0, 0, 0, 0.4);
    --selected-desc-bg: #1E1E1E;
    --toast-bg: #252525;
    --toast-shadow: rgba(0, 0, 0, 0.5);
    --btn-shadow: rgba(212, 165, 116, 0.2);
    --btn-shadow-hover: rgba(212, 165, 116, 0.4);
    --score-shadow: rgba(0, 0, 0, 0.3);
    --score-selected-shadow: rgba(161, 136, 127, 0.4);
    --score-selected-inset: rgba(255, 255, 255, 0.1);
    --modal-bg: #1E1E1E;
    --modal-border: #333;
    --score-selected-text: #1A1A1A;
    --tab-bg: #1A1A1A;
}

/* === Хедер === */
body.dark-theme .header {
    background: var(--header-bg);
    border-bottom: 1px solid var(--header-border);
}

body.dark-theme .pilot-panel {
    background: var(--pilot-bg);
    border-color: var(--pilot-border);
}

body.dark-theme .pilot-divider {
    background: var(--pilot-border);
}

body.dark-theme .pilot-btn {
    color: var(--pilot-btn-color);
}

body.dark-theme .pilot-btn:hover {
    background: var(--pilot-btn-hover);
}

body.dark-theme .pilot-btn-small {
    border-color: var(--pilot-small-border);
}

body.dark-theme .pilot-btn-small:hover {
    border-color: var(--pilot-small-hover);
}

body.dark-theme .timer-display {
    color: var(--text-primary);
}

/* === Карточки и формы === */
body.dark-theme .card {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
}

body.dark-theme input,
body.dark-theme select,
body.dark-theme textarea {
    background: var(--bg-input);
    color: var(--text-primary);
    border-color: var(--border-color);
}

body.dark-theme input::placeholder,
body.dark-theme textarea::placeholder {
    color: var(--text-light);
}

/* === Кнопки === */
body.dark-theme .btn-primary {
    background: var(--coffee-dark);
}

body.dark-theme .btn-primary:hover {
    background: var(--coffee-medium);
}

body.dark-theme .btn-secondary {
    background: var(--dark-bg);
    color: var(--dark-text);
    border: 1px solid var(--dark-border);
}

body.dark-theme .btn-secondary:hover {
    background: var(--accent);
    color: var(--dark-bg);
    border-color: var(--accent);
}

body.dark-theme .btn-history {
    background: var(--dark-bg);
    color: var(--accent);
    border: 1px solid var(--accent);
    box-shadow: 0 2px 6px var(--btn-shadow);
}

body.dark-theme .btn-history:hover {
    background: var(--accent);
    color: var(--dark-bg);
    box-shadow: 0 4px 10px var(--btn-shadow-hover);
}

body.dark-theme .btn-theme {
    border-color: var(--btn-theme-border);
}

body.dark-theme .btn-theme:hover {
    background: var(--btn-theme-hover);
}

/* === Кружки оценки === */
body.dark-theme .score-circle {
    border-color: #968981;
    background: var(--bg-input);
    color: var(--coffee-lighter);
    box-shadow: 0 1px 3px var(--score-shadow);
}

body.dark-theme .score-circle:hover {
    border-color: var(--coffee-light);
}

body.dark-theme .score-circle.selected {
    background: linear-gradient(135deg, #A1887F 0%, #BCAAA4 100%);
    border-color: #D7CCC8;
    color: var(--score-selected-text);
    box-shadow: 0 3px 12px var(--score-selected-shadow), inset 0 1px 2px var(--score-selected-inset);
}

body.dark-theme .score-circle.selected:hover {
    background: linear-gradient(135deg, #BCAAA4 0%, #D7CCC8 100%);
}

body.dark-theme .score-circle[data-score="1"],
body.dark-theme .score-circle[data-score="2"] {
    border-color: var(--score-red);
    color: var(--score-red);
}

body.dark-theme .score-circle[data-score="3"],
body.dark-theme .score-circle[data-score="4"] {
    border-color: var(--score-orange);
    color: var(--score-orange);
}

body.dark-theme .score-circle[data-score="7"],
body.dark-theme .score-circle[data-score="8"],
body.dark-theme .score-circle[data-score="9"] {
    border-color: var(--score-green);
    color: var(--score-green);
}

body.dark-theme .score-circle.selected {
    color: var(--score-selected-text) !important;
}

/* === Слайдеры === */
body.dark-theme .descriptive-parameter .desc-value-badge {
    box-shadow: 0 2px 8px var(--badge-shadow);
}

body.dark-theme .smooth-slider-container {
    background: var(--slider-bg);
}

body.dark-theme .smooth-slider-track {
    background: var(--slider-track);
}

body.dark-theme .smooth-slider-fill {
    background: var(--slider-fill);
}

body.dark-theme .smooth-slider-thumb {
    background: var(--slider-thumb);
    border-color: var(--slider-thumb-border);
}

/* === CATA === */
body.dark-theme .cata-stage-tab {
    border-color: var(--dark-border);
    background: var(--dark-bg);
    color: var(--text-primary);
}

body.dark-theme .cata-stage-tab:hover {
    border-color: var(--coffee-darkest);
    background: var(--dark-bg-hover);
}

body.dark-theme .cata-stage-tab.active {
    border-color: var(--accent);
    background: var(--accent);
    color: var(--dark-bg);
}

body.dark-theme .cata-label {
    background: var(--cata-label-bg);
    color: var(--dark-text);
    border-color: var(--cata-border);
}

body.dark-theme .cata-label:hover {
    background: var(--cata-label-hover);
}

body.dark-theme .cata-item input:checked + .cata-label {
    background: var(--coffee-dark);
    color: #FFF;
    border-color: var(--coffee-dark);
}

body.dark-theme .cata-subcategory {
    background: var(--selected-desc-bg);
    border-left-color: var(--coffee-dark);
}

body.dark-theme .cata-subcategory-title {
    color: var(--dark-text);
    border-bottom-color: var(--border-color);
}

body.dark-theme .cata-subcategory:first-child {
    border-left-color: var(--critical-red-dark);
}

body.dark-theme .cata-subcategory:first-child .cata-subcategory-title {
    color: var(--critical-red-light);
}

body.dark-theme .cata-item input[data-critical="true"]:checked + .cata-label {
    background: var(--critical-red-dark);
    border-color: var(--critical-red-darker);
    color: white;
}

body.dark-theme .cata-item.critical-defect {
    color: var(--critical-red);
}

body.dark-theme .cata-item.off-flavor {
    color: var(--off-flavor-yellow);
}

/* Sub-descriptors panel — dark theme */
body.dark-theme .sub-descriptors-panel {
    background: var(--dark-surface);
    border-color: var(--dark-border);
}

body.dark-theme .sub-desc-row {
    border-bottom-color: var(--dark-border);
}

body.dark-theme .sub-desc-row-label {
    color: var(--neutral-muted);
}

body.dark-theme .cata-sub-btn {
    background: var(--dark-surface);
    border-color: var(--dark-border);
}

body.dark-theme .cata-sub-btn:hover {
    border-color: var(--accent);
    background: var(--dark-bg);
}

body.dark-theme .cata-sub-icon {
    color: var(--dark-border);
}

body.dark-theme .cata-sub-text {
    color: var(--dark-text);
}

body.dark-theme .cata-sub-btn:has(input:checked) {
    background: var(--accent);
    border-color: var(--coffee-dark);
}

body.dark-theme .cata-sub-btn:has(input:checked) .cata-sub-icon {
    color: var(--coffee-darkest);
}

body.dark-theme .cata-sub-btn:has(input:checked) .cata-sub-text {
    color: var(--coffee-darkest);
}

/* Block comment textarea — dark theme */
body.dark-theme .desc-block-comment-input {
    background: var(--dark-surface);
    border-color: var(--dark-border);
    color: var(--dark-text);
}

body.dark-theme .desc-block-comment-input::placeholder {
    color: var(--dark-muted);
}

body.dark-theme .desc-block-comment-input:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px rgba(168, 130, 89, 0.2);
}

/* Q-Grade comment textarea — dark theme */
body.dark-theme .qgrade-comment-input {
    background: var(--dark-surface);
    border-color: var(--dark-border);
    color: var(--dark-text);
}

body.dark-theme .qgrade-comment-input::placeholder {
    color: var(--dark-muted);
}

body.dark-theme .qgrade-comment-input:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px rgba(168, 130, 89, 0.2);
}

/* === Дескрипторы === */
body.dark-theme .descriptor-tag {
    background: var(--dark-bg);
    color: var(--dark-text);
    border: 1px solid var(--dark-border);
}

body.dark-theme .descriptor-tag.critical-defect {
    background: var(--dark-bg);
    border-color: var(--critical-red-dark);
    color: var(--critical-red) !important;
}

body.dark-theme .descriptor-tag.off-flavor {
    background: var(--dark-bg);
    border-color: var(--warning-orange);
    color: var(--off-flavor-yellow) !important;
}

body.dark-theme .selected-descriptors-container {
    background: var(--selected-desc-bg);
}

body.dark-theme .selected-descriptors-title {
    color: var(--dark-text);
}

body.dark-theme .cata-stage-display-label {
    color: var(--coffee-medium);
}

/* === Предупреждения === */
body.dark-theme .critical-defect-warning {
    background: var(--critical-red-dark);
    border-color: var(--warning-orange);
    color: var(--score-orange);
}

body.dark-theme .critical-defect-modal-content {
    background: var(--modal-bg);
    border: 1px solid var(--modal-border);
}

body.dark-theme .critical-defect-modal-header {
    color: var(--critical-red);
    border-bottom-color: var(--dark-border);
}

body.dark-theme .critical-defect-modal-body {
    color: var(--dark-text);
}

/* === История === */
body.dark-theme .history-compact-item {
    background: var(--bg-card);
    border-color: var(--border-color);
}

body.dark-theme .history-compact-row {
    background: var(--bg-card);
}

body.dark-theme .history-compact-row:hover {
    background: var(--bg-input);
}

body.dark-theme .history-details {
    background: var(--bg-secondary);
    border-top-color: var(--border-color);
}

body.dark-theme .detail-section h4 {
    color: var(--text-primary);
    border-bottom-color: var(--accent);
}

body.dark-theme .detail-label {
    color: var(--text-secondary);
}

body.dark-theme .detail-value {
    color: var(--text-primary);
}

body.dark-theme .detail-total {
    border-top-color: var(--border-color);
}

body.dark-theme .history-info-table td {
    border-bottom-color: var(--border-color);
}

body.dark-theme .history-info-table .info-label {
    color: var(--text-secondary);
}

body.dark-theme .history-info-table .info-value {
    color: var(--text-primary);
}

body.dark-theme .detail-actions {
    border-top-color: var(--border-color);
}

body.dark-theme .detail-pdf-btn {
    background: var(--dark-bg);
    color: var(--dark-text);
    border: 1px solid var(--dark-border);
}

body.dark-theme .detail-pdf-btn:hover {
    background: var(--accent);
    color: var(--dark-bg);
    border-color: var(--accent);
}

/* === Табы === */
body.dark-theme .assessment-tabs {
    background: var(--tab-bg);
}

body.dark-theme .assessment-tabs .tab-btn {
    color: var(--text-secondary);
}

body.dark-theme .assessment-tabs .tab-btn.active {
    background: var(--coffee-dark);
    color: #FFF;
}

/* === Тосты === */
body.dark-theme .toast {
    background: var(--toast-bg);
    color: var(--dark-text);
    box-shadow: 0 4px 12px var(--toast-shadow);
}

body.dark-theme .toast.warning {
    background: var(--warning-dark);
    color: var(--warning-bg);
}

/* === Обжарка === */
body.dark-theme .roast-label {
    color: var(--dark-text);
}

body.dark-theme .roast-label:hover {
    background: var(--roast-bg-hover) !important;
    border-color: var(--accent);
}

body.dark-theme .roast-option input:checked + .roast-label {
    background: var(--roast-active-bg-dark) !important;
    color: #FFF;
    border: 2.5px solid var(--roast-active-border);
    font-weight: 700;
    box-shadow: 0 2px 8px var(--badge-shadow);
    transform: scale(1.03);
}

/* === Карта чашек === */
body.dark-theme .cup-map-container {
    background: var(--bg-card);
    border-color: var(--border-color);
}

body.dark-theme .cup-circle.state-0 {
    border-color: var(--coffee-medium);
    background: var(--bg-input);
}

body.dark-theme .cup-circle.state-0 .cup-number {
    color: var(--coffee-lighter);
}

body.dark-theme .cup-circle[data-type="uneven"].state-1 {
    border-color: var(--warning-orange-light);
    background: var(--warning-orange);
}

body.dark-theme .cup-circle[data-type="uneven"].state-1 .cup-number {
    color: #FFFFFF;
}

body.dark-theme .cup-circle[data-type="defective"].state-1 {
    border-color: var(--critical-red);
    background: var(--critical-red-dark);
}

body.dark-theme .cup-circle[data-type="defective"].state-1 .cup-number {
    color: #FFFFFF;
}

/* === Quality Blocks — Dark Theme === */
body.dark-theme .quality-block {
    background: var(--dark-surface);
}

body.dark-theme .quality-block-title {
    color: var(--dark-text);
    border-bottom-color: var(--accent);
}

body.dark-theme .quality-row-label {
    color: var(--dark-text-muted);
}

body.dark-theme .quality-final-section {
    border-top-color: var(--dark-border);
    border-left-color: var(--dark-border);
}

body.dark-theme .quality-final-input {
    background: var(--dark-bg);
    border-color: var(--dark-border);
    color: #fff;
}

/* === Penalty Horizontal Row — Dark Theme === */
body.dark-theme .penalty-horizontal-row {
    background: var(--dark-surface);
}

body.dark-theme .penalty-group-label {
    color: var(--dark-text-muted);
}

body.dark-theme .penalty-btn {
    background: var(--dark-bg);
    border-color: var(--dark-border);
    color: var(--dark-text);
}

body.dark-theme .penalty-btn:hover {
    border-color: var(--accent);
}

body.dark-theme .penalty-btn.active {
    background: linear-gradient(135deg, var(--coffee-dark) 0%, var(--coffee-medium) 100%);
    color: #fff;
    border-color: var(--coffee-dark);
}

body.dark-theme .penalty-btn.disabled {
    opacity: 0.3;
    cursor: not-allowed;
    pointer-events: none;
}

body.dark-theme .penalty-defect-check {
    color: var(--dark-text);
}

body.dark-theme .penalty-defect-check:hover {
    background: var(--dark-bg);
}

/* ============================================
   Q-Grade — тёмная тема (дополнительно)
   ============================================ */

/* Блоки качества/интенсивности */
body.dark-theme .qgrade-sub-slider-block {
    background: #2a2520;
    border-color: #3d352c;
}

body.dark-theme .qgrade-sub-label {
    color: #a89888;
}

/* Track слайдеров Q-Grade (доп.) */
body.dark-theme .qgrade-sub-slider::-webkit-slider-runnable-track {
    background: linear-gradient(90deg, #3d352c 0%, #4d4035 100%);
}

body.dark-theme .qgrade-sub-slider::-moz-range-track {
    background: linear-gradient(90deg, #3d352c 0%, #4d4035 100%);
}

/* Thumb слайдеров Q-Grade — не белый */
body.dark-theme .qgrade-sub-slider::-webkit-slider-thumb {
    background: #D4A574;
    border-color: #E6C29C;
}

body.dark-theme .qgrade-sub-slider::-moz-range-thumb {
    background: #D4A574;
    border-color: #E6C29C;
}

/* Поля дефектов — не белые */
body.dark-theme .qgrade-defect-input {
    background: #2C2C2C;
    color: #E0E0E0;
    border-color: #3d352c;
}

body.dark-theme .qgrade-defect-input:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(212, 165, 116, 0.2);
}

/* Кнопки чашек */
body.dark-theme .qgrade-cup-btn {
    background: #2C2C2C;
    color: #B0B0B0;
    border-color: #3d352c;
}

body.dark-theme .qgrade-cup-btn:hover {
    background: #3d352c;
}

body.dark-theme .qgrade-cup-btn.active {
    background: var(--accent);
    color: #121212;
    border-color: var(--accent);
}

/* Заголовки чашек */
body.dark-theme .qgrade-cup-label {
    color: #E0E0E0;
}

body.dark-theme .qgrade-cup-score {
    background: var(--accent);
    color: #121212;
}

/* Value badge */
body.dark-theme .qgrade-value-badge {
    background: var(--accent);
    color: #121212;
}

/* Основные слайдеры Q-Grade (качество) */
body.dark-theme .qgrade-slider::-webkit-slider-thumb {
    background: #D4A574;
    border-color: #E6C29C;
}

body.dark-theme .qgrade-slider::-moz-range-thumb {
    background: #D4A574;
    border-color: #E6C29C;
}
