:root{--bg:#faf9f8;--surface:#fff;--surface-2:#f3f2f1;--hover:#f3f2f1;--selected:#eff6fc;--border:#e1dfdd;--border-strong:#c8c6c4;--text:#201f1e;--text-2:#605e5c;--text-3:#8a8886;--primary:#0078d4;--primary-hover:#106ebe;--primary-text:#fff;--link:#0062ad;--success:#107c10;--success-bg:#dff6dd;--danger:#d13438;--danger-bg:#fde7e9;--warning:#c19c00;--warning-bg:#fff4ce;--info:#0078d4;--info-bg:#deecf9;--console-bg:#1e1e1e;--console-text:#d4d4d4;--shadow:0 6px 16px #0000001f, 0 1px 3px #00000014;--radius:4px;--font:"Segoe UI", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Roboto, sans-serif;--mono:"Cascadia Code", "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1a19;--surface:#252423;--surface-2:#2f2e2d;--hover:#323130;--selected:#0b2d4a;--border:#3b3a39;--border-strong:#605e5c;--text:#f3f2f1;--text-2:#c8c6c4;--text-3:#a19f9d;--primary:#2b88d8;--primary-hover:#479ef5;--link:#62abf5;--success:#54b054;--success-bg:#1d3a1d;--danger:#f1707b;--danger-bg:#442726;--warning:#fce100;--warning-bg:#433519;--info-bg:#0b2d4a;--console-bg:#111;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}code,.mono{font-family:var(--mono);font-size:12.5px}svg.i{flex:none;width:16px;height:16px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:24px;height:48px;padding:0 16px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.brand:hover{text-decoration:none}.brand-mark{background:var(--primary);color:#fff;border-radius:6px;flex:none;place-items:center;width:26px;height:26px;display:grid}.brand-mark.lg{border-radius:10px;width:44px;height:44px}.topnav{flex:1;gap:4px;min-width:0;display:flex;overflow-x:auto}.topnav a{color:var(--text-2);border-radius:var(--radius);white-space:nowrap;padding:6px 12px;font-weight:500}.topnav a:hover{background:var(--hover);color:var(--text);text-decoration:none}.topnav a.active{color:var(--text);background:var(--surface-2)}.me{color:var(--text-2);align-items:center;gap:10px;display:flex}.shell{height:calc(100vh - 48px);display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex:none;width:340px;display:flex}.main{background:var(--surface);flex:1;min-width:0;overflow:auto}.main.full{height:calc(100vh - 48px)}.page{max-width:1400px;padding:24px 32px 48px}.page.narrow{max-width:900px}.search{border-bottom:1px solid var(--border-strong);align-items:center;gap:8px;margin:20px 24px 8px;padding:6px 4px;display:flex}.search input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:15px}.search:focus-within{border-bottom-color:var(--primary)}.side-tools{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:6px 20px 8px;display:flex}.side-tools .spacer{flex:1}.side-list{flex:1;overflow:auto}.side-item{cursor:pointer;height:64px;color:var(--text);border-left:3px solid #0000;align-items:center;gap:8px;padding:0 16px 0 34px;display:flex}.side-item:hover{background:var(--hover);text-decoration:none}.side-item.active{background:var(--selected);border-left-color:var(--primary);font-weight:600}.side-item .name-wrap{flex-direction:column;flex:1;min-width:0;display:flex}.side-item .name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.side-item .project{text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:12px;font-weight:400;overflow:hidden}.title-block{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.title-block h1{flex:none}.star{color:var(--text-3);opacity:0}.side-item:hover .star,.side-item.active .star,.star.on{opacity:1}.star.on{color:#ffb900}.side-empty{color:var(--text-3);padding:24px 34px}.btn{background:var(--surface-2);height:32px;color:var(--text);cursor:pointer;white-space:nowrap;border:0;border-radius:2px;align-items:center;gap:8px;padding:0 14px;font-weight:600;display:inline-flex}.btn:hover{background:var(--border)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--primary);color:var(--primary-text)}.btn.primary:hover{background:var(--primary-hover)}.btn.danger{background:var(--danger);color:#fff}.btn.ghost{background:0 0;font-weight:500}.btn.ghost:hover{background:var(--hover)}.btn.sm{height:26px;padding:0 10px;font-size:13px}.btn.block{justify-content:center;width:100%}.icon-btn{cursor:pointer;width:32px;height:32px;color:var(--text-2);background:0 0;border:0;border-radius:2px;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--hover);color:var(--text)}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn.active{color:var(--primary);box-shadow:inset 0 -2px 0 var(--primary)}.page-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.page-head h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:20px;font-weight:600;overflow:hidden}.crumbs{color:var(--text-2);align-items:center;gap:6px;margin-bottom:6px;font-size:13px;display:flex}.crumbs a{align-items:center;gap:4px;display:inline-flex}.tabs-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;margin-bottom:8px;display:flex}.tabs{flex:1;gap:24px;display:flex}.tabs a{color:var(--text);border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 0;font-size:15px}.tabs a:hover{color:var(--text);text-decoration:none}.tabs a.active{border-bottom-color:var(--primary);font-weight:600}.image-ref{color:var(--text-2);align-items:center;gap:6px;min-width:0;display:inline-flex;overflow:hidden}.image-ref code{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--text-2);border-bottom:1px solid var(--border);padding:14px 12px;font-size:13px;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:12px}.table tr.clickable{cursor:pointer}.table tbody tr:hover{background:var(--hover)}.table.releases td{border-bottom:0;padding:14px 12px}.rel-cell{align-items:center;gap:18px;display:flex}.rel-name{color:var(--link);font-size:16px;font-weight:600}.rel-meta{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:4px 16px;margin-top:4px;font-size:14px;display:flex}.rel-meta span{align-items:center;gap:5px;display:inline-flex}.rel-title{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;max-width:520px;margin-top:2px;font-size:13px;overflow:hidden}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.nowrap{white-space:nowrap}.right{text-align:right}.inline{align-items:center;gap:8px;display:inline-flex}.avatar{color:#fff;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:13px;font-weight:600;display:grid}.avatar.sm{width:26px;height:26px;font-size:11px}.chips{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--border-strong);background:var(--surface);min-width:108px;height:28px;color:var(--text-2);cursor:pointer;border-radius:2px;align-items:center;gap:6px;padding:0 10px;font-size:13.5px;display:inline-flex}.chip:hover{border-color:var(--text-3)}.chip.current{color:var(--text);font-weight:500}.chip.current.succeeded{background:var(--success-bg);border-color:var(--success)}.chip.current.failed{background:var(--danger-bg);border-color:var(--danger)}.chip.current.in_progress,.chip.current.queued{background:var(--info-bg);border-color:var(--info)}.chip .live{background:var(--success);border-radius:50%;width:6px;height:6px;margin-left:4px}.status-ico{border-radius:50%;flex:none;place-items:center;width:16px;height:16px;display:inline-grid}.status-ico svg{width:10px;height:10px}.status-ico.succeeded{background:var(--success);color:#fff}.status-ico.failed{background:var(--danger);color:#fff}.status-ico.queued{border:2px solid var(--info)}.status-ico.in_progress{border:2px solid var(--info);border-top-color:#0000;animation:.9s linear infinite spin}.status-ico.none{border:1.5px dashed var(--text-3)}@keyframes spin{to{transform:rotate(360deg)}}.pill{background:var(--surface-2);color:var(--text-2);white-space:nowrap;border-radius:10px;align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.pill.succeeded{background:var(--success-bg);color:var(--success)}.pill.failed{background:var(--danger-bg);color:var(--danger)}.pill.in_progress,.pill.queued{background:var(--info-bg);color:var(--info)}.pill.protected{background:var(--danger-bg);color:var(--danger)}.pill.env{background:var(--warning-bg);color:var(--text)}.menu{z-index:50;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);min-width:200px;padding:4px 0;position:fixed}.menu-head{color:var(--text-3);border-bottom:1px solid var(--border);margin-bottom:4px;padding:8px 14px 6px;font-size:12px}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:8px 14px;display:flex}.menu button:hover{background:var(--hover)}.menu button.danger{color:var(--danger)}.pipeline{align-items:stretch;padding:8px 0 24px;display:flex;overflow-x:auto}.artifact,.stage{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:none;width:260px;box-shadow:0 1px 2px #0000000f}.artifact{background:var(--surface-2);align-self:center;padding:14px 16px}.artifact h4{color:var(--text-2);text-transform:uppercase;letter-spacing:.03em;margin:0 0 8px;font-size:12px;font-weight:600}.artifact .line{align-items:center;gap:6px;margin-top:6px;display:flex}.connector{flex:none;width:36px;position:relative}.connector:before{content:"";border-top:2px solid var(--border-strong);position:absolute;top:50%;left:0;right:0}.stages-col{flex-direction:column;gap:12px;display:flex}.stage{border-left:4px solid var(--tenant,var(--primary));padding:12px 14px}.stage-title{align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.stage-status{color:var(--text-2);align-items:center;gap:6px;margin:8px 0 10px;font-size:13px;display:flex}.stage-actions{gap:6px;display:flex}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 24px;margin:4px 0 24px;display:grid}.kv .k{color:var(--text-3);margin-bottom:2px;font-size:12px}.kv .v{word-break:break-all;font-weight:500}.kv.wide{grid-column:1/-1}.kv.wide .v{white-space:pre-wrap;word-break:normal;font-weight:400}.section-title{align-items:center;gap:10px;margin:24px 0 8px;font-size:16px;font-weight:600;display:flex}.console{background:var(--console-bg);color:var(--console-text);font-family:var(--mono);border-radius:var(--radius);white-space:pre-wrap;word-break:break-all;max-height:60vh;margin:0;padding:14px 16px;font-size:12.5px;line-height:1.55;overflow:auto}.console .err{color:#f48771}.cards{gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card-head{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 16px;display:flex}.card-head h3{flex:1;min-width:0;margin:0;font-size:16px}.card-body{padding:4px}.card-pad{padding:16px}.dot{border-radius:50%;flex:none;width:12px;height:12px}.empty{text-align:center;color:var(--text-2);padding:48px 24px}.empty h3{color:var(--text);margin:12px 0 6px;font-size:18px}.tiles{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin:16px 0 8px;display:grid}.tile{border:1px solid var(--border);border-radius:var(--radius);padding:16px}.tile .label{color:var(--text-2);font-size:13px}.tile .value{margin-top:6px;font-size:28px;font-weight:600}.bar{background:var(--surface-2);border-radius:5px;min-width:140px;height:10px;display:flex;overflow:hidden}.bar .ok{background:var(--success)}.bar .ko{background:var(--danger)}.cols{border-bottom:1px solid var(--border);align-items:flex-end;gap:4px;height:140px;padding:8px 0;display:flex}.cols .col{background:var(--primary);border-radius:2px 2px 0 0;flex:1;max-width:28px;min-height:2px;position:relative}.cols .col .fail{background:var(--danger);position:absolute;bottom:0;left:0;right:0}dialog{border-radius:var(--radius);box-shadow:var(--shadow);background:var(--surface);width:min(640px,100vw - 32px);color:var(--text);border:0;padding:0}dialog.wide{width:min(980px,100vw - 32px)}dialog::backdrop{background:#0006}.dlg-head{align-items:center;padding:18px 24px 8px;display:flex}.dlg-head h2{flex:1;margin:0;font-size:20px;font-weight:600}.dlg-body{max-height:70vh;padding:8px 24px 16px;overflow:auto}.dlg-foot{justify-content:flex-end;gap:8px;padding:12px 24px 20px;display:flex}.field{flex-direction:column;gap:5px;margin-bottom:14px;display:flex}.field>label{font-size:13px;font-weight:600}.field .hint{color:var(--text-3);font-size:12px}.row{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}input[type=text],input[type=password],input[type=number],input:not([type]),select,textarea{border:1px solid var(--border-strong);background:var(--surface);border-radius:2px;width:100%;min-height:32px;padding:6px 8px}textarea{resize:vertical;min-height:64px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:#0000}.check{cursor:pointer;align-items:center;gap:8px;padding:4px 0;display:flex}.check input{width:16px;height:16px;margin:0}.stage-editor{border:1px solid var(--border);border-radius:var(--radius)}.stage-editor .se-row{border-bottom:1px solid var(--border);grid-template-columns:1.1fr 1.4fr 1.6fr auto auto;align-items:center;gap:8px;padding:8px 10px;display:grid}.stage-editor .se-head{color:var(--text-2);font-size:12px;font-weight:600}.stage-editor .se-row:last-child{border-bottom:0}.tag-check{flex-direction:column;grid-column:1/-1;gap:4px;padding:2px 2px 4px;font-size:13px;display:flex}.callout{background:var(--surface-2);border-radius:var(--radius);padding:12px 14px;font-size:13px}.callout.warn{background:var(--warning-bg)}.callout.danger{background:var(--danger-bg)}.error-text{color:var(--danger);min-height:18px;font-size:13px}.copy{gap:6px;display:flex}.copy input{font-family:var(--mono);font-size:12px}.seg{border:1px solid var(--border-strong);border-radius:2px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;background:0 0;border:0;padding:5px 12px}.seg button.on{background:var(--primary);color:#fff}.picker{border:1px solid var(--border);border-radius:var(--radius);max-height:260px;overflow:auto}.picker-item{border-bottom:1px solid var(--border);cursor:pointer;text-align:left;background:0 0;border-top:0;border-left:0;border-right:0;align-items:center;gap:10px;width:100%;padding:8px 12px;display:flex}.picker-item:last-child{border-bottom:0}.picker-item:hover{background:var(--hover)}.picker-item.on{background:var(--selected);box-shadow:inset 3px 0 0 var(--primary)}.picker-item .grow{flex:1;min-width:0}.picker-item .title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-item .sub{color:var(--text-3);font-size:12px}.picker-empty{color:var(--text-3);text-align:center;padding:16px}.login-wrap{place-items:center;min-height:100vh;padding:16px;display:grid}.login{background:var(--surface);border-radius:var(--radius);width:min(380px,100%);box-shadow:var(--shadow);padding:32px}.login h1{margin:16px 0 4px;font-size:22px}#toasts{z-index:100;flex-direction:column;gap:8px;width:max-content;max-width:calc(100vw - 32px);display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{color:#fff;border-radius:var(--radius);box-shadow:var(--shadow);background:#323130;padding:10px 16px}.toast.error{background:#a4262c}@media (width<=860px){.shell{flex-direction:column;height:auto}.sidebar{border-right:0;border-bottom:1px solid var(--border);width:100%;max-height:260px}.side-item{height:48px;padding-left:20px}.page{padding:16px}.topbar{gap:12px}.topnav a{padding:6px 8px}.me .who,.table.releases thead{display:none}.table.releases tr{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:8px 0;display:flex}.table.releases td{padding:4px 12px}.row,.stage-editor .se-row{grid-template-columns:1fr}.stage-editor .se-head{display:none}.pipeline{flex-direction:column;gap:12px}.connector{display:none}.artifact,.stage{width:100%}.tabs-row{flex-wrap:wrap}}.changes-sub{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 10px;display:flex}.files{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.files-head{background:var(--surface-2);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.files-filter{width:200px!important;min-height:26px!important;padding:3px 8px!important}.file+.file{border-top:1px solid var(--border)}.file-row{cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:7px 12px;display:flex}.file-row:hover:not(:disabled){background:var(--hover)}.file-row:disabled{cursor:default}.file-path{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.file-status{color:#fff;border-radius:3px;flex:none;place-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:grid}.file-status.added{background:var(--success)}.file-status.modified{background:var(--info)}.file-status.deleted{background:var(--danger)}.file-status.renamed{background:#8764b8}.add-count{color:var(--success);font-family:var(--mono);font-size:12.5px}.del-count{color:var(--danger);font-family:var(--mono);font-size:12.5px}.diff{background:var(--surface);border-top:1px solid var(--border);font-family:var(--mono);max-height:480px;margin:0;padding:8px 0;font-size:12px;line-height:1.5;overflow-x:auto}.diff span{white-space:pre;min-height:1.5em;padding:0 12px;display:block}.diff .add{background:var(--success-bg)}.diff .del{background:var(--danger-bg)}.diff .hunk{color:var(--info);background:var(--info-bg)}.commits{border:1px solid var(--border);border-radius:var(--radius);max-height:280px;margin-bottom:12px;overflow:auto}.commit{align-items:center;gap:10px;padding:7px 12px;display:flex}.commit+.commit{border-top:1px solid var(--border)}.commit .grow{flex-direction:column;flex:1;min-width:0;display:flex}.commit .title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.commit .sub{color:var(--text-3);font-size:12px}
