:root{--paper: #eef0f3;--surface: #ffffff;--surface-2: #f6f7f9;--ink: #1b1f24;--muted: #5d6673;--line: #d7dce3;--line-strong: #b9c1cb;--ok: #2d7d46;--ok-soft: #e3f3e8;--bad: #b3261e;--bad-soft: #fbe9e7;--warn: #9a6a00;--warn-soft: #fff3d6;--off: #8a939e;--accent: #2457a8;--accent-soft: #e7eefb;--focus: #2457a8;--radius: 6px;--side-w: 440px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--paper: #14171b;--surface: #1c2026;--surface-2: #222730;--ink: #e8eaed;--muted: #9aa3ae;--line: #2d343d;--line-strong: #434c57;--ok: #6cc08a;--ok-soft: #1b2f22;--bad: #f28b82;--bad-soft: #3a1f1d;--warn: #e6b94a;--warn-soft: #3a2f12;--off: #6b7682;--accent: #82a8ea;--accent-soft: #1c2638;--focus: #82a8ea}}:root[data-theme=dark]{--paper: #14171b;--surface: #1c2026;--surface-2: #222730;--ink: #e8eaed;--muted: #9aa3ae;--line: #2d343d;--line-strong: #434c57;--ok: #6cc08a;--ok-soft: #1b2f22;--bad: #f28b82;--bad-soft: #3a1f1d;--warn: #e6b94a;--warn-soft: #3a2f12;--off: #6b7682;--accent: #82a8ea;--accent-soft: #1c2638;--focus: #82a8ea}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--paper);color:var(--ink);font-family:Instrument Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45;display:flex;flex-direction:column;overflow:hidden}#root{flex:1;display:flex;flex-direction:column;min-height:0}a{color:inherit}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:0 .25em}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.muted{color:var(--muted)}.ok{color:var(--ok)}.bad{color:var(--bad)}.warn{color:var(--warn)}.small{font-size:12px}.top{display:flex;align-items:center;gap:14px;padding:0 16px;height:52px;background:var(--surface);border-bottom:1px solid var(--line);flex:0 0 auto;flex-wrap:wrap}.brand{font-weight:700;text-decoration:none;letter-spacing:-.01em}.host{color:var(--muted);font-size:12px;display:inline-flex;gap:6px;align-items:center}.pick{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;min-width:0}.pick select,.filter{font:inherit;font-size:14px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:5px 10px;max-width:360px}.pick select{font-weight:600;padding-right:30px;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px) 55%,calc(100% - 10px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.pick select:hover,.filter:hover{border-color:var(--line-strong)}.filter{width:240px}.spacer{flex:1}.btn{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:5px 12px;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--line-strong)}.btn:disabled{opacity:.6;cursor:default}.user{font-size:13px;color:var(--muted);display:inline-flex;gap:6px;align-items:center}.tag{font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;padding:1px 6px;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.tag.soft{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.body{flex:1;display:flex;min-height:0}.fleet{flex:1;overflow:auto;padding:16px 20px 40px;min-width:0}.side{width:var(--side-w);flex:0 0 auto;overflow:auto;background:var(--surface);border-left:1px solid var(--line);padding:16px 18px 40px}@media (max-width: 960px){body{overflow:auto}.body{flex-direction:column}.fleet,.side{overflow:visible}.side{width:auto;border-left:0;border-top:1px solid var(--line)}.top{height:auto;padding:8px 16px}}.strip{display:flex;flex-wrap:wrap;gap:14px;align-items:center;color:var(--muted);font-size:13px;margin-bottom:14px}.strip b{color:var(--ink);font-weight:600}.strip .ok b{color:var(--ok)}.strip .bad b{color:var(--bad)}.strip .warn b{color:var(--warn)}.strip .sep{width:1px;height:18px;background:var(--line)}.toggle{display:inline-flex;gap:6px;align-items:center;cursor:pointer}.notices{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.notice{background:var(--warn-soft);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent);border-radius:var(--radius);padding:6px 10px;font-size:13px}.empty{color:var(--muted);max-width:60ch}.group{margin-bottom:22px}.group h2{font-size:15px;font-weight:600;margin:0 0 10px;display:flex;gap:10px;align-items:baseline}.group h2 .n{color:var(--muted);font-weight:500}.group h2 .hint{color:var(--muted);font-weight:400;font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px;transition:opacity .15s,box-shadow .15s}.card.hi{box-shadow:0 0 0 2px var(--accent)}.card.dim{opacity:.4}.card header{display:flex;align-items:center;gap:8px;min-width:0}.card .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .id{color:var(--muted);font-size:12px}.card .scope{font-size:12px;color:var(--muted)}.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;background:var(--off)}.dot.online{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 25%,transparent)}.dot.stale{background:var(--warn)}.dot.never_contacted{background:transparent;border:2px dashed var(--off)}.dot.paused{background:transparent;border:2px solid var(--off)}.tags{display:flex;flex-wrap:wrap;gap:4px;font-size:12px}.chip{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:1px 6px}.chip.soft{background:var(--surface-2);color:var(--muted);border:1px solid var(--line);font-family:inherit}.chip.soft.off{color:var(--warn)}.meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--muted)}.meta .flag{color:var(--warn)}.meta .flag.warn{text-decoration:underline dotted}.note{font-size:12px;color:var(--muted);font-style:italic}.verdict{margin:4px -12px -10px;padding:8px 12px;border-top:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);font-size:13px}.verdict.v-yes{background:var(--ok-soft)}.verdict.v-no{background:var(--bad-soft)}.verdict.v-unknown{background:var(--warn-soft)}.verdict .line{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.verdict.v-yes strong{color:var(--ok)}.verdict.v-no strong{color:var(--bad)}.verdict.v-unknown strong{color:var(--warn)}.verdict .jobs-n{margin-left:auto;color:var(--muted);font-size:12px}.verdict ul{margin:4px 0 0;padding-left:18px}.verdict .reasons{color:var(--ink)}.verdict .caveats{color:var(--muted)}.card.v-no{border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}.card.v-yes{border-color:color-mix(in srgb,var(--ok) 35%,var(--line))}.side h2{font-size:16px;margin:0 0 6px;font-weight:600}.side h3{font-size:13px;margin:18px 0 6px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.side p{margin:0 0 8px}.side .desc{color:var(--muted)}.rows{display:flex;flex-direction:column;gap:2px;font-size:13px}.row{display:flex;gap:10px;padding:4px 0;border-bottom:1px dashed var(--line)}.row .k{color:var(--muted);width:120px;flex:0 0 auto}.rules{padding-left:18px;margin:0;font-size:13px}.rules li{margin-bottom:4px}table.jobs{width:100%;border-collapse:collapse;font-size:13px}table.jobs th{text-align:left;font-weight:600;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:4px 6px;border-bottom:1px solid var(--line)}table.jobs td{padding:6px;border-bottom:1px solid var(--line);vertical-align:top}table.jobs tr{cursor:pointer}table.jobs tbody tr:hover{background:var(--surface-2)}table.jobs tr.sel{background:var(--accent-soft)}table.jobs tr.none td.job{color:var(--bad)}table.jobs tr.waiting td.job{color:var(--warn)}table.jobs td.job{font-weight:600;white-space:nowrap}table.jobs td.job .tag{margin-left:6px}table.jobs .who{display:flex;flex-wrap:wrap;gap:4px}.chip.r{font-family:inherit;background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-left:3px solid var(--off)}.chip.r.online{border-left-color:var(--ok)}.chip.r.stale{border-left-color:var(--warn)}.chip.r.unknown{border-style:dashed}.picker{position:relative;min-width:300px}.picker input{width:100%;font:inherit;font-size:14px;font-weight:600;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:5px 28px 5px 10px}.picker input::placeholder{color:var(--muted);font-weight:500}.picker.open input{font-weight:500}.picker input:hover{border-color:var(--line-strong)}.picker .clear{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);font-size:16px;line-height:1;padding:2px 6px;cursor:pointer;border-radius:4px}.picker .clear:hover{color:var(--ink);background:var(--line)}.picker .menu{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:100%;width:max-content;max-width:min(640px,90vw);max-height:60vh;overflow:auto;margin:0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 8px 24px #0000002e}.picker .menu li{padding:5px 8px;border-radius:4px;cursor:pointer;display:flex;gap:0 8px;align-items:baseline;flex-wrap:wrap;font-size:13px}.picker .menu li.cur{background:var(--accent-soft)}.picker .menu li.sel .nm{color:var(--accent)}.picker .menu li .ns{color:var(--muted)}.picker .menu li .nm{font-weight:600}.picker .menu li .d{color:var(--muted);font-size:12px;flex-basis:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker .menu li.none{color:var(--muted);cursor:default;font-size:12px}.facets{display:flex;flex-wrap:wrap;gap:6px 24px;margin:-4px 0 14px}.facet{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px}.facet .fl{color:var(--muted);margin-right:2px}.fchip{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:2px 10px;cursor:pointer;font-size:13px}.fchip .n{color:var(--muted);font-size:12px;margin-left:2px}.fchip:hover{border-color:var(--line-strong)}.fchip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.fchip.on .n{color:inherit}.fclear{background:none;border:0;color:var(--muted);cursor:pointer;font-size:12px;text-decoration:underline dotted;padding:0 4px}.meta .exec{color:var(--ink);font-weight:500}.user img{border-radius:50%;vertical-align:middle}.signout{color:var(--muted);font-size:12px;margin-left:4px}.login{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 16px}.login .box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px 28px 20px;max-width:460px}.login h1{font-size:20px;margin:0 0 10px}.login p{margin:0 0 14px}.btn.primary{display:inline-block;text-decoration:none;background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600;padding:8px 16px;margin-bottom:14px}.btn.primary:hover{filter:brightness(1.08)}a.btn{text-decoration:none}.reqpage{flex:1;min-height:0;overflow:auto;padding:22px 24px 48px;display:grid;grid-template-columns:minmax(320px,440px) minmax(0,760px);grid-template-rows:auto 1fr;gap:6px 32px;justify-content:center;align-content:start}.reqpage .intro{grid-column:1 / -1}.reqpage h1{font-size:20px;margin:0 0 6px;letter-spacing:-.01em}.reqpage .intro p{margin:0 0 10px;max-width:86ch}.reqpage .col{min-width:0}.reqpage h2{font-size:13px;margin:8px 0;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.reqpage h2 .n{font-weight:500;margin-left:4px}.reqpage h2 .fclear{margin-left:8px;text-transform:none;letter-spacing:0}.reqpage h2 .toggle{margin-left:10px;text-transform:none;letter-spacing:0;font-weight:400}@media (max-width: 960px){.reqpage{grid-template-columns:minmax(0,1fr);overflow:visible;padding:16px}}.reqform{display:flex;flex-direction:column;gap:8px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.reqform label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.reqform label.check{flex-direction:row;align-items:center;gap:6px;color:var(--ink);font-size:13px}.reqform input,.reqform select,.reqform textarea{font:inherit;font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:4px;padding:5px 8px}.reqform input[type=number]{width:90px}.reqform .pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reqform p{margin:0}.reqform details{font-size:13px}.reqform details label{margin-top:6px}.reqform .actions{display:flex;justify-content:flex-end}.reqform .btn.primary{margin-bottom:0;padding:6px 14px}.notice.bad{background:var(--bad-soft);color:var(--bad);border-color:color-mix(in srgb,var(--bad) 30%,transparent);margin-top:10px}.notice.good{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 30%,transparent);margin-top:10px}.notice ul{margin:6px 0 0;padding-left:18px}.reqlist{display:flex;flex-direction:column;gap:8px}.req{background:var(--surface-2);border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius);padding:8px 10px;font-size:13px}.req.pending{border-left-color:var(--warn)}.req.approved{border-left-color:var(--accent)}.req.merged{border-left-color:var(--ok)}.req.closed{border-left-color:var(--off);opacity:.75}.req header{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:4px}.req header a{font-weight:600}.badge{font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;padding:1px 7px;border-radius:10px}.badge.pending{background:var(--warn-soft);color:var(--warn)}.badge.approved{background:var(--accent-soft);color:var(--accent)}.badge.merged{background:var(--ok-soft);color:var(--ok)}.badge.closed{background:var(--surface);color:var(--muted);border:1px solid var(--line)}.req .what code{font-size:12px}.req .meta{margin-top:4px;font-size:12px;color:var(--muted)}.req.mine{background:var(--surface)}
