/* Тема «Классика»: палитра старого дизайна StudyRoom.
   Небесно-синий акцент, индиго как второй, глубокий синий фон #0f172a —
   как было до редизайна. Компоненты берут цвета из переменных. */
html[data-theme="classic"] {
    /* поверхности */
    --bg-base: #0f172a;
    --bg-subtle: #162034;
    --surface: #1e293b;
    --surface-solid: #1e293b;
    --surface-2: #263449;
    --surface-hover: #334155;
    --border: rgba(148, 163, 184, 0.14);
    --border-strong: rgba(148, 163, 184, 0.28);
    --border-hover: rgba(56, 189, 248, 0.45);

    /* текст */
    --text-main: #f1f5f9;
    --text-muted: #94a3b8;
    --text-dim: #93a0b5;

    /* акцент: старый небесный + индиго */
    --accent: #38bdf8;
    --accent-rgb: 56, 189, 248;
    --accent-hover: #22aee6;
    --accent-press: #1a9bcf;
    --accent-contrast: #08111f;
    --accent-soft: #7dd3fc;
    --accent-line: #38bdf8;
    --accent-text: #7dd3fc;
    --accent-2: #818cf8;
    --accent-2-rgb: 129, 140, 248;
    --accent-tint: rgba(56, 189, 248, 0.14);
    --accent-border: rgba(56, 189, 248, 0.35);
    --accent-soft-bg: rgba(56, 189, 248, 0.12);
    --accent-glow: rgba(56, 189, 248, 0.20);

    /* семантика */
    --ok: #34d399;
    --ok-bg: rgba(52, 211, 153, 0.10);
    --ok-bd: rgba(52, 211, 153, 0.28);
    --warn: #fbbf24;
    --warn-bg: rgba(251, 191, 36, 0.10);
    --warn-bd: rgba(251, 191, 36, 0.30);
    --danger: #fb7185;
    --danger-bg: rgba(251, 113, 133, 0.10);
    --danger-bd: rgba(251, 113, 133, 0.30);
    --info: #7dd3fc;
    --info-bg: rgba(125, 211, 252, 0.10);
    --info-bd: rgba(125, 211, 252, 0.28);

    /* предметы: точка и полоска, не заливка */
    --subj-math: #a78bfa;
    --subj-physics: #60a5fa;
    --subj-it: #2dd4bf;
    --subj-chem: #fb923c;
    --subj-eng: #facc15;
    --subj-other: #94a3b8;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    /* старые имена — алиасы */
    --success: #34d399;
    --warning: #fbbf24;
    --indigo: #818cf8;
    --purple: #c084fc;
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    color-scheme: dark;
}
/* Тема «Изумруд»: только палитра.
   Компоненты берут цвета из переменных (tokens.css + design-system.css),
   поэтому здесь нет правил для .lesson-card, .btn-glow и прочих: иначе
   новая тема ломается при каждом изменении компонента. */
