:root{--red:#c8102e;--bg:#f4f5f7;--card:#fff;--line:#e6e8eb;--muted:#8a8f98;--ok:#18a058;--warn:#c27c0e;--err:#d03050;--blue:#1677ff}
*{box-sizing:border-box}
body{margin:0;font-family:"Microsoft YaHei","PingFang SC",sans-serif;background:var(--bg);color:#1f2329;font-size:14px}
a{color:var(--blue);text-decoration:none}
.top{background:var(--red);color:#fff;display:flex;align-items:center;gap:20px;padding:0 20px;height:50px;flex-wrap:wrap}
.top b{font-size:16px}.top a{color:#fff;opacity:.85}.top a.on{opacity:1;font-weight:bold;border-bottom:2px solid #fff;padding-bottom:4px}
.top .sp{flex:1}.badge{background:#fff3;border-radius:10px;padding:2px 10px;font-size:12px}
.badge.mock{background:#ffd666;color:#7a4b00}
main{padding:16px;max-width:1400px;margin:0 auto}
.card{background:var(--card);border-radius:8px;padding:14px 16px;margin-bottom:14px;box-shadow:0 1px 2px #0000000d}
.card h3{margin:0 0 10px;font-size:15px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.kpi .v{font-size:18px;font-weight:bold;margin-top:4px}.muted{color:var(--muted);font-size:12px}
.ok{color:var(--ok)}.warn{color:var(--warn)}.err,.error{color:var(--err)}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
th{background:#fafbfc;font-weight:600;white-space:nowrap}
.scroll{max-height:460px;overflow:auto}
input,select,textarea{font:inherit;padding:6px 8px;border:1px solid #d0d3d9;border-radius:6px}
button{font:inherit;padding:6px 14px;border-radius:6px;border:1px solid var(--red);background:var(--red);color:#fff;cursor:pointer}
button.ghost{background:#fff;color:var(--red)}button:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.log{font-family:Consolas,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-all}
.log .l-error{color:var(--err)}.log .l-warn{color:var(--warn)}.log .l-ok{color:var(--ok)}
.chat .in{color:#333}.chat .out{color:#0b5}.chat .bad{color:var(--err)}
.pill{display:inline-block;border-radius:10px;padding:0 8px;font-size:12px;background:#eef1f5}
.pill.done{background:#e8f7ee;color:var(--ok)}.pill.error,.pill.failed,.pill.unknown{background:#fdecef;color:var(--err)}
.pill.awaiting_confirm,.pill.queued,.pill.dispatched,.pill.scanning,.pill.creating,.pill.screenshotting{background:#fff6e5;color:var(--warn)}
.toast{position:fixed;top:60px;right:20px;background:#333;color:#fff;padding:10px 16px;border-radius:6px;display:none;z-index:9}
img.shot{max-width:100%;border:1px solid var(--line);border-radius:4px;margin-top:8px}
@media(max-width:700px){main{padding:10px}.top{height:auto;padding:8px 12px}}
