[hidden]{display:none!important}
:root{
  --bg:#0f1512; --surface:#18211d; --sunken:#0c110f; --line:#2a3630; --fg:#e6ece9; --muted:#93a39b;
  --reacher:#b4c77a; --bondi:#5cc4cf; --ok:#7bd196; --warn:#f0b65c; --bad:#f08a8a; --accent:#5cc4cf;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 system-ui,Segoe UI,sans-serif}
a{color:var(--accent)}
button{font:inherit;cursor:pointer}
.alert{background:#3c1a1b;border:1px solid var(--bad);color:#f3c9c9;padding:.5rem .7rem;border-radius:6px;margin:.5rem 0}
.alert.warn{background:#3a2a10;border-color:var(--warn);color:#f0d49c}

/* login */
body.login{display:grid;place-items:center;min-height:100vh}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1.5rem;width:min(92vw,360px)}
.login-card h1{margin:0 0 .2rem}.login-card .sub{color:var(--muted);margin:0 0 1rem}
label{display:block;margin:.6rem 0;font-size:.85rem;color:var(--muted)}
input,select{width:100%;margin-top:.3rem;padding:.55rem;border:1px solid var(--line);border-radius:7px;background:var(--sunken);color:var(--fg);font:inherit}
.login-card button[type=submit],#pw-form button[type=submit]{width:100%;margin-top:.8rem;padding:.6rem;border:0;border-radius:7px;background:var(--accent);color:#06211f;font-weight:600}

/* header */
header{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700}
nav{display:flex;gap:.3rem}
.spacer{flex:1}
.who{color:var(--muted);font-size:.85rem}
.tab{background:transparent;border:1px solid transparent;color:var(--muted);padding:.4rem .7rem;border-radius:7px}
.tab.active{background:var(--sunken);color:var(--fg);border-color:var(--line)}
.link{background:transparent;border:0;color:var(--accent);padding:.3rem}

main{max-width:1000px;margin:1rem auto;padding:0 1rem}
.filters{margin:.5rem 0 1rem}.filters label{display:inline-flex;align-items:center;gap:.5rem}
.filters select{width:auto}

/* list */
.list{display:flex;flex-direction:column;gap:.5rem}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:.3rem 1rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:.7rem 1rem;cursor:pointer}
.item:hover{border-color:var(--accent)}
.badge{font:600 .7rem/1 ui-monospace,monospace;padding:.35rem .5rem;border-radius:5px}
.badge.Reacher{background:#262e17;color:var(--reacher)}
.badge.Bondi{background:#11303a;color:var(--bondi)}
.item .title{font-weight:600}
.item .meta{grid-column:2;color:var(--muted);font-size:.82rem}
.st{font:600 .72rem/1 ui-monospace,monospace;padding:.3rem .5rem;border-radius:999px;justify-self:end}
.st.running{color:var(--accent);border:1px solid var(--accent)}
.st.done{color:var(--ok);border:1px solid var(--ok)}
.st.failed{color:var(--bad);border:1px solid var(--bad)}
.st.cancelled{color:var(--muted);border:1px solid var(--line)}
.empty{color:var(--muted);padding:2rem;text-align:center}

/* metrics */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.7rem;margin-bottom:1rem}
.mcard{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1rem}
.mcard .n{font-size:1.6rem;font-weight:700}
.mcard .l{color:var(--muted);font-size:.8rem}
.chart-box{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1rem}

/* drawer */
.drawer{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;justify-content:flex-end;z-index:20}
.drawer-inner{width:min(94vw,560px);height:100%;overflow:auto;background:var(--bg);border-left:1px solid var(--line);padding:1.5rem;position:relative}
.close{position:absolute;top:1rem;right:1rem;background:0;border:0;color:var(--muted);font-size:1.6rem}
.detail h2{margin:.2rem 0}
.detail .sec{margin:1rem 0}
.detail .sec h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .3rem}
.detail pre{white-space:pre-wrap;background:var(--sunken);border:1px solid var(--line);border-radius:8px;padding:.7rem;margin:0}
.tl{list-style:none;padding:0;margin:0;border-left:2px solid var(--line)}
.tl li{position:relative;padding:.3rem 0 .3rem 1rem}
.tl li::before{content:"";position:absolute;left:-5px;top:.7rem;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.tl .t{color:var(--muted);font:600 .72rem/1 ui-monospace,monospace;margin-right:.5rem}
.gh a{display:inline-block;margin:.15rem .4rem .15rem 0;padding:.25rem .5rem;background:var(--sunken);border:1px solid var(--line);border-radius:6px;font-size:.8rem;text-decoration:none}

/* modal */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:30}
.modal .row{display:flex;gap:.6rem;align-items:center;margin-top:.6rem}
