.bfx{--bg:#F4F7FB;--white:#fff;--b50:#EFF6FF;--b100:#DBEAFE;--b200:#BFDBFE;--b400:#60A5FA;--b500:#3B82F6;--b600:#2563EB;--b700:#1D4ED8;--cyan:#0891B2;--red:#EF4444;--amber:#F59E0B;--green:#10B981;--dim:#64748B;--lt:#94A3B8;--bdr:#E2E8F0;--txt:#1E293B;--sh:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05);--sh2:0 8px 30px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.06);--pos:#10B981;--neg:#EF4444;--struct:#94A3B8;--nonmono:#F59E0B;--up:#1D4ED8;--down:#B45309;font-family:DM Sans,Inter,sans-serif;color:var(--txt);font-size:14px;line-height:1.5}.bfx[data-theme=dark]{--bg:#0B1220;--white:#111827;--b50:#1E293B;--b100:#1E3A5F;--b200:#1E40AF;--txt:#E2E8F0;--dim:#94A3B8;--lt:#64748B;--bdr:#1F2937;--sh:0 1px 3px rgba(0,0,0,.4);--sh2:0 8px 30px rgba(0,0,0,.5);--up:#60A5FA;--down:#FCD34D}.bfx *{box-sizing:border-box}.bfx .mono{font-family:Space Mono,ui-monospace,monospace}.bfx button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.bfx .shell{display:flex;height:560px;border:1px solid var(--bdr);border-radius:14px;overflow:hidden;background:var(--white)}.bfx .rail{width:270px;flex-shrink:0;background:var(--white);border-right:1px solid var(--bdr);display:flex;flex-direction:column;overflow:hidden}.bfx .rail-search{padding:12px 10px 10px;position:relative}.bfx .rail-search svg{position:absolute;left:20px;top:23px;width:15px;height:15px;stroke:var(--lt);fill:none;stroke-width:2}.bfx .rail-search input{width:100%;height:34px;border:1px solid var(--bdr);border-radius:9px;background:var(--bg);color:var(--txt);padding:0 12px 0 34px;font-size:13px;outline:none}.bfx .rail-search input:focus{border-color:var(--b500)}.bfx .rail-scroll{flex:1;overflow-y:auto;padding:6px 8px 30px}.bfx .rail-sec{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--lt);padding:12px 8px 7px;display:flex;align-items:center;gap:6px}.bfx .rail-sec .cnt{color:var(--lt);font-weight:600}.bfx .pin-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 4px}.bfx .pin{display:flex;flex-direction:column;gap:3px;align-items:flex-start;text-align:left;padding:9px 10px;border:1.5px solid var(--bdr);border-radius:10px;background:var(--bg)}.bfx .pin:hover{border-color:var(--b400)}.bfx .pin.on{border-color:var(--b600);background:var(--b50)}.bfx .pin-name{font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:6px}.bfx .pin-sub{font-size:9.5px;color:var(--dim);font-weight:500}.bfx .layer-head{display:flex;align-items:center;gap:6px;width:100%;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--lt);padding:11px 8px 7px}.bfx .layer-head:hover{color:var(--dim)}.bfx .layer-head .chev{font-size:8px;width:9px;flex-shrink:0}.bfx .layer-head .cnt{color:var(--lt);font-weight:600;text-transform:none;letter-spacing:0}.bfx .var-item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;cursor:pointer}.bfx .var-item:hover{background:var(--bg)}.bfx .var-item.on{background:var(--b50);box-shadow:inset 0 0 0 1.5px var(--b200)}.bfx .var-lab{font-size:12.5px;font-weight:600;color:var(--txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.bfx .var-lab b{color:var(--b600);background:#2563eb1a}.bfx .var-unit{font-size:9.5px;color:var(--lt);font-family:ui-monospace,monospace;flex-shrink:0}.bfx .rail-empty{padding:18px;text-align:center;color:var(--lt);font-size:12px}.bfx .ldot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.bfx .ntype{width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:10px;border:1.5px solid}.bfx .nt-controllable{background:#dbeafe;border-color:#2563eb;color:#1d4ed8}.bfx .nt-monitored{background:#fef3c7;border-color:#f59e0b;color:#b45309;border-radius:50%}.bfx .nt-observed{background:transparent;border-color:#94a3b8;color:#64748b;border-radius:50%;border-style:dashed}.bfx .nt-target{background:#d1fae5;border-color:#10b981;color:#047857;transform:rotate(45deg)}.bfx .nt-target span{transform:rotate(-45deg);display:block}.bfx .stage{flex:1;min-width:0;display:flex;flex-direction:column;background:radial-gradient(circle at 1px 1px,var(--bdr) 1px,transparent 0) 0 0/22px 22px}.bfx .legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:11px;color:var(--dim);padding:9px 16px;background:var(--white);border-bottom:1px solid var(--bdr)}.bfx .legend .lg{display:flex;align-items:center;gap:6px}.bfx .legend .lw{width:20px;height:3px;border-radius:2px}.bfx .legend .hint{color:var(--lt);margin-left:auto}.bfx .canvas{flex:1;overflow:auto;padding:26px 34px}.bfx .content{position:relative;min-width:100%;min-height:100%;display:flex;align-items:center}.bfx .wires{position:absolute;top:0;left:0;pointer-events:none;z-index:0;overflow:visible}.bfx .cols{position:relative;z-index:1;display:flex;align-items:center;gap:58px;padding:0 40vw}.bfx .col{display:flex;flex-direction:column;gap:15px;flex-shrink:0}.bfx .col-cap{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--lt);text-align:center;margin-bottom:-4px}.bfx .cnode{position:relative;width:184px;flex-shrink:0;border:1.5px solid var(--bdr);border-radius:12px;background:var(--white);box-shadow:var(--sh);padding:11px 13px 12px;cursor:pointer;transition:border-color .14s,box-shadow .14s,transform .12s}.bfx .cnode:hover{border-color:var(--b400);transform:translateY(-1px);box-shadow:var(--sh2)}.bfx .cnode.active{border-color:var(--b600);box-shadow:0 0 0 3px #2563eb2e,var(--sh)}.bfx .cnode.leaf{cursor:default}.bfx .cnode.leaf:hover{transform:none}.bfx .cn-head{display:flex;align-items:center;gap:7px;margin-bottom:7px}.bfx .cn-role{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}.bfx .cn-role2{font-size:8.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--lt)}.bfx .cn-label{font-size:13.5px;font-weight:700;line-height:1.25;color:var(--txt)}.bfx .cn-meta{display:flex;align-items:center;gap:7px;margin-top:8px}.bfx .cn-unit{font-size:9.5px;color:var(--lt);font-family:ui-monospace,monospace}.bfx .cn-band{font-size:9.5px;color:var(--dim);font-family:ui-monospace,monospace;margin-left:auto}.bfx .cn-drill{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:9px;padding:5px 9px;border-radius:8px;background:var(--b50);border:1px solid var(--b200);color:var(--b700);font-size:11px;font-weight:700;transition:background .14s}.bfx .cnode:hover .cn-drill,.bfx .cnode.active .cn-drill{background:var(--b600);border-color:var(--b600);color:#fff}.bfx .cn-drill .ar{font-size:13px;line-height:1}.bfx .cn-pm{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:5px;border:1.6px solid currentColor;font-weight:800;font-size:12px;line-height:1;flex-shrink:0}.bfx .cnode.focus{width:208px;border-width:2.5px;border-color:var(--b700);background:linear-gradient(180deg,var(--white),var(--b50));cursor:default;box-shadow:var(--sh2)}.bfx .cnode.focus:hover{transform:none}.bfx .cnode.focus .cn-label{font-size:16px}.bfx .focus-counts{display:flex;justify-content:space-between;gap:8px;margin-top:11px;font-size:10.5px;font-weight:700}.bfx .focus-counts .fc-l{color:var(--up)}.bfx .focus-counts .fc-r{color:var(--down)}.bfx .fchip{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;padding:2px 7px;border-radius:6px;background:var(--bg);border:1px solid var(--bdr);color:var(--dim);margin-top:9px}.bfx-tip{position:fixed;z-index:1200;max-width:330px;background:#fff;border:1px solid #E2E8F0;border-radius:11px;box-shadow:0 8px 30px #00000024;padding:12px 14px;font-size:12px;line-height:1.5;color:#1e293b;pointer-events:none;font-family:DM Sans,Inter,sans-serif}.bfx-tip .tip-rel{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}.bfx-tip .tip-rel.pos{color:#10b981}.bfx-tip .tip-rel.neg{color:#ef4444}.bfx-tip .tip-rel.nonmonotonic{color:#f59e0b}.bfx-tip .tip-rel.struct,.bfx-tip .tip-note{color:#64748b}.bfx-tip .tip-bands{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap}.bfx-tip .tip-band{font-size:10.5px;font-family:ui-monospace,monospace;border:1px solid #E2E8F0;border-radius:6px;padding:2px 7px}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}#root .visible{visibility:visible}#root .collapse{visibility:collapse}#root .static{position:static}#root .fixed{position:fixed}#root .absolute{position:absolute}#root .relative{position:relative}#root .sticky{position:sticky}#root .block{display:block}#root .inline-block{display:inline-block}#root .inline{display:inline}#root .flex{display:flex}#root .inline-flex{display:inline-flex}#root .table{display:table}#root .grid{display:grid}#root .contents{display:contents}#root .hidden{display:none}#root .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#root .resize{resize:both}#root .border{border-width:1px}#root .uppercase{text-transform:uppercase}#root .underline{text-decoration-line:underline}#root .overline{text-decoration-line:overline}#root .shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}#root .outline{outline-style:solid}#root .ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}#root .blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#root .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#root .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#root .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}html,body,#root{height:100%;margin:0;padding:0}body{font-family:Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f0f3f8;color:#191c1e}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;-webkit-user-select:none;-moz-user-select:none;user-select:none}.industrial-shadow{box-shadow:0 4px 12px #1e439614}.bg-tech-grid{background-image:linear-gradient(to right,rgba(196,198,211,.4) 1px,transparent 1px),linear-gradient(to bottom,rgba(196,198,211,.4) 1px,transparent 1px);background-size:32px 32px}.sidebar-nav-item:hover{background:#1e43960a!important;border-color:#c4c6d380!important}.icon-btn-hover:hover{background:#f1f5f9!important;border-color:#e2e8f0!important}.custom-scrollbar::-webkit-scrollbar{width:5px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#cbd5e1}.gradient-btn:hover{box-shadow:0 4px 16px #20247559,0 1px 3px #20247533!important;transform:translateY(-1px)}.gradient-btn:active{transform:translateY(0)}input:focus,button:focus,select:focus,textarea:focus,[tabindex]:focus{outline:none}input:focus-visible,button:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid #3EB5E7;outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