html[data-theme="warm"] {
    /* поверхности */
    --bg-base: #0d1613;
    --bg-subtle: #121d19;
    --surface: #16241f;
    --surface-solid: #16241f;
    --surface-2: #1b2b24;
    --surface-hover: #1e312a;
    --border: rgba(148, 184, 168, 0.16);
    --border-strong: rgba(148, 184, 168, 0.28);
    --border-hover: rgba(52, 211, 153, 0.45);

    /* текст */
    --text-main: #ecfdf5;
    --text-muted: #a3bfb2;
    --text-dim: #7f9a8d;

    /* акцент */
    --accent: #34d399;
    --accent-rgb: 52, 211, 153;
    --accent-hover: #2ecf8e;
    --accent-press: #25b97d;
    --accent-contrast: #062018;
    --accent-soft: #6ee7b7;
    --accent-line: #34d399;
    --accent-text: #6ee7b7;
    --accent-tint: rgba(52, 211, 153, 0.14);
    --accent-border: rgba(52, 211, 153, 0.35);
    --accent-soft-bg: rgba(52, 211, 153, 0.12);

    /* семантика */
    --ok: #4ade80;
    --ok-bg: rgba(74, 222, 128, 0.10);
    --ok-bd: rgba(74, 222, 128, 0.28);
    --warn: #fbbf24;
    --warn-bg: rgba(251, 191, 36, 0.10);
    --warn-bd: rgba(251, 191, 36, 0.30);
    --danger: #fb7185;
    --danger-bg: rgba(251, 113, 133, 0.10);
    --danger-bd: rgba(251, 113, 133, 0.30);
    --info: #6ee7b7;
    --info-bg: rgba(110, 231, 183, 0.10);
    --info-bd: rgba(110, 231, 183, 0.28);

    /* предметы: точка и полоска, не заливка */
    --subj-math: #8b6cef;
    --subj-physics: #5b8def;
    --subj-it: #2fb6a8;
    --subj-chem: #d97757;
    --subj-eng: #c9a227;
    --subj-other: #7a8494;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.60);

    /* старые имена — алиасы, на них ещё завязаны шаблоны */
    --success: #34d399;
    --warning: #fbbf24;
    --indigo: #5eead4;
    --purple: #a7f3d0;
    --accent-2: #5eead4;
    --accent-2-rgb: 94, 234, 212;
    --accent-glow: rgba(52, 211, 153, 0.18);
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    color-scheme: dark;
}
/* Тема «Графит»: только палитра, без правок компонентов. */
html[data-theme="graphite"] {
    /* поверхности */
    --bg-base: #14161a;
    --bg-subtle: #171a1f;
    --surface: #1b1e24;
    --surface-solid: #1b1e24;
    --surface-2: #22262d;
    --surface-hover: #282d35;
    --border: rgba(226, 232, 240, 0.14);
    --border-strong: rgba(226, 232, 240, 0.26);
    --border-hover: rgba(226, 232, 240, 0.32);

    /* текст */
    --text-main: #f1f5f9;
    --text-muted: #9aa4b2;
    --text-dim: #8b95a3;

    /* акцент */
    --accent: #e2e8f0;
    --accent-rgb: 226, 232, 240;
    --accent-hover: #cbd5e1;
    --accent-press: #b6c2d1;
    --accent-contrast: #14161a;
    --accent-soft: #f1f5f9;
    --accent-line: #e2e8f0;
    --accent-text: #e2e8f0;
    --accent-tint: rgba(226, 232, 240, 0.12);
    --accent-border: rgba(226, 232, 240, 0.32);
    --accent-soft-bg: rgba(226, 232, 240, 0.10);

    /* семантика */
    --ok: #4ade80;
    --ok-bg: rgba(74, 222, 128, 0.10);
    --ok-bd: rgba(74, 222, 128, 0.28);
    --warn: #fbbf24;
    --warn-bg: rgba(251, 191, 36, 0.10);
    --warn-bd: rgba(251, 191, 36, 0.30);
    --danger: #f87171;
    --danger-bg: rgba(248, 113, 113, 0.10);
    --danger-bd: rgba(248, 113, 113, 0.30);
    --info: #cbd5e1;
    --info-bg: rgba(203, 213, 225, 0.10);
    --info-bd: rgba(203, 213, 225, 0.26);

    /* предметы */
    --subj-math: #8b6cef;
    --subj-physics: #5b8def;
    --subj-it: #2fb6a8;
    --subj-chem: #d97757;
    --subj-eng: #c9a227;
    --subj-other: #7a8494;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.62);

    /* старые имена */
    --success: #4ade80;
    --warning: #fbbf24;
    --indigo: #cbd5e1;
    --purple: #e2e8f0;
    --accent-2: #94a3b8;
    --accent-2-rgb: 148, 163, 184;
    --accent-glow: rgba(226, 232, 240, 0.16);
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.62);

    color-scheme: dark;
}
/* Тема «Океан»: только палитра, без правок компонентов. */
html[data-theme="ocean"] {
    /* поверхности */
    --bg-base: #0a1a24;
    --bg-subtle: #0c202b;
    --surface: #0f2530;
    --surface-solid: #0f2530;
    --surface-2: #14313e;
    --surface-hover: #17394a;
    --border: rgba(103, 232, 249, 0.16);
    --border-strong: rgba(103, 232, 249, 0.28);
    --border-hover: rgba(34, 211, 238, 0.45);

    /* текст */
    --text-main: #ecfeff;
    --text-muted: #8fb3c0;
    --text-dim: #7fa4b3;

    /* акцент */
    --accent: #22d3ee;
    --accent-rgb: 34, 211, 238;
    --accent-hover: #1fc3d8;
    --accent-press: #19adc0;
    --accent-contrast: #06222b;
    --accent-soft: #67e8f9;
    --accent-line: #22d3ee;
    --accent-text: #67e8f9;
    --accent-tint: rgba(34, 211, 238, 0.14);
    --accent-border: rgba(34, 211, 238, 0.38);
    --accent-soft-bg: rgba(34, 211, 238, 0.12);

    /* семантика */
    --ok: #34d399;
    --ok-bg: rgba(52, 211, 153, 0.10);
    --ok-bd: rgba(52, 211, 153, 0.28);
    --warn: #fbbf24;
    --warn-bg: rgba(251, 191, 36, 0.10);
    --warn-bd: rgba(251, 191, 36, 0.30);
    --danger: #fb7185;
    --danger-bg: rgba(251, 113, 133, 0.10);
    --danger-bd: rgba(251, 113, 133, 0.30);
    --info: #67e8f9;
    --info-bg: rgba(103, 232, 249, 0.10);
    --info-bd: rgba(103, 232, 249, 0.28);

    /* предметы */
    --subj-math: #8b6cef;
    --subj-physics: #5b8def;
    --subj-it: #2fb6a8;
    --subj-chem: #d97757;
    --subj-eng: #c9a227;
    --subj-other: #7a8494;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.60);

    /* старые имена */
    --success: #34d399;
    --warning: #fbbf24;
    --indigo: #0ea5e9;
    --purple: #38bdf8;
    --accent-2: #0ea5e9;
    --accent-2-rgb: 14, 165, 233;
    --accent-glow: rgba(34, 211, 238, 0.20);
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    color-scheme: dark;
}
/* Тема «Аметист»: только палитра, без правок компонентов. */
html[data-theme="amethyst"] {
    /* поверхности */
    --bg-base: #150f24;
    --bg-subtle: #1a1230;
    --surface: #1e1633;
    --surface-solid: #1e1633;
    --surface-2: #271c42;
    --surface-hover: #2d2149;
    --border: rgba(167, 139, 250, 0.18);
    --border-strong: rgba(167, 139, 250, 0.30);
    --border-hover: rgba(167, 139, 250, 0.45);

    /* текст */
    --text-main: #f5f3ff;
    --text-muted: #a89bc4;
    --text-dim: #9a8cb8;

    /* акцент */
    --accent: #a78bfa;
    --accent-rgb: 167, 139, 250;
    --accent-hover: #9a7bf0;
    --accent-press: #8a6ae0;
    --accent-contrast: #1a1030;
    --accent-soft: #c4b5fd;
    --accent-line: #a78bfa;
    --accent-text: #c4b5fd;
    --accent-tint: rgba(167, 139, 250, 0.14);
    --accent-border: rgba(167, 139, 250, 0.38);
    --accent-soft-bg: rgba(167, 139, 250, 0.12);

    /* семантика */
    --ok: #4ade80;
    --ok-bg: rgba(74, 222, 128, 0.10);
    --ok-bd: rgba(74, 222, 128, 0.28);
    --warn: #fbbf24;
    --warn-bg: rgba(251, 191, 36, 0.10);
    --warn-bd: rgba(251, 191, 36, 0.30);
    --danger: #fb7185;
    --danger-bg: rgba(251, 113, 133, 0.10);
    --danger-bd: rgba(251, 113, 133, 0.30);
    --info: #c4b5fd;
    --info-bg: rgba(196, 181, 253, 0.10);
    --info-bd: rgba(196, 181, 253, 0.28);

    /* предметы */
    --subj-math: #8b6cef;
    --subj-physics: #5b8def;
    --subj-it: #2fb6a8;
    --subj-chem: #d97757;
    --subj-eng: #c9a227;
    --subj-other: #7a8494;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.60);

    /* старые имена */
    --success: #4ade80;
    --warning: #fbbf24;
    --indigo: #818cf8;
    --purple: #f472b6;
    --accent-2: #f472b6;
    --accent-2-rgb: 244, 114, 182;
    --accent-glow: rgba(167, 139, 250, 0.20);
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    color-scheme: dark;
}
/* Тема «Бумага тёмная»: та же бумажная идея, но для тёмного режима.
   Тёплые чернильные поверхности, сливочный текст и чернильно-синий акцент
   из светлой «Бумаги». Компоненты берут цвета из переменных. */
