/* 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; }