:root{--s0:#f7f7f5;--s1:#fff;--s2:#f1f0ec;--tp:#1a1a17;--ts:#5d5d56;--tm:#8f8f86;--bd:#e3e2dc;--acc:#5c6ac4;--accbg:#eef0fb;--wrn:#9a6700;--wrnbg:#fff5e0;--ok:#1a7f37;--okbg:#e9f5ec;--bad:#c62828;--badbg:#fdecea;--mk:#0b7285;--mkbg:#e3f4f8}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--s0);color:var(--tp);font:14px/1.6 Segoe UI,system-ui,sans-serif}a{color:inherit}#top{z-index:5;background:var(--s1);border-bottom:1px solid var(--bd);flex-wrap:wrap;align-items:center;gap:12px;padding:9px 16px;display:flex;position:sticky;top:0}#top b{font-weight:600}#top select,#top button{border:1px solid var(--bd);background:var(--s1);cursor:pointer;border-radius:7px;padding:5px 10px;font:13px Segoe UI}.seg{border:1px solid var(--bd);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{background:var(--s1);border:0;border-radius:0}.seg button.on{background:var(--accbg);color:var(--acc);font-weight:600}.spacer{flex:1}#wrap{height:calc(100vh - 49px);display:flex}.pane{border-right:1px solid var(--bd);flex:1;min-width:0;display:flex}.pane:last-child{border-right:0}.nav{border-right:1px solid var(--bd);background:var(--s1);width:210px;min-width:210px;padding:8px;overflow-y:auto}.navitem{cursor:pointer;color:var(--ts);border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:flex}.navitem:hover{background:var(--s2)}.navitem.active{background:var(--accbg);color:var(--tp);font-weight:600}.navtime{color:var(--tm);margin-left:auto;font-family:Consolas,monospace;font-size:10.5px}.dot{border-radius:99px;flex:none;width:8px;height:8px}.d-accent{background:var(--acc)}.d-warning{background:var(--wrn)}.d-success{background:var(--ok)}.d-maker{background:var(--mk)}.col{flex-direction:column;flex:1;min-width:0;display:flex}.colhead{border-bottom:1px solid var(--bd);background:var(--s1);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 14px;display:flex}.colhead select{border:1px solid var(--bd);border-radius:6px;max-width:280px;padding:4px 8px;font:12.5px Segoe UI}.colhead .sub{color:var(--tm);width:100%;font-size:11px}.content{flex:1;padding:18px 22px;overflow-y:auto}h1{margin:0 0 2px;font-size:17px;font-weight:600}.pagen{color:var(--tm);margin-bottom:12px;font-size:12px}.meta{background:var(--s1);border:1px solid var(--bd);border-radius:9px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:11px;padding:9px 12px;display:flex}.model{font-family:Consolas,monospace;font-weight:600}.kv{color:var(--ts);font-family:Consolas,monospace;font-size:12px}.kv.cost{color:var(--ok);font-weight:600}.chip{border-radius:99px;padding:2px 9px;font-size:11px;font-weight:600}.c-accent{color:var(--acc);background:var(--accbg)}.c-warning{color:var(--wrn);background:var(--wrnbg)}.c-success{color:var(--ok);background:var(--okbg)}.c-maker{color:var(--mk);background:var(--mkbg)}.tag{border-radius:99px;padding:2px 9px;font-size:11px;font-weight:600}.tag.ok{color:var(--ok);background:var(--okbg)}.tag.fail{color:var(--bad);background:var(--badbg)}.note{background:var(--accbg);color:#33395e;border:1px solid #d6dbf5;border-radius:9px;margin-bottom:11px;padding:9px 12px}.card{background:var(--s1);border:1px solid var(--bd);border-radius:9px;margin-bottom:11px;padding:11px 13px}.cardtitle{color:var(--ts);margin-bottom:7px;font-size:12px;font-weight:600}.prose{white-space:pre-wrap;line-height:1.6}pre{white-space:pre-wrap;word-break:break-word;background:var(--s2);border:1px solid var(--bd);border-radius:7px;max-height:460px;margin:0;padding:11px;font:11.5px/1.55 Consolas,monospace;overflow:auto}pre.code{max-height:560px}.muted{color:var(--tm)}code{font-family:Consolas,monospace;font-size:12px}.imggrid{grid-template-columns:1fr 1fr;gap:9px;display:grid}figure{margin:0}figure img{border:1px solid var(--bd);border-radius:7px;width:100%}figcaption{color:var(--tm);word-break:break-all;margin-top:3px;font-size:11px}figcaption a{color:var(--acc)}.pager{border-top:1px solid var(--bd);background:var(--s1);align-items:center;gap:8px;padding:7px 14px;display:flex}.pager .pos{color:var(--ts);font-size:12px}.home{max-width:1000px;margin:0 auto;padding:26px 22px 60px}.home h1{margin-bottom:4px;font-size:20px}.home .lead{color:var(--ts);margin-bottom:20px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.toolbar input[type=text]{border:1px solid var(--bd);background:var(--s1);border-radius:8px;padding:7px 10px;font:13px Segoe UI}.toolbar input.grow{flex:1;min-width:200px}.toolbar button{border:1px solid var(--bd);background:var(--s1);cursor:pointer;border-radius:8px;padding:7px 12px;font:13px Segoe UI}.toolbar button.primary{background:var(--acc);color:#fff;border-color:var(--acc)}.toolbar button.primary:disabled{opacity:.45;cursor:default}.manualbar{align-items:center;gap:8px;margin:4px 0 20px;display:flex}.list{border:1px solid var(--bd);background:var(--s1);border-radius:10px;overflow:hidden}.runrow{border-top:1px solid var(--bd);cursor:pointer;align-items:center;gap:12px;padding:10px 14px;display:flex}.runrow:first-child{border-top:0}.runrow:hover{background:var(--s2)}.runrow.sel{background:var(--accbg)}.runrow .rp{flex:1;min-width:0}.runrow .rp .rprompt{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.runrow .rp .rmeta{color:var(--tm);white-space:nowrap;text-overflow:ellipsis;font-family:Consolas,monospace;font-size:11.5px;overflow:hidden}.runrow .rstatus{background:var(--s2);color:var(--ts);border-radius:99px;padding:2px 9px;font-size:11px;font-weight:600}.runrow input[type=checkbox]{width:16px;height:16px}.runrow .thumb{background:var(--s2);border-radius:6px;flex:none;width:36px;height:36px;overflow:hidden}.runrow .thumb img{object-fit:cover;width:100%;height:100%;display:block}.badge{color:var(--mk);background:var(--mkbg);border-radius:99px;padding:1px 7px;font-size:10.5px;font-weight:600}.state{color:var(--tm);text-align:center;padding:24px 14px}.pager{justify-content:center;align-items:center;gap:12px;margin-top:14px;display:flex}.pager button{border:1px solid var(--bd);background:var(--s1);cursor:pointer;border-radius:8px;padding:6px 14px;font:13px Segoe UI}.pager button:disabled{opacity:.4;cursor:default}.pager span{font-size:12px}.err{background:var(--badbg);color:var(--bad);white-space:pre-wrap;border:1px solid #f3c6c1;border-radius:9px;margin-bottom:16px;padding:10px 13px}.envseg{margin-left:auto}.session-controls{align-items:center;gap:9px;margin-left:10px;display:inline-flex}.session-controls button{border:1px solid var(--bd);background:var(--s1);cursor:pointer;border-radius:7px;padding:4px 9px;font:12px Segoe UI}.home-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.home-title h1{margin-bottom:0}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--s1);border:1px solid var(--bd);border-radius:12px;width:min(100%,390px);padding:28px;box-shadow:0 10px 35px #1a1a1712}.login-card h1{margin-bottom:5px;font-size:21px}.login-card label{gap:5px;margin-top:15px;font-weight:600;display:grid}.login-card input,.login-card select{border:1px solid var(--bd);background:var(--s1);width:100%;color:var(--tp);border-radius:8px;padding:9px 10px;font:14px Segoe UI}.login-button{border:1px solid var(--acc);background:var(--acc);color:#fff;cursor:pointer;border-radius:8px;width:100%;margin-top:18px;padding:9px 12px;font:14px Segoe UI}.login-button:disabled{opacity:.55;cursor:default}.runrow .rstatus.status-failed{background:var(--badbg);color:var(--bad);border:1px solid #f3c6c1}.runrow .rerror{align-items:center;gap:6px;margin-top:4px;font-size:11.5px;display:flex}.runrow .rerror .errbadge{background:var(--bad);color:#fff;border-radius:4px;flex:none;padding:1px 5px;font-size:10px;font-weight:700}.runrow .rerror .errstage{color:var(--bad);flex:none;font-family:Consolas,monospace;font-size:11px;font-weight:600}.runrow .rerror .errtext{color:var(--bad);white-space:nowrap;text-overflow:ellipsis;font-family:Consolas,monospace;overflow:hidden}.failure-banner{background:var(--badbg);border:1px solid #f3c6c1;border-radius:9px;margin-bottom:16px;padding:14px 16px}.failure-banner .failure-head{color:var(--bad);align-items:center;gap:8px;margin-bottom:6px;font-size:14px;font-weight:700;display:flex}.failure-banner .failure-msg{color:var(--tp);white-space:pre-wrap;word-break:break-all;font-family:Consolas,monospace;font-size:12.5px}pre.traceback{color:#f88;white-space:pre-wrap;background:#1e1e1e;border-radius:8px;max-height:350px;margin-top:6px;padding:12px;font-size:11.5px;overflow-x:auto}.chip.c-fail{background:var(--badbg);color:var(--bad);border:1px solid #f3c6c1}.dot.d-fail{background:var(--bad)}.tag.fail{background:var(--badbg);color:var(--bad);border:1px solid #f3c6c1;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}.tag.ok{background:var(--sucbg);color:var(--suc);border:1px solid #b7dfc8;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}.link-button{width:100%;color:var(--acc);cursor:pointer;background:0 0;border:0;margin-top:12px;padding:4px;font:12.5px Segoe UI;display:block}.hub-top{border-bottom:1px solid var(--bd);background:var(--s1);align-items:center;gap:14px;padding:12px 20px;display:flex}.hub-top nav{gap:4px;display:flex}.hub-top nav a{color:var(--ts);border-radius:7px;padding:5px 10px;text-decoration:none}.hub-top nav a:hover{background:var(--s2);color:var(--tp)}.hub-main{max-width:1040px;margin:0 auto;padding:24px 20px}.hub-main h1{margin-bottom:4px;font-size:22px}.hub-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:18px;display:grid}.hub-card{background:var(--s1);border:1px solid var(--bd);color:var(--tp);border-radius:10px;padding:16px;text-decoration:none;display:block}.hub-card:hover{border-color:var(--acc)}.hub-card h2{margin-bottom:4px;font-size:15px}.hub-card.soon{opacity:.6;pointer-events:none}.hub-banner{background:var(--wrnbg);color:var(--wrn);border-radius:8px;margin-top:14px;padding:10px 12px}
