body { font-family: system-ui, "PingFang SC", "Microsoft YaHei", sans-serif;
       max-width: 60rem; margin: 0 auto; padding: 1rem; color: #222; }
nav { display: flex; gap: 1rem; padding: .75rem 0; border-bottom: 1px solid #ddd;
      margin-bottom: 1.5rem; }
nav a { text-decoration: none; color: #06c; }
nav a.active { font-weight: 700; color: #222; }
label { display: block; margin-top: .75rem; font-weight: 600; }
input[type=text], input[type=password], textarea {
  width: 100%; padding: .5rem; box-sizing: border-box; margin-top: .25rem; }
button { margin-top: 1rem; padding: .5rem 1.5rem; cursor: pointer; }
#error { display: none; background: #fee; border: 1px solid #c00; color: #900;
         padding: .5rem .75rem; margin-top: 1rem; white-space: pre-wrap; }
#log { background: #111; color: #ddd; padding: .75rem; min-height: 12rem;
       white-space: pre-wrap; font-family: ui-monospace, monospace; overflow-y: auto;
       max-height: 24rem; }
.steps { display: flex; flex-wrap: wrap; gap: .5rem; margin: 1rem 0; }
.steps span { padding: .25rem .6rem; border: 1px solid #ccc; border-radius: 1rem;
              font-size: .85rem; color: #888; }
.steps span.done { border-color: #2a7; color: #2a7; }
.status-success { color: #2a7; } .status-failed { color: #c00; }
.status-running { color: #d80; }
table { width: 100%; border-collapse: collapse; margin-top: 1rem; }
th, td { text-align: left; padding: .5rem; border-bottom: 1px solid #eee; }
tr.clickable { cursor: pointer; } tr.clickable:hover { background: #f6f6f6; }
