@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg-canvas:#0c1420;--bg-panel:#121d2e;--bg-panel-raised:#17263c;--line:#24374f;--line-soft:#1a2a3f;--text-primary:#eaf1f7;--text-secondary:#8ea0b8;--text-tertiary:#5b6b82;--accent-signal:#ffb454;--accent-current:#4fd1c5;--status-normal:#4ade80;--status-watch:#ffb454;--status-high:#ff8a5c;--status-critical:#ff5c72;--font-ui:"IBM Plex Sans", -apple-system, sans-serif;--font-data:"IBM Plex Mono", ui-monospace, monospace;--fs-xs:.75rem;--fs-sm:.8125rem;--fs-base:.9375rem;--fs-md:1.125rem;--fs-lg:1.5rem;--fs-xl:2.25rem;--sidebar-w:15.5rem;--radius-sm:3px;--radius-md:6px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg-canvas);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--fs-base);-webkit-font-smoothing:antialiased}a{color:inherit}button{cursor:pointer;font-family:inherit}.app-shell{min-height:100vh;display:flex}.main{flex:1;min-width:0;padding:2rem 2.5rem 3rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:1.75rem;display:flex}.page-header h1{font-size:var(--fs-xl);letter-spacing:-.01em;margin:0;font-weight:600}.page-header .subtitle{color:var(--text-secondary);font-size:var(--fs-sm);margin-top:.25rem}.panel{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:var(--radius-md);padding:1.25rem 1.5rem}.panel+.panel{margin-top:1.25rem}.panel-title{font-size:var(--fs-sm);color:var(--text-secondary);margin:0 0 1rem;font-weight:500}.stat-grid{background:var(--line-soft);border:1px solid var(--line-soft);border-radius:var(--radius-md);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;margin-bottom:1.5rem;display:grid;overflow:hidden}.stat-cell{background:var(--bg-panel);padding:1.25rem 1.5rem}.stat-cell .label{color:var(--text-secondary);font-size:var(--fs-xs);margin-bottom:.5rem}.stat-cell .value{font-family:var(--font-data);font-size:var(--fs-xl);font-weight:500;line-height:1}.stat-cell .value.status-watch{color:var(--status-watch)}.stat-cell .value.status-high,.stat-cell .value.status-critical{color:var(--status-critical)}table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}th{text-align:left;color:var(--text-secondary);font-weight:500;font-size:var(--fs-xs);border-bottom:1px solid var(--line);padding:0 .75rem .6rem 0}td{border-bottom:1px solid var(--line-soft);padding:.65rem .75rem .65rem 0}tr:last-child td{border-bottom:none}.mono{font-family:var(--font-data)}.risk-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:.5rem;display:inline-block}.risk-dot.normal{background:var(--status-normal)}.risk-dot.watch{background:var(--status-watch)}.risk-dot.high{background:var(--status-high)}.risk-dot.critical{background:var(--status-critical)}.risk-label{font-size:var(--fs-xs);text-transform:lowercase}.btn{background:var(--accent-current);color:#062a26;border-radius:var(--radius-sm);font-size:var(--fs-sm);border:none;padding:.6rem 1.1rem;font-weight:600;transition:filter .15s}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{border:1px solid var(--line);color:var(--text-primary);background:0 0}.btn-secondary:hover{border-color:var(--text-secondary);filter:none}select,input[type=text],input[type=number],input[type=date]{background:var(--bg-panel-raised);border:1px solid var(--line);color:var(--text-primary);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--fs-sm);padding:.5rem .7rem}.empty-state{color:var(--text-tertiary);font-size:var(--fs-sm);text-align:center;padding:2rem 0}.error-banner{color:var(--status-critical);border-radius:var(--radius-sm);font-size:var(--fs-sm);background:#ff5c721a;border:1px solid #ff5c7259;margin-bottom:1.25rem;padding:.75rem 1rem}.badge{border-radius:var(--radius-sm);font-size:var(--fs-xs);font-family:var(--font-data);padding:.2rem .55rem;display:inline-block}.badge.queued{color:var(--text-secondary);background:#8ea0b826}.badge.processing{color:var(--accent-signal);background:#ffb45426}.badge.completed{color:var(--status-normal);background:#4ade8026}.badge.failed{color:var(--status-critical);background:#ff5c7226}
