:root{color:#16221f;background:#eef2f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body{height:100%}body{margin:0;min-width:320px;overflow:hidden}#app{height:100%}button,input,select,textarea{font:inherit}button{cursor:pointer}.login-shell{display:grid;height:100dvh;overflow:auto;place-items:center;background:linear-gradient(135deg,rgba(19,122,91,.08),transparent 34%),#eef2f1;padding:24px}.login-panel{display:grid;width:min(100%,430px);gap:18px;border:1px solid #d7dedb;border-radius:8px;background:#fff;padding:24px}.login-panel h1{margin:0;font-size:26px;line-height:1.18}.login-panel label{display:grid;gap:7px;color:#425955;font-size:13px;font-weight:700}.login-panel input{width:100%;min-height:44px;border:1px solid #cad4d0;border-radius:8px;background:#fbfdfc;color:#182623;padding:0 12px}.login-brand{margin-bottom:4px;color:#16221f}.login-brand span{color:#607873}.shell{display:grid;height:100dvh;grid-template-columns:260px minmax(0,1fr);overflow:hidden}.sidebar{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain;border-right:1px solid #d7dedb;background:#15211f;color:#f6fbf8;padding:24px 18px}.brand{display:flex;align-items:center;gap:12px;margin-bottom:34px}.brand strong{display:block;font-size:20px}.brand span{display:block;color:#a8bab3;font-size:12px;margin-top:2px}.nav-list{display:grid;gap:8px}.nav-item{display:flex;align-items:center;min-height:42px;gap:10px;border-radius:8px;color:#c7d8d2;padding:0 12px;text-decoration:none}.nav-item--active,.nav-item:hover{background:#223330;color:#fff}.workspace{min-width:0;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:28px;scrollbar-gutter:stable}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:22px}.topbar-actions{display:flex;align-items:center;gap:10px}.user-chip{display:inline-flex;align-items:center;min-height:34px;max-width:180px;overflow:hidden;border:1px solid #d9e0dd;border-radius:999px;background:#fff;color:#39524d;font-size:13px;font-weight:700;padding:0 12px;text-overflow:ellipsis;white-space:nowrap}.topbar h1,.panel h2{margin:0;letter-spacing:0}.topbar h1{max-width:820px;font-size:32px;line-height:1.16}.eyebrow{margin:0 0 6px;color:#58706b;font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.icon-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;border:0}.icon-button{width:42px;height:42px;flex:0 0 auto;border-radius:8px;background:#fff;color:#16221f;box-shadow:inset 0 0 0 1px #d9e0dd}.primary-button{min-height:44px;gap:8px;border-radius:8px;background:#137a5b;color:#fff;font-weight:700;padding:0 16px}.ghost-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;min-height:36px;gap:6px;border-radius:8px;font-weight:700;padding:0 12px}.ghost-button{border:1px solid #cdd8d4;background:#fff;color:#1d302b}.danger-button{border:1px solid #f0b3a5;background:#fff1ed;color:#a4341d}.danger-button:disabled{cursor:not-allowed;opacity:.45}.primary-button:disabled{cursor:not-allowed;opacity:.6}.panel{border:1px solid #d7dedb;border-radius:8px;background:#fff}.panel{min-width:0;padding:18px}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.panel-header h2{font-size:20px}.empty-state{margin:0;border:1px dashed #c7d4cf;border-radius:8px;background:#fbfdfc;color:#607873;padding:16px}.toast-viewport{position:fixed;top:18px;right:18px;z-index:1000;display:grid;width:min(420px,calc(100vw - 32px));gap:10px;pointer-events:none}.toast-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px;border:1px solid #d8e0dd;border-left-width:4px;border-radius:8px;background:#fff;box-shadow:0 12px 32px #111f1c29;color:#16221f;padding:13px 12px;pointer-events:auto}.toast-card--success{border-left-color:#1c8b5a}.toast-card--error{border-left-color:#c3422b}.toast-card--warning{border-left-color:#b7791f}.toast-card--info{border-left-color:#2c6fb3}.toast-icon{margin-top:2px}.toast-card--success .toast-icon{color:#1c8b5a}.toast-card--error .toast-icon{color:#c3422b}.toast-card--warning .toast-icon{color:#b7791f}.toast-card--info .toast-icon{color:#2c6fb3}.toast-copy{min-width:0}.toast-copy strong{display:block;font-size:14px;line-height:1.35}.toast-copy p{margin:3px 0 0;color:#536a65;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.toast-close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:#607873}.toast-close:hover{background:#eef4f1;color:#16221f}.text-link{color:#126a94;font-size:13px;font-weight:800;text-decoration:none}.text-link:hover{text-decoration:underline}.project-directory{display:grid;gap:18px}.directory-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px}.directory-toolbar h2{margin:0;font-size:24px}.directory-toolbar p{margin:6px 0 0;color:#607873;font-size:14px}.search-box{display:flex;align-items:center;width:min(360px,100%);min-height:42px;gap:8px;border:1px solid #cad4d0;border-radius:8px;background:#fff;color:#607873;padding:0 12px}.search-box input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#16221f}.project-import-panel{display:grid;gap:14px}.project-import-grid{display:grid;grid-template-columns:minmax(160px,.55fr) minmax(260px,1.3fr) minmax(140px,.45fr) minmax(150px,.55fr);gap:14px}.project-import-grid label{display:grid;gap:7px;color:#425955;font-size:13px;font-weight:800}.project-import-grid input{width:100%;min-height:42px;border:1px solid #cad4d0;border-radius:8px;background:#fbfdfc;color:#182623;padding:0 12px}.project-import-actions{display:flex;flex-wrap:wrap;gap:10px}.project-card-grid{display:grid;gap:12px}.project-select-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:14px;border:1px solid #d7dedb;border-radius:8px;background:#fff;color:#16221f;padding:16px;text-decoration:none}.project-select-card:hover{border-color:#137a5b;background:#f8fcfa}.project-card-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:8px;background:#e7f7ef;color:#137a5b}.project-card-main,.project-card-meta{min-width:0}.project-card-main strong,.project-card-main small,.project-card-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-card-main small,.project-card-meta small{color:#607873;font-size:13px}.project-card-main strong{font-size:16px}.project-card-meta{display:grid;justify-items:end;gap:5px;text-align:right}.project-card-meta em{border-radius:999px;background:#e6efec;color:#39524d;font-size:12px;font-style:normal;font-weight:800;padding:4px 8px;white-space:nowrap}.project-card-meta small{display:inline-flex;align-items:center;max-width:220px;gap:4px}.project-card-arrow{color:#80948e}.project-detail{display:grid;gap:18px}.back-link{display:inline-flex;width:fit-content;align-items:center;gap:7px;color:#126a94;font-size:13px;font-weight:800;text-decoration:none}.back-link:hover{text-decoration:underline}.build-command-panel{display:grid;gap:18px}.build-command-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.build-command-header h2{margin:0;font-size:24px}.detail-build-form{display:grid;gap:14px}.build-target-line{display:flex;flex-wrap:wrap;gap:8px}.build-target-line span{display:inline-flex;align-items:center;min-height:30px;max-width:100%;gap:6px;overflow:hidden;border:1px solid #dce5e1;border-radius:999px;background:#fbfdfc;color:#425955;font-size:12px;font-weight:800;padding:0 10px;text-overflow:ellipsis;white-space:nowrap}.build-submit-button{min-width:150px}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:18px}.stage-view-panel{display:grid;gap:14px}.stage-view-table{display:grid;overflow:hidden;border:1px solid #dce5e1;border-radius:8px;background:#fff}.stage-view-header,.stage-view-row{display:grid;grid-template-columns:minmax(178px,.36fr) repeat(var(--stage-count),minmax(0,1fr));min-width:0}.stage-view-table--compact .stage-view-header,.stage-view-table--compact .stage-view-row{grid-template-columns:minmax(150px,.3fr) repeat(var(--stage-count),minmax(0,1fr))}.stage-view-table--dense .stage-view-header,.stage-view-table--dense .stage-view-row{grid-template-columns:minmax(128px,.24fr) repeat(var(--stage-count),minmax(0,1fr))}.stage-view-header{position:sticky;top:0;z-index:1;border-bottom:1px solid #dce5e1;background:#f5f8f7}.stage-view-header span{display:flex;min-width:0;min-height:42px;align-items:center;border-right:1px solid #dce5e1;color:#58706b;font-size:12px;font-weight:800;overflow:hidden;padding:0 12px;text-overflow:ellipsis;white-space:nowrap}.stage-view-table--compact .stage-view-header span{min-height:38px;padding:0 8px}.stage-view-table--dense .stage-view-header span{min-height:34px;font-size:11px;padding:0 6px}.stage-view-header span:last-child{border-right:0}.stage-view-row{width:100%;border:0;border-bottom:1px solid #dce5e1;background:#fff;color:#182623;padding:0;text-align:left}.stage-view-row:last-child{border-bottom:0}.stage-view-row--active,.stage-view-row:hover{background:#fbfdfc}.stage-view-build,.stage-cell{display:grid;min-height:72px;min-width:0;align-content:center;border-right:1px solid #dce5e1;padding:10px 12px}.stage-view-table--compact .stage-view-build,.stage-view-table--compact .stage-cell{min-height:64px;padding:8px}.stage-view-table--dense .stage-view-build,.stage-view-table--dense .stage-cell{min-height:58px;padding:7px 6px}.stage-view-build{gap:3px}.stage-view-build strong,.stage-view-build small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stage-view-build small{color:#607873;font-size:12px;font-weight:700}.stage-view-table--compact .stage-view-build small,.stage-view-table--dense .stage-view-build small{font-size:11px}.stage-view-build .status-badge{width:fit-content;margin-top:3px}.stage-cell{--stage-fill-bg: #e4f6ec;--stage-label-color: #137a5b;position:relative;place-items:center;overflow:hidden;background:#fff;text-align:center}.stage-cell:last-child{border-right:0}.stage-cell:before{position:absolute;inset:0 auto 0 0;width:var(--stage-fill);background:var(--stage-fill-bg);content:"";transition:none}.stage-cell strong{position:relative;z-index:1;max-width:100%;overflow:hidden;color:var(--stage-label-color);font-size:14px;font-weight:900;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.stage-cell--build strong{font-size:18px}.stage-view-table--compact .stage-cell strong{font-size:13px}.stage-view-table--compact .stage-cell--build strong{font-size:16px}.stage-view-table--dense .stage-cell strong{font-size:12px}.stage-view-table--dense .stage-cell--build strong{font-size:14px}.stage-cell--succeeded{--stage-fill-bg: #dff5e8;--stage-label-color: #137a5b}.stage-cell--running{--stage-fill-bg: #dff5e8;--stage-label-color: #103f33}.stage-cell--running:before{transition:width .7s cubic-bezier(.22,1,.36,1)}.stage-cell--failed,.stage-cell--canceled{--stage-fill-bg: #ffe1da;--stage-label-color: #a73320}.log-disclosure{display:grid;gap:14px}.log-disclosure summary{display:inline-flex;width:fit-content;align-items:center;gap:8px;color:#39524d;font-weight:800;list-style:none}.log-disclosure summary::-webkit-details-marker{display:none}.log-disclosure[open] summary{margin-bottom:14px}.not-found-panel{display:grid;gap:12px;max-width:560px}.not-found-panel h2,.not-found-panel p{margin:0}.kind-chip{border-radius:999px;background:#e6efec;color:#39524d;font-size:12px;font-style:normal;font-weight:800;padding:4px 8px;white-space:nowrap}.repository-line{margin:0;overflow-wrap:anywhere;color:#425955;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px}.parameter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field-label{display:grid;gap:7px;color:#425955;font-size:13px;font-weight:800}.field-label input{width:100%;min-height:42px;border:1px solid #cad4d0;border-radius:8px;background:#fbfdfc;color:#182623;padding:0 12px}.app-select{position:relative;min-width:0}.app-select-trigger{display:grid;width:100%;height:44px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid #cad4d0;border-radius:8px;background:#fbfdfc;color:#182623;padding:0 12px;text-align:left}.app-select-trigger:disabled{cursor:not-allowed;opacity:.7}.app-select-trigger:focus-visible,.app-select--open .app-select-trigger{border-color:#137a5b;outline:3px solid rgba(19,122,91,.16)}.app-select-trigger svg{color:#58706b;transition:transform .16s ease}.app-select--open .app-select-trigger svg{transform:rotate(180deg)}.app-select-value,.app-select-option span{display:grid;min-width:0;gap:2px}.app-select-value{display:block}.app-select-value strong,.app-select-value small,.app-select-option strong,.app-select-option small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-select-value small,.app-select-option small{color:#607873;font-size:12px;font-weight:700}.app-select-menu{position:absolute;z-index:30;top:calc(100% + 6px);right:0;left:0;display:grid;max-height:240px;overflow-y:auto;border:1px solid #cad4d0;border-radius:8px;background:#fff;box-shadow:0 16px 36px #12201c2e;padding:6px}.app-select-option{display:grid;width:100%;min-height:38px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;border:0;border-radius:6px;background:transparent;color:#182623;padding:8px 10px;text-align:left}.app-select-option:hover,.app-select-option--selected{background:#eaf3ef}.app-select-option--selected{color:#137a5b}.field-hint{color:#607873;font-size:12px;font-weight:700}.field-hint--error{color:#b83a20}.build-actions{display:grid;justify-items:start;gap:10px}.build-blocker{margin:0;color:#9a4d0d;font-size:13px;font-weight:700}.status-badge{border-radius:999px;font-size:11px;font-weight:800;padding:5px 8px;text-transform:uppercase;white-space:nowrap}.status-badge--queued{background:#edf0f4;color:#56616c}.status-badge--running{background:#eaf3ff;color:#1f64a8}.status-badge--succeeded,.status-badge--enabled{background:#e7f7ef;color:#16794e}.status-badge--failed,.status-badge--canceled,.status-badge--disabled{background:#fff0eb;color:#b83a20}.log-viewport{height:356px;overflow:auto;border-radius:8px;background:#101817;color:#d8ebe4;padding:14px}.log-empty{margin:0;color:#78918a}.log-line{display:grid;grid-template-columns:82px 58px minmax(0,1fr);gap:10px;align-items:baseline;min-height:24px;font-size:13px}.log-line time{color:#78918a}.log-line code{overflow-wrap:anywhere;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.log-type{color:#9fcfbd;font-size:11px;font-weight:800}.target-section{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(520px,1.28fr);gap:18px}.target-list{display:grid;gap:10px}.target-row{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;border:1px solid #dbe3e0;border-radius:8px;background:#fbfdfc;color:#16221f;padding:13px;text-align:left}.target-row--active,.target-row:hover{border-color:#137a5b;background:#f0faf6}.target-row strong,.target-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-row small{color:#607873}.target-project-count{border-radius:999px;background:#e7f4ee;color:#137a5b;font-size:12px;font-weight:900;padding:6px 9px;white-space:nowrap}.target-editor{display:grid;gap:16px}.target-editor-head{display:grid;gap:12px}.environment-switcher{display:flex;flex-wrap:wrap;gap:8px;border:1px solid #dce5e1;border-radius:8px;background:#f5f8f7;padding:6px}.environment-tab{display:inline-flex;min-height:40px;align-items:center;gap:8px;border:1px solid transparent;border-radius:8px;background:transparent;color:#425955;font-weight:900;padding:0 10px}.environment-tab--active,.environment-tab:hover{border-color:#137a5b;background:#fff;color:#10211d}.target-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.target-form-grid label,.step-editor label{display:grid;gap:7px;color:#425955;font-size:13px;font-weight:700}.target-form-grid input,.step-editor input,.step-editor textarea{width:100%;min-height:42px;border:1px solid #cad4d0;border-radius:8px;background:#fbfdfc;color:#182623;padding:0 12px}.step-editor textarea{min-height:86px;padding:10px 12px;resize:vertical}.toggle-row{align-content:end;grid-template-columns:auto 1fr;min-height:64px}.toggle-row input{width:18px;min-height:18px}.steps-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.steps-header h3{margin:0;font-size:17px}.step-list{display:grid;gap:12px}.step-editor{display:grid;grid-template-columns:minmax(150px,.35fr) minmax(260px,1fr) auto;align-items:end;gap:12px;border:1px solid #dce5e1;border-radius:8px;background:#fbfdfc;padding:12px}@media(max-width:980px){.shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.sidebar{height:auto;overflow:visible;position:static}.detail-grid,.project-import-grid,.target-section,.target-form-grid,.step-editor{grid-template-columns:1fr}.directory-toolbar,.build-command-header{align-items:stretch;flex-direction:column}.project-select-card{grid-template-columns:auto minmax(0,1fr) auto}.project-card-meta{grid-column:2 / -1;justify-items:start;text-align:left}}@media(max-width:640px){.workspace{padding:18px}.topbar{align-items:stretch}.topbar h1{font-size:24px}.parameter-grid{grid-template-columns:1fr}.build-actions,.build-command-header{align-items:stretch;flex-direction:column}.project-select-card{grid-template-columns:1fr}.project-card-icon{width:38px;height:38px}.project-card-arrow{display:none}.toast-viewport{top:12px;right:12px;width:calc(100vw - 24px)}.log-line{grid-template-columns:1fr;gap:2px;padding-bottom:10px}}
