:root { --fg:#1c1e21; --muted:#6b7280; --line:#e3e5e8; --bg:#f6f7f9; --card:#fff;
        --accent:#2563eb; --ok:#0f7b3f; --err:#b42318; --warn:#9a6700; }
* { box-sizing:border-box; }
body { margin:0; font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif; color:var(--fg); background:var(--bg); }
header { display:flex; align-items:center; gap:1rem; padding:.7rem 1.2rem; background:var(--card); border-bottom:1px solid var(--line); }
.brand { font-weight:700; text-decoration:none; color:var(--fg); letter-spacing:-.01em; }
header nav { margin-left:auto; display:flex; align-items:center; gap:1rem; }
header nav a { color:var(--muted); text-decoration:none; }
header nav a:hover { color:var(--fg); }
.who { color:var(--muted); } .who em { color:var(--accent); font-style:normal; }
main { max-width:1000px; margin:1.5rem auto; padding:0 1.2rem; }
h1 { font-size:1.4rem; margin:.2rem 0 .6rem; } h2 { font-size:1.05rem; margin:1.4rem 0 .5rem; }
.card { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:1rem 1.1rem; margin-bottom:1rem; }
.card.narrow { max-width:360px; margin:3rem auto; }
label { display:block; margin:.4rem 0; color:var(--muted); }
label.inline { display:inline-flex; align-items:center; gap:.3rem; margin-right:.9rem; color:var(--fg); }
label.block { display:block; margin-top:.6rem; }
input[type=text],input[type=password],input[type=email],input:not([type]) { display:block; width:100%; padding:.45rem .55rem; border:1px solid var(--line); border-radius:6px; font:inherit; color:var(--fg); background:#fff; }
input[size] { width:auto; }
fieldset { border:1px solid var(--line); border-radius:6px; padding:.6rem .8rem; margin:.8rem 0; }
legend { color:var(--muted); padding:0 .3rem; }
.row { display:flex; gap:.8rem; align-items:flex-end; flex-wrap:wrap; } .grow { flex:1; }
button { font:inherit; cursor:pointer; }
button.primary,.btn { background:var(--accent); color:#fff; border:0; border-radius:6px; padding:.45rem .9rem; text-decoration:none; display:inline-block; }
button.primary[disabled] { background:var(--muted); cursor:not-allowed; }
button.link { background:none; border:0; color:var(--accent); padding:.2rem; }
table { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--line); border-radius:8px; overflow:hidden; }
th,td { text-align:left; padding:.5rem .7rem; border-bottom:1px solid var(--line); vertical-align:middle; }
th { color:var(--muted); font-weight:600; } tr:last-child td { border-bottom:0; }
td.w50 { width:45%; } .actions { display:flex; gap:.5rem; align-items:center; }
.actions form { display:flex; gap:.3rem; align-items:center; }
.muted { color:var(--muted); } .small { font-size:.85em; }
.flash { padding:.6rem .8rem; border-radius:6px; margin-bottom:.8rem; border:1px solid; }
.flash.error { background:#fef3f2; border-color:#fecdc9; color:var(--err); }
.flash.ok { background:#ecfdf3; border-color:#abefc6; color:var(--ok); }
.pill { display:inline-block; padding:.05rem .5rem; border-radius:999px; background:var(--line); color:var(--muted); font-size:.85em; }
.pill.ok,.pill.done { background:#ecfdf3; color:var(--ok); }
.pill.running,.pill.queued { background:#eff6ff; color:var(--accent); }
.pill.failed { background:#fef3f2; color:var(--err); }
.pill.cancelled { background:#fffaeb; color:var(--warn); }
.bar { height:7px; background:var(--line); border-radius:4px; overflow:hidden; margin-bottom:.25rem; }
.bar span { display:block; height:100%; background:var(--accent); transition:width .4s ease; }
.bar.done span { background:var(--ok); } .bar.failed span { background:var(--err); }
.bar.cancelled span { background:var(--warn); }
code { background:var(--bg); padding:.05rem .3rem; border-radius:4px; }
