:root{--bg:#f6f7f9;--card:#fff;--text:#1c2330;--muted:#6b7280;--line:#e3e6eb;--accent:#2f5bea;--ok:#1f8a4c;--bad:#c0362c;--warn:#b7791f;color:var(--text);background:var(--bg);font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;font-size:15px}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);cursor:pointer;text-decoration:none}code,.mono,pre{font-family:IBM Plex Mono,ui-monospace,Menlo,monospace;font-size:.9em}h1{margin:.4rem 0 1rem;font-size:1.5rem}h2{margin:0 0 .75rem;font-size:1.15rem}h3{margin:1rem 0 .5rem;font-size:1rem}.topbar{color:#e5e7eb;background:#111827;align-items:center;gap:14px;padding:10px 24px;display:flex}.topbar a{color:#e5e7eb}.topbar nav{gap:14px;display:flex}.topbar .muted{color:#9ca3af}.brand{letter-spacing:.02em;font-weight:600}.spacer{flex:1}main{padding:20px 24px 60px}.page{max-width:1100px;margin:0 auto}.center{place-items:center;min-height:80vh;display:grid}.card{background:var(--card);border:1px solid var(--line);margin-bottom:16px;padding:16px 18px}.login{text-align:center;max-width:420px}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:24px;display:grid}.card.project{color:inherit;flex-direction:column;gap:4px;display:flex}.card.project:hover{border-color:var(--accent)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.between{justify-content:space-between}.stack{flex-direction:column;gap:8px;display:flex}.form{flex-direction:column;gap:12px;display:flex}.form label{flex-direction:column;gap:4px;font-weight:500;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--bad)}.notice{background:#fff8e6;border:1px solid #f1d9a0;padding:8px 12px}.req{color:var(--bad)}.pre{white-space:pre-wrap;word-break:break-word}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:380px;overflow:hidden}input,select,textarea{font:inherit;border:1px solid var(--line);background:#fff;min-width:0;padding:7px 9px}textarea{resize:vertical;width:100%}.row input:not(.narrow),.row textarea{flex:1}input.narrow{width:110px}button,.button{font:inherit;border:1px solid var(--line);cursor:pointer;color:var(--text);background:#fff;padding:7px 14px;display:inline-block}button:disabled{opacity:.5;cursor:default}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{border-color:var(--bad);color:var(--bad);background:#fff}button.link{color:#e5e7eb;background:0 0;border:none;padding:0}.badge{border:1px solid var(--line);color:var(--muted);white-space:nowrap;background:#f3f4f6;padding:1px 8px;font-size:.78rem;display:inline-block}.topbar .badge{color:#d1d5db;background:#1f2937;border-color:#374151}.badge.warn,.topbar .badge.warn{color:var(--warn);background:#fef3c7;border-color:#f1d9a0}.badge.active,.badge.passed,.badge.done{color:var(--ok);background:#e7f6ed;border-color:#bfe3cc}.badge.failed,.badge.error{color:var(--bad);background:#fdecea;border-color:#f5c2bd}.badge.setup,.badge.running,.badge.queued{color:var(--accent);background:#eef2ff;border-color:#c7d2fe}.badge.archived,.badge.stopped{color:var(--muted);background:#f3f4f6}table{border-collapse:collapse;width:100%;margin:8px 0}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}th{color:var(--muted);font-size:.85rem;font-weight:500}tr.clickable{cursor:pointer}tr.clickable:hover{background:#f9fafb}.tabs{border-bottom:1px solid var(--line);gap:2px;margin:12px 0 16px;display:flex}.tabs a{color:var(--muted);text-transform:capitalize;padding:8px 14px}.tabs a.active{color:var(--text);border-bottom:2px solid var(--accent)}.steps{gap:6px;margin:0 0 16px;padding:0;list-style:none;display:flex}.steps li{border:1px solid var(--line);cursor:pointer;color:var(--muted);background:#fff;padding:6px 12px}.steps li.active{border-color:var(--accent);color:var(--accent)}.steps li.done{color:var(--ok)}.check,.secret{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:12px 0;display:flex}.output{color:#e2e8f0;white-space:pre-wrap;word-break:break-word;background:#0f172a;max-height:320px;margin:6px 0 0;padding:10px 12px;overflow:auto}.output.file{max-height:70vh}.crumbs{margin-bottom:8px}.kv>div{grid-template-columns:240px 1fr;gap:12px;padding:4px 0;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}.stat{min-width:180px}.big{font-size:1.6rem;font-weight:600}.chat .transcript{flex-direction:column;gap:10px;min-height:50vh;padding-bottom:12px;display:flex}.msg{border:1px solid var(--line);background:#fff;max-width:90%;padding:10px 14px}.msg.user{background:#eef2ff;border-color:#c7d2fe;align-self:flex-end}.msg.sub,.tool.sub{opacity:.85;margin-left:28px}.who{color:var(--muted);margin-bottom:4px;font-size:.75rem}.tool{border:1px solid var(--line);background:#fafafa;max-width:90%;padding:6px 10px}.tool summary{cursor:pointer}.tool-name{font-weight:600}.tool-error{border-color:#f5c2bd}.note{font-size:.82rem}.note.error{color:var(--bad);white-space:pre-wrap}.cursor{color:var(--accent);animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:0}}.composer{background:var(--bg);align-items:flex-start;gap:10px;padding:10px 0;display:flex;position:sticky;bottom:0}