html[data-theme="paper-dark"] {
    /* поверхности: тёплая тёмная бумага */
    --bg-base: #16120e;
    --bg-subtle: #1c1712;
    --surface: #221c16;
    --surface-solid: #221c16;
    --surface-2: #2a231b;
    --surface-hover: #332a20;
    --border: rgba(226, 214, 195, 0.12);
    --border-strong: rgba(226, 214, 195, 0.24);
    --border-hover: rgba(226, 214, 195, 0.34);

    /* текст */
    --text-main: #f2e9da;
    --text-muted: #b7a992;
    --text-dim: #a19582;

    /* акцент: чернильно-синий, осветлённый для тёмного фона */
    --accent: #6ea8d8;
    --accent-rgb: 110, 168, 216;
    --accent-hover: #86b9e3;
    --accent-press: #5a97c9;
    --accent-contrast: #0f1520;
    --accent-soft: #9cc6e8;
    --accent-line: #7fb4e0;
    --accent-text: #a8cdea;
    --accent-tint: rgba(110, 168, 216, 0.14);
    --accent-border: rgba(110, 168, 216, 0.35);
    --accent-soft-bg: rgba(110, 168, 216, 0.12);
    --accent-glow: rgba(110, 168, 216, 0.18);

    /* семантика */
    --ok: #4ade80;
    --ok-bg: rgba(74, 222, 128, 0.10);
    --ok-bd: rgba(74, 222, 128, 0.28);
    --warn: #e0a94a;
    --warn-bg: rgba(224, 169, 74, 0.10);
    --warn-bd: rgba(224, 169, 74, 0.30);
    --danger: #f07178;
    --danger-bg: rgba(240, 113, 120, 0.10);
    --danger-bd: rgba(240, 113, 120, 0.30);
    --info: #a8cdea;
    --info-bg: rgba(168, 205, 234, 0.10);
    --info-bd: rgba(168, 205, 234, 0.28);

    /* предметы: точка и полоска, не заливка */
    --subj-math: #b9a1f0;
    --subj-physics: #7ab0f5;
    --subj-it: #4fd6c4;
    --subj-chem: #f0a06b;
    --subj-eng: #e6c454;
    --subj-other: #a2978a;

    --shadow-pop: 0 12px 32px -12px rgba(0, 0, 0, 0.60);

    /* старые имена — алиасы */
    --success: #4ade80;
    --warning: #e0a94a;
    --indigo: #a8cdea;
    --purple: #c9b6f2;
    --accent-2: #c9a06a;
    --accent-2-rgb: 201, 160, 106;
    --shadow-glass: 0 12px 32px -12px rgba(0, 0, 0, 0.55);

    color-scheme: dark;
}
/* Светлая тема: палитра + тонкий слой совместимости.

   Всё, что можно выразить переменной, живёт в палитре. Компонентные правила
   ниже остались только для тех элементов, чьи базовые стили всё ещё заданы
   литералами в base.html (формы, модалки, дропдауны, переключатель недели):
   они написаны через токены, поэтому одинаково работают и для «Светлой», и
   для «Бумаги». Для календаря, таблиц, отчётов и кабинетов своих правил
   здесь больше нет — те компоненты уже собираются из токенов. */

