/
7Vladis
/
manual_devices
Обзор
Документация
Войти
/
7Vladis
/
manual_devices
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
static/css/style.css
355 строк
9 KB
7vladis
visual fix
30 июл 2026, 12:55
30 июл 2026, 12:55
2e244f8
Код
Авторство
О чём код?
/* --- 1. ПЕРЕМЕННЫЕ И ПАЛИТРА (60-30-10) --- */ :root { /* 60% Доминирующий цвет (спокойный светлый фон интерфейса) */ --app-bg: #f8fafc; --card-bg: #ffffff; /* 30% Вторичный цвет (структура, текст, рамочные элементы) */ --text-main: #1e293b; --text-muted: #64748b; --border-color: #e2e8f0; /* 10% Акцентный цвет (ключевые CTA-действия, акценты) */ --accent-color: #2563eb; --accent-hover: #1d4ed8; --accent-active: #1e40af; /* Дополнительные системные цвета */ --primary-color: #2563eb; --danger-color: #ef4444; --success-color: #22c55e; --card-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05), 0 1px 2px 0 rgba(0, 0, 0, 0.03); --card-hover-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.08); --border-radius: 10px; --transition: all 0.2s ease-in-out; } body { background-color: var(--app-bg); font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: var(--text-main); } a { text-decoration: none; color: inherit; } /* --- СИСТЕМА ИНТЕРАКТИВНЫХ ЭЛЕМЕНТОВ И КНОПОК --- */ /* Первичная кнопка (Primary / CTA - Акцентный цвет 10%) */ .btn-primary, .btn-success, .btn-outline-primary { background-color: var(--accent-color) !important; border-color: var(--accent-color) !important; color: #ffffff !important; transition: var(--transition); } .btn-outline-primary { background-color: transparent !important; color: var(--accent-color) !important; } .btn-outline-primary:hover { background-color: var(--accent-color) !important; color: #ffffff !important; } .btn-primary:hover, .btn-success:hover { background-color: var(--accent-hover) !important; border-color: var(--accent-hover) !important; } .btn-primary:active, .btn-success:active, .btn-outline-primary:active { background-color: var(--accent-active) !important; border-color: var(--accent-active) !important; color: #ffffff !important; transform: translateY(1px); } .btn-primary:disabled, .btn-success:disabled, .btn-outline-primary:disabled { background-color: #cbd5e1 !important; border-color: #cbd5e1 !important; color: #94a3b8 !important; cursor: not-allowed; } /* Вторичная кнопка (Secondary - альтернативные действия) */ .btn-secondary, .btn-outline-secondary, .btn-light { transition: var(--transition); } .btn-outline-secondary, .btn-light { background-color: #f1f5f9 !important; border-color: #cbd5e1 !important; color: var(--text-main) !important; } .btn-outline-secondary:hover, .btn-light:hover { background-color: #e2e8f0 !important; border-color: #94a3b8 !important; } .btn-outline-secondary:active, .btn-light:active { background-color: #cbd5e1 !important; transform: translateY(1px); } .btn-outline-secondary:disabled, .btn-light:disabled { background-color: #f8fafc !important; border-color: #e2e8f0 !important; color: #cbd5e1 !important; cursor: not-allowed; } /* --- 2. БАЗОВЫЕ КОМПОНЕНТЫ --- */ /* Карточки */ .card { border: 1px solid rgba(0,0,0,0.05) !important; border-radius: var(--border-radius) !important; box-shadow: var(--card-shadow) !important; transition: var(--transition); background-color: #fff; height: 100%; } .clickable-card { cursor: pointer; border: 1px solid transparent !important; } .clickable-card:hover { transform: translateY(-4px); box-shadow: var(--card-hover-shadow) !important; border-color: rgba(13, 75, 169, 0.2) !important; /* На основе --primary-color */ background-color: #fdfdfe; } .clickable-card:active { transform: translateY(-1px); } /* Прогресс-бары и иконки */ .progress { background-color: #e9ecef; border-radius: 10px; height: 8px; } .progress-bar { border-radius: 10px; } .rounded-circle { display: flex !important; align-items: center; justify-content: center; flex-shrink: 0; } /* --- 3. ШАПКА (HEADER) --- */ .nav-buttons-group, .user-block { flex: none !important; } /* Компактные кнопки навигации (36x36px) под пропорции шапки */ .nav-btn-compact { width: 36px; height: 36px; padding: 0 !important; display: flex; align-items: center; justify-content: center; border-radius: 6px; transition: var(--transition); } .nav-btn-compact i { line-height: 0; } .search-wrapper { width: 100%; max-width: 450px; } .search-wrapper .form-control:focus { box-shadow: none; background-color: #fff; } .nav-btn { width: 140px; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; font-weight: 500; } /* Меню профиля */ .dropdown-item { transition: background-color 0.2s ease; font-size: 0.95rem; cursor: pointer; padding: 0.75rem 1rem; } .dropdown-item i { font-size: 1.1rem; } .dropdown-item span { font-weight: 500; } .dropdown-divider { opacity: 0.08; } .user-block .dropdown-toggle::after { display: none; } /* Стили заголовка в выпадающем меню */ .user-info-header { background-color: #ffffff; border-bottom: 1px solid #dfe5ed; } /* Форма выхода */ .logout-btn { width: 100%; text-align: left; border: none; background: none; padding: 0.75rem 1rem; display: flex; align-items: center; } /* --- 4. СПЕЦИФИКА DASHBOARD --- */ .overdue-card { border: 2px solid var(--danger-color) !important; box-shadow: 0 0 15px rgba(230, 57, 70, 0.15) !important; background-color: #fffafa !important; } .overdue-card.clickable-card:hover { border-color: var(--danger-color) !important; box-shadow: 0 8px 25px rgba(230, 57, 70, 0.2) !important; } .maintenance-item-container { display: flex; justify-content: space-between; align-items: center; width: 100%; } .card small.text-muted { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Служебные цвета */ .bg-light-danger { background-color: #fff5f5; } .bg-light-primary { background-color: #f0f7ff; } .bg-light-success { background-color: #f3fdf8; } /* --- 5. HTMX ИНДИКАТОРЫ --- */ .htmx-indicator { display: none; } .htmx-request .htmx-indicator { display: inline-block; } .htmx-request.card { opacity: 0.6; } /* --- 6. ПРОВОДНИК (ДЕРЕВО ОБЪЕКТОВ) --- */ .hover-bg-light:hover { background-color: #f1f5f9; } /* Корректное усечение длинных имен на маленьких экранах */ .tree-item .text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } .tree-actions { flex-shrink: 0; } /* Вращение стрелочки при разворачивании */ .tree-arrow[aria-expanded="true"] .arrow-icon { transform: rotate(90deg); } .tree-arrow .arrow-icon { transition: transform 0.2s ease-in-out; } /* Настройки для шрифтов дерева */ .text-purple { color: #6f42c1; } .transition-all { transition: all 0.2s ease-in-out; } /* Анимация плавного появления */ .animate-fade { animation: fadeIn 0.3s ease-in-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } /* Дополнительные стили для макета настроек */ main.container-fluid { padding: 0 !important; margin: 0 !important; max-width: 100vw !important; } #main-content { width: 100%; } .settings-layout { height: calc(100vh - 56px); overflow: hidden; } /* --- СТИЛИ ДЛЯ ИНЛАЙН-РЕДАКТИРОВАНИЯ БЕЗ ВИЗУАЛЬНОГО ШУМА --- */ /* Контейнер интерактивного поля */ .editable-trigger { position: relative; display: inline-flex; align-items: center; padding: 2px 6px; margin: -2px -6px; /* Компенсируем padding, чтобы текст не сдвигался */ border-radius: 6px; transition: background-color 0.15s ease-in-out; cursor: pointer; } /* Эффект наведения на всю интерактивную область */ .editable-trigger:hover { background-color: #e2e8f0; /* Очень мягкий серый фон */ } /* Иконка карандаша по умолчанию скрыта */ .editable-trigger .edit-icon { opacity: 0; margin-left: 6px; font-size: 0.85em; color: var(--text-muted); transition: opacity 0.15s ease-in-out, color 0.15s ease-in-out; display: inline-block; } /* Проявление иконки при наведении на интерактивную область */ .editable-trigger:hover .edit-icon { opacity: 0.6; } /* Дополнительный акцент, если навели непосредственно на сам карандаш */ .editable-trigger .edit-icon:hover { opacity: 1; color: var(--accent-color); }