@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap");:root{--bg-primary:#0a0d14;--bg-secondary:#101522;--bg-tertiary:#161d2e;--bg-surface:#1c2438;--bg-surface-hover:#242e47;--bg-surface-active:#2a3754;--border-subtle:#222d42;--border-muted:#2d3b56;--border-active:#40557c;--border-glow:rgba(56,189,248,0.35);--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--text-inverse:#0f172a;--proto-tcap:#0ea5e9;--proto-tcap-bg:rgba(14,165,233,0.12);--proto-map:#a855f7;--proto-map-bg:rgba(168,85,247,0.12);--proto-diameter:#10b981;--proto-diameter-bg:rgba(16,185,129,0.12);--proto-smpp:#f59e0b;--proto-smpp-bg:rgba(245,158,11,0.12);--proto-sip:#ef4444;--proto-sip-bg:rgba(239,68,68,0.12);--proto-gtp:#6366f1;--proto-gtp-bg:rgba(99,102,241,0.12);--proto-generic:#38bdf8;--proto-generic-bg:rgba(56,189,248,0.12);--proto-logic:#64748b;--proto-logic-bg:rgba(100,116,139,0.14);--proto-unknown:#d97706;--proto-unknown-bg:rgba(217,119,6,0.12);--status-error:#f43f5e;--status-warning:#f59e0b;--status-info:#38bdf8;--status-success:#10b981;--font-sans:"Plus Jakarta Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:"JetBrains Mono",monospace}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh;width:100vw;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-muted);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-active)}button,input,select,textarea{font-family:inherit}.mono{font-family:var(--font-mono)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.react-flow__background{background-color:#0b0f19!important}.react-flow__edge-path{stroke:#334155!important;stroke-width:2!important;transition:stroke .2s}.react-flow__edge.selected .react-flow__edge-path{stroke:#38bdf8!important;stroke-width:2.5!important}.react-flow__controls{background-color:var(--bg-tertiary)!important;border:1px solid var(--border-subtle)!important;border-radius:8px!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}.react-flow__controls-button{background-color:transparent!important;border-bottom:1px solid var(--border-subtle)!important;fill:var(--text-secondary)!important}.react-flow__controls-button:hover{background-color:var(--bg-surface-hover)!important;fill:var(--text-primary)!important}.react-flow__minimap{background-color:var(--bg-secondary)!important;border:1px solid var(--border-subtle)!important;border-radius:8px!important;box-shadow:0 4px 12px rgba(0,0,0,.4)!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes pulseGlow{0%{box-shadow:0 0 0 0 rgba(56,189,248,.4)}70%{box-shadow:0 0 0 8px rgba(56,189,248,0)}to{box-shadow:0 0 0 0 rgba(56,189,248,0)}}.animate-fade-in{animation:fadeIn .15s ease-out forwards}