diff --git a/web/static/css/matrix.css b/web/static/css/matrix.css index cbde0ee..0a350a9 100644 --- a/web/static/css/matrix.css +++ b/web/static/css/matrix.css @@ -1,74 +1,327 @@ -/* MATRIX STYLE FOR LKM37 ADMIN PANEL */ +/* 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'); + :root { - --matrix-green: #22c55e; - --matrix-green-glow: #10b981; - --matrix-black: #050505; - --matrix-gray: #1a1a1a; - --matrix-cyan: #06b6d4; - --matrix-red: #ef4444; + --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); } body { - background-color: var(--matrix-black); - color: var(--matrix-green); - font-family: 'Courier New', Courier, monospace; + 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; } +/* Сайдбар */ .sidebar { - background: var(--matrix-black); - border-right: 1px solid var(--matrix-green); - box-shadow: 2px 0 15px rgba(34, 197, 94, 0.2); + 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(--matrix-green); - border-left: 2px solid transparent; - transition: 0.3s; - text-transform: uppercase; - font-size: 0.9rem; - letter-spacing: 1px; + 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, .sidebar .nav-link.active { - background-color: rgba(34, 197, 94, 0.1); - color: white; - border-left-color: var(--matrix-green); - text-shadow: 0 0 10px var(--matrix-green); +.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-color: var(--matrix-gray); - border: 1px solid var(--matrix-green); - color: var(--matrix-green); + 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-color: rgba(34, 197, 94, 0.1); - border-bottom: 1px solid var(--matrix-green); + 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; } -.btn-matrix { - background-color: transparent; - border: 1px solid var(--matrix-green); - color: var(--matrix-green); - text-transform: uppercase; +.card-body { + padding: 1.25rem !important; } -.btn-matrix:hover { - background-color: var(--matrix-green); - color: black; - box-shadow: 0 0 20px var(--matrix-green); +/* Переопределение старых рамок и фонов */ +.border-success, .border-warning, .border-cyan, .border-danger { + border-color: var(--panel-border) !important; } -/* Эффект падающих символов на фоне (легкий) */ -.matrix-bg { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; - opacity: 0.05; - pointer-events: none; +.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); +} + diff --git a/web/templates/base.html b/web/templates/base.html index a02a0f1..c4aed64 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -21,10 +21,10 @@
-