openvpn-endpoint-server/server/app/static/css/custom.css

197 lines
3.0 KiB
CSS

/* mGuard VPN Manager - Custom Styles */
/* Body */
body {
min-height: 100vh;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
/* Gateway Status Indicators */
.status-online {
color: #198754;
}
.status-offline {
color: #6c757d;
}
.status-indicator {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
margin-right: 8px;
}
.status-indicator.online {
background-color: #198754;
box-shadow: 0 0 8px #198754;
}
.status-indicator.offline {
background-color: #6c757d;
}
/* Gateway Cards */
.gateway-card {
transition: transform 0.2s, box-shadow 0.2s;
}
.gateway-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.gateway-card.online {
border-left: 4px solid #198754;
}
.gateway-card.offline {
border-left: 4px solid #6c757d;
}
/* Dashboard Stats */
.stat-card {
border-radius: 10px;
}
.stat-card .stat-icon {
font-size: 2.5rem;
opacity: 0.2;
}
.stat-card .stat-value {
font-size: 2rem;
font-weight: bold;
}
/* Tables */
.table-hover tbody tr {
cursor: pointer;
}
/* Login Page */
.login-container {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #0d6efd 0%, #0a58ca 100%);
}
.login-box {
background: white;
border-radius: 10px;
padding: 2rem;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
width: 100%;
max-width: 400px;
}
.login-logo {
font-size: 3rem;
color: #0d6efd;
}
/* HTMX Loading Indicator */
.htmx-indicator {
display: none;
}
.htmx-request .htmx-indicator {
display: inline-block;
}
.htmx-request.htmx-indicator {
display: inline-block;
}
/* Sidebar (optional) */
.sidebar {
min-width: 250px;
max-width: 250px;
min-height: 100vh;
background: #212529;
}
.sidebar a {
color: rgba(255,255,255,.8);
text-decoration: none;
padding: 10px 15px;
display: block;
}
.sidebar a:hover {
background: rgba(255,255,255,.1);
color: white;
}
.sidebar a.active {
background: #0d6efd;
color: white;
}
/* Badges */
.badge-role-super_admin {
background-color: #dc3545;
}
.badge-role-admin {
background-color: #0d6efd;
}
.badge-role-technician {
background-color: #198754;
}
.badge-role-viewer {
background-color: #6c757d;
}
/* Endpoint Protocol Badges */
.badge-tcp {
background-color: #0d6efd;
}
.badge-udp {
background-color: #6610f2;
}
/* PKI Initialization Banner */
.pki-init-banner {
background: #ffc107;
color: #212529;
padding: 15px 20px;
text-align: center;
position: sticky;
top: 0;
z-index: 1100;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
border-bottom: 3px solid #e0a800;
}
.pki-init-banner .small {
opacity: 0.8;
}
.pki-init-banner .spinner-border {
color: #212529 !important;
}
/* Responsive adjustments */
@media (max-width: 768px) {
.stat-card .stat-value {
font-size: 1.5rem;
}
.pki-init-banner {
padding: 10px 15px;
font-size: 0.9rem;
}
}