Spaces:
Paused
Paused
| /* Dashboard Styles */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; | |
| background-color: #f5f7fa; | |
| color: #333; | |
| line-height: 1.6; | |
| } | |
| /* Header */ | |
| .dashboard-header { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| padding: 1rem 2rem; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| position: sticky; | |
| top: 0; | |
| z-index: 1000; | |
| } | |
| .header-left .logo { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .header-left .logo i { | |
| font-size: 1.5rem; | |
| } | |
| .header-left .logo h1 { | |
| font-size: 1.5rem; | |
| font-weight: 600; | |
| } | |
| .user-info { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| position: relative; | |
| } | |
| .user-name { | |
| font-weight: 500; | |
| } | |
| .user-menu-btn { | |
| background: none; | |
| border: none; | |
| color: white; | |
| font-size: 1.5rem; | |
| cursor: pointer; | |
| padding: 0.5rem; | |
| border-radius: 50%; | |
| transition: background-color 0.3s; | |
| } | |
| .user-menu-btn:hover { | |
| background-color: rgba(255,255,255,0.1); | |
| } | |
| .user-dropdown { | |
| position: absolute; | |
| top: 100%; | |
| right: 0; | |
| background: white; | |
| color: #333; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| min-width: 150px; | |
| display: none; | |
| z-index: 1001; | |
| } | |
| .user-dropdown.show { | |
| display: block; | |
| } | |
| .user-dropdown a { | |
| display: block; | |
| padding: 0.75rem 1rem; | |
| text-decoration: none; | |
| color: #333; | |
| transition: background-color 0.3s; | |
| } | |
| .user-dropdown a:hover { | |
| background-color: #f8f9fa; | |
| } | |
| .user-dropdown a i { | |
| margin-right: 0.5rem; | |
| width: 16px; | |
| } | |
| /* Dashboard Container */ | |
| .dashboard-container { | |
| display: flex; | |
| min-height: calc(100vh - 80px); | |
| } | |
| /* Sidebar */ | |
| .sidebar { | |
| width: 250px; | |
| background: white; | |
| box-shadow: 2px 0 10px rgba(0,0,0,0.1); | |
| position: sticky; | |
| top: 80px; | |
| height: calc(100vh - 80px); | |
| overflow-y: auto; | |
| } | |
| .sidebar-nav ul { | |
| list-style: none; | |
| padding: 1rem 0; | |
| } | |
| .nav-item a { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 1rem 1.5rem; | |
| text-decoration: none; | |
| color: #666; | |
| transition: all 0.3s; | |
| border-left: 3px solid transparent; | |
| } | |
| .nav-item a:hover, | |
| .nav-item.active a { | |
| background-color: #f8f9fa; | |
| color: #667eea; | |
| border-left-color: #667eea; | |
| } | |
| .nav-item a i { | |
| width: 20px; | |
| text-align: center; | |
| } | |
| /* Main Content */ | |
| .main-content { | |
| flex: 1; | |
| padding: 2rem; | |
| overflow-y: auto; | |
| } | |
| .content-section { | |
| display: none; | |
| } | |
| .content-section.active { | |
| display: block; | |
| } | |
| .section-header { | |
| margin-bottom: 2rem; | |
| } | |
| .section-header h2 { | |
| font-size: 2rem; | |
| color: #333; | |
| margin-bottom: 0.5rem; | |
| } | |
| .section-header p { | |
| color: #666; | |
| font-size: 1.1rem; | |
| } | |
| .section-header .btn { | |
| float: right; | |
| margin-top: -3rem; | |
| } | |
| /* Stats Grid */ | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| .stat-card { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| transition: transform 0.3s, box-shadow 0.3s; | |
| } | |
| .stat-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| } | |
| .stat-icon { | |
| width: 60px; | |
| height: 60px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| color: white; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| } | |
| .stat-content h3 { | |
| font-size: 1.8rem; | |
| font-weight: 600; | |
| color: #333; | |
| margin-bottom: 0.25rem; | |
| } | |
| .stat-content p { | |
| color: #666; | |
| font-size: 0.9rem; | |
| } | |
| /* Quick Actions */ | |
| .quick-actions { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| margin-bottom: 2rem; | |
| } | |
| .quick-actions h3 { | |
| margin-bottom: 1rem; | |
| color: #333; | |
| } | |
| .action-buttons { | |
| display: flex; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .action-btn { | |
| padding: 0.75rem 1.5rem; | |
| border: none; | |
| border-radius: 8px; | |
| cursor: pointer; | |
| font-weight: 500; | |
| text-decoration: none; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| transition: all 0.3s; | |
| } | |
| .action-btn.primary { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| } | |
| .action-btn.primary:hover { | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); | |
| } | |
| .action-btn.secondary { | |
| background: #f8f9fa; | |
| color: #666; | |
| border: 1px solid #e9ecef; | |
| } | |
| .action-btn.secondary:hover { | |
| background: #e9ecef; | |
| color: #333; | |
| } | |
| /* Recent Activity */ | |
| .recent-activity { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| } | |
| .recent-activity h3 { | |
| margin-bottom: 1rem; | |
| color: #333; | |
| } | |
| .activity-list { | |
| max-height: 300px; | |
| overflow-y: auto; | |
| } | |
| .activity-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| padding: 0.75rem 0; | |
| border-bottom: 1px solid #f1f3f4; | |
| } | |
| .activity-item:last-child { | |
| border-bottom: none; | |
| } | |
| .activity-item i { | |
| color: #667eea; | |
| width: 20px; | |
| } | |
| .activity-item span { | |
| flex: 1; | |
| color: #333; | |
| } | |
| .activity-item time { | |
| color: #666; | |
| font-size: 0.9rem; | |
| } | |
| /* Client Filters */ | |
| .client-filters { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| margin-bottom: 1.5rem; | |
| display: flex; | |
| gap: 1.5rem; | |
| flex-wrap: wrap; | |
| align-items: end; | |
| } | |
| .filter-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .filter-group label { | |
| font-weight: 500; | |
| color: #333; | |
| font-size: 0.9rem; | |
| } | |
| .filter-group select, | |
| .filter-group input { | |
| padding: 0.5rem; | |
| border: 1px solid #ddd; | |
| border-radius: 6px; | |
| font-size: 0.9rem; | |
| min-width: 150px; | |
| } | |
| .filter-group input[type="text"] { | |
| min-width: 200px; | |
| } | |
| /* Clients Table */ | |
| .clients-table-container { | |
| background: white; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| overflow: hidden; | |
| } | |
| .clients-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| } | |
| .clients-table th, | |
| .clients-table td { | |
| padding: 1rem; | |
| text-align: left; | |
| border-bottom: 1px solid #f1f3f4; | |
| } | |
| .clients-table th { | |
| background: #f8f9fa; | |
| font-weight: 600; | |
| color: #333; | |
| } | |
| .clients-table tbody tr:hover { | |
| background: #f8f9fa; | |
| } | |
| .status-badge { | |
| padding: 0.25rem 0.75rem; | |
| border-radius: 20px; | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| text-transform: uppercase; | |
| } | |
| .status-badge.active { | |
| background: #d4edda; | |
| color: #155724; | |
| } | |
| .status-badge.inactive { | |
| background: #f8d7da; | |
| color: #721c24; | |
| } | |
| .status-badge.revoked { | |
| background: #fff3cd; | |
| color: #856404; | |
| } | |
| .client-actions { | |
| display: flex; | |
| gap: 0.5rem; | |
| } | |
| .client-actions .btn { | |
| padding: 0.25rem 0.5rem; | |
| font-size: 0.8rem; | |
| } | |
| /* Server Grid */ | |
| .server-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| margin-bottom: 2rem; | |
| } | |
| .server-card { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| transition: transform 0.3s, box-shadow 0.3s; | |
| } | |
| .server-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| } | |
| .server-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 1rem; | |
| } | |
| .server-header h3 { | |
| color: #333; | |
| font-size: 1.2rem; | |
| } | |
| .server-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| font-size: 0.9rem; | |
| font-weight: 500; | |
| } | |
| .status-dot { | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: #dc3545; | |
| } | |
| .server-status.online .status-dot { | |
| background: #28a745; | |
| } | |
| .server-status.online { | |
| color: #28a745; | |
| } | |
| .server-status.offline { | |
| color: #dc3545; | |
| } | |
| .server-info { | |
| margin-bottom: 1rem; | |
| } | |
| .server-info p { | |
| margin-bottom: 0.5rem; | |
| color: #666; | |
| } | |
| .server-actions { | |
| display: flex; | |
| gap: 0.5rem; | |
| flex-wrap: wrap; | |
| } | |
| /* Server Logs */ | |
| .server-logs { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| } | |
| .server-logs h3 { | |
| margin-bottom: 1rem; | |
| color: #333; | |
| } | |
| .logs-controls { | |
| display: flex; | |
| gap: 1rem; | |
| margin-bottom: 1rem; | |
| align-items: center; | |
| } | |
| .logs-controls select { | |
| padding: 0.5rem; | |
| border: 1px solid #ddd; | |
| border-radius: 6px; | |
| } | |
| .logs-container { | |
| background: #1e1e1e; | |
| color: #f8f8f2; | |
| padding: 1rem; | |
| border-radius: 8px; | |
| font-family: 'Courier New', monospace; | |
| font-size: 0.9rem; | |
| max-height: 400px; | |
| overflow-y: auto; | |
| } | |
| .logs-content { | |
| white-space: pre-wrap; | |
| word-break: break-all; | |
| } | |
| /* Protocols Grid */ | |
| .protocols-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .protocol-card { | |
| background: white; | |
| padding: 2rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| transition: transform 0.3s, box-shadow 0.3s; | |
| } | |
| .protocol-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| } | |
| .protocol-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .protocol-icon { | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 10px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| color: white; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| } | |
| .protocol-header h3 { | |
| color: #333; | |
| font-size: 1.3rem; | |
| } | |
| .protocol-description { | |
| color: #666; | |
| margin-bottom: 1.5rem; | |
| line-height: 1.6; | |
| } | |
| .protocol-details { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 1rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .protocol-detail { | |
| display: flex; | |
| justify-content: space-between; | |
| padding: 0.5rem 0; | |
| border-bottom: 1px solid #f1f3f4; | |
| } | |
| .protocol-detail:last-child { | |
| border-bottom: none; | |
| } | |
| .protocol-features { | |
| margin-bottom: 1.5rem; | |
| } | |
| .protocol-features h4 { | |
| color: #333; | |
| margin-bottom: 0.75rem; | |
| font-size: 1rem; | |
| } | |
| .protocol-features ul { | |
| list-style: none; | |
| padding: 0; | |
| } | |
| .protocol-features li { | |
| padding: 0.25rem 0; | |
| color: #666; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .protocol-features li::before { | |
| content: '✓'; | |
| color: #28a745; | |
| font-weight: bold; | |
| } | |
| /* Usage Stats */ | |
| .usage-stats { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .usage-card { | |
| background: white; | |
| padding: 1.5rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| } | |
| .usage-card h3 { | |
| margin-bottom: 1rem; | |
| color: #333; | |
| } | |
| .usage-chart { | |
| height: 300px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: #f8f9fa; | |
| border-radius: 8px; | |
| color: #666; | |
| } | |
| .time-range-selector { | |
| float: right; | |
| margin-top: -3rem; | |
| } | |
| .time-range-selector select { | |
| padding: 0.5rem; | |
| border: 1px solid #ddd; | |
| border-radius: 6px; | |
| } | |
| /* Security Cards */ | |
| .security-cards { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .security-card { | |
| background: white; | |
| padding: 2rem; | |
| border-radius: 12px; | |
| box-shadow: 0 2px 10px rgba(0,0,0,0.1); | |
| transition: transform 0.3s, box-shadow 0.3s; | |
| } | |
| .security-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| } | |
| .security-card h3 { | |
| color: #333; | |
| margin-bottom: 0.5rem; | |
| } | |
| .security-card p { | |
| color: #666; | |
| margin-bottom: 1.5rem; | |
| } | |
| .security-actions { | |
| display: flex; | |
| gap: 0.5rem; | |
| flex-wrap: wrap; | |
| } | |
| /* Buttons */ | |
| .btn { | |
| padding: 0.75rem 1.5rem; | |
| border: none; | |
| border-radius: 8px; | |
| cursor: pointer; | |
| font-weight: 500; | |
| text-decoration: none; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| transition: all 0.3s; | |
| font-size: 0.9rem; | |
| } | |
| .btn.primary { | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| color: white; | |
| } | |
| .btn.primary:hover { | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); | |
| } | |
| .btn.secondary { | |
| background: #f8f9fa; | |
| color: #666; | |
| border: 1px solid #e9ecef; | |
| } | |
| .btn.secondary:hover { | |
| background: #e9ecef; | |
| color: #333; | |
| } | |
| .btn.danger { | |
| background: #dc3545; | |
| color: white; | |
| } | |
| .btn.danger:hover { | |
| background: #c82333; | |
| transform: translateY(-1px); | |
| } | |
| .btn.small { | |
| padding: 0.5rem 1rem; | |
| font-size: 0.8rem; | |
| } | |
| .btn:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed; | |
| transform: none ; | |
| } | |
| /* Modal */ | |
| .modal { | |
| display: none; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0,0,0,0.5); | |
| z-index: 2000; | |
| align-items: center; | |
| justify-content: center; | |
| } | |
| .modal.show { | |
| display: flex; | |
| } | |
| .modal-content { | |
| background: white; | |
| border-radius: 12px; | |
| box-shadow: 0 10px 40px rgba(0,0,0,0.3); | |
| max-width: 500px; | |
| width: 90%; | |
| max-height: 90vh; | |
| overflow-y: auto; | |
| } | |
| .modal-header { | |
| padding: 1.5rem; | |
| border-bottom: 1px solid #f1f3f4; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .modal-header h3 { | |
| color: #333; | |
| margin: 0; | |
| } | |
| .modal-close { | |
| background: none; | |
| border: none; | |
| font-size: 1.2rem; | |
| cursor: pointer; | |
| color: #666; | |
| padding: 0.5rem; | |
| border-radius: 50%; | |
| transition: background-color 0.3s; | |
| } | |
| .modal-close:hover { | |
| background: #f8f9fa; | |
| } | |
| .modal-body { | |
| padding: 1.5rem; | |
| } | |
| /* Form Styles */ | |
| .form-group { | |
| margin-bottom: 1.5rem; | |
| } | |
| .form-group label { | |
| display: block; | |
| margin-bottom: 0.5rem; | |
| font-weight: 500; | |
| color: #333; | |
| } | |
| .form-group input, | |
| .form-group select, | |
| .form-group textarea { | |
| width: 100%; | |
| padding: 0.75rem; | |
| border: 1px solid #ddd; | |
| border-radius: 6px; | |
| font-size: 1rem; | |
| transition: border-color 0.3s; | |
| } | |
| .form-group input:focus, | |
| .form-group select:focus, | |
| .form-group textarea:focus { | |
| outline: none; | |
| border-color: #667eea; | |
| box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); | |
| } | |
| .form-group textarea { | |
| resize: vertical; | |
| min-height: 80px; | |
| } | |
| .form-actions { | |
| display: flex; | |
| gap: 1rem; | |
| justify-content: flex-end; | |
| margin-top: 2rem; | |
| } | |
| /* Alert Styles */ | |
| .alert-container { | |
| position: fixed; | |
| top: 100px; | |
| right: 20px; | |
| z-index: 3000; | |
| max-width: 400px; | |
| } | |
| .alert { | |
| background: white; | |
| border-radius: 8px; | |
| box-shadow: 0 4px 20px rgba(0,0,0,0.15); | |
| padding: 1rem 1.5rem; | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| border-left: 4px solid #667eea; | |
| animation: slideIn 0.3s ease-out; | |
| } | |
| .alert.success { | |
| border-left-color: #28a745; | |
| } | |
| .alert.error { | |
| border-left-color: #dc3545; | |
| } | |
| .alert.warning { | |
| border-left-color: #ffc107; | |
| } | |
| .alert-icon { | |
| font-size: 1.2rem; | |
| } | |
| .alert.success .alert-icon { | |
| color: #28a745; | |
| } | |
| .alert.error .alert-icon { | |
| color: #dc3545; | |
| } | |
| .alert.warning .alert-icon { | |
| color: #ffc107; | |
| } | |
| .alert-content { | |
| flex: 1; | |
| } | |
| .alert-title { | |
| font-weight: 600; | |
| margin-bottom: 0.25rem; | |
| color: #333; | |
| } | |
| .alert-message { | |
| color: #666; | |
| font-size: 0.9rem; | |
| } | |
| .alert-close { | |
| background: none; | |
| border: none; | |
| font-size: 1.2rem; | |
| cursor: pointer; | |
| color: #666; | |
| padding: 0.25rem; | |
| } | |
| @keyframes slideIn { | |
| from { | |
| transform: translateX(100%); | |
| opacity: 0; | |
| } | |
| to { | |
| transform: translateX(0); | |
| opacity: 1; | |
| } | |
| } | |
| /* Loading Styles */ | |
| .loading-overlay { | |
| display: none; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(255,255,255,0.9); | |
| z-index: 4000; | |
| align-items: center; | |
| justify-content: center; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .loading-overlay.show { | |
| display: flex; | |
| } | |
| .loading-spinner { | |
| width: 40px; | |
| height: 40px; | |
| border: 4px solid #f3f3f3; | |
| border-top: 4px solid #667eea; | |
| border-radius: 50%; | |
| animation: spin 1s linear infinite; | |
| } | |
| @keyframes spin { | |
| 0% { transform: rotate(0deg); } | |
| 100% { transform: rotate(360deg); } | |
| } | |
| .loading-row .loading-spinner { | |
| width: 20px; | |
| height: 20px; | |
| border-width: 2px; | |
| margin-right: 0.5rem; | |
| display: inline-block; | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 768px) { | |
| .dashboard-container { | |
| flex-direction: column; | |
| } | |
| .sidebar { | |
| width: 100%; | |
| height: auto; | |
| position: static; | |
| } | |
| .main-content { | |
| padding: 1rem; | |
| } | |
| .stats-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .server-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .protocols-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .usage-stats { | |
| grid-template-columns: 1fr; | |
| } | |
| .security-cards { | |
| grid-template-columns: 1fr; | |
| } | |
| .client-filters { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .filter-group { | |
| width: 100%; | |
| } | |
| .filter-group select, | |
| .filter-group input { | |
| min-width: auto; | |
| width: 100%; | |
| } | |
| .section-header .btn { | |
| float: none; | |
| margin-top: 1rem; | |
| display: block; | |
| width: 100%; | |
| } | |
| .time-range-selector { | |
| float: none; | |
| margin-top: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .action-buttons { | |
| flex-direction: column; | |
| } | |
| .action-btn { | |
| justify-content: center; | |
| } | |
| .server-actions { | |
| justify-content: center; | |
| } | |
| .security-actions { | |
| justify-content: center; | |
| } | |
| .form-actions { | |
| flex-direction: column; | |
| } | |
| .alert-container { | |
| left: 20px; | |
| right: 20px; | |
| max-width: none; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .dashboard-header { | |
| padding: 1rem; | |
| } | |
| .header-left .logo h1 { | |
| font-size: 1.2rem; | |
| } | |
| .main-content { | |
| padding: 0.5rem; | |
| } | |
| .section-header h2 { | |
| font-size: 1.5rem; | |
| } | |
| .modal-content { | |
| width: 95%; | |
| } | |
| .modal-header, | |
| .modal-body { | |
| padding: 1rem; | |
| } | |
| } | |