@charset "UTF-8";:root{--page: #020617;--surface: #0f172a;--surface-2: #16213a;--ink: #f1f5f9;--ink-2: #94a3b8;--muted: #64748b;--grid: #1e293b;--baseline: #334155;--accent: #3987e5;--series-1: #3987e5;--series-2: #199e70;--series-3: #c98500;--series-4: #9085e9;--good: #0ca30c;--warn: #fab219;--serious: #ec835a;--critical: #d03b3b;--radius: 10px}*{box-sizing:border-box;margin:0}html,body{height:100%}body{background:var(--page);color:var(--ink);font:14px/1.55 system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}code,.mono{font-family:ui-monospace,Consolas,Cascadia Mono,monospace;font-size:.92em}.app{display:grid;grid-template-columns:232px 1fr;grid-template-rows:52px 1fr;min-height:100vh}.topbar{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--grid)}.brand{font-weight:700;letter-spacing:.02em}.brand small{color:var(--ink-2);font-weight:500;margin-left:8px}.topbar .env{margin-left:auto;display:flex;gap:10px;align-items:center;color:var(--ink-2);font-size:12.5px}.pill{padding:2px 10px;border-radius:999px;border:1px solid var(--baseline);font-size:12px;color:var(--ink-2);background:var(--surface-2)}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:8px;border:1px solid var(--baseline);background:var(--surface-2);color:var(--ink);cursor:pointer}.icon-btn:hover{border-color:var(--muted)}.sidebar{background:var(--surface);border-right:1px solid var(--grid);padding:14px 10px}.nav h6{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:14px 10px 4px}.nav a{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:7px;color:var(--ink-2);cursor:pointer;transition:background .18s,color .18s}.nav a:hover{background:var(--surface-2);color:var(--ink)}.nav a.active{background:#3987e524;color:var(--ink)}.nav a.active .ic{color:var(--accent)}.nav .ic{width:16px;height:16px;flex:none;color:var(--muted)}main{padding:20px 24px 40px;max-width:1240px}.crumbs{color:var(--muted);font-size:12.5px;margin-bottom:6px}.crumbs b{color:var(--ink-2);font-weight:500}.crumbs a{color:var(--accent)}.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head h1{font-size:20px;font-weight:650}.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.note{color:var(--ink-2);font-size:13px;max-width:72ch}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:8px;border:1px solid var(--baseline);background:var(--surface-2);color:var(--ink);font:inherit;font-size:13px;cursor:pointer;transition:background .18s,border-color .18s}.btn:hover{border-color:var(--muted)}.btn:focus-visible,.nav a:focus-visible,.icon-btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#06101f;font-weight:600}.btn.primary:hover{background:#5598e7}.btn.danger{border-color:var(--critical);color:#f3a6a6}.btn[disabled]{opacity:.45;cursor:not-allowed}label{display:block;font-size:12px;color:var(--ink-2);margin:10px 0 4px}input,select,textarea{width:100%;padding:7px 10px;border-radius:7px;border:1px solid var(--baseline);background:var(--page);color:var(--ink);font:inherit;font-size:13px}input.inline{width:auto}.grid{display:grid;gap:14px}.cols-2{grid-template-columns:1fr 1fr}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-4{grid-template-columns:repeat(4,1fr)}.card{background:var(--surface);border:1px solid var(--grid);border-radius:var(--radius);padding:16px}.card>h3{font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:10px}.card .sub,p.sub{font-size:12px;color:var(--muted)}.kpi .val{font-size:26px;font-weight:650;margin:2px 0}.kpi .delta{font-size:12px}.kpi .delta.up{color:var(--good)}.kpi .delta.bad{color:var(--critical)}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--baseline)}td{padding:8px 10px;border-bottom:1px solid var(--grid);vertical-align:top}tr.row{cursor:pointer;transition:background .15s}tr.row:hover{background:var(--surface-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto}.chip{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:550;border:1px solid var(--baseline);color:var(--ink-2);white-space:nowrap}.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex:none}.chip.good{color:#7ed87e}.chip.good .dot{background:var(--good)}.chip.warn{color:#f8ce6b}.chip.warn .dot{background:var(--warn)}.chip.serious{color:#f3ae91}.chip.serious .dot{background:var(--serious)}.chip.crit{color:#f3a6a6}.chip.crit .dot{background:var(--critical)}.chip.info{color:#86b6ef}.chip.info .dot{background:var(--accent)}.steps{display:flex;align-items:center;gap:0;flex-wrap:wrap}.step{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:12.5px;color:var(--muted)}.step .n{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--baseline);display:grid;place-items:center;font-size:11px;color:var(--ink-2);flex:none}.step.done{color:var(--ink-2)}.step.done .n{background:var(--good);border-color:var(--good);color:#06101f}.step.now{color:var(--ink);font-weight:600}.step.now .n{border-color:var(--accent);color:var(--accent)}.step+.step:before{content:"";width:26px;height:1px;background:var(--baseline);margin-right:12px}.chart{width:100%;height:auto;display:block}.chart text{font:11px system-ui,-apple-system,Segoe UI,sans-serif;fill:var(--muted);font-variant-numeric:tabular-nums}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-2);margin-top:8px}.legend .key{display:inline-flex;align-items:center;gap:6px}.legend .sw{width:10px;height:10px;border-radius:3px;flex:none}.meter{height:6px;border-radius:4px;background:var(--grid);overflow:hidden}.meter>i{display:block;height:100%;border-radius:4px;background:var(--series-1)}.kv{display:grid;grid-template-columns:150px 1fr;gap:4px 12px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{color:var(--ink)}.banner{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--baseline);border-left:3px solid var(--accent);border-radius:8px;padding:10px 14px;background:var(--surface);font-size:13px;color:var(--ink-2);margin-bottom:16px}.banner.warn{border-left-color:var(--warn)}.banner.crit{border-left-color:var(--critical)}.state{display:grid;place-items:center;gap:10px;text-align:center;padding:40px 20px;color:var(--ink-2)}.state .state-icon{width:34px;height:34px;color:var(--muted)}.state h4{font-size:15px;font-weight:600;color:var(--ink)}.state p{font-size:13px;color:var(--muted);max-width:52ch}.spinner{width:22px;height:22px;border:2.5px solid var(--grid);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mt-0{margin-top:0}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-14{margin-top:14px}.mb-14{margin-bottom:14px}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.form-actions{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}@media(max-width:980px){.app{grid-template-columns:1fr}.sidebar{display:none}.cols-2,.cols-3,.cols-4{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}:root[data-theme=light]{--page: #f1f5f9;--surface: #ffffff;--surface-2: #f1f5f9;--ink: #0f172a;--ink-2: #475569;--muted: #64748b;--grid: #e2e8f0;--baseline: #cbd5e1;--accent: #2a78d6;--series-1: #2a78d6;--series-2: #1baf7a;--series-3: #eda100;--series-4: #4a3aa7}:root[data-theme=light] .chip.good{color:#0a6b0a}:root[data-theme=light] .chip.warn{color:#8a5a00}:root[data-theme=light] .chip.serious{color:#b03a12}:root[data-theme=light] .chip.crit{color:#b91c1c}:root[data-theme=light] .chip.info{color:#1c5cab}:root[data-theme=light] .kpi .delta.up{color:#006300}:root[data-theme=light] .kpi .delta.bad{color:#b91c1c}:root[data-theme=light] .btn.primary{color:#fff}:root[data-theme=light] .btn.primary:hover{background:#1c5cab}:root[data-theme=light] .nav a.active{background:#2a78d61f}
