:root{color-scheme:light;--te-bg: #f4f6fa;--te-surface: #ffffff;--te-surface-soft: #f7f9fc;--te-surface-raised: #ffffff;--te-surface-overlay: #ffffff;--te-border: #e3e8ef;--te-border-strong: #cdd5df;--te-text: #16202c;--te-text-2: #52606f;--te-text-3: #64748b;--te-primary: #2563eb;--te-primary-hover: #1d4ed8;--te-primary-soft: #eaf1ff;--te-primary-tint: #eff6ff;--te-primary-border: #cfdefc;--te-primary-ring: rgba(37, 99, 235, .18);--te-on-primary: #ffffff;--te-success: #15803d;--te-success-soft: #e9f7ef;--te-success-tint: #f0fdf4;--te-success-border: #c8ead6;--te-success-ring: rgba(21, 128, 61, .14);--te-danger: #c2262b;--te-danger-soft: #fdeceb;--te-danger-tint: #fef2f2;--te-danger-border: #f5cccb;--te-warning: #b45309;--te-warning-soft: #fdf3e3;--te-warning-tint: #fffbeb;--te-warning-border: #f2ddb8;--te-cyan: #0f766e;--te-violet: #7c3aed;--te-cyan-soft: #e6f7f8;--te-violet-soft: #f1ecff;--te-neutral-soft: #f1f3f6;--te-slate-soft: #eef2f7;--te-slate: #334155;--te-tone-blue-bg: #e8f0fe;--te-tone-blue-fg: #2563eb;--te-tone-orange-bg: #fff3e6;--te-tone-orange-fg: #d97706;--te-tone-green-bg: #e8f7ee;--te-tone-green-fg: #15803d;--te-tone-purple-bg: #f1ecff;--te-tone-purple-fg: #7c3aed;--te-tone-cyan-bg: #e6f7f8;--te-tone-cyan-fg: #0e7490;--te-tone-red-bg: #fdecec;--te-tone-red-fg: #dc2626;--te-tone-gray-bg: #f1f3f6;--te-tone-gray-fg: #52606f;--te-tone-slate-bg: #eef2f7;--te-tone-slate-fg: #334155;--te-accent-rgb: 37, 99, 235;--te-cyan-rgb: 15, 118, 110;--te-brand-gradient: linear-gradient(135deg, #2563eb, #7c3aed);--te-header-bg: rgba(255, 255, 255, .9);--te-header-bg-scrolled: rgba(255, 255, 255, .97);--te-header-border: var(--te-border);--te-overlay-bg: rgba(15, 23, 42, .45);--te-hover-bg: rgba(15, 23, 42, .04);--te-selection-bg: rgba(37, 99, 235, .22);--te-focus-ring: rgba(37, 99, 235, .55);--te-grid: #dfe5ee;--te-grid-line: rgba(37, 99, 235, .05);--te-glow-blue: rgba(76, 133, 255, .18);--te-glow-cyan: rgba(88, 230, 217, .08);--te-surface-gradient: linear-gradient(165deg, #ffffff, #f8fafd);--te-surface-gradient-soft: linear-gradient(165deg, #f9fbfe, #f4f6fa);--te-band-bg: rgba(235, 240, 247, .55);--te-hero-bg: radial-gradient(780px 420px at 78% 12%, rgba(76, 133, 255, .14), transparent 62%), radial-gradient(620px 360px at 20% -8%, rgba(88, 230, 217, .1), transparent 60%), linear-gradient(180deg, #f7f9fd, #f4f6fa);--te-cta-bg: radial-gradient(700px 320px at 18% 20%, rgba(76, 133, 255, .16), transparent 65%), radial-gradient(620px 300px at 86% 80%, rgba(155, 140, 255, .12), transparent 65%), linear-gradient(120deg, #eef4ff, #f3f0ff 55%, #ecfaf8);--te-hero-title-gradient: linear-gradient(100deg, #0f172a 4%, #2563eb 52%, #0f766e 96%);--te-surface-sheen: inset 0 1px 0 rgba(255, 255, 255, .9);--te-terminal-bg: linear-gradient(165deg, #111b2c, #0a101b);--te-terminal-bar-bg: rgba(148, 177, 224, .06);--te-terminal-border: rgba(148, 177, 224, .2);--te-terminal-text: #eef4ff;--te-terminal-text-2: #a7b7d0;--te-terminal-text-3: #8293ad;--te-terminal-shadow: 0 28px 70px rgba(15, 23, 42, .32);--te-float-bg: rgba(17, 27, 44, .94);--te-code-bg: #0f172a;--te-code-fg: #d6e2f0;--te-code-muted: #93a4bb;--te-code-border: #1e293b;--te-code-head-bg: rgba(255, 255, 255, .04);--te-code-inline-bg: rgba(37, 99, 235, .08);--te-code-inline-fg: #1d4ed8;--te-code-danger-bg: #2a1215;--te-code-danger-fg: #f3c9cb;--te-code-danger-muted: #7d8ea6;--te-radius-sm: 8px;--te-radius-md: 12px;--te-radius-lg: 16px;--te-space-1: 4px;--te-space-2: 8px;--te-space-3: 12px;--te-space-4: 16px;--te-space-5: 24px;--te-space-6: 32px;--te-shadow-card: 0 1px 2px rgba(16, 24, 40, .05), 0 1px 3px rgba(16, 24, 40, .06);--te-shadow-float: 0 8px 24px rgba(16, 24, 40, .12);--te-shadow-elevated: 0 18px 44px rgba(16, 24, 40, .12);--te-shadow-hover: 0 24px 52px rgba(16, 24, 40, .16);--te-shadow-header: 0 16px 48px rgba(16, 24, 40, .1);--te-panel-w: clamp(420px, 36vw, 560px);--te-font: "Inter", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--te-mono: "JetBrains Mono", "Cascadia Code", Consolas, "Courier New", monospace}:root[data-theme=dark]{color-scheme:dark;--te-bg: #070b12;--te-surface: #0d1522;--te-surface-soft: #111b2b;--te-surface-raised: #142033;--te-surface-overlay: #0e1628;--te-border: #22304a;--te-border-strong: #334665;--te-text: #eef4ff;--te-text-2: #a7b7d0;--te-text-3: #8b9cb8;--te-primary: #7cb2ff;--te-primary-hover: #a9c8ff;--te-primary-soft: rgba(124, 178, 255, .14);--te-primary-tint: rgba(124, 178, 255, .1);--te-primary-border: rgba(124, 178, 255, .34);--te-primary-ring: rgba(124, 178, 255, .24);--te-on-primary: #061020;--te-success: #5ee1a0;--te-success-soft: rgba(94, 225, 160, .12);--te-success-tint: rgba(94, 225, 160, .08);--te-success-border: rgba(94, 225, 160, .3);--te-success-ring: rgba(94, 225, 160, .18);--te-danger: #fb7185;--te-danger-soft: rgba(251, 113, 133, .12);--te-danger-tint: rgba(251, 113, 133, .08);--te-danger-border: rgba(251, 113, 133, .32);--te-warning: #fbbf24;--te-warning-soft: rgba(251, 191, 36, .12);--te-warning-tint: rgba(251, 191, 36, .08);--te-warning-border: rgba(251, 191, 36, .3);--te-cyan: #58e6d9;--te-violet: #9b8cff;--te-cyan-soft: rgba(88, 230, 217, .12);--te-violet-soft: rgba(155, 140, 255, .14);--te-neutral-soft: rgba(148, 177, 224, .08);--te-slate-soft: rgba(148, 177, 224, .1);--te-slate: #cbd8ee;--te-tone-blue-bg: rgba(124, 178, 255, .14);--te-tone-blue-fg: #9cc4ff;--te-tone-orange-bg: rgba(251, 191, 36, .14);--te-tone-orange-fg: #fbbf24;--te-tone-green-bg: rgba(94, 225, 160, .14);--te-tone-green-fg: #5ee1a0;--te-tone-purple-bg: rgba(155, 140, 255, .16);--te-tone-purple-fg: #b3a7ff;--te-tone-cyan-bg: rgba(88, 230, 217, .14);--te-tone-cyan-fg: #7df0e4;--te-tone-red-bg: rgba(251, 113, 133, .14);--te-tone-red-fg: #fb7185;--te-tone-gray-bg: rgba(148, 177, 224, .1);--te-tone-gray-fg: #a7b7d0;--te-tone-slate-bg: rgba(148, 177, 224, .14);--te-tone-slate-fg: #cbd8ee;--te-accent-rgb: 124, 178, 255;--te-cyan-rgb: 88, 230, 217;--te-brand-gradient: linear-gradient(135deg, #2563eb, #6d5ce0);--te-header-bg: rgba(7, 11, 18, .62);--te-header-bg-scrolled: rgba(7, 11, 18, .9);--te-header-border: var(--te-border);--te-overlay-bg: rgba(2, 6, 12, .62);--te-hover-bg: rgba(148, 177, 224, .07);--te-selection-bg: rgba(124, 178, 255, .3);--te-focus-ring: rgba(88, 230, 217, .72);--te-grid: #1b2740;--te-grid-line: rgba(124, 178, 255, .05);--te-glow-blue: rgba(76, 133, 255, .2);--te-glow-cyan: rgba(88, 230, 217, .1);--te-surface-gradient: linear-gradient(165deg, rgba(16, 25, 40, .96), rgba(9, 14, 23, .98));--te-surface-gradient-soft: linear-gradient(165deg, rgba(17, 27, 43, .9), rgba(11, 17, 28, .94));--te-band-bg: rgba(10, 16, 27, .55);--te-hero-bg: radial-gradient(780px 420px at 78% 12%, rgba(76, 133, 255, .18), transparent 62%), radial-gradient(620px 360px at 20% -8%, rgba(88, 230, 217, .08), transparent 60%), linear-gradient(180deg, rgba(8, 13, 23, .9), rgba(5, 7, 13, .98));--te-cta-bg: radial-gradient(700px 320px at 18% 20%, rgba(76, 133, 255, .2), transparent 65%), radial-gradient(620px 300px at 86% 80%, rgba(155, 140, 255, .14), transparent 65%), linear-gradient(120deg, #07101f, #0a0a1a 55%, #051019);--te-hero-title-gradient: linear-gradient(100deg, #ffffff 4%, #a9c8ff 46%, #7df0e4 96%);--te-surface-sheen: inset 0 1px 0 rgba(255, 255, 255, .04);--te-terminal-bg: linear-gradient(165deg, rgba(14, 22, 40, .96), rgba(6, 10, 18, .98));--te-terminal-bar-bg: rgba(148, 177, 224, .03);--te-terminal-border: rgba(148, 177, 224, .18);--te-terminal-text: #eef4ff;--te-terminal-text-2: #a7b7d0;--te-terminal-text-3: #71819c;--te-terminal-shadow: 0 32px 80px rgba(0, 0, 0, .55);--te-float-bg: rgba(10, 17, 30, .92);--te-code-bg: #0f172a;--te-code-fg: #d6e2f0;--te-code-muted: #93a4bb;--te-code-border: #1e293b;--te-code-head-bg: rgba(255, 255, 255, .04);--te-code-inline-bg: rgba(124, 178, 255, .12);--te-code-inline-fg: #b7d0ff;--te-code-danger-bg: #2a1215;--te-code-danger-fg: #f3c9cb;--te-code-danger-muted: #7d8ea6;--te-shadow-card: 0 18px 48px rgba(0, 0, 0, .35);--te-shadow-float: 0 28px 80px rgba(0, 0, 0, .5);--te-shadow-elevated: 0 24px 56px rgba(0, 0, 0, .42);--te-shadow-hover: 0 30px 64px rgba(0, 0, 0, .5);--te-shadow-header: 0 16px 48px rgba(0, 0, 0, .38)}html.theme-transition,html.theme-transition body,html.theme-transition *,html.theme-transition *:before,html.theme-transition *:after{transition:background-color .3s ease,background-image .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease,fill .3s ease,stroke .3s ease!important}@media(prefers-reduced-motion:reduce){html.theme-transition,html.theme-transition body,html.theme-transition *,html.theme-transition *:before,html.theme-transition *:after{transition:none!important}}*{box-sizing:border-box}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{width:0;height:0;display:none}html,body,#app{height:100%}body{margin:0;background:var(--te-bg);color:var(--te-text);font-family:var(--te-font);font-size:13px;-webkit-font-smoothing:antialiased}::selection{background:var(--te-selection-bg);color:var(--te-text)}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--te-space-4);padding:var(--te-space-3) var(--te-space-6);background:var(--te-header-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--te-header-border)}.app-brand{display:flex;align-items:center;gap:var(--te-space-3)}.app-brand__mark{width:28px;height:28px;border-radius:9px;background:var(--te-brand-gradient);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px}.app-brand__title{font-size:15px;font-weight:600;letter-spacing:.2px}.app-brand__sub{color:var(--te-text-3);font-size:12px}.app-main{flex:1;padding:var(--te-space-5) var(--te-space-6) var(--te-space-6);max-width:1680px;width:100%;margin:0 auto}.card{background:var(--te-surface);border:1px solid var(--te-border);border-radius:var(--te-radius-md);box-shadow:var(--te-shadow-card)}.hint{color:var(--te-text-3);font-size:12px;line-height:1.6;margin:var(--te-space-2) 0 0}.hint code{padding:0 4px;border:1px solid var(--te-border);border-radius:4px;background:var(--te-surface-soft);color:var(--te-text-2);font-family:var(--te-mono);font-size:12px}.mono{font-family:var(--te-mono)}@media(max-width:900px){.app-main{padding:var(--te-space-4) var(--te-space-3) var(--te-space-5)}.app-header{padding:var(--te-space-3) var(--te-space-4)}}.pf-canvas{--pf-green: var(--te-success);--pf-blue: var(--te-primary);--pf-amber: var(--te-warning);--pf-red: var(--te-danger);--pf-gray: var(--te-text-3);--pf-line: var(--te-border-strong);--pf-line-soft: var(--te-border);display:flex;flex-direction:column;overflow:auto;padding:24px;background-color:var(--te-surface-soft);background-image:radial-gradient(var(--te-grid) 1px,transparent 1px);background-size:18px 18px;min-height:180px}.pf-canvas:before,.pf-canvas:after{content:"";flex:1 1 0;min-height:0}.pf-track{display:flex;align-items:flex-start;flex:0 0 auto;width:max-content;margin-left:auto;margin-right:auto}.pf-empty{width:380px;max-width:calc(100% - 48px);margin:0 auto;padding:32px 40px;border:1px dashed var(--pf-line);border-radius:var(--te-radius-md);background:var(--te-surface);text-align:center}.pf-empty__icon{display:inline-grid;place-items:center;width:44px;height:44px;margin-bottom:12px;border-radius:12px;background:var(--te-primary-soft);color:var(--te-primary);font-size:20px}.pf-empty__title{margin:0 0 4px;font-weight:600;color:var(--te-text-2)}.pf-empty .hint{margin:0 0 14px}.pf-endpoint{flex-shrink:0;margin-top:48px;height:40px;display:flex;align-items:center;padding:0 10px;border:1px solid var(--te-border);border-radius:999px;background:var(--te-surface);color:var(--te-text-2);font-size:11px;font-weight:600;letter-spacing:.02em}.pf-link{position:relative;flex-shrink:0;width:36px;height:40px;margin-top:48px;display:flex;align-items:center}.pf-link:before{content:"";width:100%;height:2px;background:var(--pf-line);border-radius:2px}.pf-link--done:before{background:var(--pf-green)}.pf-link--active:before{background:linear-gradient(90deg,var(--pf-green),var(--pf-blue),var(--pf-green));background-size:200% 100%;animation:pf-flow 1.2s linear infinite}.pf-link--warn:before{background:repeating-linear-gradient(90deg,var(--pf-amber) 0 6px,transparent 6px 12px)}@keyframes pf-flow{0%{background-position:0 0}to{background-position:200% 0}}.pf-stage{position:relative;width:256px;flex-shrink:0}.pf-stage__label{height:48px;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;padding:0 8px 4px;min-width:0}.pf-stage__name{display:flex;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:600;color:var(--te-text)}.pf-stage__name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-stage__sub{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--te-text-3);min-height:16px}.pf-stage__sub--success{color:var(--pf-green)}.pf-stage__sub--danger{color:var(--pf-red)}.pf-stage__sub--warning{color:var(--pf-amber)}.pf-stage__rail{position:relative;height:40px}.pf-stage__rail:before{content:"";position:absolute;left:0;right:0;top:calc(50% - 1px);height:2px;background:var(--pf-line)}.pf-stage--passed .pf-stage__rail:before{background:var(--pf-green)}.pf-stage--running .pf-stage__rail:before,.pf-stage--awaiting_review .pf-stage__rail:before{background:linear-gradient(90deg,var(--pf-green),var(--pf-blue),var(--pf-green));background-size:200% 100%;animation:pf-flow 1.2s linear infinite}.pf-stage--failed .pf-stage__rail:before{background:linear-gradient(90deg,var(--pf-green) 32px,var(--pf-line) 32px)}.pf-stage__node{position:absolute;left:16px;top:50%;transform:translateY(-50%);z-index:1;display:grid;place-items:center;width:32px;height:32px;border:2px solid var(--pf-line);border-radius:50%;background:var(--te-surface);color:var(--pf-gray);font-size:12px;font-weight:600;box-shadow:0 0 0 4px var(--te-surface-soft);transition:border-color .15s ease,color .15s ease,box-shadow .15s ease}.pf-stage__node .el-icon{font-size:16px}.pf-node--passed{border-color:var(--pf-green);color:var(--pf-green)}.pf-node--running{border-color:var(--pf-blue);color:var(--pf-blue);animation:pf-pulse 1.6s ease-out infinite}.pf-node--awaiting_review{border-color:var(--pf-amber);color:var(--pf-amber)}.pf-node--failed{border-color:var(--pf-red);color:var(--pf-red)}.pf-node--pending,.pf-node--skipped,.pf-node--cancelled{border-color:var(--pf-line);color:var(--pf-gray)}@keyframes pf-pulse{0%{box-shadow:0 0 rgba(var(--te-accent-rgb),.32)}70%{box-shadow:0 0 0 10px rgba(var(--te-accent-rgb),0)}to{box-shadow:0 0 rgba(var(--te-accent-rgb),0)}}.pf-stage__branch{position:relative;margin-left:32px;padding:16px 8px 0 16px;display:flex;flex-direction:column;gap:8px}.pf-stage__branch:before{content:"";position:absolute;left:-1px;top:-20px;bottom:4px;width:2px;background:var(--pf-line-soft);border-radius:2px}.pf-branch--done:before{background:var(--te-success-border)}.pf-branch--active:before{background:var(--te-primary-border)}.pf-branch--failed:before{background:var(--te-danger-border)}.pf-parallel-badge{flex-shrink:0;padding:0 5px;border-radius:999px;background:var(--te-primary-soft);color:var(--te-primary);font-size:10px;line-height:16px;font-weight:600}.pf-parallel-mark{position:absolute;left:50px;top:50%;transform:translateY(-50%);z-index:1;display:flex;align-items:center;gap:2px;padding:1px 5px;border:1px solid var(--te-primary-border);border-radius:6px;background:var(--te-primary-soft);color:var(--te-primary);font-size:9px;font-weight:700;letter-spacing:.04em}.pf-task{position:relative;display:flex;align-items:flex-start;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--te-border);border-radius:var(--te-radius-sm);background:var(--te-surface);color:var(--te-text);text-align:left;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.pf-task:hover{border-color:var(--te-primary-border);box-shadow:var(--te-shadow-card)}.pf-task__dot{position:absolute;left:-17px;top:50%;transform:translate(-50%,-50%);z-index:1;display:grid;place-items:center;width:16px;height:16px;border:2px solid var(--pf-line);border-radius:50%;background:var(--te-surface);color:var(--pf-gray)}.pf-task__dot .el-icon{font-size:9px}.pf-task__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.pf-task__name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-task__meta{display:flex;flex-wrap:wrap;gap:6px;color:var(--te-text-3);font-size:10px}.pf-task__time{flex-shrink:0;color:var(--te-text-3);font-size:10px;font-variant-numeric:tabular-nums}.pf-task--selected{border-color:var(--pf-blue);box-shadow:0 0 0 2px var(--te-primary-ring)}.pf-task--running{border-color:var(--te-primary-border);background:var(--te-primary-tint);animation:pf-glow 2s ease-in-out infinite}.pf-task--running .pf-task__dot{border-color:var(--pf-blue);color:var(--pf-blue)}.pf-task--passed .pf-task__dot{border-color:var(--pf-green);color:var(--pf-green)}.pf-task--failed{border-color:var(--te-danger-border);background:var(--te-danger-tint)}.pf-task--failed .pf-task__dot{border-color:var(--pf-red);color:var(--pf-red)}.pf-task--awaiting_review{border-color:var(--te-warning-border);background:var(--te-warning-tint)}.pf-task--awaiting_review .pf-task__dot{border-color:var(--pf-amber);color:var(--pf-amber)}.pf-task--skipped,.pf-task--cancelled,.pf-task--pending{opacity:.8}.pf-task--skipped .pf-task__dot,.pf-task--cancelled .pf-task__dot,.pf-task--pending .pf-task__dot{border-color:var(--pf-line);color:var(--pf-gray)}.pf-task--drag{opacity:.42}.pf-task--drop{border-color:var(--pf-blue);border-style:dashed;background:var(--te-primary-tint)}@keyframes pf-glow{0%,to{box-shadow:0 0 rgba(var(--te-accent-rgb),.08)}50%{box-shadow:0 0 0 4px rgba(var(--te-accent-rgb),.08)}}.pf-task-add,.pf-stage-add{display:flex;align-items:center;justify-content:center;gap:4px;padding:7px 8px;border:1px dashed var(--pf-line);border-radius:var(--te-radius-sm);background:transparent;color:var(--te-text-3);font-size:11px;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.pf-task-add:hover,.pf-stage-add:hover{border-color:var(--pf-blue);color:var(--pf-blue);background:var(--te-primary-tint)}.pf-stage-add{width:128px;margin-top:48px;height:34px;align-self:flex-start}.pf-stage__actions{display:flex;align-items:center;gap:0;flex-shrink:0}.pf-stage__name-input{flex:1;min-width:0}.pf-stage__name-input .el-input__wrapper{padding:0 6px;box-shadow:none;background:transparent}.pf-stage__name-input .el-input__inner{font-size:12px;font-weight:600;color:var(--te-text)}.pf-task__drag{flex-shrink:0;color:var(--te-text-3);font-size:10px;letter-spacing:-2px;cursor:grab}.pf-task--editable{cursor:grab}.pf-stage--drop .pf-stage__rail:before{background:var(--pf-blue)}.pf-stage--drop .pf-stage__branch{background:var(--te-primary-tint);border-radius:var(--te-radius-sm)}.pf-stage--selected .pf-stage__node{box-shadow:0 0 0 5px var(--te-primary-ring)}@media(max-width:720px){.pf-canvas{padding:12px 14px 28px}}