html[data-bs-theme="light"] {
    /* поверхности */
    --bg-base: #f7f8fa;
    --bg-subtle: #ffffff;
    --surface: #ffffff;
    --surface-solid: #ffffff;
    --surface-2: #f1f3f6;
    --surface-hover: #e9edf2;
    --border: rgba(16, 24, 40, 0.10);
    --border-strong: rgba(16, 24, 40, 0.18);
    --border-hover: rgba(16, 24, 40, 0.28);

    /* текст */
    --text-main: #141922;
    --text-muted: #59616e;
    --text-dim: #646d7a;

    /* акцент */
    --accent: #1d4ed8;
    --accent-rgb: 29, 78, 216;
    --accent-hover: #1e40af;
    --accent-press: #1b3a9e;
    --accent-contrast: #ffffff;
    --accent-soft: #1d4ed8;
    --accent-line: #1d4ed8;
    --accent-text: #1f45c9;
    --accent-tint: rgba(29, 78, 216, 0.12);
    --accent-border: rgba(29, 78, 216, 0.35);
    --accent-soft-bg: rgba(29, 78, 216, 0.10);

    /* семантика: тёмные варианты, иначе на белом не читаются */
    --ok: #15803d;
    --ok-bg: rgba(21, 128, 61, 0.10);
    --ok-bd: rgba(21, 128, 61, 0.28);
    --warn: #a16207;
    --warn-bg: rgba(161, 98, 7, 0.10);
    --warn-bd: rgba(161, 98, 7, 0.30);
    --danger: #be123c;
    --danger-bg: rgba(190, 18, 60, 0.08);
    --danger-bd: rgba(190, 18, 60, 0.28);
    --info: #0e7490;
    --info-bg: rgba(14, 116, 144, 0.08);
    --info-bd: rgba(14, 116, 144, 0.26);

    /* предметы */
    --subj-math: #6d4bd8;
    --subj-physics: #2f6bd6;
    --subj-it: #0f8f83;
    --subj-chem: #b8542f;
    --subj-eng: #8a6d0a;
    --subj-other: #616b78;

    --shadow-pop: 0 12px 32px -12px rgba(16, 24, 40, 0.18);

    /* старые имена */
    --success: #166534;
    --warning: #92400e;
    --indigo: #4f46e5;
    --purple: #7e22ce;
    --accent-2: #4f46e5;
    --accent-2-rgb: 79, 70, 229;
    --accent-glow: rgba(29, 78, 216, 0.14);
    --shadow-glass: 0 12px 32px -12px rgba(16, 24, 40, 0.18);

    color-scheme: light;
}

