:root{--bg: oklch(97% .004 240);--bg-alt: oklch(94% .007 240);--surface: oklch(99% .002 240);--surface-raised: oklch(100% 0 0);--border: oklch(89% .008 240);--border-strong: oklch(78% .014 240);--text: oklch(23% .02 240);--text-soft: oklch(43% .018 240);--text-faint: oklch(58% .014 240);--accent: oklch(52% .14 230);--accent-strong: oklch(44% .15 230);--accent-soft: oklch(93% .03 230);--accent-on: oklch(99% .005 230);--success: oklch(50% .12 170);--success-soft: oklch(93% .05 170);--warning: oklch(58% .15 80);--warning-soft: oklch(94% .06 80);--danger: oklch(52% .19 25);--danger-soft: oklch(94% .05 25);--danger-strong: oklch(46% .2 25);--danger-on: oklch(99% .005 25);--shadow: 0 4px 20px rgba(30, 40, 55, .1);--log-bg: oklch(18% .01 240);--log-line: oklch(26% .01 240);--log-rule: oklch(30% .01 240);--log-text: oklch(88% .01 240);--log-muted: oklch(70% .01 240);--sans: "IBM Plex Sans", sans-serif;--mono: "IBM Plex Mono", monospace;--gap: 20px;--push: .6s cubic-bezier(.3, .7, .2, 1);--usable: calc(100cqw - var(--gap));--run-card-h: 158px;color-scheme:light}:root[data-theme=dark]{--bg: oklch(20% .012 240);--bg-alt: oklch(24% .014 240);--surface: oklch(26% .014 240);--surface-raised: oklch(31% .016 240);--border: oklch(36% .02 240);--border-strong: oklch(46% .022 240);--text: oklch(95% .004 240);--text-soft: oklch(76% .01 240);--text-faint: oklch(58% .012 240);--accent: oklch(74% .12 225);--accent-strong: oklch(82% .1 225);--accent-soft: oklch(32% .06 225);--accent-on: oklch(14% .02 225);--success: oklch(72% .13 170);--success-soft: oklch(30% .06 170);--warning: oklch(78% .14 80);--warning-soft: oklch(33% .07 80);--danger: oklch(70% .18 25);--danger-soft: oklch(33% .09 25);--danger-strong: oklch(60% .19 25);--danger-on: oklch(98% .01 25);--shadow: 0 8px 32px rgba(0, 0, 0, .5);--log-bg: oklch(16% .01 240);color-scheme:dark}@keyframes pw-fade-in{0%{opacity:0}}.run-card,.recent-row,.lane,.job-row,.log-steps,.log-center,.steps,.step-out,.pipe,.gear-menu,.empty-state,.run-flow,.modal,.log-toolbar{animation:pw-fade-in .2s ease-out}.run-card.leaving{height:0;padding-top:0;padding-bottom:0;margin-bottom:-10px;opacity:0;pointer-events:none}@keyframes pw-pulse{0%,to{opacity:1}50%{opacity:.45}}@keyframes pw-orb{0%{box-shadow:0 0 color-mix(in srgb,var(--tone) 60%,transparent)}to{box-shadow:0 0 0 6px transparent}}.dot.orb{animation:pw-orb 1.4s ease-out infinite}@keyframes pw-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pw-shimmer{0%{background-position:-300px 0}to{background-position:300px 0}}@keyframes pw-savein{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pw-toastin{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pw-runnerlog-down{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes pw-runnerlog-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit}button{font-family:var(--sans)}input{outline:none;font-family:var(--sans)}::selection{background:#5096dc59}.shell{min-height:100vh;background:var(--bg)}.caps{text-transform:uppercase}.mono{font-family:var(--mono)}.tone-success{--tone: var(--success);--tone-bg: var(--success-soft)}.tone-danger{--tone: var(--danger);--tone-bg: var(--danger-soft)}.tone-warning{--tone: var(--warning);--tone-bg: var(--warning-soft)}.tone-faint{--tone: var(--text-faint);--tone-bg: var(--bg-alt)}.tone-accent{--tone: var(--accent);--tone-bg: var(--accent-soft)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:44px;padding:0 18px;border-bottom:1px solid var(--border);font:600 13.5px var(--sans);background:var(--surface-raised);flex-wrap:nowrap;gap:8px;flex:none}.panel-body{padding:18px}.divider{height:1px;background:var(--border);margin:16px 0}.meta-label{font:600 10.5px var(--mono);letter-spacing:.04em;color:var(--text-faint);text-transform:uppercase;margin-bottom:3px}.meta-val{font:500 13.5px var(--sans)}.meta-val.mono{font-family:var(--mono)}.sub-head{font:600 11px var(--mono);letter-spacing:.06em;color:var(--text-faint);text-transform:uppercase}.pill{display:inline-flex;align-items:center;gap:5px;font:700 10.5px var(--mono);letter-spacing:.04em;color:var(--tone);background:var(--tone-bg);padding:4px 9px;border-radius:5px;white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;background:var(--tone);flex:none}.btn{display:inline-flex;align-items:center;gap:7px;font:600 13px var(--sans);padding:9px 16px;border-radius:7px;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid transparent;white-space:nowrap;background:transparent;color:var(--text);text-decoration:none}.btn:disabled{opacity:.6;cursor:default}.btn{transition:background .15s,border-color .15s,color .15s}.btn:not(:disabled):hover{background:var(--bg-alt)}.btn-primary:not(:disabled):hover{background:color-mix(in srgb,var(--accent) 85%,#000)}.btn-secondary:not(:disabled):hover{border-color:var(--text-faint)}.btn-danger:not(:disabled):hover{background:color-mix(in srgb,var(--danger-strong) 85%,#000)}.btn-primary{background:var(--accent);color:var(--accent-on)}.btn-secondary{border-color:var(--border-strong)}.btn-danger{background:var(--danger-strong);color:var(--danger-on)}.btn-sm{padding:7px 13px;font-size:12.5px}.btn-cog{padding:6px;font-size:17px;line-height:1}.btn-sm.btn-cog{padding:5px;font-size:16px}.btn.btn-cog,.btn.btn-cog:not(:disabled):hover{border-color:transparent;background:none;box-shadow:none;color:var(--text-soft)}.btn.btn-cog:not(:disabled):hover{color:var(--text)}.spinner{width:13px;height:13px;border-radius:50%;border:2px solid color-mix(in srgb,currentColor 35%,transparent);border-top-color:currentColor;animation:pw-spin .7s linear infinite}.close-x{cursor:pointer;color:var(--text-faint);font-size:18px;line-height:1;background:none;border:0;padding:0}.close-x:hover,.modal-close:hover{color:var(--text)}.skel{height:12px;border-radius:4px;background:linear-gradient(90deg,var(--bg-alt) 25%,var(--border) 37%,var(--bg-alt) 63%);background-size:400px 100%;animation:pw-shimmer 1.4s linear infinite}.skel+.skel{margin-top:10px}.banner{margin-top:14px;padding:10px 12px;border-radius:7px;background:var(--warning-soft);font:500 12.5px var(--sans);border:1px solid var(--warning)}.banner-danger{margin-top:12px;background:var(--danger-soft);border-color:var(--danger)}.runner-box .banner{margin:0 0 14px}.clock{width:34px;height:34px;border-radius:50%;border:2.5px solid var(--border-strong);position:relative;flex:none}.clock.toned{border-color:var(--tone)}.clock.spin{animation:pw-spin 1.6s linear infinite}.clock i{position:absolute;width:2.5px;height:12px;background:var(--accent);left:50%;top:5px;transform-origin:50% 12px;border-radius:2px}.clock.toned i{background:var(--tone)}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-alt);padding:20px}.auth-card{width:380px;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:36px 32px;text-align:center;position:relative;overflow:hidden}.auth-card .btn+.btn{margin-left:10px}.lane-strip{position:absolute;top:0;left:0;right:0;height:6px;background:repeating-linear-gradient(90deg,var(--accent) 0 40px,var(--border) 40px 46px)}.lane-strip.danger{background:repeating-linear-gradient(90deg,var(--danger) 0 40px,var(--border) 40px 46px)}.auth-word{font:600 17px/1 var(--mono);letter-spacing:.14em;color:var(--text-faint);margin-bottom:18px}.ms-btn{display:flex;align-items:center;justify-content:center;gap:12px;height:41px;padding:0 12px;background:#fff;border:1px solid #8c8c8c;cursor:pointer;font:600 15px "Segoe UI",var(--sans);text-decoration:none;color:#5e5e5e}:root[data-theme=dark] .ms-btn{background:#2f2f2f;border-color:#2f2f2f;color:#fff}.ms-logo{width:19px;height:19px;background:linear-gradient(#f25022,#f25022) 0 0 / 9px 9px no-repeat,linear-gradient(#7fba00,#7fba00) 100% 0 / 9px 9px no-repeat,linear-gradient(#00a4ef,#00a4ef) 0 100% / 9px 9px no-repeat,linear-gradient(#ffb900,#ffb900) 100% 100% / 9px 9px no-repeat;flex:none}.auth-wait{margin-top:22px;height:16px;display:flex;align-items:center;justify-content:center}.dots-spinner{width:12px;height:12px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent);animation:pw-spin .8s linear infinite}.denied-icon{width:46px;height:46px;border-radius:50%;background:var(--danger-soft);color:var(--danger);display:flex;align-items:center;justify-content:center;font:700 20px var(--mono);margin:20px auto 0}.denied-title{font:600 22px/1.3 var(--sans);margin:18px 0 8px}.denied-body{font:400 14px/1.6 var(--sans);color:var(--text-soft);margin-bottom:24px}.denied-body b{color:var(--text)}.app{height:100vh;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20;flex:none}.topbar-inner{max-width:1400px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:28px;min-width:0;flex-wrap:wrap}.wordmark{display:flex;flex-direction:column;gap:4px;flex:none}.wordmark-text{font:700 14px/1 var(--mono);letter-spacing:.12em}.lanes-small{display:flex;gap:2px;width:100%}.lanes-small i{height:3px;flex:1;border-radius:2px;background:var(--border)}.lanes-small i:nth-child(odd){background:var(--accent)}.tabs{display:flex;gap:4px;flex-wrap:wrap}.tab{font:600 13px var(--sans);padding:8px 14px;border-radius:7px;cursor:pointer;color:var(--text-soft);text-decoration:none}.tab.on{color:var(--accent-on);background:var(--accent)}.user-wrap{display:flex;align-items:center;gap:14px;flex:none;position:relative}.user-menu{display:flex;align-items:center;gap:9px;cursor:pointer;padding:5px 8px;border-radius:8px;background:none;border:0;color:var(--text);text-align:left}.user-text{display:flex;flex-direction:column;line-height:1.25}.user-name{font:600 13px var(--sans)}.user-email{font:400 11px var(--sans);color:var(--text-faint)}.caret{color:var(--text-faint);font-size:10px}.user-pop{position:absolute;top:46px;right:0;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:9px 14px;font:500 13px var(--sans);z-index:30;text-decoration:none;color:var(--text);white-space:nowrap}.theme-pick{display:flex;padding:3px;gap:2px;border-radius:7px;background:var(--bg-alt)}.theme-pick button{flex:1;padding:5px 10px;border:0;border-radius:5px;background:none;font:500 12.5px var(--sans);color:var(--text-soft);cursor:pointer}.theme-pick button.on{background:var(--surface-raised);color:var(--text);box-shadow:0 1px 2px #0000001f}.theme-pick button:not(.on):hover{color:var(--text)}.main{flex:1 1 auto;max-width:1400px;margin:0 auto;padding:24px;width:100%;display:flex;flex-direction:column;min-height:0;overflow:hidden}.main.scroll{overflow:auto}.cicd-grid{container-type:inline-size;display:flex;gap:var(--gap);align-items:stretch;overflow-x:hidden;flex:1 1 auto;min-height:0;padding:10px;margin:-10px}.col-left{display:flex;flex-direction:column;gap:20px;min-width:0;position:relative;z-index:5;flex:0 0 auto;height:100%;min-height:0;width:calc(var(--usable) * .6);transition:width var(--push)}.col-right{min-width:0;position:relative;z-index:1;flex:0 0 auto;height:100%;display:flex;flex-direction:column;align-items:flex-start;width:calc(var(--usable) * .4);transition:width var(--push)}.cicd-grid.open .col-left{width:calc(var(--usable) * .4)}.cicd-grid.open .col-right{width:calc(var(--usable) * .6)}.log-section{position:absolute;top:0;left:0;height:100%;width:calc(var(--usable) * .6);z-index:4;pointer-events:none;display:flex;flex-direction:column;transform:translate(calc(var(--usable) * .6));transition:transform var(--push)}.cicd-grid.open .log-section{pointer-events:auto;transform:translate(0)}.right-stack{position:relative;z-index:1;display:flex;flex-direction:column;gap:20px;flex:1 1 auto;min-height:0;width:calc(var(--usable) * .4);transition:transform var(--push)}.cicd-grid.open .right-stack{transform:translate(calc((var(--usable) * .4 + var(--gap)) * -1))}.runners{position:relative;z-index:0;display:flex;flex-direction:column;flex:0 1 auto;min-height:0;overflow:visible}.pipelines{flex:0 1000 auto;min-height:48px;display:flex;flex-direction:column;overflow:visible}.pipelines>.panel-head{border-radius:10px 10px 0 0}.runner-box{position:relative;flex:0 0 auto;z-index:1;overflow:visible}.runner-box>.panel-head{border-radius:10px 10px 0 0}.runner-box>.panel-body{border-radius:0 0 10px 10px}.runner-box .controls-left .btn:not(.btn-cog){border-color:transparent;padding:4px 8px}.runner-box .controls-left .btn:not(.btn-cog):not(:disabled):hover{background:var(--accent-soft);color:var(--accent)}.pipelines-body{padding:10px 18px 18px;display:flex;flex-direction:column;flex:0 1 auto;min-height:0;overflow-y:auto}.pipe-note{font:400 12.5px var(--sans);color:var(--text-soft)}.pipe-more{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.3,.7,.2,1)}.pipe-more.open{grid-template-rows:1fr}.pipe-more-inner{min-height:0;overflow:hidden}.pipe-more-inner>.pipe{margin-top:12px;border-top:1px solid var(--border);padding-top:8px}.pipe{display:flex;align-items:center;gap:10px;min-width:0}.pipe-name{flex:0 1 auto;min-width:60px;font:700 14px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pipe-project{font:500 12.5px var(--sans);color:var(--text-faint)}.pipe-configs{display:flex;justify-content:flex-end;gap:6px;margin-left:auto;min-width:0;flex:0 1 auto}.pipe-configs>.btn,.pipe-configs>.gear{flex:none}.config-chip{flex:0 1 auto;min-width:0;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 10px;border-radius:7px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:var(--accent-soft);color:var(--accent);cursor:pointer;font:600 12.5px var(--mono);transition:background .15s,color .15s,border-color .15s}.config-chip:not(:disabled):hover{background:var(--accent);border-color:var(--accent);color:#fff}.config-chip:not(:disabled):hover .config-params{color:color-mix(in srgb,#fff 80%,transparent)}.config-chip:disabled{opacity:.6;cursor:default}.config-branch,.config-params{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-params{color:var(--text-soft);font-size:10.5px}.declared{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .3s cubic-bezier(.3,.7,.2,1),opacity .3s ease-out}.declared.open{grid-template-rows:1fr;opacity:1}.declared-inner{min-height:0;overflow:hidden;display:flex;flex-direction:column}.declared.open .declared-inner{overflow:visible}.param-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s cubic-bezier(.3,.7,.2,1),opacity .25s ease-out}.param-inner{min-height:0;padding:4px 0}.declared-inner.conceal .param-wrap.hidden:not(:hover){grid-template-rows:0fr;opacity:0}.declared-inner.conceal .param-wrap.hidden .param-inner{overflow:hidden}.param-wrap.hidden .declared-name,.param-wrap.hidden .setting-hint{color:var(--text-faint)}.declared-name-row{display:flex;align-items:center;gap:6px}.eye-btn{display:inline-flex;opacity:0;transition:opacity .15s;background:none;border:0;padding:0;cursor:pointer;color:var(--text-faint)}.declared-name-row:hover .eye-btn,.param-wrap.hidden .eye-btn{opacity:1}.eye-btn:hover{color:var(--text)}.declared-control{width:180px;flex:none}.modal-head-actions{display:flex;align-items:center;gap:10px}.declared-param{display:flex;align-items:center;justify-content:space-between;gap:14px}.declared-param>div{min-width:0}.declared-name{font:600 12.5px var(--mono)}.config-form{display:flex;flex-direction:column;gap:8px}.modal-overflow{overflow:visible}.modal-overflow .modal-head{border-radius:12px 12px 0 0}.modal-overflow .modal-foot{border-radius:0 0 12px 12px}.dropdown{position:relative}.dropdown-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;font:500 13px var(--mono);cursor:pointer;text-align:left}.dropdown-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-note{flex:none;font:600 10.5px var(--sans);text-transform:uppercase;letter-spacing:.03em;color:var(--accent);background:var(--accent-soft);padding:2px 6px;border-radius:4px}.dropdown-caret{flex:none;color:var(--text-faint);font-size:11px}.dropdown-list{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:10;max-height:260px;overflow-y:auto;margin:0;padding:4px;list-style:none;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.dropdown-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:5px;cursor:pointer;font:500 13px var(--mono)}.dropdown-item.active{background:var(--bg-alt)}.dropdown-item.on{color:var(--accent)}.param-label{margin-top:12px}.param-row{display:grid;grid-template-columns:1fr 1fr 26px;gap:6px;align-items:center}.activity{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.activity-top{flex:0 1 auto;min-height:0;overflow-y:auto;transition:height .3s cubic-bezier(.3,.7,.2,1)}.activity-top-inner{padding:18px 18px 4px}.recent-head{flex:0 0 auto;padding:10px 18px 6px;margin:10px 0 0;background:none;border:0;text-align:left;cursor:pointer}.log-num{font:400 12px var(--mono);color:var(--text-faint)}.recent-wrap{flex:1 1 0;min-height:20vh;max-height:100vh;overflow-y:auto;padding:0 18px 18px;transition:flex-grow .3s cubic-bezier(.3,.7,.2,1),min-height .3s cubic-bezier(.3,.7,.2,1),max-height .3s cubic-bezier(.3,.7,.2,1),padding .3s,opacity .25s ease-out}.recent-wrap.closed{flex-grow:0;min-height:0;max-height:0;padding-bottom:0;opacity:0;overflow:hidden}.recent-list{display:flex;flex-direction:column;gap:2px;margin-top:10px}.recent-row{display:flex;align-items:flex-start;gap:12px;padding:10px 8px;border-radius:7px;cursor:pointer;border:1px solid transparent}.recent-row.on{background:var(--accent-soft);border-color:var(--accent)}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.row-dur{font:400 12.5px var(--mono);color:var(--text-soft)}.row-line{display:flex;align-items:center;gap:12px;min-width:0}.row-links{font:500 12.5px var(--mono);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.row-sub .row-links{color:var(--text-soft);font-weight:400}.row-link{color:inherit;text-decoration:none;cursor:pointer}.row-name{font:700 13.5px var(--mono)}.row-project{font:500 12.5px var(--sans);color:var(--text-faint)}.row-num{font:400 12px var(--mono);color:var(--text-faint)}.row-link:hover,.row-link:hover span{color:var(--accent)}.row-end{margin-left:auto;flex:none}.row-ago{font:400 12px var(--sans);color:var(--text-soft);white-space:nowrap}.link-out{font:600 12px var(--sans);color:var(--accent);text-decoration:none;white-space:nowrap}.link-out:hover,.row-pr:hover{text-decoration:underline}.row-pr{color:var(--accent);text-decoration:none;white-space:nowrap}.run-cards{display:flex;flex-direction:column;gap:10px}.run-card{position:relative;box-sizing:border-box;height:var(--run-card-h);overflow:hidden;border:0;border-radius:9px;padding:17px;background:var(--bg-alt);cursor:pointer;transition:opacity .2s ease-out,height .3s cubic-bezier(.3,.7,.2,1),padding .3s cubic-bezier(.3,.7,.2,1),margin .3s cubic-bezier(.3,.7,.2,1)}.run-card:before,.run-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none}.run-card:before{border:1px solid var(--border)}.run-card:after{border:2px solid var(--accent);opacity:0;transition:opacity .2s ease-out}.run-card.on:after{opacity:1}.run-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.run-top>div{flex:1}.run-top>.link-out{flex:none}.run-meta{display:flex;gap:22px;margin-top:4px}.run-meta>div{display:flex;align-items:baseline}.run-meta .meta-label{margin-bottom:0;flex:none;max-width:var(--w, none);overflow:hidden;white-space:nowrap;transition:max-width .3s cubic-bezier(.3,.7,.2,1),margin .3s cubic-bezier(.3,.7,.2,1),opacity .2s ease-out}.run-meta .meta-label:first-child{margin-right:8px}.run-meta .meta-label:last-child{margin-left:8px}.run-meta.bare .meta-label{max-width:0;margin:0;opacity:0}.run-head{display:flex;align-items:baseline;gap:8px;min-width:0;white-space:nowrap;overflow:hidden}.run-head>*{overflow:hidden;text-overflow:ellipsis}.run-name{font:700 22px/1.2 var(--mono)}.run-project{font:500 14px var(--sans);color:var(--text-faint)}.run-project .mono{font:400 12.5px var(--mono)}.run-open{font-weight:400}.run-ref{margin-top:6px;font:400 15px var(--mono);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.run-ref .row-link:hover{text-decoration:underline}.run-flows{display:flex;align-items:flex-start;gap:8px;margin-top:12px;height:32px;box-sizing:border-box;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.run-flows{transition:opacity .2s ease-out,visibility .2s}.run-card.on .run-flows{opacity:0;visibility:hidden}.run-flow{flex:none;height:22px;box-sizing:border-box;align-items:center;white-space:nowrap;display:inline-flex;border:1px solid var(--accent);border-radius:4px;overflow:hidden;font:500 11.5px var(--sans)}.run-flow-name{padding:2px 10px;background:var(--accent);color:#fff;font-family:var(--mono);font-size:12.5px}.run-flow-job{padding:2px 10px;background:var(--accent-soft);color:var(--text);border-left:1px solid var(--accent)}.run-flow-name,.run-flow-job{cursor:pointer;transition:background .15s}.run-flow-name:hover{background:color-mix(in srgb,var(--accent) 78%,#000)}.run-flow-job:hover{background:color-mix(in srgb,var(--accent) 24%,var(--surface))}.run-flow-job.queued{opacity:.55}.run-queued{border-color:var(--text-faint)}.run-queued-name{padding:2px 10px;background:var(--text-faint);color:#fff;font:500 12.5px var(--mono)}.run-queued-at{padding:2px 10px;background:var(--bg-alt);color:var(--text-soft);border-left:1px solid var(--text-faint);font:500 11.5px var(--sans)}.run-meta>div:last-child{margin-left:auto;text-align:right}.run-meta>div{min-width:0}.run-meta .meta-val{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-state{box-sizing:border-box;height:var(--run-card-h);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 10px;gap:2px}.skel-card{cursor:default}.empty-title{font:600 14px/18px var(--sans);margin-top:12px}.empty-sub{font:400 13px var(--sans);color:var(--text-soft)}.error-state{padding:10px 2px}.error-title{font:600 14px var(--sans);margin-bottom:4px}.error-sub{font:400 13px var(--sans);color:var(--text-soft);margin-bottom:14px}.log-body{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}.job-list-grip{flex:none;width:5px;margin-left:-3px;cursor:col-resize;position:relative;z-index:1}.job-list-grip:hover{background:var(--accent-soft)}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.job-list-cover{position:absolute;inset:8px 0 auto;background:var(--surface);transition:opacity .2s ease-out;z-index:1}.job-list-cover.out{opacity:0;pointer-events:none}.job-list{position:relative;flex:none;border-right:1px solid var(--border);display:flex;flex-direction:column;padding:8px 0;overflow-y:auto}.job-row{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;border-left:2px solid transparent;font:500 13px var(--sans)}.job-row.on{background:var(--accent-soft);border-left-color:var(--accent)}.job-row .dot.tone-faint{opacity:.4}.log-pane{flex:1;min-width:260px;min-height:0;display:flex;flex-direction:column;background:var(--log-bg)}.log-pad{padding:18px}.log-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--log-muted);font:400 13px var(--sans)}.log-center strong{font:600 13.5px var(--sans);color:var(--log-text);margin-bottom:4px}.log-toolbar{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--log-rule)}.job-name{font:400 11.5px var(--mono);color:var(--text-faint)}.log-title{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:nowrap;overflow:hidden}.log-title>*{flex:none}.log-name{font:700 15px var(--mono);margin-right:2px}.log-branch{font:500 12.5px var(--mono);color:var(--text-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-head-right{display:flex;align-items:center;gap:6px;margin-left:auto}.wf-chip{font:600 11.5px var(--sans);padding:5px 10px;border-radius:6px;border:1px solid var(--border-strong);color:var(--text-soft);background:none;cursor:pointer}.wf-chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);cursor:default}.wf-chip:not(.on):hover{border-color:var(--accent);color:var(--accent)}@keyframes pw-chip-pulse{0%,to{background:transparent;box-shadow:0 0 color-mix(in srgb,var(--accent) 55%,transparent);border-color:color-mix(in srgb,var(--accent) 60%,transparent)}50%{background:color-mix(in srgb,var(--accent) 22%,transparent);box-shadow:0 0 0 6px transparent;border-color:var(--accent)}}.wf-chip.live{animation:pw-chip-pulse 2.6s ease-in-out infinite}.gear-item.gear-toggle{display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:default}.log-steps{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.steps{flex:1;min-height:0;display:flex;flex-direction:column;--head: 37px}.steps.compact{--head: 34px}.steps.flat{overflow-y:auto}.step-strip{flex:0 10000 auto;overflow:hidden}.step-strip.above{display:flex;flex-direction:column;justify-content:flex-end}.step-strip::-webkit-scrollbar{display:none}.step-out-wrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.step-out-wrap.all{flex:1}.step-all{flex:1;min-height:0;overflow:auto}.step-all .step-out{overflow:visible}.step-pinned{flex:none;border-top:1px solid var(--log-rule)}.skel-head,.skel-row{cursor:default}.skel-text{display:inline-block;color:transparent;border-radius:4px;height:auto;vertical-align:top;line-height:inherit}.log-steps{position:relative}.skel-cover{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--log-bg);transition:opacity .2s ease-out;z-index:2}.skel-cover.out{opacity:0;pointer-events:none}.log-pane .skel,.runner-log .skel{background:linear-gradient(90deg,var(--log-line) 25%,var(--log-rule) 37%,var(--log-line) 63%);background-size:400px 100%}.skel-row .skel{flex:none}.log-toolbar .skel{height:10px}.step-arrow{position:absolute;right:14px;z-index:1;width:26px;height:26px;border-radius:50%;border:1px solid var(--log-rule);background:var(--log-bg);color:var(--log-text);font-size:13px;line-height:1;cursor:pointer;opacity:.4;transition:opacity .12s}.step-arrow:hover{opacity:1}.step-arrow.up{top:8px}.step-arrow.down{bottom:8px}.step-head{box-sizing:border-box;height:var(--head);flex:none;display:flex;align-items:center;gap:9px;padding:9px 12px;cursor:pointer;color:var(--log-text);background:var(--log-bg);border-bottom:1px solid var(--log-line)}.step-head.failed{background:linear-gradient(var(--danger-soft),var(--danger-soft)),var(--log-bg);color:var(--text)}.step-name{font:500 12.5px var(--sans);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step-dur{font:400 11.5px var(--mono);color:var(--text-faint)}.copy-btn{visibility:hidden;background:none;border:0;padding:0 2px;color:inherit;opacity:.5;font-size:13px;line-height:1;cursor:pointer}.copy-btn:hover{opacity:1}.step-head:hover .copy-btn,.log-toolbar:hover .copy-btn{visibility:visible}.steps.compact .step-head{padding:8px 10px}.steps.compact .step-name{font-size:12px}.steps.compact .step-dur{font-size:11px}.chev{display:inline-block;font-size:10px;color:var(--text-faint);transition:transform .12s}.chev.open{transform:rotate(90deg)}.step-out{flex:1;min-height:0;overflow:auto;margin:0;border-bottom:1px solid var(--log-line);padding:10px 14px 14px 52px;counter-reset:ln;font:12px/1.6 var(--mono);color:var(--log-text);white-space:pre-wrap;word-break:break-word}.ln{display:block;counter-increment:ln}.ln:before{content:counter(ln);display:inline-block;width:36px;margin-left:-44px;margin-right:8px;text-align:right;font-size:10.5px;color:var(--log-muted);-webkit-user-select:none;user-select:none}.toggle{width:32px;height:18px;border-radius:999px;background:var(--border);position:relative;cursor:pointer;border:0;padding:0;flex:none}.toggle.on{background:var(--accent)}.toggle i{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .12s}.toggle.on i{left:16px}.toggle.lg{width:38px;height:22px}.toggle.lg i{width:18px;height:18px}.toggle.lg.on i{left:18px}.vm-title{display:flex;align-items:center;gap:8px;margin-right:auto}.vm-pill{display:inline-flex;align-items:center;gap:5px;font:700 12px var(--mono);letter-spacing:.03em;color:var(--tone);background:var(--tone-bg);padding:5px 11px;border-radius:6px}.lane-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.lane{display:flex;flex-direction:column;align-items:center;gap:4px;box-sizing:border-box;padding:9px 6px;border-radius:8px;cursor:default;border:1.5px solid var(--border);background:var(--bg-alt);color:var(--text);min-width:0}.lane.occupied{background:var(--accent-soft);cursor:pointer;transition:background .15s,border-color .15s}.lane.occupied:hover{background:color-mix(in srgb,var(--accent) 22%,var(--surface));border-color:color-mix(in srgb,var(--accent) 60%,transparent)}.lane-add:not(:disabled):hover{border-color:var(--accent);color:var(--accent)}.lane.on{border-color:var(--accent)}.lane{position:relative}.lane-remove{position:absolute;top:4px;right:4px;width:16px;height:16px;border-radius:50%;border:1px solid currentColor;display:flex;align-items:center;justify-content:center;font:600 12px/1 var(--sans);color:var(--text-faint);opacity:0;pointer-events:none;cursor:pointer;transition:opacity .15s}.lane-remove:hover{color:var(--danger)}.lane:hover .lane-remove{opacity:1;pointer-events:auto}.lane-add .lane-status{white-space:normal;text-align:center}.lane-add{justify-content:center;cursor:pointer;border-style:dashed;background:none;color:var(--text-faint);--tone: var(--text-faint)}.lane-add:disabled{opacity:.5;cursor:default}.lane-plus{font:500 18px/9px var(--sans);height:9px}.lane-dot{width:9px;height:9px;border-radius:50%;background:var(--tone)}.lane.occupied .lane-dot{animation:pw-pulse 1.8s ease-in-out infinite}.lane-label{font:700 12px var(--mono);font-variant-numeric:tabular-nums;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lane-status{font:500 9.5px var(--sans);color:var(--tone);text-transform:uppercase;letter-spacing:.03em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.controls-left{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.gear{position:relative}.gear-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--surface-raised);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);min-width:160px;z-index:30;overflow:hidden}.gear-item{display:block;width:100%;text-align:left;padding:10px 14px;font:500 13px var(--sans);cursor:pointer;color:var(--text);background:none;border:0}.gear-item:not(.gear-toggle):hover{background:var(--bg-alt)}a.gear-item{text-decoration:none;box-sizing:border-box}.gear-item.danger{color:var(--danger);border-top:1px solid var(--border)}.gear-item.danger.flush{border-top:0}.runner-log-clip{margin-top:-1px;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.runner-log{border:1px solid var(--border);border-radius:0 0 8px 8px;background:var(--log-bg);position:relative;z-index:-1;transform-origin:top;width:100%;flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.runner-log.opening{animation:pw-runnerlog-down .22s cubic-bezier(.3,.7,.2,1) forwards}.runner-log.closing{animation:pw-runnerlog-up .22s cubic-bezier(.3,.7,.2,1) forwards}.runner-log-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid var(--log-rule);font:500 11.5px var(--mono);color:#c8cfd4}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e148c;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{width:min(480px,94vw);background:var(--surface);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.modal-confirm{width:min(400px,94vw);background:var(--surface);border-radius:12px;box-shadow:var(--shadow);padding:22px}.modal-schedule{width:min(760px,94vw);max-height:88vh;display:flex;flex-direction:column;background:var(--surface);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);font:600 15px var(--sans);background:var(--surface-raised)}.modal-close{cursor:pointer;color:var(--text-faint);font-size:20px;line-height:1;background:none;border:0;padding:0}.modal-body{padding:20px}.modal-foot{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-top:1px solid var(--border);background:var(--surface-raised)}.foot-actions{display:flex;gap:8px}.confirm-title{font:600 16px var(--sans);margin-bottom:8px}.confirm-body{font:400 13.5px/1.5 var(--sans);color:var(--text-soft);margin-bottom:22px}.confirm-actions{display:flex;justify-content:flex-end;gap:8px}.info-title{font:600 16px var(--sans);margin-bottom:14px}.info-list{display:flex;flex-direction:column;gap:14px}.next-change{margin-top:12px;padding:8px 10px;border-radius:7px;background:var(--bg-alt);font:500 12px var(--sans);color:var(--text-soft)}.about-to{font:500 13.5px var(--sans);color:var(--text-soft);margin-bottom:6px}.confirm-box{border:1px solid var(--border);border-radius:9px;padding:14px;background:var(--bg-alt)}.confirm-box-title{font:600 15px var(--sans)}.confirm-box-sub{font:400 13px var(--sans);color:var(--text-faint);margin-top:4px}.radio-list{display:flex;flex-direction:column;gap:8px}.radio-list.lg{gap:10px}.radio-card{display:flex;gap:11px;padding:13px;border-radius:9px;border:1.5px solid var(--border);background:transparent;cursor:pointer;text-align:left;color:var(--text);width:100%}.radio-card.on{border-color:var(--accent);background:var(--accent-soft)}.radio-dot{width:17px;height:17px;border-radius:50%;border:2px solid var(--border-strong);flex:none;margin-top:2px}.radio-card.on .radio-dot{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--surface)}.radio-title{display:block;font:500 13.5px var(--sans)}.radio-sub{display:block;font:400 12px var(--sans);color:var(--text-faint)}.radio-card.lg .radio-title{font:600 14px var(--sans)}.radio-card.lg .radio-sub{font-size:12.5px;margin-top:2px}.schedule-body{padding:20px 22px;overflow:auto;flex:1}.tz-row{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}.tz-label{font:500 12.5px var(--sans);color:var(--text-soft)}.input{font:500 12.5px var(--mono);border:1px solid var(--border);border-radius:6px;padding:6px 8px;background:var(--surface);color:var(--text)}.input.time{width:70px}.input.date{width:96px}.input.tz{font:600 13px var(--mono);padding:7px 10px;width:80px}.input.label{font:600 13.5px var(--sans);padding:6px 9px;width:150px}.input.invalid{border-color:var(--danger)}.input.num{width:64px}.setting-inline{display:flex;align-items:center;gap:8px;font:400 13px var(--sans);color:var(--text-soft);flex:none}.week-wrap{border:1px solid var(--border);border-radius:9px;padding:14px;background:var(--bg-alt);margin-bottom:14px}.right-now{display:inline-flex;align-items:center;gap:7px;font:600 12.5px var(--sans);color:var(--success);margin-bottom:10px}.right-now.down{color:var(--danger)}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.week-day{display:flex;flex-direction:column;gap:4px;min-width:0}.week-label{font:600 10.5px var(--mono);color:var(--text-faint);text-align:center}.lane-track{display:flex;height:22px;border-radius:4px;overflow:hidden;border:1px solid var(--border)}.seg{min-width:2px}.seg.up{background:var(--success)}.seg.down{background:var(--danger)}.seg.default{opacity:.35}.week-note{font:400 11px var(--sans);color:var(--text-faint);margin-top:8px}.order-note{font:500 12px var(--sans);color:var(--text-faint);margin-bottom:10px}.rules{display:flex;flex-direction:column;gap:10px}.rule-card{display:flex;gap:10px;padding:14px;border:1px solid var(--border);border-radius:9px;background:var(--bg-alt);align-items:flex-start}.rule-card.dragging{opacity:.5}.drag-handle{color:var(--text-faint);cursor:grab;font:12px monospace;line-height:1.2;padding:4px 0}.lane-num{width:22px;height:22px;border-radius:5px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;font:700 11px var(--mono);flex:none}.rule-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.rule-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rule-row.tight{gap:8px}.rule-hint{font:400 12px var(--sans);color:var(--text-faint)}.state-switch{display:flex;cursor:pointer;border-radius:5px;overflow:hidden;border:0;padding:0;background:none}.state-switch span{font:700 10.5px var(--mono);padding:4px 9px;color:var(--text-faint);background:var(--bg-alt)}.state-switch .up.on{color:var(--accent-on);background:var(--success)}.state-switch .down.on{color:#fff;background:var(--danger)}.type-select{display:flex;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px;flex-wrap:wrap}.type-opt{font:500 11px var(--sans);padding:5px 9px;border-radius:5px;cursor:pointer;color:var(--text-soft);background:transparent;border:0}.type-opt.on{color:var(--accent-on);background:var(--accent)}.chips{display:flex;gap:4px;flex-wrap:wrap}.chip{font:600 10.5px var(--mono);width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:5px;cursor:pointer;color:var(--text-faint);background:var(--bg-alt);border:0;padding:0}.chip.on{color:var(--accent-on);background:var(--accent)}.rule-error{font:500 11.5px var(--sans);color:var(--danger);background:var(--danger-soft);padding:5px 9px;border-radius:5px;display:inline-block;align-self:flex-start}.rule-tools{display:flex;flex-direction:column;gap:6px}.icon-btn{width:26px;height:26px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-faint);border:1px solid var(--border);font:13px sans-serif;background:none;padding:0}.icon-btn.danger{color:var(--danger);border-color:var(--danger)}.icon-btn:hover{color:var(--text);border-color:var(--text-faint)}.icon-btn.danger:hover{color:#fff;background:var(--danger)}.add-rule{margin-top:12px;padding:10px;text-align:center;border-radius:8px;border:1.5px dashed var(--border-strong);color:var(--text-soft);font:600 13px var(--sans);cursor:pointer;width:100%;background:none}.add-rule:hover{border-color:var(--accent);color:var(--accent)}.settings{display:flex;flex-direction:column}.settings-title{font:600 20px var(--sans);margin-bottom:8px}.settings-group{display:grid;grid-template-columns:260px minmax(0,1fr);gap:32px;padding:24px 0;border-top:1px solid var(--border)}.settings-group-title{font:600 15px var(--sans)}.settings-body{padding:20px;display:flex;flex-direction:column;gap:2px}.settings-body .radio-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.setting-label{font:600 13.5px var(--sans)}.setting-hint{font:400 12px var(--sans);color:var(--text-faint);margin-top:4px}.setting-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.save-bar{position:sticky;bottom:-24px;margin:24px -24px -24px;background:var(--surface-raised);border-top:1px solid var(--border);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;box-shadow:0 -4px 16px #0000000f;font:400 13px var(--sans);animation:pw-savein .24s cubic-bezier(.3,.7,.2,1)}.toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}.toast{display:flex;align-items:center;gap:9px;background:var(--surface-raised);border:1px solid var(--border);border-radius:9px;padding:11px 15px;box-shadow:var(--shadow);font:500 13px var(--sans);animation:pw-toastin .18s ease-out;min-width:220px}.toast i{width:8px;height:8px;border-radius:50%;background:var(--success);flex:none}.toast.bad i{background:var(--danger)}@media (max-width: 900px){.app{height:auto;min-height:100vh}.topbar-inner{padding:12px 16px}.main{padding:16px;overflow:visible}.cicd-grid{flex-direction:column;overflow:visible;container-type:normal}.col-left,.col-right,.cicd-grid.open .col-left,.cicd-grid.open .col-right{width:100%;height:auto}.col-right{align-items:stretch;gap:20px}.activity-top,.recent-wrap{overflow:visible}.log-section{display:none;position:static;width:100%;height:auto;transform:none;pointer-events:auto;transition:none}.cicd-grid.selected .log-section{display:flex}.right-stack,.cicd-grid.open .right-stack{width:100%;transform:none}.runner-log-clip{margin-top:-21px}.runner-log{width:100%}.job-list{width:100%!important;border-right:0;border-bottom:1px solid var(--border);flex-direction:row;overflow-x:auto}.job-list-grip{display:none}.log-body{flex-wrap:wrap;min-height:340px;overflow:visible}.log-pane{min-width:0;flex-basis:100%;min-height:280px}.settings-group{grid-template-columns:1fr;gap:12px}.save-bar{bottom:0;margin:24px -16px -16px;padding:14px 16px}.toasts{left:16px;right:16px;bottom:16px}.toast{min-width:0}}
