:root{--bg:#0d1117;--panel:#161b22;--panel2:#1c2430;--ink:#e6edf3;--muted:#9aa7b4;--line:#2a3340;--accent:#58a6ff;--good:#7ee787;--warn:#f0883e;--danger:#ff7b72}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{flex-direction:column;height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);justify-content:space-between;align-items:center;padding:10px 18px;display:flex}.brand{letter-spacing:.3px;font-weight:700}.brand-sub{color:var(--muted);margin-left:6px;font-size:12px;font-weight:400}.center{flex:1;place-items:center;display:grid}.signin-wrap{flex:1;place-items:center;padding:40px;display:grid}.muted{color:var(--muted)}.board-actions{padding:12px 18px 0}.board{flex:1;align-items:flex-start;gap:12px;padding:12px 18px 24px;display:flex;overflow-x:auto}.column{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;flex:0 0 280px;max-height:100%;display:flex}.column.over{border-color:var(--accent)}.column-h{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 12px;font-size:13px;font-weight:600;display:flex}.count{color:var(--muted);background:var(--panel2);border-radius:999px;padding:1px 8px;font-size:11px}.column-body{flex-direction:column;gap:10px;min-height:48px;padding:10px;display:flex;overflow-y:auto}.card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:8px;padding:10px;display:flex}.card.overlay{box-shadow:0 8px 24px #0006}.card-grip{cursor:grab}.card-grip:active{cursor:grabbing}.card-title{font-weight:600}.card-repo{color:var(--muted);margin-top:2px;font-size:11px}.card-meta{align-items:center;gap:8px;min-height:8px;font-size:11px;display:flex}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.dot.up{background:var(--good)}.dot.down{background:var(--danger)}.cost{color:var(--good)}.err{color:var(--danger)}.card-links{gap:10px;font-size:12px;display:flex}.threads{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:8px;display:flex}.thread{align-items:center;gap:6px;font-size:12px;display:flex}.thread-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.thread-agent{color:var(--muted);font-size:10px}.thread-open{font-size:11px}.tstate{background:var(--muted);border-radius:50%;flex:none;width:7px;height:7px}.tstate.running{background:var(--accent)}.tstate.idle{background:var(--good)}.tstate.error{background:var(--danger)}.tstate.requested{background:var(--warn)}.btn{background:var(--panel2);color:var(--ink);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:13px}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#07111f;border-color:var(--accent);font-weight:600}.btn.tiny{align-self:flex-start;padding:4px 8px;font-size:11px}.btn:disabled{opacity:.6;cursor:default}.modal-backdrop{z-index:50;background:#0000008c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:10px;width:460px;max-width:100%;max-height:90vh;padding:18px;display:flex;overflow-y:auto}.modal h2{margin:0 0 4px;font-size:17px}.modal label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.modal label input,.modal label select{background:var(--bg);color:var(--ink);border:1px solid var(--line);font:inherit;border-radius:8px;padding:8px}.modal-wide{width:680px}.modal .row{flex-wrap:wrap;gap:10px;display:flex}.modal .row label{flex:140px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.mdfield{flex-direction:column;gap:4px;display:flex}.mdfield-head{justify-content:space-between;align-items:center;display:flex}.mdfield-label{color:var(--muted);font-size:12px}.mdfield-tabs{gap:2px;display:flex}.mdfield-tabs button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;padding:2px 8px;font-size:11px}.mdfield-tabs button.on{background:var(--panel2);color:var(--ink);border-color:var(--accent)}.md-preview{background:var(--bg);border:1px solid var(--line);border-radius:8px;min-height:64px;padding:8px 10px;font-size:13px}.md-preview>:first-child{margin-top:0}.md-preview>:last-child{margin-bottom:0}.md-preview ul,.md-preview ol{padding-left:20px}.md-preview code{background:var(--panel2);border-radius:4px;padding:1px 4px;font-size:12px}.card{cursor:grab}.card:active{cursor:grabbing}.dot.run{background:var(--accent)}.detail-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.detail-head h2{margin:0}.detail-section{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding-top:10px;display:flex}.detail-section-head{justify-content:space-between;align-items:center;display:flex}.detail-section-head h3{margin:0;font-size:14px}.small{font-size:11px}.errbox{border:1px solid var(--danger);background:#ff7b721a;border-radius:8px;padding:8px 10px}.errbox pre{white-space:pre-wrap;word-break:break-word;color:var(--danger);margin:4px 0 0;font-size:12px}.btn.danger{border-color:var(--danger);color:var(--danger)}.md-view{border:1px solid var(--line);border-radius:8px;overflow:hidden}.tstate.awaitingInput{background:var(--warn)}.tstate.awaitingApproval{background:#c4b5fd}.statepill{border-radius:999px;padding:1px 7px;font-size:10px;font-weight:600}.statepill.running{color:var(--accent);background:#58a6ff29}.statepill.awaitingInput{color:var(--warn);background:#f0883e2e}.statepill.awaitingApproval{color:#c4b5fd;background:#c4b5fd2e}.statepill.error{color:var(--danger);background:#ff7b7229}.thread-state{color:var(--muted);font-size:11px}.thread-state.running{color:var(--accent)}.thread-state.awaitingInput{color:var(--warn)}.thread-state.awaitingApproval{color:#c4b5fd}.thread-state.idle{color:var(--good)}.thread-state.error{color:var(--danger)}
