:root { --ink:#12203c; --muted:#6b7891; --line:#dfe4ec; --bg:#f7f8fb; --accent:#1f5fbf; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--ink);
       font:15px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif; }
.bar { background:var(--ink); padding:12px 20px; }
.brand { color:#fff; font-weight:700; letter-spacing:.02em; text-decoration:none; }
main { max-width:900px; margin:0 auto; padding:24px 20px 60px; }
h1 { font-size:22px; margin:0 0 4px; }
.sub { color:var(--muted); margin:0 0 20px; font-size:13px; }
.hint { color:var(--muted); font-size:13px; }
table { width:100%; border-collapse:collapse; background:#fff;
        border:1px solid var(--line); border-radius:8px; overflow:hidden; }
th,td { text-align:left; padding:8px 12px; border-bottom:1px solid var(--line); font-size:14px; }
th { background:#f0f3f8; font-size:12px; text-transform:uppercase; color:var(--muted); }
tr:last-child td { border-bottom:none; }
td.num { font-variant-numeric:tabular-nums; width:52px; color:var(--muted); }
.buildform { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
select,button { padding:8px 10px; border:1px solid var(--line); border-radius:6px;
                background:#fff; font:inherit; }
button { background:var(--accent); color:#fff; border-color:var(--accent); cursor:pointer; }
.teamlist td a { font-weight:600; text-decoration:none; display:block; }
.teamlist td a:hover { text-decoration:underline; }
.progress { font-variant-numeric:tabular-nums; }
td form { margin:0; }
td button { padding:4px 10px; font-size:12px; }
td button[disabled] { background:var(--line); border-color:var(--line);
                      color:var(--muted); cursor:not-allowed; }
.status-queued { color:var(--muted); font-weight:600; }
.error { color:#a11; } .warn { color:#a60; }
.status-complete { color:#186a3b; font-weight:600; }
.status-running,.status-pending { color:var(--accent); font-weight:600; }
.status-failed { color:#a11; font-weight:600; }
.affiliates { margin-top:18px; }
.affiliates summary { cursor:pointer; color:var(--muted); font-size:13px; padding:6px 0; }
a { color:var(--accent); }

/* login */
body.login { display:flex; align-items:center; justify-content:center; min-height:100vh; }
.card { background:#fff; border:1px solid var(--line); border-radius:10px; padding:28px;
        display:flex; flex-direction:column; gap:10px; min-width:280px; }
.card h1 { font-size:18px; margin:0 0 6px; }
.card input { padding:9px 10px; border:1px solid var(--line); border-radius:6px; font:inherit; }
.bar { display:flex; align-items:center; justify-content:space-between; }
.signout { margin:0; }
.signout button { background:transparent; border:1px solid #3a4a68; color:#c9d4e6;
                  padding:4px 10px; font-size:12px; }

.shcol { width:92px; text-align:right; font-variant-numeric:tabular-nums;
         color:var(--muted); }
.shcol.short { color:#a60; font-weight:600; }
