:root{--ink:#172026;--muted:#69757d;--line:#dfe4e7;--paper:#fff;--bg:#f3f5f6;--accent:#d44727;--green:#1c7a55;--blue:#2563a8}*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,"Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);letter-spacing:0}button,input,select,textarea{font:inherit}button{border:0;background:var(--ink);color:#fff;padding:9px 14px;border-radius:5px;cursor:pointer}.login{min-height:100vh;display:grid;place-items:center;background:#1b2429}.login form{width:min(390px,calc(100vw - 32px));background:#fff;padding:30px;border-radius:7px}.login h1{margin:0 0 6px;font-size:25px}.login p{color:var(--muted);margin:0 0 24px}.login label{display:block;margin:14px 0}.login input{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid var(--line);border-radius:4px}.login button{width:100%;margin-top:10px;background:var(--accent)}.error{color:#b42318;margin-top:10px}#app{min-height:100vh;display:grid;grid-template-columns:210px 1fr}aside{background:#172026;color:#fff;padding:20px 14px;display:flex;flex-direction:column}.brand{font-size:20px;font-weight:800;padding:5px 10px 22px}.brand span{color:#f07555}nav{display:grid;gap:4px}nav button,.logout{background:transparent;text-align:left;color:#bdc6cb;padding:10px 12px}nav button.active,nav button:hover{background:#29353c;color:#fff}.logout{margin-top:auto}main{min-width:0}main>header{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px}h2{font-size:20px;margin:0}header p{margin:2px 0 0;color:var(--muted)}.head-actions{display:flex;gap:8px}.head-actions select{min-width:170px}.head-actions select,.icon{border:1px solid var(--line);background:#fff;color:var(--ink);padding:8px 10px;border-radius:4px}#content{padding:22px 26px}.stats{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:12px}.stat{background:#fff;border:1px solid var(--line);padding:18px;border-radius:6px}.stat strong{font-size:27px;display:block}.stat span{color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:6px}.toolbar{padding:12px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px}.toolbar input{padding:8px 10px;border:1px solid var(--line);border-radius:4px;min-width:260px}.toolbar button{background:var(--accent)}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #edf0f1}th{font-size:12px;text-transform:uppercase;color:var(--muted);background:#fafbfb;position:sticky;top:0}td.wrap{white-space:normal;min-width:220px}.badge{display:inline-block;padding:3px 7px;border-radius:3px;background:#e8ecee}.badge.ready,.badge.pass,.badge.success,.badge.active{background:#dff2e9;color:var(--green)}.badge.blocked,.badge.fail,.badge.disabled{background:#fbe4df;color:#a83220}.badge.review,.badge.queued,.badge.running{background:#e2edf9;color:var(--blue)}.actions button{background:transparent;color:var(--blue);padding:3px 7px}.empty{padding:50px;text-align:center;color:var(--muted)}dialog{border:0;border-radius:7px;padding:0;width:min(760px,calc(100vw - 30px));box-shadow:0 20px 60px #0005}dialog::backdrop{background:#17202699}dialog form>header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}dialog h3{margin:0}.close{background:transparent;color:var(--ink);font-size:23px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:20px;max-height:65vh;overflow:auto}.form-grid label{display:block}.form-grid label.full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{display:block;width:100%;margin-top:5px;padding:9px;border:1px solid #cfd6da;border-radius:4px}.form-grid textarea{min-height:90px}dialog footer{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.secondary{background:#e9edef;color:var(--ink)}@media(max-width:900px){#app{grid-template-columns:1fr}aside{display:none}.stats{grid-template-columns:repeat(2,1fr)}main>header,#content{padding-left:14px;padding-right:14px}.form-grid{grid-template-columns:1fr}}
