:root{--bg: #f6f7f9;--panel: #fff;--border: #e3e6ea;--text: #1a1d21;--muted: #6b7280;--brand: #1f4e79;--brand-fg: #fff;--ok: #157347;--warn: #b45309;--err: #b42318;--run: #1f6feb;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--brand)}button,input,select{font:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:20px;padding:0 20px;height:52px;background:var(--brand);color:var(--brand-fg)}.topbar h1{font-size:16px;margin:0;font-weight:600;letter-spacing:.3px}.topbar nav{display:flex;gap:4px;margin-left:12px}.topbar nav a{color:#cfe0ef;text-decoration:none;padding:6px 12px;border-radius:6px}.topbar nav a.active,.topbar nav a:hover{background:#ffffff26;color:#fff}.topbar .spacer{flex:1}main{padding:20px;max-width:1500px;width:100%;margin:0 auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.panel h2{margin:0 0 12px;font-size:15px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}button{border:1px solid var(--border);background:#fff;color:var(--text);padding:7px 14px;border-radius:6px;cursor:pointer}button:hover:not(:disabled){background:#f0f2f5}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--brand);color:#fff;border-color:var(--brand)}button.primary:hover:not(:disabled){background:#17405f}button.danger{color:var(--err);border-color:#f0c2bd}input[type=text],input[type=password],select{padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:#fff}table{width:100%;border-collapse:collapse}th,td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--border)}th{font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fafbfc}.table-wrap{overflow-x:auto}.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.tag.new{background:#eef0f3;color:var(--muted)}.tag.queued{background:#fef3c7;color:var(--warn)}.tag.processing,.tag.running{background:#dbeafe;color:var(--run)}.tag.done,.tag.succeeded{background:#dcfce7;color:var(--ok)}.tag.failed{background:#fee2e2;color:var(--err)}.tag.cancelled{background:#eef0f3;color:var(--muted)}.tag.NK{background:#e0e7ff;color:#3730a3}.tag.XK{background:#fce7f3;color:#9d174d}.bar{height:6px;background:#e8eaed;border-radius:999px;overflow:hidden;min-width:70px}.bar>i{display:block;height:100%;background:var(--run);transition:width .3s}.muted{color:var(--muted)}.error{background:#fee2e2;color:var(--err);padding:10px 12px;border-radius:6px;margin-bottom:12px}.ok-msg{background:#dcfce7;color:var(--ok);padding:10px 12px;border-radius:6px;margin-bottom:12px}.login-wrap{display:grid;place-items:center;min-height:100vh}.login-box{width:340px}.login-box label{display:block;margin:12px 0 4px;font-weight:600}.login-box input{width:100%}.login-box button{width:100%;margin-top:16px}.stat-list{display:grid;gap:6px;max-width:560px}.stat-list .line{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--border)}.stat-list .line.total{font-weight:700;border-bottom:2px solid var(--text)}.stat-list .line.sub{padding-left:18px;color:var(--muted)}.api-layout{display:grid;grid-template-columns:290px 1fr;gap:16px;align-items:start}@media(max-width:1000px){.api-layout{grid-template-columns:1fr}}.api-list{padding:8px;max-height:calc(100vh - 120px);overflow-y:auto}.api-list .grp{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:700;padding:12px 10px 6px}.api-item{display:flex;gap:8px;align-items:baseline;width:100%;text-align:left;border:none;background:none;padding:8px 10px;border-radius:6px;cursor:pointer}.api-item:hover{background:#f0f2f5}.api-item.sel{background:#e6eef6;font-weight:600}.api-item span.t{flex:1;line-height:1.35}.verb{font-size:10px;font-weight:700;padding:2px 6px;border-radius:4px;letter-spacing:.3px;min-width:46px;text-align:center}.verb.GET{background:#dbeafe;color:#1e40af}.verb.POST{background:#dcfce7;color:#166534}.verb.PATCH{background:#fef3c7;color:#92400e}.verb.DELETE{background:#fee2e2;color:#991b1b}.verb.PUT{background:#ede9fe;color:#5b21b6}.path-line{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;background:#f4f6f8;border:1px solid var(--border);border-radius:6px;padding:8px 10px;overflow-x:auto;white-space:nowrap}.note{background:#eef4fa;border-left:3px solid var(--brand);padding:9px 12px;border-radius:0 6px 6px 0;margin:10px 0;font-size:13px}.note.warn{background:#fff7ed;border-left-color:var(--warn)}.param-grid{display:grid;grid-template-columns:150px 1fr;gap:8px 12px;align-items:center}.param-grid label{font-weight:600;font-size:13px}.param-grid .req{color:var(--err)}.param-grid input,.param-grid select{width:100%}.param-grid .hint{grid-column:2;font-size:12px;color:var(--muted);margin-top:-4px}textarea.body{width:100%;min-height:140px;font-family:ui-monospace,Menlo,monospace;font-size:13px;padding:10px;border:1px solid var(--border);border-radius:6px;resize:vertical}pre.json{background:#fbfcfd;border:1px solid var(--border);border-radius:6px;padding:12px;overflow:auto;max-height:520px;margin:0;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12.5px;line-height:1.55}.j-key{color:#0550ae;font-weight:600}.j-str{color:#0a7c42}.j-num{color:#b45309}.j-bool{color:#7c3aed}.j-null{color:var(--muted)}.resp-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.code-pill{font-weight:700;padding:3px 10px;border-radius:999px;font-size:12px}.code-pill.ok{background:#dcfce7;color:var(--ok)}.code-pill.bad{background:#fee2e2;color:var(--err)}.warn-box{background:#fff7ed;border:1px solid #fed7aa;border-left:4px solid var(--warn);border-radius:6px;padding:12px 14px;margin-bottom:16px;color:#7c2d12}.warn-item{padding:7px 0;border-top:1px dashed #fed7aa;font-size:13px}.warn-item:first-of-type{border-top:none}.issue-note{font-size:12px;color:var(--warn);margin-top:3px;max-width:620px;line-height:1.45}
