:root{--ink:#16233b;--muted:#68758a;--line:#e2e8f0;--soft:#f4f7fb;--nav:#10203a;--blue:#0b6bcb;--green:#14714f;--red:#ad3540;--amber:#9a6109}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--soft);font:14px/1.55 Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif}a{color:var(--blue);text-decoration:none}h1{margin:0 0 8px;font-size:clamp(29px,3vw,39px);line-height:1.15;letter-spacing:-.03em}h2{margin:0 0 6px;font-size:20px}h3{margin:0 0 8px}.shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;display:flex;width:248px;flex-direction:column;padding:25px 18px;color:#dbe5f3;background:linear-gradient(175deg,#152843,#0b172a)}.brand{display:flex;align-items:center;gap:11px;padding:0 7px 26px;color:#fff}.brand>span,.auth-brand>span{display:grid;width:38px;height:38px;place-items:center;border-radius:12px;color:#08213c;background:linear-gradient(135deg,#68ded9,#56b1ff);font-size:18px;font-weight:850}.brand strong,.brand small,.profile b,.profile small{display:block}.brand small,.profile small{color:#93a7c4;font-size:11px}.sidebar nav{display:grid;gap:5px}.sidebar nav a{padding:11px 14px;border-radius:10px;color:#afbed3;font-weight:650}.sidebar nav a:hover{color:#fff;background:#1b2e4b}.profile{margin-top:auto;padding:16px 7px 0;border-top:1px solid rgba(255,255,255,.09)}.profile>div{display:flex;gap:12px;margin-top:10px}.profile form{margin:0}.profile button{padding:0;border:0;color:#93a7c4;background:none;cursor:pointer}.content{min-height:100vh;margin-left:248px;padding:35px clamp(24px,4vw,58px) 70px}.content>*{max-width:1420px;margin-right:auto;margin-left:auto}.content header{margin-bottom:23px}.content header p{margin:0;color:var(--muted)}.header-row{display:flex;justify-content:space-between;gap:20px}.eyebrow{margin:0 0 6px!important;color:var(--blue)!important;font-size:11px;font-weight:850;letter-spacing:.13em;text-transform:uppercase}.panel{margin-bottom:20px;padding:24px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 15px 42px rgba(20,43,77,.07)}.panel-head{margin-bottom:17px}.panel-head p{margin:0;color:var(--muted)}.narrow{max-width:720px!important;margin-left:0!important}.button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;padding:9px 15px;border:1px solid transparent;border-radius:10px;cursor:pointer;font-weight:750}.button.primary{color:#fff;background:var(--blue)}.button.secondary{color:#075e83;border-color:#bee1eb;background:#eef9fb}.button.ghost{color:var(--ink);border-color:var(--line);background:#fff}.button.small{min-height:31px;padding:5px 10px;font-size:12px}.button:disabled{cursor:not-allowed;opacity:.45}.messages{margin-bottom:15px}.message,.callout{margin-bottom:8px;padding:11px 14px;border:1px solid #c6e0f6;border-radius:9px;color:#15537e;background:#f0f8fe}.message.success{color:#176447;border-color:#bde2d1;background:#effaf5}.message.error{color:#98303a;border-color:#efc3c7;background:#fff2f3}.warning{color:#8a570b;border-color:#edd6ac;background:#fff9ec}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.stats article{padding:21px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 15px 42px rgba(20,43,77,.07)}.stats span,.stats small{display:block;color:var(--muted)}.stats b{display:block;margin:4px 0;font-size:34px}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.project{display:flex;min-height:190px;flex-direction:column;padding:20px;border:1px solid var(--line);border-radius:13px;color:var(--ink)}.project:hover{border-color:#9bc6e7;box-shadow:0 12px 28px rgba(22,58,95,.09)}.project>div,.project footer{display:flex;justify-content:space-between;gap:10px}.project>div span{color:var(--blue);font-size:12px;font-weight:850;letter-spacing:.07em}.project em,.badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;color:#526074;background:#eef1f5;font-size:11px;font-style:normal;font-weight:750}.project p{flex:1;color:var(--muted)}.project footer{color:#8a95a4;font-size:11px}.pending,.queued{color:var(--amber);background:#fff2d6}.approved,.succeeded{color:var(--green);background:#e8f7f0}.rejected,.failed{color:var(--red);background:#fdebed}.running{color:#0b618d;background:#e7f5fc}.table-panel{padding-right:0;padding-left:0;overflow:hidden}.table-panel .panel-head{padding:0 24px}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:13px 18px;border-top:1px solid var(--line);text-align:left}th{color:#7b8797;background:#fafbfd;font-size:10px;letter-spacing:.06em;text-transform:uppercase}.actions{display:flex;gap:6px}.actions form{margin:0}.workflow{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:20px;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:var(--line);box-shadow:0 15px 42px rgba(20,43,77,.07)}.workflow div{display:grid;min-height:98px;grid-template-columns:34px 1fr;align-content:center;column-gap:10px;padding:18px;background:#fff}.workflow span{display:grid;width:30px;height:30px;grid-row:1/span 2;place-items:center;border-radius:50%;color:var(--blue);background:#e9f4ff;font-weight:800}.workflow b{align-self:end}.workflow small{color:var(--muted)}.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.upload{display:flex;min-height:390px;flex-direction:column}.upload>p{min-height:48px;color:var(--muted)}.upload form{display:grid;gap:9px;margin:9px 0 17px;padding:14px;border:1px dashed #b6c9dc;border-radius:10px;background:#f8fbfe}.upload>div{display:grid;gap:7px;margin-top:auto}.upload>div a{display:flex;justify-content:space-between;padding:10px;border:1px solid var(--line);border-radius:8px;color:var(--ink)}.upload>div a small{color:var(--muted)}.run{display:grid;grid-template-columns:.8fr 1.7fr;gap:22px;align-items:end}.run>div p{margin:0;color:var(--muted)}.run form{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:9px;align-items:end}.run label{font-size:12px;font-weight:700}.form{display:grid;gap:15px}.form label{font-weight:700}.form input,.form select,.form textarea,.run select{display:block;width:100%;min-height:42px;margin-top:5px;padding:9px 11px;border:1px solid #cfd7e3;border-radius:9px;background:#fff}.form small{display:block;color:var(--muted);font-size:11px;font-weight:400}.form ul{margin:4px 0;padding-left:18px;color:var(--red)}.job>div:first-child{display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center}.progress{height:9px;margin:19px 0 26px;overflow:hidden;border-radius:999px;background:#e9edf2}.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#28bbc7)}.job dl{display:grid;grid-template-columns:repeat(4,1fr);margin:0;border:1px solid var(--line);border-radius:10px;background:var(--line);gap:1px;overflow:hidden}.job dl div{padding:12px;background:#fafbfd;overflow:hidden}.job dt{color:var(--muted);font-size:11px}.job dd{margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.downloads{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:20px}.downloads a{padding:22px;border:1px solid #c9deef;border-radius:13px;color:var(--ink);background:#fff;box-shadow:0 15px 42px rgba(20,43,77,.07)}.downloads b,.downloads small{display:block}.downloads small{color:var(--muted)}.error pre{overflow:auto;padding:15px;border-radius:9px;color:var(--red);background:#fff2f3;white-space:pre-wrap}.auth-layout{display:grid;min-height:100vh;grid-template-columns:1.15fr .85fr}.auth-intro{display:flex;flex-direction:column;justify-content:space-between;padding:clamp(35px,6vw,78px);color:#fff;background:radial-gradient(circle at 80% 12%,rgba(52,204,210,.25),transparent 28%),linear-gradient(150deg,#142d4f,#08172a)}.auth-brand{display:flex;align-items:center;gap:11px;font-weight:850}.auth-intro h1{max-width:720px;font-size:clamp(38px,5vw,62px)}.auth-intro>div>p:not(.eyebrow){max-width:650px;color:#bdcadd;font-size:16px}.auth-intro .eyebrow{color:#63d7d9!important}.tags{display:flex;gap:8px;flex-wrap:wrap}.tags span{padding:6px 10px;border:1px solid rgba(255,255,255,.13);border-radius:999px;color:#cbd8e8}.auth-panel{display:grid;place-items:center;padding:28px;background:var(--soft)}.auth-card{width:min(100%,420px);padding:36px;border:1px solid var(--line);border-radius:19px;background:#fff;box-shadow:0 28px 70px rgba(14,38,69,.13)}.auth-card.wide{width:min(100%,500px)}.muted,.switch{color:var(--muted)}.switch{text-align:center}.center{display:grid;min-height:100vh;place-items:center;padding:30px}.result{width:min(100%,560px);padding:44px;border:1px solid var(--line);border-radius:20px;background:#fff;text-align:center}.result>span{display:grid;width:58px;height:58px;margin:0 auto 18px;place-items:center;border-radius:50%;color:#fff;background:var(--green);font-size:26px}.empty{grid-column:1/-1;padding:30px;text-align:center}@media(max-width:1080px){.project-grid,.upload-grid{grid-template-columns:repeat(2,1fr)}.run{grid-template-columns:1fr}.run form{grid-template-columns:repeat(3,1fr)}.run button{grid-column:1/-1}}@media(max-width:820px){.sidebar{position:static;width:auto}.sidebar nav{display:flex;overflow:auto}.profile{display:none}.content{margin-left:0;padding:24px 16px 50px}.auth-layout{grid-template-columns:1fr}.auth-intro{min-height:330px}.stats{grid-template-columns:repeat(2,1fr)}.workflow{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.header-row{flex-direction:column}.stats,.project-grid,.upload-grid,.workflow,.downloads{grid-template-columns:1fr}.run form{grid-template-columns:1fr}.run button{grid-column:auto}.job dl{grid-template-columns:1fr}.auth-intro{min-height:300px;padding:28px 22px}.auth-card,.result{padding:27px 21px}}
