:root{--color-neutral-0: #ffffff;--color-neutral-50: #f9fafb;--color-neutral-100: #f3f4f6;--color-neutral-200: #e5e7eb;--color-neutral-300: #d1d5db;--color-neutral-400: #9ca3af;--color-neutral-500: #6b7280;--color-neutral-600: #4b5563;--color-neutral-700: #374151;--color-neutral-800: #1f2937;--color-neutral-900: #111827;--color-neutral-1000: #000000;--color-brand-50: #eff6ff;--color-brand-100: #dbeafe;--color-brand-200: #bfdbfe;--color-brand-300: #93c5fd;--color-brand-400: #60a5fa;--color-brand-500: #3b82f6;--color-brand-600: #2563eb;--color-brand-700: #1d4ed8;--color-brand-800: #1e40af;--color-brand-900: #1e3a8a;--color-accent-50: #f5f3ff;--color-accent-100: #ede9fe;--color-accent-200: #ddd6fe;--color-accent-300: #c4b5fd;--color-accent-400: #a78bfa;--color-accent-500: #8b5cf6;--color-accent-600: #7c3aed;--color-accent-700: #6d28d9;--color-accent-800: #5b21b6;--color-accent-900: #4c1d95;--color-success-50: #ecfdf5;--color-success-100: #d1fae5;--color-success-500: #10b981;--color-success-600: #059669;--color-success-700: #047857;--color-warning-50: #fffbeb;--color-warning-100: #fef3c7;--color-warning-500: #f59e0b;--color-warning-600: #d97706;--color-warning-700: #b45309;--color-danger-50: #fef2f2;--color-danger-100: #fee2e2;--color-danger-300: #fca5a5;--color-danger-500: #ef4444;--color-danger-600: #dc2626;--color-danger-700: #b91c1c;--color-info-50: #eff6ff;--color-info-100: #dbeafe;--color-info-500: #0ea5e9;--color-info-600: #0284c7;--color-info-700: #0369a1;--color-text-primary: var(--color-neutral-800);--color-text-secondary: var(--color-neutral-600);--color-text-tertiary: var(--color-neutral-500);--color-text-disabled: var(--color-neutral-400);--color-text-inverse: var(--color-neutral-0);--color-text-brand: var(--color-brand-600);--color-text-emphasis: #0e7490;--color-text-danger: var(--color-danger-700);--color-text-success: var(--color-success-700);--color-text-warning: var(--color-warning-700);--color-bg-base: var(--color-neutral-0);--color-bg-surface: var(--color-neutral-50);--color-bg-raised: var(--color-neutral-100);--color-bg-elevated: var(--color-neutral-0);--color-bg-overlay: rgba(17, 24, 39, .45);--color-bg-tooltip: #1f2937;--color-text-tooltip: #f8fafc;--color-bg-brand-soft: var(--color-brand-50);--color-bg-success-soft: var(--color-success-50);--color-bg-warning-soft: var(--color-warning-50);--color-bg-danger-soft: var(--color-danger-50);--color-bg-gantt-weekend: #d1d5db;--color-border-subtle: var(--color-neutral-200);--color-border-default: var(--color-neutral-300);--color-border-strong: var(--color-neutral-400);--color-border-brand: var(--color-brand-500);--color-border-success: var(--color-success-500);--color-border-danger: var(--color-danger-500);--color-border-danger-soft: var(--color-danger-300);--color-border-warning: var(--color-warning-500);--color-border-focus: var(--color-brand-500);--space-0: 0px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--radius-none: 0;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--shadow-none: none;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .06);--shadow-xl: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .05);--shadow-focus: 0 0 0 3px rgba(59, 130, 246, .4);--font-family-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-family-mono: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Consolas, monospace;--font-family-tabular: var(--font-family-sans);--font-size-caption: 10px;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 13px;--font-size-md: 14px;--font-size-lg: 16px;--font-size-xl: 20px;--font-size-2xl: 26px;--font-size-3xl: 32px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-normal: 1.4;--line-height-loose: 1.6;--duration-instant: 0ms;--duration-fast: .12s;--duration-base: .2s;--duration-slow: .32s;--duration-slowest: .48s;--easing-standard: cubic-bezier(.2, 0, 0, 1);--easing-decelerate: cubic-bezier(0, 0, 0, 1);--easing-accelerate: cubic-bezier(.3, 0, 1, 1);--z-base: 0;--z-raised: 1;--z-dropdown: 100;--z-sticky: 200;--z-overlay: 300;--z-modal: 400;--z-popover: 500;--z-toast: 600;--z-tooltip: 700}[data-theme=dark]{--color-neutral-0: #0b0d10;--color-neutral-50: #11141a;--color-neutral-100: #171b22;--color-neutral-200: #222831;--color-neutral-300: #2e3742;--color-neutral-400: #4a5564;--color-neutral-500: #7a8595;--color-neutral-600: #9aa5b4;--color-neutral-700: #c5ccd6;--color-neutral-800: #e3e7ed;--color-neutral-900: #f1f3f6;--color-neutral-1000: #ffffff;--color-text-primary: #e3e7ed;--color-text-secondary: #a8b3c2;--color-text-tertiary: #8b96a7;--color-text-disabled: #5a6473;--color-text-inverse: #0b0d10;--color-text-brand: var(--color-brand-400);--color-text-emphasis: #67e8f9;--color-text-danger: #f87171;--color-text-success: #34d399;--color-text-warning: #fbbf24;--color-bg-base: #0b0d10;--color-bg-surface: #11141a;--color-bg-raised: #171b22;--color-bg-elevated: #1c2230;--color-bg-overlay: rgba(0, 0, 0, .65);--color-bg-tooltip: #1c2230;--color-text-tooltip: #e3e7ed;--color-bg-brand-soft: rgba(37, 99, 235, .2);--color-bg-success-soft: rgba(5, 150, 105, .18);--color-bg-warning-soft: rgba(217, 119, 6, .18);--color-bg-danger-soft: rgba(220, 38, 38, .18);--color-bg-gantt-weekend: #2e3742;--color-border-subtle: #222831;--color-border-default: #2e3742;--color-border-strong: #4a5564;--color-border-brand: var(--color-brand-400);--color-border-success: #34d399;--color-border-danger: #f87171;--color-border-danger-soft: rgba(248, 113, 113, .5);--color-border-warning: #fbbf24;--color-border-focus: var(--color-brand-400);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 1px 3px 0 rgba(0, 0, 0, .45), 0 1px 2px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -2px rgba(0, 0, 0, .35);--shadow-xl: 0 10px 15px -3px rgba(0, 0, 0, .55), 0 4px 6px -4px rgba(0, 0, 0, .3);--shadow-focus: 0 0 0 3px rgba(96, 165, 250, .45)}.fg-text-primary{color:var(--color-text-primary)}.fg-text-secondary{color:var(--color-text-secondary)}.fg-text-tertiary{color:var(--color-text-tertiary)}.fg-text-brand{color:var(--color-text-brand)}.fg-text-danger{color:var(--color-text-danger)}.fg-text-success{color:var(--color-text-success)}.fg-text-warning{color:var(--color-text-warning)}.fg-bg-base{background-color:var(--color-bg-base)}.fg-bg-surface{background-color:var(--color-bg-surface)}.fg-bg-raised{background-color:var(--color-bg-raised)}.fg-tabular{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}*,*:before,*:after{box-sizing:border-box}html{-moz-tab-size:4;tab-size:4;-webkit-text-size-adjust:100%;line-height:var(--line-height-normal)}body{margin:0;min-width:320px;min-height:100vh;font-family:var(--font-family-sans);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-synthesis:none}#root{min-height:100vh;isolation:isolate}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight);color:var(--color-text-primary)}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}h4{font-size:var(--font-size-lg)}h5{font-size:var(--font-size-md)}h6{font-size:var(--font-size-base)}a{color:var(--color-text-brand);text-decoration:none;transition:color var(--duration-fast) var(--easing-standard)}a:hover{color:var(--color-brand-700)}[data-theme=dark] a:hover{color:var(--color-brand-300)}button{font-family:inherit;font-size:inherit;background:transparent;border:none;padding:0;margin:0;cursor:pointer;color:inherit}button:focus{outline:none}button:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}img,video,canvas,audio,iframe,embed,object{display:block;max-width:100%}svg{display:block}::selection{background-color:var(--color-brand-200);color:var(--color-text-primary)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fg-toast-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes fg-toast-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(24px)}}@keyframes fg-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.85)}}.fg-pulse-dot{animation:fg-pulse-dot 1.8s ease-in-out infinite;transform-origin:center}.fg-row-hover{transition:background var(--duration-fast) var(--easing-standard)}.fg-row-hover:hover{background:var(--color-bg-raised);cursor:pointer}.fg-pdf-report-btn{white-space:nowrap}.fg-project-save-status{max-width:150px;overflow:hidden}.fg-project-save-status-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1400px){.fg-pdf-report-btn{width:32px!important;min-width:32px!important;padding:0!important;justify-content:center!important}.fg-pdf-report-btn .fg-tool-btn-label{display:none!important}.fg-project-name-input{width:80px!important}.fg-no-folder-badge{display:none!important}.fg-engine-status-badge{padding:3px 6px!important}.fg-engine-status-label{display:none!important}}@media(max-width:1280px){.fg-project-save-status{display:none!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}[data-theme=dark] .react-flow__controls{background:var(--color-bg-raised);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-md)}[data-theme=dark] .react-flow__controls-button{background:var(--color-bg-raised);border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-primary);fill:var(--color-text-primary)}[data-theme=dark] .react-flow__controls-button:hover{background:var(--color-bg-surface)}[data-theme=dark] .react-flow__controls-button svg{fill:var(--color-text-primary)}[data-theme=dark] .react-flow__minimap{background:var(--color-bg-surface)}[data-theme=dark] .react-flow__attribution{background:color-mix(in srgb,var(--color-bg-base) 80%,transparent);color:var(--color-text-tertiary)}[data-theme=dark] .react-flow__attribution a{color:var(--color-text-secondary)}[data-theme=dark] .react-flow__handle{background:var(--color-text-secondary);border-color:var(--color-bg-base)}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}
