:root{--ink:#182736;--muted:#74818c;--line:#e4e9ec;--green:#167d61;--navy:#172b38;--paper:#f4f6f7;--red:#b83f43;--amber:#956627}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.6 "Segoe UI","Microsoft YaHei",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;padding:9px 15px;border:1px solid #d8e0e4;border-radius:7px;background:white;color:var(--ink);transition:background .15s}button:hover:not(:disabled){background:#edf4f2}button:disabled{opacity:.4;cursor:not-allowed}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover:not(:disabled){background:#12664f}.danger{color:var(--red)}.quiet{background:transparent;border-color:transparent}header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px;font-weight:800;font-size:28px;color:var(--green);text-decoration:none}.brand span{font-size:18px;color:var(--ink);font-weight:600}.header-right{display:flex;align-items:center;gap:18px}.layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 72px)}aside{background:var(--navy);color:white;padding:26px 14px;position:relative}.side-title{font-size:12px;color:#9caeb8;padding:0 14px;margin-bottom:15px}.side-title span{float:right}nav button{width:100%;border:0;color:#cbd5da;background:transparent;text-align:left;border-radius:8px;padding:14px;margin-bottom:5px}nav button.active{color:white;background:#2a414d}nav button:hover:not(:disabled){background:#263d49}.server-label{display:block;font-weight:600;font-size:15px}.server-address{font-size:12px;opacity:.7}.connection-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#9dabad;float:right;margin-top:8px}.connection-dot.online{background:#5ace9d}.connection-dot.offline{background:#e29682}.aside-note{padding:24px 14px;color:#91a5b0;font-size:12px;margin-top:30px;border-top:1px solid #30434f}main{padding:34px 40px;max-width:1440px;width:100%}.heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--green);font-weight:700}h1{font-size:27px;letter-spacing:-.5px;margin:5px 0}p{color:var(--muted);margin:5px 0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:white;border-radius:10px;margin-bottom:25px}.metrics>div{padding:20px 24px;border-right:1px solid var(--line)}.metrics>div:last-child{border:0}.metrics span{display:block;color:var(--muted);font-size:12px}.metrics strong{display:block;margin-top:6px;font-size:21px;font-weight:600}.tabs{display:flex;gap:25px;margin-bottom:22px;border-bottom:1px solid var(--line)}.tabs button{padding:10px 0 13px;border:0;border-radius:0;background:none;color:var(--muted)}.tabs button.active{color:var(--green);border-bottom:2px solid var(--green);font-weight:600}.tabs span{font-size:11px;background:#e4e9e9;border-radius:10px;padding:1px 7px;margin-left:4px}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.project{background:white;border:1px solid var(--line);border-radius:10px;padding:22px;min-width:0}.project-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.project h2{margin:0 0 5px;font-size:17px}.project-code{color:var(--muted);font-size:11px;overflow-wrap:anywhere}.badge{display:inline-block;border-radius:20px;padding:3px 9px;font-size:11px;white-space:nowrap;background:#eef1f3;color:#6f7e89}.badge.running,.badge.succeeded{background:#e4f3ea;color:var(--green)}.badge.failed{background:#faeaea;color:var(--red)}.badge.unknown,.badge.queued,.badge.starting{background:#fff0d8;color:var(--amber)}.project-data{padding:17px 0 14px;margin:15px 0 0;border-top:1px solid #edf0f2;display:grid;grid-template-columns:60px 1fr;gap:8px;font-size:12px}.project-data dt{color:var(--muted)}.project-data dd{margin:0;overflow-wrap:anywhere}.actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.actions button{padding:6px 10px;font-size:12px}.actions .log-button{margin-left:auto}.readonly{font-size:11px;color:var(--muted);margin-top:12px}.discovered{margin-top:32px}.discovered h2{font-size:16px;margin:0 0 5px}.discovered p{font-size:12px;margin-bottom:14px}.table-wrap{overflow:auto;border-radius:9px;border:1px solid var(--line);background:white}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:13px 16px;border-bottom:1px solid #edf0f2;text-align:left}th{background:#f9fafb;color:var(--muted);font-weight:500}td.path{overflow-wrap:anywhere;max-width:460px}tr:last-child td{border:0}.empty{padding:30px;text-align:center;color:var(--muted);border:1px dashed #d6dde1;border-radius:9px;background:#fafbfb}footer{font-size:11px;color:var(--muted);margin-top:30px}.notice{background:#fff5e5;color:#895f24;border:1px solid #f0dcbd;border-radius:7px;padding:12px 16px;margin-bottom:20px}dialog{border:0;border-radius:12px;width:min(680px,92vw);padding:0;color:var(--ink);box-shadow:0 20px 70px #10273240}dialog::backdrop{background:#0d1a26a0}.dialog-heading{display:flex;align-items:center;justify-content:space-between;padding:20px 25px;border-bottom:1px solid var(--line)}.dialog-heading h2{margin:0;font-size:18px}.dialog-footer{display:flex;gap:10px;justify-content:flex-end;padding:17px 25px;border-top:1px solid var(--line)}#operation-body{padding:22px 25px}.plan-details{display:grid;grid-template-columns:85px 1fr;gap:8px;font-size:13px}.plan-details dt{color:var(--muted)}.plan-details dd{margin:0;overflow-wrap:anywhere}.steps{margin:20px 0;padding-left:22px;color:#4c626d;font-size:13px}.steps li{padding:3px 0}label{display:block;margin:15px 0 9px;font-size:13px}label input,select,textarea{display:block;width:100%;border:1px solid #ccd6dc;border-radius:6px;padding:10px 12px;margin-top:7px;color:var(--ink);background:white}input:focus,select:focus,textarea:focus{outline:2px solid #80baa940; border-color:var(--green)}label.checkbox{display:flex;align-items:center;gap:9px}label.checkbox input{width:auto;margin:0}.log-dialog{width:min(1000px,94vw)}#log-meta{padding:10px 25px;color:var(--muted);font-size:12px}pre{background:#182b36;color:#d6e6e4;font:12px/1.7 Consolas,"Microsoft YaHei",monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:20px 25px;max-height:60vh;min-height:180px;overflow:auto}.login-page{min-height:100vh;display:grid;place-items:center;background:linear-gradient(120deg,#e9f0ed,#f6f7f8)}.login-card{width:min(430px,92vw);padding:38px 40px;background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 80px #2a4f4210}.login-symbol{font-size:36px;font-weight:800;color:var(--green);margin-bottom:22px}.login-card h1{font-size:23px}.login-card p{font-size:13px;margin:9px 0 25px}.login-card button{width:100%;margin-top:15px}.login-card small{display:block;font-size:11px;color:var(--muted);margin-top:25px;line-height:1.9}.login-card code{color:#4e6a64}.muted{color:var(--muted)}[hidden]{display:none!important}@media(min-width:1400px){.projects{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:950px){.layout{grid-template-columns:190px 1fr}main{padding:25px}.projects{grid-template-columns:1fr}.metrics>div{padding:16px}}@media(max-width:650px){header{padding:0 20px}.layout{display:block}aside{padding:14px}.side-title,.aside-note{display:none}nav{display:flex;gap:6px;overflow:auto}nav button{width:150px;flex-shrink:0;padding:9px}main{padding:20px}.heading{align-items:flex-start;gap:15px}h1{font-size:22px}.heading>button{font-size:11px;white-space:nowrap}.metrics{grid-template-columns:repeat(2,1fr)}.metrics>div{border-bottom:1px solid var(--line)}.brand span{font-size:15px}.header-right{gap:5px}}
