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