/* Bootstrap-переменные: значения выводятся из палитры, поэтому «Бумага»
   автоматически получает свой тёплый фон вместо холодного белого. */
html[data-bs-theme="light"]:root {
    --bs-body-bg: var(--bg-base) !important;
    --bs-body-color: var(--text-main) !important;
    --bs-secondary-color: var(--text-muted) !important;
    --bs-tertiary-bg: var(--surface-2) !important;
    --bs-emphasis-color: var(--text-main) !important;
    --bs-heading-color: var(--text-main) !important;
    --bs-border-color: var(--border) !important;
    --bs-border-color-translucent: var(--border) !important;
    --bs-link-color: var(--accent-text) !important;
    --bs-link-color-rgb: var(--accent-rgb) !important;
    --bs-link-hover-color: var(--accent-hover) !important;
    --bs-primary: var(--accent) !important;
    --bs-primary-rgb: var(--accent-rgb) !important;
    --bs-secondary: var(--text-muted) !important;
    --bs-secondary-rgb: 89, 97, 110 !important;
    --bs-success: var(--success) !important;
    --bs-success-rgb: 22, 101, 52 !important;
    --bs-info: var(--info) !important;
    --bs-info-rgb: 14, 116, 144 !important;
    --bs-warning: var(--warning) !important;
    --bs-warning-rgb: 146, 64, 14 !important;
    --bs-danger: var(--danger) !important;
    --bs-danger-rgb: 190, 18, 60 !important;
    --bs-primary-bg-subtle: #eff6ff !important;
    --bs-primary-border-subtle: #bfdbfe !important;
    --bs-secondary-bg-subtle: #f8fafc !important;
    --bs-secondary-border-subtle: #e2e8f0 !important;
    --bs-success-bg-subtle: #f0fdf4 !important;
    --bs-success-border-subtle: #bbf7d0 !important;
    --bs-info-bg-subtle: #ecfeff !important;
    --bs-info-border-subtle: #a5f3fc !important;
    --bs-warning-bg-subtle: #fffbeb !important;
    --bs-warning-border-subtle: #fde68a !important;
    --bs-danger-bg-subtle: #fff1f2 !important;
    --bs-danger-border-subtle: #fecdd3 !important;
    --bs-primary-text-emphasis: var(--accent-text) !important;
    --bs-secondary-text-emphasis: var(--text-muted) !important;
    --bs-success-text-emphasis: var(--success) !important;
    --bs-info-text-emphasis: var(--info) !important;
    --bs-warning-text-emphasis: var(--warning) !important;
    --bs-danger-text-emphasis: var(--danger) !important;
}

/* Плашки Bootstrap: светлые оттенки заданы ровно здесь (тест
   test_subtle_palettes_have_a_single_source это проверяет). */
html[data-bs-theme="light"] .bg-primary-subtle {
    background-color: #eff6ff !important;
}

html[data-bs-theme="light"] .bg-secondary-subtle {
    background-color: #f1f5f9 !important;
}

html[data-bs-theme="light"] .bg-success-subtle {
    background-color: #f0fdf4 !important;
}

html[data-bs-theme="light"] .bg-info-subtle {
    background-color: #ecfeff !important;
}

html[data-bs-theme="light"] .bg-warning-subtle {
    background-color: #fffbeb !important;
}

html[data-bs-theme="light"] .bg-danger-subtle {
    background-color: #fff1f2 !important;
}

html[data-bs-theme="light"] .bg-info {
    background-color: #e0f2fe !important;
    color: var(--info) !important;
}

html[data-bs-theme="light"] .bg-warning {
    background-color: #fef3c7 !important;
    color: var(--warning) !important;
}

html[data-bs-theme="light"] .badge.text-white.bg-danger {
    color: #ffffff !important;
}

