97 lines
3.3 KiB
CSS
97 lines
3.3 KiB
CSS
/* Base layout ------------------------------------------------------- */
|
|
:root {
|
|
color-scheme: light;
|
|
--border: #d1d5db;
|
|
--text: #1f2937;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
color: var(--text);
|
|
background: #f9fafb;
|
|
}
|
|
.app-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 0.75rem 1rem;
|
|
background: #111827;
|
|
color: #fff;
|
|
}
|
|
.app-nav a { color: #fff; margin-right: 1rem; text-decoration: none; }
|
|
.app-nav a:hover, .app-nav a:focus { text-decoration: underline; }
|
|
.app-session { display: flex; align-items: center; gap: 0.5rem; }
|
|
.app-session a { color: #fff; }
|
|
.app-main { padding: 1rem; max-width: 960px; margin: 0 auto; }
|
|
|
|
.login-form, .zone-controls { display: flex; flex-direction: column; gap: 0.5rem; max-width: 320px; }
|
|
.zone-controls { flex-direction: row; align-items: end; flex-wrap: wrap; max-width: none; }
|
|
.zone-controls label { display: flex; flex-direction: column; font-size: 0.85rem; }
|
|
.form-error { color: #991b1b; }
|
|
|
|
#zone-canvas {
|
|
border: 1px solid var(--border);
|
|
background: #111827 center / contain no-repeat;
|
|
cursor: crosshair;
|
|
max-width: 100%;
|
|
}
|
|
|
|
button {
|
|
cursor: pointer;
|
|
padding: 0.4rem 0.8rem;
|
|
border: 1px solid var(--border);
|
|
border-radius: 4px;
|
|
background: #fff;
|
|
}
|
|
button:hover { background: #f3f4f6; }
|
|
|
|
/* Event list ---------------------------------------------------------- */
|
|
.event-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
padding: 0.6rem 0.75rem;
|
|
border: 1px solid var(--border);
|
|
border-radius: 6px;
|
|
margin-bottom: 0.5rem;
|
|
background: #fff;
|
|
}
|
|
.event-row.is-unacknowledged { border-left: 4px solid #4b5563; }
|
|
.event-meta { flex: 1; }
|
|
.event-meta .event-type { font-weight: 600; }
|
|
.event-meta .event-time { color: #4b5563; font-size: 0.85rem; }
|
|
|
|
/* Severity badges (NF9): color-blind-safe — icon + text label + color.
|
|
Never rely on color alone. Pastel background + dark text pairs are
|
|
chosen for WCAG-AA contrast (>= 4.5:1 for normal-size text). */
|
|
.severity-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.35rem;
|
|
padding: 0.15rem 0.5rem;
|
|
border-radius: 999px;
|
|
font-weight: 700;
|
|
font-size: 0.85rem;
|
|
white-space: nowrap;
|
|
}
|
|
.severity-badge .icon { font-size: 1rem; line-height: 1; }
|
|
|
|
.sev-critical { background: #fee2e2; color: #991b1b; border: 1px solid #991b1b; }
|
|
.sev-high { background: #ffedd5; color: #9a3412; border: 1px solid #9a3412; }
|
|
.sev-warning { background: #fef9c3; color: #854d0e; border: 1px solid #854d0e; }
|
|
.sev-info { background: #e5e7eb; color: #374151; border: 1px solid #374151; }
|
|
|
|
.ack-btn { margin-left: auto; }
|
|
.ack-btn:disabled { opacity: 0.6; cursor: default; }
|
|
|
|
/* Dashboard row -> incident detail link (keyboard-focusable affordance). */
|
|
.event-detail-link { color: inherit; text-decoration: none; }
|
|
.event-detail-link:hover,
|
|
.event-detail-link:focus-visible { text-decoration: underline; }
|
|
|
|
/* Incident detail view (event_detail.php + detail.js). */
|
|
.detail-row { margin: 0.25rem 0; }
|
|
.detail-row .detail-label { color: #4b5563; font-weight: 600; }
|
|
#event-detail-snapshots { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1rem; }
|
|
.detail-snapshot { max-width: 100%; height: auto; border: 1px solid #d1d5db; border-radius: 4px; }
|