- Removed AngularJS 1.4.8 completely — no more framework dependency - Extracted core RCON logic into pure vanilla JS (js/rcon.js) - Added lightweight hash-based SPA router (js/router.js) - Rewrote all 6 pages as vanilla JS modules in js/pages/ - Migrated Bootstrap 3 → Bootstrap 5 (cards instead of panels, bootstrap-icons instead of glyphicons) - Removed jQuery dependency (Bootstrap 5 is vanilla JS) - Purged all Angular templates from html/ - Removed npm artifacts (package.json, node_modules) - Added nginx.example.conf for static hosting - Updated rcon.css dark theme for BS5 variables - Static file only — no Node.js backend required Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
124 lines
2.3 KiB
CSS
124 lines
2.3 KiB
CSS
@import url(https://fonts.googleapis.com/css?family=Roboto:400,700);
|
|
|
|
:root {
|
|
--rcon-bg: #252830;
|
|
--rcon-text: #cfd2da;
|
|
--rcon-accent: #1ca8dd;
|
|
--rcon-card-bg: #434857;
|
|
}
|
|
|
|
body {
|
|
font-family: "Roboto", sans-serif;
|
|
font-size: 14px;
|
|
font-weight: 300;
|
|
}
|
|
|
|
a { color: var(--rcon-accent); }
|
|
a:hover { color: #fff; text-decoration: none; }
|
|
|
|
/* Console output */
|
|
#ConsoleController .Output {
|
|
font-family: monospace;
|
|
font-size: 12px;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.scrollable { overflow: auto; }
|
|
|
|
/* Sidebar navigation */
|
|
.nav-sidebar {
|
|
margin-top: 64px;
|
|
}
|
|
|
|
.nav-sidebar .nav-link {
|
|
padding: 8px 20px;
|
|
border-radius: 5px;
|
|
color: var(--rcon-text);
|
|
}
|
|
|
|
.nav-sidebar .nav-link:hover,
|
|
.nav-sidebar .nav-link.active {
|
|
color: #fff;
|
|
background-color: #428bca;
|
|
}
|
|
|
|
/* Fade utility */
|
|
.fade { opacity: 0.5; }
|
|
|
|
/* Table styles */
|
|
.table > tbody > tr:hover {
|
|
background-color: rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
.table > thead > tr > th.sorting {
|
|
color: #1bc98e;
|
|
border-color: #1bc98e;
|
|
}
|
|
|
|
.table > thead > tr > th.sorting.descending {
|
|
color: #e05d6f;
|
|
border-color: #e05d6f;
|
|
}
|
|
|
|
.table-responsive {
|
|
overflow-x: visible !important;
|
|
overflow-y: visible !important;
|
|
}
|
|
|
|
/* Form controls dark theme */
|
|
.form-control {
|
|
background: rgba(255, 255, 255, 0.15);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
color: var(--rcon-text);
|
|
}
|
|
|
|
.form-control:focus {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
color: #fff;
|
|
border-color: var(--rcon-accent);
|
|
box-shadow: 0 0 0 0.2rem rgba(28, 168, 221, 0.25);
|
|
}
|
|
|
|
/* Card dark theme */
|
|
.card {
|
|
background-color: var(--rcon-card-bg);
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
/* Dropdown dark theme */
|
|
.dropdown-menu {
|
|
background-color: var(--rcon-card-bg);
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.dropdown-menu .dropdown-item {
|
|
color: var(--rcon-text);
|
|
}
|
|
|
|
.dropdown-menu .dropdown-item:hover {
|
|
background-color: rgba(255, 255, 255, 0.15);
|
|
color: #fff;
|
|
}
|
|
|
|
.dropdown-menu .dropdown-divider {
|
|
border-color: rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
/* Navbar text color override for dark theme */
|
|
.navbar-dark .navbar-text {
|
|
color: rgba(255, 255, 255, 0.85);
|
|
}
|
|
|
|
/* Page title */
|
|
#page-title {
|
|
padding-bottom: 0.5rem;
|
|
margin-bottom: 1rem;
|
|
border-bottom: 1px solid rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
/* Chart panels */
|
|
#chart-performance,
|
|
#chart-network,
|
|
#chart-players {
|
|
min-height: 200px;
|
|
} |