@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAa0ABQAAAAADOwAAAZHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJtP01WQVJGBmA/U1RBVIEcAGQvXBEICoMkgmcLFgAwhEwBNgIkAyYEIAWGXAdiDAcbOgtRlHLSRcD8TEzkdoghPRuspKefbVnJIM5yRfA8vZv9uTNJSCZY21Scrigr6qyJ/C3sE1OFKuVP3e+lxUTbYio1zb/kFdk2bufY2BlhWERRBrcDUBhB5GEpd2Cy+MDxqf9zLPX+XVsk5r+s50d6IpWLatqbdT6f2MAikiOKQocbjya2QT0DqPDX4R0jQBgAUAiCRhDA0EkvYeLk9X3I2bEWI8jBAihIANm+kUWQBgggWChcBBdFhXlAUgOCAgBA0AgKjUJ8HKvjddFCKSgAVklEBYAeEJgCQJH0qB3B+neDg4sAA4hAD0AVIEAA0IACJGeaUjMIIIhBUE/zNABjTQMBwEVRcwcYBUCObLERABAgjAA1M/ZSa9hSi4OlpsnZ2KBOVUsAZlRGl1W0NZ6gSwhQPIAFs7YFL0QS91vRQgdgx2VDAnIegKpQvwAJIoLgooBAGtCJcHizg0TDiz8vhPgIcVXaDJu37ZyDAIjFy4AAiC1JAA0olJwN6nFAACQk/zfQVUuA3t5ELKMT9hpBSRj+HBSggYCIAIEkUoC4PCIQIWHGA8+IStxf0PW15ntP22gc+Wo+BLyQAHECQiAVd+c3Ba8gZ4NOACBaLOhsbIMkAXEmuHsSAvkf4oJaAogH6nEQAzoBIEihUAwAA0AACAObAGcANYAAABaqgMmpWAhiiVyrvNyqFV8tMQ5Iyq6r9Lf7W82i8ILl2cv8zbfdJ5lnPzSnvt/XXPfRR/5pH3xA+u5uS0798EPJ3Fft33w36Wc+8E/7aIB/9fvvb1pE9erNXLB9mkw//cSg8Cnx03VGXDvZnRzKqV9Xkhn7eRHb3wVjHpg19nkZpX9bBU+vnHegrsuQcbW9Bi7oO33h+8SU0Tly/MbeYUuG1cftVz6oNxrW0qH1iezq446fkDFo/rgvTkqt7zmteFzncZ0uxXti09FFF2z+C7CODpjUudOE5NSeb3bv/mbPKcmOEzpWQ3VBgBAuj/AOY3qMm7UvgA8qo3+qvAUBBAX0wADQG4AG+jCKaSxkBe/zvcTG8jRpRZgqhCog4sd++cOo7J+/RdvaaMoc78Ri/PNPSclx6fDvG1Kt3qQFi1rq+5EaavTtt9TVvfvucYsA5wc4oESU+E1ikF9TkrOkIsIH5Fawx7SBNLnMcWlM3skBluCmQNs7GeyFvYVDamsqwhxx18n/+WdxzDgOLU1AqbUlb3m+KOT9+ONvY/7XlrdLS//5v7nN97XHj0VzJpJvz4spq0V7ioXDuv2YrSxtF/KZmvbWfKtorXSh8dfvgGu+ev/nFSaXM6jyuCE/f/EpmuP7Rqu8R98vP/+tXUdrOgKlZP9Q/s+fRF9+3CHZd4EugfPv158me9X7v/6aSMCxMJmIr//65bNXngl7+uiPP5oKx+y27D8trp+psUzMacpm80XlnYeMAct0LynxhNYgaP3dtn8/LBAi+ksr+7NvjjtJV+UXrz0uLXV1x08AZRN1S2A8EaVE5afk/dfGjz//+fdHn36Xdttz2d9/z+bawZ8/slNN1aYtq+ZPGzNuPGdwOsfYflwmHCkPgs5DcKizvdpS/3gEUMW9/lvQvWp1bGTW1fpngC/uSVYAfH3TeSusL8TtlHUD4KAAEHjahk4YpuffGwEBN/dUmpHqdHyJ3Ap8O3UlQ4gCNrMRwLBBKiskL6a+RoBi/9XGlgc8L4/CUejQxaiIyqmomdhktOhfgDbDfaNDb4+yKIPd6IgmzDa0CByijWFmL2dlSRKagTIWXeIU9HDphoZiJeBTjAefHMxDhVSRFUgVcOkW3EGMahYVMFjWHhMluB2wAcbHYqF1LpsDF9C6s+CI2fDgh4wSuFEyGadjXAmIk3CugIRibLIti9ZtC8S4VSqfikGqPaoI122XyRYLBmsOmdiiTpqK1OklUQzpMcZmQRQV4M4oJCMkfRQXK+qvjifUcQd1bRdetW/LWjacYxvcttnVjWg5h0q4xw6rZyejSpZVZ78LzC4uyDNRQ4bymHSTMyM+SZ7D75mg/7YTlmNz7W8T00h0VEiGKB+F7iWYZFvSTiA4LVxttm2ATt5EoUWLJbY4EnLGrfsvEROlHtzlKn3H9VUT5tU/2dt3/EBv7foYzV/W4upyj04woO/gh6Vwwt3WGQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");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:Prompt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/prompt-thai-400-normal-BrkKv8cO.woff2)format("woff2"),url(/assets/prompt-thai-400-normal-DJypnfr3.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/prompt-vietnamese-400-normal-BCPzsgPT.woff2)format("woff2"),url(/assets/prompt-vietnamese-400-normal-D4pLyeNK.woff)format("woff");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:Prompt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/prompt-latin-ext-400-normal-DdSafGZ9.woff2)format("woff2"),url(/assets/prompt-latin-ext-400-normal-1pHbN9uy.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/prompt-latin-400-normal-BQ9zjSN8.woff2)format("woff2"),url(/assets/prompt-latin-400-normal-CxU4ec_r.woff)format("woff");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:Prompt;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/prompt-thai-500-normal-C18pDUoL.woff2)format("woff2"),url(/assets/prompt-thai-500-normal-D7YNqUJD.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/prompt-vietnamese-500-normal-DmzxmPwa.woff2)format("woff2"),url(/assets/prompt-vietnamese-500-normal-w_sS_j2F.woff)format("woff");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:Prompt;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/prompt-latin-ext-500-normal--EZ1um7s.woff2)format("woff2"),url(/assets/prompt-latin-ext-500-normal-D-lI1EVT.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/prompt-latin-500-normal-CxzxEHZc.woff2)format("woff2"),url(/assets/prompt-latin-500-normal-B1edBDQ9.woff)format("woff");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:Prompt;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/prompt-thai-600-normal-MrdfU7zR.woff2)format("woff2"),url(/assets/prompt-thai-600-normal-CYPViXds.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/prompt-vietnamese-600-normal-7QWjJBsF.woff2)format("woff2"),url(/assets/prompt-vietnamese-600-normal-1dyohtNh.woff)format("woff");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:Prompt;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/prompt-latin-ext-600-normal-Cg9L7iJU.woff2)format("woff2"),url(/assets/prompt-latin-ext-600-normal-C8b50x67.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Prompt;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/prompt-latin-600-normal-hKZWXsc1.woff2)format("woff2"),url(/assets/prompt-latin-600-normal-CSDDLorv.woff)format("woff");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}.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-border-default:1px solid #bbb;--xy-node-border-selected-default:1px solid #555;--xy-handle-background-color-default:#333;--xy-selection-background-color-default:#9696b41a;--xy-selection-border-default:1px dotted #9b9b9bcc;--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}.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));min-width:5px;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{flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{justify-content:center;align-items:center;width:26px;height:26px;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border:var(--xy-node-border,var(--xy-node-border-default));color:var(--xy-node-color,var(--xy-node-color-default))}.react-flow__node-input.selected,.react-flow__node-input:focus,.react-flow__node-input:focus-visible,.react-flow__node-default.selected,.react-flow__node-default:focus,.react-flow__node-default:focus-visible,.react-flow__node-output.selected,.react-flow__node-output:focus,.react-flow__node-output:focus-visible,.react-flow__node-group.selected,.react-flow__node-group:focus,.react-flow__node-group:focus-visible{border:var(--xy-node-border-selected,var(--xy-node-border-selected-default));outline:none}.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__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%}:root{--qav-navy-900:#0b2546;--qav-navy-800:#123b6d;--qav-navy-700:#1b4f8c;--qav-navy-100:#e3ecf7;--qav-navy-50:#f1f5fb;--qav-sky:#64d2ff;--bg:#f5f7fb;--surface:#fff;--surface-2:#f7f9fc;--surface-sunken:#eef2f8;--border:#dde4ee;--border-strong:#c6d1e0;--text:#172033;--text-2:#4a5568;--text-3:#7a8699;--text-on-navy:#fff;--accent:var(--qav-navy-800);--accent-hover:var(--qav-navy-700);--accent-soft:var(--qav-navy-100);--focus-ring:0 0 0 3px #2f6fed47;--success:#0ca678;--ok:#12a150;--warn:#e8890c;--edge-ok:#3d5a80;--edge-manual:#6b5cc4;--edge-selected:#2f6fed;--success-soft:#e6f7f1;--warning:#e8590c;--danger:#e03131;--danger-soft:#fdecec;--d-video:#2f6fed;--d-audio:#f08c00;--d-network:#0ca678;--d-control:#7950f2;--d-power:#e03131;--d-lighting:#e8b100;--d-intercom:#d6336c;--canvas-bg:#f3f6fb;--canvas-dot:#c9d3e2;--radius-sm:8px;--radius:12px;--radius-lg:16px;--radius-xl:20px;--radius-pill:999px;--shadow-1:0 1px 2px #1024460f, 0 1px 1px #1024460a;--shadow-2:0 6px 16px -6px #1024462e, 0 2px 4px #1024460f;--shadow-3:0 18px 40px -12px #10244647, 0 4px 10px #10244614;--font:"Plus Jakarta Sans Variable", "Prompt", system-ui, -apple-system, "Segoe UI", sans-serif;--font-th:"Prompt", "Plus Jakarta Sans Variable", system-ui, sans-serif;--toolbar-h:56px;--library-w:296px;--inspector-w:300px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}html[lang=th] body{font-family:var(--font-th)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{margin:0;line-height:1.2}kbd{font-family:var(--font);opacity:.55;border:1px solid;border-radius:5px;margin-left:auto;padding:1px 6px;font-size:11px}.muted{color:var(--text-3)}.small{font-size:12px}@keyframes spin{to{transform:rotate(360deg)}}.center-state{height:100%;color:var(--text-2);place-content:center;justify-items:center;gap:12px;display:grid}.btn{border-radius:var(--radius);background:var(--surface);height:36px;transition:background .15s, transform .15s var(--ease-out), box-shadow .15s;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:active{transform:translateY(1px)scale(.99)}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--lg{height:42px;padding:0 18px;font-size:15px}.btn--block{width:100%}.btn--primary{background:var(--accent);color:var(--text-on-navy);box-shadow:0 6px 14px -6px #123b6d8c}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--ghost{color:var(--text-2);background:0 0}.btn--ghost:hover{background:var(--surface-sunken)}.btn--danger-ghost{color:var(--danger);background:0 0;border-color:#f6c9c9;justify-content:flex-start}.btn--danger-ghost:hover{background:var(--danger-soft)}.icon-btn{width:34px;height:34px;color:var(--text-2);background:0 0;border:0;border-radius:10px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-sunken);color:var(--text)}.icon-btn--sm{border-radius:7px;width:24px;height:24px}.input{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);width:100%;height:38px;padding:0 12px;transition:border-color .15s,box-shadow .15s}.input:hover{border-color:var(--border-strong)}.input:focus{box-shadow:var(--focus-ring);border-color:#8fb0ea;outline:none}.input--lg{height:46px;font-size:16px}.input--area{resize:vertical;height:auto;min-height:72px;padding:10px 12px}.field{gap:6px;display:grid}.field__label{color:var(--text-2);letter-spacing:.01em;font-size:12px;font-weight:600}.chip{border-radius:var(--radius-pill);background:var(--accent-soft);height:22px;color:var(--qav-navy-800);white-space:nowrap;align-items:center;gap:4px;padding:0 9px;font-size:11.5px;font-weight:600;display:inline-flex}.chip--dashed{border:1px dashed var(--border-strong);color:var(--text-3);background:0 0;height:20px;font-size:10.5px}.badge{vertical-align:-3px;border-radius:6px;place-items:center;width:18px;height:18px;margin-left:6px;display:inline-grid}.badge--warn{color:var(--warning);background:#fff4e6}.seg{background:var(--surface-sunken);border-radius:10px;padding:3px;display:inline-flex}.seg__btn{color:var(--text-3);background:0 0;border:0;border-radius:8px;padding:4px 10px;font-size:12px;font-weight:600}.seg__btn.is-on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.local-note{color:var(--text-3);align-items:center;gap:6px;margin:0;font-size:11.5px;display:flex}.local-note--center{justify-content:center;margin-top:40px}.home{background:radial-gradient(1200px 400px at 85% -10%, #64d2ff2e, transparent 60%), radial-gradient(900px 380px at -10% 0%, #123b6d1f, transparent 60%), var(--bg);min-height:100%}.home__bar{justify-content:space-between;align-items:center;padding:18px 32px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand__name{letter-spacing:-.01em;color:var(--qav-navy-900);font-size:17px;font-weight:800}.brand__name span{color:var(--text-2);margin-left:4px;font-weight:600}.brand__tag{color:var(--text-3);font-size:12.5px}.home__main{max-width:1120px;margin:0 auto;padding:24px 32px 64px}.home__head{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.home__head h1{letter-spacing:-.02em;color:var(--qav-navy-900);font-size:28px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);transition:transform .2s var(--ease-out), box-shadow .2s, border-color .2s;position:relative}.project-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong);transform:translateY(-2px)}.project-card__link{color:inherit;border-radius:inherit;gap:10px;padding:18px;text-decoration:none;display:grid}.project-card__link:focus-visible{box-shadow:var(--focus-ring);outline:none}.project-card h3{letter-spacing:-.01em;padding-right:28px;font-size:17px}.project-card__meta{color:var(--text-2);flex-wrap:wrap;gap:14px;font-size:12.5px;display:flex}.project-card__meta span{align-items:center;gap:5px;display:inline-flex}.project-card__foot{color:var(--text-3);border-top:1px solid var(--border);padding-top:8px;font-size:11.5px}.project-card__delete{opacity:0;transition:opacity .15s;position:absolute;top:12px;right:12px}.project-card:hover .project-card__delete,.project-card__delete:focus-visible{opacity:1}.project-card__delete:hover{color:var(--danger);background:var(--danger-soft)}.empty-hero{text-align:center;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-xl);justify-items:center;gap:10px;padding:64px 24px;display:grid}.empty-hero h2{font-size:20px}.empty-hero p{color:var(--text-2);margin:0 0 8px}.empty-hero__art{gap:18px;margin-bottom:8px;display:flex}.empty-hero__art span{background:var(--surface);border:1px solid var(--border);width:54px;height:36px;box-shadow:var(--shadow-2);border-radius:10px;animation:3s ease-in-out infinite float;position:relative}.empty-hero__art span:before{content:"";background:var(--d-video);opacity:.85;border-radius:5px;width:16px;height:16px;position:absolute;top:9px;left:8px}.empty-hero__art span:nth-child(2){animation-delay:.3s}.empty-hero__art span:nth-child(2):before{background:var(--qav-navy-800)}.empty-hero__art span:nth-child(3){animation-delay:.6s}.empty-hero__art span:nth-child(3):before{background:#e8590c}@keyframes float{50%{transform:translateY(-5px)}}.sheet-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#0b254652;place-items:center;padding:16px;animation:.15s ease-out fade;display:grid;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--radius-xl);width:min(520px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow-3);animation:rise .22s var(--ease-out);gap:16px;padding:22px;display:grid;overflow:auto}.sheet__head{justify-content:space-between;align-items:center;display:flex}.sheet__head h2{font-size:20px}.sheet__more{gap:14px;display:grid}.sheet__actions{justify-content:flex-end;gap:8px;padding-top:4px;display:flex}.pick-grid{flex-wrap:wrap;gap:8px;display:flex}.pick{border:1px solid var(--border);background:var(--surface);height:34px;color:var(--text-2);border-radius:10px;padding:0 12px;font-weight:500;transition:all .15s}.pick:hover{border-color:var(--border-strong);color:var(--text)}.pick.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.disclosure{color:var(--text-2);background:0 0;border:0;justify-self:start;align-items:center;gap:6px;padding:0;font-weight:600;display:inline-flex}.disclosure svg{transition:transform .2s}.disclosure.is-open svg{transform:rotate(180deg)}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(12px)scale(.98)}}.editor{grid-template-columns:var(--library-w) 1fr var(--inspector-w);grid-template-rows:var(--toolbar-h) 1fr;grid-template-areas:"toolbar toolbar toolbar""library canvas inspector";height:100%;display:grid;overflow:hidden}.toolbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:5;grid-area:toolbar;align-items:center;gap:14px;padding:0 14px 0 8px;display:flex}.toolbar__back{color:var(--text-2);border-radius:10px;align-items:center;gap:2px;padding:4px 6px;display:inline-flex}.toolbar__back:hover{background:var(--surface-sunken)}.toolbar__title{align-items:center;gap:12px;min-width:0;display:flex}.title-input{letter-spacing:-.01em;field-sizing:content;background:0 0;border:1px solid #0000;border-radius:8px;min-width:120px;max-width:360px;padding:5px 8px;font-size:16px;font-weight:700}.title-input:hover{border-color:var(--border)}.title-input:focus{box-shadow:var(--focus-ring);border-color:#8fb0ea;outline:none}.toolbar__meta{align-items:center;gap:10px;display:flex}.toolbar__spacer{flex:1}.save-pill{border-radius:var(--radius-pill);background:var(--surface-sunken);height:28px;color:var(--text-2);align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;transition:all .2s;display:inline-flex}.save-pill__local{opacity:.5}.save-pill--saved{background:var(--success-soft);color:var(--success)}.save-pill--error{background:var(--danger-soft);color:var(--danger)}.panel-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:13px;font-weight:700}.library{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;grid-area:library;min-height:0;display:flex}.library__head{gap:10px;padding:14px 14px 10px;display:grid}.search{border-radius:var(--radius);background:var(--surface-sunken);height:38px;color:var(--text-3);border:1px solid #0000;align-items:center;gap:8px;padding:0 10px;display:flex}.search:focus-within{background:var(--surface);box-shadow:var(--focus-ring);border-color:#8fb0ea}.search input{min-width:0;color:var(--text);background:0 0;border:0;outline:none;flex:1}.chips-scroll{scrollbar-width:thin;gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.chip-btn{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);height:28px;color:var(--text-2);flex:none;padding:0 10px;font-size:12px;font-weight:600}.chip-btn:hover{border-color:var(--border-strong)}.chip-btn.is-on{background:var(--qav-navy-800);border-color:var(--qav-navy-800);color:#fff}.library__generic{padding:0 14px 10px}.library__list{flex:1;padding:4px 14px 24px;overflow-y:auto}.library__empty{color:var(--text-3);text-align:center;padding:24px 8px;font-size:13px}.lib-group+.lib-group{margin-top:14px}.lib-group__title{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;margin:6px 2px;font-size:11.5px;font-weight:700}.lib-card{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);text-align:left;cursor:grab;width:100%;transition:transform .15s var(--ease-out), box-shadow .15s, border-color .15s;align-items:center;gap:10px;margin-bottom:6px;padding:8px;display:flex}.lib-card:hover{border-color:color-mix(in srgb, var(--cat) 40%, var(--border));box-shadow:var(--shadow-2);transform:translateY(-1px)}.lib-card:active{cursor:grabbing;transform:scale(.98)}.lib-card:focus-visible{box-shadow:var(--focus-ring);outline:none}.lib-card__body{min-width:0;color:inherit;font:inherit;text-align:left;cursor:inherit;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:0;display:flex}.lib-item__body:focus-visible{box-shadow:var(--focus-ring);border-radius:8px;outline:none}.lib-card__actions{flex:none;align-items:center;display:flex}.lib-item.is-selected{border-color:var(--accent,#2563eb);box-shadow:0 0 0 1px var(--accent,#2563eb)}.lib-item__add{color:var(--text-3)}.lib-item__add:hover,.lib-item__add:focus-visible{color:var(--accent,#2563eb)}.lib-card__icon{background:color-mix(in srgb, var(--cat) 12%, white);width:34px;height:34px;color:var(--cat);border-radius:10px;flex:none;place-items:center;display:grid}.lib-card__text{flex:1;min-width:0;display:grid}.lib-card__name{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.lib-card__sub{color:var(--text-3);align-items:center;gap:4px;font-size:11.5px;display:flex}.lib-card__unverified{color:#f59f00;display:inline-flex}.lib-card__dots{gap:3px;display:flex}.lib-card__dots i,.port-dots i{border-radius:50%;width:6px;height:6px;display:block}.generic-btn{border-radius:var(--radius);border:1.5px dashed var(--border-strong);background:var(--surface-2);text-align:left;align-items:center;gap:10px;width:100%;padding:10px;transition:all .15s;display:flex}.generic-btn:hover{border-color:var(--qav-navy-700);background:var(--qav-navy-50)}.generic-btn__plus{background:var(--qav-navy-800);color:#fff;border-radius:9px;place-items:center;width:30px;height:30px;display:grid}.generic-btn__text{display:grid}.generic-btn__text strong{font-size:13px}.generic-btn__text small{color:var(--text-3);font-size:11.5px}.generic-form{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);box-shadow:var(--shadow-2);animation:rise .18s var(--ease-out);gap:10px;padding:12px;display:grid}.generic-form__head{justify-content:space-between;align-items:center;display:flex}.generic-form__cats{flex-wrap:wrap;gap:5px;max-height:104px;display:flex;overflow-y:auto}.cat-pick{border:1px solid var(--border);background:var(--surface);height:26px;color:var(--text-2);border-radius:8px;align-items:center;gap:4px;padding:0 8px;font-size:11.5px;display:inline-flex}.cat-pick.is-on{background:var(--qav-navy-800);border-color:var(--qav-navy-800);color:#fff}.canvas{background:var(--canvas-bg);grid-area:canvas;min-width:0;min-height:0;transition:box-shadow .2s;position:relative}.canvas.is-drop-target{box-shadow:inset 0 0 0 3px #2f6fed59}.canvas .react-flow__node{border-radius:14px}.canvas .react-flow__minimap,.canvas .react-flow__controls{box-shadow:var(--shadow-2);border:1px solid var(--border);border-radius:12px;overflow:hidden}.canvas .react-flow__controls-button{border:0;border-bottom:1px solid var(--border);background:var(--surface);width:30px;height:30px}.canvas .react-flow__controls-button:hover{background:var(--surface-sunken)}.canvas .react-flow__selection{background:#2f6fed14;border:1px solid #2f6fed80;border-radius:8px}.canvas-empty{text-align:center;pointer-events:none;color:var(--text-2);place-content:center;justify-items:center;gap:6px;display:grid;position:absolute;inset:0}.canvas-empty h3{color:var(--qav-navy-900);font-size:18px}.canvas-empty p{text-wrap:balance;max-width:440px;color:var(--text-3);margin:0}.canvas-empty__ghost{border:2px dashed var(--border-strong);width:220px;height:76px;color:var(--text-3);background:#fff9;border-radius:16px;place-items:center;margin-bottom:10px;animation:2.4s ease-in-out infinite breathe;display:grid}.canvas.is-drop-target .canvas-empty__ghost{border-color:var(--d-video);color:var(--d-video)}@keyframes breathe{50%{transform:scale(1.03)}}.device-card{background:var(--surface);border:1px solid var(--border);width:224px;box-shadow:var(--shadow-1);transition:box-shadow .18s, border-color .18s, transform .18s var(--ease-out);border-radius:14px;position:relative}.device-card:before{content:"";background:var(--cat);border-radius:14px 0 0 14px;width:4px;position:absolute;inset:0 auto 0 0}.device-card:hover{box-shadow:var(--shadow-2);border-color:var(--border-strong)}.device-card.is-selected{border-color:var(--qav-navy-700);box-shadow:0 0 0 3px #1b4f8c2e, var(--shadow-2)}.device-card.is-dragging{box-shadow:var(--shadow-3);cursor:grabbing;transform:rotate(-1.2deg)scale(1.03)}.device-card.is-generic{border-style:dashed}.device-card.is-new{animation:pop .38s var(--ease-spring)}@keyframes pop{0%{opacity:.2;transform:scale(.82)}}.device-card__main{align-items:center;gap:10px;padding:10px 10px 6px 14px;display:flex}.device-card__icon{background:color-mix(in srgb, var(--cat) 12%, white);width:34px;height:34px;color:var(--cat);border-radius:10px;flex:none;place-items:center;display:grid}.device-card__text{flex:1;min-width:0}.device-card__label{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:700;overflow:hidden}.device-card__sub{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.device-card__ports{justify-content:space-between;align-items:flex-end;gap:10px;min-height:24px;padding:2px 14px 11px 18px;display:flex}.ports{flex-wrap:wrap;align-items:center;gap:11px;min-width:0;display:flex}.ports--bi{flex:1;justify-content:center}.ports--out{justify-content:flex-end}.device-card .react-flow__handle.port-handle{background:var(--dot,#8896ab);opacity:.85;pointer-events:all;cursor:crosshair;color:#fff;width:8px;min-width:0;height:8px;min-height:0;transition:transform .16s var(--ease-out), box-shadow .16s, opacity .16s, background-color .16s;border:0;border-radius:50%;place-items:center;font-size:7px;font-weight:800;line-height:1;display:grid;position:relative;inset:auto;transform:none}.device-card .react-flow__handle.port-handle:before{content:"";border-radius:50%;position:absolute;inset:-4px}.device-card .port-handle.is-used{opacity:1;box-shadow:0 0 0 1.5px var(--surface), 0 0 0 3px var(--qav-navy-800)}.device-card:hover .port-handle,.device-card.is-selected .port-handle{opacity:1;transform:scale(1.4)}.device-card .port-handle.is-from{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--qav-navy-700);transform:scale(1.8)}.canvas .device-card.is-connecting .port-handle[data-v]{opacity:1;transform:scale(1.85)}.canvas .device-card.is-connecting .port-handle[data-v]:after{content:attr(data-glyph)}.port-handle[data-v=compatible]{background:var(--ok)!important}.port-handle[data-v=adapter_required]{rotate:45deg;background:var(--warn)!important;border-radius:2px!important}.port-handle[data-v=adapter_required]:after{rotate:-45deg}.port-handle[data-v=unknown]{outline:1.4px dashed var(--text-3);outline-offset:1px;background:var(--surface)!important;color:var(--text-2)!important;box-shadow:inset 0 0 0 1.4px var(--text-3)!important}.canvas .device-card.is-connecting .port-handle[data-v=incompatible]{opacity:.4;transform:scale(1.5);background:var(--text-3)!important}.canvas .device-card.is-connecting .port-handle.is-hover{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px currentColor;z-index:3;transform:scale(2.5)}.port-handle[data-v=compatible].is-hover{color:var(--ok)}.device-card .react-flow__handle.agg-handle{border:1.5px solid var(--border-strong);background:var(--surface);width:20px;min-width:0;height:30px;min-height:0;box-shadow:var(--shadow-1);opacity:0;pointer-events:all;cursor:crosshair;transition:opacity .15s, transform .15s var(--ease-out), background-color .15s;place-items:center;display:grid;position:absolute;top:50%;bottom:auto}.device-card .react-flow__handle.agg-handle--out{border-radius:0 15px 15px 0;left:auto;right:-12px;transform:translateY(-50%)}.device-card .react-flow__handle.agg-handle--in{border-radius:15px 0 0 15px;left:-12px;right:auto;transform:translateY(-50%)}.agg-handle:after{content:"";background:var(--qav-navy-700);border-radius:50%;width:6px;height:6px}.agg-handle--out:after{margin-left:4px}.agg-handle--in:after{margin-right:4px}.device-card:hover .agg-handle,.device-card.is-selected .agg-handle{opacity:1}.device-card .agg-handle:hover{background:var(--qav-navy-800);border-color:var(--qav-navy-800)}.agg-handle:hover:after{background:#fff}.device-card.is-connecting .agg-handle{opacity:0;pointer-events:none}.device-card.is-connecting{transition:opacity .15s,box-shadow .15s,outline-color .15s}.device-card.is-source{box-shadow:0 0 0 3px #1b4f8c40, var(--shadow-2)}.device-card.dv-compatible{box-shadow:0 0 0 2px var(--ok), var(--shadow-2)}.device-card.dv-adapter_required{box-shadow:0 0 0 2px var(--warn), var(--shadow-2)}.device-card.dv-unknown{outline:2px dashed var(--text-3);outline-offset:2px}.device-card.dv-incompatible{opacity:.5;filter:grayscale(.6)}.device-card.is-card-hover.dv-compatible{box-shadow:0 0 0 4px #12a15059, 0 0 0 2px var(--ok), var(--shadow-3)}.device-card.is-card-hover.dv-adapter_required{box-shadow:0 0 0 4px #e8890c59, 0 0 0 2px var(--warn), var(--shadow-3)}.verdict-badge{z-index:4;border-radius:var(--radius-pill);color:#fff;white-space:nowrap;height:22px;box-shadow:var(--shadow-2);pointer-events:none;animation:pop .18s var(--ease-spring);align-items:center;gap:4px;padding:0 9px 0 7px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;top:-11px;right:10px}.verdict-badge--compatible{background:var(--ok)}.verdict-badge--adapter_required{background:var(--warn)}.verdict-badge--unknown{background:var(--surface);color:var(--text-2);border:1.5px dashed var(--text-3)}.verdict-badge--incompatible{background:var(--text-2)}.react-flow__edge .signal-edge{fill:none;stroke:var(--edge-ok);stroke-width:2px;stroke-linecap:round;transition:stroke .15s}.react-flow__edge .signal-edge--adapter{stroke:var(--warn);stroke-width:2.4px}.react-flow__edge .signal-edge--manual{stroke:var(--edge-manual);stroke-dasharray:7 5}.react-flow__edge .signal-edge.is-selected{stroke:var(--edge-selected);stroke-width:3px}.react-flow__edge:hover .signal-edge{stroke-width:3px}.edge-halo{stroke:var(--edge-selected);stroke-width:10px;stroke-opacity:.16;stroke-linecap:round}.connection-line{fill:none;stroke:var(--qav-navy-700);stroke-width:2.4px;stroke-dasharray:6 5;stroke-linecap:round}.connection-line--compatible{stroke:var(--ok);stroke-dasharray:none}.connection-line--adapter_required{stroke:var(--warn)}.connection-line--unknown{stroke:var(--text-3);stroke-dasharray:2 6}.connection-line--incompatible{stroke:var(--text-3);opacity:.55;stroke-dasharray:2 8}.connection-line__end{fill:var(--qav-navy-700)}.connection-line__end--compatible{fill:var(--ok)}.connection-line__end--adapter_required{fill:var(--warn)}.connection-line__end--unknown,.connection-line__end--incompatible{fill:var(--text-3)}.edge-label{pointer-events:none;align-items:center;gap:6px;display:flex;position:absolute}.edge-badge{pointer-events:all;cursor:pointer;border-radius:var(--radius-pill);background:var(--surface);height:20px;box-shadow:var(--shadow-1);border:1.5px solid;align-items:center;gap:3px;padding:0 8px;font-size:10.5px;font-weight:700;display:inline-flex}.edge-badge--adapter{color:#b45f00;border-color:var(--warn)}.edge-badge--manual{color:var(--edge-manual);border-color:var(--edge-manual);border-style:dashed}.edge-chip{border-radius:var(--radius-pill);background:var(--qav-navy-800);color:#fff;align-items:center;height:20px;padding:0 8px;font-size:10.5px;font-weight:700;display:inline-flex}.hover-tip{z-index:70;pointer-events:none;background:var(--qav-navy-900);color:#fff;min-width:150px;max-width:280px;box-shadow:var(--shadow-3);border-radius:12px;gap:2px;padding:8px 10px;font-size:12px;display:grid;position:fixed;top:0;left:0}.hover-tip__head{align-items:center;gap:6px;font-size:12.5px;font-weight:800;display:flex}.hover-tip--compatible .hover-tip__head{color:#6ee7a8}.hover-tip--adapter_required .hover-tip__head{color:#ffc766}.hover-tip--unknown .hover-tip__head{color:#c9d3e2}.hover-tip--incompatible .hover-tip__head{color:#ff9c9c}.hover-tip__pair{font-weight:700}.hover-tip__reason{opacity:.8;line-height:1.35}.toast{z-index:40;background:var(--qav-navy-900);color:#fff;box-shadow:var(--shadow-3);animation:rise .2s var(--ease-out);border-radius:14px;align-items:center;gap:12px;max-width:min(560px,100% - 32px);padding:9px 10px 9px 12px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.toast__icon{background:var(--ok);border-radius:50%;flex:none;place-items:center;width:24px;height:24px;display:grid}.toast__icon--warn{background:var(--warn)}.toast__icon--bad{background:#e03131}.toast__text{gap:1px;min-width:0;display:grid}.toast__text strong{font-size:12.5px}.toast__text span{font-size:13px;font-weight:700}.toast__text small{opacity:.7;font-size:11.5px}.btn--sm{border-radius:9px;height:28px;padding:0 10px;font-size:12px}.btn--ghost-on{color:#fff;background:#ffffff1f;border:0}.btn--ghost-on:hover:not(:disabled){background:#ffffff38}.inspector .btn--ghost-on{background:var(--surface-sunken);color:var(--text)}.inspector .btn--ghost-on:hover:not(:disabled){background:var(--accent-soft)}.btn--danger{background:var(--danger);color:#fff}.btn--danger:hover:not(:disabled){background:#c92a2a}.btn kbd{margin-left:4px}.change-menu{position:relative}.change-menu__list{z-index:60;background:var(--surface);min-width:270px;max-height:260px;color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-3);border-radius:12px;margin:0;padding:5px;list-style:none;position:absolute;right:0;overflow-y:auto}.change-menu__list--up{bottom:calc(100% + 8px)}.change-menu__list--down{top:calc(100% + 6px)}.change-menu__item{text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;width:100%;padding:7px 9px;font-size:12.5px;display:flex}.change-menu__item:hover{background:var(--surface-sunken)}.change-menu__glyph{color:#fff;background:var(--ok);border-radius:50%;flex:none;place-items:center;width:18px;height:18px;font-size:10px;font-weight:800;display:grid}.change-menu__item.is-adapter_required .change-menu__glyph{background:var(--warn);border-radius:4px}.change-menu__item.is-unknown .change-menu__glyph{background:var(--surface);color:var(--text-2);box-shadow:inset 0 0 0 1.5px var(--text-3)}.change-menu__label{white-space:nowrap;flex:none;font-weight:600}.change-menu__meta{text-align:right;min-width:0;color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.prompt{z-index:80;background:var(--surface);border:1px solid var(--border);width:340px;box-shadow:var(--shadow-3);animation:rise .18s var(--ease-out);border-radius:16px;gap:8px;padding:14px;display:grid;position:fixed;transform:translate(-50%)}.prompt__head{align-items:center;gap:8px;font-size:14px;display:flex}.prompt__icon{color:#fff;background:var(--ok);border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.prompt--adapter .prompt__icon{background:var(--warn);border-radius:6px}.prompt--unverified .prompt__icon{background:var(--text-3)}.prompt--signal .prompt__icon{background:var(--danger)}.prompt--signal{border-color:#f3b8b8}.prompt__pair{background:var(--surface-sunken);border-radius:9px;padding:6px 9px;font-size:13px;font-weight:700}.prompt__body{color:var(--text-2);margin:0;font-size:12.5px;line-height:1.45}.prompt__actions{justify-content:flex-end;gap:8px;padding-top:2px;display:flex}.history-btns{background:var(--surface-sunken);border-radius:11px;gap:2px;padding:2px;display:inline-flex}.history-btns .icon-btn{width:32px;height:30px}.history-btns .icon-btn:disabled{opacity:.35;cursor:default}.tip{position:relative}.tip:hover:after,.tip:focus-visible:after{content:attr(data-tip);z-index:90;white-space:nowrap;background:var(--qav-navy-900);color:#fff;box-shadow:var(--shadow-2);pointer-events:none;border-radius:8px;padding:5px 9px;font-size:12px;font-weight:600;position:absolute;top:calc(100% + 8px);right:0}.conn-flow{justify-items:stretch;gap:4px;display:grid}.conn-end{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);padding:10px 12px}.conn-end__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:10.5px;font-weight:700}.conn-end__device{font-size:14px;font-weight:700}.conn-end__port{justify-content:space-between;align-items:center;gap:8px;margin-top:2px;display:flex}.conn-end__port-name{color:var(--qav-navy-800);font-weight:600}.conn-flow__arrow{color:var(--text-3);justify-self:center}.kv{gap:2px;margin:0;display:grid}.kv>div{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:7px 2px;display:flex}.kv dt{color:var(--text-3);font-size:12px;font-weight:600}.kv dd{margin:0;font-size:13px;font-weight:600}.state-pill{border-radius:var(--radius-pill);color:#fff;align-items:center;gap:5px;height:24px;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.state-pill--compatible{background:var(--ok)}.state-pill--adapter_required{background:var(--warn)}.state-pill--unknown{background:var(--surface);color:var(--text-2);border:1.5px dashed var(--text-3)}.state-pill--incompatible{background:var(--danger)}.conn-note{color:#8a4b00;background:#fff4e6;border-radius:10px;margin:0;padding:8px 10px;font-size:12.5px}.conn-note[data-state=unknown]{background:var(--surface-sunken);color:var(--text-2)}.conn-note[data-state=incompatible]{background:var(--danger-soft);color:#a61e1e}.conn-note--seed{background:var(--surface-sunken);color:var(--text-2);font-size:12px}.btn--sm.change-menu--inline{height:26px}.test-link{justify-content:center;align-items:center;gap:10px;margin-top:12px;display:flex}.inspector{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;grid-area:inspector;min-height:0;display:flex;overflow:hidden}.inspector__scroll{flex:1;min-height:0;overflow-y:auto}.inspector__body{gap:16px;padding:16px;animation:.15s ease-out fade;display:grid}.insp-hero{border-radius:var(--radius-lg);background:color-mix(in srgb, var(--cat) 7%, white);border:1px solid color-mix(in srgb, var(--cat) 18%, white);align-items:center;gap:12px;padding:12px;display:flex}.insp-hero__icon{background:var(--surface);width:42px;height:42px;color:var(--cat);box-shadow:var(--shadow-1);border-radius:12px;place-items:center;display:grid}.insp-hero__kicker{color:var(--cat);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-weight:700}.insp-hero__model{font-size:13.5px;font-weight:600}.port-groups{gap:10px;display:grid}.port-group__title{color:var(--text-3);margin-bottom:4px;font-size:11.5px;font-weight:700}.port-group__title span{background:var(--surface-sunken);border-radius:6px;margin-left:2px;padding:0 5px;font-weight:600}.port-group ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.port-group li{border-radius:8px;align-items:center;gap:8px;padding:4px 8px;font-size:12.5px;display:flex}.port-group li:hover{background:var(--surface-2)}.port-group li i{border-radius:50%;flex:none;width:8px;height:8px}.port-group__label{flex:1;font-weight:500}.port-group__meta{color:var(--text-3);font-size:11px}.tips{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);padding:12px}.tips__title{color:var(--text-2);align-items:center;gap:6px;margin-bottom:6px;font-size:12px;font-weight:700;display:flex}.tips ul{color:var(--text-2);gap:3px;margin:0;padding-left:18px;font-size:12px;display:grid}.react-flow__edgelabel-renderer{z-index:4}.seg--mode .seg__btn{align-items:center;gap:5px;padding:5px 11px;display:inline-flex}.seg--mode .seg__btn.is-on{background:var(--qav-navy-800);color:#fff}.seg--sm .seg__btn{padding:3px 9px;font-size:11.5px}.action-btns{align-items:center;gap:4px;display:inline-flex}.btn--tool{background:var(--surface-sunken);height:32px;color:var(--text);border-radius:10px;padding:0 11px;font-size:12.5px}.btn--tool:hover:not(:disabled){background:var(--accent-soft)}.btn--tool.is-on{background:var(--qav-navy-800);color:#fff}.tip.seg:hover:after{left:0;right:auto}.more-menu{position:relative}.popover{z-index:60;background:var(--surface);border:1px solid var(--border);min-width:250px;box-shadow:var(--shadow-3);animation:rise .15s var(--ease-out);border-radius:14px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.popover__item{text-align:left;background:0 0;border:0;border-radius:9px;align-items:center;gap:9px;width:100%;padding:9px 10px;font-size:13px;font-weight:600;display:flex}.popover__item:hover{background:var(--surface-sunken)}.snap-list{gap:4px;max-height:320px;padding:4px;display:grid;overflow-y:auto}.snap-list__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);padding:2px 4px 4px;font-size:11.5px;font-weight:700}.snap{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.snap__text{min-width:0;display:grid}.snap__text span{color:var(--text-2);font-size:12px}.snap__text small{color:var(--text-3);font-size:11px}.snap .btn--ghost-on{background:var(--accent-soft);color:var(--qav-navy-800)}.title-input{max-width:300px}.tip:hover:after,.tip:focus-visible:after{white-space:normal;max-width:300px;line-height:1.35}@media (width<=1400px){.btn__text{display:none}.btn--tool{padding:0 9px}}@media (width<=1360px){.toolbar__meta .chip,#connection-count-hide{display:none}}.right-tabs{border-bottom:1px solid var(--border);gap:2px;padding:8px 10px 0;display:flex}.right-tab{color:var(--text-3);background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:8px 11px;font-size:12.5px;font-weight:700;display:inline-flex}.right-tab:hover{color:var(--text)}.right-tab.is-on{color:var(--qav-navy-800);border-bottom-color:var(--qav-navy-800)}.check-head{justify-content:space-between;align-items:center;display:flex}.check-summary{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);gap:6px;padding:12px;display:grid}.check-summary--ready{background:var(--success-soft);border-color:#bfe8d8}.check-summary--action{background:var(--danger-soft);border-color:#f3b8b8}.check-summary--warning{background:#fff4e6;border-color:#f6d9ad}.check-summary__row{align-items:center;gap:8px;font-size:13.5px;font-weight:700;display:flex}.check-summary__row--ok{color:var(--ok)}.check-summary__row--warn{color:#b45f00}.check-summary__row--act{color:var(--danger)}.check-group{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin:4px 2px 6px;font-size:11.5px;font-weight:700}.check-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.check-item{border:1px solid var(--border);background:var(--surface);text-align:left;border-radius:10px;align-items:flex-start;gap:8px;width:100%;padding:8px 10px;font-size:12.5px;line-height:1.4;transition:background .15s,border-color .15s;display:flex}.check-item:hover:not(:disabled){background:var(--surface-sunken)}.check-item.is-active{border-color:var(--qav-navy-700);box-shadow:var(--focus-ring)}.check-item__icon{flex:none;margin-top:1px}.check-item--action .check-item__icon{color:var(--danger)}.check-item--warning .check-item__icon{color:var(--warn)}.check-ready{background:var(--surface-2);color:var(--text-2);border-radius:10px;margin:0;padding:10px 12px;font-size:12.5px}.check-summary--ready~.check-ready{color:#0b6b43}.readonly-value{border-radius:var(--radius);background:var(--surface-sunken);height:38px;color:var(--text-2);align-items:center;gap:7px;padding:0 12px;font-weight:600;display:flex}.trust{border-radius:var(--radius-pill);background:var(--surface-sunken);height:26px;color:var(--text-2);align-self:flex-start;align-items:center;gap:6px;padding:0 11px;font-size:12px;font-weight:700;display:inline-flex}.trust--unverified{color:#8a4b00;background:#fff4e6}.trust--verified{background:var(--success-soft);color:#0b6b43}.locked-note{color:var(--text-3);align-items:center;gap:6px;margin:6px 0 0;font-size:11.5px;display:flex}.input--sm{border-radius:9px;height:30px;padding:0 9px;font-size:12.5px}.input--num{width:90px}.field-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.field-row .input{flex:1;width:auto;min-width:0;max-width:170px}.chips-scroll--wrap{flex-wrap:wrap;overflow:visible}.port-rows{gap:4px;margin:0 0 8px;padding:0;list-style:none;display:grid}.port-row{border:1px solid var(--border);background:var(--surface);border-radius:10px}.port-row__head{align-items:center;gap:7px;min-height:34px;padding:5px 7px;display:flex}.port-row__head .input{flex:1;min-width:0}.port-row__dot{border-radius:50%;flex:none;width:8px;height:8px}.port-row__label{flex:1;min-width:0;font-size:12.5px;font-weight:600}.port-row__dir{background:var(--surface-sunken);color:var(--text-2);border-radius:6px;flex:none;padding:1px 6px;font-size:10.5px;font-weight:800}.port-row__proto{text-overflow:ellipsis;white-space:nowrap;max-width:76px;color:var(--text-3);flex:none;font-size:11px;overflow:hidden}.port-row__cables{color:var(--qav-navy-700);flex:none;font-size:10.5px;font-weight:700}.port-row__lock{color:var(--text-3);flex:none;margin-right:4px}.port-row .is-flipped svg{transform:rotate(180deg)}.port-row__edit{border-top:1px dashed var(--border);background:var(--surface-2);border-radius:0 0 10px 10px;gap:8px;padding:8px 10px 10px;display:grid}.port-add{border:1px dashed var(--border-strong);border-radius:10px;gap:8px;padding:8px;display:grid}.port-slot{align-items:center;gap:5px;display:inline-flex}.port-slot--out{flex-direction:row-reverse}.port-slot__label{color:var(--text-2);white-space:nowrap;letter-spacing:.01em;font-size:10.5px;font-weight:700}.canvas--technical .ports{gap:6px 11px}.edge-chip--quiet{background:var(--surface);color:var(--qav-navy-800);border:1.5px solid var(--edge-ok);box-shadow:var(--shadow-1)}.pulse-ring{border:3px solid var(--qav-navy-700);pointer-events:none;border-radius:18px;animation:1.1s ease-out 2 pulse-ring;position:absolute;inset:-6px}@keyframes pulse-ring{0%{opacity:.9;transform:scale(.97)}to{opacity:0;transform:scale(1.06)}}.canvas.is-arranging .react-flow__node{transition:transform .55s var(--ease-out)}.prompt--create{gap:10px;width:392px}.pc-row{gap:6px;display:grid}.pc-grid{gap:16px;display:flex}.pc-grid .pc-row{flex:1}.pc-fixed,.pc-signal{align-items:center;gap:6px;height:28px;font-size:12.5px;font-weight:700;display:inline-flex}.pc-signal i{border-radius:50%;width:9px;height:9px}.chip-btn__key{opacity:.55;border-radius:4px;margin:0 5px 0 0;padding:0 4px;font-size:9.5px}.pc-result{background:var(--surface-sunken);border-radius:10px;gap:2px;padding:8px 10px;font-size:12.5px;display:grid}.pc-result__pair{align-items:center;gap:6px;font-weight:800;display:inline-flex}.pc-result--compatible .pc-result__pair{color:var(--ok)}.pc-result--adapter_required{background:#fff4e6}.pc-result--adapter_required .pc-result__pair{color:#b45f00}.pc-result--incompatible{background:var(--danger-soft)}.pc-result--incompatible .pc-result__pair{color:var(--danger)}.pc-result__why{color:var(--text-2);font-size:12px}.pc-hint{margin:-2px 0 0}.home__actions{align-items:center;gap:10px;display:flex}.recover{margin-top:36px}.recover h2{color:var(--text-2);margin-bottom:10px;font-size:14px}.recover-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.recover-item{border-radius:var(--radius);background:var(--surface);border:1px dashed var(--border-strong);justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;display:flex}.recover-item small{color:var(--text-3);display:block}.inline-error{border-radius:var(--radius);background:var(--danger-soft);color:#a61e1e;border:1px solid #f3b8b8;justify-content:space-between;align-items:flex-start;gap:12px;margin:0 0 16px;padding:11px 14px;font-size:13px;display:flex}.btn--outline{background:var(--surface);border-color:var(--border-strong);color:var(--text)}.btn--outline:hover:not(:disabled){background:var(--surface-sunken)}.react-flow__edge .signal-edge--invalid{stroke:var(--danger);stroke-width:2.4px;stroke-dasharray:3 5}.edge-badge--invalid{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.banner{top:calc(var(--toolbar-h) + 10px);z-index:55;width:min(760px,100vw - 32px);box-shadow:var(--shadow-3);animation:rise .2s var(--ease-out);border-radius:14px;align-items:flex-start;gap:12px;padding:12px 14px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.banner p{flex:1;margin:0;font-size:13px;line-height:1.45}.banner__icon{flex:none;margin-top:2px}.banner__actions{flex:none;align-items:center;gap:6px;display:flex}.banner--error{color:#fff;background:#7d1f1f}.banner--warn{color:#fff;background:#6b4a00}.load-error{text-align:center;max-width:560px;margin:0 auto;padding:32px}.load-error h2{font-size:20px}.load-error p{color:var(--text-2);margin:0}.load-error__detail{overflow-wrap:anywhere;background:var(--surface-sunken);max-width:100%;color:var(--text-3);border-radius:8px;padding:6px 10px;font-size:11.5px;display:block}.load-error__list{text-align:left;width:100%}.review-page{max-width:980px;height:100%;margin:0 auto;padding:24px 20px 80px;overflow:auto}.review-head{justify-items:start;gap:8px;margin-bottom:20px;display:grid}.review-model{margin-bottom:22px}.review-model h2{align-items:center;gap:8px;font-size:16px;display:flex}.review-model table{border-collapse:collapse;width:100%;font-size:13px}.review-model th,.review-model td{text-align:left;border-bottom:1px solid var(--border,#e3e7ee);padding:5px 8px}.review-model td input{width:100%;padding:4px 6px}.review-model td .btn{margin-right:4px}.signin{min-height:100vh;padding:16px}.signin__lang{position:absolute;top:16px;right:16px}.signin__card{background:var(--surface,#fff);border-radius:16px;justify-items:start;gap:12px;width:min(380px,100%);padding:28px;display:grid;box-shadow:0 10px 40px #1018281f}.signin__card h1{margin:4px 0 0;font-size:20px}.signin__card .field{gap:4px;width:100%;display:grid}.signin__card input{width:100%}.signin__card .btn{justify-content:center;width:100%}.save-pill--offline{color:var(--warn,#b54708)}.save-pill--conflict{color:var(--danger,#b42318)}.save-pill--readonly{color:var(--muted,#667085)}.home__bar-actions{align-items:center;gap:10px;display:flex}.project-card__unsynced{color:var(--warn,#b54708);align-items:center;gap:6px;margin-top:8px;font-size:12px;display:flex}.recover-item__actions{gap:6px;display:flex}.btn--danger{color:#b42318;border-color:#f4c7c3}.team-add{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.toast__text .toast__hint{opacity:.85;font-size:12px;font-weight:500}.catalog-section .lib-group__title,.lib-group__title--source{align-items:center;gap:5px;display:flex}.lib-group__title--source{margin:14px 4px 4px}.catalog-note{color:var(--muted,#6b7280);align-items:center;gap:6px;margin:2px 4px 8px;font-size:12px;display:flex}.catalog-note--offline{color:var(--warn-text,#8a5a00)}.catalog-note--error{color:#c92a2a}.catalog-card{border:1px solid var(--line,#e5e7eb);background:var(--panel,#fff);border-radius:10px;align-items:stretch;gap:2px;margin-bottom:6px;display:flex}.catalog-card:hover{border-color:var(--accent,#2563eb)}.catalog-card__main{text-align:left;cursor:pointer;min-width:0;color:inherit;background:0 0;border:0;flex:1;gap:4px;padding:8px 10px;display:grid}.catalog-card__name{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700;overflow:hidden}.catalog-card__meta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.catalog-card__actions{flex-direction:column;justify-content:center;padding:2px 4px;display:flex}.scope-chip,.owned-chip,.rev-chip,.trust-chip{white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:1px 6px;font-size:10.5px;font-weight:600;line-height:16px;display:inline-flex}.scope-chip{background:color-mix(in srgb, var(--accent,#2563eb) 10%, transparent);color:var(--accent,#2563eb)}.scope-chip--private{color:#7c3aed;background:#7c3aed1f}.owned-chip{color:#2b8a3e;background:#2f9e4424}.rev-chip{background:color-mix(in srgb, currentColor 8%, transparent);opacity:.85}.trust-chip--unverified{color:var(--muted,#6b7280);background:color-mix(in srgb, currentColor 8%, transparent)}.trust-chip--ok{color:#2b8a3e;background:#2f9e441f}.catalog-empty{gap:6px;margin-bottom:8px;display:grid}.catalog-dialog{max-width:560px}.catalog-ports{border-collapse:collapse;width:100%;font-size:12px}.catalog-ports td{border-top:1px solid var(--line,#e5e7eb);padding:4px 6px}.readonly-value .trust-chip{margin-left:6px}.spin{animation:1s linear infinite spin}.lib-card__sub--chips{flex-wrap:wrap;gap:4px;margin-top:2px}.lib-card__local{color:var(--text-3);background:color-mix(in srgb, currentColor 9%, transparent);border-radius:999px;align-items:center;gap:3px;margin-left:2px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex}.catalog-card__hint{color:var(--text-3);font-size:10.5px}.readonly-value--wrap{flex-wrap:wrap;height:auto;min-height:38px;padding:6px 12px}.insp-facts{grid-template-columns:auto 1fr;gap:2px 10px;margin:6px 0 0;font-size:12.5px;display:grid}.insp-facts dt{color:var(--text-3)}.insp-facts dd{color:var(--text-2);overflow-wrap:anywhere;margin:0;font-weight:600}.link-open{margin-top:8px}.link-dialog{max-width:760px}.link-dialog h2{align-items:center;gap:8px;display:flex}.link-compare-head{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;margin-bottom:12px;display:grid}.link-side{border-radius:var(--radius);background:var(--surface-sunken);flex-direction:column;gap:3px;min-width:0;padding:10px 12px;display:flex}.link-suggestion{border:1px solid color-mix(in srgb, var(--accent,#2563eb) 35%, transparent);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:10px 12px;display:flex}.link-result{border:1px solid var(--border,#e5e7eb);border-radius:var(--radius);text-align:left;cursor:pointer;background:0 0;flex-wrap:wrap;align-items:center;gap:6px;width:100%;margin-top:6px;padding:8px 10px;display:flex}.link-result:hover{background:var(--surface-sunken)}.link-result__name{font-size:13px;font-weight:700}.kind-chip{letter-spacing:.02em;white-space:nowrap;background:color-mix(in srgb, currentColor 10%, transparent);border-radius:999px;align-items:center;gap:3px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-flex}.kind-chip--match{color:#2b8a3e}.kind-chip--add{color:var(--accent,#2563eb)}.kind-chip--change{color:#c77700}.kind-chip--remove{color:#c92a2a}.link-ports td{vertical-align:top}.diff--important{color:#c77700;font-weight:700}.link-compatible{border-radius:var(--radius);color:#2b8a3e;background:#2f9e441a;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-weight:600;display:flex}.link-cables{margin-top:12px;font-size:12.5px}.link-cable{padding:3px 0}.link-cable--unresolved_kept strong,.link-cable--unresolved_removed strong{color:#c92a2a}.link-choice{border:0;flex-direction:column;gap:4px;margin:12px 0 0;padding:0;font-size:13px;display:flex}.link-ack{margin-top:4px;font-weight:600}.link-rename{margin-top:12px;font-size:13px;display:block}.link-trust{align-items:center;gap:6px;display:flex}@media (width<=640px){.link-compare-head{grid-template-columns:1fr}}.link-dialog .sheet__actions{background:var(--surface);border-top:1px solid var(--border,#e5e7eb);margin:0 -22px -22px;padding:12px 22px;position:sticky;bottom:-22px}.rev-status{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.rev-sources{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:4px;display:flex}.rev-kept{color:#c77700;font-weight:600}.import-page{max-width:1180px;height:100%;margin:0 auto;padding:24px 20px 120px;overflow:auto}.import-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.import-toolbar__actions{gap:8px;display:flex}.import-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.import-table{border-collapse:collapse;width:100%;font-size:13px}.import-table th{text-align:left;color:var(--text-2);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-size:11.5px;font-weight:600}.import-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 12px}.import-table tbody tr{cursor:pointer}.import-table tbody tr:hover,.import-table tbody tr:focus-visible{background:var(--qav-navy-50);outline:none}.import-src{align-items:center;gap:6px;max-width:280px;display:inline-flex}.import-src span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.nowrap{white-space:nowrap}.tag{border-radius:var(--radius-pill);border:1px solid var(--border-strong);color:var(--text-2);background:var(--surface);white-space:nowrap;align-items:center;gap:4px;padding:1px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.tag--warn{color:#9a4f00;background:#fff4e6;border-color:#f5c27a}.status-pill{border-radius:var(--radius-pill);white-space:nowrap;border:1px solid #0000;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.status-pill--ok{background:var(--success-soft);color:#08694c;border-color:#9fdcc6}.status-pill--warn{color:#9a4f00;background:#fff4e6;border-color:#f5c27a}.status-pill--bad{background:var(--danger-soft);color:#a51d1d;border-color:#f3b2b2}.status-pill--info{background:var(--accent-soft);color:var(--qav-navy-800);border-color:#b9cbe6}.status-pill--muted{background:var(--surface-sunken);color:var(--text-2);border-color:var(--border-strong)}.segmented{background:var(--surface-sunken);border-radius:var(--radius-sm);flex-wrap:wrap;gap:4px;padding:3px;display:inline-flex}.segmented__btn{font:inherit;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:inline-flex}.segmented__btn.is-on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1);font-weight:600}.segmented__btn.is-on:before{content:"✓"}.segmented__btn:disabled{cursor:default;opacity:.75}.segmented--sm .segmented__btn{padding:4px 9px;font-size:12.5px}.import-grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.import-meta-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.import-part{color:var(--qav-navy-900);margin:26px 0 10px;font-size:17px}.import-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);gap:10px;margin-bottom:12px;padding:16px 18px;display:grid}.import-card h3{align-items:center;gap:6px;margin:0;font-size:15px;display:inline-flex}.import-card>summary{cursor:pointer;list-style:none}.import-card__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.import-callout{border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--qav-navy-900);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;padding:10px 12px;font-size:13px;display:flex}.import-callout--bad{background:var(--danger-soft);color:#7d1414}.fact-line{flex-wrap:wrap;align-items:center;gap:6px;margin:0;display:flex}.fact-line.is-ok{color:#08694c}.fact-line.is-bad{color:#a51d1d}.kv{grid-template-columns:max-content 1fr;gap:4px 14px;margin:0;font-size:13px;display:grid}.kv dt{color:var(--text-3)}.kv dd{margin:0}.plain-list{gap:4px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.check-line{align-items:center;gap:8px;font-size:13px;display:flex}.port-card{border:1px solid var(--border);border-radius:var(--radius-sm);border-left-width:4px;gap:8px;padding:10px 12px;display:grid}.port-card--confirmed{border-left-color:var(--ok)}.port-card--needs_review{border-left-color:var(--warn)}.port-card--unknown{border-left-color:var(--danger)}.port-card--accessory_related,.port-card--uncertain_location{border-left-color:var(--edge-manual);border-left-style:dashed}.port-card--excluded,.port-card--deferred{border-left-color:var(--border-strong);opacity:.8}.port-card__head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.port-card__facts{color:var(--text-2);flex-wrap:wrap;gap:6px 14px;font-size:12.5px;display:flex}.port-card__facts span+span:before{content:"·";color:var(--text-3);margin-right:14px}.port-card__caps,.port-card__primary{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fact-badge{border-radius:var(--radius-pill);letter-spacing:.02em;border:1px solid;align-items:center;gap:4px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-flex}.fact-badge--confirmed{color:#08694c}.fact-badge--needs_review{color:#9a4f00}.fact-badge--unknown{color:#a51d1d}.fact-badge--accessory_related,.fact-badge--uncertain_location{color:#5a48b8;border-style:dashed}.fact-badge--excluded,.fact-badge--deferred{color:var(--text-3)}.evidence summary{cursor:pointer;color:var(--text-2)}.evidence q{color:var(--text-2);font-style:italic}.dup-list{gap:6px;display:grid}.dup-row{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;display:flex}.dup-class{border:1px solid;border-radius:4px;padding:1px 7px;font-size:11px;font-weight:700}.dup-class--exact{color:#a51d1d}.dup-class--alias{color:#9a4f00}.dup-class--possible,.dup-class--variant{color:#5a48b8}.import-actions{background:linear-gradient(transparent, var(--bg) 30%);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0;display:flex;position:sticky;bottom:0}.import-actions .is-warn{color:#9a4f00;font-weight:600}.import-debug pre{background:var(--surface-sunken);border-radius:var(--radius-sm);max-height:360px;padding:10px;font-size:11px;overflow:auto}@media (width<=640px){.import-grid-2{grid-template-columns:1fr}}.import-callout--ok{background:var(--success-soft);color:#08694c}.draft-port-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 12px;display:grid}.draft-source-form,.draft-archive-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.draft-source-form .input{flex:1;width:auto;min-width:140px}.is-bad{color:#a51d1d}.is-warn{color:#9a4f00}.port-card__head .input{max-width:320px}.port-card__caps .input,.port-card__caps select.input{width:auto;max-width:260px}.sheet.export-dialog{width:min(820px,100%)}.export-grid{grid-template-columns:minmax(0,1fr) 320px;gap:20px;display:grid}@media (width<=720px){.export-grid{grid-template-columns:minmax(0,1fr)}}.export-col{align-content:start;gap:14px;min-width:0;display:grid}.export-h{letter-spacing:.02em;text-transform:uppercase;color:var(--text-3);align-items:center;gap:6px;margin:0 0 6px;font-size:12px;font-weight:700;display:flex}.export-formats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.export-format{text-align:left;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-2);align-items:flex-start;gap:8px;padding:10px;display:flex}.export-format span{gap:2px;min-width:0;display:grid}.export-format b{color:var(--text);font-size:13px}.export-format small{font-size:11px;line-height:1.3}.export-format.is-on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.export-format:disabled{cursor:default;opacity:.55}.export-format:focus-visible{box-shadow:var(--focus-ring);outline:none}.export-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;display:grid}.export-check{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.export-check input{accent-color:var(--accent);width:15px;height:15px;margin:0}.export-internal{border:1.5px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface-2);padding:12px}.export-internal p{margin:0 0 8px}.export-internal.is-on{border-color:var(--danger);background:var(--danger-soft)}.export-page{border:1px solid var(--border-strong);max-width:100%;box-shadow:var(--shadow-2);background:#fff;border-radius:4px;place-items:center;padding:10px;display:grid;overflow:hidden}.export-page img{object-fit:contain;max-width:100%;max-height:100%}.export-warn{color:#9a5b00}.export-filename{word-break:break-all;color:var(--text-2);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;display:block}.export-banner{border-radius:var(--radius);background:var(--surface-sunken);align-items:flex-start;gap:10px;padding:12px;font-size:13px;display:flex}.export-banner p{margin:2px 0 0}.export-banner__actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.export-banner--warn{color:#6b4a00;background:#fff4e5}.export-banner--ok{background:var(--success-soft);color:#0b6b4f}.export-banner--error{background:var(--danger-soft);color:#b42318}.export-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.export-internal-flag{color:var(--danger);align-items:center;gap:5px;margin-right:auto;font-size:12px;font-weight:700;display:inline-flex}.export-thumbs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;padding:2px;display:grid;overflow:auto}.export-thumb{gap:3px;margin:0;display:grid}.export-thumb img{aspect-ratio:420/297;object-fit:contain;border:1px solid var(--border-strong);width:100%;box-shadow:var(--shadow-1);background:#fff;border-radius:3px}.export-thumb figcaption{color:var(--text-3);text-align:center;font-size:11px}.export-summary{grid-template-columns:auto minmax(0,1fr);gap:4px 12px;margin:0;font-size:12.5px;display:grid}.export-summary dt{color:var(--text-3)}.export-summary dd{color:var(--text);margin:0;font-weight:600}.export-summary dd[data-state=unsaved]{color:#9a5b00}.export-print-explain{border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);align-items:flex-start;gap:8px;margin:0;padding:10px 12px;display:flex}.export-print-explain svg{flex:none;margin-top:2px}.export-formats--two{grid-template-columns:repeat(2,minmax(0,1fr))}.export-thumbs__more{text-align:center;grid-column:1/-1;margin:0}.export-toc{justify-content:space-between;gap:8px;font-weight:500;display:flex}.export-internal__note{color:var(--danger);margin:8px 0 0;font-weight:600}.export-client-privacy{border-radius:var(--radius);background:var(--success-soft);color:#0b6b4f;align-items:flex-start;gap:8px;margin:0;padding:10px 12px;display:flex}.export-client-privacy svg{flex:none;margin-top:2px}.export-check.is-disabled{opacity:.5}.asset-img{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex;position:relative;overflow:hidden}.asset-img img{object-fit:contain;width:100%;height:100%}.asset-img__pending{opacity:0;pointer-events:none;position:absolute}.asset-fallback{width:100%;height:100%;color:var(--muted,#6b7280);justify-content:center;align-items:center;display:inline-flex}.catalog-card__title{align-items:center;gap:8px;min-width:0;display:flex}.catalog-thumb{background:color-mix(in srgb, currentColor 5%, transparent);border-radius:6px;flex:none;width:40px;height:28px;overflow:hidden}.vis-section{margin:4px 0 10px}.vis-gallery{grid-template-columns:2fr 1fr 1fr;gap:8px;display:grid}.vis-tile{grid-template-rows:1fr auto;gap:2px;min-width:0;margin:0;display:grid}.vis-tile .asset-img{border:1px solid var(--line,#e5e7eb);background:color-mix(in srgb, currentColor 3%, transparent);border-radius:8px;height:96px}.vis-tile--primary .asset-img{height:150px}.vis-manage{border:1px dashed var(--line,#e5e7eb);border-radius:10px;margin-top:10px;padding:8px}.vis-manage__head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.vis-row{border-top:1px solid var(--line,#e5e7eb);grid-template-columns:56px 1fr auto;gap:8px;padding:6px 0;display:grid}.vis-row__thumb{background:color-mix(in srgb, currentColor 5%, transparent);border-radius:6px;width:56px;height:40px;overflow:hidden}.vis-row__body{gap:2px;min-width:0;display:grid}.vis-row__line{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.vis-row__actions{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.vis-state{background:color-mix(in srgb, currentColor 8%, transparent);border-radius:999px;padding:1px 6px;font-size:10.5px;font-weight:600}.vis-state--approved,.vis-state--active{color:#2b8a3e}.vis-state--retired{color:var(--muted,#6b7280)}.vis-state--restricted{color:#c92a2a}.vis-rights{background:color-mix(in srgb, currentColor 4%, transparent);border-radius:8px;gap:6px;margin-top:6px;padding:8px;display:grid}.vis-rights__checks{flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.vis-upload{max-width:520px}.field--inline{align-items:center;gap:6px;font-size:13px;display:flex}@media (width<=560px){.vis-gallery{grid-template-columns:1fr 1fr}.vis-tile--primary{grid-column:1/-1}.vis-row{grid-template-columns:48px 1fr}.vis-row__actions{flex-flow:wrap;grid-column:1/-1}}.lib-card__icon--thumb .catalog-thumb{background:0 0;width:100%;height:100%}.vis-tile{position:relative}.vis-fixture-flag{z-index:1;color:#fff;background:#c92a2a;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700;position:absolute;top:4px;left:4px}.vis-tile--fixture .asset-img,.catalog-thumb--fixture{outline-offset:-2px;outline:2px dashed #c92a2a}.vis-uat{color:#c92a2a;margin-top:8px}.vis-uat--library{margin:0 0 8px;font-size:12px}.fixture-chip{color:#fff;white-space:nowrap;background:#c92a2a;border-radius:999px;align-items:center;padding:1px 6px;font-size:10px;font-weight:700;line-height:1.4;display:inline-flex}
