.hvac-admin-dashboard { max-width: 1200px; margin: 20px 0; } /* Health Check */ .hvac-health-check { background: #fff; border: 1px solid #ccd0d4; box-shadow: 0 1px 1px rgba(0,0,0,0.04); margin-bottom: 20px; padding: 20px; } .health-status { display: flex; align-items: center; margin: 15px 0; font-size: 16px; } .status-indicator { width: 12px; height: 12px; border-radius: 50%; margin-right: 10px; display: inline-block; } .health-status.healthy .status-indicator { background-color: #46b450; } .health-status.warning .status-indicator { background-color: #ffb900; } .health-status.critical .status-indicator { background-color: #dc3232; } .status-badge { display: inline-block; padding: 3px 8px; border-radius: 3px; font-size: 12px; font-weight: 600; text-transform: uppercase; } .status-ok { background-color: #d4edda; color: #155724; } .status-warning { background-color: #fff3cd; color: #856404; } .status-error { background-color: #f8d7da; color: #721c24; } /* Dashboard Grid */ .hvac-dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin-bottom: 20px; } /* Dashboard Widgets */ .hvac-dashboard-widget { background: #fff; border: 1px solid #ccd0d4; box-shadow: 0 1px 1px rgba(0,0,0,0.04); padding: 20px; } .hvac-dashboard-widget h3 { margin: 0 0 15px 0; padding: 0; font-size: 18px; font-weight: 600; color: #23282d; border-bottom: 1px solid #eee; padding-bottom: 10px; } /* Metrics Grid */ .metrics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 15px; } .metric { text-align: center; padding: 15px 10px; background-color: #f8f9fa; border-radius: 5px; transition: background-color 0.3s ease; } .metric:hover { background-color: #e9ecef; } .metric-value { font-size: 28px; font-weight: 700; color: #0073aa; margin-bottom: 5px; transition: transform 0.3s ease; } .metric-value.updated { animation: pulse 0.6s ease-in-out; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .metric-label { font-size: 12px; color: #666; font-weight: 500; text-transform: uppercase; } /* Maintenance Controls */ .maintenance-controls .maintenance-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 15px; } .maintenance-controls button { width: 100%; padding: 8px 12px; text-align: center; } .maintenance-log { margin-top: 20px; padding: 15px; background-color: #f5f5f5; border: 1px solid #ddd; border-radius: 3px; } .maintenance-log h4 { margin: 0 0 10px 0; font-size: 14px; font-weight: 600; } #maintenance-output { padding: 10px; background-color: #fff; border: 1px solid #ccc; border-radius: 3px; font-family: monospace; font-size: 12px; max-height: 200px; overflow-y: auto; white-space: pre-wrap; word-wrap: break-word; } /* Dashboard Actions */ .hvac-dashboard-actions { background: #fff; border: 1px solid #ccd0d4; box-shadow: 0 1px 1px rgba(0,0,0,0.04); padding: 15px 20px; text-align: center; } .hvac-dashboard-actions button { margin: 0 5px; } /* Responsive adjustments */ @media screen and (max-width: 768px) { .hvac-dashboard-grid { grid-template-columns: 1fr; } .metrics-grid { grid-template-columns: repeat(2, 1fr); } .maintenance-controls .maintenance-actions { grid-template-columns: 1fr; } } /* Loading state */ .loading { opacity: 0.6; pointer-events: none; } .loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; margin: -10px 0 0 -10px; border: 2px solid #f3f3f3; border-top: 2px solid #0073aa; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Notices */ .hvac-admin-dashboard .notice { margin: 10px 0; } /* Focus Management Styles - WCAG 2.1 Compliance */ /* Added for keyboard accessibility and screen reader support */ /* Button Focus Styles */ .hvac-button:focus, .hvac-content .button:focus, .hvac-content button:focus, .hvac-content input[type="submit"]:focus, .hvac-email-submit:focus, .hvac-filter-submit:focus, .hvac-certificate-actions button:focus, .hvac-certificate-actions a:focus { outline: 2px solid #005fcc; outline-offset: 2px; box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.2); border-radius: 4px; } /* Input Focus Styles */ .hvac-form-input:focus, .hvac-content input[type="text"]:focus, .hvac-content input[type="email"]:focus, .hvac-content input[type="password"]:focus, .hvac-content input[type="url"]:focus, .hvac-content textarea:focus, .hvac-content select:focus, .hvac-email-form-row input:focus, .hvac-email-form-row textarea:focus, .hvac-filter-group input:focus, .hvac-filter-group select:focus { outline: 2px solid #005fcc; outline-offset: 2px; border-color: #005fcc; box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.2); } /* Link Focus Styles */ .hvac-content a:focus, .hvac-event-link:focus, .hvac-certificate-link:focus, .hvac-attendee-profile-icon:focus, .hvac-dashboard-nav a:focus, .hvac-email-navigation a:focus { outline: 2px solid #005fcc; outline-offset: 2px; text-decoration: underline; background-color: rgba(0, 95, 204, 0.1); border-radius: 2px; } /* Interactive Element Focus Styles */ .hvac-attendee-checkbox:focus, .hvac-select-all-container input[type="checkbox"]:focus, .hvac-modal-close:focus, .hvac-certificate-table tr:focus { outline: 2px solid #005fcc; outline-offset: 2px; box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.2); } /* High Contrast Mode Support */ @media (prefers-contrast: high) { .hvac-content *:focus { outline: 3px solid #000000; outline-offset: 2px; background-color: #ffff00; color: #000000; } } /* Focus-visible polyfill support */ /* Reset focus for mouse users while preserving keyboard accessibility */ .js-focus-visible :focus:not(.focus-visible) { outline: none; box-shadow: none; } /* Ensure focus is visible for keyboard users */ .js-focus-visible .focus-visible { outline: 2px solid #005fcc; outline-offset: 2px; }