mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-08-21 14:37:16 +00:00
343 lines
6.5 KiB
CSS
343 lines
6.5 KiB
CSS
/* Custom styles for VPN admin interface */
|
|
|
|
/* Quick action buttons in server list */
|
|
.quick-actions .button {
|
|
display: inline-block;
|
|
padding: 4px 8px;
|
|
margin: 0 2px;
|
|
font-size: 11px;
|
|
line-height: 1.2;
|
|
text-decoration: none;
|
|
border: 1px solid #ccc;
|
|
border-radius: 3px;
|
|
background: linear-gradient(to bottom, #f8f8f8, #e8e8e8);
|
|
color: #333;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
min-width: 60px;
|
|
text-align: center;
|
|
box-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.quick-actions .button:hover {
|
|
background: linear-gradient(to bottom, #e8e8e8, #d8d8d8);
|
|
border-color: #bbb;
|
|
color: #000;
|
|
text-decoration: none;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.15);
|
|
}
|
|
|
|
.quick-actions .button:active {
|
|
background: linear-gradient(to bottom, #d8d8d8, #e8e8e8);
|
|
box-shadow: inset 0 1px 2px rgba(0,0,0,0.2);
|
|
}
|
|
|
|
/* Sync button - blue theme */
|
|
.quick-actions .button[href*="/sync/"] {
|
|
background: linear-gradient(to bottom, #4a90e2, #357abd);
|
|
border-color: #2968a3;
|
|
color: white;
|
|
}
|
|
|
|
.quick-actions .button[href*="/sync/"]:hover {
|
|
background: linear-gradient(to bottom, #357abd, #2968a3);
|
|
border-color: #1f5582;
|
|
}
|
|
|
|
/* Move clients button - orange theme */
|
|
.quick-actions .button[href*="/move-clients/"] {
|
|
background: linear-gradient(to bottom, #f39c12, #e67e22);
|
|
border-color: #d35400;
|
|
color: white;
|
|
}
|
|
|
|
.quick-actions .button[href*="/move-clients/"]:hover {
|
|
background: linear-gradient(to bottom, #e67e22, #d35400);
|
|
border-color: #bf4f36;
|
|
}
|
|
|
|
/* Status indicators improvements */
|
|
.server-status-ok {
|
|
color: #27ae60;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.server-status-error {
|
|
color: #e74c3c;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.server-status-warning {
|
|
color: #f39c12;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Better spacing for list display */
|
|
.admin-object-tools {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
/* Improve readability of pre-formatted status */
|
|
.changelist-results pre {
|
|
font-size: 11px;
|
|
margin: 0;
|
|
padding: 2px 4px;
|
|
background: #f8f8f8;
|
|
border: 1px solid #ddd;
|
|
border-radius: 3px;
|
|
max-width: 200px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* Server admin compact styles */
|
|
.server-stats {
|
|
max-width: 120px;
|
|
min-width: 90px;
|
|
}
|
|
|
|
.server-activity {
|
|
max-width: 140px;
|
|
min-width: 100px;
|
|
}
|
|
|
|
.server-status {
|
|
max-width: 160px;
|
|
min-width: 120px;
|
|
}
|
|
|
|
.server-comment {
|
|
max-width: 200px;
|
|
min-width: 100px;
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
/* Compact server display elements */
|
|
.changelist-results .server-stats div,
|
|
.changelist-results .server-activity div,
|
|
.changelist-results .server-status div {
|
|
line-height: 1.3;
|
|
margin: 1px 0;
|
|
}
|
|
|
|
/* Status indicator colors */
|
|
.status-online {
|
|
color: #16a34a !important;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.status-error {
|
|
color: #dc2626 !important;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.status-warning {
|
|
color: #f97316 !important;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.status-unavailable {
|
|
color: #f97316 !important;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Activity indicators */
|
|
.activity-high {
|
|
color: #16a34a !important;
|
|
}
|
|
|
|
.activity-medium {
|
|
color: #eab308 !important;
|
|
}
|
|
|
|
.activity-low {
|
|
color: #f97316 !important;
|
|
}
|
|
|
|
.activity-none {
|
|
color: #dc2626 !important;
|
|
}
|
|
|
|
/* User stats indicators */
|
|
.users-active {
|
|
color: #16a34a !important;
|
|
}
|
|
|
|
.users-medium {
|
|
color: #eab308 !important;
|
|
}
|
|
|
|
.users-low {
|
|
color: #f97316 !important;
|
|
}
|
|
|
|
.users-none {
|
|
color: #9ca3af !important;
|
|
}
|
|
|
|
/* Table cell width constraints for better layout */
|
|
table.changelist-results th:nth-child(1), /* Name */
|
|
table.changelist-results td:nth-child(1) {
|
|
width: 180px;
|
|
max-width: 180px;
|
|
}
|
|
|
|
table.changelist-results th:nth-child(3), /* Comment */
|
|
table.changelist-results td:nth-child(3) {
|
|
width: 200px;
|
|
max-width: 200px;
|
|
}
|
|
|
|
table.changelist-results th:nth-child(4), /* User Stats */
|
|
table.changelist-results td:nth-child(4) {
|
|
width: 120px;
|
|
max-width: 120px;
|
|
}
|
|
|
|
table.changelist-results th:nth-child(5), /* Activity */
|
|
table.changelist-results td:nth-child(5) {
|
|
width: 140px;
|
|
max-width: 140px;
|
|
}
|
|
|
|
table.changelist-results th:nth-child(6), /* Status */
|
|
table.changelist-results td:nth-child(6) {
|
|
width: 160px;
|
|
max-width: 160px;
|
|
}
|
|
|
|
/* Ensure text doesn't overflow in server admin */
|
|
.changelist-results td {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
vertical-align: top;
|
|
}
|
|
|
|
/* Allow wrapping for multi-line server info displays */
|
|
.changelist-results td .server-stats,
|
|
.changelist-results td .server-activity,
|
|
.changelist-results td .server-status {
|
|
white-space: normal;
|
|
}
|
|
|
|
/* Server type icons */
|
|
.server-type-outline {
|
|
color: #3b82f6;
|
|
}
|
|
|
|
.server-type-wireguard {
|
|
color: #10b981;
|
|
}
|
|
|
|
/* Tooltip styles for truncated text */
|
|
[title] {
|
|
cursor: help;
|
|
border-bottom: 1px dotted #999;
|
|
}
|
|
|
|
/* Form improvements for move clients page */
|
|
.form-row.field-box {
|
|
border: 1px solid #ddd;
|
|
border-radius: 4px;
|
|
padding: 10px;
|
|
margin: 10px 0;
|
|
background: #f9f9f9;
|
|
}
|
|
|
|
.form-row.field-box label {
|
|
font-weight: bold;
|
|
color: #333;
|
|
display: block;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.form-row.field-box .readonly {
|
|
padding: 5px;
|
|
background: white;
|
|
border: 1px solid #ddd;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.help {
|
|
background: #e8f4fd;
|
|
border: 1px solid #b8daff;
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.help h3 {
|
|
margin-top: 0;
|
|
color: #0066cc;
|
|
}
|
|
|
|
.help ul {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.help li {
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
/* Make user statistics section wider */
|
|
.field-user_statistics_summary {
|
|
width: 100% !important;
|
|
}
|
|
|
|
.field-user_statistics_summary .readonly {
|
|
max-width: none !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.field-user_statistics_summary .user-management-section {
|
|
width: 100% !important;
|
|
max-width: none !important;
|
|
}
|
|
|
|
/* Wider fieldset for statistics */
|
|
.wide {
|
|
width: 100% !important;
|
|
}
|
|
|
|
.wide .form-row {
|
|
width: 100% !important;
|
|
}
|
|
|
|
/* Server status button styles */
|
|
.check-status-btn {
|
|
transition: all 0.2s ease;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.check-status-btn:hover {
|
|
opacity: 0.8;
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.check-status-btn:disabled {
|
|
opacity: 0.6;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* Make admin tables more responsive */
|
|
.changelist-results table {
|
|
width: 100%;
|
|
table-layout: auto;
|
|
}
|
|
|
|
/* Improve button spacing */
|
|
.btn-sm-custom {
|
|
margin: 0 2px;
|
|
display: inline-block;
|
|
}
|
|
|
|
/* Hide xray-subscriptions tab if it appears */
|
|
#xray-subscriptions-tab,
|
|
a[href="#xray-subscriptions-tab"],
|
|
li:has(a[href="#xray-subscriptions-tab"]) {
|
|
display: none !important;
|
|
}
|