/* ========================================================================= * Help Requests Page Styles * ========================================================================= */ .help-requests-page { padding: 0; } /* ---- Stats row ---- */ .hr-stats { display: flex; gap: 16px; margin-bottom: 24px; flex-wrap: wrap; } .hr-stats .stat-card { flex: 1 1 120px; min-width: 120px; background: var(--card-bg, #161b22); border: 1px solid var(--border-color, #30363d); border-radius: 12px; padding: 16px 20px; text-align: center; } .hr-stats .stat-value { display: block; font-size: 28px; font-weight: 700; color: #e6edf3; } .hr-stats .stat-label { display: block; font-size: 12px; color: #8b949e; margin-top: 4px; text-transform: uppercase; letter-spacing: 0.5px; } .hr-stats .stat-pending .stat-value { color: #d29922; } .hr-stats .stat-accepted .stat-value { color: #3b82f6; } .hr-stats .stat-resolved .stat-value { color: #3fb950; } /* ---- Filters ---- */ .help-requests-page .page-filters { margin-bottom: 20px; } .help-requests-page .filter-buttons { display: flex; gap: 8px; flex-wrap: wrap; } .help-requests-page .filter-btn { padding: 6px 16px; border-radius: 20px; font-size: 13px; background: var(--card-bg, #161b22); border: 1px solid var(--border-color, #30363d); color: #8b949e; cursor: pointer; transition: all 0.15s; } .help-requests-page .filter-btn:hover { color: #e6edf3; border-color: #484f58; } .help-requests-page .filter-btn.active { background: #3b82f620; border-color: #3b82f6; color: #3b82f6; } /* ---- List ---- */ .hr-list { display: flex; flex-direction: column; gap: 12px; } .hr-card { background: var(--card-bg, #161b22); border: 1px solid var(--border-color, #30363d); border-radius: 12px; padding: 16px 20px; display: flex; align-items: flex-start; gap: 16px; transition: border-color 0.15s; } .hr-card:hover { border-color: #484f58; } .hr-card.status-pending { border-left: 3px solid #d29922; } .hr-card.status-accepted { border-left: 3px solid #3b82f6; } .hr-card.status-resolved { border-left: 3px solid #3fb950; opacity: 0.7; } .hr-card-body { flex: 1; min-width: 0; } .hr-card-header { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; } .hr-device-id { font-weight: 600; color: #e6edf3; font-family: 'JetBrains Mono', monospace; font-size: 14px; } .hr-hostname { color: #8b949e; font-size: 13px; } .hr-status-badge { font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 12px; text-transform: uppercase; letter-spacing: 0.5px; margin-left: auto; } .hr-status-badge.pending { background: #d2992220; color: #d29922; } .hr-status-badge.accepted { background: #3b82f620; color: #3b82f6; } .hr-status-badge.resolved { background: #3fb95020; color: #3fb950; } .hr-message { color: #c9d1d9; font-size: 14px; line-height: 1.5; margin-bottom: 10px; word-break: break-word; } .hr-meta { display: flex; align-items: center; gap: 16px; font-size: 12px; color: #8b949e; } .hr-card-actions { display: flex; gap: 8px; flex-shrink: 0; align-self: center; } .hr-card-actions .btn { padding: 6px 14px; font-size: 12px; border-radius: 8px; border: 1px solid var(--border-color, #30363d); background: var(--card-bg, #161b22); color: #c9d1d9; cursor: pointer; transition: all 0.15s; } .hr-card-actions .btn:hover { border-color: #484f58; color: #e6edf3; } .hr-card-actions .btn-accept { background: #3b82f615; border-color: #3b82f640; color: #3b82f6; } .hr-card-actions .btn-accept:hover { background: #3b82f630; } .hr-card-actions .btn-resolve { background: #3fb95015; border-color: #3fb95040; color: #3fb950; } .hr-card-actions .btn-resolve:hover { background: #3fb95030; } .hr-card-actions .btn-connect { background: #8b5cf615; border-color: #8b5cf640; color: #8b5cf6; } .hr-card-actions .btn-connect:hover { background: #8b5cf630; } /* ---- Empty state ---- */ .hr-list .empty-state { text-align: center; padding: 60px 20px; color: #8b949e; } .hr-list .empty-state .material-icons { font-size: 48px; margin-bottom: 12px; opacity: 0.5; } /* ---- Sound notification dot ---- */ .hr-notification-dot { width: 8px; height: 8px; border-radius: 50%; background: #d29922; animation: pulse-dot 1.5s infinite; display: inline-block; margin-right: 6px; } @keyframes pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.3); } } /* ---- Responsive ---- */ @media (max-width: 768px) { .hr-stats { gap: 8px; } .hr-stats .stat-card { min-width: 80px; padding: 12px; } .hr-card { flex-direction: column; } .hr-card-actions { align-self: flex-end; } }