:root{color:#20242a;font-synthesis:none;text-rendering:optimizelegibility;letter-spacing:0;--ink:#20242a;--muted:#69717b;--faint:#8d949d;--canvas:#f2f4f5;--surface:#fff;--surface-muted:#f7f8f9;--border:#d9dde2;--border-strong:#bdc3ca;--accent:#0f6b64;--accent-hover:#0b5853;--success:#167548;--warning:#a65f00;--danger:#b8322a;--info:#2368a2;background:#f2f4f5;font-family:Segoe UI,Microsoft YaHei UI,sans-serif}*{box-sizing:border-box}html,body,#app{min-width:320px;min-height:100%;margin:0}body{background:var(--canvas);min-height:100vh}button,input,select{font:inherit;letter-spacing:0}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #0f6b6433}button:disabled,a.disabled{cursor:not-allowed;opacity:.45;pointer-events:none}code{overflow-wrap:anywhere;color:#3d454e;font-family:Cascadia Mono,Consolas,monospace;font-size:.88em}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;gap:10px;display:flex}.spinning{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-layout{background:#20242a;place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{background:#fff;border:1px solid #3d434b;border-radius:8px;gap:22px;width:min(100%,390px);padding:34px;display:grid}.brand-mark{color:#fff;background:var(--accent);border-radius:7px;place-items:center;width:46px;height:46px;display:grid}.product-name,.section-kicker{color:var(--muted);text-transform:uppercase;margin:0 0 4px;font-size:12px;font-weight:700}.login-panel h1,.section-heading h2,.detail-header h2{color:var(--ink);letter-spacing:0;margin:0;font-size:24px;line-height:1.25}.login-form,.build-form{gap:16px;display:grid}.login-form label,.field-grid label,.conditional-block>label{color:#414850;gap:7px;font-size:13px;font-weight:600;display:grid}.login-form .login-option{cursor:pointer;align-items:center;gap:9px;font-weight:500;display:flex}.login-option input{width:17px;height:17px;min-height:17px;accent-color:var(--accent);margin:0}input,select{border:1px solid var(--border-strong);width:100%;min-height:40px;color:var(--ink);background:#fff;border-radius:5px}input{padding:9px 11px}select{padding:8px 32px 8px 10px}input:hover,select:hover{border-color:#8d969f}.primary-command,.secondary-command,.icon-command{cursor:pointer;border-radius:5px;justify-content:center;align-items:center;gap:8px;min-height:38px;text-decoration:none;display:inline-flex}.primary-command{border:1px solid var(--accent);color:#fff;background:var(--accent);padding:9px 15px;font-weight:700}.primary-command:hover:not(:disabled){border-color:var(--accent-hover);background:var(--accent-hover)}.secondary-command{border:1px solid var(--border-strong);color:var(--ink);background:#fff;padding:8px 12px;font-size:13px;font-weight:600}.icon-command{color:#eef1f3;background:0 0;border:1px solid #4c535c;width:38px;min-width:38px;padding:0}.icon-command:hover:not(:disabled){background:#ffffff1a}.icon-command.light{border-color:var(--border);color:#4b535c;background:#fff}.icon-command.light:hover:not(:disabled){background:var(--surface-muted);border-color:#9ba3ab}.login-command{width:100%;margin-top:4px}.form-error,.form-success,.configuration-warning,.queue-error{border-radius:5px;margin:0;padding:10px 12px;font-size:13px;line-height:1.45}.form-error,.queue-error{color:#86231d;background:#fff2f1;border:1px solid #e7b4b0}.form-success{color:#11613b;background:#effaf4;border:1px solid #a9d6bf}.configuration-warning{color:#7c4908;background:#fff8eb;border:1px solid #e2c18d}.app-shell{min-height:100vh}.topbar{z-index:20;color:#f4f5f6;background:#20242a;border-bottom:1px solid #343a42;grid-template-columns:minmax(210px,1fr) auto minmax(340px,1fr);align-items:center;gap:22px;min-height:66px;padding:10px max(20px,50vw - 790px);display:grid;position:sticky;top:0}.topbar-brand,.topbar-actions,.machine-state,.github-state,.user-state{align-items:center;display:flex}.topbar-brand{gap:11px}.brand-symbol{color:#fff;background:var(--accent);border-radius:5px;flex:0 0 36px;place-items:center;width:36px;height:36px;font-weight:800;display:grid}.topbar-brand>div{gap:2px;display:grid}.topbar-brand strong{font-size:15px}.topbar-brand span:not(.brand-symbol){color:#aeb5bd;font-size:11px}.machine-state{color:#cbd0d6;border:1px solid #474e57;border-radius:5px;gap:8px;min-height:36px;padding:6px 12px;font-size:12px}.machine-state.active{border-color:#6f906e}.machine-state strong{color:#fff}.state-divider{background:#4b525a;width:1px;height:18px;margin:0 2px}.topbar-actions{justify-content:flex-end;gap:9px}.github-state,.user-state{color:#d6dadf;gap:7px;min-height:34px;font-size:12px}.github-state{color:#9fdbc0}.github-state.offline{color:#f0bd75}.user-state{border-left:1px solid #454b53;padding:0 10px}.workspace{background:var(--surface);grid-template-columns:minmax(330px,370px) minmax(0,1fr);width:min(100%,1600px);min-height:calc(100vh - 66px);margin:0 auto;display:grid}.build-section,.queue-section{min-width:0;padding:26px}.build-section{border-right:1px solid var(--border);background:var(--surface-muted)}.section-heading{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:22px;display:flex}.section-heading h2,.detail-header h2{font-size:19px}.serial-badge{color:#0f5b55;white-space:nowrap;background:#edf8f6;border:1px solid #a8ccc4;border-radius:5px;align-items:center;gap:6px;min-height:30px;padding:5px 8px;font-size:12px;font-weight:700;display:inline-flex}.build-form fieldset{border:0;min-width:0;margin:0;padding:0}.build-form legend{color:#414850;margin-bottom:9px;font-size:13px;font-weight:700}.component-segments{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.component-option{border:1px solid var(--border-strong);min-height:63px;color:var(--ink);cursor:pointer;text-align:left;background:#fff;border-radius:5px;align-content:center;gap:3px;padding:9px 28px 9px 10px;display:grid;position:relative}.component-option:hover:not(:disabled){border-color:#7b878f}.component-option.selected{border-color:var(--accent);color:#0b514c;background:#f0faf8}.component-option.blocked{color:var(--faint);background:#f0f1f2}.component-option span{overflow-wrap:anywhere;min-width:0;font-size:13px;font-weight:700}.component-option small{color:var(--muted);font-size:10px}.component-option svg{color:var(--accent);position:absolute;top:10px;right:9px}.field-grid{gap:13px;display:grid}.conditional-block{border:1px solid var(--border);background:#fff;border-radius:5px;gap:10px;padding:13px;display:grid}.inline-state,.locked-artifact{min-width:0;color:var(--muted);align-items:center;gap:8px;font-size:12px;display:flex}.locked-artifact{gap:3px;padding-top:4px;display:grid}.locked-artifact strong{overflow-wrap:anywhere;color:#1c5e43;min-width:0;font-family:Cascadia Mono,Consolas,monospace;font-size:11px}.empty-note{color:var(--muted);margin:0;font-size:12px;line-height:1.5}.confirmation-row{color:#794707;cursor:pointer;background:#fff8ec;border:1px solid #e0ba7c;border-radius:5px;align-items:flex-start;gap:9px;padding:11px;font-size:12px;line-height:1.5;display:flex}.confirmation-row input{width:16px;min-width:16px;min-height:16px;accent-color:var(--accent);margin:2px 0 0}.confirmation-row span{align-items:flex-start;gap:7px;display:flex}.confirmation-row svg{flex:none}.submission-bar{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding-top:15px;display:flex}.submission-context{min-width:0;color:var(--muted);gap:2px;font-size:11px;display:grid}.submission-context span{color:var(--ink);font-size:13px;font-weight:700}.section-loading,.detail-loading{color:var(--muted);align-items:center;gap:9px;display:flex}.queue-section{background:#fff}.queue-heading{margin-bottom:18px}.queue-total{color:var(--muted);align-items:baseline;gap:4px;font-size:12px;display:flex}.queue-total strong{color:var(--ink);font-size:20px}.queue-toolbar{grid-template-columns:minmax(180px,1fr) repeat(3,minmax(120px,auto)) 38px;gap:8px;margin-bottom:14px;display:grid}.queue-toolbar select,.queue-toolbar input{min-height:38px;font-size:12px}.search-field,.filter-field{position:relative}.search-field svg,.filter-field svg{z-index:1;color:var(--muted);pointer-events:none;position:absolute;top:11px;left:10px}.search-field input,.filter-field select{padding-left:34px}.queue-error{margin-bottom:12px}.task-table-wrap{border:1px solid var(--border);overflow-x:auto}.task-table{border-collapse:collapse;width:100%;min-width:800px;font-size:12px}.task-table th,.task-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #e5e8eb;padding:11px 10px}.task-table th{color:#58616b;background:var(--surface-muted);white-space:nowrap;font-size:11px;font-weight:700}.task-table tr:last-child td{border-bottom:0}.task-table tbody tr:hover{background:#fafbfb}.task-table td>strong,.task-table td>code,.task-table td>small,.task-table td>time,.requester{display:block}.task-table td>small,.request-id{color:var(--muted);margin-top:3px;font-size:10px}.run-number{font-size:12px}.status-pill{border:1px solid var(--border);color:#555e67;white-space:nowrap;background:#f7f8f9;border-radius:5px;align-items:center;gap:6px;min-height:25px;padding:3px 7px;font-size:11px;font-weight:700;display:inline-flex}.status-pill i{background:currentColor;border-radius:50%;width:7px;height:7px}.status-submitting,.status-queued{color:#8b560e;background:#fff9ef;border-color:#e1c89f}.status-running{color:#1c6393;background:#f1f8fc;border-color:#9ec4df}.status-success{color:#17683f;background:#f0faf5;border-color:#add1bd}.status-failure,.status-cancelled{color:#97312b;background:#fff3f2;border-color:#dfb0ac}.status-cancelled{color:#656c74;background:#f5f6f7;border-color:#c9cdd2}.row-actions{justify-content:flex-end;gap:5px;display:flex}.queue-empty,.detail-empty{color:var(--muted);text-align:center;padding:34px;font-size:13px}.mobile-task-list{display:none}.queue-footer{color:var(--muted);justify-content:space-between;gap:12px;padding-top:10px;font-size:11px;display:flex}.detail-overlay{z-index:100;background:#14171b85;justify-content:flex-end;display:flex;position:fixed;inset:0}.detail-panel{background:#fff;border-left:1px solid #979da5;width:min(100%,560px);height:100%;overflow-y:auto;box-shadow:-12px 0 30px #00000026}.detail-header{z-index:2;border-bottom:1px solid var(--border);background:#fff;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px;display:flex;position:sticky;top:0}.detail-loading,.detail-panel>.form-error{margin:22px}.detail-summary{align-items:center;gap:10px;min-width:0;padding:20px 22px 14px;display:flex}.detail-summary strong{overflow-wrap:anywhere;flex:1;min-width:0;font-size:14px}.detail-summary a{color:var(--info);align-items:center;gap:4px;font-size:12px;text-decoration:none;display:inline-flex}.detail-meta{border:1px solid var(--border);background:var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0 22px 22px;display:grid}.detail-meta>div{background:#fff;min-width:0;padding:10px}.detail-meta .wide{grid-column:1/-1}.detail-meta dt{color:var(--muted);margin-bottom:4px;font-size:10px}.detail-meta dd{overflow-wrap:anywhere;min-width:0;margin:0;font-size:12px;font-weight:600}.detail-section{margin:0 22px 24px}.detail-section-title{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.detail-section-title h3{margin:0;font-size:14px}.detail-section-title span{min-width:24px;height:24px;color:var(--muted);background:#eef0f2;border-radius:5px;place-items:center;font-size:11px;display:grid}.job-list{border:1px solid var(--border);margin:0;padding:0;list-style:none}.job-item{border-bottom:1px solid #e6e8eb}.job-item:last-child{border-bottom:0}.job-row{grid-template-columns:10px minmax(0,1fr) auto auto;align-items:center;gap:9px;min-height:48px;padding:8px 10px;display:grid}.job-row>div{gap:2px;min-width:0;display:grid}.job-list strong{overflow-wrap:anywhere;font-size:12px}.job-list span,.job-list time{color:var(--muted);font-size:10px}.job-log-command{border:1px solid var(--border);color:#3f596c;cursor:pointer;white-space:nowrap;background:#fff;border-radius:5px;align-items:center;gap:5px;min-height:30px;padding:5px 8px;font-size:11px;font-weight:600;display:inline-flex}.job-log-command:hover{background:var(--surface-muted);border-color:#9ba3ab}.job-log-panel{background:#f6f7f8;border-top:1px solid #e6e8eb;min-width:0;padding:10px}.job-log-toolbar{justify-content:space-between;align-items:center;gap:10px;min-width:0;margin-bottom:8px;display:flex}.job-log-toolbar>strong{overflow-wrap:anywhere;min-width:0}.job-log-toolbar .icon-command{width:32px;min-width:32px;min-height:32px}.job-log-panel pre{color:#e8eaed;white-space:pre;background:#20242a;border:1px solid #cbd0d6;max-height:420px;margin:0;padding:11px;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;line-height:1.55;overflow:auto}.job-log-state{min-height:44px;color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.job-indicator{background:var(--warning);border-radius:50%;width:8px;height:8px}.job-success{background:var(--success)}.job-failure,.job-cancelled{background:var(--danger)}.job-skipped{background:#999fa6}.artifact-section{padding-bottom:20px}.artifact-row{border:1px solid var(--border);border-bottom:0;grid-template-columns:22px minmax(0,1fr) 38px;align-items:center;gap:10px;min-width:0;padding:11px;display:grid}.artifact-row:last-child{border-bottom:1px solid var(--border)}.artifact-row>svg{color:var(--accent)}.artifact-row>div{gap:3px;min-width:0;display:grid}.artifact-row strong,.artifact-row code{overflow-wrap:anywhere}.artifact-row strong{font-size:12px}.artifact-row span,.artifact-row code{color:var(--muted);font-size:10px}@media (width<=1180px){.topbar{grid-template-columns:1fr auto}.machine-state{grid-area:2/1/auto/-1;justify-content:center;justify-self:stretch}.queue-toolbar{grid-template-columns:minmax(180px,1fr) repeat(2,minmax(120px,auto)) 38px}.filter-field{grid-column:1/2}}@media (width<=900px){.workspace{grid-template-columns:1fr}.build-section{border-right:0;border-bottom:1px solid var(--border)}.field-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=760px){.topbar{grid-template-columns:1fr;gap:10px;padding:12px 14px;position:static}.topbar-actions{flex-wrap:wrap;justify-content:flex-start}.machine-state{grid-area:auto;justify-content:flex-start;overflow-x:auto}.github-state{flex:1}.user-state{border-left:0;max-width:140px;padding-left:0;overflow:hidden}.user-state span{text-overflow:ellipsis;overflow:hidden}.build-section,.queue-section{padding:20px 14px}.field-grid{grid-template-columns:1fr}.queue-toolbar{grid-template-columns:minmax(0,1fr) 38px}.search-field,.filter-field,.queue-toolbar>select{grid-column:1/-1}.queue-toolbar>.icon-command{grid-area:1/2}.search-field{grid-area:1/1}.task-table-wrap{display:none}.mobile-task-list{gap:9px;display:grid}.task-card{border:1px solid var(--border);background:#fff;border-radius:6px;padding:12px}.task-card-head,.task-card-main,.task-card-actions{justify-content:space-between;align-items:center;gap:10px;display:flex}.task-card-main{justify-content:flex-start;margin:11px 0}.task-card dl{border-top:1px solid #eceef0;border-bottom:1px solid #eceef0;gap:6px;margin:0 0 12px;padding:9px 0;display:grid}.task-card dl>div{grid-template-columns:70px minmax(0,1fr);gap:8px;min-width:0;display:grid}.task-card dt,.task-card dd{overflow-wrap:anywhere;min-width:0;margin:0;font-size:11px}.task-card dt{color:var(--muted)}.task-card-actions{justify-content:flex-end}.queue-footer{flex-direction:column;align-items:flex-start}.detail-panel{border-left:0;width:100%}}@media (width<=430px){.login-layout{padding:14px}.login-panel{padding:24px 20px}.component-segments{grid-template-columns:1fr}.section-heading{align-items:flex-start}.serial-badge{white-space:normal}.submission-bar{flex-direction:column;align-items:stretch}.submission-bar .primary-command{width:100%}.detail-summary{flex-wrap:wrap;align-items:flex-start}.detail-meta{grid-template-columns:1fr}.detail-meta .wide{grid-column:auto}.job-row{grid-template-columns:10px minmax(0,1fr) auto}.job-row time{display:none}.job-log-command{grid-column:2/-1;justify-self:start}}@media (prefers-reduced-motion:reduce){.spinning{animation-duration:2s}}
