@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--font:"Inter", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--bg:#f6f7fb;--bg-soft:#eef0f6;--surface:#fff;--surface-2:#f3f4f9;--border:#e3e6ef;--border-strong:#cfd4e3;--text:#1a2030;--text-soft:#5a6478;--text-faint:#8b93a7;--accent:#3b6cf0;--accent-soft:#e7edfd;--accent-text:#2a55cc;--green:#1d9a6c;--green-soft:#e2f5ec;--orange:#d97917;--orange-soft:#fdf0dd;--red:#d6455a;--red-soft:#fde8eb;--purple:#8250df;--purple-soft:#f1eafd;--teal:#0d9488;--teal-soft:#def5f3;--slate:#45558c;--slate-soft:#dfe5f4;--shadow:0 1px 2px #1418280d, 0 4px 16px #1418280f;--shadow-lg:0 8px 30px #1418281f}[data-theme=dark]{--bg:#0e1118;--bg-soft:#131722;--surface:#181d2a;--surface-2:#1f2534;--border:#272e41;--border-strong:#38415a;--text:#e8ebf3;--text-soft:#a3abc0;--text-faint:#6b7488;--accent:#6b93ff;--accent-soft:#1d2845;--accent-text:#8fadff;--green:#3dd598;--green-soft:#11281f;--orange:#f0a04b;--orange-soft:#2e2213;--red:#f06a7e;--red-soft:#321a1f;--purple:#b08aff;--purple-soft:#251c38;--teal:#3ad6c5;--teal-soft:#0f2826;--slate:#aebdde;--slate-soft:#2a3450;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040;--shadow-lg:0 8px 30px #00000073}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);margin:0;font-size:14px;line-height:1.5;transition:background .25s,color .25s}.mono{font-family:var(--mono)}.app{flex-direction:column;height:100vh;display:flex}.main{flex:1;overflow:hidden}.header{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex;position:relative}.brand{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:baseline;gap:9px;display:flex}.brand-logo{border-radius:7px;align-self:center;width:26px;height:26px;transition:transform .2s}.brand:hover .brand-logo{transform:rotate(-6deg)scale(1.06)}.brand-name{letter-spacing:-.3px;font-size:17px;font-weight:800}.brand-sub{color:var(--text-faint);font-size:12px}.header-actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:7px 13px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.08)}.btn.ghost{color:var(--text-soft);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn.flash{color:var(--green)}.icon-btn{border:1px solid var(--border);background:var(--surface);width:34px;height:34px;color:var(--text-soft);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.tiny{background:0 0;border:none;width:24px;height:24px}.snap-count{background:var(--accent);color:#fff;border-radius:999px;margin-left:2px;padding:1px 6px;font-size:10px;font-weight:700}.empty-state{text-align:center;flex-direction:column;align-items:center;max-width:720px;height:100%;margin:0 auto;padding:56px 24px;display:flex;overflow-y:auto}.hero-logo{border-radius:24px;width:96px;height:96px;margin-bottom:24px;box-shadow:0 12px 40px #3b6cf059}.empty-state h1{letter-spacing:-.8px;margin:0 0 10px;font-size:30px;font-weight:800}.hero-sub{color:var(--text-soft);max-width:540px;margin:0 0 32px;font-size:15px}.dropzone{border:2px dashed var(--border-strong);width:100%;color:var(--text-soft);background:var(--surface);border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:36px 24px;transition:border-color .2s,background .2s,transform .2s;display:flex}.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft);transform:scale(1.01)}.drop-icon{color:var(--accent)}.drop-or{color:var(--text-faint);font-size:12px}.drop-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.paste-box{flex-direction:column;gap:10px;width:100%;margin-top:18px;display:flex;overflow:hidden}.paste-box textarea{resize:vertical;border:1px solid var(--border-strong);background:var(--surface);width:100%;color:var(--text);border-radius:12px;padding:14px;font-size:12.5px;line-height:1.6}.paste-box textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.paste-box .btn{align-self:flex-end}.workspace{grid-template-columns:1fr var(--sidenav-w,420px);height:100%;display:grid}.panel-collapse{text-align:left;background:var(--surface-2);border:none;border-bottom:1px solid var(--border);width:100%;font:inherit;color:var(--text-soft);cursor:pointer;flex:none;align-items:center;gap:8px;padding:9px 14px;font-size:12px;font-weight:700;display:none}.panel-collapse:hover{color:var(--text)}.panel-collapse-chevron{transition:transform .2s;transform:rotate(90deg)}.panel-collapse-chevron.collapsed{transform:rotate(-90deg)}.panel-collapse-tab{color:var(--accent-text);background:var(--accent-soft);border-radius:999px;margin-left:auto;padding:2px 9px;font-size:10.5px;font-weight:600}.inspector-content,.inspector-inner{flex-direction:column;flex:1;min-height:0;display:flex}@media (width<=1100px){.workspace{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr!important}.inspector{border-left:none;border-top:1px solid var(--border);max-height:46vh;display:flex}.inspector.collapsed .inspector-content,.resize-handle{display:none}.panel-collapse{display:flex}}.flow-pane{width:100%;min-width:0;padding:24px 28px 64px;overflow-y:auto}.pane-title{align-items:center;gap:10px;margin-bottom:20px;display:flex}.pane-title h2{letter-spacing:-.3px;margin:0;font-size:18px;font-weight:700}.graph-panel{background:var(--surface);border:1px solid var(--border);width:100%;box-shadow:var(--shadow);border-radius:16px;margin-bottom:22px;position:relative;overflow:hidden}.graph-panel:before{content:"";background:linear-gradient(90deg, var(--accent), var(--purple), var(--teal));opacity:.85;height:3px;position:absolute;inset:0 0 auto}.graph-panel-head{text-align:left;cursor:pointer;width:100%;font:inherit;color:var(--text);background:0 0;border:none;align-items:center;gap:8px;padding:13px 16px 11px;font-size:13px;font-weight:700;display:flex}.graph-panel-head:hover{background:var(--surface-2)}.graph-panel-hint{color:var(--text-faint);margin-left:auto;font-size:11px;font-weight:500}.graph-live{color:var(--accent-text);background:var(--accent-soft);border-radius:999px;padding:2px 9px;font-size:10px;font-weight:700;animation:1.4s infinite sim-blink}.graph-scroll{overflow-x:auto}.graph{background-image:radial-gradient(circle, var(--border) 1px, transparent 1px);background-position:50%;background-size:18px 18px;align-items:center;min-width:max-content;padding:30px 30px 44px;display:flex}.graph-step{align-items:center;display:flex}.gseg{background:var(--border-strong);z-index:0;flex:none;width:36px;height:3px;margin:0 -1px;transition:background .3s;position:relative;overflow:visible}.gseg.st-done{background:var(--green)}.gseg.st-pending{background:var(--border-strong)}.gseg.st-flow{background:color-mix(in srgb, var(--accent) 45%, var(--surface))}.gseg.st-flow:before{content:"";background:repeating-linear-gradient(90deg, var(--accent) 0 7px, transparent 7px 14px);animation:.45s linear infinite seg-flow;position:absolute;inset:0}@keyframes seg-flow{to{background-position:14px 0}}.gcap-wrap{flex-direction:column;align-items:center;display:flex;position:relative}.gcap{background:var(--text-faint);z-index:1;border-radius:50%;flex:none;width:16px;height:16px;transition:background .3s;position:relative}.gcap.start.active,.gcap.end{background:var(--accent)}.gcap.end.done{background:var(--green)}.gnode-wrap{justify-content:center;align-items:center;display:flex;position:relative}.gnode-halo{background:var(--accent);pointer-events:none;border-radius:50%;width:40px;height:40px;position:absolute}.gnode{z-index:1;border:3px solid var(--border-strong);background:linear-gradient(180deg, var(--surface), var(--surface-2));width:40px;height:40px;color:var(--text-soft);font:inherit;cursor:pointer;border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:800;transition:border-color .2s,transform .15s cubic-bezier(.34,1.56,.64,1),background .2s,color .2s;display:grid;position:relative}.gnode:hover{border-color:var(--accent);color:var(--accent-text);transform:scale(1.16)}.gnode.selected{border-color:var(--accent);background:linear-gradient(180deg, var(--accent), var(--accent-text));color:#fff}.gnode.dashed{border-style:dashed}.gnode-wrap.small .gnode{border-width:2.5px;width:28px;height:28px;font-size:11px}.gnode-wrap.small .gnode-halo{width:28px;height:28px}.gnode.success{border-color:var(--green);background:linear-gradient(180deg, var(--green), #167a55);color:#fff}.gnode.running{border-color:var(--accent);background:var(--surface)}.gnode.skipped{border-color:var(--border);color:var(--text-faint);opacity:.55;background:var(--surface-2)}.gnode.unknown{border-color:var(--orange);background:linear-gradient(180deg, var(--orange-soft), var(--surface-2));color:var(--orange)}.gnode-spinner{border:3px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px}.gnode-label{color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;pointer-events:none;max-width:100px;font-size:10.5px;font-weight:600;position:absolute;top:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%)}.gnode-label.selected{color:var(--accent-text);font-weight:700}.gnode-label.faint{color:var(--text-faint);font-weight:500}.gnode-label.st-running{color:var(--accent-text);font-weight:700}.gnode-label.st-success{color:var(--green)}.gnode-label.st-skipped{opacity:.7;text-decoration:line-through}.gnode-label.st-unknown{color:var(--orange)}.gcol-wrap{flex-direction:column;align-items:center;display:flex;position:relative}.gcol{align-items:center;display:flex}.gcol-rows{flex-direction:column;display:flex}.grow{justify-content:center;align-items:center;height:64px;display:flex;position:relative}.grow .gnode-label{top:calc(50% + 16px)}.gfan{flex:none;margin:0 -2px;display:block;overflow:visible}.gfan-path{fill:none;stroke:var(--border-strong);stroke-width:3px;stroke-linecap:round;transition:stroke .3s}.gfan-path.st-pending{stroke:var(--border-strong)}.gfan-path.st-done{stroke:var(--green)}.gfan-path.st-flow{stroke:color-mix(in srgb, var(--accent) 45%, var(--surface))}.gfan-path.overlay{stroke:var(--accent);stroke-dasharray:7 8;animation:.6s linear infinite fan-flow}@keyframes fan-flow{to{stroke-dashoffset:-15px}}.gfan-junction{fill:var(--border-strong);transition:fill .3s}.gfan-junction.st-flow{fill:var(--accent)}.gfan-junction.st-done{fill:var(--green)}.gfan-junction.st-pending{fill:var(--border-strong)}.gcol-name{color:var(--text-faint);text-transform:uppercase;letter-spacing:.8px;white-space:nowrap;font-size:11px;font-weight:800;transition:color .3s;position:absolute;top:calc(100% + 4px)}.gcol-name.st-flow{color:var(--accent-text)}.gcol-name.st-done{color:var(--green)}.gtip{z-index:100;background:var(--surface);border:1px solid var(--border-strong);pointer-events:none;border-radius:12px;width:max-content;max-width:340px;padding:10px 12px;position:fixed;transform:translate(-50%,calc(-100% - 12px))}.gtip:after{content:"";background:var(--surface);border-right:1px solid var(--border-strong);border-bottom:1px solid var(--border-strong);width:10px;height:10px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}.gtip-title{margin-bottom:7px;font-size:12.5px;font-weight:700}.gtip-row{align-items:baseline;gap:8px;margin-bottom:5px;display:flex}.gtip-key{width:48px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.6px;flex:none;font-size:9.5px;font-weight:700}.gtip-chips{flex-wrap:wrap;gap:4px;display:flex}.gtip-chip{font-family:var(--mono);background:var(--surface-2);color:var(--text-soft);border-radius:5px;padding:1.5px 6px;font-size:10px;font-weight:600}.gtip-chip.parameter{background:var(--purple-soft);color:var(--purple)}.gtip-chip.environment{background:var(--teal-soft);color:var(--teal)}.gtip-chip.runtime{background:var(--accent-soft);color:var(--accent-text)}.gtip-chip.jenkins{background:var(--surface-2);color:var(--text-faint)}.gtip-chip.sets{background:var(--green-soft);color:var(--green)}.gtip-chip.wrap{background:var(--teal-soft);color:var(--teal);text-overflow:ellipsis;white-space:nowrap;max-width:150px;overflow:hidden}.gtip-none{color:var(--text-faint);font-size:10.5px;font-style:italic}.gtip-legend{border-top:1px solid var(--border);color:var(--text-faint);flex-wrap:wrap;gap:10px;margin-top:7px;padding-top:7px;font-size:9px;display:flex}.gtip-legend .dot{border-radius:50%;width:7px;height:7px;margin-right:3px;display:inline-block}.gtip-legend .dot.parameter{background:var(--purple)}.gtip-legend .dot.environment{background:var(--teal)}.gtip-legend .dot.runtime{background:var(--accent)}.gtip-legend .dot.jenkins{background:var(--text-faint)}.flow{width:100%;position:relative}.flow-line{background:linear-gradient(var(--border-strong), var(--border-strong) 60%, transparent);border-radius:2px;width:2px;position:absolute;top:8px;bottom:8px;left:17px}.flow-row{margin-bottom:14px;padding-left:0;position:relative}.stage-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);cursor:pointer;border-radius:14px;padding:14px 16px;transition:border-color .15s,box-shadow .2s;position:relative}.stage-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.stage-card.selected{border-color:var(--accent)}.stage-card.dynamic{border-style:dashed}.stage-head{align-items:flex-start;gap:12px;display:flex}.stage-num{background:var(--accent-soft);width:26px;height:26px;color:var(--accent-text);border-radius:8px;flex:none;place-items:center;font-size:12.5px;font-weight:700;display:grid}.stage-num.parallel{background:var(--purple-soft);color:var(--purple)}.stage-num.dynamic{background:var(--orange-soft);color:var(--orange)}.stage-titles{flex:1;min-width:0}.stage-name{letter-spacing:-.2px;font-size:14.5px;font-weight:700}.stage-meta{flex-wrap:wrap;gap:4px;margin-top:5px;display:flex}.stage-counts{flex:none;gap:6px;display:flex}.count-pill{color:var(--text-soft);background:var(--surface-2);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600}.count-pill.sets{color:var(--green);background:var(--green-soft)}.stage-hint{color:var(--text-faint);margin-top:8px;font-size:11.5px}.stage-note{color:var(--orange);background:var(--orange-soft);border-radius:8px;align-items:center;gap:7px;margin-top:10px;padding:8px 11px;font-size:12.5px;display:flex}.stage-body{border-top:1px solid var(--border);cursor:default;margin-top:12px;padding-top:10px;overflow:hidden}.badge{background:var(--surface-2);color:var(--text-soft);font-size:10.5px;font-weight:600;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;border-radius:6px;align-items:center;gap:4px;max-width:280px;padding:2px 7px;display:inline-flex;overflow:hidden}.badge-wrap{background:var(--teal-soft);color:var(--teal)}.badge-when{background:var(--orange-soft);color:var(--orange)}.badge-write{background:var(--green-soft);color:var(--green)}.badge-post{background:var(--purple-soft);color:var(--purple)}.badge-default{background:var(--accent-soft);color:var(--accent-text)}.badge-choice{background:var(--surface-2);color:var(--text-soft)}.badge-stagegen{background:var(--accent-soft);color:var(--accent-text)}.badge-callgraph{background:var(--surface-2);color:var(--text-soft)}.badge-agent{background:var(--teal-soft);color:var(--teal)}.badge-kind{text-transform:uppercase;letter-spacing:.5px}.kind-choice,.kind-scripted{background:var(--purple-soft);color:var(--purple)}.kind-booleanParam,.kind-declarative{background:var(--green-soft);color:var(--green)}.kind-string,.kind-text{background:var(--accent-soft);color:var(--accent-text)}.branch-grid{cursor:default;gap:10px;margin-top:12px;display:grid}.branch-grid.cols-1{grid-template-columns:1fr}.branch-grid.cols-2{grid-template-columns:repeat(2,1fr)}.branch-grid.cols-3{grid-template-columns:repeat(3,1fr)}.branch-grid.cols-4{grid-template-columns:repeat(2,1fr)}@media (width<=1500px){.branch-grid.cols-3,.branch-grid.cols-4{grid-template-columns:repeat(2,1fr)}}@media (width<=800px){.branch-grid{grid-template-columns:1fr!important}}.branch-card{background:var(--surface-2);border:1px solid var(--border);border-radius:11px;min-width:0;padding:11px 12px}.branch-head{align-items:center;gap:7px;margin-bottom:7px;display:flex}.branch-icon{color:var(--purple);flex:none}.branch-name{font-size:13px;font-weight:700}.nested-stages{flex-direction:column;gap:8px;margin-top:10px;display:flex}.nested-stages .stage-card{padding:10px 12px}.step-list{flex-direction:column;gap:2px;display:flex}.step-item{min-width:0}.step-row{border-radius:7px;align-items:center;gap:7px;min-width:0;padding:4px 6px;display:flex}.step-row.has-children{cursor:pointer}.step-row:hover{background:var(--surface-2)}.branch-card .step-row:hover{background:var(--surface)}.step-chevron{color:var(--text-faint);flex:none;transition:transform .15s}.step-chevron.open{transform:rotate(90deg)}.step-dot{text-align:center;width:12px;color:var(--text-faint);flex:none;display:inline-block}.step-dot:before{content:"·"}.step-kind{font-family:var(--mono);text-align:center;border-radius:5px;flex:none;min-width:34px;padding:1.5px 6px;font-size:10px;font-weight:600}.k-sh{background:var(--accent-soft);color:var(--accent-text)}.k-echo{background:var(--surface-2);color:var(--text-faint)}.k-set{background:var(--green-soft);color:var(--green)}.k-call{background:var(--purple-soft);color:var(--purple)}.k-flow{background:var(--slate-soft);color:var(--slate)}.k-warn{background:var(--orange-soft);color:var(--orange)}.k-catch{background:var(--red-soft);color:var(--red)}.k-io,.k-wrap{background:var(--teal-soft);color:var(--teal)}.k-other{background:var(--surface-2);color:var(--text-soft)}.step-label{color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.step-badges{flex:none;gap:4px;margin-left:auto;display:flex}.step-row.details{align-items:flex-start}.step-row.details .step-kind{margin-top:2px}.step-row.details .step-label{white-space:pre-wrap;word-break:break-word}.step-detail{background:var(--surface-2);border:1px solid var(--border);color:var(--text-soft);white-space:pre-wrap;word-break:break-word;border-radius:8px;max-height:260px;margin:2px 0 6px 56px;padding:7px 10px;font-size:10.5px;line-height:1.55;overflow-y:auto}.branch-card .step-detail{background:var(--surface)}.expand-all-btn{font:inherit;color:var(--text-soft);background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:3px 10px;font-size:11px;font-weight:600;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.expand-all-btn:hover{color:var(--accent-text);border-color:var(--accent);background:var(--accent-soft)}.expand-all-btn.on{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent)}.step-children{border-left:1.5px solid var(--border);margin-left:14px;padding-left:10px;overflow:hidden}.post-block{border-top:1px dashed var(--border);flex-direction:column;gap:5px;margin-top:10px;padding-top:8px;display:flex}.post-row{align-items:baseline;gap:8px;display:flex}.post-summary{color:var(--text-faint);font-size:11.5px;font-family:var(--mono)}.editable{cursor:text;border-radius:5px;margin:-1px -3px;padding:1px 3px;position:relative}.editable:hover{background:var(--accent-soft)}.editable-pencil{opacity:0;color:var(--accent-text);vertical-align:middle;margin-left:5px;transition:opacity .12s}.editable:hover .editable-pencil{opacity:1}.edit-field{font:inherit;color:var(--text);background:var(--surface);border:1.5px solid var(--accent);border-radius:6px;min-width:200px;max-width:100%;padding:2px 6px}.edit-field:focus{outline:none}.edit-area{resize:vertical;width:100%;font-family:var(--mono);font-size:12px;line-height:1.55}.inspector{border-left:1px solid var(--border);background:var(--surface);flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.resize-handle{z-index:10;cursor:col-resize;touch-action:none;width:7px;position:absolute;top:0;bottom:0;left:-3px}.resize-handle:after{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:3px}.resize-handle:hover:after{background:var(--accent)}body.resizing-nav{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing-nav .resize-handle:after{background:var(--accent)}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;flex:none;padding:0 8px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{font:inherit;color:var(--text-faint);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:12px 11px;font-size:12.5px;font-weight:600;position:relative}.tab:hover{color:var(--text-soft)}.tab.active{color:var(--accent-text)}.tab-underline{background:var(--accent);border-radius:2px;height:2px;display:block;position:absolute;bottom:-1px;left:8px;right:8px}.tab-body{flex:1;padding:16px;overflow-y:auto}.panel-list{flex-direction:column;gap:10px;display:flex}.card{background:var(--bg-soft);border:1px solid var(--border);border-radius:11px;padding:12px 13px}.card.subtle{background:0 0;border-style:dashed}.card-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.card-title{word-break:break-all;font-size:13px;font-weight:700}.card-desc{color:var(--text-soft);margin:4px 0 8px;font-size:12px}.choice-list{flex-wrap:wrap;gap:5px;display:flex}.kv{gap:8px;font-size:12px;display:flex}.kv-k{color:var(--text-faint)}.func-icon{color:var(--purple)}.func-card{cursor:pointer;transition:border-color .15s,box-shadow .15s}.func-card:hover{border-color:var(--border-strong)}.func-card.expanded{border-color:var(--accent)}.func-card .card-head{margin-bottom:0}.func-chevron{margin-left:auto}.func-tags{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.func-body-wrap{overflow:hidden}.func-body{border-top:1px solid var(--border);background:var(--surface);color:var(--text-soft);white-space:pre-wrap;word-break:break-word;border-radius:8px;max-height:320px;margin:10px -2px 0;padding:10px 11px;font-size:11px;line-height:1.55;overflow-y:auto}.small-code{color:var(--text-soft);word-break:break-all;padding:2px 0;font-size:11.5px}.env-row{background:var(--bg-soft);border:1px solid var(--border);border-radius:9px;align-items:center;gap:10px;min-width:0;padding:7px 10px;display:flex}.env-name{text-overflow:ellipsis;flex:none;align-items:center;gap:5px;max-width:46%;font-size:12px;font-weight:600;display:inline-flex;overflow:hidden}.secret-icon{color:var(--orange);flex:none}.env-value{color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11.5px;overflow:hidden}.env-value.masked{letter-spacing:1px;color:var(--text-faint)}.flow-group{margin-bottom:14px}.flow-group-head{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.flow-group-title{font-size:13px;font-weight:700}.flow-group-hint{color:var(--text-faint);font-size:11px}.flow-var{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;margin-bottom:7px;padding:9px 11px}.var-chip{border-radius:6px;margin-bottom:6px;padding:2px 8px;font-size:11.5px;font-weight:600;display:inline-block}.origin-parameter{background:var(--purple-soft);color:var(--purple)}.origin-environment{background:var(--teal-soft);color:var(--teal)}.origin-runtime{background:var(--green-soft);color:var(--green)}.origin-jenkins{background:var(--surface-2);color:var(--text-faint)}.flow-edges{flex-direction:column;gap:3px;display:flex}.flow-edge{color:var(--text-soft);align-items:center;gap:6px;font-size:11.5px;display:flex}.flow-edge.write .edge-verb{color:var(--green);font-weight:600}.flow-edge.read .edge-verb{color:var(--accent-text);font-weight:600}.flow-edge.none{color:var(--text-faint);font-style:italic}.edge-label{font-family:var(--mono);font-size:11px}.overview-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stat{background:var(--bg-soft);border:1px solid var(--border);border-radius:11px;flex-direction:column;align-items:center;gap:2px;padding:12px 10px;display:flex}.stat-num{letter-spacing:-.4px;font-size:17px;font-weight:800}.stat-label{color:var(--text-faint);text-transform:uppercase;letter-spacing:.6px;font-size:10.5px}.source-panel{flex-direction:column;gap:10px;height:100%;display:flex}.source-wrap{flex:1;min-height:0;display:flex;position:relative}.source-editor{resize:none;background:var(--bg-soft);width:100%;color:var(--text);border:1px solid var(--border);border-radius:10px;flex:1;padding:12px;font-size:11.5px;line-height:1.6;overflow:auto}.source-editor:focus{outline:2px solid var(--accent);outline-offset:-1px}.source-actions{flex:none;align-items:center;gap:8px;display:flex}.source-hint{color:var(--text-faint);font-size:11.5px}.source-highlights{pointer-events:none;border-radius:10px;position:absolute;inset:0;overflow:hidden}.src-line{pointer-events:none;border-radius:2px;position:absolute}.src-line.src-error{background:color-mix(in srgb, var(--red) 10%, transparent);box-shadow:inset 3px 0 0 var(--red)}.src-line.src-warning{background:color-mix(in srgb, var(--orange) 10%, transparent);box-shadow:inset 3px 0 0 var(--orange)}.src-line.src-flash{pointer-events:none;background:color-mix(in srgb, var(--accent) 28%, transparent);box-shadow:inset 3px 0 0 var(--accent);animation:1.8s ease-out forwards src-flash-fade}@keyframes src-flash-fade{0%{background:color-mix(in srgb, var(--accent) 40%, transparent)}60%{background:color-mix(in srgb, var(--accent) 28%, transparent)}to{box-shadow:none;background:0 0}}.src-tooltip{z-index:80;background:var(--surface);border:1px solid var(--border-strong);max-width:300px;box-shadow:var(--shadow-lg);pointer-events:none;color:var(--text);border-radius:9px;padding:9px 11px;font-size:12px;position:fixed;transform:translateY(calc(-100% - 8px))}.src-tooltip-head{align-items:center;gap:6px;margin-bottom:5px;font-size:11px;font-weight:700;display:flex}.src-tooltip-head.error{color:var(--red)}.src-tooltip-head.warning{color:var(--orange)}.src-tooltip-head .problem-cat{margin-left:0}.src-tooltip-loc{color:var(--text-faint);margin-left:auto;font-size:10.5px;font-weight:500}.src-tooltip-msg{color:var(--text);font-weight:600;line-height:1.45}.src-tooltip-hint{color:var(--text-soft);margin-top:5px;font-size:11.5px;line-height:1.45}.source-status{border:1px solid var(--border);border-radius:9px;flex:none;align-items:center;gap:8px;padding:7px 11px;font-size:11.5px;font-weight:600;display:flex}.source-status.has-errors{background:var(--red-soft);color:var(--red);border-color:color-mix(in srgb, var(--red) 35%, transparent)}.source-status.has-warnings{background:var(--orange-soft);color:var(--orange);border-color:color-mix(in srgb, var(--orange) 35%, transparent)}.source-status.pending{background:var(--accent-soft);color:var(--accent-text);border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.source-status-pending{font-weight:600}.source-status-hint{color:var(--text-faint);margin-left:auto;font-weight:500}.tab-count{color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:17px;height:17px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.tab-count.has-errors{background:var(--red)}.tab-count.has-warnings{background:var(--orange)}.problems-summary{flex-wrap:wrap;gap:8px;margin-bottom:2px;display:flex}.problems-stat{border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;font-weight:700;display:inline-flex}.problems-stat.error{background:var(--red-soft);color:var(--red)}.problems-stat.warning{background:var(--orange-soft);color:var(--orange)}.problems-stat.pending{background:var(--surface-2);color:var(--text-faint)}.problem-cat{vertical-align:middle;font-family:var(--mono);text-transform:uppercase;letter-spacing:.4px;background:var(--surface-2);color:var(--text-faint);border-radius:5px;margin-left:8px;padding:1px 6px;font-size:9.5px;font-weight:700;display:inline-block}.problem-cat.cat-syntax{background:var(--red-soft);color:var(--red)}.problem-cat.cat-semantic{background:var(--accent-soft);color:var(--accent-text)}.problem-cat.cat-deadcode{background:var(--slate-soft);color:var(--slate)}.problem-row{text-align:left;background:var(--bg-soft);border:1px solid var(--border);cursor:pointer;width:100%;font:inherit;color:var(--text);border-left-width:3px;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;transition:border-color .12s,background .12s,transform .12s;display:flex}.problem-row:hover{background:var(--surface-2);transform:translate(2px)}.problem-row.error{border-left-color:var(--red)}.problem-row.warning{border-left-color:var(--orange)}.problem-icon{flex:none;margin-top:1px}.problem-row.error .problem-icon{color:var(--red)}.problem-row.warning .problem-icon{color:var(--orange)}.problem-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.problem-msg{font-size:12.5px;font-weight:600}.problem-hint{color:var(--text-soft);font-size:11.5px}.problem-loc{color:var(--text-faint);background:var(--surface-2);border-radius:6px;flex:none;margin-top:1px;padding:2px 7px;font-size:11px}.problems-ok{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:44px 20px;display:flex}.problems-ok-icon{color:var(--green)}.problems-ok-title{font-size:15px;font-weight:700}.problems-ok-sub{color:var(--text-faint);max-width:260px;font-size:12px}.drawer-backdrop{z-index:40;background:#080a1273;position:fixed;inset:0}.drawer{z-index:50;background:var(--surface);border-left:1px solid var(--border);width:340px;box-shadow:var(--shadow-lg);flex-direction:column;gap:12px;padding:18px;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer-head{justify-content:space-between;align-items:center;display:flex}.drawer-head h3{margin:0;font-size:15px}.snap-list{flex-direction:column;gap:8px;display:flex;overflow-y:auto}.snap-item{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;align-items:center;gap:8px;padding:10px 12px;display:flex}.snap-info{cursor:pointer;flex-direction:column;flex:1;min-width:0;display:flex}.snap-info:hover .snap-name{color:var(--accent-text)}.snap-name{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.snap-date{color:var(--text-faint);font-size:11px}.sim-panel{flex-direction:column;gap:12px;display:flex}.sim-controls{flex-direction:column;gap:8px;display:flex}.sim-section-title{text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);font-size:12px;font-weight:700}.sim-field{align-items:center;gap:10px;display:flex}.sim-label{width:38%;color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;flex:none;font-size:11.5px;font-weight:600;overflow:hidden}.sim-input{background:var(--surface);min-width:0;color:var(--text);border:1px solid var(--border-strong);border-radius:7px;flex:1;padding:6px 8px;font-size:12px}.sim-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.sim-input.speed{flex:none;width:64px}.sim-run-row{align-items:center;gap:8px;margin-top:6px;display:flex}.sim-hint{color:var(--text-faint);align-items:flex-start;gap:6px;margin-top:4px;font-size:11px;line-height:1.45;display:flex}.sim-hint svg{flex:none;margin-top:2px}.toggle{border:1px solid var(--border-strong);background:var(--surface-2);cursor:pointer;border-radius:999px;flex:none;width:38px;height:21px;transition:background .18s,border-color .18s;position:relative}.toggle.on{background:var(--accent);border-color:var(--accent)}.toggle-knob{background:#fff;border-radius:50%;width:15px;height:15px;transition:transform .18s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0000004d}.toggle.on .toggle-knob{transform:translate(17px)}.sim-timeline{flex-direction:column;gap:6px;display:flex}.sim-stage{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;padding:8px 10px;transition:border-color .2s,box-shadow .2s}.sim-stage.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.sim-stage-head{align-items:center;gap:8px;min-width:0;display:flex}.sim-stage-head.clickable{cursor:pointer}.sim-stage-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12.5px;font-weight:700;overflow:hidden}.sim-status-label{border-radius:999px;flex:none;padding:2px 8px;font-size:10.5px;font-weight:600}.sim-status-label.pending{background:var(--surface-2);color:var(--text-faint)}.sim-status-label.running{background:var(--accent-soft);color:var(--accent-text)}.sim-status-label.success{background:var(--green-soft);color:var(--green)}.sim-status-label.skipped{background:var(--surface-2);color:var(--text-faint);text-decoration:line-through}.sim-status-label.unknown{background:var(--orange-soft);color:var(--orange)}.sim-dot{background:var(--border-strong);border-radius:50%;flex:none;width:10px;height:10px;position:relative}.sim-dot.running{background:var(--accent)}.sim-dot.success{background:var(--green)}.sim-dot.skipped{background:var(--text-faint);opacity:.5}.sim-dot.unknown{background:var(--orange)}.sim-pulse{background:var(--accent);border-radius:50%;position:absolute;inset:0}.sim-reason{color:var(--text-faint);font-size:11px;font-family:var(--mono);word-break:break-word;margin:4px 0 0 18px}.sim-detail{overflow:hidden}.sim-branches{flex-direction:column;gap:5px;margin:8px 0 4px 14px;display:flex}.sim-log{border-left:1.5px solid var(--border);flex-direction:column;gap:1px;margin:8px 0 2px 6px;display:flex}.sim-log-row{align-items:baseline;gap:7px;min-width:0;padding:2px 4px;font-size:11px;display:flex}.sim-log-kind{color:var(--text-faint);flex:none;min-width:32px;font-size:9.5px;font-weight:600}.sim-log-label{color:var(--text-soft);text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:10.5px;overflow:hidden}.sim-log-note{color:var(--text-faint);flex:none;font-size:10px;font-style:italic}.sim-log-row.st-skip{opacity:.42}.sim-log-row.st-skip .sim-log-label{text-decoration:line-through}.sim-log-row.st-maybe .sim-log-kind{color:var(--orange)}.sim-log-row.st-onfail{opacity:.55}.sim-log-row.st-onfail .sim-log-kind{color:var(--red)}.sim-log-row.st-always .sim-log-kind{color:var(--teal)}.sim-log-row.st-cond .sim-log-kind{color:var(--orange)}.sim-log-row.st-cond .sim-log-label{color:var(--text);font-weight:600}.stage-card{overflow:visible}.sim-ring{z-index:2;background:var(--surface);border:2px solid var(--border-strong);width:22px;height:22px;color:var(--text-faint);box-shadow:var(--shadow);border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:grid;position:absolute;top:-9px;right:-9px}.sim-ring.running{border-color:var(--accent);color:var(--accent);animation:1s infinite sim-blink}.sim-ring.success{border-color:var(--green);color:var(--green)}.sim-ring.skipped{border-color:var(--border-strong);color:var(--text-faint)}.sim-ring.unknown{border-color:var(--orange);color:var(--orange)}@keyframes sim-blink{0%,to{opacity:1}50%{opacity:.35}}.stage-card.sim-running{border-color:var(--accent)}.stage-card.sim-success{border-color:var(--green)}.stage-card.sim-skipped{opacity:.55}.stage-card.sim-unknown{border-color:var(--orange);border-style:dashed}.branch-card.sim-running{border-color:var(--accent)}.branch-card.sim-success{border-color:var(--green)}.branch-card.sim-skipped{opacity:.55}.branch-card.sim-unknown{border-color:var(--orange);border-style:dashed}.empty-note{color:var(--text-faint);padding:6px 2px;font-size:12px}.empty-note.big{text-align:center;padding:30px;font-size:14px}.edit-toggle.active{background:var(--accent-soft);color:var(--accent-text);border-color:var(--accent)}.undo-redo{gap:2px;display:inline-flex}.undo-redo .icon-btn:disabled{opacity:.35;cursor:default}.undo-redo .icon-btn:disabled:hover{color:inherit;background:0 0}.icon-btn.danger:hover{background:var(--red-soft);color:var(--red)}.step-actions{flex:none;align-items:center;gap:0;margin-left:auto;display:none}.step-row:hover .step-actions{display:inline-flex}.step-actions .icon-btn.tiny{width:22px;height:22px;color:var(--text-faint)}.step-actions .icon-btn.tiny:hover{color:var(--text)}.step-actions .icon-btn.tiny:disabled{opacity:.3;cursor:default}.step-actions .icon-btn.tiny.danger:hover{color:var(--red)}.stage-edit-actions{gap:2px;display:inline-flex}.stage-edit-actions .icon-btn.tiny{color:var(--text-faint)}.stage-edit-actions .icon-btn.tiny:hover{color:var(--text)}.add-step-btn{color:var(--text-faint);border:1px dashed var(--border-strong);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;margin-top:8px;padding:5px 11px;font-family:inherit;font-size:11.5px;font-weight:600;display:inline-flex}.add-step-btn:hover{color:var(--accent-text);border-color:var(--accent);background:var(--accent-soft)}.add-stage-row{justify-content:center;gap:10px;display:flex}.add-menu-wrap{display:inline-flex;position:relative}.add-menu{z-index:30;background:var(--surface);border:1px solid var(--border-strong);min-width:150px;box-shadow:var(--shadow-lg);border-radius:9px;flex-direction:column;gap:2px;padding:4px;display:flex;position:absolute;top:100%;right:0}.add-menu button{text-align:left;font:inherit;color:var(--text-soft);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:7px 10px;font-size:12px;font-weight:600}.add-menu button:hover{background:var(--accent-soft);color:var(--accent-text)}.add-branch{align-self:flex-start}.add-stage-btn{color:var(--text-faint);background:var(--surface);border:1.5px dashed var(--border-strong);cursor:pointer;border-radius:14px;align-items:center;gap:8px;padding:10px 18px;font-family:inherit;font-size:13px;font-weight:600;display:inline-flex}.add-stage-btn:hover{color:var(--accent-text);border-color:var(--accent);background:var(--accent-soft)}.add-row-btn{color:var(--text-faint);border:1px dashed var(--border-strong);cursor:pointer;background:0 0;border-radius:9px;align-self:flex-start;align-items:center;gap:6px;padding:7px 12px;font-family:inherit;font-size:12px;font-weight:600;display:inline-flex}.add-row-btn:hover{color:var(--accent-text);border-color:var(--accent);background:var(--accent-soft)}.add-form{background:var(--bg-soft);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:12px;display:flex}.add-form-row{gap:8px;display:flex}.add-form-row>*{flex:1;min-width:0}.add-form-actions{justify-content:flex-end;gap:8px;display:flex}.add-form-check{color:var(--text-soft);align-items:center;gap:8px;font-size:12px;display:flex}.card-delete{margin-left:auto}.step-editor-drawer{width:420px}.drawer-sub{color:var(--text-faint);margin-top:-6px;font-size:11.5px}.drawer-scroll{flex-direction:column;flex:1;gap:8px;padding-right:2px;display:flex;overflow-y:auto}.drawer-foot{flex:none;justify-content:flex-end;gap:8px;display:flex}.field-label{text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);align-items:center;gap:6px;margin-top:6px;font-size:11px;font-weight:700;display:flex}.field-input{background:var(--surface);color:var(--text);border:1px solid var(--border-strong);resize:vertical;border-radius:8px;width:100%;padding:7px 9px;font-family:inherit;font-size:12.5px}.field-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.field-hint{color:var(--text-faint);font-size:11.5px}.field-hint code,.inject-mode code,.empty-note code{font-family:var(--mono,ui-monospace, monospace);background:var(--surface-2);border-radius:4px;padding:1px 4px;font-size:11px}.type-grid{flex-wrap:wrap;gap:6px;display:flex}.position-toggle{gap:6px;display:flex}.position-toggle .type-pill{flex:1}.type-pill{color:var(--text-soft);background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;border-radius:999px;padding:5px 11px;font-family:inherit;font-size:12px;font-weight:600}.type-pill:hover{border-color:var(--accent);color:var(--accent-text)}.type-pill.active{background:var(--accent);border-color:var(--accent);color:#fff}.env-inject{flex-direction:column;gap:8px;display:flex}.env-pair-row{align-items:center;gap:6px;display:flex}.env-pair-row .field-input:first-child{flex:0 0 38%}.inject-mode{flex-direction:column;gap:4px;display:flex}.inject-mode label{color:var(--text-soft);cursor:pointer;border-radius:7px;align-items:center;gap:7px;padding:4px 6px;font-size:12px;display:flex}.inject-mode label.active{color:var(--text);background:var(--surface-2)}.groovy-preview{background:var(--bg-soft);border:1px solid var(--border);white-space:pre-wrap;word-break:break-word;border-radius:9px;max-height:220px;margin:0;padding:10px 12px;font-size:11.5px;line-height:1.55;overflow-y:auto}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);background-clip:content-box;border:2px solid #0000;border-radius:6px}::-webkit-scrollbar-track{background:0 0}
