:root{--bg:#090e19;--nav:#0d1421;--panel:#121d2d;--panel2:#172439;--outline:#29374c;--ink:#edf4fd;--muted:#91a0b7;--accent:#75a5ff;--accent-strong:#4384ff;--success:#61d1a6;--amber:#ffc677;--red:#f38b99;--radius:15px}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:Inter,ui-sans-serif,system-ui,"PingFang SC","Microsoft Yahei",sans-serif;background:var(--bg);color:var(--ink);font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.error{color:var(--red);font-size:13px;line-height:1.6}.layout{display:flex;min-height:100vh}.sidebar{width:242px;flex:none;background:var(--nav);border-right:1px solid #1f2b3c;padding:28px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:2px 8px 42px;font-size:17px}.brand small{display:block;letter-spacing:1.6px;color:#7f8ea8;font-size:9px;margin-top:6px}.brand-mark,.login-logo{display:grid;place-items:center;border:1px solid #4e77a3;border-radius:13px;background:linear-gradient(135deg,#18365c,#17283f);color:#a4c3ff;font-size:29px;width:44px;height:44px}.side-label,.eyebrow{font-size:10px;letter-spacing:2px;color:#7186a6;font-weight:700;margin:0 12px 14px}.nav{display:flex;flex-direction:column;gap:6px}.nav-link{color:#a5b3c9;text-align:left;background:transparent;border:0;border-radius:10px;padding:13px 14px;display:flex;align-items:center;gap:14px;width:100%}.nav-link span{font-size:18px;width:22px;text-align:center}.nav-link:hover,.nav-link.selected{background:#1b2b44;color:#f0f6ff}.nav-link.selected{border:1px solid #35537c}.sidebar-spacer{flex:1}.sidebar-bottom{border-top:1px solid #26364a;padding:22px 14px;color:#aab7c9;font-size:12px}.sidebar-bottom small{display:block;color:#6f829b;line-height:2;margin-left:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-dot{background:var(--success);box-shadow:0 0 10px #50d7a755;border-radius:50%;width:7px;height:7px;display:inline-block;margin-right:8px}.main{flex:1;min-width:0}.topbar{height:98px;padding:22px 38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1e2a3c;background:#0b1220;gap:20px}.crumb{letter-spacing:1.7px;font-size:11px;color:#7690b2;font-weight:700}.top-subtitle{margin-top:7px;color:#dce8f9;font-size:15px}.topbar-right{display:flex;gap:17px;align-items:center}.top-chip,.chip{padding:7px 10px;border:1px solid #33506a;border-radius:8px;color:#a8d0ff;background:#152537;font-size:11px;white-space:nowrap}.avatar{display:grid;place-items:center;border-radius:50%;width:32px;height:32px;background:#365b8c;color:white;font-weight:700}.subtle,.menu{background:none;border:0;color:#93a9c8}.menu{display:none;font-size:24px}.content{padding:33px 38px 70px;max-width:1530px;margin:0 auto}.page-title{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:26px}.page-title h1{font-size:26px;letter-spacing:-.5px;margin:0 0 9px}.page-title p{margin:0;color:var(--muted);line-height:1.7}.grid{display:grid;gap:18px}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{background:var(--panel);border:1px solid var(--outline);border-radius:var(--radius);padding:22px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}.panel h2,.panel h3{font-size:15px;margin:0}.metric{font-size:34px;font-weight:730;margin-top:17px;letter-spacing:-1px}.metric-label{color:#8b9eb8;font-size:12px}.metric-foot{color:#8493ad;font-size:12px;margin-top:12px}.metric .blue{color:#9cc0ff}.metric .green{color:#6de1b1}.flex{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.button{background:#213650;color:#d7e5fb;border:1px solid #3b516e;border-radius:9px;padding:10px 15px;transition:background .16s}.button:hover{background:#2c476a}.button.primary{background:var(--accent-strong);color:white;border-color:#598ff2;font-weight:650}.button.primary:hover{background:#5995ff}.button.danger{border-color:#834a5a;color:#ffadba;background:#381e2a}.button.fill{width:100%}.button.mini{padding:6px 10px;font-size:12px}.button.inline{white-space:nowrap}label{display:block;color:#a5bad4;font-weight:600;font-size:12px;margin-bottom:14px}input,textarea,select{display:block;width:100%;background:#0d1726;border:1px solid #35465e;border-radius:9px;color:#e8f1ff;outline:none;padding:12px 13px;margin-top:8px}textarea{min-height:135px;resize:vertical;line-height:1.65}input:focus,textarea:focus,select:focus{border-color:#5c9fff;box-shadow:0 0 0 3px #4a8fee22}input[type=file]{padding:9px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.hint{color:#778ba8;font-size:12px;line-height:1.7;margin:8px 0}.line{height:1px;background:var(--outline);margin:20px 0}.tablewrap{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;text-align:left}.data-table th{font-size:11px;color:#7692af;font-weight:700;border-bottom:1px solid #34425a;padding:13px 12px}.data-table td{border-bottom:1px solid #26374c;padding:14px 12px;color:#ccd9ea;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table .rowaction{color:#91bfff;background:none;border:0;padding:0}.pill{display:inline-block;font-size:11px;padding:6px 9px;background:#213349;border:1px solid #334c65;border-radius:30px;color:#add3fc}.pill.completed{color:#8de9be;background:#18392f;border-color:#275e48}.pill.failed,.pill.timeout{color:#ffa0ac;background:#3d252e;border-color:#74404a}.pill.running{color:#9bc5ff;background:#182f52;border-color:#335e9d}.pill.queued{color:#ffd28a;background:#403521;border-color:#655236}.pill.cancelled,.pill.interrupted{color:#a1a9b9}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.taskname{font-weight:620;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}.task-detail{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px}.logview{height:min(58vh,620px);overflow-y:auto;background:#080f1a;border:1px solid #26374d;border-radius:10px;padding:18px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;font-size:12px}.log-event{padding:10px 0;border-bottom:1px solid #19283e}.log-event:last-child{border:0}.log-label{font-weight:700;color:#9abbf1;display:inline-block;margin-right:10px}.log-event.error .log-label{color:#f496a1}.log-event.tool .log-label{color:#d7b4ff}.log-event.system .log-label{color:#9bcfb4}.codebox{white-space:pre-wrap;overflow:auto;background:#0b1421;color:#bcd3ef;border:1px solid #2d415a;border-radius:10px;padding:16px;line-height:1.6;max-height:460px;font-size:12px}.file-list{height:460px;overflow:auto}.file{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;color:#b9cde7;padding:7px 10px;border-radius:6px;overflow-wrap:anywhere}.file:hover{background:#1c3049}.empty{color:#8194ad;text-align:center;padding:45px 15px}.notice{border:1px solid #46506c;background:#1c253b;color:#d2d9eb;border-radius:10px;padding:13px 15px;font-size:12px;line-height:1.7;margin:15px 0}.notice.warn{border-color:#695238;background:#30281c;color:#f4cf9b}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.toolbar>*{max-width:100%}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tab{padding:8px 12px;border:1px solid #34465f;background:#182437;border-radius:8px;color:#a9c0dc}.tab.on{background:#30507c;border-color:#5c87be;color:white}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 10%,#162a44,#0a101a 60%);padding:26px}.login-card{width:min(100%,420px);background:#111d2b;border:1px solid #33445d;padding:38px;border-radius:19px;box-shadow:0 20px 100px #0008}.login-card h1{font-size:30px;margin:16px 0 5px}.login-logo{width:58px;height:58px;font-size:35px;margin-bottom:20px}.login-card .eyebrow{margin:0}.login-card p{line-height:1.7;margin-bottom:27px}.login-foot{font-size:11px;color:#72849e;text-align:center;border-top:1px solid #314259;padding-top:20px;margin-top:26px}.toast{position:fixed;bottom:27px;right:27px;padding:15px 18px;background:#223851;border:1px solid #52749e;border-radius:10px;box-shadow:0 10px 45px #0007;z-index:10;max-width:400px;color:white}.toast.bad{border-color:#a75660;background:#49242b}.section-kicker{color:#80b0f6;font-size:11px;letter-spacing:1.5px;font-weight:700;margin-bottom:12px}.guide{display:grid;grid-template-columns:36px 1fr;gap:14px;margin-bottom:22px}.guide-icon{display:grid;place-items:center;background:#203550;border:1px solid #395579;border-radius:10px;height:36px;color:#9cbef1}.guide strong{display:block;margin-bottom:5px}.guide p{color:#8b9db5;font-size:12px;line-height:1.65;margin:0}@media (max-width:1050px){.grid.three{grid-template-columns:1fr 1fr}.task-detail{grid-template-columns:1fr}}@media (max-width:760px){.sidebar{position:fixed;left:-255px;z-index:20;transition:left .2s;box-shadow:18px 0 40px #0006}.sidebar.open{left:0}.menu{display:block}.topbar{padding:15px 18px;height:83px}.content{padding:24px 16px 65px}.grid.three,.grid.two{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.topbar-right{gap:8px}.avatar{display:none}.top-chip{max-width:130px;overflow:hidden;text-overflow:ellipsis}.page-title h1{font-size:22px}.panel{padding:18px}.login-card{padding:28px}.task-detail{grid-template-columns:1fr}}

/* v2.1 workflows */
.wf-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin:17px 0}
.wf-metric{display:flex;flex-direction:column;gap:9px;background:rgba(132,145,174,.08);padding:12px;border-radius:12px;min-width:0}
.wf-metric small{color:#a4afc6}.wf-metric strong{overflow-wrap:anywhere;font-size:15px}
.wf-stage-list{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0 4px}
.wf-stage{flex:1 1 190px;border:1px solid rgba(132,145,174,.25);padding:16px;border-radius:14px;display:flex;flex-direction:column;gap:12px}
.wf-stage-name{font-weight:650}.wf-stage-status{font-size:13px;color:#acbbd7}
#content .codebox{white-space:pre-wrap;overflow-wrap:anywhere;max-height:620px;overflow:auto}
@media(max-width:660px){.wf-stage-list{flex-direction:column}.wf-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
