/* ============================================ */
/* Модалка пользовательской темы                */
/* ============================================ */

.tm-overlay {
    position: fixed;
    inset: 0;
    background: transparent;
    /* glassfix5: самого оверлея backdrop-filter НЕТ — он не должен быть
       backdrop root (filter-effects-2), иначе backdrop-filter карточки
       внутри (.tm-card) размывает только прозрачный фон оверлея, а не страницу.
       Вуаль за модалкой делает псевдоэлемент ::before (ниже). */
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}

/* glassfix5: вуаль за модалкой — псевдоэлемент, а не оверлей.
   ::before не является предком .tm-card, поэтому размытие карточки
   по-прежнему видит страницу (и эту вуаль). */
.tm-overlay::before {
    content: "";
    position: absolute;
    inset: 0;
    backdrop-filter: blur(var(--modal-glass-bg-blur, 0px));
    -webkit-backdrop-filter: blur(var(--modal-glass-bg-blur, 0px));
    pointer-events: none;
}

.tm-overlay.open {
    opacity: 1;
    visibility: visible;
}

.tm-card {
    background: var(--bg-card, #fff);
    color: var(--text-primary, #3E2723);
    border-radius: 16px;
    width: min(560px, calc(100vw - 32px));
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    transform: translateY(20px) scale(0.97);
    transition: transform 0.25s ease;
}

.tm-overlay.open .tm-card {
    transform: translateY(0) scale(1);
}

/* Шапка */
.tm-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 24px 12px;
    position: sticky;
    top: 0;
    background: var(--bg-card, #fff);
    z-index: 2;
}

.tm-title {
    margin: 0;
    font-size: 1.3rem;
    font-weight: 700;
}

.tm-close-btn {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: none;
    background: var(--bg-secondary, #f5f5f5);
    color: var(--text-primary, #3E2723);
    font-size: 1rem;
    cursor: pointer;
    transition: background 0.2s;
}

.tm-close-btn:hover {
    background: var(--border-color, #ddd);
}

/* Экраны */
.tm-screen {
    display: none;
    padding: 8px 24px 24px;
}

.tm-screen.active {
    display: block;
}

/* Переключатель светлая/тёмная */
.tm-mode-switch {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
}

.tm-mode-btn {
    flex: 1;
    padding: 10px;
    border-radius: 10px;
    border: 2px solid var(--border-color, #ddd);
    background: transparent;
    color: var(--text-primary, #3E2723);
    font-size: 0.95rem;
    cursor: pointer;
    transition: all 0.2s;
}

.tm-mode-btn.active {
    border-color: var(--accent, #D4A574);
    background: color-mix(in srgb, var(--accent, #D4A574) 12%, transparent);
    font-weight: 600;
}

/* Сетка пресетов */
.tm-presets-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.tm-preset-card {
    position: relative;
    color: var(--text-primary, #3E2723); /* <button> не наследует цвет — задаём явно */
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 14px 10px;
    border-radius: 12px;
    border: 2px solid var(--border-color, #ddd);
    background: var(--bg-secondary, #fafafa);
    cursor: pointer;
    transition: all 0.2s;
}

.tm-preset-card:hover {
    border-color: var(--accent, #D4A574);
    transform: translateY(-2px);
}

.tm-preset-card.selected {
    border-color: var(--accent, #D4A574);
    background: color-mix(in srgb, var(--accent, #D4A574) 10%, transparent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #D4A574) 25%, transparent);
}

.tm-preset-card.tm-my-theme {
    border-style: dashed;
}

.tm-preset-emoji {
    font-size: 1.6rem;
}

.tm-preset-name {
    font-size: 0.85rem;
    font-weight: 600;
    text-align: center;
}

/* Мини-кружки цветов */
.tm-swatches {
    display: flex;
    gap: 4px;
}

.tm-swatches i {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid rgba(0, 0, 0, 0.1);
}

/* Кнопка кастомизации */
.tm-customize-btn {
    width: 100%;
    padding: 12px;
    border-radius: 10px;
    border: none;
    background: var(--accent, #D4A574);
    color: #fff;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.2s;
}

.tm-customize-btn:hover {
    opacity: 0.9;
}

/* Экран кастомизации */
.tm-back-btn {
    padding: 8px 14px;
    border-radius: 8px;
    border: 1px solid var(--border-color, #ddd);
    background: transparent;
    color: var(--text-primary, #3E2723);
    font-size: 0.9rem;
    cursor: pointer;
    margin-bottom: 16px;
}

.tm-back-btn:hover {
    background: var(--bg-secondary, #f5f5f5);
}

.tm-section-title {
    margin: 20px 0 12px;
    font-size: 1rem;
    font-weight: 700;
}

/* Сетка цветов */
.tm-color-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}

/* Отступ: кнопка «Кастомизация стекла» не прилипает к последней строке палитры (--accent-hover) */
#tm-btn-glass {
    margin-top: 16px;
}

.tm-color-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-radius: 8px;
    background: var(--bg-secondary, #fafafa);
    cursor: pointer;
}

.tm-color-item input[type="color"] {
    width: 32px;
    height: 32px;
    padding: 0;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    background: transparent;
}

.tm-color-item span {
    font-size: 0.75rem;
    color: var(--text-secondary, #666);
    word-break: break-all;
}

/* Кнопка сохранения */
.tm-save-btn {
    width: 100%;
    padding: 12px;
    margin-top: 20px;
    border-radius: 10px;
    border: none;
    background: var(--accent, #D4A574);
    color: #fff;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
}

.tm-save-btn:hover {
    opacity: 0.9;
}

/* Адаптивность */
@media (max-width: 480px) {
    .tm-presets-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .tm-color-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Статус-подтверждение */
.tm-status {
    padding: 0 24px;
    font-size: 0.9rem;
    color: var(--accent, #D4A574);
    font-weight: 600;
    opacity: 0;
    transition: opacity 0.3s ease;
    min-height: 24px;
}

.tm-status.show {
    opacity: 1;
}

/* ============================================ */
/* Тёмная тема — читаемость модалки             */
/* ============================================ */

body.dark-theme .tm-card {
    background: var(--bg-card, #252525);
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-header {
    background: var(--bg-card, #252525);
}

body.dark-theme .tm-title {
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-close-btn {
    background: var(--bg-secondary, #1E1E1E);
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-close-btn:hover {
    background: var(--border-color, #333);
}

body.dark-theme .tm-mode-btn {
    border-color: var(--border-color, #333);
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-mode-btn.active {
    background: color-mix(in srgb, var(--accent, #D4A574) 15%, transparent);
}

body.dark-theme .tm-preset-card {
    background: var(--bg-secondary, #1E1E1E);
    border-color: var(--border-color, #333);
}

body.dark-theme .tm-preset-name {
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-customize-btn,
body.dark-theme .tm-save-btn {
    color: #fff;
}

body.dark-theme .tm-back-btn {
    border-color: var(--border-color, #333);
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-section-title {
    color: var(--text-primary, #E0E0E0);
}

body.dark-theme .tm-color-item {
    background: var(--bg-secondary, #1E1E1E);
}

body.dark-theme .tm-color-item span {
    color: var(--text-secondary, #B0B0B0);
}

body.dark-theme .tm-status {
    color: var(--accent, #D4A574);
}


/* ============================================
   Слайдеры «Стекло» на экране кастомизации
   ============================================ */
.tm-glass-grid {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 8px;
}

.tm-glass-item {
    display: grid;
    grid-template-columns: 118px 1fr 52px;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 8px;
    background: var(--bg-secondary, #fafafa);
}

.tm-glass-item label {
    font-size: 0.8rem;
    color: var(--text-secondary, #666);
}

.tm-glass-item input[type="range"] {
    width: 100%;
    accent-color: var(--accent, #D4A574);
    cursor: pointer;
}

.tm-glass-val {
    font-size: 0.75rem;
    color: var(--text-primary, #333);
    text-align: right;
    font-variant-numeric: tabular-nums;
}

body.dark-theme .tm-glass-item {
    background: var(--bg-secondary, #1E1E1E);
}

body.dark-theme .tm-glass-item label {
    color: var(--text-secondary, #B0B0B0);
}

.tm-glass-hint {
    font-size: 0.8rem;
    color: var(--text-secondary, #757575);
    margin: 4px 0 16px;
    line-height: 1.4;
}
body.dark-theme .tm-glass-val {
    color: var(--text-primary, #E0E0E0);
}

/* ============================================
   Пакет «Плюс»: приписка + заблокированный вид
   ============================================ */
.tm-plus-banner {
    display: none;
    align-items: flex-start;
    gap: 8px;
    background: linear-gradient(135deg, rgba(212, 165, 116, 0.18), rgba(212, 165, 116, 0.08));
    border: 1px solid rgba(212, 165, 116, 0.45);
    border-radius: 12px;
    padding: 10px 14px;
    margin: 0 0 14px;
    font-size: 0.85rem;
    line-height: 1.4;
    color: var(--text-primary, #333);
}
body.dark-theme .tm-plus-banner {
    background: linear-gradient(135deg, rgba(212, 165, 116, 0.14), rgba(212, 165, 116, 0.05));
    border-color: rgba(212, 165, 116, 0.4);
    color: var(--text-primary, #E0E0E0);
}

// Заблокированный режим: настройки видны, но приглушены и неактивны.
// Навигация между экранами работает — превью функций серверной версии.
.tm-card.tm-locked .tm-screen {
    opacity: 0.7;
    filter: saturate(0.9);
    pointer-events: none;
    user-select: none;
}
.tm-card.tm-locked .tm-screen button,
.tm-card.tm-locked .tm-screen input {
    cursor: not-allowed;
}
.tm-card.tm-locked .tm-screen .tm-nav-btn {
    pointer-events: auto;
    cursor: pointer;
}
