@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap";:root{--bg-app:#f0eeeb;--bg-panel:#fff;--bg-panel-hover:#fafaf8;--bg-toolbar:#f0f0f0;--bg-canvas:#fff;--bg-menubar:#e8e8e8;--bg-titlebar:#0050a0;--bg-statusbar:#f0f0f0;--bg-active:#d8d8f0;--bg-active-strong:#0050a0;--border:silver;--border-light:#d8d8d8;--border-focus:#0050a0;--text-primary:#1a1a1a;--text-secondary:#444;--text-tertiary:#888;--text-inverse:#fff;--text-accent:#0050a0;--text-danger:#c0392b;--color-select:#0050a0;--color-accent:#0050a0;--color-cov:#8b5e3c;--node-fill:#ddd4ec;--node-fill-error:#e8e2f0;--node-stroke:#444;--node-text:#222;--arrow-stroke:#444;--radius-sm:0px;--radius-md:0px;--radius-lg:2px;--shadow-sm:0 1px 2px #0000001a;--shadow-md:0 2px 6px #0000001f;--shadow-lg:0 3px 12px #00000026;--transition:.1s ease;--font-sans:"Segoe UI", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Consolas", monospace}[data-theme=dark]{--bg-app:#1e1e1e;--bg-panel:#252526;--bg-panel-hover:#2a2d2e;--bg-toolbar:#333;--bg-canvas:#1e1e1e;--bg-menubar:#3c3c3c;--bg-titlebar:#003060;--bg-statusbar:#2d2d2d;--bg-active:#37373d;--bg-active-strong:#264f78;--border:#555;--border-light:#444;--border-focus:#007acc;--text-primary:#ccc;--text-secondary:#999;--text-tertiary:#666;--text-inverse:#fff;--text-accent:#4fc1ff;--text-danger:#f48771;--color-select:#264f78;--color-accent:#007acc;--color-cov:#c89b6e;--node-fill:#3c3a50;--node-fill-error:#35334a;--node-stroke:#888;--node-text:#ccc;--arrow-stroke:#999;--shadow-sm:0 1px 3px #0006;--shadow-md:0 2px 8px #00000080;--shadow-lg:0 4px 16px #0009}[data-theme=dark] .menu-dropdown{background:#2d2d30;border-color:#555}[data-theme=dark] .toolbar-icon{filter:invert()hue-rotate(180deg)}[data-theme=dark] .toolbar-btn.active .toolbar-icon{filter:invert()hue-rotate(180deg)brightness(.85)}[data-theme=dark] .error-banner{background:#3c1f1f;border-bottom-color:#5c2f2f}[data-theme=dark] .side-panel-section-header{background:#383838}[data-theme=dark] .side-panel-list-item:hover{background:#3e3e42}[data-theme=dark] .side-panel-list-item.selected{color:#fff;background:#264f78}[data-theme=dark] .side-panel-icon-btn{background:#2d2d2d;border-color:#555}[data-theme=dark] .analyzing-overlay{background:#0009}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-app);color:var(--text-primary);font-size:13px}.app-shell{flex-direction:column;height:100vh;display:flex;overflow:hidden}.titlebar{background:var(--bg-titlebar);height:26px;color:var(--text-inverse);letter-spacing:.2px;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;padding:0 8px;font-size:12px;font-weight:600;display:flex}.titlebar-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.menubar{background:var(--bg-menubar);height:24px;color:var(--text-primary);border-bottom:1px solid var(--border);z-index:100;flex-shrink:0;align-items:center;padding:0 2px;display:flex}.menubar-nav{align-items:center;height:100%;display:flex}.menu-top-item{color:var(--text-primary);cursor:pointer;align-items:center;height:100%;padding:2px 8px;font-size:12px;font-weight:400;transition:background 60ms;display:flex;position:relative}.menu-top-item:hover,.menu-top-item.active{background:var(--color-select);color:var(--text-inverse)}.menu-dropdown{z-index:1000;background:#fff;border:1px solid #888;min-width:220px;margin-top:0;padding:2px 0;position:absolute;top:100%;left:0;box-shadow:2px 2px 6px #0003}.menu-item{color:var(--text-primary);cursor:pointer;white-space:nowrap;justify-content:space-between;align-items:center;gap:20px;padding:4px 20px 4px 24px;font-size:12px;font-weight:400;display:flex}.menu-item:hover{background:var(--color-select);color:#fff}.menu-item-disabled{opacity:.4;cursor:default}.menu-item-disabled:hover{color:var(--text-primary);background:0 0}.menu-item-shortcut{color:var(--text-tertiary);font-size:11px;font-family:var(--font-sans)}.menu-item:hover .menu-item-shortcut{color:#ffffffb3}.menu-divider{background:silver;height:1px;margin:3px 2px}.error-banner{color:var(--text-danger);background:#fef2f2;border-bottom:1px solid #fecaca;flex-shrink:0;justify-content:space-between;align-items:center;padding:6px 12px;font-size:12px;font-weight:500;display:flex}.error-banner button{color:var(--text-danger);cursor:pointer;opacity:.6;background:0 0;border:none;font-size:14px}.error-banner button:hover{opacity:1}.main-area{flex:1;min-height:0;display:flex;overflow:hidden}.splitter-vertical{background:var(--border);cursor:col-resize;z-index:10;flex-shrink:0;width:4px;transition:background .15s}.splitter-vertical:hover,.splitter-vertical.active{background:var(--color-accent)}.splitter-horizontal{background:var(--border);cursor:row-resize;z-index:10;flex-shrink:0;height:4px;transition:background .15s}.splitter-horizontal:hover,.splitter-horizontal.active{background:var(--color-accent)}.toolbar{background:var(--bg-toolbar);border-right:1px solid var(--border);scrollbar-width:thin;scrollbar-color:silver transparent;flex-shrink:0;width:96px;min-width:96px;padding:2px 0;overflow:hidden auto}.toolbar::-webkit-scrollbar{width:4px}.toolbar::-webkit-scrollbar-track{background:0 0}.toolbar::-webkit-scrollbar-thumb{background:silver;border-radius:2px}.toolbar-group{padding:1px 2px}.toolbar-group-tools{flex-wrap:wrap;justify-content:flex-start;display:flex}.toolbar-btn{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;width:30px;height:28px;padding:0;transition:all 60ms;display:flex;position:relative;overflow:hidden}.toolbar-btn:hover{background:#d0d0d0;border-color:#a0a0a0}.toolbar-btn.active{border-color:var(--color-accent);background:#c0c8e0;box-shadow:inset 1px 1px 2px #00000026}.toolbar-btn:disabled,.toolbar-btn.disabled{cursor:default}.toolbar-btn:disabled:hover{background:0 0;border-color:#0000}.toolbar-icon{pointer-events:none;flex-shrink:0}.content-area{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.canvas-row{flex:1;min-height:0;display:flex;overflow:hidden}.canvas-wrapper{background:var(--bg-canvas);border:1px solid var(--border);border-top:none;flex:1;min-width:0;position:relative;overflow:hidden}.canvas-svg{background:var(--bg-canvas);-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.canvas-bg{fill:var(--bg-canvas)}.label-editor-overlay{z-index:50;position:absolute}.label-editor-input{border:2px solid var(--color-accent);font-size:13px;font-family:var(--font-sans);text-align:center;min-width:60px;box-shadow:var(--shadow-md);background:#fff;border-radius:0;outline:none;padding:3px 8px;font-weight:600}.properties-panel{width:var(--right-panel-width,220px);background:var(--bg-panel);scrollbar-width:thin;scrollbar-color:silver transparent;flex-shrink:0;min-width:150px;overflow-y:auto}.properties-panel::-webkit-scrollbar{width:4px}.properties-panel::-webkit-scrollbar-thumb{background:silver;border-radius:2px}.panel-header{text-transform:uppercase;letter-spacing:.6px;color:var(--text-tertiary);border-bottom:1px solid var(--border-light);background:var(--bg-toolbar);padding:8px 12px;font-size:11px;font-weight:700}.panel-empty{flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:40px 16px;display:flex}.panel-empty-icon{opacity:.2;font-size:28px}.panel-empty-text{color:var(--text-tertiary);font-size:12px;font-weight:500}.panel-empty-hint{color:var(--text-tertiary);opacity:.6;font-size:10px}.panel-section{border-bottom:1px solid var(--border-light);padding:8px 12px}.panel-section-title{text-transform:uppercase;letter-spacing:.6px;color:var(--text-accent);margin-bottom:6px;font-size:10px;font-weight:700}.prop-row{justify-content:space-between;align-items:center;gap:8px;margin-bottom:5px;display:flex}.prop-row label{color:var(--text-secondary);flex-shrink:0;font-size:11px;font-weight:500}.prop-value{font-size:11px;font-family:var(--font-mono);color:var(--text-primary);text-align:right;font-weight:500}.prop-input{border:1px solid var(--border);font-size:11px;font-family:var(--font-mono);text-align:right;min-width:0;transition:border-color var(--transition);border-radius:0;outline:none;flex:1;padding:4px 8px;font-weight:500}.prop-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 1px #0050a033}.prop-input-sm{max-width:90px}.prop-input[type=number]{-moz-appearance:textfield}.prop-input[type=number]::-webkit-inner-spin-button{opacity:1}.bottom-panel{background:var(--bg-panel);height:var(--bottom-panel-height,220px);flex-direction:column;flex-shrink:0;min-height:100px;display:flex}.bottom-tabs{background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.bottom-tab{color:var(--text-tertiary);font-size:11px;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:5px 0}.bottom-tab:hover{color:var(--text-secondary)}.bottom-tab.active{color:var(--text-accent);border-bottom-color:var(--text-accent);font-weight:700}.bottom-content{scrollbar-width:thin;scrollbar-color:silver transparent;flex:1;padding:10px 14px;overflow-y:auto}.bottom-content::-webkit-scrollbar{width:4px}.bottom-content::-webkit-scrollbar-thumb{background:silver;border-radius:2px}.summary-content{font-size:12px;line-height:1.6}.summary-stats{gap:4px;margin-bottom:12px;display:flex}.summary-stat{text-align:center;background:var(--bg-toolbar);border:1px solid var(--border);flex:1;padding:6px 3px}.stat-value{font-size:16px;font-weight:800}.stat-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;font-size:8px}.summary-section{margin-bottom:10px}.summary-section-title{color:var(--text-accent);border-bottom:1px solid var(--border-light);margin-bottom:3px;padding-bottom:3px;font-size:11px;font-weight:700}.summary-mono{font-family:var(--font-mono);color:var(--text-primary);margin-bottom:2px;font-size:11px}.mono-label{color:var(--text-tertiary)}.mono-value-purple{color:var(--text-accent);font-weight:600}.mono-value{font-weight:600}.mono-op{color:var(--text-tertiary)}.mono-fixed{color:var(--text-danger)}.mono-cov{color:var(--color-cov)}.lavaan-content{flex-direction:column;gap:6px;display:flex}.lavaan-header{justify-content:space-between;align-items:center;display:flex}.lavaan-label{color:var(--text-tertiary);font-size:11px}.lavaan-copy-btn{border:1px solid var(--border);background:var(--bg-toolbar);color:var(--text-accent);font-size:10px;font-weight:700;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition);padding:3px 12px}.lavaan-copy-btn:hover{background:var(--bg-active);border-color:var(--color-accent)}.lavaan-code{background:var(--bg-toolbar);border:1px solid var(--border);font-family:var(--font-mono);color:var(--text-primary);white-space:pre-wrap;margin:0;padding:12px 14px;font-size:11px;line-height:1.8;overflow:auto}.statusbar{background:var(--bg-statusbar);height:22px;color:var(--text-secondary);border-top:1px solid var(--border);flex-shrink:0;align-items:center;gap:20px;padding:0 8px;font-size:11px;display:flex}.statusbar strong{color:var(--text-primary);font-weight:600}.statusbar-tool{min-width:120px}.side-panel{background:var(--bg-toolbar);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:170px;min-width:170px;display:flex;overflow:hidden}.side-panel-icons{border-bottom:1px solid var(--border);background:var(--bg-toolbar);justify-content:center;gap:2px;padding:4px;display:flex}.side-panel-icon-btn{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:0;justify-content:stretch;align-items:stretch;width:30px;height:56px;padding:0;transition:background 60ms;display:flex;overflow:hidden}.side-panel-icon-btn img{object-fit:fill;width:100%;height:100%}.side-panel-icon-btn:hover{background:var(--bg-active);border-color:var(--color-accent)}.side-panel-icon-btn.active{background:#c0d8f0;border-color:#4080c0}.side-panel-icon-btn:disabled{opacity:.4;cursor:default}.side-panel-section{-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.side-panel-splitter{cursor:ns-resize;background:#b0b0b0;border-top:1px solid #d0d0d0;border-bottom:1px solid #909090;flex-shrink:0;height:4px}.side-panel-splitter:hover{background:#8080a0}.side-panel-section-header{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);background:#e0e0e0;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:600}.side-panel-section-content{scrollbar-width:thin;scrollbar-color:silver transparent;flex:1;min-height:0;overflow-y:auto}.side-panel-section-content::-webkit-scrollbar{width:3px}.side-panel-section-content::-webkit-scrollbar-thumb{background:silver}.side-panel-status-log{font-size:10px}.side-panel-status-msg{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;padding:1px 8px;font-size:10px;line-height:1.5;overflow:hidden}.side-panel-list-label{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;padding:4px 8px;font-size:11px;font-weight:600;overflow:hidden}.side-panel-list-item{color:var(--text-secondary);cursor:default;white-space:nowrap;text-overflow:ellipsis;padding:2px 8px;font-size:11px;overflow:hidden}.side-panel-list-item:hover{background:#d0d0d0}.side-panel-list-item.clickable{cursor:pointer}.side-panel-list-item.selected{color:var(--text-primary);background:#c0d8f0}.side-panel-list{border-bottom:1px solid var(--border);flex:1;min-height:0;font-size:11px;overflow-y:auto}.bottom-tabbar{background:var(--bg-toolbar);border-top:1px solid var(--border);flex-shrink:0;display:flex}.bottom-tabbar-tab{border:1px solid var(--border);background:var(--bg-toolbar);color:var(--text-secondary);font-size:11px;font-weight:500;font-family:var(--font-sans);cursor:pointer;border-top:none;border-bottom:none;padding:3px 16px}.bottom-tabbar-tab.active{background:var(--bg-panel);color:var(--text-primary);font-weight:600}.results-panel{width:var(--right-panel-width,220px);background:var(--bg-panel);scrollbar-width:thin;scrollbar-color:silver transparent;flex-direction:column;flex-shrink:0;min-width:150px;display:flex;overflow-y:auto}.results-panel::-webkit-scrollbar{width:4px}.results-panel::-webkit-scrollbar-thumb{background:silver;border-radius:2px}.results-panel-header{background:var(--bg-active-strong);color:var(--text-inverse);flex-shrink:0;justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.results-panel-title{letter-spacing:.3px;font-size:12px;font-weight:700}.results-badge{padding:2px 8px;font-size:10px;font-weight:600}.results-badge-ok{color:#16a34a;background:#22c55e33}.results-badge-warn{color:#dc2626;background:#ef444433}.results-close-btn{color:var(--text-inverse);cursor:pointer;font-size:12px;font-weight:700;font-family:var(--font-sans);background:#ffffff26;border:none;justify-content:center;align-items:center;width:20px;height:20px;transition:background 60ms;display:flex}.results-close-btn:hover{background:#ffffff4d}.results-panel-summary{font-family:var(--font-mono);color:var(--text-secondary);background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;gap:12px;padding:6px 12px;font-size:10px;display:flex}.results-tabs{background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.results-tab{color:var(--text-tertiary);font-size:11px;font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:all var(--transition);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:5px 0}.results-tab:hover{color:var(--text-secondary)}.results-tab.active{color:var(--text-accent);border-bottom-color:var(--text-accent);font-weight:700}.results-panel-body{scrollbar-width:thin;scrollbar-color:silver transparent;flex:1;padding:10px;overflow-y:auto}.results-panel-body::-webkit-scrollbar{width:4px}.results-panel-body::-webkit-scrollbar-thumb{background:silver;border-radius:2px}.analyzing-overlay{z-index:9999;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.analyzing-box{background:var(--bg-panel);border:1px solid var(--border);box-shadow:var(--shadow-lg);text-align:center;padding:24px 40px}.analyzing-box .spinner{border:3px solid var(--border);border-top-color:var(--color-accent);border-radius:50%;width:32px;height:32px;margin:0 auto 12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.analyzing-box .analyzing-text{color:var(--text-primary);font-size:13px;font-weight:600}
