:root{--bg:#f6f7f9;--panel:#fff;--text:#1b1f24;--muted:#6a737d;--border:#dfe3e8;--accent:#2f6fdf;--ok:#1f9d55;--warn:#c98a00;--bad:#d64545;--code-bg:#f0f2f5;--spark:#2f6fdf;--spark2:#c2410c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1216;--panel:#171b21;--text:#e6e9ee;--muted:#8b949e;--border:#2a3038;--accent:#6ea0ff;--ok:#3fbf74;--warn:#e0a826;--bad:#f06a6a;--code-bg:#0b0e12;--spark:#6ea0ff;--spark2:#f59e5b}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.45 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}header{display:flex;background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items: center;gap:16px;padding:10px 16px}header nav{display:flex;gap:12px}header a{color:var(--text);text-decoration:none}header nav a.active{color:var(--accent);font-weight:600}.who{color:var(--muted);margin-left:auto}.logout{color:var(--muted)!important}main{max-width:1400px;margin:0 auto;padding:16px}h2{margin:4px 0 12px;font-size:18px}h3{margin:0 0 8px;font-size:15px}.muted{color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:14px;padding:14px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:12px;font-weight:500}tr.click{cursor:pointer}tr.click:hover td{background:var(--code-bg)}.dot{display:inline-block;background:var(--muted);border-radius:50%;width:9px;height:9px}.dot.ok{background:var(--ok)}.dot.bad{background:var(--bad)}.dot.warn{background:var(--warn)}.badge{display:inline-block;border:1px solid var(--border);border-radius:10px;padding:1px 7px;font-size:12px}.badge.ok{color:var(--ok);border-color:var(--ok)}.badge.warn{color:var(--warn);border-color:var(--warn)}.badge.bad{color:var(--bad);border-color:var(--bad)}button,select,input[type=text],input[type=file]{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:5px 10px}button{cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--bad);border-color:var(--bad)}button:disabled{opacity:.5;cursor:default}.row{display:flex;flex-wrap:wrap;align-items: center;gap:8px;margin:6px 0}textarea{color:var(--text);background:var(--code-bg);border:1px solid var(--border);border-radius:6px;width:100%;min-height:220px;padding:8px;font:12.5px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}pre{background:var(--code-bg);border:1px solid var(--border);overflow:auto;white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:420px;padding:8px;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}.kv{display:grid;grid-template-columns:max-content 1fr;gap:3px 14px}.kv dt{color:var(--muted)}.kv dd{overflow-wrap:anywhere;margin:0}.spark{display:block;width:100%;height:56px}.spark-label{display:flex;color:var(--muted);justify-content:space-between;font-size:12px}.errors{color:var(--bad);font-size:12px}a.button{display:inline-block;color:var(--text);text-decoration:none;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:5px 10px}.logs-layout{display:grid;grid-template-columns:minmax(240px,320px)minmax(0,1fr);align-items: start;gap:14px}.logs-side{overflow-y:auto;max-height:calc(100vh - 140px)}.logsrc{display:block;color:var(--text);text-decoration:none;overflow-wrap:anywhere;border-radius:6px;padding:5px 8px}.logsrc:hover{background:var(--code-bg)}.logsrc.active{background:var(--code-bg);box-shadow:inset 3px 0 0 var(--accent)}.logsrc .muted{display:block;font-size:12px}.log-out{min-height:50vh;max-height:calc(100vh - 220px);margin:6px 0 0}@media (max-width:800px){.logs-layout{grid-template-columns:minmax(0,1fr)}.logs-side{max-height:none}}#toast{position:fixed;background:var(--text);color:var(--bg);border-radius:6px;max-width:calc(100vw - 32px);padding:8px 12px;bottom:16px;right:16px}@media (max-width:600px){.who{display:none}main{padding:16px}}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:14px}.tile{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-width:0;padding:12px 14px}.tile .k{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:12px}.tile .v{font-variant-numeric:tabular-nums;margin-top:2px;font-size:24px;font-weight:600}.tile .s{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.fleet-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px}.fleet-charts .panel{min-width:0;margin-bottom:0}.fchart-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.fchart-head .muted{font-variant-numeric:tabular-nums;font-size:12px}.fchart{position:relative;height:170px;margin-top:6px}.fchart svg{display:block;width:100%;height:100%}.fchart .ymax{position:absolute;color:var(--muted);background:var(--panel);border-radius:3px;padding:0 3px;font-size:11px;top:0;left:4px}.fchart .hair{position:absolute;background:var(--text);opacity:.35;pointer-events:none;width:1px;top:0;bottom:0}.fchart .tip{position:absolute;z-index:2;pointer-events:none;background:var(--panel);border:1px solid var(--border);font-variant-numeric:tabular-nums;border-radius:6px;min-width:160px;max-width:260px;padding:6px 8px;font-size:12px;top:8px;box-shadow:0 4px 14px #00000026}.fchart .tip div{display:flex;justify-content:space-between;gap:10px}.fchart-x{display:flex;color:var(--muted);justify-content:space-between;margin-top:2px;font-size:11px}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 14px;font-size:12px}.legend span,.swatch-name{display:inline-flex;align-items: center;gap:6px}.swatch{display:inline-block;border-radius:3px;flex:none;width:10px;height:10px}.meter{display:inline-block;background:var(--code-bg);border:1px solid var(--border);vertical-align:middle;overflow:hidden;border-radius:4px;width:70px;height:7px;margin-right:6px}.meter i{display:block;background:var(--accent);height:100%}.meter.warn i{background:var(--warn)}.meter.bad i{background:var(--bad)}td.num{font-variant-numeric:tabular-nums}td .spark{width:140px;height:28px}@media (max-width:600px){.fleet-charts{grid-template-columns:minmax(0,1fr)}}
