diff --git a/web/static/css/matrix.css b/web/static/css/matrix.css index 314d147..5d6f0e2 100644 --- a/web/static/css/matrix.css +++ b/web/static/css/matrix.css @@ -1,389 +1,21 @@ -/* GLASSMORPHISM DARK UI FOR DOMOVOY WEB PANEL */ -@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); - +/* CLEAN MINIMALIST THEME FOR DOMOVOY WEB PANEL */ :root { - --bg-main: #06060c; - --bg-gradient: radial-gradient(circle at 50% 0%, #150f30 0%, #06060c 80%); - --panel-bg: rgba(18, 18, 29, 0.45); - --panel-bg-hover: rgba(26, 26, 42, 0.6); - --panel-border: rgba(255, 255, 255, 0.08); - --panel-border-hover: rgba(255, 255, 255, 0.15); - - --color-primary: #8a2be2; - --color-primary-glow: rgba(138, 43, 226, 0.35); - --color-success: #00ffcc; - --color-success-glow: rgba(0, 255, 204, 0.25); - --color-warning: #ffb300; - --color-warning-glow: rgba(255, 179, 0, 0.25); - --color-danger: #ff2d55; - --color-danger-glow: rgba(255, 45, 85, 0.25); - --color-info: #00bfff; - --color-info-glow: rgba(0, 191, 255, 0.25); - - --color-text-main: #f5f5f7; - --color-text-muted: #8e8e93; - --color-text-dark: #3a3a3c; - - --font-main: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; - --font-mono: 'JetBrains Mono', monospace; - - --shadow-neon: 0 8px 32px 0 rgba(0, 0, 0, 0.4), 0 0 16px 0 var(--color-primary-glow); - --transition-smooth: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); + --bg-main: #f4f4f4; + --bg-panel: #ffffff; + --bg-header: #ece9d8; + --border-color: #707680; + --border-light: #cccccc; + --text-main: #111111; + --text-muted: #555555; + --link-color: #0000cc; + --link-hover: #cc0000; + --badge-bg: #e8e8e8; } body { - background-color: var(--bg-main) !important; - background-image: var(--bg-gradient) !important; - background-attachment: fixed !important; - color: var(--color-text-main) !important; - font-family: var(--font-main) !important; - min-height: 100vh; - overflow-x: hidden; - line-height: 1.5; + background-color: var(--bg-main); + color: var(--text-main); + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 13px; + line-height: 1.45; } - -/* Сайдбар */ -.sidebar { - background: rgba(10, 10, 18, 0.3) !important; - backdrop-filter: blur(20px) !important; - -webkit-backdrop-filter: blur(20px) !important; - border-right: 1px solid var(--panel-border) !important; - box-shadow: 4px 0 24px rgba(0, 0, 0, 0.3) !important; -} - -.sidebar .nav-link { - color: var(--color-text-muted) !important; - border-left: 3px solid transparent !important; - transition: var(--transition-smooth) !important; - padding: 0.75rem 1.5rem !important; - font-weight: 500 !important; - text-transform: uppercase !important; - font-family: var(--font-main) !important; - letter-spacing: 0.5px !important; -} - -.sidebar .nav-link:hover { - color: var(--color-text-main) !important; - background: rgba(255, 255, 255, 0.03) !important; - border-left-color: rgba(255, 255, 255, 0.2) !important; -} - -.sidebar .nav-link.active { - color: var(--color-success) !important; - background: rgba(0, 255, 204, 0.05) !important; - border-left-color: var(--color-success) !important; - text-shadow: 0 0 10px var(--color-success-glow) !important; -} - -.sidebar .nav-link i, .sidebar .nav-link bi { - margin-right: 0.5rem !important; - font-size: 1.1rem !important; -} - -/* Карточки */ -.card { - background: var(--panel-bg) !important; - backdrop-filter: blur(12px) !important; - -webkit-backdrop-filter: blur(12px) !important; - border: 1px solid var(--panel-border) !important; - border-radius: 16px !important; - transition: var(--transition-smooth) !important; - color: var(--color-text-main) !important; - overflow: hidden !important; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15) !important; -} - -.card:hover { - background: var(--panel-bg-hover) !important; - border-color: var(--panel-border-hover) !important; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4) !important; - transform: translateY(-2px) !important; -} - -.card-header { - background: rgba(255, 255, 255, 0.02) !important; - border-bottom: 1px solid var(--panel-border) !important; - font-weight: 600 !important; - text-transform: uppercase !important; - letter-spacing: 0.5px !important; - padding: 1rem 1.25rem !important; - color: var(--color-text-main) !important; -} - -.card-body { - padding: 1.25rem !important; -} - -/* Переопределение старых рамок и фонов */ -.border-success, .border-warning, .border-cyan, .border-danger { - border-color: var(--panel-border) !important; -} - -.card.border-success:hover, .card.border-warning:hover, .card.border-cyan:hover { - border-color: var(--panel-border-hover) !important; -} - -.card.border-danger { - border-color: rgba(255, 45, 85, 0.3) !important; -} - -.card.border-danger:hover { - border-color: var(--color-danger) !important; - box-shadow: 0 8px 30px rgba(255, 45, 85, 0.15) !important; -} - -/* Таблицы */ -.table { - color: var(--color-text-main) !important; - background-color: transparent !important; -} - -.table > :not(caption) > * > * { - background-color: transparent !important; - color: var(--color-text-main) !important; - border-bottom: 1px solid var(--panel-border) !important; -} - -.table > thead > tr > th { - color: var(--color-text-muted) !important; - font-weight: 600 !important; - text-transform: uppercase !important; - font-size: 0.8rem !important; - letter-spacing: 0.5px !important; - border-bottom: 2px solid var(--panel-border) !important; -} - -.table-hover tbody tr:hover td { - background-color: rgba(255, 255, 255, 0.02) !important; - color: var(--color-text-main) !important; -} - -/* Кнопки */ -.btn { - border-radius: 8px !important; - font-weight: 500 !important; - transition: var(--transition-smooth) !important; - text-transform: uppercase !important; - letter-spacing: 0.5px !important; -} - -.btn-matrix, .btn-outline-success { - background-color: transparent !important; - border: 1px solid var(--color-success) !important; - color: var(--color-success) !important; -} - -.btn-matrix:hover, .btn-outline-success:hover, .btn-outline-success:active, .btn-outline-success:focus { - background-color: var(--color-success) !important; - color: #000 !important; - border-color: var(--color-success) !important; - box-shadow: 0 0 15px var(--color-success-glow) !important; -} - -.btn-outline-primary { - border-color: var(--color-primary) !important; - color: var(--color-text-main) !important; -} - -.btn-outline-primary:hover { - background-color: var(--color-primary) !important; - color: var(--color-text-main) !important; - box-shadow: 0 0 15px var(--color-primary-glow) !important; -} - -.btn-outline-danger { - border-color: var(--color-danger) !important; - color: var(--color-danger) !important; - background-color: transparent !important; -} - -.btn-outline-danger:hover { - background-color: var(--color-danger) !important; - color: #fff !important; - box-shadow: 0 0 15px var(--color-danger-glow) !important; -} - -.btn-outline-warning { - border-color: var(--color-warning) !important; - color: var(--color-warning) !important; - background-color: transparent !important; -} - -.btn-outline-warning:hover { - background-color: var(--color-warning) !important; - color: #000 !important; - box-shadow: 0 0 15px var(--color-warning-glow) !important; -} - -.btn-outline-info { - border-color: var(--color-info) !important; - color: var(--color-info) !important; - background-color: transparent !important; -} - -.btn-outline-info:hover { - background-color: var(--color-info) !important; - color: #000 !important; - box-shadow: 0 0 15px var(--color-info-glow) !important; -} - -/* Формы */ -.form-control, .form-select { - background-color: rgba(255, 255, 255, 0.03) !important; - border: 1px solid var(--panel-border) !important; - color: var(--color-text-main) !important; - border-radius: 8px !important; - transition: var(--transition-smooth) !important; -} - -.form-control:focus, .form-select:focus { - background-color: rgba(255, 255, 255, 0.05) !important; - border-color: var(--color-primary) !important; - color: var(--color-text-main) !important; - box-shadow: 0 0 8px var(--color-primary-glow) !important; -} - -.form-control::placeholder { - color: var(--color-text-muted) !important; - opacity: 0.6 !important; -} - -.bg-black { - background-color: rgba(10, 10, 15, 0.5) !important; - border: 1px solid var(--panel-border) !important; -} - -/* Ссылки */ -a { - color: var(--color-success); - text-decoration: none; - transition: var(--transition-smooth); -} - -a:hover { - color: #fff; - text-shadow: 0 0 8px var(--color-success-glow); -} - -/* Баджи */ -.badge { - border-radius: 6px !important; - font-weight: 500 !important; - padding: 0.4em 0.6em !important; -} - -.bg-success { - background-color: rgba(0, 255, 204, 0.15) !important; - color: var(--color-success) !important; - border: 1px solid var(--color-success) !important; -} - -.bg-danger { - background-color: rgba(255, 45, 85, 0.15) !important; - color: var(--color-danger) !important; - border: 1px solid var(--color-danger) !important; -} - -.bg-warning { - background-color: rgba(255, 179, 0, 0.15) !important; - color: var(--color-warning) !important; - border: 1px solid var(--color-warning) !important; -} - -.bg-info { - background-color: rgba(0, 191, 255, 0.15) !important; - color: var(--color-info) !important; - border: 1px solid var(--color-info) !important; -} - -/* Утилиты и кастомный контент */ -hr { - border-color: var(--panel-border) !important; - opacity: 0.5 !important; -} - -pre, code { - font-family: var(--font-mono) !important; -} - -/* Кастомный Scrollbar */ -::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -::-webkit-scrollbar-track { - background: rgba(10, 10, 15, 0.5); -} - -::-webkit-scrollbar-thumb { - background: rgba(255, 255, 255, 0.08); - border-radius: 3px; -} - -::-webkit-scrollbar-thumb:hover { - background: rgba(255, 255, 255, 0.15); -} - -/* Дополнения для соответствия Swarm Dashboard */ -.glass-panel { - background: var(--panel-bg) !important; - backdrop-filter: blur(12px) !important; - -webkit-backdrop-filter: blur(12px) !important; - border: 1px solid var(--panel-border) !important; - border-radius: 16px !important; - padding: 24px !important; - transition: var(--transition-smooth) !important; -} - -.glass-panel:hover { - background: var(--panel-bg-hover) !important; - border-color: var(--panel-border-hover) !important; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.4) !important; -} - -@keyframes neonPulseSuccess { - 0%, 100% { box-shadow: 0 0 8px var(--color-success-glow); } - 50% { box-shadow: 0 0 18px rgba(0, 255, 204, 0.6); } -} - -@keyframes neonPulseDanger { - 0%, 100% { box-shadow: 0 0 8px var(--color-danger-glow); } - 50% { box-shadow: 0 0 18px rgba(255, 45, 85, 0.6); } -} - -@keyframes neonPulsePrimary { - 0%, 100% { box-shadow: 0 0 8px var(--color-primary-glow); } - 50% { box-shadow: 0 0 18px rgba(138, 43, 226, 0.6); } -} - -.glow-success { - animation: neonPulseSuccess 3s infinite alternate !important; -} - -.glow-danger { - animation: neonPulseDanger 3s infinite alternate !important; -} - -.glow-primary { - animation: neonPulsePrimary 3s infinite alternate !important; -} - -.text-gradient { - background: linear-gradient(135deg, #fff 0%, var(--color-text-muted) 100%) !important; - -webkit-background-clip: text !important; - -webkit-text-fill-color: transparent !important; -} - -.text-gradient-neon { - background: linear-gradient(135deg, #00ffcc 0%, #8a2be2 100%) !important; - -webkit-background-clip: text !important; - -webkit-text-fill-color: transparent !important; -} - -.flex-center { - display: flex !important; - align-items: center !important; - justify-content: center !important; -} - diff --git a/web/templates/base.html b/web/templates/base.html index dd3aae8..86298d0 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -182,6 +182,7 @@ border: 1px solid var(--border-light); padding: 2px 4px; font-size: 12px; + color: #111111; } pre { padding: 8px; @@ -190,14 +191,80 @@ .badge-status { display: inline-block; - padding: 2px 5px; + padding: 2px 6px; border: 1px solid var(--border-color); background-color: var(--badge-bg); font-size: 11px; + font-weight: bold; + } + .badge-success { background-color: #e2f0d9 !important; border-color: #70ad47 !important; color: #385723 !important; } + .badge-warning { background-color: #fff2cc !important; border-color: #ffc000 !important; color: #806000 !important; } + .badge-danger { background-color: #fce4d6 !important; border-color: #ed7d31 !important; color: #c65911 !important; } + .badge-info { background-color: #e6f2ff !important; border-color: #66a3ff !important; color: #004080 !important; } + + /* Глобальные переопределения Bootstrap и утилит для светлого стиля */ + .card, .panel { + background-color: var(--bg-panel) !important; + border: 1px solid var(--border-color) !important; + border-radius: 0 !important; + box-shadow: none !important; + color: var(--text-main) !important; + } + .card-header, .panel-header { + background-color: var(--bg-header) !important; + border-bottom: 1px solid var(--border-color) !important; + color: var(--text-main) !important; + font-weight: bold !important; + border-radius: 0 !important; + } + .bg-black, .bg-dark { + background-color: #ffffff !important; + color: var(--text-main) !important; + border-color: var(--border-color) !important; + } + .text-white { + color: var(--text-main) !important; + } + .text-matrix, .text-cyan, .text-success, .text-info { + color: var(--text-main) !important; + } + .btn-matrix { + background-color: #e8e8e8 !important; + color: #000000 !important; + border: 1px solid var(--border-color) !important; + border-radius: 0 !important; + font-family: inherit !important; + font-size: 12px !important; + box-shadow: none !important; + text-shadow: none !important; + } + .btn-matrix:hover { + background-color: #d8d8d8 !important; + color: #000000 !important; + } + input, select, textarea, .form-control, .form-select { + background-color: #ffffff !important; + color: var(--text-main) !important; + border: 1px solid var(--border-color) !important; + border-radius: 0 !important; + font-family: inherit !important; + font-size: 12px !important; + box-shadow: none !important; + } + input:focus, select:focus, textarea:focus, .form-control:focus, .form-select:focus { + background-color: #ffffff !important; + color: var(--text-main) !important; + border-color: #0000cc !important; + box-shadow: none !important; + outline: none !important; + } + h1, h2, h3, h4, h5, h6 { + color: var(--text-main) !important; + text-shadow: none !important; + } + .shadow, .shadow-sm, .shadow-lg, .shadow-danger { + box-shadow: none !important; } - .badge-success { background-color: #e2f0d9; border-color: #70ad47; color: #385723; } - .badge-warning { background-color: #fff2cc; border-color: #ffc000; color: #806000; } - .badge-danger { background-color: #fce4d6; border-color: #ed7d31; color: #c65911; } {% block extra_style %}{% endblock %} diff --git a/web/templates/broadcast.html b/web/templates/broadcast.html index c8908da..17252cd 100644 --- a/web/templates/broadcast.html +++ b/web/templates/broadcast.html @@ -7,24 +7,24 @@ {% block extra_style %} {% endblock %} @@ -76,8 +76,8 @@
| База данных: | +PostgreSQL (Synology NAS 192.168.10.105:5433) OK | +
| Telegram-бот: | +@lkmthreeseven_bot (DomovoyKontrolBot) ONLINE | +
| Юридический модуль: | +Google NotebookLM (аккаунт corteskelsey814, 14 источников) READY | +
| Текущий узел: | +{{ username }}@DockerServer (192.168.10.116) | +
| Верифицировано жильцов: | +{{ verified_count }} чел. | +
| Активных опросов: | +{{ active_polls }} | +
| Предстоящих событий: | +{{ upcoming_events }} | +