:root{--bg:#0d0f12;--p:#12161b;--b:#232a33;--t:#c9d1d9;--d:#6b7785;--a:#3b82f6;--a2:#1e3a6e;--ok:#3fb950;--bad:#f85149;--w:#d29922;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--t)}
a{color:var(--a);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}
header{display:flex;gap:12px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--b);background:#0a0c0f;flex-wrap:wrap}
.brand{font-weight:700;letter-spacing:2px;color:#fff}.brand span{color:var(--a)}
.search{display:flex;gap:4px;flex:1;min-width:260px}.search input{flex:1}
nav{display:flex;gap:10px}nav a{color:var(--d);padding:3px 4px;border-bottom:2px solid transparent}nav a.on{color:#fff;border-color:var(--a)}
input,select,button{background:#0a0c0f;color:var(--t);border:1px solid var(--b);padding:4px 6px;font:inherit;border-radius:2px}
input:focus,select:focus{outline:1px solid var(--a)}
button{cursor:pointer;background:var(--a2);border-color:var(--a)}button.sm{padding:2px 8px;background:#161b22;border-color:var(--b)}button.sm:hover{border-color:var(--a)}
main{padding:8px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}.wide{grid-column:span 3}
.panel{background:var(--p);border:1px solid var(--b);padding:8px;min-width:0}
.panel h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--d);font-weight:600;border-bottom:1px solid var(--b);padding-bottom:4px}
.r{float:right;text-transform:none;letter-spacing:0}.dim{color:var(--d)}
#map{height:300px;background:#0a0c0f}.leaflet-container{background:#0a0c0f;font:inherit}
.bar{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.prog{width:160px;height:6px;background:var(--b)}.prog i{display:block;height:100%;width:0;background:var(--a)}
.tag{padding:1px 6px;border:1px solid var(--b);text-transform:uppercase;font-size:10px}.tag.running{color:var(--a);border-color:var(--a)}.tag.done{color:var(--ok)}.tag.error,.tag.interrupted{color:var(--bad)}.tag.stopped{color:var(--w)}
.opts{position:relative}.opts summary{cursor:pointer;color:var(--d)}.opts label{display:block;margin:4px 0}.opts input{width:70px}
.opts[open]{background:var(--p);border:1px solid var(--b);padding:4px 8px}
.ov{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}.ov div{display:flex;justify-content:space-between;border-bottom:1px dotted var(--b)}.ov b{color:#fff}
.bw{margin:3px 0}.bw .n{display:flex;justify-content:space-between;gap:6px}.bw .n span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw .t{height:7px;background:#0a0c0f}.bw .t i{display:block;height:100%;background:var(--a)}
.donut{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.lg div{display:flex;gap:6px;align-items:center}.lg i{width:9px;height:9px;display:inline-block}
.filters{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px}.filters input{min-width:200px}.filters select{max-width:150px}
.tw{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:3px 6px;border-bottom:1px solid var(--b);white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
th{color:var(--d);cursor:pointer;user-select:none}th.s:after{content:" \25B2"}th.s.d:after{content:" \25BC"}
tbody tr{cursor:pointer}tbody tr:hover{background:#161b22}tr.unr td:first-child{color:var(--w)}
.pager{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:6px}
aside{position:fixed;right:0;top:0;bottom:0;width:min(440px,100%);background:#0a0c0f;border-left:1px solid var(--a);padding:10px;overflow:auto;z-index:1000}
aside h4{margin:10px 0 4px;color:var(--a)}aside dl{display:grid;grid-template-columns:110px 1fr;gap:2px 8px;margin:0}aside dt{color:var(--d)}aside dd{margin:0;word-break:break-all}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}.chips label{border:1px solid var(--b);padding:2px 6px;cursor:pointer}.chips label:has(input:checked){border-color:var(--a);color:#fff;background:var(--a2)}.chips input{display:none}
.ok{color:var(--ok)}.bad{color:var(--bad)}.warn{color:var(--w)}.inl{display:flex;gap:4px;margin:8px 0}
.lk h4{margin:12px 0 4px}.lk table td{white-space:normal;word-break:break-all;max-width:none}
.login{display:grid;place-items:center;height:100vh}.lbox{background:var(--p);border:1px solid var(--b);padding:20px;width:300px;display:grid;gap:8px}.lbox .brand{font-size:18px}.err{color:var(--bad)}
@media(max-width:800px){.grid{grid-template-columns:1fr}.wide{grid-column:auto}header{gap:6px}#map{height:240px}}

.leaflet-tile-pane{filter:invert(1) hue-rotate(205deg) brightness(.85) contrast(.9) saturate(.5)}
.leaflet-control-attribution{background:rgba(10,12,15,.8)!important;color:var(--d)!important}
.live{margin:-2px 0 8px;min-height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.live b{color:var(--a)}.live .h{color:var(--ok)}
.two{display:grid;grid-template-columns:1fr 280px;gap:8px;align-items:start}.side label{display:flex;gap:6px;align-items:center;padding:2px 0;cursor:pointer}.side label span.dim{margin-left:auto}
@media(max-width:800px){.two{grid-template-columns:1fr}}

.fd div{padding:2px 0}.fd .info{color:var(--d)}.fd b{display:inline-block;min-width:44px;text-transform:uppercase;font-size:10px}
h4.sub{margin:10px 0 4px;color:var(--a);font-size:11px;font-weight:600}
.wrap td{white-space:normal;word-break:break-all;max-width:none}.wrap tbody tr{cursor:default}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--b);margin:4px 0 8px;flex-wrap:wrap}.tabs a{padding:5px 14px;color:var(--d);border:1px solid transparent;border-bottom:none}.tabs a:hover{text-decoration:none;color:#fff}.tabs a.on{color:#fff;background:var(--p);border-color:var(--b);box-shadow:inset 0 -2px 0 var(--a)}
.pane[hidden]{display:none}.src{color:var(--d);font-size:10px;text-transform:uppercase}
pre.raw{background:#0a0c0f;border:1px solid var(--b);padding:8px;overflow:auto;max-height:420px;white-space:pre-wrap;word-break:break-all;margin:6px 0 0}
.kv{display:grid;grid-template-columns:150px 1fr;gap:3px 12px;margin:0 0 8px}.kv dt{color:var(--d)}.kv dd{margin:0;word-break:break-all}
#rchips a{border:1px solid var(--b);padding:2px 8px;color:var(--t)}#rchips a.on{border-color:var(--a);background:var(--a2);color:#fff}#rchips a:hover{text-decoration:none;border-color:var(--a)}
