:root{--bg:#eef1f8;--card:#fff;--line:#dfe4f0;--head:#f3f6fd;--text:#1f2a44;--muted:#6b7694;--blue:#0d6efd;--cyan:#12b8e6;--green:#198754;--red:#dc3545;--amber:#b7791f;--gray:#6c757d}
*{box-sizing:border-box}
html,body{margin:0;background:transparent;color:var(--text);font:14px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif}
.wrap{max-width:1180px;margin:0 auto;padding:12px;background:var(--bg);border:1px solid var(--line);border-radius:14px}
.pad{padding:24px}.muted{color:var(--muted)}.small{font-size:12px}
h1{font-size:22px;margin:4px 0 2px}h2{font-size:14px;margin:0}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px 12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:14px;overflow:hidden}
.card>.hd{background:var(--head);border-bottom:1px solid var(--line);padding:10px 14px;font-weight:600}
.card>.bd{padding:14px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}
.box{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff}
.box h3{margin:0 0 10px;font-size:13px;letter-spacing:.02em;text-transform:uppercase}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1 1 140px;min-width:0}
label.f{display:block;font-size:13px;margin:0 0 4px}
input[type=text],input[type=number],input[type=datetime-local],input[type=password],select{width:100%;padding:8px 10px;border:1px solid #cfd6e6;border-radius:8px;background:#fff;font:inherit;color:inherit}
input:focus,select:focus{outline:2px solid #b6d0ff;border-color:#8db4ff}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.chk{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:#fafbff;cursor:pointer;user-select:none}
.opt{display:flex;gap:8px;align-items:flex-start;margin:4px 0;cursor:pointer}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:8px;padding:8px 16px;font:inherit;font-weight:600;cursor:pointer;background:var(--blue);color:#fff}
.btn:hover{filter:brightness(.95)}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.cyan{background:var(--cyan)}.btn.light{background:#fff;color:var(--blue);border-color:var(--blue)}
.btn.gray{background:#fff;color:var(--text);border-color:#cfd6e6}.btn.red{background:#fff;color:var(--red);border-color:var(--red)}
.btn.sm{padding:4px 10px;font-size:12px}
table{width:100%;border-collapse:collapse}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid #edf0f7;vertical-align:top}
th{background:var(--head);font-size:12px;color:var(--muted);border-bottom:1px solid var(--line)}
tr.off td{opacity:.5}
.tw{overflow-x:auto}
.badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;color:#fff;background:var(--gray)}
.b-finished{background:var(--green)}.b-failed{background:var(--red)}.b-running,.b-scanning{background:var(--blue)}
.b-queued{background:#8f6fe0}.b-preview{background:var(--amber)}.b-cancelled,.b-expired{background:var(--gray)}
.b-info{background:#5b7bd5}.b-warn{background:var(--amber)}.b-error{background:var(--red)}.b-done{background:var(--green)}.b-skipped{background:var(--gray)}.b-pending{background:#9aa5c0}
.alert{border-radius:8px;padding:10px 12px;margin:0 0 12px;border:1px solid}
.alert.err{background:#fdecee;border-color:#f3b6bd;color:#842029}.alert.warn{background:#fff6e0;border-color:#f1d28a;color:#664d03}
.alert.ok{background:#e8f6ee;border-color:#a8d9bc;color:#0f5132}
.sugg{position:relative}.sugg .list{position:absolute;z-index:20;left:0;right:0;top:100%;background:#fff;border:1px solid #cfd6e6;border-radius:8px;box-shadow:0 8px 24px rgba(20,30,70,.15);max-height:240px;overflow:auto}
.sugg .it{padding:7px 10px;cursor:pointer}.sugg .it:hover{background:var(--head)}
.chip{margin-top:6px;font-size:12px;color:var(--green)}.chip.bad{color:var(--red)}
.tabs{display:flex;gap:6px;margin-bottom:10px}.tab{padding:6px 12px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer}.tab.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.kv{display:flex;flex-wrap:wrap;gap:6px 18px;margin:6px 0 12px}.kv b{font-weight:600}
a{color:var(--blue)}a.g{color:#8a93ab}
details summary{cursor:pointer;color:var(--blue);font-size:12px}pre{margin:6px 0 0;white-space:pre-wrap;word-break:break-word;font-size:12px;background:#f6f8fc;padding:8px;border-radius:6px;max-height:260px;overflow:auto}
.pager{display:flex;gap:8px;align-items:center;margin-top:10px}
.progress{height:8px;background:#e6ebf7;border-radius:6px;overflow:hidden;margin-top:8px}.progress>i{display:block;height:100%;width:30%;background:var(--blue);animation:mv 1.2s infinite ease-in-out}
@keyframes mv{0%{margin-left:-30%}100%{margin-left:100%}}
