:root{--bg:#f0f6ff;--bg-deep:#e4eeff;--bg-panel:#ffffffeb;--accent:#2563eb;--accent-dim:#2563eb1a;--accent-glow:#2563eb40;--text:#1e293b;--text-muted:#64748b;--border:#2563eb33;--border-subtle:#00000012;--danger:#ef4444;--success:#22c55e;--radius:10px;--radius-lg:16px;--font-mono:"Space Mono", "Fira Code", "Courier New", monospace;--font-sans:"Nunito", system-ui, sans-serif;--transition:.15s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);width:100%;height:100%;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px);box-shadow:0 4px 24px #2563eb12}.btn{border-radius:var(--radius);border:1px solid var(--border);color:var(--text);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition), border-color var(--transition), box-shadow var(--transition);letter-spacing:.01em;background:0 0;align-items:center;gap:6px;padding:8px 18px;font-size:13px;font-weight:700;display:inline-flex}.btn:hover{background:var(--accent-dim);border-color:var(--accent)}.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:800}.btn-accent:hover{box-shadow:0 4px 16px var(--accent-glow);background:#1d4ed8;border-color:#1d4ed8}.btn-accent:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn-ghost{color:var(--text-muted);border-color:#0000}.btn-ghost:hover{color:var(--text);background:var(--border-subtle);border-color:var(--border-subtle)}.input{border:1.5px solid var(--border-subtle);border-radius:var(--radius);width:100%;color:var(--text);font-family:var(--font-sans);transition:border-color var(--transition), box-shadow var(--transition);background:#fff;outline:none;padding:10px 14px;font-size:14px;font-weight:500}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.input::placeholder{color:var(--text-muted)}.tag{letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--border);color:var(--text-muted);background:var(--accent-dim);border-radius:99px;align-items:center;gap:5px;padding:3px 10px;font-size:11px;display:inline-flex}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid #2563eb33;border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.upload-screen{background:var(--bg);flex-direction:column;width:100%;height:100%;display:flex}.upload-header{border-bottom:1px solid var(--border-subtle);align-items:center;gap:12px;padding:18px 28px;display:flex}.logo{font-family:var(--font-sans);letter-spacing:-.01em;color:var(--accent);font-size:20px;font-weight:900}.upload-header .subtitle{color:var(--text-muted);letter-spacing:.01em;font-size:13px;font-weight:500}.upload-body{flex:1;justify-content:center;align-items:center;display:flex}.upload-card{flex-direction:column;gap:20px;width:100%;max-width:480px;padding:36px 32px;display:flex}.upload-card h2{letter-spacing:-.01em;color:var(--text);font-size:20px;font-weight:800}.upload-card .hint{color:var(--text-muted);font-size:12px;line-height:1.6}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:border-color var(--transition), background var(--transition), box-shadow var(--transition);flex-direction:column;align-items:center;gap:10px;padding:40px 24px;display:flex;position:relative}.drop-zone:hover,.drop-zone.dragging{border-color:var(--accent);background:var(--accent-dim);box-shadow:0 0 24px var(--accent-glow)}.drop-zone input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.drop-zone svg{opacity:.5;transition:opacity var(--transition)}.drop-zone:hover svg,.drop-zone.dragging svg{opacity:1}.drop-zone .drop-label{color:var(--text-muted);font-size:13px}.drop-zone .drop-accent{color:var(--accent);font-weight:700}.drop-zone .file-selected{color:var(--accent);margin-top:4px;font-size:12px;font-weight:700}.field{flex-direction:column;gap:7px;display:flex}.field label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:700}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.inspector{border-left:1px solid var(--border);z-index:20;border-radius:0;flex-direction:column;gap:16px;width:280px;height:100%;padding:20px 18px;animation:.2s slideIn;display:flex;position:absolute;top:0;right:0;overflow-y:auto}.inspector h3{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:11px}.inspector .node-id{word-break:break-all;color:var(--text);font-size:13px;font-weight:700}.inspector .meta-row{flex-direction:column;gap:4px;display:flex}.inspector .meta-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:10px}.inspector .meta-value{color:var(--text);font-size:12px}.inspector .divider{border:none;border-top:1px solid var(--border-subtle)}.inspector-close{color:var(--text-muted);cursor:pointer;transition:color var(--transition);background:0 0;border:none;font-size:18px;line-height:1;position:absolute;top:14px;right:14px}.inspector-close:hover{color:var(--text)}.filter-panel{z-index:15;flex-direction:column;gap:8px;min-width:175px;max-height:calc(100vh - 32px);padding:14px 16px;display:flex;position:absolute;top:12px;left:12px;overflow-y:auto}.filter-panel h4{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:10px}.system-toggle{cursor:pointer;transition:background var(--transition), border-color var(--transition);color:var(--text-muted);font-size:12px;font-weight:600;font-family:var(--font-sans);text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:9px;padding:6px 10px;display:flex}.system-toggle:hover{background:var(--border-subtle);color:var(--text)}.system-toggle.active{background:var(--accent-dim);border-color:var(--border);color:var(--text)}.system-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 5px}.legend-item{color:var(--text-muted);align-items:center;gap:8px;padding:2px 0;font-size:11px;display:flex}.edge-popover{z-index:50;flex-direction:column;gap:8px;width:220px;padding:14px 16px;animation:.15s slideIn;display:flex;position:fixed}.inferred-toggle{border:1px solid var(--border);min-width:42px;height:22px;color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;transition:background var(--transition), border-color var(--transition), color var(--transition);background:0 0;border-radius:99px;justify-content:center;align-items:center;padding:0 10px;font-size:11px;font-weight:700;display:inline-flex}.inferred-toggle.on{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}.inferred-toggle:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.inferred-toggle:disabled{opacity:.5;cursor:not-allowed}.inspector-section{flex-direction:column;gap:8px;display:flex}.signal-row{border-bottom:1px solid var(--border-subtle);grid-template-columns:1fr 1fr auto;align-items:center;gap:4px;padding:3px 0;font-size:11px;display:grid}.signal-name{color:var(--text-muted);letter-spacing:.04em;font-size:10px}.signal-system{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.signal-weight{color:var(--accent);text-align:right;font-size:11px;font-weight:700}.filter-reset{color:var(--text-muted);cursor:pointer;font-size:11px;font-family:var(--font-mono);letter-spacing:.04em;text-align:left;text-underline-offset:3px;transition:color var(--transition);background:0 0;border:none;padding:2px 0;text-decoration:underline}.filter-reset:hover{color:var(--accent)}
