@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+SC:wght@400;500;700&display=swap";*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:IBM Plex Sans,Noto Sans SC,system-ui,Segoe UI,sans-serif;color:#16202b;background:#e9edf1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font:inherit;cursor:pointer}button:disabled{opacity:.55;cursor:default}select{padding:6px 10px;border:1px solid var(--psa-line-strong);border-radius:7px;background:#fff;color:var(--psa-ink);font-size:13px}input:not([type=checkbox]):not([type=radio]):not([type=file]){font-family:var(--psa-font-mono);border:1px solid var(--psa-line-2);border-radius:7px;padding:6px 8px;color:var(--psa-ink);background:#fff}input:focus,select:focus{outline:none;border-color:var(--psa-primary);box-shadow:0 0 0 3px #1f6fe026}table{border-collapse:collapse}h3,h4{margin:8px 0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--psa-line-strong);border-radius:6px}::-webkit-scrollbar-track{background:transparent}::selection{background:var(--psa-primary-soft)}:root{--psa-chrome: #0E1A27;--psa-chrome-2: #142231;--psa-chrome-line: #0A141E;--psa-chrome-ink: #AEBCCB;--psa-chrome-ink-dim: #7C8B9C;--psa-bg: #EEF1F4;--psa-surface: #FFFFFF;--psa-soft: #F8FAFC;--psa-soft-2: #FAFBFC;--psa-line: #E6ECF2;--psa-line-2: #D7DEE6;--psa-line-strong: #CFD8E1;--psa-ink: #16202B;--psa-ink-2: #33415A;--psa-muted: #64748B;--psa-faint: #94A3B8;--psa-primary: #1F6FE0;--psa-primary-strong: #1559B8;--psa-primary-soft: #E6F1FB;--psa-accent: #F0541E;--psa-amber: #D97706;--psa-teal: #0F766E;--psa-teal-strong: #0C5D57;--psa-ok: #2EC26A;--psa-danger: #DC2626;--psa-danger-strong: #B91C1C;--psa-danger-soft: #FEF2F2;--psa-warn: #D97706;--psa-c1: #16A34A;--psa-c2: #65A30D;--psa-c3: #D97706;--psa-c4: #EA580C;--psa-c5: #DC2626;--psa-zone-a: #EF9A9A;--psa-zone-b: #FFCC80;--psa-zone-c: #A5D6A7;--psa-font-sans: "IBM Plex Sans", "Noto Sans SC", system-ui, "Segoe UI", sans-serif;--psa-font-mono: "IBM Plex Mono", "Noto Sans SC", monospace;--psa-r-sm: 6px;--psa-r: 8px;--psa-r-lg: 10px;--psa-r-xl: 14px;--psa-shadow: 0 1px 2px rgba(15, 25, 40, .05);--psa-shadow-pop: 0 4px 14px -4px rgba(15, 25, 40, .18);--psa-header-h: 54px;--psa-statusbar-h: 28px;--psa-side-w: clamp(248px, 22vw, 320px);--psa-inspector-w: clamp(300px, 24vw, 372px);--psa-ftsidebar-w: clamp(150px, 14vw, 208px)}.psa-num{font-family:var(--psa-font-mono);font-variant-numeric:tabular-nums}.psa-card{background:var(--psa-surface);border:1px solid var(--psa-line);border-radius:var(--psa-r-lg)}.psa-panel{background:var(--psa-surface);border:1px solid var(--psa-line-2);border-radius:var(--psa-r-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--psa-shadow)}.psa-panel__head{height:auto;flex-shrink:0;border-bottom:1px solid var(--psa-line);display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--psa-soft);font-size:12px;font-weight:600;color:var(--psa-ink-2)}.psa-vsplit{flex-shrink:0;height:10px;display:flex;align-items:center;justify-content:center;cursor:row-resize;touch-action:none}.psa-vsplit>i{width:48px;height:4px;border-radius:3px;background:var(--psa-line-strong);transition:background .12s,width .12s;display:block}.psa-vsplit:hover>i{background:var(--psa-primary);width:72px}.psa-hsplit{flex-shrink:0;width:10px;align-self:stretch;display:flex;align-items:center;justify-content:center;cursor:col-resize;touch-action:none}.psa-hsplit>i{width:4px;height:48px;border-radius:3px;background:var(--psa-line-strong);transition:background .12s,height .12s;display:block}.psa-hsplit:hover>i{background:var(--psa-primary);height:72px}.psa-btn{height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 11px;border:1px solid var(--psa-line-strong);border-radius:7px;background:var(--psa-surface);color:var(--psa-ink-2);font-size:12.5px;font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .12s,border-color .12s}.psa-btn:hover{background:var(--psa-soft);border-color:var(--psa-line-2)}.psa-btn:disabled{opacity:.55;cursor:default}.psa-btn--primary{background:var(--psa-primary);border-color:var(--psa-primary);color:#fff}.psa-btn--primary:hover{background:var(--psa-primary-strong);border-color:var(--psa-primary-strong)}.psa-btn--dark{background:var(--psa-chrome);border-color:var(--psa-chrome);color:#fff}.psa-btn--danger{color:var(--psa-danger)}.psa-statusbar{height:var(--psa-statusbar-h);flex-shrink:0;background:var(--psa-chrome);display:flex;align-items:center;gap:14px;padding:0 14px;color:var(--psa-chrome-ink);font-size:11.5px}.psa-statusbar .psa-num{color:#d7e0ea}.psa-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.psa-grid{--ag-font-family: var(--psa-font-sans);--ag-foreground-color: var(--psa-ink);--ag-background-color: var(--psa-surface);--ag-header-background-color: var(--psa-soft);--ag-header-foreground-color: var(--psa-ink-2);--ag-border-color: var(--psa-line);--ag-row-border-color: var(--psa-line);--ag-row-hover-color: var(--psa-primary-soft);--ag-selected-row-background-color: var(--psa-primary-soft);--ag-input-focus-border-color: var(--psa-primary)}.psa-ch{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--psa-line);background:var(--psa-soft);flex-shrink:0}.psa-ch .t{margin:0;font-size:12px;font-weight:600;color:var(--psa-ink-2);letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.psa-ch .meta{font-size:11px;color:var(--psa-faint);font-family:var(--psa-font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.psa-kpi{background:var(--psa-soft);border:1px solid var(--psa-line);border-radius:var(--psa-r);padding:9px 12px;display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.psa-kpi .l{font-size:11px;color:var(--psa-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.psa-kpi .v{font-size:20px;font-weight:600;font-family:var(--psa-font-mono);font-variant-numeric:tabular-nums;line-height:1.1;color:var(--psa-ink)}.psa-kpi .v small{font-size:11px;font-weight:400;color:var(--psa-faint);margin-left:4px}.psa-tag{font-size:10.5px;padding:2px 7px;border-radius:5px;background:var(--psa-soft);color:var(--psa-ink-2);font-family:var(--psa-font-mono)}.psa-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500}.psa-chip .sq{width:11px;height:11px;border-radius:3px;flex-shrink:0}.psa-field{display:flex;align-items:center;gap:8px;margin-bottom:6px}.psa-field>label,.psa-field>.k{width:auto;min-width:56px;font-size:11.5px;color:var(--psa-muted)}:root{--exp-bg:#f1f5f9;--exp-line:#e2e8f0;--exp-soft:#f8fafc;--exp-acc:#0f766e;--exp-ink:#0f172a;--exp-ink2:#334155;--exp-muted:#64748b;--exp-faint:#94a3b8}.exp-menu{display:flex;align-items:center;gap:2px;padding:4px 10px;background:#fff;border-bottom:1px solid var(--exp-line);font-size:12px;color:var(--exp-ink2);flex-shrink:0}.exp-menu .m{position:relative;padding:4px 10px;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.exp-menu .m:hover,.exp-menu .m.open{background:var(--exp-soft)}.exp-menu .drop{position:absolute;left:0;top:100%;z-index:60;min-width:172px;background:#fff;border:1px solid var(--exp-line);border-radius:8px;box-shadow:0 8px 24px #0f172a24;padding:4px;margin-top:2px}.exp-menu .drop button{display:flex;width:100%;align-items:center;gap:8px;padding:6px 10px;border:0;background:none;border-radius:6px;font-size:12.5px;color:var(--exp-ink2);cursor:pointer;text-align:left}.exp-menu .drop button:hover:not(:disabled){background:var(--exp-soft);color:var(--exp-acc)}.exp-menu .drop button:disabled{color:var(--exp-faint);cursor:default}.exp-menu .drop .sep{height:1px;background:var(--exp-line);margin:4px 2px}.exp-tree{width:212px;flex-shrink:0;background:#fff;border-right:1px solid var(--exp-line);overflow:auto;padding:8px 6px;font-size:12px}.exp-tree .grp{font-size:10.5px;font-weight:600;letter-spacing:.4px;color:var(--exp-faint);padding:8px 8px 3px}.exp-tree .it{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px;color:var(--exp-ink2);white-space:nowrap;overflow:hidden;cursor:pointer}.exp-tree .it:hover{background:var(--exp-soft)}.exp-tree .it.on{background:#e6f2f0;color:var(--exp-acc);font-weight:600}.exp-tree .it .n{margin-left:auto;font-family:var(--psa-font-mono);font-size:10.5px;color:var(--exp-faint);flex-shrink:0}.exp-tree .prj{font-weight:600;color:var(--exp-ink)}.exp-tree .sub{padding-left:20px}.exp-tree .sub2{padding-left:32px}.exp-tree .st{font-size:9.5px;font-weight:700;border-radius:4px;padding:0 5px;flex-shrink:0}.exp-tree .st.dft{background:var(--exp-soft);color:var(--exp-faint)}.exp-tree .st.arch{background:#eff6ff;color:#2563eb}.exp-status{display:flex;gap:16px;align-items:center;padding:4px 12px;background:#fff;border-top:1px solid var(--exp-line);font-size:11px;color:var(--exp-muted);flex-shrink:0}.exp-status .num{color:var(--exp-ink2);font-family:var(--psa-font-mono);font-variant-numeric:tabular-nums}.exp-zoom{position:absolute;right:10px;top:8px;display:flex;gap:4px;background:var(--psa-surface);border:1px solid var(--psa-line-2);border-radius:8px;padding:3px;box-shadow:var(--psa-shadow-pop);z-index:2}.exp-zoom button{width:26px;height:22px;display:flex;align-items:center;justify-content:center;border:0;background:none;border-radius:5px;font-size:13px;line-height:1;color:var(--psa-ink-2);cursor:pointer;padding:0}.exp-zoom button:hover{background:var(--psa-soft)}.exp-zoom .pct{width:auto;padding:0 7px;display:flex;align-items:center;font-size:10.5px;color:var(--psa-faint)}.exp-collapse-toggle{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--psa-line-strong);background:var(--psa-surface);border-radius:6px;padding:2px 8px;font-size:11px;color:var(--psa-ink-2);cursor:pointer}.exp-collapse-toggle:hover{background:var(--psa-soft)}:root{--exp-eta-inspector-w: 290px}.exp-popover{position:absolute;top:100%;left:0;margin-top:6px;z-index:20;min-width:320px;max-width:380px;max-height:70vh;overflow:auto;background:var(--psa-surface);border:1px solid var(--psa-line-2);border-radius:10px;box-shadow:var(--psa-shadow-pop)}.exp-tree [role=treeitem]:focus-visible{outline:2px solid var(--psa-primary);outline-offset:-2px;border-radius:6px}.psa-focus-row:focus-visible{outline:2px solid var(--psa-primary);outline-offset:-2px;border-radius:4px}.psa-svg-focus:focus{outline:none}.psa-svg-focus:focus-visible{outline:2px solid var(--psa-primary);outline-offset:1px}.react-flow__node{visibility:visible!important;pointer-events:all!important}
