@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_461d7140-module__Hvr4LW__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_461d7140-module__Hvr4LW__variable{--font-sans:"IBM Plex Sans", "IBM Plex Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.31-2bzhq1gx_9.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.2taws-qdxmzlf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.0htwiiqufp3l9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.28xcb7557rbh2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_973b4b30-module__j14D8G__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_973b4b30-module__j14D8G__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.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__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray: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.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.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-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.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:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.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-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.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{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.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:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}
:root{--bg:#fbfbfc;--surface:#fff;--sunk:#f4f4f5;--ink:#18181b;--ink-2:#71717a;--ink-3:#a1a1aa;--rule:#e4e4e7;--rule-2:#d4d4d8;--blue-1:#4a7be0;--blue-2:#3463c9;--blue-edge:#2c56b3;--blue-soft:#eef3fd;--amber:#b45309;--amber-soft:#fffbeb;--shadow-sm:0 1px 2px #18181b0d, 0 1px 1px #18181b08;--shadow-md:0 1px 2px #18181b0f, 0 4px 12px -4px #18181b1a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans), system-ui, sans-serif;margin:0;font-size:14px;line-height:1.5}h1,h2,h4,p{margin:0}button{font:inherit}button:focus-visible{outline:2px solid var(--blue-1);outline-offset:2px}.app{flex-direction:column;height:100vh;display:flex}.app-body{flex:1;min-height:0;display:flex}.app-body>.canvas-col{flex:1}.canvas-col{flex-direction:column;min-width:0;min-height:0;display:flex}.toolbar{border-bottom:1px solid var(--rule);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex}.toolbar-right{align-items:center;gap:8px;display:flex}.brand{fill:#18181b;flex:none;width:20px;height:20px}.counter{color:var(--ink-2);font-variant-numeric:tabular-nums;margin:0 4px;font-size:13px}.btn{cursor:pointer;color:#3f3f46;background:var(--surface);border:1px solid var(--rule);box-shadow:var(--shadow-sm), inset 0 1px 0 #fff;border-radius:9px;align-items:center;gap:6px;padding:5px 13px;font-size:13.5px;font-weight:500;display:inline-flex}.btn:hover{border-color:var(--rule-2)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{color:#fff;border-color:var(--blue-edge);background:linear-gradient(180deg, var(--blue-1), var(--blue-2));box-shadow:inset 0 1px #ffffff2e,0 1px 2px #2c56b340}.btn-primary:hover{filter:brightness(1.05)}.canvas{flex:1;min-height:0;position:relative}.canvas .react-flow{isolation:isolate}.react-flow__controls{box-shadow:var(--shadow-sm);border:1px solid var(--rule);border-radius:9px;overflow:hidden}.react-flow__controls-button{border-bottom-color:var(--rule)}.react-flow__minimap{border:1px solid var(--rule);box-shadow:var(--shadow-sm);border-radius:10px;margin-left:60px;overflow:hidden}.react-flow__handle{opacity:0;pointer-events:none;border:0;width:6px;min-width:0;height:6px;min-height:0}.edge-label{pointer-events:none;white-space:nowrap;color:#52525b;border:1px solid var(--rule);background:#fff;border-radius:6px;padding:2px 7px;font-size:11.5px;font-weight:500;position:absolute;box-shadow:0 1px 1px #18181b0d}.edge-label.is-hot{color:var(--blue-2);border-color:var(--blue-2);z-index:6}.react-flow__node-lane,.react-flow__node-phase{pointer-events:none}.lane-node{border-top:1px solid var(--rule);width:100%;height:100%}.react-flow__node-lane:last-of-type .lane-node{border-bottom:1px solid var(--rule)}.lane-label{flex-direction:column;gap:2px;width:150px;display:flex;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.lane-label strong{font-size:15px;font-weight:600}.lane-label span{color:var(--ink-2);font-size:12px}.phase-node{border:1px solid var(--rule);width:100%;height:100%;box-shadow:var(--shadow-sm);background:#ffffffb8;border-radius:14px;position:relative}.phase-head{align-items:center;gap:10px;padding:16px 16px 0;display:flex}.phase-head div{flex-direction:column;min-width:0;display:flex}.phase-head strong{font-size:15px;font-weight:600}.phase-head div span{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.phase-code{color:#fff;background:linear-gradient(180deg, var(--blue-1), var(--blue-2));border:1px solid var(--blue-edge);border-radius:8px;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:inline-flex;box-shadow:inset 0 1px #fff3}.phase-lane-tag{transform-origin:50%;letter-spacing:.02em;color:var(--ink-3);white-space:nowrap;margin-left:6px;font-size:10.5px;font-weight:500;position:absolute;left:16px;transform:translate(-50%,-50%)rotate(-90deg)}.step-node{cursor:pointer;background:var(--surface);border:1px solid var(--rule-2);height:100%;box-shadow:var(--shadow-sm);border-radius:10px;flex-direction:column;gap:2px;padding:10px 12px;transition:box-shadow .12s,border-color .12s;display:flex;overflow:hidden}.step-node:hover{box-shadow:var(--shadow-md)}.step-node.lane-filled{background:var(--sunk)}.step-node.lane-dashed{border-style:dashed}.step-node.is-ends{border-radius:24px;padding:10px 16px}.step-node.is-related{border-color:var(--blue-1)}.step-node.is-selected{border:1.5px solid var(--blue-2);box-shadow:0 0 0 4px var(--blue-soft), var(--shadow-md)}.step-meta{font-family:var(--font-mono), monospace;color:var(--ink-2);align-items:center;gap:5px;font-size:11px;display:flex}.is-selected .step-meta{color:var(--blue-2)}.diamond{border:1.5px solid;border-radius:1px;width:8px;height:8px;margin-right:2px;transform:rotate(45deg)}.step-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13.5px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.step-sub{color:var(--ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12.5px;line-height:1.35;display:-webkit-box;overflow:hidden}.wf{--wf-line:#e4e4e7;--wf-bar:#e9e9ec;--wf-bar-2:#d4d4d8;--wf-red:#d1453b;--wf-green:#3f8f5a;color:#3f3f46;font-size:9px;line-height:1.3}.wf-frame{border:1px solid var(--rule-2);height:216px;box-shadow:var(--shadow-sm);background:#fff;border-radius:10px;flex-direction:column;display:flex;position:relative;overflow:hidden}.wf-head{border-bottom:1px solid var(--wf-line);background:#fcfcfd;flex:none;align-items:center;gap:5px;height:22px;padding:0 8px;display:flex}.wf-head-end{margin-left:auto;display:inline-flex}.wf-logo{background:linear-gradient(180deg, var(--blue-1), var(--blue-2));border-radius:3px;flex:none;width:9px;height:9px}.wf-logo.is-lg{border-radius:5px;width:18px;height:18px}.wf-body{flex-direction:column;flex:1;min-height:0;padding:9px 10px;display:flex;position:relative}.wf-body.is-flush{padding:0}.wf-row{align-items:center;min-width:0;display:flex}.wf-col{flex-direction:column;min-width:0;display:flex}.wf-wrap{flex-wrap:wrap}.wf-fill{flex:1;align-items:stretch;min-height:0}.wf-end{justify-content:flex-end}.wf-end-auto{margin-top:auto}.wf-center{text-align:center;flex:1;justify-content:center;align-items:center}.wf-center-row{flex:1;justify-content:center}.wf-skeleton{width:70%;margin-top:6px}.wf-bar{background:var(--wf-bar);border-radius:3px;flex:none;max-width:100%;height:5px;display:inline-block}.wf-bar.is-strong{background:var(--wf-bar-2)}.wf-bar.is-blue{background:#c9d7f5}.wf-t{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.wf-t.is-muted{color:var(--ink-3)}.wf-t.is-strong{color:var(--ink);font-size:9.5px;font-weight:600}.wf-btn{border:1px solid var(--wf-line);white-space:nowrap;background:#fff;border-radius:4px;flex:none;align-items:center;height:15px;padding:0 6px;font-size:8.5px;font-weight:500;display:inline-flex}.wf-btn.is-primary{color:#fff;border-color:var(--blue-edge);background:linear-gradient(180deg, var(--blue-1), var(--blue-2))}.wf-btn.is-ghost{color:var(--ink-2);border-color:#0000}.wf-badge{white-space:nowrap;background:var(--sunk);height:12px;color:var(--ink-2);border:1px solid var(--wf-line);border-radius:6px;flex:none;align-items:center;padding:0 5px;font-size:8px;font-weight:500;display:inline-flex}.wf-badge.tone-blue{background:var(--blue-soft);color:var(--blue-2);border-color:#d6e2f8}.wf-badge.tone-amber{background:var(--amber-soft);color:var(--amber);border-color:#f3e2bd}.wf-badge.tone-green{color:var(--wf-green);background:#effaf2;border-color:#d3eedb}.wf-badge.tone-red{color:var(--wf-red);background:#fdf0ef;border-color:#f5d5d2}.wf .tone-blue{color:var(--blue-2)}.wf .tone-amber{color:var(--amber)}.wf .tone-red{color:var(--wf-red)}.wf-check{border:1px solid var(--wf-bar-2);color:#fff;background:#fff;border-radius:2px;flex:none;justify-content:center;align-items:center;width:8px;height:8px;display:inline-flex}.wf-check.is-on{background:var(--blue-2);border-color:var(--blue-2)}.wf-dot{background:var(--ink-3);border-radius:50%;flex:none;width:5px;height:5px}.wf-dot.tone-red{background:var(--wf-red)}.wf-dot.tone-amber{background:#d99a2b}.wf-dot.tone-blue{background:var(--blue-2)}.wf-card{border:1px solid var(--wf-line);background:#fff;border-radius:6px;flex-direction:column;gap:4px;min-width:0;padding:6px 7px;display:flex}.wf-card.is-active{border-color:var(--blue-1);box-shadow:0 0 0 2px var(--blue-soft)}.wf-mini{flex:1}.wf-mini .wf-plan{height:52px}.wf-cmp{flex:1;gap:3px}.wf-big{color:var(--ink);font-size:15px;font-weight:600;line-height:1.1}.wf-spinner{border:1.5px solid var(--wf-line);border-top-color:var(--blue-2);border-radius:50%;flex:none;width:10px;height:10px;animation:.9s linear infinite wf-spin}@keyframes wf-spin{to{transform:rotate(360deg)}}.wf-progress{background:var(--sunk);border-radius:2px;height:4px;display:block;overflow:hidden}.wf-progress i{background:var(--blue-2);border-radius:2px;height:100%;display:block}.wf-progress i.tone-green{background:#7cc093}.wf-stepper{gap:4px;display:flex}.wf-stepper span{border-bottom:2px solid var(--sunk);color:var(--ink-3);white-space:nowrap;flex:1;align-items:center;gap:4px;padding-bottom:4px;font-size:8.5px;display:flex;overflow:hidden}.wf-stepper b{background:var(--sunk);width:11px;height:11px;color:var(--ink-2);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:7.5px;display:inline-flex}.wf-stepper .is-active{color:var(--ink);border-bottom-color:var(--blue-2);font-weight:500}.wf-stepper .is-active b{background:var(--blue-2);color:#fff}.wf-stepper .is-done b{background:var(--blue-soft);color:var(--blue-2)}.wf-seg{background:var(--sunk);border:1px solid var(--wf-line);border-radius:5px;gap:1px;padding:1.5px;display:inline-flex}.wf-seg span{color:var(--ink-2);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:8.5px}.wf-seg .is-active{color:var(--ink);box-shadow:var(--shadow-sm);background:#fff}.wf-input{border:1px solid var(--wf-line);background:#fff;border-radius:4px;align-items:center;min-width:70px;height:15px;padding:0 5px;display:flex}.wf-table{border:1px solid var(--wf-line);border-radius:6px;flex-direction:column;display:flex;overflow:hidden}.wf-tr{border-top:1px solid var(--wf-line);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;align-items:center;gap:6px;height:19px;padding:0 7px;display:grid}.wf-tr:first-child{border-top:0}.wf-tr:has(>.wf-check){grid-template-columns:8px}.wf-tr>span{min-width:0;display:flex;overflow:hidden}.wf-tr.is-head{height:16px;color:var(--ink-3);background:#fcfcfd;font-size:8.5px}.wf-tr.is-selected{background:var(--blue-soft)}.wf-modal-wrap{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.wf-behind{opacity:.45;filter:grayscale();padding:9px 10px;position:absolute;inset:0}.wf-behind .wf-plan{width:100%;height:100%}.wf-modal-wrap:before{content:"";z-index:1;background:#18181b14;position:absolute;inset:0}.wf-modal{z-index:2;border:1px solid var(--wf-line);background:#fff;border-radius:8px;flex-direction:column;gap:6px;width:74%;padding:9px 10px;display:flex;position:relative;box-shadow:0 8px 24px -8px #18181b40}.wf-item{border-radius:4px;padding:2px 4px}.wf-item.is-active{background:var(--blue-soft)}.wf-link{color:var(--blue-2);white-space:nowrap;margin-left:auto;font-weight:500}.wf-pane{border:1px solid var(--wf-line);background:#fcfcfd;border-radius:6px;flex:1.1;min-width:0;padding:4px;display:flex;position:relative;overflow:hidden}.wf-pane .wf-plan{width:100%;height:100%}.wf-pane.is-plain{background:#fcfcfd;border:0;border-radius:0;padding:6px}.wf-pane.is-wide,.wf-pane.is-full{flex:1;min-height:0}.wf-actionbar{color:#fff;background:#27272a;border-radius:6px;padding:4px 6px}.wf-actionbar .wf-btn:not(.is-primary){color:#fff;background:0 0;border-color:#52525b}.wf-kpis{border-bottom:1px solid var(--wf-line);flex:none;padding:6px 10px}.wf-body:not(.is-flush) .wf-kpis{border:0;padding:0}.wf-kpi{border:1px solid var(--wf-line);border-radius:5px;flex-direction:column;flex:1;gap:1px;padding:4px 6px;display:flex}.wf-kpi b{color:var(--ink);font-size:11px;font-weight:600}.wf-split{flex:1;min-height:0;display:flex}.wf-layers{border-right:1px solid var(--wf-line);flex:none;width:62px;padding:6px}.wf-side{border-left:1px solid var(--wf-line);flex:none;width:70px;padding:6px}.wf-checkrow .wf-state{border:1px solid var(--wf-line);border-radius:50%;flex:none;justify-content:center;align-items:center;width:12px;height:12px;font-size:8px;font-weight:700;display:inline-flex}.wf-checkrow.is-ok .wf-state{color:var(--wf-green);background:#effaf2;border-color:#d3eedb}.wf-checkrow.is-warn .wf-state{background:var(--amber-soft);color:var(--amber);border-color:#f3e2bd}.wf-checkrow.is-fail .wf-state{color:var(--wf-red);background:#fdf0ef;border-color:#f5d5d2}.wf-checkrow.is-run .wf-state{border:0}.wf-sumrow{border:1px solid var(--wf-line);border-radius:5px;padding:4px 6px}.wf-float{width:46%;position:absolute;top:8px;right:8px;box-shadow:0 6px 18px -6px #18181b33}.wf-tip{border:1px solid var(--wf-line);background:#fff;border-radius:6px;flex-direction:column;gap:3px;min-width:90px;padding:5px 7px;display:flex;position:absolute;box-shadow:0 4px 14px -6px #18181b33}.wf-menu{border:1px solid var(--wf-line);background:#fff;border-radius:6px;flex-direction:column;gap:3px;padding:5px 7px;display:flex;position:absolute;box-shadow:0 4px 14px -6px #18181b33}.wf-corner{position:absolute;bottom:8px;right:8px}.wf-toolbar{border:1px solid var(--wf-line);box-shadow:var(--shadow-md);color:var(--ink-2);background:#fff;border-radius:6px;align-items:center;gap:3px;padding:3px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%)}.wf-toolbar span{border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.wf-toolbar .is-on{background:var(--blue-soft);color:var(--blue-2)}.wf-toolbar .is-red{color:var(--wf-red);background:#fdf0ef}.wf-swatch{border-radius:2px;flex:none;width:10px;height:6px}.wf-swatch.is-nogo{background:#d1453b1f;border:1px dashed #d1453b99}.wf-swatch.is-warn{background:#d99a2b2e;border:1px solid #d99a2b}.wf-cmp-list{border-right:1px solid var(--wf-line);flex:none;width:132px;padding:8px}.wf-plan-diff{fill:#d1453b26;stroke:var(--wf-red);stroke-width:1px;stroke-dasharray:3 2}.wf-swatch.is-route{background:#4a7be040}.wf-limits{grid-template-columns:1fr 1fr;gap:3px 14px;display:grid}.wf-matrix{grid-template-columns:34px repeat(7,1fr);align-items:center;gap:3px;display:grid}.wf-cell{border-radius:3px;justify-content:center;align-items:center;height:13px;font-size:8px;font-weight:700;display:inline-flex}.wf-cell.is-on{background:var(--blue-soft);color:var(--blue-2)}.wf-cell.is-src{background:var(--blue-2);color:#fff}.wf-cell.is-warn{background:var(--amber-soft);color:var(--amber);border:1px solid #f3e2bd}.wf-slider{background:var(--sunk);border-radius:2px;width:34px;height:3px;margin:0 3px;position:relative}.wf-slider b{border:1px solid var(--wf-bar-2);background:#fff;border-radius:50%;width:8px;height:8px;position:absolute;top:-2.5px;left:40%}.wf-banner{background:var(--amber-soft);color:var(--amber);border-bottom:1px solid #f3e2bd;flex:none;align-items:center;gap:6px;padding:5px 10px;display:flex}.wf-pdf-opts{flex:none;width:112px}.wf-sheet{border:1px solid var(--rule-2);min-width:0;box-shadow:var(--shadow-md);background:#fff;border-radius:3px;flex:1;gap:4px;padding:5px;display:flex}.wf-sheet-plan{flex:1;min-width:0;display:flex}.wf-sheet-plan .wf-plan{width:100%;height:100%}.wf-sheet-plan.is-dxf{position:relative}.wf-sheet-plan.is-dxf .wf-plan-room,.wf-sheet-plan.is-dxf .wf-plan-shell,.wf-sheet-plan.is-dxf .wf-plan-obstacle{opacity:.55}.wf-sheet-tag{color:var(--ink-3);font-size:7.5px;position:absolute;bottom:0;left:2px}.wf-sheet-side{border-left:1px solid var(--wf-line);flex-direction:column;flex:none;gap:3px;width:58px;padding-left:4px;display:flex}.wf-sheet-title{border-top:1px solid var(--wf-line);align-items:center;gap:3px;margin-top:auto;padding-top:3px;display:flex}.wf-file{color:var(--ink-2);flex:1;gap:4px}.wf-chip{color:var(--ink-2);flex-direction:row;align-items:center;gap:5px}.wf-person{align-items:center;gap:3px;padding:8px 12px}.wf-avatar{background:var(--sunk);width:24px;height:24px;color:var(--ink-2);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.wf-arrow{background:var(--wf-bar-2);width:36px;height:1px;position:relative}.wf-arrow:after{content:"";border:3.5px solid #0000;border-left:5px solid var(--wf-bar-2);border-right:0;position:absolute;top:-3px;right:0}.wf-sketch{fill:none;width:100%;height:40px;stroke:var(--ink-3);stroke-width:1.2px;stroke-linecap:round}.wf-sketch rect{stroke:var(--wf-line)}.wf-card.is-active .wf-sketch path{stroke:var(--blue-2)}.wf-frame.is-revit{background:#f7f7f8}.wf-ribbon{border-bottom:1px solid var(--rule-2);background:#ececee;flex:none;align-items:flex-end;gap:2px;height:22px;padding:0 6px;display:flex}.wf-ribbon span{color:var(--ink-2);border-radius:4px 4px 0 0;padding:3px 6px;font-size:8px}.wf-ribbon .is-active{color:var(--blue-2);box-shadow:0 0 0 1px var(--rule-2);background:#fff;font-weight:600}.wf-revit-body{flex:1;min-height:0;display:flex}.wf-view{background:#fff;flex:1;min-width:0;padding:8px;display:flex;position:relative}.wf-view .wf-plan{width:100%;height:100%}.wf-props{border-left:1px solid var(--rule-2);background:#f7f7f8;flex-direction:column;flex:none;gap:5px;width:64px;padding:8px 6px;display:flex}.wf-dock{border-left:1px solid var(--rule-2);background:#fff;flex-direction:column;flex:none;width:46%;padding:8px;display:flex}.wf-plan{display:block;overflow:visible}.wf-plan rect,.wf-plan line,.wf-plan path{vector-effect:non-scaling-stroke}.wf-plan-shell{fill:#fff;stroke:#a1a1aa;stroke-width:1.5px}.wf-plan-room{fill:none;stroke:#c4c4ca;stroke-width:1px}.wf-plan-room.is-hi{fill:#3463c91a;stroke:var(--blue-1)}.wf-plan-room.is-warn{fill:#d99a2b1f;stroke:#d99a2b}.wf-plan-room.is-changed{fill:#d99a2b14;stroke:#d99a2b;stroke-dasharray:3 2}.wf-plan-obstacle line{stroke:#b4b4bc;stroke-width:1.5px;stroke-dasharray:5 3}.wf-plan-obstacle rect{fill:#ededf0;stroke:#c4c4ca;stroke-width:1px}.wf-plan-strip{fill:#4a7be02e;stroke:#4a7be066;stroke-width:1px}.wf-plan-pipe line{stroke:var(--blue-1);stroke-width:1px;opacity:.7}.wf-plan-pipe line.is-main{stroke:var(--blue-2);stroke-width:2.5px;opacity:1}.wf-plan-pipe-sel{stroke:var(--blue-2);stroke-width:4px;stroke-linecap:round}.wf-plan-handle{fill:#fff;stroke:var(--blue-2);stroke-width:1.2px}.wf-plan-node{fill:#fff;stroke:var(--blue-2);stroke-width:.7px}.wf-plan-cov{fill:#3463c90f;stroke:#3463c92e;stroke-width:.3px}.wf-plan-cov.is-bad{fill:#d1453b14;stroke:#d1453b66}.wf-plan-head{fill:var(--blue-2)}.wf-plan-head.is-grey{fill:#b4b4bc}.wf-plan-head.is-bad{fill:var(--wf-red)}.wf-plan-ghost{fill:none;stroke:var(--blue-2);stroke-width:.5px;stroke-dasharray:1 1}.wf-plan-dim{stroke:var(--ink-2);stroke-width:.8px}.wf-plan-dim.is-bad{stroke:var(--wf-red);stroke-width:1.2px}.wf-plan-label{fill:var(--ink-2);font-size:3px;font-family:var(--font-sans), sans-serif}.wf-plan-label.is-bad{fill:var(--wf-red);text-anchor:end;font-weight:600}.wf-plan-riser{fill:var(--blue-2);stroke:#fff;stroke-width:1px}.wf-plan-select{fill:#3463c914;stroke:var(--blue-2);stroke-width:1.5px;stroke-dasharray:4 3}.wf-plan-lock rect{fill:#fff;stroke:var(--ink-2);stroke-width:1px}.wf-plan-lock path{fill:none;stroke:var(--ink-2);stroke-width:1px}.wf-plan-mesh path{fill:none;stroke:var(--blue-1);stroke-width:1.4px;vector-effect:non-scaling-stroke}.wf-plan-tee{fill:#fff;stroke:var(--blue-2);stroke-width:1px}.wf-plan-manifold rect{fill:var(--blue-2)}.wf-plan-manifold circle{fill:#fff}.wf-plan-nogo{fill:#d1453b14;stroke:#d1453b8c;stroke-width:1px;stroke-dasharray:3 2}.wf-plan-marker circle{fill:#d99a2b2e;stroke:#d99a2b;stroke-width:.6px}.wf-plan-marker .core{fill:#d99a2b;stroke:none}.wf-plan-marker.tone-red circle{fill:#d1453b26;stroke:var(--wf-red)}.wf-plan-marker.tone-red .core{fill:var(--wf-red)}.detail{z-index:20;background:var(--surface);border:1px solid var(--rule);border-radius:12px;flex-direction:column;gap:16px;width:420px;max-height:calc(100% - 32px);padding:20px;animation:.18s ease-out detail-in;display:flex;position:absolute;top:16px;right:16px;overflow-y:auto;box-shadow:0 1px 2px #18181b0f,0 12px 32px -8px #18181b29}@keyframes detail-in{0%{opacity:0;transform:translateY(-4px)}}.detail-close{width:28px;height:28px;color:var(--ink-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:14px;right:14px}.detail-close:hover{background:var(--sunk);border-color:var(--rule);color:var(--ink)}.detail-head .chips{padding-right:32px}.detail-head{flex-direction:column;gap:6px;display:flex}.detail-head h2{letter-spacing:-.01em;font-size:18px;font-weight:600}.detail-head p{color:var(--ink-2)}.chips,.from-list{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--rule);background:var(--surface);color:#3f3f46;box-shadow:var(--shadow-sm);border-radius:7px;padding:1px 8px;font-size:12px;font-weight:500}.chip-blue{background:linear-gradient(180deg, var(--blue-1), var(--blue-2));color:#fff;border-color:var(--blue-edge)}.chip-btn{cursor:pointer}.chip-btn:hover{border-color:var(--rule-2)}.detail-block{flex-direction:column;gap:6px;display:flex}.detail-block h4{color:var(--ink-2);font-size:12.5px;font-weight:500}.detail-block ul{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.detail-block.screen{background:var(--sunk);border:1px solid var(--rule);border-radius:10px;padding:12px 14px}.detail-block.warn{background:var(--amber-soft);border:1px solid #f3e2bd;border-radius:10px;padding:12px 14px}.detail-block.warn h4{color:var(--amber)}.link-list{flex-direction:column;gap:6px;display:flex}.link-btn{text-align:left;cursor:pointer;border:1px solid var(--rule);background:var(--surface);box-shadow:var(--shadow-sm);border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.link-btn:hover{border-color:var(--rule-2)}.link-btn small{color:var(--ink-2);font-size:12px;display:block}.link-btn b{font-weight:500}.link-arrow{color:var(--ink-3);flex:none;transition:transform .15s,color .15s}.link-btn:hover .link-arrow{color:var(--blue-2);transform:translate(2px)}.btn svg{flex:none;margin:0 -2px}@media (max-width:1000px){.app{height:auto;min-height:100vh}.canvas{flex:none;height:75vh}.detail{width:auto;max-height:55%;top:auto;bottom:16px;left:16px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.toolbar-left{align-items:center;gap:12px;min-width:0;display:flex}.btn-icon{padding:5px 7px;text-decoration:none}.flow-title{flex-direction:column;min-width:0;line-height:1.25;display:flex}.flow-title strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.flow-title span{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.index{max-width:860px;margin:0 auto;padding:56px 16px 80px}.index-head{flex-direction:column;gap:6px;margin-bottom:28px;display:flex}.index-head h1{letter-spacing:-.01em;font-size:24px;font-weight:600}.index-head p,.index-empty{color:var(--ink-2)}.index-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.index-card{background:var(--surface);border:1px solid var(--rule);box-shadow:var(--shadow-sm);color:inherit;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;text-decoration:none;display:flex}.index-card:hover{border-color:var(--rule-2)}.index-card:focus-visible{outline:2px solid var(--blue-1);outline-offset:2px}.index-main{flex-direction:column;gap:2px;min-width:0;display:flex}.index-main strong{font-weight:600}.index-main span{color:var(--ink-2);font-size:13px}.index-meta{color:var(--ink-2);flex:none;align-items:center;gap:12px;font-size:12.5px;display:flex}@media (max-width:640px){.index{padding-top:32px}.index-card{flex-direction:column;align-items:flex-start}.index-meta{flex-wrap:wrap}}.index-head{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:16px}.index-head>div{flex-direction:column;gap:6px;display:flex}.index-user{color:var(--ink-2);flex:none;align-items:center;gap:10px;font-size:13px;display:flex}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field span{color:#3f3f46;font-size:13px;font-weight:500}.field input,.field select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--rule);height:36px;box-shadow:var(--shadow-sm);border-radius:9px;min-width:0;padding:0 11px;font-size:14px}.field input:focus,.field select:focus{border-color:var(--blue-1);box-shadow:0 0 0 3px var(--blue-soft);outline:none}.field input::placeholder{color:var(--ink-3)}.btn-block{justify-content:center;height:36px}.form-error,.login-card .form-error{color:#b42318;font-size:13px}.muted{color:var(--ink-2);font-size:13px}.login{justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{background:var(--surface);border:1px solid var(--rule);width:100%;max-width:380px;box-shadow:var(--shadow-md);border-radius:14px;flex-direction:column;gap:22px;padding:28px;display:flex}.login-card header{flex-direction:column;gap:4px;display:flex}.login-card h1{font-size:18px;font-weight:600}.login-card p{color:var(--ink-2);font-size:13.5px}.dialog{border:1px solid var(--rule);background:var(--surface);width:min(560px,100vw - 32px);color:var(--ink);border-radius:14px;padding:0;box-shadow:0 1px 2px #18181b0f,0 24px 48px -12px #18181b38}.dialog::backdrop{background:#18181b52}.dialog-body{flex-direction:column;gap:18px;padding:22px;display:flex}.dialog-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dialog-head h2{margin-bottom:4px;font-size:16px;font-weight:600}.dialog-head p{color:var(--ink-2);font-size:13px}.share-form{grid-template-columns:1fr 150px auto;align-items:end;gap:10px;display:grid}.share-form .btn{height:36px}.share-created{color:var(--ink-2);background:var(--sunk);overflow-wrap:anywhere;border-radius:9px;padding:10px 12px;font-size:13px}.share-created code{font-family:var(--font-mono), monospace;color:var(--ink);font-size:12px}.share-list{flex-direction:column;gap:8px;display:flex}.share-list h4{color:var(--ink-2);font-size:13px;font-weight:500}.share-list ul{border:1px solid var(--rule);border-radius:10px;margin:0;padding:0;list-style:none}.share-row{align-items:center;gap:8px;padding:10px 12px;display:flex}.share-row+.share-row{border-top:1px solid var(--rule)}.share-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.share-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:500;overflow:hidden}.share-info span{color:var(--ink-2);font-size:12px}@media (max-width:560px){.share-form{grid-template-columns:1fr}.index-head{flex-direction:column}}