/* Утилиты, которые в тёмной теме означают «белый текст» и «тёмный фон». */
html[data-bs-theme="light"] .text-white,
html[data-bs-theme="light"] .text-light {
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .text-muted,
html[data-bs-theme="light"] .text-secondary {
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .bg-dark,
html[data-bs-theme="light"] .bg-black {
    background-color: var(--surface-2) !important;
}

html[data-bs-theme="light"] .btn-close-white {
    filter: none;
}

html[data-bs-theme="light"] a:hover {
    color: var(--accent-hover);
}

/* Шапка чатов: базовая тёмная плашка в base.html. */
html[data-bs-theme="light"] .chats-focus-header {
    background: var(--surface) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Поля: базовый слой в base.html задаёт тёмную подложку. */
html[data-bs-theme="light"] .form-control,
html[data-bs-theme="light"] .form-select,
html[data-bs-theme="light"] .modern-input {
    background-color: var(--surface-2) !important;
    border-color: var(--border) !important;
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .form-control:hover,
html[data-bs-theme="light"] .form-select:hover,
html[data-bs-theme="light"] .modern-input:hover {
    border-color: var(--border-hover) !important;
}

html[data-bs-theme="light"] .form-control:focus,
html[data-bs-theme="light"] .form-select:focus,
html[data-bs-theme="light"] .modern-input:focus {
    background-color: var(--surface) !important;
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px var(--accent-tint) !important;
}

html[data-bs-theme="light"] .form-control::placeholder,
html[data-bs-theme="light"] .modern-input::placeholder {
    color: var(--text-dim) !important;
}

/* Модалки и дропдауны: в base.html у них тёмный градиент. */
html[data-bs-theme="light"] .modal-content,
html[data-bs-theme="light"] .custom-modern-modal {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-pop) !important;
    backdrop-filter: none !important;
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .modal-header,
html[data-bs-theme="light"] .modal-footer {
    border-color: var(--border) !important;
}

html[data-bs-theme="light"] .dropdown-menu {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    box-shadow: var(--shadow-pop) !important;
}

html[data-bs-theme="light"] .dropdown-item {
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .dropdown-item:hover,
html[data-bs-theme="light"] .dropdown-item:focus {
    background: var(--surface-2) !important;
    color: var(--accent-text) !important;
}

html[data-bs-theme="light"] .dropdown-divider {
    border-color: var(--border) !important;
}

html[data-bs-theme="light"] .dropdown-menu-dark {
    background: var(--surface) !important;
}

/* Карточки старого образца. */
html[data-bs-theme="light"] .modern-card {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none !important;
}

/* Переключатель недели и мобильные дни. */
html[data-bs-theme="light"] .modern-week-switcher {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
}

html[data-bs-theme="light"] .week-switch-btn,
html[data-bs-theme="light"] .week-switch-main-btn {
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .week-switch-btn:hover,
html[data-bs-theme="light"] .week-switch-main-btn:hover {
    color: var(--text-main) !important;
    background: var(--surface-2) !important;
}

html[data-bs-theme="light"] .week-switch-main-btn.active-current {
    color: var(--accent-text) !important;
    background: var(--accent-tint) !important;
    border-color: var(--accent-border) !important;
    box-shadow: none !important;
}

html[data-bs-theme="light"] .week-dates-badge {
    color: var(--text-muted) !important;
    background: var(--surface-2) !important;
    border-left-color: var(--border) !important;
}

html[data-bs-theme="light"] .mobile-day-btn {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .mobile-day-btn:hover {
    border-color: var(--border-hover) !important;
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .mobile-day-btn.active {
    background: var(--accent) !important;
    border-color: var(--accent) !important;
    color: var(--accent-contrast) !important;
    box-shadow: none !important;
}/* Фильтры-таблетки из components/styles.html: базовый фон тёмный. */
html[data-bs-theme="light"] .filter-tabs {
    background: var(--surface-2) !important;
    border: 1px solid var(--border) !important;
}

html[data-bs-theme="light"] .filter-tabs .filter-tab-btn {
    background: transparent !important;
    border: none !important;
    color: var(--text-muted) !important;
    box-shadow: none !important;
}

html[data-bs-theme="light"] .filter-tabs .filter-tab-btn.active {
    background: var(--surface) !important;
    color: var(--accent-text) !important;
    box-shadow: inset 0 -2px 0 0 var(--accent) !important;
}

/* Нижняя мобильная навигация: базовый слой в base.html тёмный. */
html[data-bs-theme="light"] .mobile-bottom-nav {
    background: var(--surface) !important;
    border-top: 1px solid var(--border) !important;
    box-shadow: 0 -6px 24px -12px rgba(16, 24, 40, 0.12) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

html[data-bs-theme="light"] .mobile-nav-item.active {
    color: var(--accent-text) !important;
    background: var(--accent-tint) !important;
}

/* Модалка урока из components/modals.html: её локальные стили тёмные. */
html[data-bs-theme="light"] .modern-btn-group {
    background: var(--surface-2) !important;
    border: 1px solid var(--border) !important;
}

html[data-bs-theme="light"] .day-chip-btn,
html[data-bs-theme="light"] .dur-chip-btn,
html[data-bs-theme="light"] .modern-subj-chip {
    background: var(--surface-2) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .day-chip-btn:hover,
html[data-bs-theme="light"] .dur-chip-btn:hover,
html[data-bs-theme="light"] .modern-subj-chip:hover {
    background: var(--surface-hover) !important;
    border-color: var(--border-hover) !important;
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .day-chip-btn.active,
html[data-bs-theme="light"] .dur-chip-btn.active,
html[data-bs-theme="light"] .modern-subj-chip.active {
    background: var(--accent-tint) !important;
    border-color: var(--accent-border) !important;
    color: var(--accent-text) !important;
    box-shadow: none !important;
}

html[data-bs-theme="light"] .modern-cancel-btn {
    background: var(--surface-2) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .modern-cancel-btn:hover {
    background: var(--danger-bg) !important;
    border-color: var(--danger-bd) !important;
    color: var(--danger) !important;
}

html[data-bs-theme="light"] .modern-static-info {
    background: var(--surface-2) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-muted) !important;
}

html[data-bs-theme="light"] .modal-sub-label {
    color: var(--text-dim) !important;
}

html[data-bs-theme="light"] .alert-conflict {
    background: var(--warn-bg) !important;
    border-color: var(--warn-bd) !important;
    color: var(--warn) !important;
}

html[data-bs-theme="light"] .alert-avail-warn {
    background: var(--accent-tint) !important;
    border-color: var(--accent-border) !important;
    color: var(--accent-text) !important;
}

html[data-bs-theme="light"] .input-conflict {
    border-color: var(--danger-bd) !important;
    box-shadow: 0 0 0 2px var(--danger-bg) !important;
}

/* Строки истории платежей (components/styles.html) и тёмная таблица
   доступности: без этого в светлой теме остаются тёмные полосы. */
html[data-bs-theme="light"] .history-week-row {
    background: var(--surface) !important;
    border: 1px solid var(--border) !important;
    color: var(--text-main) !important;
}

html[data-bs-theme="light"] .history-week-row:hover {
    background: var(--surface-2) !important;
    border-color: var(--border-hover) !important;
}

html[data-bs-theme="light"] .table-dark {
    --bs-table-bg: transparent;
    --bs-table-color: var(--text-main);
    --bs-table-border-color: var(--border);
    --bs-table-striped-bg: var(--surface-2);
    --bs-table-striped-color: var(--text-main);
    --bs-table-hover-bg: var(--surface-hover);
    --bs-table-hover-color: var(--text-main);
}

/* Скроллбары. */
html[data-bs-theme="light"] ::-webkit-scrollbar-thumb {
    background: rgba(16, 24, 40, 0.18) !important;
}

html[data-bs-theme="light"] ::-webkit-scrollbar-thumb:hover {
    background: rgba(16, 24, 40, 0.28) !important;
}

html[data-bs-theme="light"] ::-webkit-scrollbar-track {
    background: transparent !important;
}
/* Светлая тема: мост к Bootstrap-кнопкам.
   Раньше этот файл целиком повторял theme-light.css (компонентные правила,
   фоны, тексты) и при равной специфичности перебивал ручные значения.
   Теперь здесь только переменные Bootstrap для .btn-outline-*: сами кнопки
   остаются компонентом Bootstrap, но получают тёмные читаемые цвета
   светлой темы. Всё остальное — в палитре theme-light.css и tokens.css. */

html[data-bs-theme="light"] .btn-outline-info {
    --bs-btn-color: #0e7490 !important;
    --bs-btn-border-color: #0e7490 !important;
    --bs-btn-hover-bg: #0e7490 !important;
    --bs-btn-hover-border-color: #0e7490 !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #0e7490 !important;
    --bs-btn-active-border-color: #0e7490 !important;
    --bs-btn-active-color: #ffffff !important;
}

html[data-bs-theme="light"] .btn-outline-warning {
    --bs-btn-color: #92400e !important;
    --bs-btn-border-color: #92400e !important;
    --bs-btn-hover-bg: #92400e !important;
    --bs-btn-hover-border-color: #92400e !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #92400e !important;
    --bs-btn-active-border-color: #92400e !important;
    --bs-btn-active-color: #ffffff !important;
}

html[data-bs-theme="light"] .btn-outline-success {
    --bs-btn-color: #166534 !important;
    --bs-btn-border-color: #166534 !important;
    --bs-btn-hover-bg: #166534 !important;
    --bs-btn-hover-border-color: #166534 !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #166534 !important;
    --bs-btn-active-border-color: #166534 !important;
    --bs-btn-active-color: #ffffff !important;
}

html[data-bs-theme="light"] .btn-outline-danger {
    --bs-btn-color: #be123c !important;
    --bs-btn-border-color: #be123c !important;
    --bs-btn-hover-bg: #be123c !important;
    --bs-btn-hover-border-color: #be123c !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #be123c !important;
    --bs-btn-active-border-color: #be123c !important;
    --bs-btn-active-color: #ffffff !important;
}

html[data-bs-theme="light"] .btn-outline-primary {
    --bs-btn-color: #1d4ed8 !important;
    --bs-btn-border-color: #1d4ed8 !important;
    --bs-btn-hover-bg: #1d4ed8 !important;
    --bs-btn-hover-border-color: #1d4ed8 !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #1d4ed8 !important;
    --bs-btn-active-border-color: #1d4ed8 !important;
    --bs-btn-active-color: #ffffff !important;
}

html[data-bs-theme="light"] .btn-outline-secondary {
    --bs-btn-color: #59616e !important;
    --bs-btn-border-color: #59616e !important;
    --bs-btn-hover-bg: #59616e !important;
    --bs-btn-hover-border-color: #59616e !important;
    --bs-btn-hover-color: #ffffff !important;
    --bs-btn-active-bg: #59616e !important;
    --bs-btn-active-border-color: #59616e !important;
    --bs-btn-active-color: #ffffff !important;
}
/* Тема «Бумага»: только палитра.
   Светлый режим включается атрибутом data-bs-theme="light", поэтому все
   компонентные правила для светлого живут в theme-light.css и используют
   переменные ниже — сама тема больше не переопределяет карточки и бейджи. */
html[data-theme="paper"] {
    /* поверхности: тёплый печатный лист */
    --bg-base: #f7f3ea;
    --bg-subtle: #f2ece0;
    --surface: #fffdf8;
    --surface-solid: #fffdf8;
    --surface-2: #f2ece0;
    --surface-hover: #ece4d4;
    --border: #e2d9c8;
    --border-strong: #cbbfa8;
    --border-hover: #b9a98c;

    /* текст */
    --text-main: #2b2620;
    --text-muted: #6b6257;
    --text-dim: #6d6254;

    /* акцент */
    --accent: #1f4e79;
    --accent-rgb: 31, 78, 121;
    --accent-hover: #173d5e;
    --accent-press: #12324d;
    --accent-contrast: #fffdf8;
    --accent-soft: #1d4ed8;
    --accent-line: #1f4e79;
    --accent-text: #1f4e79;
    --accent-tint: rgba(31, 78, 121, 0.10);
    --accent-border: rgba(31, 78, 121, 0.35);
    --accent-soft-bg: rgba(31, 78, 121, 0.10);

    /* семантика: тёмные варианты, читаемые на белом */
    --ok: #15803d;
    --ok-bg: rgba(21, 128, 61, 0.10);
    --ok-bd: rgba(21, 128, 61, 0.28);
    --warn: #8a5a06;
    --warn-bg: rgba(138, 90, 6, 0.10);
    --warn-bd: rgba(138, 90, 6, 0.30);
    --danger: #be123c;
    --danger-bg: rgba(190, 18, 60, 0.08);
    --danger-bd: rgba(190, 18, 60, 0.28);
    --info: #1f4e79;
    --info-bg: rgba(31, 78, 121, 0.08);
    --info-bd: rgba(31, 78, 121, 0.26);

    /* предметы: тёмные варианты для светлой подложки */
    --subj-math: #6d4bd8;
    --subj-physics: #2f6bd6;
    --subj-it: #0f8f83;
    --subj-chem: #b8542f;
    --subj-eng: #8a6d0a;
    --subj-other: #616b78;

    --shadow-pop: 0 12px 32px -12px rgba(43, 38, 32, 0.18);

    /* старые имена */
    --success: #15803d;
    --warning: #8a5a06;
    --indigo: #1d4ed8;
    --purple: #7e22ce;
    --accent-2: #b45309;
    --accent-2-rgb: 180, 83, 9;
    --accent-glow: rgba(31, 78, 121, 0.14);
    --shadow-glass: 0 12px 32px -12px rgba(43, 38, 32, 0.18);

    color-scheme: light;
}
